Message ID | 20240731-msm8953-msm8976-asoc-v3-1-163f23c3a28d@gmail.com |
---|---|
State | Superseded |
Headers | show |
Series | [v3,1/8] ASoC: qcom: apq8016_sbc.c: Add Quinary support | expand |
On 31.07.2024 5:25 PM, 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 | 17 ++++++++++++++++- > 1 file changed, 16 insertions(+), 1 deletion(-) > > diff --git a/sound/soc/qcom/apq8016_sbc.c b/sound/soc/qcom/apq8016_sbc.c > index 3023cf180a75..5a29adbd3f82 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); I'm nitpicking, but 0x01 here is BIT(0) Acked-by: Konrad Dybcio <konradybcio@kernel.org> Konrad
diff --git a/sound/soc/qcom/apq8016_sbc.c b/sound/soc/qcom/apq8016_sbc.c index 3023cf180a75..5a29adbd3f82 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; } @@ -290,6 +300,7 @@ static int apq8016_sbc_platform_probe(struct platform_device *pdev) struct device *dev = &pdev->dev; struct snd_soc_card *card; struct apq8016_sbc_data *data; + struct resource *res; int ret; add_ops = device_get_match_data(&pdev->dev); @@ -320,6 +331,10 @@ static int apq8016_sbc_platform_probe(struct platform_device *pdev) if (IS_ERR(data->spkr_iomux)) return PTR_ERR(data->spkr_iomux); + res = platform_get_resource_byname(pdev, IORESOURCE_MEM, "quin-iomux"); + if (res != NULL) + data->quin_iomux = devm_ioremap_resource(&pdev->dev, res); + snd_soc_card_set_drvdata(card, data); add_ops(card);