summaryrefslogtreecommitdiffstats
path: root/sound/usb
diff options
context:
space:
mode:
Diffstat (limited to 'sound/usb')
-rw-r--r--sound/usb/line6/capture.c5
-rw-r--r--sound/usb/line6/driver.c4
-rw-r--r--sound/usb/line6/driver.h89
-rw-r--r--sound/usb/line6/midi.c1
-rw-r--r--sound/usb/line6/midi.h32
-rw-r--r--sound/usb/line6/pcm.h57
-rw-r--r--sound/usb/line6/playback.c34
-rw-r--r--sound/usb/line6/pod.c39
-rw-r--r--sound/usb/line6/podhd.c16
-rw-r--r--sound/usb/line6/revision.h4
-rw-r--r--sound/usb/line6/toneport.c31
-rw-r--r--sound/usb/line6/usbdefs.h27
-rw-r--r--sound/usb/line6/variax.c25
13 files changed, 114 insertions, 250 deletions
diff --git a/sound/usb/line6/capture.c b/sound/usb/line6/capture.c
index 4183c5f5edc2..f518fbbe88de 100644
--- a/sound/usb/line6/capture.c
+++ b/sound/usb/line6/capture.c
@@ -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;
}
diff --git a/sound/usb/line6/driver.c b/sound/usb/line6/driver.c
index a0436993a167..2328ec9a1ca8 100644
--- a/sound/usb/line6/driver.c
+++ b/sound/usb/line6/driver.c
@@ -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 {
diff --git a/sound/usb/line6/driver.h b/sound/usb/line6/driver.h
index fce10f12f0d3..fa877a345860 100644
--- a/sound/usb/line6/driver.h
+++ b/sound/usb/line6/driver.h
@@ -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 *);
diff --git a/sound/usb/line6/midi.c b/sound/usb/line6/midi.c
index beeedf9a2cbe..cebea9b7f769 100644
--- a/sound/usb/line6/midi.c
+++ b/sound/usb/line6/midi.c
@@ -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))
diff --git a/sound/usb/line6/midi.h b/sound/usb/line6/midi.h
index 9d9467b2613c..cf82d69e2747 100644
--- a/sound/usb/line6/midi.h
+++ b/sound/usb/line6/midi.h
@@ -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;
};
diff --git a/sound/usb/line6/pcm.h b/sound/usb/line6/pcm.h
index 42d3e6fc2c61..508410adbd51 100644
--- a/sound/usb/line6/pcm.h
+++ b/sound/usb/line6/pcm.h
@@ -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;
};
diff --git a/sound/usb/line6/playback.c b/sound/usb/line6/playback.c
index 1708c05f14db..05dee690f487 100644
--- a/sound/usb/line6/playback.c
+++ b/sound/usb/line6/playback.c
@@ -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;
}
diff --git a/sound/usb/line6/pod.c b/sound/usb/line6/pod.c
index 6f7cd585f2d8..61aadd7d4b7f 100644
--- a/sound/usb/line6/pod.c
+++ b/sound/usb/line6/pod.c
@@ -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
diff --git a/sound/usb/line6/podhd.c b/sound/usb/line6/podhd.c
index 43c39886597e..9c3c7441fd11 100644
--- a/sound/usb/line6/podhd.c
+++ b/sound/usb/line6/podhd.c
@@ -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 = {
diff --git a/sound/usb/line6/revision.h b/sound/usb/line6/revision.h
deleted file mode 100644
index b4eee2b73831..000000000000
--- a/sound/usb/line6/revision.h
+++ /dev/null
@@ -1,4 +0,0 @@
-#ifndef DRIVER_REVISION
-/* current subversion revision */
-#define DRIVER_REVISION " (904)"
-#endif
diff --git a/sound/usb/line6/toneport.c b/sound/usb/line6/toneport.c
index 819e06b3f3db..b107cf481819 100644
--- a/sound/usb/line6/toneport.c
+++ b/sound/usb/line6/toneport.c
@@ -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
diff --git a/sound/usb/line6/usbdefs.h b/sound/usb/line6/usbdefs.h
deleted file mode 100644
index 5ef7bcd24e18..000000000000
--- a/sound/usb/line6/usbdefs.h
+++ /dev/null
@@ -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
diff --git a/sound/usb/line6/variax.c b/sound/usb/line6/variax.c
index 9701ffa61365..b1c1de65d584 100644
--- a/sound/usb/line6/variax.c
+++ b/sound/usb/line6/variax.c
@@ -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,