Commit 133e6e5c authored by Shreyas NC's avatar Shreyas NC Committed by Mark Brown

ASoC: Intel: Skylake: Support for multiple data blocks

Module init params are additional data block in the module private data.
Skylake driver doesn't yet have support to parse multiple data blocks if
it appears in private data. Add support for parsing of multiple data
blocks and module init params.
Signed-off-by: default avatarShreyas NC <shreyas.nc@intel.com>
Signed-off-by: default avatarSubhransu S. Prusty <subhransu.s.prusty@intel.com>
Acked-by: default avatarVinod Koul <vinod.koul@intel.com>
Signed-off-by: default avatarMark Brown <broonie@kernel.org>
parent 9a075265
...@@ -2070,6 +2070,16 @@ static int skl_tplg_get_token(struct device *dev, ...@@ -2070,6 +2070,16 @@ static int skl_tplg_get_token(struct device *dev,
break; break;
case SKL_TKN_U32_CAPS_SET_PARAMS:
mconfig->formats_config.set_params =
tkn_elem->value;
break;
case SKL_TKN_U32_CAPS_PARAMS_ID:
mconfig->formats_config.param_id =
tkn_elem->value;
break;
case SKL_TKN_U32_PROC_DOMAIN: case SKL_TKN_U32_PROC_DOMAIN:
mconfig->domain = mconfig->domain =
tkn_elem->value; tkn_elem->value;
...@@ -2147,7 +2157,7 @@ static int skl_tplg_get_tokens(struct device *dev, ...@@ -2147,7 +2157,7 @@ static int skl_tplg_get_tokens(struct device *dev,
tuple_size += tkn_count * sizeof(*tkn_elem); tuple_size += tkn_count * sizeof(*tkn_elem);
} }
return 0; return off;
} }
/* /*
...@@ -2198,10 +2208,11 @@ static int skl_tplg_get_pvt_data(struct snd_soc_tplg_dapm_widget *tplg_w, ...@@ -2198,10 +2208,11 @@ static int skl_tplg_get_pvt_data(struct snd_soc_tplg_dapm_widget *tplg_w,
num_blocks = ret; num_blocks = ret;
off += array->size; off += array->size;
array = (struct snd_soc_tplg_vendor_array *)(tplg_w->priv.data + off);
/* Read the BLOCK_TYPE and BLOCK_SIZE descriptor */ /* Read the BLOCK_TYPE and BLOCK_SIZE descriptor */
while (num_blocks > 0) { while (num_blocks > 0) {
array = (struct snd_soc_tplg_vendor_array *)
(tplg_w->priv.data + off);
ret = skl_tplg_get_desc_blocks(dev, array); ret = skl_tplg_get_desc_blocks(dev, array);
if (ret < 0) if (ret < 0)
...@@ -2237,7 +2248,9 @@ static int skl_tplg_get_pvt_data(struct snd_soc_tplg_dapm_widget *tplg_w, ...@@ -2237,7 +2248,9 @@ static int skl_tplg_get_pvt_data(struct snd_soc_tplg_dapm_widget *tplg_w,
memcpy(mconfig->formats_config.caps, data, memcpy(mconfig->formats_config.caps, data,
mconfig->formats_config.caps_size); mconfig->formats_config.caps_size);
--num_blocks; --num_blocks;
ret = mconfig->formats_config.caps_size;
} }
off += ret;
} }
return 0; return 0;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment