| From edb5e86b2c63e92c4ba23d7abe522cd233bd4bde Mon Sep 17 00:00:00 2001 |
| From: Florian Fainelli <f.fainelli@gmail.com> |
| Date: Sun, 5 Apr 2020 13:00:30 -0700 |
| Subject: [PATCH] net: dsa: bcm_sf2: Ensure correct sub-node is parsed |
| |
| commit afa3b592953bfaecfb4f2f335ec5f935cff56804 upstream. |
| |
| When the bcm_sf2 was converted into a proper platform device driver and |
| used the new dsa_register_switch() interface, we would still be parsing |
| the legacy DSA node that contained all the port information since the |
| platform firmware has intentionally maintained backward and forward |
| compatibility to client programs. Ensure that we do parse the correct |
| node, which is "ports" per the revised DSA binding. |
| |
| Fixes: d9338023fb8e ("net: dsa: bcm_sf2: Make it a real platform device driver") |
| Signed-off-by: Florian Fainelli <f.fainelli@gmail.com> |
| Reviewed-by: Vivien Didelot <vivien.didelot@gmail.com> |
| Signed-off-by: David S. Miller <davem@davemloft.net> |
| Signed-off-by: Paul Gortmaker <paul.gortmaker@windriver.com> |
| |
| diff --git a/drivers/net/dsa/bcm_sf2.c b/drivers/net/dsa/bcm_sf2.c |
| index 7b84ef852b9c..223e22536a6b 100644 |
| --- a/drivers/net/dsa/bcm_sf2.c |
| +++ b/drivers/net/dsa/bcm_sf2.c |
| @@ -1044,6 +1044,7 @@ static int bcm_sf2_sw_probe(struct platform_device *pdev) |
| const struct bcm_sf2_of_data *data; |
| struct b53_platform_data *pdata; |
| struct dsa_switch_ops *ops; |
| + struct device_node *ports; |
| struct bcm_sf2_priv *priv; |
| struct b53_device *dev; |
| struct dsa_switch *ds; |
| @@ -1107,7 +1108,11 @@ static int bcm_sf2_sw_probe(struct platform_device *pdev) |
| set_bit(0, priv->cfp.used); |
| set_bit(0, priv->cfp.unique); |
| |
| - bcm_sf2_identify_ports(priv, dn->child); |
| + ports = of_find_node_by_name(dn, "ports"); |
| + if (ports) { |
| + bcm_sf2_identify_ports(priv, ports); |
| + of_node_put(ports); |
| + } |
| |
| priv->irq0 = irq_of_parse_and_map(dn, 0); |
| priv->irq1 = irq_of_parse_and_map(dn, 1); |
| -- |
| 2.7.4 |
| |