brintos

brintos / linux-shallow public Read only

0
0
Text · 3.9 KiB · 743eb03 Raw
139 lines · c
1/* SPDX-License-Identifier: GPL-2.0 */2#ifndef CAIAQ_DEVICE_H3#define CAIAQ_DEVICE_H4 5#include "../usbaudio.h"6 7#define USB_VID_NATIVEINSTRUMENTS 0x17cc8 9#define USB_PID_RIGKONTROL2		0x196910#define USB_PID_RIGKONTROL3		0x194011#define USB_PID_KORECONTROLLER		0x471112#define USB_PID_KORECONTROLLER2		0x471213#define USB_PID_AK1			0x081514#define USB_PID_AUDIO2DJ		0x041c15#define USB_PID_AUDIO4DJ		0x083916#define USB_PID_AUDIO8DJ		0x197817#define USB_PID_SESSIONIO		0x191518#define USB_PID_GUITARRIGMOBILE		0x0d8d19#define USB_PID_TRAKTORKONTROLX1	0x230520#define USB_PID_TRAKTORKONTROLS4	0xbaff21#define USB_PID_TRAKTORAUDIO2		0x041d22#define USB_PID_MASCHINECONTROLLER  0x080823 24#define EP1_BUFSIZE 6425#define EP4_BUFSIZE 51226#define CAIAQ_USB_STR_LEN 0xff27#define MAX_STREAMS 3228 29#define MODNAME "snd-usb-caiaq"30 31#define EP1_CMD_GET_DEVICE_INFO	0x132#define EP1_CMD_READ_ERP	0x233#define EP1_CMD_READ_ANALOG	0x334#define EP1_CMD_READ_IO		0x435#define EP1_CMD_WRITE_IO	0x536#define EP1_CMD_MIDI_READ	0x637#define EP1_CMD_MIDI_WRITE	0x738#define EP1_CMD_AUDIO_PARAMS	0x939#define EP1_CMD_AUTO_MSG	0xb40#define EP1_CMD_DIMM_LEDS       0xc41 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} __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_INPUT103	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#endif109 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 */139