Lines 1821-1826
static void build_connector_control(struct usb_mixer_interface *mixer,
Link Here
|
1821 |
|
1821 |
|
1822 |
/* phantom connector - no actual detection */ |
1822 |
/* phantom connector - no actual detection */ |
1823 |
if (phantom) { |
1823 |
if (phantom) { |
|
|
1824 |
pr_info("XXX creating a phantom ctl for %d -> %d\n", |
1825 |
cval->head.id, cval->assoc_id); |
1824 |
snd_usb_mixer_add_control(&cval->head, NULL); |
1826 |
snd_usb_mixer_add_control(&cval->head, NULL); |
1825 |
return; |
1827 |
return; |
1826 |
} |
1828 |
} |
Lines 3230-3247
static void mixer_notify_id(struct usb_mixer_interface *mixer, int unitid,
Link Here
|
3230 |
if (hop >= 2) |
3232 |
if (hop >= 2) |
3231 |
return; |
3233 |
return; |
3232 |
|
3234 |
|
|
|
3235 |
pr_info("XXX mixer_notify_id %d\n", unitid); |
3233 |
for_each_mixer_elem(list, mixer, unitid) { |
3236 |
for_each_mixer_elem(list, mixer, unitid) { |
3234 |
struct usb_mixer_elem_info *info = |
3237 |
struct usb_mixer_elem_info *info = |
3235 |
mixer_elem_list_to_info(list); |
3238 |
mixer_elem_list_to_info(list); |
3236 |
/* invalidate cache, so the value is read from the device */ |
3239 |
/* invalidate cache, so the value is read from the device */ |
3237 |
info->cached = 0; |
3240 |
info->cached = 0; |
3238 |
if (!list->kctl) { |
3241 |
if (!list->kctl) { |
3239 |
if (info->assoc_id) |
3242 |
if (info->assoc_id) { |
3240 |
mixer_notify_id(mixer, info->assoc_id, ++hop); |
3243 |
pr_info("XXX delegating notify %d -> %d\n", |
3241 |
return; |
3244 |
unitid, info->assoc_id); |
|
|
3245 |
mixer_notify_id(mixer, info->assoc_id, hop + 1); |
3246 |
} |
3247 |
} else { |
3248 |
pr_info("XXX snd_ctl_notify %s\n", list->kctl->id.name); |
3249 |
snd_ctl_notify(mixer->chip->card, |
3250 |
SNDRV_CTL_EVENT_MASK_VALUE, |
3251 |
&list->kctl->id); |
3242 |
} |
3252 |
} |
3243 |
snd_ctl_notify(mixer->chip->card, SNDRV_CTL_EVENT_MASK_VALUE, |
|
|
3244 |
&list->kctl->id); |
3245 |
} |
3253 |
} |
3246 |
} |
3254 |
} |
3247 |
|
3255 |
|