155c1c4e9SLorenzo Bianconi# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
255c1c4e9SLorenzo Bianconi%YAML 1.2
355c1c4e9SLorenzo Bianconi---
455c1c4e9SLorenzo Bianconi$id: "http://devicetree.org/schemas/arm/mediatek/mediatek,mt7622-wed.yaml#"
555c1c4e9SLorenzo Bianconi$schema: "http://devicetree.org/meta-schemas/core.yaml#"
655c1c4e9SLorenzo Bianconi
755c1c4e9SLorenzo Bianconititle: MediaTek Wireless Ethernet Dispatch Controller for MT7622
855c1c4e9SLorenzo Bianconi
955c1c4e9SLorenzo Bianconimaintainers:
1055c1c4e9SLorenzo Bianconi  - Lorenzo Bianconi <lorenzo@kernel.org>
1155c1c4e9SLorenzo Bianconi  - Felix Fietkau <nbd@nbd.name>
1255c1c4e9SLorenzo Bianconi
1355c1c4e9SLorenzo Bianconidescription:
1455c1c4e9SLorenzo Bianconi  The mediatek wireless ethernet dispatch controller can be configured to
1555c1c4e9SLorenzo Bianconi  intercept and handle access to the WLAN DMA queues and PCIe interrupts
1655c1c4e9SLorenzo Bianconi  and implement hardware flow offloading from ethernet to WLAN.
1755c1c4e9SLorenzo Bianconi
1855c1c4e9SLorenzo Bianconiproperties:
1955c1c4e9SLorenzo Bianconi  compatible:
2055c1c4e9SLorenzo Bianconi    items:
2155c1c4e9SLorenzo Bianconi      - enum:
2255c1c4e9SLorenzo Bianconi          - mediatek,mt7622-wed
2322ecfce1SLorenzo Bianconi          - mediatek,mt7986-wed
2455c1c4e9SLorenzo Bianconi      - const: syscon
2555c1c4e9SLorenzo Bianconi
2655c1c4e9SLorenzo Bianconi  reg:
2755c1c4e9SLorenzo Bianconi    maxItems: 1
2855c1c4e9SLorenzo Bianconi
2955c1c4e9SLorenzo Bianconi  interrupts:
3055c1c4e9SLorenzo Bianconi    maxItems: 1
3155c1c4e9SLorenzo Bianconi
32*ceb82ac2SLorenzo Bianconi  memory-region:
33*ceb82ac2SLorenzo Bianconi    items:
34*ceb82ac2SLorenzo Bianconi      - description: firmware EMI region
35*ceb82ac2SLorenzo Bianconi      - description: firmware ILM region
36*ceb82ac2SLorenzo Bianconi      - description: firmware DLM region
37*ceb82ac2SLorenzo Bianconi      - description: firmware CPU DATA region
38*ceb82ac2SLorenzo Bianconi      - description: firmware BOOT region
39*ceb82ac2SLorenzo Bianconi
40*ceb82ac2SLorenzo Bianconi  memory-region-names:
41*ceb82ac2SLorenzo Bianconi    items:
42*ceb82ac2SLorenzo Bianconi      - const: wo-emi
43*ceb82ac2SLorenzo Bianconi      - const: wo-ilm
44*ceb82ac2SLorenzo Bianconi      - const: wo-dlm
45*ceb82ac2SLorenzo Bianconi      - const: wo-data
46*ceb82ac2SLorenzo Bianconi      - const: wo-boot
47*ceb82ac2SLorenzo Bianconi
48*ceb82ac2SLorenzo Bianconi  mediatek,wo-ccif:
49*ceb82ac2SLorenzo Bianconi    $ref: /schemas/types.yaml#/definitions/phandle
50*ceb82ac2SLorenzo Bianconi    description: mediatek wed-wo controller interface.
51*ceb82ac2SLorenzo Bianconi
52*ceb82ac2SLorenzo BianconiallOf:
53*ceb82ac2SLorenzo Bianconi  - if:
54*ceb82ac2SLorenzo Bianconi      properties:
55*ceb82ac2SLorenzo Bianconi        compatible:
56*ceb82ac2SLorenzo Bianconi          contains:
57*ceb82ac2SLorenzo Bianconi            const: mediatek,mt7622-wed
58*ceb82ac2SLorenzo Bianconi    then:
59*ceb82ac2SLorenzo Bianconi      properties:
60*ceb82ac2SLorenzo Bianconi        memory-region-names: false
61*ceb82ac2SLorenzo Bianconi        memory-region: false
62*ceb82ac2SLorenzo Bianconi        mediatek,wo-ccif: false
63*ceb82ac2SLorenzo Bianconi
6455c1c4e9SLorenzo Bianconirequired:
6555c1c4e9SLorenzo Bianconi  - compatible
6655c1c4e9SLorenzo Bianconi  - reg
6755c1c4e9SLorenzo Bianconi  - interrupts
6855c1c4e9SLorenzo Bianconi
6955c1c4e9SLorenzo BianconiadditionalProperties: false
7055c1c4e9SLorenzo Bianconi
7155c1c4e9SLorenzo Bianconiexamples:
7255c1c4e9SLorenzo Bianconi  - |
7355c1c4e9SLorenzo Bianconi    #include <dt-bindings/interrupt-controller/arm-gic.h>
7455c1c4e9SLorenzo Bianconi    #include <dt-bindings/interrupt-controller/irq.h>
7555c1c4e9SLorenzo Bianconi    soc {
7655c1c4e9SLorenzo Bianconi      #address-cells = <2>;
7755c1c4e9SLorenzo Bianconi      #size-cells = <2>;
7855c1c4e9SLorenzo Bianconi      wed0: wed@1020a000 {
7955c1c4e9SLorenzo Bianconi        compatible = "mediatek,mt7622-wed","syscon";
8055c1c4e9SLorenzo Bianconi        reg = <0 0x1020a000 0 0x1000>;
8155c1c4e9SLorenzo Bianconi        interrupts = <GIC_SPI 214 IRQ_TYPE_LEVEL_LOW>;
8255c1c4e9SLorenzo Bianconi      };
8355c1c4e9SLorenzo Bianconi    };
84*ceb82ac2SLorenzo Bianconi
85*ceb82ac2SLorenzo Bianconi  - |
86*ceb82ac2SLorenzo Bianconi    #include <dt-bindings/interrupt-controller/arm-gic.h>
87*ceb82ac2SLorenzo Bianconi    #include <dt-bindings/interrupt-controller/irq.h>
88*ceb82ac2SLorenzo Bianconi    soc {
89*ceb82ac2SLorenzo Bianconi      #address-cells = <2>;
90*ceb82ac2SLorenzo Bianconi      #size-cells = <2>;
91*ceb82ac2SLorenzo Bianconi
92*ceb82ac2SLorenzo Bianconi      wed@15010000 {
93*ceb82ac2SLorenzo Bianconi        compatible = "mediatek,mt7986-wed", "syscon";
94*ceb82ac2SLorenzo Bianconi        reg = <0 0x15010000 0 0x1000>;
95*ceb82ac2SLorenzo Bianconi        interrupts = <GIC_SPI 205 IRQ_TYPE_LEVEL_HIGH>;
96*ceb82ac2SLorenzo Bianconi
97*ceb82ac2SLorenzo Bianconi        memory-region = <&wo_emi>, <&wo_ilm>, <&wo_dlm>,
98*ceb82ac2SLorenzo Bianconi                        <&wo_data>, <&wo_boot>;
99*ceb82ac2SLorenzo Bianconi        memory-region-names = "wo-emi", "wo-ilm", "wo-dlm",
100*ceb82ac2SLorenzo Bianconi                              "wo-data", "wo-boot";
101*ceb82ac2SLorenzo Bianconi        mediatek,wo-ccif = <&wo_ccif0>;
102*ceb82ac2SLorenzo Bianconi      };
103*ceb82ac2SLorenzo Bianconi    };
104