[PATCH v3 5/6] ASoC: qcom: sc8280xp: Add RubikPi 3 sound card support
From: Hongyang Zhao
Date: Fri Sep 04 2026 - 06:31:18 EST
RubikPi 3 connects an ES8316 codec to primary MI2S for headset playback
and capture, and an LT9611 bridge to quaternary MI2S for HDMI audio.
Add per-DAI data for the primary playback and capture links. Configure
the codecs for I2S with normal clock polarity and as bit and frame clock
consumers. Program the primary MI2S BCLK, configure the ES8316 for its
fixed 19.2 MHz MCLK and enable component jack detection on the playback
link.
The HDMI link inherits the card-wide I2S format but does not request
codec sysclk programming because the LT9611 codec DAI does not implement
set_sysclk().
Select this configuration through the RubikPi 3 sound-card compatible.
Signed-off-by: Hongyang Zhao <hongyang.zhao@xxxxxxxxxxxxxxx>
---
sound/soc/qcom/sc8280xp.c | 23 +++++++++++++++++++++++
1 file changed, 23 insertions(+)
diff --git a/sound/soc/qcom/sc8280xp.c b/sound/soc/qcom/sc8280xp.c
index 368a54c2cdf8..73009f9bb8e4 100644
--- a/sound/soc/qcom/sc8280xp.c
+++ b/sound/soc/qcom/sc8280xp.c
@@ -577,6 +577,28 @@ static const struct qcom_snd_soc_common qcs6490_priv_data = {
.wcd_jack = true,
};
+static const struct qcom_snd_soc_common rubikpi3_priv_data = {
+ .driver_name = "qcs6490",
+ .dapm_widgets = sc8280xp_dapm_widgets,
+ .num_dapm_widgets = ARRAY_SIZE(sc8280xp_dapm_widgets),
+ .codec_dai_fmt = SND_SOC_DAIFMT_I2S |
+ SND_SOC_DAIFMT_NB_NF |
+ SND_SOC_DAIFMT_BC_FC,
+ SC8280XP_DAI_DATA({
+ .id = PRIMARY_MI2S_RX,
+ .mclk_rate = 19200000,
+ .codec_sysclk_set = true,
+ .mi2s_bclk_enable = true,
+ .jack_setup = SC8280XP_JACK_SETUP_CODEC,
+ }, {
+ .id = PRIMARY_MI2S_TX,
+ .mclk_rate = 19200000,
+ .codec_sysclk_set = true,
+ .mi2s_bclk_enable = true,
+ }
+ ),
+};
+
static const struct qcom_snd_soc_common qcs8275_priv_data = {
.driver_name = "qcs8300",
.dapm_widgets = max98090_dapm_widgets,
@@ -656,6 +678,7 @@ static const struct of_device_id snd_sc8280xp_dt_match[] = {
{ .compatible = "qcom,qcm6490-idp-sndcard", .data = &qcm6490_priv_data },
{ .compatible = "qcom,qcs615-sndcard", .data = &qcs615_priv_data },
{ .compatible = "qcom,qcs6490-rb3gen2-sndcard", .data = &qcs6490_priv_data },
+ { .compatible = "thundercomm,qcs6490-rubikpi3-sndcard", .data = &rubikpi3_priv_data },
{ .compatible = "qcom,qcs8275-sndcard", .data = &qcs8275_priv_data },
{ .compatible = "qcom,qcs9075-sndcard", .data = &qcs9100_priv_data },
{ .compatible = "qcom,qcs9100-sndcard", .data = &qcs9100_priv_data },
--
2.43.0