Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
82 commits
Select commit Hold shift + click to select a range
bf32e65
dt-bindings: soc: apple: add the T8140 sleep controller
DjDeveloperr Nov 7, 2026
ec1e0d8
dt-bindings: soc: apple: add the CPU cluster power gates
DjDeveloperr Nov 7, 2026
cf6efa8
dt-bindings: power: apple,pmgr-pwrstate: add apple,sleep-driver-owned
DjDeveloperr Nov 7, 2026
f652680
dt-bindings: mailbox: apple: add the secure RTBuddy port
DjDeveloperr Nov 7, 2026
cfb1eb4
dt-bindings: iommu: apple,dart: describe a DART's state across a deep…
DjDeveloperr Nov 7, 2026
3279deb
dt-bindings: pci: apple,pcie: describe T8140's shared PCIe block
DjDeveloperr Nov 7, 2026
a7a0eeb
dt-bindings: display: add the Apple T8140 display power words
DjDeveloperr Nov 7, 2026
a3fc59f
dt-bindings: display: apple,dcp: add the secure port and display power
DjDeveloperr Nov 7, 2026
e8c95e7
dt-bindings: dma: apple,sio: name T8140's register blocks
DjDeveloperr Nov 7, 2026
d3e07c8
dt-bindings: gpu: apple,agx: add the PMP report entry
DjDeveloperr Nov 7, 2026
b25de3e
dt-bindings: usb: apple,sn201202x: describe sleep, debug link and USB…
DjDeveloperr Nov 7, 2026
934d745
dt-bindings: phy: apple,atcphy: add T8140's USB power control block
DjDeveloperr Nov 7, 2026
806fb97
dt-bindings: sound: apple,t8140-aop-audio: add the mic array's supply
DjDeveloperr Nov 7, 2026
b0e4c03
PM: suspend: Go back to sleep from a dark wake
DjDeveloperr Nov 7, 2026
b90ca80
arm64: restore Apple CPU state after a firmware-driven suspend
DjDeveloperr Nov 7, 2026
fa4e8a9
arm64: smp: add a spin table whose CPUs can park and power off
DjDeveloperr Nov 7, 2026
67e70ac
irqchip/apple-aic: save and restore T8140 state across a firmware sus…
DjDeveloperr Nov 7, 2026
c8e03fa
spmi: apple: quiet the response vector for a firmware suspend
DjDeveloperr Nov 7, 2026
0f9f95f
rtc: apple-pmu: allow a firmware-driven suspend
DjDeveloperr Nov 7, 2026
73600d2
pmdomain: apple: resync domains and PMC floors after a firmware suspend
DjDeveloperr Nov 7, 2026
93fb08e
pinctrl: apple: put configured pins back after a firmware-driven suspend
DjDeveloperr Nov 7, 2026
355801a
cpufreq: apple: take the cluster's state after a sleep as the expecte…
DjDeveloperr Nov 7, 2026
9bacbca
soc: apple: mailbox: add the secure RTBuddy port and sleep helpers
DjDeveloperr Nov 7, 2026
f7edd90
soc: apple: rtkit: take a co-processor through a system sleep
DjDeveloperr Nov 7, 2026
ee3b6f4
iommu: apple-dart: take the coprocessor DARTs through a firmware suspend
DjDeveloperr Nov 7, 2026
8522558
soc: apple: sart: restore entries after a firmware-driven suspend
DjDeveloperr Nov 7, 2026
113be23
soc: apple: mcc: write the system level cache back before a deep sleep
DjDeveloperr Nov 7, 2026
cc68b50
rust: platform: let a driver give its PM callbacks
DjDeveloperr Nov 7, 2026
3bd4bd1
soc: apple: set the CPU clusters' power-gate enables at boot
DjDeveloperr Nov 7, 2026
d43118b
soc: apple: add T8140 suspend-to-RAM at EL2
DjDeveloperr Nov 7, 2026
932de6d
arm64: smp, soc: apple: t8140-sleep: refuse a sleep a CPU won't stop for
DjDeveloperr Nov 8, 2026
9d13f7b
soc: apple: t8140-sleep: take ANS's PCIe block down and back up
DjDeveloperr Nov 7, 2026
1cc0c96
nvme-apple: take ANS through a firmware-driven suspend
DjDeveloperr Nov 7, 2026
bc9540d
soc: apple: t8140-sleep: put the AP pins back before ANS starts
DjDeveloperr Nov 7, 2026
c2549e0
soc: apple: t8140-sleep: hold the radio in reset through a sleep
DjDeveloperr Nov 7, 2026
d6158d0
mfd: macsmc: tell the SMC about a firmware-driven suspend
DjDeveloperr Nov 7, 2026
cad6fce
mfd: macsmc: name what the SMC woke the AP for
DjDeveloperr Nov 7, 2026
7b03b5a
Input: macsmc-input: wake on the lid and button from a suspend's start
DjDeveloperr Nov 7, 2026
a1ec5ed
Input: macsmc-input: report the lid once a sleep transition ends
DjDeveloperr Nov 7, 2026
e7d2086
power: supply: macsmc: report the supplies again after a sleep
DjDeveloperr Nov 7, 2026
4172e97
PCI: apple: keep the T8140 radio bound and powered across a deep sleep
DjDeveloperr Nov 7, 2026
79ec11e
wifi: mt7932: keep the firmware across a deep sleep
DjDeveloperr Nov 7, 2026
6c752dd
wifi: mt7932: stay associated and wake on WLAN across a deep sleep
DjDeveloperr Nov 7, 2026
1864a50
Bluetooth: mt7932: keep the controller across a deep sleep and wake f…
DjDeveloperr Nov 7, 2026
c473ad5
Bluetooth: mt7932: log what woke the host from a sleep
DjDeveloperr Nov 7, 2026
c80e6eb
usb: core: hcd: don't release root hub PHYs twice after a failed resume
DjDeveloperr Nov 7, 2026
047beb1
usb: xhci-plat: let a resume quirk say the controller lost its state
DjDeveloperr Nov 7, 2026
ee5b0b1
usb: apple: stop the USB controller and port controllers for a deep s…
DjDeveloperr Nov 7, 2026
3317bae
phy: apple: atc: take the USB controller through hibernation for a sleep
DjDeveloperr Nov 7, 2026
d1c3c02
usb: dwc3: apple: keep the host through a deep sleep
DjDeveloperr Nov 7, 2026
abaee26
usb: typec: tipd: tell the root port's controller about a USB sleep
DjDeveloperr Nov 7, 2026
cdf4563
media: apple: isp: stop and restart T8140 firmware across a deep sleep
DjDeveloperr Nov 7, 2026
c922a67
drm/apple: stop and restart the T8140 display processors for a deep s…
DjDeveloperr Nov 7, 2026
7a8f487
drm/apple: bring DCPEXT back after a sleep, and both DCPs after a ref…
DjDeveloperr Nov 7, 2026
0b0f605
phy: apple: atc: set a DisplayPort mode up again after a deep sleep
DjDeveloperr Nov 7, 2026
df4485a
drm/apple: park a Type-C display route's crossbar for a deep sleep
DjDeveloperr Nov 7, 2026
c057cca
drm/apple: take an attached external display through a deep sleep
DjDeveloperr Nov 7, 2026
177cdc3
drm/apple: keep the panel dark through a dark wake
DjDeveloperr Nov 7, 2026
5c91097
soc: apple: t8140-sleep, mfd: macsmc: take a lid closing during sleep…
DjDeveloperr Nov 7, 2026
978e9b2
soc: apple: aop: stop the endpoints for a firmware-driven suspend
DjDeveloperr Nov 7, 2026
d0d9c5f
ASoC: apple: take audio through a firmware-driven suspend
DjDeveloperr Nov 7, 2026
a082440
ASoC: apple: aop: t8140: switch the mic array's rail around each capture
DjDeveloperr Nov 7, 2026
f559a3f
soc: apple: sep: tell the enclave about a firmware-driven suspend
DjDeveloperr Nov 7, 2026
65dbbd8
soc: apple: sep: power the fingerprint sensor off for system sleep
DjDeveloperr Nov 7, 2026
4f7e92c
soc: apple: pmp: take the PMP and its report through a system sleep
DjDeveloperr Nov 7, 2026
ae8686a
dmaengine: apple-sio: take the firmware through a system sleep
DjDeveloperr Nov 7, 2026
c851559
drm/asahi: g17: restart the GPU firmware across a firmware-driven sus…
DjDeveloperr Nov 7, 2026
087adb4
soc: apple: mtp: tell the MTP about a firmware-driven suspend
DjDeveloperr Nov 7, 2026
e240fbe
accel/ane: H17: warn about ANE_SYS only if it really stayed on
DjDeveloperr Nov 7, 2026
37c379e
arm64: dts: apple: t8140: describe what suspend-to-RAM needs
DjDeveloperr Nov 7, 2026
048390e
arm64: dts: apple: t8140-j700: describe what suspend-to-RAM needs
DjDeveloperr Nov 7, 2026
cd27afb
MAINTAINERS: list the files the T8140 sleep series adds
DjDeveloperr Nov 7, 2026
02f86ca
Merge integration/aurora into feat/t8140-s2r
DjDeveloperr Nov 8, 2026
152a200
Merge integration/aurora into feat/t8140-s2r
DjDeveloperr Nov 9, 2026
e544085
Merge integration/aurora into feat/t8140-s2r
DjDeveloperr Nov 9, 2026
ef439d6
Merge integration/aurora into feat/t8140-s2r
DjDeveloperr Nov 9, 2026
02d01e7
Merge integration/aurora into feat/t8140-s2r
DjDeveloperr Nov 9, 2026
5b30b8d
Merge integration/aurora into feat/t8140-s2r
DjDeveloperr Nov 9, 2026
1a766ff
Merge branch 'integration/aurora' into feat/t8140-s2r
DjDeveloperr Nov 9, 2026
1d22e0a
tools/asahi: aop-bootargs-tests: take only the AOP's configs from aop.rs
DjDeveloperr Nov 9, 2026
5b1a671
Merge integration/aurora into feat/t8140-s2r
DjDeveloperr Nov 9, 2026
31fd6d6
Merge integration/aurora into feat/t8140-s2r
DjDeveloperr Nov 9, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
13 changes: 13 additions & 0 deletions Documentation/PCI/controller/apple-t8140.rst
Original file line number Diff line number Diff line change
Expand Up @@ -64,6 +64,19 @@ recovery remain refused. Supporting these operations requires a proven engine
teardown/reset and endpoint recovery contract first. Renaming the provider
does not qualify those operations.

Deep sleep keeps both functions bound and the radio powered, with its firmware
running. Their drivers stop for it, the link goes through L2 and PERST#, and the SoC
powers the engine off. On the way back the engine's whole register file must read as it
did before the first command, the state the bootstrap checks for; if anything differs,
the radios stay down. Only then does the retained state reopen for one more validated
read, on the same memory, which the retrained link needs before native ECAM. The
functions' configuration is then restored and their drivers resume, with no firmware
load. If a driver finds that its side didn't survive, the host removes both functions,
which resets the chip, and scans again, so that they probe and load their firmware as at
boot. If the link didn't come back, the radio's rail is cycled first. An abandoned sleep
never ran that power-off, so it replays nothing. This needs tunables
from a loader that publishes them, and is refused otherwise.

Suspend-to-idle is allowed only after radio admission, with no IRQ fault,
idle command/FIFO checks and intact arena contents. Resume restores the
configuration banks after genpd power restoration without submitting another
Expand Down
12 changes: 11 additions & 1 deletion Documentation/devicetree/bindings/display/apple,dcp.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -78,11 +78,14 @@ properties:
description: Optional host display-engine interrupt sources.

mboxes:
maxItems: 1
minItems: 1
maxItems: 2

mbox-names:
minItems: 1
items:
- const: mbox
- const: secure

iommus:
maxItems: 1
Expand Down Expand Up @@ -123,6 +126,13 @@ properties:
items:
pattern: '^(dp-phy|typec[0-9]+)$'

apple,display-power:
$ref: /schemas/types.yaml#/definitions/phandle
description:
A node whose ps, pwrgate and pmc-dcp registers hold the display power
words this coprocessor's driver writes around a firmware restart, such
as an apple,t8140-display-power node.

apple,bw-scratch:
$ref: /schemas/types.yaml#/definitions/phandle-array
items:
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
%YAML 1.2
---
$id: http://devicetree.org/schemas/display/apple,t8140-display-power.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#

title: Apple T8140 display power words

maintainers:
- Diljit Singh <hey@djdev.me>

description:
The words a display coprocessor's driver writes to power its domains off
and on around a restart of its firmware, as macOS does. A display
coprocessor names this node in its apple,display-power property. The words
belong to the power manager and the display block, so no driver binds it.

properties:
compatible:
const: apple,t8140-display-power

reg:
items:
- description: the display PMC word that counts the powered coprocessors
- description: the power manager's power state words
- description: the power manager's power gate words

reg-names:
items:
- const: pmc-dcp
- const: ps
- const: pwrgate

required:
- compatible
- reg
- reg-names

additionalProperties: false

examples:
- |
soc {
#address-cells = <2>;
#size-cells = <2>;

display-power@3028a9c14 {
compatible = "apple,t8140-display-power";
reg = <0x3 0x028a9c14 0x0 0x4>,
<0x3 0x00700000 0x0 0x14000>,
<0x3 0x00724000 0x0 0x1000>;
reg-names = "pmc-dcp", "ps", "pwrgate";
};
};
9 changes: 9 additions & 0 deletions Documentation/devicetree/bindings/dma/apple,sio.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -82,6 +82,11 @@ allOf:
reg:
minItems: 3
maxItems: 3
reg-names:
items:
- const: asc
- const: auxiliary
- const: asc-tail
else:
if:
properties:
Expand Down Expand Up @@ -137,6 +142,10 @@ properties:

status: true

reg-names:
minItems: 1
maxItems: 3

'#dma-cells':
const: 1
description:
Expand Down
7 changes: 7 additions & 0 deletions Documentation/devicetree/bindings/gpu/apple,agx.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -95,6 +95,13 @@ properties:
GFX supplier power cannot represent GPU work on firmware that keeps
its coprocessor domain powered while the cores are idle.

apple,pmp-report-entry:
$ref: /schemas/types.yaml#/definitions/phandle
description: |
PMP report entry that tells the PMP the GPU is in use. The driver withdraws
this request before it lowers the GPU's power state for a system sleep, and
makes it again after raising it.

apple,idle-off-delay-ms:
minimum: 2
maximum: 1000
Expand Down
66 changes: 64 additions & 2 deletions Documentation/devicetree/bindings/iommu/apple,dart.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -79,13 +79,15 @@ properties:
- description: DART registers
- description:
Address filter (DAPF) registers, which restrict the physical
addresses the DART lets its masters reach
addresses the DART lets its masters reach, or the slice of the
fabric filter (GAPF) that protects the power state of the
coprocessor CPU behind this DART, cleared to power that CPU down

reg-names:
minItems: 1
items:
- const: dart
- enum: [dapf, auxiliary]
- enum: [dapf, gapf, auxiliary]

interrupts:
maxItems: 1
Expand Down Expand Up @@ -117,6 +119,54 @@ properties:
may select a firmware-visible alias of the translation aperture.
A consumer may further specify its own aperture in its binding.

apple,dapf-ranges:
$ref: /schemas/types.yaml#/definitions/uint64-matrix
items:
items:
- description: First address of a range
- description: Last address of a range
description:
The address filter the loader programs into the dapf registers, one
entry per range. A sleep that reaches the hardware clears it, and the
DART writes it back before its consumer's firmware starts again.

apple,dapf-r20:
$ref: /schemas/types.yaml#/definitions/uint32-array
description:
The last word of each filter entry, one per range in apple,dapf-ranges.
1 where absent.

apple,sleep-prepare:
$ref: /schemas/types.yaml#/definitions/uint32-matrix
items:
items:
- description: Register offset
- description: Value
description:
Register writes before a consumer that gates itself is told about a
firmware-driven system suspend. Needs apple,sleep-restore.

apple,sleep-restore:
$ref: /schemas/types.yaml#/definitions/uint32-matrix
items:
items:
- description: Register offset
- description: Value
description:
Register writes after such a suspend, before the translations are put
back. With this, the consumer saves and restores the DART around the
suspend, as the order relative to its firmware's start matters.

apple,sleep-restore-late:
$ref: /schemas/types.yaml#/definitions/uint32-matrix
items:
items:
- description: Register offset
- description: Value
description:
Register writes after the translations are back and before the streams
are enabled.

apple,dma-offset:
$ref: /schemas/types.yaml#/definitions/uint64
description: >
Expand Down Expand Up @@ -158,6 +208,18 @@ properties:
Tree by the bootloader and required to initialize dynamically powered
DART instances.

apple,resume-tunable:
$ref: /schemas/types.yaml#/definitions/uint32-matrix
items:
items:
- description: Register offset
- description: Mask to be applied to the register value
- description: Bits to be set after applying the mask
description: >
The same tuples for a DART whose bootloader has already applied them,
written back where a power-off lost them, before its consumer's
firmware starts again.

apple,bypass-sids:
$ref: /schemas/types.yaml#/definitions/uint32-array
minItems: 1
Expand Down
20 changes: 18 additions & 2 deletions Documentation/devicetree/bindings/mailbox/apple,mailbox.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -76,6 +76,14 @@ properties:
AOP setup-port mailbox with a separate register layout.
const: apple,t8140-aop-setup-mailbox

- description:
A coprocessor's secure RTBuddy port, the ADT's
iop,secure-rtbuddy-proxy. It is polled, with no interrupts described.
items:
- enum:
- apple,t8140-secure-rtbuddy-proxy
- const: apple,secure-rtbuddy-proxy

- description:
An older ASC mailbox interface found on T2 and A11 that is also
used for the NVMe coprocessor and the system management
Expand Down Expand Up @@ -134,6 +142,16 @@ properties:
maxItems: 2

allOf:
- if:
not:
properties:
compatible:
contains:
const: apple,secure-rtbuddy-proxy
then:
required:
- interrupts
- interrupt-names
- if:
properties:
compatible:
Expand Down Expand Up @@ -212,8 +230,6 @@ allOf:
required:
- compatible
- reg
- interrupts
- interrupt-names
- "#mbox-cells"

additionalProperties: false
Expand Down
32 changes: 31 additions & 1 deletion Documentation/devicetree/bindings/pci/apple,pcie.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -175,6 +175,30 @@ properties:
$ref: '#/$defs/tunable'
description: Initialization tuples for the oe-fabric register region.

apple,tunable-axi2af:
$ref: '#/$defs/tunable'
description: Initialization tuples for the shared PHY block's AXI bridge.

apple,tunable-cio3pll:
$ref: '#/$defs/tunable'
description: Initialization tuples for the shared PHY block's PLL.

apple,tunable-clkgen:
$ref: '#/$defs/tunable'
description: Initialization tuples for the shared PHY block's clock generator.

apple,tunable-phy:
$ref: '#/$defs/tunable'
description: Initialization tuples for the shared PHY block.

apple,tunable-phy-ip-pll:
$ref: '#/$defs/tunable'
description: PLL settings of the shared PHY, relative to its phy-ip registers.

apple,tunable-phy-ip-auspma:
$ref: '#/$defs/tunable'
description: Lane settings of the shared PHY, relative to its phy-ip registers.

apple,piodma:
$ref: /schemas/types.yaml#/definitions/phandle
description:
Expand Down Expand Up @@ -420,8 +444,9 @@ allOf:
properties:
reg:
minItems: 8
maxItems: 8
maxItems: 13
reg-names:
minItems: 8
items:
- const: config
- const: rc
Expand All @@ -431,6 +456,11 @@ allOf:
- const: phy0
- const: phy1
- const: phy2
- const: axi2af
- const: cio3pll
- const: clkgen
- const: phy-block
- const: phy-ip
interrupts:
maxItems: 3
else:
Expand Down
5 changes: 5 additions & 0 deletions Documentation/devicetree/bindings/phy/apple,atcphy.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -125,6 +125,10 @@ allOf:
- description: USB2 PHY specific controls
- description: USB3 PIPE interface controls
- description: Secondary eUSB2 PHY register bank (T8140)
- description:
Power and hibernation control of the USB controller the PHY
serves (T8140). The PHY drives that controller's reset and
takes it through hibernation for a system sleep.
reg-names:
minItems: 5
items:
Expand All @@ -134,6 +138,7 @@ allOf:
- const: usb2phy
- const: pipehandler
- const: usb2phy-reg
- const: pwrctl
required:
- power-domains
- if:
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@ allOf:
properties:
apple,firmware-owned: false
apple,sleep-retained: false
apple,sleep-driver-owned: false
apple,always-on: false
apple,min-state: false
apple,force-disable: false
Expand Down Expand Up @@ -135,6 +136,13 @@ properties:
system sleep. Runtime power management is unaffected.
type: boolean

apple,sleep-driver-owned:
description:
The driver behind this domain lowers it before a system sleep and brings
it back afterwards, in an order its hardware needs. The power controller
leaves it alone after a wake.
type: boolean

apple,firmware-owned:
description:
The boot loader hands over active hardware whose power domain remains
Expand Down
Loading
Loading