+struct skl_dfw_v4_pipe {
u8 pipe_id;u8 pipe_priority;u16 conn_type:4;u16 rsvd:4;u16 memory_pages:8;+} __packed;
+struct skl_dfw_v4_module {
char uuid[SKL_UUID_STR_SZ];
Any reason to not have this as u8? commit 09305da97c7808b900985526aa9198233f32fb37 had changed this to u8..
<snip>
mconfig->params_fixup = dfw->params_fixup;mconfig->converter = dfw->converter;mconfig->m_type = dfw->module_type;mconfig->vbus_id = dfw->vbus_id;mconfig->module->resources[0].is_pages = dfw->mem_pages;ret = skl_tplg_add_pipe_v4(dev, mconfig, skl, &dfw->pipe);if (ret)return ret;mconfig->dev_type = dfw->dev_type;mconfig->hw_conn_type = dfw->hw_conn_type;mconfig->time_slot = dfw->time_slot;mconfig->formats_config.caps_size = dfw->caps.caps_size;chromeos-3.18 has this: if (dfw_config->is_loadable) memcpy(mconfig->guid, dfw_config->uuid, ARRAY_SIZE(dfw_config->uuid));
Is this needed here?
Direct memcpy doesn't work anymore since the uuid format is different. The above is replaced with (unconditional)
ret = guid_parse(dfw->uuid, (guid_t *)mconfig->guid); if (ret) return ret;at the beginning of skl_tplg_get_pvt_data_v4(). The new code, as far as I can see, loads the uuid unconditionally if it finds SND_SOC_TPLG_TUPLE_TYPE_UUID. I wanted to be on the safe side and decided to do the same.
In the new code, still does a memcpy(). So, I am not sure if I understand why memcpy() does not work.
if (uuid_tkn->token == SKL_TKN_UUID) { memcpy(guid, &uuid_tkn->uuid, 16); return 0; }
Replied on the older mail since Pierre had a similar question as well.
--Shreyas
--