lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<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

Powered by Openwall GNU/*/Linux Powered by OpenVZ