GNU Linux-libre 6.8.9-gnu
[releases.git] / sound / usb / usx2y / usbus428ctldefs.h
1 /* SPDX-License-Identifier: GPL-2.0-or-later */
2 /*
3  *
4  * Copyright (c) 2003 by Karsten Wiese <annabellesgarden@yahoo.de>
5  */
6
7 enum E_IN84 {
8         E_FADER_0 = 0,
9         E_FADER_1,
10         E_FADER_2,
11         E_FADER_3,
12         E_FADER_4,
13         E_FADER_5,
14         E_FADER_6,
15         E_FADER_7,
16         E_FADER_M,
17         E_TRANSPORT,
18         E_MODIFIER = 10,
19         E_FILTER_SELECT,
20         E_SELECT,
21         E_MUTE,
22
23         E_SWITCH   = 15,
24         E_WHEEL_GAIN,
25         E_WHEEL_FREQ,
26         E_WHEEL_Q,
27         E_WHEEL_PAN,
28         E_WHEEL    = 20
29 };
30
31 #define T_RECORD   1
32 #define T_PLAY     2
33 #define T_STOP     4
34 #define T_F_FWD    8
35 #define T_REW   0x10
36 #define T_SOLO  0x20
37 #define T_REC   0x40
38 #define T_NULL  0x80
39
40
41 struct us428_ctls {
42         unsigned char   fader[9];
43         unsigned char   transport;
44         unsigned char   modifier;
45         unsigned char   filters_elect;
46         unsigned char   select;
47         unsigned char   mute;
48         unsigned char   unknown;
49         unsigned char   wswitch;
50         unsigned char   wheel[5];
51 };
52
53 struct us428_set_byte {
54         unsigned char offset,
55                 value;
56 };
57
58 enum {
59         ELT_VOLUME = 0,
60         ELT_LIGHT
61 };
62
63 struct usx2y_volume {
64         unsigned char channel,
65                 lh,
66                 ll,
67                 rh,
68                 rl;
69 };
70
71 struct us428_lights {
72         struct us428_set_byte light[7];
73 };
74
75 struct us428_p4out {
76         char type;
77         union {
78                 struct usx2y_volume vol;
79                 struct us428_lights lights;
80         } val;
81 };
82
83 #define N_US428_CTL_BUFS 16
84 #define N_US428_P4OUT_BUFS 16
85 struct us428ctls_sharedmem {
86         struct us428_ctls       ctl_snapshot[N_US428_CTL_BUFS];
87         int                     ctl_snapshot_differs_at[N_US428_CTL_BUFS];
88         int                     ctl_snapshot_last, ctl_snapshot_red;
89         struct us428_p4out      p4out[N_US428_P4OUT_BUFS];
90         int                     p4out_last, p4out_sent;
91 };
92
93 #define US428_SHAREDMEM_PAGES   PAGE_ALIGN(sizeof(struct us428ctls_sharedmem))