Lines Matching refs:ds
26 struct dsa_switch *ds = bus->priv; in dsa_slave_phy_read() local
28 if (ds->phys_mii_mask & (1 << addr)) in dsa_slave_phy_read()
29 return ds->drv->phy_read(ds, addr, reg); in dsa_slave_phy_read()
36 struct dsa_switch *ds = bus->priv; in dsa_slave_phy_write() local
38 if (ds->phys_mii_mask & (1 << addr)) in dsa_slave_phy_write()
39 return ds->drv->phy_write(ds, addr, reg, val); in dsa_slave_phy_write()
44 void dsa_slave_mii_bus_init(struct dsa_switch *ds) in dsa_slave_mii_bus_init() argument
46 ds->slave_mii_bus->priv = (void *)ds; in dsa_slave_mii_bus_init()
47 ds->slave_mii_bus->name = "dsa slave smi"; in dsa_slave_mii_bus_init()
48 ds->slave_mii_bus->read = dsa_slave_phy_read; in dsa_slave_mii_bus_init()
49 ds->slave_mii_bus->write = dsa_slave_phy_write; in dsa_slave_mii_bus_init()
50 snprintf(ds->slave_mii_bus->id, MII_BUS_ID_SIZE, "dsa-%d:%.2x", in dsa_slave_mii_bus_init()
51 ds->index, ds->pd->sw_addr); in dsa_slave_mii_bus_init()
52 ds->slave_mii_bus->parent = ds->master_dev; in dsa_slave_mii_bus_init()
53 ds->slave_mii_bus->phy_mask = ~ds->phys_mii_mask; in dsa_slave_mii_bus_init()
74 struct dsa_switch *ds = p->parent; in dsa_slave_open() local
99 if (ds->drv->port_enable) { in dsa_slave_open()
100 err = ds->drv->port_enable(ds, p->port, p->phy); in dsa_slave_open()
105 if (ds->drv->port_stp_update) in dsa_slave_open()
106 ds->drv->port_stp_update(ds, p->port, stp_state); in dsa_slave_open()
130 struct dsa_switch *ds = p->parent; in dsa_slave_close() local
145 if (ds->drv->port_disable) in dsa_slave_close()
146 ds->drv->port_disable(ds, p->port, p->phy); in dsa_slave_close()
148 if (ds->drv->port_stp_update) in dsa_slave_close()
149 ds->drv->port_stp_update(ds, p->port, BR_STATE_DISABLED); in dsa_slave_close()
207 struct dsa_switch *ds = p->parent; in dsa_slave_fdb_add() local
210 if (ds->drv->fdb_add) in dsa_slave_fdb_add()
211 ret = ds->drv->fdb_add(ds, p->port, addr, vid); in dsa_slave_fdb_add()
221 struct dsa_switch *ds = p->parent; in dsa_slave_fdb_del() local
224 if (ds->drv->fdb_del) in dsa_slave_fdb_del()
225 ret = ds->drv->fdb_del(ds, p->port, addr, vid); in dsa_slave_fdb_del()
272 struct dsa_switch *ds = p->parent; in dsa_slave_fdb_dump() local
276 if (!ds->drv->fdb_getnext) in dsa_slave_fdb_dump()
282 ret = ds->drv->fdb_getnext(ds, p->port, addr, &is_static); in dsa_slave_fdb_dump()
315 static u32 dsa_slave_br_port_mask(struct dsa_switch *ds, in dsa_slave_br_port_mask() argument
323 if (!dsa_is_port_initialized(ds, port)) in dsa_slave_br_port_mask()
326 p = netdev_priv(ds->ports[port]); in dsa_slave_br_port_mask()
328 if (ds->ports[port]->priv_flags & IFF_BRIDGE_PORT && in dsa_slave_br_port_mask()
339 struct dsa_switch *ds = p->parent; in dsa_slave_stp_update() local
342 if (ds->drv->port_stp_update) in dsa_slave_stp_update()
343 ret = ds->drv->port_stp_update(ds, p->port, state); in dsa_slave_stp_update()
352 struct dsa_switch *ds = p->parent; in dsa_slave_bridge_port_join() local
357 if (ds->drv->port_join_bridge) in dsa_slave_bridge_port_join()
358 ret = ds->drv->port_join_bridge(ds, p->port, in dsa_slave_bridge_port_join()
359 dsa_slave_br_port_mask(ds, br)); in dsa_slave_bridge_port_join()
367 struct dsa_switch *ds = p->parent; in dsa_slave_bridge_port_leave() local
371 if (ds->drv->port_leave_bridge) in dsa_slave_bridge_port_leave()
372 ret = ds->drv->port_leave_bridge(ds, p->port, in dsa_slave_bridge_port_leave()
373 dsa_slave_br_port_mask(ds, p->bridge_dev)); in dsa_slave_bridge_port_leave()
389 struct dsa_switch *ds = p->parent; in dsa_slave_parent_id_get() local
391 psid->id_len = sizeof(ds->index); in dsa_slave_parent_id_get()
392 memcpy(&psid->id, &ds->index, psid->id_len); in dsa_slave_parent_id_get()
456 struct dsa_switch *ds = p->parent; in dsa_slave_get_regs_len() local
458 if (ds->drv->get_regs_len) in dsa_slave_get_regs_len()
459 return ds->drv->get_regs_len(ds, p->port); in dsa_slave_get_regs_len()
468 struct dsa_switch *ds = p->parent; in dsa_slave_get_regs() local
470 if (ds->drv->get_regs) in dsa_slave_get_regs()
471 ds->drv->get_regs(ds, p->port, regs, _p); in dsa_slave_get_regs()
499 struct dsa_switch *ds = p->parent; in dsa_slave_get_eeprom_len() local
501 if (ds->pd->eeprom_len) in dsa_slave_get_eeprom_len()
502 return ds->pd->eeprom_len; in dsa_slave_get_eeprom_len()
504 if (ds->drv->get_eeprom_len) in dsa_slave_get_eeprom_len()
505 return ds->drv->get_eeprom_len(ds); in dsa_slave_get_eeprom_len()
514 struct dsa_switch *ds = p->parent; in dsa_slave_get_eeprom() local
516 if (ds->drv->get_eeprom) in dsa_slave_get_eeprom()
517 return ds->drv->get_eeprom(ds, eeprom, data); in dsa_slave_get_eeprom()
526 struct dsa_switch *ds = p->parent; in dsa_slave_set_eeprom() local
528 if (ds->drv->set_eeprom) in dsa_slave_set_eeprom()
529 return ds->drv->set_eeprom(ds, eeprom, data); in dsa_slave_set_eeprom()
538 struct dsa_switch *ds = p->parent; in dsa_slave_get_strings() local
547 if (ds->drv->get_strings != NULL) in dsa_slave_get_strings()
548 ds->drv->get_strings(ds, p->port, data + 4 * len); in dsa_slave_get_strings()
557 struct dsa_switch *ds = p->parent; in dsa_slave_get_ethtool_stats() local
563 if (ds->drv->get_ethtool_stats != NULL) in dsa_slave_get_ethtool_stats()
564 ds->drv->get_ethtool_stats(ds, p->port, data + 4); in dsa_slave_get_ethtool_stats()
570 struct dsa_switch *ds = p->parent; in dsa_slave_get_sset_count() local
576 if (ds->drv->get_sset_count != NULL) in dsa_slave_get_sset_count()
577 count += ds->drv->get_sset_count(ds); in dsa_slave_get_sset_count()
588 struct dsa_switch *ds = p->parent; in dsa_slave_get_wol() local
590 if (ds->drv->get_wol) in dsa_slave_get_wol()
591 ds->drv->get_wol(ds, p->port, w); in dsa_slave_get_wol()
597 struct dsa_switch *ds = p->parent; in dsa_slave_set_wol() local
600 if (ds->drv->set_wol) in dsa_slave_set_wol()
601 ret = ds->drv->set_wol(ds, p->port, w); in dsa_slave_set_wol()
609 struct dsa_switch *ds = p->parent; in dsa_slave_set_eee() local
612 if (!ds->drv->set_eee) in dsa_slave_set_eee()
615 ret = ds->drv->set_eee(ds, p->port, p->phy, e); in dsa_slave_set_eee()
628 struct dsa_switch *ds = p->parent; in dsa_slave_get_eee() local
631 if (!ds->drv->get_eee) in dsa_slave_get_eee()
634 ret = ds->drv->get_eee(ds, p->port, e); in dsa_slave_get_eee()
686 struct dsa_switch *ds = p->parent; in dsa_slave_adjust_link() local
704 if (ds->drv->adjust_link && status_changed) in dsa_slave_adjust_link()
705 ds->drv->adjust_link(ds, p->port, p->phy); in dsa_slave_adjust_link()
715 struct dsa_switch *ds = p->parent; in dsa_slave_fixed_link_update() local
717 if (ds->drv->fixed_link_update) in dsa_slave_fixed_link_update()
718 ds->drv->fixed_link_update(ds, p->port, status); in dsa_slave_fixed_link_update()
728 struct dsa_switch *ds = p->parent; in dsa_slave_phy_connect() local
730 p->phy = ds->slave_mii_bus->phy_map[addr]; in dsa_slave_phy_connect()
746 struct dsa_switch *ds = p->parent; in dsa_slave_phy_setup() local
747 struct dsa_chip_data *cd = ds->pd; in dsa_slave_phy_setup()
773 if (ds->drv->get_phy_flags) in dsa_slave_phy_setup()
774 phy_flags = ds->drv->get_phy_flags(ds, p->port); in dsa_slave_phy_setup()
784 (ds->phys_mii_mask & (1 << ret))) { in dsa_slave_phy_setup()
845 int dsa_slave_create(struct dsa_switch *ds, struct device *parent, in dsa_slave_create() argument
848 struct net_device *master = ds->dst->master_netdev; in dsa_slave_create()
866 slave_dev->dev.of_node = ds->pd->port_dn[port]; in dsa_slave_create()
871 p->parent = ds; in dsa_slave_create()
874 switch (ds->dst->tag_protocol) { in dsa_slave_create()
910 ds->ports[port] = slave_dev; in dsa_slave_create()
916 ds->ports[port] = NULL; in dsa_slave_create()