Hi Krzysztof: Thanks for your review comments. > -----Original Message----- > From: Krzysztof Kozlowski <krzysztof.kozlowski@xxxxxxxxxx> > Sent: 2023年2月3日 4:31 > To: Hongxing Zhu <hongxing.zhu@xxxxxxx>; robh+dt@xxxxxxxxxx; > krzysztof.kozlowski+dt@xxxxxxxxxx; l.stach@xxxxxxxxxxxxxx; > shawnguo@xxxxxxxxxx; lorenzo.pieralisi@xxxxxxx; Peng Fan > <peng.fan@xxxxxxx>; marex@xxxxxxx; Marcel Ziswiler > <marcel.ziswiler@xxxxxxxxxxx>; tharvey@xxxxxxxxxxxxx; Frank Li > <frank.li@xxxxxxx> > Cc: devicetree@xxxxxxxxxxxxxxx; linux-arm-kernel@xxxxxxxxxxxxxxxxxxx; > linux-kernel@xxxxxxxxxxxxxxx; kernel@xxxxxxxxxxxxxx; dl-linux-imx > <linux-imx@xxxxxxx> > Subject: Re: [PATCH v9 1/4] dt-bindings: imx6q-pcie: Restruct i.MX PCIe > schema > > On 02/02/2023 08:35, Richard Zhu wrote: > > Restruct i.MX PCIe schema, derive the common properties, thus they can > > be shared by both the RC and Endpoint schema. > > > > Update the description of fsl,imx6q-pcie.yaml, and move the EP mode > > compatible to fsl,imx6q-pcie-ep.yaml. > > > > Add support for i.MX8M PCIe Endpoint modes, and update the MAINTAINER > > accordingly. > > > > Signed-off-by: Richard Zhu <hongxing.zhu@xxxxxxx> > > --- > > .../bindings/pci/fsl,imx6q-pcie-common.yaml | 285 > ++++++++++++++++++ > > .../bindings/pci/fsl,imx6q-pcie-ep.yaml | 83 +++++ > > .../bindings/pci/fsl,imx6q-pcie.yaml | 247 +-------------- > > MAINTAINERS | 2 + > > 4 files changed, 376 insertions(+), 241 deletions(-) create mode > > 100644 > > Documentation/devicetree/bindings/pci/fsl,imx6q-pcie-common.yaml > > create mode 100644 > > Documentation/devicetree/bindings/pci/fsl,imx6q-pcie-ep.yaml > > > > diff --git > > a/Documentation/devicetree/bindings/pci/fsl,imx6q-pcie-common.yaml > > b/Documentation/devicetree/bindings/pci/fsl,imx6q-pcie-common.yaml > > new file mode 100644 > > index 000000000000..f291f7529622 > > --- /dev/null > > +++ > b/Documentation/devicetree/bindings/pci/fsl,imx6q-pcie-common.yaml > > @@ -0,0 +1,285 @@ > > +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) %YAML 1.2 > > +--- > > +$id: > > +https://eur01.safelinks.protection.outlook.com/?url=http%3A%2F%2Fdevi > > > +cetree.org%2Fschemas%2Fpci%2Ffsl%2Cimx6q-pcie-common.yaml%23&dat > a=05% > > > +7C01%7Chongxing.zhu%40nxp.com%7Cbc4ab9b963194b84cfb408db055c79 > 30%7C68 > > > +6ea1d3bc2b4c6fa92cd99c5c301635%7C0%7C0%7C638109666953361711% > 7CUnknown > > > +%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1ha > WwiLC > > > +JXVCI6Mn0%3D%7C3000%7C%7C%7C&sdata=xbM1eZn2swqrsdlwpNA4eCe > KTdVWTL3RU9 > > +78v7d0DMU%3D&reserved=0 > > +$schema: > > +https://eur01.safelinks.protection.outlook.com/?url=http%3A%2F%2Fdevi > > > +cetree.org%2Fmeta-schemas%2Fcore.yaml%23&data=05%7C01%7Chongxin > g.zhu% > > > +40nxp.com%7Cbc4ab9b963194b84cfb408db055c7930%7C686ea1d3bc2b4c > 6fa92cd9 > > > +9c5c301635%7C0%7C0%7C638109666953361711%7CUnknown%7CTWFpb > GZsb3d8eyJWI > > > +joiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7 > C3000% > > > +7C%7C%7C&sdata=%2F%2FCEvu0g51SzeBXDToMlYrefPYbBWARm1FqQVai7x > Bc%3D&res > > +erved=0 > > + > > +title: Freescale i.MX6 PCIe RC/EP controller > > + > > +maintainers: > > + - Lucas Stach <l.stach@xxxxxxxxxxxxxx> > > + - Richard Zhu <hongxing.zhu@xxxxxxx> > > + > > +description: > > + Generic Freescale i.MX PCIe Root Port and Endpoint controller > > + properties. > > + > > +properties: > > + compatible: > > + enum: > > + - fsl,imx6q-pcie > > + - fsl,imx6sx-pcie > > + - fsl,imx6qp-pcie > > + - fsl,imx7d-pcie > > + - fsl,imx8mq-pcie > > + - fsl,imx8mm-pcie > > + - fsl,imx8mp-pcie > > + - fsl,imx8mm-pcie-ep > > + - fsl,imx8mq-pcie-ep > > + - fsl,imx8mp-pcie-ep > > Compatibles are not part of common schema. Are you saying that EP > compatible is valid for PCIE not working as endpoint? This does not make > sense. The common part is only the part which is common. Compatible is not > common, not shared. > Okay, would sperate the compatibles by RC ane EP. > > Also missing required: block. > Would add the common required: block too. Since the RC and EP schema has different description of the reg/reg-names/interrupts... Is it fine to let RC or EP schema has its own reg/reg-names/interrupts... properties? > (...) > > > diff --git > > a/Documentation/devicetree/bindings/pci/fsl,imx6q-pcie-ep.yaml > > b/Documentation/devicetree/bindings/pci/fsl,imx6q-pcie-ep.yaml > > new file mode 100644 > > index 000000000000..f651bc3fcaf7 > > --- /dev/null > > +++ b/Documentation/devicetree/bindings/pci/fsl,imx6q-pcie-ep.yaml > > @@ -0,0 +1,83 @@ > > +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) %YAML 1.2 > > +--- > > +$id: > > +https://eur01.safelinks.protection.outlook.com/?url=http%3A%2F%2Fdevi > > > +cetree.org%2Fschemas%2Fpci%2Ffsl%2Cimx6q-pcie-ep.yaml%23&data=05 > %7C01 > > > +%7Chongxing.zhu%40nxp.com%7Cbc4ab9b963194b84cfb408db055c7930% > 7C686ea1 > > > +d3bc2b4c6fa92cd99c5c301635%7C0%7C0%7C638109666953361711%7CU > nknown%7CT > > > +WFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiL > CJXVC > > > +I6Mn0%3D%7C3000%7C%7C%7C&sdata=4UbTmbEFMOn9nDEO4WwVoheX > tl2zk%2BAo%2Ff > > +rbonvl0yo%3D&reserved=0 > > +$schema: > > +https://eur01.safelinks.protection.outlook.com/?url=http%3A%2F%2Fdevi > > > +cetree.org%2Fmeta-schemas%2Fcore.yaml%23&data=05%7C01%7Chongxin > g.zhu% > > > +40nxp.com%7Cbc4ab9b963194b84cfb408db055c7930%7C686ea1d3bc2b4c > 6fa92cd9 > > > +9c5c301635%7C0%7C0%7C638109666953361711%7CUnknown%7CTWFpb > GZsb3d8eyJWI > > > +joiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7 > C3000% > > > +7C%7C%7C&sdata=%2F%2FCEvu0g51SzeBXDToMlYrefPYbBWARm1FqQVai7x > Bc%3D&res > > +erved=0 > > + > > +title: Freescale i.MX6 PCIe Endpoint controller > > + > > +maintainers: > > + - Lucas Stach <l.stach@xxxxxxxxxxxxxx> > > + - Richard Zhu <hongxing.zhu@xxxxxxx> > > + > > +description: |+ > > + This PCIe controller is based on the Synopsys DesignWare PCIe IP > > +and > > + thus inherits all the common properties defined in > snps,dw-pcie-ep.yaml. > > + The controller instances are dual mode where in they can work > > +either in > > + Root Port mode or Endpoint mode but one at a time. > > + > > +properties: > > + reg: > > + minItems: 2 > > + > > + reg-names: > > + items: > > + - const: dbi > > + - const: addr_space > > + > > + interrupts: > > + items: > > + - description: builtin eDMA interrupter. > > + > > + interrupt-names: > > + items: > > + - const: dma > > + > > +required: > > + - compatible > > + - reg > > + - reg-names > > + - num-lanes > > + - interrupts > > + - interrupt-names > > + - clocks > > + - clock-names > > Several of these should be required by common schema/ How about this definitions of the required: block? <for common> required: - num-lanes - clocks - clock-names - power-domains - power-domain-names - resets - reset-names <for ep> required: - compatible - reg - reg-names - interrupts - interrupt-names <for rc> required: - compatible - reg - reg-names - "#address-cells" - "#size-cells" - device_type - bus-range - ranges - interrupts - interrupt-names - "#interrupt-cells" - interrupt-map-mask - interrupt-map > > > + > > +allOf: > > + - $ref: /schemas/pci/snps,dw-pcie-ep.yaml# > > + - $ref: /schemas/pci/fsl,imx6q-pcie-common.yaml# > > + > > +unevaluatedProperties: false > > + > > +examples: > > + - | > > + #include <dt-bindings/clock/imx8mp-clock.h> > > + #include <dt-bindings/power/imx8mp-power.h> > > + #include <dt-bindings/reset/imx8mp-reset.h> > > + #include <dt-bindings/interrupt-controller/arm-gic.h> > > + > > + pcie_ep: pcie-ep@33800000 { > > + compatible = "fsl,imx8mp-pcie-ep"; > > + reg = <0x33800000 0x000400000>, <0x18000000 0x08000000>; > > + reg-names = "dbi", "addr_space"; > > + clocks = <&clk IMX8MP_CLK_HSIO_ROOT>, > > + <&clk IMX8MP_CLK_HSIO_AXI>, > > + <&clk IMX8MP_CLK_PCIE_ROOT>; > > + clock-names = "pcie", "pcie_bus", "pcie_aux"; > > + assigned-clocks = <&clk IMX8MP_CLK_PCIE_AUX>; > > + assigned-clock-rates = <10000000>; > > + assigned-clock-parents = <&clk IMX8MP_SYS_PLL2_50M>; > > + num-lanes = <1>; > > + interrupts = <GIC_SPI 127 IRQ_TYPE_LEVEL_HIGH>; /* eDMA */ > > + interrupt-names = "dma"; > > + fsl,max-link-speed = <3>; > > + power-domains = <&hsio_blk_ctrl IMX8MP_HSIOBLK_PD_PCIE>; > > + resets = <&src IMX8MP_RESET_PCIE_CTRL_APPS_EN>, > > + <&src IMX8MP_RESET_PCIE_CTRL_APPS_TURNOFF>; > > + reset-names = "apps", "turnoff"; > > + phys = <&pcie_phy>; > > + phy-names = "pcie-phy"; > > + num-ib-windows = <4>; > > + num-ob-windows = <4>; > > + status = "disabled"; > > Drop status Okay. > > > + }; > > diff --git a/Documentation/devicetree/bindings/pci/fsl,imx6q-pcie.yaml > > b/Documentation/devicetree/bindings/pci/fsl,imx6q-pcie.yaml > > index f13f87fddb3d..db1d0a04bde4 100644 > > --- a/Documentation/devicetree/bindings/pci/fsl,imx6q-pcie.yaml > > +++ b/Documentation/devicetree/bindings/pci/fsl,imx6q-pcie.yaml > > @@ -13,21 +13,13 @@ maintainers: > > description: |+ > > This PCIe host controller is based on the Synopsys DesignWare PCIe IP > > and thus inherits all the common properties defined in > snps,dw-pcie.yaml. > > + The controller instances are dual mode where in they can work > > + either in Root Port mode or Endpoint mode but one at a time. > > > > -properties: > > - compatible: > > - enum: > > - - fsl,imx6q-pcie > > - - fsl,imx6sx-pcie > > - - fsl,imx6qp-pcie > > - - fsl,imx7d-pcie > > - - fsl,imx8mq-pcie > > - - fsl,imx8mm-pcie > > - - fsl,imx8mp-pcie > > Compatibles should stay because these are not valid for EP schema. Okay. Best Regards Richard Zhu > > > - - fsl,imx8mm-pcie-ep > > - - fsl,imx8mq-pcie-ep > > - - fsl,imx8mp-pcie-ep > > + See fsl,imx6q-pcie-ep.yaml for details on the Endpoint mode device > > + tree bindings. > > > > > Best regards, > Krzysztof