cregit-Linux how code gets into the kernel

Release 4.14 sound/usb/mixer_us16x08.h

Directory: sound/usb
/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __USB_MIXER_US16X08_H

#define __USB_MIXER_US16X08_H


#define SND_US16X08_MAX_CHANNELS 16

/* define some bias, cause some alsa-mixers wont work with
 * negative ranges or if mixer-min != 0
 */

#define SND_US16X08_NO_BIAS 0

#define SND_US16X08_FADER_BIAS 127

#define SND_US16X08_EQ_HIGHFREQ_BIAS 0x20

#define SND_US16X08_COMP_THRESHOLD_BIAS 0x20

#define SND_US16X08_COMP_ATTACK_BIAS 2

#define SND_US16X08_COMP_RELEASE_BIAS 1

/* get macro for components of kcontrol private_value */

#define SND_US16X08_KCBIAS(x) (((x)->private_value >> 24) & 0xff)

#define SND_US16X08_KCSTEP(x) (((x)->private_value >> 16) & 0xff)

#define SND_US16X08_KCMIN(x) (((x)->private_value >> 8) & 0xff)

#define SND_US16X08_KCMAX(x) (((x)->private_value >> 0) & 0xff)
/* set macro for kcontrol private_value */

#define SND_US16X08_KCSET(bias, step, min, max)  \
	(((bias) << 24) | ((step) << 16) | ((min) << 8) | (max))

/* the URB request/type to control Tascam mixers */

#define SND_US16X08_URB_REQUEST 0x1D

#define SND_US16X08_URB_REQUESTTYPE 0x40

/* the URB params to retrieve meter ranges */

#define SND_US16X08_URB_METER_REQUEST       0x1e

#define SND_US16X08_URB_METER_REQUESTTYPE   0xc0


#define MUA0(x, y) ((x)[(y) * 10 + 4])

#define MUA1(x, y) ((x)[(y) * 10 + 5])

#define MUA2(x, y) ((x)[(y) * 10 + 6])

#define MUB0(x, y) ((x)[(y) * 10 + 7])

#define MUB1(x, y) ((x)[(y) * 10 + 8])

#define MUB2(x, y) ((x)[(y) * 10 + 9])

#define MUC0(x, y) ((x)[(y) * 10 + 10])

#define MUC1(x, y) ((x)[(y) * 10 + 11])

#define MUC2(x, y) ((x)[(y) * 10 + 12])

#define MUC3(x, y) ((x)[(y) * 10 + 13])

/* Common Channel control IDs */

#define SND_US16X08_ID_BYPASS 0x45

#define SND_US16X08_ID_BUSS_OUT 0x44

#define SND_US16X08_ID_PHASE 0x85

#define SND_US16X08_ID_MUTE 0x83

#define SND_US16X08_ID_FADER 0x81

#define SND_US16X08_ID_PAN 0x82

#define SND_US16X08_ID_METER 0xB1


#define SND_US16X08_ID_EQ_BAND_COUNT 4

#define SND_US16X08_ID_EQ_PARAM_COUNT 4

/* EQ level IDs */

#define SND_US16X08_ID_EQLOWLEVEL 0x01

#define SND_US16X08_ID_EQLOWMIDLEVEL 0x02

#define SND_US16X08_ID_EQHIGHMIDLEVEL 0x03

#define SND_US16X08_ID_EQHIGHLEVEL 0x04

/* EQ frequence IDs */

#define SND_US16X08_ID_EQLOWFREQ 0x11

#define SND_US16X08_ID_EQLOWMIDFREQ 0x12

#define SND_US16X08_ID_EQHIGHMIDFREQ 0x13

#define SND_US16X08_ID_EQHIGHFREQ 0x14

/* EQ width IDs */

#define SND_US16X08_ID_EQLOWMIDWIDTH 0x22

#define SND_US16X08_ID_EQHIGHMIDWIDTH 0x23


#define SND_US16X08_ID_EQENABLE 0x30


#define EQ_STORE_BAND_IDX(x) ((x) & 0xf)

#define EQ_STORE_PARAM_IDX(x) (((x) & 0xf0) >> 4)


#define SND_US16X08_ID_ROUTE 0x00

/* Compressor Ids */

#define SND_US16X08_ID_COMP_BASE	0x32

#define SND_US16X08_ID_COMP_THRESHOLD	SND_US16X08_ID_COMP_BASE

#define SND_US16X08_ID_COMP_RATIO	(SND_US16X08_ID_COMP_BASE + 1)

#define SND_US16X08_ID_COMP_ATTACK	(SND_US16X08_ID_COMP_BASE + 2)

#define SND_US16X08_ID_COMP_RELEASE	(SND_US16X08_ID_COMP_BASE + 3)

#define SND_US16X08_ID_COMP_GAIN	(SND_US16X08_ID_COMP_BASE + 4)

#define SND_US16X08_ID_COMP_SWITCH	(SND_US16X08_ID_COMP_BASE + 5)

#define SND_US16X08_ID_COMP_COUNT	6


#define COMP_STORE_IDX(x) ((x) - SND_US16X08_ID_COMP_BASE)


struct snd_us16x08_eq_store {
	
u8 val[SND_US16X08_ID_EQ_BAND_COUNT][SND_US16X08_ID_EQ_PARAM_COUNT]
		[SND_US16X08_MAX_CHANNELS];
};


struct snd_us16x08_comp_store {
	
u8 val[SND_US16X08_ID_COMP_COUNT][SND_US16X08_MAX_CHANNELS];
};


struct snd_us16x08_meter_store {
	
int meter_level[SND_US16X08_MAX_CHANNELS];
	
int master_level[2]; /* level of meter for master output */
	
int comp_index; /* round trip channel selector */
	
int comp_active_index; /* channel select from user space mixer */
	
int comp_level[16]; /* compressor reduction level */
	
struct snd_us16x08_comp_store *comp_store;
};


struct snd_us16x08_control_params {
	
struct snd_kcontrol_new *kcontrol_new;
	
int control_id;
	
int type;
	
int num_channels;
	
const char *name;
	
int default_val;
};


#define snd_us16x08_switch_info snd_ctl_boolean_mono_info

int snd_us16x08_controls_create(struct usb_mixer_interface *mixer);
#endif /* __USB_MIXER_US16X08_H */

Overall Contributors

PersonTokensPropCommitsCommitProp
Detlef Urban44199.77%150.00%
Greg Kroah-Hartman10.23%150.00%
Total442100.00%2100.00%
Directory: sound/usb
Information contained on this website is for historical information purposes only and does not indicate or represent copyright ownership.
Created with cregit.