Lines Matching +refs:port +refs:id +refs:attrs

150 static void am65_cpsw_sl_ctl_reset(struct am65_cpsw_port *port)  in am65_cpsw_sl_ctl_reset()  argument
152 cpsw_sl_reset(port->slave.mac_sl, 100); in am65_cpsw_sl_ctl_reset()
155 port->port_base + AM65_CPSW_PORT_REG_RX_MAXLEN); in am65_cpsw_sl_ctl_reset()
174 struct am65_cpsw_port *port = am65_ndev_to_port(ndev); in am65_cpsw_nuss_ndo_slave_add_vid() local
188 port_mask = BIT(port->port_id) | ALE_PORT_HOST; in am65_cpsw_nuss_ndo_slave_add_vid()
203 struct am65_cpsw_port *port = am65_ndev_to_port(ndev); in am65_cpsw_nuss_ndo_slave_kill_vid() local
218 BIT(port->port_id) | ALE_PORT_HOST); in am65_cpsw_nuss_ndo_slave_kill_vid()
224 static void am65_cpsw_slave_set_promisc(struct am65_cpsw_port *port, in am65_cpsw_slave_set_promisc() argument
227 struct am65_cpsw_common *common = port->common; in am65_cpsw_slave_set_promisc()
236 cpsw_ale_control_set(common->ale, port->port_id, in am65_cpsw_slave_set_promisc()
241 cpsw_ale_control_set(common->ale, port->port_id, in am65_cpsw_slave_set_promisc()
250 struct am65_cpsw_port *port = am65_ndev_to_port(ndev); in am65_cpsw_nuss_ndo_slave_set_rx_mode() local
255 am65_cpsw_slave_set_promisc(port, promisc); in am65_cpsw_nuss_ndo_slave_set_rx_mode()
262 ndev->flags & IFF_ALLMULTI, port->port_id); in am65_cpsw_nuss_ndo_slave_set_rx_mode()
367 static void am65_cpsw_init_port_switch_ale(struct am65_cpsw_port *port);
368 static void am65_cpsw_init_port_emac_ale(struct am65_cpsw_port *port);
398 struct am65_cpsw_port *port = &common->ports[port_idx]; in am65_cpsw_nuss_common_open() local
400 if (!port->disabled) in am65_cpsw_nuss_common_open()
401 val |= BIT(port->port_id); in am65_cpsw_nuss_common_open()
539 struct am65_cpsw_port *port = am65_ndev_to_port(ndev); in am65_cpsw_nuss_ndo_slave_stop() local
542 phylink_stop(port->slave.phylink); in am65_cpsw_nuss_ndo_slave_stop()
546 phylink_disconnect_phy(port->slave.phylink); in am65_cpsw_nuss_ndo_slave_stop()
559 struct am65_cpsw_port *port = arg; in cpsw_restore_vlans() local
564 return am65_cpsw_nuss_ndo_slave_add_vid(port->ndev, 0, vid); in cpsw_restore_vlans()
570 struct am65_cpsw_port *port = am65_ndev_to_port(ndev); in am65_cpsw_nuss_ndo_slave_open() local
579 cpsw_sl_ctl_set(port->slave.mac_sl, CPSW_SL_CTL_CMD_IDLE); in am65_cpsw_nuss_ndo_slave_open()
580 cpsw_sl_wait_for_idle(port->slave.mac_sl, 100); in am65_cpsw_nuss_ndo_slave_open()
581 cpsw_sl_ctl_reset(port->slave.mac_sl); in am65_cpsw_nuss_ndo_slave_open()
584 cpsw_sl_reg_write(port->slave.mac_sl, CPSW_SL_SOFT_RESET, 1); in am65_cpsw_nuss_ndo_slave_open()
586 reg = cpsw_sl_reg_read(port->slave.mac_sl, CPSW_SL_SOFT_RESET); in am65_cpsw_nuss_ndo_slave_open()
619 am65_cpsw_port_set_sl_mac(port, ndev->dev_addr); in am65_cpsw_nuss_ndo_slave_open()
622 am65_cpsw_init_port_emac_ale(port); in am65_cpsw_nuss_ndo_slave_open()
624 am65_cpsw_init_port_switch_ale(port); in am65_cpsw_nuss_ndo_slave_open()
627 am65_cpsw_sl_ctl_reset(port); in am65_cpsw_nuss_ndo_slave_open()
629 ret = phylink_of_phy_connect(port->slave.phylink, port->slave.phy_node, 0); in am65_cpsw_nuss_ndo_slave_open()
634 vlan_for_each(ndev, cpsw_restore_vlans, port); in am65_cpsw_nuss_ndo_slave_open()
636 phylink_start(port->slave.phylink); in am65_cpsw_nuss_ndo_slave_open()
726 struct am65_cpsw_port *port; in am65_cpsw_nuss_rx_packets() local
757 port = am65_common_get_port(common, port_id); in am65_cpsw_nuss_rx_packets()
758 ndev = port->ndev; in am65_cpsw_nuss_rx_packets()
763 if (port->rx_ts_enabled) in am65_cpsw_nuss_rx_packets()
1039 num_tx = am65_cpsw_nuss_tx_compl_packets_2g(tx_chn->common, tx_chn->id, budget); in am65_cpsw_nuss_tx_poll()
1041 num_tx = am65_cpsw_nuss_tx_compl_packets(tx_chn->common, tx_chn->id, budget); in am65_cpsw_nuss_tx_poll()
1078 struct am65_cpsw_port *port = am65_ndev_to_port(ndev); in am65_cpsw_nuss_ndo_slave_xmit() local
1092 if (port->tx_ts_enabled) in am65_cpsw_nuss_ndo_slave_xmit()
1122 cppi5_desc_set_tags_ids(&first_desc->hdr, 0, port->port_id); in am65_cpsw_nuss_ndo_slave_xmit()
1241 struct am65_cpsw_port *port = am65_ndev_to_port(ndev); in am65_cpsw_nuss_ndo_slave_set_mac_address() local
1258 am65_cpsw_port_set_sl_mac(port, addr); in am65_cpsw_nuss_ndo_slave_set_mac_address()
1270 struct am65_cpsw_port *port = am65_ndev_to_port(ndev); in am65_cpsw_nuss_hwtstamp_set() local
1291 port->rx_ts_enabled = false; in am65_cpsw_nuss_hwtstamp_set()
1308 port->rx_ts_enabled = true; in am65_cpsw_nuss_hwtstamp_set()
1315 port->tx_ts_enabled = (cfg.tx_type == HWTSTAMP_TX_ON); in am65_cpsw_nuss_hwtstamp_set()
1336 if (port->tx_ts_enabled) in am65_cpsw_nuss_hwtstamp_set()
1340 writel(seq_id, port->port_base + AM65_CPSW_PORTN_REG_TS_SEQ_LTYPE_REG); in am65_cpsw_nuss_hwtstamp_set()
1341 writel(ts_vlan_ltype, port->port_base + in am65_cpsw_nuss_hwtstamp_set()
1343 writel(ts_ctrl_ltype2, port->port_base + in am65_cpsw_nuss_hwtstamp_set()
1345 writel(ts_ctrl, port->port_base + AM65_CPSW_PORTN_REG_TS_CTL); in am65_cpsw_nuss_hwtstamp_set()
1348 am65_cpts_rx_enable(common->cpts, port->rx_ts_enabled); in am65_cpsw_nuss_hwtstamp_set()
1356 struct am65_cpsw_port *port = am65_ndev_to_port(ndev); in am65_cpsw_nuss_hwtstamp_get() local
1363 cfg.tx_type = port->tx_ts_enabled ? in am65_cpsw_nuss_hwtstamp_get()
1365 cfg.rx_filter = port->rx_ts_enabled ? in am65_cpsw_nuss_hwtstamp_get()
1374 struct am65_cpsw_port *port = am65_ndev_to_port(ndev); in am65_cpsw_nuss_ndo_slave_ioctl() local
1386 return phylink_mii_ioctl(port->slave.phylink, req, cmd); in am65_cpsw_nuss_ndo_slave_ioctl()
1464 struct am65_cpsw_port *port; in am65_cpsw_disable_serdes_phy() local
1469 port = &common->ports[i]; in am65_cpsw_disable_serdes_phy()
1470 phy = port->slave.serdes_phy; in am65_cpsw_disable_serdes_phy()
1477 struct am65_cpsw_port *port) in am65_cpsw_init_serdes_phy() argument
1488 port->slave.serdes_phy = phy; in am65_cpsw_init_serdes_phy()
1506 struct am65_cpsw_port *port = container_of(slave, struct am65_cpsw_port, slave); in am65_cpsw_nuss_mac_config() local
1507 struct am65_cpsw_common *common = port->common; in am65_cpsw_nuss_mac_config()
1512 port->sgmii_base + AM65_CPSW_SGMII_MR_ADV_ABILITY_REG); in am65_cpsw_nuss_mac_config()
1513 cpsw_sl_ctl_set(port->slave.mac_sl, CPSW_SL_CTL_EXT_EN); in am65_cpsw_nuss_mac_config()
1515 cpsw_sl_ctl_clr(port->slave.mac_sl, CPSW_SL_CTL_EXT_EN); in am65_cpsw_nuss_mac_config()
1519 cpsw_sl_ctl_set(port->slave.mac_sl, in am65_cpsw_nuss_mac_config()
1522 cpsw_sl_ctl_clr(port->slave.mac_sl, in am65_cpsw_nuss_mac_config()
1527 port->sgmii_base + AM65_CPSW_SGMII_CONTROL_REG); in am65_cpsw_nuss_mac_config()
1536 struct am65_cpsw_port *port = container_of(slave, struct am65_cpsw_port, slave); in am65_cpsw_nuss_mac_link_down() local
1537 struct am65_cpsw_common *common = port->common; in am65_cpsw_nuss_mac_link_down()
1538 struct net_device *ndev = port->ndev; in am65_cpsw_nuss_mac_link_down()
1543 cpsw_ale_control_set(common->ale, port->port_id, ALE_PORT_STATE, ALE_PORT_STATE_DISABLE); in am65_cpsw_nuss_mac_link_down()
1545 cpsw_sl_ctl_set(port->slave.mac_sl, CPSW_SL_CTL_CMD_IDLE); in am65_cpsw_nuss_mac_link_down()
1547 tmo = cpsw_sl_wait_for_idle(port->slave.mac_sl, 100); in am65_cpsw_nuss_mac_link_down()
1549 cpsw_sl_reg_read(port->slave.mac_sl, CPSW_SL_MACSTATUS), tmo); in am65_cpsw_nuss_mac_link_down()
1558 cpsw_sl_ctl_clr(port->slave.mac_sl, mac_control); in am65_cpsw_nuss_mac_link_down()
1570 struct am65_cpsw_port *port = container_of(slave, struct am65_cpsw_port, slave); in am65_cpsw_nuss_mac_link_up() local
1571 struct am65_cpsw_common *common = port->common; in am65_cpsw_nuss_mac_link_up()
1573 struct net_device *ndev = port->ndev; in am65_cpsw_nuss_mac_link_up()
1576 cpsw_sl_ctl_clr(port->slave.mac_sl, CPSW_SL_CTL_CMD_IDLE); in am65_cpsw_nuss_mac_link_up()
1596 cpsw_sl_ctl_set(port->slave.mac_sl, mac_control); in am65_cpsw_nuss_mac_link_up()
1599 cpsw_ale_control_set(common->ale, port->port_id, ALE_PORT_STATE, ALE_PORT_STATE_FORWARD); in am65_cpsw_nuss_mac_link_up()
1611 static void am65_cpsw_nuss_slave_disable_unused(struct am65_cpsw_port *port) in am65_cpsw_nuss_slave_disable_unused() argument
1613 struct am65_cpsw_common *common = port->common; in am65_cpsw_nuss_slave_disable_unused()
1615 if (!port->disabled) in am65_cpsw_nuss_slave_disable_unused()
1618 cpsw_ale_control_set(common->ale, port->port_id, in am65_cpsw_nuss_slave_disable_unused()
1621 cpsw_sl_reset(port->slave.mac_sl, 100); in am65_cpsw_nuss_slave_disable_unused()
1622 cpsw_sl_ctl_reset(port->slave.mac_sl); in am65_cpsw_nuss_slave_disable_unused()
1686 tx_chn->id, tx_chn->irq, ret); in am65_cpsw_nuss_ndev_add_tx_napi()
1725 tx_chn->id = i; in am65_cpsw_nuss_init_tx_chns()
1759 dev_name(dev), tx_chn->id); in am65_cpsw_nuss_init_tx_chns()
2015 struct am65_cpsw_port *port; in am65_cpsw_nuss_init_slave_ports() local
2036 port = am65_common_get_port(common, port_id); in am65_cpsw_nuss_init_slave_ports()
2037 port->port_id = port_id; in am65_cpsw_nuss_init_slave_ports()
2038 port->common = common; in am65_cpsw_nuss_init_slave_ports()
2039 port->port_base = common->cpsw_base + AM65_CPSW_NU_PORTS_BASE + in am65_cpsw_nuss_init_slave_ports()
2042 port->sgmii_base = common->ss_base + AM65_CPSW_SGMII_BASE * (port_id); in am65_cpsw_nuss_init_slave_ports()
2043 port->stat_base = common->cpsw_base + AM65_CPSW_NU_STATS_BASE + in am65_cpsw_nuss_init_slave_ports()
2045 port->name = of_get_property(port_np, "label", NULL); in am65_cpsw_nuss_init_slave_ports()
2046 port->fetch_ram_base = in am65_cpsw_nuss_init_slave_ports()
2050 port->slave.mac_sl = cpsw_sl_get("am65", dev, port->port_base); in am65_cpsw_nuss_init_slave_ports()
2051 if (IS_ERR(port->slave.mac_sl)) { in am65_cpsw_nuss_init_slave_ports()
2052 ret = PTR_ERR(port->slave.mac_sl); in am65_cpsw_nuss_init_slave_ports()
2056 port->disabled = !of_device_is_available(port_np); in am65_cpsw_nuss_init_slave_ports()
2057 if (port->disabled) { in am65_cpsw_nuss_init_slave_ports()
2058 common->disabled_ports_mask |= BIT(port->port_id); in am65_cpsw_nuss_init_slave_ports()
2062 port->slave.ifphy = devm_of_phy_get(dev, port_np, NULL); in am65_cpsw_nuss_init_slave_ports()
2063 if (IS_ERR(port->slave.ifphy)) { in am65_cpsw_nuss_init_slave_ports()
2064 ret = PTR_ERR(port->slave.ifphy); in am65_cpsw_nuss_init_slave_ports()
2071 ret = am65_cpsw_init_serdes_phy(dev, port_np, port); in am65_cpsw_nuss_init_slave_ports()
2075 port->slave.mac_only = in am65_cpsw_nuss_init_slave_ports()
2079 port->slave.phy_node = port_np; in am65_cpsw_nuss_init_slave_ports()
2080 ret = of_get_phy_mode(port_np, &port->slave.phy_if); in am65_cpsw_nuss_init_slave_ports()
2087 ret = phy_set_mode_ext(port->slave.ifphy, PHY_MODE_ETHERNET, port->slave.phy_if); in am65_cpsw_nuss_init_slave_ports()
2091 ret = of_get_mac_address(port_np, port->slave.mac_addr); in am65_cpsw_nuss_init_slave_ports()
2094 port->port_id, in am65_cpsw_nuss_init_slave_ports()
2095 port->slave.mac_addr); in am65_cpsw_nuss_init_slave_ports()
2096 if (!is_valid_ether_addr(port->slave.mac_addr)) { in am65_cpsw_nuss_init_slave_ports()
2097 eth_random_addr(port->slave.mac_addr); in am65_cpsw_nuss_init_slave_ports()
2127 struct am65_cpsw_port *port; in am65_cpsw_nuss_phylink_cleanup() local
2131 port = &common->ports[i]; in am65_cpsw_nuss_phylink_cleanup()
2132 if (port->slave.phylink) in am65_cpsw_nuss_phylink_cleanup()
2133 phylink_destroy(port->slave.phylink); in am65_cpsw_nuss_phylink_cleanup()
2142 struct am65_cpsw_port *port; in am65_cpsw_nuss_init_port_ndev() local
2146 port = &common->ports[port_idx]; in am65_cpsw_nuss_init_port_ndev()
2148 if (port->disabled) in am65_cpsw_nuss_init_port_ndev()
2152 port->ndev = devm_alloc_etherdev_mqs(common->dev, in am65_cpsw_nuss_init_port_ndev()
2156 if (!port->ndev) { in am65_cpsw_nuss_init_port_ndev()
2158 port->port_id); in am65_cpsw_nuss_init_port_ndev()
2162 ndev_priv = netdev_priv(port->ndev); in am65_cpsw_nuss_init_port_ndev()
2163 ndev_priv->port = port; in am65_cpsw_nuss_init_port_ndev()
2165 SET_NETDEV_DEV(port->ndev, dev); in am65_cpsw_nuss_init_port_ndev()
2167 eth_hw_addr_set(port->ndev, port->slave.mac_addr); in am65_cpsw_nuss_init_port_ndev()
2169 port->ndev->min_mtu = AM65_CPSW_MIN_PACKET_SIZE; in am65_cpsw_nuss_init_port_ndev()
2170 port->ndev->max_mtu = AM65_CPSW_MAX_PACKET_SIZE; in am65_cpsw_nuss_init_port_ndev()
2171 port->ndev->hw_features = NETIF_F_SG | in am65_cpsw_nuss_init_port_ndev()
2175 port->ndev->features = port->ndev->hw_features | in am65_cpsw_nuss_init_port_ndev()
2177 port->ndev->vlan_features |= NETIF_F_SG; in am65_cpsw_nuss_init_port_ndev()
2178 port->ndev->netdev_ops = &am65_cpsw_nuss_netdev_ops; in am65_cpsw_nuss_init_port_ndev()
2179 port->ndev->ethtool_ops = &am65_cpsw_ethtool_ops_slave; in am65_cpsw_nuss_init_port_ndev()
2182 port->slave.phylink_config.dev = &port->ndev->dev; in am65_cpsw_nuss_init_port_ndev()
2183 port->slave.phylink_config.type = PHYLINK_NETDEV; in am65_cpsw_nuss_init_port_ndev()
2184 port->slave.phylink_config.mac_capabilities = MAC_SYM_PAUSE | MAC_10 | MAC_100 | in am65_cpsw_nuss_init_port_ndev()
2186 port->slave.phylink_config.mac_managed_pm = true; /* MAC does PM */ in am65_cpsw_nuss_init_port_ndev()
2188 switch (port->slave.phy_if) { in am65_cpsw_nuss_init_port_ndev()
2193 phy_interface_set_rgmii(port->slave.phylink_config.supported_interfaces); in am65_cpsw_nuss_init_port_ndev()
2198 port->slave.phylink_config.supported_interfaces); in am65_cpsw_nuss_init_port_ndev()
2204 if (common->pdata.extra_modes & BIT(port->slave.phy_if)) { in am65_cpsw_nuss_init_port_ndev()
2205 __set_bit(port->slave.phy_if, in am65_cpsw_nuss_init_port_ndev()
2206 port->slave.phylink_config.supported_interfaces); in am65_cpsw_nuss_init_port_ndev()
2218 phylink = phylink_create(&port->slave.phylink_config, in am65_cpsw_nuss_init_port_ndev()
2219 of_node_to_fwnode(port->slave.phy_node), in am65_cpsw_nuss_init_port_ndev()
2220 port->slave.phy_if, in am65_cpsw_nuss_init_port_ndev()
2225 port->slave.phylink = phylink; in am65_cpsw_nuss_init_port_ndev()
2229 port->ndev->features &= ~NETIF_F_HW_CSUM; in am65_cpsw_nuss_init_port_ndev()
2241 common->dma_ndev = port->ndev; in am65_cpsw_nuss_init_port_ndev()
2262 struct am65_cpsw_port *port; in am65_cpsw_nuss_cleanup_ndev() local
2266 port = &common->ports[i]; in am65_cpsw_nuss_cleanup_ndev()
2267 if (port->ndev && port->ndev->reg_state == NETREG_REGISTERED) in am65_cpsw_nuss_cleanup_ndev()
2268 unregister_netdev(port->ndev); in am65_cpsw_nuss_cleanup_ndev()
2283 struct am65_cpsw_port *port = am65_common_get_port(common, i); in am65_cpsw_port_offload_fwd_mark_update() local
2286 if (!port->ndev) in am65_cpsw_port_offload_fwd_mark_update()
2289 priv = am65_ndev_to_priv(port->ndev); in am65_cpsw_port_offload_fwd_mark_update()
2328 common->br_members |= BIT(priv->port->port_id); in am65_cpsw_netdevice_port_link()
2342 common->br_members &= ~BIT(priv->port->port_id); in am65_cpsw_netdevice_port_unlink()
2448 static int am65_cpsw_dl_switch_mode_get(struct devlink *dl, u32 id, in am65_cpsw_dl_switch_mode_get() argument
2454 dev_dbg(common->dev, "%s id:%u\n", __func__, id); in am65_cpsw_dl_switch_mode_get()
2456 if (id != AM65_CPSW_DL_PARAM_SWITCH_MODE) in am65_cpsw_dl_switch_mode_get()
2464 static void am65_cpsw_init_port_emac_ale(struct am65_cpsw_port *port) in am65_cpsw_init_port_emac_ale() argument
2466 struct am65_cpsw_slave_data *slave = &port->slave; in am65_cpsw_init_port_emac_ale()
2467 struct am65_cpsw_common *common = port->common; in am65_cpsw_init_port_emac_ale()
2470 writel(slave->port_vlan, port->port_base + AM65_CPSW_PORT_VLAN_REG_OFFSET); in am65_cpsw_init_port_emac_ale()
2474 cpsw_ale_control_set(common->ale, port->port_id, in am65_cpsw_init_port_emac_ale()
2477 cpsw_ale_control_set(common->ale, port->port_id, ALE_PORT_NOLEARN, 1); in am65_cpsw_init_port_emac_ale()
2479 port_mask = BIT(port->port_id) | ALE_PORT_HOST; in am65_cpsw_init_port_emac_ale()
2481 cpsw_ale_add_ucast(common->ale, port->ndev->dev_addr, in am65_cpsw_init_port_emac_ale()
2483 cpsw_ale_add_mcast(common->ale, port->ndev->broadcast, in am65_cpsw_init_port_emac_ale()
2487 static void am65_cpsw_init_port_switch_ale(struct am65_cpsw_port *port) in am65_cpsw_init_port_switch_ale() argument
2489 struct am65_cpsw_slave_data *slave = &port->slave; in am65_cpsw_init_port_switch_ale()
2490 struct am65_cpsw_common *cpsw = port->common; in am65_cpsw_init_port_switch_ale()
2493 cpsw_ale_control_set(cpsw->ale, port->port_id, in am65_cpsw_init_port_switch_ale()
2496 cpsw_ale_add_ucast(cpsw->ale, port->ndev->dev_addr, in am65_cpsw_init_port_switch_ale()
2500 port_mask = BIT(port->port_id) | ALE_PORT_HOST; in am65_cpsw_init_port_switch_ale()
2502 cpsw_ale_add_mcast(cpsw->ale, port->ndev->broadcast, in am65_cpsw_init_port_switch_ale()
2506 writel(slave->port_vlan, port->port_base + AM65_CPSW_PORT_VLAN_REG_OFFSET); in am65_cpsw_init_port_switch_ale()
2508 cpsw_ale_control_set(cpsw->ale, port->port_id, in am65_cpsw_init_port_switch_ale()
2512 static int am65_cpsw_dl_switch_mode_set(struct devlink *dl, u32 id, in am65_cpsw_dl_switch_mode_set() argument
2521 dev_dbg(cpsw->dev, "%s id:%u\n", __func__, id); in am65_cpsw_dl_switch_mode_set()
2523 if (id != AM65_CPSW_DL_PARAM_SWITCH_MODE) in am65_cpsw_dl_switch_mode_set()
2579 struct am65_cpsw_port *port; in am65_cpsw_dl_switch_mode_set() local
2584 port = am65_ndev_to_port(sl_ndev); in am65_cpsw_dl_switch_mode_set()
2589 am65_cpsw_init_port_switch_ale(port); in am65_cpsw_dl_switch_mode_set()
2599 struct am65_cpsw_port *port; in am65_cpsw_dl_switch_mode_set() local
2604 port = am65_ndev_to_port(sl_ndev); in am65_cpsw_dl_switch_mode_set()
2605 port->slave.port_vlan = 0; in am65_cpsw_dl_switch_mode_set()
2607 am65_cpsw_init_port_emac_ale(port); in am65_cpsw_dl_switch_mode_set()
2627 struct devlink_port_attrs attrs = {}; in am65_cpsw_nuss_register_devlink() local
2631 struct am65_cpsw_port *port; in am65_cpsw_nuss_register_devlink() local
2658 port = am65_common_get_port(common, i); in am65_cpsw_nuss_register_devlink()
2659 dl_port = &port->devlink_port; in am65_cpsw_nuss_register_devlink()
2661 if (port->ndev) in am65_cpsw_nuss_register_devlink()
2662 attrs.flavour = DEVLINK_PORT_FLAVOUR_PHYSICAL; in am65_cpsw_nuss_register_devlink()
2664 attrs.flavour = DEVLINK_PORT_FLAVOUR_UNUSED; in am65_cpsw_nuss_register_devlink()
2665 attrs.phys.port_number = port->port_id; in am65_cpsw_nuss_register_devlink()
2666 attrs.switch_id.id_len = sizeof(resource_size_t); in am65_cpsw_nuss_register_devlink()
2667 memcpy(attrs.switch_id.id, common->switch_id, attrs.switch_id.id_len); in am65_cpsw_nuss_register_devlink()
2668 devlink_port_attrs_set(dl_port, &attrs); in am65_cpsw_nuss_register_devlink()
2670 ret = devlink_port_register(common->devlink, dl_port, port->port_id); in am65_cpsw_nuss_register_devlink()
2673 port->port_id, ret); in am65_cpsw_nuss_register_devlink()
2682 port = am65_common_get_port(common, i); in am65_cpsw_nuss_register_devlink()
2683 dl_port = &port->devlink_port; in am65_cpsw_nuss_register_devlink()
2695 struct am65_cpsw_port *port; in am65_cpsw_unregister_devlink() local
2701 port = am65_common_get_port(common, i); in am65_cpsw_unregister_devlink()
2702 dl_port = &port->devlink_port; in am65_cpsw_unregister_devlink()
2719 struct am65_cpsw_port *port; in am65_cpsw_nuss_register_ndevs() local
2735 port = &common->ports[i]; in am65_cpsw_nuss_register_ndevs()
2737 if (!port->ndev) in am65_cpsw_nuss_register_ndevs()
2740 SET_NETDEV_DEVLINK_PORT(port->ndev, &port->devlink_port); in am65_cpsw_nuss_register_ndevs()
2742 ret = register_netdev(port->ndev); in am65_cpsw_nuss_register_ndevs()
3037 struct am65_cpsw_port *port; in am65_cpsw_nuss_suspend() local
3044 port = &common->ports[i]; in am65_cpsw_nuss_suspend()
3045 ndev = port->ndev; in am65_cpsw_nuss_suspend()
3050 port->vid_context = readl(port->port_base + AM65_CPSW_PORT_VLAN_REG_OFFSET); in am65_cpsw_nuss_suspend()
3074 struct am65_cpsw_port *port; in am65_cpsw_nuss_resume() local
3093 port = &common->ports[i]; in am65_cpsw_nuss_resume()
3094 ndev = port->ndev; in am65_cpsw_nuss_resume()
3110 writel(port->vid_context, port->port_base + AM65_CPSW_PORT_VLAN_REG_OFFSET); in am65_cpsw_nuss_resume()