linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH 0/2] remove unused ACPI GPIO interrupt probing code
@ 2015-09-23  9:01 Octavian Purdila
  2015-09-23  9:02 ` [PATCH 1/2] iio: fix drivers that use 0 as a valid IRQ in client->irq (part 2) Octavian Purdila
  2015-09-23  9:02 ` [PATCH 2/2] iio: remove gpio interrupt probing from drivers that use a single interrupt Octavian Purdila
  0 siblings, 2 replies; 6+ messages in thread
From: Octavian Purdila @ 2015-09-23  9:01 UTC (permalink / raw)
  To: jic23, knaack.h, lars, pmeerw
  Cc: srinivas.pandruvada, hadess, daniel.baluta, irina.tirdea, ao2,
	u.kleine-koenig, vlad.dogaru, linus.walleij, tiberiu.a.breana,
	javier, dan.carpenter, geert, linux-iio, linux-kernel,
	Octavian Purdila

With the addition of automatically ACPI GPIO assignment to i2c
client->irq we can now remove the code the does the ACPI GPIO probing
for drivers that use a single interrupt.

Tested on hardware only on bmc150-accel, rest of the drivers where
compile tested only.

Octavian Purdila (2):
  iio: fix drivers that use 0 as a valid IRQ in client->irq (part 2)
  iio: remove gpio interrupt probing from drivers that use a single
    interrupt

 drivers/iio/accel/bmc150-accel.c       | 30 --------------------------
 drivers/iio/accel/kxcjk-1013.c         | 34 +----------------------------
 drivers/iio/accel/mma9553.c            | 29 -------------------------
 drivers/iio/accel/stk8312.c            | 30 +-------------------------
 drivers/iio/accel/stk8ba50.c           | 30 +-------------------------
 drivers/iio/imu/kmx61.c                | 28 ------------------------
 drivers/iio/light/stk3310.c            | 39 +---------------------------------
 drivers/iio/magnetometer/bmc150_magn.c | 33 ----------------------------
 drivers/iio/proximity/sx9500.c         |  9 --------
 9 files changed, 4 insertions(+), 258 deletions(-)

-- 
1.9.1


^ permalink raw reply	[flat|nested] 6+ messages in thread

* [PATCH 1/2] iio: fix drivers that use 0 as a valid IRQ in client->irq (part 2)
  2015-09-23  9:01 [PATCH 0/2] remove unused ACPI GPIO interrupt probing code Octavian Purdila
@ 2015-09-23  9:02 ` Octavian Purdila
  2015-10-03 10:07   ` Jonathan Cameron
  2015-09-23  9:02 ` [PATCH 2/2] iio: remove gpio interrupt probing from drivers that use a single interrupt Octavian Purdila
  1 sibling, 1 reply; 6+ messages in thread
From: Octavian Purdila @ 2015-09-23  9:02 UTC (permalink / raw)
  To: jic23, knaack.h, lars, pmeerw
  Cc: srinivas.pandruvada, hadess, daniel.baluta, irina.tirdea, ao2,
	u.kleine-koenig, vlad.dogaru, linus.walleij, tiberiu.a.breana,
	javier, dan.carpenter, geert, linux-iio, linux-kernel,
	Octavian Purdila

Since commit dab472eb931bc291 ("i2c / ACPI: Use 0 to indicate that
device does not have interrupt assigned") 0 is not a valid i2c
client irq anymore, so change all driver's checks accordingly.

The same issue occurs when the device is instantiated via device tree
with no IRQ, or from the i2c sysfs interface, even before the patch
above.

Signed-off-by: Octavian Purdila <octavian.purdila@intel.com>
---
 drivers/iio/accel/stk8312.c  | 2 +-
 drivers/iio/accel/stk8ba50.c | 2 +-
 drivers/iio/light/stk3310.c  | 2 +-
 3 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/drivers/iio/accel/stk8312.c b/drivers/iio/accel/stk8312.c
index c764af2..a578694 100644
--- a/drivers/iio/accel/stk8312.c
+++ b/drivers/iio/accel/stk8312.c
@@ -572,7 +572,7 @@ static int stk8312_probe(struct i2c_client *client,
 	if (client->irq < 0)
 		client->irq = stk8312_gpio_probe(client);
 
-	if (client->irq >= 0) {
+	if (client->irq > 0) {
 		ret = devm_request_threaded_irq(&client->dev, client->irq,
 						stk8312_data_rdy_trig_poll,
 						NULL,
diff --git a/drivers/iio/accel/stk8ba50.c b/drivers/iio/accel/stk8ba50.c
index 80f77d8..a59f5d8 100644
--- a/drivers/iio/accel/stk8ba50.c
+++ b/drivers/iio/accel/stk8ba50.c
@@ -468,7 +468,7 @@ static int stk8ba50_probe(struct i2c_client *client,
 	if (client->irq < 0)
 		client->irq = stk8ba50_gpio_probe(client);
 
-	if (client->irq >= 0) {
+	if (client->irq > 0) {
 		ret = devm_request_threaded_irq(&client->dev, client->irq,
 						stk8ba50_data_rdy_trig_poll,
 						NULL,
diff --git a/drivers/iio/light/stk3310.c b/drivers/iio/light/stk3310.c
index 25c6a71..4e56c90 100644
--- a/drivers/iio/light/stk3310.c
+++ b/drivers/iio/light/stk3310.c
@@ -636,7 +636,7 @@ static int stk3310_probe(struct i2c_client *client,
 		}
 	}
 
-	if (client->irq >= 0) {
+	if (client->irq > 0) {
 		ret = devm_request_threaded_irq(&client->dev, client->irq,
 						stk3310_irq_handler,
 						stk3310_irq_event_handler,
-- 
1.9.1


^ permalink raw reply related	[flat|nested] 6+ messages in thread

* [PATCH 2/2] iio: remove gpio interrupt probing from drivers that use a single interrupt
  2015-09-23  9:01 [PATCH 0/2] remove unused ACPI GPIO interrupt probing code Octavian Purdila
  2015-09-23  9:02 ` [PATCH 1/2] iio: fix drivers that use 0 as a valid IRQ in client->irq (part 2) Octavian Purdila
@ 2015-09-23  9:02 ` Octavian Purdila
  2015-09-23  9:04   ` Bastien Nocera
  1 sibling, 1 reply; 6+ messages in thread
From: Octavian Purdila @ 2015-09-23  9:02 UTC (permalink / raw)
  To: jic23, knaack.h, lars, pmeerw
  Cc: srinivas.pandruvada, hadess, daniel.baluta, irina.tirdea, ao2,
	u.kleine-koenig, vlad.dogaru, linus.walleij, tiberiu.a.breana,
	javier, dan.carpenter, geert, linux-iio, linux-kernel,
	Octavian Purdila

Commit 845c877009cf014b ("i2c / ACPI: Assign IRQ for devices that have
GpioInt automatically") automatically asigns the first ACPI GPIO
interrupt in client->irq, so we can remove the probing code from
drivers that use only one interrupt.

Signed-off-by: Octavian Purdila <octavian.purdila@intel.com>
---
 drivers/iio/accel/bmc150-accel.c       | 30 ---------------------------
 drivers/iio/accel/kxcjk-1013.c         | 34 +------------------------------
 drivers/iio/accel/mma9553.c            | 29 --------------------------
 drivers/iio/accel/stk8312.c            | 28 -------------------------
 drivers/iio/accel/stk8ba50.c           | 28 -------------------------
 drivers/iio/imu/kmx61.c                | 28 -------------------------
 drivers/iio/light/stk3310.c            | 37 ----------------------------------
 drivers/iio/magnetometer/bmc150_magn.c | 33 ------------------------------
 drivers/iio/proximity/sx9500.c         |  9 ---------
 9 files changed, 1 insertion(+), 255 deletions(-)

diff --git a/drivers/iio/accel/bmc150-accel.c b/drivers/iio/accel/bmc150-accel.c
index 0104cde..6d19d46 100644
--- a/drivers/iio/accel/bmc150-accel.c
+++ b/drivers/iio/accel/bmc150-accel.c
@@ -38,7 +38,6 @@
 
 #define BMC150_ACCEL_DRV_NAME			"bmc150_accel"
 #define BMC150_ACCEL_IRQ_NAME			"bmc150_accel_event"
-#define BMC150_ACCEL_GPIO_NAME			"bmc150_accel_int"
 
 #define BMC150_ACCEL_REG_CHIP_ID		0x00
 
@@ -1360,32 +1359,6 @@ static irqreturn_t bmc150_accel_irq_handler(int irq, void *private)
 	return IRQ_NONE;
 }
 
-static int bmc150_accel_gpio_probe(struct i2c_client *client,
-				   struct bmc150_accel_data *data)
-{
-	struct device *dev;
-	struct gpio_desc *gpio;
-	int ret;
-
-	if (!client)
-		return -EINVAL;
-
-	dev = &client->dev;
-
-	/* data ready gpio interrupt pin */
-	gpio = devm_gpiod_get_index(dev, BMC150_ACCEL_GPIO_NAME, 0, GPIOD_IN);
-	if (IS_ERR(gpio)) {
-		dev_err(dev, "Failed: gpio get index\n");
-		return PTR_ERR(gpio);
-	}
-
-	ret = gpiod_to_irq(gpio);
-
-	dev_dbg(dev, "GPIO resource, no:%d irq:%d\n", desc_to_gpio(gpio), ret);
-
-	return ret;
-}
-
 static const struct {
 	int intr;
 	const char *name;
@@ -1659,9 +1632,6 @@ static int bmc150_accel_probe(struct i2c_client *client,
 		return ret;
 	}
 
-	if (client->irq < 0)
-		client->irq = bmc150_accel_gpio_probe(client, data);
-
 	if (client->irq > 0) {
 		ret = devm_request_threaded_irq(
 						&client->dev, client->irq,
diff --git a/drivers/iio/accel/kxcjk-1013.c b/drivers/iio/accel/kxcjk-1013.c
index 3292bc0..18c1b06 100644
--- a/drivers/iio/accel/kxcjk-1013.c
+++ b/drivers/iio/accel/kxcjk-1013.c
@@ -1162,35 +1162,6 @@ static const char *kxcjk1013_match_acpi_device(struct device *dev,
 	return dev_name(dev);
 }
 
-static int kxcjk1013_gpio_probe(struct i2c_client *client,
-				struct kxcjk1013_data *data)
-{
-	struct device *dev;
-	struct gpio_desc *gpio;
-	int ret;
-
-	if (!client)
-		return -EINVAL;
-
-	if (data->is_smo8500_device)
-		return -ENOTSUPP;
-
-	dev = &client->dev;
-
-	/* data ready gpio interrupt pin */
-	gpio = devm_gpiod_get_index(dev, "kxcjk1013_int", 0, GPIOD_IN);
-	if (IS_ERR(gpio)) {
-		dev_err(dev, "acpi gpio get index failed\n");
-		return PTR_ERR(gpio);
-	}
-
-	ret = gpiod_to_irq(gpio);
-
-	dev_dbg(dev, "GPIO resource, no:%d irq:%d\n", desc_to_gpio(gpio), ret);
-
-	return ret;
-}
-
 static int kxcjk1013_probe(struct i2c_client *client,
 			   const struct i2c_device_id *id)
 {
@@ -1237,10 +1208,7 @@ static int kxcjk1013_probe(struct i2c_client *client,
 	indio_dev->modes = INDIO_DIRECT_MODE;
 	indio_dev->info = &kxcjk1013_info;
 
-	if (client->irq < 0)
-		client->irq = kxcjk1013_gpio_probe(client, data);
-
-	if (client->irq > 0) {
+	if (client->irq > 0 && !data->is_smo8500_device) {
 		ret = devm_request_threaded_irq(&client->dev, client->irq,
 						kxcjk1013_data_rdy_trig_poll,
 						kxcjk1013_event_handler,
diff --git a/drivers/iio/accel/mma9553.c b/drivers/iio/accel/mma9553.c
index 771858c..9408ef3 100644
--- a/drivers/iio/accel/mma9553.c
+++ b/drivers/iio/accel/mma9553.c
@@ -26,7 +26,6 @@
 
 #define MMA9553_DRV_NAME			"mma9553"
 #define MMA9553_IRQ_NAME			"mma9553_event"
-#define MMA9553_GPIO_NAME			"mma9553_int"
 
 /* Pedometer configuration registers (R/W) */
 #define MMA9553_REG_CONF_SLEEPMIN		0x00
@@ -1073,31 +1072,6 @@ static irqreturn_t mma9553_event_handler(int irq, void *private)
 	return IRQ_HANDLED;
 }
 
-static int mma9553_gpio_probe(struct i2c_client *client)
-{
-	struct device *dev;
-	struct gpio_desc *gpio;
-	int ret;
-
-	if (!client)
-		return -EINVAL;
-
-	dev = &client->dev;
-
-	/* data ready GPIO interrupt pin */
-	gpio = devm_gpiod_get_index(dev, MMA9553_GPIO_NAME, 0, GPIOD_IN);
-	if (IS_ERR(gpio)) {
-		dev_err(dev, "ACPI GPIO get index failed\n");
-		return PTR_ERR(gpio);
-	}
-
-	ret = gpiod_to_irq(gpio);
-
-	dev_dbg(dev, "GPIO resource, no:%d irq:%d\n", desc_to_gpio(gpio), ret);
-
-	return ret;
-}
-
 static const char *mma9553_match_acpi_device(struct device *dev)
 {
 	const struct acpi_device_id *id;
@@ -1146,9 +1120,6 @@ static int mma9553_probe(struct i2c_client *client,
 	indio_dev->modes = INDIO_DIRECT_MODE;
 	indio_dev->info = &mma9553_info;
 
-	if (client->irq < 0)
-		client->irq = mma9553_gpio_probe(client);
-
 	if (client->irq > 0) {
 		ret = devm_request_threaded_irq(&client->dev, client->irq,
 						mma9553_irq_handler,
diff --git a/drivers/iio/accel/stk8312.c b/drivers/iio/accel/stk8312.c
index a578694..85fe7f7 100644
--- a/drivers/iio/accel/stk8312.c
+++ b/drivers/iio/accel/stk8312.c
@@ -50,7 +50,6 @@
 #define STK8312_ALL_CHANNEL_SIZE	3
 
 #define STK8312_DRIVER_NAME		"stk8312"
-#define STK8312_GPIO			"stk8312_gpio"
 #define STK8312_IRQ_NAME		"stk8312_event"
 
 /*
@@ -504,30 +503,6 @@ static const struct iio_buffer_setup_ops stk8312_buffer_setup_ops = {
 	.postdisable = stk8312_buffer_postdisable,
 };
 
-static int stk8312_gpio_probe(struct i2c_client *client)
-{
-	struct device *dev;
-	struct gpio_desc *gpio;
-	int ret;
-
-	if (!client)
-		return -EINVAL;
-
-	dev = &client->dev;
-
-	/* data ready gpio interrupt pin */
-	gpio = devm_gpiod_get_index(dev, STK8312_GPIO, 0, GPIOD_IN);
-	if (IS_ERR(gpio)) {
-		dev_err(dev, "acpi gpio get index failed\n");
-		return PTR_ERR(gpio);
-	}
-
-	ret = gpiod_to_irq(gpio);
-	dev_dbg(dev, "GPIO resource, no:%d irq:%d\n", desc_to_gpio(gpio), ret);
-
-	return ret;
-}
-
 static int stk8312_probe(struct i2c_client *client,
 			 const struct i2c_device_id *id)
 {
@@ -569,9 +544,6 @@ static int stk8312_probe(struct i2c_client *client,
 	if (ret < 0)
 		return ret;
 
-	if (client->irq < 0)
-		client->irq = stk8312_gpio_probe(client);
-
 	if (client->irq > 0) {
 		ret = devm_request_threaded_irq(&client->dev, client->irq,
 						stk8312_data_rdy_trig_poll,
diff --git a/drivers/iio/accel/stk8ba50.c b/drivers/iio/accel/stk8ba50.c
index a59f5d8..5709d9e 100644
--- a/drivers/iio/accel/stk8ba50.c
+++ b/drivers/iio/accel/stk8ba50.c
@@ -45,7 +45,6 @@
 #define STK8BA50_ALL_CHANNEL_SIZE		6
 
 #define STK8BA50_DRIVER_NAME			"stk8ba50"
-#define STK8BA50_GPIO				"stk8ba50_gpio"
 #define STK8BA50_IRQ_NAME			"stk8ba50_event"
 
 #define STK8BA50_SCALE_AVAIL			"0.0384 0.0767 0.1534 0.3069"
@@ -388,30 +387,6 @@ static const struct iio_buffer_setup_ops stk8ba50_buffer_setup_ops = {
 	.postdisable = stk8ba50_buffer_postdisable,
 };
 
-static int stk8ba50_gpio_probe(struct i2c_client *client)
-{
-	struct device *dev;
-	struct gpio_desc *gpio;
-	int ret;
-
-	if (!client)
-		return -EINVAL;
-
-	dev = &client->dev;
-
-	/* data ready gpio interrupt pin */
-	gpio = devm_gpiod_get_index(dev, STK8BA50_GPIO, 0, GPIOD_IN);
-	if (IS_ERR(gpio)) {
-		dev_err(dev, "acpi gpio get index failed\n");
-		return PTR_ERR(gpio);
-	}
-
-	ret = gpiod_to_irq(gpio);
-	dev_dbg(dev, "GPIO resource, no:%d irq:%d\n", desc_to_gpio(gpio), ret);
-
-	return ret;
-}
-
 static int stk8ba50_probe(struct i2c_client *client,
 			  const struct i2c_device_id *id)
 {
@@ -465,9 +440,6 @@ static int stk8ba50_probe(struct i2c_client *client,
 		goto err_power_off;
 	}
 
-	if (client->irq < 0)
-		client->irq = stk8ba50_gpio_probe(client);
-
 	if (client->irq > 0) {
 		ret = devm_request_threaded_irq(&client->dev, client->irq,
 						stk8ba50_data_rdy_trig_poll,
diff --git a/drivers/iio/imu/kmx61.c b/drivers/iio/imu/kmx61.c
index 82cdf50..dbf5e99 100644
--- a/drivers/iio/imu/kmx61.c
+++ b/drivers/iio/imu/kmx61.c
@@ -27,7 +27,6 @@
 #include <linux/iio/trigger_consumer.h>
 
 #define KMX61_DRV_NAME "kmx61"
-#define KMX61_GPIO_NAME "kmx61_int"
 #define KMX61_IRQ_NAME "kmx61_event"
 
 #define KMX61_REG_WHO_AM_I	0x00
@@ -1243,30 +1242,6 @@ static const char *kmx61_match_acpi_device(struct device *dev)
 	return dev_name(dev);
 }
 
-static int kmx61_gpio_probe(struct i2c_client *client, struct kmx61_data *data)
-{
-	struct device *dev;
-	struct gpio_desc *gpio;
-	int ret;
-
-	if (!client)
-		return -EINVAL;
-
-	dev = &client->dev;
-
-	/* data ready gpio interrupt pin */
-	gpio = devm_gpiod_get_index(dev, KMX61_GPIO_NAME, 0, GPIOD_IN);
-	if (IS_ERR(gpio)) {
-		dev_err(dev, "acpi gpio get index failed\n");
-		return PTR_ERR(gpio);
-	}
-
-	ret = gpiod_to_irq(gpio);
-
-	dev_dbg(dev, "GPIO resource, no:%d irq:%d\n", desc_to_gpio(gpio), ret);
-	return ret;
-}
-
 static struct iio_dev *kmx61_indiodev_setup(struct kmx61_data *data,
 					    const struct iio_info *info,
 					    const struct iio_chan_spec *chan,
@@ -1360,9 +1335,6 @@ static int kmx61_probe(struct i2c_client *client,
 	if (ret < 0)
 		return ret;
 
-	if (client->irq < 0)
-		client->irq = kmx61_gpio_probe(client, data);
-
 	if (client->irq > 0) {
 		ret = devm_request_threaded_irq(&client->dev, client->irq,
 						kmx61_data_rdy_trig_poll,
diff --git a/drivers/iio/light/stk3310.c b/drivers/iio/light/stk3310.c
index 4e56c90..42d334b 100644
--- a/drivers/iio/light/stk3310.c
+++ b/drivers/iio/light/stk3310.c
@@ -47,7 +47,6 @@
 #define STK3310_DRIVER_NAME			"stk3310"
 #define STK3310_REGMAP_NAME			"stk3310_regmap"
 #define STK3310_EVENT				"stk3310_event"
-#define STK3310_GPIO				"stk3310_gpio"
 
 #define STK3310_SCALE_AVAILABLE			"6.4 1.6 0.4 0.1"
 
@@ -477,34 +476,6 @@ static int stk3310_init(struct iio_dev *indio_dev)
 	return ret;
 }
 
-static int stk3310_gpio_probe(struct i2c_client *client)
-{
-	struct device *dev;
-	struct gpio_desc *gpio;
-	int ret;
-
-	if (!client)
-		return -EINVAL;
-
-	dev = &client->dev;
-
-	/* gpio interrupt pin */
-	gpio = devm_gpiod_get_index(dev, STK3310_GPIO, 0);
-	if (IS_ERR(gpio)) {
-		dev_err(dev, "acpi gpio get index failed\n");
-		return PTR_ERR(gpio);
-	}
-
-	ret = gpiod_direction_input(gpio);
-	if (ret)
-		return ret;
-
-	ret = gpiod_to_irq(gpio);
-	dev_dbg(dev, "GPIO resource, no:%d irq:%d\n", desc_to_gpio(gpio), ret);
-
-	return ret;
-}
-
 static bool stk3310_is_volatile_reg(struct device *dev, unsigned int reg)
 {
 	switch (reg) {
@@ -628,14 +599,6 @@ static int stk3310_probe(struct i2c_client *client,
 	if (ret < 0)
 		return ret;
 
-	if (client->irq < 0) {
-		client->irq = stk3310_gpio_probe(client);
-		if (client->irq < 0) {
-			ret = client->irq;
-			goto err_standby;
-		}
-	}
-
 	if (client->irq > 0) {
 		ret = devm_request_threaded_irq(&client->dev, client->irq,
 						stk3310_irq_handler,
diff --git a/drivers/iio/magnetometer/bmc150_magn.c b/drivers/iio/magnetometer/bmc150_magn.c
index e330205..1615b23 100644
--- a/drivers/iio/magnetometer/bmc150_magn.c
+++ b/drivers/iio/magnetometer/bmc150_magn.c
@@ -37,7 +37,6 @@
 
 #define BMC150_MAGN_DRV_NAME			"bmc150_magn"
 #define BMC150_MAGN_IRQ_NAME			"bmc150_magn_event"
-#define BMC150_MAGN_GPIO_INT			"interrupt"
 
 #define BMC150_MAGN_REG_CHIP_ID			0x40
 #define BMC150_MAGN_CHIP_ID_VAL			0x32
@@ -833,35 +832,6 @@ static const struct iio_buffer_setup_ops bmc150_magn_buffer_setup_ops = {
 	.postdisable = bmc150_magn_buffer_postdisable,
 };
 
-static int bmc150_magn_gpio_probe(struct i2c_client *client)
-{
-	struct device *dev;
-	struct gpio_desc *gpio;
-	int ret;
-
-	if (!client)
-		return -EINVAL;
-
-	dev = &client->dev;
-
-	/* data ready GPIO interrupt pin */
-	gpio = devm_gpiod_get_index(dev, BMC150_MAGN_GPIO_INT, 0);
-	if (IS_ERR(gpio)) {
-		dev_err(dev, "ACPI GPIO get index failed\n");
-		return PTR_ERR(gpio);
-	}
-
-	ret = gpiod_direction_input(gpio);
-	if (ret)
-		return ret;
-
-	ret = gpiod_to_irq(gpio);
-
-	dev_dbg(dev, "GPIO resource, no:%d irq:%d\n", desc_to_gpio(gpio), ret);
-
-	return ret;
-}
-
 static const char *bmc150_magn_match_acpi_device(struct device *dev)
 {
 	const struct acpi_device_id *id;
@@ -915,9 +885,6 @@ static int bmc150_magn_probe(struct i2c_client *client,
 	indio_dev->modes = INDIO_DIRECT_MODE;
 	indio_dev->info = &bmc150_magn_info;
 
-	if (client->irq <= 0)
-		client->irq = bmc150_magn_gpio_probe(client);
-
 	if (client->irq > 0) {
 		data->dready_trig = devm_iio_trigger_alloc(&client->dev,
 							   "%s-dev%d",
diff --git a/drivers/iio/proximity/sx9500.c b/drivers/iio/proximity/sx9500.c
index 3d756bd..66cd09a 100644
--- a/drivers/iio/proximity/sx9500.c
+++ b/drivers/iio/proximity/sx9500.c
@@ -868,21 +868,12 @@ static void sx9500_gpio_probe(struct i2c_client *client,
 			      struct sx9500_data *data)
 {
 	struct device *dev;
-	struct gpio_desc *gpio;
 
 	if (!client)
 		return;
 
 	dev = &client->dev;
 
-	if (client->irq <= 0) {
-		gpio = devm_gpiod_get_index(dev, SX9500_GPIO_INT, 0, GPIOD_IN);
-		if (IS_ERR(gpio))
-			dev_err(dev, "gpio get irq failed\n");
-		else
-			client->irq = gpiod_to_irq(gpio);
-	}
-
 	data->gpiod_rst = devm_gpiod_get_index(dev, SX9500_GPIO_RESET,
 					       0, GPIOD_OUT_HIGH);
 	if (IS_ERR(data->gpiod_rst)) {
-- 
1.9.1


^ permalink raw reply related	[flat|nested] 6+ messages in thread

* Re: [PATCH 2/2] iio: remove gpio interrupt probing from drivers that use a single interrupt
  2015-09-23  9:02 ` [PATCH 2/2] iio: remove gpio interrupt probing from drivers that use a single interrupt Octavian Purdila
@ 2015-09-23  9:04   ` Bastien Nocera
  2015-10-03 10:07     ` Jonathan Cameron
  0 siblings, 1 reply; 6+ messages in thread
From: Bastien Nocera @ 2015-09-23  9:04 UTC (permalink / raw)
  To: Octavian Purdila, jic23, knaack.h, lars, pmeerw
  Cc: srinivas.pandruvada, daniel.baluta, irina.tirdea, ao2,
	u.kleine-koenig, vlad.dogaru, linus.walleij, tiberiu.a.breana,
	javier, dan.carpenter, geert, linux-iio, linux-kernel

On Wed, 2015-09-23 at 12:02 +0300, Octavian Purdila wrote:
> Commit 845c877009cf014b ("i2c / ACPI: Assign IRQ for devices that
> have
> GpioInt automatically") automatically asigns

assigns.

>  the first ACPI GPIO
> interrupt in client->irq, so we can remove the probing code from
> drivers that use only one interrupt.

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [PATCH 2/2] iio: remove gpio interrupt probing from drivers that use a single interrupt
  2015-09-23  9:04   ` Bastien Nocera
@ 2015-10-03 10:07     ` Jonathan Cameron
  0 siblings, 0 replies; 6+ messages in thread
From: Jonathan Cameron @ 2015-10-03 10:07 UTC (permalink / raw)
  To: Bastien Nocera, Octavian Purdila, knaack.h, lars, pmeerw
  Cc: srinivas.pandruvada, daniel.baluta, irina.tirdea, ao2,
	u.kleine-koenig, vlad.dogaru, linus.walleij, tiberiu.a.breana,
	javier, dan.carpenter, geert, linux-iio, linux-kernel

On 23/09/15 10:04, Bastien Nocera wrote:
> On Wed, 2015-09-23 at 12:02 +0300, Octavian Purdila wrote:
>> Commit 845c877009cf014b ("i2c / ACPI: Assign IRQ for devices that
>> have
>> GpioInt automatically") automatically asigns
> 
> assigns.
Fixed up description and applied to the togreg branch of iio.git.
Initially pushed out as testing.  Nice to finally clear this lot
out!  Now I just have to remember that we don't need this boiler
plate ever again.

Thanks,

Jonathan
> 
>>  the first ACPI GPIO
>> interrupt in client->irq, so we can remove the probing code from
>> drivers that use only one interrupt.
> --
> To unsubscribe from this list: send the line "unsubscribe linux-iio" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html
> 


^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [PATCH 1/2] iio: fix drivers that use 0 as a valid IRQ in client->irq (part 2)
  2015-09-23  9:02 ` [PATCH 1/2] iio: fix drivers that use 0 as a valid IRQ in client->irq (part 2) Octavian Purdila
@ 2015-10-03 10:07   ` Jonathan Cameron
  0 siblings, 0 replies; 6+ messages in thread
From: Jonathan Cameron @ 2015-10-03 10:07 UTC (permalink / raw)
  To: Octavian Purdila, knaack.h, lars, pmeerw
  Cc: srinivas.pandruvada, hadess, daniel.baluta, irina.tirdea, ao2,
	u.kleine-koenig, vlad.dogaru, linus.walleij, tiberiu.a.breana,
	javier, dan.carpenter, geert, linux-iio, linux-kernel

On 23/09/15 10:02, Octavian Purdila wrote:
> Since commit dab472eb931bc291 ("i2c / ACPI: Use 0 to indicate that
> device does not have interrupt assigned") 0 is not a valid i2c
> client irq anymore, so change all driver's checks accordingly.
> 
> The same issue occurs when the device is instantiated via device tree
> with no IRQ, or from the i2c sysfs interface, even before the patch
> above.
> 
> Signed-off-by: Octavian Purdila <octavian.purdila@intel.com>
Applied to the togreg branch of iio.git. Initially pushed out as
testing for the autobuilders to play with it.

Thanks,

Jonathan
> ---
>  drivers/iio/accel/stk8312.c  | 2 +-
>  drivers/iio/accel/stk8ba50.c | 2 +-
>  drivers/iio/light/stk3310.c  | 2 +-
>  3 files changed, 3 insertions(+), 3 deletions(-)
> 
> diff --git a/drivers/iio/accel/stk8312.c b/drivers/iio/accel/stk8312.c
> index c764af2..a578694 100644
> --- a/drivers/iio/accel/stk8312.c
> +++ b/drivers/iio/accel/stk8312.c
> @@ -572,7 +572,7 @@ static int stk8312_probe(struct i2c_client *client,
>  	if (client->irq < 0)
>  		client->irq = stk8312_gpio_probe(client);
>  
> -	if (client->irq >= 0) {
> +	if (client->irq > 0) {
>  		ret = devm_request_threaded_irq(&client->dev, client->irq,
>  						stk8312_data_rdy_trig_poll,
>  						NULL,
> diff --git a/drivers/iio/accel/stk8ba50.c b/drivers/iio/accel/stk8ba50.c
> index 80f77d8..a59f5d8 100644
> --- a/drivers/iio/accel/stk8ba50.c
> +++ b/drivers/iio/accel/stk8ba50.c
> @@ -468,7 +468,7 @@ static int stk8ba50_probe(struct i2c_client *client,
>  	if (client->irq < 0)
>  		client->irq = stk8ba50_gpio_probe(client);
>  
> -	if (client->irq >= 0) {
> +	if (client->irq > 0) {
>  		ret = devm_request_threaded_irq(&client->dev, client->irq,
>  						stk8ba50_data_rdy_trig_poll,
>  						NULL,
> diff --git a/drivers/iio/light/stk3310.c b/drivers/iio/light/stk3310.c
> index 25c6a71..4e56c90 100644
> --- a/drivers/iio/light/stk3310.c
> +++ b/drivers/iio/light/stk3310.c
> @@ -636,7 +636,7 @@ static int stk3310_probe(struct i2c_client *client,
>  		}
>  	}
>  
> -	if (client->irq >= 0) {
> +	if (client->irq > 0) {
>  		ret = devm_request_threaded_irq(&client->dev, client->irq,
>  						stk3310_irq_handler,
>  						stk3310_irq_event_handler,
> 


^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2015-10-03 10:07 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2015-09-23  9:01 [PATCH 0/2] remove unused ACPI GPIO interrupt probing code Octavian Purdila
2015-09-23  9:02 ` [PATCH 1/2] iio: fix drivers that use 0 as a valid IRQ in client->irq (part 2) Octavian Purdila
2015-10-03 10:07   ` Jonathan Cameron
2015-09-23  9:02 ` [PATCH 2/2] iio: remove gpio interrupt probing from drivers that use a single interrupt Octavian Purdila
2015-09-23  9:04   ` Bastien Nocera
2015-10-03 10:07     ` Jonathan Cameron

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).