RE: [PATCH v3 net-next 02/13] dt-bindings: net: add i.MX95 ENETC support

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



> -----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";
+                               };
+                       };
+               };
        };
 };




[Index of Archives]     [Device Tree Compilter]     [Device Tree Spec]     [Linux Driver Backports]     [Video for Linux]     [Linux USB Devel]     [Linux PCI Devel]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [XFree86]     [Yosemite Backpacking]


  Powered by Linux