Re: [PATCH] phy: qcom: qmp: Add SDM845 PCIe QMP PHY support

From: Bjorn Andersson
Date: Wed Feb 27 2019 - 13:09:59 EST


On Wed 27 Feb 01:27 PST 2019, Marc Gonzalez wrote:

> On 26/02/2019 07:59, Bjorn Andersson wrote:
>
> > qcom_qmp_phy_init() is extended to support the additional register
> > writes needed in PCS MISC and the appropriate sequences and resources
> > are defined for SDM845.
> >
> > Signed-off-by: Bjorn Andersson <bjorn.andersson@xxxxxxxxxx>
> > ---
> > .../devicetree/bindings/phy/qcom-qmp-phy.txt | 7 +
> > drivers/phy/qualcomm/phy-qcom-qmp.c | 160 ++++++++++++++++++
> > drivers/phy/qualcomm/phy-qcom-qmp.h | 12 ++
> > 3 files changed, 179 insertions(+)
> >
> > diff --git a/Documentation/devicetree/bindings/phy/qcom-qmp-phy.txt b/Documentation/devicetree/bindings/phy/qcom-qmp-phy.txt
> > index 5d181fc3cc18..dd2725a9d3f7 100644
> > --- a/Documentation/devicetree/bindings/phy/qcom-qmp-phy.txt
> > +++ b/Documentation/devicetree/bindings/phy/qcom-qmp-phy.txt
> > @@ -11,6 +11,7 @@ Required properties:
> > "qcom,msm8996-qmp-usb3-phy" for 14nm USB3 phy on msm8996,
> > "qcom,msm8998-qmp-usb3-phy" for USB3 QMP V3 phy on msm8998,
> > "qcom,msm8998-qmp-ufs-phy" for UFS QMP phy on msm8998,
> > + "qcom,sdm845-qmp-pcie-phy" for PCIe phy on sdm845,
> > "qcom,sdm845-qmp-usb3-phy" for USB3 QMP V3 phy on sdm845,
> > "qcom,sdm845-qmp-usb3-uni-phy" for USB3 QMP V3 UNI phy on sdm845,
> > "qcom,sdm845-qmp-ufs-phy" for UFS QMP phy on sdm845.
> > @@ -48,6 +49,10 @@ Required properties:
> > "aux", "cfg_ahb", "ref".
> > For "qcom,msm8998-qmp-ufs-phy" must contain:
> > "ref", "ref_aux".
> > + For "qcom,sdm845-qmp-usb3-phy" must contain:
> > + "aux", "cfg_ahb", "ref", "refgen".
>
> qcom,sdm845-qmp-usb3-phy in a PCIe patch?
>

Must have forgotten to fix it up after copy pasting the other line,
thanks for spotting.

> > + For "qcom,sdm845-qmp-usb3-phy" must contain:
> > + "aux", "cfg_ahb", "ref", "com_aux".
>
> qcom,sdm845-qmp-usb3-phy again in a PCIe patch?
>

Ditto.

>
> > +static const struct qmp_phy_init_tbl sdm845_pcie_pcs_misc_tbl[] = {
> > + QMP_PHY_INIT_CFG(QPHY_V3_PCS_MISC_OSC_DTCT_CONFIG2, 0x52),
> > + QMP_PHY_INIT_CFG(QPHY_V3_PCS_MISC_OSC_DTCT_MODE2_CONFIG2, 0x10),
> > + QMP_PHY_INIT_CFG(QPHY_V3_PCS_MISC_OSC_DTCT_MODE2_CONFIG4, 0x1a),
> > + QMP_PHY_INIT_CFG(QPHY_V3_PCS_MISC_OSC_DTCT_MODE2_CONFIG5, 0x06),
> > + QMP_PHY_INIT_CFG(QPHY_V3_PCS_MISC_PCIE_INT_AUX_CLK_CONFIG1, 0x00),
> > +};
>
> I was thinking I might need to do the same for msm8998, since downstream
> tweaks pcs_misc + 0x2c = 0x52
> (dunno if that's QPHY_V3_PCS_MISC_OSC_DTCT_CONFIG2)
>

Yeah, we probably should add the 8998 sequences as well. I haven't been
able to compare the two side by side, but it's expected that they will
be slightly different.

> The thing is, phy driver writes unconditionally to pcs_misc + 0x0c
> (QPHY_V3_PCS_MISC_CLAMP_ENABLE). Should that be moved elsewhere?
>

I spotted this as the only difference in the initialization sequence,
but concluded that it seems to work fine as it is. So I left that part
intact.

Regards,
Bjorn