Blame view

sound/usb/mixer.h 2.05 KB
3e1aebef6   Daniel Mack   ALSA: usb-audio: ...
1
2
  #ifndef __USBMIXER_H
  #define __USBMIXER_H
7b1eda223   Daniel Mack   ALSA: usb-mixer: ...
3
4
  struct usb_mixer_interface {
  	struct snd_usb_audio *chip;
1faa5d07a   Daniel Mack   ALSA: snd-usb: op...
5
  	struct usb_host_interface *hostif;
7b1eda223   Daniel Mack   ALSA: usb-mixer: ...
6
7
8
9
10
  	struct list_head list;
  	unsigned int ignore_ctl_error;
  	struct urb *urb;
  	/* array[MAX_ID_ELEMS], indexed by unit id */
  	struct usb_mixer_elem_info **id_elems;
23caaf19b   Daniel Mack   ALSA: usb-mixer: ...
11
12
  	/* the usb audio specification version this interface complies to */
  	int protocol;
7b1eda223   Daniel Mack   ALSA: usb-mixer: ...
13
14
15
16
17
18
19
20
21
22
23
  	/* Sound Blaster remote control stuff */
  	const struct rc_config *rc_cfg;
  	u32 rc_code;
  	wait_queue_head_t rc_waitq;
  	struct urb *rc_urb;
  	struct usb_ctrlrequest *rc_setup_packet;
  	u8 rc_buffer[6];
  
  	u8 audigy2nx_leds[3];
  	u8 xonar_u1_status;
  };
9e38658f7   Daniel Mack   ALSA: usb-audio: ...
24
25
26
27
28
29
30
31
32
33
  #define MAX_CHANNELS	16	/* max logical channels */
  
  enum {
  	USB_MIXER_BOOLEAN,
  	USB_MIXER_INV_BOOLEAN,
  	USB_MIXER_S8,
  	USB_MIXER_U8,
  	USB_MIXER_S16,
  	USB_MIXER_U16,
  };
7b1eda223   Daniel Mack   ALSA: usb-mixer: ...
34
35
36
37
38
39
40
41
  
  struct usb_mixer_elem_info {
  	struct usb_mixer_interface *mixer;
  	struct usb_mixer_elem_info *next_id_elem; /* list of controls with same id */
  	struct snd_ctl_elem_id *elem_id;
  	unsigned int id;
  	unsigned int control;	/* CS or ICN (high byte) */
  	unsigned int cmask; /* channel mask bitmap: 0 = master */
9f8141059   Eldad Zack   ALSA: usb-audio: ...
42
  	unsigned int idx_off; /* Control index offset */
a6a332591   Daniel Mack   ALSA: usb-audio: ...
43
44
  	unsigned int ch_readonly;
  	unsigned int master_readonly;
7b1eda223   Daniel Mack   ALSA: usb-mixer: ...
45
46
47
48
49
50
51
52
  	int channels;
  	int val_type;
  	int min, max, res;
  	int dBmin, dBmax;
  	int cached;
  	int cache_val[MAX_CHANNELS];
  	u8 initialized;
  };
3e1aebef6   Daniel Mack   ALSA: usb-audio: ...
53
54
55
  int snd_usb_create_mixer(struct snd_usb_audio *chip, int ctrlif,
  			 int ignore_error);
  void snd_usb_mixer_disconnect(struct list_head *p);
7b1eda223   Daniel Mack   ALSA: usb-mixer: ...
56
57
58
59
  void snd_usb_mixer_notify_id(struct usb_mixer_interface *mixer, int unitid);
  
  int snd_usb_mixer_set_ctl_value(struct usb_mixer_elem_info *cval,
  				int request, int validx, int value_set);
3e1aebef6   Daniel Mack   ALSA: usb-audio: ...
60

ef9d59708   Daniel Mack   ALSA: usb-audio: ...
61
62
  int snd_usb_mixer_add_control(struct usb_mixer_interface *mixer,
  			      struct snd_kcontrol *kctl);
285de9c08   Felix Homann   ALSA: usb-audio: ...
63
64
  int snd_usb_mixer_vol_tlv(struct snd_kcontrol *kcontrol, int op_flag,
  			  unsigned int size, unsigned int __user *_tlv);
400362f1d   Takashi Iwai   ALSA: usb-audio: ...
65
66
67
68
  #ifdef CONFIG_PM
  int snd_usb_mixer_suspend(struct usb_mixer_interface *mixer);
  int snd_usb_mixer_resume(struct usb_mixer_interface *mixer, bool reset_resume);
  #endif
3e1aebef6   Daniel Mack   ALSA: usb-audio: ...
69
  #endif /* __USBMIXER_H */