Commit d9561474 authored by Sriram Periyasamy's avatar Sriram Periyasamy Committed by Mark Brown

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: default avatarSriram Periyasamy <sriramx.periyasamy@intel.com>
Signed-off-by: default avatarGuneshwor Singh <guneshwor.o.singh@intel.com>
Acked-By: default avatarVinod Koul <vinod.koul@intel.com>
Signed-off-by: default avatarMark Brown <broonie@kernel.org>
parent 22ebd666
...@@ -2054,6 +2054,8 @@ static int skl_tplg_fill_pin(struct device *dev, ...@@ -2054,6 +2054,8 @@ static int skl_tplg_fill_pin(struct device *dev,
struct skl_module_pin *m_pin, struct skl_module_pin *m_pin,
int pin_index) int pin_index)
{ {
int ret;
switch (tkn_elem->token) { switch (tkn_elem->token) {
case SKL_TKN_U32_PIN_MOD_ID: case SKL_TKN_U32_PIN_MOD_ID:
m_pin[pin_index].id.module_id = tkn_elem->value; m_pin[pin_index].id.module_id = tkn_elem->value;
...@@ -2063,6 +2065,14 @@ static int skl_tplg_fill_pin(struct device *dev, ...@@ -2063,6 +2065,14 @@ static int skl_tplg_fill_pin(struct device *dev,
m_pin[pin_index].id.instance_id = tkn_elem->value; m_pin[pin_index].id.instance_id = tkn_elem->value;
break; 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: default:
dev_err(dev, "%d Not a pin token\n", tkn_elem->token); dev_err(dev, "%d Not a pin token\n", tkn_elem->token);
return -EINVAL; return -EINVAL;
...@@ -2487,6 +2497,7 @@ static int skl_tplg_get_token(struct device *dev, ...@@ -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_MOD_ID:
case SKL_TKN_U32_PIN_INST_ID: case SKL_TKN_U32_PIN_INST_ID:
case SKL_TKN_UUID:
ret = skl_tplg_fill_pins_info(dev, ret = skl_tplg_fill_pins_info(dev,
mconfig, tkn_elem, dir, mconfig, tkn_elem, dir,
pin_index); pin_index);
...@@ -2549,6 +2560,7 @@ static int skl_tplg_get_tokens(struct device *dev, ...@@ -2549,6 +2560,7 @@ static int skl_tplg_get_tokens(struct device *dev,
struct snd_soc_tplg_vendor_value_elem *tkn_elem; struct snd_soc_tplg_vendor_value_elem *tkn_elem;
int tkn_count = 0, ret; int tkn_count = 0, ret;
int off = 0, tuple_size = 0; int off = 0, tuple_size = 0;
bool is_module_guid = true;
if (block_size <= 0) if (block_size <= 0)
return -EINVAL; return -EINVAL;
...@@ -2564,8 +2576,15 @@ static int skl_tplg_get_tokens(struct device *dev, ...@@ -2564,8 +2576,15 @@ static int skl_tplg_get_tokens(struct device *dev,
continue; continue;
case SND_SOC_TPLG_TUPLE_TYPE_UUID: case SND_SOC_TPLG_TUPLE_TYPE_UUID:
ret = skl_tplg_get_uuid(dev, mconfig->guid, if (is_module_guid) {
array->uuid); 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) if (ret < 0)
return ret; return ret;
......
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