<feed xmlns='http://www.w3.org/2005/Atom'>
<title>linux-toradex.git/Documentation/devicetree/bindings/sound, branch master</title>
<subtitle>Linux kernel for Apalis and Colibri modules</subtitle>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/'/>
<entry>
<title>Merge tag 'devicetree-for-7.4' of git://git.kernel.org/pub/scm/linux/kernel/git/robh/linux</title>
<updated>2026-10-25T06:11:23+00:00</updated>
<author>
<name>Linus Torvalds</name>
<email>torvalds@linux-foundation.org</email>
</author>
<published>2026-10-25T06:11:23+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=21a7f44fd0765fcc5194130b28767786eba1d1e7'/>
<id>21a7f44fd0765fcc5194130b28767786eba1d1e7</id>
<content type='text'>
Pull devicetree updates from Rob Herring:

 - A bunch of improvements in dt-check-style. Fix various bindings based
   on these additional checks.

 - Convert hisilicon,hix5hd2-ir, hisilicon,hi6220-ade,
   hisilicon,hi6220-dsi, hisilicon,hip05-sas-v1, MediaTek RT5650 codecs,
   mediatek,g3dsys, mediatek,mt2701-scpsys, ti,omap-mpu, and
   ti,omap-ocp2scp to DT schema format

 - Add schemas for ST STM32MP2 DWC3 xHCI USB, ST STM32MP25 USB2-FEMTO
   PHY, spacemit,k1-gpu and spacemit,k3-gpu, HiSilicon local bus,
   HiSilicon HIP05 CPLD, SDMC DM2016, and QCom SM7250 and Kuno PDC

 - Various binding updates to fix schema warnings in .dts files

 - Drop obsolete .txt bindings for STM32(MP1) RCC, VExpress hwmon and
   regulator, and mailbox.txt

 - Remove the unused of_overlay_remove_all() function

 - Fixes for of_check_msi_parent()

 - Add "i2c-parent" tracking to fw_devlink

* tag 'devicetree-for-7.4' of git://git.kernel.org/pub/scm/linux/kernel/git/robh/linux: (72 commits)
  dt-bindings: usb: dwc3: Document ST STM32MP2 DWC3 xHCI USB controller
  dt-bindings: iommu: Describe MT8195 infra IRQs
  dt-bindings: clock: mediatek: Add MT8516 fallbacks
  dt-bindings: media: Convert hisilicon,hix5hd2-ir to DT schema
  dt-bindings: display: Convert hisilicon,hi6220-ade to DT schema
  dt-bindings: display: Convert hisilicon,hi6220-dsi to DT schema
  dt-bindings: phy: Document ST STM32MP25 USB2-FEMTO PHY
  of: overlay: remove unused of_overlay_remove_all()
  dt-bindings: power: Convert mediatek,mt2701-scpsys to DT schema
  dt-bindings: bus: Add HiSilicon local bus
  dt-bindings: gpu: img,powervr-rogue: add spacemit,k1-gpu and spacemit,k3-gpu
  dt-bindings: interrupt-controller: qcom,pdc: Document SM7250 PDC
  dt-bindings: vendor-prefixes: add Ambarella
  dt-bindings: reset: Drop obsolete STM32(MP1) RCC bindings
  dt-bindings: arm: keystone: ti,sci: Correct reg and mboxes constraints
  dt-bindings: ASoC: Convert MediaTek RT5650 codecs bindings to DT schema
  dt-bindings: scsi: Convert hisilicon,hip05-sas-v1 to DT schema
  of/irq: Stop the MSI walk at the first msi-parent
  of/irq: Fix device node refcount leak in of_check_msi_parent()
  dt-bindings: display: faraday,tve200: Use a level-high interrupt
  ...
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Pull devicetree updates from Rob Herring:

 - A bunch of improvements in dt-check-style. Fix various bindings based
   on these additional checks.

 - Convert hisilicon,hix5hd2-ir, hisilicon,hi6220-ade,
   hisilicon,hi6220-dsi, hisilicon,hip05-sas-v1, MediaTek RT5650 codecs,
   mediatek,g3dsys, mediatek,mt2701-scpsys, ti,omap-mpu, and
   ti,omap-ocp2scp to DT schema format

 - Add schemas for ST STM32MP2 DWC3 xHCI USB, ST STM32MP25 USB2-FEMTO
   PHY, spacemit,k1-gpu and spacemit,k3-gpu, HiSilicon local bus,
   HiSilicon HIP05 CPLD, SDMC DM2016, and QCom SM7250 and Kuno PDC

 - Various binding updates to fix schema warnings in .dts files

 - Drop obsolete .txt bindings for STM32(MP1) RCC, VExpress hwmon and
   regulator, and mailbox.txt

 - Remove the unused of_overlay_remove_all() function

 - Fixes for of_check_msi_parent()

 - Add "i2c-parent" tracking to fw_devlink

* tag 'devicetree-for-7.4' of git://git.kernel.org/pub/scm/linux/kernel/git/robh/linux: (72 commits)
  dt-bindings: usb: dwc3: Document ST STM32MP2 DWC3 xHCI USB controller
  dt-bindings: iommu: Describe MT8195 infra IRQs
  dt-bindings: clock: mediatek: Add MT8516 fallbacks
  dt-bindings: media: Convert hisilicon,hix5hd2-ir to DT schema
  dt-bindings: display: Convert hisilicon,hi6220-ade to DT schema
  dt-bindings: display: Convert hisilicon,hi6220-dsi to DT schema
  dt-bindings: phy: Document ST STM32MP25 USB2-FEMTO PHY
  of: overlay: remove unused of_overlay_remove_all()
  dt-bindings: power: Convert mediatek,mt2701-scpsys to DT schema
  dt-bindings: bus: Add HiSilicon local bus
  dt-bindings: gpu: img,powervr-rogue: add spacemit,k1-gpu and spacemit,k3-gpu
  dt-bindings: interrupt-controller: qcom,pdc: Document SM7250 PDC
  dt-bindings: vendor-prefixes: add Ambarella
  dt-bindings: reset: Drop obsolete STM32(MP1) RCC bindings
  dt-bindings: arm: keystone: ti,sci: Correct reg and mboxes constraints
  dt-bindings: ASoC: Convert MediaTek RT5650 codecs bindings to DT schema
  dt-bindings: scsi: Convert hisilicon,hip05-sas-v1 to DT schema
  of/irq: Stop the MSI walk at the first msi-parent
  of/irq: Fix device node refcount leak in of_check_msi_parent()
  dt-bindings: display: faraday,tve200: Use a level-high interrupt
  ...
</pre>
</div>
</content>
</entry>
<entry>
<title>ASoC: qcom: Add Nord audio support</title>
<updated>2026-10-16T21:20:58+00:00</updated>
<author>
<name>Mark Brown</name>
<email>broonie@kernel.org</email>
</author>
<published>2026-10-16T21:17:17+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=2d26ecb9830e3d2f9b6c853054cd16e1a1e8e6d4'/>
<id>2d26ecb9830e3d2f9b6c853054cd16e1a1e8e6d4</id>
<content type='text'>
Mohammad Rafi Shaik &lt;mohammad.rafi.shaik@oss.qualcomm.com&gt; says:

This series adds audio support for the Qualcomm Nord Ride and
RRD boards and includes the required machine driver, device tree
binding updates, and codec improvements needed for the board's
external audio codec configuration.

Nord Ride uses a PCM1681 DAC for playback and an ADAU1979 ADC for capture.
Compared to other SC8280XP based platforms, Nord Ride requires
board-specific DAI format and codec clock configuration to support
the external PCM1681 DAC and ADAU1979 ADC.

Link: https://patch.msgid.link/20261009-nord-asoc-driver-support-v3-v3-0-0c1897f21ccf@oss.qualcomm.com
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Mohammad Rafi Shaik &lt;mohammad.rafi.shaik@oss.qualcomm.com&gt; says:

This series adds audio support for the Qualcomm Nord Ride and
RRD boards and includes the required machine driver, device tree
binding updates, and codec improvements needed for the board's
external audio codec configuration.

Nord Ride uses a PCM1681 DAC for playback and an ADAU1979 ADC for capture.
Compared to other SC8280XP based platforms, Nord Ride requires
board-specific DAI format and codec clock configuration to support
the external PCM1681 DAC and ADAU1979 ADC.

Link: https://patch.msgid.link/20261009-nord-asoc-driver-support-v3-v3-0-0c1897f21ccf@oss.qualcomm.com
</pre>
</div>
</content>
</entry>
<entry>
<title>ASoC: dt-bindings: qcom,sm8250: Add Nord sound card</title>
<updated>2026-10-16T21:16:25+00:00</updated>
<author>
<name>Mohammad Rafi Shaik</name>
<email>mohammad.rafi.shaik@oss.qualcomm.com</email>
</author>
<published>2026-10-09T13:12:52+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=22a72cf1d60c55e5cd3d03fcfdb5a92af0dc590e'/>
<id>22a72cf1d60c55e5cd3d03fcfdb5a92af0dc590e</id>
<content type='text'>
Document the bindings for the Qualcomm Nord sound card.

The bindings are the same as for other newer Qualcomm ADSP
sound cards, thus keep them in existing qcom,sm8250.yaml file.

Acked-by: Rob Herring (Arm) &lt;robh@kernel.org&gt;
Signed-off-by: Mohammad Rafi Shaik &lt;mohammad.rafi.shaik@oss.qualcomm.com&gt;
Link: https://patch.msgid.link/20261009-nord-asoc-driver-support-v3-v3-6-0c1897f21ccf@oss.qualcomm.com
Signed-off-by: Mark Brown &lt;broonie@kernel.org&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Document the bindings for the Qualcomm Nord sound card.

The bindings are the same as for other newer Qualcomm ADSP
sound cards, thus keep them in existing qcom,sm8250.yaml file.

Acked-by: Rob Herring (Arm) &lt;robh@kernel.org&gt;
Signed-off-by: Mohammad Rafi Shaik &lt;mohammad.rafi.shaik@oss.qualcomm.com&gt;
Link: https://patch.msgid.link/20261009-nord-asoc-driver-support-v3-v3-6-0c1897f21ccf@oss.qualcomm.com
Signed-off-by: Mark Brown &lt;broonie@kernel.org&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>ASoC: dt-bindings: ti,pcm1681: Document the PCM1681 supplies</title>
<updated>2026-10-16T21:16:24+00:00</updated>
<author>
<name>Shawn Guo</name>
<email>shengchao.guo@oss.qualcomm.com</email>
</author>
<published>2026-10-09T13:12:50+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=f5f5bfcecf65a2a20ed391490b31ac7f6008a5be'/>
<id>f5f5bfcecf65a2a20ed391490b31ac7f6008a5be</id>
<content type='text'>
The PCM1681 takes a 5V analog supply on VCC1 and VCC2 and a 3.3V
digital supply on VDD. On boards where these rails are switchable, the
codec has to know about them to be able to power the DAC up and down,
which needs a way to describe the connections in Device Tree.

Document the VCC1, VCC2 and VDD supply properties.

Signed-off-by: Shawn Guo &lt;shengchao.guo@oss.qualcomm.com&gt;
Signed-off-by: Mohammad Rafi Shaik &lt;mohammad.rafi.shaik@oss.qualcomm.com&gt;
Link: https://patch.msgid.link/20261009-nord-asoc-driver-support-v3-v3-4-0c1897f21ccf@oss.qualcomm.com
Signed-off-by: Mark Brown &lt;broonie@kernel.org&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
The PCM1681 takes a 5V analog supply on VCC1 and VCC2 and a 3.3V
digital supply on VDD. On boards where these rails are switchable, the
codec has to know about them to be able to power the DAC up and down,
which needs a way to describe the connections in Device Tree.

Document the VCC1, VCC2 and VDD supply properties.

Signed-off-by: Shawn Guo &lt;shengchao.guo@oss.qualcomm.com&gt;
Signed-off-by: Mohammad Rafi Shaik &lt;mohammad.rafi.shaik@oss.qualcomm.com&gt;
Link: https://patch.msgid.link/20261009-nord-asoc-driver-support-v3-v3-4-0c1897f21ccf@oss.qualcomm.com
Signed-off-by: Mark Brown &lt;broonie@kernel.org&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>ASoC: dt-bindings: ti,pcm1681: Document the optional SCK clock</title>
<updated>2026-10-16T21:16:24+00:00</updated>
<author>
<name>Mohammad Rafi Shaik</name>
<email>mohammad.rafi.shaik@oss.qualcomm.com</email>
</author>
<published>2026-10-09T13:12:47+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=8855a9319c18d46db02ddbd11960a30436e642f5'/>
<id>8855a9319c18d46db02ddbd11960a30436e642f5</id>
<content type='text'>
The PCM1681 can use an external system clock supplied on the SCK input
pin. Platforms that provide this clock need a way to describe the clock
connection in Device Tree.

Document the optional 'clocks' and 'clock-names' properties and define
the clock name as "sck" to represent the external system clock source.

This allows boards using an externally supplied SCK clock to accurately
describe the hardware configuration.

Reviewed-by: Shawn Guo &lt;shengchao.guo@oss.qualcomm.com&gt;
Signed-off-by: Mohammad Rafi Shaik &lt;mohammad.rafi.shaik@oss.qualcomm.com&gt;
Link: https://patch.msgid.link/20261009-nord-asoc-driver-support-v3-v3-1-0c1897f21ccf@oss.qualcomm.com
Signed-off-by: Mark Brown &lt;broonie@kernel.org&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
The PCM1681 can use an external system clock supplied on the SCK input
pin. Platforms that provide this clock need a way to describe the clock
connection in Device Tree.

Document the optional 'clocks' and 'clock-names' properties and define
the clock name as "sck" to represent the external system clock source.

This allows boards using an externally supplied SCK clock to accurately
describe the hardware configuration.

Reviewed-by: Shawn Guo &lt;shengchao.guo@oss.qualcomm.com&gt;
Signed-off-by: Mohammad Rafi Shaik &lt;mohammad.rafi.shaik@oss.qualcomm.com&gt;
Link: https://patch.msgid.link/20261009-nord-asoc-driver-support-v3-v3-1-0c1897f21ccf@oss.qualcomm.com
Signed-off-by: Mark Brown &lt;broonie@kernel.org&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>ASoC: dt-bindings: qcom,sm8250: Add Motorola Edge 30 sound card</title>
<updated>2026-10-16T21:15:08+00:00</updated>
<author>
<name>Val Packett</name>
<email>val@packett.cool</email>
</author>
<published>2026-10-16T07:31:51+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=a0f1887655af52892e4a9447f9434f286a7bce48'/>
<id>a0f1887655af52892e4a9447f9434f286a7bce48</id>
<content type='text'>
Document the bindings for the sound card on motorola-dubai which uses the
Elite DSP architecture.

Signed-off-by: Val Packett &lt;val@packett.cool&gt;
Link: https://patch.msgid.link/20261016073157.611956-4-val@packett.cool
Signed-off-by: Mark Brown &lt;broonie@kernel.org&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Document the bindings for the sound card on motorola-dubai which uses the
Elite DSP architecture.

Signed-off-by: Val Packett &lt;val@packett.cool&gt;
Link: https://patch.msgid.link/20261016073157.611956-4-val@packett.cool
Signed-off-by: Mark Brown &lt;broonie@kernel.org&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>ASoC: qcom: Add QAIF driver for Shikra audio platform</title>
<updated>2026-10-15T15:44:21+00:00</updated>
<author>
<name>Mark Brown</name>
<email>broonie@kernel.org</email>
</author>
<published>2026-10-15T15:44:21+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=18123081c09623e884a108ff23d22a98505626e9'/>
<id>18123081c09623e884a108ff23d22a98505626e9</id>
<content type='text'>
Harendra Gautam &lt;harendra.gautam@oss.qualcomm.com&gt; says:

This series introduces the Qualcomm Audio Interface (QAIF) driver for
the Shikra audio platform.

Hardware IP Overview
====================
QAIF (Qualcomm Audio Interface) is a fully configurable DMA-based audio
subsystem used to transmit and receive audio data over serial audio
interfaces (PCM, TDM, MI2S) and to provide a DMA interface for internal
codec connections. It manages two independent data paths:

  AIF (Audio Interface): multiple multi-lane Unified Audio Interfaces,
  each supporting up to 8 independent data lanes. Each lane is individually
  configurable as TX (output/speaker) or RX (input/mic). All lanes of an
  interface share a single bit clock and frame sync. Supported modes are
  PCM (short/long sync), TDM, and MI2S (stereo/mono). Per-interface
  configuration includes sync source (master/slave), sync mode, sync delay,
  sync inversion, slot width (8/16/24/32-bit), sample width, active slot
  masks (up to 32 slots), bits-per-lane frame size, lane enable/direction
  masks, loopback, output-enable control, and full-cycle path support for
  long chip-to-chip connections.

  CIF (Codec Interface): multiple RDDMA (playback) and WRDMA (capture)
  channels connecting to an internal codec over a parallel bus. Each channel
  supports active-channel enable mask (up to 16 channels), frame-sync
  selection, frame-sync delay, frame-sync output gating, dynamic clock
  gating, and 16-bit packing/unpacking.

  Note on RX/TX naming convention: in QAIF, TX refers to the output
  (speaker/playback) direction and RX refers to the input (mic/capture)
  direction. This applies to both AIF lane directions and CIF slot/mask
  properties.

  DMA Engine: RDDMA fetches audio from DDR/TCM/LPM into a shared SRAM
  latency buffer (SHRAM) and drains it to the interface. WRDMA collects
  data from the interface into SHRAM and writes it to memory. Each DMA
  owns a private SHRAM region defined by start address and length registers.
  Burst sizes of 1/2/4/8/16 beats (64-bit) are supported with up to 4
  outstanding transactions per DMA. Two QSB master ports (QXM0 for TCM,
  QXM1 for DDR/LPM) provide the memory interface.

  Execution Environments (EE): Resources (DMAs, audio interfaces,
  interface groups) are partitioned among up to 5 EEs via map registers.
  Each EE owns a set of DMAs, audio interfaces, and interface groups, and
  receives its own independent interrupt output. The interrupt hierarchy
  has a two-level structure: a summary register identifies the event class
  (DMA period, underflow/overflow, error response, audio interface
  underflow/overflow, group done, rate detector, VFR), and per-resource
  status registers identify the specific channel.

  Interface Grouping (Bonding): Multiple AIF and CIF interfaces can be
  bonded into a group to start synchronously and align their DMA period
  interrupts within half a frame duration using the RDDMA padding feature.
  Up to 6 groups are supported.

  Rate Detector: Two rate detector blocks measure the frequency of
  incoming frame sync or word select signals and generate interrupts on
  rate change, undetected rate, or sync timeout.

Block Diagram
=============

  System Memory (DDR / LPM / TCM)
  +---------------------------------+
  |  Circular Buffers (ping-pong)   |
  +----------+----------+-----------+
             |          ^
       64-bit AXI  64-bit AXI
             |          |
  +----------v----------+-----------+
  |        QSB Master Ports         |
  |  +----------+  +----------+     |
  |  |   QXM0   |  |   QXM1   |     |
  |  +----+-----+  +-----+----+     |
  +-------|--------------|----------+
          |              |
  +-------v--------------v----------+
  |         Shared RAM (SHRAM)       |
  |  +------------+  +------------+ |
  |  | QXM0 Read  |  | QXM0 Write | |
  |  | SHRAM      |  | SHRAM      | |
  |  +------------+  +------------+ |
  |  +------------+  +------------+ |
  |  | QXM1 Read  |  | QXM1 Write | |
  |  | SHRAM      |  | SHRAM      | |
  |  +------------+  +------------+ |
  +---+--------+--------+-------+---+
      |        |        |       |
  +---v--+  +--v---+ +--v---+ +-v----+
  |RDDMA |  |RDDMA | |WRDMA | |WRDMA |
  | AIF  |  | CIF  | | AIF  | | CIF  |
  |[0..n]|  |[0..n]| |[0..n]| |[0..n]|
  +--+---+  +--+---+ +--+---+ +-+----+
     |         |       ^          ^
     | TX      | TX    | RX       | RX
     v         v       |          |
  +--+--------------------+  +----+----------+
  |  Unified Audio Intf   |  | Codec DMA     |
  |  (AIF 0..12)          |  | Interface     |
  |                       |  | (CIF)         |
  |  AUD_INTFa block:     |  |               |
  |  - Serializer (TX)    |  | RDDMA: DDR -&gt; |
  |  - De-serializer (RX) |  |   internal    |
  |  - Sync gen/detect    |  |   codec       |
  |  - Up to 8 data lanes |  | WRDMA: codec  |
  |  - PCM / TDM / MI2S   |  |   -&gt; DDR      |
  |  - Near Pad Logic     |  | Up to 16 ch   |
  +--+--------------------+  +----+----------+
     |  Lane 0..7 (TX/RX)       |  Parallel bus
     |  Bit clk + Frame sync    |  + Frame sync
     v                          v
  +--+--------+          +------+------+
  | External  |          | Internal    |
  | Serial    |          | Digital     |
  | Peripherals|         | Codec       |
  | (PCM/TDM/ |          | (Bolero/    |
  |  MI2S)    |          |  WCD)       |
  +-----------+          +-------------+

Software Design
===============
The driver follows the standard ALSA SoC split:

  qaif-cpu.c: CPU DAI component. Manages clocks, implements DAI ops
  (startup/shutdown/hw_params/trigger) for both AIF and CIF
  paths using direct regmap_update_bits() calls with address macros from
  qaif-reg.h, registers an of_xlate_dai_name callback so that sound-dai
  references using non-sequential DAI IDs resolve correctly, parses
  per-interface AIF configuration from DT child nodes, and provides
  runtime PM suspend/resume via pm_runtime_force_suspend/resume for
  power collapse. AIF child nodes use standard properties (dai-format,
  dai-tdm-slot-*, qcom,qaif-aif-lane-map) without a compatible string;
  the protocol is identified by dai-format and set_fmt() is called by
  the machine driver.

  qaif-platform.c: PCM platform component. Handles DMA buffer allocation
  (dma_alloc_pages()), PCM ops (open/close/hw_params/hw_free/prepare/trigger/
  pointer/mmap/copy), and table-driven two-level IRQ dispatch with
  period-elapsed notification.

  qaif-shikra.c: Shikra SoC-specific variant descriptor. Provides
  register base addresses, DMA channel counts, SHRAM geometry, clock
  names and the DAI driver array. This abstraction keeps the core driver
  portable across future QAIF integrations.

  qaif.h / qaif-reg.h: Shared data structures, constants and the complete
  MMIO register address map consumed by both the CPU and platform drivers.

  soc-core.c: This series adds snd_soc_of_xlate_dai_name() as a generic
  ASoC helper that resolves a sound-dai phandle argument to a DAI name by
  searching the component DAI list by ID. Both lpass-cpu.c and qaif-cpu.c
  assign it directly as .of_xlate_dai_name, removing their private
  implementations.

The series is split by functionality to aid review -- register map and
data structures first, then CPU DAI ops with regmap and DT parsing, the
of_xlate helper, PCM ops, IRQ handling and finally the Shikra variant
glue.

Link: https://patch.msgid.link/20261013-b4-qaif-shikra-audio-v9-0-f3022e28f2fd@oss.qualcomm.com
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Harendra Gautam &lt;harendra.gautam@oss.qualcomm.com&gt; says:

This series introduces the Qualcomm Audio Interface (QAIF) driver for
the Shikra audio platform.

Hardware IP Overview
====================
QAIF (Qualcomm Audio Interface) is a fully configurable DMA-based audio
subsystem used to transmit and receive audio data over serial audio
interfaces (PCM, TDM, MI2S) and to provide a DMA interface for internal
codec connections. It manages two independent data paths:

  AIF (Audio Interface): multiple multi-lane Unified Audio Interfaces,
  each supporting up to 8 independent data lanes. Each lane is individually
  configurable as TX (output/speaker) or RX (input/mic). All lanes of an
  interface share a single bit clock and frame sync. Supported modes are
  PCM (short/long sync), TDM, and MI2S (stereo/mono). Per-interface
  configuration includes sync source (master/slave), sync mode, sync delay,
  sync inversion, slot width (8/16/24/32-bit), sample width, active slot
  masks (up to 32 slots), bits-per-lane frame size, lane enable/direction
  masks, loopback, output-enable control, and full-cycle path support for
  long chip-to-chip connections.

  CIF (Codec Interface): multiple RDDMA (playback) and WRDMA (capture)
  channels connecting to an internal codec over a parallel bus. Each channel
  supports active-channel enable mask (up to 16 channels), frame-sync
  selection, frame-sync delay, frame-sync output gating, dynamic clock
  gating, and 16-bit packing/unpacking.

  Note on RX/TX naming convention: in QAIF, TX refers to the output
  (speaker/playback) direction and RX refers to the input (mic/capture)
  direction. This applies to both AIF lane directions and CIF slot/mask
  properties.

  DMA Engine: RDDMA fetches audio from DDR/TCM/LPM into a shared SRAM
  latency buffer (SHRAM) and drains it to the interface. WRDMA collects
  data from the interface into SHRAM and writes it to memory. Each DMA
  owns a private SHRAM region defined by start address and length registers.
  Burst sizes of 1/2/4/8/16 beats (64-bit) are supported with up to 4
  outstanding transactions per DMA. Two QSB master ports (QXM0 for TCM,
  QXM1 for DDR/LPM) provide the memory interface.

  Execution Environments (EE): Resources (DMAs, audio interfaces,
  interface groups) are partitioned among up to 5 EEs via map registers.
  Each EE owns a set of DMAs, audio interfaces, and interface groups, and
  receives its own independent interrupt output. The interrupt hierarchy
  has a two-level structure: a summary register identifies the event class
  (DMA period, underflow/overflow, error response, audio interface
  underflow/overflow, group done, rate detector, VFR), and per-resource
  status registers identify the specific channel.

  Interface Grouping (Bonding): Multiple AIF and CIF interfaces can be
  bonded into a group to start synchronously and align their DMA period
  interrupts within half a frame duration using the RDDMA padding feature.
  Up to 6 groups are supported.

  Rate Detector: Two rate detector blocks measure the frequency of
  incoming frame sync or word select signals and generate interrupts on
  rate change, undetected rate, or sync timeout.

Block Diagram
=============

  System Memory (DDR / LPM / TCM)
  +---------------------------------+
  |  Circular Buffers (ping-pong)   |
  +----------+----------+-----------+
             |          ^
       64-bit AXI  64-bit AXI
             |          |
  +----------v----------+-----------+
  |        QSB Master Ports         |
  |  +----------+  +----------+     |
  |  |   QXM0   |  |   QXM1   |     |
  |  +----+-----+  +-----+----+     |
  +-------|--------------|----------+
          |              |
  +-------v--------------v----------+
  |         Shared RAM (SHRAM)       |
  |  +------------+  +------------+ |
  |  | QXM0 Read  |  | QXM0 Write | |
  |  | SHRAM      |  | SHRAM      | |
  |  +------------+  +------------+ |
  |  +------------+  +------------+ |
  |  | QXM1 Read  |  | QXM1 Write | |
  |  | SHRAM      |  | SHRAM      | |
  |  +------------+  +------------+ |
  +---+--------+--------+-------+---+
      |        |        |       |
  +---v--+  +--v---+ +--v---+ +-v----+
  |RDDMA |  |RDDMA | |WRDMA | |WRDMA |
  | AIF  |  | CIF  | | AIF  | | CIF  |
  |[0..n]|  |[0..n]| |[0..n]| |[0..n]|
  +--+---+  +--+---+ +--+---+ +-+----+
     |         |       ^          ^
     | TX      | TX    | RX       | RX
     v         v       |          |
  +--+--------------------+  +----+----------+
  |  Unified Audio Intf   |  | Codec DMA     |
  |  (AIF 0..12)          |  | Interface     |
  |                       |  | (CIF)         |
  |  AUD_INTFa block:     |  |               |
  |  - Serializer (TX)    |  | RDDMA: DDR -&gt; |
  |  - De-serializer (RX) |  |   internal    |
  |  - Sync gen/detect    |  |   codec       |
  |  - Up to 8 data lanes |  | WRDMA: codec  |
  |  - PCM / TDM / MI2S   |  |   -&gt; DDR      |
  |  - Near Pad Logic     |  | Up to 16 ch   |
  +--+--------------------+  +----+----------+
     |  Lane 0..7 (TX/RX)       |  Parallel bus
     |  Bit clk + Frame sync    |  + Frame sync
     v                          v
  +--+--------+          +------+------+
  | External  |          | Internal    |
  | Serial    |          | Digital     |
  | Peripherals|         | Codec       |
  | (PCM/TDM/ |          | (Bolero/    |
  |  MI2S)    |          |  WCD)       |
  +-----------+          +-------------+

Software Design
===============
The driver follows the standard ALSA SoC split:

  qaif-cpu.c: CPU DAI component. Manages clocks, implements DAI ops
  (startup/shutdown/hw_params/trigger) for both AIF and CIF
  paths using direct regmap_update_bits() calls with address macros from
  qaif-reg.h, registers an of_xlate_dai_name callback so that sound-dai
  references using non-sequential DAI IDs resolve correctly, parses
  per-interface AIF configuration from DT child nodes, and provides
  runtime PM suspend/resume via pm_runtime_force_suspend/resume for
  power collapse. AIF child nodes use standard properties (dai-format,
  dai-tdm-slot-*, qcom,qaif-aif-lane-map) without a compatible string;
  the protocol is identified by dai-format and set_fmt() is called by
  the machine driver.

  qaif-platform.c: PCM platform component. Handles DMA buffer allocation
  (dma_alloc_pages()), PCM ops (open/close/hw_params/hw_free/prepare/trigger/
  pointer/mmap/copy), and table-driven two-level IRQ dispatch with
  period-elapsed notification.

  qaif-shikra.c: Shikra SoC-specific variant descriptor. Provides
  register base addresses, DMA channel counts, SHRAM geometry, clock
  names and the DAI driver array. This abstraction keeps the core driver
  portable across future QAIF integrations.

  qaif.h / qaif-reg.h: Shared data structures, constants and the complete
  MMIO register address map consumed by both the CPU and platform drivers.

  soc-core.c: This series adds snd_soc_of_xlate_dai_name() as a generic
  ASoC helper that resolves a sound-dai phandle argument to a DAI name by
  searching the component DAI list by ID. Both lpass-cpu.c and qaif-cpu.c
  assign it directly as .of_xlate_dai_name, removing their private
  implementations.

The series is split by functionality to aid review -- register map and
data structures first, then CPU DAI ops with regmap and DT parsing, the
of_xlate helper, PCM ops, IRQ handling and finally the Shikra variant
glue.

Link: https://patch.msgid.link/20261013-b4-qaif-shikra-audio-v9-0-f3022e28f2fd@oss.qualcomm.com
</pre>
</div>
</content>
</entry>
<entry>
<title>ASoC: dt-bindings: qcom,shikra-qaif-cpu: Add binding</title>
<updated>2026-10-15T15:44:06+00:00</updated>
<author>
<name>Harendra Gautam</name>
<email>harendra.gautam@oss.qualcomm.com</email>
</author>
<published>2026-10-13T05:51:24+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=f7b6fe0a9bd308f13db44321b252821683730c5b'/>
<id>f7b6fe0a9bd308f13db44321b252821683730c5b</id>
<content type='text'>
Add the Devicetree binding for the Qualcomm Audio Interface (QAIF) CPU DAI
controller used on the Shikra audio platform.

QAIF routes audio between system memory, external PCM/TDM/MI2S serial
interfaces and the internal Bolero/WCD codec. Platform Devicetree files
need a binding to describe the controller resources, DAI cells and per-
interface AIF configuration, and named constants to avoid raw numeric IDs
in sound-dai references and child-node reg values.

Describe the MMIO region, interrupt, clocks, DMA IOMMU mapping and
aif-interface child nodes required by the controller.

Signed-off-by: Harendra Gautam &lt;harendra.gautam@oss.qualcomm.com&gt;
Reviewed-by: Ajay Kumar Nandam &lt;ajay.nandam@oss.qualcomm.com&gt;
Reviewed-by: Rob Herring (Arm) &lt;robh@kernel.org&gt;
Link: https://patch.msgid.link/20261013-b4-qaif-shikra-audio-v9-1-f3022e28f2fd@oss.qualcomm.com
Signed-off-by: Mark Brown &lt;broonie@kernel.org&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Add the Devicetree binding for the Qualcomm Audio Interface (QAIF) CPU DAI
controller used on the Shikra audio platform.

QAIF routes audio between system memory, external PCM/TDM/MI2S serial
interfaces and the internal Bolero/WCD codec. Platform Devicetree files
need a binding to describe the controller resources, DAI cells and per-
interface AIF configuration, and named constants to avoid raw numeric IDs
in sound-dai references and child-node reg values.

Describe the MMIO region, interrupt, clocks, DMA IOMMU mapping and
aif-interface child nodes required by the controller.

Signed-off-by: Harendra Gautam &lt;harendra.gautam@oss.qualcomm.com&gt;
Reviewed-by: Ajay Kumar Nandam &lt;ajay.nandam@oss.qualcomm.com&gt;
Reviewed-by: Rob Herring (Arm) &lt;robh@kernel.org&gt;
Link: https://patch.msgid.link/20261013-b4-qaif-shikra-audio-v9-1-f3022e28f2fd@oss.qualcomm.com
Signed-off-by: Mark Brown &lt;broonie@kernel.org&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>ASoC: tegra: Support WM8994 by machine driver</title>
<updated>2026-10-14T13:13:06+00:00</updated>
<author>
<name>Mark Brown</name>
<email>broonie@kernel.org</email>
</author>
<published>2026-10-14T13:13:06+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=2702a7ca23f7e124f972e9e4ce33385da20e9894'/>
<id>2702a7ca23f7e124f972e9e4ce33385da20e9894</id>
<content type='text'>
Svyatoslav Ryhel &lt;clamor95@gmail.com&gt; says:

Add Wolfson Microelectronics WM8994 codec support to the Tegra ASoC
machine driver. The WM8994 codec is found on devices like LG Optimus 2X
(P990/star) and Samsung Captivate Glide (SGH-i927).

Link: https://patch.msgid.link/20261014120148.126160-1-clamor95@gmail.com
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Svyatoslav Ryhel &lt;clamor95@gmail.com&gt; says:

Add Wolfson Microelectronics WM8994 codec support to the Tegra ASoC
machine driver. The WM8994 codec is found on devices like LG Optimus 2X
(P990/star) and Samsung Captivate Glide (SGH-i927).

Link: https://patch.msgid.link/20261014120148.126160-1-clamor95@gmail.com
</pre>
</div>
</content>
</entry>
<entry>
<title>ASoC: dt-bindings: nvidia,tegra-audio: Document WM8994 CODEC</title>
<updated>2026-10-14T13:13:02+00:00</updated>
<author>
<name>Svyatoslav Ryhel</name>
<email>clamor95@gmail.com</email>
</author>
<published>2026-10-14T12:01:47+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=5b4d158b309a151979fce2334fec616d71506b77'/>
<id>5b4d158b309a151979fce2334fec616d71506b77</id>
<content type='text'>
Add dt-binding for WM8994 CODEC.

Signed-off-by: Svyatoslav Ryhel &lt;clamor95@gmail.com&gt;
Link: https://patch.msgid.link/20261014120148.126160-2-clamor95@gmail.com
Signed-off-by: Mark Brown &lt;broonie@kernel.org&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Add dt-binding for WM8994 CODEC.

Signed-off-by: Svyatoslav Ryhel &lt;clamor95@gmail.com&gt;
Link: https://patch.msgid.link/20261014120148.126160-2-clamor95@gmail.com
Signed-off-by: Mark Brown &lt;broonie@kernel.org&gt;
</pre>
</div>
</content>
</entry>
</feed>
