| From foo@baz Thu 09 Apr 2020 04:04:49 PM CEST |
| From: Florian Fainelli <f.fainelli@gmail.com> |
| Date: Sun, 5 Apr 2020 13:00:30 -0700 |
| Subject: net: dsa: bcm_sf2: Ensure correct sub-node is parsed |
| |
| From: Florian Fainelli <f.fainelli@gmail.com> |
| |
| [ Upstream commit afa3b592953bfaecfb4f2f335ec5f935cff56804 ] |
| |
| 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: Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
| --- |
| drivers/net/dsa/bcm_sf2.c | 7 ++++++- |
| 1 file changed, 6 insertions(+), 1 deletion(-) |
| |
| --- a/drivers/net/dsa/bcm_sf2.c |
| +++ b/drivers/net/dsa/bcm_sf2.c |
| @@ -976,6 +976,7 @@ static int bcm_sf2_sw_probe(struct platf |
| struct device_node *dn = pdev->dev.of_node; |
| 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; |
| @@ -1038,7 +1039,11 @@ static int bcm_sf2_sw_probe(struct platf |
| spin_lock_init(&priv->indir_lock); |
| mutex_init(&priv->stats_mutex); |
| |
| - 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); |