Lines Matching full:ds
116 static unsigned int bcm_sf2_num_active_ports(struct dsa_switch *ds) in bcm_sf2_num_active_ports() argument
118 struct bcm_sf2_priv *priv = bcm_sf2_to_priv(ds); in bcm_sf2_num_active_ports()
121 for (port = 0; port < ds->num_ports; port++) { in bcm_sf2_num_active_ports()
122 if (dsa_is_cpu_port(ds, port)) in bcm_sf2_num_active_ports()
131 static void bcm_sf2_recalc_clock(struct dsa_switch *ds) in bcm_sf2_recalc_clock() argument
133 struct bcm_sf2_priv *priv = bcm_sf2_to_priv(ds); in bcm_sf2_recalc_clock()
144 ports_active = bcm_sf2_num_active_ports(ds); in bcm_sf2_recalc_clock()
158 static void bcm_sf2_imp_setup(struct dsa_switch *ds, int port) in bcm_sf2_imp_setup() argument
160 struct bcm_sf2_priv *priv = bcm_sf2_to_priv(ds); in bcm_sf2_imp_setup()
185 b53_brcm_hdr_setup(ds, port); in bcm_sf2_imp_setup()
202 static void bcm_sf2_gphy_enable_set(struct dsa_switch *ds, bool enable) in bcm_sf2_gphy_enable_set() argument
204 struct bcm_sf2_priv *priv = bcm_sf2_to_priv(ds); in bcm_sf2_gphy_enable_set()
280 static int bcm_sf2_port_setup(struct dsa_switch *ds, int port, in bcm_sf2_port_setup() argument
283 struct bcm_sf2_priv *priv = bcm_sf2_to_priv(ds); in bcm_sf2_port_setup()
287 if (!dsa_is_user_port(ds, port)) in bcm_sf2_port_setup()
292 bcm_sf2_recalc_clock(ds); in bcm_sf2_port_setup()
301 b53_brcm_hdr_setup(ds, port); in bcm_sf2_port_setup()
313 bcm_sf2_gphy_enable_set(ds, true); in bcm_sf2_port_setup()
346 return b53_enable_port(ds, port, phy); in bcm_sf2_port_setup()
349 static void bcm_sf2_port_disable(struct dsa_switch *ds, int port) in bcm_sf2_port_disable() argument
351 struct bcm_sf2_priv *priv = bcm_sf2_to_priv(ds); in bcm_sf2_port_disable()
366 bcm_sf2_gphy_enable_set(ds, false); in bcm_sf2_port_disable()
368 b53_disable_port(ds, port); in bcm_sf2_port_disable()
377 bcm_sf2_recalc_clock(ds); in bcm_sf2_port_disable()
442 struct dsa_switch *ds = dev_id; in bcm_sf2_switch_0_isr() local
443 struct bcm_sf2_priv *priv = bcm_sf2_to_priv(ds); in bcm_sf2_switch_0_isr()
454 struct dsa_switch *ds = dev_id; in bcm_sf2_switch_1_isr() local
455 struct bcm_sf2_priv *priv = bcm_sf2_to_priv(ds); in bcm_sf2_switch_1_isr()
463 dsa_port_phylink_mac_change(ds, 7, true); in bcm_sf2_switch_1_isr()
467 dsa_port_phylink_mac_change(ds, 7, false); in bcm_sf2_switch_1_isr()
510 struct device *dev = priv->dev->ds->dev; in bcm_sf2_crossbar_setup()
557 struct device *dev = priv->dev->ds->dev; in bcm_sf2_identify_ports()
607 static int bcm_sf2_mdio_register(struct dsa_switch *ds) in bcm_sf2_mdio_register() argument
609 struct bcm_sf2_priv *priv = bcm_sf2_to_priv(ds); in bcm_sf2_mdio_register()
652 ds->phys_mii_mask = priv->indir_phy_mask; in bcm_sf2_mdio_register()
653 ds->user_mii_bus = priv->user_mii_bus; in bcm_sf2_mdio_register()
654 priv->user_mii_bus->parent = ds->dev->parent; in bcm_sf2_mdio_register()
708 static u32 bcm_sf2_sw_get_phy_flags(struct dsa_switch *ds, int port) in bcm_sf2_sw_get_phy_flags() argument
710 struct bcm_sf2_priv *priv = bcm_sf2_to_priv(ds); in bcm_sf2_sw_get_phy_flags()
724 static void bcm_sf2_sw_get_caps(struct dsa_switch *ds, int port, in bcm_sf2_sw_get_caps() argument
728 struct bcm_sf2_priv *priv = bcm_sf2_to_priv(ds); in bcm_sf2_sw_get_caps()
755 priv = bcm_sf2_to_priv(dp->ds); in bcm_sf2_sw_mac_config()
794 static void bcm_sf2_sw_mac_link_set(struct dsa_switch *ds, int port, in bcm_sf2_sw_mac_link_set() argument
797 struct bcm_sf2_priv *priv = bcm_sf2_to_priv(ds); in bcm_sf2_sw_mac_link_set()
826 priv = bcm_sf2_to_priv(dp->ds); in bcm_sf2_sw_mac_link_down()
835 bcm_sf2_sw_mac_link_set(dp->ds, port, interface, false); in bcm_sf2_sw_mac_link_down()
852 bcm_sf2_sw_mac_link_set(dp->ds, port, interface, true); in bcm_sf2_sw_mac_link_up()
854 priv = bcm_sf2_to_priv(dp->ds); in bcm_sf2_sw_mac_link_up()
902 p->eee_enabled = b53_eee_init(dp->ds, port, phydev); in bcm_sf2_sw_mac_link_up()
906 static void bcm_sf2_sw_fixed_state(struct dsa_switch *ds, int port, in bcm_sf2_sw_fixed_state() argument
909 struct bcm_sf2_priv *priv = bcm_sf2_to_priv(ds); in bcm_sf2_sw_fixed_state()
929 netif_carrier_off(dsa_to_port(ds, port)->user); in bcm_sf2_sw_fixed_state()
936 static void bcm_sf2_enable_acb(struct dsa_switch *ds) in bcm_sf2_enable_acb() argument
938 struct bcm_sf2_priv *priv = bcm_sf2_to_priv(ds); in bcm_sf2_enable_acb()
950 static int bcm_sf2_sw_suspend(struct dsa_switch *ds) in bcm_sf2_sw_suspend() argument
952 struct bcm_sf2_priv *priv = bcm_sf2_to_priv(ds); in bcm_sf2_sw_suspend()
961 for (port = 0; port < ds->num_ports; port++) { in bcm_sf2_sw_suspend()
962 if (dsa_is_user_port(ds, port) || dsa_is_cpu_port(ds, port)) in bcm_sf2_sw_suspend()
963 bcm_sf2_port_disable(ds, port); in bcm_sf2_sw_suspend()
972 static int bcm_sf2_sw_resume(struct dsa_switch *ds) in bcm_sf2_sw_resume() argument
974 struct bcm_sf2_priv *priv = bcm_sf2_to_priv(ds); in bcm_sf2_sw_resume()
988 ret = bcm_sf2_cfp_resume(ds); in bcm_sf2_sw_resume()
993 bcm_sf2_gphy_enable_set(ds, true); in bcm_sf2_sw_resume()
995 ds->ops->setup(ds); in bcm_sf2_sw_resume()
1000 static void bcm_sf2_sw_get_wol(struct dsa_switch *ds, int port, in bcm_sf2_sw_get_wol() argument
1003 struct net_device *p = dsa_port_to_conduit(dsa_to_port(ds, port)); in bcm_sf2_sw_get_wol()
1004 struct bcm_sf2_priv *priv = bcm_sf2_to_priv(ds); in bcm_sf2_sw_get_wol()
1024 static int bcm_sf2_sw_set_wol(struct dsa_switch *ds, int port, in bcm_sf2_sw_set_wol() argument
1027 struct net_device *p = dsa_port_to_conduit(dsa_to_port(ds, port)); in bcm_sf2_sw_set_wol()
1028 struct bcm_sf2_priv *priv = bcm_sf2_to_priv(ds); in bcm_sf2_sw_set_wol()
1029 s8 cpu_port = dsa_to_port(ds, port)->cpu_dp->index; in bcm_sf2_sw_set_wol()
1054 static int bcm_sf2_sw_setup(struct dsa_switch *ds) in bcm_sf2_sw_setup() argument
1056 struct bcm_sf2_priv *priv = bcm_sf2_to_priv(ds); in bcm_sf2_sw_setup()
1062 if (dsa_is_user_port(ds, port)) in bcm_sf2_sw_setup()
1063 bcm_sf2_port_setup(ds, port, NULL); in bcm_sf2_sw_setup()
1064 else if (dsa_is_cpu_port(ds, port)) in bcm_sf2_sw_setup()
1065 bcm_sf2_imp_setup(ds, port); in bcm_sf2_sw_setup()
1067 bcm_sf2_port_disable(ds, port); in bcm_sf2_sw_setup()
1070 b53_configure_vlan(ds); in bcm_sf2_sw_setup()
1071 bcm_sf2_enable_acb(ds); in bcm_sf2_sw_setup()
1073 return b53_setup_devlink_resources(ds); in bcm_sf2_sw_setup()
1076 static void bcm_sf2_sw_teardown(struct dsa_switch *ds) in bcm_sf2_sw_teardown() argument
1078 dsa_devlink_resources_unregister(ds); in bcm_sf2_sw_teardown()
1180 static void bcm_sf2_sw_get_strings(struct dsa_switch *ds, int port, in bcm_sf2_sw_get_strings() argument
1183 int cnt = b53_get_sset_count(ds, port, stringset); in bcm_sf2_sw_get_strings()
1185 b53_get_strings(ds, port, stringset, data); in bcm_sf2_sw_get_strings()
1186 bcm_sf2_cfp_get_strings(ds, port, stringset, in bcm_sf2_sw_get_strings()
1190 static void bcm_sf2_sw_get_ethtool_stats(struct dsa_switch *ds, int port, in bcm_sf2_sw_get_ethtool_stats() argument
1193 int cnt = b53_get_sset_count(ds, port, ETH_SS_STATS); in bcm_sf2_sw_get_ethtool_stats()
1195 b53_get_ethtool_stats(ds, port, data); in bcm_sf2_sw_get_ethtool_stats()
1196 bcm_sf2_cfp_get_ethtool_stats(ds, port, data + cnt); in bcm_sf2_sw_get_ethtool_stats()
1199 static int bcm_sf2_sw_get_sset_count(struct dsa_switch *ds, int port, in bcm_sf2_sw_get_sset_count() argument
1202 int cnt = b53_get_sset_count(ds, port, sset); in bcm_sf2_sw_get_sset_count()
1207 cnt += bcm_sf2_cfp_get_sset_count(ds, port, sset); in bcm_sf2_sw_get_sset_count()
1368 struct dsa_switch *ds; in bcm_sf2_sw_probe() local
1416 ds = dev->ds; in bcm_sf2_sw_probe()
1417 ds->ops = &bcm_sf2_ops; in bcm_sf2_sw_probe()
1418 ds->phylink_mac_ops = &bcm_sf2_phylink_mac_ops; in bcm_sf2_sw_probe()
1421 ds->num_tx_queues = SF2_NUM_EGRESS_QUEUES; in bcm_sf2_sw_probe()
1482 bcm_sf2_gphy_enable_set(priv->dev->ds, true); in bcm_sf2_sw_probe()
1484 ret = bcm_sf2_mdio_register(ds); in bcm_sf2_sw_probe()
1490 bcm_sf2_gphy_enable_set(priv->dev->ds, false); in bcm_sf2_sw_probe()
1502 "switch_0", ds); in bcm_sf2_sw_probe()
1509 "switch_1", ds); in bcm_sf2_sw_probe()
1571 dsa_unregister_switch(priv->dev->ds); in bcm_sf2_sw_remove()
1572 bcm_sf2_cfp_exit(priv->dev->ds); in bcm_sf2_sw_remove()
1594 bcm_sf2_gphy_enable_set(priv->dev->ds, true); in bcm_sf2_sw_shutdown()
1596 dsa_switch_shutdown(priv->dev->ds); in bcm_sf2_sw_shutdown()
1606 return dsa_switch_suspend(priv->dev->ds); in bcm_sf2_suspend()
1613 return dsa_switch_resume(priv->dev->ds); in bcm_sf2_resume()