10 Jun
2015
10 Jun
'15
8:41 p.m.
At Wed, 10 Jun 2015 18:36:01 +0530, Vinod Koul wrote:
+/**
- snd_hdac_ext_bus_get_link_index - get link based on codec name
- @ebus: HD-audio extended core bus
- @codec_name: codec name
- */
+struct hdac_ext_link *snd_hdac_ext_bus_get_link(struct hdac_ext_bus *ebus,
const char *codec_name)
+{
- int i;
- struct hdac_ext_link *hlink = NULL;
- char name[32];
- list_for_each_entry(hlink, &ebus->hlink_list, list) {
for (i = 0; i < HDA_MAX_CODECS; i++) {
snprintf(name, sizeof(name), "codec#%03x", hlink->codec[i]);
if (!strncmp(name, codec_name, strlen(codec_name)))
return hlink;
Is this name supposed to be identical with the string the patch 1 sets? If so, this looks incompatible.
Also, it'd be easier to parse the string only once like:
int bus_idx, addr;
if (sscanf(codec_name, "ehdaudio%dD%d", &bus_idx, &addr) != 2) return NULL; if (ebus->index != bus_idx) return NULL; list_for_each_entry(hlink, &ebus->hlink_list, list) if (hlink->lsdiid && (0x1 << addr)) return hlink;
return NULL;
Takashi