Apple SoC device tree changes for v6.17

- Added the bindings and nodes for Apple SoC GPU. The driver itself
   isn't ready for upstreaming yet due to rust dependencies but we're
   confident that the bindings are stable at this point.
 - Added a missing node for the touchbar framebuffer to Apple T2 device
   trees, which is the BMC for some x86 Macs
 - Fixed a W=1 warning by adding bit offsets to NVMEM node names. This
   required a change to the generic NVMEM cell binding which will be part
   of 6.17 through the NVMEM tree.
 
 Signed-off-by: Sven Peter <sven@kernel.org>
 -----BEGIN PGP SIGNATURE-----
 
 iHUEABYKAB0WIQS3vz815OHsEaWy0u9EEX0kKnUe6QUCaH+8XwAKCRBEEX0kKnUe
 6ZgFAQCOqbUyJPz0oxSTrrHQRwumhx0P6CIhVBtSaOtDnHYBJwD8CpPxfXXqMvgm
 Wqr/bugw4pnR/LZRTScSoiqlwT3gZQs=
 =L1MH
 -----END PGP SIGNATURE-----
gpgsig -----BEGIN PGP SIGNATURE-----
 
 iQIzBAABCgAdFiEEo6/YBQwIrVS28WGKmmx57+YAGNkFAmh//I8ACgkQmmx57+YA
 GNmY9RAAmw4mkjv7ptPq1s323GHuqUFMDhmrScTeg5W3+rrlWSOYDkWYJFBcUdMa
 d+camZ2Ey4RHcRDqOmcQvx93lcUoyBzoa9EQ8xU8wm1G2p4myIF2eFBlR6LiggZN
 bV9naAl+4/7lRKzD35scGRlsvD2TRhYpff6ow1Kw8QfRk9N4P4j8TVHu+niE5088
 lMtNTLnli7HUu2TbqgwZ8tG8CdJVJb3n5Xxi/V8gnG+tYnxQAEGBXkR3JznQZuSG
 5PHZnyRhkk8/Qbcfb9W87OWIEhW53K2IVrqp2uStdv4AqvEyZYtMI4TOToZGi0t0
 EpV2EZIEMq+fgu2DnihQ702JbjkxReqky+86mYkXWAfxJ+BW2mO4xqqZ+LQsjhbk
 /Vxfvaf5y1iUh/W+hETaAePOFvo00m+ur+Rh2FG8/TG7Avow01cbOTmj37Mt6L3l
 gT31yxv5Ys3YsClpQygvrnZPQj6Fxc3khbU8VRyL3GJJKQWs14+Bw3/q/zXnZdpq
 oTrkMwGd9EdW/6p/ReL8deL1Lfc4mWkf9BwpbGzFdvkKmuiv0+okRxwslBqvK3l2
 Jx59AkkdyqBvsQ1a5F5/6tvPnyUynF7PAaAW6jnnK8FZfuDetnfxoNpMfoB2O4fS
 d1lScQGR9CPDiTiL94XN2DKAJQLNNeAtuzhaayUjHvAN+Mq+Acw=
 =um3t
 -----END PGP SIGNATURE-----

Merge tag 'apple-soc-dt-6.17' of https://git.kernel.org/pub/scm/linux/kernel/git/sven/linux into soc/dt

Apple SoC device tree changes for v6.17

- Added the bindings and nodes for Apple SoC GPU. The driver itself
  isn't ready for upstreaming yet due to rust dependencies but we're
  confident that the bindings are stable at this point.
- Added a missing node for the touchbar framebuffer to Apple T2 device
  trees, which is the BMC for some x86 Macs
- Fixed a W=1 warning by adding bit offsets to NVMEM node names. This
  required a change to the generic NVMEM cell binding which will be part
  of 6.17 through the NVMEM tree.

Signed-off-by: Sven Peter <sven@kernel.org>

* tag 'apple-soc-dt-6.17' of https://git.kernel.org/pub/scm/linux/kernel/git/sven/linux:
  arm64: dts: apple: Add Apple SoC GPU
  dt-bindings: gpu: Add Apple SoC GPU
  arm64: dts: apple: t8012-j132: Include touchbar framebuffer node
  arm64: dts: apple: Add bit offset to PMIC NVMEM node names

Link: https://lore.kernel.org/r/20250722163258.62424-2-sven@kernel.org
Signed-off-by: Arnd Bergmann <arnd@arndb.de>
This commit is contained in:
Arnd Bergmann 2025-07-22 23:03:11 +02:00
commit cd7dace093
10 changed files with 303 additions and 9 deletions

View File

@ -0,0 +1,94 @@
# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
%YAML 1.2
---
$id: http://devicetree.org/schemas/gpu/apple,agx.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#
title: Apple SoC GPU
maintainers:
- Sasha Finkelstein <fnkl.kernel@gmail.com>
properties:
compatible:
oneOf:
- enum:
- apple,agx-g13g
- apple,agx-g13s
- apple,agx-g14g
- items:
- enum:
- apple,agx-g13c
- apple,agx-g13d
- const: apple,agx-g13s
reg:
items:
- description: GPU coprocessor control registers
- description: GPU block MMIO registers
reg-names:
items:
- const: asc
- const: sgx
power-domains:
maxItems: 1
mboxes:
maxItems: 1
memory-region:
items:
- description: Region containing GPU MMU TTBs
- description: Region containing GPU MMU page tables
- description:
Region containing a shared handoff structure for VM
management coordination
- description: Calibration blob. Mostly power-related configuration
- description: Calibration blob. Mostly GPU-related configuration
- description: Shared global variables with GPU firmware
memory-region-names:
items:
- const: ttbs
- const: pagetables
- const: handoff
- const: hw-cal-a
- const: hw-cal-b
- const: globals
apple,firmware-abi:
$ref: /schemas/types.yaml#/definitions/uint32-array
minItems: 3
description:
macOS version the current firmware is paired with, used to pick
the version of firmware ABI to be used.
Bootloader will overwrite this
required:
- compatible
- reg
- mboxes
- memory-region
- apple,firmware-abi
additionalProperties: false
examples:
- |
gpu@6400000 {
compatible = "apple,agx-g13g";
reg = <0x6400000 0x40000>,
<0x4000000 0x1000000>;
reg-names = "asc", "sgx";
mboxes = <&agx_mbox>;
power-domains = <&ps_gfx>;
memory-region = <&uat_ttbs>, <&uat_pagetables>, <&uat_handoff>,
<&gpu_hw_cal_a>, <&gpu_hw_cal_b>, <&gpu_globals>;
memory-region-names = "ttbs", "pagetables", "handoff",
"hw-cal-a", "hw-cal-b", "globals";
apple,firmware-abi = <0 0 0>;
};
...

View File

@ -2330,6 +2330,7 @@ F: Documentation/devicetree/bindings/arm/apple/*
F: Documentation/devicetree/bindings/clock/apple,nco.yaml
F: Documentation/devicetree/bindings/cpufreq/apple,cluster-cpufreq.yaml
F: Documentation/devicetree/bindings/dma/apple,admac.yaml
F: Documentation/devicetree/bindings/gpu/apple,agx.yaml
F: Documentation/devicetree/bindings/i2c/apple,i2c.yaml
F: Documentation/devicetree/bindings/input/touchscreen/apple,z2-multitouch.yaml
F: Documentation/devicetree/bindings/interrupt-controller/apple,*

View File

@ -16,3 +16,7 @@ / {
};
/delete-node/ &pmgr_south;
&gpu {
compatible = "apple,agx-g13s";
};

View File

@ -62,3 +62,7 @@ p-core-pmu-affinity {
};
};
};
&gpu {
compatible = "apple,agx-g13c", "apple,agx-g13s";
};

View File

@ -300,3 +300,7 @@ &ps_gfx {
// On t6002, the die0 GPU power domain needs both AFR power domains
power-domains = <&ps_afr>, <&ps_afr_die1>;
};
&gpu {
compatible = "apple,agx-g13d", "apple,agx-g13s";
};

View File

@ -11,6 +11,10 @@ / {
#address-cells = <2>;
#size-cells = <2>;
aliases {
gpu = &gpu;
};
cpus {
#address-cells = <2>;
#size-cells = <0>;
@ -378,4 +382,34 @@ nco_clkref: clock-ref-nco {
#clock-cells = <0>;
clock-output-names = "nco_ref";
};
reserved-memory {
#address-cells = <2>;
#size-cells = <2>;
ranges;
gpu_globals: globals {
status = "disabled";
};
gpu_hw_cal_a: hw-cal-a {
status = "disabled";
};
gpu_hw_cal_b: hw-cal-b {
status = "disabled";
};
uat_handoff: uat-handoff {
status = "disabled";
};
uat_pagetables: uat-pagetables {
status = "disabled";
};
uat_ttbs: uat-ttbs {
status = "disabled";
};
};
};

View File

@ -72,12 +72,12 @@ boot_stage: boot-stage@6001 {
reg = <0x6001 0x1>;
};
boot_error_count: boot-error-count@6002 {
boot_error_count: boot-error-count@6002,0 {
reg = <0x6002 0x1>;
bits = <0 4>;
};
panic_count: panic-count@6002 {
panic_count: panic-count@6002,4 {
reg = <0x6002 0x1>;
bits = <4 4>;
};
@ -86,7 +86,7 @@ boot_error_stage: boot-error-stage@6003 {
reg = <0x6003 0x1>;
};
shutdown_flag: shutdown-flag@600f {
shutdown_flag: shutdown-flag@600f,3 {
reg = <0x600f 0x1>;
bits = <3 1>;
};
@ -302,6 +302,34 @@ mca: mca@39b600000 {
#sound-dai-cells = <1>;
};
gpu: gpu@406400000 {
compatible = "apple,agx-g13s";
reg = <0x4 0x6400000 0 0x40000>,
<0x4 0x4000000 0 0x1000000>;
reg-names = "asc", "sgx";
mboxes = <&agx_mbox>;
power-domains = <&ps_gfx>;
memory-region = <&uat_ttbs>, <&uat_pagetables>, <&uat_handoff>,
<&gpu_hw_cal_a>, <&gpu_hw_cal_b>, <&gpu_globals>;
memory-region-names = "ttbs", "pagetables", "handoff",
"hw-cal-a", "hw-cal-b", "globals";
apple,firmware-abi = <0 0 0>;
};
agx_mbox: mbox@406408000 {
compatible = "apple,t6000-asc-mailbox", "apple,asc-mailbox-v4";
reg = <0x4 0x6408000 0x0 0x4000>;
interrupt-parent = <&aic>;
interrupts = <AIC_IRQ 0 1059 IRQ_TYPE_LEVEL_HIGH>,
<AIC_IRQ 0 1060 IRQ_TYPE_LEVEL_HIGH>,
<AIC_IRQ 0 1061 IRQ_TYPE_LEVEL_HIGH>,
<AIC_IRQ 0 1062 IRQ_TYPE_LEVEL_HIGH>;
interrupt-names = "send-empty", "send-not-empty",
"recv-empty", "recv-not-empty";
#mbox-cells = <0>;
};
pcie0_dart_0: iommu@581008000 {
compatible = "apple,t6000-dart";
reg = <0x5 0x81008000 0x0 0x4000>;

View File

@ -7,6 +7,7 @@
/dts-v1/;
#include "t8012-jxxx.dtsi"
#include "t8012-touchbar.dtsi"
/ {
model = "Apple T2 MacBookPro15,2 (j132)";

View File

@ -19,6 +19,10 @@ / {
#address-cells = <2>;
#size-cells = <2>;
aliases {
gpu = &gpu;
};
cpus {
#address-cells = <2>;
#size-cells = <0>;
@ -351,6 +355,36 @@ nco_clkref: clock-ref-nco {
clock-output-names = "nco_ref";
};
reserved-memory {
#address-cells = <2>;
#size-cells = <2>;
ranges;
gpu_globals: globals {
status = "disabled";
};
gpu_hw_cal_a: hw-cal-a {
status = "disabled";
};
gpu_hw_cal_b: hw-cal-b {
status = "disabled";
};
uat_handoff: uat-handoff {
status = "disabled";
};
uat_pagetables: uat-pagetables {
status = "disabled";
};
uat_ttbs: uat-ttbs {
status = "disabled";
};
};
soc {
compatible = "simple-bus";
#address-cells = <2>;
@ -359,6 +393,34 @@ soc {
ranges;
nonposted-mmio;
gpu: gpu@206400000 {
compatible = "apple,agx-g13g";
reg = <0x2 0x6400000 0 0x40000>,
<0x2 0x4000000 0 0x1000000>;
reg-names = "asc", "sgx";
mboxes = <&agx_mbox>;
power-domains = <&ps_gfx>;
memory-region = <&uat_ttbs>, <&uat_pagetables>, <&uat_handoff>,
<&gpu_hw_cal_a>, <&gpu_hw_cal_b>, <&gpu_globals>;
memory-region-names = "ttbs", "pagetables", "handoff",
"hw-cal-a", "hw-cal-b", "globals";
apple,firmware-abi = <0 0 0>;
};
agx_mbox: mbox@206408000 {
compatible = "apple,t8103-asc-mailbox", "apple,asc-mailbox-v4";
reg = <0x2 0x6408000 0x0 0x4000>;
interrupt-parent = <&aic>;
interrupts = <AIC_IRQ 575 IRQ_TYPE_LEVEL_HIGH>,
<AIC_IRQ 576 IRQ_TYPE_LEVEL_HIGH>,
<AIC_IRQ 577 IRQ_TYPE_LEVEL_HIGH>,
<AIC_IRQ 578 IRQ_TYPE_LEVEL_HIGH>;
interrupt-names = "send-empty", "send-not-empty",
"recv-empty", "recv-not-empty";
#mbox-cells = <0>;
};
cpufreq_e: performance-controller@210e20000 {
compatible = "apple,t8103-cluster-cpufreq", "apple,cluster-cpufreq";
reg = <0x2 0x10e20000 0 0x1000>;
@ -761,12 +823,12 @@ boot_stage: boot-stage@9f01 {
reg = <0x9f01 0x1>;
};
boot_error_count: boot-error-count@9f02 {
boot_error_count: boot-error-count@9f02,0 {
reg = <0x9f02 0x1>;
bits = <0 4>;
};
panic_count: panic-count@9f02 {
panic_count: panic-count@9f02,4 {
reg = <0x9f02 0x1>;
bits = <4 4>;
};
@ -775,7 +837,7 @@ boot_error_stage: boot-error-stage@9f03 {
reg = <0x9f03 0x1>;
};
shutdown_flag: shutdown-flag@9f0f {
shutdown_flag: shutdown-flag@9f0f,3 {
reg = <0x9f0f 0x1>;
bits = <3 1>;
};

View File

@ -19,6 +19,10 @@ / {
#address-cells = <2>;
#size-cells = <2>;
aliases {
gpu = &gpu;
};
cpus {
#address-cells = <2>;
#size-cells = <0>;
@ -366,6 +370,36 @@ nco_clkref: clock-ref-nco {
clock-output-names = "nco_ref";
};
reserved-memory {
#address-cells = <2>;
#size-cells = <2>;
ranges;
gpu_globals: globals {
status = "disabled";
};
gpu_hw_cal_a: hw-cal-a {
status = "disabled";
};
gpu_hw_cal_b: hw-cal-b {
status = "disabled";
};
uat_handoff: uat-handoff {
status = "disabled";
};
uat_pagetables: uat-pagetables {
status = "disabled";
};
uat_ttbs: uat-ttbs {
status = "disabled";
};
};
soc {
compatible = "simple-bus";
#address-cells = <2>;
@ -374,6 +408,34 @@ soc {
ranges;
nonposted-mmio;
gpu: gpu@206400000 {
compatible = "apple,agx-g14g";
reg = <0x2 0x6400000 0 0x40000>,
<0x2 0x4000000 0 0x1000000>;
reg-names = "asc", "sgx";
mboxes = <&agx_mbox>;
power-domains = <&ps_gfx>;
memory-region = <&uat_ttbs>, <&uat_pagetables>, <&uat_handoff>,
<&gpu_hw_cal_a>, <&gpu_hw_cal_b>, <&gpu_globals>;
memory-region-names = "ttbs", "pagetables", "handoff",
"hw-cal-a", "hw-cal-b", "globals";
apple,firmware-abi = <0 0 0>;
};
agx_mbox: mbox@206408000 {
compatible = "apple,t8103-asc-mailbox", "apple,asc-mailbox-v4";
reg = <0x2 0x6408000 0x0 0x4000>;
interrupt-parent = <&aic>;
interrupts = <AIC_IRQ 709 IRQ_TYPE_LEVEL_HIGH>,
<AIC_IRQ 710 IRQ_TYPE_LEVEL_HIGH>,
<AIC_IRQ 711 IRQ_TYPE_LEVEL_HIGH>,
<AIC_IRQ 712 IRQ_TYPE_LEVEL_HIGH>;
interrupt-names = "send-empty", "send-not-empty",
"recv-empty", "recv-not-empty";
#mbox-cells = <0>;
};
cpufreq_e: cpufreq@210e20000 {
compatible = "apple,t8112-cluster-cpufreq", "apple,cluster-cpufreq";
reg = <0x2 0x10e20000 0 0x1000>;
@ -809,12 +871,12 @@ boot_stage: boot-stage@f701 {
reg = <0xf701 0x1>;
};
boot_error_count: boot-error-count@f702 {
boot_error_count: boot-error-count@f702,0 {
reg = <0xf702 0x1>;
bits = <0 4>;
};
panic_count: panic-count@f702 {
panic_count: panic-count@f702,4 {
reg = <0xf702 0x1>;
bits = <4 4>;
};
@ -823,7 +885,7 @@ boot_error_stage: boot-error-stage@f703 {
reg = <0xf703 0x1>;
};
shutdown_flag: shutdown-flag@f70f {
shutdown_flag: shutdown-flag@f70f,3 {
reg = <0xf70f 0x1>;
bits = <3 1>;
};