Merge branch 'topic/line6' into for-next
This commit is contained in:
commit
6eb3db91f2
|
@ -216,12 +216,11 @@ static int snd_line6_capture_open(struct snd_pcm_substream *substream)
|
|||
|
||||
err = snd_pcm_hw_constraint_ratdens(runtime, 0,
|
||||
SNDRV_PCM_HW_PARAM_RATE,
|
||||
(&line6pcm->
|
||||
properties->snd_line6_rates));
|
||||
&line6pcm->properties->rates);
|
||||
if (err < 0)
|
||||
return err;
|
||||
|
||||
runtime->hw = line6pcm->properties->snd_line6_capture_hw;
|
||||
runtime->hw = line6pcm->properties->capture_hw;
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
|
|
@ -22,8 +22,6 @@
|
|||
#include "driver.h"
|
||||
#include "midi.h"
|
||||
#include "playback.h"
|
||||
#include "revision.h"
|
||||
#include "usbdefs.h"
|
||||
|
||||
#define DRIVER_AUTHOR "Markus Grabner <grabner@icg.tugraz.at>"
|
||||
#define DRIVER_DESC "Line 6 USB Driver"
|
||||
|
@ -44,7 +42,7 @@ static const char line6_request_version[] = {
|
|||
0xf0, 0x7e, 0x7f, 0x06, 0x01, 0xf7
|
||||
};
|
||||
|
||||
/**
|
||||
/*
|
||||
Class for asynchronous messages.
|
||||
*/
|
||||
struct message {
|
||||
|
|
|
@ -20,6 +20,12 @@
|
|||
|
||||
#define DRIVER_NAME "line6usb"
|
||||
|
||||
#define USB_INTERVALS_PER_SECOND 1000
|
||||
|
||||
/* Fallback USB interval and max packet size values */
|
||||
#define LINE6_FALLBACK_INTERVAL 10
|
||||
#define LINE6_FALLBACK_MAXPACKETSIZE 16
|
||||
|
||||
#define LINE6_TIMEOUT 1
|
||||
#define LINE6_BUFSIZE_LISTEN 32
|
||||
#define LINE6_MESSAGE_MAXLEN 256
|
||||
|
@ -60,26 +66,20 @@ extern const unsigned char line6_midi_id[3];
|
|||
static const int SYSEX_DATA_OFS = sizeof(line6_midi_id) + 3;
|
||||
static const int SYSEX_EXTRA_SIZE = sizeof(line6_midi_id) + 4;
|
||||
|
||||
/**
|
||||
/*
|
||||
Common properties of Line 6 devices.
|
||||
*/
|
||||
struct line6_properties {
|
||||
/**
|
||||
Card id string (maximum 16 characters).
|
||||
This can be used to address the device in ALSA programs as
|
||||
"default:CARD=<id>"
|
||||
*/
|
||||
/* Card id string (maximum 16 characters).
|
||||
* This can be used to address the device in ALSA programs as
|
||||
* "default:CARD=<id>"
|
||||
*/
|
||||
const char *id;
|
||||
|
||||
/**
|
||||
Card short name (maximum 32 characters).
|
||||
*/
|
||||
/* Card short name (maximum 32 characters) */
|
||||
const char *name;
|
||||
|
||||
/**
|
||||
Bit vector defining this device's capabilities in the
|
||||
line6usb driver.
|
||||
*/
|
||||
/* Bit vector defining this device's capabilities in line6usb driver */
|
||||
int capabilities;
|
||||
|
||||
int altsetting;
|
||||
|
@ -90,70 +90,57 @@ struct line6_properties {
|
|||
unsigned ep_audio_w;
|
||||
};
|
||||
|
||||
/**
|
||||
/* Capability bits */
|
||||
enum {
|
||||
/* device supports settings parameter via USB */
|
||||
LINE6_CAP_CONTROL = 1 << 0,
|
||||
/* device supports PCM input/output via USB */
|
||||
LINE6_CAP_PCM = 1 << 1,
|
||||
/* device support hardware monitoring */
|
||||
LINE6_CAP_HWMON = 1 << 2,
|
||||
};
|
||||
|
||||
/*
|
||||
Common data shared by all Line 6 devices.
|
||||
Corresponds to a pair of USB endpoints.
|
||||
*/
|
||||
struct usb_line6 {
|
||||
/**
|
||||
USB device.
|
||||
*/
|
||||
/* USB device */
|
||||
struct usb_device *usbdev;
|
||||
|
||||
/**
|
||||
Properties.
|
||||
*/
|
||||
/* Properties */
|
||||
const struct line6_properties *properties;
|
||||
|
||||
/**
|
||||
Interval (ms).
|
||||
*/
|
||||
/* Interval (ms) */
|
||||
int interval;
|
||||
|
||||
/**
|
||||
Maximum size of USB packet.
|
||||
*/
|
||||
/* Maximum size of USB packet */
|
||||
int max_packet_size;
|
||||
|
||||
/**
|
||||
Device representing the USB interface.
|
||||
*/
|
||||
/* Device representing the USB interface */
|
||||
struct device *ifcdev;
|
||||
|
||||
/**
|
||||
Line 6 sound card data structure.
|
||||
Each device has at least MIDI or PCM.
|
||||
*/
|
||||
/* Line 6 sound card data structure.
|
||||
* Each device has at least MIDI or PCM.
|
||||
*/
|
||||
struct snd_card *card;
|
||||
|
||||
/**
|
||||
Line 6 PCM device data structure.
|
||||
*/
|
||||
/* Line 6 PCM device data structure */
|
||||
struct snd_line6_pcm *line6pcm;
|
||||
|
||||
/**
|
||||
Line 6 MIDI device data structure.
|
||||
*/
|
||||
/* Line 6 MIDI device data structure */
|
||||
struct snd_line6_midi *line6midi;
|
||||
|
||||
/**
|
||||
URB for listening to PODxt Pro control endpoint.
|
||||
*/
|
||||
/* URB for listening to PODxt Pro control endpoint */
|
||||
struct urb *urb_listen;
|
||||
|
||||
/**
|
||||
Buffer for listening to PODxt Pro control endpoint.
|
||||
*/
|
||||
/* Buffer for listening to PODxt Pro control endpoint */
|
||||
unsigned char *buffer_listen;
|
||||
|
||||
/**
|
||||
Buffer for message to be processed.
|
||||
*/
|
||||
/* Buffer for message to be processed */
|
||||
unsigned char *buffer_message;
|
||||
|
||||
/**
|
||||
Length of message to be processed.
|
||||
*/
|
||||
/* Length of message to be processed */
|
||||
int message_length;
|
||||
|
||||
void (*process_message)(struct usb_line6 *);
|
||||
|
|
|
@ -17,7 +17,6 @@
|
|||
|
||||
#include "driver.h"
|
||||
#include "midi.h"
|
||||
#include "usbdefs.h"
|
||||
|
||||
#define line6_rawmidi_substream_midi(substream) \
|
||||
((struct snd_line6_midi *)((substream)->rmidi->private_data))
|
||||
|
|
|
@ -19,44 +19,28 @@
|
|||
#define MIDI_BUFFER_SIZE 1024
|
||||
|
||||
struct snd_line6_midi {
|
||||
/**
|
||||
Pointer back to the Line 6 driver data structure.
|
||||
*/
|
||||
/* Pointer back to the Line 6 driver data structure */
|
||||
struct usb_line6 *line6;
|
||||
|
||||
/**
|
||||
MIDI substream for receiving (or NULL if not active).
|
||||
*/
|
||||
/* MIDI substream for receiving (or NULL if not active) */
|
||||
struct snd_rawmidi_substream *substream_receive;
|
||||
|
||||
/**
|
||||
MIDI substream for transmitting (or NULL if not active).
|
||||
*/
|
||||
/* MIDI substream for transmitting (or NULL if not active) */
|
||||
struct snd_rawmidi_substream *substream_transmit;
|
||||
|
||||
/**
|
||||
Number of currently active MIDI send URBs.
|
||||
*/
|
||||
/* Number of currently active MIDI send URBs */
|
||||
int num_active_send_urbs;
|
||||
|
||||
/**
|
||||
Spin lock to protect MIDI buffer handling.
|
||||
*/
|
||||
/* Spin lock to protect MIDI buffer handling */
|
||||
spinlock_t lock;
|
||||
|
||||
/**
|
||||
Wait queue for MIDI transmission.
|
||||
*/
|
||||
/* Wait queue for MIDI transmission */
|
||||
wait_queue_head_t send_wait;
|
||||
|
||||
/**
|
||||
Buffer for incoming MIDI stream.
|
||||
*/
|
||||
/* Buffer for incoming MIDI stream */
|
||||
struct midi_buffer midibuf_in;
|
||||
|
||||
/**
|
||||
Buffer for outgoing MIDI stream.
|
||||
*/
|
||||
/* Buffer for outgoing MIDI stream */
|
||||
struct midi_buffer midibuf_out;
|
||||
};
|
||||
|
||||
|
|
|
@ -19,7 +19,6 @@
|
|||
#include <sound/pcm.h>
|
||||
|
||||
#include "driver.h"
|
||||
#include "usbdefs.h"
|
||||
|
||||
/* number of URBs */
|
||||
#define LINE6_ISO_BUFFERS 2
|
||||
|
@ -66,8 +65,8 @@
|
|||
the running flag indicates whether the stream is running.
|
||||
|
||||
For monitor or impulse operations, the driver needs to call
|
||||
snd_line6_duplex_acquire() or snd_line6_duplex_release() with the
|
||||
appropriate LINE6_STREAM_* flag.
|
||||
line6_pcm_acquire() or line6_pcm_release() with the appropriate
|
||||
LINE6_STREAM_* flag.
|
||||
*/
|
||||
|
||||
/* stream types */
|
||||
|
@ -84,8 +83,8 @@ enum {
|
|||
};
|
||||
|
||||
struct line6_pcm_properties {
|
||||
struct snd_pcm_hardware snd_line6_playback_hw, snd_line6_capture_hw;
|
||||
struct snd_pcm_hw_constraint_ratdens snd_line6_rates;
|
||||
struct snd_pcm_hardware playback_hw, capture_hw;
|
||||
struct snd_pcm_hw_constraint_ratdens rates;
|
||||
int bytes_per_frame;
|
||||
};
|
||||
|
||||
|
@ -139,19 +138,13 @@ struct line6_pcm_stream {
|
|||
};
|
||||
|
||||
struct snd_line6_pcm {
|
||||
/**
|
||||
Pointer back to the Line 6 driver data structure.
|
||||
*/
|
||||
/* Pointer back to the Line 6 driver data structure */
|
||||
struct usb_line6 *line6;
|
||||
|
||||
/**
|
||||
Properties.
|
||||
*/
|
||||
/* Properties. */
|
||||
struct line6_pcm_properties *properties;
|
||||
|
||||
/**
|
||||
ALSA pcm stream
|
||||
*/
|
||||
/* ALSA pcm stream */
|
||||
struct snd_pcm *pcm;
|
||||
|
||||
/* protection to state changes of in/out streams */
|
||||
|
@ -161,49 +154,31 @@ struct snd_line6_pcm {
|
|||
struct line6_pcm_stream in;
|
||||
struct line6_pcm_stream out;
|
||||
|
||||
/**
|
||||
Previously captured frame (for software monitoring).
|
||||
*/
|
||||
/* Previously captured frame (for software monitoring) */
|
||||
unsigned char *prev_fbuf;
|
||||
|
||||
/**
|
||||
Size of previously captured frame (for software monitoring).
|
||||
*/
|
||||
/* Size of previously captured frame (for software monitoring) */
|
||||
int prev_fsize;
|
||||
|
||||
/**
|
||||
Maximum size of USB packet.
|
||||
*/
|
||||
/* Maximum size of USB packet */
|
||||
int max_packet_size;
|
||||
|
||||
/**
|
||||
PCM playback volume (left and right).
|
||||
*/
|
||||
/* PCM playback volume (left and right) */
|
||||
int volume_playback[2];
|
||||
|
||||
/**
|
||||
PCM monitor volume.
|
||||
*/
|
||||
/* PCM monitor volume */
|
||||
int volume_monitor;
|
||||
|
||||
/**
|
||||
Volume of impulse response test signal (if zero, test is disabled).
|
||||
*/
|
||||
/* Volume of impulse response test signal (if zero, test is disabled) */
|
||||
int impulse_volume;
|
||||
|
||||
/**
|
||||
Period of impulse response test signal.
|
||||
*/
|
||||
/* Period of impulse response test signal */
|
||||
int impulse_period;
|
||||
|
||||
/**
|
||||
Counter for impulse response test signal.
|
||||
*/
|
||||
/* Counter for impulse response test signal */
|
||||
int impulse_count;
|
||||
|
||||
/**
|
||||
Several status bits (see LINE6_FLAG_*).
|
||||
*/
|
||||
/* Several status bits (see LINE6_FLAG_*) */
|
||||
unsigned long flags;
|
||||
};
|
||||
|
||||
|
|
|
@ -31,14 +31,16 @@ static void change_volume(struct urb *urb_out, int volume[],
|
|||
return; /* maximum volume - no change */
|
||||
|
||||
if (bytes_per_frame == 4) {
|
||||
short *p, *buf_end;
|
||||
__le16 *p, *buf_end;
|
||||
|
||||
p = (short *)urb_out->transfer_buffer;
|
||||
p = (__le16 *)urb_out->transfer_buffer;
|
||||
buf_end = p + urb_out->transfer_buffer_length / sizeof(*p);
|
||||
|
||||
for (; p < buf_end; ++p) {
|
||||
int val = (*p * volume[chn & 1]) >> 8;
|
||||
*p = clamp(val, 0x7fff, -0x8000);
|
||||
short pv = le16_to_cpu(*p);
|
||||
int val = (pv * volume[chn & 1]) >> 8;
|
||||
pv = clamp(val, 0x7fff, -0x8000);
|
||||
*p = cpu_to_le16(pv);
|
||||
++chn;
|
||||
}
|
||||
} else if (bytes_per_frame == 6) {
|
||||
|
@ -114,15 +116,18 @@ static void add_monitor_signal(struct urb *urb_out, unsigned char *signal,
|
|||
return; /* zero volume - no change */
|
||||
|
||||
if (bytes_per_frame == 4) {
|
||||
short *pi, *po, *buf_end;
|
||||
__le16 *pi, *po, *buf_end;
|
||||
|
||||
pi = (short *)signal;
|
||||
po = (short *)urb_out->transfer_buffer;
|
||||
pi = (__le16 *)signal;
|
||||
po = (__le16 *)urb_out->transfer_buffer;
|
||||
buf_end = po + urb_out->transfer_buffer_length / sizeof(*po);
|
||||
|
||||
for (; po < buf_end; ++pi, ++po) {
|
||||
int val = *po + ((*pi * volume) >> 8);
|
||||
*po = clamp(val, 0x7fff, -0x8000);
|
||||
short pov = le16_to_cpu(*po);
|
||||
short piv = le16_to_cpu(*pi);
|
||||
int val = pov + ((piv * volume) >> 8);
|
||||
pov = clamp(val, 0x7fff, -0x8000);
|
||||
*po = cpu_to_le16(pov);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -143,10 +148,10 @@ static int submit_audio_out_urb(struct snd_line6_pcm *line6pcm)
|
|||
int ret;
|
||||
const int bytes_per_frame = line6pcm->properties->bytes_per_frame;
|
||||
const int frame_increment =
|
||||
line6pcm->properties->snd_line6_rates.rats[0].num_min;
|
||||
line6pcm->properties->rates.rats[0].num_min;
|
||||
const int frame_factor =
|
||||
line6pcm->properties->snd_line6_rates.rats[0].den *
|
||||
(USB_INTERVALS_PER_SECOND / LINE6_ISO_INTERVAL);
|
||||
line6pcm->properties->rates.rats[0].den *
|
||||
(USB_INTERVALS_PER_SECOND / LINE6_ISO_INTERVAL);
|
||||
struct urb *urb_out;
|
||||
|
||||
index =
|
||||
|
@ -365,12 +370,11 @@ static int snd_line6_playback_open(struct snd_pcm_substream *substream)
|
|||
struct snd_line6_pcm *line6pcm = snd_pcm_substream_chip(substream);
|
||||
|
||||
err = snd_pcm_hw_constraint_ratdens(runtime, 0, SNDRV_PCM_HW_PARAM_RATE,
|
||||
(&line6pcm->
|
||||
properties->snd_line6_rates));
|
||||
&line6pcm->properties->rates);
|
||||
if (err < 0)
|
||||
return err;
|
||||
|
||||
runtime->hw = line6pcm->properties->snd_line6_playback_hw;
|
||||
runtime->hw = line6pcm->properties->playback_hw;
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
|
|
@ -21,7 +21,6 @@
|
|||
#include "capture.h"
|
||||
#include "driver.h"
|
||||
#include "playback.h"
|
||||
#include "usbdefs.h"
|
||||
|
||||
/*
|
||||
Locate name in binary program dump
|
||||
|
@ -58,44 +57,28 @@ enum {
|
|||
};
|
||||
|
||||
struct usb_line6_pod {
|
||||
/**
|
||||
Generic Line 6 USB data.
|
||||
*/
|
||||
/* Generic Line 6 USB data */
|
||||
struct usb_line6 line6;
|
||||
|
||||
/**
|
||||
Instrument monitor level.
|
||||
*/
|
||||
/* Instrument monitor level */
|
||||
int monitor_level;
|
||||
|
||||
/**
|
||||
Timer for device initializaton.
|
||||
*/
|
||||
/* Timer for device initialization */
|
||||
struct timer_list startup_timer;
|
||||
|
||||
/**
|
||||
Work handler for device initializaton.
|
||||
*/
|
||||
/* Work handler for device initialization */
|
||||
struct work_struct startup_work;
|
||||
|
||||
/**
|
||||
Current progress in startup procedure.
|
||||
*/
|
||||
/* Current progress in startup procedure */
|
||||
int startup_progress;
|
||||
|
||||
/**
|
||||
Serial number of device.
|
||||
*/
|
||||
/* Serial number of device */
|
||||
int serial_number;
|
||||
|
||||
/**
|
||||
Firmware version (x 100).
|
||||
*/
|
||||
/* Firmware version (x 100) */
|
||||
int firmware_version;
|
||||
|
||||
/**
|
||||
Device ID.
|
||||
*/
|
||||
/* Device ID */
|
||||
int device_id;
|
||||
};
|
||||
|
||||
|
@ -146,7 +129,7 @@ static struct snd_ratden pod_ratden = {
|
|||
};
|
||||
|
||||
static struct line6_pcm_properties pod_pcm_properties = {
|
||||
.snd_line6_playback_hw = {
|
||||
.playback_hw = {
|
||||
.info = (SNDRV_PCM_INFO_MMAP |
|
||||
SNDRV_PCM_INFO_INTERLEAVED |
|
||||
SNDRV_PCM_INFO_BLOCK_TRANSFER |
|
||||
|
@ -164,7 +147,7 @@ static struct line6_pcm_properties pod_pcm_properties = {
|
|||
.period_bytes_max = 8192,
|
||||
.periods_min = 1,
|
||||
.periods_max = 1024},
|
||||
.snd_line6_capture_hw = {
|
||||
.capture_hw = {
|
||||
.info = (SNDRV_PCM_INFO_MMAP |
|
||||
SNDRV_PCM_INFO_INTERLEAVED |
|
||||
SNDRV_PCM_INFO_BLOCK_TRANSFER |
|
||||
|
@ -181,7 +164,7 @@ static struct line6_pcm_properties pod_pcm_properties = {
|
|||
.period_bytes_max = 8192,
|
||||
.periods_min = 1,
|
||||
.periods_max = 1024},
|
||||
.snd_line6_rates = {
|
||||
.rates = {
|
||||
.nrats = 1,
|
||||
.rats = &pod_ratden},
|
||||
.bytes_per_frame = POD_BYTES_PER_FRAME
|
||||
|
|
|
@ -17,7 +17,6 @@
|
|||
|
||||
#include "driver.h"
|
||||
#include "pcm.h"
|
||||
#include "usbdefs.h"
|
||||
|
||||
enum {
|
||||
LINE6_PODHD300,
|
||||
|
@ -26,13 +25,6 @@ enum {
|
|||
LINE6_PODHD500_1,
|
||||
};
|
||||
|
||||
struct usb_line6_podhd {
|
||||
/**
|
||||
Generic Line 6 USB data.
|
||||
*/
|
||||
struct usb_line6 line6;
|
||||
};
|
||||
|
||||
#define PODHD_BYTES_PER_FRAME 6 /* 24bit audio (stereo) */
|
||||
|
||||
static struct snd_ratden podhd_ratden = {
|
||||
|
@ -43,7 +35,7 @@ static struct snd_ratden podhd_ratden = {
|
|||
};
|
||||
|
||||
static struct line6_pcm_properties podhd_pcm_properties = {
|
||||
.snd_line6_playback_hw = {
|
||||
.playback_hw = {
|
||||
.info = (SNDRV_PCM_INFO_MMAP |
|
||||
SNDRV_PCM_INFO_INTERLEAVED |
|
||||
SNDRV_PCM_INFO_BLOCK_TRANSFER |
|
||||
|
@ -61,7 +53,7 @@ static struct line6_pcm_properties podhd_pcm_properties = {
|
|||
.period_bytes_max = 8192,
|
||||
.periods_min = 1,
|
||||
.periods_max = 1024},
|
||||
.snd_line6_capture_hw = {
|
||||
.capture_hw = {
|
||||
.info = (SNDRV_PCM_INFO_MMAP |
|
||||
SNDRV_PCM_INFO_INTERLEAVED |
|
||||
SNDRV_PCM_INFO_BLOCK_TRANSFER |
|
||||
|
@ -78,7 +70,7 @@ static struct line6_pcm_properties podhd_pcm_properties = {
|
|||
.period_bytes_max = 8192,
|
||||
.periods_min = 1,
|
||||
.periods_max = 1024},
|
||||
.snd_line6_rates = {
|
||||
.rates = {
|
||||
.nrats = 1,
|
||||
.rats = &podhd_ratden},
|
||||
.bytes_per_frame = PODHD_BYTES_PER_FRAME
|
||||
|
@ -179,7 +171,7 @@ static int podhd_probe(struct usb_interface *interface,
|
|||
{
|
||||
return line6_probe(interface, id,
|
||||
&podhd_properties_table[id->driver_info],
|
||||
podhd_init, sizeof(struct usb_line6_podhd));
|
||||
podhd_init, sizeof(struct usb_line6));
|
||||
}
|
||||
|
||||
static struct usb_driver podhd_driver = {
|
||||
|
|
|
@ -1,4 +0,0 @@
|
|||
#ifndef DRIVER_REVISION
|
||||
/* current subversion revision */
|
||||
#define DRIVER_REVISION " (904)"
|
||||
#endif
|
|
@ -21,7 +21,6 @@
|
|||
#include "capture.h"
|
||||
#include "driver.h"
|
||||
#include "playback.h"
|
||||
#include "usbdefs.h"
|
||||
|
||||
enum line6_device_type {
|
||||
LINE6_GUITARPORT,
|
||||
|
@ -43,34 +42,22 @@ struct toneport_led {
|
|||
};
|
||||
|
||||
struct usb_line6_toneport {
|
||||
/**
|
||||
Generic Line 6 USB data.
|
||||
*/
|
||||
/* Generic Line 6 USB data */
|
||||
struct usb_line6 line6;
|
||||
|
||||
/**
|
||||
Source selector.
|
||||
*/
|
||||
/* Source selector */
|
||||
int source;
|
||||
|
||||
/**
|
||||
Serial number of device.
|
||||
*/
|
||||
/* Serial number of device */
|
||||
int serial_number;
|
||||
|
||||
/**
|
||||
Firmware version (x 100).
|
||||
*/
|
||||
/* Firmware version (x 100) */
|
||||
int firmware_version;
|
||||
|
||||
/**
|
||||
Timer for delayed PCM startup.
|
||||
*/
|
||||
/* Timer for delayed PCM startup */
|
||||
struct timer_list timer;
|
||||
|
||||
/**
|
||||
Device type.
|
||||
*/
|
||||
/* Device type */
|
||||
enum line6_device_type type;
|
||||
|
||||
/* LED instances */
|
||||
|
@ -89,7 +76,7 @@ static struct snd_ratden toneport_ratden = {
|
|||
};
|
||||
|
||||
static struct line6_pcm_properties toneport_pcm_properties = {
|
||||
.snd_line6_playback_hw = {
|
||||
.playback_hw = {
|
||||
.info = (SNDRV_PCM_INFO_MMAP |
|
||||
SNDRV_PCM_INFO_INTERLEAVED |
|
||||
SNDRV_PCM_INFO_BLOCK_TRANSFER |
|
||||
|
@ -107,7 +94,7 @@ static struct line6_pcm_properties toneport_pcm_properties = {
|
|||
.period_bytes_max = 8192,
|
||||
.periods_min = 1,
|
||||
.periods_max = 1024},
|
||||
.snd_line6_capture_hw = {
|
||||
.capture_hw = {
|
||||
.info = (SNDRV_PCM_INFO_MMAP |
|
||||
SNDRV_PCM_INFO_INTERLEAVED |
|
||||
SNDRV_PCM_INFO_BLOCK_TRANSFER |
|
||||
|
@ -124,7 +111,7 @@ static struct line6_pcm_properties toneport_pcm_properties = {
|
|||
.period_bytes_max = 8192,
|
||||
.periods_min = 1,
|
||||
.periods_max = 1024},
|
||||
.snd_line6_rates = {
|
||||
.rates = {
|
||||
.nrats = 1,
|
||||
.rats = &toneport_ratden},
|
||||
.bytes_per_frame = 4
|
||||
|
|
|
@ -1,27 +0,0 @@
|
|||
/*
|
||||
* Line 6 Linux USB driver
|
||||
*
|
||||
* Copyright (C) 2005-2008 Markus Grabner (grabner@icg.tugraz.at)
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU General Public License as
|
||||
* published by the Free Software Foundation, version 2.
|
||||
*
|
||||
*/
|
||||
|
||||
#ifndef USBDEFS_H
|
||||
#define USBDEFS_H
|
||||
|
||||
#define USB_INTERVALS_PER_SECOND 1000
|
||||
|
||||
/* device supports settings parameter via USB */
|
||||
#define LINE6_CAP_CONTROL (1 << 0)
|
||||
/* device supports PCM input/output via USB */
|
||||
#define LINE6_CAP_PCM (1 << 1)
|
||||
/* device support hardware monitoring */
|
||||
#define LINE6_CAP_HWMON (1 << 2)
|
||||
|
||||
#define LINE6_FALLBACK_INTERVAL 10
|
||||
#define LINE6_FALLBACK_MAXPACKETSIZE 16
|
||||
|
||||
#endif
|
|
@ -17,7 +17,6 @@
|
|||
#include <sound/core.h>
|
||||
|
||||
#include "driver.h"
|
||||
#include "usbdefs.h"
|
||||
|
||||
#define VARIAX_STARTUP_DELAY1 1000
|
||||
#define VARIAX_STARTUP_DELAY3 100
|
||||
|
@ -42,30 +41,20 @@ enum {
|
|||
};
|
||||
|
||||
struct usb_line6_variax {
|
||||
/**
|
||||
Generic Line 6 USB data.
|
||||
*/
|
||||
/* Generic Line 6 USB data */
|
||||
struct usb_line6 line6;
|
||||
|
||||
/**
|
||||
Buffer for activation code.
|
||||
*/
|
||||
/* Buffer for activation code */
|
||||
unsigned char *buffer_activate;
|
||||
|
||||
/**
|
||||
Handler for device initializaton.
|
||||
*/
|
||||
/* Handler for device initialization */
|
||||
struct work_struct startup_work;
|
||||
|
||||
/**
|
||||
Timers for device initializaton.
|
||||
*/
|
||||
/* Timers for device initialization */
|
||||
struct timer_list startup_timer1;
|
||||
struct timer_list startup_timer2;
|
||||
|
||||
/**
|
||||
Current progress in startup procedure.
|
||||
*/
|
||||
/* Current progress in startup procedure */
|
||||
int startup_progress;
|
||||
};
|
||||
|
||||
|
@ -270,9 +259,7 @@ static const struct line6_properties variax_properties_table[] = {
|
|||
[LINE6_PODXTLIVE_VARIAX] = {
|
||||
.id = "PODxtLive",
|
||||
.name = "PODxt Live",
|
||||
.capabilities = LINE6_CAP_CONTROL
|
||||
| LINE6_CAP_PCM
|
||||
| LINE6_CAP_HWMON,
|
||||
.capabilities = LINE6_CAP_CONTROL,
|
||||
.altsetting = 1,
|
||||
.ep_ctrl_r = 0x86,
|
||||
.ep_ctrl_w = 0x05,
|
||||
|
|
Loading…
Reference in New Issue