Subject: [PATCH] phy: qcom-qusb2: Add support for SDM630/660

From: Konrad Dybcio <[email protected]>

QUSB on these SoCs actually uses *almost* the same
configuration that msm8996 does, so we can reuse
the phy_cfg from there with just a single change
(se clock scheme).

Signed-off-by: Konrad Dybcio <[email protected]>
Signed-off-by: AngeloGioacchino Del Regno <[email protected]>
---
Documentation/devicetree/bindings/phy/qcom,qusb2-phy.yaml | 1 +
drivers/phy/qualcomm/phy-qcom-qusb2.c | 7 ++++++-
2 files changed, 7 insertions(+), 1 deletion(-)

diff --git a/Documentation/devicetree/bindings/phy/qcom,qusb2-phy.yaml b/Documentation/devicetree/bindings/phy/qcom,qusb2-phy.yaml
index ccda92859eca..97dae24752b4 100644
--- a/Documentation/devicetree/bindings/phy/qcom,qusb2-phy.yaml
+++ b/Documentation/devicetree/bindings/phy/qcom,qusb2-phy.yaml
@@ -21,6 +21,7 @@ properties:
- qcom,ipq8074-qusb2-phy
- qcom,msm8996-qusb2-phy
- qcom,msm8998-qusb2-phy
+ - qcom,sdm660-qusb2-phy
- items:
- enum:
- qcom,sc7180-qusb2-phy
diff --git a/drivers/phy/qualcomm/phy-qcom-qusb2.c b/drivers/phy/qualcomm/phy-qcom-qusb2.c
index 557547dabfd5..a4d706b361b9 100644
--- a/drivers/phy/qualcomm/phy-qcom-qusb2.c
+++ b/drivers/phy/qualcomm/phy-qcom-qusb2.c
@@ -702,7 +702,8 @@ static int qusb2_phy_init(struct phy *phy)
usleep_range(150, 160);

/* Default is single-ended clock on msm8996 */
- qphy->has_se_clk_scheme = true;
+ if (!of_device_is_compatible(phy->dev.of_node, "qcom,sdm660-qusb2-phy"))
+ qphy->has_se_clk_scheme = true;
/*
* read TCSR_PHY_CLK_SCHEME register to check if single-ended
* clock scheme is selected. If yes, then disable differential
@@ -818,6 +819,10 @@ static const struct of_device_id qusb2_phy_of_match_table[] = {
}, {
.compatible = "qcom,msm8998-qusb2-phy",
.data = &msm8998_phy_cfg,
+ }, {
+ .compatible = "qcom,sdm660-qusb2-phy",
+ /* sdm630/660 use the same config as msm8996. */
+ .data = &msm8996_phy_cfg,
}, {
/*
* Deprecated. Only here to support legacy device
--
2.28.0


2020-09-26 13:27:27

by Martin Botka

[permalink] [raw]
Subject: Re: [PATCH] phy: qcom-qusb2: Add support for SDM630/660

Tested on Xperia 10
Tested-by: Martin Botka <[email protected]>

2020-09-29 19:14:31

by Rob Herring

[permalink] [raw]
Subject: Re: [PATCH] phy: qcom-qusb2: Add support for SDM630/660

On Sat, Sep 26, 2020 at 03:11:57PM +0200, [email protected] wrote:
> From: Konrad Dybcio <[email protected]>
>
> QUSB on these SoCs actually uses *almost* the same
> configuration that msm8996 does, so we can reuse
> the phy_cfg from there with just a single change
> (se clock scheme).
>
> Signed-off-by: Konrad Dybcio <[email protected]>
> Signed-off-by: AngeloGioacchino Del Regno <[email protected]>
> ---
> Documentation/devicetree/bindings/phy/qcom,qusb2-phy.yaml | 1 +
> drivers/phy/qualcomm/phy-qcom-qusb2.c | 7 ++++++-
> 2 files changed, 7 insertions(+), 1 deletion(-)
>
> diff --git a/Documentation/devicetree/bindings/phy/qcom,qusb2-phy.yaml b/Documentation/devicetree/bindings/phy/qcom,qusb2-phy.yaml
> index ccda92859eca..97dae24752b4 100644
> --- a/Documentation/devicetree/bindings/phy/qcom,qusb2-phy.yaml
> +++ b/Documentation/devicetree/bindings/phy/qcom,qusb2-phy.yaml
> @@ -21,6 +21,7 @@ properties:
> - qcom,ipq8074-qusb2-phy
> - qcom,msm8996-qusb2-phy
> - qcom,msm8998-qusb2-phy
> + - qcom,sdm660-qusb2-phy
> - items:
> - enum:
> - qcom,sc7180-qusb2-phy
> diff --git a/drivers/phy/qualcomm/phy-qcom-qusb2.c b/drivers/phy/qualcomm/phy-qcom-qusb2.c
> index 557547dabfd5..a4d706b361b9 100644
> --- a/drivers/phy/qualcomm/phy-qcom-qusb2.c
> +++ b/drivers/phy/qualcomm/phy-qcom-qusb2.c
> @@ -702,7 +702,8 @@ static int qusb2_phy_init(struct phy *phy)
> usleep_range(150, 160);
>
> /* Default is single-ended clock on msm8996 */
> - qphy->has_se_clk_scheme = true;
> + if (!of_device_is_compatible(phy->dev.of_node, "qcom,sdm660-qusb2-phy"))
> + qphy->has_se_clk_scheme = true;

You should just pull this from the driver data.

> /*
> * read TCSR_PHY_CLK_SCHEME register to check if single-ended
> * clock scheme is selected. If yes, then disable differential
> @@ -818,6 +819,10 @@ static const struct of_device_id qusb2_phy_of_match_table[] = {
> }, {
> .compatible = "qcom,msm8998-qusb2-phy",
> .data = &msm8998_phy_cfg,
> + }, {
> + .compatible = "qcom,sdm660-qusb2-phy",
> + /* sdm630/660 use the same config as msm8996. */
> + .data = &msm8996_phy_cfg,
> }, {
> /*
> * Deprecated. Only here to support legacy device
> --
> 2.28.0
>

2020-09-29 19:27:13

by Konrad Dybcio

[permalink] [raw]
Subject: Re: [PATCH] phy: qcom-qusb2: Add support for SDM630/660

>You should just pull this from the driver data.

I reused 8996's phy_cfg so as to change one line and not repeat dozens
for what's essentially the same thing, so I don't think it's the
better option..


Konrad

2020-09-29 19:48:33

by Rob Herring

[permalink] [raw]
Subject: Re: [PATCH] phy: qcom-qusb2: Add support for SDM630/660

On Tue, Sep 29, 2020 at 2:25 PM Konrad Dybcio <[email protected]> wrote:
>
> >You should just pull this from the driver data.
>
> I reused 8996's phy_cfg so as to change one line and not repeat dozens
> for what's essentially the same thing, so I don't think it's the
> better option..

Okay, save it for the next person when the if statement grows.

Rob

2020-09-30 09:41:20

by Alexey Minnekhanov

[permalink] [raw]
Subject: Re: [PATCH] phy: qcom-qusb2: Add support for SDM630/660

Tested on Xiaomi Redmi Note 7 (lavender), SDM660

Tested-by: Alexey Minnekhanov <[email protected]>

On 9/26/20 4:11 PM, [email protected] wrote:
> From: Konrad Dybcio <[email protected]>
>
> QUSB on these SoCs actually uses *almost* the same
> configuration that msm8996 does, so we can reuse
> the phy_cfg from there with just a single change
> (se clock scheme).
>
> Signed-off-by: Konrad Dybcio <[email protected]>
> Signed-off-by: AngeloGioacchino Del Regno <[email protected]>
> ---
> Documentation/devicetree/bindings/phy/qcom,qusb2-phy.yaml | 1 +
> drivers/phy/qualcomm/phy-qcom-qusb2.c | 7 ++++++-
> 2 files changed, 7 insertions(+), 1 deletion(-)