mirror of
https://github.com/openwrt/openwrt.git
synced 2025-02-16 07:30:31 +00:00
Add support for the Qualcomm IPQ50xx in the QCA NSS dataplane driver. The QCA implementation uses depracated DMA api calls and a downstream SCM call, so convert to proper Linux DMA and SCM api calls. In addition, add fixed-link support to support SGMII which is used to connect the internal IPQ50xx switch to an external switch (ex. QCA8337) Co-developed-by: Ziyang Huang <hzyitc@outlook.com> Signed-off-by: Ziyang Huang <hzyitc@outlook.com> Signed-off-by: George Moussalem <george.moussalem@outlook.com> Link: https://github.com/openwrt/openwrt/pull/17182 Signed-off-by: Robert Marko <robimarko@gmail.com>
50 lines
1.6 KiB
Diff
50 lines
1.6 KiB
Diff
From 309a1a330ccaa103a7648e944d97a0032116b338 Mon Sep 17 00:00:00 2001
|
|
From: Ziyang Huang <hzyitc@outlook.com>
|
|
Date: Mon, 22 Apr 2024 21:50:39 +0800
|
|
Subject: [PATCH] nss_dp_main: support fixed-link
|
|
|
|
Add support for "fixed link" to support ethernet MACs which are not
|
|
connected to an MDIO managed PHY. For example, IPQ5018 has two internal
|
|
MACs, one connected to a GE PHY and the other connected to a Uniphy to
|
|
support connections to an external switch over a fixed link. As such,
|
|
check for a fixed link in absence of a phy-handle and return an error
|
|
when no phy-handle and fixed link is found.
|
|
|
|
Signed-off-by: Ziyang Huang <hzyitc@outlook.com>
|
|
Signed-off-by: George Moussalem <george.moussalem@outlook.com>
|
|
---
|
|
nss_dp_main.c | 15 ++++++++++++---
|
|
1 file changed, 12 insertions(+), 3 deletions(-)
|
|
|
|
diff --git a/nss_dp_main.c b/nss_dp_main.c
|
|
index 9a09edd5..204063bf 100644
|
|
--- a/nss_dp_main.c
|
|
+++ b/nss_dp_main.c
|
|
@@ -619,11 +619,20 @@ static int32_t nss_dp_of_get_pdata(struct device_node *np,
|
|
}
|
|
|
|
dp_priv->phy_node = of_parse_phandle(np, "phy-handle", 0);
|
|
- if (!dp_priv->phy_node) {
|
|
- pr_err("%s: error parsing phy-handle\n", np->name);
|
|
- return -EFAULT;
|
|
+ if(!dp_priv->phy_node) {
|
|
+ if(of_phy_is_fixed_link(np)) {
|
|
+ int ret = of_phy_register_fixed_link(np);
|
|
+ if(ret < 0) {
|
|
+ pr_err("%s: fail to register fixed-link: %d\n", np->name, ret);
|
|
+ return -EFAULT;
|
|
+ }
|
|
+ }
|
|
+ dp_priv->phy_node = of_node_get(np);
|
|
}
|
|
|
|
+ if(!dp_priv->phy_node)
|
|
+ pr_err("%s: no phy-handle or fixed-link found\n", np->name);
|
|
+
|
|
if (of_property_read_u32(np, "qcom,mactype", &hal_pdata->mactype)) {
|
|
pr_err("%s: error reading mactype\n", np->name);
|
|
return -EFAULT;
|
|
--
|
|
2.40.1
|
|
|