[<prev] [next>] [<thread-prev] [day] [month] [year] [list]
Message-ID: <20250827215042.79843-3-rosenp@gmail.com>
Date: Wed, 27 Aug 2025 14:50:42 -0700
From: Rosen Penev <rosenp@...il.com>
To: netdev@...r.kernel.org
Cc: Horatiu Vultur <horatiu.vultur@...rochip.com>,
UNGLinuxDriver@...rochip.com (maintainer:MICROCHIP LAN966X ETHERNET DRIVER),
Andrew Lunn <andrew+netdev@...n.ch>,
"David S. Miller" <davem@...emloft.net>,
Eric Dumazet <edumazet@...gle.com>,
Jakub Kicinski <kuba@...nel.org>,
Paolo Abeni <pabeni@...hat.com>,
Russell King <linux@...linux.org.uk> (maintainer:SFF/SFP/SFP+ MODULE SUPPORT:Keyword:phylink\.h|struct\s+phylink|\.phylink|>,
linux-kernel@...r.kernel.org (open list)
Subject: [PATCH net-next 2/2] net: lan966x: convert fwnode to of
This is a purely OF driver. There's no need for fwnode to handle any of
this, with the exception being phylik_create. Use of_fwnode_handle for
that.
Signed-off-by: Rosen Penev <rosenp@...il.com>
---
.../ethernet/microchip/lan966x/lan966x_main.c | 32 ++++++++++---------
.../ethernet/microchip/lan966x/lan966x_main.h | 2 +-
2 files changed, 18 insertions(+), 16 deletions(-)
diff --git a/drivers/net/ethernet/microchip/lan966x/lan966x_main.c b/drivers/net/ethernet/microchip/lan966x/lan966x_main.c
index 8bf28915c030..d778806dcfc6 100644
--- a/drivers/net/ethernet/microchip/lan966x/lan966x_main.c
+++ b/drivers/net/ethernet/microchip/lan966x/lan966x_main.c
@@ -183,7 +183,7 @@ static int lan966x_port_open(struct net_device *dev)
ANA_PORT_CFG_PORTID_VAL,
lan966x, ANA_PORT_CFG(port->chip_port));
- err = phylink_fwnode_phy_connect(port->phylink, port->fwnode, 0);
+ err = phylink_of_phy_connect(port->phylink, port->dnode, 0);
if (err) {
netdev_err(dev, "Could not attach to PHY\n");
return err;
@@ -767,8 +767,8 @@ static void lan966x_cleanup_ports(struct lan966x *lan966x)
port->phylink = NULL;
}
- if (port->fwnode)
- fwnode_handle_put(port->fwnode);
+ if (port->dnode)
+ of_node_put(port->dnode);
}
disable_irq(lan966x->xtr_irq);
@@ -1081,7 +1081,7 @@ static int lan966x_reset_switch(struct lan966x *lan966x)
static int lan966x_probe(struct platform_device *pdev)
{
- struct fwnode_handle *ports, *portnp;
+ struct device_node *ports, *portnp;
struct lan966x *lan966x;
int err;
@@ -1179,7 +1179,7 @@ static int lan966x_probe(struct platform_device *pdev)
}
}
- ports = device_get_named_child_node(&pdev->dev, "ethernet-ports");
+ ports = of_get_child_by_name(pdev->dev.of_node, "ethernet-ports");
if (!ports)
return dev_err_probe(&pdev->dev, -ENODEV,
"no ethernet-ports child found\n");
@@ -1191,25 +1191,27 @@ static int lan966x_probe(struct platform_device *pdev)
lan966x_stats_init(lan966x);
/* go over the child nodes */
- fwnode_for_each_available_child_node(ports, portnp) {
+ for_each_available_child_of_node(ports, portnp) {
phy_interface_t phy_mode;
struct phy *serdes;
u32 p;
- if (fwnode_property_read_u32(portnp, "reg", &p))
+ if (of_property_read_u32(portnp, "reg", &p))
continue;
- phy_mode = fwnode_get_phy_mode(portnp);
- err = lan966x_probe_port(lan966x, p, phy_mode, portnp);
+ err = of_get_phy_mode(portnp, &phy_mode);
+ if (err)
+ goto cleanup_ports;
+
+ err = lan966x_probe_port(lan966x, p, phy_mode, of_fwnode_handle(portnp));
if (err)
goto cleanup_ports;
/* Read needed configuration */
lan966x->ports[p]->config.portmode = phy_mode;
- lan966x->ports[p]->fwnode = fwnode_handle_get(portnp);
+ lan966x->ports[p]->dnode = of_node_get(portnp);
- serdes = devm_of_phy_optional_get(lan966x->dev,
- to_of_node(portnp), NULL);
+ serdes = devm_of_phy_optional_get(lan966x->dev, portnp, NULL);
if (IS_ERR(serdes)) {
err = PTR_ERR(serdes);
goto cleanup_ports;
@@ -1222,7 +1224,7 @@ static int lan966x_probe(struct platform_device *pdev)
goto cleanup_ports;
}
- fwnode_handle_put(ports);
+ of_node_put(ports);
lan966x_mdb_init(lan966x);
err = lan966x_fdb_init(lan966x);
@@ -1255,8 +1257,8 @@ static int lan966x_probe(struct platform_device *pdev)
lan966x_fdb_deinit(lan966x);
cleanup_ports:
- fwnode_handle_put(ports);
- fwnode_handle_put(portnp);
+ of_node_put(ports);
+ of_node_put(portnp);
lan966x_cleanup_ports(lan966x);
diff --git a/drivers/net/ethernet/microchip/lan966x/lan966x_main.h b/drivers/net/ethernet/microchip/lan966x/lan966x_main.h
index 4f75f0688369..bafb8f5ee64d 100644
--- a/drivers/net/ethernet/microchip/lan966x/lan966x_main.h
+++ b/drivers/net/ethernet/microchip/lan966x/lan966x_main.h
@@ -407,7 +407,7 @@ struct lan966x_port {
struct lan966x_port_config config;
struct phylink *phylink;
struct phy *serdes;
- struct fwnode_handle *fwnode;
+ struct device_node *dnode;
u8 ptp_tx_cmd;
bool ptp_rx_cmd;
--
2.51.0
Powered by blists - more mailing lists