1// SPDX-License-Identifier: GPL-2.0-only OR MIT 2 3#include <dt-bindings/clock/mediatek,mt7981-clk.h> 4#include <dt-bindings/interrupt-controller/arm-gic.h> 5#include <dt-bindings/reset/mt7986-resets.h> 6 7/ { 8 compatible = "mediatek,mt7981b"; 9 interrupt-parent = <&gic>; 10 #address-cells = <2>; 11 #size-cells = <2>; 12 13 cpus { 14 #address-cells = <1>; 15 #size-cells = <0>; 16 17 cpu@0 { 18 compatible = "arm,cortex-a53"; 19 reg = <0x0>; 20 device_type = "cpu"; 21 enable-method = "psci"; 22 }; 23 24 cpu@1 { 25 compatible = "arm,cortex-a53"; 26 reg = <0x1>; 27 device_type = "cpu"; 28 enable-method = "psci"; 29 }; 30 }; 31 32 oscillator-40m { 33 compatible = "fixed-clock"; 34 clock-frequency = <40000000>; 35 clock-output-names = "clkxtal"; 36 #clock-cells = <0>; 37 }; 38 39 psci { 40 compatible = "arm,psci-1.0"; 41 method = "smc"; 42 }; 43 44 soc { 45 compatible = "simple-bus"; 46 ranges; 47 #address-cells = <2>; 48 #size-cells = <2>; 49 50 gic: interrupt-controller@c000000 { 51 compatible = "arm,gic-v3"; 52 reg = <0 0x0c000000 0 0x40000>, /* GICD */ 53 <0 0x0c080000 0 0x200000>; /* GICR */ 54 interrupt-parent = <&gic>; 55 interrupts = <GIC_PPI 9 IRQ_TYPE_LEVEL_HIGH>; 56 interrupt-controller; 57 #interrupt-cells = <3>; 58 }; 59 60 infracfg: clock-controller@10001000 { 61 compatible = "mediatek,mt7981-infracfg", "syscon"; 62 reg = <0 0x10001000 0 0x1000>; 63 #clock-cells = <1>; 64 }; 65 66 topckgen: clock-controller@1001b000 { 67 compatible = "mediatek,mt7981-topckgen", "syscon"; 68 reg = <0 0x1001b000 0 0x1000>; 69 #clock-cells = <1>; 70 }; 71 72 watchdog: watchdog@1001c000 { 73 compatible = "mediatek,mt7986-wdt"; 74 reg = <0 0x1001c000 0 0x1000>; 75 interrupts = <GIC_SPI 110 IRQ_TYPE_LEVEL_HIGH>; 76 #reset-cells = <1>; 77 }; 78 79 apmixedsys: clock-controller@1001e000 { 80 compatible = "mediatek,mt7981-apmixedsys"; 81 reg = <0 0x1001e000 0 0x1000>; 82 #clock-cells = <1>; 83 }; 84 85 pwm@10048000 { 86 compatible = "mediatek,mt7981-pwm"; 87 reg = <0 0x10048000 0 0x1000>; 88 clocks = <&infracfg CLK_INFRA_PWM_STA>, 89 <&infracfg CLK_INFRA_PWM_HCK>, 90 <&infracfg CLK_INFRA_PWM1_CK>, 91 <&infracfg CLK_INFRA_PWM2_CK>, 92 <&infracfg CLK_INFRA_PWM3_CK>; 93 clock-names = "top", "main", "pwm1", "pwm2", "pwm3"; 94 #pwm-cells = <2>; 95 }; 96 97 serial@11002000 { 98 compatible = "mediatek,mt7981-uart", "mediatek,mt6577-uart"; 99 reg = <0 0x11002000 0 0x100>; 100 interrupts = <GIC_SPI 123 IRQ_TYPE_LEVEL_HIGH>; 101 interrupt-names = "uart", "wakeup"; 102 clocks = <&infracfg CLK_INFRA_UART0_SEL>, 103 <&infracfg CLK_INFRA_UART0_CK>; 104 clock-names = "baud", "bus"; 105 status = "disabled"; 106 }; 107 108 serial@11003000 { 109 compatible = "mediatek,mt7981-uart", "mediatek,mt6577-uart"; 110 reg = <0 0x11003000 0 0x100>; 111 interrupts = <GIC_SPI 124 IRQ_TYPE_LEVEL_HIGH>; 112 interrupt-names = "uart", "wakeup"; 113 clocks = <&infracfg CLK_INFRA_UART1_SEL>, 114 <&infracfg CLK_INFRA_UART1_CK>; 115 clock-names = "baud", "bus"; 116 status = "disabled"; 117 }; 118 119 serial@11004000 { 120 compatible = "mediatek,mt7981-uart", "mediatek,mt6577-uart"; 121 reg = <0 0x11004000 0 0x100>; 122 interrupts = <GIC_SPI 125 IRQ_TYPE_LEVEL_HIGH>; 123 interrupt-names = "uart", "wakeup"; 124 clocks = <&infracfg CLK_INFRA_UART2_SEL>, 125 <&infracfg CLK_INFRA_UART2_CK>; 126 clock-names = "baud", "bus"; 127 status = "disabled"; 128 }; 129 130 i2c@11007000 { 131 compatible = "mediatek,mt7981-i2c"; 132 reg = <0 0x11007000 0 0x1000>, 133 <0 0x10217080 0 0x80>; 134 interrupts = <GIC_SPI 136 IRQ_TYPE_LEVEL_HIGH>; 135 clocks = <&infracfg CLK_INFRA_I2C0_CK>, 136 <&infracfg CLK_INFRA_AP_DMA_CK>, 137 <&infracfg CLK_INFRA_I2C_MCK_CK>, 138 <&infracfg CLK_INFRA_I2C_PCK_CK>; 139 clock-names = "main", "dma", "arb", "pmic"; 140 #address-cells = <1>; 141 #size-cells = <0>; 142 status = "disabled"; 143 }; 144 145 spi@11009000 { 146 compatible = "mediatek,mt7981-spi-ipm", "mediatek,spi-ipm"; 147 reg = <0 0x11009000 0 0x1000>; 148 interrupts = <GIC_SPI 142 IRQ_TYPE_LEVEL_HIGH>; 149 clocks = <&topckgen CLK_TOP_CB_M_D2>, 150 <&topckgen CLK_TOP_SPI_SEL>, 151 <&infracfg CLK_INFRA_SPI2_CK>, 152 <&infracfg CLK_INFRA_SPI2_HCK_CK>; 153 clock-names = "parent-clk", "sel-clk", "spi-clk", "hclk"; 154 #address-cells = <1>; 155 #size-cells = <0>; 156 status = "disabled"; 157 }; 158 159 spi@1100a000 { 160 compatible = "mediatek,mt7981-spi-ipm", "mediatek,spi-ipm"; 161 reg = <0 0x1100a000 0 0x1000>; 162 interrupts = <GIC_SPI 140 IRQ_TYPE_LEVEL_HIGH>; 163 clocks = <&topckgen CLK_TOP_CB_M_D2>, 164 <&topckgen CLK_TOP_SPI_SEL>, 165 <&infracfg CLK_INFRA_SPI0_CK>, 166 <&infracfg CLK_INFRA_SPI0_HCK_CK>; 167 clock-names = "parent-clk", "sel-clk", "spi-clk", "hclk"; 168 #address-cells = <1>; 169 #size-cells = <0>; 170 status = "disabled"; 171 }; 172 173 spi@1100b000 { 174 compatible = "mediatek,mt7981-spi-ipm", "mediatek,spi-ipm"; 175 reg = <0 0x1100b000 0 0x1000>; 176 interrupts = <GIC_SPI 141 IRQ_TYPE_LEVEL_HIGH>; 177 clocks = <&topckgen CLK_TOP_CB_M_D2>, 178 <&topckgen CLK_TOP_SPI_SEL>, 179 <&infracfg CLK_INFRA_SPI1_CK>, 180 <&infracfg CLK_INFRA_SPI1_HCK_CK>; 181 clock-names = "parent-clk", "sel-clk", "spi-clk", "hclk"; 182 #address-cells = <1>; 183 #size-cells = <0>; 184 status = "disabled"; 185 }; 186 187 thermal@1100c800 { 188 compatible = "mediatek,mt7981-thermal", 189 "mediatek,mt7986-thermal"; 190 reg = <0 0x1100c800 0 0x800>; 191 interrupts = <GIC_SPI 138 IRQ_TYPE_LEVEL_HIGH>; 192 clocks = <&infracfg CLK_INFRA_THERM_CK>, 193 <&infracfg CLK_INFRA_ADC_26M_CK>; 194 clock-names = "therm", "auxadc"; 195 nvmem-cells = <&thermal_calibration>; 196 nvmem-cell-names = "calibration-data"; 197 #thermal-sensor-cells = <1>; 198 mediatek,auxadc = <&auxadc>; 199 mediatek,apmixedsys = <&apmixedsys>; 200 }; 201 202 auxadc: adc@1100d000 { 203 compatible = "mediatek,mt7981-auxadc", 204 "mediatek,mt7986-auxadc"; 205 reg = <0 0x1100d000 0 0x1000>; 206 clocks = <&infracfg CLK_INFRA_ADC_26M_CK>; 207 clock-names = "main"; 208 #io-channel-cells = <1>; 209 status = "disabled"; 210 }; 211 212 pio: pinctrl@11d00000 { 213 compatible = "mediatek,mt7981-pinctrl"; 214 reg = <0 0x11d00000 0 0x1000>, 215 <0 0x11c00000 0 0x1000>, 216 <0 0x11c10000 0 0x1000>, 217 <0 0x11d20000 0 0x1000>, 218 <0 0x11e00000 0 0x1000>, 219 <0 0x11e20000 0 0x1000>, 220 <0 0x11f00000 0 0x1000>, 221 <0 0x11f10000 0 0x1000>, 222 <0 0x1000b000 0 0x1000>; 223 reg-names = "gpio", "iocfg_rt", "iocfg_rm", "iocfg_rb", "iocfg_lb", 224 "iocfg_bl", "iocfg_tm", "iocfg_tl", "eint"; 225 interrupt-controller; 226 interrupts = <GIC_SPI 225 IRQ_TYPE_LEVEL_HIGH>; 227 interrupt-parent = <&gic>; 228 gpio-ranges = <&pio 0 0 56>; 229 gpio-controller; 230 #gpio-cells = <2>; 231 #interrupt-cells = <2>; 232 }; 233 234 efuse@11f20000 { 235 compatible = "mediatek,mt7981-efuse", "mediatek,efuse"; 236 reg = <0 0x11f20000 0 0x1000>; 237 #address-cells = <1>; 238 #size-cells = <1>; 239 240 thermal_calibration: thermal-calib@274 { 241 reg = <0x274 0xc>; 242 }; 243 }; 244 245 clock-controller@15000000 { 246 compatible = "mediatek,mt7981-ethsys", "syscon"; 247 reg = <0 0x15000000 0 0x1000>; 248 #clock-cells = <1>; 249 #reset-cells = <1>; 250 }; 251 252 wifi@18000000 { 253 compatible = "mediatek,mt7981-wmac"; 254 reg = <0 0x18000000 0 0x1000000>, 255 <0 0x10003000 0 0x1000>, 256 <0 0x11d10000 0 0x1000>; 257 interrupts = <GIC_SPI 213 IRQ_TYPE_LEVEL_HIGH>, 258 <GIC_SPI 214 IRQ_TYPE_LEVEL_HIGH>, 259 <GIC_SPI 215 IRQ_TYPE_LEVEL_HIGH>, 260 <GIC_SPI 216 IRQ_TYPE_LEVEL_HIGH>; 261 clocks = <&topckgen CLK_TOP_NETSYS_MCU_SEL>, 262 <&topckgen CLK_TOP_AP2CNN_HOST_SEL>; 263 clock-names = "mcu", "ap2conn"; 264 resets = <&watchdog MT7986_TOPRGU_CONSYS_SW_RST>; 265 reset-names = "consys"; 266 }; 267 }; 268 269 timer { 270 compatible = "arm,armv8-timer"; 271 interrupt-parent = <&gic>; 272 interrupts = <GIC_PPI 13 IRQ_TYPE_LEVEL_LOW>, 273 <GIC_PPI 14 IRQ_TYPE_LEVEL_LOW>, 274 <GIC_PPI 11 IRQ_TYPE_LEVEL_LOW>, 275 <GIC_PPI 10 IRQ_TYPE_LEVEL_LOW>; 276 }; 277}; 278