Lines Matching refs:mixer

80 	struct usb_mixer_interface *mixer;  member
141 ((cval)->head.mixer->ignore_ctl_error ? 0 : (err))
308 struct snd_usb_audio *chip = cval->head.mixer->chip; in get_ctl_value_v1()
341 struct snd_usb_audio *chip = cval->head.mixer->chip; in get_ctl_value_v2()
404 return (cval->head.mixer->protocol == UAC_VERSION_1) ? in get_ctl_value()
435 if (!cval->head.mixer->ignore_ctl_error) in snd_usb_get_cur_mix_value()
436 usb_audio_dbg(cval->head.mixer->chip, in snd_usb_get_cur_mix_value()
453 struct snd_usb_audio *chip = cval->head.mixer->chip; in snd_usb_mixer_set_ctl_value()
459 if (cval->head.mixer->protocol == UAC_VERSION_1) { in snd_usb_mixer_set_ctl_value()
517 usb_audio_dbg(cval->head.mixer->chip, in snd_usb_set_cur_mix_value()
579 struct usb_mixer_interface *mixer = list->mixer; in snd_usb_mixer_add_control() local
582 while (snd_ctl_find_id(mixer->chip->card, &kctl->id)) in snd_usb_mixer_add_control()
584 if ((err = snd_ctl_add(mixer->chip->card, kctl)) < 0) { in snd_usb_mixer_add_control()
585 usb_audio_dbg(mixer->chip, "cannot add control (err = %d)\n", in snd_usb_mixer_add_control()
590 list->next_id_elem = mixer->id_elems[list->id]; in snd_usb_mixer_add_control()
591 mixer->id_elems[list->id] = list; in snd_usb_mixer_add_control()
714 if (state->mixer->protocol == UAC_VERSION_1) { in check_input_term()
743 term->chconfig = uac_mixer_unit_wChannelConfig(d, state->mixer->protocol); in check_input_term()
766 if (state->mixer->protocol == UAC_VERSION_2 && in check_input_term()
780 term->chconfig = uac_processing_unit_wChannelConfig(d, state->mixer->protocol); in check_input_term()
781 term->name = uac_processing_unit_iProcessing(d, state->mixer->protocol); in check_input_term()
841 struct snd_usb_audio *chip = cval->head.mixer->chip; in volume_control_quirks()
968 usb_audio_err(cval->head.mixer->chip, in get_min_max_with_quirks()
970 cval->head.id, snd_usb_ctrl_intf(cval->head.mixer->chip), in get_min_max_with_quirks()
1075 snd_ctl_notify(cval->head.mixer->chip->card, in mixer_ctl_feature_info()
1246 snd_usb_mixer_elem_init_std(&cval->head, state->mixer, unitid); in build_feature_ctl()
1250 if (state->mixer->protocol == UAC_VERSION_1) in build_feature_ctl()
1315 check_no_speaker_on_headset(kctl, state->mixer->chip->card); in build_feature_ctl()
1351 snd_usb_mixer_fu_apply_quirk(state->mixer, cval, unitid, kctl); in build_feature_ctl()
1390 if (state->mixer->protocol == UAC_VERSION_1) { in parse_audio_feature_unit()
1450 if (state->mixer->protocol == UAC_VERSION_1) { in parse_audio_feature_unit()
1546 snd_usb_mixer_elem_init_std(&cval->head, state->mixer, unitid); in build_mixer_unit_ctl()
1550 __u8 *c = uac_mixer_unit_bmControls(desc, state->mixer->protocol); in build_mixer_unit_ctl()
1619 state->mixer->protocol); in parse_audio_mixer_unit()
1798 desc->bLength < num_ins + uac_processing_unit_bControlSize(desc, state->mixer->protocol)) { in build_audio_procunit()
1816 __u8 *controls = uac_processing_unit_bmControls(desc, state->mixer->protocol); in build_audio_procunit()
1826 snd_usb_mixer_elem_init_std(&cval->head, state->mixer, unitid); in build_audio_procunit()
1833 __u8 *control_spec = uac_processing_unit_specific(desc, state->mixer->protocol); in build_audio_procunit()
1865 nameid = uac_processing_unit_iProcessing(desc, state->mixer->protocol); in build_audio_procunit()
2029 snd_usb_mixer_elem_init_std(&cval->head, state->mixer, unitid); in parse_audio_selector_unit()
2037 if (state->mixer->protocol == UAC_VERSION_1) in parse_audio_selector_unit()
2134 if (state->mixer->protocol == UAC_VERSION_1) in parse_audio_unit()
2140 if (state->mixer->protocol == UAC_VERSION_1) in parse_audio_unit()
2153 static void snd_usb_mixer_free(struct usb_mixer_interface *mixer) in snd_usb_mixer_free() argument
2155 kfree(mixer->id_elems); in snd_usb_mixer_free()
2156 if (mixer->urb) { in snd_usb_mixer_free()
2157 kfree(mixer->urb->transfer_buffer); in snd_usb_mixer_free()
2158 usb_free_urb(mixer->urb); in snd_usb_mixer_free()
2160 usb_free_urb(mixer->rc_urb); in snd_usb_mixer_free()
2161 kfree(mixer->rc_setup_packet); in snd_usb_mixer_free()
2162 kfree(mixer); in snd_usb_mixer_free()
2167 struct usb_mixer_interface *mixer = device->device_data; in snd_usb_mixer_dev_free() local
2168 snd_usb_mixer_free(mixer); in snd_usb_mixer_dev_free()
2177 static int snd_usb_mixer_controls(struct usb_mixer_interface *mixer) in snd_usb_mixer_controls() argument
2185 state.chip = mixer->chip; in snd_usb_mixer_controls()
2186 state.mixer = mixer; in snd_usb_mixer_controls()
2187 state.buffer = mixer->hostif->extra; in snd_usb_mixer_controls()
2188 state.buflen = mixer->hostif->extralen; in snd_usb_mixer_controls()
2195 mixer->ignore_ctl_error = map->ignore_ctl_error; in snd_usb_mixer_controls()
2201 while ((p = snd_usb_find_csint_desc(mixer->hostif->extra, in snd_usb_mixer_controls()
2202 mixer->hostif->extralen, in snd_usb_mixer_controls()
2204 if (mixer->protocol == UAC_VERSION_1) { in snd_usb_mixer_controls()
2244 void snd_usb_mixer_notify_id(struct usb_mixer_interface *mixer, int unitid) in snd_usb_mixer_notify_id() argument
2248 for (list = mixer->id_elems[unitid]; list; list = list->next_id_elem) in snd_usb_mixer_notify_id()
2249 snd_ctl_notify(mixer->chip->card, SNDRV_CTL_EVENT_MASK_VALUE, in snd_usb_mixer_notify_id()
2271 struct usb_mixer_interface *mixer; in snd_usb_mixer_proc_read() local
2275 list_for_each_entry(mixer, &chip->mixer_list, list) { in snd_usb_mixer_proc_read()
2279 mixer->ignore_ctl_error); in snd_usb_mixer_proc_read()
2282 for (list = mixer->id_elems[unitid]; list; in snd_usb_mixer_proc_read()
2297 static void snd_usb_mixer_interrupt_v2(struct usb_mixer_interface *mixer, in snd_usb_mixer_interrupt_v2() argument
2306 usb_audio_dbg(mixer->chip, in snd_usb_mixer_interrupt_v2()
2312 for (list = mixer->id_elems[unitid]; list; list = list->next_id_elem) { in snd_usb_mixer_interrupt_v2()
2330 snd_ctl_notify(mixer->chip->card, SNDRV_CTL_EVENT_MASK_VALUE, in snd_usb_mixer_interrupt_v2()
2343 usb_audio_dbg(mixer->chip, in snd_usb_mixer_interrupt_v2()
2353 struct usb_mixer_interface *mixer = urb->context; in snd_usb_mixer_interrupt() local
2360 if (mixer->protocol == UAC_VERSION_1) { in snd_usb_mixer_interrupt()
2376 snd_usb_mixer_rc_memory_change(mixer, status->bOriginator); in snd_usb_mixer_interrupt()
2378 snd_usb_mixer_notify_id(mixer, status->bOriginator); in snd_usb_mixer_interrupt()
2391 snd_usb_mixer_interrupt_v2(mixer, msg->bAttribute, in snd_usb_mixer_interrupt()
2401 urb->dev = mixer->chip->dev; in snd_usb_mixer_interrupt()
2407 static int snd_usb_mixer_status_create(struct usb_mixer_interface *mixer) in snd_usb_mixer_status_create() argument
2415 if (get_iface_desc(mixer->hostif)->bNumEndpoints < 1) in snd_usb_mixer_status_create()
2417 ep = get_endpoint(mixer->hostif, 0); in snd_usb_mixer_status_create()
2426 mixer->urb = usb_alloc_urb(0, GFP_KERNEL); in snd_usb_mixer_status_create()
2427 if (!mixer->urb) { in snd_usb_mixer_status_create()
2431 usb_fill_int_urb(mixer->urb, mixer->chip->dev, in snd_usb_mixer_status_create()
2432 usb_rcvintpipe(mixer->chip->dev, epnum), in snd_usb_mixer_status_create()
2434 snd_usb_mixer_interrupt, mixer, ep->bInterval); in snd_usb_mixer_status_create()
2435 usb_submit_urb(mixer->urb, GFP_KERNEL); in snd_usb_mixer_status_create()
2445 struct usb_mixer_interface *mixer; in snd_usb_create_mixer() local
2451 mixer = kzalloc(sizeof(*mixer), GFP_KERNEL); in snd_usb_create_mixer()
2452 if (!mixer) in snd_usb_create_mixer()
2454 mixer->chip = chip; in snd_usb_create_mixer()
2455 mixer->ignore_ctl_error = ignore_error; in snd_usb_create_mixer()
2456 mixer->id_elems = kcalloc(MAX_ID_ELEMS, sizeof(*mixer->id_elems), in snd_usb_create_mixer()
2458 if (!mixer->id_elems) { in snd_usb_create_mixer()
2459 kfree(mixer); in snd_usb_create_mixer()
2463 mixer->hostif = &usb_ifnum_to_if(chip->dev, ctrlif)->altsetting[0]; in snd_usb_create_mixer()
2464 switch (get_iface_desc(mixer->hostif)->bInterfaceProtocol) { in snd_usb_create_mixer()
2467 mixer->protocol = UAC_VERSION_1; in snd_usb_create_mixer()
2470 mixer->protocol = UAC_VERSION_2; in snd_usb_create_mixer()
2474 if ((err = snd_usb_mixer_controls(mixer)) < 0 || in snd_usb_create_mixer()
2475 (err = snd_usb_mixer_status_create(mixer)) < 0) in snd_usb_create_mixer()
2478 snd_usb_mixer_apply_create_quirk(mixer); in snd_usb_create_mixer()
2480 err = snd_device_new(chip->card, SNDRV_DEV_CODEC, mixer, &dev_ops); in snd_usb_create_mixer()
2488 list_add(&mixer->list, &chip->mixer_list); in snd_usb_create_mixer()
2492 snd_usb_mixer_free(mixer); in snd_usb_create_mixer()
2496 void snd_usb_mixer_disconnect(struct usb_mixer_interface *mixer) in snd_usb_mixer_disconnect() argument
2498 usb_kill_urb(mixer->urb); in snd_usb_mixer_disconnect()
2499 usb_kill_urb(mixer->rc_urb); in snd_usb_mixer_disconnect()
2504 static void snd_usb_mixer_inactivate(struct usb_mixer_interface *mixer) in snd_usb_mixer_inactivate() argument
2506 usb_kill_urb(mixer->urb); in snd_usb_mixer_inactivate()
2507 usb_kill_urb(mixer->rc_urb); in snd_usb_mixer_inactivate()
2510 static int snd_usb_mixer_activate(struct usb_mixer_interface *mixer) in snd_usb_mixer_activate() argument
2514 if (mixer->urb) { in snd_usb_mixer_activate()
2515 err = usb_submit_urb(mixer->urb, GFP_NOIO); in snd_usb_mixer_activate()
2523 int snd_usb_mixer_suspend(struct usb_mixer_interface *mixer) in snd_usb_mixer_suspend() argument
2525 snd_usb_mixer_inactivate(mixer); in snd_usb_mixer_suspend()
2559 int snd_usb_mixer_resume(struct usb_mixer_interface *mixer, bool reset_resume) in snd_usb_mixer_resume() argument
2567 for (list = mixer->id_elems[id]; list; in snd_usb_mixer_resume()
2578 return snd_usb_mixer_activate(mixer); in snd_usb_mixer_resume()
2583 struct usb_mixer_interface *mixer, in snd_usb_mixer_elem_init_std() argument
2586 list->mixer = mixer; in snd_usb_mixer_elem_init_std()