1*5f62a964SEmmanuel Vadot// SPDX-License-Identifier: GPL-2.0+ OR MIT 2*5f62a964SEmmanuel Vadot/* 3*5f62a964SEmmanuel Vadot * Apple S8001 "A9X" SoC 4*5f62a964SEmmanuel Vadot * 5*5f62a964SEmmanuel Vadot * Other names: H8G, "Elba" 6*5f62a964SEmmanuel Vadot * 7*5f62a964SEmmanuel Vadot * Copyright (c) 2022, Konrad Dybcio <konradybcio@kernel.org> 8*5f62a964SEmmanuel Vadot */ 9*5f62a964SEmmanuel Vadot 10*5f62a964SEmmanuel Vadot#include <dt-bindings/gpio/gpio.h> 11*5f62a964SEmmanuel Vadot#include <dt-bindings/interrupt-controller/apple-aic.h> 12*5f62a964SEmmanuel Vadot#include <dt-bindings/interrupt-controller/irq.h> 13*5f62a964SEmmanuel Vadot#include <dt-bindings/pinctrl/apple.h> 14*5f62a964SEmmanuel Vadot 15*5f62a964SEmmanuel Vadot/ { 16*5f62a964SEmmanuel Vadot interrupt-parent = <&aic>; 17*5f62a964SEmmanuel Vadot #address-cells = <2>; 18*5f62a964SEmmanuel Vadot #size-cells = <2>; 19*5f62a964SEmmanuel Vadot 20*5f62a964SEmmanuel Vadot clkref: clock-ref { 21*5f62a964SEmmanuel Vadot compatible = "fixed-clock"; 22*5f62a964SEmmanuel Vadot #clock-cells = <0>; 23*5f62a964SEmmanuel Vadot clock-frequency = <24000000>; 24*5f62a964SEmmanuel Vadot clock-output-names = "clkref"; 25*5f62a964SEmmanuel Vadot }; 26*5f62a964SEmmanuel Vadot 27*5f62a964SEmmanuel Vadot cpus { 28*5f62a964SEmmanuel Vadot #address-cells = <2>; 29*5f62a964SEmmanuel Vadot #size-cells = <0>; 30*5f62a964SEmmanuel Vadot 31*5f62a964SEmmanuel Vadot cpu0: cpu@0 { 32*5f62a964SEmmanuel Vadot compatible = "apple,twister"; 33*5f62a964SEmmanuel Vadot reg = <0x0 0x0>; 34*5f62a964SEmmanuel Vadot cpu-release-addr = <0 0>; /* To be filled in by loader */ 35*5f62a964SEmmanuel Vadot enable-method = "spin-table"; 36*5f62a964SEmmanuel Vadot device_type = "cpu"; 37*5f62a964SEmmanuel Vadot }; 38*5f62a964SEmmanuel Vadot 39*5f62a964SEmmanuel Vadot cpu1: cpu@1 { 40*5f62a964SEmmanuel Vadot compatible = "apple,twister"; 41*5f62a964SEmmanuel Vadot reg = <0x0 0x1>; 42*5f62a964SEmmanuel Vadot cpu-release-addr = <0 0>; /* To be filled in by loader */ 43*5f62a964SEmmanuel Vadot enable-method = "spin-table"; 44*5f62a964SEmmanuel Vadot device_type = "cpu"; 45*5f62a964SEmmanuel Vadot }; 46*5f62a964SEmmanuel Vadot }; 47*5f62a964SEmmanuel Vadot 48*5f62a964SEmmanuel Vadot soc { 49*5f62a964SEmmanuel Vadot compatible = "simple-bus"; 50*5f62a964SEmmanuel Vadot #address-cells = <2>; 51*5f62a964SEmmanuel Vadot #size-cells = <2>; 52*5f62a964SEmmanuel Vadot nonposted-mmio; 53*5f62a964SEmmanuel Vadot ranges; 54*5f62a964SEmmanuel Vadot 55*5f62a964SEmmanuel Vadot serial0: serial@20a0c0000 { 56*5f62a964SEmmanuel Vadot compatible = "apple,s5l-uart"; 57*5f62a964SEmmanuel Vadot reg = <0x2 0x0a0c0000 0x0 0x4000>; 58*5f62a964SEmmanuel Vadot reg-io-width = <4>; 59*5f62a964SEmmanuel Vadot interrupt-parent = <&aic>; 60*5f62a964SEmmanuel Vadot interrupts = <AIC_IRQ 218 IRQ_TYPE_LEVEL_HIGH>; 61*5f62a964SEmmanuel Vadot /* Use the bootloader-enabled clocks for now. */ 62*5f62a964SEmmanuel Vadot clocks = <&clkref>, <&clkref>; 63*5f62a964SEmmanuel Vadot clock-names = "uart", "clk_uart_baud0"; 64*5f62a964SEmmanuel Vadot status = "disabled"; 65*5f62a964SEmmanuel Vadot }; 66*5f62a964SEmmanuel Vadot 67*5f62a964SEmmanuel Vadot aic: interrupt-controller@20e100000 { 68*5f62a964SEmmanuel Vadot compatible = "apple,s8000-aic", "apple,aic"; 69*5f62a964SEmmanuel Vadot reg = <0x2 0x0e100000 0x0 0x100000>; 70*5f62a964SEmmanuel Vadot #interrupt-cells = <3>; 71*5f62a964SEmmanuel Vadot interrupt-controller; 72*5f62a964SEmmanuel Vadot }; 73*5f62a964SEmmanuel Vadot 74*5f62a964SEmmanuel Vadot pinctrl_ap: pinctrl@20f100000 { 75*5f62a964SEmmanuel Vadot compatible = "apple,s8000-pinctrl", "apple,pinctrl"; 76*5f62a964SEmmanuel Vadot reg = <0x2 0x0f100000 0x0 0x100000>; 77*5f62a964SEmmanuel Vadot 78*5f62a964SEmmanuel Vadot gpio-controller; 79*5f62a964SEmmanuel Vadot #gpio-cells = <2>; 80*5f62a964SEmmanuel Vadot gpio-ranges = <&pinctrl_ap 0 0 219>; 81*5f62a964SEmmanuel Vadot apple,npins = <219>; 82*5f62a964SEmmanuel Vadot 83*5f62a964SEmmanuel Vadot interrupt-controller; 84*5f62a964SEmmanuel Vadot #interrupt-cells = <2>; 85*5f62a964SEmmanuel Vadot interrupt-parent = <&aic>; 86*5f62a964SEmmanuel Vadot interrupts = <AIC_IRQ 42 IRQ_TYPE_LEVEL_HIGH>, 87*5f62a964SEmmanuel Vadot <AIC_IRQ 43 IRQ_TYPE_LEVEL_HIGH>, 88*5f62a964SEmmanuel Vadot <AIC_IRQ 44 IRQ_TYPE_LEVEL_HIGH>, 89*5f62a964SEmmanuel Vadot <AIC_IRQ 45 IRQ_TYPE_LEVEL_HIGH>, 90*5f62a964SEmmanuel Vadot <AIC_IRQ 46 IRQ_TYPE_LEVEL_HIGH>, 91*5f62a964SEmmanuel Vadot <AIC_IRQ 47 IRQ_TYPE_LEVEL_HIGH>, 92*5f62a964SEmmanuel Vadot <AIC_IRQ 48 IRQ_TYPE_LEVEL_HIGH>; 93*5f62a964SEmmanuel Vadot }; 94*5f62a964SEmmanuel Vadot 95*5f62a964SEmmanuel Vadot pinctrl_aop: pinctrl@2100f0000 { 96*5f62a964SEmmanuel Vadot compatible = "apple,s8000-pinctrl", "apple,pinctrl"; 97*5f62a964SEmmanuel Vadot reg = <0x2 0x100f0000 0x0 0x100000>; 98*5f62a964SEmmanuel Vadot 99*5f62a964SEmmanuel Vadot gpio-controller; 100*5f62a964SEmmanuel Vadot #gpio-cells = <2>; 101*5f62a964SEmmanuel Vadot gpio-ranges = <&pinctrl_aop 0 0 28>; 102*5f62a964SEmmanuel Vadot apple,npins = <28>; 103*5f62a964SEmmanuel Vadot 104*5f62a964SEmmanuel Vadot interrupt-controller; 105*5f62a964SEmmanuel Vadot #interrupt-cells = <2>; 106*5f62a964SEmmanuel Vadot interrupt-parent = <&aic>; 107*5f62a964SEmmanuel Vadot interrupts = <AIC_IRQ 128 IRQ_TYPE_LEVEL_HIGH>, 108*5f62a964SEmmanuel Vadot <AIC_IRQ 129 IRQ_TYPE_LEVEL_HIGH>, 109*5f62a964SEmmanuel Vadot <AIC_IRQ 130 IRQ_TYPE_LEVEL_HIGH>, 110*5f62a964SEmmanuel Vadot <AIC_IRQ 131 IRQ_TYPE_LEVEL_HIGH>, 111*5f62a964SEmmanuel Vadot <AIC_IRQ 132 IRQ_TYPE_LEVEL_HIGH>, 112*5f62a964SEmmanuel Vadot <AIC_IRQ 133 IRQ_TYPE_LEVEL_HIGH>, 113*5f62a964SEmmanuel Vadot <AIC_IRQ 134 IRQ_TYPE_LEVEL_HIGH>; 114*5f62a964SEmmanuel Vadot }; 115*5f62a964SEmmanuel Vadot 116*5f62a964SEmmanuel Vadot wdt: watchdog@2102b0000 { 117*5f62a964SEmmanuel Vadot compatible = "apple,s8000-wdt", "apple,wdt"; 118*5f62a964SEmmanuel Vadot reg = <0x2 0x102b0000 0x0 0x4000>; 119*5f62a964SEmmanuel Vadot clocks = <&clkref>; 120*5f62a964SEmmanuel Vadot interrupt-parent = <&aic>; 121*5f62a964SEmmanuel Vadot interrupts = <AIC_IRQ 4 IRQ_TYPE_LEVEL_HIGH>; 122*5f62a964SEmmanuel Vadot }; 123*5f62a964SEmmanuel Vadot }; 124*5f62a964SEmmanuel Vadot 125*5f62a964SEmmanuel Vadot timer { 126*5f62a964SEmmanuel Vadot compatible = "arm,armv8-timer"; 127*5f62a964SEmmanuel Vadot interrupt-parent = <&aic>; 128*5f62a964SEmmanuel Vadot interrupt-names = "phys", "virt"; 129*5f62a964SEmmanuel Vadot /* Note that A9X doesn't actually have a hypervisor (EL2 is not implemented). */ 130*5f62a964SEmmanuel Vadot interrupts = <AIC_FIQ AIC_TMR_GUEST_PHYS IRQ_TYPE_LEVEL_HIGH>, 131*5f62a964SEmmanuel Vadot <AIC_FIQ AIC_TMR_GUEST_VIRT IRQ_TYPE_LEVEL_HIGH>; 132*5f62a964SEmmanuel Vadot }; 133*5f62a964SEmmanuel Vadot}; 134