From b3faefcc322149b81e47adf161d3472e95116552 Mon Sep 17 00:00:00 2001 From: Jonas Jelonek Date: Mon, 25 May 2026 10:26:49 +0000 Subject: [PATCH] realtek: pcs: store SerDes fwnode instead of device_node Switch rtpcs_serdes from struct device_node * to struct fwnode_handle * in preparation for fwnode_pcs_add_provider, which keys providers by fwnode. Storing the fwnode directly avoids of_fwnode_handle() wrappers at every API boundary. The conversion is mechanical: of_node_get/put become fwnode_handle_get/ put (same refcount on OF-backed fwnodes), polarity helpers drop their of_fwnode_handle() wrapping, and the link counter compares fwnodes directly via of_fwnode_handle(arg_np). No behavior change. Link: https://github.com/openwrt/openwrt/pull/23539 Signed-off-by: Jonas Jelonek --- .../files-6.18/drivers/net/pcs/pcs-rtl-otto.c | 20 +++++++++---------- 1 file changed, 9 insertions(+), 11 deletions(-) diff --git a/target/linux/realtek/files-6.18/drivers/net/pcs/pcs-rtl-otto.c b/target/linux/realtek/files-6.18/drivers/net/pcs/pcs-rtl-otto.c index 7c70a0c0864..6833d1d372c 100644 --- a/target/linux/realtek/files-6.18/drivers/net/pcs/pcs-rtl-otto.c +++ b/target/linux/realtek/files-6.18/drivers/net/pcs/pcs-rtl-otto.c @@ -212,7 +212,7 @@ struct rtpcs_sds_regs { struct rtpcs_serdes { struct rtpcs_ctrl *ctrl; - struct device_node *of_node; + struct fwnode_handle *fwnode; const struct rtpcs_sds_ops *ops; const struct rtpcs_sds_regs *regs; enum rtpcs_sds_type type; @@ -3991,16 +3991,14 @@ static int rtpcs_sds_config_polarity(struct rtpcs_serdes *sds, phy_interface_t i unsigned int rx_pol, tx_pol; int ret; - if (!sds->of_node) + if (!sds->fwnode) return 0; - ret = phy_get_manual_rx_polarity(of_fwnode_handle(sds->of_node), phy_modes(if_mode), - &rx_pol); + ret = phy_get_manual_rx_polarity(sds->fwnode, phy_modes(if_mode), &rx_pol); if (ret < 0) return ret; - ret = phy_get_manual_tx_polarity(of_fwnode_handle(sds->of_node), phy_modes(if_mode), - &tx_pol); + ret = phy_get_manual_tx_polarity(sds->fwnode, phy_modes(if_mode), &tx_pol); if (ret < 0) return ret; @@ -4227,11 +4225,11 @@ static struct mii_bus *rtpcs_probe_serdes_bus(struct rtpcs_ctrl *ctrl) return bus; } -static void rtpcs_sds_put_of_node(void *data) +static void rtpcs_sds_put_fwnode(void *data) { struct rtpcs_serdes *sds = data; - of_node_put(sds->of_node); + fwnode_handle_put(sds->fwnode); } static void rtpcs_count_links(struct rtpcs_ctrl *ctrl) @@ -4252,7 +4250,7 @@ static void rtpcs_count_links(struct rtpcs_ctrl *ctrl) for (int s = 0; s < ctrl->cfg->serdes_count; s++) { struct rtpcs_serdes *sds = &ctrl->serdes[s]; - if (arg_np != sds->of_node) + if (of_fwnode_handle(arg_np) != sds->fwnode) continue; if (sds->num_of_links >= RTPCS_MAX_LINKS_PER_SDS) { @@ -4317,8 +4315,8 @@ static int rtpcs_probe(struct platform_device *pdev) return -EINVAL; sds = &ctrl->serdes[sds_id]; - sds->of_node = of_node_get(child); - ret = devm_add_action_or_reset(dev, rtpcs_sds_put_of_node, sds); + sds->fwnode = fwnode_handle_get(of_fwnode_handle(child)); + ret = devm_add_action_or_reset(dev, rtpcs_sds_put_fwnode, sds); if (ret) return ret; } -- 2.47.3