xref: /openbmc/linux/sound/usb/usx2y/usbus428ctldefs.h (revision 762f99f4f3cb41a775b5157dd761217beba65873)
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))
94