mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2026-04-30 21:40:37 -04:00
Merge branch 'net-ethernet-ti-am65-cpsw-nuss-support-stacked-switches'
Alexander Sverdlin says:
====================
net: ethernet: ti: am65-cpsw-nuss: support stacked switches
Currently an external Ethernet switch connected to a am65-cpsw-nuss CPU
port will not be probed successfully because of_find_net_device_by_node()
will not be able to find the netdev of the CPU port.
It's necessary to populate of_node of the struct device for the
am65-cpsw-nuss ports. DT nodes of the ports are already stored in per-port
private data, but because of some legacy reasons the naming ("phy_node")
was misleading.
====================
Link: https://lore.kernel.org/r/20240528075954.3608118-1-alexander.sverdlin@siemens.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
This commit is contained in:
@@ -896,7 +896,7 @@ static int am65_cpsw_nuss_ndo_slave_open(struct net_device *ndev)
|
||||
/* mac_sl should be configured via phy-link interface */
|
||||
am65_cpsw_sl_ctl_reset(port);
|
||||
|
||||
ret = phylink_of_phy_connect(port->slave.phylink, port->slave.phy_node, 0);
|
||||
ret = phylink_of_phy_connect(port->slave.phylink, port->slave.port_np, 0);
|
||||
if (ret)
|
||||
goto error_cleanup;
|
||||
|
||||
@@ -2611,7 +2611,7 @@ static int am65_cpsw_nuss_init_slave_ports(struct am65_cpsw_common *common)
|
||||
of_property_read_bool(port_np, "ti,mac-only");
|
||||
|
||||
/* get phy/link info */
|
||||
port->slave.phy_node = port_np;
|
||||
port->slave.port_np = port_np;
|
||||
ret = of_get_phy_mode(port_np, &port->slave.phy_if);
|
||||
if (ret) {
|
||||
dev_err(dev, "%pOF read phy-mode err %d\n",
|
||||
@@ -2703,6 +2703,7 @@ am65_cpsw_nuss_init_port_ndev(struct am65_cpsw_common *common, u32 port_idx)
|
||||
mutex_init(&ndev_priv->mm_lock);
|
||||
port->qos.link_speed = SPEED_UNKNOWN;
|
||||
SET_NETDEV_DEV(port->ndev, dev);
|
||||
port->ndev->dev.of_node = port->slave.port_np;
|
||||
|
||||
eth_hw_addr_set(port->ndev, port->slave.mac_addr);
|
||||
|
||||
@@ -2760,7 +2761,7 @@ am65_cpsw_nuss_init_port_ndev(struct am65_cpsw_common *common, u32 port_idx)
|
||||
}
|
||||
|
||||
phylink = phylink_create(&port->slave.phylink_config,
|
||||
of_node_to_fwnode(port->slave.phy_node),
|
||||
of_node_to_fwnode(port->slave.port_np),
|
||||
port->slave.phy_if,
|
||||
&am65_cpsw_phylink_mac_ops);
|
||||
if (IS_ERR(phylink))
|
||||
|
||||
@@ -30,7 +30,7 @@ struct am65_cpts;
|
||||
struct am65_cpsw_slave_data {
|
||||
bool mac_only;
|
||||
struct cpsw_sl *mac_sl;
|
||||
struct device_node *phy_node;
|
||||
struct device_node *port_np;
|
||||
phy_interface_t phy_if;
|
||||
struct phy *ifphy;
|
||||
struct phy *serdes_phy;
|
||||
|
||||
Reference in New Issue
Block a user