ASoC: Intel: Skylake: Add dynamic module id support
Module id is a property of firmware manifest and can vary between platforms so use the uuid instead of module id for pins. Signed-off-by: Sriram Periyasamy <sriramx.periyasamy@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
22ebd6666e
commit
d956147473
@ -2054,6 +2054,8 @@ static int skl_tplg_fill_pin(struct device *dev,
|
||||
struct skl_module_pin *m_pin,
|
||||
int pin_index)
|
||||
{
|
||||
int ret;
|
||||
|
||||
switch (tkn_elem->token) {
|
||||
case SKL_TKN_U32_PIN_MOD_ID:
|
||||
m_pin[pin_index].id.module_id = tkn_elem->value;
|
||||
@ -2063,6 +2065,14 @@ static int skl_tplg_fill_pin(struct device *dev,
|
||||
m_pin[pin_index].id.instance_id = tkn_elem->value;
|
||||
break;
|
||||
|
||||
case SKL_TKN_UUID:
|
||||
ret = skl_tplg_get_uuid(dev, m_pin[pin_index].id.mod_uuid.b,
|
||||
(struct snd_soc_tplg_vendor_uuid_elem *)tkn_elem);
|
||||
if (ret < 0)
|
||||
return ret;
|
||||
|
||||
break;
|
||||
|
||||
default:
|
||||
dev_err(dev, "%d Not a pin token\n", tkn_elem->token);
|
||||
return -EINVAL;
|
||||
@ -2487,6 +2497,7 @@ static int skl_tplg_get_token(struct device *dev,
|
||||
|
||||
case SKL_TKN_U32_PIN_MOD_ID:
|
||||
case SKL_TKN_U32_PIN_INST_ID:
|
||||
case SKL_TKN_UUID:
|
||||
ret = skl_tplg_fill_pins_info(dev,
|
||||
mconfig, tkn_elem, dir,
|
||||
pin_index);
|
||||
@ -2549,6 +2560,7 @@ static int skl_tplg_get_tokens(struct device *dev,
|
||||
struct snd_soc_tplg_vendor_value_elem *tkn_elem;
|
||||
int tkn_count = 0, ret;
|
||||
int off = 0, tuple_size = 0;
|
||||
bool is_module_guid = true;
|
||||
|
||||
if (block_size <= 0)
|
||||
return -EINVAL;
|
||||
@ -2564,8 +2576,15 @@ static int skl_tplg_get_tokens(struct device *dev,
|
||||
continue;
|
||||
|
||||
case SND_SOC_TPLG_TUPLE_TYPE_UUID:
|
||||
ret = skl_tplg_get_uuid(dev, mconfig->guid,
|
||||
array->uuid);
|
||||
if (is_module_guid) {
|
||||
ret = skl_tplg_get_uuid(dev, mconfig->guid,
|
||||
array->uuid);
|
||||
is_module_guid = false;
|
||||
} else {
|
||||
ret = skl_tplg_get_token(dev, array->value, skl,
|
||||
mconfig);
|
||||
}
|
||||
|
||||
if (ret < 0)
|
||||
return ret;
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user