[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-Id: <20250721023052.3586000-10-ew.kim@samsung.com>
Date: Mon, 21 Jul 2025 11:30:52 +0900
From: ew kim <ew.kim@...sung.com>
To: broonie@...nel.org, s.nawrocki@...sung.com, robh@...nel.org,
krzk+dt@...nel.org
Cc: lgirdwood@...il.com, tiwai@...e.com, perex@...ex.cz,
conor+dt@...nel.org, alim.akhtar@...sung.com, linux-sound@...r.kernel.org,
devicetree@...r.kernel.org, linux-arm-kernel@...ts.infradead.org,
linux-samsung-soc@...r.kernel.org, linux-kernel@...r.kernel.org, ew kim
<ew.kim@...sung.com>
Subject: [PATCH 9/9] ASoC: dt-bindings: sound: exynosauto: add PCM frontend
nodes for ABOX generic
This patch extends the Exynos Automotive ABOX generic device tree bindings
to support PCM playback and capture frontend nodes.
Each PCM device node describes an audio stream interface handled by the
ABOX DSP. These nodes include properties for stream ID, IRQ, ADSP core
assignment, buffer limits, and stream category (deep_buffer or compress).
The bindings use patternProperties to match playback and capture nodes
as children of the abox_generic controller.
Signed-off-by: ew kim <ew.kim@...sung.com>
---
.../bindings/sound/samsung,exynosauto.yaml | 126 +++++++++++++++++-
1 file changed, 123 insertions(+), 3 deletions(-)
diff --git a/Documentation/devicetree/bindings/sound/samsung,exynosauto.yaml b/Documentation/devicetree/bindings/sound/samsung,exynosauto.yaml
index 3a7b5be627ee..e477550afc7c 100644
--- a/Documentation/devicetree/bindings/sound/samsung,exynosauto.yaml
+++ b/Documentation/devicetree/bindings/sound/samsung,exynosauto.yaml
@@ -28,6 +28,14 @@ properties:
compatible:
const: samsung,abox_generic
+ status:
+ enum: [ okay, disabled ]
+ description: DTS node enablement state
+
+ $nodename:
+ pattern: "^abox_generic$"
+ description: Node name must be 'abox_generic'
+
samsung,num-pcm-playback:
description: Maximum number of PCM playback instances (ALSA PCM devices).
$ref: /schemas/types.yaml#/definitions/uint32
@@ -42,7 +50,7 @@ properties:
'#address-cells':
description: Required for child nodes that may declare address space.
- const: 2
+ const: 1
'#size-cells':
description: Required for child nodes that may declare address space.
@@ -55,6 +63,10 @@ properties:
compatible:
const: samsung,abox_ipc_generic
+ status:
+ enum: [ okay, disabled ]
+ description: DTS node enablement state
+
samsung,num-irq:
$ref: /schemas/types.yaml#/definitions/uint32
description: Number of IRQ channels supported for IPC routing.
@@ -65,13 +77,92 @@ properties:
additionalProperties: false
+patternProperties:
+ "^abox_pcm_(playback|capture)@[0-9a-f]+$":
+ type: object
+ description: |
+ ABOX PCM playback or capture frontend device node. These nodes define
+ individual PCM streams used by the audio subsystem, and are children of
+ the abox_generic controller. Each node describes a PCM stream ID, IRQ line,
+ ADSP core allocation, and stream-specific parameters.
+
+ properties:
+ compatible:
+ enum:
+ - samsung,abox-pcm-playback
+ - samsung,abox-pcm-capture
+ description: Compatible string for PCM playback or capture device.
+
+ reg:
+ maxItems: 1
+ description: Offset for pointer register (pp_pointer_offset) used for communication with ADSP.
+
+ reg-names:
+ const: pp_pointer_offset
+
+ samsung,id:
+ $ref: /schemas/types.yaml#/definitions/uint32
+ description: |
+ Unique ID per PCM Device, separated by stream type (playback or capture).
+ Must be less than samsung,num-of-pcm_playback or samsung,num-of-pcm_capture
+ defined in the abox_generic node.
+
+ samsung,irq_id:
+ $ref: /schemas/types.yaml#/definitions/uint32
+ description: |
+ Software IRQ ID assigned in the control domain. Represents the software interrupt
+ line used by the ADSP to communicate with this PCM device.
+
+ samsung,allocate-adsp:
+ $ref: /schemas/types.yaml#/definitions/uint32
+ description: |
+ Index of the ADSP core that this PCM device is allocated to. Indicates on which core
+ the stream is handled.
+
+ sound-name-prefix:
+ $ref: /schemas/types.yaml#/definitions/string
+ description: |
+ Prefix name for ALSA DAI interface. Helps to namespace controls and routing.
+
+ samsung,category:
+ enum: [deep_buffer, compress]
+ description: |
+ Type of the PCM stream. Can be either 'deep_buffer' for normal PCM playback/capture,
+ or 'compress' for compressed offload streams.
+
+ samsung,buffer_bytes_max:
+ $ref: /schemas/types.yaml#/definitions/uint32
+ description: |
+ Maximum size (in bytes) of the DMA buffer allocated for this PCM device.
+
+ '#sound-dai-cells':
+ const: 0
+ description: Must be 0. Required by ALSA SoC bindings.
+
+ status:
+ enum: [ okay, disabled ]
+ description: Device node enablement status. Set to "okay" to activate the node.
+
+ required:
+ - compatible
+ - reg
+ - reg-names
+ - samsung,id
+ - samsung,irq_id
+ - samsung,allocate-adsp
+ - samsung,category
+ - samsung,buffer_bytes_max
+ - '#sound-dai-cells'
+
+ additionalProperties: true
+
required:
- compatible
- samsung,num-pcm-playback
- samsung,num-pcm-capture
- samsung,num-i2s-dummy-backend
-additionalProperties: false
+unevaluatedProperties: false
examples:
- |
@@ -81,7 +172,7 @@ examples:
samsung,num-pcm-capture = <32>;
samsung,num-i2s-dummy-backend = <5>;
status = "disabled";
- #address-cells = <2>;
+ #address-cells = <1>;
#size-cells = <1>;
abox_ipc_generic {
@@ -89,4 +180,33 @@ examples:
samsung,num-irq = <64>;
status = "disabled";
};
+
+ abox_pcm_playback@...0000 {
+ compatible = "samsung,abox-pcm-playback";
+ samsung,id = <0>;
+ samsung,irq_id = <0>;
+ samsung,allocate-adsp = <0>;
+ reg = <0x3fd0000 0x10>;
+ reg-names = "pp_pointer_offset";
+ #sound-dai-cells = <0>;
+ sound-name-prefix = "ABOX";
+ samsung,category = "deep_buffer";
+ samsung,buffer_bytes_max = <0x24000>;
+ status = "disabled";
+ };
+
+ abox_pcm_capture@...0400 {
+ compatible = "samsung,abox-pcm-capture";
+ samsung,id = <0>;
+ samsung,irq_id = <32>;
+ samsung,allocate-adsp = <0>;
+ reg = <0x3fd0400 0x10>;
+ reg-names = "pp_pointer_offset";
+ #sound-dai-cells = <0>;
+ sound-name-prefix = "ABOX";
+ samsung,category = "deep_buffer";
+ samsung,buffer_bytes_max = <0x24000>;
+ status = "disabled";
+ };
};
+
--
2.25.1
Powered by blists - more mailing lists