clear-pkgs-linux-iot-lts2018/0203-ASoC-CNL-Add-DAIS-for-...

114 lines
3.5 KiB
Diff

From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: Hardik Shah <hardik.t.shah@intel.com>
Date: Mon, 2 May 2016 15:12:59 +0530
Subject: [PATCH] ASoC:CNL: Add DAIS for SoundWire masters.
Add new DAIs for SoundWire master for aggregation.
Add DAI IDs to find the master controller from DAI.
Earlier DAI was found from the copier vbus, but with
aggregation, copier is linked to multiple DAIs which
are aggregated. So add be_ids range to idendify
SDW master controller from DAIs.
Change-Id: Ida7bd5893e073c3ec5d7ab7dda0c94306c42051b
Signed-off-by: Hardik Shah <hardik.t.shah@intel.com>
Reviewed-on:
---
sound/soc/intel/skylake/skl-pcm.c | 46 ++++++++++++++++++++++++++-
sound/soc/intel/skylake/skl-sdw-pcm.h | 7 ++++
2 files changed, 52 insertions(+), 1 deletion(-)
diff --git a/sound/soc/intel/skylake/skl-pcm.c b/sound/soc/intel/skylake/skl-pcm.c
index d93191514dca..80480eb94846 100644
--- a/sound/soc/intel/skylake/skl-pcm.c
+++ b/sound/soc/intel/skylake/skl-pcm.c
@@ -1105,6 +1105,7 @@ static struct snd_soc_dai_driver skl_platform_dai[] = {
* should be coming from CLT based on endpoints to be supported
*/
.name = "SDW Pin",
+ .id = SDW_BE_DAI_ID_MSTR0,
.ops = &skl_sdw_dai_ops,
.playback = {
.stream_name = "SDW Tx",
@@ -1127,6 +1128,7 @@ static struct snd_soc_dai_driver skl_platform_dai[] = {
*/
.name = "SDW PDM Pin",
.ops = &skl_sdw_dai_ops,
+ .id = SDW_BE_DAI_ID_MSTR0 + 1,
.capture = {
.stream_name = "SDW Rx1",
.channels_min = HDA_MONO,
@@ -1134,8 +1136,50 @@ static struct snd_soc_dai_driver skl_platform_dai[] = {
.rates = SNDRV_PCM_RATE_48000,
.formats = SNDRV_PCM_FMTBIT_S16_LE,
},
+},
+{
+ /* Currently adding 1 playback and 1 capture pin, ideally it
+ * should be coming from CLT based on endpoints to be supported
+ */
+ .name = "SDW1 Pin",
+ .id = SDW_BE_DAI_ID_MSTR1,
+ .ops = &skl_sdw_dai_ops,
+ .playback = {
+ .stream_name = "SDW1 Tx",
+ .channels_min = HDA_STEREO,
+ .channels_max = HDA_STEREO,
+ .rates = SNDRV_PCM_RATE_48000,
+ .formats = SNDRV_PCM_FMTBIT_S16_LE,
+ },
+ .capture = {
+ .stream_name = "SDW1 Rx",
+ .channels_min = HDA_STEREO,
+ .channels_max = HDA_STEREO,
+ .rates = SNDRV_PCM_RATE_48000,
+ .formats = SNDRV_PCM_FMTBIT_S16_LE,
+ },
-
+},
+{
+ /* Currently adding 1 playback and 1 capture pin, ideally it
+ * should be coming from CLT based on endpoints to be supported
+ */
+ .name = "SDW3 Pin",
+ .ops = &skl_sdw_dai_ops,
+ .playback = {
+ .stream_name = "SDW3 Tx",
+ .channels_min = HDA_STEREO,
+ .channels_max = HDA_STEREO,
+ .rates = SNDRV_PCM_RATE_48000,
+ .formats = SNDRV_PCM_FMTBIT_S16_LE,
+ },
+ .capture = {
+ .stream_name = "SDW3 Rx",
+ .channels_min = HDA_STEREO,
+ .channels_max = HDA_STEREO,
+ .rates = SNDRV_PCM_RATE_48000,
+ .formats = SNDRV_PCM_FMTBIT_S16_LE,
+ },
},
};
diff --git a/sound/soc/intel/skylake/skl-sdw-pcm.h b/sound/soc/intel/skylake/skl-sdw-pcm.h
index ab1314a6f408..7166ef9992ab 100644
--- a/sound/soc/intel/skylake/skl-sdw-pcm.h
+++ b/sound/soc/intel/skylake/skl-sdw-pcm.h
@@ -24,6 +24,13 @@
#include <sound/soc.h>
#include <sound/pcm_params.h>
+#define SDW_BE_DAI_ID_BASE 256
+#define SDW_BE_DAI_ID_MSTR0 256
+#define SDW_BE_DAI_ID_MSTR1 (SDW_BE_DAI_ID_MSTR0 + 32)
+#define SDW_BE_DAI_ID_MSTR2 (SDW_BE_DAI_ID_MSTR1 + 32)
+#define SDW_BE_DAI_ID_MSTR3 (SDW_BE_DAI_ID_MSTR2 + 32)
+
+
int cnl_sdw_startup(struct snd_pcm_substream *substream,
struct snd_soc_dai *dai);
int cnl_sdw_hw_params(struct snd_pcm_substream *substream,
--
https://clearlinux.org