Re: [PATCH v2 1/5] iio:adc:axp20x: Convert from OF to generic fw / device properties

Andy Shevchenko
2020-07-21T18:29:22Z

On Tue, Jul 21, 2020 at 8:16 PM Jonathan Cameron <jic23@kernel.org> wrote:
>
> From: Jonathan Cameron <Jonathan.Cameron@huawei.com>
>
> Whilst fairly unlikely anyone will ever use this driver with anything
> other than DT, we are trying to move IIO over to the generic interfaces
> where easy to do so.
>
> In this case this involved moving to generic check on presence
> of fw_node, generic device_get_match_data and dropping the of_match_ptr

Please refer to the
- fwnode
- function()

as established practice in the documentation (and thus commit messages).

> protection. Also relevant header changes to have property.h and
> mod_devicetable.h only.
>
> Also drop the casting away of a const in favour of retaining
> the const throughout.
>
> Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
> Cc: Quentin Schulz <quentin.schulz@bootlin.com>
> ---
> v1->v2
>
> * Avoid the casting away of const by keeping it const throughout.
>
> drivers/iio/adc/axp20x_adc.c | 14 +++++++-------
> 1 file changed, 7 insertions(+), 7 deletions(-)
>
> diff --git a/drivers/iio/adc/axp20x_adc.c b/drivers/iio/adc/axp20x_adc.c
> index 798ff2d89691..3e0c0233b431 100644
> --- a/drivers/iio/adc/axp20x_adc.c
> +++ b/drivers/iio/adc/axp20x_adc.c
> @@ -9,10 +9,10 @@
> #include <linux/interrupt.h>
> #include <linux/io.h>
> #include <linux/module.h>
> -#include <linux/of.h>
> -#include <linux/of_device.h>
> +#include <linux/mod_devicetable.h>
> #include <linux/platform_device.h>
> #include <linux/pm_runtime.h>
> +#include <linux/property.h>
> #include <linux/regmap.h>
> #include <linux/thermal.h>
>
> @@ -67,7 +67,7 @@ struct axp_data;
>
> struct axp20x_adc_iio {
> struct regmap *regmap;
> - struct axp_data *data;
> + const struct axp_data *data;
> };
>
> enum axp20x_adc_channel_v {
> @@ -670,15 +670,15 @@ static int axp20x_probe(struct platform_device *pdev)
> info->regmap = axp20x_dev->regmap;
> indio_dev->modes = INDIO_DIRECT_MODE;
>
> - if (!pdev->dev.of_node) {

> + if (!dev_fwnode(&pdev->dev)) {

After the below change I think you may use positive conditional.

> const struct platform_device_id *id;
>
> id = platform_get_device_id(pdev);
> - info->data = (struct axp_data *)id->driver_data;
> + info->data = (const struct axp_data *)id->driver_data;
> } else {
> struct device *dev = &pdev->dev;

This is probably good to have for the entire ->probe(). Or drop it
here completely.

> - info->data = (struct axp_data *)of_device_get_match_data(dev);
> + info->data = device_get_match_data(dev);
> }
>
> indio_dev->name = platform_get_device_id(pdev)->name;
> @@ -742,7 +742,7 @@ static int axp20x_remove(struct platform_device *pdev)
> static struct platform_driver axp20x_adc_driver = {
> .driver = {
> .name = "axp20x-adc",
> - .of_match_table = of_match_ptr(axp20x_adc_of_match),
> + .of_match_table = axp20x_adc_of_match,
> },
> .id_table = axp20x_adc_id_match,
> .probe = axp20x_probe,
> --
> 2.27.0
>

--
With Best Regards,
Andy Shevchenko