[PATCH v2 0/6] Add audio support for QCS6490 RubikPi3

From: Hongyang Zhao

Date: Wed Jul 15 2026 - 11:26:48 EST


Add audio support for the Thundercomm RubikPi3 board based on QCS6490.

RubikPi3 uses AudioReach/GPR on the ADSP. An ES8316 codec connected to
primary MI2S provides headset playback, headset capture and jack
detection. The LT9611 bridge connected to quaternary MI2S provides HDMI
audio playback.

The series first documents the existing ES8316 jack-detect inversion
property and adds a board-specific Qualcomm sound-card compatible. A
generic Qualcomm headset helper is then added for codecs which implement
component jack detection but are not connected through a WCD codec DMA
link.

The sc8280xp machine driver board data is converted to a per-DAI
representation. This allows each backend to select its own DAI format,
clock programming and jack setup. RubikPi3 uses this to drive the ES8316
with a 19.2 MHz MCLK and to avoid unsupported sysclk programming on the
LT9611 HDMI link.

The final patch describes the two audio paths, clocks, pin control,
codec power and jack-detect wiring in the RubikPi3 device tree.

This series is based on next-20260710 and depends on Rafi's
q6apm-lpass-dais MI2S clock control series and Neil's q6prm MCLK clock
ID patch:

Depends-on: https://lore.kernel.org/all/20260714145250.2473461-1-mohammad.rafi.shaik@xxxxxxxxxxxxxxxx/
Depends-on: https://lore.kernel.org/all/20251008-topic-sm8x50-next-hdk-i2s-v2-1-6b7d38d4ad5e@xxxxxxxxxx/

Tested on Thundercomm RubikPi3:

- HDMI playback
- Headset playback and capture
- Headset jack detection

Changes in v2:

- Rebased onto next-20260710 and Rafi's latest q6apm-lpass-dais MI2S
clock control series (v5).
- Dropped the bundled q6prm MCLK ID patch and added a dependency on
Neil's existing patch.
- Split the generic headset helper, per-DAI driver refactoring and
RubikPi3 machine data into separate patches.
- Reworked the sc8280xp board data from global flags to per-DAI
configuration and migrated existing users.
- Explained why the existing QCM6490 and QCS6490 sound-card compatibles
cannot be reused for RubikPi3.
- Moved MI2S pin control to the sound card and fixed audio-routing
formatting as requested during v1 review.
- Added primary MI2S backend clock subnodes for MCLK and BCLK control.
- Dropped the untested SPDIF links from the device tree.
- Verified HDMI and headset playback, headset capture and jack detection
on hardware.

Link: https://lore.kernel.org/all/20260607-rubikpi-next-20260605-v1-0-7f334e16fea6@xxxxxxxxxxxxxxx/

Signed-off-by: Hongyang Zhao <hongyang.zhao@xxxxxxxxxxxxxxx>
---
Hongyang Zhao (6):
ASoC: dt-bindings: es8316: Document jack detect inversion
ASoC: dt-bindings: qcom,sm8250: Add RubikPi 3 sound card
ASoC: qcom: common: Add generic headset jack helpers
ASoC: qcom: sc8280xp: Add per-DAI board configuration
ASoC: qcom: sc8280xp: Add RubikPi 3 sound card support
arm64: dts: qcom: qcs6490-rubikpi3: Add audio support

.../devicetree/bindings/sound/everest,es8316.yaml | 5 +
.../devicetree/bindings/sound/qcom,sm8250.yaml | 1 +
.../boot/dts/qcom/qcs6490-thundercomm-rubikpi3.dts | 159 ++++++++++++++++++
sound/soc/qcom/common.c | 61 ++++++-
sound/soc/qcom/common.h | 3 +
sound/soc/qcom/sc8280xp.c | 177 ++++++++++++++++++---
6 files changed, 375 insertions(+), 31 deletions(-)
---
base-commit: bee763d5f341b99cf472afeb508d4988f62a6ca1
change-id: 20260605-rubikpi-next-20260605-fdda114824d7
prerequisite-message-id: <20260714145250.2473461-1-mohammad.rafi.shaik@xxxxxxxxxxxxxxxx>
prerequisite-patch-id: 2e26f868c659376d3a1dd4c3e3d34ddb24aa226d
prerequisite-patch-id: aa51a266a595ff79730f56920b7c552e53285869
prerequisite-patch-id: b469932718c83bffa60b62c84dfc4cc8abc199e3
prerequisite-patch-id: 2f1bd3efac328030dd8efe28fb95f84603868043

Best regards,
--
Hongyang Zhao <hongyang.zhao@xxxxxxxxxxxxxxx>