lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Date:   Mon, 20 May 2019 09:49:35 +0100
From:   Charles Keepax <ckeepax@...nsource.cirrus.com>
To:     <wsa@...-dreams.de>, <mika.westerberg@...ux.intel.com>
CC:     <linux-i2c@...r.kernel.org>, <linux-acpi@...r.kernel.org>,
        <linux-kernel@...r.kernel.org>, <benjamin.tissoires@...hat.com>,
        <jbroadus@...il.com>, <patches@...nsource.cirrus.com>
Subject: [PATCH 4/5] i2c: core: Move ACPI gpio IRQ handling into i2c_acpi_get_irq

It makes sense to contain all the ACPI IRQ handling in a single helper
function.

Signed-off-by: Charles Keepax <ckeepax@...nsource.cirrus.com>
---

Note that this one is somewhat interesting, it seems the search
through the resource list is done against the companion device
of the adapter but the GPIO search is done against the companion
device of the client. It feels to me like these really should
be done on the same device, and certainly this is what SPI
does (both against the equivalent of the adapter). Perhaps
someone with more ACPI knowledge than myself could comment?

Thanks,
Charles

 drivers/i2c/i2c-core-acpi.c | 3 +++
 drivers/i2c/i2c-core-base.c | 4 ----
 2 files changed, 3 insertions(+), 4 deletions(-)

diff --git a/drivers/i2c/i2c-core-acpi.c b/drivers/i2c/i2c-core-acpi.c
index e332760bf9ebc..0c882d956e9a4 100644
--- a/drivers/i2c/i2c-core-acpi.c
+++ b/drivers/i2c/i2c-core-acpi.c
@@ -164,6 +164,9 @@ int i2c_acpi_get_irq(struct i2c_client *client, int *irq)
 
 	acpi_dev_free_resource_list(&resource_list);
 
+	if (*irq < 0)
+		*irq = acpi_dev_gpio_irq_get(ACPI_COMPANION(&client->dev), 0);
+
 	return 0;
 }
 
diff --git a/drivers/i2c/i2c-core-base.c b/drivers/i2c/i2c-core-base.c
index c1afa17a76bfc..f958b50c78c04 100644
--- a/drivers/i2c/i2c-core-base.c
+++ b/drivers/i2c/i2c-core-base.c
@@ -336,10 +336,6 @@ static int i2c_device_probe(struct device *dev)
 				irq = of_irq_get(dev->of_node, 0);
 		} else if (ACPI_COMPANION(dev)) {
 			i2c_acpi_get_irq(client, &irq);
-
-			if (irq == -ENOENT)
-				irq = acpi_dev_gpio_irq_get(ACPI_COMPANION(dev),
-							    0);
 		}
 		if (irq == -EPROBE_DEFER)
 			return irq;
-- 
2.11.0

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ