1/* SPDX-License-Identifier: GPL-2.0-or-later */
2/*
3 *
4 * Copyright (c) 2003 by Karsten Wiese <annabellesgarden@yahoo.de>
5 */
6
7enum 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
41struct 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
53struct us428_set_byte {
54	unsigned char offset,
55		value;
56};
57
58enum {
59	ELT_VOLUME = 0,
60	ELT_LIGHT
61};
62
63struct usx2y_volume {
64	unsigned char channel,
65		lh,
66		ll,
67		rh,
68		rl;
69};
70
71struct us428_lights {
72	struct us428_set_byte light[7];
73};
74
75struct 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
85struct 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