Repository navigation
arm64: dts: apple: add the T6050 (M5 Ultra) SoC and J775D Mac Studio device trees - #935
Merged
Merged
Conversation
Add the T6050 SoC in its two-die M5 Ultra form, and the Mac Studio board that uses it: the device tree for Linux running on the hardware, as the boot loader hands it over (the loader fills the tunables and calibration the nodes name). Every T6050 is made of the same die, so the SoC description is split as for the M3 Max and Ultra (t6031-base, -die0, -dieX): - t6050-base.dtsi: the nodes common to every size, die 0's bus and the CPU node template; - t6050-die0.dtsi: the blocks used on die 0 only, among them the interrupt controller that serves both dies; - t6050-dieX.dtsi: the per-die template, included once for each die, with each die's blocks at the die stride and its interrupts on its own die of the AIC; - t6050-ultra.dtsi: the two dies, their CPUs (five cores in each cluster) and the blocks so far described for the two-die part only: the video decoders, the memory cache controllers, the display subsystem, die 1's ATC0 and its DisplayPort PHY; - t6050-j775d.dts: the board, its USB-C ports and their PD controllers, the HDMI port, PCIe, audio, the boot NOR and the fans. Signed-off-by: Jeff Queisser <funkzy@users.noreply.github.com> Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> [erik: dropped references to private files from a comment] Signed-off-by: Erik Bourget <erik@ebourget.net>
Build t6050-j775d.dtb, the Mac Studio with the M5 Ultra (J775D, T6050), with the other Apple device trees. Signed-off-by: Jeff Queisser <funkzy@users.noreply.github.com> Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Signed-off-by: Erik Bourget <erik@ebourget.net>
T6050's coprocessors (ANS among them) use the ASC v4 mailbox. Signed-off-by: Jeff Queisser <funkzy@users.noreply.github.com> Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Signed-off-by: Erik Bourget <erik@ebourget.net>
Add the J775D board and its T6050 (M5 Ultra) SoC. Signed-off-by: Jeff Queisser <funkzy@users.noreply.github.com> Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Signed-off-by: Erik Bourget <erik@ebourget.net>
T6050's AIC3 is the T8122 one with two dies, so it takes the T8122 fallback and, like T6031's, four interrupt cells (the second is the die). Signed-off-by: Jeff Queisser <funkzy@users.noreply.github.com> Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Signed-off-by: Erik Bourget <erik@ebourget.net>
T6050's watchdog is compatible with T8103's. Signed-off-by: Jeff Queisser <funkzy@users.noreply.github.com> Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Signed-off-by: Erik Bourget <erik@ebourget.net>
Add apple,t6050-dart, the DART of the T6050 (M5 Ultra) PCIe ports and display co-processors, with the t8110 fallback like the other recent SoCs. Signed-off-by: Jeff Queisser <funkzy@users.noreply.github.com> Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Signed-off-by: Erik Bourget <erik@ebourget.net>
T6050's boot NOR sits behind a QSPIMC controller with the same P and C apertures (C at P + 0x800) as T8140's. Describe it as "apple,t6050-qspi", "apple,t8140-qspi" so the driver's T8140 policy (data reads anywhere, programs and erases only inside the nvram partition) applies without a driver change. Signed-off-by: Jeff Queisser <funkzy@users.noreply.github.com> Signed-off-by: Erik Bourget <erik@ebourget.net>
The PMU's info-pm_setting byte (0x2001, as on T6030) holds the power-on
policy: bit 0 keeps the machine off when power returns after a loss, bit 5
keeps it off when power is connected. Hand it to the SMC reboot node as the
pm_setting cell so macsmc-reboot's ac_power_mode can read and set it.
Written 0x03 ("always") from Linux on the Studio, a wall-power cycle after
a Linux shutdown powered it on by itself.
Signed-off-by: Jeff Queisser <funkzy@users.noreply.github.com>
Signed-off-by: Erik Bourget <erik@ebourget.net>
erikwb
force-pushed
the
j716c/t6050-dt
branch
from
November 5, 2026 04:01
8be8191 to
d7ca54c
Compare
This was referenced Nov 6, 2026
Bring the T6050 base up to the current integration tree. Two conflicts: the Makefile (t6050-j775d.dtb goes after the T6041 boards) and the QSPI binding, where T6050 joins T8152 in the "apple,t8140-qspi" fallback list. Assisted-by: LLM Signed-off-by: Ryan Murray <81541646+RyanTheTide@users.noreply.github.com>
T8142, T8152 and T6050 boot their Always-On Processor over the RTKit mailbox (T8142 also over a setup port) and hand its audio service the jack, speaker and amplifier sense channels, plus the HPAI microphones where the board has them. The T8142 J813 tree and the T6050 J775D tree already use these compatibles, which no binding described. Assisted-by: LLM Signed-off-by: Ryan Murray <81541646+RyanTheTide@users.noreply.github.com>
…control Describe three interfaces the T6050 trees use: the DisplayPort and Type-C combo PHY, the SMC pcIO power outputs as GPIOs, and the N1's PCI function 0, which carries the firmware name and platform ID the Wi-Fi and Bluetooth drivers boot it with. Assisted-by: LLM Signed-off-by: Ryan Murray <81541646+RyanTheTide@users.noreply.github.com>
The J775D tree uses T6050 compatibles that the shared Apple bindings did not list yet. Add them, with the fallbacks the tree uses: - the PMGR, its power states, SPMI, I2C, pinctrl (with the T8103 and, for the AOP block, the T8132 fallback), ADMAC, AVD, dwc3, SART, NVMe, MCC, PMC and CLPC, the CIO reset, SMC, display crossbar, DCP, USB4 router and NHI, PCIe and the DisplayPort PHY; - T6050's own properties: the cluster controllers' firmware-managed thermal flag, the dwc3 CIO tunable, the second power domain of the crossbar, the PMU power-on policy cell of the SMC reboot node, the DisplayPort PHY's PLL settings, PCIe ports the boot loader trained; - the J775D sound card. T6050's ANS keeps its power with the firmware and is never reset through PMGR, so its NVMe node needs neither power domains nor a reset. A two-die T6050 lists both dies' memory controller planes, 64 in all. Assisted-by: LLM Signed-off-by: Ryan Murray <81541646+RyanTheTide@users.noreply.github.com>
The boot loader always passes the command line, so the DT's own "maxcpus=1 rdinit=/init" never applies on a normal boot and would only hide 29 of the 30 cores when it did. No driver reads ti,bclk-ratio and no binding has it, so drop it from the speaker amplifier too. Assisted-by: LLM Signed-off-by: Ryan Murray <81541646+RyanTheTide@users.noreply.github.com>
Contributor
|
Review from the Aurora side. Ryan asked for the T6050 device trees in integration, so this PR is in scope now and I've pushed our own fixups on top of the branch. Your commits are untouched, it's all new commits plus one merge. What I checked
What I pushed
Not blocking, for later
Build-tested, unbooted. We have no T6050 here. @erikwb could you boot the head of this branch on your J716c once #945 is on top, and @funkzy on the J775D? A boot to a shell with the same dmesg as before would be great. I'll merge once CI is green and won't wait on it, and anything a boot turns up goes in a follow-up. Merge plan: this one first, then #945 and #1167, then our layer that describes the rest of the T6050 boards (all of it disabled). |
The other Apple PHY and controller bindings type their apple,tunable-* properties as uint32 matrices of (offset, mask, value) rows. The combo PHY binding typed the same property names as flat uint32 arrays, and dt-validate cannot decode a property name that two bindings give different types: it stops with "KeyError: 'uint32-array'". Use the matrix type here too. Assisted-by: LLM Signed-off-by: Ryan Murray <81541646+RyanTheTide@users.noreply.github.com>
RyanTheTide
added a commit
that referenced
this pull request
Nov 8, 2026
Integration now has the T6050 base and J775D from #935 with its review fixups. The Makefile conflicted: the two boards go after the T6041 ones. Assisted-by: LLM Signed-off-by: Ryan Murray <81541646+RyanTheTide@users.noreply.github.com>
RyanTheTide
added a commit
to rolotrealanis98/linux
that referenced
this pull request
Nov 8, 2026
Integration now has the T6050 base, J775D, J716c and J714c from aurora-silicon#935 and aurora-silicon#945 with their review fixups. This branch carries earlier copies of those commits, so the shared files conflicted: - t6050-max.dtsi keeps this branch's CPU order and takes the MTP helper compatible from integration; - t6050-die0.dtsi keeps the SMC's second GPIO bank; - the J775D, J716c and J714c files, the QSPI and SPMI bindings take the reviewed versions from integration; - arm/apple.yaml lists the J716s in its own M5 Pro entry, the Makefile builds it next to the other T6050 boards. Assisted-by: LLM Signed-off-by: Ryan Murray <81541646+RyanTheTide@users.noreply.github.com>
RyanTheTide
added a commit
that referenced
this pull request
Nov 8, 2026
Integration now has the T6050 base and the J775D, J716c, J714c and J716s trees from #935, #945 and #1167. arm/apple.yaml conflicted: the K boards go into the M5 Pro and M5 Max entries next to the J714/J716 boards. The pwm and pmgr-pwrstate bindings already list T6050. Assisted-by: LLM Signed-off-by: Ryan Murray <81541646+RyanTheTide@users.noreply.github.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
There's no device tree for T6050 (M5 Max and M5 Ultra) when Linux runs directly on the hardware. This adds the T6050 SoC files and the J775D Mac Studio board, as the boot loader hands the machine over, plus the compatible-only binding updates the tree needs.
Every M5 size is the same
apple,t6050, so the SoC is described once and sized per part:t6050-base.dtsi: what every size shares (the CPU and per-die address macros, clocks, die 0's bus);t6050-die0.dtsi: the blocks only die 0 has;t6050-dieX.dtsi: the per-die blocks, included once per die;t6050-ultra.dtsi: the two-die M5 Ultra, which J775D includes. The J716c PR addst6050-max.dtsifor the one-die M5 Max; a binned or smaller part can include that the wayt6034.dtsiincludest6031.dtsi.The binding updates:
apple,t6050-asc-mailbox, AIC3 (apple,t6050-aic3, T8122 fallback, four cells), watchdog, DART (apple,t6050-dart, T8110 fallback) and QSPI (T8140 fallback, so its nvram-only write policy applies);ac_power_modeuses.The drivers that bind to the new nodes are in separate PRs (NVMe, PCIe, N1, combo PHY, dptx, SMC, cpufreq); this tree compiles without them.
Commits by Jeff Queisser. On J716c (MacBook Pro 16-inch, M5 Max) this runs as part of the full T6050 stack (
j716c/t6050-platform): the machine boots to userspace from NVMe with all 18 CPUs, N1 Wi-Fi up and CPU frequency scaling active. The J716c board tree is a separate PR.Created with Claude Opus 5.5 in Claude Code.