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 15 commits into
aurora-silicon:integration/aurorafrom
sithglan:thomas/k116s-dt
Open

sithglan wants to merge 15 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 (6ea76a5). 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). 13 commits: 12 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.)
  • Drop the hard-coded speaker-config rows. The boot loader copies each amp's row from the ADT (aura kboot_audio); the rows here were a stop-gap for a loader without it.
  • Hold back the CPU PMU and the CLPC's SMC link. Since 050f6a5 the shared T6050 files enable a CPU PMU node (t6050-base.dtsi) and give the CLPC an apple,smc link (t6050-die0.dtsi). Neither has been tested on the K116s yet, so its tree keeps both off until they are. With this the K116s DTB differs from the one built before the rebase only in disabled nodes.
  • 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). The internal panel on public aura needs aura#226 plus a follow-up that drops /clock-dcp-firmware-361, /clock-dcp-firmware-458 and the clocks and apple,bw-scratch properties in &dcp, because aura adds those from the ADT. That follow-up comes after aura#226 merges. As it stands, the tree works with the loader Jens tested on.

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 twelve 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 6ea76a5 and removed the LLM co-author and session trailers. The speaker-config and PMU/CLPC commits come from his bundle of 2026-11-12; in the second I updated the sentence that described the K116s at EL1, since it now runs Linux at EL2 with KVM. Jens has given his OK: his twelve commits carry his Signed-off-by. The binding commit is mine and carries mine.

@sithglan

Copy link
Copy Markdown
Contributor Author

Updated: rebased onto integration/aurora 6ea76a5 without conflicts (old head 29d7657). Two commits from Jens's K116s bundle of 2026-11-12 are added on top:

  • arm64: dts: apple: t6050-k116s: drop the hard-coded speaker-config rows: the boot loader hands each amp's row over from the ADT.
  • arm64: dts: apple: t6050-k116s: hold back the CPU PMU and the CLPC's SMC link: the shared T6050 files gained both since 050f6a5, and neither is tested on the K116s yet. Its message now says the K116s runs Linux at EL2 with KVM, instead of "starts at EL1".

Every commit builds (Image.gz modules dtbs, LLVM 22, Jens's K116s config). dtbs_check on t6050-k116s.dtb shows only the two warning kinds the description lists.

Jens's notes also suggest moving the shared &pcie0 iommu-map/bus-range from t6050-k114-k116.dtsi into the K116s file, because the K114c inherits them. I left them where they are. aura's T6050 hand-off refuses a PCIe host without an iommu-map, and the K114s and K116c need them too. The K114c sets the same values itself.

cc @Acelogic @DjDeveloperr @RyanTheTide @LiamRay10

@RyanTheTide RyanTheTide left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@sithglan dt-checks reports 9 new warnings on t6050-k116s.dtb. Two things are needed:

  1. The port tunables on pci@1,0 (apple,apcie-config-tunables and the apple,pcie-rc-*tunables) are not in apple,pcie.yaml. Please add them to the binding in a separate commit; J714s uses the same properties.
  2. gpu@2300000000 has only the "sgx" reg. Either add the reg entries the apple,agx binding expects or adjust the binding for the loader hand-off form, so the node validates.
    Small things: please keep the apple,k116-macaudio entry sorted in apple,macaudio.yaml, and add your own Signed-off-by to 3f26aa3 since you edited its message.

@joshuaswarren

Copy link
Copy Markdown
Contributor

[Joshua's agent] K114c (14-inch M5 Max PROLED) panel values, for alignment with this PR's K116s panel node. Read-only, from that machine's own firmware device tree (values only):

  • disp0 dot-pitch-float = 254.6 ppi
  • boot framebuffer 3024x1986
  • oled-display = 1, partially-occluded-display = 1 (cut-out)
  • Derived, not read (the device tree has no mm fields): 3024 / 254.6 in = 301.7 mm, 1986 / 254.6 in = 198.1 mm.

Cross-check against this PR: 345 x 223 mm at 3456 x 2234 is 254.5 / 254.6 ppi, so the K116s numbers are consistent with the same panel density.

Our K114c node will be panel { compatible = "apple,panel-k114", "apple,panel"; width-mm = <302>; height-mm = <198>; }, with no adj-height-mm and no apple,panel-mini-led, using the [jk] binding pattern this PR adds. Our commit depends on this PR's binding change and is not booted yet; the mm values stay marked unverified until the display hand-off runs and the DCP reports its own size.

sithglan and others added 15 commits November 13, 2026 07:37
When the T6050 driver brings a root port up itself (pwren-gpios), or
restarts an adopted one, it applies five tunable lists from the port's
node. The first, apple,apcie-config-tunables, goes to the port registers.
Then apple,pcie-rc-tunables and the Gen3, Gen4 and Gen5 rate shadow lists
go to the root complex configuration space. The J714s and K116s SD card
ports carry all five, but the binding described none of them, so their
pci@1,0 nodes fail validation.

Describe them in the T6050 tunable format and keep them off the other
SoCs.

Signed-off-by: Thomas Glanzmann <thomas@glanzmann.de>
Two allOf entries match every node with apple,agx-g17s:
- The M5 Pro hand-off entry wants one "sgx" reg and no board operating
  points.
- The J716c entry wants "asc" and "sgx" plus the operating-point tables.

No node satisfies both. The J714s, K114c and K116s GPU nodes fail the
J716c entry, and the J716c node fails the hand-off entry.

Apply the hand-off entry to a node whose only compatible is
apple,agx-g17s, and the J716c entry to apple,agx-g17c. Also drop the
second apple,agx-g17s in the enum of the non-coprocessor entry, which
dt_binding_check reports as non-unique.

Signed-off-by: Thomas Glanzmann <thomas@glanzmann.de>
…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>
[thomas: keep apple,k116-macaudio sorted in the binding]
Signed-off-by: Thomas Glanzmann <thomas@glanzmann.de>
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>
The boot loader copies each amp's row from the ADT (aura kboot_audio);
the rows carried here were a stop-gap for a loader without it.

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

The shared T6050 files gained a CPU PMU node (t6050-base.dtsi) and an
apple,smc phandle on the CLPC (t6050-die0.dtsi), so both became active on
every T6050 board, the K116s included. Neither has been tested on the
K116s. It ran at EL1 under the boot loader's monitor when they appeared,
and now runs Linux at EL2 (27.2, KVM working) with this change in place,
so the PMU and the SMC link are still to be tested there. Until then keep
its device tree as it was: disable the PMU node and drop the SMC link,
without which the CLPC's low-power platform profile has only its
frequency ceiling.

With this the K116s DTB differs from the one built before the rebase only
in nodes that are disabled.

Signed-off-by: Jens Axboe <axboe@kernel.dk>
Signed-off-by: Thomas Glanzmann <thomas@glanzmann.de>
@sithglan

Copy link
Copy Markdown
Contributor Author

@RyanTheTide all four done. Force-pushed as cd2c9f5 (was 3f26aa3). There are two new binding commits at the start of the series, and the 13 commits are otherwise unchanged apart from the two amendments.

  • PCIe port tunables: 1fa8562 dt-bindings: pci: apple,pcie: Describe the T6050 port tunables. It adds apple,apcie-config-tunables, apple,pcie-rc-tunables and the three apple,pcie-rc-gen{3,4,5}-shadow-tunables to the pci@ node in the T6050 tunable format, and keeps them off the other SoCs.

  • GPU: 8f418a4 dt-bindings: gpu: apple,agx: Tell the two G17S layouts apart. I changed the binding rather than the node. Two allOf entries match every apple,agx-g17s node:

    • d7cd98f (the M5 Pro hand-off: one sgx reg, no board OPPs);
    • 4c7fdf1 (the J716c: asc + sgx and the OPP tables).

    No node can satisfy both. Adding asc to the K116s node would also have required the OPP tables, which the hand-off form leaves out. The hand-off entry now applies to a node whose only compatible is apple,agx-g17s, and the J716c entry to apple,agx-g17c. The commit also drops the duplicate apple,agx-g17s in the non-coprocessor enum, which dt_binding_check reports as non-unique once the file is checked.

  • macaudio: apple,k116-macaudio now sits after apple,j873-macaudio, in 45f4de4 with a [thomas: …] note.

  • Sign-off: cd2c9f5 (was 3f26aa3) carries my Signed-off-by.

dt-checks, run locally with scripts/dtc/apple-dt-check.sh 6ea76a5 against the new head:

  • Before: the same 9 new warnings as CI.
  • Now: 0 new and 3 removed (the K114c GPU node, which hit the same G17S conflict). All four changed bindings pass dt_binding_check.

A CI blind spot: dt-validate crashes on 29 of the 137 Apple DTBs, the J714s and J716c among them, with KeyError: 'uint8-array'. The cause is that ti,cd2e22.yaml types apple,tunable as uint8-array while DART and PCIe use uint32-matrix. dt-validate then fails to decode the first apple,tunable it meets and checks nothing else in that DTB. That's why the J714s, which has the same pci@1,0 tunables and the same &sgx node, never showed these warnings.

  • I worked around it locally by retyping the property in the test tree only. With the old bindings, the J714s shows the same 9 warnings and the J716c GPU node fails the hand-off entry. With the two new commits, the J714s, J716c, K114c and K116s GPU nodes all validate, and so do the J714s pci@1,0 tunables.
  • The type conflict itself isn't touched here; it needs its own change to ti,cd2e22.yaml or to the DTs that use it.

@joshuaswarren thanks for the K114c values. They agree with the K116s panel density, and the binding pattern stays as it is in this PR.

@axboe

axboe commented Nov 13, 2026

Copy link
Copy Markdown
Contributor

A note on the dcp node in this tree, from booting the K116s on public aura today (27.2 stub).

Public aura's T6050 handoff (t6050_check_dt() in src/kboot_display_handoff.c) refuses a tree whose dcp node already has clocks or apple,bw-scratch: it adds the clock nodes, the PMC metadata reference and those properties itself from the ADT, as it does for the J714s. The K116s tree here has them written in, because I wrote it for the loader I was using at the time. With aura main that means "the device tree already has a memory-region, clocks or apple,bw-scratch" and no panel handoff.

What I tested (aurora-silicon/aura#226, which admits the 27.2 DCP image): a copy of this DTB with only these removed:

  • /clock-dcp-firmware-361 and /clock-dcp-firmware-458
  • clocks and apple,bw-scratch in &dcp

apple,clock-ids, the DART apple,dma-range and the panel child stay. With that, aura publishes the handoff and the panel comes up on apple-drm at 2.2 s (internal display handed off: firmware 27.2, bw-scratch 0x286700000+0x20000, 2 clock(s), 1000 nits). The values aura fills in are the ones the tree had: the same PMC block and offset, clock ids 361 and 458.

So the tree should lose those four entries to work with aura main. I'd do that as a follow-up once aura#226 is in rather than in this PR: without #226 aura refuses the 27.2 panel either way, and a tree without the entries no longer works with the loader the rest of my testing here was done on. Happy to send it as a commit on top of this branch, or as its own PR, whichever is easier.

Separately, with the external engines handed off as well (not what #226 does), apple-dcp 2b2e00000.dcp hits the deferred probe timeout on this tree and delays the display subsystem by 16 s. dcpext0's dependencies in this tree need a look before external displays are enabled for the K116s.

@sithglan

Copy link
Copy Markdown
Contributor Author

@axboe thanks, agreed: a follow-up once aura#226 is in. Please send it as its own PR then, based on integration once this one has landed (or stacked on this branch if it hasn't).

  • That makes the dependency on aura#226 explicit.
  • This PR keeps working with the loader your earlier testing used.
  • Ryan's review here doesn't have to cover a loader change.

I added a line on it to the description's runtime dependencies.

The 16 s deferred-probe delay from dcpext0 is noted. External displays on the K116s stay out of scope until its dependencies are sorted.

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.

4 participants