Lines Matching refs:ds

383 mt7530_pad_clk_setup(struct dsa_switch *ds, phy_interface_t interface)  in mt7530_pad_clk_setup()  argument
385 struct mt7530_priv *priv = ds->priv; in mt7530_pad_clk_setup()
502 mt7531_pad_setup(struct dsa_switch *ds, phy_interface_t interface) in mt7531_pad_setup() argument
504 struct mt7530_priv *priv = ds->priv; in mt7531_pad_setup()
595 mt7530_mib_reset(struct dsa_switch *ds) in mt7530_mib_reset() argument
597 struct mt7530_priv *priv = ds->priv; in mt7530_mib_reset()
603 static int mt7530_phy_read(struct dsa_switch *ds, int port, int regnum) in mt7530_phy_read() argument
605 struct mt7530_priv *priv = ds->priv; in mt7530_phy_read()
610 static int mt7530_phy_write(struct dsa_switch *ds, int port, int regnum, in mt7530_phy_write() argument
613 struct mt7530_priv *priv = ds->priv; in mt7530_phy_write()
792 mt7531_ind_phy_read(struct dsa_switch *ds, int port, int regnum) in mt7531_ind_phy_read() argument
794 struct mt7530_priv *priv = ds->priv; in mt7531_ind_phy_read()
810 mt7531_ind_phy_write(struct dsa_switch *ds, int port, int regnum, in mt7531_ind_phy_write() argument
813 struct mt7530_priv *priv = ds->priv; in mt7531_ind_phy_write()
830 mt7530_get_strings(struct dsa_switch *ds, int port, u32 stringset, in mt7530_get_strings() argument
844 mt7530_get_ethtool_stats(struct dsa_switch *ds, int port, in mt7530_get_ethtool_stats() argument
847 struct mt7530_priv *priv = ds->priv; in mt7530_get_ethtool_stats()
865 mt7530_get_sset_count(struct dsa_switch *ds, int port, int sset) in mt7530_get_sset_count() argument
873 static void mt7530_setup_port5(struct dsa_switch *ds, phy_interface_t interface) in mt7530_setup_port5() argument
875 struct mt7530_priv *priv = ds->priv; in mt7530_setup_port5()
906 dev_err(ds->dev, "Unsupported p5_intf_sel %d\n", in mt7530_setup_port5()
919 if (!dsa_is_dsa_port(priv->ds, 5) && in mt7530_setup_port5()
935 dev_dbg(ds->dev, "Setup P5, HWTRAP=0x%x, intf_sel=%s, phy-mode=%s\n", in mt7530_setup_port5()
945 mt753x_cpu_port_enable(struct dsa_switch *ds, int port) in mt753x_cpu_port_enable() argument
947 struct mt7530_priv *priv = ds->priv; in mt753x_cpu_port_enable()
952 ret = priv->info->cpu_port_config(ds, port); in mt753x_cpu_port_enable()
972 PCR_MATRIX(dsa_user_ports(priv->ds))); in mt753x_cpu_port_enable()
978 mt7530_port_enable(struct dsa_switch *ds, int port, in mt7530_port_enable() argument
981 struct mt7530_priv *priv = ds->priv; in mt7530_port_enable()
983 if (!dsa_is_user_port(ds, port)) in mt7530_port_enable()
1004 mt7530_port_disable(struct dsa_switch *ds, int port) in mt7530_port_disable() argument
1006 struct mt7530_priv *priv = ds->priv; in mt7530_port_disable()
1008 if (!dsa_is_user_port(ds, port)) in mt7530_port_disable()
1025 mt7530_stp_state_set(struct dsa_switch *ds, int port, u8 state) in mt7530_stp_state_set() argument
1027 struct mt7530_priv *priv = ds->priv; in mt7530_stp_state_set()
1053 mt7530_port_bridge_join(struct dsa_switch *ds, int port, in mt7530_port_bridge_join() argument
1056 struct mt7530_priv *priv = ds->priv; in mt7530_port_bridge_join()
1067 if (dsa_is_user_port(ds, i) && i != port) { in mt7530_port_bridge_join()
1068 if (dsa_to_port(ds, i)->bridge_dev != bridge) in mt7530_port_bridge_join()
1091 mt7530_port_set_vlan_unaware(struct dsa_switch *ds, int port) in mt7530_port_set_vlan_unaware() argument
1093 struct mt7530_priv *priv = ds->priv; in mt7530_port_set_vlan_unaware()
1108 if (dsa_is_user_port(ds, i) && in mt7530_port_set_vlan_unaware()
1109 dsa_port_is_vlan_filtering(dsa_to_port(ds, i))) { in mt7530_port_set_vlan_unaware()
1120 PCR_MATRIX(dsa_user_ports(priv->ds))); in mt7530_port_set_vlan_unaware()
1127 mt7530_port_set_vlan_aware(struct dsa_switch *ds, int port) in mt7530_port_set_vlan_aware() argument
1129 struct mt7530_priv *priv = ds->priv; in mt7530_port_set_vlan_aware()
1143 if (dsa_is_cpu_port(ds, port)) in mt7530_port_set_vlan_aware()
1159 mt7530_port_bridge_leave(struct dsa_switch *ds, int port, in mt7530_port_bridge_leave() argument
1162 struct mt7530_priv *priv = ds->priv; in mt7530_port_bridge_leave()
1174 if (dsa_is_user_port(ds, i) && i != port && in mt7530_port_bridge_leave()
1175 !dsa_port_is_vlan_filtering(dsa_to_port(ds, i))) { in mt7530_port_bridge_leave()
1176 if (dsa_to_port(ds, i)->bridge_dev != bridge) in mt7530_port_bridge_leave()
1197 mt7530_port_fdb_add(struct dsa_switch *ds, int port, in mt7530_port_fdb_add() argument
1200 struct mt7530_priv *priv = ds->priv; in mt7530_port_fdb_add()
1213 mt7530_port_fdb_del(struct dsa_switch *ds, int port, in mt7530_port_fdb_del() argument
1216 struct mt7530_priv *priv = ds->priv; in mt7530_port_fdb_del()
1229 mt7530_port_fdb_dump(struct dsa_switch *ds, int port, in mt7530_port_fdb_dump() argument
1232 struct mt7530_priv *priv = ds->priv; in mt7530_port_fdb_dump()
1291 mt7530_port_vlan_filtering(struct dsa_switch *ds, int port, in mt7530_port_vlan_filtering() argument
1304 mt7530_port_set_vlan_aware(ds, port); in mt7530_port_vlan_filtering()
1305 mt7530_port_set_vlan_aware(ds, MT7530_CPU_PORT); in mt7530_port_vlan_filtering()
1307 mt7530_port_set_vlan_unaware(ds, port); in mt7530_port_vlan_filtering()
1314 mt7530_port_vlan_prepare(struct dsa_switch *ds, int port, in mt7530_port_vlan_prepare() argument
1410 mt7530_port_vlan_add(struct dsa_switch *ds, int port, in mt7530_port_vlan_add() argument
1416 struct mt7530_priv *priv = ds->priv; in mt7530_port_vlan_add()
1437 mt7530_port_vlan_del(struct dsa_switch *ds, int port, in mt7530_port_vlan_del() argument
1441 struct mt7530_priv *priv = ds->priv; in mt7530_port_vlan_del()
1479 static int mt753x_port_mirror_add(struct dsa_switch *ds, int port, in mt753x_port_mirror_add() argument
1483 struct mt7530_priv *priv = ds->priv; in mt753x_port_mirror_add()
1517 static void mt753x_port_mirror_del(struct dsa_switch *ds, int port, in mt753x_port_mirror_del() argument
1520 struct mt7530_priv *priv = ds->priv; in mt753x_port_mirror_del()
1541 mtk_get_tag_protocol(struct dsa_switch *ds, int port, in mtk_get_tag_protocol() argument
1544 struct mt7530_priv *priv = ds->priv; in mtk_get_tag_protocol()
1556 mt7530_setup(struct dsa_switch *ds) in mt7530_setup() argument
1558 struct mt7530_priv *priv = ds->priv; in mt7530_setup()
1571 dn = dsa_to_port(ds, MT7530_CPU_PORT)->master->dev.of_node->parent; in mt7530_setup()
1572 ds->configure_vlan_while_not_filtering = true; in mt7530_setup()
1635 mt7530_mib_reset(ds); in mt7530_setup()
1642 if (dsa_is_cpu_port(ds, i)) { in mt7530_setup()
1643 ret = mt753x_cpu_port_enable(ds, i); in mt7530_setup()
1647 mt7530_port_disable(ds, i); in mt7530_setup()
1658 if (!dsa_is_unused_port(ds, 5)) { in mt7530_setup()
1660 ret = of_get_phy_mode(dsa_to_port(ds, 5)->dn, &interface); in mt7530_setup()
1684 id = of_mdio_parse_addr(ds->dev, phy_node); in mt7530_setup()
1696 mt7530_setup_port5(ds, interface); in mt7530_setup()
1707 mt7531_setup(struct dsa_switch *ds) in mt7531_setup() argument
1709 struct mt7530_priv *priv = ds->priv; in mt7531_setup()
1760 dev_dbg(ds->dev, "P5 support %s interface\n", in mt7531_setup()
1789 mt7530_mib_reset(ds); in mt7531_setup()
1798 if (dsa_is_cpu_port(ds, i)) { in mt7531_setup()
1799 ret = mt753x_cpu_port_enable(ds, i); in mt7531_setup()
1803 mt7530_port_disable(ds, i); in mt7531_setup()
1810 ds->configure_vlan_while_not_filtering = true; in mt7531_setup()
1821 mt7530_phy_mode_supported(struct dsa_switch *ds, int port, in mt7530_phy_mode_supported() argument
1824 struct mt7530_priv *priv = ds->priv; in mt7530_phy_mode_supported()
1857 mt7531_phy_mode_supported(struct dsa_switch *ds, int port, in mt7531_phy_mode_supported() argument
1860 struct mt7530_priv *priv = ds->priv; in mt7531_phy_mode_supported()
1886 mt753x_phy_mode_supported(struct dsa_switch *ds, int port, in mt753x_phy_mode_supported() argument
1889 struct mt7530_priv *priv = ds->priv; in mt753x_phy_mode_supported()
1891 return priv->info->phy_mode_supported(ds, port, state); in mt753x_phy_mode_supported()
1895 mt753x_pad_setup(struct dsa_switch *ds, const struct phylink_link_state *state) in mt753x_pad_setup() argument
1897 struct mt7530_priv *priv = ds->priv; in mt753x_pad_setup()
1899 return priv->info->pad_setup(ds, state->interface); in mt753x_pad_setup()
1903 mt7530_mac_config(struct dsa_switch *ds, int port, unsigned int mode, in mt7530_mac_config() argument
1906 struct mt7530_priv *priv = ds->priv; in mt7530_mac_config()
1912 mt7530_setup_port5(priv->ds, interface); in mt7530_mac_config()
1983 mt7531_sgmii_link_up_force(struct dsa_switch *ds, int port, in mt7531_sgmii_link_up_force() argument
1987 struct mt7530_priv *priv = ds->priv; in mt7531_sgmii_link_up_force()
2088 static void mt7531_sgmii_restart_an(struct dsa_switch *ds, int port) in mt7531_sgmii_restart_an() argument
2090 struct mt7530_priv *priv = ds->priv; in mt7531_sgmii_restart_an()
2102 mt7531_mac_config(struct dsa_switch *ds, int port, unsigned int mode, in mt7531_mac_config() argument
2105 struct mt7530_priv *priv = ds->priv; in mt7531_mac_config()
2119 dp = dsa_to_port(ds, port); in mt7531_mac_config()
2139 mt753x_mac_config(struct dsa_switch *ds, int port, unsigned int mode, in mt753x_mac_config() argument
2142 struct mt7530_priv *priv = ds->priv; in mt753x_mac_config()
2144 return priv->info->mac_port_config(ds, port, mode, state->interface); in mt753x_mac_config()
2148 mt753x_phylink_mac_config(struct dsa_switch *ds, int port, unsigned int mode, in mt753x_phylink_mac_config() argument
2151 struct mt7530_priv *priv = ds->priv; in mt753x_phylink_mac_config()
2154 if (!mt753x_phy_mode_supported(ds, port, state)) in mt753x_phylink_mac_config()
2166 if (mt753x_mac_config(ds, port, mode, state) < 0) in mt753x_phylink_mac_config()
2176 mt753x_pad_setup(ds, state); in mt753x_phylink_mac_config()
2178 if (mt753x_mac_config(ds, port, mode, state) < 0) in mt753x_phylink_mac_config()
2185 dev_err(ds->dev, "%s: unsupported %s port: %i\n", in mt753x_phylink_mac_config()
2192 dev_err(ds->dev, "%s: in-band negotiation unsupported\n", in mt753x_phylink_mac_config()
2204 if (port == 5 && dsa_is_user_port(ds, 5)) in mt753x_phylink_mac_config()
2212 mt753x_phylink_mac_an_restart(struct dsa_switch *ds, int port) in mt753x_phylink_mac_an_restart() argument
2214 struct mt7530_priv *priv = ds->priv; in mt753x_phylink_mac_an_restart()
2219 priv->info->mac_pcs_an_restart(ds, port); in mt753x_phylink_mac_an_restart()
2222 static void mt753x_phylink_mac_link_down(struct dsa_switch *ds, int port, in mt753x_phylink_mac_link_down() argument
2226 struct mt7530_priv *priv = ds->priv; in mt753x_phylink_mac_link_down()
2231 static void mt753x_mac_pcs_link_up(struct dsa_switch *ds, int port, in mt753x_mac_pcs_link_up() argument
2235 struct mt7530_priv *priv = ds->priv; in mt753x_mac_pcs_link_up()
2240 priv->info->mac_pcs_link_up(ds, port, mode, interface, speed, duplex); in mt753x_mac_pcs_link_up()
2243 static void mt753x_phylink_mac_link_up(struct dsa_switch *ds, int port, in mt753x_phylink_mac_link_up() argument
2250 struct mt7530_priv *priv = ds->priv; in mt753x_phylink_mac_link_up()
2253 mt753x_mac_pcs_link_up(ds, port, mode, interface, speed, duplex); in mt753x_phylink_mac_link_up()
2286 mt7531_cpu_port_config(struct dsa_switch *ds, int port) in mt7531_cpu_port_config() argument
2288 struct mt7530_priv *priv = ds->priv; in mt7531_cpu_port_config()
2305 mt7531_pad_setup(ds, interface); in mt7531_cpu_port_config()
2318 ret = mt7531_mac_config(ds, port, MLO_AN_FIXED, interface); in mt7531_cpu_port_config()
2323 mt753x_phylink_mac_link_up(ds, port, MLO_AN_FIXED, interface, NULL, in mt7531_cpu_port_config()
2330 mt7530_mac_port_validate(struct dsa_switch *ds, int port, in mt7530_mac_port_validate() argument
2337 static void mt7531_mac_port_validate(struct dsa_switch *ds, int port, in mt7531_mac_port_validate() argument
2340 struct mt7530_priv *priv = ds->priv; in mt7531_mac_port_validate()
2346 mt753x_phylink_validate(struct dsa_switch *ds, int port, in mt753x_phylink_validate() argument
2351 struct mt7530_priv *priv = ds->priv; in mt753x_phylink_validate()
2354 !mt753x_phy_mode_supported(ds, port, state)) { in mt753x_phylink_validate()
2374 priv->info->mac_port_validate(ds, port, mask); in mt753x_phylink_validate()
2389 mt7530_phylink_mac_link_state(struct dsa_switch *ds, int port, in mt7530_phylink_mac_link_state() argument
2392 struct mt7530_priv *priv = ds->priv; in mt7530_phylink_mac_link_state()
2468 mt7531_phylink_mac_link_state(struct dsa_switch *ds, int port, in mt7531_phylink_mac_link_state() argument
2471 struct mt7530_priv *priv = ds->priv; in mt7531_phylink_mac_link_state()
2480 mt753x_phylink_mac_link_state(struct dsa_switch *ds, int port, in mt753x_phylink_mac_link_state() argument
2483 struct mt7530_priv *priv = ds->priv; in mt753x_phylink_mac_link_state()
2485 return priv->info->mac_port_get_state(ds, port, state); in mt753x_phylink_mac_link_state()
2489 mt753x_setup(struct dsa_switch *ds) in mt753x_setup() argument
2491 struct mt7530_priv *priv = ds->priv; in mt753x_setup()
2493 return priv->info->sw_setup(ds); in mt753x_setup()
2497 mt753x_phy_read(struct dsa_switch *ds, int port, int regnum) in mt753x_phy_read() argument
2499 struct mt7530_priv *priv = ds->priv; in mt753x_phy_read()
2501 return priv->info->phy_read(ds, port, regnum); in mt753x_phy_read()
2505 mt753x_phy_write(struct dsa_switch *ds, int port, int regnum, u16 val) in mt753x_phy_write() argument
2507 struct mt7530_priv *priv = ds->priv; in mt753x_phy_write()
2509 return priv->info->phy_write(ds, port, regnum, val); in mt753x_phy_write()
2601 priv->ds = devm_kzalloc(&mdiodev->dev, sizeof(*priv->ds), GFP_KERNEL); in mt7530_probe()
2602 if (!priv->ds) in mt7530_probe()
2605 priv->ds->dev = &mdiodev->dev; in mt7530_probe()
2606 priv->ds->num_ports = DSA_MAX_PORTS; in mt7530_probe()
2667 priv->ds->priv = priv; in mt7530_probe()
2668 priv->ds->ops = &mt7530_switch_ops; in mt7530_probe()
2672 return dsa_register_switch(priv->ds); in mt7530_probe()
2691 dsa_unregister_switch(priv->ds); in mt7530_remove()