Message ID | 41d67d36481f3099f953a462a80e99a4fcd477dd.1666549145.git.lorenzo@kernel.org (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | introduce WED RX support to MT7986 SoC | expand |
On 23/10/2022 14:28, Lorenzo Bianconi wrote: > Similar to TX Wireless Ethernet Dispatch, introduce RX Wireless Ethernet > Dispatch to offload traffic received by the wlan interface to lan/wan > one. Please use scripts/get_maintainers.pl to get a list of necessary people and lists to CC. It might happen, that command when run on an older kernel, gives you outdated entries. Therefore please be sure you base your patches on recent Linux kernel. > > Co-developed-by: Sujuan Chen <sujuan.chen@mediatek.com> > Signed-off-by: Sujuan Chen <sujuan.chen@mediatek.com> > Signed-off-by: Lorenzo Bianconi <lorenzo@kernel.org> > --- > arch/arm64/boot/dts/mediatek/mt7986a.dtsi | 73 +++++++++++++++++++++++ > 1 file changed, 73 insertions(+) > > diff --git a/arch/arm64/boot/dts/mediatek/mt7986a.dtsi b/arch/arm64/boot/dts/mediatek/mt7986a.dtsi > index 72e0d9722e07..e3b05280dcb6 100644 > --- a/arch/arm64/boot/dts/mediatek/mt7986a.dtsi > +++ b/arch/arm64/boot/dts/mediatek/mt7986a.dtsi > @@ -8,6 +8,7 @@ > #include <dt-bindings/interrupt-controller/arm-gic.h> > #include <dt-bindings/clock/mt7986-clk.h> > #include <dt-bindings/reset/mt7986-resets.h> > +#include <dt-bindings/reset/ti-syscon.h> > > / { > interrupt-parent = <&gic>; > @@ -76,6 +77,31 @@ wmcpu_emi: wmcpu-reserved@4fc00000 { > no-map; > reg = <0 0x4fc00000 0 0x00100000>; > }; > + > + wo_emi0: wo-emi0@4fd00000 { > + reg = <0 0x4fd00000 0 0x40000>; > + no-map; > + }; > + > + wo_emi1: wo-emi1@4fd40000 { > + reg = <0 0x4fd40000 0 0x40000>; > + no-map; > + }; > + > + wo_ilm0: wo-ilm0@151e0000 { > + reg = <0 0x151e0000 0 0x8000>; > + no-map; > + }; > + > + wo_ilm1: wo-ilm1@151f0000 { > + reg = <0 0x151f0000 0 0x8000>; > + no-map; > + }; > + > + wo_data: wo-data@4fd80000 { > + reg = <0 0x4fd80000 0 0x240000>; > + no-map; > + }; > }; > > timer { > @@ -226,6 +252,12 @@ ethsys: syscon@15000000 { > reg = <0 0x15000000 0 0x1000>; > #clock-cells = <1>; > #reset-cells = <1>; > + > + ethsysrst: reset-controller { > + compatible = "ti,syscon-reset"; > + #reset-cells = <1>; > + ti,reset-bits = <0x34 4 0x34 4 0x34 4 (ASSERT_SET | DEASSERT_CLEAR | STATUS_SET)>; > + }; > }; > > wed_pcie: wed-pcie@10003000 { > @@ -240,6 +272,10 @@ wed0: wed@15010000 { > reg = <0 0x15010000 0 0x1000>; > interrupt-parent = <&gic>; > interrupts = <GIC_SPI 205 IRQ_TYPE_LEVEL_HIGH>; > + memory-region = <&wo_emi0>, <&wo_ilm0>, <&wo_data>; > + mediatek,wo-ccif = <&wo_ccif0>; > + mediatek,wo-dlm = <&wo_dlm0>; > + mediatek,wo-boot = <&wo_boot>; > }; > > wed1: wed@15011000 { > @@ -248,6 +284,43 @@ wed1: wed@15011000 { > reg = <0 0x15011000 0 0x1000>; > interrupt-parent = <&gic>; > interrupts = <GIC_SPI 206 IRQ_TYPE_LEVEL_HIGH>; > + memory-region = <&wo_emi1>, <&wo_ilm1>, <&wo_data>; > + mediatek,wo-ccif = <&wo_ccif1>; > + mediatek,wo-dlm = <&wo_dlm1>; > + mediatek,wo-boot = <&wo_boot>; > + }; > + > + wo_ccif0: wo-ccif1@151a5000 { Node names should be generic. https://devicetree-specification.readthedocs.io/en/latest/chapter2-devicetree-basics.html#generic-names-recommendation "1" suffix is for sure not generic. Neither wo-ccif is... unless there is some article on Wikipedia about it? Or maybe generic name is not possible to get, which happens... > + compatible = "mediatek,mt7986-wo-ccif","syscon"; > + reg = <0 0x151a5000 0 0x1000>; > + interrupt-parent = <&gic>; > + interrupts = <GIC_SPI 211 IRQ_TYPE_LEVEL_HIGH>; > + }; > + > + wo_ccif1: wo-ccif1@151ad000 { > + compatible = "mediatek,mt7986-wo-ccif","syscon"; > + reg = <0 0x151ad000 0 0x1000>; > + interrupt-parent = <&gic>; > + interrupts = <GIC_SPI 212 IRQ_TYPE_LEVEL_HIGH>; > + }; > + > + wo_dlm0: wo-dlm@151e8000 { > + compatible = "mediatek,mt7986-wo-dlm"; > + reg = <0 0x151e8000 0 0x2000>; > + resets = <ðsysrst 0>; > + reset-names = "wocpu_rst"; > + }; > + > + wo_dlm1: wo-dlm@0x151f8000 { > + compatible = "mediatek,mt7986-wo-dlm"; > + reg = <0 0x151f8000 0 0x2000>; > + resets = <ðsysrst 0>; > + reset-names = "wocpu_rst"; > + }; > + > + wo_boot: wo-boot@15194000 { > + compatible = "mediatek,mt7986-wo-boot","syscon"; Missing space. > + reg = <0 0x15194000 0 0x1000>; > }; > > eth: ethernet@15100000 { Best regards, Krzysztof
> On 23/10/2022 14:28, Lorenzo Bianconi wrote: > > Similar to TX Wireless Ethernet Dispatch, introduce RX Wireless Ethernet > > Dispatch to offload traffic received by the wlan interface to lan/wan > > one. > > Please use scripts/get_maintainers.pl to get a list of necessary people > and lists to CC. It might happen, that command when run on an older > kernel, gives you outdated entries. Therefore please be sure you base > your patches on recent Linux kernel. Hi Krzysztof, Ack, sorry. I will do it in v3. > > > > > Co-developed-by: Sujuan Chen <sujuan.chen@mediatek.com> > > Signed-off-by: Sujuan Chen <sujuan.chen@mediatek.com> > > Signed-off-by: Lorenzo Bianconi <lorenzo@kernel.org> > > --- > > arch/arm64/boot/dts/mediatek/mt7986a.dtsi | 73 +++++++++++++++++++++++ > > 1 file changed, 73 insertions(+) > > > > diff --git a/arch/arm64/boot/dts/mediatek/mt7986a.dtsi b/arch/arm64/boot/dts/mediatek/mt7986a.dtsi > > index 72e0d9722e07..e3b05280dcb6 100644 > > --- a/arch/arm64/boot/dts/mediatek/mt7986a.dtsi > > +++ b/arch/arm64/boot/dts/mediatek/mt7986a.dtsi > > @@ -8,6 +8,7 @@ > > #include <dt-bindings/interrupt-controller/arm-gic.h> > > #include <dt-bindings/clock/mt7986-clk.h> > > #include <dt-bindings/reset/mt7986-resets.h> > > +#include <dt-bindings/reset/ti-syscon.h> > > > > / { > > interrupt-parent = <&gic>; > > @@ -76,6 +77,31 @@ wmcpu_emi: wmcpu-reserved@4fc00000 { > > no-map; > > reg = <0 0x4fc00000 0 0x00100000>; > > }; > > + > > + wo_emi0: wo-emi0@4fd00000 { > > + reg = <0 0x4fd00000 0 0x40000>; > > + no-map; > > + }; > > + > > + wo_emi1: wo-emi1@4fd40000 { > > + reg = <0 0x4fd40000 0 0x40000>; > > + no-map; > > + }; > > + > > + wo_ilm0: wo-ilm0@151e0000 { > > + reg = <0 0x151e0000 0 0x8000>; > > + no-map; > > + }; > > + > > + wo_ilm1: wo-ilm1@151f0000 { > > + reg = <0 0x151f0000 0 0x8000>; > > + no-map; > > + }; > > + > > + wo_data: wo-data@4fd80000 { > > + reg = <0 0x4fd80000 0 0x240000>; > > + no-map; > > + }; > > }; > > > > timer { > > @@ -226,6 +252,12 @@ ethsys: syscon@15000000 { > > reg = <0 0x15000000 0 0x1000>; > > #clock-cells = <1>; > > #reset-cells = <1>; > > + > > + ethsysrst: reset-controller { > > + compatible = "ti,syscon-reset"; > > + #reset-cells = <1>; > > + ti,reset-bits = <0x34 4 0x34 4 0x34 4 (ASSERT_SET | DEASSERT_CLEAR | STATUS_SET)>; > > + }; > > }; > > > > wed_pcie: wed-pcie@10003000 { > > @@ -240,6 +272,10 @@ wed0: wed@15010000 { > > reg = <0 0x15010000 0 0x1000>; > > interrupt-parent = <&gic>; > > interrupts = <GIC_SPI 205 IRQ_TYPE_LEVEL_HIGH>; > > + memory-region = <&wo_emi0>, <&wo_ilm0>, <&wo_data>; > > + mediatek,wo-ccif = <&wo_ccif0>; > > + mediatek,wo-dlm = <&wo_dlm0>; > > + mediatek,wo-boot = <&wo_boot>; > > }; > > > > wed1: wed@15011000 { > > @@ -248,6 +284,43 @@ wed1: wed@15011000 { > > reg = <0 0x15011000 0 0x1000>; > > interrupt-parent = <&gic>; > > interrupts = <GIC_SPI 206 IRQ_TYPE_LEVEL_HIGH>; > > + memory-region = <&wo_emi1>, <&wo_ilm1>, <&wo_data>; > > + mediatek,wo-ccif = <&wo_ccif1>; > > + mediatek,wo-dlm = <&wo_dlm1>; > > + mediatek,wo-boot = <&wo_boot>; > > + }; > > + > > + wo_ccif0: wo-ccif1@151a5000 { > > Node names should be generic. > https://devicetree-specification.readthedocs.io/en/latest/chapter2-devicetree-basics.html#generic-names-recommendation > > "1" suffix is for sure not generic. Neither wo-ccif is... unless there > is some article on Wikipedia about it? Or maybe generic name is not > possible to get, which happens... I think we can use "syscon" for wo_ccif and wo_boot. I can't find a better name for wo_dlm since afaik it is a hw ring used for packet processing. What do you think? Regards, Lorenzo > > > + compatible = "mediatek,mt7986-wo-ccif","syscon"; > > + reg = <0 0x151a5000 0 0x1000>; > > + interrupt-parent = <&gic>; > > + interrupts = <GIC_SPI 211 IRQ_TYPE_LEVEL_HIGH>; > > + }; > > + > > + wo_ccif1: wo-ccif1@151ad000 { > > + compatible = "mediatek,mt7986-wo-ccif","syscon"; > > + reg = <0 0x151ad000 0 0x1000>; > > + interrupt-parent = <&gic>; > > + interrupts = <GIC_SPI 212 IRQ_TYPE_LEVEL_HIGH>; > > + }; > > + > > + wo_dlm0: wo-dlm@151e8000 { > > + compatible = "mediatek,mt7986-wo-dlm"; > > + reg = <0 0x151e8000 0 0x2000>; > > + resets = <ðsysrst 0>; > > + reset-names = "wocpu_rst"; > > + }; > > + > > + wo_dlm1: wo-dlm@0x151f8000 { > > + compatible = "mediatek,mt7986-wo-dlm"; > > + reg = <0 0x151f8000 0 0x2000>; > > + resets = <ðsysrst 0>; > > + reset-names = "wocpu_rst"; > > + }; > > + > > + wo_boot: wo-boot@15194000 { > > + compatible = "mediatek,mt7986-wo-boot","syscon"; > > Missing space. > > > + reg = <0 0x15194000 0 0x1000>; > > }; > > > > eth: ethernet@15100000 { > > Best regards, > Krzysztof >
diff --git a/arch/arm64/boot/dts/mediatek/mt7986a.dtsi b/arch/arm64/boot/dts/mediatek/mt7986a.dtsi index 72e0d9722e07..e3b05280dcb6 100644 --- a/arch/arm64/boot/dts/mediatek/mt7986a.dtsi +++ b/arch/arm64/boot/dts/mediatek/mt7986a.dtsi @@ -8,6 +8,7 @@ #include <dt-bindings/interrupt-controller/arm-gic.h> #include <dt-bindings/clock/mt7986-clk.h> #include <dt-bindings/reset/mt7986-resets.h> +#include <dt-bindings/reset/ti-syscon.h> / { interrupt-parent = <&gic>; @@ -76,6 +77,31 @@ wmcpu_emi: wmcpu-reserved@4fc00000 { no-map; reg = <0 0x4fc00000 0 0x00100000>; }; + + wo_emi0: wo-emi0@4fd00000 { + reg = <0 0x4fd00000 0 0x40000>; + no-map; + }; + + wo_emi1: wo-emi1@4fd40000 { + reg = <0 0x4fd40000 0 0x40000>; + no-map; + }; + + wo_ilm0: wo-ilm0@151e0000 { + reg = <0 0x151e0000 0 0x8000>; + no-map; + }; + + wo_ilm1: wo-ilm1@151f0000 { + reg = <0 0x151f0000 0 0x8000>; + no-map; + }; + + wo_data: wo-data@4fd80000 { + reg = <0 0x4fd80000 0 0x240000>; + no-map; + }; }; timer { @@ -226,6 +252,12 @@ ethsys: syscon@15000000 { reg = <0 0x15000000 0 0x1000>; #clock-cells = <1>; #reset-cells = <1>; + + ethsysrst: reset-controller { + compatible = "ti,syscon-reset"; + #reset-cells = <1>; + ti,reset-bits = <0x34 4 0x34 4 0x34 4 (ASSERT_SET | DEASSERT_CLEAR | STATUS_SET)>; + }; }; wed_pcie: wed-pcie@10003000 { @@ -240,6 +272,10 @@ wed0: wed@15010000 { reg = <0 0x15010000 0 0x1000>; interrupt-parent = <&gic>; interrupts = <GIC_SPI 205 IRQ_TYPE_LEVEL_HIGH>; + memory-region = <&wo_emi0>, <&wo_ilm0>, <&wo_data>; + mediatek,wo-ccif = <&wo_ccif0>; + mediatek,wo-dlm = <&wo_dlm0>; + mediatek,wo-boot = <&wo_boot>; }; wed1: wed@15011000 { @@ -248,6 +284,43 @@ wed1: wed@15011000 { reg = <0 0x15011000 0 0x1000>; interrupt-parent = <&gic>; interrupts = <GIC_SPI 206 IRQ_TYPE_LEVEL_HIGH>; + memory-region = <&wo_emi1>, <&wo_ilm1>, <&wo_data>; + mediatek,wo-ccif = <&wo_ccif1>; + mediatek,wo-dlm = <&wo_dlm1>; + mediatek,wo-boot = <&wo_boot>; + }; + + wo_ccif0: wo-ccif1@151a5000 { + compatible = "mediatek,mt7986-wo-ccif","syscon"; + reg = <0 0x151a5000 0 0x1000>; + interrupt-parent = <&gic>; + interrupts = <GIC_SPI 211 IRQ_TYPE_LEVEL_HIGH>; + }; + + wo_ccif1: wo-ccif1@151ad000 { + compatible = "mediatek,mt7986-wo-ccif","syscon"; + reg = <0 0x151ad000 0 0x1000>; + interrupt-parent = <&gic>; + interrupts = <GIC_SPI 212 IRQ_TYPE_LEVEL_HIGH>; + }; + + wo_dlm0: wo-dlm@151e8000 { + compatible = "mediatek,mt7986-wo-dlm"; + reg = <0 0x151e8000 0 0x2000>; + resets = <ðsysrst 0>; + reset-names = "wocpu_rst"; + }; + + wo_dlm1: wo-dlm@0x151f8000 { + compatible = "mediatek,mt7986-wo-dlm"; + reg = <0 0x151f8000 0 0x2000>; + resets = <ðsysrst 0>; + reset-names = "wocpu_rst"; + }; + + wo_boot: wo-boot@15194000 { + compatible = "mediatek,mt7986-wo-boot","syscon"; + reg = <0 0x15194000 0 0x1000>; }; eth: ethernet@15100000 {