• Home
  • Raw
  • Download

Lines Matching refs:port

88 static bool dsa_port_is_valid(struct dsa_port *port)  in dsa_port_is_valid()  argument
90 return !!(port->dn || port->name); in dsa_port_is_valid()
93 static bool dsa_port_is_dsa(struct dsa_port *port) in dsa_port_is_dsa() argument
95 if (port->name && !strcmp(port->name, "dsa")) in dsa_port_is_dsa()
98 return !!of_parse_phandle(port->dn, "link", 0); in dsa_port_is_dsa()
101 static bool dsa_port_is_cpu(struct dsa_port *port) in dsa_port_is_cpu() argument
103 if (port->name && !strcmp(port->name, "cpu")) in dsa_port_is_cpu()
106 return !!of_parse_phandle(port->dn, "ethernet", 0); in dsa_port_is_cpu()
110 struct device_node *port) in dsa_ds_find_port_dn() argument
115 if (ds->ports[index].dn == port) in dsa_ds_find_port_dn()
121 struct device_node *port) in dsa_dst_find_port_dn() argument
131 if (dsa_ds_find_port_dn(ds, port)) in dsa_dst_find_port_dn()
140 struct dsa_port *port, in dsa_port_complete() argument
148 link = of_parse_phandle(port->dn, "link", index); in dsa_port_complete()
171 struct dsa_port *port; in dsa_ds_complete() local
176 port = &ds->ports[index]; in dsa_ds_complete()
177 if (!dsa_port_is_valid(port)) in dsa_ds_complete()
180 if (!dsa_port_is_dsa(port)) in dsa_ds_complete()
183 err = dsa_port_complete(dst, ds, port, index); in dsa_ds_complete()
217 static int dsa_dsa_port_apply(struct dsa_port *port) in dsa_dsa_port_apply() argument
219 struct dsa_switch *ds = port->ds; in dsa_dsa_port_apply()
222 err = dsa_cpu_dsa_setup(port); in dsa_dsa_port_apply()
225 port->index, err); in dsa_dsa_port_apply()
229 memset(&port->devlink_port, 0, sizeof(port->devlink_port)); in dsa_dsa_port_apply()
231 return devlink_port_register(ds->devlink, &port->devlink_port, in dsa_dsa_port_apply()
232 port->index); in dsa_dsa_port_apply()
235 static void dsa_dsa_port_unapply(struct dsa_port *port) in dsa_dsa_port_unapply() argument
237 devlink_port_unregister(&port->devlink_port); in dsa_dsa_port_unapply()
238 dsa_cpu_dsa_destroy(port); in dsa_dsa_port_unapply()
241 static int dsa_cpu_port_apply(struct dsa_port *port) in dsa_cpu_port_apply() argument
243 struct dsa_switch *ds = port->ds; in dsa_cpu_port_apply()
246 err = dsa_cpu_dsa_setup(port); in dsa_cpu_port_apply()
249 port->index, err); in dsa_cpu_port_apply()
253 memset(&port->devlink_port, 0, sizeof(port->devlink_port)); in dsa_cpu_port_apply()
254 err = devlink_port_register(ds->devlink, &port->devlink_port, in dsa_cpu_port_apply()
255 port->index); in dsa_cpu_port_apply()
259 static void dsa_cpu_port_unapply(struct dsa_port *port) in dsa_cpu_port_unapply() argument
261 devlink_port_unregister(&port->devlink_port); in dsa_cpu_port_unapply()
262 dsa_cpu_dsa_destroy(port); in dsa_cpu_port_unapply()
263 port->ds->cpu_port_mask &= ~BIT(port->index); in dsa_cpu_port_unapply()
267 static int dsa_user_port_apply(struct dsa_port *port) in dsa_user_port_apply() argument
269 struct dsa_switch *ds = port->ds; in dsa_user_port_apply()
270 const char *name = port->name; in dsa_user_port_apply()
273 if (port->dn) in dsa_user_port_apply()
274 name = of_get_property(port->dn, "label", NULL); in dsa_user_port_apply()
278 err = dsa_slave_create(port, name); in dsa_user_port_apply()
281 port->index, err); in dsa_user_port_apply()
282 port->netdev = NULL; in dsa_user_port_apply()
286 memset(&port->devlink_port, 0, sizeof(port->devlink_port)); in dsa_user_port_apply()
287 err = devlink_port_register(ds->devlink, &port->devlink_port, in dsa_user_port_apply()
288 port->index); in dsa_user_port_apply()
292 devlink_port_type_eth_set(&port->devlink_port, port->netdev); in dsa_user_port_apply()
297 static void dsa_user_port_unapply(struct dsa_port *port) in dsa_user_port_unapply() argument
299 devlink_port_unregister(&port->devlink_port); in dsa_user_port_unapply()
300 if (port->netdev) { in dsa_user_port_unapply()
301 dsa_slave_destroy(port->netdev); in dsa_user_port_unapply()
302 port->netdev = NULL; in dsa_user_port_unapply()
303 port->ds->enabled_port_mask &= ~(1 << port->index); in dsa_user_port_unapply()
309 struct dsa_port *port; in dsa_ds_apply() local
358 port = &ds->ports[index]; in dsa_ds_apply()
359 if (!dsa_port_is_valid(port)) in dsa_ds_apply()
362 if (dsa_port_is_dsa(port)) { in dsa_ds_apply()
363 err = dsa_dsa_port_apply(port); in dsa_ds_apply()
369 if (dsa_port_is_cpu(port)) { in dsa_ds_apply()
370 err = dsa_cpu_port_apply(port); in dsa_ds_apply()
376 err = dsa_user_port_apply(port); in dsa_ds_apply()
386 struct dsa_port *port; in dsa_ds_unapply() local
390 port = &ds->ports[index]; in dsa_ds_unapply()
391 if (!dsa_port_is_valid(port)) in dsa_ds_unapply()
394 if (dsa_port_is_dsa(port)) { in dsa_ds_unapply()
395 dsa_dsa_port_unapply(port); in dsa_ds_unapply()
399 if (dsa_port_is_cpu(port)) { in dsa_ds_unapply()
400 dsa_cpu_port_unapply(port); in dsa_ds_unapply()
404 dsa_user_port_unapply(port); in dsa_ds_unapply()
486 static int dsa_cpu_parse(struct dsa_port *port, u32 index, in dsa_cpu_parse() argument
494 if (port->dn) { in dsa_cpu_parse()
495 ethernet = of_parse_phandle(port->dn, "ethernet", 0); in dsa_cpu_parse()
509 dst->cpu_dp = port; in dsa_cpu_parse()
534 struct dsa_port *port; in dsa_ds_parse() local
539 port = &ds->ports[index]; in dsa_ds_parse()
540 if (!dsa_port_is_valid(port) || in dsa_ds_parse()
541 dsa_port_is_dsa(port)) in dsa_ds_parse()
544 if (dsa_port_is_cpu(port)) { in dsa_ds_parse()
545 err = dsa_cpu_parse(port, index, dst, ds); in dsa_ds_parse()
568 int port; in dsa_dst_parse() local
592 for (port = 0; port < ds->num_ports; port++) { in dsa_dst_parse()
593 dp = &ds->ports[port]; in dsa_dst_parse()
610 struct device_node *port; in dsa_parse_ports_dn() local
614 for_each_available_child_of_node(ports, port) { in dsa_parse_ports_dn()
615 err = of_property_read_u32(port, "reg", &reg); in dsa_parse_ports_dn()
622 ds->ports[reg].dn = port; in dsa_parse_ports_dn()