Message ID | 20220615114746.2767-1-andriy.shevchenko@linux.intel.com (mailing list archive) |
---|---|
State | Accepted |
Headers | show |
Series | [v2,1/2] iio: proximity: sx_common: Don't use IIO device for properties | expand |
On Wed, Jun 15, 2022 at 02:47:45PM +0300, Andy Shevchenko wrote: > It's not correct to use artificial device created by IIO core to > retrieve device properties. Even ->get_default_reg() callback > takes a simple struct device pointer which suggests it wants to > operate on the real device. > > Correct this by replacing pointer to IIO device by a real device > pointer in the caller of ->get_default_reg(). Gwendal, any comments on this version?
On Tue, Jun 28, 2022 at 3:01 PM Andy Shevchenko <andriy.shevchenko@linux.intel.com> wrote: > > On Wed, Jun 15, 2022 at 02:47:45PM +0300, Andy Shevchenko wrote: > > It's not correct to use artificial device created by IIO core to > > retrieve device properties. Even ->get_default_reg() callback > > takes a simple struct device pointer which suggests it wants to > > operate on the real device. > > > > Correct this by replacing pointer to IIO device by a real device > > pointer in the caller of ->get_default_reg(). > > Gwendal, any comments on this version? We can also replace '&indio_dev->dev' with 'dev' when setting ACPI_COMPANION_SET() in the probe routine. Reviewed-by: Gwendal Grignou <gwendal@chromium.org> > > -- > With Best Regards, > Andy Shevchenko > >
On Wed, Jun 29, 2022 at 1:41 AM Gwendal Grignou <gwendal@chromium.org> wrote: > > On Tue, Jun 28, 2022 at 3:01 PM Andy Shevchenko > <andriy.shevchenko@linux.intel.com> wrote: > > > > On Wed, Jun 15, 2022 at 02:47:45PM +0300, Andy Shevchenko wrote: > > > It's not correct to use artificial device created by IIO core to > > > retrieve device properties. Even ->get_default_reg() callback > > > takes a simple struct device pointer which suggests it wants to > > > operate on the real device. > > > > > > Correct this by replacing pointer to IIO device by a real device > > > pointer in the caller of ->get_default_reg(). > > > > Gwendal, any comments on this version? > We can also replace '&indio_dev->dev' with 'dev' when setting > ACPI_COMPANION_SET() in the probe routine. It would make no sense, IIUC. In any case, the second patch in the series, which was the same in v1 removes that completely. > Reviewed-by: Gwendal Grignou <gwendal@chromium.org> Thanks!
diff --git a/drivers/iio/proximity/sx_common.c b/drivers/iio/proximity/sx_common.c index 8ad814d96b7e..9f2e47385198 100644 --- a/drivers/iio/proximity/sx_common.c +++ b/drivers/iio/proximity/sx_common.c @@ -434,7 +434,7 @@ static void sx_common_regulator_disable(void *_data) #define SX_COMMON_SOFT_RESET 0xde -static int sx_common_init_device(struct iio_dev *indio_dev) +static int sx_common_init_device(struct device *dev, struct iio_dev *indio_dev) { struct sx_common_data *data = iio_priv(indio_dev); struct sx_common_reg_default tmp; @@ -456,8 +456,7 @@ static int sx_common_init_device(struct iio_dev *indio_dev) /* Program defaults from constant or BIOS. */ for (i = 0; i < data->chip_info->num_default_regs; i++) { - initval = data->chip_info->ops.get_default_reg(&indio_dev->dev, - i, &tmp); + initval = data->chip_info->ops.get_default_reg(dev, i, &tmp); ret = regmap_write(data->regmap, initval->reg, initval->def); if (ret) return ret; @@ -530,7 +529,7 @@ int sx_common_probe(struct i2c_client *client, i2c_set_clientdata(client, indio_dev); - ret = sx_common_init_device(indio_dev); + ret = sx_common_init_device(dev, indio_dev); if (ret) return dev_err_probe(dev, ret, "Unable to initialize sensor\n");
It's not correct to use artificial device created by IIO core to retrieve device properties. Even ->get_default_reg() callback takes a simple struct device pointer which suggests it wants to operate on the real device. Correct this by replacing pointer to IIO device by a real device pointer in the caller of ->get_default_reg(). Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com> --- v2: new patch (necessary prerequisite for the following change) drivers/iio/proximity/sx_common.c | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-)