> -----Original Message----- > From: Alexander Stein <alexander.stein@xxxxxxxxxxxxxxx> > Sent: 2024年10月18日 14:53 > To: Frank Li <frank.li@xxxxxxx>; Wei Fang <wei.fang@xxxxxxx> > Cc: davem@xxxxxxxxxxxxx; edumazet@xxxxxxxxxx; kuba@xxxxxxxxxx; > pabeni@xxxxxxxxxx; robh@xxxxxxxxxx; krzk+dt@xxxxxxxxxx; > conor+dt@xxxxxxxxxx; Vladimir Oltean <vladimir.oltean@xxxxxxx>; Claudiu > Manoil <claudiu.manoil@xxxxxxx>; Clark Wang <xiaoning.wang@xxxxxxx>; > christophe.leroy@xxxxxxxxxx; linux@xxxxxxxxxxxxxxx; bhelgaas@xxxxxxxxxx; > horms@xxxxxxxxxx; imx@xxxxxxxxxxxxxxx; netdev@xxxxxxxxxxxxxxx; > devicetree@xxxxxxxxxxxxxxx; linux-kernel@xxxxxxxxxxxxxxx; > linux-pci@xxxxxxxxxxxxxxx > Subject: Re: [PATCH v3 net-next 02/13] dt-bindings: net: add i.MX95 ENETC > support > > Hi, > > Am Freitag, 18. Oktober 2024, 03:20:55 CEST schrieb Wei Fang: > > > -----Original Message----- > > > From: Frank Li <frank.li@xxxxxxx> > > > Sent: 2024年10月18日 0:23 > > > To: Wei Fang <wei.fang@xxxxxxx> > > > Cc: davem@xxxxxxxxxxxxx; edumazet@xxxxxxxxxx; kuba@xxxxxxxxxx; > > > pabeni@xxxxxxxxxx; robh@xxxxxxxxxx; krzk+dt@xxxxxxxxxx; > > > conor+dt@xxxxxxxxxx; Vladimir Oltean <vladimir.oltean@xxxxxxx>; > > > conor+Claudiu > > > Manoil <claudiu.manoil@xxxxxxx>; Clark Wang > <xiaoning.wang@xxxxxxx>; > > > christophe.leroy@xxxxxxxxxx; linux@xxxxxxxxxxxxxxx; > > > bhelgaas@xxxxxxxxxx; horms@xxxxxxxxxx; imx@xxxxxxxxxxxxxxx; > > > netdev@xxxxxxxxxxxxxxx; devicetree@xxxxxxxxxxxxxxx; > > > linux-kernel@xxxxxxxxxxxxxxx; linux-pci@xxxxxxxxxxxxxxx > > > Subject: Re: [PATCH v3 net-next 02/13] dt-bindings: net: add i.MX95 > > > ENETC support > > > > > > On Thu, Oct 17, 2024 at 03:46:26PM +0800, Wei Fang wrote: > > > > The ENETC of i.MX95 has been upgraded to revision 4.1, and the > > > > vendor ID and device ID have also changed, so add the new > > > > compatible strings for i.MX95 ENETC. In addition, i.MX95 supports > > > > configuration of RGMII or RMII reference clock. > > > > > > > > Signed-off-by: Wei Fang <wei.fang@xxxxxxx> > > > > --- > > > > v2: Remove "nxp,imx95-enetc" compatible string. > > > > v3: > > > > 1. Add restriction to "clcoks" and "clock-names" properties and > > > > rename the clock, also remove the items from these two properties. > > > > 2. Remove unnecessary items for "pci1131,e101" compatible string. > > > > --- > > > > .../devicetree/bindings/net/fsl,enetc.yaml | 22 > ++++++++++++++++--- > > > > 1 file changed, 19 insertions(+), 3 deletions(-) > > > > > > > > diff --git a/Documentation/devicetree/bindings/net/fsl,enetc.yaml > > > > b/Documentation/devicetree/bindings/net/fsl,enetc.yaml > > > > index e152c93998fe..e418c3e6e6b1 100644 > > > > --- a/Documentation/devicetree/bindings/net/fsl,enetc.yaml > > > > +++ b/Documentation/devicetree/bindings/net/fsl,enetc.yaml > > > > @@ -20,10 +20,13 @@ maintainers: > > > > > > > > properties: > > > > compatible: > > > > - items: > > > > + oneOf: > > > > + - items: > > > > + - enum: > > > > + - pci1957,e100 > > > > + - const: fsl,enetc > > > > - enum: > > > > - - pci1957,e100 > > > > - - const: fsl,enetc > > > > + - pci1131,e101 > > > > > > > > reg: > > > > maxItems: 1 > > > > @@ -40,6 +43,19 @@ required: > > > > allOf: > > > > - $ref: /schemas/pci/pci-device.yaml > > > > - $ref: ethernet-controller.yaml > > > > + - if: > > > > + properties: > > > > + compatible: > > > > + contains: > > > > + enum: > > > > + - pci1131,e101 > > > > + then: > > > > + properties: > > > > + clocks: > > > > + maxItems: 1 > > > > + description: MAC transmit/receiver reference clock > > > > + clock-names: > > > > + const: ref > > > > > > Did you run CHECK_DTBS for your dts file? clocks\clock-names should > > > be under top 'properties" firstly. Then use 'if' restrict it. But I > > > am not sure for that. only dt_binding_check is not enough because > > > your example have not use clocks and clok-names. > > > > > > > I have run dtbs_check and dt_binding_check in my local env. there were > > no warnings and errors. > > Is there already the DT part somewhere? Do you mind sharing it? > I will prepare the DT patch when this series is applied. Below is my local patch of imx95.dtsi. FYI. diff --git a/arch/arm64/boot/dts/freescale/imx95.dtsi b/arch/arm64/boot/dts/freescale/imx95.dtsi index 03661e76550f..0f107a41b024 100644 --- a/arch/arm64/boot/dts/freescale/imx95.dtsi +++ b/arch/arm64/boot/dts/freescale/imx95.dtsi @@ -1609,7 +1609,7 @@ pcie1_ep: pcie-ep@4c380000 { netcmix_blk_ctrl: syscon@4c810000 { compatible = "nxp,imx95-netcmix-blk-ctrl", "syscon"; - reg = <0x0 0x4c810000 0x0 0x10000>; + reg = <0x0 0x4c810000 0x0 0x8>; #clock-cells = <1>; clocks = <&scmi_clk IMX95_CLK_BUSNETCMIX>; assigned-clocks = <&scmi_clk IMX95_CLK_BUSNETCMIX>; @@ -1638,5 +1638,95 @@ ddr-pmu@4e090dc0 { reg = <0x0 0x4e090dc0 0x0 0x200>; interrupts = <GIC_SPI 91 IRQ_TYPE_LEVEL_HIGH>; }; + + netc_blk_ctrl: netc-blk-ctrl@4cde0000 { + compatible = "nxp,imx95-netc-blk-ctrl"; + reg = <0x0 0x4cde0000 0x0 0x10000>, + <0x0 0x4cdf0000 0x0 0x10000>, + <0x0 0x4c81000c 0x0 0x18>; + reg-names = "ierb", "prb", "netcmix"; + #address-cells = <2>; + #size-cells = <2>; + ranges; + power-domains = <&scmi_devpd IMX95_PD_NETC>; + assigned-clocks = <&scmi_clk IMX95_CLK_ENET>, + <&scmi_clk IMX95_CLK_ENETREF>; + assigned-clock-parents = <&scmi_clk IMX95_CLK_SYSPLL1_PFD2>, + <&scmi_clk IMX95_CLK_SYSPLL1_PFD0>; + assigned-clock-rates = <666666666>, <250000000>; + clocks = <&scmi_clk IMX95_CLK_ENET>; + clock-names = "ipg"; + status = "disabled"; + + pcie_4ca00000: pcie@4ca00000 { + compatible = "pci-host-ecam-generic"; + reg = <0x0 0x4ca00000 0x0 0x100000>; + /* Must be 3. */ + #address-cells = <3>; + /* Must be 2. */ + #size-cells = <2>; + device_type = "pci"; + bus-range = <0x0 0x0>; + msi-map = <0x0 &its 0x60 0x1>, //ENETC0 PF + <0x10 &its 0x61 0x1>, //ENETC0 VF0 + <0x20 &its 0x62 0x1>, //ENETC0 VF1 + <0x40 &its 0x63 0x1>, //ENETC1 PF + <0x80 &its 0x64 0x1>, //ENETC2 PF + <0x90 &its 0x65 0x1>, //ENETC2 VF0 + <0xa0 &its 0x66 0x1>, //ENETC2 VF1 + <0xc0 &its 0x67 0x1>; //NETC Timer + /* ENETC0~2 and Timer BAR0 - non-prefetchable memory */ + ranges = <0x82000000 0x0 0x4cc00000 0x0 0x4cc00000 0x0 0xe0000 + /* Timer BAR2 - prefetchable memory */ + 0xc2000000 0x0 0x4cd00000 0x0 0x4cd00000 0x0 0x10000 + /* ENETC0~2: VF0-1 BAR0 - non-prefetchable memory */ + 0x82000000 0x0 0x4cd20000 0x0 0x4cd20000 0x0 0x60000 + /* ENETC0~2: VF0-1 BAR2 - prefetchable memory */ + 0xc2000000 0x0 0x4cd80000 0x0 0x4cd80000 0x0 0x60000>; + + enetc_port0: ethernet@0,0 { + compatible = "pci1131,e101"; + reg = <0x000000 0 0 0 0>; + clocks = <&scmi_clk IMX95_CLK_ENETREF>; + clock-names = "ref"; + status = "disabled"; + }; + + enetc_port1: ethernet@8,0 { + compatible = "pci1131,e101"; + reg = <0x004000 0 0 0 0>; + clocks = <&scmi_clk IMX95_CLK_ENETREF>; + clock-names = "ref"; + status = "disabled"; + }; + + enetc_port2: ethernet@10,0 { + compatible = "pci1131,e101"; + reg = <0x008000 0 0 0 0>; + status = "disabled"; + }; + }; + + pcie_4cb00000: pcie@4cb00000 { + compatible = "pci-host-ecam-generic"; + reg = <0x0 0x4cb00000 0x0 0x100000>; + #address-cells = <3>; + #size-cells = <2>; + device_type = "pci"; + bus-range = <0x1 0x1>; + /* EMDIO BAR0 - non-prefetchable memory */ + ranges = <0x82000000 0x0 0x4cce0000 0x0 0x4cce0000 0x0 0x20000 + /* EMDIO BAR2 - prefetchable memory */ + 0xc2000000 0x0 0x4cd10000 0x0 0x4cd10000 0x0 0x10000>; + + netc_emdio: mdio@0,0 { + compatible = "pci1131,ee00"; + reg = <0x010000 0 0 0 0>; + #address-cells = <1>; + #size-cells = <0>; + status = "disabled"; + }; + }; + }; }; };