162306a36Sopenharmony_ci/* SPDX-License-Identifier: GPL-2.0-or-later */ 262306a36Sopenharmony_ci/* 362306a36Sopenharmony_ci * 462306a36Sopenharmony_ci * Copyright (c) 2003 by Karsten Wiese <annabellesgarden@yahoo.de> 562306a36Sopenharmony_ci */ 662306a36Sopenharmony_ci 762306a36Sopenharmony_cienum E_IN84 { 862306a36Sopenharmony_ci E_FADER_0 = 0, 962306a36Sopenharmony_ci E_FADER_1, 1062306a36Sopenharmony_ci E_FADER_2, 1162306a36Sopenharmony_ci E_FADER_3, 1262306a36Sopenharmony_ci E_FADER_4, 1362306a36Sopenharmony_ci E_FADER_5, 1462306a36Sopenharmony_ci E_FADER_6, 1562306a36Sopenharmony_ci E_FADER_7, 1662306a36Sopenharmony_ci E_FADER_M, 1762306a36Sopenharmony_ci E_TRANSPORT, 1862306a36Sopenharmony_ci E_MODIFIER = 10, 1962306a36Sopenharmony_ci E_FILTER_SELECT, 2062306a36Sopenharmony_ci E_SELECT, 2162306a36Sopenharmony_ci E_MUTE, 2262306a36Sopenharmony_ci 2362306a36Sopenharmony_ci E_SWITCH = 15, 2462306a36Sopenharmony_ci E_WHEEL_GAIN, 2562306a36Sopenharmony_ci E_WHEEL_FREQ, 2662306a36Sopenharmony_ci E_WHEEL_Q, 2762306a36Sopenharmony_ci E_WHEEL_PAN, 2862306a36Sopenharmony_ci E_WHEEL = 20 2962306a36Sopenharmony_ci}; 3062306a36Sopenharmony_ci 3162306a36Sopenharmony_ci#define T_RECORD 1 3262306a36Sopenharmony_ci#define T_PLAY 2 3362306a36Sopenharmony_ci#define T_STOP 4 3462306a36Sopenharmony_ci#define T_F_FWD 8 3562306a36Sopenharmony_ci#define T_REW 0x10 3662306a36Sopenharmony_ci#define T_SOLO 0x20 3762306a36Sopenharmony_ci#define T_REC 0x40 3862306a36Sopenharmony_ci#define T_NULL 0x80 3962306a36Sopenharmony_ci 4062306a36Sopenharmony_ci 4162306a36Sopenharmony_cistruct us428_ctls { 4262306a36Sopenharmony_ci unsigned char fader[9]; 4362306a36Sopenharmony_ci unsigned char transport; 4462306a36Sopenharmony_ci unsigned char modifier; 4562306a36Sopenharmony_ci unsigned char filters_elect; 4662306a36Sopenharmony_ci unsigned char select; 4762306a36Sopenharmony_ci unsigned char mute; 4862306a36Sopenharmony_ci unsigned char unknown; 4962306a36Sopenharmony_ci unsigned char wswitch; 5062306a36Sopenharmony_ci unsigned char wheel[5]; 5162306a36Sopenharmony_ci}; 5262306a36Sopenharmony_ci 5362306a36Sopenharmony_cistruct us428_set_byte { 5462306a36Sopenharmony_ci unsigned char offset, 5562306a36Sopenharmony_ci value; 5662306a36Sopenharmony_ci}; 5762306a36Sopenharmony_ci 5862306a36Sopenharmony_cienum { 5962306a36Sopenharmony_ci ELT_VOLUME = 0, 6062306a36Sopenharmony_ci ELT_LIGHT 6162306a36Sopenharmony_ci}; 6262306a36Sopenharmony_ci 6362306a36Sopenharmony_cistruct usx2y_volume { 6462306a36Sopenharmony_ci unsigned char channel, 6562306a36Sopenharmony_ci lh, 6662306a36Sopenharmony_ci ll, 6762306a36Sopenharmony_ci rh, 6862306a36Sopenharmony_ci rl; 6962306a36Sopenharmony_ci}; 7062306a36Sopenharmony_ci 7162306a36Sopenharmony_cistruct us428_lights { 7262306a36Sopenharmony_ci struct us428_set_byte light[7]; 7362306a36Sopenharmony_ci}; 7462306a36Sopenharmony_ci 7562306a36Sopenharmony_cistruct us428_p4out { 7662306a36Sopenharmony_ci char type; 7762306a36Sopenharmony_ci union { 7862306a36Sopenharmony_ci struct usx2y_volume vol; 7962306a36Sopenharmony_ci struct us428_lights lights; 8062306a36Sopenharmony_ci } val; 8162306a36Sopenharmony_ci}; 8262306a36Sopenharmony_ci 8362306a36Sopenharmony_ci#define N_US428_CTL_BUFS 16 8462306a36Sopenharmony_ci#define N_US428_P4OUT_BUFS 16 8562306a36Sopenharmony_cistruct us428ctls_sharedmem { 8662306a36Sopenharmony_ci struct us428_ctls ctl_snapshot[N_US428_CTL_BUFS]; 8762306a36Sopenharmony_ci int ctl_snapshot_differs_at[N_US428_CTL_BUFS]; 8862306a36Sopenharmony_ci int ctl_snapshot_last, ctl_snapshot_red; 8962306a36Sopenharmony_ci struct us428_p4out p4out[N_US428_P4OUT_BUFS]; 9062306a36Sopenharmony_ci int p4out_last, p4out_sent; 9162306a36Sopenharmony_ci}; 9262306a36Sopenharmony_ci 9362306a36Sopenharmony_ci#define US428_SHAREDMEM_PAGES PAGE_ALIGN(sizeof(struct us428ctls_sharedmem)) 94