diff mbox series

iio: accel: mma8452: Convert enum->pointer for data in the ID table

Message ID 20230812143100.159700-1-biju.das.jz@bp.renesas.com (mailing list archive)
State Superseded
Delegated to: Geert Uytterhoeven
Headers show
Series iio: accel: mma8452: Convert enum->pointer for data in the ID table | expand

Commit Message

Biju Das Aug. 12, 2023, 2:31 p.m. UTC
Convert enum->pointer for data in the ID table, 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 *mma_chip_info for data in the ID table and simplify
mma8452_probe() by replacing device_get_match_data() with
i2c_get_match_data().

Signed-off-by: Biju Das <biju.das.jz@bp.renesas.com>
---
 drivers/iio/accel/mma8452.c | 26 ++++++++++----------------
 1 file changed, 10 insertions(+), 16 deletions(-)

Comments

Hans de Goede Aug. 12, 2023, 2:47 p.m. UTC | #1
Hi,

On 8/12/23 16:31, Biju Das wrote:
> Convert enum->pointer for data in the ID table, 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 *mma_chip_info for data in the ID table and simplify
> mma8452_probe() by replacing device_get_match_data() with
> i2c_get_match_data().
> 
> Signed-off-by: Biju Das <biju.das.jz@bp.renesas.com>

Thanks, patch looks good to me:

Reviewed-by: Hans de Goede <hdegoede@redhat.com>

Regards,

Hans




> ---
>  drivers/iio/accel/mma8452.c | 26 ++++++++++----------------
>  1 file changed, 10 insertions(+), 16 deletions(-)
> 
> diff --git a/drivers/iio/accel/mma8452.c b/drivers/iio/accel/mma8452.c
> index f42a88711486..5864ad726e97 100644
> --- a/drivers/iio/accel/mma8452.c
> +++ b/drivers/iio/accel/mma8452.c
> @@ -1547,7 +1547,6 @@ MODULE_DEVICE_TABLE(of, mma8452_dt_ids);
>  
>  static int mma8452_probe(struct i2c_client *client)
>  {
> -	const struct i2c_device_id *id = i2c_client_get_device_id(client);
>  	struct mma8452_data *data;
>  	struct iio_dev *indio_dev;
>  	int ret;
> @@ -1560,15 +1559,10 @@ static int mma8452_probe(struct i2c_client *client)
>  	data->client = client;
>  	mutex_init(&data->lock);
>  
> -	data->chip_info = device_get_match_data(&client->dev);
> -	if (!data->chip_info) {
> -		if (id) {
> -			data->chip_info = &mma_chip_info_table[id->driver_data];
> -		} else {
> -			dev_err(&client->dev, "unknown device model\n");
> -			return -ENODEV;
> -		}
> -	}
> +	data->chip_info = i2c_get_match_data(client);
> +	if (!data->chip_info)
> +		return dev_err_probe(&client->dev, -ENODEV,
> +				     "unknown device model\n");
>  
>  	ret = iio_read_mount_matrix(&client->dev, &data->orientation);
>  	if (ret)
> @@ -1830,12 +1824,12 @@ static const struct dev_pm_ops mma8452_pm_ops = {
>  };
>  
>  static const struct i2c_device_id mma8452_id[] = {
> -	{ "mma8451", mma8451 },
> -	{ "mma8452", mma8452 },
> -	{ "mma8453", mma8453 },
> -	{ "mma8652", mma8652 },
> -	{ "mma8653", mma8653 },
> -	{ "fxls8471", fxls8471 },
> +	{ "mma8451", (kernel_ulong_t)&mma_chip_info_table[mma8451] },
> +	{ "mma8452", (kernel_ulong_t)&mma_chip_info_table[mma8452] },
> +	{ "mma8453", (kernel_ulong_t)&mma_chip_info_table[mma8453] },
> +	{ "mma8652", (kernel_ulong_t)&mma_chip_info_table[mma8652] },
> +	{ "mma8653", (kernel_ulong_t)&mma_chip_info_table[mma8653] },
> +	{ "fxls8471", (kernel_ulong_t)&mma_chip_info_table[fxls8471] },
>  	{ }
>  };
>  MODULE_DEVICE_TABLE(i2c, mma8452_id);
Andy Shevchenko Aug. 15, 2023, 6:46 a.m. UTC | #2
On Sat, Aug 12, 2023 at 03:31:00PM +0100, Biju Das wrote:
> Convert enum->pointer for data in the ID table, 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 *mma_chip_info for data in the ID table and simplify
> mma8452_probe() by replacing device_get_match_data() with
> i2c_get_match_data().

...

>  static const struct i2c_device_id mma8452_id[] = {
> -	{ "mma8451", mma8451 },
> -	{ "mma8452", mma8452 },
> -	{ "mma8453", mma8453 },
> -	{ "mma8652", mma8652 },
> -	{ "mma8653", mma8653 },
> -	{ "fxls8471", fxls8471 },
> +	{ "mma8451", (kernel_ulong_t)&mma_chip_info_table[mma8451] },
> +	{ "mma8452", (kernel_ulong_t)&mma_chip_info_table[mma8452] },
> +	{ "mma8453", (kernel_ulong_t)&mma_chip_info_table[mma8453] },
> +	{ "mma8652", (kernel_ulong_t)&mma_chip_info_table[mma8652] },
> +	{ "mma8653", (kernel_ulong_t)&mma_chip_info_table[mma8653] },
> +	{ "fxls8471", (kernel_ulong_t)&mma_chip_info_table[fxls8471] },

You can also keep it sorted by name.

>  	{ }
>  };
Biju Das Aug. 15, 2023, 6:54 a.m. UTC | #3
Hi Andy Shevchenko,

Thanks for the feedback.

> Subject: Re: [PATCH] iio: accel: mma8452: Convert enum->pointer for data
> in the ID table
> 
> On Sat, Aug 12, 2023 at 03:31:00PM +0100, Biju Das wrote:
> > Convert enum->pointer for data in the ID table, 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 *mma_chip_info for data in the ID table and
> > simplify
> > mma8452_probe() by replacing device_get_match_data() with
> > i2c_get_match_data().
> 
> ...
> 
> >  static const struct i2c_device_id mma8452_id[] = {
> > -	{ "mma8451", mma8451 },
> > -	{ "mma8452", mma8452 },
> > -	{ "mma8453", mma8453 },
> > -	{ "mma8652", mma8652 },
> > -	{ "mma8653", mma8653 },
> > -	{ "fxls8471", fxls8471 },
> > +	{ "mma8451", (kernel_ulong_t)&mma_chip_info_table[mma8451] },
> > +	{ "mma8452", (kernel_ulong_t)&mma_chip_info_table[mma8452] },
> > +	{ "mma8453", (kernel_ulong_t)&mma_chip_info_table[mma8453] },
> > +	{ "mma8652", (kernel_ulong_t)&mma_chip_info_table[mma8652] },
> > +	{ "mma8653", (kernel_ulong_t)&mma_chip_info_table[mma8653] },
> > +	{ "fxls8471", (kernel_ulong_t)&mma_chip_info_table[fxls8471] },
> 
> You can also keep it sorted by name.

OK will sort by name.

Cheers,
Biju
diff mbox series

Patch

diff --git a/drivers/iio/accel/mma8452.c b/drivers/iio/accel/mma8452.c
index f42a88711486..5864ad726e97 100644
--- a/drivers/iio/accel/mma8452.c
+++ b/drivers/iio/accel/mma8452.c
@@ -1547,7 +1547,6 @@  MODULE_DEVICE_TABLE(of, mma8452_dt_ids);
 
 static int mma8452_probe(struct i2c_client *client)
 {
-	const struct i2c_device_id *id = i2c_client_get_device_id(client);
 	struct mma8452_data *data;
 	struct iio_dev *indio_dev;
 	int ret;
@@ -1560,15 +1559,10 @@  static int mma8452_probe(struct i2c_client *client)
 	data->client = client;
 	mutex_init(&data->lock);
 
-	data->chip_info = device_get_match_data(&client->dev);
-	if (!data->chip_info) {
-		if (id) {
-			data->chip_info = &mma_chip_info_table[id->driver_data];
-		} else {
-			dev_err(&client->dev, "unknown device model\n");
-			return -ENODEV;
-		}
-	}
+	data->chip_info = i2c_get_match_data(client);
+	if (!data->chip_info)
+		return dev_err_probe(&client->dev, -ENODEV,
+				     "unknown device model\n");
 
 	ret = iio_read_mount_matrix(&client->dev, &data->orientation);
 	if (ret)
@@ -1830,12 +1824,12 @@  static const struct dev_pm_ops mma8452_pm_ops = {
 };
 
 static const struct i2c_device_id mma8452_id[] = {
-	{ "mma8451", mma8451 },
-	{ "mma8452", mma8452 },
-	{ "mma8453", mma8453 },
-	{ "mma8652", mma8652 },
-	{ "mma8653", mma8653 },
-	{ "fxls8471", fxls8471 },
+	{ "mma8451", (kernel_ulong_t)&mma_chip_info_table[mma8451] },
+	{ "mma8452", (kernel_ulong_t)&mma_chip_info_table[mma8452] },
+	{ "mma8453", (kernel_ulong_t)&mma_chip_info_table[mma8453] },
+	{ "mma8652", (kernel_ulong_t)&mma_chip_info_table[mma8652] },
+	{ "mma8653", (kernel_ulong_t)&mma_chip_info_table[mma8653] },
+	{ "fxls8471", (kernel_ulong_t)&mma_chip_info_table[fxls8471] },
 	{ }
 };
 MODULE_DEVICE_TABLE(i2c, mma8452_id);