Lines Matching refs:ds
116 static unsigned int bcm_sf2_num_active_ports(struct dsa_switch *ds)
118 struct bcm_sf2_priv *priv = bcm_sf2_to_priv(ds);
121 for (port = 0; port < ds->num_ports; port++) {
122 if (dsa_is_cpu_port(ds, port))
131 static void bcm_sf2_recalc_clock(struct dsa_switch *ds)
133 struct bcm_sf2_priv *priv = bcm_sf2_to_priv(ds);
144 ports_active = bcm_sf2_num_active_ports(ds);
158 static void bcm_sf2_imp_setup(struct dsa_switch *ds, int port)
160 struct bcm_sf2_priv *priv = bcm_sf2_to_priv(ds);
185 b53_brcm_hdr_setup(ds, port);
202 static void bcm_sf2_gphy_enable_set(struct dsa_switch *ds, bool enable)
204 struct bcm_sf2_priv *priv = bcm_sf2_to_priv(ds);
280 static int bcm_sf2_port_setup(struct dsa_switch *ds, int port,
283 struct bcm_sf2_priv *priv = bcm_sf2_to_priv(ds);
287 if (!dsa_is_user_port(ds, port))
292 bcm_sf2_recalc_clock(ds);
301 b53_brcm_hdr_setup(ds, port);
313 bcm_sf2_gphy_enable_set(ds, true);
346 return b53_enable_port(ds, port, phy);
349 static void bcm_sf2_port_disable(struct dsa_switch *ds, int port)
351 struct bcm_sf2_priv *priv = bcm_sf2_to_priv(ds);
366 bcm_sf2_gphy_enable_set(ds, false);
368 b53_disable_port(ds, port);
377 bcm_sf2_recalc_clock(ds);
442 struct dsa_switch *ds = dev_id;
443 struct bcm_sf2_priv *priv = bcm_sf2_to_priv(ds);
454 struct dsa_switch *ds = dev_id;
455 struct bcm_sf2_priv *priv = bcm_sf2_to_priv(ds);
463 dsa_port_phylink_mac_change(ds, 7, true);
467 dsa_port_phylink_mac_change(ds, 7, false);
510 struct device *dev = priv->dev->ds->dev;
557 struct device *dev = priv->dev->ds->dev;
607 static int bcm_sf2_mdio_register(struct dsa_switch *ds)
609 struct bcm_sf2_priv *priv = bcm_sf2_to_priv(ds);
655 ds->phys_mii_mask = priv->indir_phy_mask;
656 ds->slave_mii_bus = priv->slave_mii_bus;
657 priv->slave_mii_bus->parent = ds->dev->parent;
708 static u32 bcm_sf2_sw_get_phy_flags(struct dsa_switch *ds, int port)
710 struct bcm_sf2_priv *priv = bcm_sf2_to_priv(ds);
724 static void bcm_sf2_sw_get_caps(struct dsa_switch *ds, int port,
728 struct bcm_sf2_priv *priv = bcm_sf2_to_priv(ds);
745 static void bcm_sf2_sw_mac_config(struct dsa_switch *ds, int port,
749 struct bcm_sf2_priv *priv = bcm_sf2_to_priv(ds);
791 static void bcm_sf2_sw_mac_link_set(struct dsa_switch *ds, int port,
794 struct bcm_sf2_priv *priv = bcm_sf2_to_priv(ds);
814 static void bcm_sf2_sw_mac_link_down(struct dsa_switch *ds, int port,
818 struct bcm_sf2_priv *priv = bcm_sf2_to_priv(ds);
829 bcm_sf2_sw_mac_link_set(ds, port, interface, false);
832 static void bcm_sf2_sw_mac_link_up(struct dsa_switch *ds, int port,
839 struct bcm_sf2_priv *priv = bcm_sf2_to_priv(ds);
844 bcm_sf2_sw_mac_link_set(ds, port, interface, true);
892 p->eee_enabled = b53_eee_init(ds, port, phydev);
895 static void bcm_sf2_sw_fixed_state(struct dsa_switch *ds, int port,
898 struct bcm_sf2_priv *priv = bcm_sf2_to_priv(ds);
918 netif_carrier_off(dsa_to_port(ds, port)->slave);
925 static void bcm_sf2_enable_acb(struct dsa_switch *ds)
927 struct bcm_sf2_priv *priv = bcm_sf2_to_priv(ds);
939 static int bcm_sf2_sw_suspend(struct dsa_switch *ds)
941 struct bcm_sf2_priv *priv = bcm_sf2_to_priv(ds);
950 for (port = 0; port < ds->num_ports; port++) {
951 if (dsa_is_user_port(ds, port) || dsa_is_cpu_port(ds, port))
952 bcm_sf2_port_disable(ds, port);
961 static int bcm_sf2_sw_resume(struct dsa_switch *ds)
963 struct bcm_sf2_priv *priv = bcm_sf2_to_priv(ds);
977 ret = bcm_sf2_cfp_resume(ds);
982 bcm_sf2_gphy_enable_set(ds, true);
984 ds->ops->setup(ds);
989 static void bcm_sf2_sw_get_wol(struct dsa_switch *ds, int port,
992 struct net_device *p = dsa_port_to_master(dsa_to_port(ds, port));
993 struct bcm_sf2_priv *priv = bcm_sf2_to_priv(ds);
1013 static int bcm_sf2_sw_set_wol(struct dsa_switch *ds, int port,
1016 struct net_device *p = dsa_port_to_master(dsa_to_port(ds, port));
1017 struct bcm_sf2_priv *priv = bcm_sf2_to_priv(ds);
1018 s8 cpu_port = dsa_to_port(ds, port)->cpu_dp->index;
1043 static int bcm_sf2_sw_setup(struct dsa_switch *ds)
1045 struct bcm_sf2_priv *priv = bcm_sf2_to_priv(ds);
1051 if (dsa_is_user_port(ds, port))
1052 bcm_sf2_port_setup(ds, port, NULL);
1053 else if (dsa_is_cpu_port(ds, port))
1054 bcm_sf2_imp_setup(ds, port);
1056 bcm_sf2_port_disable(ds, port);
1059 b53_configure_vlan(ds);
1060 bcm_sf2_enable_acb(ds);
1062 return b53_setup_devlink_resources(ds);
1065 static void bcm_sf2_sw_teardown(struct dsa_switch *ds)
1067 dsa_devlink_resources_unregister(ds);
1169 static void bcm_sf2_sw_get_strings(struct dsa_switch *ds, int port,
1172 int cnt = b53_get_sset_count(ds, port, stringset);
1174 b53_get_strings(ds, port, stringset, data);
1175 bcm_sf2_cfp_get_strings(ds, port, stringset,
1179 static void bcm_sf2_sw_get_ethtool_stats(struct dsa_switch *ds, int port,
1182 int cnt = b53_get_sset_count(ds, port, ETH_SS_STATS);
1184 b53_get_ethtool_stats(ds, port, data);
1185 bcm_sf2_cfp_get_ethtool_stats(ds, port, data + cnt);
1188 static int bcm_sf2_sw_get_sset_count(struct dsa_switch *ds, int port,
1191 int cnt = b53_get_sset_count(ds, port, sset);
1196 cnt += bcm_sf2_cfp_get_sset_count(ds, port, sset);
1354 struct dsa_switch *ds;
1402 ds = dev->ds;
1403 ds->ops = &bcm_sf2_ops;
1406 ds->num_tx_queues = SF2_NUM_EGRESS_QUEUES;
1467 bcm_sf2_gphy_enable_set(priv->dev->ds, true);
1469 ret = bcm_sf2_mdio_register(ds);
1475 bcm_sf2_gphy_enable_set(priv->dev->ds, false);
1487 "switch_0", ds);
1494 "switch_1", ds);
1556 dsa_unregister_switch(priv->dev->ds);
1557 bcm_sf2_cfp_exit(priv->dev->ds);
1581 bcm_sf2_gphy_enable_set(priv->dev->ds, true);
1583 dsa_switch_shutdown(priv->dev->ds);
1593 return dsa_switch_suspend(priv->dev->ds);
1600 return dsa_switch_resume(priv->dev->ds);