summaryrefslogtreecommitdiffstats
path: root/sound/usb/usx2y/usbus428ctldefs.h
blob: 9ba15d974e633d1b56b51bca05cdb66572f0ccba (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
/* SPDX-License-Identifier: GPL-2.0-or-later */
/*
 *
 * Copyright (c) 2003 by Karsten Wiese <annabellesgarden@yahoo.de>
 */

enum E_IN84 {
	E_FADER_0 = 0,
	E_FADER_1,
	E_FADER_2,
	E_FADER_3,
	E_FADER_4,
	E_FADER_5,
	E_FADER_6,
	E_FADER_7,
	E_FADER_M,
	E_TRANSPORT,
	E_MODIFIER = 10,
	E_FILTER_SELECT,
	E_SELECT,
	E_MUTE,

	E_SWITCH   = 15,
	E_WHEEL_GAIN,
	E_WHEEL_FREQ,
	E_WHEEL_Q,
	E_WHEEL_PAN,
	E_WHEEL    = 20
};

#define T_RECORD   1
#define T_PLAY     2
#define T_STOP     4
#define T_F_FWD    8
#define T_REW   0x10
#define T_SOLO  0x20
#define T_REC   0x40
#define T_NULL  0x80


struct us428_ctls {
	unsigned char	fader[9];
	unsigned char	transport;
	unsigned char	modifier;
	unsigned char	filters_elect;
	unsigned char	select;
	unsigned char	mute;
	unsigned char	unknown;
	unsigned char	wswitch;
	unsigned char	wheel[5];
};

struct us428_set_byte {
	unsigned char offset,
		value;
};

enum {
	ELT_VOLUME = 0,
	ELT_LIGHT
};

struct usx2y_volume {
	unsigned char channel,
		lh,
		ll,
		rh,
		rl;
};

struct us428_lights {
	struct us428_set_byte light[7];
};

struct us428_p4out {
	char type;
	union {
		struct usx2y_volume vol;
		struct us428_lights lights;
	} val;
};

#define N_US428_CTL_BUFS 16
#define N_US428_P4OUT_BUFS 16
struct us428ctls_sharedmem {
	struct us428_ctls	ctl_snapshot[N_US428_CTL_BUFS];
	int			ctl_snapshot_differs_at[N_US428_CTL_BUFS];
	int			ctl_snapshot_last, ctl_snapshot_red;
	struct us428_p4out	p4out[N_US428_P4OUT_BUFS];
	int			p4out_last, p4out_sent;
};

#define US428_SHAREDMEM_PAGES	PAGE_ALIGN(sizeof(struct us428ctls_sharedmem))