cachepc-linux

Fork of AMDESE/linux with modifications for CachePC side-channel attack
git clone https://git.sinitax.com/sinitax/cachepc-linux
Log | Files | Refs | README | LICENSE | sfeed.txt

device.h (3980B)


      1/* SPDX-License-Identifier: GPL-2.0 */
      2#ifndef CAIAQ_DEVICE_H
      3#define CAIAQ_DEVICE_H
      4
      5#include "../usbaudio.h"
      6
      7#define USB_VID_NATIVEINSTRUMENTS 0x17cc
      8
      9#define USB_PID_RIGKONTROL2		0x1969
     10#define USB_PID_RIGKONTROL3		0x1940
     11#define USB_PID_KORECONTROLLER		0x4711
     12#define USB_PID_KORECONTROLLER2		0x4712
     13#define USB_PID_AK1			0x0815
     14#define USB_PID_AUDIO2DJ		0x041c
     15#define USB_PID_AUDIO4DJ		0x0839
     16#define USB_PID_AUDIO8DJ		0x1978
     17#define USB_PID_SESSIONIO		0x1915
     18#define USB_PID_GUITARRIGMOBILE		0x0d8d
     19#define USB_PID_TRAKTORKONTROLX1	0x2305
     20#define USB_PID_TRAKTORKONTROLS4	0xbaff
     21#define USB_PID_TRAKTORAUDIO2		0x041d
     22#define USB_PID_MASCHINECONTROLLER  0x0808
     23
     24#define EP1_BUFSIZE 64
     25#define EP4_BUFSIZE 512
     26#define CAIAQ_USB_STR_LEN 0xff
     27#define MAX_STREAMS 32
     28
     29#define MODNAME "snd-usb-caiaq"
     30
     31#define EP1_CMD_GET_DEVICE_INFO	0x1
     32#define EP1_CMD_READ_ERP	0x2
     33#define EP1_CMD_READ_ANALOG	0x3
     34#define EP1_CMD_READ_IO		0x4
     35#define EP1_CMD_WRITE_IO	0x5
     36#define EP1_CMD_MIDI_READ	0x6
     37#define EP1_CMD_MIDI_WRITE	0x7
     38#define EP1_CMD_AUDIO_PARAMS	0x9
     39#define EP1_CMD_AUTO_MSG	0xb
     40#define EP1_CMD_DIMM_LEDS       0xc
     41
     42struct caiaq_device_spec {
     43	unsigned short fw_version;
     44	unsigned char hw_subtype;
     45	unsigned char num_erp;
     46	unsigned char num_analog_in;
     47	unsigned char num_digital_in;
     48	unsigned char num_digital_out;
     49	unsigned char num_analog_audio_out;
     50	unsigned char num_analog_audio_in;
     51	unsigned char num_digital_audio_out;
     52	unsigned char num_digital_audio_in;
     53	unsigned char num_midi_out;
     54	unsigned char num_midi_in;
     55	unsigned char data_alignment;
     56} __attribute__ ((packed));
     57
     58struct snd_usb_caiaq_cb_info;
     59
     60struct snd_usb_caiaqdev {
     61	struct snd_usb_audio chip;
     62
     63	struct urb ep1_in_urb;
     64	struct urb midi_out_urb;
     65	struct urb **data_urbs_in;
     66	struct urb **data_urbs_out;
     67	struct snd_usb_caiaq_cb_info *data_cb_info;
     68
     69	unsigned char ep1_in_buf[EP1_BUFSIZE];
     70	unsigned char ep1_out_buf[EP1_BUFSIZE];
     71	unsigned char midi_out_buf[EP1_BUFSIZE];
     72
     73	struct caiaq_device_spec spec;
     74	spinlock_t spinlock;
     75	wait_queue_head_t ep1_wait_queue;
     76	wait_queue_head_t prepare_wait_queue;
     77	int spec_received, audio_parm_answer;
     78	int midi_out_active;
     79
     80	char vendor_name[CAIAQ_USB_STR_LEN];
     81	char product_name[CAIAQ_USB_STR_LEN];
     82
     83	int n_streams, n_audio_in, n_audio_out;
     84	int streaming, first_packet, output_running;
     85	int audio_in_buf_pos[MAX_STREAMS];
     86	int audio_out_buf_pos[MAX_STREAMS];
     87	int period_in_count[MAX_STREAMS];
     88	int period_out_count[MAX_STREAMS];
     89	int input_panic, output_panic, warned;
     90	char *audio_in_buf, *audio_out_buf;
     91	unsigned int samplerates, bpp;
     92	unsigned long outurb_active_mask;
     93
     94	struct snd_pcm_substream *sub_playback[MAX_STREAMS];
     95	struct snd_pcm_substream *sub_capture[MAX_STREAMS];
     96
     97	/* Controls */
     98	unsigned char control_state[256];
     99	unsigned char ep8_out_buf[2];
    100
    101	/* Linux input */
    102#ifdef CONFIG_SND_USB_CAIAQ_INPUT
    103	struct input_dev *input_dev;
    104	char phys[64];			/* physical device path */
    105	unsigned short keycode[128];
    106	struct urb *ep4_in_urb;
    107	unsigned char ep4_in_buf[EP4_BUFSIZE];
    108#endif
    109
    110	/* ALSA */
    111	struct snd_pcm *pcm;
    112	struct snd_pcm_hardware pcm_info;
    113	struct snd_rawmidi *rmidi;
    114	struct snd_rawmidi_substream *midi_receive_substream;
    115	struct snd_rawmidi_substream *midi_out_substream;
    116};
    117
    118struct snd_usb_caiaq_cb_info {
    119	struct snd_usb_caiaqdev *cdev;
    120	int index;
    121};
    122
    123#define caiaqdev(c) ((struct snd_usb_caiaqdev*)(c)->private_data)
    124#define caiaqdev_to_dev(d)	(d->chip.card->dev)
    125
    126int snd_usb_caiaq_set_audio_params (struct snd_usb_caiaqdev *cdev, int rate, int depth, int bbp);
    127int snd_usb_caiaq_set_auto_msg (struct snd_usb_caiaqdev *cdev, int digital, int analog, int erp);
    128int snd_usb_caiaq_send_command(struct snd_usb_caiaqdev *cdev,
    129			       unsigned char command,
    130			       const unsigned char *buffer,
    131			       int len);
    132int snd_usb_caiaq_send_command_bank(struct snd_usb_caiaqdev *cdev,
    133			       unsigned char command,
    134			       unsigned char bank,
    135			       const unsigned char *buffer,
    136			       int len);
    137
    138#endif /* CAIAQ_DEVICE_H */