Message ID | 20230818185531.336672-1-biju.das.jz@bp.renesas.com (mailing list archive) |
---|---|
State | Accepted |
Delegated to: | Geert Uytterhoeven |
Headers | show |
Series | [v2] iio: chemical: atlas-sensor: Convert enum->pointer for data in the match tables | expand |
On Fri, 18 Aug 2023 19:55:31 +0100 Biju Das <biju.das.jz@bp.renesas.com> wrote: > Convert enum->pointer for data in the match tables, so that > device_get_match_data() can do match against OF/ACPI/I2C tables, once i2c > bus type match support added to it. > > Replace enum->struct *atlas_device for data in the match table. Simplify > the probe() by replacing device_get_match_data() and ID lookup for > retrieving data by i2c_get_match_data(). > > While at it, add const qualifier to struct atlas_device and drop inner > trailing commas from OF table. > > Signed-off-by: Biju Das <biju.das.jz@bp.renesas.com> > Reviewed-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com> +CC Matt Looks good to me so applied to the togreg branch of iio.git but as with the other patches, there is plenty of time for others to comment before I push those out as non rebasing. Thanks, Jonathan > --- > v1->v2: > * Added Rb tag from Andy > * Dropped id variable removal sentance from commit description > * Dropped inner trailing commas from commit description. > --- > drivers/iio/chemical/atlas-sensor.c | 32 +++++++++++++---------------- > 1 file changed, 14 insertions(+), 18 deletions(-) > > diff --git a/drivers/iio/chemical/atlas-sensor.c b/drivers/iio/chemical/atlas-sensor.c > index fb15bb216019..baf93e5e3ca7 100644 > --- a/drivers/iio/chemical/atlas-sensor.c > +++ b/drivers/iio/chemical/atlas-sensor.c > @@ -87,7 +87,7 @@ enum { > struct atlas_data { > struct i2c_client *client; > struct iio_trigger *trig; > - struct atlas_device *chip; > + const struct atlas_device *chip; > struct regmap *regmap; > struct irq_work work; > unsigned int interrupt_enabled; > @@ -353,7 +353,7 @@ struct atlas_device { > int delay; > }; > > -static struct atlas_device atlas_devices[] = { > +static const struct atlas_device atlas_devices[] = { > [ATLAS_PH_SM] = { > .channels = atlas_ph_channels, > .num_channels = 3, > @@ -589,30 +589,29 @@ static const struct iio_info atlas_info = { > }; > > static const struct i2c_device_id atlas_id[] = { > - { "atlas-ph-sm", ATLAS_PH_SM }, > - { "atlas-ec-sm", ATLAS_EC_SM }, > - { "atlas-orp-sm", ATLAS_ORP_SM }, > - { "atlas-do-sm", ATLAS_DO_SM }, > - { "atlas-rtd-sm", ATLAS_RTD_SM }, > + { "atlas-ph-sm", (kernel_ulong_t)&atlas_devices[ATLAS_PH_SM] }, > + { "atlas-ec-sm", (kernel_ulong_t)&atlas_devices[ATLAS_EC_SM] }, > + { "atlas-orp-sm", (kernel_ulong_t)&atlas_devices[ATLAS_ORP_SM] }, > + { "atlas-do-sm", (kernel_ulong_t)&atlas_devices[ATLAS_DO_SM] }, > + { "atlas-rtd-sm", (kernel_ulong_t)&atlas_devices[ATLAS_RTD_SM] }, > {} > }; > MODULE_DEVICE_TABLE(i2c, atlas_id); > > static const struct of_device_id atlas_dt_ids[] = { > - { .compatible = "atlas,ph-sm", .data = (void *)ATLAS_PH_SM, }, > - { .compatible = "atlas,ec-sm", .data = (void *)ATLAS_EC_SM, }, > - { .compatible = "atlas,orp-sm", .data = (void *)ATLAS_ORP_SM, }, > - { .compatible = "atlas,do-sm", .data = (void *)ATLAS_DO_SM, }, > - { .compatible = "atlas,rtd-sm", .data = (void *)ATLAS_RTD_SM, }, > + { .compatible = "atlas,ph-sm", .data = &atlas_devices[ATLAS_PH_SM] }, > + { .compatible = "atlas,ec-sm", .data = &atlas_devices[ATLAS_EC_SM] }, > + { .compatible = "atlas,orp-sm", .data = &atlas_devices[ATLAS_ORP_SM] }, > + { .compatible = "atlas,do-sm", .data = &atlas_devices[ATLAS_DO_SM] }, > + { .compatible = "atlas,rtd-sm", .data = &atlas_devices[ATLAS_RTD_SM] }, > { } > }; > MODULE_DEVICE_TABLE(of, atlas_dt_ids); > > static int atlas_probe(struct i2c_client *client) > { > - const struct i2c_device_id *id = i2c_client_get_device_id(client); > struct atlas_data *data; > - struct atlas_device *chip; > + const struct atlas_device *chip; > struct iio_trigger *trig; > struct iio_dev *indio_dev; > int ret; > @@ -621,10 +620,7 @@ static int atlas_probe(struct i2c_client *client) > if (!indio_dev) > return -ENOMEM; > > - if (!dev_fwnode(&client->dev)) > - chip = &atlas_devices[id->driver_data]; > - else > - chip = &atlas_devices[(unsigned long)device_get_match_data(&client->dev)]; > + chip = i2c_get_match_data(client); > > indio_dev->info = &atlas_info; > indio_dev->name = ATLAS_DRV_NAME;
diff --git a/drivers/iio/chemical/atlas-sensor.c b/drivers/iio/chemical/atlas-sensor.c index fb15bb216019..baf93e5e3ca7 100644 --- a/drivers/iio/chemical/atlas-sensor.c +++ b/drivers/iio/chemical/atlas-sensor.c @@ -87,7 +87,7 @@ enum { struct atlas_data { struct i2c_client *client; struct iio_trigger *trig; - struct atlas_device *chip; + const struct atlas_device *chip; struct regmap *regmap; struct irq_work work; unsigned int interrupt_enabled; @@ -353,7 +353,7 @@ struct atlas_device { int delay; }; -static struct atlas_device atlas_devices[] = { +static const struct atlas_device atlas_devices[] = { [ATLAS_PH_SM] = { .channels = atlas_ph_channels, .num_channels = 3, @@ -589,30 +589,29 @@ static const struct iio_info atlas_info = { }; static const struct i2c_device_id atlas_id[] = { - { "atlas-ph-sm", ATLAS_PH_SM }, - { "atlas-ec-sm", ATLAS_EC_SM }, - { "atlas-orp-sm", ATLAS_ORP_SM }, - { "atlas-do-sm", ATLAS_DO_SM }, - { "atlas-rtd-sm", ATLAS_RTD_SM }, + { "atlas-ph-sm", (kernel_ulong_t)&atlas_devices[ATLAS_PH_SM] }, + { "atlas-ec-sm", (kernel_ulong_t)&atlas_devices[ATLAS_EC_SM] }, + { "atlas-orp-sm", (kernel_ulong_t)&atlas_devices[ATLAS_ORP_SM] }, + { "atlas-do-sm", (kernel_ulong_t)&atlas_devices[ATLAS_DO_SM] }, + { "atlas-rtd-sm", (kernel_ulong_t)&atlas_devices[ATLAS_RTD_SM] }, {} }; MODULE_DEVICE_TABLE(i2c, atlas_id); static const struct of_device_id atlas_dt_ids[] = { - { .compatible = "atlas,ph-sm", .data = (void *)ATLAS_PH_SM, }, - { .compatible = "atlas,ec-sm", .data = (void *)ATLAS_EC_SM, }, - { .compatible = "atlas,orp-sm", .data = (void *)ATLAS_ORP_SM, }, - { .compatible = "atlas,do-sm", .data = (void *)ATLAS_DO_SM, }, - { .compatible = "atlas,rtd-sm", .data = (void *)ATLAS_RTD_SM, }, + { .compatible = "atlas,ph-sm", .data = &atlas_devices[ATLAS_PH_SM] }, + { .compatible = "atlas,ec-sm", .data = &atlas_devices[ATLAS_EC_SM] }, + { .compatible = "atlas,orp-sm", .data = &atlas_devices[ATLAS_ORP_SM] }, + { .compatible = "atlas,do-sm", .data = &atlas_devices[ATLAS_DO_SM] }, + { .compatible = "atlas,rtd-sm", .data = &atlas_devices[ATLAS_RTD_SM] }, { } }; MODULE_DEVICE_TABLE(of, atlas_dt_ids); static int atlas_probe(struct i2c_client *client) { - const struct i2c_device_id *id = i2c_client_get_device_id(client); struct atlas_data *data; - struct atlas_device *chip; + const struct atlas_device *chip; struct iio_trigger *trig; struct iio_dev *indio_dev; int ret; @@ -621,10 +620,7 @@ static int atlas_probe(struct i2c_client *client) if (!indio_dev) return -ENOMEM; - if (!dev_fwnode(&client->dev)) - chip = &atlas_devices[id->driver_data]; - else - chip = &atlas_devices[(unsigned long)device_get_match_data(&client->dev)]; + chip = i2c_get_match_data(client); indio_dev->info = &atlas_info; indio_dev->name = ATLAS_DRV_NAME;