Message ID | 20231009172923.2457844-21-robh@kernel.org (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | pwm: Use device_get_match_data() | expand |
On Mon, Oct 09, 2023 at 12:29:16PM -0500, Rob Herring 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> > --- > drivers/pwm/pwm-img.c | 8 ++------ > drivers/pwm/pwm-rockchip.c | 9 ++------- > 2 files changed, 4 insertions(+), 13 deletions(-) > > diff --git a/drivers/pwm/pwm-img.c b/drivers/pwm/pwm-img.c > index 326af85888e7..e32b5e8c203d 100644 > --- a/drivers/pwm/pwm-img.c > +++ b/drivers/pwm/pwm-img.c > @@ -13,9 +13,9 @@ > #include <linux/mfd/syscon.h> > #include <linux/module.h> > #include <linux/of.h> > -#include <linux/of_device.h> > #include <linux/platform_device.h> > #include <linux/pm_runtime.h> > +#include <linux/property.h> > #include <linux/pwm.h> > #include <linux/regmap.h> > #include <linux/slab.h> > @@ -261,7 +261,6 @@ static int img_pwm_probe(struct platform_device *pdev) > u64 val; > unsigned long clk_rate; > struct img_pwm_chip *imgchip; > - const struct of_device_id *of_dev_id; > > imgchip = devm_kzalloc(&pdev->dev, sizeof(*imgchip), GFP_KERNEL); > if (!imgchip) > @@ -273,10 +272,7 @@ static int img_pwm_probe(struct platform_device *pdev) > if (IS_ERR(imgchip->base)) > return PTR_ERR(imgchip->base); > > - of_dev_id = of_match_device(img_pwm_of_match, &pdev->dev); > - if (!of_dev_id) > - return -ENODEV; > - imgchip->data = of_dev_id->data; > + imgchip->data = device_get_match_data(&pdev->dev); Is this a semantical change? If there is a match, the code is equivalent. Otherwise it was: return -ENODEV; before and now it's imgchip->data = NULL; isn't it? > imgchip->periph_regs = syscon_regmap_lookup_by_phandle(pdev->dev.of_node, > "img,cr-periph"); > diff --git a/drivers/pwm/pwm-rockchip.c b/drivers/pwm/pwm-rockchip.c > index 03ee18fb82d5..339165ef1f07 100644 > --- a/drivers/pwm/pwm-rockchip.c > +++ b/drivers/pwm/pwm-rockchip.c > @@ -10,8 +10,8 @@ > #include <linux/io.h> > #include <linux/module.h> > #include <linux/of.h> > -#include <linux/of_device.h> > #include <linux/platform_device.h> > +#include <linux/property.h> > #include <linux/pwm.h> > #include <linux/time.h> > > @@ -297,16 +297,11 @@ MODULE_DEVICE_TABLE(of, rockchip_pwm_dt_ids); > > static int rockchip_pwm_probe(struct platform_device *pdev) > { > - const struct of_device_id *id; > struct rockchip_pwm_chip *pc; > u32 enable_conf, ctrl; > bool enabled; > int ret, count; > > - id = of_match_device(rockchip_pwm_dt_ids, &pdev->dev); > - if (!id) > - return -EINVAL; > - > pc = devm_kzalloc(&pdev->dev, sizeof(*pc), GFP_KERNEL); > if (!pc) > return -ENOMEM; > @@ -345,7 +340,7 @@ static int rockchip_pwm_probe(struct platform_device *pdev) > > platform_set_drvdata(pdev, pc); > > - pc->data = id->data; > + pc->data = device_get_match_data(&pdev->dev); > pc->chip.dev = &pdev->dev; > pc->chip.ops = &rockchip_pwm_ops; > pc->chip.npwm = 1; This has the same semantical change. If this change is ok, it IMHO needs a more verbose commit log. Best regards Uwe
On Mon, Oct 9, 2023 at 2:30 PM Uwe Kleine-König <u.kleine-koenig@pengutronix.de> wrote: > > On Mon, Oct 09, 2023 at 12:29:16PM -0500, Rob Herring 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> > > --- > > drivers/pwm/pwm-img.c | 8 ++------ > > drivers/pwm/pwm-rockchip.c | 9 ++------- > > 2 files changed, 4 insertions(+), 13 deletions(-) > > > > diff --git a/drivers/pwm/pwm-img.c b/drivers/pwm/pwm-img.c > > index 326af85888e7..e32b5e8c203d 100644 > > --- a/drivers/pwm/pwm-img.c > > +++ b/drivers/pwm/pwm-img.c > > @@ -13,9 +13,9 @@ > > #include <linux/mfd/syscon.h> > > #include <linux/module.h> > > #include <linux/of.h> > > -#include <linux/of_device.h> > > #include <linux/platform_device.h> > > #include <linux/pm_runtime.h> > > +#include <linux/property.h> > > #include <linux/pwm.h> > > #include <linux/regmap.h> > > #include <linux/slab.h> > > @@ -261,7 +261,6 @@ static int img_pwm_probe(struct platform_device *pdev) > > u64 val; > > unsigned long clk_rate; > > struct img_pwm_chip *imgchip; > > - const struct of_device_id *of_dev_id; > > > > imgchip = devm_kzalloc(&pdev->dev, sizeof(*imgchip), GFP_KERNEL); > > if (!imgchip) > > @@ -273,10 +272,7 @@ static int img_pwm_probe(struct platform_device *pdev) > > if (IS_ERR(imgchip->base)) > > return PTR_ERR(imgchip->base); > > > > - of_dev_id = of_match_device(img_pwm_of_match, &pdev->dev); > > - if (!of_dev_id) > > - return -ENODEV; > > - imgchip->data = of_dev_id->data; > > + imgchip->data = device_get_match_data(&pdev->dev); > > Is this a semantical change? If there is a match, the code is > equivalent. Otherwise it was: > > return -ENODEV; > > before and now it's > > imgchip->data = NULL; > > isn't it? As this driver only does DT matching, then of_match_device will never return NULL if we've gotten to probe(). Will update the commit log. Rob
diff --git a/drivers/pwm/pwm-img.c b/drivers/pwm/pwm-img.c index 326af85888e7..e32b5e8c203d 100644 --- a/drivers/pwm/pwm-img.c +++ b/drivers/pwm/pwm-img.c @@ -13,9 +13,9 @@ #include <linux/mfd/syscon.h> #include <linux/module.h> #include <linux/of.h> -#include <linux/of_device.h> #include <linux/platform_device.h> #include <linux/pm_runtime.h> +#include <linux/property.h> #include <linux/pwm.h> #include <linux/regmap.h> #include <linux/slab.h> @@ -261,7 +261,6 @@ static int img_pwm_probe(struct platform_device *pdev) u64 val; unsigned long clk_rate; struct img_pwm_chip *imgchip; - const struct of_device_id *of_dev_id; imgchip = devm_kzalloc(&pdev->dev, sizeof(*imgchip), GFP_KERNEL); if (!imgchip) @@ -273,10 +272,7 @@ static int img_pwm_probe(struct platform_device *pdev) if (IS_ERR(imgchip->base)) return PTR_ERR(imgchip->base); - of_dev_id = of_match_device(img_pwm_of_match, &pdev->dev); - if (!of_dev_id) - return -ENODEV; - imgchip->data = of_dev_id->data; + imgchip->data = device_get_match_data(&pdev->dev); imgchip->periph_regs = syscon_regmap_lookup_by_phandle(pdev->dev.of_node, "img,cr-periph"); diff --git a/drivers/pwm/pwm-rockchip.c b/drivers/pwm/pwm-rockchip.c index 03ee18fb82d5..339165ef1f07 100644 --- a/drivers/pwm/pwm-rockchip.c +++ b/drivers/pwm/pwm-rockchip.c @@ -10,8 +10,8 @@ #include <linux/io.h> #include <linux/module.h> #include <linux/of.h> -#include <linux/of_device.h> #include <linux/platform_device.h> +#include <linux/property.h> #include <linux/pwm.h> #include <linux/time.h> @@ -297,16 +297,11 @@ MODULE_DEVICE_TABLE(of, rockchip_pwm_dt_ids); static int rockchip_pwm_probe(struct platform_device *pdev) { - const struct of_device_id *id; struct rockchip_pwm_chip *pc; u32 enable_conf, ctrl; bool enabled; int ret, count; - id = of_match_device(rockchip_pwm_dt_ids, &pdev->dev); - if (!id) - return -EINVAL; - pc = devm_kzalloc(&pdev->dev, sizeof(*pc), GFP_KERNEL); if (!pc) return -ENOMEM; @@ -345,7 +340,7 @@ static int rockchip_pwm_probe(struct platform_device *pdev) platform_set_drvdata(pdev, pc); - pc->data = id->data; + pc->data = device_get_match_data(&pdev->dev); pc->chip.dev = &pdev->dev; pc->chip.ops = &rockchip_pwm_ops; pc->chip.npwm = 1;
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/pwm/pwm-img.c | 8 ++------ drivers/pwm/pwm-rockchip.c | 9 ++------- 2 files changed, 4 insertions(+), 13 deletions(-)