Re: [PATCH v2 4/4] phy: phy-hi3670-usb3: move driver from staging into phy

From: Mauro Carvalho Chehab
Date: Tue Jan 19 2021 - 05:48:40 EST


Em Thu, 14 Jan 2021 19:47:31 -0600
Rob Herring <robh@xxxxxxxxxx> escreveu:

> On Thu, Jan 14, 2021 at 06:35:44PM +0100, Mauro Carvalho Chehab wrote:
> > The phy USB3 driver for Hisilicon 970 (hi3670) is ready
> > for mainstream. Mode it from staging into the main driver's
> > phy/ directory.
> >
> > Signed-off-by: Mauro Carvalho Chehab <mchehab+huawei@xxxxxxxxxx>
> > ---
> > .../bindings/phy/phy-hi3670-usb3.yaml | 72 ++
> > MAINTAINERS | 9 +-
> > drivers/phy/hisilicon/Kconfig | 10 +
> > drivers/phy/hisilicon/Makefile | 1 +
> > drivers/phy/hisilicon/phy-hi3670-usb3.c | 668 ++++++++++++++++++
> > drivers/staging/hikey9xx/Kconfig | 11 -
> > drivers/staging/hikey9xx/Makefile | 2 -
> > drivers/staging/hikey9xx/phy-hi3670-usb3.c | 668 ------------------
> > drivers/staging/hikey9xx/phy-hi3670-usb3.yaml | 72 --
> > 9 files changed, 759 insertions(+), 754 deletions(-)
> > create mode 100644 Documentation/devicetree/bindings/phy/phy-hi3670-usb3.yaml
> > create mode 100644 drivers/phy/hisilicon/phy-hi3670-usb3.c
> > delete mode 100644 drivers/staging/hikey9xx/phy-hi3670-usb3.c
> > delete mode 100644 drivers/staging/hikey9xx/phy-hi3670-usb3.yaml
> >
> > diff --git a/Documentation/devicetree/bindings/phy/phy-hi3670-usb3.yaml b/Documentation/devicetree/bindings/phy/phy-hi3670-usb3.yaml
> > new file mode 100644
> > index 000000000000..125a5d6546ae
> > --- /dev/null
> > +++ b/Documentation/devicetree/bindings/phy/phy-hi3670-usb3.yaml
> > @@ -0,0 +1,72 @@
> > +# SPDX-License-Identifier: GPL-2.0
> > +%YAML 1.2
> > +---
> > +$id: http://devicetree.org/schemas/phy/hisilicon,hi3670-usb3.yaml#
> > +$schema: http://devicetree.org/meta-schemas/core.yaml#
> > +
> > +title: Hisilicon Kirin970 USB PHY
> > +
> > +maintainers:
> > + - Mauro Carvalho Chehab <mchehab+huawei@xxxxxxxxxx>
>
> Blank line.

Ok.

>
> > +description: |+
> > + Bindings for USB3 PHY on HiSilicon Kirin 970.
> > +
> > +properties:
> > + compatible:
> > + const: hisilicon,hi3670-usb-phy
> > +
> > + "#phy-cells":
> > + const: 0
> > +
> > + hisilicon,pericrg-syscon:
> > + $ref: '/schemas/types.yaml#/definitions/phandle'
> > + description: phandle of syscon used to control iso refclk.
> > +
> > + hisilicon,pctrl-syscon:
> > + $ref: '/schemas/types.yaml#/definitions/phandle'
> > + description: phandle of syscon used to control usb tcxo.
> > +
> > + hisilicon,sctrl-syscon:
> > + $ref: '/schemas/types.yaml#/definitions/phandle'
> > + description: phandle of syscon used to control phy deep sleep.
> > +
> > + hisilicon,eye-diagram-param:
> > + $ref: /schemas/types.yaml#/definitions/uint32
> > + description: Eye diagram for phy.
> > +
> > + hisilicon,tx-vboost-lvl:
> > + $ref: /schemas/types.yaml#/definitions/uint32
> > + description: TX level vboost for phy.
> > +
> > +required:
> > + - compatible
> > + - hisilicon,pericrg-syscon
> > + - hisilicon,pctrl-syscon
> > + - hisilicon,sctrl-syscon
> > + - hisilicon,eye-diagram-param
> > + - hisilicon,tx-vboost-lvl
> > + - "#phy-cells"
> > +
> > +additionalProperties: false
> > +
> > +examples:
> > + - |
> > + bus {
> > + #address-cells = <2>;
> > + #size-cells = <2>;
> > +
> > + usb3_otg_bc: usb3_otg_bc@ff200000 {
> > + compatible = "syscon", "simple-mfd";
> > + reg = <0x0 0xff200000 0x0 0x1000>;
> > +
> > + usb_phy {
>
> Is there a contiguous register region for this sub-block? If so, add
> 'reg' even though Linux doesn't need it currently.

No. The driver uses 4 syscon regions in order to access the needed
registers:

priv->peri_crg = syscon_regmap_lookup_by_phandle(dev->of_node,
"hisilicon,pericrg-syscon");
if (IS_ERR(priv->peri_crg)) {
dev_err(dev, "no hisilicon,pericrg-syscon\n");
return PTR_ERR(priv->peri_crg);
}

priv->pctrl = syscon_regmap_lookup_by_phandle(dev->of_node,
"hisilicon,pctrl-syscon");
if (IS_ERR(priv->pctrl)) {
dev_err(dev, "no hisilicon,pctrl-syscon\n");
return PTR_ERR(priv->pctrl);
}

priv->sctrl = syscon_regmap_lookup_by_phandle(dev->of_node,
"hisilicon,sctrl-syscon");
if (IS_ERR(priv->sctrl)) {
dev_err(dev, "no hisilicon,sctrl-syscon\n");
return PTR_ERR(priv->sctrl);
}

/* node of hi3670 phy is a sub-node of usb3_otg_bc */
priv->usb31misc = syscon_node_to_regmap(dev->parent->of_node);
if (IS_ERR(priv->usb31misc)) {
dev_err(dev, "no hisilicon,usb3-otg-bc-syscon\n");
return PTR_ERR(priv->usb31misc);
}

So, I don't see what an additional reg would help here.

> > + compatible = "hisilicon,hi3670-usb-phy";
> > + #phy-cells = <0>;
> > + hisilicon,pericrg-syscon = <&crg_ctrl>;
> > + hisilicon,pctrl-syscon = <&pctrl>;
> > + hisilicon,sctrl-syscon = <&sctrl>;
> > + hisilicon,eye-diagram-param = <0xfdfee4>;
> > + hisilicon,tx-vboost-lvl = <0x5>;
> > + };
> > + };
> > + };

Thanks,
Mauro