mirror of
https://github.com/edk2-porting/linux-next.git
synced 2025-01-19 19:14:01 +08:00
ASoC: Intel: Skylake: Commonize parsing of format tokens
Format resource tokens can be a part of either the widget or manifest private data. In the current model, format resources come as a part of widget private data and they come as a part of topology manifest in the newly introduced model. So add a common function that can fill up either of the structures. Signed-off-by: Shreyas NC <shreyas.nc@intel.com> Signed-off-by: Guneshwor Singh <guneshwor.o.singh@intel.com> Acked-By: Vinod Koul <vinod.koul@intel.com> Signed-off-by: Mark Brown <broonie@kernel.org>
This commit is contained in:
parent
3d52a79241
commit
ca312fda69
@ -1948,27 +1948,9 @@ static int skl_tplg_fill_pins_info(struct device *dev,
|
|||||||
* on the direction
|
* on the direction
|
||||||
*/
|
*/
|
||||||
static int skl_tplg_fill_fmt(struct device *dev,
|
static int skl_tplg_fill_fmt(struct device *dev,
|
||||||
struct skl_module_cfg *mconfig, u32 tkn,
|
struct skl_module_fmt *dst_fmt,
|
||||||
u32 value, u32 dir, u32 pin_count)
|
u32 tkn, u32 value)
|
||||||
{
|
{
|
||||||
struct skl_module_fmt *dst_fmt;
|
|
||||||
|
|
||||||
switch (dir) {
|
|
||||||
case SKL_DIR_IN:
|
|
||||||
dst_fmt = mconfig->in_fmt;
|
|
||||||
dst_fmt += pin_count;
|
|
||||||
break;
|
|
||||||
|
|
||||||
case SKL_DIR_OUT:
|
|
||||||
dst_fmt = mconfig->out_fmt;
|
|
||||||
dst_fmt += pin_count;
|
|
||||||
break;
|
|
||||||
|
|
||||||
default:
|
|
||||||
dev_err(dev, "Invalid direction value\n");
|
|
||||||
return -EINVAL;
|
|
||||||
}
|
|
||||||
|
|
||||||
switch (tkn) {
|
switch (tkn) {
|
||||||
case SKL_TKN_U32_FMT_CH:
|
case SKL_TKN_U32_FMT_CH:
|
||||||
dst_fmt->channels = value;
|
dst_fmt->channels = value;
|
||||||
@ -2010,6 +1992,29 @@ static int skl_tplg_fill_fmt(struct device *dev,
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static int skl_tplg_widget_fill_fmt(struct device *dev,
|
||||||
|
struct skl_module_cfg *mconfig,
|
||||||
|
u32 tkn, u32 val, u32 dir, int fmt_idx)
|
||||||
|
{
|
||||||
|
struct skl_module_fmt *dst_fmt;
|
||||||
|
|
||||||
|
switch (dir) {
|
||||||
|
case SKL_DIR_IN:
|
||||||
|
dst_fmt = &mconfig->in_fmt[fmt_idx];
|
||||||
|
break;
|
||||||
|
|
||||||
|
case SKL_DIR_OUT:
|
||||||
|
dst_fmt = &mconfig->out_fmt[fmt_idx];
|
||||||
|
break;
|
||||||
|
|
||||||
|
default:
|
||||||
|
dev_err(dev, "Invalid direction: %d\n", dir);
|
||||||
|
return -EINVAL;
|
||||||
|
}
|
||||||
|
|
||||||
|
return skl_tplg_fill_fmt(dev, dst_fmt, tkn, val);
|
||||||
|
}
|
||||||
|
|
||||||
static int skl_tplg_get_uuid(struct device *dev, struct skl_module_cfg *mconfig,
|
static int skl_tplg_get_uuid(struct device *dev, struct skl_module_cfg *mconfig,
|
||||||
struct snd_soc_tplg_vendor_uuid_elem *uuid_tkn)
|
struct snd_soc_tplg_vendor_uuid_elem *uuid_tkn)
|
||||||
{
|
{
|
||||||
@ -2190,7 +2195,7 @@ static int skl_tplg_get_token(struct device *dev,
|
|||||||
case SKL_TKN_U32_FMT_INTERLEAVE:
|
case SKL_TKN_U32_FMT_INTERLEAVE:
|
||||||
case SKL_TKN_U32_FMT_SAMPLE_TYPE:
|
case SKL_TKN_U32_FMT_SAMPLE_TYPE:
|
||||||
case SKL_TKN_U32_FMT_CH_MAP:
|
case SKL_TKN_U32_FMT_CH_MAP:
|
||||||
ret = skl_tplg_fill_fmt(dev, mconfig, tkn_elem->token,
|
ret = skl_tplg_widget_fill_fmt(dev, mconfig, tkn_elem->token,
|
||||||
tkn_elem->value, dir, pin_index);
|
tkn_elem->value, dir, pin_index);
|
||||||
|
|
||||||
if (ret < 0)
|
if (ret < 0)
|
||||||
|
Loading…
Reference in New Issue
Block a user