|
|
@@ -0,0 +1,64 @@
|
|
|
+From 3bbf1aad312de653b894c2e60ea1b37ce912c6fe Mon Sep 17 00:00:00 2001
|
|
|
+From: Mantas Pucka <[email protected]>
|
|
|
+Date: Fri, 28 Mar 2025 14:10:22 +0200
|
|
|
+Subject: [PATCH 3/6] net: pcs: ipq-uniphy: control MISC2 register for 2.5G
|
|
|
+ support
|
|
|
+
|
|
|
+When 2500base-x mode is enabled MISC2 regsister needs to have different
|
|
|
+value than for other 1G modes.
|
|
|
+
|
|
|
+Signed-off-by: Mantas Pucka <[email protected]>
|
|
|
+---
|
|
|
+ drivers/net/pcs/pcs-qcom-ipq-uniphy.c | 16 ++++++++++++++++
|
|
|
+ 1 file changed, 16 insertions(+)
|
|
|
+
|
|
|
+--- a/drivers/net/pcs/pcs-qcom-ipq-uniphy.c
|
|
|
++++ b/drivers/net/pcs/pcs-qcom-ipq-uniphy.c
|
|
|
+@@ -20,6 +20,11 @@
|
|
|
+ #define PCS_CALIBRATION 0x1e0
|
|
|
+ #define PCS_CALIBRATION_DONE BIT(7)
|
|
|
+
|
|
|
++#define PCS_MISC2 0x218
|
|
|
++#define PCS_MISC2_MODE_MASK GENMASK(6, 5)
|
|
|
++#define PCS_MISC2_MODE_SGMII FIELD_PREP(PCS_MISC2_MODE_MASK, 0x1)
|
|
|
++#define PCS_MISC2_MODE_SGMII_PLUS FIELD_PREP(PCS_MISC2_MODE_MASK, 0x2)
|
|
|
++
|
|
|
+ #define PCS_MODE_CTRL 0x46c
|
|
|
+ #define PCS_MODE_SEL_MASK GENMASK(12, 8)
|
|
|
+ #define PCS_MODE_SGMII FIELD_PREP(PCS_MODE_SEL_MASK, 0x4)
|
|
|
+@@ -422,6 +427,9 @@ static int ipq_unipcs_config_mode(struct
|
|
|
+ ipq_unipcs_reg_modify32(qunipcs, PCS_MODE_CTRL,
|
|
|
+ PCS_MODE_SEL_MASK | PCS_MODE_AN_MODE,
|
|
|
+ PCS_MODE_SGMII);
|
|
|
++ ipq_unipcs_reg_modify32(qunipcs, PCS_MISC2,
|
|
|
++ PCS_MISC2_MODE_MASK,
|
|
|
++ PCS_MISC2_MODE_SGMII);
|
|
|
+ break;
|
|
|
+ case PHY_INTERFACE_MODE_QSGMII:
|
|
|
+ rate = 125000000;
|
|
|
+@@ -438,17 +446,25 @@ static int ipq_unipcs_config_mode(struct
|
|
|
+ PCS_MODE_PSGMII);
|
|
|
+ break;
|
|
|
+ case PHY_INTERFACE_MODE_1000BASEX:
|
|
|
++ rate = 125000000;
|
|
|
+ ipq_unipcs_reg_modify32(qunipcs, PCS_MODE_CTRL,
|
|
|
+ PCS_MODE_SEL_MASK |
|
|
|
+ PCS_MODE_SGMII_CTRL_MASK,
|
|
|
+ PCS_MODE_SGMII |
|
|
|
+ PCS_MODE_SGMII_CTRL_1000BASEX);
|
|
|
++ ipq_unipcs_reg_modify32(qunipcs, PCS_MISC2,
|
|
|
++ PCS_MISC2_MODE_MASK,
|
|
|
++ PCS_MISC2_MODE_SGMII);
|
|
|
+ break;
|
|
|
+ case PHY_INTERFACE_MODE_2500BASEX:
|
|
|
+ rate = 312500000;
|
|
|
+ ipq_unipcs_reg_modify32(qunipcs, PCS_MODE_CTRL,
|
|
|
+ PCS_MODE_SEL_MASK,
|
|
|
+ PCS_MODE_SGMII_PLUS);
|
|
|
++ ipq_unipcs_reg_modify32(qunipcs, PCS_MISC2,
|
|
|
++ PCS_MISC2_MODE_MASK,
|
|
|
++ PCS_MISC2_MODE_SGMII_PLUS);
|
|
|
++
|
|
|
+ break;
|
|
|
+ case PHY_INTERFACE_MODE_USXGMII:
|
|
|
+ case PHY_INTERFACE_MODE_10GBASER:
|