Message ID | 20241024191200.229894-21-andriy.shevchenko@linux.intel.com (mailing list archive) |
---|---|
State | Accepted |
Headers | show |
Series | iio: Clean up acpi_match_device() use cases | expand |
On Thu, 24 Oct 2024 22:05:09 +0300 Andy Shevchenko <andriy.shevchenko@linux.intel.com> wrote: > IIO core (ACPI part) provides a generic helper that may be used in > the driver. Replace a variant of iio_get_acpi_device_name_and_data(). > > Reviewed-by: Hans de Goede <hdegoede@redhat.com> > Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com> This one briefly had me confused but is indeed fine because we never get an id match for a device coming from an ACPI binding. There is no way to make such a match (unlike DT where the naming is enough). So the else is sufficient. applied. > --- > drivers/iio/light/isl29018.c | 25 ++++++------------------- > 1 file changed, 6 insertions(+), 19 deletions(-) > > diff --git a/drivers/iio/light/isl29018.c b/drivers/iio/light/isl29018.c > index 8dfc750e68c0..526ee5619d26 100644 > --- a/drivers/iio/light/isl29018.c > +++ b/drivers/iio/light/isl29018.c > @@ -687,20 +687,6 @@ static const struct isl29018_chip_info isl29018_chip_info_tbl[] = { > }, > }; > > -static const char *isl29018_match_acpi_device(struct device *dev, int *data) > -{ > - const struct acpi_device_id *id; > - > - id = acpi_match_device(dev->driver->acpi_match_table, dev); > - > - if (!id) > - return NULL; > - > - *data = (int)id->driver_data; > - > - return dev_name(dev); > -} > - > static void isl29018_disable_regulator_action(void *_data) > { > struct isl29018_chip *chip = _data; > @@ -716,9 +702,10 @@ static int isl29018_probe(struct i2c_client *client) > const struct i2c_device_id *id = i2c_client_get_device_id(client); > struct isl29018_chip *chip; > struct iio_dev *indio_dev; > + const void *ddata; > + const char *name; > + int dev_id; > int err; > - const char *name = NULL; > - int dev_id = 0; > > indio_dev = devm_iio_device_alloc(&client->dev, sizeof(*chip)); > if (!indio_dev) > @@ -731,11 +718,11 @@ static int isl29018_probe(struct i2c_client *client) > if (id) { > name = id->name; > dev_id = id->driver_data; > + } else { > + name = iio_get_acpi_device_name_and_data(&client->dev, &ddata); > + dev_id = (intptr_t)ddata; > } > > - if (ACPI_HANDLE(&client->dev)) > - name = isl29018_match_acpi_device(&client->dev, &dev_id); > - > mutex_init(&chip->lock); > > chip->type = dev_id;
diff --git a/drivers/iio/light/isl29018.c b/drivers/iio/light/isl29018.c index 8dfc750e68c0..526ee5619d26 100644 --- a/drivers/iio/light/isl29018.c +++ b/drivers/iio/light/isl29018.c @@ -687,20 +687,6 @@ static const struct isl29018_chip_info isl29018_chip_info_tbl[] = { }, }; -static const char *isl29018_match_acpi_device(struct device *dev, int *data) -{ - const struct acpi_device_id *id; - - id = acpi_match_device(dev->driver->acpi_match_table, dev); - - if (!id) - return NULL; - - *data = (int)id->driver_data; - - return dev_name(dev); -} - static void isl29018_disable_regulator_action(void *_data) { struct isl29018_chip *chip = _data; @@ -716,9 +702,10 @@ static int isl29018_probe(struct i2c_client *client) const struct i2c_device_id *id = i2c_client_get_device_id(client); struct isl29018_chip *chip; struct iio_dev *indio_dev; + const void *ddata; + const char *name; + int dev_id; int err; - const char *name = NULL; - int dev_id = 0; indio_dev = devm_iio_device_alloc(&client->dev, sizeof(*chip)); if (!indio_dev) @@ -731,11 +718,11 @@ static int isl29018_probe(struct i2c_client *client) if (id) { name = id->name; dev_id = id->driver_data; + } else { + name = iio_get_acpi_device_name_and_data(&client->dev, &ddata); + dev_id = (intptr_t)ddata; } - if (ACPI_HANDLE(&client->dev)) - name = isl29018_match_acpi_device(&client->dev, &dev_id); - mutex_init(&chip->lock); chip->type = dev_id;