diff mbox series

PCI: layerscape: fix index passed to syscon_regmap_lookup_by_phandle_args

Message ID 20250327151949.2765193-1-ioana.ciornei@nxp.com (mailing list archive)
State Accepted
Commit e1166f60ed7e5c2a3f057a7f6a398f5e27085263
Delegated to: Bjorn Helgaas
Headers show
Series PCI: layerscape: fix index passed to syscon_regmap_lookup_by_phandle_args | expand

Commit Message

Ioana Ciornei March 27, 2025, 3:19 p.m. UTC
The arg_count variable passed to the
syscon_regmap_lookup_by_phandle_args() function represents the number of
argument cells following the phandle. In this case, the number of
arguments should be 1 instead of 2 since the dt property looks like
below.
	fsl,pcie-scfg = <&scfg 0>;

Without this fix, layerscape-pcie fails with the following message on
LS1043A:

[    0.157041] OF: /soc/pcie@3500000: phandle scfg@1570000 needs 2, found 1
[    0.157050] layerscape-pcie 3500000.pcie: No syscfg phandle specified
[    0.157053] layerscape-pcie 3500000.pcie: probe with driver layerscape-pcie failed with error -22

Fixes: 149fc35734e5 ("PCI: layerscape: Use syscon_regmap_lookup_by_phandle_args")
Signed-off-by: Ioana Ciornei <ioana.ciornei@nxp.com>
---
 drivers/pci/controller/dwc/pci-layerscape.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

Comments

Krzysztof Kozlowski March 27, 2025, 3:30 p.m. UTC | #1
On 27/03/2025 16:19, Ioana Ciornei wrote:
> The arg_count variable passed to the
> syscon_regmap_lookup_by_phandle_args() function represents the number of
> argument cells following the phandle. In this case, the number of
> arguments should be 1 instead of 2 since the dt property looks like
> below.
> 	fsl,pcie-scfg = <&scfg 0>;
> 
> Without this fix, layerscape-pcie fails with the following message on
> LS1043A:
> 
> [    0.157041] OF: /soc/pcie@3500000: phandle scfg@1570000 needs 2, found 1
> [    0.157050] layerscape-pcie 3500000.pcie: No syscfg phandle specified
> [    0.157053] layerscape-pcie 3500000.pcie: probe with driver layerscape-pcie failed with error -22
> 
> Fixes: 149fc35734e5 ("PCI: layerscape: Use syscon_regmap_lookup_by_phandle_args")

Uh, obviously, probably I thought the code is using
of_property_read_u32_index(), but that's of_property_read_u32_array().

Thanks.

Reviewed-by: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>

Best regards,
Krzysztof
Roy Zang March 27, 2025, 3:32 p.m. UTC | #2
> -----Original Message-----
> From: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
> On 27/03/2025 16:19, Ioana Ciornei wrote:
> > The arg_count variable passed to the
> > syscon_regmap_lookup_by_phandle_args() function represents the number
> > of argument cells following the phandle. In this case, the number of
> > arguments should be 1 instead of 2 since the dt property looks like
> > below.
> > 	fsl,pcie-scfg = <&scfg 0>;
> >
> > Without this fix, layerscape-pcie fails with the following message on
> > LS1043A:
> >
> > [    0.157041] OF: /soc/pcie@3500000: phandle scfg@1570000 needs 2,
> found 1
> > [    0.157050] layerscape-pcie 3500000.pcie: No syscfg phandle specified
> > [    0.157053] layerscape-pcie 3500000.pcie: probe with driver layerscape-
> pcie failed with error -22
> >
> > Fixes: 149fc35734e5 ("PCI: layerscape: Use
> > syscon_regmap_lookup_by_phandle_args")
>
> Uh, obviously, probably I thought the code is using
> of_property_read_u32_index(), but that's of_property_read_u32_array().
>
> Thanks.
>
> Reviewed-by: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
Thank you Ioana for the quick patch fix.
Acked-by: Roy Zang <Roy.Zang@nxp.com>

Roy
Frank Li March 27, 2025, 3:35 p.m. UTC | #3
On Thu, Mar 27, 2025 at 05:19:49PM +0200, Ioana Ciornei wrote:
> The arg_count variable passed to the
> syscon_regmap_lookup_by_phandle_args() function represents the number of
> argument cells following the phandle. In this case, the number of
> arguments should be 1 instead of 2 since the dt property looks like
> below.
> 	fsl,pcie-scfg = <&scfg 0>;
>
> Without this fix, layerscape-pcie fails with the following message on
> LS1043A:
>
> [    0.157041] OF: /soc/pcie@3500000: phandle scfg@1570000 needs 2, found 1
> [    0.157050] layerscape-pcie 3500000.pcie: No syscfg phandle specified
> [    0.157053] layerscape-pcie 3500000.pcie: probe with driver layerscape-pcie failed with error -22
>
> Fixes: 149fc35734e5 ("PCI: layerscape: Use syscon_regmap_lookup_by_phandle_args")
> Signed-off-by: Ioana Ciornei <ioana.ciornei@nxp.com>
> ---

Bjorn:
	This is hot fix for some layerscape platform, which block pcie
functions. 149fc35734e5 still in v6.14 next.

Reviewed-by: Frank Li <Frank.Li@nxp.com>

>  drivers/pci/controller/dwc/pci-layerscape.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/drivers/pci/controller/dwc/pci-layerscape.c b/drivers/pci/controller/dwc/pci-layerscape.c
> index 239a05b36e8e..a44b5c256d6e 100644
> --- a/drivers/pci/controller/dwc/pci-layerscape.c
> +++ b/drivers/pci/controller/dwc/pci-layerscape.c
> @@ -356,7 +356,7 @@ static int ls_pcie_probe(struct platform_device *pdev)
>  	if (pcie->drvdata->scfg_support) {
>  		pcie->scfg =
>  			syscon_regmap_lookup_by_phandle_args(dev->of_node,
> -							     "fsl,pcie-scfg", 2,
> +							     "fsl,pcie-scfg", 1,
>  							     index);
>  		if (IS_ERR(pcie->scfg)) {
>  			dev_err(dev, "No syscfg phandle specified\n");
> --
> 2.34.1
>
Bjorn Helgaas March 27, 2025, 5:55 p.m. UTC | #4
On Thu, Mar 27, 2025 at 05:19:49PM +0200, Ioana Ciornei wrote:
> The arg_count variable passed to the
> syscon_regmap_lookup_by_phandle_args() function represents the number of
> argument cells following the phandle. In this case, the number of
> arguments should be 1 instead of 2 since the dt property looks like
> below.
> 	fsl,pcie-scfg = <&scfg 0>;
> 
> Without this fix, layerscape-pcie fails with the following message on
> LS1043A:
> 
> [    0.157041] OF: /soc/pcie@3500000: phandle scfg@1570000 needs 2, found 1
> [    0.157050] layerscape-pcie 3500000.pcie: No syscfg phandle specified
> [    0.157053] layerscape-pcie 3500000.pcie: probe with driver layerscape-pcie failed with error -22
> 
> Fixes: 149fc35734e5 ("PCI: layerscape: Use syscon_regmap_lookup_by_phandle_args")
> Signed-off-by: Ioana Ciornei <ioana.ciornei@nxp.com>

Thanks, applied to pci/controller/layerscape for v6.15.  Hopefully the
last change for this cycle :)

Thanks for the message sample.  I dropped the timestamps because
they're not really relevant here.

> ---
>  drivers/pci/controller/dwc/pci-layerscape.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/drivers/pci/controller/dwc/pci-layerscape.c b/drivers/pci/controller/dwc/pci-layerscape.c
> index 239a05b36e8e..a44b5c256d6e 100644
> --- a/drivers/pci/controller/dwc/pci-layerscape.c
> +++ b/drivers/pci/controller/dwc/pci-layerscape.c
> @@ -356,7 +356,7 @@ static int ls_pcie_probe(struct platform_device *pdev)
>  	if (pcie->drvdata->scfg_support) {
>  		pcie->scfg =
>  			syscon_regmap_lookup_by_phandle_args(dev->of_node,
> -							     "fsl,pcie-scfg", 2,
> +							     "fsl,pcie-scfg", 1,
>  							     index);
>  		if (IS_ERR(pcie->scfg)) {
>  			dev_err(dev, "No syscfg phandle specified\n");
> -- 
> 2.34.1
>
Bjorn Helgaas March 27, 2025, 6:15 p.m. UTC | #5
On Thu, Mar 27, 2025 at 12:55:57PM -0500, Bjorn Helgaas wrote:
> On Thu, Mar 27, 2025 at 05:19:49PM +0200, Ioana Ciornei wrote:
> > The arg_count variable passed to the
> > syscon_regmap_lookup_by_phandle_args() function represents the number of
> > argument cells following the phandle. In this case, the number of
> > arguments should be 1 instead of 2 since the dt property looks like
> > below.
> > 	fsl,pcie-scfg = <&scfg 0>;
> > 
> > Without this fix, layerscape-pcie fails with the following message on
> > LS1043A:
> > 
> > [    0.157041] OF: /soc/pcie@3500000: phandle scfg@1570000 needs 2, found 1
> > [    0.157050] layerscape-pcie 3500000.pcie: No syscfg phandle specified
> > [    0.157053] layerscape-pcie 3500000.pcie: probe with driver layerscape-pcie failed with error -22
> > 
> > Fixes: 149fc35734e5 ("PCI: layerscape: Use syscon_regmap_lookup_by_phandle_args")
> > Signed-off-by: Ioana Ciornei <ioana.ciornei@nxp.com>
> 
> Thanks, applied to pci/controller/layerscape for v6.15.  Hopefully the
> last change for this cycle :)
> 
> Thanks for the message sample.  I dropped the timestamps because
> they're not really relevant here.

I guess this should have a stable tag since 149fc35734e5 appeared in
v6.14.  I added one.

> > ---
> >  drivers/pci/controller/dwc/pci-layerscape.c | 2 +-
> >  1 file changed, 1 insertion(+), 1 deletion(-)
> > 
> > diff --git a/drivers/pci/controller/dwc/pci-layerscape.c b/drivers/pci/controller/dwc/pci-layerscape.c
> > index 239a05b36e8e..a44b5c256d6e 100644
> > --- a/drivers/pci/controller/dwc/pci-layerscape.c
> > +++ b/drivers/pci/controller/dwc/pci-layerscape.c
> > @@ -356,7 +356,7 @@ static int ls_pcie_probe(struct platform_device *pdev)
> >  	if (pcie->drvdata->scfg_support) {
> >  		pcie->scfg =
> >  			syscon_regmap_lookup_by_phandle_args(dev->of_node,
> > -							     "fsl,pcie-scfg", 2,
> > +							     "fsl,pcie-scfg", 1,
> >  							     index);
> >  		if (IS_ERR(pcie->scfg)) {
> >  			dev_err(dev, "No syscfg phandle specified\n");
> > -- 
> > 2.34.1
> >
diff mbox series

Patch

diff --git a/drivers/pci/controller/dwc/pci-layerscape.c b/drivers/pci/controller/dwc/pci-layerscape.c
index 239a05b36e8e..a44b5c256d6e 100644
--- a/drivers/pci/controller/dwc/pci-layerscape.c
+++ b/drivers/pci/controller/dwc/pci-layerscape.c
@@ -356,7 +356,7 @@  static int ls_pcie_probe(struct platform_device *pdev)
 	if (pcie->drvdata->scfg_support) {
 		pcie->scfg =
 			syscon_regmap_lookup_by_phandle_args(dev->of_node,
-							     "fsl,pcie-scfg", 2,
+							     "fsl,pcie-scfg", 1,
 							     index);
 		if (IS_ERR(pcie->scfg)) {
 			dev_err(dev, "No syscfg phandle specified\n");