summaryrefslogtreecommitdiffstats
path: root/net/dsa/dsa.c
diff options
context:
space:
mode:
Diffstat (limited to 'net/dsa/dsa.c')
-rw-r--r--net/dsa/dsa.c15
1 files changed, 9 insertions, 6 deletions
diff --git a/net/dsa/dsa.c b/net/dsa/dsa.c
index 1f3afeb673d6..07e863369e04 100644
--- a/net/dsa/dsa.c
+++ b/net/dsa/dsa.c
@@ -110,8 +110,9 @@ dsa_switch_probe(struct device *parent, struct device *host_dev, int sw_addr,
110 110
111/* basic switch operations **************************************************/ 111/* basic switch operations **************************************************/
112int dsa_cpu_dsa_setup(struct dsa_switch *ds, struct device *dev, 112int dsa_cpu_dsa_setup(struct dsa_switch *ds, struct device *dev,
113 struct device_node *port_dn, int port) 113 struct dsa_port *dport, int port)
114{ 114{
115 struct device_node *port_dn = dport->dn;
115 struct phy_device *phydev; 116 struct phy_device *phydev;
116 int ret, mode; 117 int ret, mode;
117 118
@@ -141,15 +142,15 @@ int dsa_cpu_dsa_setup(struct dsa_switch *ds, struct device *dev,
141 142
142static int dsa_cpu_dsa_setups(struct dsa_switch *ds, struct device *dev) 143static int dsa_cpu_dsa_setups(struct dsa_switch *ds, struct device *dev)
143{ 144{
144 struct device_node *port_dn; 145 struct dsa_port *dport;
145 int ret, port; 146 int ret, port;
146 147
147 for (port = 0; port < DSA_MAX_PORTS; port++) { 148 for (port = 0; port < DSA_MAX_PORTS; port++) {
148 if (!(dsa_is_cpu_port(ds, port) || dsa_is_dsa_port(ds, port))) 149 if (!(dsa_is_cpu_port(ds, port) || dsa_is_dsa_port(ds, port)))
149 continue; 150 continue;
150 151
151 port_dn = ds->ports[port].dn; 152 dport = &ds->ports[port];
152 ret = dsa_cpu_dsa_setup(ds, dev, port_dn, port); 153 ret = dsa_cpu_dsa_setup(ds, dev, dport, port);
153 if (ret) 154 if (ret)
154 return ret; 155 return ret;
155 } 156 }
@@ -364,8 +365,10 @@ dsa_switch_setup(struct dsa_switch_tree *dst, int index,
364 return ds; 365 return ds;
365} 366}
366 367
367void dsa_cpu_dsa_destroy(struct device_node *port_dn) 368void dsa_cpu_dsa_destroy(struct dsa_port *port)
368{ 369{
370 struct device_node *port_dn = port->dn;
371
369 if (of_phy_is_fixed_link(port_dn)) 372 if (of_phy_is_fixed_link(port_dn))
370 of_phy_deregister_fixed_link(port_dn); 373 of_phy_deregister_fixed_link(port_dn);
371} 374}
@@ -389,7 +392,7 @@ static void dsa_switch_destroy(struct dsa_switch *ds)
389 for (port = 0; port < DSA_MAX_PORTS; port++) { 392 for (port = 0; port < DSA_MAX_PORTS; port++) {
390 if (!(dsa_is_cpu_port(ds, port) || dsa_is_dsa_port(ds, port))) 393 if (!(dsa_is_cpu_port(ds, port) || dsa_is_dsa_port(ds, port)))
391 continue; 394 continue;
392 dsa_cpu_dsa_destroy(ds->ports[port].dn); 395 dsa_cpu_dsa_destroy(&ds->ports[port]);
393 396
394 /* Clearing a bit which is not set does no harm */ 397 /* Clearing a bit which is not set does no harm */
395 ds->cpu_port_mask |= ~(1 << port); 398 ds->cpu_port_mask |= ~(1 << port);