Message ID | 20231006224440.442864-1-robh@kernel.org (mailing list archive) |
---|---|
State | Accepted |
Headers | show |
Series | iio: Use device_get_match_data() | expand |
On Fri, 6 Oct 2023 17:44:39 -0500 Rob Herring <robh@kernel.org> wrote: > Use preferred device_get_match_data() instead of of_match_device() to > get the driver match data. With this, adjust the includes to explicitly > include the correct headers. > > Signed-off-by: Rob Herring <robh@kernel.org> Applied to the togreg branch of iio.git and pushed out first as testing to let 0-day see if it can find any issues that we missed. Thanks, Jonathan > --- > drivers/iio/adc/stm32-adc-core.c | 11 +++-------- > drivers/iio/adc/twl6030-gpadc.c | 10 ++++------ > drivers/iio/dac/stm32-dac-core.c | 9 ++++----- > 3 files changed, 11 insertions(+), 19 deletions(-) > > diff --git a/drivers/iio/adc/stm32-adc-core.c b/drivers/iio/adc/stm32-adc-core.c > index c19506b0aac8..616dd729666a 100644 > --- a/drivers/iio/adc/stm32-adc-core.c > +++ b/drivers/iio/adc/stm32-adc-core.c > @@ -17,10 +17,11 @@ > #include <linux/irqdomain.h> > #include <linux/mfd/syscon.h> > #include <linux/module.h> > -#include <linux/of_device.h> > +#include <linux/of.h> > #include <linux/of_platform.h> > #include <linux/platform_device.h> > #include <linux/pm_runtime.h> > +#include <linux/property.h> > #include <linux/regmap.h> > #include <linux/regulator/consumer.h> > #include <linux/slab.h> > @@ -708,8 +709,6 @@ static int stm32_adc_probe(struct platform_device *pdev) > struct stm32_adc_priv *priv; > struct device *dev = &pdev->dev; > struct device_node *np = pdev->dev.of_node; > - const struct of_device_id *of_id; > - > struct resource *res; > u32 max_rate; > int ret; > @@ -722,11 +721,7 @@ static int stm32_adc_probe(struct platform_device *pdev) > return -ENOMEM; > platform_set_drvdata(pdev, &priv->common); > > - of_id = of_match_device(dev->driver->of_match_table, dev); > - if (!of_id) > - return -ENODEV; > - > - priv->cfg = (const struct stm32_adc_priv_cfg *)of_id->data; > + priv->cfg = device_get_match_data(dev); > priv->nb_adc_max = priv->cfg->num_adcs; > spin_lock_init(&priv->common.lock); > > diff --git a/drivers/iio/adc/twl6030-gpadc.c b/drivers/iio/adc/twl6030-gpadc.c > index 224e9cb5e147..78bf55438b2c 100644 > --- a/drivers/iio/adc/twl6030-gpadc.c > +++ b/drivers/iio/adc/twl6030-gpadc.c > @@ -16,9 +16,10 @@ > */ > #include <linux/interrupt.h> > #include <linux/kernel.h> > +#include <linux/mod_devicetable.h> > #include <linux/module.h> > #include <linux/platform_device.h> > -#include <linux/of_platform.h> > +#include <linux/property.h> > #include <linux/mfd/twl.h> > #include <linux/iio/iio.h> > #include <linux/iio/sysfs.h> > @@ -879,17 +880,14 @@ static int twl6030_gpadc_probe(struct platform_device *pdev) > struct device *dev = &pdev->dev; > struct twl6030_gpadc_data *gpadc; > const struct twl6030_gpadc_platform_data *pdata; > - const struct of_device_id *match; > struct iio_dev *indio_dev; > int irq; > int ret; > > - match = of_match_device(of_twl6030_match_tbl, dev); > - if (!match) > + pdata = device_get_match_data(&pdev->dev); > + if (!pdata) > return -EINVAL; > > - pdata = match->data; > - > indio_dev = devm_iio_device_alloc(dev, sizeof(*gpadc)); > if (!indio_dev) > return -ENOMEM; > diff --git a/drivers/iio/dac/stm32-dac-core.c b/drivers/iio/dac/stm32-dac-core.c > index 15abe048729e..e150ac729154 100644 > --- a/drivers/iio/dac/stm32-dac-core.c > +++ b/drivers/iio/dac/stm32-dac-core.c > @@ -9,9 +9,12 @@ > > #include <linux/clk.h> > #include <linux/delay.h> > +#include <linux/mod_devicetable.h> > #include <linux/module.h> > #include <linux/of_platform.h> > +#include <linux/platform_device.h> > #include <linux/pm_runtime.h> > +#include <linux/property.h> > #include <linux/regulator/consumer.h> > #include <linux/reset.h> > > @@ -94,16 +97,12 @@ static int stm32_dac_probe(struct platform_device *pdev) > struct reset_control *rst; > int ret; > > - if (!dev->of_node) > - return -ENODEV; > - > priv = devm_kzalloc(dev, sizeof(*priv), GFP_KERNEL); > if (!priv) > return -ENOMEM; > platform_set_drvdata(pdev, &priv->common); > > - cfg = (const struct stm32_dac_cfg *) > - of_match_device(dev->driver->of_match_table, dev)->data; > + cfg = device_get_match_data(dev); > > mmio = devm_platform_ioremap_resource(pdev, 0); > if (IS_ERR(mmio))
diff --git a/drivers/iio/adc/stm32-adc-core.c b/drivers/iio/adc/stm32-adc-core.c index c19506b0aac8..616dd729666a 100644 --- a/drivers/iio/adc/stm32-adc-core.c +++ b/drivers/iio/adc/stm32-adc-core.c @@ -17,10 +17,11 @@ #include <linux/irqdomain.h> #include <linux/mfd/syscon.h> #include <linux/module.h> -#include <linux/of_device.h> +#include <linux/of.h> #include <linux/of_platform.h> #include <linux/platform_device.h> #include <linux/pm_runtime.h> +#include <linux/property.h> #include <linux/regmap.h> #include <linux/regulator/consumer.h> #include <linux/slab.h> @@ -708,8 +709,6 @@ static int stm32_adc_probe(struct platform_device *pdev) struct stm32_adc_priv *priv; struct device *dev = &pdev->dev; struct device_node *np = pdev->dev.of_node; - const struct of_device_id *of_id; - struct resource *res; u32 max_rate; int ret; @@ -722,11 +721,7 @@ static int stm32_adc_probe(struct platform_device *pdev) return -ENOMEM; platform_set_drvdata(pdev, &priv->common); - of_id = of_match_device(dev->driver->of_match_table, dev); - if (!of_id) - return -ENODEV; - - priv->cfg = (const struct stm32_adc_priv_cfg *)of_id->data; + priv->cfg = device_get_match_data(dev); priv->nb_adc_max = priv->cfg->num_adcs; spin_lock_init(&priv->common.lock); diff --git a/drivers/iio/adc/twl6030-gpadc.c b/drivers/iio/adc/twl6030-gpadc.c index 224e9cb5e147..78bf55438b2c 100644 --- a/drivers/iio/adc/twl6030-gpadc.c +++ b/drivers/iio/adc/twl6030-gpadc.c @@ -16,9 +16,10 @@ */ #include <linux/interrupt.h> #include <linux/kernel.h> +#include <linux/mod_devicetable.h> #include <linux/module.h> #include <linux/platform_device.h> -#include <linux/of_platform.h> +#include <linux/property.h> #include <linux/mfd/twl.h> #include <linux/iio/iio.h> #include <linux/iio/sysfs.h> @@ -879,17 +880,14 @@ static int twl6030_gpadc_probe(struct platform_device *pdev) struct device *dev = &pdev->dev; struct twl6030_gpadc_data *gpadc; const struct twl6030_gpadc_platform_data *pdata; - const struct of_device_id *match; struct iio_dev *indio_dev; int irq; int ret; - match = of_match_device(of_twl6030_match_tbl, dev); - if (!match) + pdata = device_get_match_data(&pdev->dev); + if (!pdata) return -EINVAL; - pdata = match->data; - indio_dev = devm_iio_device_alloc(dev, sizeof(*gpadc)); if (!indio_dev) return -ENOMEM; diff --git a/drivers/iio/dac/stm32-dac-core.c b/drivers/iio/dac/stm32-dac-core.c index 15abe048729e..e150ac729154 100644 --- a/drivers/iio/dac/stm32-dac-core.c +++ b/drivers/iio/dac/stm32-dac-core.c @@ -9,9 +9,12 @@ #include <linux/clk.h> #include <linux/delay.h> +#include <linux/mod_devicetable.h> #include <linux/module.h> #include <linux/of_platform.h> +#include <linux/platform_device.h> #include <linux/pm_runtime.h> +#include <linux/property.h> #include <linux/regulator/consumer.h> #include <linux/reset.h> @@ -94,16 +97,12 @@ static int stm32_dac_probe(struct platform_device *pdev) struct reset_control *rst; int ret; - if (!dev->of_node) - return -ENODEV; - priv = devm_kzalloc(dev, sizeof(*priv), GFP_KERNEL); if (!priv) return -ENOMEM; platform_set_drvdata(pdev, &priv->common); - cfg = (const struct stm32_dac_cfg *) - of_match_device(dev->driver->of_match_table, dev)->data; + cfg = device_get_match_data(dev); mmio = devm_platform_ioremap_resource(pdev, 0); if (IS_ERR(mmio))
Use preferred device_get_match_data() instead of of_match_device() to get the driver match data. With this, adjust the includes to explicitly include the correct headers. Signed-off-by: Rob Herring <robh@kernel.org> --- drivers/iio/adc/stm32-adc-core.c | 11 +++-------- drivers/iio/adc/twl6030-gpadc.c | 10 ++++------ drivers/iio/dac/stm32-dac-core.c | 9 ++++----- 3 files changed, 11 insertions(+), 19 deletions(-)