* [PATCH 0/4] phy: qcom: Add USB PHY support for Nord SoC
@ 2026-09-01 9:50 Shawn Guo
2026-09-01 9:50 ` [PATCH 1/4] dt-bindings: phy: qcom,snps-eusb2-phy: Make resets optional Shawn Guo
` (3 more replies)
0 siblings, 4 replies; 8+ messages in thread
From: Shawn Guo @ 2026-09-01 9:50 UTC (permalink / raw)
To: Vinod Koul
Cc: Neil Armstrong, Manivannan Sadhasivam, Rob Herring,
Krzysztof Kozlowski, Conor Dooley, Dmitry Baryshkov, Abel Vesa,
Konrad Dybcio, Bartosz Golaszewski, Krishna Kurapati,
linux-arm-msm, linux-phy, devicetree, linux-kernel, Shawn Guo
The series documents Nord in qcom,snps-eusb2-phy and
qcom,sc8280xp-qmp-usb43dp-phy bindings, updates qmp-combo PHY driver for
Nord SoC support.
Bartosz Golaszewski (4):
dt-bindings: phy: qcom,snps-eusb2-phy: Make resets optional
dt-bindings: phy: qcom,snps-eusb2-phy: Document the Nord eUSB2 PHY
dt-bindings: phy: qcom,sc8280xp-qmp-usb43dp-phy: Document the Nord QMP
PHY
phy: qcom: qmp-combo: Add USB3+DP PHY support for Nord
.../phy/qcom,sc8280xp-qmp-usb43dp-phy.yaml | 2 +
.../bindings/phy/qcom,snps-eusb2-phy.yaml | 2 +-
drivers/phy/qualcomm/phy-qcom-qmp-combo.c | 66 +++++++++++++++++++
3 files changed, 69 insertions(+), 1 deletion(-)
--
2.43.0
--
linux-phy mailing list
linux-phy@lists.infradead.org
https://lists.infradead.org/mailman/listinfo/linux-phy
^ permalink raw reply [flat|nested] 8+ messages in thread
* [PATCH 1/4] dt-bindings: phy: qcom,snps-eusb2-phy: Make resets optional
2026-09-01 9:50 [PATCH 0/4] phy: qcom: Add USB PHY support for Nord SoC Shawn Guo
@ 2026-09-01 9:50 ` Shawn Guo
2026-09-01 9:50 ` [PATCH 2/4] dt-bindings: phy: qcom,snps-eusb2-phy: Document the Nord eUSB2 PHY Shawn Guo
` (2 subsequent siblings)
3 siblings, 0 replies; 8+ messages in thread
From: Shawn Guo @ 2026-09-01 9:50 UTC (permalink / raw)
To: Vinod Koul
Cc: Neil Armstrong, Manivannan Sadhasivam, Rob Herring,
Krzysztof Kozlowski, Conor Dooley, Dmitry Baryshkov, Abel Vesa,
Konrad Dybcio, Bartosz Golaszewski, Krishna Kurapati,
linux-arm-msm, linux-phy, devicetree, linux-kernel,
Bartosz Golaszewski, Shawn Guo
From: Bartosz Golaszewski <bartosz.golaszewski@oss.qualcomm.com>
Not every instance of this PHY has a block reset of its own. On Nord
SoC there are three eUSB2 PHYs but only two QUSB2PHY block resets:
the HS-only USB20 tile has no dedicated PHY reset and is instead reset as
a whole through the controller's own USB20_PRIM_BCR. Requiring 'resets'
makes that instance impossible to describe, since the controller and the
PHY cannot both claim the single block reset exclusively.
The driver has always treated the reset as optional - it uses
devm_reset_control_get_optional_exclusive() - and the sibling
samsung,exynos2200-eusb2-phy binding, which is served by the same driver,
does not require it either. Drop it from the required list.
Signed-off-by: Bartosz Golaszewski <bartosz.golaszewski@oss.qualcomm.com>
Signed-off-by: Shawn Guo <shengchao.guo@oss.qualcomm.com>
---
Documentation/devicetree/bindings/phy/qcom,snps-eusb2-phy.yaml | 1 -
1 file changed, 1 deletion(-)
diff --git a/Documentation/devicetree/bindings/phy/qcom,snps-eusb2-phy.yaml b/Documentation/devicetree/bindings/phy/qcom,snps-eusb2-phy.yaml
index 096f6b546632..2140482c8e3b 100644
--- a/Documentation/devicetree/bindings/phy/qcom,snps-eusb2-phy.yaml
+++ b/Documentation/devicetree/bindings/phy/qcom,snps-eusb2-phy.yaml
@@ -64,7 +64,6 @@ required:
- clock-names
- vdd-supply
- vdda12-supply
- - resets
additionalProperties: false
--
2.43.0
--
linux-phy mailing list
linux-phy@lists.infradead.org
https://lists.infradead.org/mailman/listinfo/linux-phy
^ permalink raw reply related [flat|nested] 8+ messages in thread
* [PATCH 2/4] dt-bindings: phy: qcom,snps-eusb2-phy: Document the Nord eUSB2 PHY
2026-09-01 9:50 [PATCH 0/4] phy: qcom: Add USB PHY support for Nord SoC Shawn Guo
2026-09-01 9:50 ` [PATCH 1/4] dt-bindings: phy: qcom,snps-eusb2-phy: Make resets optional Shawn Guo
@ 2026-09-01 9:50 ` Shawn Guo
2026-09-01 9:50 ` [PATCH 3/4] dt-bindings: phy: qcom,sc8280xp-qmp-usb43dp-phy: Document the Nord QMP PHY Shawn Guo
2026-09-01 9:50 ` [PATCH 4/4] phy: qcom: qmp-combo: Add USB3+DP PHY support for Nord Shawn Guo
3 siblings, 0 replies; 8+ messages in thread
From: Shawn Guo @ 2026-09-01 9:50 UTC (permalink / raw)
To: Vinod Koul
Cc: Neil Armstrong, Manivannan Sadhasivam, Rob Herring,
Krzysztof Kozlowski, Conor Dooley, Dmitry Baryshkov, Abel Vesa,
Konrad Dybcio, Bartosz Golaszewski, Krishna Kurapati,
linux-arm-msm, linux-phy, devicetree, linux-kernel,
Bartosz Golaszewski, Shawn Guo
From: Bartosz Golaszewski <bartosz.golaszewski@oss.qualcomm.com>
Add a compatible for the eUSB2 PHY found on the Qualcomm Nord SoC.
It is compatible with the sm8550 eUSB2 PHY.
Signed-off-by: Bartosz Golaszewski <bartosz.golaszewski@oss.qualcomm.com>
Signed-off-by: Shawn Guo <shengchao.guo@oss.qualcomm.com>
---
Documentation/devicetree/bindings/phy/qcom,snps-eusb2-phy.yaml | 1 +
1 file changed, 1 insertion(+)
diff --git a/Documentation/devicetree/bindings/phy/qcom,snps-eusb2-phy.yaml b/Documentation/devicetree/bindings/phy/qcom,snps-eusb2-phy.yaml
index 2140482c8e3b..7fe8c82db38d 100644
--- a/Documentation/devicetree/bindings/phy/qcom,snps-eusb2-phy.yaml
+++ b/Documentation/devicetree/bindings/phy/qcom,snps-eusb2-phy.yaml
@@ -19,6 +19,7 @@ properties:
- enum:
- qcom,eliza-snps-eusb2-phy
- qcom,milos-snps-eusb2-phy
+ - qcom,nord-snps-eusb2-phy
- qcom,sar2130p-snps-eusb2-phy
- qcom,sdx75-snps-eusb2-phy
- qcom,sm8650-snps-eusb2-phy
--
2.43.0
--
linux-phy mailing list
linux-phy@lists.infradead.org
https://lists.infradead.org/mailman/listinfo/linux-phy
^ permalink raw reply related [flat|nested] 8+ messages in thread
* [PATCH 3/4] dt-bindings: phy: qcom,sc8280xp-qmp-usb43dp-phy: Document the Nord QMP PHY
2026-09-01 9:50 [PATCH 0/4] phy: qcom: Add USB PHY support for Nord SoC Shawn Guo
2026-09-01 9:50 ` [PATCH 1/4] dt-bindings: phy: qcom,snps-eusb2-phy: Make resets optional Shawn Guo
2026-09-01 9:50 ` [PATCH 2/4] dt-bindings: phy: qcom,snps-eusb2-phy: Document the Nord eUSB2 PHY Shawn Guo
@ 2026-09-01 9:50 ` Shawn Guo
2026-09-01 9:50 ` [PATCH 4/4] phy: qcom: qmp-combo: Add USB3+DP PHY support for Nord Shawn Guo
3 siblings, 0 replies; 8+ messages in thread
From: Shawn Guo @ 2026-09-01 9:50 UTC (permalink / raw)
To: Vinod Koul
Cc: Neil Armstrong, Manivannan Sadhasivam, Rob Herring,
Krzysztof Kozlowski, Conor Dooley, Dmitry Baryshkov, Abel Vesa,
Konrad Dybcio, Bartosz Golaszewski, Krishna Kurapati,
linux-arm-msm, linux-phy, devicetree, linux-kernel,
Bartosz Golaszewski, Shawn Guo
From: Bartosz Golaszewski <bartosz.golaszewski@oss.qualcomm.com>
Add a compatible for the USB3+DP combo QMP PHY found on the Qualcomm Nord
SoC. The PHY sits behind a GDSC, so also allow (and require) power-domains
for it.
The block gets a standalone compatible rather than a fallback to an
existing one, because it is not register-compatible with any PHY already
described here. Its USB3 and DP initialisation sequences do match sm8550,
but Nord places the sub-blocks at different offsets within the PHY: it
exposes a dedicated USB3_PCS_AON region at 0x1e00, which sm8550 does not
have at all. Falling back to sm8550 - or to any other entry - would make
the driver program the wrong addresses.
Signed-off-by: Bartosz Golaszewski <bartosz.golaszewski@oss.qualcomm.com>
Assisted-by: LLM
Signed-off-by: Shawn Guo <shengchao.guo@oss.qualcomm.com>
---
.../devicetree/bindings/phy/qcom,sc8280xp-qmp-usb43dp-phy.yaml | 2 ++
1 file changed, 2 insertions(+)
diff --git a/Documentation/devicetree/bindings/phy/qcom,sc8280xp-qmp-usb43dp-phy.yaml b/Documentation/devicetree/bindings/phy/qcom,sc8280xp-qmp-usb43dp-phy.yaml
index 8adfc78108fe..b5ccc8b4d8c8 100644
--- a/Documentation/devicetree/bindings/phy/qcom,sc8280xp-qmp-usb43dp-phy.yaml
+++ b/Documentation/devicetree/bindings/phy/qcom,sc8280xp-qmp-usb43dp-phy.yaml
@@ -27,6 +27,7 @@ properties:
- enum:
- qcom,glymur-qmp-usb3-dp-phy
- qcom,hawi-qmp-usb3-dp-phy
+ - qcom,nord-qmp-usb3-dp-phy
- qcom,sar2130p-qmp-usb3-dp-phy
- qcom,sc7180-qmp-usb3-dp-phy
- qcom,sc7280-qmp-usb3-dp-phy
@@ -212,6 +213,7 @@ allOf:
enum:
- qcom,glymur-qmp-usb3-dp-phy
- qcom,hawi-qmp-usb3-dp-phy
+ - qcom,nord-qmp-usb3-dp-phy
- qcom,sar2130p-qmp-usb3-dp-phy
- qcom,sc8280xp-qmp-usb43dp-phy
- qcom,sm6350-qmp-usb3-dp-phy
--
2.43.0
--
linux-phy mailing list
linux-phy@lists.infradead.org
https://lists.infradead.org/mailman/listinfo/linux-phy
^ permalink raw reply related [flat|nested] 8+ messages in thread
* [PATCH 4/4] phy: qcom: qmp-combo: Add USB3+DP PHY support for Nord
2026-09-01 9:50 [PATCH 0/4] phy: qcom: Add USB PHY support for Nord SoC Shawn Guo
` (2 preceding siblings ...)
2026-09-01 9:50 ` [PATCH 3/4] dt-bindings: phy: qcom,sc8280xp-qmp-usb43dp-phy: Document the Nord QMP PHY Shawn Guo
@ 2026-09-01 9:50 ` Shawn Guo
2026-09-01 10:03 ` sashiko-bot
` (2 more replies)
3 siblings, 3 replies; 8+ messages in thread
From: Shawn Guo @ 2026-09-01 9:50 UTC (permalink / raw)
To: Vinod Koul
Cc: Neil Armstrong, Manivannan Sadhasivam, Rob Herring,
Krzysztof Kozlowski, Conor Dooley, Dmitry Baryshkov, Abel Vesa,
Konrad Dybcio, Bartosz Golaszewski, Krishna Kurapati,
linux-arm-msm, linux-phy, devicetree, linux-kernel,
Bartosz Golaszewski, Shawn Guo
From: Bartosz Golaszewski <bartosz.golaszewski@oss.qualcomm.com>
Nord SoC provides two USB3+DP combo PHYs. Their initialisation sequences
are identical to sm8550, but the sub-blocks are not laid out the same way:
Nord adds a dedicated USB3_PCS_AON region at offset 0x1e00 and leaves
everything else where sm8550 has it. None of the existing offsets tables
describe that, so add a v6 table which is the v3 layout plus usb3_pcs_aon.
Populating usb3_pcs_aon changes where the driver drives the I/O clamp when
entering and leaving autonomous mode: it now uses the real AON region
rather than falling back to PCS_MISC, which is what platforms with no AON
region do.
The offsets were confirmed against the Nord register map for both PHY
instances, USB3_DP_PHY_0 at 0x088e1000 and USB3_DP_PHY_1 at 0x088e4000.
USB3_PCS_AON_CLAMP_ENABLE sits at offset 0x00 of the AON region with a
single CLAMP_EN_B bit, matching QPHY_V6_PCS_AON_CLAMP_ENABLE and CLAMP_EN.
Signed-off-by: Bartosz Golaszewski <bartosz.golaszewski@oss.qualcomm.com>
Assisted-by: LLM
Signed-off-by: Shawn Guo <shengchao.guo@oss.qualcomm.com>
---
drivers/phy/qualcomm/phy-qcom-qmp-combo.c | 66 +++++++++++++++++++++++
1 file changed, 66 insertions(+)
diff --git a/drivers/phy/qualcomm/phy-qcom-qmp-combo.c b/drivers/phy/qualcomm/phy-qcom-qmp-combo.c
index c39ced168d03..de82c7107c92 100644
--- a/drivers/phy/qualcomm/phy-qcom-qmp-combo.c
+++ b/drivers/phy/qualcomm/phy-qcom-qmp-combo.c
@@ -2690,6 +2690,23 @@ static const struct qmp_combo_offsets qmp_combo_offsets_v5 = {
.dp_dp_phy = 0x2200,
};
+static const struct qmp_combo_offsets qmp_combo_offsets_v6 = {
+ .com = 0x0000,
+ .txa = 0x1200,
+ .rxa = 0x1400,
+ .txb = 0x1600,
+ .rxb = 0x1800,
+ .usb3_serdes = 0x1000,
+ .usb3_pcs_misc = 0x1a00,
+ .usb3_pcs = 0x1c00,
+ .usb3_pcs_aon = 0x1e00,
+ .usb3_pcs_usb = 0x1f00,
+ .dp_serdes = 0x2000,
+ .dp_txa = 0x2200,
+ .dp_txb = 0x2600,
+ .dp_dp_phy = 0x2a00,
+};
+
static const struct qmp_combo_offsets qmp_combo_offsets_v8 = {
.com = 0x0000,
.txa = 0x1400,
@@ -3394,6 +3411,51 @@ static const struct qmp_phy_cfg glymur_usb3dpphy_cfg = {
.num_vregs = ARRAY_SIZE(qmp_phy_vreg_refgen),
};
+static const struct qmp_phy_cfg nord_usb3dpphy_cfg = {
+ .offsets = &qmp_combo_offsets_v6,
+
+ .serdes_tbl = sm8550_usb3_serdes_tbl,
+ .serdes_tbl_num = ARRAY_SIZE(sm8550_usb3_serdes_tbl),
+ .tx_tbl = sm8550_usb3_tx_tbl,
+ .tx_tbl_num = ARRAY_SIZE(sm8550_usb3_tx_tbl),
+ .rx_tbl = sm8550_usb3_rx_tbl,
+ .rx_tbl_num = ARRAY_SIZE(sm8550_usb3_rx_tbl),
+ .pcs_tbl = sm8550_usb3_pcs_tbl,
+ .pcs_tbl_num = ARRAY_SIZE(sm8550_usb3_pcs_tbl),
+ .pcs_usb_tbl = sm8550_usb3_pcs_usb_tbl,
+ .pcs_usb_tbl_num = ARRAY_SIZE(sm8550_usb3_pcs_usb_tbl),
+
+ .dp_serdes_tbl = qmp_v6_dp_serdes_tbl,
+ .dp_serdes_tbl_num = ARRAY_SIZE(qmp_v6_dp_serdes_tbl),
+ .dp_tx_tbl = qmp_v6_dp_tx_tbl,
+ .dp_tx_tbl_num = ARRAY_SIZE(qmp_v6_dp_tx_tbl),
+
+ .serdes_tbl_rbr = qmp_v6_dp_serdes_tbl_rbr,
+ .serdes_tbl_rbr_num = ARRAY_SIZE(qmp_v6_dp_serdes_tbl_rbr),
+ .serdes_tbl_hbr = qmp_v6_dp_serdes_tbl_hbr,
+ .serdes_tbl_hbr_num = ARRAY_SIZE(qmp_v6_dp_serdes_tbl_hbr),
+ .serdes_tbl_hbr2 = qmp_v6_dp_serdes_tbl_hbr2,
+ .serdes_tbl_hbr2_num = ARRAY_SIZE(qmp_v6_dp_serdes_tbl_hbr2),
+ .serdes_tbl_hbr3 = qmp_v6_dp_serdes_tbl_hbr3,
+ .serdes_tbl_hbr3_num = ARRAY_SIZE(qmp_v6_dp_serdes_tbl_hbr3),
+
+ .swing_hbr_rbr = &qmp_dp_v5_voltage_swing_hbr_rbr,
+ .pre_emphasis_hbr_rbr = &qmp_dp_v6_pre_emphasis_hbr_rbr,
+ .swing_hbr3_hbr2 = &qmp_dp_v5_voltage_swing_hbr3_hbr2,
+ .pre_emphasis_hbr3_hbr2 = &qmp_dp_v5_pre_emphasis_hbr3_hbr2,
+
+ .dp_aux_init = qmp_v4_dp_aux_init,
+ .configure_dp_tx = qmp_v4_configure_dp_tx,
+ .configure_dp_clocks = qmp_v3_configure_dp_clocks,
+ .configure_dp_phy = qmp_v4_configure_dp_phy,
+
+ .regs = qmp_v6_usb3phy_regs_layout,
+ .reset_list = msm8996_usb3phy_reset_l,
+ .num_resets = ARRAY_SIZE(msm8996_usb3phy_reset_l),
+ .vreg_list = qmp_phy_vreg_l,
+ .num_vregs = ARRAY_SIZE(qmp_phy_vreg_l),
+};
+
static int qmp_combo_dp_serdes_init(struct qmp_combo *qmp)
{
const struct qmp_phy_cfg *cfg = qmp->cfg;
@@ -5359,6 +5421,10 @@ static const struct of_device_id qmp_combo_of_match_table[] = {
.compatible = "qcom,hawi-qmp-usb3-dp-phy",
.data = &hawi_usb3dpphy_cfg,
},
+ {
+ .compatible = "qcom,nord-qmp-usb3-dp-phy",
+ .data = &nord_usb3dpphy_cfg,
+ },
{
.compatible = "qcom,sar2130p-qmp-usb3-dp-phy",
.data = &sar2130p_usb3dpphy_cfg,
--
2.43.0
--
linux-phy mailing list
linux-phy@lists.infradead.org
https://lists.infradead.org/mailman/listinfo/linux-phy
^ permalink raw reply related [flat|nested] 8+ messages in thread
* Re: [PATCH 4/4] phy: qcom: qmp-combo: Add USB3+DP PHY support for Nord
2026-09-01 9:50 ` [PATCH 4/4] phy: qcom: qmp-combo: Add USB3+DP PHY support for Nord Shawn Guo
@ 2026-09-01 10:03 ` sashiko-bot
2026-09-01 12:12 ` Abel Vesa
2026-09-01 12:33 ` Krishna Kurapati
2 siblings, 0 replies; 8+ messages in thread
From: sashiko-bot @ 2026-09-01 10:03 UTC (permalink / raw)
To: Shawn Guo
Cc: neil.armstrong, linux-phy, vkoul, olteanv, conor+dt, robh,
devicetree
Thank you for your contribution! Sashiko AI review found 1 potential issue(s) to consider:
Pre-existing issues:
- [High] V10 PHY fails to configure AON_TOGGLE_ENABLE because its valid register offset is 0x00.
--
commit 48ad62e543f72364fa66abb8ebcbc97d66127f66
Author: Bartosz Golaszewski <bartosz.golaszewski@oss.qualcomm.com>
phy: qcom: qmp-combo: Add USB3+DP PHY support for Nord
This patch adds USB3+DP PHY support for the Nord SoC, which provides two
combo PHYs. It introduces a new qmp_combo_offsets_v6 structure to handle
the specific hardware layout, including a dedicated usb3_pcs_aon region at
offset 0x1e00.
> diff --git a/drivers/phy/qualcomm/phy-qcom-qmp-combo.c b/drivers/phy/qualcomm/phy-qcom-qmp-combo.c
> index c39ced168d035..de82c7107c92e 100644
> --- a/drivers/phy/qualcomm/phy-qcom-qmp-combo.c
> +++ b/drivers/phy/qualcomm/phy-qcom-qmp-combo.c
[ ... ]
> @@ -5359,6 +5421,10 @@ static const struct of_device_id qmp_combo_of_match_table[] = {
> .compatible = "qcom,hawi-qmp-usb3-dp-phy",
> .data = &hawi_usb3dpphy_cfg,
> },
> + {
> + .compatible = "qcom,nord-qmp-usb3-dp-phy",
> + .data = &nord_usb3dpphy_cfg,
> + },
[Severity: High]
This is a pre-existing issue, but I noticed a potential problem for V10
PHYs like hawi during initialization in qmp_combo_power_on().
Looking at qmp_combo_power_on():
drivers/phy/qualcomm/phy-qcom-qmp-combo.c:qmp_combo_power_on() {
...
/* override hardware control for reset of qmp phy */
if (aon_toggle && cfg->regs[QPHY_AON_TOGGLE_ENABLE]) {
qphy_clrbits(aon_toggle, cfg->regs[QPHY_AON_TOGGLE_ENABLE], 0x1);
qphy_clrbits(aon_toggle, cfg->regs[QPHY_DP_AON_TOGGLE_ENABLE], 0x1);
}
...
}
For V10 PHYs, cfg->regs[QPHY_AON_TOGGLE_ENABLE] is assigned
QPHY_V10_COM_AON_USB3_AON_TOGGLE_ENABLE, which evaluates to 0x00. Since 0x00
evaluates to false, the condition silently skips the mandatory AON toggle
configuration.
Failing to override the hardware reset for the QMP PHY could cause the
USB3/DP PHY to fail to initialize properly on V10 platforms.
Is it intentional that a valid offset of 0x00 will cause this check to fail?
--
Sashiko AI review · https://sashiko.dev/#/patchset/20260901095055.42229-1-shengchao.guo@oss.qualcomm.com?part=4
--
linux-phy mailing list
linux-phy@lists.infradead.org
https://lists.infradead.org/mailman/listinfo/linux-phy
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH 4/4] phy: qcom: qmp-combo: Add USB3+DP PHY support for Nord
2026-09-01 9:50 ` [PATCH 4/4] phy: qcom: qmp-combo: Add USB3+DP PHY support for Nord Shawn Guo
2026-09-01 10:03 ` sashiko-bot
@ 2026-09-01 12:12 ` Abel Vesa
2026-09-01 12:33 ` Krishna Kurapati
2 siblings, 0 replies; 8+ messages in thread
From: Abel Vesa @ 2026-09-01 12:12 UTC (permalink / raw)
To: Shawn Guo
Cc: Vinod Koul, Neil Armstrong, Manivannan Sadhasivam, Rob Herring,
Krzysztof Kozlowski, Conor Dooley, Dmitry Baryshkov, Abel Vesa,
Konrad Dybcio, Bartosz Golaszewski, Krishna Kurapati,
linux-arm-msm, linux-phy, devicetree, linux-kernel,
Bartosz Golaszewski
On 26-09-01 17:50:55, Shawn Guo wrote:
> From: Bartosz Golaszewski <bartosz.golaszewski@oss.qualcomm.com>
>
> Nord SoC provides two USB3+DP combo PHYs. Their initialisation sequences
> are identical to sm8550, but the sub-blocks are not laid out the same way:
> Nord adds a dedicated USB3_PCS_AON region at offset 0x1e00 and leaves
> everything else where sm8550 has it. None of the existing offsets tables
> describe that, so add a v6 table which is the v3 layout plus usb3_pcs_aon.
>
> Populating usb3_pcs_aon changes where the driver drives the I/O clamp when
> entering and leaving autonomous mode: it now uses the real AON region
> rather than falling back to PCS_MISC, which is what platforms with no AON
> region do.
>
> The offsets were confirmed against the Nord register map for both PHY
> instances, USB3_DP_PHY_0 at 0x088e1000 and USB3_DP_PHY_1 at 0x088e4000.
> USB3_PCS_AON_CLAMP_ENABLE sits at offset 0x00 of the AON region with a
> single CLAMP_EN_B bit, matching QPHY_V6_PCS_AON_CLAMP_ENABLE and CLAMP_EN.
>
> Signed-off-by: Bartosz Golaszewski <bartosz.golaszewski@oss.qualcomm.com>
> Assisted-by: LLM
> Signed-off-by: Shawn Guo <shengchao.guo@oss.qualcomm.com>
Reviewed-by: Abel Vesa <abel.vesa@oss.qualcomm.com>
--
linux-phy mailing list
linux-phy@lists.infradead.org
https://lists.infradead.org/mailman/listinfo/linux-phy
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH 4/4] phy: qcom: qmp-combo: Add USB3+DP PHY support for Nord
2026-09-01 9:50 ` [PATCH 4/4] phy: qcom: qmp-combo: Add USB3+DP PHY support for Nord Shawn Guo
2026-09-01 10:03 ` sashiko-bot
2026-09-01 12:12 ` Abel Vesa
@ 2026-09-01 12:33 ` Krishna Kurapati
2 siblings, 0 replies; 8+ messages in thread
From: Krishna Kurapati @ 2026-09-01 12:33 UTC (permalink / raw)
To: Shawn Guo, Vinod Koul
Cc: Neil Armstrong, Manivannan Sadhasivam, Rob Herring,
Krzysztof Kozlowski, Conor Dooley, Dmitry Baryshkov, Abel Vesa,
Konrad Dybcio, Bartosz Golaszewski, linux-arm-msm, linux-phy,
devicetree, linux-kernel, Bartosz Golaszewski
On 9/1/2026 3:20 PM, Shawn Guo wrote:
> From: Bartosz Golaszewski <bartosz.golaszewski@oss.qualcomm.com>
>
> Nord SoC provides two USB3+DP combo PHYs. Their initialisation sequences
> are identical to sm8550, but the sub-blocks are not laid out the same way:
> Nord adds a dedicated USB3_PCS_AON region at offset 0x1e00 and leaves
> everything else where sm8550 has it. None of the existing offsets tables
> describe that, so add a v6 table which is the v3 layout plus usb3_pcs_aon.
>
> Populating usb3_pcs_aon changes where the driver drives the I/O clamp when
> entering and leaving autonomous mode: it now uses the real AON region
> rather than falling back to PCS_MISC, which is what platforms with no AON
> region do.
>
> The offsets were confirmed against the Nord register map for both PHY
> instances, USB3_DP_PHY_0 at 0x088e1000 and USB3_DP_PHY_1 at 0x088e4000.
> USB3_PCS_AON_CLAMP_ENABLE sits at offset 0x00 of the AON region with a
> single CLAMP_EN_B bit, matching QPHY_V6_PCS_AON_CLAMP_ENABLE and CLAMP_EN.
>
> Signed-off-by: Bartosz Golaszewski <bartosz.golaszewski@oss.qualcomm.com>
> Assisted-by: LLM
> Signed-off-by: Shawn Guo <shengchao.guo@oss.qualcomm.com>
> ---
> drivers/phy/qualcomm/phy-qcom-qmp-combo.c | 66 +++++++++++++++++++++++
> 1 file changed, 66 insertions(+)
>
> diff --git a/drivers/phy/qualcomm/phy-qcom-qmp-combo.c b/drivers/phy/qualcomm/phy-qcom-qmp-combo.c
> index c39ced168d03..de82c7107c92 100644
> --- a/drivers/phy/qualcomm/phy-qcom-qmp-combo.c
> +++ b/drivers/phy/qualcomm/phy-qcom-qmp-combo.c
> @@ -2690,6 +2690,23 @@ static const struct qmp_combo_offsets qmp_combo_offsets_v5 = {
> .dp_dp_phy = 0x2200,
> };
>
> +static const struct qmp_combo_offsets qmp_combo_offsets_v6 = {
> + .com = 0x0000,
> + .txa = 0x1200,
> + .rxa = 0x1400,
> + .txb = 0x1600,
> + .rxb = 0x1800,
> + .usb3_serdes = 0x1000,
> + .usb3_pcs_misc = 0x1a00,
> + .usb3_pcs = 0x1c00,
> + .usb3_pcs_aon = 0x1e00,
> + .usb3_pcs_usb = 0x1f00,
> + .dp_serdes = 0x2000,
> + .dp_txa = 0x2200,
> + .dp_txb = 0x2600,
> + .dp_dp_phy = 0x2a00,
> +};
> +
> static const struct qmp_combo_offsets qmp_combo_offsets_v8 = {
> .com = 0x0000,
> .txa = 0x1400,
> @@ -3394,6 +3411,51 @@ static const struct qmp_phy_cfg glymur_usb3dpphy_cfg = {
> .num_vregs = ARRAY_SIZE(qmp_phy_vreg_refgen),
> };
>
> +static const struct qmp_phy_cfg nord_usb3dpphy_cfg = {
> + .offsets = &qmp_combo_offsets_v6,
> +
> + .serdes_tbl = sm8550_usb3_serdes_tbl,
> + .serdes_tbl_num = ARRAY_SIZE(sm8550_usb3_serdes_tbl),
> + .tx_tbl = sm8550_usb3_tx_tbl,
> + .tx_tbl_num = ARRAY_SIZE(sm8550_usb3_tx_tbl),
The values are different for the following registers:
USB3_QSERDES_TXA_RCV_DETECT_LVL_2: SM8550=0x12, Nord=0x14
USB3_QSERDES_TXB_RCV_DETECT_LVL_2: SM8550=0x12, Nord=0x14
We need to add new tx_tbl for Nord.
Regards,
Krishna,
--
linux-phy mailing list
linux-phy@lists.infradead.org
https://lists.infradead.org/mailman/listinfo/linux-phy
^ permalink raw reply [flat|nested] 8+ messages in thread
end of thread, other threads:[~2026-09-01 12:33 UTC | newest]
Thread overview: 8+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-09-01 9:50 [PATCH 0/4] phy: qcom: Add USB PHY support for Nord SoC Shawn Guo
2026-09-01 9:50 ` [PATCH 1/4] dt-bindings: phy: qcom,snps-eusb2-phy: Make resets optional Shawn Guo
2026-09-01 9:50 ` [PATCH 2/4] dt-bindings: phy: qcom,snps-eusb2-phy: Document the Nord eUSB2 PHY Shawn Guo
2026-09-01 9:50 ` [PATCH 3/4] dt-bindings: phy: qcom,sc8280xp-qmp-usb43dp-phy: Document the Nord QMP PHY Shawn Guo
2026-09-01 9:50 ` [PATCH 4/4] phy: qcom: qmp-combo: Add USB3+DP PHY support for Nord Shawn Guo
2026-09-01 10:03 ` sashiko-bot
2026-09-01 12:12 ` Abel Vesa
2026-09-01 12:33 ` Krishna Kurapati
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox