Merge tag 'asahi-soc-dt-6.2' of https://github.com/AsahiLinux/linux into arm/dt

Apple SoC DT updates for 6.2.

This includes new device trees for Apple M1 Pro/Max/Ultra SoCs and the
devices that contain them, as well as some audio-related changes.

* tag 'asahi-soc-dt-6.2' of https://github.com/AsahiLinux/linux:
  arm64: dts: apple: Add ADMAC resets on t8103/t600x
  dt-bindings: dma: apple,admac: Add reset
  arm64: dts: apple: t600x: Add MCA and its support
  arm64: dts: apple: t8103: Add MCA and its support
  arm64: dts: apple: t8103: Add AUDIO_P parent to the SIO_ADMA power domain
  arm64: dts: apple: Add J375 devicetrees
  arm64: dts: apple: Add J314 and J316 devicetrees
  arm64: dts: apple: Add initial t6000/t6001/t6002 DTs
  arm64: dts: apple: Fix j45x model years
  dt-bindings: arm: apple: Add t6001/t6002 Mac Studio compatibles
  dt-bindings: apple,aic2: Add CPU PMU per-cpu pseudo-interrupts
  dt-bindings: iommu: dart: add t6000 compatible

Link: https://lore.kernel.org/r/dea10860-2870-3a9e-fa51-21e493b1573a@marcan.st
Signed-off-by: Arnd Bergmann <arnd@arndb.de>
This commit is contained in:
Arnd Bergmann 2022-10-27 18:11:02 +02:00
commit 4bfe93fd9a
No known key found for this signature in database
GPG Key ID: 9A6C79EFE60018D9
28 changed files with 3484 additions and 5 deletions

View File

@ -19,12 +19,14 @@ description: |
- MacBook Air (M1, 2020)
- iMac (24-inch, M1, 2021)
And devices based on the "M1 Pro" and "M1 Max" SoCs:
And devices based on the "M1 Pro", "M1 Max" and "M1 Ultra" SoCs:
- MacBook Pro (14-inch, M1 Pro, 2021)
- MacBook Pro (14-inch, M1 Max, 2021)
- MacBook Pro (16-inch, M1 Pro, 2021)
- MacBook Pro (16-inch, M1 Max, 2021)
- Mac Studio (M1 Max, 2022)
- Mac Studio (M1 Ultra, 2022)
The compatible property should follow this format:
@ -67,6 +69,7 @@ properties:
- apple,j457 # iMac (24-inch, 2x USB-C, M1, 2021)
- const: apple,t8103
- const: apple,arm-platform
- description: Apple M1 Pro SoC based platforms
items:
- enum:
@ -74,14 +77,23 @@ properties:
- apple,j316s # MacBook Pro (16-inch, M1 Pro, 2021)
- const: apple,t6000
- const: apple,arm-platform
- description: Apple M1 Max SoC based platforms
items:
- enum:
- apple,j314c # MacBook Pro (14-inch, M1 Max, 2021)
- apple,j316c # MacBook Pro (16-inch, M1 Max, 2021)
- apple,j375c # Mac Studio (M1 Max, 2022)
- const: apple,t6001
- const: apple,arm-platform
- description: Apple M1 Ultra SoC based platforms
items:
- enum:
- apple,j375d # Mac Studio (M1 Ultra, 2022)
- const: apple,t6002
- const: apple,arm-platform
additionalProperties: true
...

View File

@ -56,6 +56,9 @@ properties:
power-domains:
maxItems: 1
resets:
maxItems: 1
required:
- compatible
- reg

View File

@ -69,6 +69,35 @@ properties:
power-domains:
maxItems: 1
affinities:
type: object
additionalProperties: false
description:
FIQ affinity can be expressed as a single "affinities" node,
containing a set of sub-nodes, one per FIQ with a non-default
affinity.
patternProperties:
"^.+-affinity$":
type: object
additionalProperties: false
properties:
apple,fiq-index:
description:
The interrupt number specified as a FIQ, and for which
the affinity is not the default.
$ref: /schemas/types.yaml#/definitions/uint32
maximum: 5
cpus:
$ref: /schemas/types.yaml#/definitions/phandle-array
description:
Should be a list of phandles to CPU nodes (as described in
Documentation/devicetree/bindings/arm/cpus.yaml).
required:
- apple,fiq-index
- cpus
required:
- compatible
- '#interrupt-cells'

View File

@ -22,7 +22,9 @@ description: |+
properties:
compatible:
const: apple,t8103-dart
enum:
- apple,t8103-dart
- apple,t6000-dart
reg:
maxItems: 1

View File

@ -4,3 +4,9 @@ dtb-$(CONFIG_ARCH_APPLE) += t8103-j293.dtb
dtb-$(CONFIG_ARCH_APPLE) += t8103-j313.dtb
dtb-$(CONFIG_ARCH_APPLE) += t8103-j456.dtb
dtb-$(CONFIG_ARCH_APPLE) += t8103-j457.dtb
dtb-$(CONFIG_ARCH_APPLE) += t6000-j314s.dtb
dtb-$(CONFIG_ARCH_APPLE) += t6001-j314c.dtb
dtb-$(CONFIG_ARCH_APPLE) += t6000-j316s.dtb
dtb-$(CONFIG_ARCH_APPLE) += t6001-j316c.dtb
dtb-$(CONFIG_ARCH_APPLE) += t6001-j375c.dtb
dtb-$(CONFIG_ARCH_APPLE) += t6002-j375d.dtb

View File

@ -0,0 +1,22 @@
/* SPDX-License-Identifier: GPL-2.0+ OR MIT
*
* C preprocessor macros for t600x multi die support.
*/
#ifndef __DTS_APPLE_MULTI_DIE_CPP_H
#define __DTS_APPLE_MULTI_DIE_CPP_H
#ifndef __stringify
#define __stringify_1(x...) #x
#define __stringify(x...) __stringify_1(x)
#endif
#ifndef __concat
#define __concat_1(x, y...) x ## y
#define __concat(x, y...) __concat_1(x, y)
#endif
#define DIE_NODE(a) __concat(a, DIE)
#define DIE_LABEL(a) __stringify(__concat(a, DIE))
#endif /* !__DTS_APPLE_MULTI_DIE_CPP_H */

View File

@ -0,0 +1,18 @@
// SPDX-License-Identifier: GPL-2.0+ OR MIT
/*
* MacBook Pro (14-inch, M1 Pro, 2021)
*
* target-type: J314s
*
* Copyright The Asahi Linux Contributors
*/
/dts-v1/;
#include "t6000.dtsi"
#include "t600x-j314-j316.dtsi"
/ {
compatible = "apple,j314s", "apple,t6000", "apple,arm-platform";
model = "Apple MacBook Pro (14-inch, M1 Pro, 2021)";
};

View File

@ -0,0 +1,18 @@
// SPDX-License-Identifier: GPL-2.0+ OR MIT
/*
* MacBook Pro (16-inch, M1 Pro, 2021)
*
* target-type: J316s
*
* Copyright The Asahi Linux Contributors
*/
/dts-v1/;
#include "t6000.dtsi"
#include "t600x-j314-j316.dtsi"
/ {
compatible = "apple,j316s", "apple,t6000", "apple,arm-platform";
model = "Apple MacBook Pro (16-inch, M1 Pro, 2021)";
};

View File

@ -0,0 +1,18 @@
// SPDX-License-Identifier: GPL-2.0+ OR MIT
/*
* Apple T6000 "M1 Pro" SoC
*
* Other names: H13J, "Jade Chop"
*
* Copyright The Asahi Linux Contributors
*/
/* This chip is just a cut down version of t6001, so include it and disable the missing parts */
#include "t6001.dtsi"
/ {
compatible = "apple,t6000", "apple,arm-platform";
};
/delete-node/ &pmgr_south;

View File

@ -0,0 +1,18 @@
// SPDX-License-Identifier: GPL-2.0+ OR MIT
/*
* MacBook Pro (14-inch, M1 Max, 2021)
*
* target-type: J314c
*
* Copyright The Asahi Linux Contributors
*/
/dts-v1/;
#include "t6001.dtsi"
#include "t600x-j314-j316.dtsi"
/ {
compatible = "apple,j314c", "apple,t6001", "apple,arm-platform";
model = "Apple MacBook Pro (14-inch, M1 Max, 2021)";
};

View File

@ -0,0 +1,18 @@
// SPDX-License-Identifier: GPL-2.0+ OR MIT
/*
* MacBook Pro (16-inch, M1 Max, 2021)
*
* target-type: J316c
*
* Copyright The Asahi Linux Contributors
*/
/dts-v1/;
#include "t6001.dtsi"
#include "t600x-j314-j316.dtsi"
/ {
compatible = "apple,j316c", "apple,t6001", "apple,arm-platform";
model = "Apple MacBook Pro (16-inch, M1 Max, 2021)";
};

View File

@ -0,0 +1,18 @@
// SPDX-License-Identifier: GPL-2.0+ OR MIT
/*
* Mac Studio (M1 Max, 2022)
*
* target-type: J375c
*
* Copyright The Asahi Linux Contributors
*/
/dts-v1/;
#include "t6001.dtsi"
#include "t600x-j375.dtsi"
/ {
compatible = "apple,j375c", "apple,t6001", "apple,arm-platform";
model = "Apple Mac Studio (M1 Max, 2022)";
};

View File

@ -0,0 +1,63 @@
// SPDX-License-Identifier: GPL-2.0+ OR MIT
/*
* Apple T6001 "M1 Max" SoC
*
* Other names: H13J, "Jade"
*
* Copyright The Asahi Linux Contributors
*/
#include <dt-bindings/gpio/gpio.h>
#include <dt-bindings/interrupt-controller/apple-aic.h>
#include <dt-bindings/interrupt-controller/irq.h>
#include <dt-bindings/pinctrl/apple.h>
#include "multi-die-cpp.h"
#include "t600x-common.dtsi"
/ {
compatible = "apple,t6001", "apple,arm-platform";
soc {
compatible = "simple-bus";
#address-cells = <2>;
#size-cells = <2>;
ranges;
nonposted-mmio;
// filled via templated includes at the end of the file
};
};
#define DIE
#define DIE_NO 0
&{/soc} {
#include "t600x-die0.dtsi"
#include "t600x-dieX.dtsi"
#include "t600x-nvme.dtsi"
};
#include "t600x-gpio-pins.dtsi"
#include "t600x-pmgr.dtsi"
#undef DIE
#undef DIE_NO
&aic {
affinities {
e-core-pmu-affinity {
apple,fiq-index = <AIC_CPU_PMU_E>;
cpus = <&cpu_e00 &cpu_e01>;
};
p-core-pmu-affinity {
apple,fiq-index = <AIC_CPU_PMU_P>;
cpus = <&cpu_p00 &cpu_p01 &cpu_p02 &cpu_p03
&cpu_p10 &cpu_p11 &cpu_p12 &cpu_p13>;
};
};
};

View File

@ -0,0 +1,50 @@
// SPDX-License-Identifier: GPL-2.0+ OR MIT
/*
* Mac Studio (M1 Ultra, 2022)
*
* target-type: J375d
*
* Copyright The Asahi Linux Contributors
*/
/dts-v1/;
#include "t6002.dtsi"
#include "t600x-j375.dtsi"
/ {
compatible = "apple,j375d", "apple,t6002", "apple,arm-platform";
model = "Apple Mac Studio (M1 Ultra, 2022)";
};
/* USB Type C */
&i2c0 {
/* front-right */
hpm4: usb-pd@39 {
compatible = "apple,cd321x";
reg = <0x39>;
interrupt-parent = <&pinctrl_ap>;
interrupts = <174 IRQ_TYPE_LEVEL_LOW>;
interrupt-names = "irq";
};
/* front-left */
hpm5: usb-pd@3a {
compatible = "apple,cd321x";
reg = <0x3a>;
interrupt-parent = <&pinctrl_ap>;
interrupts = <174 IRQ_TYPE_LEVEL_LOW>;
interrupt-names = "irq";
};
};
/* delete unused always-on power-domains on die 1 */
/delete-node/ &ps_atc2_usb_aon_die1;
/delete-node/ &ps_atc2_usb_die1;
/delete-node/ &ps_atc3_usb_aon_die1;
/delete-node/ &ps_atc3_usb_die1;
/delete-node/ &ps_disp0_cpu0_die1;
/delete-node/ &ps_disp0_fe_die1;

View File

@ -0,0 +1,175 @@
// SPDX-License-Identifier: GPL-2.0+ OR MIT
/*
* Apple T6002 "M1 Ultra" SoC
*
* Other names: H13J, "Jade 2C"
*
* Copyright The Asahi Linux Contributors
*/
#include <dt-bindings/gpio/gpio.h>
#include <dt-bindings/interrupt-controller/apple-aic.h>
#include <dt-bindings/interrupt-controller/irq.h>
#include <dt-bindings/pinctrl/apple.h>
#include "multi-die-cpp.h"
#include "t600x-common.dtsi"
/ {
compatible = "apple,t6002", "apple,arm-platform";
#address-cells = <2>;
#size-cells = <2>;
cpus {
cpu_e10: cpu@800 {
compatible = "apple,icestorm";
device_type = "cpu";
reg = <0x0 0x800>;
enable-method = "spin-table";
cpu-release-addr = <0 0>; /* To be filled by loader */
};
cpu_e11: cpu@801 {
compatible = "apple,icestorm";
device_type = "cpu";
reg = <0x0 0x801>;
enable-method = "spin-table";
cpu-release-addr = <0 0>; /* To be filled by loader */
};
cpu_p20: cpu@10900 {
compatible = "apple,firestorm";
device_type = "cpu";
reg = <0x0 0x10900>;
enable-method = "spin-table";
cpu-release-addr = <0 0>; /* To be filled by loader */
};
cpu_p21: cpu@10901 {
compatible = "apple,firestorm";
device_type = "cpu";
reg = <0x0 0x10901>;
enable-method = "spin-table";
cpu-release-addr = <0 0>; /* To be filled by loader */
};
cpu_p22: cpu@10902 {
compatible = "apple,firestorm";
device_type = "cpu";
reg = <0x0 0x10902>;
enable-method = "spin-table";
cpu-release-addr = <0 0>; /* To be filled by loader */
};
cpu_p23: cpu@10903 {
compatible = "apple,firestorm";
device_type = "cpu";
reg = <0x0 0x10903>;
enable-method = "spin-table";
cpu-release-addr = <0 0>; /* To be filled by loader */
};
cpu_p30: cpu@10a00 {
compatible = "apple,firestorm";
device_type = "cpu";
reg = <0x0 0x10a00>;
enable-method = "spin-table";
cpu-release-addr = <0 0>; /* To be filled by loader */
};
cpu_p31: cpu@10a01 {
compatible = "apple,firestorm";
device_type = "cpu";
reg = <0x0 0x10a01>;
enable-method = "spin-table";
cpu-release-addr = <0 0>; /* To be filled by loader */
};
cpu_p32: cpu@10a02 {
compatible = "apple,firestorm";
device_type = "cpu";
reg = <0x0 0x10a02>;
enable-method = "spin-table";
cpu-release-addr = <0 0>; /* To be filled by loader */
};
cpu_p33: cpu@10a03 {
compatible = "apple,firestorm";
device_type = "cpu";
reg = <0x0 0x10a03>;
enable-method = "spin-table";
cpu-release-addr = <0 0>; /* To be filled by loader */
};
};
die0: soc@200000000 {
compatible = "simple-bus";
#address-cells = <2>;
#size-cells = <2>;
ranges = <0x2 0x0 0x2 0x0 0x4 0x0>,
<0x5 0x80000000 0x5 0x80000000 0x1 0x80000000>,
<0x7 0x0 0x7 0x0 0xf 0x80000000>;
nonposted-mmio;
// filled via templated includes at the end of the file
};
die1: soc@2200000000 {
compatible = "simple-bus";
#address-cells = <2>;
#size-cells = <2>;
ranges = <0x2 0x0 0x22 0x0 0x4 0x0>,
<0x7 0x0 0x27 0x0 0xf 0x80000000>;
nonposted-mmio;
// filled via templated includes at the end of the file
};
};
#define DIE
#define DIE_NO 0
&die0 {
#include "t600x-die0.dtsi"
#include "t600x-dieX.dtsi"
};
#include "t600x-pmgr.dtsi"
#include "t600x-gpio-pins.dtsi"
#undef DIE
#undef DIE_NO
#define DIE _die1
#define DIE_NO 1
&die1 {
#include "t600x-dieX.dtsi"
#include "t600x-nvme.dtsi"
};
#include "t600x-pmgr.dtsi"
#undef DIE
#undef DIE_NO
&aic {
affinities {
e-core-pmu-affinity {
apple,fiq-index = <AIC_CPU_PMU_E>;
cpus = <&cpu_e00 &cpu_e01
&cpu_e10 &cpu_e11>;
};
p-core-pmu-affinity {
apple,fiq-index = <AIC_CPU_PMU_P>;
cpus = <&cpu_p00 &cpu_p01 &cpu_p02 &cpu_p03
&cpu_p10 &cpu_p11 &cpu_p12 &cpu_p13
&cpu_p20 &cpu_p21 &cpu_p22 &cpu_p23
&cpu_p30 &cpu_p31 &cpu_p32 &cpu_p33>;
};
};
};

View File

@ -0,0 +1,137 @@
// SPDX-License-Identifier: GPL-2.0+ OR MIT
/*
* Common Apple T6000 / T6001 / T6002 "M1 Pro/Max/Ultra" SoC
*
* Other names: H13J, "Jade Chop", "Jade", "Jade 2C"
*
* Copyright The Asahi Linux Contributors
*/
/ {
#address-cells = <2>;
#size-cells = <2>;
cpus {
#address-cells = <2>;
#size-cells = <0>;
cpu_e00: cpu@0 {
compatible = "apple,icestorm";
device_type = "cpu";
reg = <0x0 0x0>;
enable-method = "spin-table";
cpu-release-addr = <0 0>; /* To be filled by loader */
};
cpu_e01: cpu@1 {
compatible = "apple,icestorm";
device_type = "cpu";
reg = <0x0 0x1>;
enable-method = "spin-table";
cpu-release-addr = <0 0>; /* To be filled by loader */
};
cpu_p00: cpu@10100 {
compatible = "apple,firestorm";
device_type = "cpu";
reg = <0x0 0x10100>;
enable-method = "spin-table";
cpu-release-addr = <0 0>; /* To be filled by loader */
};
cpu_p01: cpu@10101 {
compatible = "apple,firestorm";
device_type = "cpu";
reg = <0x0 0x10101>;
enable-method = "spin-table";
cpu-release-addr = <0 0>; /* To be filled by loader */
};
cpu_p02: cpu@10102 {
compatible = "apple,firestorm";
device_type = "cpu";
reg = <0x0 0x10102>;
enable-method = "spin-table";
cpu-release-addr = <0 0>; /* To be filled by loader */
};
cpu_p03: cpu@10103 {
compatible = "apple,firestorm";
device_type = "cpu";
reg = <0x0 0x10103>;
enable-method = "spin-table";
cpu-release-addr = <0 0>; /* To be filled by loader */
};
cpu_p10: cpu@10200 {
compatible = "apple,firestorm";
device_type = "cpu";
reg = <0x0 0x10200>;
enable-method = "spin-table";
cpu-release-addr = <0 0>; /* To be filled by loader */
};
cpu_p11: cpu@10201 {
compatible = "apple,firestorm";
device_type = "cpu";
reg = <0x0 0x10201>;
enable-method = "spin-table";
cpu-release-addr = <0 0>; /* To be filled by loader */
};
cpu_p12: cpu@10202 {
compatible = "apple,firestorm";
device_type = "cpu";
reg = <0x0 0x10202>;
enable-method = "spin-table";
cpu-release-addr = <0 0>; /* To be filled by loader */
};
cpu_p13: cpu@10203 {
compatible = "apple,firestorm";
device_type = "cpu";
reg = <0x0 0x10203>;
enable-method = "spin-table";
cpu-release-addr = <0 0>; /* To be filled by loader */
};
};
pmu-e {
compatible = "apple,icestorm-pmu";
interrupt-parent = <&aic>;
interrupts = <AIC_FIQ 0 AIC_CPU_PMU_E IRQ_TYPE_LEVEL_HIGH>;
};
pmu-p {
compatible = "apple,firestorm-pmu";
interrupt-parent = <&aic>;
interrupts = <AIC_FIQ 0 AIC_CPU_PMU_P IRQ_TYPE_LEVEL_HIGH>;
};
timer {
compatible = "arm,armv8-timer";
interrupt-parent = <&aic>;
interrupt-names = "phys", "virt", "hyp-phys", "hyp-virt";
interrupts = <AIC_FIQ 0 AIC_TMR_GUEST_PHYS IRQ_TYPE_LEVEL_HIGH>,
<AIC_FIQ 0 AIC_TMR_GUEST_VIRT IRQ_TYPE_LEVEL_HIGH>,
<AIC_FIQ 0 AIC_TMR_HV_PHYS IRQ_TYPE_LEVEL_HIGH>,
<AIC_FIQ 0 AIC_TMR_HV_VIRT IRQ_TYPE_LEVEL_HIGH>;
};
clkref: clock-ref {
compatible = "fixed-clock";
#clock-cells = <0>;
clock-frequency = <24000000>;
clock-output-names = "clkref";
};
/*
* This is a fabulated representation of the input clock
* to NCO since we don't know the true clock tree.
*/
nco_clkref: clock-ref-nco {
compatible = "fixed-clock";
#clock-cells = <0>;
clock-output-names = "nco_ref";
};
};

View File

@ -0,0 +1,361 @@
// SPDX-License-Identifier: GPL-2.0+ OR MIT
/*
* Devices used on die 0 on the Apple T6002 "M1 Ultra" SoC and present on
* Apple T6000 / T6001 "M1 Pro" / "M1 Max".
*
* Copyright The Asahi Linux Contributors
*/
nco: clock-controller@28e03c000 {
compatible = "apple,t6000-nco", "apple,nco";
reg = <0x2 0x8e03c000 0x0 0x14000>;
clocks = <&nco_clkref>;
#clock-cells = <1>;
};
aic: interrupt-controller@28e100000 {
compatible = "apple,t6000-aic", "apple,aic2";
#interrupt-cells = <4>;
interrupt-controller;
reg = <0x2 0x8e100000 0x0 0xc000>,
<0x2 0x8e10c000 0x0 0x4>;
reg-names = "core", "event";
power-domains = <&ps_aic>;
};
pinctrl_smc: pinctrl@290820000 {
compatible = "apple,t6000-pinctrl", "apple,pinctrl";
reg = <0x2 0x90820000 0x0 0x4000>;
gpio-controller;
#gpio-cells = <2>;
gpio-ranges = <&pinctrl_smc 0 0 30>;
apple,npins = <30>;
interrupt-controller;
#interrupt-cells = <2>;
interrupt-parent = <&aic>;
interrupts = <AIC_IRQ 0 743 IRQ_TYPE_LEVEL_HIGH>,
<AIC_IRQ 0 744 IRQ_TYPE_LEVEL_HIGH>,
<AIC_IRQ 0 745 IRQ_TYPE_LEVEL_HIGH>,
<AIC_IRQ 0 746 IRQ_TYPE_LEVEL_HIGH>,
<AIC_IRQ 0 747 IRQ_TYPE_LEVEL_HIGH>,
<AIC_IRQ 0 748 IRQ_TYPE_LEVEL_HIGH>,
<AIC_IRQ 0 749 IRQ_TYPE_LEVEL_HIGH>;
};
wdt: watchdog@2922b0000 {
compatible = "apple,t6000-wdt", "apple,wdt";
reg = <0x2 0x922b0000 0x0 0x4000>;
clocks = <&clkref>;
interrupt-parent = <&aic>;
interrupts = <AIC_IRQ 0 631 IRQ_TYPE_LEVEL_HIGH>;
};
dart_sio_0: iommu@39b004000 {
compatible = "apple,t6000-dart";
reg = <0x3 0x9b004000 0x0 0x4000>;
interrupt-parent = <&aic>;
interrupts = <AIC_IRQ 0 1130 IRQ_TYPE_LEVEL_HIGH>;
#iommu-cells = <1>;
power-domains = <&ps_sio_cpu>;
};
dart_sio_1: iommu@39b008000 {
compatible = "apple,t6000-dart";
reg = <0x3 0x9b008000 0x0 0x8000>;
interrupt-parent = <&aic>;
interrupts = <AIC_IRQ 0 1130 IRQ_TYPE_LEVEL_HIGH>;
#iommu-cells = <1>;
power-domains = <&ps_sio_cpu>;
};
i2c0: i2c@39b040000 {
compatible = "apple,t6000-i2c", "apple,i2c";
reg = <0x3 0x9b040000 0x0 0x4000>;
clocks = <&clkref>;
interrupt-parent = <&aic>;
interrupts = <AIC_IRQ 0 1119 IRQ_TYPE_LEVEL_HIGH>;
pinctrl-0 = <&i2c0_pins>;
pinctrl-names = "default";
power-domains = <&ps_i2c0>;
#address-cells = <0x1>;
#size-cells = <0x0>;
};
i2c1: i2c@39b044000 {
compatible = "apple,t6000-i2c", "apple,i2c";
reg = <0x3 0x9b044000 0x0 0x4000>;
clocks = <&clkref>;
interrupt-parent = <&aic>;
interrupts = <AIC_IRQ 0 1120 IRQ_TYPE_LEVEL_HIGH>;
pinctrl-0 = <&i2c1_pins>;
pinctrl-names = "default";
power-domains = <&ps_i2c1>;
#address-cells = <0x1>;
#size-cells = <0x0>;
status = "disabled";
};
i2c2: i2c@39b048000 {
compatible = "apple,t6000-i2c", "apple,i2c";
reg = <0x3 0x9b048000 0x0 0x4000>;
clocks = <&clkref>;
interrupt-parent = <&aic>;
interrupts = <AIC_IRQ 0 1121 IRQ_TYPE_LEVEL_HIGH>;
pinctrl-0 = <&i2c2_pins>;
pinctrl-names = "default";
power-domains = <&ps_i2c2>;
#address-cells = <0x1>;
#size-cells = <0x0>;
status = "disabled";
};
i2c3: i2c@39b04c000 {
compatible = "apple,t6000-i2c", "apple,i2c";
reg = <0x3 0x9b04c000 0x0 0x4000>;
clocks = <&clkref>;
interrupt-parent = <&aic>;
interrupts = <AIC_IRQ 0 1122 IRQ_TYPE_LEVEL_HIGH>;
pinctrl-0 = <&i2c3_pins>;
pinctrl-names = "default";
power-domains = <&ps_i2c3>;
#address-cells = <0x1>;
#size-cells = <0x0>;
status = "disabled";
};
i2c4: i2c@39b050000 {
compatible = "apple,t6000-i2c", "apple,i2c";
reg = <0x3 0x9b050000 0x0 0x4000>;
clocks = <&clkref>;
interrupt-parent = <&aic>;
interrupts = <AIC_IRQ 0 1123 IRQ_TYPE_LEVEL_HIGH>;
pinctrl-0 = <&i2c4_pins>;
pinctrl-names = "default";
power-domains = <&ps_i2c4>;
#address-cells = <0x1>;
#size-cells = <0x0>;
status = "disabled";
};
i2c5: i2c@39b054000 {
compatible = "apple,t6000-i2c", "apple,i2c";
reg = <0x3 0x9b054000 0x0 0x4000>;
clocks = <&clkref>;
interrupt-parent = <&aic>;
interrupts = <AIC_IRQ 0 1124 IRQ_TYPE_LEVEL_HIGH>;
pinctrl-0 = <&i2c5_pins>;
pinctrl-names = "default";
power-domains = <&ps_i2c5>;
#address-cells = <0x1>;
#size-cells = <0x0>;
status = "disabled";
};
serial0: serial@39b200000 {
compatible = "apple,s5l-uart";
reg = <0x3 0x9b200000 0x0 0x1000>;
reg-io-width = <4>;
interrupt-parent = <&aic>;
interrupts = <AIC_IRQ 0 1097 IRQ_TYPE_LEVEL_HIGH>;
/*
* 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";
};
admac: dma-controller@39b400000 {
compatible = "apple,t6000-admac", "apple,admac";
reg = <0x3 0x9b400000 0x0 0x34000>;
#dma-cells = <1>;
dma-channels = <16>;
interrupts-extended = <0>,
<&aic AIC_IRQ 0 1118 IRQ_TYPE_LEVEL_HIGH>,
<0>,
<0>;
iommus = <&dart_sio_0 2>, <&dart_sio_1 2>;
power-domains = <&ps_sio_adma>;
resets = <&ps_audio_p>;
};
mca: mca@39b600000 {
compatible = "apple,t6000-mca", "apple,mca";
reg = <0x3 0x9b600000 0x0 0x10000>,
<0x3 0x9b500000 0x0 0x20000>;
clocks = <&nco 0>, <&nco 1>, <&nco 2>, <&nco 3>;
dmas = <&admac 0>, <&admac 1>, <&admac 2>, <&admac 3>,
<&admac 4>, <&admac 5>, <&admac 6>, <&admac 7>,
<&admac 8>, <&admac 9>, <&admac 10>, <&admac 11>,
<&admac 12>, <&admac 13>, <&admac 14>, <&admac 15>;
dma-names = "tx0a", "rx0a", "tx0b", "rx0b",
"tx1a", "rx1a", "tx1b", "rx1b",
"tx2a", "rx2a", "tx2b", "rx2b",
"tx3a", "rx3a", "tx3b", "rx3b";
interrupt-parent = <&aic>;
interrupts = <AIC_IRQ 0 1112 IRQ_TYPE_LEVEL_HIGH>,
<AIC_IRQ 0 1113 IRQ_TYPE_LEVEL_HIGH>,
<AIC_IRQ 0 1114 IRQ_TYPE_LEVEL_HIGH>,
<AIC_IRQ 0 1115 IRQ_TYPE_LEVEL_HIGH>;
power-domains = <&ps_audio_p>, <&ps_mca0>, <&ps_mca1>,
<&ps_mca2>, <&ps_mca3>;
resets = <&ps_audio_p>;
#sound-dai-cells = <1>;
};
pcie0_dart_0: dart@581008000 {
compatible = "apple,t6000-dart";
reg = <0x5 0x81008000 0x0 0x4000>;
#iommu-cells = <1>;
interrupt-parent = <&aic>;
interrupts = <AIC_IRQ 0 1271 IRQ_TYPE_LEVEL_HIGH>;
power-domains = <&ps_apcie_gp_sys>;
};
pcie0_dart_1: dart@582008000 {
compatible = "apple,t6000-dart";
reg = <0x5 0x82008000 0x0 0x4000>;
#iommu-cells = <1>;
interrupt-parent = <&aic>;
interrupts = <AIC_IRQ 0 1274 IRQ_TYPE_LEVEL_HIGH>;
power-domains = <&ps_apcie_gp_sys>;
};
pcie0_dart_2: dart@583008000 {
compatible = "apple,t6000-dart";
reg = <0x5 0x83008000 0x0 0x4000>;
#iommu-cells = <1>;
interrupt-parent = <&aic>;
interrupts = <AIC_IRQ 0 1277 IRQ_TYPE_LEVEL_HIGH>;
power-domains = <&ps_apcie_gp_sys>;
};
pcie0_dart_3: dart@584008000 {
compatible = "apple,t6000-dart";
reg = <0x5 0x84008000 0x0 0x4000>;
#iommu-cells = <1>;
interrupt-parent = <&aic>;
interrupts = <AIC_IRQ 0 1280 IRQ_TYPE_LEVEL_HIGH>;
power-domains = <&ps_apcie_gp_sys>;
};
pcie0: pcie@590000000 {
compatible = "apple,t6000-pcie", "apple,pcie";
device_type = "pci";
reg = <0x5 0x90000000 0x0 0x1000000>,
<0x5 0x80000000 0x0 0x100000>,
<0x5 0x81000000 0x0 0x4000>,
<0x5 0x82000000 0x0 0x4000>,
<0x5 0x83000000 0x0 0x4000>,
<0x5 0x84000000 0x0 0x4000>;
reg-names = "config", "rc", "port0", "port1", "port2", "port3";
interrupt-parent = <&aic>;
interrupts = <AIC_IRQ 0 1270 IRQ_TYPE_LEVEL_HIGH>,
<AIC_IRQ 0 1273 IRQ_TYPE_LEVEL_HIGH>,
<AIC_IRQ 0 1276 IRQ_TYPE_LEVEL_HIGH>,
<AIC_IRQ 0 1279 IRQ_TYPE_LEVEL_HIGH>;
msi-controller;
msi-parent = <&pcie0>;
msi-ranges = <&aic AIC_IRQ 0 1581 IRQ_TYPE_EDGE_RISING 32>;
iommu-map = <0x100 &pcie0_dart_0 1 1>,
<0x200 &pcie0_dart_1 1 1>,
<0x300 &pcie0_dart_2 1 1>,
<0x400 &pcie0_dart_3 1 1>;
iommu-map-mask = <0xff00>;
bus-range = <0 4>;
#address-cells = <3>;
#size-cells = <2>;
ranges = <0x43000000 0x5 0xa0000000 0x5 0xa0000000 0x0 0x20000000>,
<0x02000000 0x0 0xc0000000 0x5 0xc0000000 0x0 0x40000000>;
power-domains = <&ps_apcie_gp_sys>;
pinctrl-0 = <&pcie_pins>;
pinctrl-names = "default";
port00: pci@0,0 {
device_type = "pci";
reg = <0x0 0x0 0x0 0x0 0x0>;
reset-gpios = <&pinctrl_ap 4 GPIO_ACTIVE_LOW>;
#address-cells = <3>;
#size-cells = <2>;
ranges;
interrupt-controller;
#interrupt-cells = <1>;
interrupt-map-mask = <0 0 0 7>;
interrupt-map = <0 0 0 1 &port00 0 0 0 0>,
<0 0 0 2 &port00 0 0 0 1>,
<0 0 0 3 &port00 0 0 0 2>,
<0 0 0 4 &port00 0 0 0 3>;
};
port01: pci@1,0 {
device_type = "pci";
reg = <0x800 0x0 0x0 0x0 0x0>;
reset-gpios = <&pinctrl_ap 5 GPIO_ACTIVE_LOW>;
#address-cells = <3>;
#size-cells = <2>;
ranges;
interrupt-controller;
#interrupt-cells = <1>;
interrupt-map-mask = <0 0 0 7>;
interrupt-map = <0 0 0 1 &port01 0 0 0 0>,
<0 0 0 2 &port01 0 0 0 1>,
<0 0 0 3 &port01 0 0 0 2>,
<0 0 0 4 &port01 0 0 0 3>;
};
port02: pci@2,0 {
device_type = "pci";
reg = <0x1000 0x0 0x0 0x0 0x0>;
reset-gpios = <&pinctrl_ap 6 GPIO_ACTIVE_LOW>;
#address-cells = <3>;
#size-cells = <2>;
ranges;
interrupt-controller;
#interrupt-cells = <1>;
interrupt-map-mask = <0 0 0 7>;
interrupt-map = <0 0 0 1 &port02 0 0 0 0>,
<0 0 0 2 &port02 0 0 0 1>,
<0 0 0 3 &port02 0 0 0 2>,
<0 0 0 4 &port02 0 0 0 3>;
};
port03: pci@3,0 {
device_type = "pci";
reg = <0x1800 0x0 0x0 0x0 0x0>;
reset-gpios = <&pinctrl_ap 7 GPIO_ACTIVE_LOW>;
#address-cells = <3>;
#size-cells = <2>;
ranges;
interrupt-controller;
#interrupt-cells = <1>;
interrupt-map-mask = <0 0 0 7>;
interrupt-map = <0 0 0 1 &port03 0 0 0 0>,
<0 0 0 2 &port03 0 0 0 1>,
<0 0 0 3 &port03 0 0 0 2>,
<0 0 0 4 &port03 0 0 0 3>;
};
};

View File

@ -0,0 +1,103 @@
// SPDX-License-Identifier: GPL-2.0+ OR MIT
/*
* Devices used on both dies on the Apple T6002 "M1 Ultra" and present on
* Apple T6000/T6001 "M1 Pro/Max".
*
* Copyright The Asahi Linux Contributors
*/
DIE_NODE(pmgr): power-management@28e080000 {
compatible = "apple,t6000-pmgr", "apple,pmgr", "syscon", "simple-mfd";
#address-cells = <1>;
#size-cells = <1>;
reg = <0x2 0x8e080000 0 0x4000>;
};
DIE_NODE(pmgr_east): power-management@28e580000 {
compatible = "apple,t6000-pmgr", "apple,pmgr", "syscon", "simple-mfd";
#address-cells = <1>;
#size-cells = <1>;
reg = <0x2 0x8e580000 0 0xc000>;
};
DIE_NODE(pmgr_south): power-management@28e680000 {
compatible = "apple,t6000-pmgr", "apple,pmgr", "syscon", "simple-mfd";
#address-cells = <1>;
#size-cells = <1>;
reg = <0x2 0x8e680000 0 0xc000>;
};
DIE_NODE(pinctrl_nub): pinctrl@2921f0000 {
compatible = "apple,t6000-pinctrl", "apple,pinctrl";
reg = <0x2 0x921f0000 0x0 0x4000>;
power-domains = <&DIE_NODE(ps_nub_gpio)>;
gpio-controller;
#gpio-cells = <2>;
gpio-ranges = <&DIE_NODE(pinctrl_nub) 0 0 16>;
apple,npins = <16>;
interrupt-controller;
#interrupt-cells = <2>;
interrupt-parent = <&aic>;
interrupts = <AIC_IRQ DIE_NO 623 IRQ_TYPE_LEVEL_HIGH>,
<AIC_IRQ DIE_NO 624 IRQ_TYPE_LEVEL_HIGH>,
<AIC_IRQ DIE_NO 625 IRQ_TYPE_LEVEL_HIGH>,
<AIC_IRQ DIE_NO 626 IRQ_TYPE_LEVEL_HIGH>,
<AIC_IRQ DIE_NO 627 IRQ_TYPE_LEVEL_HIGH>,
<AIC_IRQ DIE_NO 628 IRQ_TYPE_LEVEL_HIGH>,
<AIC_IRQ DIE_NO 629 IRQ_TYPE_LEVEL_HIGH>;
};
DIE_NODE(pmgr_mini): power-management@292280000 {
compatible = "apple,t6000-pmgr", "apple,pmgr", "syscon", "simple-mfd";
#address-cells = <1>;
#size-cells = <1>;
reg = <0x2 0x92280000 0 0x4000>;
};
DIE_NODE(pinctrl_aop): pinctrl@293820000 {
compatible = "apple,t6000-pinctrl", "apple,pinctrl";
reg = <0x2 0x93820000 0x0 0x4000>;
gpio-controller;
#gpio-cells = <2>;
gpio-ranges = <&DIE_NODE(pinctrl_aop) 0 0 63>;
apple,npins = <63>;
interrupt-controller;
#interrupt-cells = <2>;
interrupt-parent = <&aic>;
interrupts = <AIC_IRQ DIE_NO 567 IRQ_TYPE_LEVEL_HIGH>,
<AIC_IRQ DIE_NO 568 IRQ_TYPE_LEVEL_HIGH>,
<AIC_IRQ DIE_NO 569 IRQ_TYPE_LEVEL_HIGH>,
<AIC_IRQ DIE_NO 570 IRQ_TYPE_LEVEL_HIGH>,
<AIC_IRQ DIE_NO 571 IRQ_TYPE_LEVEL_HIGH>,
<AIC_IRQ DIE_NO 572 IRQ_TYPE_LEVEL_HIGH>,
<AIC_IRQ DIE_NO 573 IRQ_TYPE_LEVEL_HIGH>;
};
DIE_NODE(pinctrl_ap): pinctrl@39b028000 {
compatible = "apple,t6000-pinctrl", "apple,pinctrl";
reg = <0x3 0x9b028000 0x0 0x4000>;
interrupt-parent = <&aic>;
interrupts = <AIC_IRQ DIE_NO 427 IRQ_TYPE_LEVEL_HIGH>,
<AIC_IRQ DIE_NO 428 IRQ_TYPE_LEVEL_HIGH>,
<AIC_IRQ DIE_NO 429 IRQ_TYPE_LEVEL_HIGH>,
<AIC_IRQ DIE_NO 430 IRQ_TYPE_LEVEL_HIGH>,
<AIC_IRQ DIE_NO 431 IRQ_TYPE_LEVEL_HIGH>,
<AIC_IRQ DIE_NO 432 IRQ_TYPE_LEVEL_HIGH>,
<AIC_IRQ DIE_NO 433 IRQ_TYPE_LEVEL_HIGH>;
clocks = <&clkref>;
power-domains = <&DIE_NODE(ps_gpio)>;
gpio-controller;
#gpio-cells = <2>;
gpio-ranges = <&DIE_NODE(pinctrl_ap) 0 0 255>;
apple,npins = <255>;
interrupt-controller;
#interrupt-cells = <2>;
};

View File

@ -0,0 +1,45 @@
// SPDX-License-Identifier: GPL-2.0+ OR MIT
/*
* GPIO pin mappings for Apple T600x SoCs.
*
* Copyright The Asahi Linux Contributors
*/
&pinctrl_ap {
i2c0_pins: i2c0-pins {
pinmux = <APPLE_PINMUX(92, 1)>,
<APPLE_PINMUX(93, 1)>;
};
i2c1_pins: i2c1-pins {
pinmux = <APPLE_PINMUX(94, 1)>,
<APPLE_PINMUX(95, 1)>;
};
i2c2_pins: i2c2-pins {
pinmux = <APPLE_PINMUX(96, 1)>,
<APPLE_PINMUX(97, 1)>;
};
i2c3_pins: i2c3-pins {
pinmux = <APPLE_PINMUX(98, 1)>,
<APPLE_PINMUX(99, 1)>;
};
i2c4_pins: i2c4-pins {
pinmux = <APPLE_PINMUX(8, 1)>,
<APPLE_PINMUX(9, 1)>;
};
i2c5_pins: i2c5-pins {
pinmux = <APPLE_PINMUX(100, 1)>,
<APPLE_PINMUX(101, 1)>;
};
pcie_pins: pcie-pins {
pinmux = <APPLE_PINMUX(0, 1)>,
<APPLE_PINMUX(1, 1)>,
<APPLE_PINMUX(2, 1)>,
<APPLE_PINMUX(3, 1)>;
};
};

View File

@ -0,0 +1,114 @@
// SPDX-License-Identifier: GPL-2.0+ OR MIT
/*
* MacBook Pro (14/16-inch, 2021)
*
* This file contains the parts common to J314 and J316 devices with both t6000 and t6001.
*
* target-type: J314s / J314c / J316s / J316c
*
* Copyright The Asahi Linux Contributors
*/
/ {
aliases {
serial0 = &serial0;
wifi0 = &wifi0;
};
chosen {
#address-cells = <2>;
#size-cells = <2>;
ranges;
stdout-path = "serial0";
framebuffer0: framebuffer@0 {
compatible = "apple,simple-framebuffer", "simple-framebuffer";
reg = <0 0 0 0>; /* To be filled by loader */
/* Format properties will be added by loader */
status = "disabled";
};
};
memory@10000000000 {
device_type = "memory";
reg = <0x100 0 0x2 0>; /* To be filled by loader */
};
};
&serial0 {
status = "okay";
};
/* USB Type C */
&i2c0 {
hpm0: usb-pd@38 {
compatible = "apple,cd321x";
reg = <0x38>;
interrupt-parent = <&pinctrl_ap>;
interrupts = <174 IRQ_TYPE_LEVEL_LOW>;
interrupt-names = "irq";
};
hpm1: usb-pd@3f {
compatible = "apple,cd321x";
reg = <0x3f>;
interrupt-parent = <&pinctrl_ap>;
interrupts = <174 IRQ_TYPE_LEVEL_LOW>;
interrupt-names = "irq";
};
hpm2: usb-pd@3b {
compatible = "apple,cd321x";
reg = <0x3b>;
interrupt-parent = <&pinctrl_ap>;
interrupts = <174 IRQ_TYPE_LEVEL_LOW>;
interrupt-names = "irq";
};
/* MagSafe port */
hpm5: usb-pd@3a {
compatible = "apple,cd321x";
reg = <0x3a>;
interrupt-parent = <&pinctrl_ap>;
interrupts = <174 IRQ_TYPE_LEVEL_LOW>;
interrupt-names = "irq";
};
};
&nco_clkref {
clock-frequency = <1068000000>;
};
/* PCIe devices */
&port00 {
/* WLAN */
bus-range = <1 1>;
wifi0: wifi@0,0 {
reg = <0x10000 0x0 0x0 0x0 0x0>;
/* To be filled by the loader */
local-mac-address = [00 10 18 00 00 10];
};
};
&port01 {
/* SD card reader */
bus-range = <2 2>;
sdhci0: mmc@0,0 {
compatible = "pci17a0,9755";
reg = <0x20000 0x0 0x0 0x0 0x0>;
cd-inverted;
wp-inverted;
};
};
&pcie0_dart_2 {
status = "disabled";
};
&pcie0_dart_3 {
status = "disabled";
};
/delete-node/ &port02;
/delete-node/ &port03;

View File

@ -0,0 +1,117 @@
// SPDX-License-Identifier: GPL-2.0+ OR MIT
/*
* Mac Studio (2022)
*
* This file contains the parts common to J375 devices with both t6001 and t6002.
*
* target-type: J375c / J375d
*
* Copyright The Asahi Linux Contributors
*/
/ {
aliases {
serial0 = &serial0;
wifi0 = &wifi0;
};
chosen {
#address-cells = <2>;
#size-cells = <2>;
ranges;
stdout-path = "serial0";
framebuffer0: framebuffer@0 {
compatible = "apple,simple-framebuffer", "simple-framebuffer";
reg = <0 0 0 0>; /* To be filled by loader */
/* Format properties will be added by loader */
status = "disabled";
};
};
memory@10000000000 {
device_type = "memory";
reg = <0x100 0 0x2 0>; /* To be filled by loader */
};
};
&serial0 {
status = "okay";
};
/* USB Type C */
&i2c0 {
hpm0: usb-pd@38 {
compatible = "apple,cd321x";
reg = <0x38>;
interrupt-parent = <&pinctrl_ap>;
interrupts = <174 IRQ_TYPE_LEVEL_LOW>;
interrupt-names = "irq";
};
hpm1: usb-pd@3f {
compatible = "apple,cd321x";
reg = <0x3f>;
interrupt-parent = <&pinctrl_ap>;
interrupts = <174 IRQ_TYPE_LEVEL_LOW>;
interrupt-names = "irq";
};
hpm2: usb-pd@3b {
compatible = "apple,cd321x";
reg = <0x3b>;
interrupt-parent = <&pinctrl_ap>;
interrupts = <174 IRQ_TYPE_LEVEL_LOW>;
interrupt-names = "irq";
};
hpm3: usb-pd@3c {
compatible = "apple,cd321x";
reg = <0x3c>;
interrupt-parent = <&pinctrl_ap>;
interrupts = <174 IRQ_TYPE_LEVEL_LOW>;
interrupt-names = "irq";
};
};
&nco_clkref {
clock-frequency = <1068000000>;
};
/* PCIe devices */
&port00 {
/* WLAN */
bus-range = <1 1>;
wifi0: wifi@0,0 {
reg = <0x10000 0x0 0x0 0x0 0x0>;
/* To be filled by the loader */
local-mac-address = [00 10 18 00 00 10];
};
};
&port01 {
/* SD card reader */
bus-range = <2 2>;
sdhci0: mmc@0,0 {
compatible = "pci17a0,9755";
reg = <0x20000 0x0 0x0 0x0 0x0>;
cd-inverted;
wp-inverted;
};
};
&port02 {
/* 10 Gbit Ethernet */
bus-range = <3 3>;
ethernet0: ethernet@0,0 {
reg = <0x30000 0x0 0x0 0x0 0x0>;
/* To be filled by the loader */
local-mac-address = [00 10 18 00 00 00];
};
};
&port03 {
/* USB xHCI */
bus-range = <4 4>;
};

View File

@ -0,0 +1,42 @@
// SPDX-License-Identifier: GPL-2.0+ OR MIT
/*
* NVMe related devices for Apple T600x SoCs.
*
* Copyright The Asahi Linux Contributors
*/
DIE_NODE(ans_mbox): mbox@38f408000 {
compatible = "apple,t6000-asc-mailbox", "apple,asc-mailbox-v4";
reg = <0x3 0x8f408000 0x0 0x4000>;
interrupt-parent = <&aic>;
interrupts = <AIC_IRQ DIE_NO 1069 IRQ_TYPE_LEVEL_HIGH>,
<AIC_IRQ DIE_NO 1070 IRQ_TYPE_LEVEL_HIGH>,
<AIC_IRQ DIE_NO 1071 IRQ_TYPE_LEVEL_HIGH>,
<AIC_IRQ DIE_NO 1072 IRQ_TYPE_LEVEL_HIGH>;
interrupt-names = "send-empty", "send-not-empty",
"recv-empty", "recv-not-empty";
power-domains = <&DIE_NODE(ps_ans2)>;
#mbox-cells = <0>;
};
DIE_NODE(sart): sart@393c50000 {
compatible = "apple,t6000-sart";
reg = <0x3 0x93c50000 0x0 0x10000>;
power-domains = <&DIE_NODE(ps_ans2)>;
};
DIE_NODE(nvme): nvme@393cc0000 {
compatible = "apple,t6000-nvme-ans2", "apple,nvme-ans2";
reg = <0x3 0x93cc0000 0x0 0x40000>, <0x3 0x8f400000 0x0 0x4000>;
reg-names = "nvme", "ans";
interrupt-parent = <&aic>;
/* The NVME interrupt is always routed to die */
interrupts = <AIC_IRQ 0 1613 IRQ_TYPE_LEVEL_HIGH>;
mboxes = <&DIE_NODE(ans_mbox)>;
apple,sart = <&DIE_NODE(sart)>;
power-domains = <&DIE_NODE(ps_ans2)>,
<&DIE_NODE(ps_apcie_st_sys)>,
<&DIE_NODE(ps_apcie_st1_sys)>;
power-domain-names = "ans", "apcie0", "apcie1";
resets = <&DIE_NODE(ps_ans2)>;
};

File diff suppressed because it is too large Load Diff

View File

@ -14,7 +14,7 @@
/ {
compatible = "apple,j456", "apple,t8103", "apple,arm-platform";
model = "Apple iMac (24-inch, 4x USB-C, M1, 2020)";
model = "Apple iMac (24-inch, 4x USB-C, M1, 2021)";
aliases {
ethernet0 = &ethernet0;

View File

@ -14,7 +14,7 @@
/ {
compatible = "apple,j457", "apple,t8103", "apple,arm-platform";
model = "Apple iMac (24-inch, 2x USB-C, M1, 2020)";
model = "Apple iMac (24-inch, 2x USB-C, M1, 2021)";
aliases {
ethernet0 = &ethernet0;

View File

@ -78,3 +78,7 @@ wifi0: network@0,0 {
apple,antenna-sku = "XX";
};
};
&nco_clkref {
clock-frequency = <900000000>;
};

View File

@ -339,7 +339,7 @@ ps_sio_adma: power-controller@230 {
#power-domain-cells = <0>;
#reset-cells = <0>;
label = "sio_adma";
power-domains = <&ps_sio>, <&ps_pms>;
power-domains = <&ps_sio>, <&ps_pms>, <&ps_audio_p>;
};
ps_aes: power-controller@238 {

View File

@ -116,6 +116,16 @@ clkref: clock-ref {
clock-output-names = "clkref";
};
/*
* This is a fabulated representation of the input clock
* to NCO since we don't know the true clock tree.
*/
nco_clkref: clock-ref-nco {
compatible = "fixed-clock";
#clock-cells = <0>;
clock-output-names = "nco_ref";
};
soc {
compatible = "simple-bus";
#address-cells = <2>;
@ -124,6 +134,15 @@ soc {
ranges;
nonposted-mmio;
dart_sio: iommu@235004000 {
compatible = "apple,t8103-dart";
reg = <0x2 0x35004000 0x0 0x4000>;
interrupt-parent = <&aic>;
interrupts = <AIC_IRQ 635 IRQ_TYPE_LEVEL_HIGH>;
#iommu-cells = <1>;
power-domains = <&ps_sio_cpu>;
};
i2c0: i2c@235010000 {
compatible = "apple,t8103-i2c", "apple,i2c";
reg = <0x2 0x35010000 0x0 0x4000>;
@ -219,6 +238,61 @@ serial2: serial@235208000 {
status = "disabled";
};
admac: dma-controller@238200000 {
compatible = "apple,t8103-admac", "apple,admac";
reg = <0x2 0x38200000 0x0 0x34000>;
dma-channels = <24>;
interrupts-extended = <0>,
<&aic AIC_IRQ 626 IRQ_TYPE_LEVEL_HIGH>,
<0>,
<0>;
#dma-cells = <1>;
iommus = <&dart_sio 2>;
power-domains = <&ps_sio_adma>;
resets = <&ps_audio_p>;
};
mca: i2s@238400000 {
compatible = "apple,t8103-mca", "apple,mca";
reg = <0x2 0x38400000 0x0 0x18000>,
<0x2 0x38300000 0x0 0x30000>;
interrupt-parent = <&aic>;
interrupts = <AIC_IRQ 619 IRQ_TYPE_LEVEL_HIGH>,
<AIC_IRQ 620 IRQ_TYPE_LEVEL_HIGH>,
<AIC_IRQ 621 IRQ_TYPE_LEVEL_HIGH>,
<AIC_IRQ 622 IRQ_TYPE_LEVEL_HIGH>,
<AIC_IRQ 623 IRQ_TYPE_LEVEL_HIGH>,
<AIC_IRQ 624 IRQ_TYPE_LEVEL_HIGH>;
resets = <&ps_audio_p>;
clocks = <&nco 0>, <&nco 1>, <&nco 2>,
<&nco 3>, <&nco 4>, <&nco 4>;
power-domains = <&ps_audio_p>, <&ps_mca0>, <&ps_mca1>,
<&ps_mca2>, <&ps_mca3>, <&ps_mca4>, <&ps_mca5>;
dmas = <&admac 0>, <&admac 1>, <&admac 2>, <&admac 3>,
<&admac 4>, <&admac 5>, <&admac 6>, <&admac 7>,
<&admac 8>, <&admac 9>, <&admac 10>, <&admac 11>,
<&admac 12>, <&admac 13>, <&admac 14>, <&admac 15>,
<&admac 16>, <&admac 17>, <&admac 18>, <&admac 19>,
<&admac 20>, <&admac 21>, <&admac 22>, <&admac 23>;
dma-names = "tx0a", "rx0a", "tx0b", "rx0b",
"tx1a", "rx1a", "tx1b", "rx1b",
"tx2a", "rx2a", "tx2b", "rx2b",
"tx3a", "rx3a", "tx3b", "rx3b",
"tx4a", "rx4a", "tx4b", "rx4b",
"tx5a", "rx5a", "tx5b", "rx5b";
#sound-dai-cells = <1>;
};
nco: clock-controller@23b044000 {
compatible = "apple,t8103-nco", "apple,nco";
reg = <0x2 0x3b044000 0x0 0x14000>;
clocks = <&nco_clkref>;
#clock-cells = <1>;
};
aic: interrupt-controller@23b100000 {
compatible = "apple,t8103-aic", "apple,aic";
#interrupt-cells = <3>;