11a59d1b8SThomas Gleixner /* SPDX-License-Identifier: GPL-2.0-or-later */ 21da177e4SLinus Torvalds /* 31da177e4SLinus Torvalds * 41da177e4SLinus Torvalds * Copyright (c) 2003 by Karsten Wiese <annabellesgarden@yahoo.de> 51da177e4SLinus Torvalds */ 61da177e4SLinus Torvalds 7*bae3ce49STakashi Iwai enum E_IN84 { 8*bae3ce49STakashi Iwai E_FADER_0 = 0, 9*bae3ce49STakashi Iwai E_FADER_1, 10*bae3ce49STakashi Iwai E_FADER_2, 11*bae3ce49STakashi Iwai E_FADER_3, 12*bae3ce49STakashi Iwai E_FADER_4, 13*bae3ce49STakashi Iwai E_FADER_5, 14*bae3ce49STakashi Iwai E_FADER_6, 15*bae3ce49STakashi Iwai E_FADER_7, 16*bae3ce49STakashi Iwai E_FADER_M, 17*bae3ce49STakashi Iwai E_TRANSPORT, 18*bae3ce49STakashi Iwai E_MODIFIER = 10, 19*bae3ce49STakashi Iwai E_FILTER_SELECT, 20*bae3ce49STakashi Iwai E_SELECT, 21*bae3ce49STakashi Iwai E_MUTE, 221da177e4SLinus Torvalds 23*bae3ce49STakashi Iwai E_SWITCH = 15, 24*bae3ce49STakashi Iwai E_WHEEL_GAIN, 25*bae3ce49STakashi Iwai E_WHEEL_FREQ, 26*bae3ce49STakashi Iwai E_WHEEL_Q, 27*bae3ce49STakashi Iwai E_WHEEL_PAN, 28*bae3ce49STakashi Iwai E_WHEEL = 20 291da177e4SLinus Torvalds }; 301da177e4SLinus Torvalds 311da177e4SLinus Torvalds #define T_RECORD 1 321da177e4SLinus Torvalds #define T_PLAY 2 331da177e4SLinus Torvalds #define T_STOP 4 341da177e4SLinus Torvalds #define T_F_FWD 8 351da177e4SLinus Torvalds #define T_REW 0x10 361da177e4SLinus Torvalds #define T_SOLO 0x20 371da177e4SLinus Torvalds #define T_REC 0x40 381da177e4SLinus Torvalds #define T_NULL 0x80 391da177e4SLinus Torvalds 401da177e4SLinus Torvalds 411da177e4SLinus Torvalds struct us428_ctls { 42*bae3ce49STakashi Iwai unsigned char fader[9]; 43*bae3ce49STakashi Iwai unsigned char transport; 44*bae3ce49STakashi Iwai unsigned char modifier; 45*bae3ce49STakashi Iwai unsigned char filters_elect; 46*bae3ce49STakashi Iwai unsigned char select; 47*bae3ce49STakashi Iwai unsigned char mute; 48*bae3ce49STakashi Iwai unsigned char unknown; 49*bae3ce49STakashi Iwai unsigned char wswitch; 50*bae3ce49STakashi Iwai unsigned char wheel[5]; 511da177e4SLinus Torvalds }; 521da177e4SLinus Torvalds 53*bae3ce49STakashi Iwai struct us428_set_byte { 54*bae3ce49STakashi Iwai unsigned char offset, 55*bae3ce49STakashi Iwai value; 56bbe85bbdSTakashi Iwai }; 571da177e4SLinus Torvalds 581da177e4SLinus Torvalds enum { 59*bae3ce49STakashi Iwai ELT_VOLUME = 0, 60*bae3ce49STakashi Iwai ELT_LIGHT 611da177e4SLinus Torvalds }; 621da177e4SLinus Torvalds 63*bae3ce49STakashi Iwai struct usx2y_volume { 64*bae3ce49STakashi Iwai unsigned char channel, 65*bae3ce49STakashi Iwai lh, 66*bae3ce49STakashi Iwai ll, 67*bae3ce49STakashi Iwai rh, 68*bae3ce49STakashi Iwai rl; 69bbe85bbdSTakashi Iwai }; 701da177e4SLinus Torvalds 711da177e4SLinus Torvalds struct us428_lights { 72*bae3ce49STakashi Iwai struct us428_set_byte light[7]; 731da177e4SLinus Torvalds }; 741da177e4SLinus Torvalds 75bbe85bbdSTakashi Iwai struct us428_p4out { 761da177e4SLinus Torvalds char type; 771da177e4SLinus Torvalds union { 78*bae3ce49STakashi Iwai struct usx2y_volume vol; 79bbe85bbdSTakashi Iwai struct us428_lights lights; 801da177e4SLinus Torvalds } val; 81bbe85bbdSTakashi Iwai }; 821da177e4SLinus Torvalds 83*bae3ce49STakashi Iwai #define N_US428_CTL_BUFS 16 84*bae3ce49STakashi Iwai #define N_US428_P4OUT_BUFS 16 851da177e4SLinus Torvalds struct us428ctls_sharedmem { 86*bae3ce49STakashi Iwai struct us428_ctls ctl_snapshot[N_US428_CTL_BUFS]; 87*bae3ce49STakashi Iwai int ctl_snapshot_differs_at[N_US428_CTL_BUFS]; 88*bae3ce49STakashi Iwai int ctl_snapshot_last, ctl_snapshot_red; 89*bae3ce49STakashi Iwai struct us428_p4out p4out[N_US428_P4OUT_BUFS]; 90*bae3ce49STakashi Iwai int p4out_last, p4out_sent; 911da177e4SLinus Torvalds }; 92