Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
21 commits
Select commit Hold shift + click to select a range
aedb185
dt-bindings: soc: apple: Add the T6040 AOP
jgoyvaerts Oct 20, 2026
6cbab00
ASoC: dt-bindings: Add the Apple T6041 AOP audio
jgoyvaerts Oct 22, 2026
e82a608
soc: apple: aop: Add T6040 support
jgoyvaerts Oct 14, 2026
321d01c
soc: apple: aop: Bounds-check the boot argument table
jgoyvaerts Oct 14, 2026
550904d
iio: aop_als: make the calibration blob optional
jgoyvaerts Oct 14, 2026
1b23db2
ASoC: apple: aop_audio: fix the PCM open/close error and teardown paths
jgoyvaerts Oct 14, 2026
2ba1e89
ASoC: apple: aop_audio: configure the T6040 microphones as macOS does
jgoyvaerts Oct 14, 2026
e6e073d
ASoC: dt-bindings: ti,tas27xx: Add SDZ-supply and an SDZ fault group
jgoyvaerts Oct 20, 2026
e5c4c76
ASoC: tas2764: keep SDZ high across system sleep
jgoyvaerts Oct 21, 2026
4b80581
ASoC: tas2764: shut a whole SDZ group down on an amp fault
jgoyvaerts Oct 18, 2026
4925bbe
ASoC: dt-bindings: apple,macaudio: Add the J616s
jgoyvaerts Oct 22, 2026
634aa37
ASoC: apple: aop_audio: add the J616s speaker streams
jgoyvaerts Oct 22, 2026
6b41ce7
ASoC: macaudio: fail closed when a speaker volume lock does not take
jgoyvaerts Oct 18, 2026
1cbce20
ASoC: apple: macaudio: lock the speaker volumes before userspace freezes
jgoyvaerts Oct 22, 2026
1ace6c6
ASoC: macaudio: add the J616s speakers on the AOP audio component
jgoyvaerts Oct 18, 2026
cbfb4d2
ASoC: dt-bindings: apple,macaudio: Add the J616s headphone jack card
jgoyvaerts Oct 22, 2026
26a40c3
ASoC: cs42l84: support DSP_A pulse frames
jgoyvaerts Oct 21, 2026
29214cd
ASoC: apple: aop_spkr: add the J616s headphone jack streams
jgoyvaerts Oct 22, 2026
6156ff6
ASoC: macaudio: give each card its own jack pins
jgoyvaerts Oct 23, 2026
89e37ed
ASoC: macaudio: add the J616s headphone jack card
jgoyvaerts Oct 22, 2026
b7ab2c5
ASoC: macaudio: cap the J616s headphone volume at -6 dB
jgoyvaerts Oct 22, 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
117 changes: 117 additions & 0 deletions Documentation/devicetree/bindings/soc/apple/apple,t6041-aop.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,117 @@
# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
%YAML 1.2
---
$id: http://devicetree.org/schemas/soc/apple/apple,t6041-aop.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#

title: Apple T604x Always-On Processor

maintainers:
- Jonathan Goyvaerts <jonathan.goyvaerts@gmail.com>

description:
The Always-On Processor provides audio and sensor services through firmware
loaded by the bootloader. The application processor patches the firmware's
boot arguments in the AOP SRAM, starts it through RTKit over one mailbox and
reaches its services through the RTKit endpoints. The bootloader reserves
the firmware's external code and log segments as /reserved-memory nodes
named aop-etext and aop-oslog; no mapping of them survives the reset of the
AOP's DART, so the operating system maps them again before the start.

properties:
compatible:
const: apple,t6041-aop

reg:
minItems: 2
items:
- description: AOP SRAM, holding the boot-argument table
- description: ASC wrapper and processor control registers
- description: Second ASC register window
- description: AOP configuration registers

reg-names:
minItems: 2
items:
- const: firmware
- const: asc
- const: asc-aux
- const: config

mboxes:
maxItems: 1

mbox-names:
const: mbox

iommus:
maxItems: 1

audio:
type: object
$ref: /schemas/sound/apple,t6041-aop-audio.yaml#
description: The audio service.

als:
type: object
description: The ambient light sensor service.
additionalProperties: false

properties:
compatible:
items:
- const: apple,t6041-aop-als
- const: apple,aop-als

required:
- compatible

las:
type: object
description: The lid angle sensor service.
additionalProperties: false

properties:
compatible:
items:
- const: apple,t6041-aop-las
- const: apple,aop-las

required:
- compatible

required:
- compatible
- reg
- mboxes
- mbox-names
- iommus

additionalProperties: false

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

aop@510c10000 {
compatible = "apple,t6041-aop";
reg = <0x5 0x10c10000 0x0 0x2e0000>,
<0x5 0x10600000 0x0 0x88000>,
<0x5 0x10050000 0x0 0x4000>,
<0x5 0x08328000 0x0 0x24>;
reg-names = "firmware", "asc", "asc-aux", "config";
mboxes = <&aop_mbox>;
mbox-names = "mbox";
iommus = <&aop_dart 0>;

als {
compatible = "apple,t6041-aop-als", "apple,aop-als";
};

las {
compatible = "apple,t6041-aop-las", "apple,aop-las";
};
};
};
2 changes: 2 additions & 0 deletions Documentation/devicetree/bindings/sound/apple,macaudio.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,8 @@ properties:
- apple,j274-macaudio
- apple,j293-macaudio
- apple,j314-macaudio
- apple,j616-macaudio
- apple,j616-macaudio-jack
- apple,j700-macaudio
- const: apple,macaudio

Expand Down
92 changes: 92 additions & 0 deletions Documentation/devicetree/bindings/sound/apple,t6041-aop-audio.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,92 @@
# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
%YAML 1.2
---
$id: http://devicetree.org/schemas/sound/apple,t6041-aop-audio.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#

title: Apple T6041 AOP audio

maintainers:
- Jonathan Goyvaerts <jonathan.goyvaerts@gmail.com>

description: |
The Always-On Processor on Apple T6041 SoCs runs the machine's audio
streams in its firmware: the microphone array, the internal speakers with
their voltage and current sense, and the 3.5 mm headset jack in both
directions. This node is a child of the AOP node and names the ADMAC
channels the host moves each stream's data over while the firmware runs
its serializer. The parent AOP binding describes the firmware transport.

The headset jack's channels are optional: a node without them has no jack
streams.

allOf:
- $ref: dai-common.yaml#

properties:
compatible:
items:
- const: apple,t6041-aop-audio
- const: apple,t6030-aop-audio

dmas:
minItems: 3
items:
- description: Microphone array input
- description: Internal speaker output
- description: Speaker voltage and current sense input
- description: Headset jack output
- description: Headset microphone input

dma-names:
minItems: 3
items:
- const: dma
- const: spkr
- const: sense
- const: cout
- const: cin

"#sound-dai-cells":
const: 1
description: |
AOP audio DAI identifier:
0, 1, 2 - the speaker card's front-ends: unused, the speakers and
their sense
3 - the internal speaker back-end
4 - the headset jack back-end

apple,chassis-name:
$ref: /schemas/types.yaml#/definitions/string
description:
Chassis identifier used to name the microphone sound card.

apple,machine-kind:
$ref: /schemas/types.yaml#/definitions/string
description:
Human-readable machine name used in the microphone sound card's
description.

required:
- compatible
- dmas
- dma-names
- "#sound-dai-cells"
- apple,chassis-name
- apple,machine-kind

unevaluatedProperties: false

examples:
- |
aop {
audio {
compatible = "apple,t6041-aop-audio", "apple,t6030-aop-audio";
apple,chassis-name = "J616";
apple,machine-kind = "MacBook Pro";
dmas = <&admac0 1>, <&admac1 0>, <&admac1 1>,
<&admac1 4>, <&admac1 5>;
dma-names = "dma", "spkr", "sense", "cout", "cin";
#sound-dai-cells = <1>;
};
};
24 changes: 24 additions & 0 deletions Documentation/devicetree/bindings/sound/ti,tas27xx.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,12 @@ description: |

allOf:
- $ref: dai-common.yaml#
- if:
required:
- apple,sdz-group-fail-closed
then:
properties:
shutdown-gpios: false

properties:
compatible:
Expand All @@ -42,6 +48,20 @@ properties:
interrupts:
maxItems: 1

SDZ-supply:
description:
Regulator that drives the SDZ (shutdown) pin, an alternative to
shutdown-gpios for a line that several amplifiers share.

apple,sdz-group-fail-closed:
type: boolean
description:
The amplifier belongs to the group of amplifiers that share its
SDZ-supply. An over-temperature or over-current fault on any member
turns the shared supply off, which shuts every amplifier of the group
down, and no member enables it again until the driver is reloaded.
A member needs its fault interrupt.

ti,imon-slot-no:
$ref: /schemas/types.yaml#/definitions/uint32
description: TDM TX current sense time slot.
Expand All @@ -59,6 +79,10 @@ required:
- compatible
- reg

dependencies:
apple,sdz-group-fail-closed:
- SDZ-supply

unevaluatedProperties: false

examples:
Expand Down
2 changes: 2 additions & 0 deletions MAINTAINERS
Original file line number Diff line number Diff line change
Expand Up @@ -2101,8 +2101,10 @@ F: Documentation/devicetree/bindings/rtc/apple,j700-pmu-rtc.yaml
F: Documentation/devicetree/bindings/serial/apple,dockchannel-uart.yaml
F: Documentation/devicetree/bindings/soc/apple/apple,dockchannel.yaml
F: Documentation/devicetree/bindings/soc/apple/apple,rtk-helper-asc4.yaml
F: Documentation/devicetree/bindings/soc/apple/apple,t6041-aop.yaml
F: Documentation/devicetree/bindings/soc/apple/apple,t8140-aop.yaml
F: Documentation/devicetree/bindings/soc/apple/apple,t8140-mcc.yaml
F: Documentation/devicetree/bindings/sound/apple,t6041-aop-audio.yaml
F: Documentation/devicetree/bindings/sound/apple,t8140-aop-audio.yaml
F: Documentation/devicetree/bindings/usb/vialab,vl122.yaml
F: Documentation/gpu/apple-dcp-backlight.rst
Expand Down
14 changes: 12 additions & 2 deletions drivers/iio/common/aop_sensors/aop_als.rs
Original file line number Diff line number Diff line change
Expand Up @@ -72,8 +72,18 @@ fn enable_als(
offset: usize,
) -> Result<()> {
if offset != LUX_OFFSET_CT817 {
let fw = Firmware::request(c_str!("apple/aop-als-cal.bin"), dev.as_ref())?;
set_als_property(aop, svc, ALS_PROP_CALIBRATION, fw.data())?;
// The calibration blob comes from macOS and is not installed on every
// system. Without it the sensor still reports, uncalibrated.
match Firmware::request(c_str!("apple/aop-als-cal.bin"), dev.as_ref()) {
Ok(fw) => {
set_als_property(aop, svc, ALS_PROP_CALIBRATION, fw.data())?;
}
Err(e) => dev_warn!(
dev.as_ref(),
"no calibration ({:?}); readings are uncalibrated\n",
e
),
}
set_als_property(aop, svc, ALS_PROP_INTERVAL, &ALS_INTERVAL_US.to_le_bytes())?;
return Ok(());
}
Expand Down
Loading