summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJie Yang <yang.jie@intel.com>2015-01-08 14:32:20 +0800
committerMark Brown <broonie@kernel.org>2015-01-08 18:32:44 +0000
commit98b9c1d2ce59d98d5921bbdca5a6d7fe40b4a384 (patch)
tree4b9a959ad3d01f557ada9ca838189234ed31e180
parent69067f9d52aa325baa0d113c1f35eb98fe486bfc (diff)
downloadlinux-98b9c1d2ce59d98d5921bbdca5a6d7fe40b4a384.tar.bz2
ASoC: Intel: Add stream direction for pcm-module map
A DAI may have 2 streams(playback/capture) and different modules may be needed for them respectively, so we need add a stream direction here, the combination(dai_id + stream) can tell us which module we really need here. Signed-off-by: Jie Yang <yang.jie@intel.com> Signed-off-by: Mark Brown <broonie@kernel.org>
-rw-r--r--sound/soc/intel/sst-haswell-pcm.c18
1 files changed, 9 insertions, 9 deletions
diff --git a/sound/soc/intel/sst-haswell-pcm.c b/sound/soc/intel/sst-haswell-pcm.c
index 13f156b4a612..5448f79283b7 100644
--- a/sound/soc/intel/sst-haswell-pcm.c
+++ b/sound/soc/intel/sst-haswell-pcm.c
@@ -78,7 +78,6 @@ static const u32 volume_map[] = {
#define HSW_PCM_DAI_ID_OFFLOAD0 1
#define HSW_PCM_DAI_ID_OFFLOAD1 2
#define HSW_PCM_DAI_ID_LOOPBACK 3
-#define HSW_PCM_DAI_ID_CAPTURE 4
static const struct snd_pcm_hardware hsw_pcm_hardware = {
@@ -99,6 +98,7 @@ static const struct snd_pcm_hardware hsw_pcm_hardware = {
struct hsw_pcm_module_map {
int dai_id;
+ int stream;
enum sst_hsw_module_id mod_id;
};
@@ -687,11 +687,11 @@ static struct snd_pcm_ops hsw_pcm_ops = {
/* static mappings between PCMs and modules - may be dynamic in future */
static struct hsw_pcm_module_map mod_map[] = {
- {HSW_PCM_DAI_ID_SYSTEM, SST_HSW_MODULE_PCM_SYSTEM},
- {HSW_PCM_DAI_ID_OFFLOAD0, SST_HSW_MODULE_PCM},
- {HSW_PCM_DAI_ID_OFFLOAD1, SST_HSW_MODULE_PCM},
- {HSW_PCM_DAI_ID_LOOPBACK, SST_HSW_MODULE_PCM_REFERENCE},
- {HSW_PCM_DAI_ID_CAPTURE, SST_HSW_MODULE_PCM_CAPTURE},
+ {HSW_PCM_DAI_ID_SYSTEM, 0, SST_HSW_MODULE_PCM_SYSTEM},
+ {HSW_PCM_DAI_ID_OFFLOAD0, 0, SST_HSW_MODULE_PCM},
+ {HSW_PCM_DAI_ID_OFFLOAD1, 0, SST_HSW_MODULE_PCM},
+ {HSW_PCM_DAI_ID_LOOPBACK, 1, SST_HSW_MODULE_PCM_REFERENCE},
+ {HSW_PCM_DAI_ID_SYSTEM, 1, SST_HSW_MODULE_PCM_CAPTURE},
};
static int hsw_pcm_create_modules(struct hsw_priv_data *pdata)
@@ -1075,7 +1075,7 @@ static void hsw_pcm_complete(struct device *dev)
return;
}
- for (i = 0; i < HSW_PCM_DAI_ID_CAPTURE + 1; i++) {
+ for (i = 0; i < ARRAY_SIZE(mod_map); i++) {
pcm_data = &pdata->pcm[i];
if (!pcm_data->substream)
@@ -1109,7 +1109,7 @@ static int hsw_pcm_prepare(struct device *dev)
if (pdata->pm_state == HSW_PM_STATE_D3)
return 0;
/* suspend all active streams */
- for (i = 0; i < HSW_PCM_DAI_ID_CAPTURE + 1; i++) {
+ for (i = 0; i < ARRAY_SIZE(mod_map); i++) {
pcm_data = &pdata->pcm[i];
if (!pcm_data->substream)
@@ -1128,7 +1128,7 @@ static int hsw_pcm_prepare(struct device *dev)
sst_hsw_dsp_runtime_suspend(hsw);
/* preserve persistent memory */
- for (i = 0; i < HSW_PCM_DAI_ID_CAPTURE + 1; i++) {
+ for (i = 0; i < ARRAY_SIZE(mod_map); i++) {
pcm_data = &pdata->pcm[i];
if (!pcm_data->substream)