All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH v4 0/8] iio: Set default trigger device parent
@ 2021-03-09 19:36 Gwendal Grignou
  2021-03-09 19:36 ` [PATCH v4 1/8] iio: set default trig->dev.parent Gwendal Grignou
                   ` (7 more replies)
  0 siblings, 8 replies; 15+ messages in thread
From: Gwendal Grignou @ 2021-03-09 19:36 UTC (permalink / raw)
  To: jic23, lars, andy.shevchenko, ardeleanalex; +Cc: linux-iio, Gwendal Grignou

Each drivers are setting trig->dev.parent to a common value - usually.
Move that in boiler plate code.

The first patch set the parent pointer, the next is an automatic change
with spatch.
The remaining ones are straightforward manual changes.

Few drivers remain:
drivers/iio/adc/at91-sama5d2_adc.c
drivers/iio/adc/mxs-lradc-adc.c
trigger parent set to iio device instead of its parent.

drivers/iio/adc/dln2-adc.c
trigger parent not set.

drivers/iio/gyro/mpu3050-core.c
trigger allocated for iio device but parent set to iio device parent.

drivers/iio/imu/bmi160/bmi160_core.c
drivers/iio/imu/inv_mpu6050/inv_mpu_trigger.c
trigger allocated for iio device but parent set to mapped register device holder. Looks like iio device parent.

drivers/iio/trigger/stm32-lptimer-trigger.c
drivers/iio/trigger/stm32-timer-trigger.c
trigger allocated for device, but parent set to device parent.


Changes in v4:
- Allow lines to be greater than 80 characters.
- Document patches that manually remove trigger parent assignments
  better.

Gwendal Grignou (8):
  iio: set default trig->dev.parent
  iio: fix devm_iio_trigger_alloc with parent.cocci
  iio: adis_trigger: Remove code to set trigger parent
  iio: gp2ap020a00f: Remove code to set trigger parent
  iio: lmp91000: Remove code to set trigger parent
  iio: chemical: atlas: Remove code to set trigger parent
  iio: as3935: Remove code to set trigger parent
  iio: xilinx-xadc: Remove code to set trigger parent

 drivers/iio/accel/adxl372.c                   |  2 --
 drivers/iio/accel/bma180.c                    |  3 +-
 drivers/iio/accel/bmc150-accel-core.c         |  1 -
 drivers/iio/accel/kxcjk-1013.c                |  2 --
 drivers/iio/accel/mma8452.c                   |  1 -
 drivers/iio/accel/mxc4005.c                   |  1 -
 drivers/iio/accel/stk8312.c                   |  1 -
 drivers/iio/accel/stk8ba50.c                  |  1 -
 drivers/iio/adc/ad7606.c                      |  1 -
 drivers/iio/adc/ad7766.c                      |  1 -
 drivers/iio/adc/ad7768-1.c                    |  1 -
 drivers/iio/adc/ad_sigma_delta.c              |  6 ++--
 drivers/iio/adc/at91_adc.c                    |  3 +-
 drivers/iio/adc/max1027.c                     |  1 -
 drivers/iio/adc/xilinx-xadc-core.c            |  1 -
 drivers/iio/chemical/atlas-sensor.c           |  1 -
 drivers/iio/chemical/ccs811.c                 |  1 -
 drivers/iio/chemical/scd30_core.c             |  1 -
 .../common/hid-sensors/hid-sensor-trigger.c   |  4 +--
 .../common/st_sensors/st_sensors_trigger.c    |  4 +--
 drivers/iio/gyro/adxrs290.c                   |  1 -
 drivers/iio/gyro/bmg160_core.c                |  2 --
 drivers/iio/gyro/fxas21002c_core.c            |  1 -
 drivers/iio/gyro/itg3200_buffer.c             |  3 +-
 drivers/iio/health/afe4403.c                  |  1 -
 drivers/iio/health/afe4404.c                  |  1 -
 drivers/iio/humidity/hts221_buffer.c          |  1 -
 drivers/iio/imu/adis_trigger.c                | 10 ++----
 drivers/iio/imu/kmx61.c                       |  1 -
 drivers/iio/industrialio-trigger.c            | 34 +++++++++++--------
 drivers/iio/light/gp2ap020a00f.c              |  1 -
 drivers/iio/light/rpr0521.c                   |  1 -
 drivers/iio/light/si1145.c                    |  1 -
 drivers/iio/light/st_uvis25_core.c            |  1 -
 drivers/iio/light/vcnl4000.c                  |  1 -
 drivers/iio/light/vcnl4035.c                  |  1 -
 drivers/iio/magnetometer/bmc150_magn.c        |  1 -
 drivers/iio/magnetometer/rm3100-core.c        |  1 -
 drivers/iio/potentiostat/lmp91000.c           |  3 +-
 drivers/iio/pressure/zpa2326.c                |  1 -
 drivers/iio/proximity/as3935.c                |  1 -
 drivers/iio/proximity/sx9310.c                |  1 -
 drivers/iio/proximity/sx9500.c                |  1 -
 drivers/iio/trigger/iio-trig-hrtimer.c        |  2 +-
 drivers/iio/trigger/iio-trig-interrupt.c      |  2 +-
 drivers/iio/trigger/iio-trig-loop.c           |  2 +-
 drivers/iio/trigger/iio-trig-sysfs.c          |  3 +-
 include/linux/iio/iio.h                       |  2 +-
 include/linux/iio/trigger.h                   |  3 +-
 49 files changed, 40 insertions(+), 81 deletions(-)

-- 
2.30.1.766.gb4fecdf3b7-goog


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

* [PATCH v4 1/8] iio: set default trig->dev.parent
  2021-03-09 19:36 [PATCH v4 0/8] iio: Set default trigger device parent Gwendal Grignou
@ 2021-03-09 19:36 ` Gwendal Grignou
  2021-03-10  8:05   ` Alexandru Ardelean
  2021-03-09 19:36 ` [PATCH v4 2/8] iio: fix devm_iio_trigger_alloc with parent.cocci Gwendal Grignou
                   ` (6 subsequent siblings)
  7 siblings, 1 reply; 15+ messages in thread
From: Gwendal Grignou @ 2021-03-09 19:36 UTC (permalink / raw)
  To: jic23, lars, andy.shevchenko, ardeleanalex; +Cc: linux-iio, Gwendal Grignou

When allocated with [devm_]iio_trigger_alloc(), set trig device parent to
the device the trigger is allocated for by default.

It can always be reassigned in the probe routine.

Change iio_trigger_alloc() API to add the device pointer to be coherent
with devm_iio_trigger_alloc, using similar interface to
iio_device_alloc().

Signed-off-by: Gwendal Grignou <gwendal@chromium.org>
---
Changes in v4:
- Allow lines to be greater than 80 characters.
- Improve alignment.

Changes in v3:
- xilinx-xadc-core.c is not using iio_trigger_alloc anymore.
- use parent as argumnet to be consistent with iio_device_alloc().

 drivers/iio/accel/bma180.c                    |  3 +-
 drivers/iio/adc/ad_sigma_delta.c              |  6 ++--
 drivers/iio/adc/at91_adc.c                    |  3 +-
 .../common/hid-sensors/hid-sensor-trigger.c   |  4 +--
 .../common/st_sensors/st_sensors_trigger.c    |  4 +--
 drivers/iio/gyro/itg3200_buffer.c             |  3 +-
 drivers/iio/industrialio-trigger.c            | 34 +++++++++++--------
 drivers/iio/trigger/iio-trig-hrtimer.c        |  2 +-
 drivers/iio/trigger/iio-trig-interrupt.c      |  2 +-
 drivers/iio/trigger/iio-trig-loop.c           |  2 +-
 drivers/iio/trigger/iio-trig-sysfs.c          |  3 +-
 include/linux/iio/iio.h                       |  2 +-
 include/linux/iio/trigger.h                   |  3 +-
 13 files changed, 37 insertions(+), 34 deletions(-)

diff --git a/drivers/iio/accel/bma180.c b/drivers/iio/accel/bma180.c
index 71f85a3e525b2..b8a7469cdae41 100644
--- a/drivers/iio/accel/bma180.c
+++ b/drivers/iio/accel/bma180.c
@@ -1044,7 +1044,7 @@ static int bma180_probe(struct i2c_client *client,
 	indio_dev->info = &bma180_info;
 
 	if (client->irq > 0) {
-		data->trig = iio_trigger_alloc("%s-dev%d", indio_dev->name,
+		data->trig = iio_trigger_alloc(dev, "%s-dev%d", indio_dev->name,
 			indio_dev->id);
 		if (!data->trig) {
 			ret = -ENOMEM;
@@ -1059,7 +1059,6 @@ static int bma180_probe(struct i2c_client *client,
 			goto err_trigger_free;
 		}
 
-		data->trig->dev.parent = dev;
 		data->trig->ops = &bma180_trigger_ops;
 		iio_trigger_set_drvdata(data->trig, indio_dev);
 		indio_dev->trig = iio_trigger_get(data->trig);
diff --git a/drivers/iio/adc/ad_sigma_delta.c b/drivers/iio/adc/ad_sigma_delta.c
index 3a6f239d4acca..9289812c0a946 100644
--- a/drivers/iio/adc/ad_sigma_delta.c
+++ b/drivers/iio/adc/ad_sigma_delta.c
@@ -475,8 +475,9 @@ static int ad_sd_probe_trigger(struct iio_dev *indio_dev)
 	struct ad_sigma_delta *sigma_delta = iio_device_get_drvdata(indio_dev);
 	int ret;
 
-	sigma_delta->trig = iio_trigger_alloc("%s-dev%d", indio_dev->name,
-						indio_dev->id);
+	sigma_delta->trig = iio_trigger_alloc(&sigma_delta->spi->dev,
+					      "%s-dev%d", indio_dev->name,
+					      indio_dev->id);
 	if (sigma_delta->trig == NULL) {
 		ret = -ENOMEM;
 		goto error_ret;
@@ -496,7 +497,6 @@ static int ad_sd_probe_trigger(struct iio_dev *indio_dev)
 		sigma_delta->irq_dis = true;
 		disable_irq_nosync(sigma_delta->spi->irq);
 	}
-	sigma_delta->trig->dev.parent = &sigma_delta->spi->dev;
 	iio_trigger_set_drvdata(sigma_delta->trig, sigma_delta);
 
 	ret = iio_trigger_register(sigma_delta->trig);
diff --git a/drivers/iio/adc/at91_adc.c b/drivers/iio/adc/at91_adc.c
index 70750abb5dead..0b5f0c91d0d73 100644
--- a/drivers/iio/adc/at91_adc.c
+++ b/drivers/iio/adc/at91_adc.c
@@ -625,12 +625,11 @@ static struct iio_trigger *at91_adc_allocate_trigger(struct iio_dev *idev,
 	struct iio_trigger *trig;
 	int ret;
 
-	trig = iio_trigger_alloc("%s-dev%d-%s", idev->name,
+	trig = iio_trigger_alloc(idev->dev.parent, "%s-dev%d-%s", idev->name,
 				 idev->id, trigger->name);
 	if (trig == NULL)
 		return NULL;
 
-	trig->dev.parent = idev->dev.parent;
 	iio_trigger_set_drvdata(trig, idev);
 	trig->ops = &at91_adc_trigger_ops;
 
diff --git a/drivers/iio/common/hid-sensors/hid-sensor-trigger.c b/drivers/iio/common/hid-sensors/hid-sensor-trigger.c
index 064c32bec9c7b..95ddccb44f1c8 100644
--- a/drivers/iio/common/hid-sensors/hid-sensor-trigger.c
+++ b/drivers/iio/common/hid-sensors/hid-sensor-trigger.c
@@ -255,14 +255,14 @@ int hid_sensor_setup_trigger(struct iio_dev *indio_dev, const char *name,
 		return ret;
 	}
 
-	trig = iio_trigger_alloc("%s-dev%d", name, indio_dev->id);
+	trig = iio_trigger_alloc(indio_dev->dev.parent,
+				 "%s-dev%d", name, indio_dev->id);
 	if (trig == NULL) {
 		dev_err(&indio_dev->dev, "Trigger Allocate Failed\n");
 		ret = -ENOMEM;
 		goto error_triggered_buffer_cleanup;
 	}
 
-	trig->dev.parent = indio_dev->dev.parent;
 	iio_trigger_set_drvdata(trig, attrb);
 	trig->ops = &hid_sensor_trigger_ops;
 	ret = iio_trigger_register(trig);
diff --git a/drivers/iio/common/st_sensors/st_sensors_trigger.c b/drivers/iio/common/st_sensors/st_sensors_trigger.c
index 2dbd2646e44e9..0b511665dee5f 100644
--- a/drivers/iio/common/st_sensors/st_sensors_trigger.c
+++ b/drivers/iio/common/st_sensors/st_sensors_trigger.c
@@ -123,7 +123,8 @@ int st_sensors_allocate_trigger(struct iio_dev *indio_dev,
 	unsigned long irq_trig;
 	int err;
 
-	sdata->trig = iio_trigger_alloc("%s-trigger", indio_dev->name);
+	sdata->trig = iio_trigger_alloc(sdata->dev, "%s-trigger",
+					indio_dev->name);
 	if (sdata->trig == NULL) {
 		dev_err(&indio_dev->dev, "failed to allocate iio trigger.\n");
 		return -ENOMEM;
@@ -131,7 +132,6 @@ int st_sensors_allocate_trigger(struct iio_dev *indio_dev,
 
 	iio_trigger_set_drvdata(sdata->trig, indio_dev);
 	sdata->trig->ops = trigger_ops;
-	sdata->trig->dev.parent = sdata->dev;
 
 	irq_trig = irqd_get_trigger_type(irq_get_irq_data(sdata->irq));
 	/*
diff --git a/drivers/iio/gyro/itg3200_buffer.c b/drivers/iio/gyro/itg3200_buffer.c
index 1c3c1bd53374a..af0aaa146f0ce 100644
--- a/drivers/iio/gyro/itg3200_buffer.c
+++ b/drivers/iio/gyro/itg3200_buffer.c
@@ -113,7 +113,7 @@ int itg3200_probe_trigger(struct iio_dev *indio_dev)
 	int ret;
 	struct itg3200 *st = iio_priv(indio_dev);
 
-	st->trig = iio_trigger_alloc("%s-dev%d", indio_dev->name,
+	st->trig = iio_trigger_alloc(&st->i2c->dev, "%s-dev%d", indio_dev->name,
 				     indio_dev->id);
 	if (!st->trig)
 		return -ENOMEM;
@@ -127,7 +127,6 @@ int itg3200_probe_trigger(struct iio_dev *indio_dev)
 		goto error_free_trig;
 
 
-	st->trig->dev.parent = &st->i2c->dev;
 	st->trig->ops = &itg3200_trigger_ops;
 	iio_trigger_set_drvdata(st->trig, indio_dev);
 	ret = iio_trigger_register(st->trig);
diff --git a/drivers/iio/industrialio-trigger.c b/drivers/iio/industrialio-trigger.c
index ea3c9859b2589..0eba9bd9fa360 100644
--- a/drivers/iio/industrialio-trigger.c
+++ b/drivers/iio/industrialio-trigger.c
@@ -514,8 +514,10 @@ static void iio_trig_subirqunmask(struct irq_data *d)
 	trig->subirqs[d->irq - trig->subirq_base].enabled = true;
 }
 
-static __printf(1, 0)
-struct iio_trigger *viio_trigger_alloc(const char *fmt, va_list vargs)
+static __printf(2, 0)
+struct iio_trigger *viio_trigger_alloc(struct device *parent,
+				       const char *fmt,
+				       va_list vargs)
 {
 	struct iio_trigger *trig;
 	int i;
@@ -524,6 +526,7 @@ struct iio_trigger *viio_trigger_alloc(const char *fmt, va_list vargs)
 	if (!trig)
 		return NULL;
 
+	trig->dev.parent = parent;
 	trig->dev.type = &iio_trig_type;
 	trig->dev.bus = &iio_bus_type;
 	device_initialize(&trig->dev);
@@ -559,13 +562,23 @@ struct iio_trigger *viio_trigger_alloc(const char *fmt, va_list vargs)
 	return NULL;
 }
 
-struct iio_trigger *iio_trigger_alloc(const char *fmt, ...)
+/**
+ * iio_trigger_alloc - Allocate a trigger
+ * @parent:		Device to allocate iio_trigger for
+ * @fmt:		trigger name format. If it includes format
+ *			specifiers, the additional arguments following
+ *			format are formatted and inserted in the resulting
+ *			string replacing their respective specifiers.
+ * RETURNS:
+ * Pointer to allocated iio_trigger on success, NULL on failure.
+ */
+struct iio_trigger *iio_trigger_alloc(struct device *parent, const char *fmt, ...)
 {
 	struct iio_trigger *trig;
 	va_list vargs;
 
 	va_start(vargs, fmt);
-	trig = viio_trigger_alloc(fmt, vargs);
+	trig = viio_trigger_alloc(parent, fmt, vargs);
 	va_end(vargs);
 
 	return trig;
@@ -586,20 +599,13 @@ static void devm_iio_trigger_release(struct device *dev, void *res)
 
 /**
  * devm_iio_trigger_alloc - Resource-managed iio_trigger_alloc()
- * @dev:		Device to allocate iio_trigger for
- * @fmt:		trigger name format. If it includes format
- *			specifiers, the additional arguments following
- *			format are formatted and inserted in the resulting
- *			string replacing their respective specifiers.
- *
  * Managed iio_trigger_alloc.  iio_trigger allocated with this function is
  * automatically freed on driver detach.
  *
  * RETURNS:
  * Pointer to allocated iio_trigger on success, NULL on failure.
  */
-struct iio_trigger *devm_iio_trigger_alloc(struct device *dev,
-						const char *fmt, ...)
+struct iio_trigger *devm_iio_trigger_alloc(struct device *parent, const char *fmt, ...)
 {
 	struct iio_trigger **ptr, *trig;
 	va_list vargs;
@@ -611,11 +617,11 @@ struct iio_trigger *devm_iio_trigger_alloc(struct device *dev,
 
 	/* use raw alloc_dr for kmalloc caller tracing */
 	va_start(vargs, fmt);
-	trig = viio_trigger_alloc(fmt, vargs);
+	trig = viio_trigger_alloc(parent, fmt, vargs);
 	va_end(vargs);
 	if (trig) {
 		*ptr = trig;
-		devres_add(dev, ptr);
+		devres_add(parent, ptr);
 	} else {
 		devres_free(ptr);
 	}
diff --git a/drivers/iio/trigger/iio-trig-hrtimer.c b/drivers/iio/trigger/iio-trig-hrtimer.c
index 410de837d0417..22940f86003fc 100644
--- a/drivers/iio/trigger/iio-trig-hrtimer.c
+++ b/drivers/iio/trigger/iio-trig-hrtimer.c
@@ -122,7 +122,7 @@ static struct iio_sw_trigger *iio_trig_hrtimer_probe(const char *name)
 	if (!trig_info)
 		return ERR_PTR(-ENOMEM);
 
-	trig_info->swt.trigger = iio_trigger_alloc("%s", name);
+	trig_info->swt.trigger = iio_trigger_alloc(NULL, "%s", name);
 	if (!trig_info->swt.trigger) {
 		ret = -ENOMEM;
 		goto err_free_trig_info;
diff --git a/drivers/iio/trigger/iio-trig-interrupt.c b/drivers/iio/trigger/iio-trig-interrupt.c
index 94a487caf4214..f746c460bf2a5 100644
--- a/drivers/iio/trigger/iio-trig-interrupt.c
+++ b/drivers/iio/trigger/iio-trig-interrupt.c
@@ -45,7 +45,7 @@ static int iio_interrupt_trigger_probe(struct platform_device *pdev)
 
 	irq = irq_res->start;
 
-	trig = iio_trigger_alloc("irqtrig%d", irq);
+	trig = iio_trigger_alloc(NULL, "irqtrig%d", irq);
 	if (!trig) {
 		ret = -ENOMEM;
 		goto error_ret;
diff --git a/drivers/iio/trigger/iio-trig-loop.c b/drivers/iio/trigger/iio-trig-loop.c
index 4a00668e32583..96ec06bbe546a 100644
--- a/drivers/iio/trigger/iio-trig-loop.c
+++ b/drivers/iio/trigger/iio-trig-loop.c
@@ -84,7 +84,7 @@ static struct iio_sw_trigger *iio_trig_loop_probe(const char *name)
 	if (!trig_info)
 		return ERR_PTR(-ENOMEM);
 
-	trig_info->swt.trigger = iio_trigger_alloc("%s", name);
+	trig_info->swt.trigger = iio_trigger_alloc(NULL, "%s", name);
 	if (!trig_info->swt.trigger) {
 		ret = -ENOMEM;
 		goto err_free_trig_info;
diff --git a/drivers/iio/trigger/iio-trig-sysfs.c b/drivers/iio/trigger/iio-trig-sysfs.c
index 0f6b512a5c37b..e9adfff45b39b 100644
--- a/drivers/iio/trigger/iio-trig-sysfs.c
+++ b/drivers/iio/trigger/iio-trig-sysfs.c
@@ -149,7 +149,7 @@ static int iio_sysfs_trigger_probe(int id)
 		goto out1;
 	}
 	t->id = id;
-	t->trig = iio_trigger_alloc("sysfstrig%d", id);
+	t->trig = iio_trigger_alloc(&iio_sysfs_trig_dev, "sysfstrig%d", id);
 	if (!t->trig) {
 		ret = -ENOMEM;
 		goto free_t;
@@ -157,7 +157,6 @@ static int iio_sysfs_trigger_probe(int id)
 
 	t->trig->dev.groups = iio_sysfs_trigger_attr_groups;
 	t->trig->ops = &iio_sysfs_trigger_ops;
-	t->trig->dev.parent = &iio_sysfs_trig_dev;
 	iio_trigger_set_drvdata(t->trig, t);
 
 	t->work = IRQ_WORK_INIT_HARD(iio_sysfs_trigger_work);
diff --git a/include/linux/iio/iio.h b/include/linux/iio/iio.h
index e4a9822e64950..5ca4b1d33e153 100644
--- a/include/linux/iio/iio.h
+++ b/include/linux/iio/iio.h
@@ -698,7 +698,7 @@ static inline void *iio_priv(const struct iio_dev *indio_dev)
 void iio_device_free(struct iio_dev *indio_dev);
 struct iio_dev *devm_iio_device_alloc(struct device *parent, int sizeof_priv);
 __printf(2, 3)
-struct iio_trigger *devm_iio_trigger_alloc(struct device *dev,
+struct iio_trigger *devm_iio_trigger_alloc(struct device *parent,
 					   const char *fmt, ...);
 /**
  * iio_buffer_enabled() - helper function to test if the buffer is enabled
diff --git a/include/linux/iio/trigger.h b/include/linux/iio/trigger.h
index 055890b6ffcf0..096f68dd2e0ca 100644
--- a/include/linux/iio/trigger.h
+++ b/include/linux/iio/trigger.h
@@ -161,7 +161,8 @@ void iio_trigger_poll_chained(struct iio_trigger *trig);
 
 irqreturn_t iio_trigger_generic_data_rdy_poll(int irq, void *private);
 
-__printf(1, 2) struct iio_trigger *iio_trigger_alloc(const char *fmt, ...);
+__printf(2, 3)
+struct iio_trigger *iio_trigger_alloc(struct device *parent, const char *fmt, ...);
 void iio_trigger_free(struct iio_trigger *trig);
 
 /**
-- 
2.30.1.766.gb4fecdf3b7-goog


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

* [PATCH v4 2/8] iio: fix devm_iio_trigger_alloc with parent.cocci
  2021-03-09 19:36 [PATCH v4 0/8] iio: Set default trigger device parent Gwendal Grignou
  2021-03-09 19:36 ` [PATCH v4 1/8] iio: set default trig->dev.parent Gwendal Grignou
@ 2021-03-09 19:36 ` Gwendal Grignou
  2021-03-09 19:36 ` [PATCH v4 3/8] iio: adis_trigger: Remove code to set trigger parent Gwendal Grignou
                   ` (5 subsequent siblings)
  7 siblings, 0 replies; 15+ messages in thread
From: Gwendal Grignou @ 2021-03-09 19:36 UTC (permalink / raw)
  To: jic23, lars, andy.shevchenko, ardeleanalex; +Cc: linux-iio, Gwendal Grignou

Use cocci semantic patch:
@@
expression trigger, P;
@@
   trigger = devm_iio_trigger_alloc(P, ...);
   ...
-  trigger->dev.parent = P;

To remove trigger->dev.parent, since it is set by default.

Signed-off-by: Gwendal Grignou <gwendal@chromium.org>
---
No changes in v4.

Changes in v3:
Added a private driver (sx932x) by mistake, removed.

 drivers/iio/accel/adxl372.c            | 2 --
 drivers/iio/accel/bmc150-accel-core.c  | 1 -
 drivers/iio/accel/kxcjk-1013.c         | 2 --
 drivers/iio/accel/mma8452.c            | 1 -
 drivers/iio/accel/mxc4005.c            | 1 -
 drivers/iio/accel/stk8312.c            | 1 -
 drivers/iio/accel/stk8ba50.c           | 1 -
 drivers/iio/adc/ad7606.c               | 1 -
 drivers/iio/adc/ad7766.c               | 1 -
 drivers/iio/adc/ad7768-1.c             | 1 -
 drivers/iio/adc/max1027.c              | 1 -
 drivers/iio/chemical/ccs811.c          | 1 -
 drivers/iio/chemical/scd30_core.c      | 1 -
 drivers/iio/gyro/adxrs290.c            | 1 -
 drivers/iio/gyro/bmg160_core.c         | 2 --
 drivers/iio/gyro/fxas21002c_core.c     | 1 -
 drivers/iio/health/afe4403.c           | 1 -
 drivers/iio/health/afe4404.c           | 1 -
 drivers/iio/humidity/hts221_buffer.c   | 1 -
 drivers/iio/imu/kmx61.c                | 1 -
 drivers/iio/light/rpr0521.c            | 1 -
 drivers/iio/light/si1145.c             | 1 -
 drivers/iio/light/st_uvis25_core.c     | 1 -
 drivers/iio/light/vcnl4000.c           | 1 -
 drivers/iio/light/vcnl4035.c           | 1 -
 drivers/iio/magnetometer/bmc150_magn.c | 1 -
 drivers/iio/magnetometer/rm3100-core.c | 1 -
 drivers/iio/pressure/zpa2326.c         | 1 -
 drivers/iio/proximity/sx9310.c         | 1 -
 drivers/iio/proximity/sx9500.c         | 1 -
 30 files changed, 33 deletions(-)

diff --git a/drivers/iio/accel/adxl372.c b/drivers/iio/accel/adxl372.c
index 8ba1453b8dbf4..9c9a896a872a0 100644
--- a/drivers/iio/accel/adxl372.c
+++ b/drivers/iio/accel/adxl372.c
@@ -1236,8 +1236,6 @@ int adxl372_probe(struct device *dev, struct regmap *regmap,
 
 		st->dready_trig->ops = &adxl372_trigger_ops;
 		st->peak_datardy_trig->ops = &adxl372_peak_data_trigger_ops;
-		st->dready_trig->dev.parent = dev;
-		st->peak_datardy_trig->dev.parent = dev;
 		iio_trigger_set_drvdata(st->dready_trig, indio_dev);
 		iio_trigger_set_drvdata(st->peak_datardy_trig, indio_dev);
 		ret = devm_iio_trigger_register(dev, st->dready_trig);
diff --git a/drivers/iio/accel/bmc150-accel-core.c b/drivers/iio/accel/bmc150-accel-core.c
index 7e425ebcd7ea8..2d1b46746db77 100644
--- a/drivers/iio/accel/bmc150-accel-core.c
+++ b/drivers/iio/accel/bmc150-accel-core.c
@@ -1472,7 +1472,6 @@ static int bmc150_accel_triggers_setup(struct iio_dev *indio_dev,
 			break;
 		}
 
-		t->indio_trig->dev.parent = dev;
 		t->indio_trig->ops = &bmc150_accel_trigger_ops;
 		t->intr = bmc150_accel_triggers[i].intr;
 		t->data = data;
diff --git a/drivers/iio/accel/kxcjk-1013.c b/drivers/iio/accel/kxcjk-1013.c
index 2fadafc860fd6..45c1faa6ea9d4 100644
--- a/drivers/iio/accel/kxcjk-1013.c
+++ b/drivers/iio/accel/kxcjk-1013.c
@@ -1413,7 +1413,6 @@ static int kxcjk1013_probe(struct i2c_client *client,
 			goto err_poweroff;
 		}
 
-		data->dready_trig->dev.parent = &client->dev;
 		data->dready_trig->ops = &kxcjk1013_trigger_ops;
 		iio_trigger_set_drvdata(data->dready_trig, indio_dev);
 		indio_dev->trig = data->dready_trig;
@@ -1422,7 +1421,6 @@ static int kxcjk1013_probe(struct i2c_client *client,
 		if (ret)
 			goto err_poweroff;
 
-		data->motion_trig->dev.parent = &client->dev;
 		data->motion_trig->ops = &kxcjk1013_trigger_ops;
 		iio_trigger_set_drvdata(data->motion_trig, indio_dev);
 		ret = iio_trigger_register(data->motion_trig);
diff --git a/drivers/iio/accel/mma8452.c b/drivers/iio/accel/mma8452.c
index b0176d936423d..12dd7c292504a 100644
--- a/drivers/iio/accel/mma8452.c
+++ b/drivers/iio/accel/mma8452.c
@@ -1465,7 +1465,6 @@ static int mma8452_trigger_setup(struct iio_dev *indio_dev)
 	if (!trig)
 		return -ENOMEM;
 
-	trig->dev.parent = &data->client->dev;
 	trig->ops = &mma8452_trigger_ops;
 	iio_trigger_set_drvdata(trig, indio_dev);
 
diff --git a/drivers/iio/accel/mxc4005.c b/drivers/iio/accel/mxc4005.c
index 0f8fd687866d4..fb3cbaa62bd87 100644
--- a/drivers/iio/accel/mxc4005.c
+++ b/drivers/iio/accel/mxc4005.c
@@ -450,7 +450,6 @@ static int mxc4005_probe(struct i2c_client *client,
 			return ret;
 		}
 
-		data->dready_trig->dev.parent = &client->dev;
 		data->dready_trig->ops = &mxc4005_trigger_ops;
 		iio_trigger_set_drvdata(data->dready_trig, indio_dev);
 		indio_dev->trig = data->dready_trig;
diff --git a/drivers/iio/accel/stk8312.c b/drivers/iio/accel/stk8312.c
index 3b59887a8581b..7c3b70eb3f2db 100644
--- a/drivers/iio/accel/stk8312.c
+++ b/drivers/iio/accel/stk8312.c
@@ -558,7 +558,6 @@ static int stk8312_probe(struct i2c_client *client,
 			goto err_power_off;
 		}
 
-		data->dready_trig->dev.parent = &client->dev;
 		data->dready_trig->ops = &stk8312_trigger_ops;
 		iio_trigger_set_drvdata(data->dready_trig, indio_dev);
 		ret = iio_trigger_register(data->dready_trig);
diff --git a/drivers/iio/accel/stk8ba50.c b/drivers/iio/accel/stk8ba50.c
index 3ead378b02c9b..bf0368ce46e18 100644
--- a/drivers/iio/accel/stk8ba50.c
+++ b/drivers/iio/accel/stk8ba50.c
@@ -454,7 +454,6 @@ static int stk8ba50_probe(struct i2c_client *client,
 			goto err_power_off;
 		}
 
-		data->dready_trig->dev.parent = &client->dev;
 		data->dready_trig->ops = &stk8ba50_trigger_ops;
 		iio_trigger_set_drvdata(data->dready_trig, indio_dev);
 		ret = iio_trigger_register(data->dready_trig);
diff --git a/drivers/iio/adc/ad7606.c b/drivers/iio/adc/ad7606.c
index ee7b108688b33..0af0bb4d5a7fe 100644
--- a/drivers/iio/adc/ad7606.c
+++ b/drivers/iio/adc/ad7606.c
@@ -668,7 +668,6 @@ int ad7606_probe(struct device *dev, int irq, void __iomem *base_address,
 		return -ENOMEM;
 
 	st->trig->ops = &ad7606_trigger_ops;
-	st->trig->dev.parent = dev;
 	iio_trigger_set_drvdata(st->trig, indio_dev);
 	ret = devm_iio_trigger_register(dev, st->trig);
 	if (ret)
diff --git a/drivers/iio/adc/ad7766.c b/drivers/iio/adc/ad7766.c
index b6b6765be7b49..829a3426f2351 100644
--- a/drivers/iio/adc/ad7766.c
+++ b/drivers/iio/adc/ad7766.c
@@ -253,7 +253,6 @@ static int ad7766_probe(struct spi_device *spi)
 			return -ENOMEM;
 
 		ad7766->trig->ops = &ad7766_trigger_ops;
-		ad7766->trig->dev.parent = &spi->dev;
 		iio_trigger_set_drvdata(ad7766->trig, ad7766);
 
 		ret = devm_request_irq(&spi->dev, spi->irq, ad7766_irq,
diff --git a/drivers/iio/adc/ad7768-1.c b/drivers/iio/adc/ad7768-1.c
index 5c0cbee032308..c945f1349623f 100644
--- a/drivers/iio/adc/ad7768-1.c
+++ b/drivers/iio/adc/ad7768-1.c
@@ -631,7 +631,6 @@ static int ad7768_probe(struct spi_device *spi)
 		return -ENOMEM;
 
 	st->trig->ops = &ad7768_trigger_ops;
-	st->trig->dev.parent = &spi->dev;
 	iio_trigger_set_drvdata(st->trig, indio_dev);
 	ret = devm_iio_trigger_register(&spi->dev, st->trig);
 	if (ret)
diff --git a/drivers/iio/adc/max1027.c b/drivers/iio/adc/max1027.c
index ca1dff3924ff9..e3c8ec107722d 100644
--- a/drivers/iio/adc/max1027.c
+++ b/drivers/iio/adc/max1027.c
@@ -473,7 +473,6 @@ static int max1027_probe(struct spi_device *spi)
 		}
 
 		st->trig->ops = &max1027_trigger_ops;
-		st->trig->dev.parent = &spi->dev;
 		iio_trigger_set_drvdata(st->trig, indio_dev);
 		ret = devm_iio_trigger_register(&indio_dev->dev,
 						st->trig);
diff --git a/drivers/iio/chemical/ccs811.c b/drivers/iio/chemical/ccs811.c
index 60dd87e96f5f8..886e96496dbf7 100644
--- a/drivers/iio/chemical/ccs811.c
+++ b/drivers/iio/chemical/ccs811.c
@@ -497,7 +497,6 @@ static int ccs811_probe(struct i2c_client *client,
 			goto err_poweroff;
 		}
 
-		data->drdy_trig->dev.parent = &client->dev;
 		data->drdy_trig->ops = &ccs811_trigger_ops;
 		iio_trigger_set_drvdata(data->drdy_trig, indio_dev);
 		indio_dev->trig = data->drdy_trig;
diff --git a/drivers/iio/chemical/scd30_core.c b/drivers/iio/chemical/scd30_core.c
index 4d0d798c7cd34..261c277ac4a59 100644
--- a/drivers/iio/chemical/scd30_core.c
+++ b/drivers/iio/chemical/scd30_core.c
@@ -646,7 +646,6 @@ static int scd30_setup_trigger(struct iio_dev *indio_dev)
 		return -ENOMEM;
 	}
 
-	trig->dev.parent = dev;
 	trig->ops = &scd30_trigger_ops;
 	iio_trigger_set_drvdata(trig, indio_dev);
 
diff --git a/drivers/iio/gyro/adxrs290.c b/drivers/iio/gyro/adxrs290.c
index c45d8226cc2b1..cec5e1f17c22a 100644
--- a/drivers/iio/gyro/adxrs290.c
+++ b/drivers/iio/gyro/adxrs290.c
@@ -593,7 +593,6 @@ static int adxrs290_probe_trigger(struct iio_dev *indio_dev)
 	if (!st->dready_trig)
 		return -ENOMEM;
 
-	st->dready_trig->dev.parent = &st->spi->dev;
 	st->dready_trig->ops = &adxrs290_trigger_ops;
 	iio_trigger_set_drvdata(st->dready_trig, indio_dev);
 
diff --git a/drivers/iio/gyro/bmg160_core.c b/drivers/iio/gyro/bmg160_core.c
index 029ef4c346046..b11ebd9bb7a41 100644
--- a/drivers/iio/gyro/bmg160_core.c
+++ b/drivers/iio/gyro/bmg160_core.c
@@ -1148,14 +1148,12 @@ int bmg160_core_probe(struct device *dev, struct regmap *regmap, int irq,
 		if (!data->motion_trig)
 			return -ENOMEM;
 
-		data->dready_trig->dev.parent = dev;
 		data->dready_trig->ops = &bmg160_trigger_ops;
 		iio_trigger_set_drvdata(data->dready_trig, indio_dev);
 		ret = iio_trigger_register(data->dready_trig);
 		if (ret)
 			return ret;
 
-		data->motion_trig->dev.parent = dev;
 		data->motion_trig->ops = &bmg160_trigger_ops;
 		iio_trigger_set_drvdata(data->motion_trig, indio_dev);
 		ret = iio_trigger_register(data->motion_trig);
diff --git a/drivers/iio/gyro/fxas21002c_core.c b/drivers/iio/gyro/fxas21002c_core.c
index 129eead8febc0..1a20c6b88e7db 100644
--- a/drivers/iio/gyro/fxas21002c_core.c
+++ b/drivers/iio/gyro/fxas21002c_core.c
@@ -875,7 +875,6 @@ static int fxas21002c_trigger_probe(struct fxas21002c_data *data)
 	if (ret < 0)
 		return ret;
 
-	data->dready_trig->dev.parent = dev;
 	data->dready_trig->ops = &fxas21002c_trigger_ops;
 	iio_trigger_set_drvdata(data->dready_trig, indio_dev);
 
diff --git a/drivers/iio/health/afe4403.c b/drivers/iio/health/afe4403.c
index 38734e4ce3605..1fa8d51d50806 100644
--- a/drivers/iio/health/afe4403.c
+++ b/drivers/iio/health/afe4403.c
@@ -531,7 +531,6 @@ static int afe4403_probe(struct spi_device *spi)
 		iio_trigger_set_drvdata(afe->trig, indio_dev);
 
 		afe->trig->ops = &afe4403_trigger_ops;
-		afe->trig->dev.parent = afe->dev;
 
 		ret = iio_trigger_register(afe->trig);
 		if (ret) {
diff --git a/drivers/iio/health/afe4404.c b/drivers/iio/health/afe4404.c
index 61fe4932d81d0..e1476bf79fe2a 100644
--- a/drivers/iio/health/afe4404.c
+++ b/drivers/iio/health/afe4404.c
@@ -538,7 +538,6 @@ static int afe4404_probe(struct i2c_client *client,
 		iio_trigger_set_drvdata(afe->trig, indio_dev);
 
 		afe->trig->ops = &afe4404_trigger_ops;
-		afe->trig->dev.parent = afe->dev;
 
 		ret = iio_trigger_register(afe->trig);
 		if (ret) {
diff --git a/drivers/iio/humidity/hts221_buffer.c b/drivers/iio/humidity/hts221_buffer.c
index 95e56917677fa..f29692b9d2db0 100644
--- a/drivers/iio/humidity/hts221_buffer.c
+++ b/drivers/iio/humidity/hts221_buffer.c
@@ -135,7 +135,6 @@ int hts221_allocate_trigger(struct iio_dev *iio_dev)
 
 	iio_trigger_set_drvdata(hw->trig, iio_dev);
 	hw->trig->ops = &hts221_trigger_ops;
-	hw->trig->dev.parent = hw->dev;
 	iio_dev->trig = iio_trigger_get(hw->trig);
 
 	return devm_iio_trigger_register(hw->dev, hw->trig);
diff --git a/drivers/iio/imu/kmx61.c b/drivers/iio/imu/kmx61.c
index 4377047d503ab..fc5a60fcfec05 100644
--- a/drivers/iio/imu/kmx61.c
+++ b/drivers/iio/imu/kmx61.c
@@ -1268,7 +1268,6 @@ static struct iio_trigger *kmx61_trigger_setup(struct kmx61_data *data,
 	if (!trig)
 		return ERR_PTR(-ENOMEM);
 
-	trig->dev.parent = &data->client->dev;
 	trig->ops = &kmx61_trigger_ops;
 	iio_trigger_set_drvdata(trig, indio_dev);
 
diff --git a/drivers/iio/light/rpr0521.c b/drivers/iio/light/rpr0521.c
index 31224a33bade3..033578f444e4a 100644
--- a/drivers/iio/light/rpr0521.c
+++ b/drivers/iio/light/rpr0521.c
@@ -990,7 +990,6 @@ static int rpr0521_probe(struct i2c_client *client,
 			ret = -ENOMEM;
 			goto err_pm_disable;
 		}
-		data->drdy_trigger0->dev.parent = indio_dev->dev.parent;
 		data->drdy_trigger0->ops = &rpr0521_trigger_ops;
 		indio_dev->available_scan_masks = rpr0521_available_scan_masks;
 		iio_trigger_set_drvdata(data->drdy_trigger0, indio_dev);
diff --git a/drivers/iio/light/si1145.c b/drivers/iio/light/si1145.c
index b304801c79163..9b5c99823943a 100644
--- a/drivers/iio/light/si1145.c
+++ b/drivers/iio/light/si1145.c
@@ -1247,7 +1247,6 @@ static int si1145_probe_trigger(struct iio_dev *indio_dev)
 	if (!trig)
 		return -ENOMEM;
 
-	trig->dev.parent = &client->dev;
 	trig->ops = &si1145_trigger_ops;
 	iio_trigger_set_drvdata(trig, indio_dev);
 
diff --git a/drivers/iio/light/st_uvis25_core.c b/drivers/iio/light/st_uvis25_core.c
index 1055594b22764..41a2ce5a2d538 100644
--- a/drivers/iio/light/st_uvis25_core.c
+++ b/drivers/iio/light/st_uvis25_core.c
@@ -210,7 +210,6 @@ static int st_uvis25_allocate_trigger(struct iio_dev *iio_dev)
 		return -ENOMEM;
 
 	iio_trigger_set_drvdata(hw->trig, iio_dev);
-	hw->trig->dev.parent = dev;
 
 	return devm_iio_trigger_register(dev, hw->trig);
 }
diff --git a/drivers/iio/light/vcnl4000.c b/drivers/iio/light/vcnl4000.c
index fff4b36b8b58d..2f7916f95689e 100644
--- a/drivers/iio/light/vcnl4000.c
+++ b/drivers/iio/light/vcnl4000.c
@@ -1002,7 +1002,6 @@ static int vcnl4010_probe_trigger(struct iio_dev *indio_dev)
 	if (!trigger)
 		return -ENOMEM;
 
-	trigger->dev.parent = &client->dev;
 	trigger->ops = &vcnl4010_trigger_ops;
 	iio_trigger_set_drvdata(trigger, indio_dev);
 
diff --git a/drivers/iio/light/vcnl4035.c b/drivers/iio/light/vcnl4035.c
index 73a28e30dddcc..ae87740d9cef2 100644
--- a/drivers/iio/light/vcnl4035.c
+++ b/drivers/iio/light/vcnl4035.c
@@ -511,7 +511,6 @@ static int vcnl4035_probe_trigger(struct iio_dev *indio_dev)
 	if (!data->drdy_trigger0)
 		return -ENOMEM;
 
-	data->drdy_trigger0->dev.parent = indio_dev->dev.parent;
 	data->drdy_trigger0->ops = &vcnl4035_trigger_ops;
 	iio_trigger_set_drvdata(data->drdy_trigger0, indio_dev);
 	ret = devm_iio_trigger_register(indio_dev->dev.parent,
diff --git a/drivers/iio/magnetometer/bmc150_magn.c b/drivers/iio/magnetometer/bmc150_magn.c
index b2f3129e1b4f3..00f9766bad5c5 100644
--- a/drivers/iio/magnetometer/bmc150_magn.c
+++ b/drivers/iio/magnetometer/bmc150_magn.c
@@ -922,7 +922,6 @@ int bmc150_magn_probe(struct device *dev, struct regmap *regmap,
 			goto err_poweroff;
 		}
 
-		data->dready_trig->dev.parent = dev;
 		data->dready_trig->ops = &bmc150_magn_trigger_ops;
 		iio_trigger_set_drvdata(data->dready_trig, indio_dev);
 		ret = iio_trigger_register(data->dready_trig);
diff --git a/drivers/iio/magnetometer/rm3100-core.c b/drivers/iio/magnetometer/rm3100-core.c
index 7242897a05e95..dd811da9cb6db 100644
--- a/drivers/iio/magnetometer/rm3100-core.c
+++ b/drivers/iio/magnetometer/rm3100-core.c
@@ -579,7 +579,6 @@ int rm3100_common_probe(struct device *dev, struct regmap *regmap, int irq)
 		if (!data->drdy_trig)
 			return -ENOMEM;
 
-		data->drdy_trig->dev.parent = dev;
 		ret = devm_iio_trigger_register(dev, data->drdy_trig);
 		if (ret < 0)
 			return ret;
diff --git a/drivers/iio/pressure/zpa2326.c b/drivers/iio/pressure/zpa2326.c
index 2cecbe0adb3f3..70adff62cd209 100644
--- a/drivers/iio/pressure/zpa2326.c
+++ b/drivers/iio/pressure/zpa2326.c
@@ -1413,7 +1413,6 @@ static int zpa2326_init_managed_trigger(struct device          *parent,
 		return -ENOMEM;
 
 	/* Basic setup. */
-	trigger->dev.parent = parent;
 	trigger->ops = &zpa2326_trigger_ops;
 
 	private->trigger = trigger;
diff --git a/drivers/iio/proximity/sx9310.c b/drivers/iio/proximity/sx9310.c
index 37fd0b65a0140..394c2afe0f233 100644
--- a/drivers/iio/proximity/sx9310.c
+++ b/drivers/iio/proximity/sx9310.c
@@ -1453,7 +1453,6 @@ static int sx9310_probe(struct i2c_client *client)
 		if (!data->trig)
 			return -ENOMEM;
 
-		data->trig->dev.parent = dev;
 		data->trig->ops = &sx9310_trigger_ops;
 		iio_trigger_set_drvdata(data->trig, indio_dev);
 
diff --git a/drivers/iio/proximity/sx9500.c b/drivers/iio/proximity/sx9500.c
index acb821cbad46f..bb42aa5d596ef 100644
--- a/drivers/iio/proximity/sx9500.c
+++ b/drivers/iio/proximity/sx9500.c
@@ -950,7 +950,6 @@ static int sx9500_probe(struct i2c_client *client,
 		if (!data->trig)
 			return -ENOMEM;
 
-		data->trig->dev.parent = &client->dev;
 		data->trig->ops = &sx9500_trigger_ops;
 		iio_trigger_set_drvdata(data->trig, indio_dev);
 
-- 
2.30.1.766.gb4fecdf3b7-goog


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

* [PATCH v4 3/8] iio: adis_trigger: Remove code to set trigger parent
  2021-03-09 19:36 [PATCH v4 0/8] iio: Set default trigger device parent Gwendal Grignou
  2021-03-09 19:36 ` [PATCH v4 1/8] iio: set default trig->dev.parent Gwendal Grignou
  2021-03-09 19:36 ` [PATCH v4 2/8] iio: fix devm_iio_trigger_alloc with parent.cocci Gwendal Grignou
@ 2021-03-09 19:36 ` Gwendal Grignou
  2021-03-10  7:55   ` Sa, Nuno
  2021-03-09 19:36 ` [PATCH v4 4/8] iio: gp2ap020a00f: " Gwendal Grignou
                   ` (4 subsequent siblings)
  7 siblings, 1 reply; 15+ messages in thread
From: Gwendal Grignou @ 2021-03-09 19:36 UTC (permalink / raw)
  To: jic23, lars, andy.shevchenko, ardeleanalex; +Cc: linux-iio, Gwendal Grignou

iio_trigger_set_drvdata() sets the trigger device parent to first
argument of viio_trigger_alloc(), no need to do it again in the driver
code.
Remove adis_trigger_setup() to match other drivers where setting the
trigger is usually done in the probe() routine.

Signed-off-by: Gwendal Grignou <gwendal@chromium.org>
---
Changes in v4:
Improve commit message.

No changes in v3.

 drivers/iio/imu/adis_trigger.c | 10 ++--------
 1 file changed, 2 insertions(+), 8 deletions(-)

diff --git a/drivers/iio/imu/adis_trigger.c b/drivers/iio/imu/adis_trigger.c
index 64e0ba51cb18e..0f29e56200af3 100644
--- a/drivers/iio/imu/adis_trigger.c
+++ b/drivers/iio/imu/adis_trigger.c
@@ -27,13 +27,6 @@ static const struct iio_trigger_ops adis_trigger_ops = {
 	.set_trigger_state = &adis_data_rdy_trigger_set_state,
 };
 
-static void adis_trigger_setup(struct adis *adis)
-{
-	adis->trig->dev.parent = &adis->spi->dev;
-	adis->trig->ops = &adis_trigger_ops;
-	iio_trigger_set_drvdata(adis->trig, adis);
-}
-
 static int adis_validate_irq_flag(struct adis *adis)
 {
 	/*
@@ -72,7 +65,8 @@ int devm_adis_probe_trigger(struct adis *adis, struct iio_dev *indio_dev)
 	if (!adis->trig)
 		return -ENOMEM;
 
-	adis_trigger_setup(adis);
+	adis->trig->ops = &adis_trigger_ops;
+	iio_trigger_set_drvdata(adis->trig, adis);
 
 	ret = adis_validate_irq_flag(adis);
 	if (ret)
-- 
2.30.1.766.gb4fecdf3b7-goog


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

* [PATCH v4 4/8] iio: gp2ap020a00f: Remove code to set trigger parent
  2021-03-09 19:36 [PATCH v4 0/8] iio: Set default trigger device parent Gwendal Grignou
                   ` (2 preceding siblings ...)
  2021-03-09 19:36 ` [PATCH v4 3/8] iio: adis_trigger: Remove code to set trigger parent Gwendal Grignou
@ 2021-03-09 19:36 ` Gwendal Grignou
  2021-03-09 19:36 ` [PATCH v4 5/8] iio: lmp91000: " Gwendal Grignou
                   ` (3 subsequent siblings)
  7 siblings, 0 replies; 15+ messages in thread
From: Gwendal Grignou @ 2021-03-09 19:36 UTC (permalink / raw)
  To: jic23, lars, andy.shevchenko, ardeleanalex; +Cc: linux-iio, Gwendal Grignou

iio_trigger_set_drvdata() sets the trigger device parent to first
argument of viio_trigger_alloc(), no need to do it again in the driver
code.

Given data->client is client, and we call devm_iio_trigger_alloc() with
&client->dev, we do not have to set data->trig->dev.parent to
&data->client->dev anymore.

Signed-off-by: Gwendal Grignou <gwendal@chromium.org>
---
Changes in v4:
Improve commit message.

No changes in v3.

 drivers/iio/light/gp2ap020a00f.c | 1 -
 1 file changed, 1 deletion(-)

diff --git a/drivers/iio/light/gp2ap020a00f.c b/drivers/iio/light/gp2ap020a00f.c
index e2850c1a73533..d1d9f2d319e45 100644
--- a/drivers/iio/light/gp2ap020a00f.c
+++ b/drivers/iio/light/gp2ap020a00f.c
@@ -1551,7 +1551,6 @@ static int gp2ap020a00f_probe(struct i2c_client *client,
 	}
 
 	data->trig->ops = &gp2ap020a00f_trigger_ops;
-	data->trig->dev.parent = &data->client->dev;
 
 	init_irq_work(&data->work, gp2ap020a00f_iio_trigger_work);
 
-- 
2.30.1.766.gb4fecdf3b7-goog


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

* [PATCH v4 5/8] iio: lmp91000: Remove code to set trigger parent
  2021-03-09 19:36 [PATCH v4 0/8] iio: Set default trigger device parent Gwendal Grignou
                   ` (3 preceding siblings ...)
  2021-03-09 19:36 ` [PATCH v4 4/8] iio: gp2ap020a00f: " Gwendal Grignou
@ 2021-03-09 19:36 ` Gwendal Grignou
  2021-03-09 21:50   ` Matt Ranostay
  2021-03-09 19:36 ` [PATCH v4 6/8] iio: chemical: atlas: " Gwendal Grignou
                   ` (2 subsequent siblings)
  7 siblings, 1 reply; 15+ messages in thread
From: Gwendal Grignou @ 2021-03-09 19:36 UTC (permalink / raw)
  To: jic23, lars, andy.shevchenko, ardeleanalex; +Cc: linux-iio, Gwendal Grignou

iio_trigger_set_drvdata() sets the trigger device parent to first
argument of viio_trigger_alloc(), no need to do it again in the driver
code.

Given data->dev is dev, and we call devm_iio_trigger_alloc with
dev instead of data->dev, we do not have to set data->trig->dev.parent to
dev anymore.

Signed-off-by: Gwendal Grignou <gwendal@chromium.org>
---
Changes in v4:
Improve commit message.

No changes in v3.

 drivers/iio/potentiostat/lmp91000.c | 3 +--
 1 file changed, 1 insertion(+), 2 deletions(-)

diff --git a/drivers/iio/potentiostat/lmp91000.c b/drivers/iio/potentiostat/lmp91000.c
index f34ca769dc20d..8a9c576616ee5 100644
--- a/drivers/iio/potentiostat/lmp91000.c
+++ b/drivers/iio/potentiostat/lmp91000.c
@@ -322,7 +322,7 @@ static int lmp91000_probe(struct i2c_client *client,
 		return PTR_ERR(data->regmap);
 	}
 
-	data->trig = devm_iio_trigger_alloc(data->dev, "%s-mux%d",
+	data->trig = devm_iio_trigger_alloc(dev, "%s-mux%d",
 					    indio_dev->name, indio_dev->id);
 	if (!data->trig) {
 		dev_err(dev, "cannot allocate iio trigger.\n");
@@ -330,7 +330,6 @@ static int lmp91000_probe(struct i2c_client *client,
 	}
 
 	data->trig->ops = &lmp91000_trigger_ops;
-	data->trig->dev.parent = dev;
 	init_completion(&data->completion);
 
 	ret = lmp91000_read_config(data);
-- 
2.30.1.766.gb4fecdf3b7-goog


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

* [PATCH v4 6/8] iio: chemical: atlas: Remove code to set trigger parent
  2021-03-09 19:36 [PATCH v4 0/8] iio: Set default trigger device parent Gwendal Grignou
                   ` (4 preceding siblings ...)
  2021-03-09 19:36 ` [PATCH v4 5/8] iio: lmp91000: " Gwendal Grignou
@ 2021-03-09 19:36 ` Gwendal Grignou
  2021-03-09 21:50   ` Matt Ranostay
  2021-03-09 19:36 ` [PATCH v4 7/8] iio: as3935: " Gwendal Grignou
  2021-03-09 19:36 ` [PATCH v4 8/8] iio: xilinx-xadc: " Gwendal Grignou
  7 siblings, 1 reply; 15+ messages in thread
From: Gwendal Grignou @ 2021-03-09 19:36 UTC (permalink / raw)
  To: jic23, lars, andy.shevchenko, ardeleanalex; +Cc: linux-iio, Gwendal Grignou

iio_trigger_set_drvdata() sets the trigger device parent to first
argument of viio_trigger_alloc(), no need to do it again in the driver
code.

Given we call devm_iio_trigger_alloc() and devm_iio_device_alloc() with
&client->dev as parent, we do not have to set data->trig->dev.parent to
indio_dev->dev.parent anymore.

Signed-off-by: Gwendal Grignou <gwendal@chromium.org>
---
Changes in v4:
Improve commit message.

No changes in v3.

 drivers/iio/chemical/atlas-sensor.c | 1 -
 1 file changed, 1 deletion(-)

diff --git a/drivers/iio/chemical/atlas-sensor.c b/drivers/iio/chemical/atlas-sensor.c
index cdab9d04dedd0..56ba6c82b501f 100644
--- a/drivers/iio/chemical/atlas-sensor.c
+++ b/drivers/iio/chemical/atlas-sensor.c
@@ -649,7 +649,6 @@ static int atlas_probe(struct i2c_client *client,
 	data->client = client;
 	data->trig = trig;
 	data->chip = chip;
-	trig->dev.parent = indio_dev->dev.parent;
 	trig->ops = &atlas_interrupt_trigger_ops;
 	iio_trigger_set_drvdata(trig, indio_dev);
 
-- 
2.30.1.766.gb4fecdf3b7-goog


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

* [PATCH v4 7/8] iio: as3935: Remove code to set trigger parent
  2021-03-09 19:36 [PATCH v4 0/8] iio: Set default trigger device parent Gwendal Grignou
                   ` (5 preceding siblings ...)
  2021-03-09 19:36 ` [PATCH v4 6/8] iio: chemical: atlas: " Gwendal Grignou
@ 2021-03-09 19:36 ` Gwendal Grignou
  2021-03-09 21:50   ` Matt Ranostay
  2021-03-09 19:36 ` [PATCH v4 8/8] iio: xilinx-xadc: " Gwendal Grignou
  7 siblings, 1 reply; 15+ messages in thread
From: Gwendal Grignou @ 2021-03-09 19:36 UTC (permalink / raw)
  To: jic23, lars, andy.shevchenko, ardeleanalex; +Cc: linux-iio, Gwendal Grignou

iio_trigger_set_drvdata() sets the trigger device parent to first
argument of viio_trigger_alloc(), no need to do it again in the driver
code.

Given we call devm_iio_trigger_alloc() and devm_iio_device_alloc() with
dev as parent, we do not have to set data->trig->dev.parent to
indio_dev->dev.parent anymore.

Signed-off-by: Gwendal Grignou <gwendal@chromium.org>
---
Changes in v4:
Improve commit message.

No changes in v3.

 drivers/iio/proximity/as3935.c | 1 -
 1 file changed, 1 deletion(-)

diff --git a/drivers/iio/proximity/as3935.c b/drivers/iio/proximity/as3935.c
index b79ada839e012..edc4a35ae66d1 100644
--- a/drivers/iio/proximity/as3935.c
+++ b/drivers/iio/proximity/as3935.c
@@ -411,7 +411,6 @@ static int as3935_probe(struct spi_device *spi)
 
 	st->trig = trig;
 	st->noise_tripped = jiffies - HZ;
-	trig->dev.parent = indio_dev->dev.parent;
 	iio_trigger_set_drvdata(trig, indio_dev);
 	trig->ops = &iio_interrupt_trigger_ops;
 
-- 
2.30.1.766.gb4fecdf3b7-goog


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

* [PATCH v4 8/8] iio: xilinx-xadc: Remove code to set trigger parent
  2021-03-09 19:36 [PATCH v4 0/8] iio: Set default trigger device parent Gwendal Grignou
                   ` (6 preceding siblings ...)
  2021-03-09 19:36 ` [PATCH v4 7/8] iio: as3935: " Gwendal Grignou
@ 2021-03-09 19:36 ` Gwendal Grignou
  7 siblings, 0 replies; 15+ messages in thread
From: Gwendal Grignou @ 2021-03-09 19:36 UTC (permalink / raw)
  To: jic23, lars, andy.shevchenko, ardeleanalex; +Cc: linux-iio, Gwendal Grignou

iio_trigger_set_drvdata() sets the trigger device parent to first
argument of viio_trigger_alloc(), no need to do it again in the driver
code.

In xadc_alloc_trigger, given dev is indio_dev->dev.parent, and we call
devm_iio_trigger_alloc wit dev as argument,  we do not have to set
data->trig->dev.parent to indio_dev->dev.parent anymore.

Signed-off-by: Gwendal Grignou <gwendal@chromium.org>
---
Changes in v4:
Improve commit message.

No changes in v3.

 drivers/iio/adc/xilinx-xadc-core.c | 1 -
 1 file changed, 1 deletion(-)

diff --git a/drivers/iio/adc/xilinx-xadc-core.c b/drivers/iio/adc/xilinx-xadc-core.c
index 34800dccbf698..6914c1900ed0b 100644
--- a/drivers/iio/adc/xilinx-xadc-core.c
+++ b/drivers/iio/adc/xilinx-xadc-core.c
@@ -747,7 +747,6 @@ static struct iio_trigger *xadc_alloc_trigger(struct iio_dev *indio_dev,
 	if (trig == NULL)
 		return ERR_PTR(-ENOMEM);
 
-	trig->dev.parent = indio_dev->dev.parent;
 	trig->ops = &xadc_trigger_ops;
 	iio_trigger_set_drvdata(trig, iio_priv(indio_dev));
 
-- 
2.30.1.766.gb4fecdf3b7-goog


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

* Re: [PATCH v4 7/8] iio: as3935: Remove code to set trigger parent
  2021-03-09 19:36 ` [PATCH v4 7/8] iio: as3935: " Gwendal Grignou
@ 2021-03-09 21:50   ` Matt Ranostay
  0 siblings, 0 replies; 15+ messages in thread
From: Matt Ranostay @ 2021-03-09 21:50 UTC (permalink / raw)
  To: Gwendal Grignou
  Cc: Jonathan Cameron, Lars-Peter Clausen, Andy Shevchenko,
	ardeleanalex, open list:IIO SUBSYSTEM AND DRIVERS

On Tue, Mar 9, 2021 at 11:37 AM Gwendal Grignou <gwendal@chromium.org> wrote:
>
> iio_trigger_set_drvdata() sets the trigger device parent to first
> argument of viio_trigger_alloc(), no need to do it again in the driver
> code.
>
> Given we call devm_iio_trigger_alloc() and devm_iio_device_alloc() with
> dev as parent, we do not have to set data->trig->dev.parent to
> indio_dev->dev.parent anymore.
>
> Signed-off-by: Gwendal Grignou <gwendal@chromium.org>

Reviewed-by: Matt Ranostay <matt.ranostay@konsulko.com>

> ---
> Changes in v4:
> Improve commit message.
>
> No changes in v3.
>
>  drivers/iio/proximity/as3935.c | 1 -
>  1 file changed, 1 deletion(-)
>
> diff --git a/drivers/iio/proximity/as3935.c b/drivers/iio/proximity/as3935.c
> index b79ada839e012..edc4a35ae66d1 100644
> --- a/drivers/iio/proximity/as3935.c
> +++ b/drivers/iio/proximity/as3935.c
> @@ -411,7 +411,6 @@ static int as3935_probe(struct spi_device *spi)
>
>         st->trig = trig;
>         st->noise_tripped = jiffies - HZ;
> -       trig->dev.parent = indio_dev->dev.parent;
>         iio_trigger_set_drvdata(trig, indio_dev);
>         trig->ops = &iio_interrupt_trigger_ops;
>
> --
> 2.30.1.766.gb4fecdf3b7-goog
>

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

* Re: [PATCH v4 5/8] iio: lmp91000: Remove code to set trigger parent
  2021-03-09 19:36 ` [PATCH v4 5/8] iio: lmp91000: " Gwendal Grignou
@ 2021-03-09 21:50   ` Matt Ranostay
  0 siblings, 0 replies; 15+ messages in thread
From: Matt Ranostay @ 2021-03-09 21:50 UTC (permalink / raw)
  To: Gwendal Grignou
  Cc: Jonathan Cameron, Lars-Peter Clausen, Andy Shevchenko,
	ardeleanalex, open list:IIO SUBSYSTEM AND DRIVERS

On Tue, Mar 9, 2021 at 11:37 AM Gwendal Grignou <gwendal@chromium.org> wrote:
>
> iio_trigger_set_drvdata() sets the trigger device parent to first
> argument of viio_trigger_alloc(), no need to do it again in the driver
> code.
>
> Given data->dev is dev, and we call devm_iio_trigger_alloc with
> dev instead of data->dev, we do not have to set data->trig->dev.parent to
> dev anymore.
>
> Signed-off-by: Gwendal Grignou <gwendal@chromium.org>

Reviewed-by: Matt Ranostay <matt.ranostay@konsulko.com>

> ---
> Changes in v4:
> Improve commit message.
>
> No changes in v3.
>
>  drivers/iio/potentiostat/lmp91000.c | 3 +--
>  1 file changed, 1 insertion(+), 2 deletions(-)
>
> diff --git a/drivers/iio/potentiostat/lmp91000.c b/drivers/iio/potentiostat/lmp91000.c
> index f34ca769dc20d..8a9c576616ee5 100644
> --- a/drivers/iio/potentiostat/lmp91000.c
> +++ b/drivers/iio/potentiostat/lmp91000.c
> @@ -322,7 +322,7 @@ static int lmp91000_probe(struct i2c_client *client,
>                 return PTR_ERR(data->regmap);
>         }
>
> -       data->trig = devm_iio_trigger_alloc(data->dev, "%s-mux%d",
> +       data->trig = devm_iio_trigger_alloc(dev, "%s-mux%d",
>                                             indio_dev->name, indio_dev->id);
>         if (!data->trig) {
>                 dev_err(dev, "cannot allocate iio trigger.\n");
> @@ -330,7 +330,6 @@ static int lmp91000_probe(struct i2c_client *client,
>         }
>
>         data->trig->ops = &lmp91000_trigger_ops;
> -       data->trig->dev.parent = dev;
>         init_completion(&data->completion);
>
>         ret = lmp91000_read_config(data);
> --
> 2.30.1.766.gb4fecdf3b7-goog
>

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

* Re: [PATCH v4 6/8] iio: chemical: atlas: Remove code to set trigger parent
  2021-03-09 19:36 ` [PATCH v4 6/8] iio: chemical: atlas: " Gwendal Grignou
@ 2021-03-09 21:50   ` Matt Ranostay
  0 siblings, 0 replies; 15+ messages in thread
From: Matt Ranostay @ 2021-03-09 21:50 UTC (permalink / raw)
  To: Gwendal Grignou
  Cc: Jonathan Cameron, Lars-Peter Clausen, Andy Shevchenko,
	ardeleanalex, open list:IIO SUBSYSTEM AND DRIVERS

On Tue, Mar 9, 2021 at 11:37 AM Gwendal Grignou <gwendal@chromium.org> wrote:
>
> iio_trigger_set_drvdata() sets the trigger device parent to first
> argument of viio_trigger_alloc(), no need to do it again in the driver
> code.
>
> Given we call devm_iio_trigger_alloc() and devm_iio_device_alloc() with
> &client->dev as parent, we do not have to set data->trig->dev.parent to
> indio_dev->dev.parent anymore.
>
> Signed-off-by: Gwendal Grignou <gwendal@chromium.org>

Reviewed-by: Matt Ranostay <matt.ranostay@konsulko.com>

> ---
> Changes in v4:
> Improve commit message.
>
> No changes in v3.
>
>  drivers/iio/chemical/atlas-sensor.c | 1 -
>  1 file changed, 1 deletion(-)
>
> diff --git a/drivers/iio/chemical/atlas-sensor.c b/drivers/iio/chemical/atlas-sensor.c
> index cdab9d04dedd0..56ba6c82b501f 100644
> --- a/drivers/iio/chemical/atlas-sensor.c
> +++ b/drivers/iio/chemical/atlas-sensor.c
> @@ -649,7 +649,6 @@ static int atlas_probe(struct i2c_client *client,
>         data->client = client;
>         data->trig = trig;
>         data->chip = chip;
> -       trig->dev.parent = indio_dev->dev.parent;
>         trig->ops = &atlas_interrupt_trigger_ops;
>         iio_trigger_set_drvdata(trig, indio_dev);
>
> --
> 2.30.1.766.gb4fecdf3b7-goog
>

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

* RE: [PATCH v4 3/8] iio: adis_trigger: Remove code to set trigger parent
  2021-03-09 19:36 ` [PATCH v4 3/8] iio: adis_trigger: Remove code to set trigger parent Gwendal Grignou
@ 2021-03-10  7:55   ` Sa, Nuno
  0 siblings, 0 replies; 15+ messages in thread
From: Sa, Nuno @ 2021-03-10  7:55 UTC (permalink / raw)
  To: Gwendal Grignou, jic23, lars, andy.shevchenko, ardeleanalex; +Cc: linux-iio



> -----Original Message-----
> From: Gwendal Grignou <gwendal@chromium.org>
> Sent: Tuesday, March 9, 2021 8:36 PM
> To: jic23@kernel.org; lars@metafoo.de;
> andy.shevchenko@gmail.com; ardeleanalex@gmail.com
> Cc: linux-iio@vger.kernel.org; Gwendal Grignou
> <gwendal@chromium.org>
> Subject: [PATCH v4 3/8] iio: adis_trigger: Remove code to set trigger
> parent
> 
> 
> iio_trigger_set_drvdata() sets the trigger device parent to first
> argument of viio_trigger_alloc(), no need to do it again in the driver
> code.
> Remove adis_trigger_setup() to match other drivers where setting the
> trigger is usually done in the probe() routine.
> 
> Signed-off-by: Gwendal Grignou <gwendal@chromium.org>
> ---

Reviewed-by: Nuno Sa <nuno.sa@analog.com>

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

* Re: [PATCH v4 1/8] iio: set default trig->dev.parent
  2021-03-09 19:36 ` [PATCH v4 1/8] iio: set default trig->dev.parent Gwendal Grignou
@ 2021-03-10  8:05   ` Alexandru Ardelean
  2021-03-13 18:13     ` Jonathan Cameron
  0 siblings, 1 reply; 15+ messages in thread
From: Alexandru Ardelean @ 2021-03-10  8:05 UTC (permalink / raw)
  To: Gwendal Grignou
  Cc: Jonathan Cameron, Lars-Peter Clausen, Andy Shevchenko, linux-iio

On Tue, Mar 9, 2021 at 9:36 PM Gwendal Grignou <gwendal@chromium.org> wrote:
>
> When allocated with [devm_]iio_trigger_alloc(), set trig device parent to
> the device the trigger is allocated for by default.
>
> It can always be reassigned in the probe routine.
>
> Change iio_trigger_alloc() API to add the device pointer to be coherent
> with devm_iio_trigger_alloc, using similar interface to
> iio_device_alloc().

Some trigger parents are being removed in this patch, vs being removed
in a separate patch [as done in other drivers].
My only note is that this should be a bit more consistent.
i.e. All parents removed in this patch, or all parents removed in
separate patches; right now, it's a mix of both

Maybe it's a good idea to squash the removal of all parent assignments
in this patch to see easier when they get moved as parameters of
{devm_}iio_trigger_alloc().
There aren't too many assignments of parents to triggers to make a
single patch be difficult to review;

>
> Signed-off-by: Gwendal Grignou <gwendal@chromium.org>
> ---
> Changes in v4:
> - Allow lines to be greater than 80 characters.
> - Improve alignment.
>
> Changes in v3:
> - xilinx-xadc-core.c is not using iio_trigger_alloc anymore.
> - use parent as argumnet to be consistent with iio_device_alloc().
>
>  drivers/iio/accel/bma180.c                    |  3 +-
>  drivers/iio/adc/ad_sigma_delta.c              |  6 ++--
>  drivers/iio/adc/at91_adc.c                    |  3 +-
>  .../common/hid-sensors/hid-sensor-trigger.c   |  4 +--
>  .../common/st_sensors/st_sensors_trigger.c    |  4 +--
>  drivers/iio/gyro/itg3200_buffer.c             |  3 +-
>  drivers/iio/industrialio-trigger.c            | 34 +++++++++++--------
>  drivers/iio/trigger/iio-trig-hrtimer.c        |  2 +-
>  drivers/iio/trigger/iio-trig-interrupt.c      |  2 +-
>  drivers/iio/trigger/iio-trig-loop.c           |  2 +-
>  drivers/iio/trigger/iio-trig-sysfs.c          |  3 +-
>  include/linux/iio/iio.h                       |  2 +-
>  include/linux/iio/trigger.h                   |  3 +-
>  13 files changed, 37 insertions(+), 34 deletions(-)
>
> diff --git a/drivers/iio/accel/bma180.c b/drivers/iio/accel/bma180.c
> index 71f85a3e525b2..b8a7469cdae41 100644
> --- a/drivers/iio/accel/bma180.c
> +++ b/drivers/iio/accel/bma180.c
> @@ -1044,7 +1044,7 @@ static int bma180_probe(struct i2c_client *client,
>         indio_dev->info = &bma180_info;
>
>         if (client->irq > 0) {
> -               data->trig = iio_trigger_alloc("%s-dev%d", indio_dev->name,
> +               data->trig = iio_trigger_alloc(dev, "%s-dev%d", indio_dev->name,
>                         indio_dev->id);
>                 if (!data->trig) {
>                         ret = -ENOMEM;
> @@ -1059,7 +1059,6 @@ static int bma180_probe(struct i2c_client *client,
>                         goto err_trigger_free;
>                 }
>
> -               data->trig->dev.parent = dev;
>                 data->trig->ops = &bma180_trigger_ops;
>                 iio_trigger_set_drvdata(data->trig, indio_dev);
>                 indio_dev->trig = iio_trigger_get(data->trig);
> diff --git a/drivers/iio/adc/ad_sigma_delta.c b/drivers/iio/adc/ad_sigma_delta.c
> index 3a6f239d4acca..9289812c0a946 100644
> --- a/drivers/iio/adc/ad_sigma_delta.c
> +++ b/drivers/iio/adc/ad_sigma_delta.c
> @@ -475,8 +475,9 @@ static int ad_sd_probe_trigger(struct iio_dev *indio_dev)
>         struct ad_sigma_delta *sigma_delta = iio_device_get_drvdata(indio_dev);
>         int ret;
>
> -       sigma_delta->trig = iio_trigger_alloc("%s-dev%d", indio_dev->name,
> -                                               indio_dev->id);
> +       sigma_delta->trig = iio_trigger_alloc(&sigma_delta->spi->dev,
> +                                             "%s-dev%d", indio_dev->name,
> +                                             indio_dev->id);
>         if (sigma_delta->trig == NULL) {
>                 ret = -ENOMEM;
>                 goto error_ret;
> @@ -496,7 +497,6 @@ static int ad_sd_probe_trigger(struct iio_dev *indio_dev)
>                 sigma_delta->irq_dis = true;
>                 disable_irq_nosync(sigma_delta->spi->irq);
>         }
> -       sigma_delta->trig->dev.parent = &sigma_delta->spi->dev;
>         iio_trigger_set_drvdata(sigma_delta->trig, sigma_delta);
>
>         ret = iio_trigger_register(sigma_delta->trig);
> diff --git a/drivers/iio/adc/at91_adc.c b/drivers/iio/adc/at91_adc.c
> index 70750abb5dead..0b5f0c91d0d73 100644
> --- a/drivers/iio/adc/at91_adc.c
> +++ b/drivers/iio/adc/at91_adc.c
> @@ -625,12 +625,11 @@ static struct iio_trigger *at91_adc_allocate_trigger(struct iio_dev *idev,
>         struct iio_trigger *trig;
>         int ret;
>
> -       trig = iio_trigger_alloc("%s-dev%d-%s", idev->name,
> +       trig = iio_trigger_alloc(idev->dev.parent, "%s-dev%d-%s", idev->name,
>                                  idev->id, trigger->name);
>         if (trig == NULL)
>                 return NULL;
>
> -       trig->dev.parent = idev->dev.parent;
>         iio_trigger_set_drvdata(trig, idev);
>         trig->ops = &at91_adc_trigger_ops;
>
> diff --git a/drivers/iio/common/hid-sensors/hid-sensor-trigger.c b/drivers/iio/common/hid-sensors/hid-sensor-trigger.c
> index 064c32bec9c7b..95ddccb44f1c8 100644
> --- a/drivers/iio/common/hid-sensors/hid-sensor-trigger.c
> +++ b/drivers/iio/common/hid-sensors/hid-sensor-trigger.c
> @@ -255,14 +255,14 @@ int hid_sensor_setup_trigger(struct iio_dev *indio_dev, const char *name,
>                 return ret;
>         }
>
> -       trig = iio_trigger_alloc("%s-dev%d", name, indio_dev->id);
> +       trig = iio_trigger_alloc(indio_dev->dev.parent,
> +                                "%s-dev%d", name, indio_dev->id);
>         if (trig == NULL) {
>                 dev_err(&indio_dev->dev, "Trigger Allocate Failed\n");
>                 ret = -ENOMEM;
>                 goto error_triggered_buffer_cleanup;
>         }
>
> -       trig->dev.parent = indio_dev->dev.parent;
>         iio_trigger_set_drvdata(trig, attrb);
>         trig->ops = &hid_sensor_trigger_ops;
>         ret = iio_trigger_register(trig);
> diff --git a/drivers/iio/common/st_sensors/st_sensors_trigger.c b/drivers/iio/common/st_sensors/st_sensors_trigger.c
> index 2dbd2646e44e9..0b511665dee5f 100644
> --- a/drivers/iio/common/st_sensors/st_sensors_trigger.c
> +++ b/drivers/iio/common/st_sensors/st_sensors_trigger.c
> @@ -123,7 +123,8 @@ int st_sensors_allocate_trigger(struct iio_dev *indio_dev,
>         unsigned long irq_trig;
>         int err;
>
> -       sdata->trig = iio_trigger_alloc("%s-trigger", indio_dev->name);
> +       sdata->trig = iio_trigger_alloc(sdata->dev, "%s-trigger",
> +                                       indio_dev->name);
>         if (sdata->trig == NULL) {
>                 dev_err(&indio_dev->dev, "failed to allocate iio trigger.\n");
>                 return -ENOMEM;
> @@ -131,7 +132,6 @@ int st_sensors_allocate_trigger(struct iio_dev *indio_dev,
>
>         iio_trigger_set_drvdata(sdata->trig, indio_dev);
>         sdata->trig->ops = trigger_ops;
> -       sdata->trig->dev.parent = sdata->dev;
>
>         irq_trig = irqd_get_trigger_type(irq_get_irq_data(sdata->irq));
>         /*
> diff --git a/drivers/iio/gyro/itg3200_buffer.c b/drivers/iio/gyro/itg3200_buffer.c
> index 1c3c1bd53374a..af0aaa146f0ce 100644
> --- a/drivers/iio/gyro/itg3200_buffer.c
> +++ b/drivers/iio/gyro/itg3200_buffer.c
> @@ -113,7 +113,7 @@ int itg3200_probe_trigger(struct iio_dev *indio_dev)
>         int ret;
>         struct itg3200 *st = iio_priv(indio_dev);
>
> -       st->trig = iio_trigger_alloc("%s-dev%d", indio_dev->name,
> +       st->trig = iio_trigger_alloc(&st->i2c->dev, "%s-dev%d", indio_dev->name,
>                                      indio_dev->id);
>         if (!st->trig)
>                 return -ENOMEM;
> @@ -127,7 +127,6 @@ int itg3200_probe_trigger(struct iio_dev *indio_dev)
>                 goto error_free_trig;
>
>
> -       st->trig->dev.parent = &st->i2c->dev;
>         st->trig->ops = &itg3200_trigger_ops;
>         iio_trigger_set_drvdata(st->trig, indio_dev);
>         ret = iio_trigger_register(st->trig);
> diff --git a/drivers/iio/industrialio-trigger.c b/drivers/iio/industrialio-trigger.c
> index ea3c9859b2589..0eba9bd9fa360 100644
> --- a/drivers/iio/industrialio-trigger.c
> +++ b/drivers/iio/industrialio-trigger.c
> @@ -514,8 +514,10 @@ static void iio_trig_subirqunmask(struct irq_data *d)
>         trig->subirqs[d->irq - trig->subirq_base].enabled = true;
>  }
>
> -static __printf(1, 0)
> -struct iio_trigger *viio_trigger_alloc(const char *fmt, va_list vargs)
> +static __printf(2, 0)
> +struct iio_trigger *viio_trigger_alloc(struct device *parent,
> +                                      const char *fmt,
> +                                      va_list vargs)
>  {
>         struct iio_trigger *trig;
>         int i;
> @@ -524,6 +526,7 @@ struct iio_trigger *viio_trigger_alloc(const char *fmt, va_list vargs)
>         if (!trig)
>                 return NULL;
>
> +       trig->dev.parent = parent;
>         trig->dev.type = &iio_trig_type;
>         trig->dev.bus = &iio_bus_type;
>         device_initialize(&trig->dev);
> @@ -559,13 +562,23 @@ struct iio_trigger *viio_trigger_alloc(const char *fmt, va_list vargs)
>         return NULL;
>  }
>
> -struct iio_trigger *iio_trigger_alloc(const char *fmt, ...)
> +/**
> + * iio_trigger_alloc - Allocate a trigger
> + * @parent:            Device to allocate iio_trigger for
> + * @fmt:               trigger name format. If it includes format
> + *                     specifiers, the additional arguments following
> + *                     format are formatted and inserted in the resulting
> + *                     string replacing their respective specifiers.
> + * RETURNS:
> + * Pointer to allocated iio_trigger on success, NULL on failure.
> + */
> +struct iio_trigger *iio_trigger_alloc(struct device *parent, const char *fmt, ...)
>  {
>         struct iio_trigger *trig;
>         va_list vargs;
>
>         va_start(vargs, fmt);
> -       trig = viio_trigger_alloc(fmt, vargs);
> +       trig = viio_trigger_alloc(parent, fmt, vargs);
>         va_end(vargs);
>
>         return trig;
> @@ -586,20 +599,13 @@ static void devm_iio_trigger_release(struct device *dev, void *res)
>
>  /**
>   * devm_iio_trigger_alloc - Resource-managed iio_trigger_alloc()
> - * @dev:               Device to allocate iio_trigger for
> - * @fmt:               trigger name format. If it includes format
> - *                     specifiers, the additional arguments following
> - *                     format are formatted and inserted in the resulting
> - *                     string replacing their respective specifiers.
> - *
>   * Managed iio_trigger_alloc.  iio_trigger allocated with this function is
>   * automatically freed on driver detach.
>   *
>   * RETURNS:
>   * Pointer to allocated iio_trigger on success, NULL on failure.
>   */
> -struct iio_trigger *devm_iio_trigger_alloc(struct device *dev,
> -                                               const char *fmt, ...)
> +struct iio_trigger *devm_iio_trigger_alloc(struct device *parent, const char *fmt, ...)
>  {
>         struct iio_trigger **ptr, *trig;
>         va_list vargs;
> @@ -611,11 +617,11 @@ struct iio_trigger *devm_iio_trigger_alloc(struct device *dev,
>
>         /* use raw alloc_dr for kmalloc caller tracing */
>         va_start(vargs, fmt);
> -       trig = viio_trigger_alloc(fmt, vargs);
> +       trig = viio_trigger_alloc(parent, fmt, vargs);
>         va_end(vargs);
>         if (trig) {
>                 *ptr = trig;
> -               devres_add(dev, ptr);
> +               devres_add(parent, ptr);
>         } else {
>                 devres_free(ptr);
>         }
> diff --git a/drivers/iio/trigger/iio-trig-hrtimer.c b/drivers/iio/trigger/iio-trig-hrtimer.c
> index 410de837d0417..22940f86003fc 100644
> --- a/drivers/iio/trigger/iio-trig-hrtimer.c
> +++ b/drivers/iio/trigger/iio-trig-hrtimer.c
> @@ -122,7 +122,7 @@ static struct iio_sw_trigger *iio_trig_hrtimer_probe(const char *name)
>         if (!trig_info)
>                 return ERR_PTR(-ENOMEM);
>
> -       trig_info->swt.trigger = iio_trigger_alloc("%s", name);
> +       trig_info->swt.trigger = iio_trigger_alloc(NULL, "%s", name);
>         if (!trig_info->swt.trigger) {
>                 ret = -ENOMEM;
>                 goto err_free_trig_info;
> diff --git a/drivers/iio/trigger/iio-trig-interrupt.c b/drivers/iio/trigger/iio-trig-interrupt.c
> index 94a487caf4214..f746c460bf2a5 100644
> --- a/drivers/iio/trigger/iio-trig-interrupt.c
> +++ b/drivers/iio/trigger/iio-trig-interrupt.c
> @@ -45,7 +45,7 @@ static int iio_interrupt_trigger_probe(struct platform_device *pdev)
>
>         irq = irq_res->start;
>
> -       trig = iio_trigger_alloc("irqtrig%d", irq);
> +       trig = iio_trigger_alloc(NULL, "irqtrig%d", irq);
>         if (!trig) {
>                 ret = -ENOMEM;
>                 goto error_ret;
> diff --git a/drivers/iio/trigger/iio-trig-loop.c b/drivers/iio/trigger/iio-trig-loop.c
> index 4a00668e32583..96ec06bbe546a 100644
> --- a/drivers/iio/trigger/iio-trig-loop.c
> +++ b/drivers/iio/trigger/iio-trig-loop.c
> @@ -84,7 +84,7 @@ static struct iio_sw_trigger *iio_trig_loop_probe(const char *name)
>         if (!trig_info)
>                 return ERR_PTR(-ENOMEM);
>
> -       trig_info->swt.trigger = iio_trigger_alloc("%s", name);
> +       trig_info->swt.trigger = iio_trigger_alloc(NULL, "%s", name);
>         if (!trig_info->swt.trigger) {
>                 ret = -ENOMEM;
>                 goto err_free_trig_info;
> diff --git a/drivers/iio/trigger/iio-trig-sysfs.c b/drivers/iio/trigger/iio-trig-sysfs.c
> index 0f6b512a5c37b..e9adfff45b39b 100644
> --- a/drivers/iio/trigger/iio-trig-sysfs.c
> +++ b/drivers/iio/trigger/iio-trig-sysfs.c
> @@ -149,7 +149,7 @@ static int iio_sysfs_trigger_probe(int id)
>                 goto out1;
>         }
>         t->id = id;
> -       t->trig = iio_trigger_alloc("sysfstrig%d", id);
> +       t->trig = iio_trigger_alloc(&iio_sysfs_trig_dev, "sysfstrig%d", id);
>         if (!t->trig) {
>                 ret = -ENOMEM;
>                 goto free_t;
> @@ -157,7 +157,6 @@ static int iio_sysfs_trigger_probe(int id)
>
>         t->trig->dev.groups = iio_sysfs_trigger_attr_groups;
>         t->trig->ops = &iio_sysfs_trigger_ops;
> -       t->trig->dev.parent = &iio_sysfs_trig_dev;
>         iio_trigger_set_drvdata(t->trig, t);
>
>         t->work = IRQ_WORK_INIT_HARD(iio_sysfs_trigger_work);
> diff --git a/include/linux/iio/iio.h b/include/linux/iio/iio.h
> index e4a9822e64950..5ca4b1d33e153 100644
> --- a/include/linux/iio/iio.h
> +++ b/include/linux/iio/iio.h
> @@ -698,7 +698,7 @@ static inline void *iio_priv(const struct iio_dev *indio_dev)
>  void iio_device_free(struct iio_dev *indio_dev);
>  struct iio_dev *devm_iio_device_alloc(struct device *parent, int sizeof_priv);
>  __printf(2, 3)
> -struct iio_trigger *devm_iio_trigger_alloc(struct device *dev,
> +struct iio_trigger *devm_iio_trigger_alloc(struct device *parent,
>                                            const char *fmt, ...);
>  /**
>   * iio_buffer_enabled() - helper function to test if the buffer is enabled
> diff --git a/include/linux/iio/trigger.h b/include/linux/iio/trigger.h
> index 055890b6ffcf0..096f68dd2e0ca 100644
> --- a/include/linux/iio/trigger.h
> +++ b/include/linux/iio/trigger.h
> @@ -161,7 +161,8 @@ void iio_trigger_poll_chained(struct iio_trigger *trig);
>
>  irqreturn_t iio_trigger_generic_data_rdy_poll(int irq, void *private);
>
> -__printf(1, 2) struct iio_trigger *iio_trigger_alloc(const char *fmt, ...);
> +__printf(2, 3)
> +struct iio_trigger *iio_trigger_alloc(struct device *parent, const char *fmt, ...);
>  void iio_trigger_free(struct iio_trigger *trig);
>
>  /**
> --
> 2.30.1.766.gb4fecdf3b7-goog
>

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

* Re: [PATCH v4 1/8] iio: set default trig->dev.parent
  2021-03-10  8:05   ` Alexandru Ardelean
@ 2021-03-13 18:13     ` Jonathan Cameron
  0 siblings, 0 replies; 15+ messages in thread
From: Jonathan Cameron @ 2021-03-13 18:13 UTC (permalink / raw)
  To: Alexandru Ardelean
  Cc: Gwendal Grignou, Lars-Peter Clausen, Andy Shevchenko, linux-iio

On Wed, 10 Mar 2021 10:05:58 +0200
Alexandru Ardelean <ardeleanalex@gmail.com> wrote:

> On Tue, Mar 9, 2021 at 9:36 PM Gwendal Grignou <gwendal@chromium.org> wrote:
> >
> > When allocated with [devm_]iio_trigger_alloc(), set trig device parent to
> > the device the trigger is allocated for by default.
> >
> > It can always be reassigned in the probe routine.
> >
> > Change iio_trigger_alloc() API to add the device pointer to be coherent
> > with devm_iio_trigger_alloc, using similar interface to
> > iio_device_alloc().  
> 
> Some trigger parents are being removed in this patch, vs being removed
> in a separate patch [as done in other drivers].
> My only note is that this should be a bit more consistent.
> i.e. All parents removed in this patch, or all parents removed in
> separate patches; right now, it's a mix of both
> 
> Maybe it's a good idea to squash the removal of all parent assignments
> in this patch to see easier when they get moved as parameters of
> {devm_}iio_trigger_alloc().
> There aren't too many assignments of parents to triggers to make a
> single patch be difficult to review;

Agreed, though it's not something I feel that strongly about given
we are already in this state.

As such, I'm going to take these as they are in the interests
of saving review / editing time.

Applied to the togreg branch of iio.git and pushed out as testing
for the autobuilders to see if we missed anything.

Thanks,

Jonathan


> 

One comment inline.



> >
> > Signed-off-by: Gwendal Grignou <gwendal@chromium.org>
> > ---
> > Changes in v4:
> > - Allow lines to be greater than 80 characters.
> > - Improve alignment.
> >
> > Changes in v3:
> > - xilinx-xadc-core.c is not using iio_trigger_alloc anymore.
> > - use parent as argumnet to be consistent with iio_device_alloc().
> >
> >  drivers/iio/accel/bma180.c                    |  3 +-
> >  drivers/iio/adc/ad_sigma_delta.c              |  6 ++--
> >  drivers/iio/adc/at91_adc.c                    |  3 +-
> >  .../common/hid-sensors/hid-sensor-trigger.c   |  4 +--
> >  .../common/st_sensors/st_sensors_trigger.c    |  4 +--
> >  drivers/iio/gyro/itg3200_buffer.c             |  3 +-
> >  drivers/iio/industrialio-trigger.c            | 34 +++++++++++--------
> >  drivers/iio/trigger/iio-trig-hrtimer.c        |  2 +-
> >  drivers/iio/trigger/iio-trig-interrupt.c      |  2 +-
> >  drivers/iio/trigger/iio-trig-loop.c           |  2 +-
> >  drivers/iio/trigger/iio-trig-sysfs.c          |  3 +-
> >  include/linux/iio/iio.h                       |  2 +-
> >  include/linux/iio/trigger.h                   |  3 +-
> >  13 files changed, 37 insertions(+), 34 deletions(-)
> >
> > diff --git a/drivers/iio/accel/bma180.c b/drivers/iio/accel/bma180.c
> > index 71f85a3e525b2..b8a7469cdae41 100644
> > --- a/drivers/iio/accel/bma180.c
> > +++ b/drivers/iio/accel/bma180.c
> > @@ -1044,7 +1044,7 @@ static int bma180_probe(struct i2c_client *client,
> >         indio_dev->info = &bma180_info;
> >
> >         if (client->irq > 0) {
> > -               data->trig = iio_trigger_alloc("%s-dev%d", indio_dev->name,
> > +               data->trig = iio_trigger_alloc(dev, "%s-dev%d", indio_dev->name,
> >                         indio_dev->id);
> >                 if (!data->trig) {
> >                         ret = -ENOMEM;
> > @@ -1059,7 +1059,6 @@ static int bma180_probe(struct i2c_client *client,
> >                         goto err_trigger_free;
> >                 }
> >
> > -               data->trig->dev.parent = dev;
> >                 data->trig->ops = &bma180_trigger_ops;
> >                 iio_trigger_set_drvdata(data->trig, indio_dev);
> >                 indio_dev->trig = iio_trigger_get(data->trig);
> > diff --git a/drivers/iio/adc/ad_sigma_delta.c b/drivers/iio/adc/ad_sigma_delta.c
> > index 3a6f239d4acca..9289812c0a946 100644
> > --- a/drivers/iio/adc/ad_sigma_delta.c
> > +++ b/drivers/iio/adc/ad_sigma_delta.c
> > @@ -475,8 +475,9 @@ static int ad_sd_probe_trigger(struct iio_dev *indio_dev)
> >         struct ad_sigma_delta *sigma_delta = iio_device_get_drvdata(indio_dev);
> >         int ret;
> >
> > -       sigma_delta->trig = iio_trigger_alloc("%s-dev%d", indio_dev->name,
> > -                                               indio_dev->id);
> > +       sigma_delta->trig = iio_trigger_alloc(&sigma_delta->spi->dev,
> > +                                             "%s-dev%d", indio_dev->name,
> > +                                             indio_dev->id);
> >         if (sigma_delta->trig == NULL) {
> >                 ret = -ENOMEM;
> >                 goto error_ret;
> > @@ -496,7 +497,6 @@ static int ad_sd_probe_trigger(struct iio_dev *indio_dev)
> >                 sigma_delta->irq_dis = true;
> >                 disable_irq_nosync(sigma_delta->spi->irq);
> >         }
> > -       sigma_delta->trig->dev.parent = &sigma_delta->spi->dev;
> >         iio_trigger_set_drvdata(sigma_delta->trig, sigma_delta);
> >
> >         ret = iio_trigger_register(sigma_delta->trig);
> > diff --git a/drivers/iio/adc/at91_adc.c b/drivers/iio/adc/at91_adc.c
> > index 70750abb5dead..0b5f0c91d0d73 100644
> > --- a/drivers/iio/adc/at91_adc.c
> > +++ b/drivers/iio/adc/at91_adc.c
> > @@ -625,12 +625,11 @@ static struct iio_trigger *at91_adc_allocate_trigger(struct iio_dev *idev,
> >         struct iio_trigger *trig;
> >         int ret;
> >
> > -       trig = iio_trigger_alloc("%s-dev%d-%s", idev->name,
> > +       trig = iio_trigger_alloc(idev->dev.parent, "%s-dev%d-%s", idev->name,
> >                                  idev->id, trigger->name);
> >         if (trig == NULL)
> >                 return NULL;
> >
> > -       trig->dev.parent = idev->dev.parent;
> >         iio_trigger_set_drvdata(trig, idev);
> >         trig->ops = &at91_adc_trigger_ops;
> >
> > diff --git a/drivers/iio/common/hid-sensors/hid-sensor-trigger.c b/drivers/iio/common/hid-sensors/hid-sensor-trigger.c
> > index 064c32bec9c7b..95ddccb44f1c8 100644
> > --- a/drivers/iio/common/hid-sensors/hid-sensor-trigger.c
> > +++ b/drivers/iio/common/hid-sensors/hid-sensor-trigger.c
> > @@ -255,14 +255,14 @@ int hid_sensor_setup_trigger(struct iio_dev *indio_dev, const char *name,
> >                 return ret;
> >         }
> >
> > -       trig = iio_trigger_alloc("%s-dev%d", name, indio_dev->id);
> > +       trig = iio_trigger_alloc(indio_dev->dev.parent,
> > +                                "%s-dev%d", name, indio_dev->id);
> >         if (trig == NULL) {
> >                 dev_err(&indio_dev->dev, "Trigger Allocate Failed\n");
> >                 ret = -ENOMEM;
> >                 goto error_triggered_buffer_cleanup;
> >         }
> >
> > -       trig->dev.parent = indio_dev->dev.parent;
> >         iio_trigger_set_drvdata(trig, attrb);
> >         trig->ops = &hid_sensor_trigger_ops;
> >         ret = iio_trigger_register(trig);
> > diff --git a/drivers/iio/common/st_sensors/st_sensors_trigger.c b/drivers/iio/common/st_sensors/st_sensors_trigger.c
> > index 2dbd2646e44e9..0b511665dee5f 100644
> > --- a/drivers/iio/common/st_sensors/st_sensors_trigger.c
> > +++ b/drivers/iio/common/st_sensors/st_sensors_trigger.c
> > @@ -123,7 +123,8 @@ int st_sensors_allocate_trigger(struct iio_dev *indio_dev,
> >         unsigned long irq_trig;
> >         int err;
> >
> > -       sdata->trig = iio_trigger_alloc("%s-trigger", indio_dev->name);
> > +       sdata->trig = iio_trigger_alloc(sdata->dev, "%s-trigger",
> > +                                       indio_dev->name);
> >         if (sdata->trig == NULL) {
> >                 dev_err(&indio_dev->dev, "failed to allocate iio trigger.\n");
> >                 return -ENOMEM;
> > @@ -131,7 +132,6 @@ int st_sensors_allocate_trigger(struct iio_dev *indio_dev,
> >
> >         iio_trigger_set_drvdata(sdata->trig, indio_dev);
> >         sdata->trig->ops = trigger_ops;
> > -       sdata->trig->dev.parent = sdata->dev;
> >
> >         irq_trig = irqd_get_trigger_type(irq_get_irq_data(sdata->irq));
> >         /*
> > diff --git a/drivers/iio/gyro/itg3200_buffer.c b/drivers/iio/gyro/itg3200_buffer.c
> > index 1c3c1bd53374a..af0aaa146f0ce 100644
> > --- a/drivers/iio/gyro/itg3200_buffer.c
> > +++ b/drivers/iio/gyro/itg3200_buffer.c
> > @@ -113,7 +113,7 @@ int itg3200_probe_trigger(struct iio_dev *indio_dev)
> >         int ret;
> >         struct itg3200 *st = iio_priv(indio_dev);
> >
> > -       st->trig = iio_trigger_alloc("%s-dev%d", indio_dev->name,
> > +       st->trig = iio_trigger_alloc(&st->i2c->dev, "%s-dev%d", indio_dev->name,
> >                                      indio_dev->id);
> >         if (!st->trig)
> >                 return -ENOMEM;
> > @@ -127,7 +127,6 @@ int itg3200_probe_trigger(struct iio_dev *indio_dev)
> >                 goto error_free_trig;
> >
> >
> > -       st->trig->dev.parent = &st->i2c->dev;
> >         st->trig->ops = &itg3200_trigger_ops;
> >         iio_trigger_set_drvdata(st->trig, indio_dev);
> >         ret = iio_trigger_register(st->trig);
> > diff --git a/drivers/iio/industrialio-trigger.c b/drivers/iio/industrialio-trigger.c
> > index ea3c9859b2589..0eba9bd9fa360 100644
> > --- a/drivers/iio/industrialio-trigger.c
> > +++ b/drivers/iio/industrialio-trigger.c
> > @@ -514,8 +514,10 @@ static void iio_trig_subirqunmask(struct irq_data *d)
> >         trig->subirqs[d->irq - trig->subirq_base].enabled = true;
> >  }
> >
> > -static __printf(1, 0)
> > -struct iio_trigger *viio_trigger_alloc(const char *fmt, va_list vargs)
> > +static __printf(2, 0)
> > +struct iio_trigger *viio_trigger_alloc(struct device *parent,
> > +                                      const char *fmt,
> > +                                      va_list vargs)
> >  {
> >         struct iio_trigger *trig;
> >         int i;
> > @@ -524,6 +526,7 @@ struct iio_trigger *viio_trigger_alloc(const char *fmt, va_list vargs)
> >         if (!trig)
> >                 return NULL;
> >
> > +       trig->dev.parent = parent;
> >         trig->dev.type = &iio_trig_type;
> >         trig->dev.bus = &iio_bus_type;
> >         device_initialize(&trig->dev);
> > @@ -559,13 +562,23 @@ struct iio_trigger *viio_trigger_alloc(const char *fmt, va_list vargs)
> >         return NULL;
> >  }
> >
> > -struct iio_trigger *iio_trigger_alloc(const char *fmt, ...)
> > +/**
> > + * iio_trigger_alloc - Allocate a trigger
> > + * @parent:            Device to allocate iio_trigger for
> > + * @fmt:               trigger name format. If it includes format
> > + *                     specifiers, the additional arguments following
> > + *                     format are formatted and inserted in the resulting
> > + *                     string replacing their respective specifiers.

Technically this should have been a separate patch, but not important,
however....

> > + * RETURNS:
> > + * Pointer to allocated iio_trigger on success, NULL on failure.
> > + */
> > +struct iio_trigger *iio_trigger_alloc(struct device *parent, const char *fmt, ...)
> >  {
> >         struct iio_trigger *trig;
> >         va_list vargs;
> >
> >         va_start(vargs, fmt);
> > -       trig = viio_trigger_alloc(fmt, vargs);
> > +       trig = viio_trigger_alloc(parent, fmt, vargs);
> >         va_end(vargs);
> >
> >         return trig;
> > @@ -586,20 +599,13 @@ static void devm_iio_trigger_release(struct device *dev, void *res)
> >
> >  /**
> >   * devm_iio_trigger_alloc - Resource-managed iio_trigger_alloc()
> > - * @dev:               Device to allocate iio_trigger for
> > - * @fmt:               trigger name format. If it includes format
> > - *                     specifiers, the additional arguments following
> > - *                     format are formatted and inserted in the resulting
> > - *                     string replacing their respective specifiers.
> > - *

kernel-doc should be complete, however much it is clearly repeating other
documentation nearby and is obvious.
  CHECK   drivers/iio/industrialio-trigger.c
drivers/iio/industrialio-trigger.c:609: warning: Function parameter or member 'parent' not described in 'devm_iio_trigger_alloc'
drivers/iio/industrialio-trigger.c:609: warning: Function parameter or member 'fmt' not described in 'devm_iio_trigger_alloc'

If fixed up by grabbing parent description from iio_trigger_alloc() and
putting the fmt one back.

> >   * Managed iio_trigger_alloc.  iio_trigger allocated with this function is
> >   * automatically freed on driver detach.
> >   *
> >   * RETURNS:
> >   * Pointer to allocated iio_trigger on success, NULL on failure.
> >   */
> > -struct iio_trigger *devm_iio_trigger_alloc(struct device *dev,
> > -                                               const char *fmt, ...)
> > +struct iio_trigger *devm_iio_trigger_alloc(struct device *parent, const char *fmt, ...)
> >  {
> >         struct iio_trigger **ptr, *trig;
> >         va_list vargs;
> > @@ -611,11 +617,11 @@ struct iio_trigger *devm_iio_trigger_alloc(struct device *dev,
> >
> >         /* use raw alloc_dr for kmalloc caller tracing */
> >         va_start(vargs, fmt);
> > -       trig = viio_trigger_alloc(fmt, vargs);
> > +       trig = viio_trigger_alloc(parent, fmt, vargs);
> >         va_end(vargs);
> >         if (trig) {
> >                 *ptr = trig;
> > -               devres_add(dev, ptr);
> > +               devres_add(parent, ptr);
> >         } else {
> >                 devres_free(ptr);
> >         }
> > diff --git a/drivers/iio/trigger/iio-trig-hrtimer.c b/drivers/iio/trigger/iio-trig-hrtimer.c
> > index 410de837d0417..22940f86003fc 100644
> > --- a/drivers/iio/trigger/iio-trig-hrtimer.c
> > +++ b/drivers/iio/trigger/iio-trig-hrtimer.c
> > @@ -122,7 +122,7 @@ static struct iio_sw_trigger *iio_trig_hrtimer_probe(const char *name)
> >         if (!trig_info)
> >                 return ERR_PTR(-ENOMEM);
> >
> > -       trig_info->swt.trigger = iio_trigger_alloc("%s", name);
> > +       trig_info->swt.trigger = iio_trigger_alloc(NULL, "%s", name);
> >         if (!trig_info->swt.trigger) {
> >                 ret = -ENOMEM;
> >                 goto err_free_trig_info;
> > diff --git a/drivers/iio/trigger/iio-trig-interrupt.c b/drivers/iio/trigger/iio-trig-interrupt.c
> > index 94a487caf4214..f746c460bf2a5 100644
> > --- a/drivers/iio/trigger/iio-trig-interrupt.c
> > +++ b/drivers/iio/trigger/iio-trig-interrupt.c
> > @@ -45,7 +45,7 @@ static int iio_interrupt_trigger_probe(struct platform_device *pdev)
> >
> >         irq = irq_res->start;
> >
> > -       trig = iio_trigger_alloc("irqtrig%d", irq);
> > +       trig = iio_trigger_alloc(NULL, "irqtrig%d", irq);
> >         if (!trig) {
> >                 ret = -ENOMEM;
> >                 goto error_ret;
> > diff --git a/drivers/iio/trigger/iio-trig-loop.c b/drivers/iio/trigger/iio-trig-loop.c
> > index 4a00668e32583..96ec06bbe546a 100644
> > --- a/drivers/iio/trigger/iio-trig-loop.c
> > +++ b/drivers/iio/trigger/iio-trig-loop.c
> > @@ -84,7 +84,7 @@ static struct iio_sw_trigger *iio_trig_loop_probe(const char *name)
> >         if (!trig_info)
> >                 return ERR_PTR(-ENOMEM);
> >
> > -       trig_info->swt.trigger = iio_trigger_alloc("%s", name);
> > +       trig_info->swt.trigger = iio_trigger_alloc(NULL, "%s", name);
> >         if (!trig_info->swt.trigger) {
> >                 ret = -ENOMEM;
> >                 goto err_free_trig_info;
> > diff --git a/drivers/iio/trigger/iio-trig-sysfs.c b/drivers/iio/trigger/iio-trig-sysfs.c
> > index 0f6b512a5c37b..e9adfff45b39b 100644
> > --- a/drivers/iio/trigger/iio-trig-sysfs.c
> > +++ b/drivers/iio/trigger/iio-trig-sysfs.c
> > @@ -149,7 +149,7 @@ static int iio_sysfs_trigger_probe(int id)
> >                 goto out1;
> >         }
> >         t->id = id;
> > -       t->trig = iio_trigger_alloc("sysfstrig%d", id);
> > +       t->trig = iio_trigger_alloc(&iio_sysfs_trig_dev, "sysfstrig%d", id);
> >         if (!t->trig) {
> >                 ret = -ENOMEM;
> >                 goto free_t;
> > @@ -157,7 +157,6 @@ static int iio_sysfs_trigger_probe(int id)
> >
> >         t->trig->dev.groups = iio_sysfs_trigger_attr_groups;
> >         t->trig->ops = &iio_sysfs_trigger_ops;
> > -       t->trig->dev.parent = &iio_sysfs_trig_dev;
> >         iio_trigger_set_drvdata(t->trig, t);
> >
> >         t->work = IRQ_WORK_INIT_HARD(iio_sysfs_trigger_work);
> > diff --git a/include/linux/iio/iio.h b/include/linux/iio/iio.h
> > index e4a9822e64950..5ca4b1d33e153 100644
> > --- a/include/linux/iio/iio.h
> > +++ b/include/linux/iio/iio.h
> > @@ -698,7 +698,7 @@ static inline void *iio_priv(const struct iio_dev *indio_dev)
> >  void iio_device_free(struct iio_dev *indio_dev);
> >  struct iio_dev *devm_iio_device_alloc(struct device *parent, int sizeof_priv);
> >  __printf(2, 3)
> > -struct iio_trigger *devm_iio_trigger_alloc(struct device *dev,
> > +struct iio_trigger *devm_iio_trigger_alloc(struct device *parent,
> >                                            const char *fmt, ...);
> >  /**
> >   * iio_buffer_enabled() - helper function to test if the buffer is enabled
> > diff --git a/include/linux/iio/trigger.h b/include/linux/iio/trigger.h
> > index 055890b6ffcf0..096f68dd2e0ca 100644
> > --- a/include/linux/iio/trigger.h
> > +++ b/include/linux/iio/trigger.h
> > @@ -161,7 +161,8 @@ void iio_trigger_poll_chained(struct iio_trigger *trig);
> >
> >  irqreturn_t iio_trigger_generic_data_rdy_poll(int irq, void *private);
> >
> > -__printf(1, 2) struct iio_trigger *iio_trigger_alloc(const char *fmt, ...);
> > +__printf(2, 3)
> > +struct iio_trigger *iio_trigger_alloc(struct device *parent, const char *fmt, ...);
> >  void iio_trigger_free(struct iio_trigger *trig);
> >
> >  /**
> > --
> > 2.30.1.766.gb4fecdf3b7-goog
> >  


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

end of thread, other threads:[~2021-03-13 18:14 UTC | newest]

Thread overview: 15+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-03-09 19:36 [PATCH v4 0/8] iio: Set default trigger device parent Gwendal Grignou
2021-03-09 19:36 ` [PATCH v4 1/8] iio: set default trig->dev.parent Gwendal Grignou
2021-03-10  8:05   ` Alexandru Ardelean
2021-03-13 18:13     ` Jonathan Cameron
2021-03-09 19:36 ` [PATCH v4 2/8] iio: fix devm_iio_trigger_alloc with parent.cocci Gwendal Grignou
2021-03-09 19:36 ` [PATCH v4 3/8] iio: adis_trigger: Remove code to set trigger parent Gwendal Grignou
2021-03-10  7:55   ` Sa, Nuno
2021-03-09 19:36 ` [PATCH v4 4/8] iio: gp2ap020a00f: " Gwendal Grignou
2021-03-09 19:36 ` [PATCH v4 5/8] iio: lmp91000: " Gwendal Grignou
2021-03-09 21:50   ` Matt Ranostay
2021-03-09 19:36 ` [PATCH v4 6/8] iio: chemical: atlas: " Gwendal Grignou
2021-03-09 21:50   ` Matt Ranostay
2021-03-09 19:36 ` [PATCH v4 7/8] iio: as3935: " Gwendal Grignou
2021-03-09 21:50   ` Matt Ranostay
2021-03-09 19:36 ` [PATCH v4 8/8] iio: xilinx-xadc: " Gwendal Grignou

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.