2023-10-06 22:44:25

by Rob Herring (Arm)

[permalink] [raw]
Subject: [PATCH] memory: Use device_get_match_data()

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 <[email protected]>
---
drivers/memory/atmel-ebi.c | 14 +++++++-------
drivers/memory/brcmstb_memc.c | 9 +++------
drivers/memory/fsl-corenet-cf.c | 11 ++---------
3 files changed, 12 insertions(+), 22 deletions(-)

diff --git a/drivers/memory/atmel-ebi.c b/drivers/memory/atmel-ebi.c
index ec6100bc94c5..e8bb5f37f5cb 100644
--- a/drivers/memory/atmel-ebi.c
+++ b/drivers/memory/atmel-ebi.c
@@ -12,7 +12,10 @@
#include <linux/mfd/syscon/atmel-matrix.h>
#include <linux/mfd/syscon/atmel-smc.h>
#include <linux/init.h>
-#include <linux/of_device.h>
+#include <linux/of.h>
+#include <linux/of_platform.h>
+#include <linux/platform_device.h>
+#include <linux/property.h>
#include <linux/regmap.h>
#include <soc/at91/atmel-sfr.h>

@@ -515,16 +518,11 @@ static int atmel_ebi_probe(struct platform_device *pdev)
{
struct device *dev = &pdev->dev;
struct device_node *child, *np = dev->of_node, *smc_np;
- const struct of_device_id *match;
struct atmel_ebi *ebi;
int ret, reg_cells;
struct clk *clk;
u32 val;

- match = of_match_device(atmel_ebi_id_table, dev);
- if (!match || !match->data)
- return -EINVAL;
-
ebi = devm_kzalloc(dev, sizeof(*ebi), GFP_KERNEL);
if (!ebi)
return -ENOMEM;
@@ -532,7 +530,9 @@ static int atmel_ebi_probe(struct platform_device *pdev)
platform_set_drvdata(pdev, ebi);

INIT_LIST_HEAD(&ebi->devs);
- ebi->caps = match->data;
+ ebi->caps = device_get_match_data(dev);
+ if (!ebi->caps)
+ return -EINVAL;
ebi->dev = dev;

clk = devm_clk_get(dev, NULL);
diff --git a/drivers/memory/brcmstb_memc.c b/drivers/memory/brcmstb_memc.c
index 233a53f5bce1..a6ea51996522 100644
--- a/drivers/memory/brcmstb_memc.c
+++ b/drivers/memory/brcmstb_memc.c
@@ -8,8 +8,9 @@
#include <linux/io.h>
#include <linux/kernel.h>
#include <linux/module.h>
-#include <linux/of_device.h>
+#include <linux/of.h>
#include <linux/platform_device.h>
+#include <linux/property.h>

#define REG_MEMC_CNTRLR_CONFIG 0x00
#define CNTRLR_CONFIG_LPDDR4_SHIFT 5
@@ -121,12 +122,9 @@ static struct attribute_group dev_attr_group = {
.attrs = dev_attrs,
};

-static const struct of_device_id brcmstb_memc_of_match[];
-
static int brcmstb_memc_probe(struct platform_device *pdev)
{
const struct brcmstb_memc_data *memc_data;
- const struct of_device_id *of_id;
struct device *dev = &pdev->dev;
struct brcmstb_memc *memc;
int ret;
@@ -137,8 +135,7 @@ static int brcmstb_memc_probe(struct platform_device *pdev)

dev_set_drvdata(dev, memc);

- of_id = of_match_device(brcmstb_memc_of_match, dev);
- memc_data = of_id->data;
+ memc_data = device_get_match_data(dev);
memc->srpd_offset = memc_data->srpd_offset;

memc->ddr_ctrl = devm_platform_ioremap_resource(pdev, 0);
diff --git a/drivers/memory/fsl-corenet-cf.c b/drivers/memory/fsl-corenet-cf.c
index 7fc9f57ae278..8096c4f33303 100644
--- a/drivers/memory/fsl-corenet-cf.c
+++ b/drivers/memory/fsl-corenet-cf.c
@@ -10,10 +10,8 @@
#include <linux/irq.h>
#include <linux/module.h>
#include <linux/of.h>
-#include <linux/of_address.h>
-#include <linux/of_device.h>
-#include <linux/of_irq.h>
#include <linux/platform_device.h>
+#include <linux/property.h>

enum ccf_version {
CCF1,
@@ -172,14 +170,9 @@ static irqreturn_t ccf_irq(int irq, void *dev_id)
static int ccf_probe(struct platform_device *pdev)
{
struct ccf_private *ccf;
- const struct of_device_id *match;
u32 errinten;
int ret, irq;

- match = of_match_device(ccf_matches, &pdev->dev);
- if (WARN_ON(!match))
- return -ENODEV;
-
ccf = devm_kzalloc(&pdev->dev, sizeof(*ccf), GFP_KERNEL);
if (!ccf)
return -ENOMEM;
@@ -189,7 +182,7 @@ static int ccf_probe(struct platform_device *pdev)
return PTR_ERR(ccf->regs);

ccf->dev = &pdev->dev;
- ccf->info = match->data;
+ ccf->info = device_get_match_data(&pdev->dev);
ccf->err_regs = ccf->regs + ccf->info->err_reg_offs;

if (ccf->info->has_brr) {
--
2.40.1


2023-10-06 22:47:41

by Florian Fainelli

[permalink] [raw]
Subject: Re: [PATCH] memory: Use device_get_match_data()



On 10/6/2023 3:44 PM, 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 <[email protected]>
> ---
> drivers/memory/atmel-ebi.c | 14 +++++++-------
> drivers/memory/brcmstb_memc.c | 9 +++------

Reviewed-by: Florian Fainelli <[email protected]>
--
Florian


Attachments:
smime.p7s (4.12 kB)
S/MIME Cryptographic Signature

2023-10-08 11:33:40

by Krzysztof Kozlowski

[permalink] [raw]
Subject: Re: [PATCH] memory: Use device_get_match_data()

On 07/10/2023 00:44, 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 <[email protected]>
> ---

...

> enum ccf_version {
> CCF1,
> @@ -172,14 +170,9 @@ static irqreturn_t ccf_irq(int irq, void *dev_id)
> static int ccf_probe(struct platform_device *pdev)
> {
> struct ccf_private *ccf;
> - const struct of_device_id *match;
> u32 errinten;
> int ret, irq;
>
> - match = of_match_device(ccf_matches, &pdev->dev);
> - if (WARN_ON(!match))
> - return -ENODEV;
> -
> ccf = devm_kzalloc(&pdev->dev, sizeof(*ccf), GFP_KERNEL);
> if (!ccf)
> return -ENOMEM;
> @@ -189,7 +182,7 @@ static int ccf_probe(struct platform_device *pdev)
> return PTR_ERR(ccf->regs);
>
> ccf->dev = &pdev->dev;
> - ccf->info = match->data;
> + ccf->info = device_get_match_data(&pdev->dev);

This part is no equivalent. You miss here if (WARN_ON(!ccf->info)).

> ccf->err_regs = ccf->regs + ccf->info->err_reg_offs;
>
> if (ccf->info->has_brr) {

Best regards,
Krzysztof

2023-10-09 12:12:07

by Rob Herring (Arm)

[permalink] [raw]
Subject: Re: [PATCH] memory: Use device_get_match_data()

On Sun, Oct 8, 2023 at 6:33 AM Krzysztof Kozlowski
<[email protected]> wrote:
>
> On 07/10/2023 00:44, 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 <[email protected]>
> > ---
>
> ...
>
> > enum ccf_version {
> > CCF1,
> > @@ -172,14 +170,9 @@ static irqreturn_t ccf_irq(int irq, void *dev_id)
> > static int ccf_probe(struct platform_device *pdev)
> > {
> > struct ccf_private *ccf;
> > - const struct of_device_id *match;
> > u32 errinten;
> > int ret, irq;
> >
> > - match = of_match_device(ccf_matches, &pdev->dev);
> > - if (WARN_ON(!match))
> > - return -ENODEV;
> > -
> > ccf = devm_kzalloc(&pdev->dev, sizeof(*ccf), GFP_KERNEL);
> > if (!ccf)
> > return -ENOMEM;
> > @@ -189,7 +182,7 @@ static int ccf_probe(struct platform_device *pdev)
> > return PTR_ERR(ccf->regs);
> >
> > ccf->dev = &pdev->dev;
> > - ccf->info = match->data;
> > + ccf->info = device_get_match_data(&pdev->dev);
>
> This part is no equivalent. You miss here if (WARN_ON(!ccf->info)).

Checking for match failed was pointless. We already matched in order
to probe and DT is the only way we match.

Rob

2023-10-12 13:43:46

by Krzysztof Kozlowski

[permalink] [raw]
Subject: Re: [PATCH] memory: Use device_get_match_data()


On Fri, 06 Oct 2023 17:44:01 -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.
>
>

Applied, thanks!

[1/1] memory: Use device_get_match_data()
https://git.kernel.org/krzk/linux-mem-ctrl/c/09de3691daab15ae125cbf32f9f72fc90eada49d

Best regards,
--
Krzysztof Kozlowski <[email protected]>