Commit e4269651 authored by Alexandru Ardelean's avatar Alexandru Ardelean Committed by Jonathan Cameron
Browse files

iio: st_sensors: remove reference to parent device object on st_sensor_data



The idea behind it, is that all devm_ calls in ST sensors are bound to the
parent device object.

However, the reference to that object is kept on both the st_sensor_data
struct and the IIO object parent (indio_dev->dev.parent).

This change only adds a bit consistency and uses the reference stored on
indio_dev->dev.parent, to enforce the assumption that all ST sensors' devm_
calls are bound to the same reference as the one store on st_sensor_data.

Reviewed-by: default avatarAndy Shevchenko <andy.shevchenko@gmail.com>
Signed-off-by: default avatarAlexandru Ardelean <aardelean@deviqon.com>
Reviewed-by: default avatarLinus Walleij <linus.walleij@linaro.org>
Link: https://lore.kernel.org/r/20210823112204.243255-6-aardelean@deviqon.com


Signed-off-by: default avatarJonathan Cameron <Jonathan.Cameron@huawei.com>
parent 6b658c31
Loading
Loading
Loading
Loading
+3 −3
Original line number Diff line number Diff line
@@ -1210,7 +1210,7 @@ static int apply_acpi_orientation(struct iio_dev *indio_dev)
	};


	adev = ACPI_COMPANION(adata->dev);
	adev = ACPI_COMPANION(indio_dev->dev.parent);
	if (!adev)
		return 0;

@@ -1334,8 +1334,8 @@ EXPORT_SYMBOL(st_accel_get_settings);
int st_accel_common_probe(struct iio_dev *indio_dev)
{
	struct st_sensor_data *adata = iio_priv(indio_dev);
	struct st_sensors_platform_data *pdata = dev_get_platdata(adata->dev);
	struct device *parent = indio_dev->dev.parent;
	struct st_sensors_platform_data *pdata = dev_get_platdata(parent);
	int err;

	indio_dev->modes = INDIO_DIRECT_MODE;
@@ -1355,7 +1355,7 @@ int st_accel_common_probe(struct iio_dev *indio_dev)
	 */
	err = apply_acpi_orientation(indio_dev);
	if (err) {
		err = iio_read_mount_matrix(adata->dev, &adata->mount_matrix);
		err = iio_read_mount_matrix(parent, &adata->mount_matrix);
		if (err)
			return err;
	}
+0 −1
Original line number Diff line number Diff line
@@ -57,7 +57,6 @@ int st_sensors_i2c_configure(struct iio_dev *indio_dev,

	indio_dev->name = client->name;

	sdata->dev = &client->dev;
	sdata->irq = client->irq;

	return 0;
+0 −1
Original line number Diff line number Diff line
@@ -109,7 +109,6 @@ int st_sensors_spi_configure(struct iio_dev *indio_dev,

	indio_dev->name = spi->modalias;

	sdata->dev = &spi->dev;
	sdata->irq = spi->irq;

	return 0;
+5 −3
Original line number Diff line number Diff line
@@ -42,7 +42,8 @@ static bool st_sensors_new_samples_available(struct iio_dev *indio_dev,
			  sdata->sensor_settings->drdy_irq.stat_drdy.addr,
			  &status);
	if (ret < 0) {
		dev_err(sdata->dev, "error checking samples available\n");
		dev_err(indio_dev->dev.parent,
			"error checking samples available\n");
		return false;
	}

@@ -87,7 +88,7 @@ static irqreturn_t st_sensors_irq_thread(int irq, void *p)
	    st_sensors_new_samples_available(indio_dev, sdata)) {
		iio_trigger_poll_chained(p);
	} else {
		dev_dbg(sdata->dev, "spurious IRQ\n");
		dev_dbg(indio_dev->dev.parent, "spurious IRQ\n");
		return IRQ_NONE;
	}

@@ -107,7 +108,8 @@ static irqreturn_t st_sensors_irq_thread(int irq, void *p)
	 */
	while (sdata->hw_irq_trigger &&
	       st_sensors_new_samples_available(indio_dev, sdata)) {
		dev_dbg(sdata->dev, "more samples came in during polling\n");
		dev_dbg(indio_dev->dev.parent,
			"more samples came in during polling\n");
		sdata->hw_timestamp = iio_get_time_ns(indio_dev);
		iio_trigger_poll_chained(p);
	}
+1 −1
Original line number Diff line number Diff line
@@ -492,7 +492,7 @@ int st_gyro_common_probe(struct iio_dev *indio_dev)
	indio_dev->channels = gdata->sensor_settings->ch;
	indio_dev->num_channels = ST_SENSORS_NUMBER_ALL_CHANNELS;

	err = iio_read_mount_matrix(gdata->dev, &gdata->mount_matrix);
	err = iio_read_mount_matrix(parent, &gdata->mount_matrix);
	if (err)
		return err;

Loading