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