Lines Matching refs:slave

356 static inline u32 slave_read(struct cpsw_slave *slave, u32 offset)  in slave_read()  argument
358 return __raw_readl(slave->regs + offset); in slave_read()
361 static inline void slave_write(struct cpsw_slave *slave, u32 val, u32 offset) in slave_write() argument
363 __raw_writel(val, slave->regs + offset); in slave_write()
494 struct cpsw_slave *slave; \
500 slave = (priv)->slaves; \
502 (func)(slave++, ##arg); \
529 struct cpsw_slave *slave = priv->slaves + \
532 slave->slave_num); \
535 ALE_VLAN, slave->port_vlan, 0); \
711 struct cpsw_slave *slave = priv->slaves; in cpsw_rx_handler() local
716 for (n = priv->data.slaves; n; n--, slave++) in cpsw_rx_handler()
717 if (netif_running(slave->ndev)) in cpsw_rx_handler()
847 static void cpsw_set_slave_mac(struct cpsw_slave *slave, in cpsw_set_slave_mac() argument
850 slave_write(slave, mac_hi(priv->mac_addr), SA_HI); in cpsw_set_slave_mac()
851 slave_write(slave, mac_lo(priv->mac_addr), SA_LO); in cpsw_set_slave_mac()
854 static void _cpsw_adjust_link(struct cpsw_slave *slave, in _cpsw_adjust_link() argument
857 struct phy_device *phy = slave->phy; in _cpsw_adjust_link()
864 slave_port = cpsw_get_slave_port(priv, slave->slave_num); in _cpsw_adjust_link()
898 if (mac_control != slave->mac_control) { in _cpsw_adjust_link()
900 __raw_writel(mac_control, &slave->sliver->mac_control); in _cpsw_adjust_link()
903 slave->mac_control = mac_control; in _cpsw_adjust_link()
1092 struct cpsw_priv *priv, struct cpsw_slave *slave, in cpsw_add_dual_emac_def_ale_entries() argument
1098 slave_write(slave, slave->port_vlan, CPSW1_PORT_VLAN); in cpsw_add_dual_emac_def_ale_entries()
1100 slave_write(slave, slave->port_vlan, CPSW2_PORT_VLAN); in cpsw_add_dual_emac_def_ale_entries()
1101 cpsw_ale_add_vlan(priv->ale, slave->port_vlan, port_mask, in cpsw_add_dual_emac_def_ale_entries()
1104 port_mask, ALE_VLAN, slave->port_vlan, 0); in cpsw_add_dual_emac_def_ale_entries()
1106 priv->host_port, ALE_VLAN | ALE_SECURE, slave->port_vlan); in cpsw_add_dual_emac_def_ale_entries()
1109 static void soft_reset_slave(struct cpsw_slave *slave) in soft_reset_slave() argument
1113 snprintf(name, sizeof(name), "slave-%d", slave->slave_num); in soft_reset_slave()
1114 soft_reset(name, &slave->sliver->soft_reset); in soft_reset_slave()
1117 static void cpsw_slave_open(struct cpsw_slave *slave, struct cpsw_priv *priv) in cpsw_slave_open() argument
1121 soft_reset_slave(slave); in cpsw_slave_open()
1124 __raw_writel(RX_PRIORITY_MAPPING, &slave->sliver->rx_pri_map); in cpsw_slave_open()
1128 slave_write(slave, TX_PRIORITY_MAPPING, CPSW1_TX_PRI_MAP); in cpsw_slave_open()
1133 slave_write(slave, TX_PRIORITY_MAPPING, CPSW2_TX_PRI_MAP); in cpsw_slave_open()
1138 __raw_writel(priv->rx_packet_max, &slave->sliver->rx_maxlen); in cpsw_slave_open()
1139 cpsw_set_slave_mac(slave, priv); in cpsw_slave_open()
1141 slave->mac_control = 0; /* no link yet */ in cpsw_slave_open()
1143 slave_port = cpsw_get_slave_port(priv, slave->slave_num); in cpsw_slave_open()
1146 cpsw_add_dual_emac_def_ale_entries(priv, slave, slave_port); in cpsw_slave_open()
1152 slave->phy = of_phy_connect(priv->ndev, priv->phy_node, in cpsw_slave_open()
1153 &cpsw_adjust_link, 0, slave->data->phy_if); in cpsw_slave_open()
1155 slave->phy = phy_connect(priv->ndev, slave->data->phy_id, in cpsw_slave_open()
1156 &cpsw_adjust_link, slave->data->phy_if); in cpsw_slave_open()
1157 if (IS_ERR(slave->phy)) { in cpsw_slave_open()
1159 slave->data->phy_id, slave->slave_num); in cpsw_slave_open()
1160 slave->phy = NULL; in cpsw_slave_open()
1163 slave->phy->phy_id); in cpsw_slave_open()
1164 phy_start(slave->phy); in cpsw_slave_open()
1167 cpsw_phy_sel(&priv->pdev->dev, slave->phy->interface, in cpsw_slave_open()
1168 slave->slave_num); in cpsw_slave_open()
1233 static void cpsw_slave_stop(struct cpsw_slave *slave, struct cpsw_priv *priv) in cpsw_slave_stop() argument
1237 slave_port = cpsw_get_slave_port(priv, slave->slave_num); in cpsw_slave_stop()
1239 if (!slave->phy) in cpsw_slave_stop()
1241 phy_stop(slave->phy); in cpsw_slave_stop()
1242 phy_disconnect(slave->phy); in cpsw_slave_stop()
1243 slave->phy = NULL; in cpsw_slave_stop()
1429 struct cpsw_slave *slave = &priv->slaves[priv->data.active_slave]; in cpsw_hwtstamp_v1() local
1433 slave_write(slave, 0, CPSW1_TS_CTL); in cpsw_hwtstamp_v1()
1446 slave_write(slave, ts_en, CPSW1_TS_CTL); in cpsw_hwtstamp_v1()
1447 slave_write(slave, seq_id, CPSW1_TS_SEQ_LTYPE); in cpsw_hwtstamp_v1()
1452 struct cpsw_slave *slave; in cpsw_hwtstamp_v2() local
1456 slave = &priv->slaves[priv->emac_port]; in cpsw_hwtstamp_v2()
1458 slave = &priv->slaves[priv->data.active_slave]; in cpsw_hwtstamp_v2()
1460 ctrl = slave_read(slave, CPSW2_CONTROL); in cpsw_hwtstamp_v2()
1485 slave_write(slave, mtype, CPSW2_TS_SEQ_MTYPE); in cpsw_hwtstamp_v2()
1486 slave_write(slave, ctrl, CPSW2_CONTROL); in cpsw_hwtstamp_v2()
1930 static void cpsw_slave_init(struct cpsw_slave *slave, struct cpsw_priv *priv, in cpsw_slave_init() argument
1934 int slave_num = slave->slave_num; in cpsw_slave_init()
1937 slave->data = data; in cpsw_slave_init()
1938 slave->regs = regs + slave_reg_ofs; in cpsw_slave_init()
1939 slave->sliver = regs + sliver_reg_ofs; in cpsw_slave_init()
1940 slave->port_vlan = data->dual_emac_res_vlan; in cpsw_slave_init()
2376 struct cpsw_slave *slave = &priv->slaves[i]; in cpsw_probe() local
2377 cpsw_slave_init(slave, priv, slave_offset, sliver_offset); in cpsw_probe()