Commit 573c3853 authored by David S. Miller's avatar David S. Miller
Browse files

Merge branch 'mt7986-WED-RX'



Lorenzo Bianconi says:

====================
introduce WED RX support to MT7986 SoC

Similar to TX counterpart available on MT7622 and MT7986, introduce
RX Wireless Ethernet Dispatch available on MT7986 SoC in order to
offload traffic received by wlan nic to the wired interfaces (lan/wan).

Changes since v3:
- remove reset property in ethsys dts node
- rely on readx_poll_timeout in wo mcu code
- fix typos
- move wo-ccif binding in soc folder
- use reserved-memory for wo-dlm
- improve wo-ccif binding

Changes since v2:
- rely on of_reserved_mem APIs in mcu code
- add some dts fixes
- rename {tx,rx}_wdma in {rx,tx}_wdma
- update entry in maintainers file

Changes since v1:
- fix sparse warnings
- rely on memory-region property in mt7622-wed.yaml
- some more binding fixes
====================

Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parents a07b3835 90050f80
Loading
Loading
Loading
Loading
+52 −0
Original line number Diff line number Diff line
@@ -29,6 +29,38 @@ properties:
  interrupts:
    maxItems: 1

  memory-region:
    items:
      - description: firmware EMI region
      - description: firmware ILM region
      - description: firmware DLM region
      - description: firmware CPU DATA region
      - description: firmware BOOT region

  memory-region-names:
    items:
      - const: wo-emi
      - const: wo-ilm
      - const: wo-dlm
      - const: wo-data
      - const: wo-boot

  mediatek,wo-ccif:
    $ref: /schemas/types.yaml#/definitions/phandle
    description: mediatek wed-wo controller interface.

allOf:
  - if:
      properties:
        compatible:
          contains:
            const: mediatek,mt7622-wed
    then:
      properties:
        memory-region-names: false
        memory-region: false
        mediatek,wo-ccif: false

required:
  - compatible
  - reg
@@ -49,3 +81,23 @@ examples:
        interrupts = <GIC_SPI 214 IRQ_TYPE_LEVEL_LOW>;
      };
    };

  - |
    #include <dt-bindings/interrupt-controller/arm-gic.h>
    #include <dt-bindings/interrupt-controller/irq.h>
    soc {
      #address-cells = <2>;
      #size-cells = <2>;

      wed@15010000 {
        compatible = "mediatek,mt7986-wed", "syscon";
        reg = <0 0x15010000 0 0x1000>;
        interrupts = <GIC_SPI 205 IRQ_TYPE_LEVEL_HIGH>;

        memory-region = <&wo_emi>, <&wo_ilm>, <&wo_dlm>,
                        <&wo_data>, <&wo_boot>;
        memory-region-names = "wo-emi", "wo-ilm", "wo-dlm",
                              "wo-data", "wo-boot";
        mediatek,wo-ccif = <&wo_ccif0>;
      };
    };
+51 −0
Original line number Diff line number Diff line
# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
%YAML 1.2
---
$id: http://devicetree.org/schemas/soc/mediatek/mediatek,mt7986-wo-ccif.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#

title: MediaTek Wireless Ethernet Dispatch (WED) WO controller interface for MT7986

maintainers:
  - Lorenzo Bianconi <lorenzo@kernel.org>
  - Felix Fietkau <nbd@nbd.name>

description:
  The MediaTek wo-ccif provides a configuration interface for WED WO
  controller used to perfrom offload rx packet processing (e.g. 802.11
  aggregation packet reordering or rx header translation) on MT7986 soc.

properties:
  compatible:
    items:
      - enum:
          - mediatek,mt7986-wo-ccif
      - const: syscon

  reg:
    maxItems: 1

  interrupts:
    maxItems: 1

required:
  - compatible
  - reg
  - interrupts

additionalProperties: false

examples:
  - |
    #include <dt-bindings/interrupt-controller/arm-gic.h>
    #include <dt-bindings/interrupt-controller/irq.h>
    soc {
      #address-cells = <2>;
      #size-cells = <2>;

      syscon@151a5000 {
        compatible = "mediatek,mt7986-wo-ccif", "syscon";
        reg = <0 0x151a5000 0 0x1000>;
        interrupts = <GIC_SPI 205 IRQ_TYPE_LEVEL_HIGH>;
      };
    };
+1 −0
Original line number Diff line number Diff line
@@ -12926,6 +12926,7 @@ M: Felix Fietkau <nbd@nbd.name>
M:	John Crispin <john@phrozen.org>
M:	Sean Wang <sean.wang@mediatek.com>
M:	Mark Lee <Mark-MC.Lee@mediatek.com>
M:	Lorenzo Bianconi <lorenzo@kernel.org>
L:	netdev@vger.kernel.org
S:	Maintained
F:	drivers/net/ethernet/mediatek/
+65 −0
Original line number Diff line number Diff line
@@ -76,6 +76,47 @@
			no-map;
			reg = <0 0x4fc00000 0 0x00100000>;
		};

		wo_emi0: wo-emi@4fd00000 {
			reg = <0 0x4fd00000 0 0x40000>;
			no-map;
		};

		wo_emi1: wo-emi@4fd40000 {
			reg = <0 0x4fd40000 0 0x40000>;
			no-map;
		};

		wo_ilm0: wo-ilm@151e0000 {
			reg = <0 0x151e0000 0 0x8000>;
			no-map;
		};

		wo_ilm1: wo-ilm@151f0000 {
			reg = <0 0x151f0000 0 0x8000>;
			no-map;
		};

		wo_data: wo-data@4fd80000 {
			reg = <0 0x4fd80000 0 0x240000>;
			no-map;
		};

		wo_dlm0: wo-dlm@151e8000 {
			reg = <0 0x151e8000 0 0x2000>;
			no-map;
		};

		wo_dlm1: wo-dlm@151f8000 {
			reg = <0 0x151f8000 0 0x2000>;
			no-map;
		};

		wo_boot: wo-boot@15194000 {
			reg = <0 0x15194000 0 0x1000>;
			no-map;
		};

	};

	timer {
@@ -240,6 +281,11 @@
			reg = <0 0x15010000 0 0x1000>;
			interrupt-parent = <&gic>;
			interrupts = <GIC_SPI 205 IRQ_TYPE_LEVEL_HIGH>;
			memory-region = <&wo_emi0>, <&wo_ilm0>, <&wo_dlm0>,
					<&wo_data>, <&wo_boot>;
			memory-region-names = "wo-emi", "wo-ilm", "wo-dlm",
					      "wo-data", "wo-boot";
			mediatek,wo-ccif = <&wo_ccif0>;
		};

		wed1: wed@15011000 {
@@ -248,6 +294,25 @@
			reg = <0 0x15011000 0 0x1000>;
			interrupt-parent = <&gic>;
			interrupts = <GIC_SPI 206 IRQ_TYPE_LEVEL_HIGH>;
			memory-region = <&wo_emi1>, <&wo_ilm1>, <&wo_dlm1>,
					<&wo_data>, <&wo_boot>;
			memory-region-names = "wo-emi", "wo-ilm", "wo-dlm",
					      "wo-data", "wo-boot";
			mediatek,wo-ccif = <&wo_ccif1>;
		};

		wo_ccif0: syscon@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: syscon@151ad000 {
			compatible = "mediatek,mt7986-wo-ccif", "syscon";
			reg = <0 0x151ad000 0 0x1000>;
			interrupt-parent = <&gic>;
			interrupts = <GIC_SPI 212 IRQ_TYPE_LEVEL_HIGH>;
		};

		eth: ethernet@15100000 {
+1 −1
Original line number Diff line number Diff line
@@ -5,7 +5,7 @@

obj-$(CONFIG_NET_MEDIATEK_SOC) += mtk_eth.o
mtk_eth-y := mtk_eth_soc.o mtk_sgmii.o mtk_eth_path.o mtk_ppe.o mtk_ppe_debugfs.o mtk_ppe_offload.o
mtk_eth-$(CONFIG_NET_MEDIATEK_SOC_WED) += mtk_wed.o
mtk_eth-$(CONFIG_NET_MEDIATEK_SOC_WED) += mtk_wed.o mtk_wed_mcu.o mtk_wed_wo.o
ifdef CONFIG_DEBUG_FS
mtk_eth-$(CONFIG_NET_MEDIATEK_SOC_WED) += mtk_wed_debugfs.o
endif
Loading