Re: [PATCH v2 12/13] iio: light: al3010: Implement regmap support

From: Jonathan Cameron
Date: Sun Mar 30 2025 - 13:45:50 EST


On Wed, 19 Mar 2025 21:59:51 +0100
David Heidelberg via B4 Relay <devnull+david.ixit.cz@xxxxxxxxxx> wrote:

> From: David Heidelberg <david@xxxxxxx>
>
> Modernize and make driver a bit cleaner.
>
> After the regmap implementation, the compiler is able to produce
> much smaller module.
>
> Size before: 72 kB
> Size after: 58 kB
>
> Signed-off-by: David Heidelberg <david@xxxxxxx>
Just one real comment on your code.
Also a passing musing that you can feel free to ignore!

Jonathan


> static void al3010_set_pwr_off(void *_data)
> {
> struct al3010_data *data = _data;
> + struct device *dev = regmap_get_device(data->regmap);
> + int ret;
>
> - i2c_smbus_write_byte_data(data->client, AL3010_REG_SYSTEM,
> - AL3010_CONFIG_DISABLE);
> + ret = regmap_write(data->regmap, AL3010_REG_SYSTEM, AL3010_CONFIG_DISABLE);
> + if (ret)
> + dev_err(dev, "failed to write system register\n");

Unrelated to your patch, but I wonder if there is appetite for
regmap_err(data->regmap, "failed to write system register\n");

A lot of drivers carry a local dev pointer because the regmap_get_device() stuff
is a bit clunky. They only use it in many paths for prints like this.

> }


> @@ -204,7 +210,9 @@ static int al3010_suspend(struct device *dev)
>
> static int al3010_resume(struct device *dev)
> {
> - return al3010_set_pwr_on(to_i2c_client(dev));
> + struct al3010_data *data = iio_priv(dev_get_drvdata(dev));

Why this change?

> +
> + return al3010_set_pwr_on(data);
> }
>
> static DEFINE_SIMPLE_DEV_PM_OPS(al3010_pm_ops, al3010_suspend, al3010_resume);
>