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