Skip to content

arm64: dts: apple: Add Apple T6040 (M4 Pro) SoC and MacBook Pro 14-inch (J614s) skeleton - #577

Draft
ssk42 wants to merge 2 commits into
AsahiLinux:asahifrom
ssk42:t6040-bringup-rfc
Draft

arm64: dts: apple: Add Apple T6040 (M4 Pro) SoC and MacBook Pro 14-inch (J614s) skeleton#577
ssk42 wants to merge 2 commits into
AsahiLinux:asahifrom
ssk42:t6040-bringup-rfc

Conversation

@ssk42

@ssk42 ssk42 commented Aug 23, 2026

Copy link
Copy Markdown

arm64: dts: apple: Add Apple T6040 (M4 Pro) SoC + MacBook Pro 14" (J614s) skeleton

RFC / early bring-up contribution. This adds the first devicetrees for the
T6040 SoC ("Brava Chop", M4 Pro) and one machine using it.

Data provenance

Every register address and interrupt number comes from a dump of the
IODeviceTree registry plane (ioreg -lw0 -p IODeviceTree) of a live
MacBook Pro (14-inch, M4 Pro, Late 2024):

Block Node Physical base IRQ(s)
AIC v3 aic 0x502400000 (+0x40000 event)
PMGR pmgr 0x502800000 306/307/467/309
UART0 uart0 0x429200000 1559
WDT wdt 0x50836c000 827
pinctrl ap/nub/smc/aop gpio0/nub-gpio0/smc-gpio0/aop-gpio0 0x51c000000 / 0x5081e4000 / 0x50c824000 / 0x510824000 478–484 / 819–825 / 985–991 / 700–706
I²C ×6 i2c1..i2c8 0x429014000…0x429030000 1576–1583
SPI ×2 spi2/spi4 0x429108000 / 0x429110000 1569 / 1571

The UART address independently matches m1n1's EARLY_UART_BASE for T6040.

Explicitly unverified / TODO before this can leave RFC

  1. CPU reg values: MPIDR encoding follows the t6031-base convention
    (E cluster 0 at 0x0+i, P clusters N≥1 at 0x10000+(N<<8)+i). Not yet
    confirmed on T6040 silicon; kboot prints per-CPU MPIDRs and hard-fails on
    mismatch, so the first boot will confirm or correct these.
  2. PMGR window size inherited from t8132 (0x14000); no power domains yet.
  3. GPIO pin counts / I²C-SPI pinmux inherited from the t8132 generation.
  4. ATC PHY tunables (atc-phy,t6040) are absent from kboot_atc tables;
    IODeviceTree does not expose apple,tunable-*, so these need a
    proxyclient ADT dump.

I plan to run m1n1 + proxyclient on the donor machine to close 1–4 and will
update this series with measured values.

Testing

  • make ARCH=arm64 apple/t6040-j614s.dtb builds clean in-tree (arm64 defconfig).
  • Full Image.gz build passes with the DT integrated.
  • Standalone dtc -@ compile + decompile round-trip verified.

Happy to restructure per reviewer preferences (e.g. splitting pinmux stubs,
dropping PMGR node entirely until the domain table exists).

ssk42 added 2 commits August 23, 2026 15:10
Add a skeleton devicetree for the T6040 SoC, following the same minimal
bring-up scope as t8132 (M4): CPUs, AICv3, PMGR syscon, watchdog, the four
pinctrl instances, I2C/SPI controllers, fpwm and UART0.

Register addresses and interrupt numbers are taken from a dump of the
IODeviceTree registry plane of a MacBook Pro (14-inch, M4 Pro, Late 2024);
the UART base independently matches m1n1's T6040 EARLY_UART_BASE.

Known limitations, to be resolved with an on-hardware m1n1/proxyclient
ADT dump:

- CPU reg values use the MPIDR convention from t6031-base; not yet
  confirmed against silicon.
- The PMGR window size is inherited from t8132 and no power domain child
  nodes are added yet.
- GPIO pin counts are inherited from the t8132 generation; I2C/SPI
  pinctrl pinmux assignments are unknown and therefore omitted.

New "apple,t6040-*" compatible strings lead each chain while existing
driver-matched strings provide fallbacks, so no driver changes are
required at this stage.

Signed-off-by: ssk42 <sthreitz@gmail.com>
…etree

Add initial support for the J614s target type. Serial console is enabled;
framebuffer, reserved-memory and memory nodes are placeholders to be
filled by the bootloader at boot time, matching the t8132 machine files.

Signed-off-by: ssk42 <sthreitz@gmail.com>
@svenpeter42

Copy link
Copy Markdown
Member

please don't create PRs for things you haven't even tested your self.
also, did you use any LLM/AI to help you create this?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants