Lines Matching refs:ds

27 	struct dsa_switch *ds = bus->priv;  in dsa_slave_phy_read()  local
29 if (ds->phys_mii_mask & (1 << addr)) in dsa_slave_phy_read()
30 return ds->drv->phy_read(ds, addr, reg); in dsa_slave_phy_read()
37 struct dsa_switch *ds = bus->priv; in dsa_slave_phy_write() local
39 if (ds->phys_mii_mask & (1 << addr)) in dsa_slave_phy_write()
40 return ds->drv->phy_write(ds, addr, reg, val); in dsa_slave_phy_write()
45 void dsa_slave_mii_bus_init(struct dsa_switch *ds) in dsa_slave_mii_bus_init() argument
47 ds->slave_mii_bus->priv = (void *)ds; in dsa_slave_mii_bus_init()
48 ds->slave_mii_bus->name = "dsa slave smi"; in dsa_slave_mii_bus_init()
49 ds->slave_mii_bus->read = dsa_slave_phy_read; in dsa_slave_mii_bus_init()
50 ds->slave_mii_bus->write = dsa_slave_phy_write; in dsa_slave_mii_bus_init()
51 snprintf(ds->slave_mii_bus->id, MII_BUS_ID_SIZE, "dsa-%d:%.2x", in dsa_slave_mii_bus_init()
52 ds->index, ds->pd->sw_addr); in dsa_slave_mii_bus_init()
53 ds->slave_mii_bus->parent = ds->master_dev; in dsa_slave_mii_bus_init()
54 ds->slave_mii_bus->phy_mask = ~ds->phys_mii_mask; in dsa_slave_mii_bus_init()
75 struct dsa_switch *ds = p->parent; in dsa_slave_open() local
100 if (ds->drv->port_enable) { in dsa_slave_open()
101 err = ds->drv->port_enable(ds, p->port, p->phy); in dsa_slave_open()
106 if (ds->drv->port_stp_update) in dsa_slave_open()
107 ds->drv->port_stp_update(ds, p->port, stp_state); in dsa_slave_open()
131 struct dsa_switch *ds = p->parent; in dsa_slave_close() local
146 if (ds->drv->port_disable) in dsa_slave_close()
147 ds->drv->port_disable(ds, p->port, p->phy); in dsa_slave_close()
149 if (ds->drv->port_stp_update) in dsa_slave_close()
150 ds->drv->port_stp_update(ds, p->port, BR_STATE_DISABLED); in dsa_slave_close()
203 static int dsa_bridge_check_vlan_range(struct dsa_switch *ds, in dsa_bridge_check_vlan_range() argument
214 if (!ds->drv->vlan_getnext || !vid_begin) in dsa_bridge_check_vlan_range()
220 err = ds->drv->vlan_getnext(ds, &vid, members, untagged); in dsa_bridge_check_vlan_range()
231 dev = ds->ports[member]; in dsa_bridge_check_vlan_range()
249 struct dsa_switch *ds = p->parent; in dsa_slave_port_vlan_add() local
253 if (!ds->drv->port_vlan_prepare || !ds->drv->port_vlan_add) in dsa_slave_port_vlan_add()
259 err = dsa_bridge_check_vlan_range(ds, p->bridge_dev, in dsa_slave_port_vlan_add()
265 err = ds->drv->port_vlan_prepare(ds, p->port, vlan, trans); in dsa_slave_port_vlan_add()
269 err = ds->drv->port_vlan_add(ds, p->port, vlan, trans); in dsa_slave_port_vlan_add()
281 struct dsa_switch *ds = p->parent; in dsa_slave_port_vlan_del() local
283 if (!ds->drv->port_vlan_del) in dsa_slave_port_vlan_del()
286 return ds->drv->port_vlan_del(ds, p->port, vlan); in dsa_slave_port_vlan_del()
294 struct dsa_switch *ds = p->parent; in dsa_slave_port_vlan_dump() local
300 if (!ds->drv->vlan_getnext || !ds->drv->port_pvid_get) in dsa_slave_port_vlan_dump()
303 err = ds->drv->port_pvid_get(ds, p->port, &pvid); in dsa_slave_port_vlan_dump()
308 err = ds->drv->vlan_getnext(ds, &vid, members, untagged); in dsa_slave_port_vlan_dump()
337 struct dsa_switch *ds = p->parent; in dsa_slave_port_fdb_add() local
340 if (!ds->drv->port_fdb_prepare || !ds->drv->port_fdb_add) in dsa_slave_port_fdb_add()
344 ret = ds->drv->port_fdb_prepare(ds, p->port, fdb, trans); in dsa_slave_port_fdb_add()
346 ret = ds->drv->port_fdb_add(ds, p->port, fdb, trans); in dsa_slave_port_fdb_add()
355 struct dsa_switch *ds = p->parent; in dsa_slave_port_fdb_del() local
358 if (ds->drv->port_fdb_del) in dsa_slave_port_fdb_del()
359 ret = ds->drv->port_fdb_del(ds, p->port, fdb); in dsa_slave_port_fdb_del()
369 struct dsa_switch *ds = p->parent; in dsa_slave_port_fdb_dump() local
371 if (ds->drv->port_fdb_dump) in dsa_slave_port_fdb_dump()
372 return ds->drv->port_fdb_dump(ds, p->port, fdb, cb); in dsa_slave_port_fdb_dump()
391 static u32 dsa_slave_br_port_mask(struct dsa_switch *ds, in dsa_slave_br_port_mask() argument
399 if (!dsa_is_port_initialized(ds, port)) in dsa_slave_br_port_mask()
402 p = netdev_priv(ds->ports[port]); in dsa_slave_br_port_mask()
404 if (ds->ports[port]->priv_flags & IFF_BRIDGE_PORT && in dsa_slave_br_port_mask()
415 struct dsa_switch *ds = p->parent; in dsa_slave_stp_update() local
418 if (ds->drv->port_stp_update) in dsa_slave_stp_update()
419 ret = ds->drv->port_stp_update(ds, p->port, state); in dsa_slave_stp_update()
429 struct dsa_switch *ds = p->parent; in dsa_slave_port_attr_set() local
435 ret = ds->drv->port_stp_update ? 0 : -EOPNOTSUPP; in dsa_slave_port_attr_set()
437 ret = ds->drv->port_stp_update(ds, p->port, in dsa_slave_port_attr_set()
529 struct dsa_switch *ds = p->parent; in dsa_slave_bridge_port_join() local
534 if (ds->drv->port_join_bridge) in dsa_slave_bridge_port_join()
535 ret = ds->drv->port_join_bridge(ds, p->port, in dsa_slave_bridge_port_join()
536 dsa_slave_br_port_mask(ds, br)); in dsa_slave_bridge_port_join()
544 struct dsa_switch *ds = p->parent; in dsa_slave_bridge_port_leave() local
548 if (ds->drv->port_leave_bridge) in dsa_slave_bridge_port_leave()
549 ret = ds->drv->port_leave_bridge(ds, p->port, in dsa_slave_bridge_port_leave()
550 dsa_slave_br_port_mask(ds, p->bridge_dev)); in dsa_slave_bridge_port_leave()
566 struct dsa_switch *ds = p->parent; in dsa_slave_port_attr_get() local
570 attr->u.ppid.id_len = sizeof(ds->index); in dsa_slave_port_attr_get()
571 memcpy(&attr->u.ppid.id, &ds->index, attr->u.ppid.id_len); in dsa_slave_port_attr_get()
668 struct dsa_switch *ds = p->parent; in dsa_slave_get_regs_len() local
670 if (ds->drv->get_regs_len) in dsa_slave_get_regs_len()
671 return ds->drv->get_regs_len(ds, p->port); in dsa_slave_get_regs_len()
680 struct dsa_switch *ds = p->parent; in dsa_slave_get_regs() local
682 if (ds->drv->get_regs) in dsa_slave_get_regs()
683 ds->drv->get_regs(ds, p->port, regs, _p); in dsa_slave_get_regs()
711 struct dsa_switch *ds = p->parent; in dsa_slave_get_eeprom_len() local
713 if (ds->pd->eeprom_len) in dsa_slave_get_eeprom_len()
714 return ds->pd->eeprom_len; in dsa_slave_get_eeprom_len()
716 if (ds->drv->get_eeprom_len) in dsa_slave_get_eeprom_len()
717 return ds->drv->get_eeprom_len(ds); in dsa_slave_get_eeprom_len()
726 struct dsa_switch *ds = p->parent; in dsa_slave_get_eeprom() local
728 if (ds->drv->get_eeprom) in dsa_slave_get_eeprom()
729 return ds->drv->get_eeprom(ds, eeprom, data); in dsa_slave_get_eeprom()
738 struct dsa_switch *ds = p->parent; in dsa_slave_set_eeprom() local
740 if (ds->drv->set_eeprom) in dsa_slave_set_eeprom()
741 return ds->drv->set_eeprom(ds, eeprom, data); in dsa_slave_set_eeprom()
750 struct dsa_switch *ds = p->parent; in dsa_slave_get_strings() local
759 if (ds->drv->get_strings != NULL) in dsa_slave_get_strings()
760 ds->drv->get_strings(ds, p->port, data + 4 * len); in dsa_slave_get_strings()
769 struct dsa_switch *ds = p->parent; in dsa_slave_get_ethtool_stats() local
775 if (ds->drv->get_ethtool_stats != NULL) in dsa_slave_get_ethtool_stats()
776 ds->drv->get_ethtool_stats(ds, p->port, data + 4); in dsa_slave_get_ethtool_stats()
782 struct dsa_switch *ds = p->parent; in dsa_slave_get_sset_count() local
788 if (ds->drv->get_sset_count != NULL) in dsa_slave_get_sset_count()
789 count += ds->drv->get_sset_count(ds); in dsa_slave_get_sset_count()
800 struct dsa_switch *ds = p->parent; in dsa_slave_get_wol() local
802 if (ds->drv->get_wol) in dsa_slave_get_wol()
803 ds->drv->get_wol(ds, p->port, w); in dsa_slave_get_wol()
809 struct dsa_switch *ds = p->parent; in dsa_slave_set_wol() local
812 if (ds->drv->set_wol) in dsa_slave_set_wol()
813 ret = ds->drv->set_wol(ds, p->port, w); in dsa_slave_set_wol()
821 struct dsa_switch *ds = p->parent; in dsa_slave_set_eee() local
824 if (!ds->drv->set_eee) in dsa_slave_set_eee()
827 ret = ds->drv->set_eee(ds, p->port, p->phy, e); in dsa_slave_set_eee()
840 struct dsa_switch *ds = p->parent; in dsa_slave_get_eee() local
843 if (!ds->drv->get_eee) in dsa_slave_get_eee()
846 ret = ds->drv->get_eee(ds, p->port, e); in dsa_slave_get_eee()
861 struct dsa_switch *ds = p->parent; in dsa_slave_netpoll_setup() local
862 struct net_device *master = ds->dst->master_netdev; in dsa_slave_netpoll_setup()
956 struct dsa_switch *ds = p->parent; in dsa_slave_adjust_link() local
974 if (ds->drv->adjust_link && status_changed) in dsa_slave_adjust_link()
975 ds->drv->adjust_link(ds, p->port, p->phy); in dsa_slave_adjust_link()
985 struct dsa_switch *ds = p->parent; in dsa_slave_fixed_link_update() local
987 if (ds->drv->fixed_link_update) in dsa_slave_fixed_link_update()
988 ds->drv->fixed_link_update(ds, p->port, status); in dsa_slave_fixed_link_update()
998 struct dsa_switch *ds = p->parent; in dsa_slave_phy_connect() local
1000 p->phy = ds->slave_mii_bus->phy_map[addr]; in dsa_slave_phy_connect()
1018 struct dsa_switch *ds = p->parent; in dsa_slave_phy_setup() local
1019 struct dsa_chip_data *cd = ds->pd; in dsa_slave_phy_setup()
1045 if (ds->drv->get_phy_flags) in dsa_slave_phy_setup()
1046 phy_flags = ds->drv->get_phy_flags(ds, p->port); in dsa_slave_phy_setup()
1057 (ds->phys_mii_mask & (1 << phy_id))) { in dsa_slave_phy_setup()
1129 int dsa_slave_create(struct dsa_switch *ds, struct device *parent, in dsa_slave_create() argument
1132 struct net_device *master = ds->dst->master_netdev; in dsa_slave_create()
1154 slave_dev->dev.of_node = ds->pd->port_dn[port]; in dsa_slave_create()
1159 p->parent = ds; in dsa_slave_create()
1162 switch (ds->dst->tag_protocol) { in dsa_slave_create()
1199 ds->ports[port] = slave_dev; in dsa_slave_create()
1205 ds->ports[port] = NULL; in dsa_slave_create()