~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

TOMOYO Linux Cross Reference
Linux/sound/usb/mixer_us16x08.h

Version: ~ [ linux-6.11.5 ] ~ [ linux-6.10.14 ] ~ [ linux-6.9.12 ] ~ [ linux-6.8.12 ] ~ [ linux-6.7.12 ] ~ [ linux-6.6.58 ] ~ [ linux-6.5.13 ] ~ [ linux-6.4.16 ] ~ [ linux-6.3.13 ] ~ [ linux-6.2.16 ] ~ [ linux-6.1.114 ] ~ [ linux-6.0.19 ] ~ [ linux-5.19.17 ] ~ [ linux-5.18.19 ] ~ [ linux-5.17.15 ] ~ [ linux-5.16.20 ] ~ [ linux-5.15.169 ] ~ [ linux-5.14.21 ] ~ [ linux-5.13.19 ] ~ [ linux-5.12.19 ] ~ [ linux-5.11.22 ] ~ [ linux-5.10.228 ] ~ [ linux-5.9.16 ] ~ [ linux-5.8.18 ] ~ [ linux-5.7.19 ] ~ [ linux-5.6.19 ] ~ [ linux-5.5.19 ] ~ [ linux-5.4.284 ] ~ [ linux-5.3.18 ] ~ [ linux-5.2.21 ] ~ [ linux-5.1.21 ] ~ [ linux-5.0.21 ] ~ [ linux-4.20.17 ] ~ [ linux-4.19.322 ] ~ [ linux-4.18.20 ] ~ [ linux-4.17.19 ] ~ [ linux-4.16.18 ] ~ [ linux-4.15.18 ] ~ [ linux-4.14.336 ] ~ [ linux-4.13.16 ] ~ [ linux-4.12.14 ] ~ [ linux-4.11.12 ] ~ [ linux-4.10.17 ] ~ [ linux-4.9.337 ] ~ [ linux-4.4.302 ] ~ [ linux-3.10.108 ] ~ [ linux-2.6.32.71 ] ~ [ linux-2.6.0 ] ~ [ linux-2.4.37.11 ] ~ [ unix-v6-master ] ~ [ ccs-tools-1.8.9 ] ~ [ policy-sample ] ~
Architecture: ~ [ i386 ] ~ [ alpha ] ~ [ m68k ] ~ [ mips ] ~ [ ppc ] ~ [ sparc ] ~ [ sparc64 ] ~

  1 /* SPDX-License-Identifier: GPL-2.0 */
  2 #ifndef __USB_MIXER_US16X08_H
  3 #define __USB_MIXER_US16X08_H
  4 
  5 #define SND_US16X08_MAX_CHANNELS 16
  6 
  7 /* define some bias, cause some alsa-mixers wont work with
  8  * negative ranges or if mixer-min != 0
  9  */
 10 #define SND_US16X08_NO_BIAS 0
 11 #define SND_US16X08_FADER_BIAS 127
 12 #define SND_US16X08_EQ_HIGHFREQ_BIAS 0x20
 13 #define SND_US16X08_COMP_THRESHOLD_BIAS 0x20
 14 #define SND_US16X08_COMP_ATTACK_BIAS 2
 15 #define SND_US16X08_COMP_RELEASE_BIAS 1
 16 
 17 /* get macro for components of kcontrol private_value */
 18 #define SND_US16X08_KCBIAS(x) (((x)->private_value >> 24) & 0xff)
 19 #define SND_US16X08_KCSTEP(x) (((x)->private_value >> 16) & 0xff)
 20 #define SND_US16X08_KCMIN(x) (((x)->private_value >> 8) & 0xff)
 21 #define SND_US16X08_KCMAX(x) (((x)->private_value >> 0) & 0xff)
 22 /* set macro for kcontrol private_value */
 23 #define SND_US16X08_KCSET(bias, step, min, max)  \
 24         (((bias) << 24) | ((step) << 16) | ((min) << 8) | (max))
 25 
 26 /* the URB request/type to control Tascam mixers */
 27 #define SND_US16X08_URB_REQUEST 0x1D
 28 #define SND_US16X08_URB_REQUESTTYPE 0x40
 29 
 30 /* the URB params to retrieve meter ranges */
 31 #define SND_US16X08_URB_METER_REQUEST       0x1e
 32 #define SND_US16X08_URB_METER_REQUESTTYPE   0xc0
 33 
 34 #define MUA0(x, y) ((x)[(y) * 10 + 4])
 35 #define MUA1(x, y) ((x)[(y) * 10 + 5])
 36 #define MUA2(x, y) ((x)[(y) * 10 + 6])
 37 #define MUB0(x, y) ((x)[(y) * 10 + 7])
 38 #define MUB1(x, y) ((x)[(y) * 10 + 8])
 39 #define MUB2(x, y) ((x)[(y) * 10 + 9])
 40 #define MUC0(x, y) ((x)[(y) * 10 + 10])
 41 #define MUC1(x, y) ((x)[(y) * 10 + 11])
 42 #define MUC2(x, y) ((x)[(y) * 10 + 12])
 43 #define MUC3(x, y) ((x)[(y) * 10 + 13])
 44 
 45 /* Common Channel control IDs */
 46 #define SND_US16X08_ID_BYPASS 0x45
 47 #define SND_US16X08_ID_BUSS_OUT 0x44
 48 #define SND_US16X08_ID_PHASE 0x85
 49 #define SND_US16X08_ID_MUTE 0x83
 50 #define SND_US16X08_ID_FADER 0x81
 51 #define SND_US16X08_ID_PAN 0x82
 52 #define SND_US16X08_ID_METER 0xB1
 53 
 54 #define SND_US16X08_ID_EQ_BAND_COUNT 4
 55 #define SND_US16X08_ID_EQ_PARAM_COUNT 4
 56 
 57 /* EQ level IDs */
 58 #define SND_US16X08_ID_EQLOWLEVEL 0x01
 59 #define SND_US16X08_ID_EQLOWMIDLEVEL 0x02
 60 #define SND_US16X08_ID_EQHIGHMIDLEVEL 0x03
 61 #define SND_US16X08_ID_EQHIGHLEVEL 0x04
 62 
 63 /* EQ frequence IDs */
 64 #define SND_US16X08_ID_EQLOWFREQ 0x11
 65 #define SND_US16X08_ID_EQLOWMIDFREQ 0x12
 66 #define SND_US16X08_ID_EQHIGHMIDFREQ 0x13
 67 #define SND_US16X08_ID_EQHIGHFREQ 0x14
 68 
 69 /* EQ width IDs */
 70 #define SND_US16X08_ID_EQLOWMIDWIDTH 0x22
 71 #define SND_US16X08_ID_EQHIGHMIDWIDTH 0x23
 72 
 73 #define SND_US16X08_ID_EQENABLE 0x30
 74 
 75 #define EQ_STORE_BAND_IDX(x) ((x) & 0xf)
 76 #define EQ_STORE_PARAM_IDX(x) (((x) & 0xf0) >> 4)
 77 
 78 #define SND_US16X08_ID_ROUTE 0x00
 79 
 80 /* Compressor Ids */
 81 #define SND_US16X08_ID_COMP_BASE        0x32
 82 #define SND_US16X08_ID_COMP_THRESHOLD   SND_US16X08_ID_COMP_BASE
 83 #define SND_US16X08_ID_COMP_RATIO       (SND_US16X08_ID_COMP_BASE + 1)
 84 #define SND_US16X08_ID_COMP_ATTACK      (SND_US16X08_ID_COMP_BASE + 2)
 85 #define SND_US16X08_ID_COMP_RELEASE     (SND_US16X08_ID_COMP_BASE + 3)
 86 #define SND_US16X08_ID_COMP_GAIN        (SND_US16X08_ID_COMP_BASE + 4)
 87 #define SND_US16X08_ID_COMP_SWITCH      (SND_US16X08_ID_COMP_BASE + 5)
 88 #define SND_US16X08_ID_COMP_COUNT       6
 89 
 90 #define COMP_STORE_IDX(x) ((x) - SND_US16X08_ID_COMP_BASE)
 91 
 92 struct snd_us16x08_eq_store {
 93         u8 val[SND_US16X08_ID_EQ_BAND_COUNT][SND_US16X08_ID_EQ_PARAM_COUNT]
 94                 [SND_US16X08_MAX_CHANNELS];
 95 };
 96 
 97 struct snd_us16x08_comp_store {
 98         u8 val[SND_US16X08_ID_COMP_COUNT][SND_US16X08_MAX_CHANNELS];
 99 };
100 
101 struct snd_us16x08_meter_store {
102         int meter_level[SND_US16X08_MAX_CHANNELS];
103         int master_level[2]; /* level of meter for master output */
104         int comp_index; /* round trip channel selector */
105         int comp_active_index; /* channel select from user space mixer */
106         int comp_level[16]; /* compressor reduction level */
107         struct snd_us16x08_comp_store *comp_store;
108 };
109 
110 struct snd_us16x08_control_params {
111         const struct snd_kcontrol_new *kcontrol_new;
112         int control_id;
113         int type;
114         int num_channels;
115         const char *name;
116         int default_val;
117 };
118 
119 #define snd_us16x08_switch_info snd_ctl_boolean_mono_info
120 
121 int snd_us16x08_controls_create(struct usb_mixer_interface *mixer);
122 #endif /* __USB_MIXER_US16X08_H */
123 

~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

kernel.org | git.kernel.org | LWN.net | Project Home | SVN repository | Mail admin

Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.

sflogo.php