Skip to content

arm64: dts: apple: t6050-k116s: N1, USB-C, SMC, DCP, sound, PMP/SEP, GPU, SD reader, microphones, camera - #1648

Open
sithglan wants to merge 11 commits into
aurora-silicon:integration/aurorafrom
sithglan:thomas/k116s-dt
Open

sithglan wants to merge 11 commits into
aurora-silicon:integration/aurorafrom
sithglan:thomas/k116s-dt

Conversation

@sithglan

@sithglan sithglan commented Nov 12, 2026 •

Copy link
Copy Markdown
Contributor

Base: integration/aurora (050f6a5). The K116s (16-inch MacBook Pro, M5 Pro, OLED; Mac17,12) board DT, brought up to what the J714s describes. Every value is checked against the K116s ADT (macOS 27.2, 26B8125). 11 commits: 10 by Jens and one binding commit by me.

  • PCIe port 0 and the N1. aura's T6050 hand-off refuses a PCIe host without an iommu-map, so the host gets one, and port 0 gets the N1's three functions with this board's platform ID (board-id 0x16). The PERST# pin and the wifi0/bluetooth0 aliases are there for the loader. The K114s keeps the host disabled until its board ID is known.
  • USB-C, SMC, trackpad, DCP. The two non-debug USB-C ports (hpm1/hpm2, ATC1/ATC2, dwc3, DARTs, atcphy aliases), SMC hwmon, the trackpad AFE reset (SMC gp1c) and the keyboard alias. Also the DCP hand-off nodes the loader edits, disabled until chosen.aurora,t6050-display arms them.
  • dt-bindings: display: apple,dcp: accept K-board panel compatibles (mine). The K116s panel is "apple,panel-k116", "apple,panel", and the binding allowed only apple,panel-j<n>.
  • ASoC: apple: macaudio: Add K116, with its binding line. The K116s has the J714s's audio and uses macaudio_j714_cfg under its own compatible. (J714 itself is already in integration as ef6c144.)
  • Speakers and headphone jack (six SN012776, CS42L84, AOP, ADMAC, the apple,k116-macaudio card), the PMP and SEP, the GPU (disabled until a loader with the G17S hand-off enables it), the SD card reader (GL9755 on port 1, trained by the kernel), the microphone array and the camera capture resources.

One change from Jens's version: the GPU node's compatible is only "apple,agx-g17s". Jens's DT listed "apple,agx-g17s-k116" first, which only his local board-table patch uses. His DT comment says to drop it without that patch, and the J714 tables are then used (5 mV below this unit's ADT voltages at eight of the 14 states). That patch says itself that it is a local bring-up patch: the voltages are most likely per unit, and the real fix is a loader hand-off of the ADT tables. So it is not submitted. I also removed the local file paths from the GPU dtsi comment.

Runtime dependencies, which the DT does not need to build: sound needs #1645 on the 27.2 firmware; the SEP needs the SEP profile commit in #1649; s2idle with the SD reader needs #1647; the GPU needs a loader with the G17S hand-off and #1650 (on #1173).

Tested by Jens on the K116s, with the commits as listed in their messages: N1 Wi-Fi associates, USB-C, SMC sensors, panel, speakers (with speakersafetyd), jack codec probes, PMP and SEP, camera (IMX958), and the SD reader probes (no card tested). The microphone commit says "not tested on the hardware yet", but his status of 2026-11-11 lists the 3-mic array as working.

Checks:

  • make dtbs builds; dt_binding_check passes for apple,macaudio.yaml and apple,dcp.yaml.
  • dtbs_check on t6050-k116s.dtb leaves two kinds of warning. First, gpu@2300000000 reg/reg-names (only "sgx"), the same warning the K114c DTB in integration already has. Second, the port 1 tunables on pci@1,0 (apple,apcie-config-tunables, apple,pcie-rc-*tunables): pcie-apple reads them and the J714s DT carries the same properties, but apple,pcie.yaml does not describe them yet.
  • checkpatch: line-length warnings in the generated PMP tunables, as in the existing J714s/J813 tunables files.

Authorship. Jens Axboe wrote ten of these commits and runs them on his K116s (16-inch MacBook Pro, M5 Pro, OLED; Mac17,12; stub macOS 27.2 26B8125). They come from his K116s bundle of 2026-11-11 (integration/aurora 254c9bd plus 34 commits, kernel 7.3.0 running on the machine). I rebased them onto integration/aurora 050f6a5 and removed the LLM co-author and session trailers. Jens has given his OK: his ten commits carry his Signed-off-by. The binding commit is mine and carries mine.

axboe and others added 11 commits November 12, 2026 07:40
…s N1

aura's T6050 hand-off reads the PCIe host's iommu-map and refuses the boot
when it is absent, which the bare disabled pcie0 of these boards hit. Give
the host its iommu-map and bus-range, and on the K116s describe port 0
with the N1's three functions as on J714s, with this board's platform ID
(ADT /chosen board-id 0x16 << 16 | 0x6050), the PERST# pin 80 exposed and
the wifi0/bluetooth0 aliases for the loader's factory addresses. The K114s
keeps the host disabled until its board ID is known.

Signed-off-by: Jens Axboe <axboe@kernel.dk>
Port 0 carries the N1 (ADT /arm-io/apcie0/pci-bridge0 with centauri-control,
-alpha and -beta). Describe the port and the N1's three functions as on
J714s, with this board's platform ID (ADT /chosen board-id 0x16 << 16 |
0x6050), the firmware table name, the PERST# pin 80 exposed and the wifi0
and bluetooth0 aliases through which the loader fills the factory addresses.
The shared K114/K116 file keeps the host disabled with its iommu-map, which
aura's T6050 hand-off requires, until the K114s board ID is known.

Booted on a K116s: the loader trains the link, the N1 enumerates at
01:00.0-2, apple_centauri_t6050 boots the ticketed firmware table from the
27.2 IPSW and wlp1s0f0 associates and gets DHCP.

Signed-off-by: Jens Axboe <axboe@kernel.dk>
The PROLED MacBook Pros are K boards (K114s/c, K116s/c). Like the J
boards, their panel node can name the board before the generic
compatible: the K116s uses "apple,panel-k116", "apple,panel". Accept
apple,panel-k<n> where apple,panel-j<n> is accepted.

Signed-off-by: Thomas Glanzmann <thomas@glanzmann.de>
…set, DCP

Bring the K116s board file up to what the J714s describes and what the
display hand-off needs:

- The two non-debug USB-C ports as on the J714s: the SN201202x port
  controllers hpm1/hpm2 on nub-spmi-a0/a1 (the a1 controller needs its
  own reg), ATC1 and ATC2 PHYs, mailboxes, dwc3 controllers and DARTs
  enabled, with atcphy1/atcphy2 aliases so the loader copies the combo
  PHY tunables from the ADT.
- SMC hwmon with the fan, power, voltage and current keys, without the
  die temperature keys this SMC lacks.
- The trackpad's AFE reset as SMC GPIO gp1c (active low) and a keyboard
  alias for the loader's layout, as the J714s does; the pcIO node goes.
- The dcp hand-off nodes the loader edits: dcp with its bandwidth scratch
  and firmware clock ids, fixed clocks for them, the DARTs' DMA range,
  the display subsystem and a panel of 345x223 mm, all disabled until
  chosen.aurora,t6050-display arms them. dcp and disp0 aliases.
- gpio-reserved-ranges split around the N1 PERST# pin.

Signed-off-by: Jens Axboe <axboe@kernel.dk>
The K116s (16-inch M5 Pro OLED) has the J714s's audio: six SN012776 amps
in two woofer pairs and two tweeters, the same slots, frame and V/I sense
layout, and the CS42L84 jack codec, so it shares macaudio_j714_cfg under
its own chassis compatible.

Signed-off-by: Jens Axboe <axboe@kernel.dk>
The J714s's sound description, every value checked against the K116s ADT,
which matches the J714s in each audio property: six SN012776 amps on i2c1
and i2c3 with the shared shutdown line on AP pin 107, the fault interrupt
on pin 106 and the V/I sense slots of the ADT speaker-config rows; the
CS42L84 jack codec on i2c2 with reset on pin 139 and its interrupt on
134; the AOP with its setup mailbox, DART and the base-ns ADMAC; and the
card as apple,k116-macaudio with the speaker-id pins 136 and 137.

The reserved GPIO ranges now expose only the pins named here plus the N1's
PERST#, since pin 112 takes an SError when read.

The amps carry their ADT speaker-config rows until the boot loader fills
them in; it overwrites them with the same bytes.

Signed-off-by: Jens Axboe <axboe@kernel.dk>
…714s does

The PMP with its DART, mailbox, report and the PMC's static voters, and a
tunables file generated from the K116s ADT's /arm-io/pmp0/iop-pmp0-nub
(every name the J714s file has; only the DVFS voltage table, the segment
ranges and the UUID differ). The SEP through its alias, which the boot
loader uses to reserve its firmware and publish its manifests, with its
mailbox and power domain and the two fabric parents left to the firmware.

Signed-off-by: Jens Axboe <axboe@kernel.dk>
…d-off

The GPU half of the J714s description, every value checked against the
K116s ADT: the G17S GPU on the PMP's gfx domain, its two ASC mailboxes,
the GPX/AFR/GFX power states and the six reservations the boot loader
fills from the ADT. All of it stays disabled until a loader with the G17S
hand-off enables it.

Signed-off-by: Jens Axboe <axboe@kernel.dk>
The MacBook Pro 16-inch (M5 Pro, OLED) SD card reader, a GL9755 on PCIe
port 1 (ADT apcie0/pci-bridge1/pcie-sdreader), was not described. The
boot loader trains only port 0 (the N1) and leaves port 1 down, so the
kernel trains it, as on the J714s. Every value is from the K116s ADT:

- port 1's registers: apcie0 reg[22] (port1, 0x211028000 +0x8000),
  reg[24] (phy1, 0x217014000 +0x4000) and reg[25] (intr2axi1,
  0x211024000 +0x4000), the entries six after port 0's reg[16], reg[18]
  and reg[19], behind /arm-io's ranges (+0x200000000);
- the shared PHY's window, apcie0 reg[3] (0x217020000 +0x4000), which
  the kernel's train reads to see that the boot loader left the PHY
  running;
- port 1's interrupt, apcie0 interrupts[1] = 1531;
- PERST#: pci-bridge1 function-perst = gpio0 GPIO(0x51, 0), pin 81,
  which the pin controller now exposes (82-105 stay reserved, as does
  pin 112, which takes an SError when read);
- the reader's power: pcie-sdreader (and /pcie-sdreader-helper)
  function-sd_pwr_en = smc-pmu pKW8('pcIO', 0x0, 0x190000), described as
  SMC pcIO output 0, command 0x0019000000000000. The board deleted the
  pcIO node as it drove none of its outputs (the trackpad's AFE reset
  uses SMC GPIO gp1c); the node is back with this one output, which
  replaces the three of t6050-k114-k116.dtsi;
- the link tunables: pci-bridge1's apcie-config-tunables,
  pcie-rc-tunables and pcie-rc-gen{3,4,5}-shadow-tunables, decoded as
  (offset, size, mask, value). They are the same as the J714s's;
- dart-apcie1 (0x211000000, interrupt 1532), which the ADT marks
  manual-availability: it answers only once the root complex is up, so
  the host does not wait for it (post-init-providers) and pcie-apple
  enables it once the port is up. The node is apcie1_dart of
  t6050-peripherals.dtsi;
- the reader's card detect and write protect, active high: the ADT's
  card-detect-polarity and write-protect-polarity are 1.

One value is not the ADT's: the DART stream. mapper-apcie1 has no reg
(macOS has the bridge request a stream at run time, function-
dart_request_sid), so the reader gets stream 1, below the DART's first
bypass stream (16), as on the J714s. The driver routes the reader's
requester ID to it.

pci-bridge1's function-clkreq (gpio0 pin 0x4d) and the ADT's GL9755
settings (gl9755-sdr104-delay*, gl9755-ssc_*, ...) are not described:
no driver takes them.

Not tested on the hardware: the DTB builds, and the same description
works on the J714s.

Signed-off-by: Jens Axboe <axboe@kernel.dk>
ADT audio-hp-mic: three microphones on leap-s RX0, through the proxy
ADMAC (Linux channel 1, as on J714s and J813). The AOP audio service
captures them on a card of its own, AppleK116HPAI.

The board file carried this as an "#if 0" block until the proxy ADMAC
was described at its real address. Enable it. Checked against the K116s
ADT: admac-hp-mic-ec-proxy reg 0x2d3200000 size 0x34000, dma-channel 0;
admac-leap-s interrupt 638, nine RX channels; dart-aop
mapper-admac-leap-s stream 11 with vm-base-11 0x10040000000 and
vm-size-11 0xffff0000; leap-s-adma-rx-0 three channels, 32 bits, 48 kHz.
These are the J714s values.

Not tested on the hardware yet.

Signed-off-by: Jens Axboe <axboe@kernel.dk>
The 16-inch M5 Pro OLED MacBook Pro (K116s) has the T6050 ISP that J716c
and J714s describe, so take their description. Checked against the
K116sAP ADT of macOS 27.2 (26B8125):

 - isp0: reg[0] 0x380000000 + 0x3ff0000 (0x580000000 through the arm-io
   range) holds the coproc, mailbox and GPIO windows; reg[1] is the pmgr
   window 0x280900000 + 0x3f4; interrupts 513..516 and 526; the EIC's
   mmio-wd-isp is 0x5c3b50000 + 0x8000; clock-ids 350 and 352.
 - dart-isp0: instances at 0x5828c0000, 0x5828e0000 and 0x582900000
   (0xc000 each), the address filter at 0x5828d0000, interrupt 531, host
   streams 0 and 12, exclave streams 4/5 and 8/9, remap 1, 6, 7, 10, 11,
   DAPF stream mask 0xcc3.
 - pmgr: FAB9_SOC at 0x398, ISP_SYS at 0x3a0 (parent FAB9_SOC) and
   ISPSENS0 at 0x100 in the second register block. ISP_CPU, ISP_FE,
   DPRX, ISP_SECURE, ISP_BE and ISP_CLR are devices 0xdc, 0xdd and
   0xe1..0xe4; the table gives them no register, the include's offsets
   0x3b0, 0x3b8 and 0x3d8..0x3f0 are eight bytes per device from ISP_SYS
   (0xda) and are the range the DAPF opens to the ISP (0x2809003b0 to
   0x2809003f3).
 - the two firmware segments are 0xc1c000 and 0x13d0000 bytes at DART
   address 0x10000000000, as on J716c and J714s.

Two things differ from J716c and need nothing here. The ADT's address
filter lists four DSID windows (0x2220004000, 0x2222004000, 0x2224004000
and 0x2226004000; active-mcc-bit-vector 0xf) where the driver's T6050
table has eight; J714s, the same M5 Pro, streams with that table. The
sensor type is 0xbc and cam-connections-scheme 0x10, which the loader
passes as apple,platform-id and apple,cam-connections-scheme.

The ISP firmware of this build (uuid 980F533B-34EA-3FBA-878C-809F6AF57345,
the IPSW's isp_bni/adc-nyx-sck11pm) has one connection table for
platforms 0xb9..0xbc, with a single "FrontRGB" channel on its IMX958
sensor driver: the sensor J714s reports (0x958), which the driver runs
with the 2224_01 setfile.

As on the other two boards the ISP and its DARTs stay disabled until the
boot loader has reserved the firmware. The include does change what the
power-domain driver does without that: it turns ISP_SYS on and keeps it
on, registers the six ISP power states and ISPSENS0, and marks FAB9_SOC
as firmware owned.

Not booted on the hardware. t6050-k116s.dtb builds without DTC warnings.

Signed-off-by: Jens Axboe <axboe@kernel.dk>
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