Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
awilliam
GitHub Repository: awilliam/linux-vfio
Path: blob/master/sound/usb/mixer.h
10814 views
1
#ifndef __USBMIXER_H
2
#define __USBMIXER_H
3
4
struct usb_mixer_interface {
5
struct snd_usb_audio *chip;
6
struct list_head list;
7
unsigned int ignore_ctl_error;
8
struct urb *urb;
9
/* array[MAX_ID_ELEMS], indexed by unit id */
10
struct usb_mixer_elem_info **id_elems;
11
12
/* the usb audio specification version this interface complies to */
13
int protocol;
14
15
/* Sound Blaster remote control stuff */
16
const struct rc_config *rc_cfg;
17
u32 rc_code;
18
wait_queue_head_t rc_waitq;
19
struct urb *rc_urb;
20
struct usb_ctrlrequest *rc_setup_packet;
21
u8 rc_buffer[6];
22
23
u8 audigy2nx_leds[3];
24
u8 xonar_u1_status;
25
};
26
27
#define MAX_CHANNELS 16 /* max logical channels */
28
29
enum {
30
USB_MIXER_BOOLEAN,
31
USB_MIXER_INV_BOOLEAN,
32
USB_MIXER_S8,
33
USB_MIXER_U8,
34
USB_MIXER_S16,
35
USB_MIXER_U16,
36
};
37
38
struct usb_mixer_elem_info {
39
struct usb_mixer_interface *mixer;
40
struct usb_mixer_elem_info *next_id_elem; /* list of controls with same id */
41
struct snd_ctl_elem_id *elem_id;
42
unsigned int id;
43
unsigned int control; /* CS or ICN (high byte) */
44
unsigned int cmask; /* channel mask bitmap: 0 = master */
45
unsigned int ch_readonly;
46
unsigned int master_readonly;
47
int channels;
48
int val_type;
49
int min, max, res;
50
int dBmin, dBmax;
51
int cached;
52
int cache_val[MAX_CHANNELS];
53
u8 initialized;
54
};
55
56
int snd_usb_create_mixer(struct snd_usb_audio *chip, int ctrlif,
57
int ignore_error);
58
void snd_usb_mixer_disconnect(struct list_head *p);
59
60
void snd_usb_mixer_notify_id(struct usb_mixer_interface *mixer, int unitid);
61
62
int snd_usb_mixer_set_ctl_value(struct usb_mixer_elem_info *cval,
63
int request, int validx, int value_set);
64
void snd_usb_mixer_inactivate(struct usb_mixer_interface *mixer);
65
int snd_usb_mixer_activate(struct usb_mixer_interface *mixer);
66
67
int snd_usb_mixer_add_control(struct usb_mixer_interface *mixer,
68
struct snd_kcontrol *kctl);
69
70
#endif /* __USBMIXER_H */
71
72