[2/2] iio: pressure: bmp280: Use i2c_get_match_data

Message ID b3483bd87093d4cd0862904b70a167ebbb538644.1691276610.git.ang.iglesiasg@gmail.com
State New
Headers
Series iio: pressure: bmp280: Use i2c_get_match_data() |

Commit Message

Angel Iglesias Aug. 5, 2023, 11:15 p.m. UTC
  Replaces device_get_match_data() and fallback match_id logic by new
unified helper function i2c_get_match_data().

Signed-off-by: Angel Iglesias <ang.iglesiasg@gmail.com>
  

Comments

Uwe Kleine-König Aug. 6, 2023, 11:30 a.m. UTC | #1
On Sun, Aug 06, 2023 at 01:15:03AM +0200, Angel Iglesias wrote:
> Replaces device_get_match_data() and fallback match_id logic by new
> unified helper function i2c_get_match_data().
> 
> Signed-off-by: Angel Iglesias <ang.iglesiasg@gmail.com>
> 
> diff --git a/drivers/iio/pressure/bmp280-i2c.c b/drivers/iio/pressure/bmp280-i2c.c
> index 693eb1975fdc..4ebaa4edc4fc 100644
> --- a/drivers/iio/pressure/bmp280-i2c.c
> +++ b/drivers/iio/pressure/bmp280-i2c.c
> @@ -11,9 +11,9 @@ static int bmp280_i2c_probe(struct i2c_client *client)
>  	const struct bmp280_chip_info *chip_info;
>  	struct regmap *regmap;
>  
> -	chip_info = device_get_match_data(&client->dev);
> +	chip_info = i2c_get_match_data(client);
>  	if (!chip_info)
> -		chip_info = (const struct bmp280_chip_info *) id->driver_data;
> +		return -ENODEV;

the old code assumed that chip_info isn't NULL (implicitly by
dereferencing that pointer in the line below). I wouldn't change
semantics in a patch converting to a helper and so just do:

-	chip_info = device_get_match_data(&client->dev);
+	chip_info = i2c_get_match_data(client);
-	if (!chip_info)
-		chip_info = (const struct bmp280_chip_info *) id->driver_data;

or alternatively, if you think adding a check is a good idea, add an
error message in the error path and mention the semantic change in the
commit log.

Best regards
Uwe
  
Angel Iglesias Aug. 12, 2023, 3:47 p.m. UTC | #2
On Sun, 2023-08-06 at 13:30 +0200, Uwe Kleine-König wrote:
> On Sun, Aug 06, 2023 at 01:15:03AM +0200, Angel Iglesias wrote:
> > Replaces device_get_match_data() and fallback match_id logic by new
> > unified helper function i2c_get_match_data().
> > 
> > Signed-off-by: Angel Iglesias <ang.iglesiasg@gmail.com>
> > 
> > diff --git a/drivers/iio/pressure/bmp280-i2c.c
> > b/drivers/iio/pressure/bmp280-i2c.c
> > index 693eb1975fdc..4ebaa4edc4fc 100644
> > --- a/drivers/iio/pressure/bmp280-i2c.c
> > +++ b/drivers/iio/pressure/bmp280-i2c.c
> > @@ -11,9 +11,9 @@ static int bmp280_i2c_probe(struct i2c_client *client)
> >         const struct bmp280_chip_info *chip_info;
> >         struct regmap *regmap;
> >  
> > -       chip_info = device_get_match_data(&client->dev);
> > +       chip_info = i2c_get_match_data(client);
> >         if (!chip_info)
> > -               chip_info = (const struct bmp280_chip_info *) id-
> > >driver_data;
> > +               return -ENODEV;
> 
> the old code assumed that chip_info isn't NULL (implicitly by
> dereferencing that pointer in the line below). I wouldn't change
> semantics in a patch converting to a helper and so just do:
> 
> -       chip_info = device_get_match_data(&client->dev);
> +       chip_info = i2c_get_match_data(client);
> -       if (!chip_info)
> -               chip_info = (const struct bmp280_chip_info *) id->driver_data;
> 
> or alternatively, if you think adding a check is a good idea, add an
> error message in the error path and mention the semantic change in the
> commit log.
> 

Oh I see. I didn't take into account all this. Thanks for your time

> Best regards
> Uwe
> 
Kind regards
Angel
  

Patch

diff --git a/drivers/iio/pressure/bmp280-i2c.c b/drivers/iio/pressure/bmp280-i2c.c
index 693eb1975fdc..4ebaa4edc4fc 100644
--- a/drivers/iio/pressure/bmp280-i2c.c
+++ b/drivers/iio/pressure/bmp280-i2c.c
@@ -11,9 +11,9 @@  static int bmp280_i2c_probe(struct i2c_client *client)
 	const struct bmp280_chip_info *chip_info;
 	struct regmap *regmap;
 
-	chip_info = device_get_match_data(&client->dev);
+	chip_info = i2c_get_match_data(client);
 	if (!chip_info)
-		chip_info = (const struct bmp280_chip_info *) id->driver_data;
+		return -ENODEV;
 
 	regmap = devm_regmap_init_i2c(client, chip_info->regmap_config);
 	if (IS_ERR(regmap)) {