Message ID | 20240722095147.3372-2-a39.skl@gmail.com |
---|---|
State | New |
Headers | show |
Series | MSM8953/MSM8976 ASoC support | expand |
On Mon, Jul 22, 2024 at 11:51:05AM GMT, Adam Skladowski wrote: > From: Vladimir Lypak <vladimir.lypak@gmail.com> > > Add support for configuring Quinary Mi2S interface > it will be used on MSM8953 and MSM8976 platform. > > Signed-off-by: Vladimir Lypak <vladimir.lypak@gmail.com> > [Adam: Split from MSM8953 support patch,add msg] > Signed-off-by: Adam Skladowski <a39.skl@gmail.com> > --- > sound/soc/qcom/apq8016_sbc.c | 16 +++++++++++++++- > 1 file changed, 15 insertions(+), 1 deletion(-) > > diff --git a/sound/soc/qcom/apq8016_sbc.c b/sound/soc/qcom/apq8016_sbc.c > index 3023cf180a75..8971f4f5d339 100644 > --- a/sound/soc/qcom/apq8016_sbc.c > +++ b/sound/soc/qcom/apq8016_sbc.c > @@ -320,6 +330,10 @@ static int apq8016_sbc_platform_probe(struct platform_device *pdev) > if (IS_ERR(data->spkr_iomux)) > return PTR_ERR(data->spkr_iomux); > > + data->quin_iomux = devm_platform_ioremap_resource_byname(pdev, "quin-iomux"); This should probably handle -ENOENT (or -ENODEV?) case and set the pointer to NULL. > + if (IS_ERR(data->quin_iomux)) > + return PTR_ERR(data->quin_iomux); > + > snd_soc_card_set_drvdata(card, data); > > add_ops(card); > -- > 2.45.2 >
diff --git a/sound/soc/qcom/apq8016_sbc.c b/sound/soc/qcom/apq8016_sbc.c index 3023cf180a75..8971f4f5d339 100644 --- a/sound/soc/qcom/apq8016_sbc.c +++ b/sound/soc/qcom/apq8016_sbc.c @@ -20,12 +20,13 @@ #include "common.h" #include "qdsp6/q6afe.h" -#define MI2S_COUNT (MI2S_QUATERNARY + 1) +#define MI2S_COUNT (MI2S_QUINARY + 1) struct apq8016_sbc_data { struct snd_soc_card card; void __iomem *mic_iomux; void __iomem *spkr_iomux; + void __iomem *quin_iomux; struct snd_soc_jack jack; bool jack_setup; int mi2s_clk_count[MI2S_COUNT]; @@ -86,6 +87,12 @@ static int apq8016_dai_init(struct snd_soc_pcm_runtime *rtd, int mi2s) SPKR_CTL_TLMM_DATA1_EN | SPKR_CTL_TLMM_WS_OUT_SEL_SEC | SPKR_CTL_TLMM_WS_EN_SEL_SEC, pdata->spkr_iomux); break; + case MI2S_QUINARY: + /* Configure Quinary MI2S */ + if (!pdata->quin_iomux) + return -ENOENT; + writel(readl(pdata->quin_iomux) | 0x01, pdata->quin_iomux); + break; case MI2S_TERTIARY: writel(readl(pdata->mic_iomux) | MIC_CTRL_TER_WS_SLAVE_SEL | MIC_CTRL_TLMM_SCLK_EN, @@ -177,6 +184,9 @@ static int qdsp6_dai_get_lpass_id(struct snd_soc_dai *cpu_dai) case QUATERNARY_MI2S_RX: case QUATERNARY_MI2S_TX: return MI2S_QUATERNARY; + case QUINARY_MI2S_RX: + case QUINARY_MI2S_TX: + return MI2S_QUINARY; default: return -EINVAL; } @@ -320,6 +330,10 @@ static int apq8016_sbc_platform_probe(struct platform_device *pdev) if (IS_ERR(data->spkr_iomux)) return PTR_ERR(data->spkr_iomux); + data->quin_iomux = devm_platform_ioremap_resource_byname(pdev, "quin-iomux"); + if (IS_ERR(data->quin_iomux)) + return PTR_ERR(data->quin_iomux); + snd_soc_card_set_drvdata(card, data); add_ops(card);