101950c46SEmmanuel Vadot// SPDX-License-Identifier: GPL-2.0-only OR MIT 201950c46SEmmanuel Vadot 3*0e8011faSEmmanuel Vadot#include <dt-bindings/clock/mediatek,mt7988-clk.h> 401950c46SEmmanuel Vadot#include <dt-bindings/interrupt-controller/arm-gic.h> 5*0e8011faSEmmanuel Vadot#include <dt-bindings/phy/phy.h> 601950c46SEmmanuel Vadot 701950c46SEmmanuel Vadot/ { 801950c46SEmmanuel Vadot compatible = "mediatek,mt7988a"; 901950c46SEmmanuel Vadot interrupt-parent = <&gic>; 1001950c46SEmmanuel Vadot #address-cells = <2>; 1101950c46SEmmanuel Vadot #size-cells = <2>; 1201950c46SEmmanuel Vadot 1301950c46SEmmanuel Vadot cpus { 1401950c46SEmmanuel Vadot #address-cells = <1>; 1501950c46SEmmanuel Vadot #size-cells = <0>; 1601950c46SEmmanuel Vadot 1701950c46SEmmanuel Vadot cpu@0 { 1801950c46SEmmanuel Vadot compatible = "arm,cortex-a73"; 1901950c46SEmmanuel Vadot reg = <0x0>; 2001950c46SEmmanuel Vadot device_type = "cpu"; 2101950c46SEmmanuel Vadot enable-method = "psci"; 2201950c46SEmmanuel Vadot }; 2301950c46SEmmanuel Vadot 2401950c46SEmmanuel Vadot cpu@1 { 2501950c46SEmmanuel Vadot compatible = "arm,cortex-a73"; 2601950c46SEmmanuel Vadot reg = <0x1>; 2701950c46SEmmanuel Vadot device_type = "cpu"; 2801950c46SEmmanuel Vadot enable-method = "psci"; 2901950c46SEmmanuel Vadot }; 3001950c46SEmmanuel Vadot 3101950c46SEmmanuel Vadot cpu@2 { 3201950c46SEmmanuel Vadot compatible = "arm,cortex-a73"; 3301950c46SEmmanuel Vadot reg = <0x2>; 3401950c46SEmmanuel Vadot device_type = "cpu"; 3501950c46SEmmanuel Vadot enable-method = "psci"; 3601950c46SEmmanuel Vadot }; 3701950c46SEmmanuel Vadot 3801950c46SEmmanuel Vadot cpu@3 { 3901950c46SEmmanuel Vadot compatible = "arm,cortex-a73"; 4001950c46SEmmanuel Vadot reg = <0x3>; 4101950c46SEmmanuel Vadot device_type = "cpu"; 4201950c46SEmmanuel Vadot enable-method = "psci"; 4301950c46SEmmanuel Vadot }; 4401950c46SEmmanuel Vadot }; 4501950c46SEmmanuel Vadot 4601950c46SEmmanuel Vadot oscillator-40m { 4701950c46SEmmanuel Vadot compatible = "fixed-clock"; 4801950c46SEmmanuel Vadot clock-frequency = <40000000>; 4901950c46SEmmanuel Vadot #clock-cells = <0>; 5001950c46SEmmanuel Vadot clock-output-names = "clkxtal"; 5101950c46SEmmanuel Vadot }; 5201950c46SEmmanuel Vadot 5301950c46SEmmanuel Vadot pmu { 5401950c46SEmmanuel Vadot compatible = "arm,cortex-a73-pmu"; 5501950c46SEmmanuel Vadot interrupt-parent = <&gic>; 5601950c46SEmmanuel Vadot interrupts = <GIC_PPI 7 IRQ_TYPE_LEVEL_LOW>; 5701950c46SEmmanuel Vadot }; 5801950c46SEmmanuel Vadot 5901950c46SEmmanuel Vadot psci { 6001950c46SEmmanuel Vadot compatible = "arm,psci-0.2"; 6101950c46SEmmanuel Vadot method = "smc"; 6201950c46SEmmanuel Vadot }; 6301950c46SEmmanuel Vadot 6401950c46SEmmanuel Vadot soc { 6501950c46SEmmanuel Vadot compatible = "simple-bus"; 6601950c46SEmmanuel Vadot ranges; 6701950c46SEmmanuel Vadot #address-cells = <2>; 6801950c46SEmmanuel Vadot #size-cells = <2>; 6901950c46SEmmanuel Vadot 7001950c46SEmmanuel Vadot gic: interrupt-controller@c000000 { 7101950c46SEmmanuel Vadot compatible = "arm,gic-v3"; 7201950c46SEmmanuel Vadot reg = <0 0x0c000000 0 0x40000>, /* GICD */ 7301950c46SEmmanuel Vadot <0 0x0c080000 0 0x200000>, /* GICR */ 7401950c46SEmmanuel Vadot <0 0x0c400000 0 0x2000>, /* GICC */ 7501950c46SEmmanuel Vadot <0 0x0c410000 0 0x1000>, /* GICH */ 7601950c46SEmmanuel Vadot <0 0x0c420000 0 0x2000>; /* GICV */ 7701950c46SEmmanuel Vadot interrupt-parent = <&gic>; 7801950c46SEmmanuel Vadot interrupts = <GIC_PPI 9 IRQ_TYPE_LEVEL_HIGH>; 7901950c46SEmmanuel Vadot interrupt-controller; 8001950c46SEmmanuel Vadot #interrupt-cells = <3>; 8101950c46SEmmanuel Vadot }; 8201950c46SEmmanuel Vadot 83*0e8011faSEmmanuel Vadot infracfg: clock-controller@10001000 { 8401950c46SEmmanuel Vadot compatible = "mediatek,mt7988-infracfg", "syscon"; 8501950c46SEmmanuel Vadot reg = <0 0x10001000 0 0x1000>; 8601950c46SEmmanuel Vadot #clock-cells = <1>; 8701950c46SEmmanuel Vadot }; 8801950c46SEmmanuel Vadot 8901950c46SEmmanuel Vadot clock-controller@1001b000 { 9001950c46SEmmanuel Vadot compatible = "mediatek,mt7988-topckgen", "syscon"; 9101950c46SEmmanuel Vadot reg = <0 0x1001b000 0 0x1000>; 9201950c46SEmmanuel Vadot #clock-cells = <1>; 9301950c46SEmmanuel Vadot }; 9401950c46SEmmanuel Vadot 9501950c46SEmmanuel Vadot watchdog: watchdog@1001c000 { 9601950c46SEmmanuel Vadot compatible = "mediatek,mt7988-wdt"; 9701950c46SEmmanuel Vadot reg = <0 0x1001c000 0 0x1000>; 9801950c46SEmmanuel Vadot interrupts = <GIC_SPI 110 IRQ_TYPE_LEVEL_HIGH>; 9901950c46SEmmanuel Vadot #reset-cells = <1>; 10001950c46SEmmanuel Vadot }; 10101950c46SEmmanuel Vadot 10201950c46SEmmanuel Vadot clock-controller@1001e000 { 10301950c46SEmmanuel Vadot compatible = "mediatek,mt7988-apmixedsys"; 10401950c46SEmmanuel Vadot reg = <0 0x1001e000 0 0x1000>; 10501950c46SEmmanuel Vadot #clock-cells = <1>; 10601950c46SEmmanuel Vadot }; 10701950c46SEmmanuel Vadot 108*0e8011faSEmmanuel Vadot pwm@10048000 { 109*0e8011faSEmmanuel Vadot compatible = "mediatek,mt7988-pwm"; 110*0e8011faSEmmanuel Vadot reg = <0 0x10048000 0 0x1000>; 111*0e8011faSEmmanuel Vadot clocks = <&infracfg CLK_INFRA_66M_PWM_BCK>, 112*0e8011faSEmmanuel Vadot <&infracfg CLK_INFRA_66M_PWM_HCK>, 113*0e8011faSEmmanuel Vadot <&infracfg CLK_INFRA_66M_PWM_CK1>, 114*0e8011faSEmmanuel Vadot <&infracfg CLK_INFRA_66M_PWM_CK2>, 115*0e8011faSEmmanuel Vadot <&infracfg CLK_INFRA_66M_PWM_CK3>, 116*0e8011faSEmmanuel Vadot <&infracfg CLK_INFRA_66M_PWM_CK4>, 117*0e8011faSEmmanuel Vadot <&infracfg CLK_INFRA_66M_PWM_CK5>, 118*0e8011faSEmmanuel Vadot <&infracfg CLK_INFRA_66M_PWM_CK6>, 119*0e8011faSEmmanuel Vadot <&infracfg CLK_INFRA_66M_PWM_CK7>, 120*0e8011faSEmmanuel Vadot <&infracfg CLK_INFRA_66M_PWM_CK8>; 121*0e8011faSEmmanuel Vadot clock-names = "top", "main", "pwm1", "pwm2", "pwm3", 122*0e8011faSEmmanuel Vadot "pwm4", "pwm5", "pwm6", "pwm7", "pwm8"; 123*0e8011faSEmmanuel Vadot #pwm-cells = <2>; 124*0e8011faSEmmanuel Vadot status = "disabled"; 125*0e8011faSEmmanuel Vadot }; 126*0e8011faSEmmanuel Vadot 127*0e8011faSEmmanuel Vadot i2c@11003000 { 128*0e8011faSEmmanuel Vadot compatible = "mediatek,mt7981-i2c"; 129*0e8011faSEmmanuel Vadot reg = <0 0x11003000 0 0x1000>, 130*0e8011faSEmmanuel Vadot <0 0x10217080 0 0x80>; 131*0e8011faSEmmanuel Vadot interrupts = <GIC_SPI 136 IRQ_TYPE_LEVEL_HIGH>; 132*0e8011faSEmmanuel Vadot clocks = <&infracfg CLK_INFRA_I2C_BCK>, 133*0e8011faSEmmanuel Vadot <&infracfg CLK_INFRA_66M_AP_DMA_BCK>; 134*0e8011faSEmmanuel Vadot clock-names = "main", "dma"; 135*0e8011faSEmmanuel Vadot #address-cells = <1>; 136*0e8011faSEmmanuel Vadot #size-cells = <0>; 137*0e8011faSEmmanuel Vadot status = "disabled"; 138*0e8011faSEmmanuel Vadot }; 139*0e8011faSEmmanuel Vadot 140*0e8011faSEmmanuel Vadot i2c@11004000 { 141*0e8011faSEmmanuel Vadot compatible = "mediatek,mt7981-i2c"; 142*0e8011faSEmmanuel Vadot reg = <0 0x11004000 0 0x1000>, 143*0e8011faSEmmanuel Vadot <0 0x10217100 0 0x80>; 144*0e8011faSEmmanuel Vadot interrupts = <GIC_SPI 144 IRQ_TYPE_LEVEL_HIGH>; 145*0e8011faSEmmanuel Vadot clocks = <&infracfg CLK_INFRA_I2C_BCK>, 146*0e8011faSEmmanuel Vadot <&infracfg CLK_INFRA_66M_AP_DMA_BCK>; 147*0e8011faSEmmanuel Vadot clock-names = "main", "dma"; 148*0e8011faSEmmanuel Vadot #address-cells = <1>; 149*0e8011faSEmmanuel Vadot #size-cells = <0>; 150*0e8011faSEmmanuel Vadot status = "disabled"; 151*0e8011faSEmmanuel Vadot }; 152*0e8011faSEmmanuel Vadot 153*0e8011faSEmmanuel Vadot i2c@11005000 { 154*0e8011faSEmmanuel Vadot compatible = "mediatek,mt7981-i2c"; 155*0e8011faSEmmanuel Vadot reg = <0 0x11005000 0 0x1000>, 156*0e8011faSEmmanuel Vadot <0 0x10217180 0 0x80>; 157*0e8011faSEmmanuel Vadot interrupts = <GIC_SPI 145 IRQ_TYPE_LEVEL_HIGH>; 158*0e8011faSEmmanuel Vadot clocks = <&infracfg CLK_INFRA_I2C_BCK>, 159*0e8011faSEmmanuel Vadot <&infracfg CLK_INFRA_66M_AP_DMA_BCK>; 160*0e8011faSEmmanuel Vadot clock-names = "main", "dma"; 161*0e8011faSEmmanuel Vadot #address-cells = <1>; 162*0e8011faSEmmanuel Vadot #size-cells = <0>; 163*0e8011faSEmmanuel Vadot status = "disabled"; 164*0e8011faSEmmanuel Vadot }; 165*0e8011faSEmmanuel Vadot 166*0e8011faSEmmanuel Vadot usb@11190000 { 167*0e8011faSEmmanuel Vadot compatible = "mediatek,mt7988-xhci", "mediatek,mtk-xhci"; 168*0e8011faSEmmanuel Vadot reg = <0 0x11190000 0 0x2e00>, 169*0e8011faSEmmanuel Vadot <0 0x11193e00 0 0x0100>; 170*0e8011faSEmmanuel Vadot reg-names = "mac", "ippc"; 171*0e8011faSEmmanuel Vadot interrupts = <GIC_SPI 173 IRQ_TYPE_LEVEL_HIGH>; 172*0e8011faSEmmanuel Vadot clocks = <&infracfg CLK_INFRA_USB_SYS>, 173*0e8011faSEmmanuel Vadot <&infracfg CLK_INFRA_USB_REF>, 174*0e8011faSEmmanuel Vadot <&infracfg CLK_INFRA_66M_USB_HCK>, 175*0e8011faSEmmanuel Vadot <&infracfg CLK_INFRA_133M_USB_HCK>, 176*0e8011faSEmmanuel Vadot <&infracfg CLK_INFRA_USB_XHCI>; 177*0e8011faSEmmanuel Vadot clock-names = "sys_ck", "ref_ck", "mcu_ck", "dma_ck", "xhci_ck"; 178*0e8011faSEmmanuel Vadot }; 179*0e8011faSEmmanuel Vadot 180*0e8011faSEmmanuel Vadot usb@11200000 { 181*0e8011faSEmmanuel Vadot compatible = "mediatek,mt7988-xhci", "mediatek,mtk-xhci"; 182*0e8011faSEmmanuel Vadot reg = <0 0x11200000 0 0x2e00>, 183*0e8011faSEmmanuel Vadot <0 0x11203e00 0 0x0100>; 184*0e8011faSEmmanuel Vadot reg-names = "mac", "ippc"; 185*0e8011faSEmmanuel Vadot interrupts = <GIC_SPI 172 IRQ_TYPE_LEVEL_HIGH>; 186*0e8011faSEmmanuel Vadot clocks = <&infracfg CLK_INFRA_USB_SYS_CK_P1>, 187*0e8011faSEmmanuel Vadot <&infracfg CLK_INFRA_USB_CK_P1>, 188*0e8011faSEmmanuel Vadot <&infracfg CLK_INFRA_66M_USB_HCK_CK_P1>, 189*0e8011faSEmmanuel Vadot <&infracfg CLK_INFRA_133M_USB_HCK_CK_P1>, 190*0e8011faSEmmanuel Vadot <&infracfg CLK_INFRA_USB_XHCI_CK_P1>; 191*0e8011faSEmmanuel Vadot clock-names = "sys_ck", "ref_ck", "mcu_ck", "dma_ck", "xhci_ck"; 192*0e8011faSEmmanuel Vadot }; 193*0e8011faSEmmanuel Vadot 19401950c46SEmmanuel Vadot clock-controller@11f40000 { 19501950c46SEmmanuel Vadot compatible = "mediatek,mt7988-xfi-pll"; 19601950c46SEmmanuel Vadot reg = <0 0x11f40000 0 0x1000>; 19701950c46SEmmanuel Vadot resets = <&watchdog 16>; 19801950c46SEmmanuel Vadot #clock-cells = <1>; 19901950c46SEmmanuel Vadot }; 20001950c46SEmmanuel Vadot 20101950c46SEmmanuel Vadot clock-controller@15000000 { 20201950c46SEmmanuel Vadot compatible = "mediatek,mt7988-ethsys", "syscon"; 20301950c46SEmmanuel Vadot reg = <0 0x15000000 0 0x1000>; 20401950c46SEmmanuel Vadot #clock-cells = <1>; 20501950c46SEmmanuel Vadot #reset-cells = <1>; 20601950c46SEmmanuel Vadot }; 20701950c46SEmmanuel Vadot 20801950c46SEmmanuel Vadot clock-controller@15031000 { 20901950c46SEmmanuel Vadot compatible = "mediatek,mt7988-ethwarp"; 21001950c46SEmmanuel Vadot reg = <0 0x15031000 0 0x1000>; 21101950c46SEmmanuel Vadot #clock-cells = <1>; 21201950c46SEmmanuel Vadot #reset-cells = <1>; 21301950c46SEmmanuel Vadot }; 21401950c46SEmmanuel Vadot }; 21501950c46SEmmanuel Vadot 21601950c46SEmmanuel Vadot timer { 21701950c46SEmmanuel Vadot compatible = "arm,armv8-timer"; 21801950c46SEmmanuel Vadot interrupt-parent = <&gic>; 21901950c46SEmmanuel Vadot interrupts = <GIC_PPI 13 IRQ_TYPE_LEVEL_LOW>, 22001950c46SEmmanuel Vadot <GIC_PPI 14 IRQ_TYPE_LEVEL_LOW>, 22101950c46SEmmanuel Vadot <GIC_PPI 11 IRQ_TYPE_LEVEL_LOW>, 22201950c46SEmmanuel Vadot <GIC_PPI 10 IRQ_TYPE_LEVEL_LOW>; 22301950c46SEmmanuel Vadot }; 22401950c46SEmmanuel Vadot}; 225