[PATCH v2 0/4] ASoC: cdns: Add Cadence I2S-SC and I2S-MC controller support
flat view
COOLING4d
SUPERSEDED
From: <hidden>
Date: 2026-09-28 05:36:34
Also in:
linux-devicetree, linux-sound, lkml
Revision v2 of 2 in this series.
Revisions (2)
- v2 current
- v3 [diff vs current]
From: Joakim Zhang <redacted> This series adds support for the Cadence I2S-SC and I2S-MC controllers integrated in the CIX SKY1 audio subsystem, together with their DT bindings. I2S-SC provides full-duplex stereo playback and capture in standard I2S, left/right-justified and DSP modes, along with TDM operation supporting up to 16 slots. I2S-MC provides multi-channel playback and capture through a configurable set of its 8 data pins, described by cix,pin-out-num, cix,pin-rx-mask and cix,pin-tx-mask, and exposes a transmit DAI and a receive DAI. Both drivers register the dmaengine PCM helper, select the audio reference clock parent for the 8 kHz or 11.025 kHz sample rate family and keep the minimum functional-clock to bit-clock ratio required for safe clock domain crossing. Changes in v2: - Move the IRQ request after the clocks are enabled and the reset is released, so the handler never runs against unclocked hardware. - Disable the IRQ before switching the regcache to cache-only mode on suspend, and re-enable it only after the cache is synced on resume; check the status read in the ISR (both drivers). - Replace the manual runtime PM bookkeeping with devm_pm_runtime_enable() and drop the remove() callbacks (both drivers). - Switch to RUNTIME_PM_OPS()/SYSTEM_SLEEP_PM_OPS() wrapped in pm_ptr() and drop the __maybe_unused annotations (both drivers). - Serialize the shared transceiver clock state in prepare() against the trigger() state machine with the existing spinlock (I2S-SC). - Disable clocks in the reverse order of enablement (both drivers). - Sort the cdns/ entry into the vendor list in sound/soc/Makefile and switch sound/soc/cdns/Makefile to the '-y' object syntax. - Clean up the includes and initializer style (both drivers). - Add a NULL check for the match data in probe (both drivers). - Factor the MC transmitter and receiver configuration into a shared helper. - Drop the compatible string from the DMAC stub node in the binding examples. Signed-off-by: Joakim Zhang <redacted> Joakim Zhang (4): ASoC: dt-bindings: Add Cadence I2S-SC controller ASoC: cdns: Add Cadence I2S-SC controller driver ASoC: dt-bindings: Add Cadence I2S-MC controller ASoC: cdns: Add Cadence I2S-MC controller driver .../bindings/sound/cix,sky1-i2s-mc.yaml | 123 ++ .../bindings/sound/cix,sky1-i2s-sc.yaml | 93 ++ sound/soc/Kconfig | 1 + sound/soc/Makefile | 1 + sound/soc/cdns/Kconfig | 21 + sound/soc/cdns/Makefile | 7 + sound/soc/cdns/cdns-i2s-mc.c | 1121 ++++++++++++++++ sound/soc/cdns/cdns-i2s-sc.c | 1160 +++++++++++++++++ 8 files changed, 2527 insertions(+) create mode 100644 Documentation/devicetree/bindings/sound/cix,sky1-i2s-mc.yaml create mode 100644 Documentation/devicetree/bindings/sound/cix,sky1-i2s-sc.yaml create mode 100644 sound/soc/cdns/Kconfig create mode 100644 sound/soc/cdns/Makefile create mode 100644 sound/soc/cdns/cdns-i2s-mc.c create mode 100644 sound/soc/cdns/cdns-i2s-sc.c -- 2.50.1