// SPDX-License-Identifier: GPL-2.0+ OR MIT /* * Apple T8122 "M3" SoC * * Other names: H15G * * Copyright The Asahi Linux Contributors */ #include #include #include #include #include #include / { compatible = "apple,t8122", "apple,arm-platform"; #address-cells = <2>; #size-cells = <2>; cpus { #address-cells = <2>; #size-cells = <0>; cpu-map { cluster0 { core0 { cpu = <&cpu_e0>; }; core1 { cpu = <&cpu_e1>; }; core2 { cpu = <&cpu_e2>; }; core3 { cpu = <&cpu_e3>; }; }; cluster1 { core0 { cpu = <&cpu_p0>; }; core1 { cpu = <&cpu_p1>; }; core2 { cpu = <&cpu_p2>; }; core3 { cpu = <&cpu_p3>; }; }; }; cpu_e0: cpu@0 { compatible = "apple,sawtooth"; device_type = "cpu"; reg = <0x0 0x0>; enable-method = "spin-table"; cpu-release-addr = <0 0>; /* To be filled by loader */ next-level-cache = <&l2_cache_0>; i-cache-size = <0x20000>; d-cache-size = <0x10000>; }; cpu_e1: cpu@1 { compatible = "apple,sawtooth"; device_type = "cpu"; reg = <0x0 0x1>; enable-method = "spin-table"; cpu-release-addr = <0 0>; /* To be filled by loader */ next-level-cache = <&l2_cache_0>; i-cache-size = <0x20000>; d-cache-size = <0x10000>; }; cpu_e2: cpu@2 { compatible = "apple,sawtooth"; device_type = "cpu"; reg = <0x0 0x2>; enable-method = "spin-table"; cpu-release-addr = <0 0>; /* To be filled by loader */ next-level-cache = <&l2_cache_0>; i-cache-size = <0x20000>; d-cache-size = <0x10000>; }; cpu_e3: cpu@3 { compatible = "apple,sawtooth"; device_type = "cpu"; reg = <0x0 0x3>; enable-method = "spin-table"; cpu-release-addr = <0 0>; /* To be filled by loader */ next-level-cache = <&l2_cache_0>; i-cache-size = <0x20000>; d-cache-size = <0x10000>; }; cpu_p0: cpu@10100 { compatible = "apple,everest"; device_type = "cpu"; reg = <0x0 0x10100>; enable-method = "spin-table"; cpu-release-addr = <0 0>; /* To be filled by loader */ next-level-cache = <&l2_cache_1>; i-cache-size = <0x30000>; d-cache-size = <0x20000>; }; cpu_p1: cpu@10101 { compatible = "apple,everest"; device_type = "cpu"; reg = <0x0 0x10101>; enable-method = "spin-table"; cpu-release-addr = <0 0>; /* To be filled by loader */ next-level-cache = <&l2_cache_1>; i-cache-size = <0x30000>; d-cache-size = <0x20000>; }; cpu_p2: cpu@10102 { compatible = "apple,everest"; device_type = "cpu"; reg = <0x0 0x10102>; enable-method = "spin-table"; cpu-release-addr = <0 0>; /* To be filled by loader */ next-level-cache = <&l2_cache_1>; i-cache-size = <0x30000>; d-cache-size = <0x20000>; }; cpu_p3: cpu@10103 { compatible = "apple,everest"; device_type = "cpu"; reg = <0x0 0x10103>; enable-method = "spin-table"; cpu-release-addr = <0 0>; /* To be filled by loader */ next-level-cache = <&l2_cache_1>; i-cache-size = <0x30000>; d-cache-size = <0x20000>; }; l2_cache_0: l2-cache-0 { compatible = "cache"; cache-level = <2>; cache-unified; cache-size = <0x400000>; }; l2_cache_1: l2-cache-1 { compatible = "cache"; cache-level = <2>; cache-unified; cache-size = <0x1000000>; }; }; timer { compatible = "arm,armv8-timer"; interrupt-parent = <&aic>; interrupt-names = "phys", "virt", "hyp-phys", "hyp-virt"; interrupts = , , , ; }; clkref: clock-ref { compatible = "fixed-clock"; #clock-cells = <0>; clock-frequency = <24000000>; clock-output-names = "clkref"; }; soc { compatible = "simple-bus"; #address-cells = <2>; #size-cells = <2>; ranges; nonposted-mmio; /* Required to get >32-bit DMA via DARTs */ dma-ranges = <0 0 0 0 0xffffffff 0xffffc000>; i2c0: i2c@235010000 { compatible = "apple,t8122-i2c", "apple,t8103-i2c"; reg = <0x2 0x35010000 0x0 0x4000>; clocks = <&clkref>; interrupt-parent = <&aic>; interrupts = ; pinctrl-0 = <&i2c0_pins>; pinctrl-names = "default"; #address-cells = <0x1>; #size-cells = <0x0>; power-domains = <&ps_i2c0>; status = "disabled"; }; i2c1: i2c@235014000 { compatible = "apple,t8122-i2c", "apple,t8103-i2c"; reg = <0x2 0x35014000 0x0 0x4000>; clocks = <&clkref>; interrupt-parent = <&aic>; interrupts = ; pinctrl-0 = <&i2c1_pins>; pinctrl-names = "default"; #address-cells = <0x1>; #size-cells = <0x0>; power-domains = <&ps_i2c1>; status = "disabled"; }; i2c2: i2c@235018000 { compatible = "apple,t8122-i2c", "apple,t8103-i2c"; reg = <0x2 0x35018000 0x0 0x4000>; clocks = <&clkref>; interrupt-parent = <&aic>; interrupts = ; pinctrl-0 = <&i2c2_pins>; pinctrl-names = "default"; #address-cells = <0x1>; #size-cells = <0x0>; power-domains = <&ps_i2c2>; status = "disabled"; }; i2c3: i2c@23501c000 { compatible = "apple,t8122-i2c", "apple,t8103-i2c"; reg = <0x2 0x3501c000 0x0 0x4000>; clocks = <&clkref>; interrupt-parent = <&aic>; interrupts = ; pinctrl-0 = <&i2c3_pins>; pinctrl-names = "default"; #address-cells = <0x1>; #size-cells = <0x0>; power-domains = <&ps_i2c3>; status = "disabled"; }; i2c4: i2c@235020000 { compatible = "apple,t8122-i2c", "apple,t8103-i2c"; reg = <0x2 0x35020000 0x0 0x4000>; clocks = <&clkref>; interrupt-parent = <&aic>; interrupts = ; pinctrl-0 = <&i2c4_pins>; pinctrl-names = "default"; #address-cells = <0x1>; #size-cells = <0x0>; power-domains = <&ps_i2c4>; status = "disabled"; }; fpwm1: pwm@2a1044000 { compatible = "apple,t8122-fpwm", "apple,s5l-fpwm"; reg = <0x2 0xa1044000 0x0 0x4000>; power-domains = <&ps_fpwm1>; clocks = <&clkref>; #pwm-cells = <2>; status = "disabled"; }; serial0: serial@2a1200000 { compatible = "apple,s5l-uart"; reg = <0x2 0xa1200000 0x0 0x1000>; reg-io-width = <4>; interrupt-parent = <&aic>; interrupts = ; /* * TODO: figure out the clocking properly, there may * be a third selectable clock. */ clocks = <&clkref>, <&clkref>; clock-names = "uart", "clk_uart_baud0"; power-domains = <&ps_uart0>; status = "disabled"; }; aic: interrupt-controller@2d1000000 { compatible = "apple,t8122-aic3"; #interrupt-cells = <3>; interrupt-controller; reg = <0x2 0xd1000000 0x0 0x184000>, <0x2 0xd1040000 0x0 0x4>; reg-names = "core", "event"; power-domains = <&ps_aic>; affinities { e-core-pmu-affinity { apple,fiq-index = ; cpus = <&cpu_e0 &cpu_e1 &cpu_e2 &cpu_e3>; }; p-core-pmu-affinity { apple,fiq-index = ; cpus = <&cpu_p0 &cpu_p1 &cpu_p2 &cpu_p3>; }; }; }; pmgr: power-management@2d0700000 { compatible = "apple,t8122-pmgr", "apple,t8103-pmgr", "syscon", "simple-mfd"; #address-cells = <1>; #size-cells = <1>; reg = <0x2 0xd0700000 0 0x14000>; /* child nodes are added in t8122-pmgr.dtsi */ }; pinctrl_ap: pinctrl@2c7100000 { compatible = "apple,t8122-pinctrl", "apple,t8103-pinctrl"; reg = <0x2 0xc7100000 0x0 0x100000>; power-domains = <&ps_gpio>; gpio-controller; #gpio-cells = <2>; gpio-ranges = <&pinctrl_ap 0 0 224>; apple,npins = <224>; interrupt-controller; #interrupt-cells = <2>; interrupt-parent = <&aic>; interrupts = , , , , , , ; i2c0_pins: i2c0-pins { pinmux = , ; }; i2c1_pins: i2c1-pins { pinmux = , ; }; i2c2_pins: i2c2-pins { pinmux = , ; }; i2c3_pins: i2c3-pins { pinmux = , ; }; i2c4_pins: i2c4-pins { pinmux = , ; }; }; pinctrl_nub: pinctrl@2e41f0000 { compatible = "apple,t8122-pinctrl", "apple,t8103-pinctrl"; reg = <0x2 0xe41f0000 0x0 0x4000>; power-domains = <&ps_nub_gpio>; gpio-controller; #gpio-cells = <2>; gpio-ranges = <&pinctrl_nub 0 0 32>; apple,npins = <32>; interrupt-controller; #interrupt-cells = <2>; interrupt-parent = <&aic>; interrupts = , , , , , , ; }; pmgr_mini: power-management@2e4280000 { compatible = "apple,t8122-pmgr", "apple,t8103-pmgr", "syscon", "simple-mfd"; #address-cells = <1>; #size-cells = <1>; reg = <0x2 0xe4280000 0 0x4000>; /* child nodes are added in t8122-pmgr.dtsi */ }; wdt: watchdog@2e42b0000 { compatible = "apple,t8122-wdt", "apple,t8103-wdt"; reg = <0x2 0xe42b0000 0x0 0x4000>; clocks = <&clkref>; interrupt-parent = <&aic>; interrupts = ; }; pinctrl_smc: pinctrl@2ec820000 { compatible = "apple,t8122-pinctrl", "apple,t8103-pinctrl"; reg = <0x2 0xec820000 0x0 0x4000>; gpio-controller; #gpio-cells = <2>; gpio-ranges = <&pinctrl_smc 0 0 18>; apple,npins = <18>; interrupt-controller; #interrupt-cells = <2>; interrupt-parent = <&aic>; interrupts = , , , , , , ; }; pinctrl_aop: pinctrl@2f4824000 { compatible = "apple,t8122-pinctrl", "apple,t8103-pinctrl"; reg = <0x2 0xf4824000 0x0 0x4000>; gpio-controller; #gpio-cells = <2>; gpio-ranges = <&pinctrl_aop 0 0 54>; apple,npins = <54>; interrupt-controller; #interrupt-cells = <2>; interrupt-parent = <&aic>; interrupts = , , , , , , ; }; }; }; #include "t8122-pmgr.dtsi"