0001 /*
0002 * Copyright (c) 2017 MediaTek Inc.
0003 * Author: Ming Huang <ming.huang@mediatek.com>
0004 * Sean Wang <sean.wang@mediatek.com>
0005 *
0006 * SPDX-License-Identifier: (GPL-2.0 OR MIT)
0007 */
0008
0009 #include <dt-bindings/interrupt-controller/irq.h>
0010 #include <dt-bindings/interrupt-controller/arm-gic.h>
0011 #include <dt-bindings/clock/mt7622-clk.h>
0012 #include <dt-bindings/phy/phy.h>
0013 #include <dt-bindings/power/mt7622-power.h>
0014 #include <dt-bindings/reset/mt7622-reset.h>
0015 #include <dt-bindings/thermal/thermal.h>
0016
0017 / {
0018 compatible = "mediatek,mt7622";
0019 interrupt-parent = <&sysirq>;
0020 #address-cells = <2>;
0021 #size-cells = <2>;
0022
0023 cpu_opp_table: opp-table {
0024 compatible = "operating-points-v2";
0025 opp-shared;
0026 opp-300000000 {
0027 opp-hz = /bits/ 64 <30000000>;
0028 opp-microvolt = <950000>;
0029 };
0030
0031 opp-437500000 {
0032 opp-hz = /bits/ 64 <437500000>;
0033 opp-microvolt = <1000000>;
0034 };
0035
0036 opp-600000000 {
0037 opp-hz = /bits/ 64 <600000000>;
0038 opp-microvolt = <1050000>;
0039 };
0040
0041 opp-812500000 {
0042 opp-hz = /bits/ 64 <812500000>;
0043 opp-microvolt = <1100000>;
0044 };
0045
0046 opp-1025000000 {
0047 opp-hz = /bits/ 64 <1025000000>;
0048 opp-microvolt = <1150000>;
0049 };
0050
0051 opp-1137500000 {
0052 opp-hz = /bits/ 64 <1137500000>;
0053 opp-microvolt = <1200000>;
0054 };
0055
0056 opp-1262500000 {
0057 opp-hz = /bits/ 64 <1262500000>;
0058 opp-microvolt = <1250000>;
0059 };
0060
0061 opp-1350000000 {
0062 opp-hz = /bits/ 64 <1350000000>;
0063 opp-microvolt = <1310000>;
0064 };
0065 };
0066
0067 cpus {
0068 #address-cells = <2>;
0069 #size-cells = <0>;
0070
0071 cpu0: cpu@0 {
0072 device_type = "cpu";
0073 compatible = "arm,cortex-a53";
0074 reg = <0x0 0x0>;
0075 clocks = <&infracfg CLK_INFRA_MUX1_SEL>,
0076 <&apmixedsys CLK_APMIXED_MAIN_CORE_EN>;
0077 clock-names = "cpu", "intermediate";
0078 operating-points-v2 = <&cpu_opp_table>;
0079 #cooling-cells = <2>;
0080 enable-method = "psci";
0081 clock-frequency = <1300000000>;
0082 cci-control-port = <&cci_control2>;
0083 next-level-cache = <&L2>;
0084 };
0085
0086 cpu1: cpu@1 {
0087 device_type = "cpu";
0088 compatible = "arm,cortex-a53";
0089 reg = <0x0 0x1>;
0090 clocks = <&infracfg CLK_INFRA_MUX1_SEL>,
0091 <&apmixedsys CLK_APMIXED_MAIN_CORE_EN>;
0092 clock-names = "cpu", "intermediate";
0093 operating-points-v2 = <&cpu_opp_table>;
0094 #cooling-cells = <2>;
0095 enable-method = "psci";
0096 clock-frequency = <1300000000>;
0097 cci-control-port = <&cci_control2>;
0098 next-level-cache = <&L2>;
0099 };
0100
0101 L2: l2-cache {
0102 compatible = "cache";
0103 cache-level = <2>;
0104 };
0105 };
0106
0107 pwrap_clk: dummy40m {
0108 compatible = "fixed-clock";
0109 clock-frequency = <40000000>;
0110 #clock-cells = <0>;
0111 };
0112
0113 clk25m: oscillator {
0114 compatible = "fixed-clock";
0115 #clock-cells = <0>;
0116 clock-frequency = <25000000>;
0117 clock-output-names = "clkxtal";
0118 };
0119
0120 psci {
0121 compatible = "arm,psci-0.2";
0122 method = "smc";
0123 };
0124
0125 pmu {
0126 compatible = "arm,cortex-a53-pmu";
0127 interrupts = <GIC_SPI 8 IRQ_TYPE_LEVEL_LOW>,
0128 <GIC_SPI 9 IRQ_TYPE_LEVEL_LOW>;
0129 interrupt-affinity = <&cpu0>, <&cpu1>;
0130 };
0131
0132 reserved-memory {
0133 #address-cells = <2>;
0134 #size-cells = <2>;
0135 ranges;
0136
0137 /* 192 KiB reserved for ARM Trusted Firmware (BL31) */
0138 secmon_reserved: secmon@43000000 {
0139 reg = <0 0x43000000 0 0x30000>;
0140 no-map;
0141 };
0142 };
0143
0144 thermal-zones {
0145 cpu_thermal: cpu-thermal {
0146 polling-delay-passive = <1000>;
0147 polling-delay = <1000>;
0148
0149 thermal-sensors = <&thermal 0>;
0150
0151 trips {
0152 cpu_passive: cpu-passive {
0153 temperature = <47000>;
0154 hysteresis = <2000>;
0155 type = "passive";
0156 };
0157
0158 cpu_active: cpu-active {
0159 temperature = <67000>;
0160 hysteresis = <2000>;
0161 type = "active";
0162 };
0163
0164 cpu_hot: cpu-hot {
0165 temperature = <87000>;
0166 hysteresis = <2000>;
0167 type = "hot";
0168 };
0169
0170 cpu-crit {
0171 temperature = <107000>;
0172 hysteresis = <2000>;
0173 type = "critical";
0174 };
0175 };
0176
0177 cooling-maps {
0178 map0 {
0179 trip = <&cpu_passive>;
0180 cooling-device = <&cpu0 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
0181 <&cpu1 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>;
0182 };
0183
0184 map1 {
0185 trip = <&cpu_active>;
0186 cooling-device = <&cpu0 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
0187 <&cpu1 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>;
0188 };
0189
0190 map2 {
0191 trip = <&cpu_hot>;
0192 cooling-device = <&cpu0 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
0193 <&cpu1 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>;
0194 };
0195 };
0196 };
0197 };
0198
0199 timer {
0200 compatible = "arm,armv8-timer";
0201 interrupt-parent = <&gic>;
0202 interrupts = <GIC_PPI 13 (GIC_CPU_MASK_SIMPLE(2) |
0203 IRQ_TYPE_LEVEL_HIGH)>,
0204 <GIC_PPI 14 (GIC_CPU_MASK_SIMPLE(2) |
0205 IRQ_TYPE_LEVEL_HIGH)>,
0206 <GIC_PPI 11 (GIC_CPU_MASK_SIMPLE(2) |
0207 IRQ_TYPE_LEVEL_HIGH)>,
0208 <GIC_PPI 10 (GIC_CPU_MASK_SIMPLE(2) |
0209 IRQ_TYPE_LEVEL_HIGH)>;
0210 };
0211
0212 infracfg: infracfg@10000000 {
0213 compatible = "mediatek,mt7622-infracfg",
0214 "syscon";
0215 reg = <0 0x10000000 0 0x1000>;
0216 #clock-cells = <1>;
0217 #reset-cells = <1>;
0218 };
0219
0220 pwrap: pwrap@10001000 {
0221 compatible = "mediatek,mt7622-pwrap";
0222 reg = <0 0x10001000 0 0x250>;
0223 reg-names = "pwrap";
0224 clocks = <&infracfg CLK_INFRA_PMIC_PD>, <&pwrap_clk>;
0225 clock-names = "spi", "wrap";
0226 resets = <&infracfg MT7622_INFRA_PMIC_WRAP_RST>;
0227 reset-names = "pwrap";
0228 interrupts = <GIC_SPI 163 IRQ_TYPE_LEVEL_HIGH>;
0229 status = "disabled";
0230 };
0231
0232 pericfg: pericfg@10002000 {
0233 compatible = "mediatek,mt7622-pericfg",
0234 "syscon";
0235 reg = <0 0x10002000 0 0x1000>;
0236 #clock-cells = <1>;
0237 #reset-cells = <1>;
0238 };
0239
0240 scpsys: power-controller@10006000 {
0241 compatible = "mediatek,mt7622-scpsys",
0242 "syscon";
0243 #power-domain-cells = <1>;
0244 reg = <0 0x10006000 0 0x1000>;
0245 interrupts = <GIC_SPI 165 IRQ_TYPE_LEVEL_LOW>,
0246 <GIC_SPI 166 IRQ_TYPE_LEVEL_LOW>,
0247 <GIC_SPI 167 IRQ_TYPE_LEVEL_LOW>,
0248 <GIC_SPI 168 IRQ_TYPE_LEVEL_LOW>;
0249 infracfg = <&infracfg>;
0250 clocks = <&topckgen CLK_TOP_HIF_SEL>;
0251 clock-names = "hif_sel";
0252 };
0253
0254 cir: cir@10009000 {
0255 compatible = "mediatek,mt7622-cir";
0256 reg = <0 0x10009000 0 0x1000>;
0257 interrupts = <GIC_SPI 175 IRQ_TYPE_LEVEL_LOW>;
0258 clocks = <&infracfg CLK_INFRA_IRRX_PD>,
0259 <&topckgen CLK_TOP_AXI_SEL>;
0260 clock-names = "clk", "bus";
0261 status = "disabled";
0262 };
0263
0264 sysirq: interrupt-controller@10200620 {
0265 compatible = "mediatek,mt7622-sysirq",
0266 "mediatek,mt6577-sysirq";
0267 interrupt-controller;
0268 #interrupt-cells = <3>;
0269 interrupt-parent = <&gic>;
0270 reg = <0 0x10200620 0 0x20>;
0271 };
0272
0273 efuse: efuse@10206000 {
0274 compatible = "mediatek,mt7622-efuse",
0275 "mediatek,efuse";
0276 reg = <0 0x10206000 0 0x1000>;
0277 #address-cells = <1>;
0278 #size-cells = <1>;
0279
0280 thermal_calibration: calib@198 {
0281 reg = <0x198 0xc>;
0282 };
0283 };
0284
0285 apmixedsys: apmixedsys@10209000 {
0286 compatible = "mediatek,mt7622-apmixedsys",
0287 "syscon";
0288 reg = <0 0x10209000 0 0x1000>;
0289 #clock-cells = <1>;
0290 };
0291
0292 topckgen: topckgen@10210000 {
0293 compatible = "mediatek,mt7622-topckgen",
0294 "syscon";
0295 reg = <0 0x10210000 0 0x1000>;
0296 #clock-cells = <1>;
0297 };
0298
0299 rng: rng@1020f000 {
0300 compatible = "mediatek,mt7622-rng",
0301 "mediatek,mt7623-rng";
0302 reg = <0 0x1020f000 0 0x1000>;
0303 clocks = <&infracfg CLK_INFRA_TRNG>;
0304 clock-names = "rng";
0305 };
0306
0307 pio: pinctrl@10211000 {
0308 compatible = "mediatek,mt7622-pinctrl";
0309 reg = <0 0x10211000 0 0x1000>,
0310 <0 0x10005000 0 0x1000>;
0311 reg-names = "base", "eint";
0312 gpio-controller;
0313 #gpio-cells = <2>;
0314 gpio-ranges = <&pio 0 0 103>;
0315 interrupt-controller;
0316 interrupts = <GIC_SPI 153 IRQ_TYPE_LEVEL_HIGH>;
0317 interrupt-parent = <&gic>;
0318 #interrupt-cells = <2>;
0319 };
0320
0321 watchdog: watchdog@10212000 {
0322 compatible = "mediatek,mt7622-wdt",
0323 "mediatek,mt6589-wdt";
0324 reg = <0 0x10212000 0 0x800>;
0325 };
0326
0327 rtc: rtc@10212800 {
0328 compatible = "mediatek,mt7622-rtc",
0329 "mediatek,soc-rtc";
0330 reg = <0 0x10212800 0 0x200>;
0331 interrupts = <GIC_SPI 129 IRQ_TYPE_LEVEL_LOW>;
0332 clocks = <&topckgen CLK_TOP_RTC>;
0333 clock-names = "rtc";
0334 };
0335
0336 gic: interrupt-controller@10300000 {
0337 compatible = "arm,gic-400";
0338 interrupt-controller;
0339 #interrupt-cells = <3>;
0340 interrupt-parent = <&gic>;
0341 reg = <0 0x10310000 0 0x1000>,
0342 <0 0x10320000 0 0x1000>,
0343 <0 0x10340000 0 0x2000>,
0344 <0 0x10360000 0 0x2000>;
0345 };
0346
0347 cci: cci@10390000 {
0348 compatible = "arm,cci-400";
0349 #address-cells = <1>;
0350 #size-cells = <1>;
0351 reg = <0 0x10390000 0 0x1000>;
0352 ranges = <0 0 0x10390000 0x10000>;
0353
0354 cci_control0: slave-if@1000 {
0355 compatible = "arm,cci-400-ctrl-if";
0356 interface-type = "ace-lite";
0357 reg = <0x1000 0x1000>;
0358 };
0359
0360 cci_control1: slave-if@4000 {
0361 compatible = "arm,cci-400-ctrl-if";
0362 interface-type = "ace";
0363 reg = <0x4000 0x1000>;
0364 };
0365
0366 cci_control2: slave-if@5000 {
0367 compatible = "arm,cci-400-ctrl-if", "syscon";
0368 interface-type = "ace";
0369 reg = <0x5000 0x1000>;
0370 };
0371
0372 pmu@9000 {
0373 compatible = "arm,cci-400-pmu,r1";
0374 reg = <0x9000 0x5000>;
0375 interrupts = <GIC_SPI 58 IRQ_TYPE_LEVEL_HIGH>,
0376 <GIC_SPI 59 IRQ_TYPE_LEVEL_HIGH>,
0377 <GIC_SPI 60 IRQ_TYPE_LEVEL_HIGH>,
0378 <GIC_SPI 61 IRQ_TYPE_LEVEL_HIGH>,
0379 <GIC_SPI 62 IRQ_TYPE_LEVEL_HIGH>;
0380 };
0381 };
0382
0383 auxadc: adc@11001000 {
0384 compatible = "mediatek,mt7622-auxadc";
0385 reg = <0 0x11001000 0 0x1000>;
0386 clocks = <&pericfg CLK_PERI_AUXADC_PD>;
0387 clock-names = "main";
0388 #io-channel-cells = <1>;
0389 };
0390
0391 uart0: serial@11002000 {
0392 compatible = "mediatek,mt7622-uart",
0393 "mediatek,mt6577-uart";
0394 reg = <0 0x11002000 0 0x400>;
0395 interrupts = <GIC_SPI 91 IRQ_TYPE_LEVEL_LOW>;
0396 clocks = <&topckgen CLK_TOP_UART_SEL>,
0397 <&pericfg CLK_PERI_UART0_PD>;
0398 clock-names = "baud", "bus";
0399 status = "disabled";
0400 };
0401
0402 uart1: serial@11003000 {
0403 compatible = "mediatek,mt7622-uart",
0404 "mediatek,mt6577-uart";
0405 reg = <0 0x11003000 0 0x400>;
0406 interrupts = <GIC_SPI 92 IRQ_TYPE_LEVEL_LOW>;
0407 clocks = <&topckgen CLK_TOP_UART_SEL>,
0408 <&pericfg CLK_PERI_UART1_PD>;
0409 clock-names = "baud", "bus";
0410 status = "disabled";
0411 };
0412
0413 uart2: serial@11004000 {
0414 compatible = "mediatek,mt7622-uart",
0415 "mediatek,mt6577-uart";
0416 reg = <0 0x11004000 0 0x400>;
0417 interrupts = <GIC_SPI 93 IRQ_TYPE_LEVEL_LOW>;
0418 clocks = <&topckgen CLK_TOP_UART_SEL>,
0419 <&pericfg CLK_PERI_UART2_PD>;
0420 clock-names = "baud", "bus";
0421 status = "disabled";
0422 };
0423
0424 uart3: serial@11005000 {
0425 compatible = "mediatek,mt7622-uart",
0426 "mediatek,mt6577-uart";
0427 reg = <0 0x11005000 0 0x400>;
0428 interrupts = <GIC_SPI 94 IRQ_TYPE_LEVEL_LOW>;
0429 clocks = <&topckgen CLK_TOP_UART_SEL>,
0430 <&pericfg CLK_PERI_UART3_PD>;
0431 clock-names = "baud", "bus";
0432 status = "disabled";
0433 };
0434
0435 pwm: pwm@11006000 {
0436 compatible = "mediatek,mt7622-pwm";
0437 reg = <0 0x11006000 0 0x1000>;
0438 interrupts = <GIC_SPI 77 IRQ_TYPE_LEVEL_LOW>;
0439 clocks = <&topckgen CLK_TOP_PWM_SEL>,
0440 <&pericfg CLK_PERI_PWM_PD>,
0441 <&pericfg CLK_PERI_PWM1_PD>,
0442 <&pericfg CLK_PERI_PWM2_PD>,
0443 <&pericfg CLK_PERI_PWM3_PD>,
0444 <&pericfg CLK_PERI_PWM4_PD>,
0445 <&pericfg CLK_PERI_PWM5_PD>,
0446 <&pericfg CLK_PERI_PWM6_PD>;
0447 clock-names = "top", "main", "pwm1", "pwm2", "pwm3", "pwm4",
0448 "pwm5", "pwm6";
0449 status = "disabled";
0450 };
0451
0452 i2c0: i2c@11007000 {
0453 compatible = "mediatek,mt7622-i2c";
0454 reg = <0 0x11007000 0 0x90>,
0455 <0 0x11000100 0 0x80>;
0456 interrupts = <GIC_SPI 84 IRQ_TYPE_LEVEL_LOW>;
0457 clock-div = <16>;
0458 clocks = <&pericfg CLK_PERI_I2C0_PD>,
0459 <&pericfg CLK_PERI_AP_DMA_PD>;
0460 clock-names = "main", "dma";
0461 #address-cells = <1>;
0462 #size-cells = <0>;
0463 status = "disabled";
0464 };
0465
0466 i2c1: i2c@11008000 {
0467 compatible = "mediatek,mt7622-i2c";
0468 reg = <0 0x11008000 0 0x90>,
0469 <0 0x11000180 0 0x80>;
0470 interrupts = <GIC_SPI 85 IRQ_TYPE_LEVEL_LOW>;
0471 clock-div = <16>;
0472 clocks = <&pericfg CLK_PERI_I2C1_PD>,
0473 <&pericfg CLK_PERI_AP_DMA_PD>;
0474 clock-names = "main", "dma";
0475 #address-cells = <1>;
0476 #size-cells = <0>;
0477 status = "disabled";
0478 };
0479
0480 i2c2: i2c@11009000 {
0481 compatible = "mediatek,mt7622-i2c";
0482 reg = <0 0x11009000 0 0x90>,
0483 <0 0x11000200 0 0x80>;
0484 interrupts = <GIC_SPI 86 IRQ_TYPE_LEVEL_LOW>;
0485 clock-div = <16>;
0486 clocks = <&pericfg CLK_PERI_I2C2_PD>,
0487 <&pericfg CLK_PERI_AP_DMA_PD>;
0488 clock-names = "main", "dma";
0489 #address-cells = <1>;
0490 #size-cells = <0>;
0491 status = "disabled";
0492 };
0493
0494 spi0: spi@1100a000 {
0495 compatible = "mediatek,mt7622-spi";
0496 reg = <0 0x1100a000 0 0x100>;
0497 interrupts = <GIC_SPI 118 IRQ_TYPE_LEVEL_LOW>;
0498 clocks = <&topckgen CLK_TOP_SYSPLL3_D2>,
0499 <&topckgen CLK_TOP_SPI0_SEL>,
0500 <&pericfg CLK_PERI_SPI0_PD>;
0501 clock-names = "parent-clk", "sel-clk", "spi-clk";
0502 #address-cells = <1>;
0503 #size-cells = <0>;
0504 status = "disabled";
0505 };
0506
0507 thermal: thermal@1100b000 {
0508 #thermal-sensor-cells = <1>;
0509 compatible = "mediatek,mt7622-thermal";
0510 reg = <0 0x1100b000 0 0x1000>;
0511 interrupts = <0 78 IRQ_TYPE_LEVEL_LOW>;
0512 clocks = <&pericfg CLK_PERI_THERM_PD>,
0513 <&pericfg CLK_PERI_AUXADC_PD>;
0514 clock-names = "therm", "auxadc";
0515 resets = <&pericfg MT7622_PERI_THERM_SW_RST>;
0516 reset-names = "therm";
0517 mediatek,auxadc = <&auxadc>;
0518 mediatek,apmixedsys = <&apmixedsys>;
0519 nvmem-cells = <&thermal_calibration>;
0520 nvmem-cell-names = "calibration-data";
0521 };
0522
0523 btif: serial@1100c000 {
0524 compatible = "mediatek,mt7622-btif",
0525 "mediatek,mtk-btif";
0526 reg = <0 0x1100c000 0 0x1000>;
0527 interrupts = <GIC_SPI 90 IRQ_TYPE_LEVEL_LOW>;
0528 clocks = <&pericfg CLK_PERI_BTIF_PD>;
0529 clock-names = "main";
0530 reg-shift = <2>;
0531 reg-io-width = <4>;
0532 status = "disabled";
0533
0534 bluetooth {
0535 compatible = "mediatek,mt7622-bluetooth";
0536 power-domains = <&scpsys MT7622_POWER_DOMAIN_WB>;
0537 clocks = <&clk25m>;
0538 clock-names = "ref";
0539 };
0540 };
0541
0542 nandc: nfi@1100d000 {
0543 compatible = "mediatek,mt7622-nfc";
0544 reg = <0 0x1100D000 0 0x1000>;
0545 interrupts = <GIC_SPI 96 IRQ_TYPE_LEVEL_LOW>;
0546 clocks = <&pericfg CLK_PERI_NFI_PD>,
0547 <&pericfg CLK_PERI_SNFI_PD>;
0548 clock-names = "nfi_clk", "pad_clk";
0549 ecc-engine = <&bch>;
0550 #address-cells = <1>;
0551 #size-cells = <0>;
0552 status = "disabled";
0553 };
0554
0555 snfi: spi@1100d000 {
0556 compatible = "mediatek,mt7622-snand";
0557 reg = <0 0x1100d000 0 0x1000>;
0558 interrupts = <GIC_SPI 96 IRQ_TYPE_LEVEL_LOW>;
0559 clocks = <&pericfg CLK_PERI_NFI_PD>, <&pericfg CLK_PERI_SNFI_PD>;
0560 clock-names = "nfi_clk", "pad_clk";
0561 nand-ecc-engine = <&bch>;
0562 #address-cells = <1>;
0563 #size-cells = <0>;
0564 status = "disabled";
0565 };
0566
0567 bch: ecc@1100e000 {
0568 compatible = "mediatek,mt7622-ecc";
0569 reg = <0 0x1100e000 0 0x1000>;
0570 interrupts = <GIC_SPI 95 IRQ_TYPE_LEVEL_LOW>;
0571 clocks = <&pericfg CLK_PERI_NFIECC_PD>;
0572 clock-names = "nfiecc_clk";
0573 status = "disabled";
0574 };
0575
0576 nor_flash: spi@11014000 {
0577 compatible = "mediatek,mt7622-nor",
0578 "mediatek,mt8173-nor";
0579 reg = <0 0x11014000 0 0xe0>;
0580 clocks = <&pericfg CLK_PERI_FLASH_PD>,
0581 <&topckgen CLK_TOP_FLASH_SEL>;
0582 clock-names = "spi", "sf";
0583 #address-cells = <1>;
0584 #size-cells = <0>;
0585 status = "disabled";
0586 };
0587
0588 spi1: spi@11016000 {
0589 compatible = "mediatek,mt7622-spi";
0590 reg = <0 0x11016000 0 0x100>;
0591 interrupts = <GIC_SPI 122 IRQ_TYPE_LEVEL_LOW>;
0592 clocks = <&topckgen CLK_TOP_SYSPLL3_D2>,
0593 <&topckgen CLK_TOP_SPI1_SEL>,
0594 <&pericfg CLK_PERI_SPI1_PD>;
0595 clock-names = "parent-clk", "sel-clk", "spi-clk";
0596 #address-cells = <1>;
0597 #size-cells = <0>;
0598 status = "disabled";
0599 };
0600
0601 uart4: serial@11019000 {
0602 compatible = "mediatek,mt7622-uart",
0603 "mediatek,mt6577-uart";
0604 reg = <0 0x11019000 0 0x400>;
0605 interrupts = <GIC_SPI 89 IRQ_TYPE_LEVEL_LOW>;
0606 clocks = <&topckgen CLK_TOP_UART_SEL>,
0607 <&pericfg CLK_PERI_UART4_PD>;
0608 clock-names = "baud", "bus";
0609 status = "disabled";
0610 };
0611
0612 audsys: clock-controller@11220000 {
0613 compatible = "mediatek,mt7622-audsys", "syscon";
0614 reg = <0 0x11220000 0 0x2000>;
0615 #clock-cells = <1>;
0616
0617 afe: audio-controller {
0618 compatible = "mediatek,mt7622-audio";
0619 interrupts = <GIC_SPI 144 IRQ_TYPE_LEVEL_LOW>,
0620 <GIC_SPI 145 IRQ_TYPE_LEVEL_LOW>;
0621 interrupt-names = "afe", "asys";
0622
0623 clocks = <&infracfg CLK_INFRA_AUDIO_PD>,
0624 <&topckgen CLK_TOP_AUD1_SEL>,
0625 <&topckgen CLK_TOP_AUD2_SEL>,
0626 <&topckgen CLK_TOP_A1SYS_HP_DIV_PD>,
0627 <&topckgen CLK_TOP_A2SYS_HP_DIV_PD>,
0628 <&topckgen CLK_TOP_I2S0_MCK_SEL>,
0629 <&topckgen CLK_TOP_I2S1_MCK_SEL>,
0630 <&topckgen CLK_TOP_I2S2_MCK_SEL>,
0631 <&topckgen CLK_TOP_I2S3_MCK_SEL>,
0632 <&topckgen CLK_TOP_I2S0_MCK_DIV>,
0633 <&topckgen CLK_TOP_I2S1_MCK_DIV>,
0634 <&topckgen CLK_TOP_I2S2_MCK_DIV>,
0635 <&topckgen CLK_TOP_I2S3_MCK_DIV>,
0636 <&topckgen CLK_TOP_I2S0_MCK_DIV_PD>,
0637 <&topckgen CLK_TOP_I2S1_MCK_DIV_PD>,
0638 <&topckgen CLK_TOP_I2S2_MCK_DIV_PD>,
0639 <&topckgen CLK_TOP_I2S3_MCK_DIV_PD>,
0640 <&audsys CLK_AUDIO_I2SO1>,
0641 <&audsys CLK_AUDIO_I2SO2>,
0642 <&audsys CLK_AUDIO_I2SO3>,
0643 <&audsys CLK_AUDIO_I2SO4>,
0644 <&audsys CLK_AUDIO_I2SIN1>,
0645 <&audsys CLK_AUDIO_I2SIN2>,
0646 <&audsys CLK_AUDIO_I2SIN3>,
0647 <&audsys CLK_AUDIO_I2SIN4>,
0648 <&audsys CLK_AUDIO_ASRCO1>,
0649 <&audsys CLK_AUDIO_ASRCO2>,
0650 <&audsys CLK_AUDIO_ASRCO3>,
0651 <&audsys CLK_AUDIO_ASRCO4>,
0652 <&audsys CLK_AUDIO_AFE>,
0653 <&audsys CLK_AUDIO_AFE_CONN>,
0654 <&audsys CLK_AUDIO_A1SYS>,
0655 <&audsys CLK_AUDIO_A2SYS>;
0656
0657 clock-names = "infra_sys_audio_clk",
0658 "top_audio_mux1_sel",
0659 "top_audio_mux2_sel",
0660 "top_audio_a1sys_hp",
0661 "top_audio_a2sys_hp",
0662 "i2s0_src_sel",
0663 "i2s1_src_sel",
0664 "i2s2_src_sel",
0665 "i2s3_src_sel",
0666 "i2s0_src_div",
0667 "i2s1_src_div",
0668 "i2s2_src_div",
0669 "i2s3_src_div",
0670 "i2s0_mclk_en",
0671 "i2s1_mclk_en",
0672 "i2s2_mclk_en",
0673 "i2s3_mclk_en",
0674 "i2so0_hop_ck",
0675 "i2so1_hop_ck",
0676 "i2so2_hop_ck",
0677 "i2so3_hop_ck",
0678 "i2si0_hop_ck",
0679 "i2si1_hop_ck",
0680 "i2si2_hop_ck",
0681 "i2si3_hop_ck",
0682 "asrc0_out_ck",
0683 "asrc1_out_ck",
0684 "asrc2_out_ck",
0685 "asrc3_out_ck",
0686 "audio_afe_pd",
0687 "audio_afe_conn_pd",
0688 "audio_a1sys_pd",
0689 "audio_a2sys_pd";
0690
0691 assigned-clocks = <&topckgen CLK_TOP_A1SYS_HP_SEL>,
0692 <&topckgen CLK_TOP_A2SYS_HP_SEL>,
0693 <&topckgen CLK_TOP_A1SYS_HP_DIV>,
0694 <&topckgen CLK_TOP_A2SYS_HP_DIV>;
0695 assigned-clock-parents = <&topckgen CLK_TOP_AUD1PLL>,
0696 <&topckgen CLK_TOP_AUD2PLL>;
0697 assigned-clock-rates = <0>, <0>, <49152000>, <45158400>;
0698 };
0699 };
0700
0701 mmc0: mmc@11230000 {
0702 compatible = "mediatek,mt7622-mmc";
0703 reg = <0 0x11230000 0 0x1000>;
0704 interrupts = <GIC_SPI 79 IRQ_TYPE_LEVEL_LOW>;
0705 clocks = <&pericfg CLK_PERI_MSDC30_0_PD>,
0706 <&topckgen CLK_TOP_MSDC50_0_SEL>;
0707 clock-names = "source", "hclk";
0708 resets = <&pericfg MT7622_PERI_MSDC0_SW_RST>;
0709 reset-names = "hrst";
0710 status = "disabled";
0711 };
0712
0713 mmc1: mmc@11240000 {
0714 compatible = "mediatek,mt7622-mmc";
0715 reg = <0 0x11240000 0 0x1000>;
0716 interrupts = <GIC_SPI 80 IRQ_TYPE_LEVEL_LOW>;
0717 clocks = <&pericfg CLK_PERI_MSDC30_1_PD>,
0718 <&topckgen CLK_TOP_AXI_SEL>;
0719 clock-names = "source", "hclk";
0720 resets = <&pericfg MT7622_PERI_MSDC1_SW_RST>;
0721 reset-names = "hrst";
0722 status = "disabled";
0723 };
0724
0725 wmac: wmac@18000000 {
0726 compatible = "mediatek,mt7622-wmac";
0727 reg = <0 0x18000000 0 0x100000>;
0728 interrupts = <GIC_SPI 211 IRQ_TYPE_LEVEL_LOW>;
0729
0730 mediatek,infracfg = <&infracfg>;
0731 status = "disabled";
0732
0733 power-domains = <&scpsys MT7622_POWER_DOMAIN_WB>;
0734 };
0735
0736 ssusbsys: ssusbsys@1a000000 {
0737 compatible = "mediatek,mt7622-ssusbsys",
0738 "syscon";
0739 reg = <0 0x1a000000 0 0x1000>;
0740 #clock-cells = <1>;
0741 #reset-cells = <1>;
0742 };
0743
0744 ssusb: usb@1a0c0000 {
0745 compatible = "mediatek,mt7622-xhci",
0746 "mediatek,mtk-xhci";
0747 reg = <0 0x1a0c0000 0 0x01000>,
0748 <0 0x1a0c4700 0 0x0100>;
0749 reg-names = "mac", "ippc";
0750 interrupts = <GIC_SPI 232 IRQ_TYPE_LEVEL_LOW>;
0751 power-domains = <&scpsys MT7622_POWER_DOMAIN_HIF1>;
0752 clocks = <&ssusbsys CLK_SSUSB_SYS_EN>,
0753 <&ssusbsys CLK_SSUSB_REF_EN>,
0754 <&ssusbsys CLK_SSUSB_MCU_EN>,
0755 <&ssusbsys CLK_SSUSB_DMA_EN>;
0756 clock-names = "sys_ck", "ref_ck", "mcu_ck", "dma_ck";
0757 phys = <&u2port0 PHY_TYPE_USB2>,
0758 <&u3port0 PHY_TYPE_USB3>,
0759 <&u2port1 PHY_TYPE_USB2>;
0760
0761 status = "disabled";
0762 };
0763
0764 u3phy: t-phy@1a0c4000 {
0765 compatible = "mediatek,mt7622-tphy",
0766 "mediatek,generic-tphy-v1";
0767 reg = <0 0x1a0c4000 0 0x700>;
0768 #address-cells = <2>;
0769 #size-cells = <2>;
0770 ranges;
0771 status = "disabled";
0772
0773 u2port0: usb-phy@1a0c4800 {
0774 reg = <0 0x1a0c4800 0 0x0100>;
0775 #phy-cells = <1>;
0776 clocks = <&ssusbsys CLK_SSUSB_U2_PHY_EN>;
0777 clock-names = "ref";
0778 };
0779
0780 u3port0: usb-phy@1a0c4900 {
0781 reg = <0 0x1a0c4900 0 0x0700>;
0782 #phy-cells = <1>;
0783 clocks = <&clk25m>;
0784 clock-names = "ref";
0785 };
0786
0787 u2port1: usb-phy@1a0c5000 {
0788 reg = <0 0x1a0c5000 0 0x0100>;
0789 #phy-cells = <1>;
0790 clocks = <&ssusbsys CLK_SSUSB_U2_PHY_1P_EN>;
0791 clock-names = "ref";
0792 };
0793 };
0794
0795 pciesys: pciesys@1a100800 {
0796 compatible = "mediatek,mt7622-pciesys",
0797 "syscon";
0798 reg = <0 0x1a100800 0 0x1000>;
0799 #clock-cells = <1>;
0800 #reset-cells = <1>;
0801 };
0802
0803 pciecfg: pciecfg@1a140000 {
0804 compatible = "mediatek,generic-pciecfg", "syscon";
0805 reg = <0 0x1a140000 0 0x1000>;
0806 };
0807
0808 pcie0: pcie@1a143000 {
0809 compatible = "mediatek,mt7622-pcie";
0810 device_type = "pci";
0811 reg = <0 0x1a143000 0 0x1000>;
0812 reg-names = "port0";
0813 linux,pci-domain = <0>;
0814 #address-cells = <3>;
0815 #size-cells = <2>;
0816 interrupts = <GIC_SPI 228 IRQ_TYPE_LEVEL_LOW>;
0817 interrupt-names = "pcie_irq";
0818 clocks = <&pciesys CLK_PCIE_P0_MAC_EN>,
0819 <&pciesys CLK_PCIE_P0_AHB_EN>,
0820 <&pciesys CLK_PCIE_P0_AUX_EN>,
0821 <&pciesys CLK_PCIE_P0_AXI_EN>,
0822 <&pciesys CLK_PCIE_P0_OBFF_EN>,
0823 <&pciesys CLK_PCIE_P0_PIPE_EN>;
0824 clock-names = "sys_ck0", "ahb_ck0", "aux_ck0",
0825 "axi_ck0", "obff_ck0", "pipe_ck0";
0826
0827 power-domains = <&scpsys MT7622_POWER_DOMAIN_HIF0>;
0828 bus-range = <0x00 0xff>;
0829 ranges = <0x82000000 0 0x20000000 0x0 0x20000000 0 0x8000000>;
0830 status = "disabled";
0831
0832 #interrupt-cells = <1>;
0833 interrupt-map-mask = <0 0 0 7>;
0834 interrupt-map = <0 0 0 1 &pcie_intc0 0>,
0835 <0 0 0 2 &pcie_intc0 1>,
0836 <0 0 0 3 &pcie_intc0 2>,
0837 <0 0 0 4 &pcie_intc0 3>;
0838 pcie_intc0: interrupt-controller {
0839 interrupt-controller;
0840 #address-cells = <0>;
0841 #interrupt-cells = <1>;
0842 };
0843 };
0844
0845 pcie1: pcie@1a145000 {
0846 compatible = "mediatek,mt7622-pcie";
0847 device_type = "pci";
0848 reg = <0 0x1a145000 0 0x1000>;
0849 reg-names = "port1";
0850 linux,pci-domain = <1>;
0851 #address-cells = <3>;
0852 #size-cells = <2>;
0853 interrupts = <GIC_SPI 229 IRQ_TYPE_LEVEL_LOW>;
0854 interrupt-names = "pcie_irq";
0855 clocks = <&pciesys CLK_PCIE_P1_MAC_EN>,
0856 /* designer has connect RC1 with p0_ahb clock */
0857 <&pciesys CLK_PCIE_P0_AHB_EN>,
0858 <&pciesys CLK_PCIE_P1_AUX_EN>,
0859 <&pciesys CLK_PCIE_P1_AXI_EN>,
0860 <&pciesys CLK_PCIE_P1_OBFF_EN>,
0861 <&pciesys CLK_PCIE_P1_PIPE_EN>;
0862 clock-names = "sys_ck1", "ahb_ck1", "aux_ck1",
0863 "axi_ck1", "obff_ck1", "pipe_ck1";
0864
0865 power-domains = <&scpsys MT7622_POWER_DOMAIN_HIF0>;
0866 bus-range = <0x00 0xff>;
0867 ranges = <0x82000000 0 0x28000000 0x0 0x28000000 0 0x8000000>;
0868 status = "disabled";
0869
0870 #interrupt-cells = <1>;
0871 interrupt-map-mask = <0 0 0 7>;
0872 interrupt-map = <0 0 0 1 &pcie_intc1 0>,
0873 <0 0 0 2 &pcie_intc1 1>,
0874 <0 0 0 3 &pcie_intc1 2>,
0875 <0 0 0 4 &pcie_intc1 3>;
0876 pcie_intc1: interrupt-controller {
0877 interrupt-controller;
0878 #address-cells = <0>;
0879 #interrupt-cells = <1>;
0880 };
0881 };
0882
0883 sata: sata@1a200000 {
0884 compatible = "mediatek,mt7622-ahci",
0885 "mediatek,mtk-ahci";
0886 reg = <0 0x1a200000 0 0x1100>;
0887 interrupts = <GIC_SPI 233 IRQ_TYPE_LEVEL_HIGH>;
0888 interrupt-names = "hostc";
0889 clocks = <&pciesys CLK_SATA_AHB_EN>,
0890 <&pciesys CLK_SATA_AXI_EN>,
0891 <&pciesys CLK_SATA_ASIC_EN>,
0892 <&pciesys CLK_SATA_RBC_EN>,
0893 <&pciesys CLK_SATA_PM_EN>;
0894 clock-names = "ahb", "axi", "asic", "rbc", "pm";
0895 phys = <&sata_port PHY_TYPE_SATA>;
0896 phy-names = "sata-phy";
0897 ports-implemented = <0x1>;
0898 power-domains = <&scpsys MT7622_POWER_DOMAIN_HIF0>;
0899 resets = <&pciesys MT7622_SATA_AXI_BUS_RST>,
0900 <&pciesys MT7622_SATA_PHY_SW_RST>,
0901 <&pciesys MT7622_SATA_PHY_REG_RST>;
0902 reset-names = "axi", "sw", "reg";
0903 mediatek,phy-mode = <&pciesys>;
0904 status = "disabled";
0905 };
0906
0907 sata_phy: t-phy@1a243000 {
0908 compatible = "mediatek,mt7622-tphy",
0909 "mediatek,generic-tphy-v1";
0910 #address-cells = <2>;
0911 #size-cells = <2>;
0912 ranges;
0913 status = "disabled";
0914
0915 sata_port: sata-phy@1a243000 {
0916 reg = <0 0x1a243000 0 0x0100>;
0917 clocks = <&topckgen CLK_TOP_ETH_500M>;
0918 clock-names = "ref";
0919 #phy-cells = <1>;
0920 };
0921 };
0922
0923 hifsys: syscon@1af00000 {
0924 compatible = "mediatek,mt7622-hifsys", "syscon";
0925 reg = <0 0x1af00000 0 0x70>;
0926 };
0927
0928 ethsys: syscon@1b000000 {
0929 compatible = "mediatek,mt7622-ethsys",
0930 "syscon";
0931 reg = <0 0x1b000000 0 0x1000>;
0932 #clock-cells = <1>;
0933 #reset-cells = <1>;
0934 };
0935
0936 hsdma: dma-controller@1b007000 {
0937 compatible = "mediatek,mt7622-hsdma";
0938 reg = <0 0x1b007000 0 0x1000>;
0939 interrupts = <GIC_SPI 219 IRQ_TYPE_LEVEL_LOW>;
0940 clocks = <ðsys CLK_ETH_HSDMA_EN>;
0941 clock-names = "hsdma";
0942 power-domains = <&scpsys MT7622_POWER_DOMAIN_ETHSYS>;
0943 #dma-cells = <1>;
0944 dma-requests = <3>;
0945 };
0946
0947 pcie_mirror: pcie-mirror@10000400 {
0948 compatible = "mediatek,mt7622-pcie-mirror",
0949 "syscon";
0950 reg = <0 0x10000400 0 0x10>;
0951 };
0952
0953 wed0: wed@1020a000 {
0954 compatible = "mediatek,mt7622-wed",
0955 "syscon";
0956 reg = <0 0x1020a000 0 0x1000>;
0957 interrupts = <GIC_SPI 214 IRQ_TYPE_LEVEL_LOW>;
0958 };
0959
0960 wed1: wed@1020b000 {
0961 compatible = "mediatek,mt7622-wed",
0962 "syscon";
0963 reg = <0 0x1020b000 0 0x1000>;
0964 interrupts = <GIC_SPI 215 IRQ_TYPE_LEVEL_LOW>;
0965 };
0966
0967 eth: ethernet@1b100000 {
0968 compatible = "mediatek,mt7622-eth",
0969 "mediatek,mt2701-eth",
0970 "syscon";
0971 reg = <0 0x1b100000 0 0x20000>;
0972 interrupts = <GIC_SPI 223 IRQ_TYPE_LEVEL_LOW>,
0973 <GIC_SPI 224 IRQ_TYPE_LEVEL_LOW>,
0974 <GIC_SPI 225 IRQ_TYPE_LEVEL_LOW>;
0975 clocks = <&topckgen CLK_TOP_ETH_SEL>,
0976 <ðsys CLK_ETH_ESW_EN>,
0977 <ðsys CLK_ETH_GP0_EN>,
0978 <ðsys CLK_ETH_GP1_EN>,
0979 <ðsys CLK_ETH_GP2_EN>,
0980 <&sgmiisys CLK_SGMII_TX250M_EN>,
0981 <&sgmiisys CLK_SGMII_RX250M_EN>,
0982 <&sgmiisys CLK_SGMII_CDR_REF>,
0983 <&sgmiisys CLK_SGMII_CDR_FB>,
0984 <&topckgen CLK_TOP_SGMIIPLL>,
0985 <&apmixedsys CLK_APMIXED_ETH2PLL>;
0986 clock-names = "ethif", "esw", "gp0", "gp1", "gp2",
0987 "sgmii_tx250m", "sgmii_rx250m",
0988 "sgmii_cdr_ref", "sgmii_cdr_fb", "sgmii_ck",
0989 "eth2pll";
0990 power-domains = <&scpsys MT7622_POWER_DOMAIN_ETHSYS>;
0991 mediatek,ethsys = <ðsys>;
0992 mediatek,sgmiisys = <&sgmiisys>;
0993 cci-control-port = <&cci_control2>;
0994 mediatek,wed = <&wed0>, <&wed1>;
0995 mediatek,pcie-mirror = <&pcie_mirror>;
0996 mediatek,hifsys = <&hifsys>;
0997 dma-coherent;
0998 #address-cells = <1>;
0999 #size-cells = <0>;
1000 status = "disabled";
1001 };
1002
1003 sgmiisys: sgmiisys@1b128000 {
1004 compatible = "mediatek,mt7622-sgmiisys",
1005 "syscon";
1006 reg = <0 0x1b128000 0 0x3000>;
1007 #clock-cells = <1>;
1008 };
1009 };