Re: [PATCH v2 6/8] dt-bindings: usb: convert mediatek,mtk-xhci.txt to YAML schema

2020-10-20 Thread Chunfeng Yun
On Fri, 2020-10-16 at 12:14 -0500, Rob Herring wrote:
> On Tue, Oct 13, 2020 at 04:52:05PM +0800, Chunfeng Yun wrote:
> > Convert mediatek,mtk-xhci.txt to YAML schema mediatek,mtk-xhci.yaml
> > 
> 
> There's some refactoring of usb-hcd.yaml and XHCI schema under review 
> and this may need some refactoring on top of it.
Ok, will do it 
> 
> > Signed-off-by: Chunfeng Yun 
> > ---
> > v2: new patch
> > ---
> >  .../bindings/usb/mediatek,mtk-xhci.txt| 121 
> >  .../bindings/usb/mediatek,mtk-xhci.yaml   | 180 ++
> >  2 files changed, 180 insertions(+), 121 deletions(-)
> >  delete mode 100644 
> > Documentation/devicetree/bindings/usb/mediatek,mtk-xhci.txt
> >  create mode 100644 
> > Documentation/devicetree/bindings/usb/mediatek,mtk-xhci.yaml
> 
> 
> > diff --git a/Documentation/devicetree/bindings/usb/mediatek,mtk-xhci.yaml 
> > b/Documentation/devicetree/bindings/usb/mediatek,mtk-xhci.yaml
> > new file mode 100644
> > index ..ea696c8f1269
> > --- /dev/null
> > +++ b/Documentation/devicetree/bindings/usb/mediatek,mtk-xhci.yaml
> > @@ -0,0 +1,180 @@
> > +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
> > +# Copyright (c) 2020 MediaTek
> > +%YAML 1.2
> > +---
> > +$id: http://devicetree.org/schemas/usb/mediatek,mtk-xhci.yaml#
> > +$schema: http://devicetree.org/meta-schemas/core.yaml#
> > +
> > +title: MediaTek USB3 xHCI Device Tree Bindings
> > +
> > +maintainers:
> > +  - Chunfeng Yun 
> > +
> > +allOf:
> > +  - $ref: "usb-hcd.yaml"
> > +
> > +description: |
> > +  There are two scenarios:
> > +  case 1: only supports xHCI driver;
> > +  case 2: supports dual-role mode, and the host is based on xHCI driver.
> > +
> > +properties:
> > +  #common properties for both case 1 and case 2
> > +  compatible:
> > +items:
> > +  - enum:
> > +  - mediatek,mt2712-xhci
> > +  - mediatek,mt7622-xhci
> > +  - mediatek,mt7629-xhci
> > +  - mediatek,mt8173-xhci
> > +  - mediatek,mt8183-xhci
> > +  - const: mediatek,mtk-xhci
> > +
> > +  reg:
> > +minItems: 1
> > +maxItems: 2
> > +items:
> > +  - description: the registers of xHCI MAC
> > +  - description: the registers of IP Port Control
> > +
> > +  reg-names:
> > +minItems: 1
> > +maxItems: 2
> > +items:
> > +  - const: mac
> > +  - const: ippc  #optional, only needed for case 1.
> > +
> > +  interrupts:
> > +maxItems: 1
> > +
> > +  power-domains:
> > +description: A phandle to USB power domain node to control USB's MTCMOS
> > +maxItems: 1
> > +
> > +  clocks:
> > +minItems: 1
> > +maxItems: 5
> > +items:
> > +  - description: Controller clock used by normal mode
> > +  - description: Reference clock used by low power mode etc
> > +  - description: Mcu bus clock for register access
> > +  - description: DMA bus clock for data transfer
> > +  - description: controller clock
> > +
> > +  clock-names:
> > +minItems: 1
> > +maxItems: 5
> > +items:
> > +  - const: sys_ck  #required, the following ones are optional
> > +  - const: ref_ck
> > +  - const: mcu_ck
> > +  - const: dma_ck
> > +  - const: xhci_ck
> > +
> > +  phys:
> > +$ref: /usb/usb-hcd.yaml#
> 
> That doesn't look right...
No need refer to it again?

usb-hcd.yaml describes how to use phys/phy-names

> 
> > +
> > +  vusb33-supply:
> > +description: Regulator of USB AVDD3.3v
> > +
> > +  vbus-supply:
> > +description: Regulator of USB VBUS5v
> > +
> > +  usb3-lpm-capable:
> > +description: supports USB3.0 LPM
> > +type: boolean
> > +
> > +  imod-interval-ns:
> > +$ref: /schemas/types.yaml#/definitions/uint32
> > +description: |
> > +  Interrupt moderation interval value, it is 8 times as much as that
> > +  defined in the xHCI spec on MTK's controller.
> > +default: 5000
> > +
> > +  #the following properties are only used for case 1
> > +  pinctrl-0:
> > +description: A phandle to the default pinctrl state.
> > +
> > +  pinctrl-names:
> > +description: A pinctrl state named "default" must be defined.
> > +  See pinctrl/pinctrl-bindings.txt
> > +const: default
> 
> Don't need pinctrl-* properties. They are always allowed.
Ok
> 
> > +
> > +  wakeup-source:
> > +description: enable USB remote wakeup, see power/wakeup-source.txt
> > +type: boolean
> > +
> > +  mediatek,syscon-wakeup:
> > +$ref: /schemas/types.yaml#/definitions/phandle-array
> > +maxItems: 1
> > +description: |
> > +  A phandle to syscon used to access the register of the USB wakeup 
> > glue
> > +  layer between xHCI and SPM, the field should always be a multiple of
> > +  3 cells long.
> 
> A multiple of 3?
Seems wrong, only support one, will modify it
>  How would there be more than 3 cells?
others will be ignored

> 
> > +
> > +  items:
> > +- description:
> > +The first cell represents a phandle to syscon
> > + 

Re: [PATCH v2 6/8] dt-bindings: usb: convert mediatek,mtk-xhci.txt to YAML schema

2020-10-16 Thread Rob Herring
On Tue, Oct 13, 2020 at 04:52:05PM +0800, Chunfeng Yun wrote:
> Convert mediatek,mtk-xhci.txt to YAML schema mediatek,mtk-xhci.yaml
> 

There's some refactoring of usb-hcd.yaml and XHCI schema under review 
and this may need some refactoring on top of it.

> Signed-off-by: Chunfeng Yun 
> ---
> v2: new patch
> ---
>  .../bindings/usb/mediatek,mtk-xhci.txt| 121 
>  .../bindings/usb/mediatek,mtk-xhci.yaml   | 180 ++
>  2 files changed, 180 insertions(+), 121 deletions(-)
>  delete mode 100644 
> Documentation/devicetree/bindings/usb/mediatek,mtk-xhci.txt
>  create mode 100644 
> Documentation/devicetree/bindings/usb/mediatek,mtk-xhci.yaml


> diff --git a/Documentation/devicetree/bindings/usb/mediatek,mtk-xhci.yaml 
> b/Documentation/devicetree/bindings/usb/mediatek,mtk-xhci.yaml
> new file mode 100644
> index ..ea696c8f1269
> --- /dev/null
> +++ b/Documentation/devicetree/bindings/usb/mediatek,mtk-xhci.yaml
> @@ -0,0 +1,180 @@
> +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
> +# Copyright (c) 2020 MediaTek
> +%YAML 1.2
> +---
> +$id: http://devicetree.org/schemas/usb/mediatek,mtk-xhci.yaml#
> +$schema: http://devicetree.org/meta-schemas/core.yaml#
> +
> +title: MediaTek USB3 xHCI Device Tree Bindings
> +
> +maintainers:
> +  - Chunfeng Yun 
> +
> +allOf:
> +  - $ref: "usb-hcd.yaml"
> +
> +description: |
> +  There are two scenarios:
> +  case 1: only supports xHCI driver;
> +  case 2: supports dual-role mode, and the host is based on xHCI driver.
> +
> +properties:
> +  #common properties for both case 1 and case 2
> +  compatible:
> +items:
> +  - enum:
> +  - mediatek,mt2712-xhci
> +  - mediatek,mt7622-xhci
> +  - mediatek,mt7629-xhci
> +  - mediatek,mt8173-xhci
> +  - mediatek,mt8183-xhci
> +  - const: mediatek,mtk-xhci
> +
> +  reg:
> +minItems: 1
> +maxItems: 2
> +items:
> +  - description: the registers of xHCI MAC
> +  - description: the registers of IP Port Control
> +
> +  reg-names:
> +minItems: 1
> +maxItems: 2
> +items:
> +  - const: mac
> +  - const: ippc  #optional, only needed for case 1.
> +
> +  interrupts:
> +maxItems: 1
> +
> +  power-domains:
> +description: A phandle to USB power domain node to control USB's MTCMOS
> +maxItems: 1
> +
> +  clocks:
> +minItems: 1
> +maxItems: 5
> +items:
> +  - description: Controller clock used by normal mode
> +  - description: Reference clock used by low power mode etc
> +  - description: Mcu bus clock for register access
> +  - description: DMA bus clock for data transfer
> +  - description: controller clock
> +
> +  clock-names:
> +minItems: 1
> +maxItems: 5
> +items:
> +  - const: sys_ck  #required, the following ones are optional
> +  - const: ref_ck
> +  - const: mcu_ck
> +  - const: dma_ck
> +  - const: xhci_ck
> +
> +  phys:
> +$ref: /usb/usb-hcd.yaml#

That doesn't look right...

> +
> +  vusb33-supply:
> +description: Regulator of USB AVDD3.3v
> +
> +  vbus-supply:
> +description: Regulator of USB VBUS5v
> +
> +  usb3-lpm-capable:
> +description: supports USB3.0 LPM
> +type: boolean
> +
> +  imod-interval-ns:
> +$ref: /schemas/types.yaml#/definitions/uint32
> +description: |
> +  Interrupt moderation interval value, it is 8 times as much as that
> +  defined in the xHCI spec on MTK's controller.
> +default: 5000
> +
> +  #the following properties are only used for case 1
> +  pinctrl-0:
> +description: A phandle to the default pinctrl state.
> +
> +  pinctrl-names:
> +description: A pinctrl state named "default" must be defined.
> +  See pinctrl/pinctrl-bindings.txt
> +const: default

Don't need pinctrl-* properties. They are always allowed.

> +
> +  wakeup-source:
> +description: enable USB remote wakeup, see power/wakeup-source.txt
> +type: boolean
> +
> +  mediatek,syscon-wakeup:
> +$ref: /schemas/types.yaml#/definitions/phandle-array
> +maxItems: 1
> +description: |
> +  A phandle to syscon used to access the register of the USB wakeup glue
> +  layer between xHCI and SPM, the field should always be a multiple of
> +  3 cells long.

A multiple of 3? How would there be more than 3 cells?

> +
> +  items:
> +- description:
> +The first cell represents a phandle to syscon
> +- description:
> +The second cell represents the register base address of the glue
> +layer in syscon
> +- description:
> +The third cell represents the hardware version of the glue layer,
> +1 is used by mt8173 etc, 2 is used by mt2712 etc
> +  enum: [1, 2]
> +
> +  mediatek,u3p-dis-msk:
> +$ref: /schemas/types.yaml#/definitions/uint32
> +description: The mask to disable u3ports, bit0 for u3port0,
> +  bit1 for u3port1, ... etc
> +
> +  

[PATCH v2 6/8] dt-bindings: usb: convert mediatek, mtk-xhci.txt to YAML schema

2020-10-14 Thread Chunfeng Yun
Convert mediatek,mtk-xhci.txt to YAML schema mediatek,mtk-xhci.yaml

Signed-off-by: Chunfeng Yun 
---
v2: new patch
---
 .../bindings/usb/mediatek,mtk-xhci.txt| 121 
 .../bindings/usb/mediatek,mtk-xhci.yaml   | 180 ++
 2 files changed, 180 insertions(+), 121 deletions(-)
 delete mode 100644 Documentation/devicetree/bindings/usb/mediatek,mtk-xhci.txt
 create mode 100644 Documentation/devicetree/bindings/usb/mediatek,mtk-xhci.yaml

diff --git a/Documentation/devicetree/bindings/usb/mediatek,mtk-xhci.txt 
b/Documentation/devicetree/bindings/usb/mediatek,mtk-xhci.txt
deleted file mode 100644
index 42d8814f903a..
--- a/Documentation/devicetree/bindings/usb/mediatek,mtk-xhci.txt
+++ /dev/null
@@ -1,121 +0,0 @@
-MT8173 xHCI
-
-The device node for Mediatek SOC USB3.0 host controller
-
-There are two scenarios: the first one only supports xHCI driver;
-the second one supports dual-role mode, and the host is based on xHCI
-driver. Take account of backward compatibility, we divide bindings
-into two parts.
-
-1st: only supports xHCI driver
-
-
-Required properties:
- - compatible : should be "mediatek,-xhci", "mediatek,mtk-xhci",
-   soc-model is the name of SoC, such as mt8173, mt2712 etc, when using
-   "mediatek,mtk-xhci" compatible string, you need SoC specific ones in
-   addition, one of:
-   - "mediatek,mt8173-xhci"
- - reg : specifies physical base address and size of the registers
- - reg-names: should be "mac" for xHCI MAC and "ippc" for IP port control
- - interrupts : interrupt used by the controller
- - power-domains : a phandle to USB power domain node to control USB's
-   mtcmos
- - vusb33-supply : regulator of USB avdd3.3v
-
- - clocks : a list of phandle + clock-specifier pairs, one for each
-   entry in clock-names
- - clock-names : must contain
-   "sys_ck": controller clock used by normal mode,
-   the following ones are optional:
-   "ref_ck": reference clock used by low power mode etc,
-   "mcu_ck": mcu_bus clock for register access,
-   "dma_ck": dma_bus clock for data transfer by DMA,
-   "xhci_ck": controller clock
-
- - phys : see usb-hcd.yaml in the current directory
-
-Optional properties:
- - wakeup-source : enable USB remote wakeup;
- - mediatek,syscon-wakeup : phandle to syscon used to access the register
-   of the USB wakeup glue layer between xHCI and SPM; it depends on
-   "wakeup-source", and has two arguments:
-   - the first one : register base address of the glue layer in syscon;
-   - the second one : hardware version of the glue layer
-   - 1 : used by mt8173 etc
-   - 2 : used by mt2712 etc
- - mediatek,u3p-dis-msk : mask to disable u3ports, bit0 for u3port0,
-   bit1 for u3port1, ... etc;
- - vbus-supply : reference to the VBUS regulator;
- - usb3-lpm-capable : supports USB3.0 LPM
- - pinctrl-names : a pinctrl state named "default" must be defined
- - pinctrl-0 : pin control group
-   See: Documentation/devicetree/bindings/pinctrl/pinctrl-bindings.txt
- - imod-interval-ns: default interrupt moderation interval is 5000ns
-
-additionally the properties from usb-hcd.yaml (in the current directory) are
-supported.
-
-Example:
-usb30: usb@1127 {
-   compatible = "mediatek,mt8173-xhci";
-   reg = <0 0x1127 0 0x1000>,
- <0 0x11280700 0 0x0100>;
-   reg-names = "mac", "ippc";
-   interrupts = ;
-   power-domains = < MT8173_POWER_DOMAIN_USB>;
-   clocks = < CLK_TOP_USB30_SEL>, <>,
-< CLK_PERI_USB0>,
-< CLK_PERI_USB1>;
-   clock-names = "sys_ck", "ref_ck";
-   phys = <_port0 PHY_TYPE_USB3>,
-  <_port1 PHY_TYPE_USB2>;
-   vusb33-supply = <_vusb_reg>;
-   vbus-supply = <_p1_vbus>;
-   usb3-lpm-capable;
-   mediatek,syscon-wakeup = < 0x400 1>;
-   wakeup-source;
-   imod-interval-ns = <1>;
-};
-
-2nd: dual-role mode with xHCI driver
-
-
-In the case, xhci is added as subnode to mtu3. An example and the DT binding
-details of mtu3 can be found in:
-Documentation/devicetree/bindings/usb/mediatek,mtu3.txt
-
-Required properties:
- - compatible : should be "mediatek,-xhci", "mediatek,mtk-xhci",
-   soc-model is the name of SoC, such as mt8173, mt2712 etc, when using
-   "mediatek,mtk-xhci" compatible string, you need SoC specific ones in
-   addition, one of:
-   - "mediatek,mt8173-xhci"
- - reg : specifies physical base address and size of the registers
- - reg-names: should be "mac" for xHCI MAC
- - interrupts : interrupt used by the host controller
- - power-domains : a phandle to USB power domain node to control USB's
-   mtcmos
- - vusb33-supply : regulator of USB avdd3.3v
-
- - clocks : a list of phandle + clock-specifier pairs, one for each
-   entry