17d2d16ccSHector Martin// SPDX-License-Identifier: GPL-2.0+ OR MIT 27d2d16ccSHector Martin/* 37d2d16ccSHector Martin * Apple T8103 "M1" SoC 47d2d16ccSHector Martin * 57d2d16ccSHector Martin * Other names: H13G, "Tonga" 67d2d16ccSHector Martin * 77d2d16ccSHector Martin * Copyright The Asahi Linux Contributors 87d2d16ccSHector Martin */ 97d2d16ccSHector Martin 107d2d16ccSHector Martin#include <dt-bindings/interrupt-controller/apple-aic.h> 117d2d16ccSHector Martin#include <dt-bindings/interrupt-controller/irq.h> 12*0a8282b8SMark Kettenis#include <dt-bindings/pinctrl/apple.h> 137d2d16ccSHector Martin 147d2d16ccSHector Martin/ { 157d2d16ccSHector Martin compatible = "apple,t8103", "apple,arm-platform"; 167d2d16ccSHector Martin 177d2d16ccSHector Martin #address-cells = <2>; 187d2d16ccSHector Martin #size-cells = <2>; 197d2d16ccSHector Martin 207d2d16ccSHector Martin cpus { 217d2d16ccSHector Martin #address-cells = <2>; 227d2d16ccSHector Martin #size-cells = <0>; 237d2d16ccSHector Martin 247d2d16ccSHector Martin cpu0: cpu@0 { 257d2d16ccSHector Martin compatible = "apple,icestorm"; 267d2d16ccSHector Martin device_type = "cpu"; 277d2d16ccSHector Martin reg = <0x0 0x0>; 287d2d16ccSHector Martin enable-method = "spin-table"; 297d2d16ccSHector Martin cpu-release-addr = <0 0>; /* To be filled by loader */ 307d2d16ccSHector Martin }; 317d2d16ccSHector Martin 327d2d16ccSHector Martin cpu1: cpu@1 { 337d2d16ccSHector Martin compatible = "apple,icestorm"; 347d2d16ccSHector Martin device_type = "cpu"; 357d2d16ccSHector Martin reg = <0x0 0x1>; 367d2d16ccSHector Martin enable-method = "spin-table"; 377d2d16ccSHector Martin cpu-release-addr = <0 0>; /* To be filled by loader */ 387d2d16ccSHector Martin }; 397d2d16ccSHector Martin 407d2d16ccSHector Martin cpu2: cpu@2 { 417d2d16ccSHector Martin compatible = "apple,icestorm"; 427d2d16ccSHector Martin device_type = "cpu"; 437d2d16ccSHector Martin reg = <0x0 0x2>; 447d2d16ccSHector Martin enable-method = "spin-table"; 457d2d16ccSHector Martin cpu-release-addr = <0 0>; /* To be filled by loader */ 467d2d16ccSHector Martin }; 477d2d16ccSHector Martin 487d2d16ccSHector Martin cpu3: cpu@3 { 497d2d16ccSHector Martin compatible = "apple,icestorm"; 507d2d16ccSHector Martin device_type = "cpu"; 517d2d16ccSHector Martin reg = <0x0 0x3>; 527d2d16ccSHector Martin enable-method = "spin-table"; 537d2d16ccSHector Martin cpu-release-addr = <0 0>; /* To be filled by loader */ 547d2d16ccSHector Martin }; 557d2d16ccSHector Martin 567d2d16ccSHector Martin cpu4: cpu@10100 { 577d2d16ccSHector Martin compatible = "apple,firestorm"; 587d2d16ccSHector Martin device_type = "cpu"; 597d2d16ccSHector Martin reg = <0x0 0x10100>; 607d2d16ccSHector Martin enable-method = "spin-table"; 617d2d16ccSHector Martin cpu-release-addr = <0 0>; /* To be filled by loader */ 627d2d16ccSHector Martin }; 637d2d16ccSHector Martin 647d2d16ccSHector Martin cpu5: cpu@10101 { 657d2d16ccSHector Martin compatible = "apple,firestorm"; 667d2d16ccSHector Martin device_type = "cpu"; 677d2d16ccSHector Martin reg = <0x0 0x10101>; 687d2d16ccSHector Martin enable-method = "spin-table"; 697d2d16ccSHector Martin cpu-release-addr = <0 0>; /* To be filled by loader */ 707d2d16ccSHector Martin }; 717d2d16ccSHector Martin 727d2d16ccSHector Martin cpu6: cpu@10102 { 737d2d16ccSHector Martin compatible = "apple,firestorm"; 747d2d16ccSHector Martin device_type = "cpu"; 757d2d16ccSHector Martin reg = <0x0 0x10102>; 767d2d16ccSHector Martin enable-method = "spin-table"; 777d2d16ccSHector Martin cpu-release-addr = <0 0>; /* To be filled by loader */ 787d2d16ccSHector Martin }; 797d2d16ccSHector Martin 807d2d16ccSHector Martin cpu7: cpu@10103 { 817d2d16ccSHector Martin compatible = "apple,firestorm"; 827d2d16ccSHector Martin device_type = "cpu"; 837d2d16ccSHector Martin reg = <0x0 0x10103>; 847d2d16ccSHector Martin enable-method = "spin-table"; 857d2d16ccSHector Martin cpu-release-addr = <0 0>; /* To be filled by loader */ 867d2d16ccSHector Martin }; 877d2d16ccSHector Martin }; 887d2d16ccSHector Martin 897d2d16ccSHector Martin timer { 907d2d16ccSHector Martin compatible = "arm,armv8-timer"; 917d2d16ccSHector Martin interrupt-parent = <&aic>; 927d2d16ccSHector Martin interrupt-names = "phys", "virt", "hyp-phys", "hyp-virt"; 937d2d16ccSHector Martin interrupts = <AIC_FIQ AIC_TMR_GUEST_PHYS IRQ_TYPE_LEVEL_HIGH>, 947d2d16ccSHector Martin <AIC_FIQ AIC_TMR_GUEST_VIRT IRQ_TYPE_LEVEL_HIGH>, 957d2d16ccSHector Martin <AIC_FIQ AIC_TMR_HV_PHYS IRQ_TYPE_LEVEL_HIGH>, 967d2d16ccSHector Martin <AIC_FIQ AIC_TMR_HV_VIRT IRQ_TYPE_LEVEL_HIGH>; 977d2d16ccSHector Martin }; 987d2d16ccSHector Martin 997d2d16ccSHector Martin clk24: clock-24m { 1007d2d16ccSHector Martin compatible = "fixed-clock"; 1017d2d16ccSHector Martin #clock-cells = <0>; 1027d2d16ccSHector Martin clock-frequency = <24000000>; 1037d2d16ccSHector Martin clock-output-names = "clk24"; 1047d2d16ccSHector Martin }; 1057d2d16ccSHector Martin 1067d2d16ccSHector Martin soc { 1077d2d16ccSHector Martin compatible = "simple-bus"; 1087d2d16ccSHector Martin #address-cells = <2>; 1097d2d16ccSHector Martin #size-cells = <2>; 1107d2d16ccSHector Martin 1117d2d16ccSHector Martin ranges; 1127d2d16ccSHector Martin nonposted-mmio; 1137d2d16ccSHector Martin 1147d2d16ccSHector Martin serial0: serial@235200000 { 1157d2d16ccSHector Martin compatible = "apple,s5l-uart"; 1167d2d16ccSHector Martin reg = <0x2 0x35200000 0x0 0x1000>; 1177d2d16ccSHector Martin reg-io-width = <4>; 1187d2d16ccSHector Martin interrupt-parent = <&aic>; 1197d2d16ccSHector Martin interrupts = <AIC_IRQ 605 IRQ_TYPE_LEVEL_HIGH>; 1207d2d16ccSHector Martin /* 1217d2d16ccSHector Martin * TODO: figure out the clocking properly, there may 1227d2d16ccSHector Martin * be a third selectable clock. 1237d2d16ccSHector Martin */ 1247d2d16ccSHector Martin clocks = <&clk24>, <&clk24>; 1257d2d16ccSHector Martin clock-names = "uart", "clk_uart_baud0"; 1267d2d16ccSHector Martin status = "disabled"; 1277d2d16ccSHector Martin }; 1287d2d16ccSHector Martin 1297d2d16ccSHector Martin aic: interrupt-controller@23b100000 { 1307d2d16ccSHector Martin compatible = "apple,t8103-aic", "apple,aic"; 1317d2d16ccSHector Martin #interrupt-cells = <3>; 1327d2d16ccSHector Martin interrupt-controller; 1337d2d16ccSHector Martin reg = <0x2 0x3b100000 0x0 0x8000>; 1347d2d16ccSHector Martin }; 135*0a8282b8SMark Kettenis 136*0a8282b8SMark Kettenis pinctrl_ap: pinctrl@23c100000 { 137*0a8282b8SMark Kettenis compatible = "apple,t8103-pinctrl", "apple,pinctrl"; 138*0a8282b8SMark Kettenis reg = <0x2 0x3c100000 0x0 0x100000>; 139*0a8282b8SMark Kettenis 140*0a8282b8SMark Kettenis gpio-controller; 141*0a8282b8SMark Kettenis #gpio-cells = <2>; 142*0a8282b8SMark Kettenis gpio-ranges = <&pinctrl_ap 0 0 212>; 143*0a8282b8SMark Kettenis apple,npins = <212>; 144*0a8282b8SMark Kettenis 145*0a8282b8SMark Kettenis interrupt-controller; 146*0a8282b8SMark Kettenis interrupt-parent = <&aic>; 147*0a8282b8SMark Kettenis interrupts = <AIC_IRQ 190 IRQ_TYPE_LEVEL_HIGH>, 148*0a8282b8SMark Kettenis <AIC_IRQ 191 IRQ_TYPE_LEVEL_HIGH>, 149*0a8282b8SMark Kettenis <AIC_IRQ 192 IRQ_TYPE_LEVEL_HIGH>, 150*0a8282b8SMark Kettenis <AIC_IRQ 193 IRQ_TYPE_LEVEL_HIGH>, 151*0a8282b8SMark Kettenis <AIC_IRQ 194 IRQ_TYPE_LEVEL_HIGH>, 152*0a8282b8SMark Kettenis <AIC_IRQ 195 IRQ_TYPE_LEVEL_HIGH>, 153*0a8282b8SMark Kettenis <AIC_IRQ 196 IRQ_TYPE_LEVEL_HIGH>; 154*0a8282b8SMark Kettenis 155*0a8282b8SMark Kettenis pcie_pins: pcie-pins { 156*0a8282b8SMark Kettenis pinmux = <APPLE_PINMUX(150, 1)>, 157*0a8282b8SMark Kettenis <APPLE_PINMUX(151, 1)>, 158*0a8282b8SMark Kettenis <APPLE_PINMUX(32, 1)>; 159*0a8282b8SMark Kettenis }; 160*0a8282b8SMark Kettenis }; 161*0a8282b8SMark Kettenis 162*0a8282b8SMark Kettenis pinctrl_aop: pinctrl@24a820000 { 163*0a8282b8SMark Kettenis compatible = "apple,t8103-pinctrl", "apple,pinctrl"; 164*0a8282b8SMark Kettenis reg = <0x2 0x4a820000 0x0 0x4000>; 165*0a8282b8SMark Kettenis 166*0a8282b8SMark Kettenis gpio-controller; 167*0a8282b8SMark Kettenis #gpio-cells = <2>; 168*0a8282b8SMark Kettenis gpio-ranges = <&pinctrl_aop 0 0 42>; 169*0a8282b8SMark Kettenis apple,npins = <42>; 170*0a8282b8SMark Kettenis 171*0a8282b8SMark Kettenis interrupt-controller; 172*0a8282b8SMark Kettenis interrupt-parent = <&aic>; 173*0a8282b8SMark Kettenis interrupts = <AIC_IRQ 268 IRQ_TYPE_LEVEL_HIGH>, 174*0a8282b8SMark Kettenis <AIC_IRQ 269 IRQ_TYPE_LEVEL_HIGH>, 175*0a8282b8SMark Kettenis <AIC_IRQ 270 IRQ_TYPE_LEVEL_HIGH>, 176*0a8282b8SMark Kettenis <AIC_IRQ 271 IRQ_TYPE_LEVEL_HIGH>, 177*0a8282b8SMark Kettenis <AIC_IRQ 272 IRQ_TYPE_LEVEL_HIGH>, 178*0a8282b8SMark Kettenis <AIC_IRQ 273 IRQ_TYPE_LEVEL_HIGH>, 179*0a8282b8SMark Kettenis <AIC_IRQ 274 IRQ_TYPE_LEVEL_HIGH>; 180*0a8282b8SMark Kettenis }; 181*0a8282b8SMark Kettenis 182*0a8282b8SMark Kettenis pinctrl_nub: pinctrl@23d1f0000 { 183*0a8282b8SMark Kettenis compatible = "apple,t8103-pinctrl", "apple,pinctrl"; 184*0a8282b8SMark Kettenis reg = <0x2 0x3d1f0000 0x0 0x4000>; 185*0a8282b8SMark Kettenis 186*0a8282b8SMark Kettenis gpio-controller; 187*0a8282b8SMark Kettenis #gpio-cells = <2>; 188*0a8282b8SMark Kettenis gpio-ranges = <&pinctrl_nub 0 0 23>; 189*0a8282b8SMark Kettenis apple,npins = <23>; 190*0a8282b8SMark Kettenis 191*0a8282b8SMark Kettenis interrupt-controller; 192*0a8282b8SMark Kettenis interrupt-parent = <&aic>; 193*0a8282b8SMark Kettenis interrupts = <AIC_IRQ 330 IRQ_TYPE_LEVEL_HIGH>, 194*0a8282b8SMark Kettenis <AIC_IRQ 331 IRQ_TYPE_LEVEL_HIGH>, 195*0a8282b8SMark Kettenis <AIC_IRQ 332 IRQ_TYPE_LEVEL_HIGH>, 196*0a8282b8SMark Kettenis <AIC_IRQ 333 IRQ_TYPE_LEVEL_HIGH>, 197*0a8282b8SMark Kettenis <AIC_IRQ 334 IRQ_TYPE_LEVEL_HIGH>, 198*0a8282b8SMark Kettenis <AIC_IRQ 335 IRQ_TYPE_LEVEL_HIGH>, 199*0a8282b8SMark Kettenis <AIC_IRQ 336 IRQ_TYPE_LEVEL_HIGH>; 200*0a8282b8SMark Kettenis }; 201*0a8282b8SMark Kettenis 202*0a8282b8SMark Kettenis pinctrl_smc: pinctrl@23e820000 { 203*0a8282b8SMark Kettenis compatible = "apple,t8103-pinctrl", "apple,pinctrl"; 204*0a8282b8SMark Kettenis reg = <0x2 0x3e820000 0x0 0x4000>; 205*0a8282b8SMark Kettenis 206*0a8282b8SMark Kettenis gpio-controller; 207*0a8282b8SMark Kettenis #gpio-cells = <2>; 208*0a8282b8SMark Kettenis gpio-ranges = <&pinctrl_smc 0 0 16>; 209*0a8282b8SMark Kettenis apple,npins = <16>; 210*0a8282b8SMark Kettenis 211*0a8282b8SMark Kettenis interrupt-controller; 212*0a8282b8SMark Kettenis interrupt-parent = <&aic>; 213*0a8282b8SMark Kettenis interrupts = <AIC_IRQ 391 IRQ_TYPE_LEVEL_HIGH>, 214*0a8282b8SMark Kettenis <AIC_IRQ 392 IRQ_TYPE_LEVEL_HIGH>, 215*0a8282b8SMark Kettenis <AIC_IRQ 393 IRQ_TYPE_LEVEL_HIGH>, 216*0a8282b8SMark Kettenis <AIC_IRQ 394 IRQ_TYPE_LEVEL_HIGH>, 217*0a8282b8SMark Kettenis <AIC_IRQ 395 IRQ_TYPE_LEVEL_HIGH>, 218*0a8282b8SMark Kettenis <AIC_IRQ 396 IRQ_TYPE_LEVEL_HIGH>, 219*0a8282b8SMark Kettenis <AIC_IRQ 397 IRQ_TYPE_LEVEL_HIGH>; 220*0a8282b8SMark Kettenis }; 2217d2d16ccSHector Martin }; 2227d2d16ccSHector Martin}; 223