ASoC: dt-bindings: add TDM slot idle mode properties

Add properties to describe TDM slot idle behaviour. These properties can
be used to describe how a DAI is supposed to behave when not active.

For example, Apple Silicon laptops split a single I2S bus between two
physical lines which are combined at an OR gate in front of the
receiving port. One codec on each line is expected to transmit zeroes
during the active TDM slots of the opposite line, or we will have corrupted
data at the receiver.

Signed-off-by: James Calligeros <jcalligeros99@gmail.com>
Reviewed-by: Rob Herring (Arm) <robh@kernel.org>
Link: https://patch.msgid.link/20260301-tdm-idle-slots-v3-3-c6ac5351489a@gmail.com
Signed-off-by: Mark Brown <broonie@kernel.org>
This commit is contained in:
James Calligeros 2026-03-01 18:05:22 +10:00 committed by Mark Brown
parent cc74890fb4
commit 938c1ed56a
No known key found for this signature in database
GPG Key ID: 24D68B725D5487D0

View File

@ -20,6 +20,20 @@ properties:
$ref: /schemas/types.yaml#/definitions/uint32
description: Width, in bits, of each slot
dai-tdm-idle-mode:
$ref: /schemas/types.yaml#/definitions/string
enum:
- none
- off
- zero
- pulldown
- hiz
- pullup
- drivehigh
description: Drive mode for inactive/idle TDM slots. For hardware that
implements .set_tdm_idle(). Optional. "None" represents undefined
behaviour and is the same as not setting this property.
patternProperties:
'^dai-tdm-slot-[rt]x-mask$':
$ref: /schemas/types.yaml#/definitions/uint32-array
@ -30,4 +44,9 @@ patternProperties:
a mask. The first element of the array is slot 0 (LSB). Any nonzero
value will be treated as 1.
'^dai-tdm-slot-[rt]x-idle-mask$':
$ref: /schemas/types.yaml#/definitions/uint32
description: Idle slot mask. Optional. A bit being set to 1 indicates
that the corresponding TDM slot is inactive/idle.
additionalProperties: true