int err = 0;
struct tplg_elem *elem;
- elem = tplg_elem_new_common(tplg, cfg, OBJECT_TYPE_TLV);
+ elem = tplg_elem_new_common(tplg, cfg, NULL, OBJECT_TYPE_TLV);
if (!elem)
return -ENOMEM;
const char *id, *val = NULL;
int err;
- elem = tplg_elem_new_common(tplg, cfg, OBJECT_TYPE_BYTES);
+ elem = tplg_elem_new_common(tplg, cfg, NULL, OBJECT_TYPE_BYTES);
if (!elem)
return -ENOMEM;
const char *id, *val = NULL;
int err, j;
- elem = tplg_elem_new_common(tplg, cfg, OBJECT_TYPE_ENUM);
+ elem = tplg_elem_new_common(tplg, cfg, NULL, OBJECT_TYPE_ENUM);
if (!elem)
return -ENOMEM;
- /* init new mixer */
ec = elem->enum_ctrl;
elem_copy_text(ec->hdr.name, elem->id, SNDRV_CTL_ELEM_ID_NAME_MAXLEN);
ec->hdr.type = SND_SOC_TPLG_TYPE_ENUM;
const char *id, *val = NULL;
int err, j;
- elem = tplg_elem_new_common(tplg, cfg, OBJECT_TYPE_MIXER);
+ elem = tplg_elem_new_common(tplg, cfg, NULL, OBJECT_TYPE_MIXER);
if (!elem)
return -ENOMEM;
const char *id, *val = NULL;
int widget_type, err;
- elem = tplg_elem_new_common(tplg, cfg, OBJECT_TYPE_DAPM_WIDGET);
+ elem = tplg_elem_new_common(tplg, cfg, NULL, OBJECT_TYPE_DAPM_WIDGET);
if (!elem)
return -ENOMEM;
int err = 0;
struct tplg_elem *elem;
- elem = tplg_elem_new_common(tplg, cfg, OBJECT_TYPE_DATA);
+ elem = tplg_elem_new_common(tplg, cfg, NULL, OBJECT_TYPE_DATA);
if (!elem)
return -ENOMEM;
/* create a new common element and object */
struct tplg_elem* tplg_elem_new_common(snd_tplg_t *tplg,
- snd_config_t *cfg, enum object_type type)
+ snd_config_t *cfg, const char *name, enum object_type type)
{
struct tplg_elem *elem;
const char *id;
int obj_size = 0;
void *obj;
+ if (!cfg && !name)
+ return NULL;
+
elem = tplg_elem_new();
if (!elem)
return NULL;
- snd_config_get_id(cfg, &id);
- strncpy(elem->id, id, SNDRV_CTL_ELEM_ID_NAME_MAXLEN);
- elem->id[SNDRV_CTL_ELEM_ID_NAME_MAXLEN - 1] = 0;
+ /* do we get name from cfg */
+ if (cfg) {
+ snd_config_get_id(cfg, &id);
+ elem_copy_text(elem->id, id, SNDRV_CTL_ELEM_ID_NAME_MAXLEN);
+ elem->id[SNDRV_CTL_ELEM_ID_NAME_MAXLEN - 1] = 0;
+ } else if (name != NULL)
+ elem_copy_text(elem->id, name, SNDRV_CTL_ELEM_ID_NAME_MAXLEN);
switch (type) {
case OBJECT_TYPE_DATA:
const char *id;
int err;
- elem = tplg_elem_new_common(tplg, cfg, OBJECT_TYPE_STREAM_CONFIG);
+ elem = tplg_elem_new_common(tplg, cfg, NULL, OBJECT_TYPE_STREAM_CONFIG);
if (!elem)
return -ENOMEM;
char *s;
int err;
- elem = tplg_elem_new_common(tplg, cfg, OBJECT_TYPE_STREAM_CAPS);
+ elem = tplg_elem_new_common(tplg, cfg, NULL, OBJECT_TYPE_STREAM_CAPS);
if (!elem)
return -ENOMEM;
const char *id, *val = NULL;
int err;
- elem = tplg_elem_new_common(tplg, cfg, OBJECT_TYPE_PCM);
+ elem = tplg_elem_new_common(tplg, cfg, NULL, OBJECT_TYPE_PCM);
if (!elem)
return -ENOMEM;
const char *id, *val = NULL;
int err;
- elem = tplg_elem_new_common(tplg, cfg, OBJECT_TYPE_BE);
+ elem = tplg_elem_new_common(tplg, cfg, NULL, OBJECT_TYPE_BE);
if (!elem)
return -ENOMEM;
const char *id, *val = NULL;
int err;
- elem = tplg_elem_new_common(tplg, cfg, OBJECT_TYPE_CC);
+ elem = tplg_elem_new_common(tplg, cfg, NULL, OBJECT_TYPE_CC);
if (!elem)
return -ENOMEM;
int err = 0;
struct tplg_elem *elem;
- elem = tplg_elem_new_common(tplg, cfg, OBJECT_TYPE_TEXT);
+ elem = tplg_elem_new_common(tplg, cfg, NULL, OBJECT_TYPE_TEXT);
if (!elem)
return -ENOMEM;
const char* id,
unsigned int type);
struct tplg_elem* tplg_elem_new_common(snd_tplg_t *tplg,
- snd_config_t *cfg, enum object_type type);
+ snd_config_t *cfg, const char *name, enum object_type type);
static inline void elem_copy_text(char *dest, const char *src, int len)
{