root/sound/usb/usx2y/usbus428ctldefs.h
/* SPDX-License-Identifier: GPL-2.0-or-later */
/*
 *
 * Copyright (c) 2003 by Karsten Wiese <annabellesgarden@yahoo.de>
 */

enum E_IN84 {
        E_FADER_0 = 0,
        E_FADER_1,
        E_FADER_2,
        E_FADER_3,
        E_FADER_4,
        E_FADER_5,
        E_FADER_6,
        E_FADER_7,
        E_FADER_M,
        E_TRANSPORT,
        E_MODIFIER = 10,
        E_FILTER_SELECT,
        E_SELECT,
        E_MUTE,

        E_SWITCH   = 15,
        E_WHEEL_GAIN,
        E_WHEEL_FREQ,
        E_WHEEL_Q,
        E_WHEEL_PAN,
        E_WHEEL    = 20
};

#define T_RECORD   1
#define T_PLAY     2
#define T_STOP     4
#define T_F_FWD    8
#define T_REW   0x10
#define T_SOLO  0x20
#define T_REC   0x40
#define T_NULL  0x80


struct us428_ctls {
        unsigned char   fader[9];
        unsigned char   transport;
        unsigned char   modifier;
        unsigned char   filters_elect;
        unsigned char   select;
        unsigned char   mute;
        unsigned char   unknown;
        unsigned char   wswitch;
        unsigned char   wheel[5];
};

struct us428_set_byte {
        unsigned char offset,
                value;
};

enum {
        ELT_VOLUME = 0,
        ELT_LIGHT
};

struct usx2y_volume {
        unsigned char channel,
                lh,
                ll,
                rh,
                rl;
};

struct us428_lights {
        struct us428_set_byte light[7];
};

struct us428_p4out {
        char type;
        union {
                struct usx2y_volume vol;
                struct us428_lights lights;
        } val;
};

#define N_US428_CTL_BUFS 16
#define N_US428_P4OUT_BUFS 16
struct us428ctls_sharedmem {
        struct us428_ctls       ctl_snapshot[N_US428_CTL_BUFS];
        int                     ctl_snapshot_differs_at[N_US428_CTL_BUFS];
        int                     ctl_snapshot_last, ctl_snapshot_red;
        struct us428_p4out      p4out[N_US428_P4OUT_BUFS];
        int                     p4out_last, p4out_sent;
};

#define US428_SHAREDMEM_PAGES   PAGE_ALIGN(sizeof(struct us428ctls_sharedmem))