Message ID | 20190923093637.27968-1-thierry.reding@gmail.com |
---|---|
State | New |
Headers | show |
Series | pinctrl: tegra: Use of_device_get_match_data() | expand |
On Mon, Sep 23, 2019 at 11:36:37AM +0200, Thierry Reding wrote: > From: Thierry Reding <treding@nvidia.com> > > Use the of_device_get_match_data() helper instead of open-coding. > > Signed-off-by: Thierry Reding <treding@nvidia.com> > --- > drivers/pinctrl/tegra/pinctrl-tegra-xusb.c | 5 ++--- > 1 file changed, 2 insertions(+), 3 deletions(-) Actually, scratch that. We can't do this because the match table is different for the legacy case from what the new PHY driver uses which calls this only for the legacy case. Instead, I'd propose the attached patch. Thierry --- >8 --- From 6c96f18a2608b21d178007c97337400b788c3f9e Mon Sep 17 00:00:00 2001 From: Thierry Reding <treding@nvidia.com> Date: Mon, 23 Sep 2019 11:47:25 +0200 Subject: [PATCH] pinctrl: tegra: xusb: Add note about legacy status Add a comment about why the call to of_match_node() cannot be replaced by of_device_get_match_data(). This will hopefully prevent people from attempting to clean this up in the future. Signed-off-by: Thierry Reding <treding@nvidia.com> --- drivers/pinctrl/tegra/pinctrl-tegra-xusb.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/drivers/pinctrl/tegra/pinctrl-tegra-xusb.c b/drivers/pinctrl/tegra/pinctrl-tegra-xusb.c index 95002e3ecaff..f2fa1f76ebb7 100644 --- a/drivers/pinctrl/tegra/pinctrl-tegra-xusb.c +++ b/drivers/pinctrl/tegra/pinctrl-tegra-xusb.c @@ -885,6 +885,12 @@ int tegra_xusb_padctl_legacy_probe(struct platform_device *pdev) mutex_init(&padctl->lock); padctl->dev = &pdev->dev; + /* + * Note that we can't replace this by of_device_get_match_data() + * because we need the separate matching table for this legacy code on + * Tegra124. of_device_get_match_data() would attempt to use the table + * from the updated driver and fail. + */ match = of_match_node(tegra_xusb_padctl_of_match, pdev->dev.of_node); padctl->soc = match->data;
On Mon, Sep 23, 2019 at 11:54 AM Thierry Reding <thierry.reding@gmail.com> wrote: > Actually, scratch that. We can't do this because the match table is > different for the legacy case from what the new PHY driver uses which > calls this only for the legacy case. Instead, I'd propose the attached > patch. OK I applied that instead. Yours, Linus Walleij
diff --git a/drivers/pinctrl/tegra/pinctrl-tegra-xusb.c b/drivers/pinctrl/tegra/pinctrl-tegra-xusb.c index 95002e3ecaff..6b6d027c6fd0 100644 --- a/drivers/pinctrl/tegra/pinctrl-tegra-xusb.c +++ b/drivers/pinctrl/tegra/pinctrl-tegra-xusb.c @@ -7,6 +7,7 @@ #include <linux/io.h> #include <linux/module.h> #include <linux/of.h> +#include <linux/of_device.h> #include <linux/phy/phy.h> #include <linux/pinctrl/pinctrl.h> #include <linux/pinctrl/pinmux.h> @@ -872,7 +873,6 @@ int tegra_xusb_padctl_legacy_remove(struct platform_device *pdev); int tegra_xusb_padctl_legacy_probe(struct platform_device *pdev) { struct tegra_xusb_padctl *padctl; - const struct of_device_id *match; struct resource *res; struct phy *phy; int err; @@ -885,8 +885,7 @@ int tegra_xusb_padctl_legacy_probe(struct platform_device *pdev) mutex_init(&padctl->lock); padctl->dev = &pdev->dev; - match = of_match_node(tegra_xusb_padctl_of_match, pdev->dev.of_node); - padctl->soc = match->data; + padctl->soc = of_device_get_match_data(&pdev->dev); res = platform_get_resource(pdev, IORESOURCE_MEM, 0); padctl->regs = devm_ioremap_resource(&pdev->dev, res);