[x86] sound: Enable LINE6_USB as module (Closes: #700211)
Apply upstream changes up to Linux 3.8-rc1, since they include many important bug fixes and also remove a fair amount of crap. svn path=/dists/sid/linux/; revision=19798
This commit is contained in:
parent
5ba78f8730
commit
e7ef137d7c
|
@ -128,6 +128,8 @@ linux (3.2.38-1) UNRELEASED; urgency=low
|
|||
invert_brightness=1
|
||||
* [amd64] edac: Enable EDAC_SBRIDGE as module (Closes: #699283)
|
||||
* SCSI: Add virtio_scsi driver (Closes: #686636)
|
||||
* [x86] sound: Enable LINE6_USB as module (Closes: #700211)
|
||||
- Apply upstream changes up to Linux 3.8-rc1
|
||||
|
||||
[ Aurelien Jarno ]
|
||||
* [armhf/vexpress] Add kernel udebs.
|
||||
|
|
|
@ -1288,6 +1288,13 @@ CONFIG_STAGING_MEDIA=y
|
|||
##
|
||||
CONFIG_EASYCAP=m
|
||||
|
||||
##
|
||||
## file: drivers/staging/line6/Kconfig
|
||||
##
|
||||
CONFIG_LINE6_USB=m
|
||||
# CONFIG_LINE6_USB_DUMP_PCM is not set
|
||||
# CONFIG_LINE6_USB_IMPULSE_RESPONSE is not set
|
||||
|
||||
##
|
||||
## file: drivers/staging/media/go7007/Kconfig
|
||||
##
|
||||
|
|
41
debian/patches/features/all/line6/0001-line6-fix-memory-leaks-in-line6_init_midi.patch
vendored
Normal file
41
debian/patches/features/all/line6/0001-line6-fix-memory-leaks-in-line6_init_midi.patch
vendored
Normal file
|
@ -0,0 +1,41 @@
|
|||
From: Jesper Juhl <jj@chaosbits.net>
|
||||
Date: Mon, 24 Oct 2011 23:41:37 +0200
|
||||
Subject: [001/106] line6: fix memory leaks in line6_init_midi()
|
||||
|
||||
commit 982d6ab50115025c63f4b9f7175614008c41d449 upstream.
|
||||
|
||||
If the first call to line6_midibuf_init() fails we'll leak a little
|
||||
bit of memory. If the second call fails we'll leak a bit more. This
|
||||
happens when we return from the function and the local variable
|
||||
'line6midi' goes out of scope.
|
||||
|
||||
Signed-off-by: Jesper Juhl <jj@chaosbits.net>
|
||||
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
|
||||
---
|
||||
drivers/staging/line6/midi.c | 9 +++++++--
|
||||
1 file changed, 7 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/drivers/staging/line6/midi.c b/drivers/staging/line6/midi.c
|
||||
index e554a2d..86c50cf 100644
|
||||
--- a/drivers/staging/line6/midi.c
|
||||
+++ b/drivers/staging/line6/midi.c
|
||||
@@ -391,12 +391,17 @@ int line6_init_midi(struct usb_line6 *line6)
|
||||
return -ENOMEM;
|
||||
|
||||
err = line6_midibuf_init(&line6midi->midibuf_in, MIDI_BUFFER_SIZE, 0);
|
||||
- if (err < 0)
|
||||
+ if (err < 0) {
|
||||
+ kfree(line6midi);
|
||||
return err;
|
||||
+ }
|
||||
|
||||
err = line6_midibuf_init(&line6midi->midibuf_out, MIDI_BUFFER_SIZE, 1);
|
||||
- if (err < 0)
|
||||
+ if (err < 0) {
|
||||
+ kfree(line6midi->midibuf_in.buf);
|
||||
+ kfree(line6midi);
|
||||
return err;
|
||||
+ }
|
||||
|
||||
line6midi->line6 = line6;
|
||||
line6midi->midi_mask_transmit = 1;
|
354
debian/patches/features/all/line6/0002-staging-line6-add-Pod-HD300-support.patch
vendored
Normal file
354
debian/patches/features/all/line6/0002-staging-line6-add-Pod-HD300-support.patch
vendored
Normal file
|
@ -0,0 +1,354 @@
|
|||
From: Stefan Hajnoczi <stefanha@gmail.com>
|
||||
Date: Wed, 23 Nov 2011 08:20:42 +0000
|
||||
Subject: [002/106] staging: line6: add Pod HD300 support
|
||||
|
||||
commit 16dc10401133d16d13a5eea7da2a71d2080e32a1 upstream.
|
||||
|
||||
The Pod HD device family uses new MIDI SysEx messages and therefore
|
||||
cannot reuse the existing Pod code. Instead of hardcoding Pod HD MIDI
|
||||
messages into the driver, leave MIDI up to userspace. This driver
|
||||
simply presents MIDI and pcm ALSA devices.
|
||||
|
||||
This device is similar to the Pod except that it has 48 kHz audio and
|
||||
does not respond to Pod SysEx messages.
|
||||
|
||||
Signed-off-by: Stefan Hajnoczi <stefanha@gmail.com>
|
||||
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
|
||||
---
|
||||
drivers/staging/line6/Makefile | 3 +-
|
||||
drivers/staging/line6/driver.c | 24 +++++-
|
||||
drivers/staging/line6/pcm.c | 1 +
|
||||
drivers/staging/line6/podhd.c | 158 +++++++++++++++++++++++++++++++++++++++
|
||||
drivers/staging/line6/podhd.h | 30 ++++++++
|
||||
drivers/staging/line6/usbdefs.h | 2 +
|
||||
6 files changed, 216 insertions(+), 2 deletions(-)
|
||||
create mode 100644 drivers/staging/line6/podhd.c
|
||||
create mode 100644 drivers/staging/line6/podhd.h
|
||||
|
||||
diff --git a/drivers/staging/line6/Makefile b/drivers/staging/line6/Makefile
|
||||
index de6bd12..34a2dda 100644
|
||||
--- a/drivers/staging/line6/Makefile
|
||||
+++ b/drivers/staging/line6/Makefile
|
||||
@@ -12,4 +12,5 @@ line6usb-y := \
|
||||
playback.o \
|
||||
pod.o \
|
||||
toneport.o \
|
||||
- variax.o
|
||||
+ variax.o \
|
||||
+ podhd.o
|
||||
diff --git a/drivers/staging/line6/driver.c b/drivers/staging/line6/driver.c
|
||||
index 851b762..a71a5af 100644
|
||||
--- a/drivers/staging/line6/driver.c
|
||||
+++ b/drivers/staging/line6/driver.c
|
||||
@@ -21,6 +21,7 @@
|
||||
#include "midi.h"
|
||||
#include "playback.h"
|
||||
#include "pod.h"
|
||||
+#include "podhd.h"
|
||||
#include "revision.h"
|
||||
#include "toneport.h"
|
||||
#include "usbdefs.h"
|
||||
@@ -49,6 +50,7 @@ static const struct usb_device_id line6_id_table[] = {
|
||||
{USB_DEVICE(LINE6_VENDOR_ID, LINE6_DEVID_TONEPORT_UX1)},
|
||||
{USB_DEVICE(LINE6_VENDOR_ID, LINE6_DEVID_TONEPORT_UX2)},
|
||||
{USB_DEVICE(LINE6_VENDOR_ID, LINE6_DEVID_VARIAX)},
|
||||
+ {USB_DEVICE(LINE6_VENDOR_ID, LINE6_DEVID_PODHD300)},
|
||||
{},
|
||||
};
|
||||
|
||||
@@ -72,7 +74,8 @@ static struct line6_properties line6_properties_table[] = {
|
||||
{ "TonePortGX", "TonePort GX", LINE6_BIT_TONEPORT_GX, LINE6_BIT_PCM },
|
||||
{ "TonePortUX1", "TonePort UX1", LINE6_BIT_TONEPORT_UX1, LINE6_BIT_PCM },
|
||||
{ "TonePortUX2", "TonePort UX2", LINE6_BIT_TONEPORT_UX2, LINE6_BIT_PCM },
|
||||
- { "Variax", "Variax Workbench", LINE6_BIT_VARIAX, LINE6_BIT_CONTROL }
|
||||
+ { "Variax", "Variax Workbench", LINE6_BIT_VARIAX, LINE6_BIT_CONTROL },
|
||||
+ { "PODHD300", "POD HD300", LINE6_BIT_PODHD300, LINE6_BIT_CONTROL_PCM_HWMON },
|
||||
};
|
||||
/* *INDENT-ON* */
|
||||
|
||||
@@ -437,6 +440,9 @@ static void line6_data_received(struct urb *urb)
|
||||
line6);
|
||||
break;
|
||||
|
||||
+ case LINE6_DEVID_PODHD300:
|
||||
+ break; /* let userspace handle MIDI */
|
||||
+
|
||||
case LINE6_DEVID_PODXTLIVE:
|
||||
switch (line6->interface_number) {
|
||||
case PODXTLIVE_INTERFACE_POD:
|
||||
@@ -812,6 +818,7 @@ static int line6_probe(struct usb_interface *interface,
|
||||
case LINE6_DEVID_BASSPODXTPRO:
|
||||
case LINE6_DEVID_PODXT:
|
||||
case LINE6_DEVID_PODXTPRO:
|
||||
+ case LINE6_DEVID_PODHD300:
|
||||
alternate = 5;
|
||||
break;
|
||||
|
||||
@@ -865,6 +872,12 @@ static int line6_probe(struct usb_interface *interface,
|
||||
ep_write = 0x03;
|
||||
break;
|
||||
|
||||
+ case LINE6_DEVID_PODHD300:
|
||||
+ size = sizeof(struct usb_line6_podhd);
|
||||
+ ep_read = 0x84;
|
||||
+ ep_write = 0x03;
|
||||
+ break;
|
||||
+
|
||||
case LINE6_DEVID_POCKETPOD:
|
||||
size = sizeof(struct usb_line6_pod);
|
||||
ep_read = 0x82;
|
||||
@@ -1017,6 +1030,11 @@ static int line6_probe(struct usb_interface *interface,
|
||||
ret = line6_pod_init(interface, (struct usb_line6_pod *)line6);
|
||||
break;
|
||||
|
||||
+ case LINE6_DEVID_PODHD300:
|
||||
+ ret = line6_podhd_init(interface,
|
||||
+ (struct usb_line6_podhd *)line6);
|
||||
+ break;
|
||||
+
|
||||
case LINE6_DEVID_PODXTLIVE:
|
||||
switch (interface_number) {
|
||||
case PODXTLIVE_INTERFACE_POD:
|
||||
@@ -1139,6 +1157,10 @@ static void line6_disconnect(struct usb_interface *interface)
|
||||
line6_pod_disconnect(interface);
|
||||
break;
|
||||
|
||||
+ case LINE6_DEVID_PODHD300:
|
||||
+ line6_podhd_disconnect(interface);
|
||||
+ break;
|
||||
+
|
||||
case LINE6_DEVID_PODXTLIVE:
|
||||
switch (interface_number) {
|
||||
case PODXTLIVE_INTERFACE_POD:
|
||||
diff --git a/drivers/staging/line6/pcm.c b/drivers/staging/line6/pcm.c
|
||||
index 9d4c8a6..f56c642 100644
|
||||
--- a/drivers/staging/line6/pcm.c
|
||||
+++ b/drivers/staging/line6/pcm.c
|
||||
@@ -403,6 +403,7 @@ int line6_init_pcm(struct usb_line6 *line6,
|
||||
case LINE6_DEVID_PODXT:
|
||||
case LINE6_DEVID_PODXTLIVE:
|
||||
case LINE6_DEVID_PODXTPRO:
|
||||
+ case LINE6_DEVID_PODHD300:
|
||||
ep_read = 0x82;
|
||||
ep_write = 0x01;
|
||||
break;
|
||||
diff --git a/drivers/staging/line6/podhd.c b/drivers/staging/line6/podhd.c
|
||||
new file mode 100644
|
||||
index 0000000..6c0f7f2
|
||||
--- /dev/null
|
||||
+++ b/drivers/staging/line6/podhd.c
|
||||
@@ -0,0 +1,158 @@
|
||||
+/*
|
||||
+ * Line6 Pod HD
|
||||
+ *
|
||||
+ * Copyright (C) 2011 Stefan Hajnoczi <stefanha@gmail.com>
|
||||
+ *
|
||||
+ * 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.
|
||||
+ *
|
||||
+ */
|
||||
+
|
||||
+#include <sound/core.h>
|
||||
+#include <sound/pcm.h>
|
||||
+
|
||||
+#include "audio.h"
|
||||
+#include "driver.h"
|
||||
+#include "pcm.h"
|
||||
+#include "podhd.h"
|
||||
+
|
||||
+#define PODHD_BYTES_PER_FRAME 6 /* 24bit audio (stereo) */
|
||||
+
|
||||
+static struct snd_ratden podhd_ratden = {
|
||||
+ .num_min = 48000,
|
||||
+ .num_max = 48000,
|
||||
+ .num_step = 1,
|
||||
+ .den = 1,
|
||||
+};
|
||||
+
|
||||
+static struct line6_pcm_properties podhd_pcm_properties = {
|
||||
+ .snd_line6_playback_hw = {
|
||||
+ .info = (SNDRV_PCM_INFO_MMAP |
|
||||
+ SNDRV_PCM_INFO_INTERLEAVED |
|
||||
+ SNDRV_PCM_INFO_BLOCK_TRANSFER |
|
||||
+ SNDRV_PCM_INFO_MMAP_VALID |
|
||||
+ SNDRV_PCM_INFO_PAUSE |
|
||||
+#ifdef CONFIG_PM
|
||||
+ SNDRV_PCM_INFO_RESUME |
|
||||
+#endif
|
||||
+ SNDRV_PCM_INFO_SYNC_START),
|
||||
+ .formats = SNDRV_PCM_FMTBIT_S24_3LE,
|
||||
+ .rates = SNDRV_PCM_RATE_48000,
|
||||
+ .rate_min = 48000,
|
||||
+ .rate_max = 48000,
|
||||
+ .channels_min = 2,
|
||||
+ .channels_max = 2,
|
||||
+ .buffer_bytes_max = 60000,
|
||||
+ .period_bytes_min = 64,
|
||||
+ .period_bytes_max = 8192,
|
||||
+ .periods_min = 1,
|
||||
+ .periods_max = 1024},
|
||||
+ .snd_line6_capture_hw = {
|
||||
+ .info = (SNDRV_PCM_INFO_MMAP |
|
||||
+ SNDRV_PCM_INFO_INTERLEAVED |
|
||||
+ SNDRV_PCM_INFO_BLOCK_TRANSFER |
|
||||
+ SNDRV_PCM_INFO_MMAP_VALID |
|
||||
+#ifdef CONFIG_PM
|
||||
+ SNDRV_PCM_INFO_RESUME |
|
||||
+#endif
|
||||
+ SNDRV_PCM_INFO_SYNC_START),
|
||||
+ .formats = SNDRV_PCM_FMTBIT_S24_3LE,
|
||||
+ .rates = SNDRV_PCM_RATE_48000,
|
||||
+ .rate_min = 48000,
|
||||
+ .rate_max = 48000,
|
||||
+ .channels_min = 2,
|
||||
+ .channels_max = 2,
|
||||
+ .buffer_bytes_max = 60000,
|
||||
+ .period_bytes_min = 64,
|
||||
+ .period_bytes_max = 8192,
|
||||
+ .periods_min = 1,
|
||||
+ .periods_max = 1024},
|
||||
+ .snd_line6_rates = {
|
||||
+ .nrats = 1,
|
||||
+ .rats = &podhd_ratden},
|
||||
+ .bytes_per_frame = PODHD_BYTES_PER_FRAME
|
||||
+};
|
||||
+
|
||||
+/*
|
||||
+ POD HD destructor.
|
||||
+*/
|
||||
+static void podhd_destruct(struct usb_interface *interface)
|
||||
+{
|
||||
+ struct usb_line6_podhd *podhd = usb_get_intfdata(interface);
|
||||
+ struct usb_line6 *line6;
|
||||
+
|
||||
+ if (podhd == NULL)
|
||||
+ return;
|
||||
+ line6 = &podhd->line6;
|
||||
+ if (line6 == NULL)
|
||||
+ return;
|
||||
+ line6_cleanup_audio(line6);
|
||||
+}
|
||||
+
|
||||
+/*
|
||||
+ Try to init POD HD device.
|
||||
+*/
|
||||
+static int podhd_try_init(struct usb_interface *interface,
|
||||
+ struct usb_line6_podhd *podhd)
|
||||
+{
|
||||
+ int err;
|
||||
+ struct usb_line6 *line6 = &podhd->line6;
|
||||
+
|
||||
+ if ((interface == NULL) || (podhd == NULL))
|
||||
+ return -ENODEV;
|
||||
+
|
||||
+ /* initialize audio system: */
|
||||
+ err = line6_init_audio(line6);
|
||||
+ if (err < 0)
|
||||
+ return err;
|
||||
+
|
||||
+ /* initialize MIDI subsystem: */
|
||||
+ err = line6_init_midi(line6);
|
||||
+ if (err < 0)
|
||||
+ return err;
|
||||
+
|
||||
+ /* initialize PCM subsystem: */
|
||||
+ err = line6_init_pcm(line6, &podhd_pcm_properties);
|
||||
+ if (err < 0)
|
||||
+ return err;
|
||||
+
|
||||
+ /* register USB audio system: */
|
||||
+ err = line6_register_audio(line6);
|
||||
+ return err;
|
||||
+}
|
||||
+
|
||||
+/*
|
||||
+ Init POD HD device (and clean up in case of failure).
|
||||
+*/
|
||||
+int line6_podhd_init(struct usb_interface *interface,
|
||||
+ struct usb_line6_podhd *podhd)
|
||||
+{
|
||||
+ int err = podhd_try_init(interface, podhd);
|
||||
+
|
||||
+ if (err < 0)
|
||||
+ podhd_destruct(interface);
|
||||
+
|
||||
+ return err;
|
||||
+}
|
||||
+
|
||||
+/*
|
||||
+ POD HD device disconnected.
|
||||
+*/
|
||||
+void line6_podhd_disconnect(struct usb_interface *interface)
|
||||
+{
|
||||
+ struct usb_line6_podhd *podhd;
|
||||
+
|
||||
+ if (interface == NULL)
|
||||
+ return;
|
||||
+ podhd = usb_get_intfdata(interface);
|
||||
+
|
||||
+ if (podhd != NULL) {
|
||||
+ struct snd_line6_pcm *line6pcm = podhd->line6.line6pcm;
|
||||
+
|
||||
+ if (line6pcm != NULL)
|
||||
+ line6_pcm_disconnect(line6pcm);
|
||||
+ }
|
||||
+
|
||||
+ podhd_destruct(interface);
|
||||
+}
|
||||
diff --git a/drivers/staging/line6/podhd.h b/drivers/staging/line6/podhd.h
|
||||
new file mode 100644
|
||||
index 0000000..652f740
|
||||
--- /dev/null
|
||||
+++ b/drivers/staging/line6/podhd.h
|
||||
@@ -0,0 +1,30 @@
|
||||
+/*
|
||||
+ * Line6 Pod HD
|
||||
+ *
|
||||
+ * Copyright (C) 2011 Stefan Hajnoczi <stefanha@gmail.com>
|
||||
+ *
|
||||
+ * 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 PODHD_H
|
||||
+#define PODHD_H
|
||||
+
|
||||
+#include <linux/usb.h>
|
||||
+
|
||||
+#include "driver.h"
|
||||
+
|
||||
+struct usb_line6_podhd {
|
||||
+ /**
|
||||
+ Generic Line6 USB data.
|
||||
+ */
|
||||
+ struct usb_line6 line6;
|
||||
+};
|
||||
+
|
||||
+extern void line6_podhd_disconnect(struct usb_interface *interface);
|
||||
+extern int line6_podhd_init(struct usb_interface *interface,
|
||||
+ struct usb_line6_podhd *podhd);
|
||||
+
|
||||
+#endif /* PODHD_H */
|
||||
diff --git a/drivers/staging/line6/usbdefs.h b/drivers/staging/line6/usbdefs.h
|
||||
index c6dffe6..4e13364 100644
|
||||
--- a/drivers/staging/line6/usbdefs.h
|
||||
+++ b/drivers/staging/line6/usbdefs.h
|
||||
@@ -36,6 +36,7 @@
|
||||
#define LINE6_DEVID_TONEPORT_UX1 0x4141
|
||||
#define LINE6_DEVID_TONEPORT_UX2 0x4142
|
||||
#define LINE6_DEVID_VARIAX 0x534d
|
||||
+#define LINE6_DEVID_PODHD300 0x5057
|
||||
|
||||
#define LINE6_BIT_BASSPODXT (1 << 0)
|
||||
#define LINE6_BIT_BASSPODXTLIVE (1 << 1)
|
||||
@@ -54,6 +55,7 @@
|
||||
#define LINE6_BIT_TONEPORT_UX1 (1 << 14)
|
||||
#define LINE6_BIT_TONEPORT_UX2 (1 << 15)
|
||||
#define LINE6_BIT_VARIAX (1 << 16)
|
||||
+#define LINE6_BIT_PODHD300 (1 << 17)
|
||||
|
||||
#define LINE6_BITS_PRO (LINE6_BIT_BASSPODXTPRO | \
|
||||
LINE6_BIT_PODXTPRO)
|
|
@ -0,0 +1,31 @@
|
|||
From: Stefan Hajnoczi <stefanha@gmail.com>
|
||||
Date: Wed, 23 Nov 2011 08:20:43 +0000
|
||||
Subject: [003/106] staging: line6: add missing MIDI postprocessing case for
|
||||
POD HD300
|
||||
|
||||
commit 1dc403ffecae26ae52414488e326761a9ae10de7 upstream.
|
||||
|
||||
The driver leaves MIDI processing up to userspace for the POD HD300
|
||||
device. Add a missing case statement to skip MIDI postprocessing in the
|
||||
driver. This change has no effect other than silencing a printk:
|
||||
|
||||
line6usb driver bug: missing case in linux/drivers/staging/line6/midi.c:179
|
||||
|
||||
Signed-off-by: Stefan Hajnoczi <stefanha@gmail.com>
|
||||
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
|
||||
---
|
||||
drivers/staging/line6/midi.c | 1 +
|
||||
1 file changed, 1 insertion(+)
|
||||
|
||||
diff --git a/drivers/staging/line6/midi.c b/drivers/staging/line6/midi.c
|
||||
index 86c50cf..ed5577f 100644
|
||||
--- a/drivers/staging/line6/midi.c
|
||||
+++ b/drivers/staging/line6/midi.c
|
||||
@@ -173,6 +173,7 @@ static int send_midi_async(struct usb_line6 *line6, unsigned char *data,
|
||||
break;
|
||||
|
||||
case LINE6_DEVID_VARIAX:
|
||||
+ case LINE6_DEVID_PODHD300:
|
||||
break;
|
||||
|
||||
default:
|
44
debian/patches/features/all/line6/0004-staging-line6-use-smallest-iso-ep-packet-size.patch
vendored
Normal file
44
debian/patches/features/all/line6/0004-staging-line6-use-smallest-iso-ep-packet-size.patch
vendored
Normal file
|
@ -0,0 +1,44 @@
|
|||
From: Stefan Hajnoczi <stefanha@gmail.com>
|
||||
Date: Wed, 23 Nov 2011 08:20:44 +0000
|
||||
Subject: [004/106] staging: line6: use smallest iso ep packet size
|
||||
|
||||
commit 3b08db37cb04a80dccac8c2d7b03690b5f179487 upstream.
|
||||
|
||||
The POD HD300 isochronous endpoints have different max packet sizes for
|
||||
read and write. Using the read endpoint max packet size may be too
|
||||
large for the write endpoint. Instead we should use the minimum of both
|
||||
endpoints to be sure the size is acceptable.
|
||||
|
||||
In theory we could decouple read and write packet sizes but the driver
|
||||
currently uses a single size which I chose not to mess with since other
|
||||
features like software monitoring may depend on a single packet size for
|
||||
both endpoints.
|
||||
|
||||
Signed-off-by: Stefan Hajnoczi <stefanha@gmail.com>
|
||||
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
|
||||
---
|
||||
drivers/staging/line6/pcm.c | 11 ++++++++---
|
||||
1 file changed, 8 insertions(+), 3 deletions(-)
|
||||
|
||||
diff --git a/drivers/staging/line6/pcm.c b/drivers/staging/line6/pcm.c
|
||||
index f56c642..ae98434 100644
|
||||
--- a/drivers/staging/line6/pcm.c
|
||||
+++ b/drivers/staging/line6/pcm.c
|
||||
@@ -452,9 +452,14 @@ int line6_init_pcm(struct usb_line6 *line6,
|
||||
line6pcm->line6 = line6;
|
||||
line6pcm->ep_audio_read = ep_read;
|
||||
line6pcm->ep_audio_write = ep_write;
|
||||
- line6pcm->max_packet_size = usb_maxpacket(line6->usbdev,
|
||||
- usb_rcvintpipe(line6->usbdev,
|
||||
- ep_read), 0);
|
||||
+
|
||||
+ /* Read and write buffers are sized identically, so choose minimum */
|
||||
+ line6pcm->max_packet_size = min(
|
||||
+ usb_maxpacket(line6->usbdev,
|
||||
+ usb_rcvisocpipe(line6->usbdev, ep_read), 0),
|
||||
+ usb_maxpacket(line6->usbdev,
|
||||
+ usb_sndisocpipe(line6->usbdev, ep_write), 1));
|
||||
+
|
||||
line6pcm->properties = properties;
|
||||
line6->line6pcm = line6pcm;
|
||||
|
161
debian/patches/features/all/line6/0005-staging-line6-alloc-free-buffers-in-hw_params-hw_fre.patch
vendored
Normal file
161
debian/patches/features/all/line6/0005-staging-line6-alloc-free-buffers-in-hw_params-hw_fre.patch
vendored
Normal file
|
@ -0,0 +1,161 @@
|
|||
From: Stefan Hajnoczi <stefanha@gmail.com>
|
||||
Date: Wed, 23 Nov 2011 08:20:45 +0000
|
||||
Subject: [005/106] staging: line6: alloc/free buffers in hw_params/hw_free
|
||||
|
||||
commit 140e28b83c4a31831cbf293d9cab20c603821202 upstream.
|
||||
|
||||
It is unsafe to free buffers in line6_pcm_stop(), which is not allowed
|
||||
to sleep, since urbs cannot be killed completely there and only
|
||||
unlinked. This means I/O may still be in progress and the URB
|
||||
completion function still gets invoked. This may result in memory
|
||||
corruption when buffer_in is freed but I/O is still pending.
|
||||
|
||||
Additionally, line6_pcm_start() is not supposed to sleep so it should
|
||||
not use kmalloc(GFP_KERNEL).
|
||||
|
||||
These issues can be resolved by performing buffer allocation/freeing in
|
||||
the .hw_params/.hw_free callbacks instead. The ALSA documentation also
|
||||
recommends doing buffer allocation/freeing in these callbacks.
|
||||
|
||||
Signed-off-by: Stefan Hajnoczi <stefanha@gmail.com>
|
||||
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
|
||||
---
|
||||
drivers/staging/line6/capture.c | 15 +++++++++++++++
|
||||
drivers/staging/line6/pcm.c | 24 ------------------------
|
||||
drivers/staging/line6/playback.c | 15 +++++++++++++++
|
||||
3 files changed, 30 insertions(+), 24 deletions(-)
|
||||
|
||||
diff --git a/drivers/staging/line6/capture.c b/drivers/staging/line6/capture.c
|
||||
index 9647154..d9da7ed 100644
|
||||
--- a/drivers/staging/line6/capture.c
|
||||
+++ b/drivers/staging/line6/capture.c
|
||||
@@ -9,6 +9,7 @@
|
||||
*
|
||||
*/
|
||||
|
||||
+#include <linux/slab.h>
|
||||
#include <sound/core.h>
|
||||
#include <sound/pcm.h>
|
||||
#include <sound/pcm_params.h>
|
||||
@@ -319,6 +320,15 @@ static int snd_line6_capture_hw_params(struct snd_pcm_substream *substream,
|
||||
}
|
||||
/* -- [FD] end */
|
||||
|
||||
+ line6pcm->buffer_in = kmalloc(LINE6_ISO_BUFFERS * LINE6_ISO_PACKETS *
|
||||
+ line6pcm->max_packet_size, GFP_KERNEL);
|
||||
+
|
||||
+ if (!line6pcm->buffer_in) {
|
||||
+ dev_err(line6pcm->line6->ifcdev,
|
||||
+ "cannot malloc capture buffer\n");
|
||||
+ return -ENOMEM;
|
||||
+ }
|
||||
+
|
||||
ret = snd_pcm_lib_malloc_pages(substream,
|
||||
params_buffer_bytes(hw_params));
|
||||
if (ret < 0)
|
||||
@@ -331,6 +341,11 @@ static int snd_line6_capture_hw_params(struct snd_pcm_substream *substream,
|
||||
/* hw_free capture callback */
|
||||
static int snd_line6_capture_hw_free(struct snd_pcm_substream *substream)
|
||||
{
|
||||
+ struct snd_line6_pcm *line6pcm = snd_pcm_substream_chip(substream);
|
||||
+
|
||||
+ line6_unlink_wait_clear_audio_in_urbs(line6pcm);
|
||||
+ kfree(line6pcm->buffer_in);
|
||||
+ line6pcm->buffer_in = NULL;
|
||||
return snd_pcm_lib_free_pages(substream);
|
||||
}
|
||||
|
||||
diff --git a/drivers/staging/line6/pcm.c b/drivers/staging/line6/pcm.c
|
||||
index ae98434..2e4e164 100644
|
||||
--- a/drivers/staging/line6/pcm.c
|
||||
+++ b/drivers/staging/line6/pcm.c
|
||||
@@ -119,16 +119,6 @@ int line6_pcm_start(struct snd_line6_pcm *line6pcm, int channels)
|
||||
if (line6pcm->active_urb_in | line6pcm->unlink_urb_in)
|
||||
return -EBUSY;
|
||||
|
||||
- line6pcm->buffer_in =
|
||||
- kmalloc(LINE6_ISO_BUFFERS * LINE6_ISO_PACKETS *
|
||||
- line6pcm->max_packet_size, GFP_KERNEL);
|
||||
-
|
||||
- if (!line6pcm->buffer_in) {
|
||||
- dev_err(line6pcm->line6->ifcdev,
|
||||
- "cannot malloc capture buffer\n");
|
||||
- return -ENOMEM;
|
||||
- }
|
||||
-
|
||||
line6pcm->count_in = 0;
|
||||
line6pcm->prev_fsize = 0;
|
||||
err = line6_submit_audio_in_all_urbs(line6pcm);
|
||||
@@ -147,16 +137,6 @@ int line6_pcm_start(struct snd_line6_pcm *line6pcm, int channels)
|
||||
if (line6pcm->active_urb_out | line6pcm->unlink_urb_out)
|
||||
return -EBUSY;
|
||||
|
||||
- line6pcm->buffer_out =
|
||||
- kmalloc(LINE6_ISO_BUFFERS * LINE6_ISO_PACKETS *
|
||||
- line6pcm->max_packet_size, GFP_KERNEL);
|
||||
-
|
||||
- if (!line6pcm->buffer_out) {
|
||||
- dev_err(line6pcm->line6->ifcdev,
|
||||
- "cannot malloc playback buffer\n");
|
||||
- return -ENOMEM;
|
||||
- }
|
||||
-
|
||||
line6pcm->count_out = 0;
|
||||
err = line6_submit_audio_out_all_urbs(line6pcm);
|
||||
|
||||
@@ -178,15 +158,11 @@ int line6_pcm_stop(struct snd_line6_pcm *line6pcm, int channels)
|
||||
if (((flags_old & MASK_CAPTURE) != 0) &&
|
||||
((flags_new & MASK_CAPTURE) == 0)) {
|
||||
line6_unlink_audio_in_urbs(line6pcm);
|
||||
- kfree(line6pcm->buffer_in);
|
||||
- line6pcm->buffer_in = NULL;
|
||||
}
|
||||
|
||||
if (((flags_old & MASK_PLAYBACK) != 0) &&
|
||||
((flags_new & MASK_PLAYBACK) == 0)) {
|
||||
line6_unlink_audio_out_urbs(line6pcm);
|
||||
- kfree(line6pcm->buffer_out);
|
||||
- line6pcm->buffer_out = NULL;
|
||||
}
|
||||
#if LINE6_BACKUP_MONITOR_SIGNAL
|
||||
kfree(line6pcm->prev_fbuf);
|
||||
diff --git a/drivers/staging/line6/playback.c b/drivers/staging/line6/playback.c
|
||||
index 10c5438..b344527 100644
|
||||
--- a/drivers/staging/line6/playback.c
|
||||
+++ b/drivers/staging/line6/playback.c
|
||||
@@ -9,6 +9,7 @@
|
||||
*
|
||||
*/
|
||||
|
||||
+#include <linux/slab.h>
|
||||
#include <sound/core.h>
|
||||
#include <sound/pcm.h>
|
||||
#include <sound/pcm_params.h>
|
||||
@@ -469,6 +470,15 @@ static int snd_line6_playback_hw_params(struct snd_pcm_substream *substream,
|
||||
}
|
||||
/* -- [FD] end */
|
||||
|
||||
+ line6pcm->buffer_out = kmalloc(LINE6_ISO_BUFFERS * LINE6_ISO_PACKETS *
|
||||
+ line6pcm->max_packet_size, GFP_KERNEL);
|
||||
+
|
||||
+ if (!line6pcm->buffer_out) {
|
||||
+ dev_err(line6pcm->line6->ifcdev,
|
||||
+ "cannot malloc playback buffer\n");
|
||||
+ return -ENOMEM;
|
||||
+ }
|
||||
+
|
||||
ret = snd_pcm_lib_malloc_pages(substream,
|
||||
params_buffer_bytes(hw_params));
|
||||
if (ret < 0)
|
||||
@@ -481,6 +491,11 @@ static int snd_line6_playback_hw_params(struct snd_pcm_substream *substream,
|
||||
/* hw_free playback callback */
|
||||
static int snd_line6_playback_hw_free(struct snd_pcm_substream *substream)
|
||||
{
|
||||
+ struct snd_line6_pcm *line6pcm = snd_pcm_substream_chip(substream);
|
||||
+
|
||||
+ line6_unlink_wait_clear_audio_out_urbs(line6pcm);
|
||||
+ kfree(line6pcm->buffer_out);
|
||||
+ line6pcm->buffer_out = NULL;
|
||||
return snd_pcm_lib_free_pages(substream);
|
||||
}
|
||||
|
|
@ -0,0 +1,42 @@
|
|||
From: Thomas Meyer <thomas@m3y3r.de>
|
||||
Date: Tue, 8 Nov 2011 20:40:26 +0100
|
||||
Subject: [006/106] Staging: line6: Use kmemdup rather than duplicating its
|
||||
implementation
|
||||
|
||||
commit cff863871e748d072cae002fb13e692436b0200a upstream.
|
||||
|
||||
Use kmemdup rather than duplicating its implementation
|
||||
|
||||
The semantic patch that makes this change is available
|
||||
in scripts/coccinelle/api/memdup.cocci.
|
||||
|
||||
More information about semantic patching is available at
|
||||
http://coccinelle.lip6.fr/
|
||||
|
||||
Signed-off-by: Thomas Meyer <thomas@m3y3r.de>
|
||||
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
|
||||
---
|
||||
drivers/staging/line6/midi.c | 3 +--
|
||||
1 file changed, 1 insertion(+), 2 deletions(-)
|
||||
|
||||
diff --git a/drivers/staging/line6/midi.c b/drivers/staging/line6/midi.c
|
||||
index ed5577f..7f1e90e 100644
|
||||
--- a/drivers/staging/line6/midi.c
|
||||
+++ b/drivers/staging/line6/midi.c
|
||||
@@ -135,7 +135,7 @@ static int send_midi_async(struct usb_line6 *line6, unsigned char *data,
|
||||
line6_write_hexdump(line6, 'S', data, length);
|
||||
#endif
|
||||
|
||||
- transfer_buffer = kmalloc(length, GFP_ATOMIC);
|
||||
+ transfer_buffer = kmemdup(data, length, GFP_ATOMIC);
|
||||
|
||||
if (transfer_buffer == NULL) {
|
||||
usb_free_urb(urb);
|
||||
@@ -143,7 +143,6 @@ static int send_midi_async(struct usb_line6 *line6, unsigned char *data,
|
||||
return -ENOMEM;
|
||||
}
|
||||
|
||||
- memcpy(transfer_buffer, data, length);
|
||||
usb_fill_int_urb(urb, line6->usbdev,
|
||||
usb_sndbulkpipe(line6->usbdev,
|
||||
line6->ep_control_write),
|
43
debian/patches/features/all/line6/0007-Staging-line6-NULL-dereference-in-dev_err.patch
vendored
Normal file
43
debian/patches/features/all/line6/0007-Staging-line6-NULL-dereference-in-dev_err.patch
vendored
Normal file
|
@ -0,0 +1,43 @@
|
|||
From: Dan Carpenter <dan.carpenter@oracle.com>
|
||||
Date: Wed, 30 Nov 2011 11:43:41 +0300
|
||||
Subject: [007/106] Staging: line6: NULL dereference in dev_err()
|
||||
|
||||
commit 4bd8b4de6f806f1429d23a2f6e2549ed0e8bc49b upstream.
|
||||
|
||||
"line6" hasn't been set at this point and we should be using
|
||||
&interface->dev instead.
|
||||
|
||||
Gcc would have complained about this if it weren't for the fact that we
|
||||
initialized line6 to NULL. I removed the initialization.
|
||||
|
||||
Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>
|
||||
Reviewed-by: Stefan Hajnoczi <stefanha@gmail.com>
|
||||
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
|
||||
---
|
||||
drivers/staging/line6/driver.c | 6 +++---
|
||||
1 file changed, 3 insertions(+), 3 deletions(-)
|
||||
|
||||
diff --git a/drivers/staging/line6/driver.c b/drivers/staging/line6/driver.c
|
||||
index a71a5af..a2f48ee 100644
|
||||
--- a/drivers/staging/line6/driver.c
|
||||
+++ b/drivers/staging/line6/driver.c
|
||||
@@ -726,8 +726,8 @@ static int line6_probe(struct usb_interface *interface,
|
||||
const struct usb_device_id *id)
|
||||
{
|
||||
int devtype;
|
||||
- struct usb_device *usbdev = NULL;
|
||||
- struct usb_line6 *line6 = NULL;
|
||||
+ struct usb_device *usbdev;
|
||||
+ struct usb_line6 *line6;
|
||||
const struct line6_properties *properties;
|
||||
int devnum;
|
||||
int interface_number, alternate = 0;
|
||||
@@ -936,7 +936,7 @@ static int line6_probe(struct usb_interface *interface,
|
||||
}
|
||||
|
||||
if (size == 0) {
|
||||
- dev_err(line6->ifcdev,
|
||||
+ dev_err(&interface->dev,
|
||||
"driver bug: interface data size not set\n");
|
||||
ret = -ENODEV;
|
||||
goto err_put;
|
|
@ -0,0 +1,50 @@
|
|||
From: Andor Daam <andor.daam@googlemail.com>
|
||||
Date: Mon, 5 Dec 2011 10:09:25 +0100
|
||||
Subject: [008/106] Staging: line6/midi.c: Fixed call of obsolete function
|
||||
strict_strtoul
|
||||
|
||||
commit 4d85fae04f23ebbdbbb11061b8eec48082ecdc43 upstream.
|
||||
|
||||
The function strict_strtoul is obsolete and should be replaced by the
|
||||
new kstrto* functions.
|
||||
|
||||
The variable midi_mask_transmit is only used as unsigned short and the
|
||||
datatypes of all affected variables were adjusted accordingly.
|
||||
|
||||
Signed-off-by: Andor Daam <andor.daam@googlemail.com>
|
||||
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
|
||||
---
|
||||
drivers/staging/line6/midi.c | 4 ++--
|
||||
drivers/staging/line6/midi.h | 2 +-
|
||||
2 files changed, 3 insertions(+), 3 deletions(-)
|
||||
|
||||
diff --git a/drivers/staging/line6/midi.c b/drivers/staging/line6/midi.c
|
||||
index 7f1e90e..3d1ada6 100644
|
||||
--- a/drivers/staging/line6/midi.c
|
||||
+++ b/drivers/staging/line6/midi.c
|
||||
@@ -307,10 +307,10 @@ static ssize_t midi_set_midi_mask_transmit(struct device *dev,
|
||||
{
|
||||
struct usb_interface *interface = to_usb_interface(dev);
|
||||
struct usb_line6 *line6 = usb_get_intfdata(interface);
|
||||
- unsigned long value;
|
||||
+ unsigned short value;
|
||||
int ret;
|
||||
|
||||
- ret = strict_strtoul(buf, 10, &value);
|
||||
+ ret = kstrtou16(buf, 10, &value);
|
||||
if (ret)
|
||||
return ret;
|
||||
|
||||
diff --git a/drivers/staging/line6/midi.h b/drivers/staging/line6/midi.h
|
||||
index b73a025..2c0a663 100644
|
||||
--- a/drivers/staging/line6/midi.h
|
||||
+++ b/drivers/staging/line6/midi.h
|
||||
@@ -57,7 +57,7 @@ struct snd_line6_midi {
|
||||
/**
|
||||
Bit mask for output MIDI channels.
|
||||
*/
|
||||
- int midi_mask_transmit;
|
||||
+ unsigned short midi_mask_transmit;
|
||||
|
||||
/**
|
||||
Bit mask for input MIDI channels.
|
|
@ -0,0 +1,51 @@
|
|||
From: Andor Daam <andor.daam@googlemail.com>
|
||||
Date: Mon, 5 Dec 2011 10:10:37 +0100
|
||||
Subject: [009/106] Staging: line6/midi.c: Fixed call of obsolete function
|
||||
strict_strtoul
|
||||
|
||||
commit 251c3948808046c39359658fa2faffff45b825d3 upstream.
|
||||
|
||||
The obsolete function strict_strtoul should be replaced by the kstrto*
|
||||
functions.
|
||||
|
||||
In this context kstrtou16 should be use, as midi_mask_receive is only
|
||||
used as unsigned short. All corresponding datatypes were adapted
|
||||
accordingly.
|
||||
|
||||
Signed-off-by: Andor Daam <andor.daam@googlemail.com>
|
||||
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
|
||||
---
|
||||
drivers/staging/line6/midi.c | 4 ++--
|
||||
drivers/staging/line6/midi.h | 2 +-
|
||||
2 files changed, 3 insertions(+), 3 deletions(-)
|
||||
|
||||
diff --git a/drivers/staging/line6/midi.c b/drivers/staging/line6/midi.c
|
||||
index 3d1ada6..3013fb5 100644
|
||||
--- a/drivers/staging/line6/midi.c
|
||||
+++ b/drivers/staging/line6/midi.c
|
||||
@@ -339,10 +339,10 @@ static ssize_t midi_set_midi_mask_receive(struct device *dev,
|
||||
{
|
||||
struct usb_interface *interface = to_usb_interface(dev);
|
||||
struct usb_line6 *line6 = usb_get_intfdata(interface);
|
||||
- unsigned long value;
|
||||
+ unsigned short value;
|
||||
int ret;
|
||||
|
||||
- ret = strict_strtoul(buf, 10, &value);
|
||||
+ ret = kstrtou16(buf, 10, &value);
|
||||
if (ret)
|
||||
return ret;
|
||||
|
||||
diff --git a/drivers/staging/line6/midi.h b/drivers/staging/line6/midi.h
|
||||
index 2c0a663..4a9e9f9 100644
|
||||
--- a/drivers/staging/line6/midi.h
|
||||
+++ b/drivers/staging/line6/midi.h
|
||||
@@ -62,7 +62,7 @@ struct snd_line6_midi {
|
||||
/**
|
||||
Bit mask for input MIDI channels.
|
||||
*/
|
||||
- int midi_mask_receive;
|
||||
+ unsigned short midi_mask_receive;
|
||||
|
||||
/**
|
||||
Buffer for incoming MIDI stream.
|
106
debian/patches/features/all/line6/0010-staging-line6-Remove-obsolete-code.patch
vendored
Normal file
106
debian/patches/features/all/line6/0010-staging-line6-Remove-obsolete-code.patch
vendored
Normal file
|
@ -0,0 +1,106 @@
|
|||
From: Markus Grabner <grabner@icg.tugraz.at>
|
||||
Date: Mon, 5 Dec 2011 23:51:52 +0100
|
||||
Subject: [010/106] staging/line6: Remove obsolete code
|
||||
|
||||
commit 3b35de4126f03d8df089c5fc908c40bb91485f6c upstream.
|
||||
|
||||
This patch removes experimental code which is no longer used.
|
||||
|
||||
Signed-off-by: Markus Grabner <grabner@icg.tugraz.at>
|
||||
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
|
||||
---
|
||||
drivers/staging/line6/capture.c | 4 ----
|
||||
drivers/staging/line6/pcm.c | 17 -----------------
|
||||
drivers/staging/line6/pcm.h | 3 ---
|
||||
drivers/staging/line6/playback.c | 8 --------
|
||||
4 files changed, 32 deletions(-)
|
||||
|
||||
diff --git a/drivers/staging/line6/capture.c b/drivers/staging/line6/capture.c
|
||||
index d9da7ed..ba441ed 100644
|
||||
--- a/drivers/staging/line6/capture.c
|
||||
+++ b/drivers/staging/line6/capture.c
|
||||
@@ -244,11 +244,7 @@ static void audio_in_callback(struct urb *urb)
|
||||
length += fsize;
|
||||
|
||||
/* the following assumes LINE6_ISO_PACKETS == 1: */
|
||||
-#if LINE6_BACKUP_MONITOR_SIGNAL
|
||||
- memcpy(line6pcm->prev_fbuf, fbuf, fsize);
|
||||
-#else
|
||||
line6pcm->prev_fbuf = fbuf;
|
||||
-#endif
|
||||
line6pcm->prev_fsize = fsize;
|
||||
|
||||
#ifdef CONFIG_LINE6_USB_IMPULSE_RESPONSE
|
||||
diff --git a/drivers/staging/line6/pcm.c b/drivers/staging/line6/pcm.c
|
||||
index 2e4e164..a70c087 100644
|
||||
--- a/drivers/staging/line6/pcm.c
|
||||
+++ b/drivers/staging/line6/pcm.c
|
||||
@@ -93,21 +93,7 @@ int line6_pcm_start(struct snd_line6_pcm *line6pcm, int channels)
|
||||
unsigned long flags_new = flags_old | channels;
|
||||
int err = 0;
|
||||
|
||||
-#if LINE6_BACKUP_MONITOR_SIGNAL
|
||||
- if (!(line6pcm->line6->properties->capabilities & LINE6_BIT_HWMON)) {
|
||||
- line6pcm->prev_fbuf =
|
||||
- kmalloc(LINE6_ISO_PACKETS * line6pcm->max_packet_size,
|
||||
- GFP_KERNEL);
|
||||
-
|
||||
- if (!line6pcm->prev_fbuf) {
|
||||
- dev_err(line6pcm->line6->ifcdev,
|
||||
- "cannot malloc monitor buffer\n");
|
||||
- return -ENOMEM;
|
||||
- }
|
||||
- }
|
||||
-#else
|
||||
line6pcm->prev_fbuf = NULL;
|
||||
-#endif
|
||||
|
||||
if (((flags_old & MASK_CAPTURE) == 0) &&
|
||||
((flags_new & MASK_CAPTURE) != 0)) {
|
||||
@@ -164,9 +150,6 @@ int line6_pcm_stop(struct snd_line6_pcm *line6pcm, int channels)
|
||||
((flags_new & MASK_PLAYBACK) == 0)) {
|
||||
line6_unlink_audio_out_urbs(line6pcm);
|
||||
}
|
||||
-#if LINE6_BACKUP_MONITOR_SIGNAL
|
||||
- kfree(line6pcm->prev_fbuf);
|
||||
-#endif
|
||||
|
||||
return 0;
|
||||
}
|
||||
diff --git a/drivers/staging/line6/pcm.h b/drivers/staging/line6/pcm.h
|
||||
index 77055b3..05f4ef3 100644
|
||||
--- a/drivers/staging/line6/pcm.h
|
||||
+++ b/drivers/staging/line6/pcm.h
|
||||
@@ -39,9 +39,6 @@
|
||||
#define LINE6_IMPULSE_DEFAULT_PERIOD 100
|
||||
#endif
|
||||
|
||||
-#define LINE6_BACKUP_MONITOR_SIGNAL 0
|
||||
-#define LINE6_REUSE_DMA_AREA_FOR_PLAYBACK 0
|
||||
-
|
||||
/*
|
||||
Get substream from Line6 PCM data structure
|
||||
*/
|
||||
diff --git a/drivers/staging/line6/playback.c b/drivers/staging/line6/playback.c
|
||||
index b344527..e495b32 100644
|
||||
--- a/drivers/staging/line6/playback.c
|
||||
+++ b/drivers/staging/line6/playback.c
|
||||
@@ -223,18 +223,10 @@ static int submit_audio_out_urb(struct snd_line6_pcm *line6pcm)
|
||||
} else
|
||||
dev_err(line6pcm->line6->ifcdev, "driver bug: len = %d\n", len); /* this is somewhat paranoid */
|
||||
} else {
|
||||
-#if LINE6_REUSE_DMA_AREA_FOR_PLAYBACK
|
||||
- /* set the buffer pointer */
|
||||
- urb_out->transfer_buffer =
|
||||
- runtime->dma_area +
|
||||
- line6pcm->pos_out * bytes_per_frame;
|
||||
-#else
|
||||
- /* copy data */
|
||||
memcpy(urb_out->transfer_buffer,
|
||||
runtime->dma_area +
|
||||
line6pcm->pos_out * bytes_per_frame,
|
||||
urb_out->transfer_buffer_length);
|
||||
-#endif
|
||||
}
|
||||
|
||||
line6pcm->pos_out += urb_frames;
|
324
debian/patches/features/all/line6/0011-staging-line6-refactor-device-information-and-add-PO.patch
vendored
Normal file
324
debian/patches/features/all/line6/0011-staging-line6-refactor-device-information-and-add-PO.patch
vendored
Normal file
|
@ -0,0 +1,324 @@
|
|||
From: Markus Grabner <grabner@icg.tugraz.at>
|
||||
Date: Mon, 5 Dec 2011 23:51:53 +0100
|
||||
Subject: [011/106] staging/line6: refactor device information and add POD HD
|
||||
500
|
||||
|
||||
commit 4c6fb5fc050a4430363d92994132fffa6776c9d4 upstream.
|
||||
|
||||
This patch refactors the device information code and adds preliminary support for the POD HD 500 device.
|
||||
|
||||
Signed-off-by: Markus Grabner <grabner@icg.tugraz.at>
|
||||
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
|
||||
---
|
||||
drivers/staging/line6/driver.c | 50 +++++++++++++--------
|
||||
drivers/staging/line6/driver.h | 10 ++---
|
||||
drivers/staging/line6/midi.c | 16 ++++++-
|
||||
drivers/staging/line6/pcm.c | 1 +
|
||||
drivers/staging/line6/usbdefs.h | 93 ++++++++++++++++++++++++---------------
|
||||
5 files changed, 109 insertions(+), 61 deletions(-)
|
||||
|
||||
diff --git a/drivers/staging/line6/driver.c b/drivers/staging/line6/driver.c
|
||||
index a2f48ee..6a1959e 100644
|
||||
--- a/drivers/staging/line6/driver.c
|
||||
+++ b/drivers/staging/line6/driver.c
|
||||
@@ -38,6 +38,8 @@ static const struct usb_device_id line6_id_table[] = {
|
||||
{USB_DEVICE(LINE6_VENDOR_ID, LINE6_DEVID_BASSPODXTPRO)},
|
||||
{USB_DEVICE(LINE6_VENDOR_ID, LINE6_DEVID_GUITARPORT)},
|
||||
{USB_DEVICE(LINE6_VENDOR_ID, LINE6_DEVID_POCKETPOD)},
|
||||
+ {USB_DEVICE(LINE6_VENDOR_ID, LINE6_DEVID_PODHD300)},
|
||||
+ {USB_DEVICE(LINE6_VENDOR_ID, LINE6_DEVID_PODHD500)},
|
||||
{USB_DEVICE(LINE6_VENDOR_ID, LINE6_DEVID_PODSTUDIO_GX)},
|
||||
{USB_DEVICE(LINE6_VENDOR_ID, LINE6_DEVID_PODSTUDIO_UX1)},
|
||||
{USB_DEVICE(LINE6_VENDOR_ID, LINE6_DEVID_PODSTUDIO_UX2)},
|
||||
@@ -50,7 +52,6 @@ static const struct usb_device_id line6_id_table[] = {
|
||||
{USB_DEVICE(LINE6_VENDOR_ID, LINE6_DEVID_TONEPORT_UX1)},
|
||||
{USB_DEVICE(LINE6_VENDOR_ID, LINE6_DEVID_TONEPORT_UX2)},
|
||||
{USB_DEVICE(LINE6_VENDOR_ID, LINE6_DEVID_VARIAX)},
|
||||
- {USB_DEVICE(LINE6_VENDOR_ID, LINE6_DEVID_PODHD300)},
|
||||
{},
|
||||
};
|
||||
|
||||
@@ -58,24 +59,25 @@ MODULE_DEVICE_TABLE(usb, line6_id_table);
|
||||
|
||||
/* *INDENT-OFF* */
|
||||
static struct line6_properties line6_properties_table[] = {
|
||||
- { "BassPODxt", "BassPODxt", LINE6_BIT_BASSPODXT, LINE6_BIT_CONTROL_PCM_HWMON },
|
||||
- { "BassPODxtLive", "BassPODxt Live", LINE6_BIT_BASSPODXTLIVE, LINE6_BIT_CONTROL_PCM_HWMON },
|
||||
- { "BassPODxtPro", "BassPODxt Pro", LINE6_BIT_BASSPODXTPRO, LINE6_BIT_CONTROL_PCM_HWMON },
|
||||
- { "GuitarPort", "GuitarPort", LINE6_BIT_GUITARPORT, LINE6_BIT_PCM },
|
||||
- { "PocketPOD", "Pocket POD", LINE6_BIT_POCKETPOD, LINE6_BIT_CONTROL },
|
||||
- { "PODStudioGX", "POD Studio GX", LINE6_BIT_PODSTUDIO_GX, LINE6_BIT_PCM },
|
||||
- { "PODStudioUX1", "POD Studio UX1", LINE6_BIT_PODSTUDIO_UX1, LINE6_BIT_PCM },
|
||||
- { "PODStudioUX2", "POD Studio UX2", LINE6_BIT_PODSTUDIO_UX2, LINE6_BIT_PCM },
|
||||
- { "PODX3", "POD X3", LINE6_BIT_PODX3, LINE6_BIT_PCM },
|
||||
- { "PODX3Live", "POD X3 Live", LINE6_BIT_PODX3LIVE, LINE6_BIT_PCM },
|
||||
- { "PODxt", "PODxt", LINE6_BIT_PODXT, LINE6_BIT_CONTROL_PCM_HWMON },
|
||||
- { "PODxtLive", "PODxt Live", LINE6_BIT_PODXTLIVE, LINE6_BIT_CONTROL_PCM_HWMON },
|
||||
- { "PODxtPro", "PODxt Pro", LINE6_BIT_PODXTPRO, LINE6_BIT_CONTROL_PCM_HWMON },
|
||||
- { "TonePortGX", "TonePort GX", LINE6_BIT_TONEPORT_GX, LINE6_BIT_PCM },
|
||||
- { "TonePortUX1", "TonePort UX1", LINE6_BIT_TONEPORT_UX1, LINE6_BIT_PCM },
|
||||
- { "TonePortUX2", "TonePort UX2", LINE6_BIT_TONEPORT_UX2, LINE6_BIT_PCM },
|
||||
- { "Variax", "Variax Workbench", LINE6_BIT_VARIAX, LINE6_BIT_CONTROL },
|
||||
- { "PODHD300", "POD HD300", LINE6_BIT_PODHD300, LINE6_BIT_CONTROL_PCM_HWMON },
|
||||
+ { LINE6_BIT_BASSPODXT, "BassPODxt", "BassPODxt", LINE6_BIT_CONTROL_PCM_HWMON },
|
||||
+ { LINE6_BIT_BASSPODXTLIVE, "BassPODxtLive", "BassPODxt Live", LINE6_BIT_CONTROL_PCM_HWMON },
|
||||
+ { LINE6_BIT_BASSPODXTPRO, "BassPODxtPro", "BassPODxt Pro", LINE6_BIT_CONTROL_PCM_HWMON },
|
||||
+ { LINE6_BIT_GUITARPORT, "GuitarPort", "GuitarPort", LINE6_BIT_PCM },
|
||||
+ { LINE6_BIT_POCKETPOD, "PocketPOD", "Pocket POD", LINE6_BIT_CONTROL },
|
||||
+ { LINE6_BIT_PODHD300, "PODHD300", "POD HD300", LINE6_BIT_CONTROL_PCM_HWMON },
|
||||
+ { LINE6_BIT_PODHD500, "PODHD500", "POD HD500", LINE6_BIT_CONTROL_PCM_HWMON },
|
||||
+ { LINE6_BIT_PODSTUDIO_GX, "PODStudioGX", "POD Studio GX", LINE6_BIT_PCM },
|
||||
+ { LINE6_BIT_PODSTUDIO_UX1, "PODStudioUX1", "POD Studio UX1", LINE6_BIT_PCM },
|
||||
+ { LINE6_BIT_PODSTUDIO_UX2, "PODStudioUX2", "POD Studio UX2", LINE6_BIT_PCM },
|
||||
+ { LINE6_BIT_PODX3, "PODX3", "POD X3", LINE6_BIT_PCM },
|
||||
+ { LINE6_BIT_PODX3LIVE, "PODX3Live", "POD X3 Live", LINE6_BIT_PCM },
|
||||
+ { LINE6_BIT_PODXT, "PODxt", "PODxt", LINE6_BIT_CONTROL_PCM_HWMON },
|
||||
+ { LINE6_BIT_PODXTLIVE, "PODxtLive", "PODxt Live", LINE6_BIT_CONTROL_PCM_HWMON },
|
||||
+ { LINE6_BIT_PODXTPRO, "PODxtPro", "PODxt Pro", LINE6_BIT_CONTROL_PCM_HWMON },
|
||||
+ { LINE6_BIT_TONEPORT_GX, "TonePortGX", "TonePort GX", LINE6_BIT_PCM },
|
||||
+ { LINE6_BIT_TONEPORT_UX1, "TonePortUX1", "TonePort UX1", LINE6_BIT_PCM },
|
||||
+ { LINE6_BIT_TONEPORT_UX2, "TonePortUX2", "TonePort UX2", LINE6_BIT_PCM },
|
||||
+ { LINE6_BIT_VARIAX, "Variax", "Variax Workbench", LINE6_BIT_CONTROL },
|
||||
};
|
||||
/* *INDENT-ON* */
|
||||
|
||||
@@ -441,6 +443,7 @@ static void line6_data_received(struct urb *urb)
|
||||
break;
|
||||
|
||||
case LINE6_DEVID_PODHD300:
|
||||
+ case LINE6_DEVID_PODHD500:
|
||||
break; /* let userspace handle MIDI */
|
||||
|
||||
case LINE6_DEVID_PODXTLIVE:
|
||||
@@ -800,6 +803,7 @@ static int line6_probe(struct usb_interface *interface,
|
||||
}
|
||||
break;
|
||||
|
||||
+ case LINE6_DEVID_PODHD500:
|
||||
case LINE6_DEVID_PODX3:
|
||||
case LINE6_DEVID_PODX3LIVE:
|
||||
switch (interface_number) {
|
||||
@@ -878,6 +882,12 @@ static int line6_probe(struct usb_interface *interface,
|
||||
ep_write = 0x03;
|
||||
break;
|
||||
|
||||
+ case LINE6_DEVID_PODHD500:
|
||||
+ size = sizeof(struct usb_line6_podhd);
|
||||
+ ep_read = 0x81;
|
||||
+ ep_write = 0x01;
|
||||
+ break;
|
||||
+
|
||||
case LINE6_DEVID_POCKETPOD:
|
||||
size = sizeof(struct usb_line6_pod);
|
||||
ep_read = 0x82;
|
||||
@@ -1031,6 +1041,7 @@ static int line6_probe(struct usb_interface *interface,
|
||||
break;
|
||||
|
||||
case LINE6_DEVID_PODHD300:
|
||||
+ case LINE6_DEVID_PODHD500:
|
||||
ret = line6_podhd_init(interface,
|
||||
(struct usb_line6_podhd *)line6);
|
||||
break;
|
||||
@@ -1158,6 +1169,7 @@ static void line6_disconnect(struct usb_interface *interface)
|
||||
break;
|
||||
|
||||
case LINE6_DEVID_PODHD300:
|
||||
+ case LINE6_DEVID_PODHD500:
|
||||
line6_podhd_disconnect(interface);
|
||||
break;
|
||||
|
||||
diff --git a/drivers/staging/line6/driver.h b/drivers/staging/line6/driver.h
|
||||
index 553192f..117bf99 100644
|
||||
--- a/drivers/staging/line6/driver.h
|
||||
+++ b/drivers/staging/line6/driver.h
|
||||
@@ -88,6 +88,11 @@ static const int SYSEX_EXTRA_SIZE = sizeof(line6_midi_id) + 4;
|
||||
*/
|
||||
struct line6_properties {
|
||||
/**
|
||||
+ Bit identifying this device in the line6usb driver.
|
||||
+ */
|
||||
+ int device_bit;
|
||||
+
|
||||
+ /**
|
||||
Card id string (maximum 16 characters).
|
||||
This can be used to address the device in ALSA programs as
|
||||
"default:CARD=<id>"
|
||||
@@ -100,11 +105,6 @@ struct line6_properties {
|
||||
const char *name;
|
||||
|
||||
/**
|
||||
- Bit identifying this device in the line6usb driver.
|
||||
- */
|
||||
- int device_bit;
|
||||
-
|
||||
- /**
|
||||
Bit vector defining this device's capabilities in the
|
||||
line6usb driver.
|
||||
*/
|
||||
diff --git a/drivers/staging/line6/midi.c b/drivers/staging/line6/midi.c
|
||||
index 3013fb5..13d0293 100644
|
||||
--- a/drivers/staging/line6/midi.c
|
||||
+++ b/drivers/staging/line6/midi.c
|
||||
@@ -173,6 +173,7 @@ static int send_midi_async(struct usb_line6 *line6, unsigned char *data,
|
||||
|
||||
case LINE6_DEVID_VARIAX:
|
||||
case LINE6_DEVID_PODHD300:
|
||||
+ case LINE6_DEVID_PODHD500:
|
||||
break;
|
||||
|
||||
default:
|
||||
@@ -404,8 +405,19 @@ int line6_init_midi(struct usb_line6 *line6)
|
||||
}
|
||||
|
||||
line6midi->line6 = line6;
|
||||
- line6midi->midi_mask_transmit = 1;
|
||||
- line6midi->midi_mask_receive = 4;
|
||||
+
|
||||
+ switch(line6->product) {
|
||||
+ case LINE6_DEVID_PODHD300:
|
||||
+ case LINE6_DEVID_PODHD500:
|
||||
+ line6midi->midi_mask_transmit = 1;
|
||||
+ line6midi->midi_mask_receive = 1;
|
||||
+ break;
|
||||
+
|
||||
+ default:
|
||||
+ line6midi->midi_mask_transmit = 1;
|
||||
+ line6midi->midi_mask_receive = 4;
|
||||
+ }
|
||||
+
|
||||
line6->line6midi = line6midi;
|
||||
|
||||
err = snd_device_new(line6->card, SNDRV_DEV_RAWMIDI, line6midi,
|
||||
diff --git a/drivers/staging/line6/pcm.c b/drivers/staging/line6/pcm.c
|
||||
index a70c087..c3e5002 100644
|
||||
--- a/drivers/staging/line6/pcm.c
|
||||
+++ b/drivers/staging/line6/pcm.c
|
||||
@@ -367,6 +367,7 @@ int line6_init_pcm(struct usb_line6 *line6,
|
||||
ep_write = 0x01;
|
||||
break;
|
||||
|
||||
+ case LINE6_DEVID_PODHD500:
|
||||
case LINE6_DEVID_PODX3:
|
||||
case LINE6_DEVID_PODX3LIVE:
|
||||
ep_read = 0x86;
|
||||
diff --git a/drivers/staging/line6/usbdefs.h b/drivers/staging/line6/usbdefs.h
|
||||
index 4e13364..aff9e5c 100644
|
||||
--- a/drivers/staging/line6/usbdefs.h
|
||||
+++ b/drivers/staging/line6/usbdefs.h
|
||||
@@ -24,6 +24,8 @@
|
||||
#define LINE6_DEVID_BASSPODXTPRO 0x4252
|
||||
#define LINE6_DEVID_GUITARPORT 0x4750
|
||||
#define LINE6_DEVID_POCKETPOD 0x5051
|
||||
+#define LINE6_DEVID_PODHD300 0x5057
|
||||
+#define LINE6_DEVID_PODHD500 0x414D
|
||||
#define LINE6_DEVID_PODSTUDIO_GX 0x4153
|
||||
#define LINE6_DEVID_PODSTUDIO_UX1 0x4150
|
||||
#define LINE6_DEVID_PODSTUDIO_UX2 0x4151
|
||||
@@ -36,51 +38,72 @@
|
||||
#define LINE6_DEVID_TONEPORT_UX1 0x4141
|
||||
#define LINE6_DEVID_TONEPORT_UX2 0x4142
|
||||
#define LINE6_DEVID_VARIAX 0x534d
|
||||
-#define LINE6_DEVID_PODHD300 0x5057
|
||||
|
||||
-#define LINE6_BIT_BASSPODXT (1 << 0)
|
||||
-#define LINE6_BIT_BASSPODXTLIVE (1 << 1)
|
||||
-#define LINE6_BIT_BASSPODXTPRO (1 << 2)
|
||||
-#define LINE6_BIT_GUITARPORT (1 << 3)
|
||||
-#define LINE6_BIT_POCKETPOD (1 << 4)
|
||||
-#define LINE6_BIT_PODSTUDIO_GX (1 << 5)
|
||||
-#define LINE6_BIT_PODSTUDIO_UX1 (1 << 6)
|
||||
-#define LINE6_BIT_PODSTUDIO_UX2 (1 << 7)
|
||||
-#define LINE6_BIT_PODX3 (1 << 8)
|
||||
-#define LINE6_BIT_PODX3LIVE (1 << 9)
|
||||
-#define LINE6_BIT_PODXT (1 << 10)
|
||||
-#define LINE6_BIT_PODXTLIVE (1 << 11)
|
||||
-#define LINE6_BIT_PODXTPRO (1 << 12)
|
||||
-#define LINE6_BIT_TONEPORT_GX (1 << 13)
|
||||
-#define LINE6_BIT_TONEPORT_UX1 (1 << 14)
|
||||
-#define LINE6_BIT_TONEPORT_UX2 (1 << 15)
|
||||
-#define LINE6_BIT_VARIAX (1 << 16)
|
||||
-#define LINE6_BIT_PODHD300 (1 << 17)
|
||||
+enum {
|
||||
+ LINE6_ID_BASSPODXT,
|
||||
+ LINE6_ID_BASSPODXTLIVE,
|
||||
+ LINE6_ID_BASSPODXTPRO,
|
||||
+ LINE6_ID_GUITARPORT,
|
||||
+ LINE6_ID_POCKETPOD,
|
||||
+ LINE6_ID_PODHD300,
|
||||
+ LINE6_ID_PODHD500,
|
||||
+ LINE6_ID_PODSTUDIO_GX,
|
||||
+ LINE6_ID_PODSTUDIO_UX1,
|
||||
+ LINE6_ID_PODSTUDIO_UX2,
|
||||
+ LINE6_ID_PODX3,
|
||||
+ LINE6_ID_PODX3LIVE,
|
||||
+ LINE6_ID_PODXT,
|
||||
+ LINE6_ID_PODXTLIVE,
|
||||
+ LINE6_ID_PODXTPRO,
|
||||
+ LINE6_ID_TONEPORT_GX,
|
||||
+ LINE6_ID_TONEPORT_UX1,
|
||||
+ LINE6_ID_TONEPORT_UX2,
|
||||
+ LINE6_ID_VARIAX
|
||||
+};
|
||||
+
|
||||
+#define LINE6_BIT(x) LINE6_BIT_ ## x = 1 << LINE6_ID_ ## x
|
||||
+
|
||||
+enum {
|
||||
+ LINE6_BIT(BASSPODXT),
|
||||
+ LINE6_BIT(BASSPODXTLIVE),
|
||||
+ LINE6_BIT(BASSPODXTPRO),
|
||||
+ LINE6_BIT(GUITARPORT),
|
||||
+ LINE6_BIT(POCKETPOD),
|
||||
+ LINE6_BIT(PODHD300),
|
||||
+ LINE6_BIT(PODHD500),
|
||||
+ LINE6_BIT(PODSTUDIO_GX),
|
||||
+ LINE6_BIT(PODSTUDIO_UX1),
|
||||
+ LINE6_BIT(PODSTUDIO_UX2),
|
||||
+ LINE6_BIT(PODX3),
|
||||
+ LINE6_BIT(PODX3LIVE),
|
||||
+ LINE6_BIT(PODXT),
|
||||
+ LINE6_BIT(PODXTLIVE),
|
||||
+ LINE6_BIT(PODXTPRO),
|
||||
+ LINE6_BIT(TONEPORT_GX),
|
||||
+ LINE6_BIT(TONEPORT_UX1),
|
||||
+ LINE6_BIT(TONEPORT_UX2),
|
||||
+ LINE6_BIT(VARIAX),
|
||||
|
||||
-#define LINE6_BITS_PRO (LINE6_BIT_BASSPODXTPRO | \
|
||||
- LINE6_BIT_PODXTPRO)
|
||||
-#define LINE6_BITS_LIVE (LINE6_BIT_BASSPODXTLIVE | \
|
||||
- LINE6_BIT_PODXTLIVE | \
|
||||
- LINE6_BIT_PODX3LIVE)
|
||||
-#define LINE6_BITS_PODXTALL (LINE6_BIT_PODXT | \
|
||||
- LINE6_BIT_PODXTLIVE | \
|
||||
- LINE6_BIT_PODXTPRO)
|
||||
-#define LINE6_BITS_BASSPODXTALL (LINE6_BIT_BASSPODXT | \
|
||||
- LINE6_BIT_BASSPODXTLIVE | \
|
||||
- LINE6_BIT_BASSPODXTPRO)
|
||||
+ LINE6_BITS_PRO = LINE6_BIT_BASSPODXTPRO | LINE6_BIT_PODXTPRO,
|
||||
+ LINE6_BITS_LIVE = LINE6_BIT_BASSPODXTLIVE | LINE6_BIT_PODXTLIVE | LINE6_BIT_PODX3LIVE,
|
||||
+ LINE6_BITS_PODXTALL = LINE6_BIT_PODXT | LINE6_BIT_PODXTLIVE | LINE6_BIT_PODXTPRO,
|
||||
+ LINE6_BITS_PODX3ALL = LINE6_BIT_PODX3 | LINE6_BIT_PODX3LIVE,
|
||||
+ LINE6_BITS_PODHDALL = LINE6_BIT_PODHD300 | LINE6_BIT_PODHD500,
|
||||
+ LINE6_BITS_BASSPODXTALL = LINE6_BIT_BASSPODXT | LINE6_BIT_BASSPODXTLIVE | LINE6_BIT_BASSPODXTPRO
|
||||
+};
|
||||
|
||||
/* device supports settings parameter via USB */
|
||||
-#define LINE6_BIT_CONTROL (1 << 0)
|
||||
+#define LINE6_BIT_CONTROL (1 << 0)
|
||||
/* device supports PCM input/output via USB */
|
||||
-#define LINE6_BIT_PCM (1 << 1)
|
||||
+#define LINE6_BIT_PCM (1 << 1)
|
||||
/* device support hardware monitoring */
|
||||
-#define LINE6_BIT_HWMON (1 << 2)
|
||||
+#define LINE6_BIT_HWMON (1 << 2)
|
||||
|
||||
#define LINE6_BIT_CONTROL_PCM_HWMON (LINE6_BIT_CONTROL | \
|
||||
LINE6_BIT_PCM | \
|
||||
LINE6_BIT_HWMON)
|
||||
|
||||
-#define LINE6_FALLBACK_INTERVAL 10
|
||||
-#define LINE6_FALLBACK_MAXPACKETSIZE 16
|
||||
+#define LINE6_FALLBACK_INTERVAL 10
|
||||
+#define LINE6_FALLBACK_MAXPACKETSIZE 16
|
||||
|
||||
#endif
|
53
debian/patches/features/all/line6/0012-staging-line6-fix-memory-leak-in-.hw_params.patch
vendored
Normal file
53
debian/patches/features/all/line6/0012-staging-line6-fix-memory-leak-in-.hw_params.patch
vendored
Normal file
|
@ -0,0 +1,53 @@
|
|||
From: Stefan Hajnoczi <stefanha@gmail.com>
|
||||
Date: Sat, 10 Dec 2011 02:12:27 +0100
|
||||
Subject: [012/106] staging: line6: fix memory leak in .hw_params()
|
||||
|
||||
commit 60c01a977814788178362ff0e1a22dfbf106eede upstream.
|
||||
|
||||
The .hw_params() pcm callback can be invoked multiple times in a row.
|
||||
Ensure that the URB data buffer is only allocated once.
|
||||
|
||||
Signed-off-by: Stefan Hajnoczi <stefanha@gmail.com>
|
||||
Signed-off-by: Markus Grabner <grabner@icg.tugraz.at>
|
||||
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
|
||||
---
|
||||
drivers/staging/line6/capture.c | 7 +++++--
|
||||
drivers/staging/line6/playback.c | 7 +++++--
|
||||
2 files changed, 10 insertions(+), 4 deletions(-)
|
||||
|
||||
diff --git a/drivers/staging/line6/capture.c b/drivers/staging/line6/capture.c
|
||||
index ba441ed..8f59ff3 100644
|
||||
--- a/drivers/staging/line6/capture.c
|
||||
+++ b/drivers/staging/line6/capture.c
|
||||
@@ -316,8 +316,11 @@ static int snd_line6_capture_hw_params(struct snd_pcm_substream *substream,
|
||||
}
|
||||
/* -- [FD] end */
|
||||
|
||||
- line6pcm->buffer_in = kmalloc(LINE6_ISO_BUFFERS * LINE6_ISO_PACKETS *
|
||||
- line6pcm->max_packet_size, GFP_KERNEL);
|
||||
+ /* We may be invoked multiple times in a row so allocate once only */
|
||||
+ if (!line6pcm->buffer_in)
|
||||
+ line6pcm->buffer_in =
|
||||
+ kmalloc(LINE6_ISO_BUFFERS * LINE6_ISO_PACKETS *
|
||||
+ line6pcm->max_packet_size, GFP_KERNEL);
|
||||
|
||||
if (!line6pcm->buffer_in) {
|
||||
dev_err(line6pcm->line6->ifcdev,
|
||||
diff --git a/drivers/staging/line6/playback.c b/drivers/staging/line6/playback.c
|
||||
index e495b32..ed1b9bd 100644
|
||||
--- a/drivers/staging/line6/playback.c
|
||||
+++ b/drivers/staging/line6/playback.c
|
||||
@@ -462,8 +462,11 @@ static int snd_line6_playback_hw_params(struct snd_pcm_substream *substream,
|
||||
}
|
||||
/* -- [FD] end */
|
||||
|
||||
- line6pcm->buffer_out = kmalloc(LINE6_ISO_BUFFERS * LINE6_ISO_PACKETS *
|
||||
- line6pcm->max_packet_size, GFP_KERNEL);
|
||||
+ /* We may be invoked multiple times in a row so allocate once only */
|
||||
+ if (!line6pcm->buffer_out)
|
||||
+ line6pcm->buffer_out =
|
||||
+ kmalloc(LINE6_ISO_BUFFERS * LINE6_ISO_PACKETS *
|
||||
+ line6pcm->max_packet_size, GFP_KERNEL);
|
||||
|
||||
if (!line6pcm->buffer_out) {
|
||||
dev_err(line6pcm->line6->ifcdev,
|
|
@ -0,0 +1,37 @@
|
|||
From: Stefan Hajnoczi <stefanha@gmail.com>
|
||||
Date: Sat, 10 Dec 2011 02:12:28 +0100
|
||||
Subject: [013/106] staging: line6: fix playback urb transfer buffer
|
||||
calculation
|
||||
|
||||
commit 2f637ee42d4a60e1c3823beff3699354bd4400be upstream.
|
||||
|
||||
The playback urb transfer buffer calculation does not factor in
|
||||
LINE6_ISO_PACKETS. Buffer memory is organized like this in the driver:
|
||||
|
||||
Buffer 0 Buffer 1 ...
|
||||
[Packet 0, Packet 1, ...][Packet 0, Packet 1, ...][Packet 0, ...]
|
||||
|
||||
However, we're lucky that LINE6_ISO_PACKETS is currently defined as 1 so
|
||||
this patch does not change any behavior. It's still worth including
|
||||
this fix in case the LINE6_ISO_PACKETS value is changed in the future.
|
||||
|
||||
Signed-off-by: Stefan Hajnoczi <stefanha@gmail.com>
|
||||
Signed-off-by: Markus Grabner <grabner@icg.tugraz.at>
|
||||
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
|
||||
---
|
||||
drivers/staging/line6/playback.c | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/drivers/staging/line6/playback.c b/drivers/staging/line6/playback.c
|
||||
index ed1b9bd..b17c0a7 100644
|
||||
--- a/drivers/staging/line6/playback.c
|
||||
+++ b/drivers/staging/line6/playback.c
|
||||
@@ -192,7 +192,7 @@ static int submit_audio_out_urb(struct snd_line6_pcm *line6pcm)
|
||||
urb_frames = urb_size / bytes_per_frame;
|
||||
urb_out->transfer_buffer =
|
||||
line6pcm->buffer_out +
|
||||
- line6pcm->max_packet_size * line6pcm->index_out;
|
||||
+ LINE6_ISO_PACKETS * line6pcm->max_packet_size * line6pcm->index_out;
|
||||
urb_out->transfer_buffer_length = urb_size;
|
||||
urb_out->context = line6pcm;
|
||||
|
58
debian/patches/features/all/line6/0014-staging-line6-eliminate-useless-index_out-variable.patch
vendored
Normal file
58
debian/patches/features/all/line6/0014-staging-line6-eliminate-useless-index_out-variable.patch
vendored
Normal file
|
@ -0,0 +1,58 @@
|
|||
From: Stefan Hajnoczi <stefanha@gmail.com>
|
||||
Date: Sat, 10 Dec 2011 02:12:29 +0100
|
||||
Subject: [014/106] staging: line6: eliminate useless index_out variable
|
||||
|
||||
commit 153e38761d27f29edf436f11da3dbfb4fb8edcc1 upstream.
|
||||
|
||||
Playback urbs use the index_out counter to decide which part of the
|
||||
playback buffer to use. Since the urb already has a unique index in
|
||||
range [0, LINE6_ISO_BUFFERS) there is no need to keep a separate
|
||||
counter.
|
||||
|
||||
Use the urb index instead. This also eliminates the possibility of two
|
||||
urbs using the same playback buffer space if they ever complete
|
||||
out-of-order for some reason.
|
||||
|
||||
Signed-off-by: Stefan Hajnoczi <stefanha@gmail.com>
|
||||
Signed-off-by: Markus Grabner <grabner@icg.tugraz.at>
|
||||
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
|
||||
---
|
||||
drivers/staging/line6/pcm.h | 5 -----
|
||||
drivers/staging/line6/playback.c | 5 +----
|
||||
2 files changed, 1 insertion(+), 9 deletions(-)
|
||||
|
||||
diff --git a/drivers/staging/line6/pcm.h b/drivers/staging/line6/pcm.h
|
||||
index 05f4ef3..55d8297 100644
|
||||
--- a/drivers/staging/line6/pcm.h
|
||||
+++ b/drivers/staging/line6/pcm.h
|
||||
@@ -146,11 +146,6 @@ struct snd_line6_pcm {
|
||||
unsigned char *buffer_in;
|
||||
|
||||
/**
|
||||
- Temporary buffer index for playback.
|
||||
- */
|
||||
- int index_out;
|
||||
-
|
||||
- /**
|
||||
Previously captured frame (for software monitoring).
|
||||
*/
|
||||
unsigned char *prev_fbuf;
|
||||
diff --git a/drivers/staging/line6/playback.c b/drivers/staging/line6/playback.c
|
||||
index b17c0a7..9a51b92 100644
|
||||
--- a/drivers/staging/line6/playback.c
|
||||
+++ b/drivers/staging/line6/playback.c
|
||||
@@ -192,13 +192,10 @@ static int submit_audio_out_urb(struct snd_line6_pcm *line6pcm)
|
||||
urb_frames = urb_size / bytes_per_frame;
|
||||
urb_out->transfer_buffer =
|
||||
line6pcm->buffer_out +
|
||||
- LINE6_ISO_PACKETS * line6pcm->max_packet_size * line6pcm->index_out;
|
||||
+ index * LINE6_ISO_PACKETS * line6pcm->max_packet_size;
|
||||
urb_out->transfer_buffer_length = urb_size;
|
||||
urb_out->context = line6pcm;
|
||||
|
||||
- if (++line6pcm->index_out == LINE6_ISO_BUFFERS)
|
||||
- line6pcm->index_out = 0;
|
||||
-
|
||||
if (test_bit(BIT_PCM_ALSA_PLAYBACK, &line6pcm->flags) &&
|
||||
!test_bit(BIT_PAUSE_PLAYBACK, &line6pcm->flags)) {
|
||||
struct snd_pcm_runtime *runtime =
|
101
debian/patches/features/all/line6/0015-staging-line6-eliminate-useless-NULL-checks.patch
vendored
Normal file
101
debian/patches/features/all/line6/0015-staging-line6-eliminate-useless-NULL-checks.patch
vendored
Normal file
|
@ -0,0 +1,101 @@
|
|||
From: Stefan Hajnoczi <stefanha@gmail.com>
|
||||
Date: Sat, 10 Dec 2011 02:12:30 +0100
|
||||
Subject: [015/106] staging: line6: eliminate useless NULL checks
|
||||
|
||||
commit 188e664502dc47f83775a556e6db52cd8cc0b5fc upstream.
|
||||
|
||||
The line6 driver checks struct field addresses for NULL where it does
|
||||
not make sense to do so. The struct has already been checked for NULL
|
||||
and there is no value in checking the first field's address too.
|
||||
|
||||
Suggested-by: Dan Carpenter <dan.carpenter@oracle.com>
|
||||
Signed-off-by: Stefan Hajnoczi <stefanha@gmail.com>
|
||||
Signed-off-by: Markus Grabner <grabner@icg.tugraz.at>
|
||||
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
|
||||
---
|
||||
drivers/staging/line6/pod.c | 6 +-----
|
||||
drivers/staging/line6/podhd.c | 6 +-----
|
||||
drivers/staging/line6/toneport.c | 6 +-----
|
||||
drivers/staging/line6/variax.c | 6 +-----
|
||||
4 files changed, 4 insertions(+), 20 deletions(-)
|
||||
|
||||
diff --git a/drivers/staging/line6/pod.c b/drivers/staging/line6/pod.c
|
||||
index d9b3021..4dadc57 100644
|
||||
--- a/drivers/staging/line6/pod.c
|
||||
+++ b/drivers/staging/line6/pod.c
|
||||
@@ -1149,14 +1149,10 @@ static struct snd_kcontrol_new pod_control_monitor = {
|
||||
static void pod_destruct(struct usb_interface *interface)
|
||||
{
|
||||
struct usb_line6_pod *pod = usb_get_intfdata(interface);
|
||||
- struct usb_line6 *line6;
|
||||
|
||||
if (pod == NULL)
|
||||
return;
|
||||
- line6 = &pod->line6;
|
||||
- if (line6 == NULL)
|
||||
- return;
|
||||
- line6_cleanup_audio(line6);
|
||||
+ line6_cleanup_audio(&pod->line6);
|
||||
|
||||
del_timer(&pod->startup_timer);
|
||||
cancel_work_sync(&pod->startup_work);
|
||||
diff --git a/drivers/staging/line6/podhd.c b/drivers/staging/line6/podhd.c
|
||||
index 6c0f7f2..7ef4543 100644
|
||||
--- a/drivers/staging/line6/podhd.c
|
||||
+++ b/drivers/staging/line6/podhd.c
|
||||
@@ -80,14 +80,10 @@ static struct line6_pcm_properties podhd_pcm_properties = {
|
||||
static void podhd_destruct(struct usb_interface *interface)
|
||||
{
|
||||
struct usb_line6_podhd *podhd = usb_get_intfdata(interface);
|
||||
- struct usb_line6 *line6;
|
||||
|
||||
if (podhd == NULL)
|
||||
return;
|
||||
- line6 = &podhd->line6;
|
||||
- if (line6 == NULL)
|
||||
- return;
|
||||
- line6_cleanup_audio(line6);
|
||||
+ line6_cleanup_audio(&podhd->line6);
|
||||
}
|
||||
|
||||
/*
|
||||
diff --git a/drivers/staging/line6/toneport.c b/drivers/staging/line6/toneport.c
|
||||
index 879e699..f310578 100644
|
||||
--- a/drivers/staging/line6/toneport.c
|
||||
+++ b/drivers/staging/line6/toneport.c
|
||||
@@ -295,14 +295,10 @@ static struct snd_kcontrol_new toneport_control_source = {
|
||||
static void toneport_destruct(struct usb_interface *interface)
|
||||
{
|
||||
struct usb_line6_toneport *toneport = usb_get_intfdata(interface);
|
||||
- struct usb_line6 *line6;
|
||||
|
||||
if (toneport == NULL)
|
||||
return;
|
||||
- line6 = &toneport->line6;
|
||||
- if (line6 == NULL)
|
||||
- return;
|
||||
- line6_cleanup_audio(line6);
|
||||
+ line6_cleanup_audio(&toneport->line6);
|
||||
}
|
||||
|
||||
/*
|
||||
diff --git a/drivers/staging/line6/variax.c b/drivers/staging/line6/variax.c
|
||||
index 81241cd..d366222 100644
|
||||
--- a/drivers/staging/line6/variax.c
|
||||
+++ b/drivers/staging/line6/variax.c
|
||||
@@ -572,14 +572,10 @@ static DEVICE_ATTR(raw2, S_IWUSR, line6_nop_read, variax_set_raw2);
|
||||
static void variax_destruct(struct usb_interface *interface)
|
||||
{
|
||||
struct usb_line6_variax *variax = usb_get_intfdata(interface);
|
||||
- struct usb_line6 *line6;
|
||||
|
||||
if (variax == NULL)
|
||||
return;
|
||||
- line6 = &variax->line6;
|
||||
- if (line6 == NULL)
|
||||
- return;
|
||||
- line6_cleanup_audio(line6);
|
||||
+ line6_cleanup_audio(&variax->line6);
|
||||
|
||||
del_timer(&variax->startup_timer1);
|
||||
del_timer(&variax->startup_timer2);
|
51
debian/patches/features/all/line6/0016-staging-line6-wait-for-urbs-in-snd_line6_prepare.patch
vendored
Normal file
51
debian/patches/features/all/line6/0016-staging-line6-wait-for-urbs-in-snd_line6_prepare.patch
vendored
Normal file
|
@ -0,0 +1,51 @@
|
|||
From: Stefan Hajnoczi <stefanha@gmail.com>
|
||||
Date: Sat, 10 Dec 2011 02:12:31 +0100
|
||||
Subject: [016/106] staging: line6: wait for urbs in snd_line6_prepare()
|
||||
|
||||
commit 665f3f506b1c2684d6f78d6d03c038d1712e561d upstream.
|
||||
|
||||
The .trigger() pcm callbacks are not allowed to block and cannot wait
|
||||
until urbs have completed. We need to ensure that stopping, preparing,
|
||||
and then restarting a stream always works.
|
||||
|
||||
Currently the driver will sometimes return -EBUSY when restarting the
|
||||
stream because urbs have not completed yet. This can be triggered by
|
||||
jackd from userspace.
|
||||
|
||||
The solution is to wait on urbs in the .prepare() pcm callback since
|
||||
blocking is allowed in that callback. This guarantees that all urbs are
|
||||
quiesced and ready to be submitted when the start trigger callback is
|
||||
invoked.
|
||||
|
||||
Signed-off-by: Stefan Hajnoczi <stefanha@gmail.com>
|
||||
Signed-off-by: Markus Grabner <grabner@icg.tugraz.at>
|
||||
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
|
||||
---
|
||||
drivers/staging/line6/pcm.c | 14 ++++++++++++++
|
||||
1 file changed, 14 insertions(+)
|
||||
|
||||
diff --git a/drivers/staging/line6/pcm.c b/drivers/staging/line6/pcm.c
|
||||
index c3e5002..68727b2 100644
|
||||
--- a/drivers/staging/line6/pcm.c
|
||||
+++ b/drivers/staging/line6/pcm.c
|
||||
@@ -474,6 +474,20 @@ int snd_line6_prepare(struct snd_pcm_substream *substream)
|
||||
{
|
||||
struct snd_line6_pcm *line6pcm = snd_pcm_substream_chip(substream);
|
||||
|
||||
+ switch (substream->stream) {
|
||||
+ case SNDRV_PCM_STREAM_PLAYBACK:
|
||||
+ line6_unlink_wait_clear_audio_out_urbs(line6pcm);
|
||||
+ break;
|
||||
+
|
||||
+ case SNDRV_PCM_STREAM_CAPTURE:
|
||||
+ line6_unlink_wait_clear_audio_in_urbs(line6pcm);
|
||||
+ break;
|
||||
+
|
||||
+ default:
|
||||
+ MISSING_CASE;
|
||||
+ }
|
||||
+
|
||||
+
|
||||
if (!test_and_set_bit(BIT_PREPARED, &line6pcm->flags)) {
|
||||
line6pcm->count_out = 0;
|
||||
line6pcm->pos_out = 0;
|
346
debian/patches/features/all/line6/0017-staging-line6-fixed-ALSA-PCM-interaction.patch
vendored
Normal file
346
debian/patches/features/all/line6/0017-staging-line6-fixed-ALSA-PCM-interaction.patch
vendored
Normal file
|
@ -0,0 +1,346 @@
|
|||
From: Markus Grabner <grabner@icg.tugraz.at>
|
||||
Date: Sat, 10 Dec 2011 02:12:32 +0100
|
||||
Subject: [017/106] staging: line6: fixed ALSA/PCM interaction
|
||||
|
||||
commit 6b02a17ee5cd5d200dbe4a285a4e750f70884967 upstream.
|
||||
|
||||
The PCM subsystem in the Line6 driver is mainly used for PCM playback and
|
||||
capture by ALSA, but also has other tasks, most notably providing a
|
||||
low-latency software monitor for devices which don't support hardware
|
||||
monitoring (e.g., the TonePort series). This patch makes ALSA "play nicely"
|
||||
with the other components, i.e., prevents it from resetting the isochronous
|
||||
USB transfer while other PCM tasks (software monitoring) are running.
|
||||
|
||||
Signed-off-by: Markus Grabner <grabner@icg.tugraz.at>
|
||||
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
|
||||
---
|
||||
drivers/staging/line6/capture.c | 46 ++++++++++++++++++++-------
|
||||
drivers/staging/line6/capture.h | 2 ++
|
||||
drivers/staging/line6/pcm.c | 65 ++++++++++++++++++++++++++------------
|
||||
drivers/staging/line6/playback.c | 46 ++++++++++++++++++++-------
|
||||
drivers/staging/line6/playback.h | 2 ++
|
||||
drivers/staging/line6/revision.h | 2 +-
|
||||
6 files changed, 118 insertions(+), 45 deletions(-)
|
||||
|
||||
diff --git a/drivers/staging/line6/capture.c b/drivers/staging/line6/capture.c
|
||||
index 8f59ff3..127f952 100644
|
||||
--- a/drivers/staging/line6/capture.c
|
||||
+++ b/drivers/staging/line6/capture.c
|
||||
@@ -193,6 +193,31 @@ void line6_capture_check_period(struct snd_line6_pcm *line6pcm, int length)
|
||||
}
|
||||
}
|
||||
|
||||
+int line6_alloc_capture_buffer(struct snd_line6_pcm *line6pcm)
|
||||
+{
|
||||
+ /* We may be invoked multiple times in a row so allocate once only */
|
||||
+ if (line6pcm->buffer_in)
|
||||
+ return 0;
|
||||
+
|
||||
+ line6pcm->buffer_in =
|
||||
+ kmalloc(LINE6_ISO_BUFFERS * LINE6_ISO_PACKETS *
|
||||
+ line6pcm->max_packet_size, GFP_KERNEL);
|
||||
+
|
||||
+ if (!line6pcm->buffer_in) {
|
||||
+ dev_err(line6pcm->line6->ifcdev,
|
||||
+ "cannot malloc capture buffer\n");
|
||||
+ return -ENOMEM;
|
||||
+ }
|
||||
+
|
||||
+ return 0;
|
||||
+}
|
||||
+
|
||||
+void line6_free_capture_buffer(struct snd_line6_pcm *line6pcm)
|
||||
+{
|
||||
+ kfree(line6pcm->buffer_in);
|
||||
+ line6pcm->buffer_in = NULL;
|
||||
+}
|
||||
+
|
||||
/*
|
||||
* Callback for completed capture URB.
|
||||
*/
|
||||
@@ -316,16 +341,11 @@ static int snd_line6_capture_hw_params(struct snd_pcm_substream *substream,
|
||||
}
|
||||
/* -- [FD] end */
|
||||
|
||||
- /* We may be invoked multiple times in a row so allocate once only */
|
||||
- if (!line6pcm->buffer_in)
|
||||
- line6pcm->buffer_in =
|
||||
- kmalloc(LINE6_ISO_BUFFERS * LINE6_ISO_PACKETS *
|
||||
- line6pcm->max_packet_size, GFP_KERNEL);
|
||||
+ if ((line6pcm->flags & MASK_CAPTURE) == 0) {
|
||||
+ ret = line6_alloc_capture_buffer(line6pcm);
|
||||
|
||||
- if (!line6pcm->buffer_in) {
|
||||
- dev_err(line6pcm->line6->ifcdev,
|
||||
- "cannot malloc capture buffer\n");
|
||||
- return -ENOMEM;
|
||||
+ if (ret < 0)
|
||||
+ return ret;
|
||||
}
|
||||
|
||||
ret = snd_pcm_lib_malloc_pages(substream,
|
||||
@@ -342,9 +362,11 @@ static int snd_line6_capture_hw_free(struct snd_pcm_substream *substream)
|
||||
{
|
||||
struct snd_line6_pcm *line6pcm = snd_pcm_substream_chip(substream);
|
||||
|
||||
- line6_unlink_wait_clear_audio_in_urbs(line6pcm);
|
||||
- kfree(line6pcm->buffer_in);
|
||||
- line6pcm->buffer_in = NULL;
|
||||
+ if ((line6pcm->flags & MASK_CAPTURE) == 0) {
|
||||
+ line6_unlink_wait_clear_audio_in_urbs(line6pcm);
|
||||
+ line6_free_capture_buffer(line6pcm);
|
||||
+ }
|
||||
+
|
||||
return snd_pcm_lib_free_pages(substream);
|
||||
}
|
||||
|
||||
diff --git a/drivers/staging/line6/capture.h b/drivers/staging/line6/capture.h
|
||||
index a7509fb..366cbaa 100644
|
||||
--- a/drivers/staging/line6/capture.h
|
||||
+++ b/drivers/staging/line6/capture.h
|
||||
@@ -19,11 +19,13 @@
|
||||
|
||||
extern struct snd_pcm_ops snd_line6_capture_ops;
|
||||
|
||||
+extern int line6_alloc_capture_buffer(struct snd_line6_pcm *line6pcm);
|
||||
extern void line6_capture_copy(struct snd_line6_pcm *line6pcm, char *fbuf,
|
||||
int fsize);
|
||||
extern void line6_capture_check_period(struct snd_line6_pcm *line6pcm,
|
||||
int length);
|
||||
extern int line6_create_audio_in_urbs(struct snd_line6_pcm *line6pcm);
|
||||
+extern void line6_free_capture_buffer(struct snd_line6_pcm *line6pcm);
|
||||
extern int line6_submit_audio_in_all_urbs(struct snd_line6_pcm *line6pcm);
|
||||
extern void line6_unlink_audio_in_urbs(struct snd_line6_pcm *line6pcm);
|
||||
extern void line6_unlink_wait_clear_audio_in_urbs(struct snd_line6_pcm
|
||||
diff --git a/drivers/staging/line6/pcm.c b/drivers/staging/line6/pcm.c
|
||||
index 68727b2..37675e6 100644
|
||||
--- a/drivers/staging/line6/pcm.c
|
||||
+++ b/drivers/staging/line6/pcm.c
|
||||
@@ -86,17 +86,22 @@ static DEVICE_ATTR(impulse_period, S_IWUSR | S_IRUGO, pcm_get_impulse_period,
|
||||
|
||||
#endif
|
||||
|
||||
+static bool test_flags(unsigned long flags0, unsigned long flags1,
|
||||
+ unsigned long mask)
|
||||
+{
|
||||
+ return ((flags0 & mask) == 0) && ((flags1 & mask) != 0);
|
||||
+}
|
||||
+
|
||||
int line6_pcm_start(struct snd_line6_pcm *line6pcm, int channels)
|
||||
{
|
||||
unsigned long flags_old =
|
||||
__sync_fetch_and_or(&line6pcm->flags, channels);
|
||||
unsigned long flags_new = flags_old | channels;
|
||||
int err = 0;
|
||||
-
|
||||
+
|
||||
line6pcm->prev_fbuf = NULL;
|
||||
|
||||
- if (((flags_old & MASK_CAPTURE) == 0) &&
|
||||
- ((flags_new & MASK_CAPTURE) != 0)) {
|
||||
+ if (test_flags(flags_old, flags_new, MASK_CAPTURE)) {
|
||||
/*
|
||||
Waiting for completion of active URBs in the stop handler is
|
||||
a bug, we therefore report an error if capturing is restarted
|
||||
@@ -105,34 +110,47 @@ int line6_pcm_start(struct snd_line6_pcm *line6pcm, int channels)
|
||||
if (line6pcm->active_urb_in | line6pcm->unlink_urb_in)
|
||||
return -EBUSY;
|
||||
|
||||
+ if (!(flags_new & MASK_PCM_ALSA_CAPTURE)) {
|
||||
+ err = line6_alloc_capture_buffer(line6pcm);
|
||||
+
|
||||
+ if (err < 0)
|
||||
+ goto pcm_start_error;
|
||||
+ }
|
||||
+
|
||||
line6pcm->count_in = 0;
|
||||
line6pcm->prev_fsize = 0;
|
||||
err = line6_submit_audio_in_all_urbs(line6pcm);
|
||||
|
||||
- if (err < 0) {
|
||||
- __sync_fetch_and_and(&line6pcm->flags, ~channels);
|
||||
- return err;
|
||||
- }
|
||||
+ if (err < 0)
|
||||
+ goto pcm_start_error;
|
||||
}
|
||||
|
||||
- if (((flags_old & MASK_PLAYBACK) == 0) &&
|
||||
- ((flags_new & MASK_PLAYBACK) != 0)) {
|
||||
+ if (test_flags(flags_old, flags_new, MASK_PLAYBACK)) {
|
||||
/*
|
||||
See comment above regarding PCM restart.
|
||||
*/
|
||||
if (line6pcm->active_urb_out | line6pcm->unlink_urb_out)
|
||||
return -EBUSY;
|
||||
|
||||
+ if (!(flags_new & MASK_PCM_ALSA_PLAYBACK)) {
|
||||
+ err = line6_alloc_playback_buffer(line6pcm);
|
||||
+
|
||||
+ if (err < 0)
|
||||
+ goto pcm_start_error;
|
||||
+ }
|
||||
+
|
||||
line6pcm->count_out = 0;
|
||||
err = line6_submit_audio_out_all_urbs(line6pcm);
|
||||
|
||||
- if (err < 0) {
|
||||
- __sync_fetch_and_and(&line6pcm->flags, ~channels);
|
||||
- return err;
|
||||
- }
|
||||
+ if (err < 0)
|
||||
+ goto pcm_start_error;
|
||||
}
|
||||
|
||||
return 0;
|
||||
+
|
||||
+pcm_start_error:
|
||||
+ __sync_fetch_and_and(&line6pcm->flags, ~channels);
|
||||
+ return err;
|
||||
}
|
||||
|
||||
int line6_pcm_stop(struct snd_line6_pcm *line6pcm, int channels)
|
||||
@@ -141,14 +159,18 @@ int line6_pcm_stop(struct snd_line6_pcm *line6pcm, int channels)
|
||||
__sync_fetch_and_and(&line6pcm->flags, ~channels);
|
||||
unsigned long flags_new = flags_old & ~channels;
|
||||
|
||||
- if (((flags_old & MASK_CAPTURE) != 0) &&
|
||||
- ((flags_new & MASK_CAPTURE) == 0)) {
|
||||
+ if (test_flags(flags_new, flags_old, MASK_CAPTURE)) {
|
||||
line6_unlink_audio_in_urbs(line6pcm);
|
||||
+
|
||||
+ if (!(flags_old & MASK_PCM_ALSA_CAPTURE))
|
||||
+ line6_free_capture_buffer(line6pcm);
|
||||
}
|
||||
|
||||
- if (((flags_old & MASK_PLAYBACK) != 0) &&
|
||||
- ((flags_new & MASK_PLAYBACK) == 0)) {
|
||||
+ if (test_flags(flags_new, flags_old, MASK_PLAYBACK)) {
|
||||
line6_unlink_audio_out_urbs(line6pcm);
|
||||
+
|
||||
+ if (!(flags_old & MASK_PCM_ALSA_PLAYBACK))
|
||||
+ line6_free_playback_buffer(line6pcm);
|
||||
}
|
||||
|
||||
return 0;
|
||||
@@ -476,18 +498,21 @@ int snd_line6_prepare(struct snd_pcm_substream *substream)
|
||||
|
||||
switch (substream->stream) {
|
||||
case SNDRV_PCM_STREAM_PLAYBACK:
|
||||
- line6_unlink_wait_clear_audio_out_urbs(line6pcm);
|
||||
+ if ((line6pcm->flags & MASK_PLAYBACK) == 0)
|
||||
+ line6_unlink_wait_clear_audio_out_urbs(line6pcm);
|
||||
+
|
||||
break;
|
||||
|
||||
case SNDRV_PCM_STREAM_CAPTURE:
|
||||
- line6_unlink_wait_clear_audio_in_urbs(line6pcm);
|
||||
+ if ((line6pcm->flags & MASK_CAPTURE) == 0)
|
||||
+ line6_unlink_wait_clear_audio_in_urbs(line6pcm);
|
||||
+
|
||||
break;
|
||||
|
||||
default:
|
||||
MISSING_CASE;
|
||||
}
|
||||
|
||||
-
|
||||
if (!test_and_set_bit(BIT_PREPARED, &line6pcm->flags)) {
|
||||
line6pcm->count_out = 0;
|
||||
line6pcm->pos_out = 0;
|
||||
diff --git a/drivers/staging/line6/playback.c b/drivers/staging/line6/playback.c
|
||||
index 9a51b92..4152db2 100644
|
||||
--- a/drivers/staging/line6/playback.c
|
||||
+++ b/drivers/staging/line6/playback.c
|
||||
@@ -351,6 +351,31 @@ void line6_unlink_wait_clear_audio_out_urbs(struct snd_line6_pcm *line6pcm)
|
||||
wait_clear_audio_out_urbs(line6pcm);
|
||||
}
|
||||
|
||||
+int line6_alloc_playback_buffer(struct snd_line6_pcm *line6pcm)
|
||||
+{
|
||||
+ /* We may be invoked multiple times in a row so allocate once only */
|
||||
+ if (line6pcm->buffer_out)
|
||||
+ return 0;
|
||||
+
|
||||
+ line6pcm->buffer_out =
|
||||
+ kmalloc(LINE6_ISO_BUFFERS * LINE6_ISO_PACKETS *
|
||||
+ line6pcm->max_packet_size, GFP_KERNEL);
|
||||
+
|
||||
+ if (!line6pcm->buffer_out) {
|
||||
+ dev_err(line6pcm->line6->ifcdev,
|
||||
+ "cannot malloc playback buffer\n");
|
||||
+ return -ENOMEM;
|
||||
+ }
|
||||
+
|
||||
+ return 0;
|
||||
+}
|
||||
+
|
||||
+void line6_free_playback_buffer(struct snd_line6_pcm *line6pcm)
|
||||
+{
|
||||
+ kfree(line6pcm->buffer_out);
|
||||
+ line6pcm->buffer_out = NULL;
|
||||
+}
|
||||
+
|
||||
/*
|
||||
Callback for completed playback URB.
|
||||
*/
|
||||
@@ -459,16 +484,11 @@ static int snd_line6_playback_hw_params(struct snd_pcm_substream *substream,
|
||||
}
|
||||
/* -- [FD] end */
|
||||
|
||||
- /* We may be invoked multiple times in a row so allocate once only */
|
||||
- if (!line6pcm->buffer_out)
|
||||
- line6pcm->buffer_out =
|
||||
- kmalloc(LINE6_ISO_BUFFERS * LINE6_ISO_PACKETS *
|
||||
- line6pcm->max_packet_size, GFP_KERNEL);
|
||||
+ if ((line6pcm->flags & MASK_PLAYBACK) == 0) {
|
||||
+ ret = line6_alloc_playback_buffer(line6pcm);
|
||||
|
||||
- if (!line6pcm->buffer_out) {
|
||||
- dev_err(line6pcm->line6->ifcdev,
|
||||
- "cannot malloc playback buffer\n");
|
||||
- return -ENOMEM;
|
||||
+ if (ret < 0)
|
||||
+ return ret;
|
||||
}
|
||||
|
||||
ret = snd_pcm_lib_malloc_pages(substream,
|
||||
@@ -485,9 +505,11 @@ static int snd_line6_playback_hw_free(struct snd_pcm_substream *substream)
|
||||
{
|
||||
struct snd_line6_pcm *line6pcm = snd_pcm_substream_chip(substream);
|
||||
|
||||
- line6_unlink_wait_clear_audio_out_urbs(line6pcm);
|
||||
- kfree(line6pcm->buffer_out);
|
||||
- line6pcm->buffer_out = NULL;
|
||||
+ if ((line6pcm->flags & MASK_PLAYBACK) == 0) {
|
||||
+ line6_unlink_wait_clear_audio_out_urbs(line6pcm);
|
||||
+ line6_free_playback_buffer(line6pcm);
|
||||
+ }
|
||||
+
|
||||
return snd_pcm_lib_free_pages(substream);
|
||||
}
|
||||
|
||||
diff --git a/drivers/staging/line6/playback.h b/drivers/staging/line6/playback.h
|
||||
index f2fc8c0..02487ff 100644
|
||||
--- a/drivers/staging/line6/playback.h
|
||||
+++ b/drivers/staging/line6/playback.h
|
||||
@@ -29,7 +29,9 @@
|
||||
|
||||
extern struct snd_pcm_ops snd_line6_playback_ops;
|
||||
|
||||
+extern int line6_alloc_playback_buffer(struct snd_line6_pcm *line6pcm);
|
||||
extern int line6_create_audio_out_urbs(struct snd_line6_pcm *line6pcm);
|
||||
+extern void line6_free_playback_buffer(struct snd_line6_pcm *line6pcm);
|
||||
extern int line6_submit_audio_out_all_urbs(struct snd_line6_pcm *line6pcm);
|
||||
extern void line6_unlink_audio_out_urbs(struct snd_line6_pcm *line6pcm);
|
||||
extern void line6_unlink_wait_clear_audio_out_urbs(struct snd_line6_pcm
|
||||
diff --git a/drivers/staging/line6/revision.h b/drivers/staging/line6/revision.h
|
||||
index 350d0df..b4eee2b 100644
|
||||
--- a/drivers/staging/line6/revision.h
|
||||
+++ b/drivers/staging/line6/revision.h
|
||||
@@ -1,4 +1,4 @@
|
||||
#ifndef DRIVER_REVISION
|
||||
/* current subversion revision */
|
||||
-#define DRIVER_REVISION " (revision 690)"
|
||||
+#define DRIVER_REVISION " (904)"
|
||||
#endif
|
30
debian/patches/features/all/line6/0018-staging-line6-removed-obsolete-code.patch
vendored
Normal file
30
debian/patches/features/all/line6/0018-staging-line6-removed-obsolete-code.patch
vendored
Normal file
|
@ -0,0 +1,30 @@
|
|||
From: Markus Grabner <grabner@icg.tugraz.at>
|
||||
Date: Fri, 20 Jan 2012 00:09:07 +0100
|
||||
Subject: [018/106] staging: line6: removed obsolete code
|
||||
|
||||
commit 3784129a9de3fc33ffe6c6ece906a9caa1c65fab upstream.
|
||||
|
||||
Signed-off-by: Markus Grabner <grabner@icg.tugraz.at>
|
||||
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
||||
---
|
||||
drivers/staging/line6/pcm.h | 9 ---------
|
||||
1 file changed, 9 deletions(-)
|
||||
|
||||
diff --git a/drivers/staging/line6/pcm.h b/drivers/staging/line6/pcm.h
|
||||
index 55d8297..47c6d69 100644
|
||||
--- a/drivers/staging/line6/pcm.h
|
||||
+++ b/drivers/staging/line6/pcm.h
|
||||
@@ -305,13 +305,4 @@ extern void line6_pcm_disconnect(struct snd_line6_pcm *line6pcm);
|
||||
extern int line6_pcm_start(struct snd_line6_pcm *line6pcm, int channels);
|
||||
extern int line6_pcm_stop(struct snd_line6_pcm *line6pcm, int channels);
|
||||
|
||||
-#define PRINT_FRAME_DIFF(op) { \
|
||||
- static int diff_prev = 1000; \
|
||||
- int diff = line6pcm->last_frame_out - line6pcm->last_frame_in; \
|
||||
- if ((diff != diff_prev) && (abs(diff) < 100)) { \
|
||||
- printk(KERN_INFO "%s frame diff = %d\n", op, diff); \
|
||||
- diff_prev = diff; \
|
||||
- } \
|
||||
-}
|
||||
-
|
||||
#endif
|
|
@ -0,0 +1,36 @@
|
|||
From: Markus Grabner <grabner@icg.tugraz.at>
|
||||
Date: Fri, 20 Jan 2012 00:09:08 +0100
|
||||
Subject: [019/106] staging: line6: use source select control for UX2 devices
|
||||
|
||||
commit 12177acdecfcb538b86590036a56fc47b443e135 upstream.
|
||||
|
||||
Signed-off-by: Markus Grabner <grabner@icg.tugraz.at>
|
||||
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
||||
---
|
||||
drivers/staging/line6/toneport.c | 4 ++++
|
||||
1 file changed, 4 insertions(+)
|
||||
|
||||
diff --git a/drivers/staging/line6/toneport.c b/drivers/staging/line6/toneport.c
|
||||
index f310578..b776130 100644
|
||||
--- a/drivers/staging/line6/toneport.c
|
||||
+++ b/drivers/staging/line6/toneport.c
|
||||
@@ -320,7 +320,9 @@ static void toneport_setup(struct usb_line6_toneport *toneport)
|
||||
/* initialize source select: */
|
||||
switch (usbdev->descriptor.idProduct) {
|
||||
case LINE6_DEVID_TONEPORT_UX1:
|
||||
+ case LINE6_DEVID_TONEPORT_UX2:
|
||||
case LINE6_DEVID_PODSTUDIO_UX1:
|
||||
+ case LINE6_DEVID_PODSTUDIO_UX2:
|
||||
toneport_send_cmd(usbdev,
|
||||
toneport_source_info[toneport->source].code,
|
||||
0x0000);
|
||||
@@ -363,7 +365,9 @@ static int toneport_try_init(struct usb_interface *interface,
|
||||
/* register source select control: */
|
||||
switch (usbdev->descriptor.idProduct) {
|
||||
case LINE6_DEVID_TONEPORT_UX1:
|
||||
+ case LINE6_DEVID_TONEPORT_UX2:
|
||||
case LINE6_DEVID_PODSTUDIO_UX1:
|
||||
+ case LINE6_DEVID_PODSTUDIO_UX2:
|
||||
err =
|
||||
snd_ctl_add(line6->card,
|
||||
snd_ctl_new1(&toneport_control_source,
|
893
debian/patches/features/all/line6/0020-staging-line6-separate-handling-of-buffer-allocation.patch
vendored
Normal file
893
debian/patches/features/all/line6/0020-staging-line6-separate-handling-of-buffer-allocation.patch
vendored
Normal file
|
@ -0,0 +1,893 @@
|
|||
From: Markus Grabner <grabner@icg.tugraz.at>
|
||||
Date: Fri, 20 Jan 2012 00:09:09 +0100
|
||||
Subject: [020/106] staging: line6: separate handling of buffer allocation and
|
||||
stream startup
|
||||
|
||||
commit 0ca54888060135806d5567f47a6ad54be5297b34 upstream.
|
||||
|
||||
There are several features of the Line6 USB driver which require PCM
|
||||
data to be exchanged with the device:
|
||||
*) PCM playback and capture via ALSA
|
||||
*) software monitoring (for devices without hardware monitoring)
|
||||
*) optional impulse response measurement
|
||||
However, from the device's point of view, there is just a single
|
||||
capture and playback stream, which must be shared between these
|
||||
subsystems. It is therefore necessary to maintain the state of the
|
||||
subsystems with respect to PCM usage. We define several constants of
|
||||
the form LINE6_BIT_PCM_<subsystem>_<direction>_<resource> with the
|
||||
following meanings:
|
||||
*) <subsystem> is one of
|
||||
-) ALSA: PCM playback and capture via ALSA
|
||||
-) MONITOR: software monitoring
|
||||
-) IMPULSE: optional impulse response measurement
|
||||
*) <direction> is one of
|
||||
-) PLAYBACK: audio output (from host to device)
|
||||
-) CAPTURE: audio input (from device to host)
|
||||
*) <resource> is one of
|
||||
-) BUFFER: buffer required by PCM data stream
|
||||
-) STREAM: actual PCM data stream
|
||||
|
||||
The subsystems call line6_pcm_acquire() to acquire the (shared)
|
||||
resources needed for a particular operation (e.g., allocate the buffer
|
||||
for ALSA playback or start the capture stream for software monitoring).
|
||||
When a resource is no longer needed, it is released by calling
|
||||
line6_pcm_release(). Buffer allocation and stream startup are handled
|
||||
separately to allow the ALSA kernel driver to perform them at
|
||||
appropriate places (since the callback which starts a PCM stream is not
|
||||
allowed to sleep).
|
||||
|
||||
Signed-off-by: Markus Grabner <grabner@icg.tugraz.at>
|
||||
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
||||
---
|
||||
drivers/staging/line6/capture.c | 54 ++++---------
|
||||
drivers/staging/line6/capture.h | 2 +-
|
||||
drivers/staging/line6/driver.c | 2 +-
|
||||
drivers/staging/line6/pcm.c | 109 +++++++++++++++++---------
|
||||
drivers/staging/line6/pcm.h | 158 ++++++++++++++++++++++++++++----------
|
||||
drivers/staging/line6/playback.c | 68 ++++++----------
|
||||
drivers/staging/line6/playback.h | 2 +-
|
||||
drivers/staging/line6/toneport.c | 8 +-
|
||||
drivers/staging/line6/usbdefs.h | 44 +++++------
|
||||
9 files changed, 254 insertions(+), 193 deletions(-)
|
||||
|
||||
diff --git a/drivers/staging/line6/capture.c b/drivers/staging/line6/capture.c
|
||||
index 127f952..c85c5b6 100644
|
||||
--- a/drivers/staging/line6/capture.c
|
||||
+++ b/drivers/staging/line6/capture.c
|
||||
@@ -107,7 +107,7 @@ void line6_unlink_audio_in_urbs(struct snd_line6_pcm *line6pcm)
|
||||
Wait until unlinking of all currently active capture URBs has been
|
||||
finished.
|
||||
*/
|
||||
-static void wait_clear_audio_in_urbs(struct snd_line6_pcm *line6pcm)
|
||||
+void line6_wait_clear_audio_in_urbs(struct snd_line6_pcm *line6pcm)
|
||||
{
|
||||
int timeout = HZ;
|
||||
unsigned int i;
|
||||
@@ -134,7 +134,7 @@ static void wait_clear_audio_in_urbs(struct snd_line6_pcm *line6pcm)
|
||||
void line6_unlink_wait_clear_audio_in_urbs(struct snd_line6_pcm *line6pcm)
|
||||
{
|
||||
line6_unlink_audio_in_urbs(line6pcm);
|
||||
- wait_clear_audio_in_urbs(line6pcm);
|
||||
+ line6_wait_clear_audio_in_urbs(line6pcm);
|
||||
}
|
||||
|
||||
/*
|
||||
@@ -193,25 +193,6 @@ void line6_capture_check_period(struct snd_line6_pcm *line6pcm, int length)
|
||||
}
|
||||
}
|
||||
|
||||
-int line6_alloc_capture_buffer(struct snd_line6_pcm *line6pcm)
|
||||
-{
|
||||
- /* We may be invoked multiple times in a row so allocate once only */
|
||||
- if (line6pcm->buffer_in)
|
||||
- return 0;
|
||||
-
|
||||
- line6pcm->buffer_in =
|
||||
- kmalloc(LINE6_ISO_BUFFERS * LINE6_ISO_PACKETS *
|
||||
- line6pcm->max_packet_size, GFP_KERNEL);
|
||||
-
|
||||
- if (!line6pcm->buffer_in) {
|
||||
- dev_err(line6pcm->line6->ifcdev,
|
||||
- "cannot malloc capture buffer\n");
|
||||
- return -ENOMEM;
|
||||
- }
|
||||
-
|
||||
- return 0;
|
||||
-}
|
||||
-
|
||||
void line6_free_capture_buffer(struct snd_line6_pcm *line6pcm)
|
||||
{
|
||||
kfree(line6pcm->buffer_in);
|
||||
@@ -273,9 +254,9 @@ static void audio_in_callback(struct urb *urb)
|
||||
line6pcm->prev_fsize = fsize;
|
||||
|
||||
#ifdef CONFIG_LINE6_USB_IMPULSE_RESPONSE
|
||||
- if (!(line6pcm->flags & MASK_PCM_IMPULSE))
|
||||
+ if (!(line6pcm->flags & LINE6_BITS_PCM_IMPULSE))
|
||||
#endif
|
||||
- if (test_bit(BIT_PCM_ALSA_CAPTURE, &line6pcm->flags)
|
||||
+ if (test_bit(LINE6_INDEX_PCM_ALSA_CAPTURE_STREAM, &line6pcm->flags)
|
||||
&& (fsize > 0))
|
||||
line6_capture_copy(line6pcm, fbuf, fsize);
|
||||
}
|
||||
@@ -291,9 +272,9 @@ static void audio_in_callback(struct urb *urb)
|
||||
submit_audio_in_urb(line6pcm);
|
||||
|
||||
#ifdef CONFIG_LINE6_USB_IMPULSE_RESPONSE
|
||||
- if (!(line6pcm->flags & MASK_PCM_IMPULSE))
|
||||
+ if (!(line6pcm->flags & LINE6_BITS_PCM_IMPULSE))
|
||||
#endif
|
||||
- if (test_bit(BIT_PCM_ALSA_CAPTURE, &line6pcm->flags))
|
||||
+ if (test_bit(LINE6_INDEX_PCM_ALSA_CAPTURE_STREAM, &line6pcm->flags))
|
||||
line6_capture_check_period(line6pcm, length);
|
||||
}
|
||||
}
|
||||
@@ -341,17 +322,17 @@ static int snd_line6_capture_hw_params(struct snd_pcm_substream *substream,
|
||||
}
|
||||
/* -- [FD] end */
|
||||
|
||||
- if ((line6pcm->flags & MASK_CAPTURE) == 0) {
|
||||
- ret = line6_alloc_capture_buffer(line6pcm);
|
||||
+ ret = line6_pcm_acquire(line6pcm, LINE6_BIT_PCM_ALSA_CAPTURE_BUFFER);
|
||||
|
||||
- if (ret < 0)
|
||||
- return ret;
|
||||
- }
|
||||
+ if (ret < 0)
|
||||
+ return ret;
|
||||
|
||||
ret = snd_pcm_lib_malloc_pages(substream,
|
||||
params_buffer_bytes(hw_params));
|
||||
- if (ret < 0)
|
||||
+ if (ret < 0) {
|
||||
+ line6_pcm_release(line6pcm, LINE6_BIT_PCM_ALSA_CAPTURE_BUFFER);
|
||||
return ret;
|
||||
+ }
|
||||
|
||||
line6pcm->period_in = params_period_bytes(hw_params);
|
||||
return 0;
|
||||
@@ -361,12 +342,7 @@ static int snd_line6_capture_hw_params(struct snd_pcm_substream *substream,
|
||||
static int snd_line6_capture_hw_free(struct snd_pcm_substream *substream)
|
||||
{
|
||||
struct snd_line6_pcm *line6pcm = snd_pcm_substream_chip(substream);
|
||||
-
|
||||
- if ((line6pcm->flags & MASK_CAPTURE) == 0) {
|
||||
- line6_unlink_wait_clear_audio_in_urbs(line6pcm);
|
||||
- line6_free_capture_buffer(line6pcm);
|
||||
- }
|
||||
-
|
||||
+ line6_pcm_release(line6pcm, LINE6_BIT_PCM_ALSA_CAPTURE_BUFFER);
|
||||
return snd_pcm_lib_free_pages(substream);
|
||||
}
|
||||
|
||||
@@ -380,7 +356,7 @@ int snd_line6_capture_trigger(struct snd_line6_pcm *line6pcm, int cmd)
|
||||
#ifdef CONFIG_PM
|
||||
case SNDRV_PCM_TRIGGER_RESUME:
|
||||
#endif
|
||||
- err = line6_pcm_start(line6pcm, MASK_PCM_ALSA_CAPTURE);
|
||||
+ err = line6_pcm_acquire(line6pcm, LINE6_BIT_PCM_ALSA_CAPTURE_STREAM);
|
||||
|
||||
if (err < 0)
|
||||
return err;
|
||||
@@ -391,7 +367,7 @@ int snd_line6_capture_trigger(struct snd_line6_pcm *line6pcm, int cmd)
|
||||
#ifdef CONFIG_PM
|
||||
case SNDRV_PCM_TRIGGER_SUSPEND:
|
||||
#endif
|
||||
- err = line6_pcm_stop(line6pcm, MASK_PCM_ALSA_CAPTURE);
|
||||
+ err = line6_pcm_release(line6pcm, LINE6_BIT_PCM_ALSA_CAPTURE_STREAM);
|
||||
|
||||
if (err < 0)
|
||||
return err;
|
||||
diff --git a/drivers/staging/line6/capture.h b/drivers/staging/line6/capture.h
|
||||
index 366cbaa..4157bcb 100644
|
||||
--- a/drivers/staging/line6/capture.h
|
||||
+++ b/drivers/staging/line6/capture.h
|
||||
@@ -19,7 +19,6 @@
|
||||
|
||||
extern struct snd_pcm_ops snd_line6_capture_ops;
|
||||
|
||||
-extern int line6_alloc_capture_buffer(struct snd_line6_pcm *line6pcm);
|
||||
extern void line6_capture_copy(struct snd_line6_pcm *line6pcm, char *fbuf,
|
||||
int fsize);
|
||||
extern void line6_capture_check_period(struct snd_line6_pcm *line6pcm,
|
||||
@@ -30,6 +29,7 @@ extern int line6_submit_audio_in_all_urbs(struct snd_line6_pcm *line6pcm);
|
||||
extern void line6_unlink_audio_in_urbs(struct snd_line6_pcm *line6pcm);
|
||||
extern void line6_unlink_wait_clear_audio_in_urbs(struct snd_line6_pcm
|
||||
*line6pcm);
|
||||
+extern void line6_wait_clear_audio_in_urbs(struct snd_line6_pcm *line6pcm);
|
||||
extern int snd_line6_capture_trigger(struct snd_line6_pcm *line6pcm, int cmd);
|
||||
|
||||
#endif
|
||||
diff --git a/drivers/staging/line6/driver.c b/drivers/staging/line6/driver.c
|
||||
index 6a1959e..e8023af 100644
|
||||
--- a/drivers/staging/line6/driver.c
|
||||
+++ b/drivers/staging/line6/driver.c
|
||||
@@ -1346,7 +1346,7 @@ static void __exit line6_exit(void)
|
||||
if (line6pcm == NULL)
|
||||
continue;
|
||||
|
||||
- line6_pcm_stop(line6pcm, ~0);
|
||||
+ line6_pcm_release(line6pcm, ~0);
|
||||
}
|
||||
|
||||
usb_deregister(&line6_driver);
|
||||
diff --git a/drivers/staging/line6/pcm.c b/drivers/staging/line6/pcm.c
|
||||
index 37675e6..90d2d44 100644
|
||||
--- a/drivers/staging/line6/pcm.c
|
||||
+++ b/drivers/staging/line6/pcm.c
|
||||
@@ -52,9 +52,9 @@ static ssize_t pcm_set_impulse_volume(struct device *dev,
|
||||
line6pcm->impulse_volume = value;
|
||||
|
||||
if (value > 0)
|
||||
- line6_pcm_start(line6pcm, MASK_PCM_IMPULSE);
|
||||
+ line6_pcm_acquire(line6pcm, LINE6_BITS_PCM_IMPULSE);
|
||||
else
|
||||
- line6_pcm_stop(line6pcm, MASK_PCM_IMPULSE);
|
||||
+ line6_pcm_release(line6pcm, LINE6_BITS_PCM_IMPULSE);
|
||||
|
||||
return count;
|
||||
}
|
||||
@@ -92,29 +92,43 @@ static bool test_flags(unsigned long flags0, unsigned long flags1,
|
||||
return ((flags0 & mask) == 0) && ((flags1 & mask) != 0);
|
||||
}
|
||||
|
||||
-int line6_pcm_start(struct snd_line6_pcm *line6pcm, int channels)
|
||||
+int line6_pcm_acquire(struct snd_line6_pcm *line6pcm, int channels)
|
||||
{
|
||||
unsigned long flags_old =
|
||||
__sync_fetch_and_or(&line6pcm->flags, channels);
|
||||
unsigned long flags_new = flags_old | channels;
|
||||
+ unsigned long flags_final = flags_old;
|
||||
int err = 0;
|
||||
|
||||
line6pcm->prev_fbuf = NULL;
|
||||
|
||||
- if (test_flags(flags_old, flags_new, MASK_CAPTURE)) {
|
||||
+ if (test_flags(flags_old, flags_new, LINE6_BITS_CAPTURE_BUFFER)) {
|
||||
+ /* We may be invoked multiple times in a row so allocate once only */
|
||||
+ if (!line6pcm->buffer_in) {
|
||||
+ line6pcm->buffer_in =
|
||||
+ kmalloc(LINE6_ISO_BUFFERS * LINE6_ISO_PACKETS *
|
||||
+ line6pcm->max_packet_size, GFP_KERNEL);
|
||||
+
|
||||
+ if (!line6pcm->buffer_in) {
|
||||
+ dev_err(line6pcm->line6->ifcdev,
|
||||
+ "cannot malloc capture buffer\n");
|
||||
+ err = -ENOMEM;
|
||||
+ goto pcm_acquire_error;
|
||||
+ }
|
||||
+
|
||||
+ flags_final |= channels & LINE6_BITS_CAPTURE_BUFFER;
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
+ if (test_flags(flags_old, flags_new, LINE6_BITS_CAPTURE_STREAM)) {
|
||||
/*
|
||||
Waiting for completion of active URBs in the stop handler is
|
||||
a bug, we therefore report an error if capturing is restarted
|
||||
too soon.
|
||||
*/
|
||||
- if (line6pcm->active_urb_in | line6pcm->unlink_urb_in)
|
||||
+ if (line6pcm->active_urb_in | line6pcm->unlink_urb_in) {
|
||||
+ dev_err(line6pcm->line6->ifcdev, "Device not yet ready\n");
|
||||
return -EBUSY;
|
||||
-
|
||||
- if (!(flags_new & MASK_PCM_ALSA_CAPTURE)) {
|
||||
- err = line6_alloc_capture_buffer(line6pcm);
|
||||
-
|
||||
- if (err < 0)
|
||||
- goto pcm_start_error;
|
||||
}
|
||||
|
||||
line6pcm->count_in = 0;
|
||||
@@ -122,55 +136,78 @@ int line6_pcm_start(struct snd_line6_pcm *line6pcm, int channels)
|
||||
err = line6_submit_audio_in_all_urbs(line6pcm);
|
||||
|
||||
if (err < 0)
|
||||
- goto pcm_start_error;
|
||||
+ goto pcm_acquire_error;
|
||||
+
|
||||
+ flags_final |= channels & LINE6_BITS_CAPTURE_STREAM;
|
||||
}
|
||||
|
||||
- if (test_flags(flags_old, flags_new, MASK_PLAYBACK)) {
|
||||
- /*
|
||||
- See comment above regarding PCM restart.
|
||||
- */
|
||||
- if (line6pcm->active_urb_out | line6pcm->unlink_urb_out)
|
||||
- return -EBUSY;
|
||||
+ if (test_flags(flags_old, flags_new, LINE6_BITS_PLAYBACK_BUFFER)) {
|
||||
+ /* We may be invoked multiple times in a row so allocate once only */
|
||||
+ if (!line6pcm->buffer_out) {
|
||||
+ line6pcm->buffer_out =
|
||||
+ kmalloc(LINE6_ISO_BUFFERS * LINE6_ISO_PACKETS *
|
||||
+ line6pcm->max_packet_size, GFP_KERNEL);
|
||||
+
|
||||
+ if (!line6pcm->buffer_out) {
|
||||
+ dev_err(line6pcm->line6->ifcdev,
|
||||
+ "cannot malloc playback buffer\n");
|
||||
+ err = -ENOMEM;
|
||||
+ goto pcm_acquire_error;
|
||||
+ }
|
||||
|
||||
- if (!(flags_new & MASK_PCM_ALSA_PLAYBACK)) {
|
||||
- err = line6_alloc_playback_buffer(line6pcm);
|
||||
+ flags_final |= channels & LINE6_BITS_PLAYBACK_BUFFER;
|
||||
+ }
|
||||
+ }
|
||||
|
||||
- if (err < 0)
|
||||
- goto pcm_start_error;
|
||||
+ if (test_flags(flags_old, flags_new, LINE6_BITS_PLAYBACK_STREAM)) {
|
||||
+ /*
|
||||
+ See comment above regarding PCM restart.
|
||||
+ */
|
||||
+ if (line6pcm->active_urb_out | line6pcm->unlink_urb_out) {
|
||||
+ dev_err(line6pcm->line6->ifcdev, "Device not yet ready\n");
|
||||
+ return -EBUSY;
|
||||
}
|
||||
|
||||
line6pcm->count_out = 0;
|
||||
err = line6_submit_audio_out_all_urbs(line6pcm);
|
||||
|
||||
if (err < 0)
|
||||
- goto pcm_start_error;
|
||||
+ goto pcm_acquire_error;
|
||||
+
|
||||
+ flags_final |= channels & LINE6_BITS_PLAYBACK_STREAM;
|
||||
}
|
||||
|
||||
return 0;
|
||||
|
||||
-pcm_start_error:
|
||||
- __sync_fetch_and_and(&line6pcm->flags, ~channels);
|
||||
+pcm_acquire_error:
|
||||
+ /*
|
||||
+ If not all requested resources/streams could be obtained, release
|
||||
+ those which were successfully obtained (if any).
|
||||
+ */
|
||||
+ line6_pcm_release(line6pcm, flags_final & channels);
|
||||
return err;
|
||||
}
|
||||
|
||||
-int line6_pcm_stop(struct snd_line6_pcm *line6pcm, int channels)
|
||||
+int line6_pcm_release(struct snd_line6_pcm *line6pcm, int channels)
|
||||
{
|
||||
unsigned long flags_old =
|
||||
__sync_fetch_and_and(&line6pcm->flags, ~channels);
|
||||
unsigned long flags_new = flags_old & ~channels;
|
||||
|
||||
- if (test_flags(flags_new, flags_old, MASK_CAPTURE)) {
|
||||
+ if (test_flags(flags_new, flags_old, LINE6_BITS_CAPTURE_STREAM))
|
||||
line6_unlink_audio_in_urbs(line6pcm);
|
||||
|
||||
- if (!(flags_old & MASK_PCM_ALSA_CAPTURE))
|
||||
- line6_free_capture_buffer(line6pcm);
|
||||
+ if (test_flags(flags_new, flags_old, LINE6_BITS_CAPTURE_BUFFER)) {
|
||||
+ line6_wait_clear_audio_in_urbs(line6pcm);
|
||||
+ line6_free_capture_buffer(line6pcm);
|
||||
}
|
||||
|
||||
- if (test_flags(flags_new, flags_old, MASK_PLAYBACK)) {
|
||||
+ if (test_flags(flags_new, flags_old, LINE6_BITS_PLAYBACK_STREAM))
|
||||
line6_unlink_audio_out_urbs(line6pcm);
|
||||
|
||||
- if (!(flags_old & MASK_PCM_ALSA_PLAYBACK))
|
||||
- line6_free_playback_buffer(line6pcm);
|
||||
+ if (test_flags(flags_new, flags_old, LINE6_BITS_PLAYBACK_BUFFER)) {
|
||||
+ line6_wait_clear_audio_out_urbs(line6pcm);
|
||||
+ line6_free_playback_buffer(line6pcm);
|
||||
}
|
||||
|
||||
return 0;
|
||||
@@ -185,7 +222,7 @@ int snd_line6_trigger(struct snd_pcm_substream *substream, int cmd)
|
||||
unsigned long flags;
|
||||
|
||||
spin_lock_irqsave(&line6pcm->lock_trigger, flags);
|
||||
- clear_bit(BIT_PREPARED, &line6pcm->flags);
|
||||
+ clear_bit(LINE6_INDEX_PREPARED, &line6pcm->flags);
|
||||
|
||||
snd_pcm_group_for_each_entry(s, substream) {
|
||||
switch (s->stream) {
|
||||
@@ -498,13 +535,13 @@ int snd_line6_prepare(struct snd_pcm_substream *substream)
|
||||
|
||||
switch (substream->stream) {
|
||||
case SNDRV_PCM_STREAM_PLAYBACK:
|
||||
- if ((line6pcm->flags & MASK_PLAYBACK) == 0)
|
||||
+ if ((line6pcm->flags & LINE6_BITS_PLAYBACK_STREAM) == 0)
|
||||
line6_unlink_wait_clear_audio_out_urbs(line6pcm);
|
||||
|
||||
break;
|
||||
|
||||
case SNDRV_PCM_STREAM_CAPTURE:
|
||||
- if ((line6pcm->flags & MASK_CAPTURE) == 0)
|
||||
+ if ((line6pcm->flags & LINE6_BITS_CAPTURE_STREAM) == 0)
|
||||
line6_unlink_wait_clear_audio_in_urbs(line6pcm);
|
||||
|
||||
break;
|
||||
@@ -513,7 +550,7 @@ int snd_line6_prepare(struct snd_pcm_substream *substream)
|
||||
MISSING_CASE;
|
||||
}
|
||||
|
||||
- if (!test_and_set_bit(BIT_PREPARED, &line6pcm->flags)) {
|
||||
+ if (!test_and_set_bit(LINE6_INDEX_PREPARED, &line6pcm->flags)) {
|
||||
line6pcm->count_out = 0;
|
||||
line6pcm->pos_out = 0;
|
||||
line6pcm->pos_out_done = 0;
|
||||
diff --git a/drivers/staging/line6/pcm.h b/drivers/staging/line6/pcm.h
|
||||
index 47c6d69..5210ec8 100644
|
||||
--- a/drivers/staging/line6/pcm.h
|
||||
+++ b/drivers/staging/line6/pcm.h
|
||||
@@ -46,57 +46,131 @@
|
||||
(line6pcm->pcm->streams[stream].substream)
|
||||
|
||||
/*
|
||||
- PCM mode bits and masks.
|
||||
- "ALSA": operations triggered by applications via ALSA
|
||||
- "MONITOR": software monitoring
|
||||
- "IMPULSE": optional impulse response operation
|
||||
+ PCM mode bits.
|
||||
+
|
||||
+ There are several features of the Line6 USB driver which require PCM
|
||||
+ data to be exchanged with the device:
|
||||
+ *) PCM playback and capture via ALSA
|
||||
+ *) software monitoring (for devices without hardware monitoring)
|
||||
+ *) optional impulse response measurement
|
||||
+ However, from the device's point of view, there is just a single
|
||||
+ capture and playback stream, which must be shared between these
|
||||
+ subsystems. It is therefore necessary to maintain the state of the
|
||||
+ subsystems with respect to PCM usage. We define several constants of
|
||||
+ the form LINE6_BIT_PCM_<subsystem>_<direction>_<resource> with the
|
||||
+ following meanings:
|
||||
+ *) <subsystem> is one of
|
||||
+ -) ALSA: PCM playback and capture via ALSA
|
||||
+ -) MONITOR: software monitoring
|
||||
+ -) IMPULSE: optional impulse response measurement
|
||||
+ *) <direction> is one of
|
||||
+ -) PLAYBACK: audio output (from host to device)
|
||||
+ -) CAPTURE: audio input (from device to host)
|
||||
+ *) <resource> is one of
|
||||
+ -) BUFFER: buffer required by PCM data stream
|
||||
+ -) STREAM: actual PCM data stream
|
||||
+
|
||||
+ The subsystems call line6_pcm_acquire() to acquire the (shared)
|
||||
+ resources needed for a particular operation (e.g., allocate the buffer
|
||||
+ for ALSA playback or start the capture stream for software monitoring).
|
||||
+ When a resource is no longer needed, it is released by calling
|
||||
+ line6_pcm_release(). Buffer allocation and stream startup are handled
|
||||
+ separately to allow the ALSA kernel driver to perform them at
|
||||
+ appropriate places (since the callback which starts a PCM stream is not
|
||||
+ allowed to sleep).
|
||||
*/
|
||||
enum {
|
||||
- /* individual bits: */
|
||||
- BIT_PCM_ALSA_PLAYBACK,
|
||||
- BIT_PCM_ALSA_CAPTURE,
|
||||
- BIT_PCM_MONITOR_PLAYBACK,
|
||||
- BIT_PCM_MONITOR_CAPTURE,
|
||||
+ /* individual bit indices: */
|
||||
+ LINE6_INDEX_PCM_ALSA_PLAYBACK_BUFFER,
|
||||
+ LINE6_INDEX_PCM_ALSA_PLAYBACK_STREAM,
|
||||
+ LINE6_INDEX_PCM_ALSA_CAPTURE_BUFFER,
|
||||
+ LINE6_INDEX_PCM_ALSA_CAPTURE_STREAM,
|
||||
+ LINE6_INDEX_PCM_MONITOR_PLAYBACK_BUFFER,
|
||||
+ LINE6_INDEX_PCM_MONITOR_PLAYBACK_STREAM,
|
||||
+ LINE6_INDEX_PCM_MONITOR_CAPTURE_BUFFER,
|
||||
+ LINE6_INDEX_PCM_MONITOR_CAPTURE_STREAM,
|
||||
#ifdef CONFIG_LINE6_USB_IMPULSE_RESPONSE
|
||||
- BIT_PCM_IMPULSE_PLAYBACK,
|
||||
- BIT_PCM_IMPULSE_CAPTURE,
|
||||
+ LINE6_INDEX_PCM_IMPULSE_PLAYBACK_BUFFER,
|
||||
+ LINE6_INDEX_PCM_IMPULSE_PLAYBACK_STREAM,
|
||||
+ LINE6_INDEX_PCM_IMPULSE_CAPTURE_BUFFER,
|
||||
+ LINE6_INDEX_PCM_IMPULSE_CAPTURE_STREAM,
|
||||
#endif
|
||||
- BIT_PAUSE_PLAYBACK,
|
||||
- BIT_PREPARED,
|
||||
-
|
||||
- /* individual masks: */
|
||||
-/* *INDENT-OFF* */
|
||||
- MASK_PCM_ALSA_PLAYBACK = 1 << BIT_PCM_ALSA_PLAYBACK,
|
||||
- MASK_PCM_ALSA_CAPTURE = 1 << BIT_PCM_ALSA_CAPTURE,
|
||||
- MASK_PCM_MONITOR_PLAYBACK = 1 << BIT_PCM_MONITOR_PLAYBACK,
|
||||
- MASK_PCM_MONITOR_CAPTURE = 1 << BIT_PCM_MONITOR_CAPTURE,
|
||||
+ LINE6_INDEX_PAUSE_PLAYBACK,
|
||||
+ LINE6_INDEX_PREPARED,
|
||||
+
|
||||
+ /* individual bit masks: */
|
||||
+ LINE6_BIT(PCM_ALSA_PLAYBACK_BUFFER),
|
||||
+ LINE6_BIT(PCM_ALSA_PLAYBACK_STREAM),
|
||||
+ LINE6_BIT(PCM_ALSA_CAPTURE_BUFFER),
|
||||
+ LINE6_BIT(PCM_ALSA_CAPTURE_STREAM),
|
||||
+ LINE6_BIT(PCM_MONITOR_PLAYBACK_BUFFER),
|
||||
+ LINE6_BIT(PCM_MONITOR_PLAYBACK_STREAM),
|
||||
+ LINE6_BIT(PCM_MONITOR_CAPTURE_BUFFER),
|
||||
+ LINE6_BIT(PCM_MONITOR_CAPTURE_STREAM),
|
||||
#ifdef CONFIG_LINE6_USB_IMPULSE_RESPONSE
|
||||
- MASK_PCM_IMPULSE_PLAYBACK = 1 << BIT_PCM_IMPULSE_PLAYBACK,
|
||||
- MASK_PCM_IMPULSE_CAPTURE = 1 << BIT_PCM_IMPULSE_CAPTURE,
|
||||
+ LINE6_BIT(PCM_IMPULSE_PLAYBACK_BUFFER),
|
||||
+ LINE6_BIT(PCM_IMPULSE_PLAYBACK_STREAM),
|
||||
+ LINE6_BIT(PCM_IMPULSE_CAPTURE_BUFFER),
|
||||
+ LINE6_BIT(PCM_IMPULSE_CAPTURE_STREAM),
|
||||
#endif
|
||||
- MASK_PAUSE_PLAYBACK = 1 << BIT_PAUSE_PLAYBACK,
|
||||
- MASK_PREPARED = 1 << BIT_PREPARED,
|
||||
-/* *INDENT-ON* */
|
||||
+ LINE6_BIT(PAUSE_PLAYBACK),
|
||||
+ LINE6_BIT(PREPARED),
|
||||
|
||||
- /* combined masks (by operation): */
|
||||
- MASK_PCM_ALSA = MASK_PCM_ALSA_PLAYBACK | MASK_PCM_ALSA_CAPTURE,
|
||||
- MASK_PCM_MONITOR = MASK_PCM_MONITOR_PLAYBACK | MASK_PCM_MONITOR_CAPTURE,
|
||||
+ /* combined bit masks (by operation): */
|
||||
+ LINE6_BITS_PCM_ALSA_BUFFER =
|
||||
+ LINE6_BIT_PCM_ALSA_PLAYBACK_BUFFER |
|
||||
+ LINE6_BIT_PCM_ALSA_CAPTURE_BUFFER,
|
||||
+
|
||||
+ LINE6_BITS_PCM_ALSA_STREAM =
|
||||
+ LINE6_BIT_PCM_ALSA_PLAYBACK_STREAM |
|
||||
+ LINE6_BIT_PCM_ALSA_CAPTURE_STREAM,
|
||||
+
|
||||
+ LINE6_BITS_PCM_MONITOR =
|
||||
+ LINE6_BIT_PCM_MONITOR_PLAYBACK_BUFFER |
|
||||
+ LINE6_BIT_PCM_MONITOR_PLAYBACK_STREAM |
|
||||
+ LINE6_BIT_PCM_MONITOR_CAPTURE_BUFFER |
|
||||
+ LINE6_BIT_PCM_MONITOR_CAPTURE_STREAM,
|
||||
+
|
||||
+#ifdef CONFIG_LINE6_USB_IMPULSE_RESPONSE
|
||||
+ LINE6_BITS_PCM_IMPULSE =
|
||||
+ LINE6_BIT_PCM_IMPULSE_PLAYBACK_BUFFER |
|
||||
+ LINE6_BIT_PCM_IMPULSE_PLAYBACK_STREAM |
|
||||
+ LINE6_BIT_PCM_IMPULSE_CAPTURE_BUFFER |
|
||||
+ LINE6_BIT_PCM_IMPULSE_CAPTURE_STREAM,
|
||||
+#endif
|
||||
+
|
||||
+ /* combined bit masks (by direction): */
|
||||
+ LINE6_BITS_PLAYBACK_BUFFER =
|
||||
+#ifdef CONFIG_LINE6_USB_IMPULSE_RESPONSE
|
||||
+ LINE6_BIT_PCM_IMPULSE_PLAYBACK_BUFFER |
|
||||
+#endif
|
||||
+ LINE6_BIT_PCM_ALSA_PLAYBACK_BUFFER |
|
||||
+ LINE6_BIT_PCM_MONITOR_PLAYBACK_BUFFER ,
|
||||
+
|
||||
+ LINE6_BITS_PLAYBACK_STREAM =
|
||||
+#ifdef CONFIG_LINE6_USB_IMPULSE_RESPONSE
|
||||
+ LINE6_BIT_PCM_IMPULSE_PLAYBACK_STREAM |
|
||||
+#endif
|
||||
+ LINE6_BIT_PCM_ALSA_PLAYBACK_STREAM |
|
||||
+ LINE6_BIT_PCM_MONITOR_PLAYBACK_STREAM ,
|
||||
+
|
||||
+ LINE6_BITS_CAPTURE_BUFFER =
|
||||
#ifdef CONFIG_LINE6_USB_IMPULSE_RESPONSE
|
||||
- MASK_PCM_IMPULSE = MASK_PCM_IMPULSE_PLAYBACK | MASK_PCM_IMPULSE_CAPTURE,
|
||||
+ LINE6_BIT_PCM_IMPULSE_CAPTURE_BUFFER |
|
||||
#endif
|
||||
+ LINE6_BIT_PCM_ALSA_CAPTURE_BUFFER |
|
||||
+ LINE6_BIT_PCM_MONITOR_CAPTURE_BUFFER ,
|
||||
|
||||
- /* combined masks (by direction): */
|
||||
+ LINE6_BITS_CAPTURE_STREAM =
|
||||
#ifdef CONFIG_LINE6_USB_IMPULSE_RESPONSE
|
||||
- MASK_PLAYBACK =
|
||||
- MASK_PCM_ALSA_PLAYBACK | MASK_PCM_MONITOR_PLAYBACK |
|
||||
- MASK_PCM_IMPULSE_PLAYBACK,
|
||||
- MASK_CAPTURE =
|
||||
- MASK_PCM_ALSA_CAPTURE | MASK_PCM_MONITOR_CAPTURE |
|
||||
- MASK_PCM_IMPULSE_CAPTURE
|
||||
-#else
|
||||
- MASK_PLAYBACK = MASK_PCM_ALSA_PLAYBACK | MASK_PCM_MONITOR_PLAYBACK,
|
||||
- MASK_CAPTURE = MASK_PCM_ALSA_CAPTURE | MASK_PCM_MONITOR_CAPTURE
|
||||
+ LINE6_BIT_PCM_IMPULSE_CAPTURE_STREAM |
|
||||
#endif
|
||||
+ LINE6_BIT_PCM_ALSA_CAPTURE_STREAM |
|
||||
+ LINE6_BIT_PCM_MONITOR_CAPTURE_STREAM,
|
||||
+
|
||||
+ LINE6_BITS_STREAM =
|
||||
+ LINE6_BITS_PLAYBACK_STREAM |
|
||||
+ LINE6_BITS_CAPTURE_STREAM
|
||||
};
|
||||
|
||||
struct line6_pcm_properties {
|
||||
@@ -290,7 +364,7 @@ struct snd_line6_pcm {
|
||||
#endif
|
||||
|
||||
/**
|
||||
- Several status bits (see BIT_*).
|
||||
+ Several status bits (see LINE6_BIT_*).
|
||||
*/
|
||||
unsigned long flags;
|
||||
|
||||
@@ -302,7 +376,7 @@ extern int line6_init_pcm(struct usb_line6 *line6,
|
||||
extern int snd_line6_trigger(struct snd_pcm_substream *substream, int cmd);
|
||||
extern int snd_line6_prepare(struct snd_pcm_substream *substream);
|
||||
extern void line6_pcm_disconnect(struct snd_line6_pcm *line6pcm);
|
||||
-extern int line6_pcm_start(struct snd_line6_pcm *line6pcm, int channels);
|
||||
-extern int line6_pcm_stop(struct snd_line6_pcm *line6pcm, int channels);
|
||||
+extern int line6_pcm_acquire(struct snd_line6_pcm *line6pcm, int channels);
|
||||
+extern int line6_pcm_release(struct snd_line6_pcm *line6pcm, int channels);
|
||||
|
||||
#endif
|
||||
diff --git a/drivers/staging/line6/playback.c b/drivers/staging/line6/playback.c
|
||||
index 4152db2..a0ab9d0 100644
|
||||
--- a/drivers/staging/line6/playback.c
|
||||
+++ b/drivers/staging/line6/playback.c
|
||||
@@ -166,7 +166,7 @@ static int submit_audio_out_urb(struct snd_line6_pcm *line6pcm)
|
||||
struct usb_iso_packet_descriptor *fout =
|
||||
&urb_out->iso_frame_desc[i];
|
||||
|
||||
- if (line6pcm->flags & MASK_CAPTURE)
|
||||
+ if (line6pcm->flags & LINE6_BITS_CAPTURE_STREAM)
|
||||
fsize = line6pcm->prev_fsize;
|
||||
|
||||
if (fsize == 0) {
|
||||
@@ -196,8 +196,8 @@ static int submit_audio_out_urb(struct snd_line6_pcm *line6pcm)
|
||||
urb_out->transfer_buffer_length = urb_size;
|
||||
urb_out->context = line6pcm;
|
||||
|
||||
- if (test_bit(BIT_PCM_ALSA_PLAYBACK, &line6pcm->flags) &&
|
||||
- !test_bit(BIT_PAUSE_PLAYBACK, &line6pcm->flags)) {
|
||||
+ if (test_bit(LINE6_INDEX_PCM_ALSA_PLAYBACK_STREAM, &line6pcm->flags) &&
|
||||
+ !test_bit(LINE6_INDEX_PAUSE_PLAYBACK, &line6pcm->flags)) {
|
||||
struct snd_pcm_runtime *runtime =
|
||||
get_substream(line6pcm, SNDRV_PCM_STREAM_PLAYBACK)->runtime;
|
||||
|
||||
@@ -238,10 +238,10 @@ static int submit_audio_out_urb(struct snd_line6_pcm *line6pcm)
|
||||
|
||||
if (line6pcm->prev_fbuf != NULL) {
|
||||
#ifdef CONFIG_LINE6_USB_IMPULSE_RESPONSE
|
||||
- if (line6pcm->flags & MASK_PCM_IMPULSE) {
|
||||
+ if (line6pcm->flags & LINE6_BITS_PCM_IMPULSE) {
|
||||
create_impulse_test_signal(line6pcm, urb_out,
|
||||
bytes_per_frame);
|
||||
- if (line6pcm->flags & MASK_PCM_ALSA_CAPTURE) {
|
||||
+ if (line6pcm->flags & LINE6_BIT_PCM_ALSA_CAPTURE_STREAM) {
|
||||
line6_capture_copy(line6pcm,
|
||||
urb_out->transfer_buffer,
|
||||
urb_out->
|
||||
@@ -254,8 +254,8 @@ static int submit_audio_out_urb(struct snd_line6_pcm *line6pcm)
|
||||
if (!
|
||||
(line6pcm->line6->
|
||||
properties->capabilities & LINE6_BIT_HWMON)
|
||||
-&& (line6pcm->flags & MASK_PLAYBACK)
|
||||
-&& (line6pcm->flags & MASK_CAPTURE))
|
||||
+ && (line6pcm->flags & LINE6_BITS_PLAYBACK_STREAM)
|
||||
+ && (line6pcm->flags & LINE6_BITS_CAPTURE_STREAM))
|
||||
add_monitor_signal(urb_out, line6pcm->prev_fbuf,
|
||||
line6pcm->volume_monitor,
|
||||
bytes_per_frame);
|
||||
@@ -321,7 +321,7 @@ void line6_unlink_audio_out_urbs(struct snd_line6_pcm *line6pcm)
|
||||
/*
|
||||
Wait until unlinking of all currently active playback URBs has been finished.
|
||||
*/
|
||||
-static void wait_clear_audio_out_urbs(struct snd_line6_pcm *line6pcm)
|
||||
+void line6_wait_clear_audio_out_urbs(struct snd_line6_pcm *line6pcm)
|
||||
{
|
||||
int timeout = HZ;
|
||||
unsigned int i;
|
||||
@@ -348,26 +348,7 @@ static void wait_clear_audio_out_urbs(struct snd_line6_pcm *line6pcm)
|
||||
void line6_unlink_wait_clear_audio_out_urbs(struct snd_line6_pcm *line6pcm)
|
||||
{
|
||||
line6_unlink_audio_out_urbs(line6pcm);
|
||||
- wait_clear_audio_out_urbs(line6pcm);
|
||||
-}
|
||||
-
|
||||
-int line6_alloc_playback_buffer(struct snd_line6_pcm *line6pcm)
|
||||
-{
|
||||
- /* We may be invoked multiple times in a row so allocate once only */
|
||||
- if (line6pcm->buffer_out)
|
||||
- return 0;
|
||||
-
|
||||
- line6pcm->buffer_out =
|
||||
- kmalloc(LINE6_ISO_BUFFERS * LINE6_ISO_PACKETS *
|
||||
- line6pcm->max_packet_size, GFP_KERNEL);
|
||||
-
|
||||
- if (!line6pcm->buffer_out) {
|
||||
- dev_err(line6pcm->line6->ifcdev,
|
||||
- "cannot malloc playback buffer\n");
|
||||
- return -ENOMEM;
|
||||
- }
|
||||
-
|
||||
- return 0;
|
||||
+ line6_wait_clear_audio_out_urbs(line6pcm);
|
||||
}
|
||||
|
||||
void line6_free_playback_buffer(struct snd_line6_pcm *line6pcm)
|
||||
@@ -407,7 +388,7 @@ static void audio_out_callback(struct urb *urb)
|
||||
|
||||
spin_lock_irqsave(&line6pcm->lock_audio_out, flags);
|
||||
|
||||
- if (test_bit(BIT_PCM_ALSA_PLAYBACK, &line6pcm->flags)) {
|
||||
+ if (test_bit(LINE6_INDEX_PCM_ALSA_PLAYBACK_STREAM, &line6pcm->flags)) {
|
||||
struct snd_pcm_runtime *runtime = substream->runtime;
|
||||
line6pcm->pos_out_done +=
|
||||
length / line6pcm->properties->bytes_per_frame;
|
||||
@@ -432,7 +413,7 @@ static void audio_out_callback(struct urb *urb)
|
||||
if (!shutdown) {
|
||||
submit_audio_out_urb(line6pcm);
|
||||
|
||||
- if (test_bit(BIT_PCM_ALSA_PLAYBACK, &line6pcm->flags)) {
|
||||
+ if (test_bit(LINE6_INDEX_PCM_ALSA_PLAYBACK_STREAM, &line6pcm->flags)) {
|
||||
line6pcm->bytes_out += length;
|
||||
if (line6pcm->bytes_out >= line6pcm->period_out) {
|
||||
line6pcm->bytes_out %= line6pcm->period_out;
|
||||
@@ -484,17 +465,17 @@ static int snd_line6_playback_hw_params(struct snd_pcm_substream *substream,
|
||||
}
|
||||
/* -- [FD] end */
|
||||
|
||||
- if ((line6pcm->flags & MASK_PLAYBACK) == 0) {
|
||||
- ret = line6_alloc_playback_buffer(line6pcm);
|
||||
+ ret = line6_pcm_acquire(line6pcm, LINE6_BIT_PCM_ALSA_PLAYBACK_BUFFER);
|
||||
|
||||
- if (ret < 0)
|
||||
- return ret;
|
||||
- }
|
||||
+ if (ret < 0)
|
||||
+ return ret;
|
||||
|
||||
ret = snd_pcm_lib_malloc_pages(substream,
|
||||
params_buffer_bytes(hw_params));
|
||||
- if (ret < 0)
|
||||
+ if (ret < 0) {
|
||||
+ line6_pcm_release(line6pcm, LINE6_BIT_PCM_ALSA_PLAYBACK_BUFFER);
|
||||
return ret;
|
||||
+ }
|
||||
|
||||
line6pcm->period_out = params_period_bytes(hw_params);
|
||||
return 0;
|
||||
@@ -504,12 +485,7 @@ static int snd_line6_playback_hw_params(struct snd_pcm_substream *substream,
|
||||
static int snd_line6_playback_hw_free(struct snd_pcm_substream *substream)
|
||||
{
|
||||
struct snd_line6_pcm *line6pcm = snd_pcm_substream_chip(substream);
|
||||
-
|
||||
- if ((line6pcm->flags & MASK_PLAYBACK) == 0) {
|
||||
- line6_unlink_wait_clear_audio_out_urbs(line6pcm);
|
||||
- line6_free_playback_buffer(line6pcm);
|
||||
- }
|
||||
-
|
||||
+ line6_pcm_release(line6pcm, LINE6_BIT_PCM_ALSA_PLAYBACK_BUFFER);
|
||||
return snd_pcm_lib_free_pages(substream);
|
||||
}
|
||||
|
||||
@@ -523,7 +499,7 @@ int snd_line6_playback_trigger(struct snd_line6_pcm *line6pcm, int cmd)
|
||||
#ifdef CONFIG_PM
|
||||
case SNDRV_PCM_TRIGGER_RESUME:
|
||||
#endif
|
||||
- err = line6_pcm_start(line6pcm, MASK_PCM_ALSA_PLAYBACK);
|
||||
+ err = line6_pcm_acquire(line6pcm, LINE6_BIT_PCM_ALSA_PLAYBACK_STREAM);
|
||||
|
||||
if (err < 0)
|
||||
return err;
|
||||
@@ -534,7 +510,7 @@ int snd_line6_playback_trigger(struct snd_line6_pcm *line6pcm, int cmd)
|
||||
#ifdef CONFIG_PM
|
||||
case SNDRV_PCM_TRIGGER_SUSPEND:
|
||||
#endif
|
||||
- err = line6_pcm_stop(line6pcm, MASK_PCM_ALSA_PLAYBACK);
|
||||
+ err = line6_pcm_release(line6pcm, LINE6_BIT_PCM_ALSA_PLAYBACK_STREAM);
|
||||
|
||||
if (err < 0)
|
||||
return err;
|
||||
@@ -542,11 +518,11 @@ int snd_line6_playback_trigger(struct snd_line6_pcm *line6pcm, int cmd)
|
||||
break;
|
||||
|
||||
case SNDRV_PCM_TRIGGER_PAUSE_PUSH:
|
||||
- set_bit(BIT_PAUSE_PLAYBACK, &line6pcm->flags);
|
||||
+ set_bit(LINE6_INDEX_PAUSE_PLAYBACK, &line6pcm->flags);
|
||||
break;
|
||||
|
||||
case SNDRV_PCM_TRIGGER_PAUSE_RELEASE:
|
||||
- clear_bit(BIT_PAUSE_PLAYBACK, &line6pcm->flags);
|
||||
+ clear_bit(LINE6_INDEX_PAUSE_PLAYBACK, &line6pcm->flags);
|
||||
break;
|
||||
|
||||
default:
|
||||
diff --git a/drivers/staging/line6/playback.h b/drivers/staging/line6/playback.h
|
||||
index 02487ff..743bd6f 100644
|
||||
--- a/drivers/staging/line6/playback.h
|
||||
+++ b/drivers/staging/line6/playback.h
|
||||
@@ -29,13 +29,13 @@
|
||||
|
||||
extern struct snd_pcm_ops snd_line6_playback_ops;
|
||||
|
||||
-extern int line6_alloc_playback_buffer(struct snd_line6_pcm *line6pcm);
|
||||
extern int line6_create_audio_out_urbs(struct snd_line6_pcm *line6pcm);
|
||||
extern void line6_free_playback_buffer(struct snd_line6_pcm *line6pcm);
|
||||
extern int line6_submit_audio_out_all_urbs(struct snd_line6_pcm *line6pcm);
|
||||
extern void line6_unlink_audio_out_urbs(struct snd_line6_pcm *line6pcm);
|
||||
extern void line6_unlink_wait_clear_audio_out_urbs(struct snd_line6_pcm
|
||||
*line6pcm);
|
||||
+extern void line6_wait_clear_audio_out_urbs(struct snd_line6_pcm *line6pcm);
|
||||
extern int snd_line6_playback_trigger(struct snd_line6_pcm *line6pcm, int cmd);
|
||||
|
||||
#endif
|
||||
diff --git a/drivers/staging/line6/toneport.c b/drivers/staging/line6/toneport.c
|
||||
index b776130..b754f69 100644
|
||||
--- a/drivers/staging/line6/toneport.c
|
||||
+++ b/drivers/staging/line6/toneport.c
|
||||
@@ -207,9 +207,9 @@ static int snd_toneport_monitor_put(struct snd_kcontrol *kcontrol,
|
||||
line6pcm->volume_monitor = ucontrol->value.integer.value[0];
|
||||
|
||||
if (line6pcm->volume_monitor > 0)
|
||||
- line6_pcm_start(line6pcm, MASK_PCM_MONITOR);
|
||||
+ line6_pcm_acquire(line6pcm, LINE6_BITS_PCM_MONITOR);
|
||||
else
|
||||
- line6_pcm_stop(line6pcm, MASK_PCM_MONITOR);
|
||||
+ line6_pcm_release(line6pcm, LINE6_BITS_PCM_MONITOR);
|
||||
|
||||
return 1;
|
||||
}
|
||||
@@ -264,7 +264,7 @@ static void toneport_start_pcm(unsigned long arg)
|
||||
{
|
||||
struct usb_line6_toneport *toneport = (struct usb_line6_toneport *)arg;
|
||||
struct usb_line6 *line6 = &toneport->line6;
|
||||
- line6_pcm_start(line6->line6pcm, MASK_PCM_MONITOR);
|
||||
+ line6_pcm_acquire(line6->line6pcm, LINE6_BITS_PCM_MONITOR);
|
||||
}
|
||||
|
||||
/* control definition */
|
||||
@@ -446,7 +446,7 @@ void line6_toneport_disconnect(struct usb_interface *interface)
|
||||
struct snd_line6_pcm *line6pcm = toneport->line6.line6pcm;
|
||||
|
||||
if (line6pcm != NULL) {
|
||||
- line6_pcm_stop(line6pcm, MASK_PCM_MONITOR);
|
||||
+ line6_pcm_release(line6pcm, LINE6_BITS_PCM_MONITOR);
|
||||
line6_pcm_disconnect(line6pcm);
|
||||
}
|
||||
}
|
||||
diff --git a/drivers/staging/line6/usbdefs.h b/drivers/staging/line6/usbdefs.h
|
||||
index aff9e5c..353d59d 100644
|
||||
--- a/drivers/staging/line6/usbdefs.h
|
||||
+++ b/drivers/staging/line6/usbdefs.h
|
||||
@@ -39,31 +39,29 @@
|
||||
#define LINE6_DEVID_TONEPORT_UX2 0x4142
|
||||
#define LINE6_DEVID_VARIAX 0x534d
|
||||
|
||||
-enum {
|
||||
- LINE6_ID_BASSPODXT,
|
||||
- LINE6_ID_BASSPODXTLIVE,
|
||||
- LINE6_ID_BASSPODXTPRO,
|
||||
- LINE6_ID_GUITARPORT,
|
||||
- LINE6_ID_POCKETPOD,
|
||||
- LINE6_ID_PODHD300,
|
||||
- LINE6_ID_PODHD500,
|
||||
- LINE6_ID_PODSTUDIO_GX,
|
||||
- LINE6_ID_PODSTUDIO_UX1,
|
||||
- LINE6_ID_PODSTUDIO_UX2,
|
||||
- LINE6_ID_PODX3,
|
||||
- LINE6_ID_PODX3LIVE,
|
||||
- LINE6_ID_PODXT,
|
||||
- LINE6_ID_PODXTLIVE,
|
||||
- LINE6_ID_PODXTPRO,
|
||||
- LINE6_ID_TONEPORT_GX,
|
||||
- LINE6_ID_TONEPORT_UX1,
|
||||
- LINE6_ID_TONEPORT_UX2,
|
||||
- LINE6_ID_VARIAX
|
||||
-};
|
||||
-
|
||||
-#define LINE6_BIT(x) LINE6_BIT_ ## x = 1 << LINE6_ID_ ## x
|
||||
+#define LINE6_BIT(x) LINE6_BIT_ ## x = 1 << LINE6_INDEX_ ## x
|
||||
|
||||
enum {
|
||||
+ LINE6_INDEX_BASSPODXT,
|
||||
+ LINE6_INDEX_BASSPODXTLIVE,
|
||||
+ LINE6_INDEX_BASSPODXTPRO,
|
||||
+ LINE6_INDEX_GUITARPORT,
|
||||
+ LINE6_INDEX_POCKETPOD,
|
||||
+ LINE6_INDEX_PODHD300,
|
||||
+ LINE6_INDEX_PODHD500,
|
||||
+ LINE6_INDEX_PODSTUDIO_GX,
|
||||
+ LINE6_INDEX_PODSTUDIO_UX1,
|
||||
+ LINE6_INDEX_PODSTUDIO_UX2,
|
||||
+ LINE6_INDEX_PODX3,
|
||||
+ LINE6_INDEX_PODX3LIVE,
|
||||
+ LINE6_INDEX_PODXT,
|
||||
+ LINE6_INDEX_PODXTLIVE,
|
||||
+ LINE6_INDEX_PODXTPRO,
|
||||
+ LINE6_INDEX_TONEPORT_GX,
|
||||
+ LINE6_INDEX_TONEPORT_UX1,
|
||||
+ LINE6_INDEX_TONEPORT_UX2,
|
||||
+ LINE6_INDEX_VARIAX,
|
||||
+
|
||||
LINE6_BIT(BASSPODXT),
|
||||
LINE6_BIT(BASSPODXTLIVE),
|
||||
LINE6_BIT(BASSPODXTPRO),
|
37
debian/patches/features/all/line6/0021-Staging-line6-remove-unneeded-initialization.patch
vendored
Normal file
37
debian/patches/features/all/line6/0021-Staging-line6-remove-unneeded-initialization.patch
vendored
Normal file
|
@ -0,0 +1,37 @@
|
|||
From: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
||||
Date: Mon, 23 Apr 2012 15:59:17 -0700
|
||||
Subject: [021/106] Staging: line6: remove unneeded initialization
|
||||
|
||||
commit 305b8766a9833491b388ac98d57ce38a8106a1e0 upstream.
|
||||
|
||||
Static variables are initialized to NULL, no need to do it again in the
|
||||
module_init function.
|
||||
|
||||
CC: Markus Grabner <grabner@icg.tugraz.at>
|
||||
CC: Stefan Hajnoczi <stefanha@gmail.com>
|
||||
CC: Julia Lawall <julia@diku.dk>
|
||||
CC: Dan Carpenter <dan.carpenter@oracle.com>
|
||||
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
||||
---
|
||||
drivers/staging/line6/driver.c | 5 +----
|
||||
1 file changed, 1 insertion(+), 4 deletions(-)
|
||||
|
||||
diff --git a/drivers/staging/line6/driver.c b/drivers/staging/line6/driver.c
|
||||
index e8023af..312905a 100644
|
||||
--- a/drivers/staging/line6/driver.c
|
||||
+++ b/drivers/staging/line6/driver.c
|
||||
@@ -1297,13 +1297,10 @@ static struct usb_driver line6_driver = {
|
||||
*/
|
||||
static int __init line6_init(void)
|
||||
{
|
||||
- int i, retval;
|
||||
+ int retval;
|
||||
|
||||
printk(KERN_INFO "%s driver version %s\n", DRIVER_NAME, DRIVER_VERSION);
|
||||
|
||||
- for (i = LINE6_MAX_DEVICES; i--;)
|
||||
- line6_devices[i] = NULL;
|
||||
-
|
||||
retval = usb_register(&line6_driver);
|
||||
|
||||
if (retval) {
|
103
debian/patches/features/all/line6/0022-Staging-line6-only-allocate-a-buffer-if-it-is-needed.patch
vendored
Normal file
103
debian/patches/features/all/line6/0022-Staging-line6-only-allocate-a-buffer-if-it-is-needed.patch
vendored
Normal file
|
@ -0,0 +1,103 @@
|
|||
From: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
||||
Date: Mon, 23 Apr 2012 16:09:56 -0700
|
||||
Subject: [022/106] Staging: line6: only allocate a buffer if it is needed
|
||||
|
||||
commit c46b8a6567fb6e0119cb22819aa65faf8d101a2f upstream.
|
||||
|
||||
Only allocate the version request buffer if it is needed, not when the
|
||||
module starts up. This will let us make the module_init path much
|
||||
smaller.
|
||||
|
||||
CC: Markus Grabner <grabner@icg.tugraz.at>
|
||||
CC: Stefan Hajnoczi <stefanha@gmail.com>
|
||||
CC: Julia Lawall <julia@diku.dk>
|
||||
CC: Dan Carpenter <dan.carpenter@oracle.com>
|
||||
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
||||
---
|
||||
drivers/staging/line6/driver.c | 47 +++++++++++++++-------------------------
|
||||
1 file changed, 17 insertions(+), 30 deletions(-)
|
||||
|
||||
diff --git a/drivers/staging/line6/driver.c b/drivers/staging/line6/driver.c
|
||||
index 312905a..351e860 100644
|
||||
--- a/drivers/staging/line6/driver.c
|
||||
+++ b/drivers/staging/line6/driver.c
|
||||
@@ -92,15 +92,10 @@ const unsigned char line6_midi_id[] = {
|
||||
Code to request version of POD, Variax interface
|
||||
(and maybe other devices).
|
||||
*/
|
||||
-static const char line6_request_version0[] = {
|
||||
+static const char line6_request_version[] = {
|
||||
0xf0, 0x7e, 0x7f, 0x06, 0x01, 0xf7
|
||||
};
|
||||
|
||||
-/*
|
||||
- Copy of version request code with GFP_KERNEL flag for use in URB.
|
||||
-*/
|
||||
-static const char *line6_request_version;
|
||||
-
|
||||
struct usb_line6 *line6_devices[LINE6_MAX_DEVICES];
|
||||
|
||||
/**
|
||||
@@ -336,8 +331,21 @@ int line6_send_raw_message_async(struct usb_line6 *line6, const char *buffer,
|
||||
*/
|
||||
int line6_version_request_async(struct usb_line6 *line6)
|
||||
{
|
||||
- return line6_send_raw_message_async(line6, line6_request_version,
|
||||
- sizeof(line6_request_version0));
|
||||
+ char *buffer;
|
||||
+ int retval;
|
||||
+
|
||||
+ buffer = kmalloc(sizeof(line6_request_version), GFP_ATOMIC);
|
||||
+ if (buffer == NULL) {
|
||||
+ dev_err(line6->ifcdev, "Out of memory");
|
||||
+ return -ENOMEM;
|
||||
+ }
|
||||
+
|
||||
+ memcpy(buffer, line6_request_version, sizeof(line6_request_version));
|
||||
+
|
||||
+ retval = line6_send_raw_message_async(line6, buffer,
|
||||
+ sizeof(line6_request_version));
|
||||
+ kfree(buffer);
|
||||
+ return retval;
|
||||
}
|
||||
|
||||
/*
|
||||
@@ -1297,29 +1305,9 @@ static struct usb_driver line6_driver = {
|
||||
*/
|
||||
static int __init line6_init(void)
|
||||
{
|
||||
- int retval;
|
||||
-
|
||||
printk(KERN_INFO "%s driver version %s\n", DRIVER_NAME, DRIVER_VERSION);
|
||||
|
||||
- retval = usb_register(&line6_driver);
|
||||
-
|
||||
- if (retval) {
|
||||
- err("usb_register failed. Error number %d", retval);
|
||||
- return retval;
|
||||
- }
|
||||
-
|
||||
- line6_request_version = kmalloc(sizeof(line6_request_version0),
|
||||
- GFP_KERNEL);
|
||||
-
|
||||
- if (line6_request_version == NULL) {
|
||||
- err("Out of memory");
|
||||
- return -ENOMEM;
|
||||
- }
|
||||
-
|
||||
- memcpy((char *)line6_request_version, line6_request_version0,
|
||||
- sizeof(line6_request_version0));
|
||||
-
|
||||
- return retval;
|
||||
+ return usb_register(&line6_driver);
|
||||
}
|
||||
|
||||
/*
|
||||
@@ -1347,7 +1335,6 @@ static void __exit line6_exit(void)
|
||||
}
|
||||
|
||||
usb_deregister(&line6_driver);
|
||||
- kfree(line6_request_version);
|
||||
}
|
||||
|
||||
module_init(line6_init);
|
|
@ -0,0 +1,49 @@
|
|||
From: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
||||
Date: Mon, 23 Apr 2012 16:11:26 -0700
|
||||
Subject: [023/106] Staging: line6: remove teardown code from module_exit path
|
||||
|
||||
commit 15a89dc83bad5c22a02bd292cf87d72dacb7dcb3 upstream.
|
||||
|
||||
These pcm values should all be stopped properly when the device is
|
||||
removed from the system (i.e. when disconnect is called), so there's no
|
||||
need to duplicate this when the module is unloaded as well.
|
||||
|
||||
CC: Markus Grabner <grabner@icg.tugraz.at>
|
||||
CC: Stefan Hajnoczi <stefanha@gmail.com>
|
||||
CC: Julia Lawall <julia@diku.dk>
|
||||
CC: Dan Carpenter <dan.carpenter@oracle.com>
|
||||
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
||||
---
|
||||
drivers/staging/line6/driver.c | 19 -------------------
|
||||
1 file changed, 19 deletions(-)
|
||||
|
||||
diff --git a/drivers/staging/line6/driver.c b/drivers/staging/line6/driver.c
|
||||
index 351e860..c476fcc 100644
|
||||
--- a/drivers/staging/line6/driver.c
|
||||
+++ b/drivers/staging/line6/driver.c
|
||||
@@ -1315,25 +1315,6 @@ static int __init line6_init(void)
|
||||
*/
|
||||
static void __exit line6_exit(void)
|
||||
{
|
||||
- int i;
|
||||
- struct usb_line6 *line6;
|
||||
- struct snd_line6_pcm *line6pcm;
|
||||
-
|
||||
- /* stop all PCM channels */
|
||||
- for (i = LINE6_MAX_DEVICES; i--;) {
|
||||
- line6 = line6_devices[i];
|
||||
-
|
||||
- if (line6 == NULL)
|
||||
- continue;
|
||||
-
|
||||
- line6pcm = line6->line6pcm;
|
||||
-
|
||||
- if (line6pcm == NULL)
|
||||
- continue;
|
||||
-
|
||||
- line6_pcm_release(line6pcm, ~0);
|
||||
- }
|
||||
-
|
||||
usb_deregister(&line6_driver);
|
||||
}
|
||||
|
52
debian/patches/features/all/line6/0024-Staging-line6-use-module_usb_driver.patch
vendored
Normal file
52
debian/patches/features/all/line6/0024-Staging-line6-use-module_usb_driver.patch
vendored
Normal file
|
@ -0,0 +1,52 @@
|
|||
From: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
||||
Date: Mon, 23 Apr 2012 16:13:19 -0700
|
||||
Subject: [024/106] Staging: line6: use module_usb_driver()
|
||||
|
||||
commit 4a6313644c3188f4aa1a6b4403896375baa2e09a upstream.
|
||||
|
||||
Now that our module_init/exit path is just registering and unregistering
|
||||
the usb driver, we can use module_usb_driver() instead. This also has
|
||||
the nice side affect of removing the unneeded printk for the module
|
||||
version number.
|
||||
|
||||
CC: Markus Grabner <grabner@icg.tugraz.at>
|
||||
CC: Stefan Hajnoczi <stefanha@gmail.com>
|
||||
CC: Julia Lawall <julia@diku.dk>
|
||||
CC: Dan Carpenter <dan.carpenter@oracle.com>
|
||||
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
||||
---
|
||||
drivers/staging/line6/driver.c | 21 +--------------------
|
||||
1 file changed, 1 insertion(+), 20 deletions(-)
|
||||
|
||||
diff --git a/drivers/staging/line6/driver.c b/drivers/staging/line6/driver.c
|
||||
index c476fcc..4513f78 100644
|
||||
--- a/drivers/staging/line6/driver.c
|
||||
+++ b/drivers/staging/line6/driver.c
|
||||
@@ -1300,26 +1300,7 @@ static struct usb_driver line6_driver = {
|
||||
.id_table = line6_id_table,
|
||||
};
|
||||
|
||||
-/*
|
||||
- Module initialization.
|
||||
-*/
|
||||
-static int __init line6_init(void)
|
||||
-{
|
||||
- printk(KERN_INFO "%s driver version %s\n", DRIVER_NAME, DRIVER_VERSION);
|
||||
-
|
||||
- return usb_register(&line6_driver);
|
||||
-}
|
||||
-
|
||||
-/*
|
||||
- Module cleanup.
|
||||
-*/
|
||||
-static void __exit line6_exit(void)
|
||||
-{
|
||||
- usb_deregister(&line6_driver);
|
||||
-}
|
||||
-
|
||||
-module_init(line6_init);
|
||||
-module_exit(line6_exit);
|
||||
+module_usb_driver(line6_driver);
|
||||
|
||||
MODULE_AUTHOR(DRIVER_AUTHOR);
|
||||
MODULE_DESCRIPTION(DRIVER_DESC);
|
30
debian/patches/features/all/line6/0025-staging-line6-toneport.c-remove-err-usage.patch
vendored
Normal file
30
debian/patches/features/all/line6/0025-staging-line6-toneport.c-remove-err-usage.patch
vendored
Normal file
|
@ -0,0 +1,30 @@
|
|||
From: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
||||
Date: Fri, 20 Apr 2012 16:53:32 -0700
|
||||
Subject: [025/106] staging: line6: toneport.c: remove err() usage
|
||||
|
||||
commit aa8f827a4d7dbea98a9076a4f85b1317391dc031 upstream.
|
||||
|
||||
err() was a very old USB-specific macro that I thought had
|
||||
gone away. This patch removes it from being used in the
|
||||
driver and uses dev_err() instead.
|
||||
|
||||
CC: Markus Grabner <grabner@icg.tugraz.at>
|
||||
CC: Stefan Hajnoczi <stefanha@gmail.com>
|
||||
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
||||
---
|
||||
drivers/staging/line6/toneport.c | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/drivers/staging/line6/toneport.c b/drivers/staging/line6/toneport.c
|
||||
index b754f69..31b624b 100644
|
||||
--- a/drivers/staging/line6/toneport.c
|
||||
+++ b/drivers/staging/line6/toneport.c
|
||||
@@ -168,7 +168,7 @@ static int toneport_send_cmd(struct usb_device *usbdev, int cmd1, int cmd2)
|
||||
cmd1, cmd2, NULL, 0, LINE6_TIMEOUT * HZ);
|
||||
|
||||
if (ret < 0) {
|
||||
- err("send failed (error %d)\n", ret);
|
||||
+ dev_err(&usbdev->dev, "send failed (error %d)\n", ret);
|
||||
return ret;
|
||||
}
|
||||
|
|
@ -0,0 +1,29 @@
|
|||
From: Johannes Thumshirn <morbidrsa@googlemail.com>
|
||||
Date: Sat, 5 May 2012 16:31:50 +0200
|
||||
Subject: [026/106] staging: line6/midibuf.c changed printk(KERN_DEBUG, ... to
|
||||
pr_debug(
|
||||
|
||||
commit 8878451510b11ee9095198f42bf1d59e6bab66fb upstream.
|
||||
|
||||
Changed printk(KERN_DEBUG, ...) call to pr_debug call in function
|
||||
void line6_midibuf_status(struct MidiBuffer *this)
|
||||
|
||||
Signed-off-by: Johannes Thumshirn <morbidrsa@googlemail.com>
|
||||
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
||||
---
|
||||
drivers/staging/line6/midibuf.c | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/drivers/staging/line6/midibuf.c b/drivers/staging/line6/midibuf.c
|
||||
index 7b532e5..836e8c8 100644
|
||||
--- a/drivers/staging/line6/midibuf.c
|
||||
+++ b/drivers/staging/line6/midibuf.c
|
||||
@@ -64,7 +64,7 @@ int line6_midibuf_init(struct MidiBuffer *this, int size, int split)
|
||||
|
||||
void line6_midibuf_status(struct MidiBuffer *this)
|
||||
{
|
||||
- printk(KERN_DEBUG "midibuf size=%d split=%d pos_read=%d pos_write=%d "
|
||||
+ pr_debug("midibuf size=%d split=%d pos_read=%d pos_write=%d "
|
||||
"full=%d command_prev=%02x\n", this->size, this->split,
|
||||
this->pos_read, this->pos_write, this->full, this->command_prev);
|
||||
}
|
|
@ -0,0 +1,28 @@
|
|||
From: Johannes Thumshirn <morbidrsa@googlemail.com>
|
||||
Date: Sat, 5 May 2012 16:31:51 +0200
|
||||
Subject: [027/106] staging: line6/midi.c: Added space between switch and open
|
||||
parenthesis
|
||||
|
||||
commit bc8fa144afe33bfbcae20dca4faff836ec7efedc upstream.
|
||||
|
||||
Added space between switch and open parenthesis to make checkpatch.pl happy
|
||||
|
||||
Signed-off-by: Johannes Thumshirn <morbidrsa@googlemail.com>
|
||||
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
||||
---
|
||||
drivers/staging/line6/midi.c | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/drivers/staging/line6/midi.c b/drivers/staging/line6/midi.c
|
||||
index 13d0293..5040729 100644
|
||||
--- a/drivers/staging/line6/midi.c
|
||||
+++ b/drivers/staging/line6/midi.c
|
||||
@@ -406,7 +406,7 @@ int line6_init_midi(struct usb_line6 *line6)
|
||||
|
||||
line6midi->line6 = line6;
|
||||
|
||||
- switch(line6->product) {
|
||||
+ switch (line6->product) {
|
||||
case LINE6_DEVID_PODHD300:
|
||||
case LINE6_DEVID_PODHD500:
|
||||
line6midi->midi_mask_transmit = 1;
|
27
debian/patches/features/all/line6/0028-staging-line6-pcm.c-Removed-trailing-whitespace.patch
vendored
Normal file
27
debian/patches/features/all/line6/0028-staging-line6-pcm.c-Removed-trailing-whitespace.patch
vendored
Normal file
|
@ -0,0 +1,27 @@
|
|||
From: Johannes Thumshirn <morbidrsa@googlemail.com>
|
||||
Date: Sat, 5 May 2012 16:31:52 +0200
|
||||
Subject: [028/106] staging: line6/pcm.c: Removed trailing whitespace
|
||||
|
||||
commit 82a74d4a8022fc01b99550e4cd6b90802acd4ef9 upstream.
|
||||
|
||||
Removed a line of only whitespace
|
||||
|
||||
Signed-off-by: Johannes Thumshirn <morbidrsa@googlemail.com>
|
||||
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
||||
---
|
||||
drivers/staging/line6/pcm.c | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/drivers/staging/line6/pcm.c b/drivers/staging/line6/pcm.c
|
||||
index 90d2d44..5e319e3 100644
|
||||
--- a/drivers/staging/line6/pcm.c
|
||||
+++ b/drivers/staging/line6/pcm.c
|
||||
@@ -99,7 +99,7 @@ int line6_pcm_acquire(struct snd_line6_pcm *line6pcm, int channels)
|
||||
unsigned long flags_new = flags_old | channels;
|
||||
unsigned long flags_final = flags_old;
|
||||
int err = 0;
|
||||
-
|
||||
+
|
||||
line6pcm->prev_fbuf = NULL;
|
||||
|
||||
if (test_flags(flags_old, flags_new, LINE6_BITS_CAPTURE_BUFFER)) {
|
30
debian/patches/features/all/line6/0029-staging-line6-config.h-Remove-CHECKPOINT-macro.patch
vendored
Normal file
30
debian/patches/features/all/line6/0029-staging-line6-config.h-Remove-CHECKPOINT-macro.patch
vendored
Normal file
|
@ -0,0 +1,30 @@
|
|||
From: Johannes Thumshirn <morbidrsa@googlemail.com>
|
||||
Date: Thu, 10 May 2012 19:12:02 +0200
|
||||
Subject: [029/106] staging: line6/config.h: Remove CHECKPOINT macro
|
||||
|
||||
commit c15974ef1f2d858795f7f63280fb53bcab6064f9 upstream.
|
||||
|
||||
Kill unused debugging macro CHECKPOINT
|
||||
|
||||
Signed-off-by: Johannes Thumshirn <morbidrsa@googlemail.com>
|
||||
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
||||
---
|
||||
drivers/staging/line6/config.h | 5 -----
|
||||
1 file changed, 5 deletions(-)
|
||||
|
||||
diff --git a/drivers/staging/line6/config.h b/drivers/staging/line6/config.h
|
||||
index f8a5149..2493491 100644
|
||||
--- a/drivers/staging/line6/config.h
|
||||
+++ b/drivers/staging/line6/config.h
|
||||
@@ -34,11 +34,6 @@
|
||||
#define CREATE_RAW_FILE 0
|
||||
|
||||
#if DO_DEBUG_MESSAGES
|
||||
-#define CHECKPOINT printk(KERN_INFO "line6usb: %s (%s:%d)\n", \
|
||||
- __func__, __FILE__, __LINE__)
|
||||
-#endif
|
||||
-
|
||||
-#if DO_DEBUG_MESSAGES
|
||||
#define DEBUG_MESSAGES(x) (x)
|
||||
#else
|
||||
#define DEBUG_MESSAGES(x)
|
64
debian/patches/features/all/line6/0030-staging-line6-config.h-Delete-unused-header.patch
vendored
Normal file
64
debian/patches/features/all/line6/0030-staging-line6-config.h-Delete-unused-header.patch
vendored
Normal file
|
@ -0,0 +1,64 @@
|
|||
From: Johannes Thumshirn <morbidrsa@googlemail.com>
|
||||
Date: Fri, 18 May 2012 16:49:32 +0200
|
||||
Subject: [030/106] staging: line6/config.h: Delete unused header
|
||||
|
||||
commit 0f64507473b9d8fef6592748ed4180908f5d26cc upstream.
|
||||
|
||||
Delete unused header file drivers/staging/line6/config.h
|
||||
|
||||
Signed-off-by: Johannes Thumshirn <morbidrsa@googlemail.com>
|
||||
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
||||
---
|
||||
drivers/staging/line6/config.h | 43 ----------------------------------------
|
||||
1 file changed, 43 deletions(-)
|
||||
delete mode 100644 drivers/staging/line6/config.h
|
||||
|
||||
diff --git a/drivers/staging/line6/config.h b/drivers/staging/line6/config.h
|
||||
deleted file mode 100644
|
||||
index 2493491..0000000
|
||||
--- a/drivers/staging/line6/config.h
|
||||
+++ /dev/null
|
||||
@@ -1,43 +0,0 @@
|
||||
-/*
|
||||
- * Line6 Linux USB driver - 0.8.0
|
||||
- *
|
||||
- * Copyright (C) 2004-2009 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 CONFIG_H
|
||||
-#define CONFIG_H
|
||||
-
|
||||
-
|
||||
-#ifdef CONFIG_USB_DEBUG
|
||||
-#define DEBUG 1
|
||||
-#endif
|
||||
-
|
||||
-
|
||||
-/*
|
||||
- * Development tools.
|
||||
- */
|
||||
-#define DO_DEBUG_MESSAGES 0
|
||||
-#define DO_DUMP_URB_SEND DO_DEBUG_MESSAGES
|
||||
-#define DO_DUMP_URB_RECEIVE DO_DEBUG_MESSAGES
|
||||
-#define DO_DUMP_PCM_SEND 0
|
||||
-#define DO_DUMP_PCM_RECEIVE 0
|
||||
-#define DO_DUMP_MIDI_SEND DO_DEBUG_MESSAGES
|
||||
-#define DO_DUMP_MIDI_RECEIVE DO_DEBUG_MESSAGES
|
||||
-#define DO_DUMP_ANY (DO_DUMP_URB_SEND || DO_DUMP_URB_RECEIVE || \
|
||||
- DO_DUMP_PCM_SEND || DO_DUMP_PCM_RECEIVE || \
|
||||
- DO_DUMP_MIDI_SEND || DO_DUMP_MIDI_RECEIVE)
|
||||
-#define CREATE_RAW_FILE 0
|
||||
-
|
||||
-#if DO_DEBUG_MESSAGES
|
||||
-#define DEBUG_MESSAGES(x) (x)
|
||||
-#else
|
||||
-#define DEBUG_MESSAGES(x)
|
||||
-#endif
|
||||
-
|
||||
-
|
||||
-#endif
|
|
@ -0,0 +1,42 @@
|
|||
From: Johannes Thumshirn <morbidrsa@googlemail.com>
|
||||
Date: Wed, 27 Jun 2012 21:25:55 +0200
|
||||
Subject: [031/106] staging: line6: changed interface of
|
||||
line6_transmit_parameter()
|
||||
|
||||
commit 2471c0933988eede8040d58cefd6be4fbef9c057 upstream.
|
||||
|
||||
Interface of line6_transmit_parameter() adjusted to clarify internal workings
|
||||
|
||||
Signed-off-by: Johannes Thumshirn <morbidrsa@googlemail.com>
|
||||
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
||||
---
|
||||
drivers/staging/line6/driver.c | 2 +-
|
||||
drivers/staging/line6/driver.h | 2 +-
|
||||
2 files changed, 2 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/drivers/staging/line6/driver.c b/drivers/staging/line6/driver.c
|
||||
index 4513f78..d861230 100644
|
||||
--- a/drivers/staging/line6/driver.c
|
||||
+++ b/drivers/staging/line6/driver.c
|
||||
@@ -526,7 +526,7 @@ int line6_send_program(struct usb_line6 *line6, int value)
|
||||
/*
|
||||
Transmit Line6 control parameter.
|
||||
*/
|
||||
-int line6_transmit_parameter(struct usb_line6 *line6, int param, int value)
|
||||
+int line6_transmit_parameter(struct usb_line6 *line6, int param, u8 value)
|
||||
{
|
||||
int retval;
|
||||
unsigned char *buffer;
|
||||
diff --git a/drivers/staging/line6/driver.h b/drivers/staging/line6/driver.h
|
||||
index 117bf99..140ccfe 100644
|
||||
--- a/drivers/staging/line6/driver.h
|
||||
+++ b/drivers/staging/line6/driver.h
|
||||
@@ -224,7 +224,7 @@ extern void line6_start_timer(struct timer_list *timer, unsigned int msecs,
|
||||
void (*function) (unsigned long),
|
||||
unsigned long data);
|
||||
extern int line6_transmit_parameter(struct usb_line6 *line6, int param,
|
||||
- int value);
|
||||
+ u8 value);
|
||||
extern int line6_version_request_async(struct usb_line6 *line6);
|
||||
extern int line6_write_data(struct usb_line6 *line6, int address, void *data,
|
||||
size_t datalen);
|
|
@ -0,0 +1,45 @@
|
|||
From: Johannes Thumshirn <morbidrsa@googlemail.com>
|
||||
Date: Wed, 27 Jun 2012 21:25:56 +0200
|
||||
Subject: [032/106] staging: line6: Changed some strict_strtouls to kstrtou8
|
||||
|
||||
commit 1383ec4dad392a1c316820e9afb27b5fb95a6f57 upstream.
|
||||
|
||||
Adjusted strict_strtoul calls to kstrtou8 in order to take the changes of
|
||||
line6_transmit_parameter() into account.
|
||||
|
||||
Signed-off-by: Johannes Thumshirn <morbidrsa@googlemail.com>
|
||||
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
||||
---
|
||||
drivers/staging/line6/variax.c | 8 ++++----
|
||||
1 file changed, 4 insertions(+), 4 deletions(-)
|
||||
|
||||
diff --git a/drivers/staging/line6/variax.c b/drivers/staging/line6/variax.c
|
||||
index d366222..bb99ee4 100644
|
||||
--- a/drivers/staging/line6/variax.c
|
||||
+++ b/drivers/staging/line6/variax.c
|
||||
@@ -319,10 +319,10 @@ static ssize_t variax_set_volume(struct device *dev,
|
||||
{
|
||||
struct usb_line6_variax *variax =
|
||||
usb_get_intfdata(to_usb_interface(dev));
|
||||
- unsigned long value;
|
||||
+ u8 value;
|
||||
int ret;
|
||||
|
||||
- ret = strict_strtoul(buf, 10, &value);
|
||||
+ ret = kstrtou8(buf, 10, &value);
|
||||
if (ret)
|
||||
return ret;
|
||||
|
||||
@@ -418,10 +418,10 @@ static ssize_t variax_set_tone(struct device *dev,
|
||||
{
|
||||
struct usb_line6_variax *variax =
|
||||
usb_get_intfdata(to_usb_interface(dev));
|
||||
- unsigned long value;
|
||||
+ u8 value;
|
||||
int ret;
|
||||
|
||||
- ret = strict_strtoul(buf, 10, &value);
|
||||
+ ret = kstrtou8(buf, 10, &value);
|
||||
if (ret)
|
||||
return ret;
|
||||
|
|
@ -0,0 +1,42 @@
|
|||
From: Johannes Thumshirn <morbidrsa@googlemail.com>
|
||||
Date: Wed, 27 Jun 2012 21:25:57 +0200
|
||||
Subject: [033/106] staging: line6: changed interface of
|
||||
line6_pod_transmit_parameter()
|
||||
|
||||
commit 5b9bd2ad5116c735cf8e4fa1689319849086a55e upstream.
|
||||
|
||||
Adjusted interface of line6_pod_transmit_parameter() to take changes of
|
||||
line6_transmit_parameter() into account
|
||||
|
||||
Signed-off-by: Johannes Thumshirn <morbidrsa@googlemail.com>
|
||||
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
||||
---
|
||||
drivers/staging/line6/pod.c | 2 +-
|
||||
drivers/staging/line6/pod.h | 2 +-
|
||||
2 files changed, 2 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/drivers/staging/line6/pod.c b/drivers/staging/line6/pod.c
|
||||
index 4dadc57..8667aaf 100644
|
||||
--- a/drivers/staging/line6/pod.c
|
||||
+++ b/drivers/staging/line6/pod.c
|
||||
@@ -419,7 +419,7 @@ static void pod_send_channel(struct usb_line6_pod *pod, int value)
|
||||
Transmit PODxt Pro control parameter.
|
||||
*/
|
||||
void line6_pod_transmit_parameter(struct usb_line6_pod *pod, int param,
|
||||
- int value)
|
||||
+ u8 value)
|
||||
{
|
||||
if (line6_transmit_parameter(&pod->line6, param, value) == 0)
|
||||
pod_store_parameter(pod, param, value);
|
||||
diff --git a/drivers/staging/line6/pod.h b/drivers/staging/line6/pod.h
|
||||
index 18b9d08..47e0d1a 100644
|
||||
--- a/drivers/staging/line6/pod.h
|
||||
+++ b/drivers/staging/line6/pod.h
|
||||
@@ -200,6 +200,6 @@ extern void line6_pod_midi_postprocess(struct usb_line6_pod *pod,
|
||||
unsigned char *data, int length);
|
||||
extern void line6_pod_process_message(struct usb_line6_pod *pod);
|
||||
extern void line6_pod_transmit_parameter(struct usb_line6_pod *pod, int param,
|
||||
- int value);
|
||||
+ u8 value);
|
||||
|
||||
#endif
|
|
@ -0,0 +1,41 @@
|
|||
From: Johannes Thumshirn <morbidrsa@googlemail.com>
|
||||
Date: Wed, 27 Jun 2012 21:25:58 +0200
|
||||
Subject: [034/106] staging: line6: adjusted interface of line6_send_program()
|
||||
|
||||
commit 317e188b2d48b7bc8537619b6c01208e1b03001a upstream.
|
||||
|
||||
Adjusted interface of line6_send_program() to clarify internal working
|
||||
|
||||
Signed-off-by: Johannes Thumshirn <morbidrsa@googlemail.com>
|
||||
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
||||
---
|
||||
drivers/staging/line6/driver.c | 2 +-
|
||||
drivers/staging/line6/driver.h | 2 +-
|
||||
2 files changed, 2 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/drivers/staging/line6/driver.c b/drivers/staging/line6/driver.c
|
||||
index d861230..b8358ca 100644
|
||||
--- a/drivers/staging/line6/driver.c
|
||||
+++ b/drivers/staging/line6/driver.c
|
||||
@@ -490,7 +490,7 @@ static void line6_data_received(struct urb *urb)
|
||||
/*
|
||||
Send channel number (i.e., switch to a different sound).
|
||||
*/
|
||||
-int line6_send_program(struct usb_line6 *line6, int value)
|
||||
+int line6_send_program(struct usb_line6 *line6, u8 value)
|
||||
{
|
||||
int retval;
|
||||
unsigned char *buffer;
|
||||
diff --git a/drivers/staging/line6/driver.h b/drivers/staging/line6/driver.h
|
||||
index 140ccfe..a3029eb 100644
|
||||
--- a/drivers/staging/line6/driver.h
|
||||
+++ b/drivers/staging/line6/driver.h
|
||||
@@ -209,7 +209,7 @@ extern int line6_read_data(struct usb_line6 *line6, int address, void *data,
|
||||
size_t datalen);
|
||||
extern int line6_read_serial_number(struct usb_line6 *line6,
|
||||
int *serial_number);
|
||||
-extern int line6_send_program(struct usb_line6 *line6, int value);
|
||||
+extern int line6_send_program(struct usb_line6 *line6, u8 value);
|
||||
extern int line6_send_raw_message(struct usb_line6 *line6, const char *buffer,
|
||||
int size);
|
||||
extern int line6_send_raw_message_async(struct usb_line6 *line6,
|
28
debian/patches/features/all/line6/0035-staging-line6-changed-interface-of-pod_send_channel.patch
vendored
Normal file
28
debian/patches/features/all/line6/0035-staging-line6-changed-interface-of-pod_send_channel.patch
vendored
Normal file
|
@ -0,0 +1,28 @@
|
|||
From: Johannes Thumshirn <morbidrsa@googlemail.com>
|
||||
Date: Wed, 27 Jun 2012 21:25:59 +0200
|
||||
Subject: [035/106] staging: line6: changed interface of pod_send_channel()
|
||||
|
||||
commit 8d6b7f7c9b3c346f2fef496827c3fbbc2ebef1a9 upstream.
|
||||
|
||||
Adjusted interface of pod_send_channel() in order to take changes of
|
||||
line6_send_program() into account.
|
||||
|
||||
Signed-off-by: Johannes Thumshirn <morbidrsa@googlemail.com>
|
||||
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
||||
---
|
||||
drivers/staging/line6/pod.c | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/drivers/staging/line6/pod.c b/drivers/staging/line6/pod.c
|
||||
index 8667aaf..459f325 100644
|
||||
--- a/drivers/staging/line6/pod.c
|
||||
+++ b/drivers/staging/line6/pod.c
|
||||
@@ -405,7 +405,7 @@ void line6_pod_midi_postprocess(struct usb_line6_pod *pod, unsigned char *data,
|
||||
/*
|
||||
Send channel number (i.e., switch to a different sound).
|
||||
*/
|
||||
-static void pod_send_channel(struct usb_line6_pod *pod, int value)
|
||||
+static void pod_send_channel(struct usb_line6_pod *pod, u8 value)
|
||||
{
|
||||
line6_invalidate_current(&pod->dumpreq);
|
||||
|
|
@ -0,0 +1,34 @@
|
|||
From: Johannes Thumshirn <morbidrsa@googlemail.com>
|
||||
Date: Wed, 27 Jun 2012 21:26:00 +0200
|
||||
Subject: [036/106] staging: line6: control.c eliminate strict_strtoul() in
|
||||
pod_set_param_int()
|
||||
|
||||
commit 336cab9afa2567fd41d2813d3f0f9249371219cb upstream.
|
||||
|
||||
Exchange strict_strtoul() with kstrtou8() and make "value" a u8 instead of a
|
||||
unsigned long. This is also needed for the changed
|
||||
line6_pod_transmit_parameter().
|
||||
|
||||
Signed-off-by: Johannes Thumshirn <morbidrsa@googlemail.com>
|
||||
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
||||
---
|
||||
drivers/staging/line6/control.c | 4 ++--
|
||||
1 file changed, 2 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/drivers/staging/line6/control.c b/drivers/staging/line6/control.c
|
||||
index 67e23b6..f8326f5 100644
|
||||
--- a/drivers/staging/line6/control.c
|
||||
+++ b/drivers/staging/line6/control.c
|
||||
@@ -55,10 +55,10 @@ static ssize_t pod_set_param_int(struct device *dev, const char *buf,
|
||||
{
|
||||
struct usb_interface *interface = to_usb_interface(dev);
|
||||
struct usb_line6_pod *pod = usb_get_intfdata(interface);
|
||||
- unsigned long value;
|
||||
+ u8 value;
|
||||
int retval;
|
||||
|
||||
- retval = strict_strtoul(buf, 10, &value);
|
||||
+ retval = kstrtou8(buf, 10, &value);
|
||||
if (retval)
|
||||
return retval;
|
||||
|
|
@ -0,0 +1,33 @@
|
|||
From: Johannes Thumshirn <morbidrsa@googlemail.com>
|
||||
Date: Wed, 27 Jun 2012 21:26:01 +0200
|
||||
Subject: [037/106] staging: line6: Exchanged strict_strtoul with kstrtou8()
|
||||
in pod.c:pod_resolve()
|
||||
|
||||
commit 1d0e834d62c6810385c2f0673cf6bd97a59aae68 upstream.
|
||||
|
||||
Exchanged call to strict_strtoul() with kstrtou8() in pod_resolve().
|
||||
|
||||
Signed-off-by: Johannes Thumshirn <morbidrsa@googlemail.com>
|
||||
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
||||
---
|
||||
drivers/staging/line6/pod.c | 4 ++--
|
||||
1 file changed, 2 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/drivers/staging/line6/pod.c b/drivers/staging/line6/pod.c
|
||||
index 459f325..4c81914 100644
|
||||
--- a/drivers/staging/line6/pod.c
|
||||
+++ b/drivers/staging/line6/pod.c
|
||||
@@ -434,11 +434,11 @@ void line6_pod_transmit_parameter(struct usb_line6_pod *pod, int param,
|
||||
static int pod_resolve(const char *buf, short block0, short block1,
|
||||
unsigned char *location)
|
||||
{
|
||||
- unsigned long value;
|
||||
+ u8 value;
|
||||
short block;
|
||||
int ret;
|
||||
|
||||
- ret = strict_strtoul(buf, 10, &value);
|
||||
+ ret = kstrtou8(buf, 10, &value);
|
||||
if (ret)
|
||||
return ret;
|
||||
|
|
@ -0,0 +1,33 @@
|
|||
From: Johannes Thumshirn <morbidrsa@googlemail.com>
|
||||
Date: Wed, 27 Jun 2012 21:26:02 +0200
|
||||
Subject: [038/106] staging: line6: Changed strict_strtoul() to kstrtou8() in
|
||||
pod_set_channel()
|
||||
|
||||
commit a4fb7d53869f848fcef91fc6b571e0e8f6e835ce upstream.
|
||||
|
||||
Changed strict_strtoul() to kstrtou() in pod_set_channel() to take changes in
|
||||
pod_send_channel() into account.
|
||||
|
||||
Signed-off-by: Johannes Thumshirn <morbidrsa@googlemail.com>
|
||||
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
||||
---
|
||||
drivers/staging/line6/pod.c | 4 ++--
|
||||
1 file changed, 2 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/drivers/staging/line6/pod.c b/drivers/staging/line6/pod.c
|
||||
index 4c81914..2a85ec3 100644
|
||||
--- a/drivers/staging/line6/pod.c
|
||||
+++ b/drivers/staging/line6/pod.c
|
||||
@@ -560,10 +560,10 @@ static ssize_t pod_set_channel(struct device *dev,
|
||||
{
|
||||
struct usb_interface *interface = to_usb_interface(dev);
|
||||
struct usb_line6_pod *pod = usb_get_intfdata(interface);
|
||||
- unsigned long value;
|
||||
+ u8 value;
|
||||
int ret;
|
||||
|
||||
- ret = strict_strtoul(buf, 10, &value);
|
||||
+ ret = kstrtou8(buf, 10, &value);
|
||||
if (ret)
|
||||
return ret;
|
||||
|
|
@ -0,0 +1,33 @@
|
|||
From: Johannes Thumshirn <morbidrsa@googlemail.com>
|
||||
Date: Wed, 27 Jun 2012 21:26:03 +0200
|
||||
Subject: [039/106] staging: line6: Changed strict_strtoul() to kstrtou8() in
|
||||
pod_set_midi_postprocess()
|
||||
|
||||
commit 06501787d843608c83864cc241f4fd464ce385ca upstream.
|
||||
|
||||
Changed a call to strict_strtoul() into kstrtou8() in
|
||||
pod_set_midi_postprocess().
|
||||
|
||||
Signed-off-by: Johannes Thumshirn <morbidrsa@googlemail.com>
|
||||
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
||||
---
|
||||
drivers/staging/line6/pod.c | 4 ++--
|
||||
1 file changed, 2 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/drivers/staging/line6/pod.c b/drivers/staging/line6/pod.c
|
||||
index 2a85ec3..9edd053 100644
|
||||
--- a/drivers/staging/line6/pod.c
|
||||
+++ b/drivers/staging/line6/pod.c
|
||||
@@ -892,10 +892,10 @@ static ssize_t pod_set_midi_postprocess(struct device *dev,
|
||||
{
|
||||
struct usb_interface *interface = to_usb_interface(dev);
|
||||
struct usb_line6_pod *pod = usb_get_intfdata(interface);
|
||||
- unsigned long value;
|
||||
+ u8 value;
|
||||
int ret;
|
||||
|
||||
- ret = strict_strtoul(buf, 10, &value);
|
||||
+ ret = kstrtou8(buf, 10, &value);
|
||||
if (ret)
|
||||
return ret;
|
||||
|
|
@ -0,0 +1,34 @@
|
|||
From: Johannes Thumshirn <morbidrsa@googlemail.com>
|
||||
Date: Mon, 6 Aug 2012 14:08:50 +0200
|
||||
Subject: [040/106] staging: line6: pcm.c: Changed simple_strtoul to kstrtoint
|
||||
|
||||
commit cdf5e55124e4804fc0027df7e89567a3f5eed8bf upstream.
|
||||
|
||||
Changed call to simple_strtoul to kstrtoint in pcm_set_impulse_volume(...)
|
||||
|
||||
Signed-off-by: Johannes Thumshirn <morbidrsa@googlemail.com>
|
||||
Reviewed-by: Stefan Hajnoczi <stefanha@gmail.com>
|
||||
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
||||
---
|
||||
drivers/staging/line6/pcm.c | 8 +++++++-
|
||||
1 file changed, 7 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/drivers/staging/line6/pcm.c b/drivers/staging/line6/pcm.c
|
||||
index 5e319e3..7fe44a6 100644
|
||||
--- a/drivers/staging/line6/pcm.c
|
||||
+++ b/drivers/staging/line6/pcm.c
|
||||
@@ -48,7 +48,13 @@ static ssize_t pcm_set_impulse_volume(struct device *dev,
|
||||
const char *buf, size_t count)
|
||||
{
|
||||
struct snd_line6_pcm *line6pcm = dev2pcm(dev);
|
||||
- int value = simple_strtoul(buf, NULL, 10);
|
||||
+ int value;
|
||||
+ int rv;
|
||||
+
|
||||
+ rv = kstrtoint(buf, 10, &value);
|
||||
+ if (rv < 0)
|
||||
+ return rv;
|
||||
+
|
||||
line6pcm->impulse_volume = value;
|
||||
|
||||
if (value > 0)
|
|
@ -0,0 +1,46 @@
|
|||
From: Johannes Thumshirn <morbidrsa@googlemail.com>
|
||||
Date: Tue, 14 Aug 2012 20:22:48 +0200
|
||||
Subject: [041/106] staging: line6: variax.c: Eliminated remaining
|
||||
strict_stroul()s
|
||||
|
||||
commit 9291975d6647794710553630c2613b5658c81d3f upstream.
|
||||
|
||||
Eliminated remaining calls to strict_stroul() and replaced them with
|
||||
strict_kstrtou8().
|
||||
|
||||
Signed-off-by: Johannes Thumshirn <morbidrsa@googlemail.com>
|
||||
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
||||
---
|
||||
drivers/staging/line6/variax.c | 8 ++++----
|
||||
1 file changed, 4 insertions(+), 4 deletions(-)
|
||||
|
||||
diff --git a/drivers/staging/line6/variax.c b/drivers/staging/line6/variax.c
|
||||
index bb99ee4..f97416b 100644
|
||||
--- a/drivers/staging/line6/variax.c
|
||||
+++ b/drivers/staging/line6/variax.c
|
||||
@@ -353,10 +353,10 @@ static ssize_t variax_set_model(struct device *dev,
|
||||
{
|
||||
struct usb_line6_variax *variax =
|
||||
usb_get_intfdata(to_usb_interface(dev));
|
||||
- unsigned long value;
|
||||
+ u8 value;
|
||||
int ret;
|
||||
|
||||
- ret = strict_strtoul(buf, 10, &value);
|
||||
+ ret = kstrtou8(buf, 10, &value);
|
||||
if (ret)
|
||||
return ret;
|
||||
|
||||
@@ -387,10 +387,10 @@ static ssize_t variax_set_active(struct device *dev,
|
||||
{
|
||||
struct usb_line6_variax *variax =
|
||||
usb_get_intfdata(to_usb_interface(dev));
|
||||
- unsigned long value;
|
||||
+ u8 value;
|
||||
int ret;
|
||||
|
||||
- ret = strict_strtoul(buf, 10, &value);
|
||||
+ ret = kstrtou8(buf, 10, &value);
|
||||
if (ret)
|
||||
return ret;
|
||||
|
102
debian/patches/features/all/line6/0042-staging-line6-drop-unused-line6_devices-array.patch
vendored
Normal file
102
debian/patches/features/all/line6/0042-staging-line6-drop-unused-line6_devices-array.patch
vendored
Normal file
|
@ -0,0 +1,102 @@
|
|||
From: Stefan Hajnoczi <stefanha@redhat.com>
|
||||
Date: Mon, 15 Oct 2012 20:26:46 +0200
|
||||
Subject: [042/106] staging: line6: drop unused line6_devices[] array
|
||||
|
||||
commit b430b3dbdb74e86ee7da7a335cbca2c630167528 upstream.
|
||||
|
||||
There is no reason to limit the number of line6 devices. Drop the
|
||||
static array.
|
||||
|
||||
Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
|
||||
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
||||
---
|
||||
drivers/staging/line6/driver.c | 20 +-------------------
|
||||
drivers/staging/line6/driver.h | 2 --
|
||||
2 files changed, 1 insertion(+), 21 deletions(-)
|
||||
|
||||
diff --git a/drivers/staging/line6/driver.c b/drivers/staging/line6/driver.c
|
||||
index b8358ca..ac11a3b 100644
|
||||
--- a/drivers/staging/line6/driver.c
|
||||
+++ b/drivers/staging/line6/driver.c
|
||||
@@ -96,8 +96,6 @@ static const char line6_request_version[] = {
|
||||
0xf0, 0x7e, 0x7f, 0x06, 0x01, 0xf7
|
||||
};
|
||||
|
||||
-struct usb_line6 *line6_devices[LINE6_MAX_DEVICES];
|
||||
-
|
||||
/**
|
||||
Class for asynchronous messages.
|
||||
*/
|
||||
@@ -740,7 +738,6 @@ static int line6_probe(struct usb_interface *interface,
|
||||
struct usb_device *usbdev;
|
||||
struct usb_line6 *line6;
|
||||
const struct line6_properties *properties;
|
||||
- int devnum;
|
||||
int interface_number, alternate = 0;
|
||||
int product;
|
||||
int size = 0;
|
||||
@@ -774,16 +771,6 @@ static int line6_probe(struct usb_interface *interface,
|
||||
goto err_put;
|
||||
}
|
||||
|
||||
- /* find free slot in device table: */
|
||||
- for (devnum = 0; devnum < LINE6_MAX_DEVICES; ++devnum)
|
||||
- if (line6_devices[devnum] == NULL)
|
||||
- break;
|
||||
-
|
||||
- if (devnum == LINE6_MAX_DEVICES) {
|
||||
- ret = -ENODEV;
|
||||
- goto err_put;
|
||||
- }
|
||||
-
|
||||
/* initialize device info: */
|
||||
properties = &line6_properties_table[devtype];
|
||||
dev_info(&interface->dev, "Line6 %s found\n", properties->name);
|
||||
@@ -1112,7 +1099,6 @@ static int line6_probe(struct usb_interface *interface,
|
||||
|
||||
dev_info(&interface->dev, "Line6 %s now attached\n",
|
||||
line6->properties->name);
|
||||
- line6_devices[devnum] = line6;
|
||||
|
||||
switch (product) {
|
||||
case LINE6_DEVID_PODX3:
|
||||
@@ -1141,7 +1127,7 @@ static void line6_disconnect(struct usb_interface *interface)
|
||||
{
|
||||
struct usb_line6 *line6;
|
||||
struct usb_device *usbdev;
|
||||
- int interface_number, i;
|
||||
+ int interface_number;
|
||||
|
||||
if (interface == NULL)
|
||||
return;
|
||||
@@ -1214,10 +1200,6 @@ static void line6_disconnect(struct usb_interface *interface)
|
||||
|
||||
dev_info(&interface->dev, "Line6 %s now disconnected\n",
|
||||
line6->properties->name);
|
||||
-
|
||||
- for (i = LINE6_MAX_DEVICES; i--;)
|
||||
- if (line6_devices[i] == line6)
|
||||
- line6_devices[i] = NULL;
|
||||
}
|
||||
|
||||
line6_destruct(interface);
|
||||
diff --git a/drivers/staging/line6/driver.h b/drivers/staging/line6/driver.h
|
||||
index a3029eb..35246cf 100644
|
||||
--- a/drivers/staging/line6/driver.h
|
||||
+++ b/drivers/staging/line6/driver.h
|
||||
@@ -25,7 +25,6 @@
|
||||
#endif
|
||||
|
||||
#define LINE6_TIMEOUT 1
|
||||
-#define LINE6_MAX_DEVICES 8
|
||||
#define LINE6_BUFSIZE_LISTEN 32
|
||||
#define LINE6_MESSAGE_MAXLEN 256
|
||||
|
||||
@@ -78,7 +77,6 @@ do { \
|
||||
} while (0)
|
||||
|
||||
extern const unsigned char line6_midi_id[3];
|
||||
-extern struct usb_line6 *line6_devices[LINE6_MAX_DEVICES];
|
||||
|
||||
static const int SYSEX_DATA_OFS = sizeof(line6_midi_id) + 3;
|
||||
static const int SYSEX_EXTRA_SIZE = sizeof(line6_midi_id) + 4;
|
|
@ -0,0 +1,44 @@
|
|||
From: Stefan Hajnoczi <stefanha@redhat.com>
|
||||
Date: Mon, 15 Oct 2012 20:52:27 +0200
|
||||
Subject: [043/106] staging: line6: drop unused line6_index and line6_id
|
||||
arrays
|
||||
|
||||
commit 54cd1e42f31040c74694a3b2de83cd2cbb2fff55 upstream.
|
||||
|
||||
The line6 driver does not support 'index' and 'id' module parameters so
|
||||
there is no need to keep arrays for these values. Do what other sound
|
||||
drivers do and use the scalar constants instead of dummy arrays.
|
||||
|
||||
Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
|
||||
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
||||
---
|
||||
drivers/staging/line6/audio.c | 8 ++------
|
||||
1 file changed, 2 insertions(+), 6 deletions(-)
|
||||
|
||||
diff --git a/drivers/staging/line6/audio.c b/drivers/staging/line6/audio.c
|
||||
index 8e73983..a92e21f 100644
|
||||
--- a/drivers/staging/line6/audio.c
|
||||
+++ b/drivers/staging/line6/audio.c
|
||||
@@ -16,20 +16,16 @@
|
||||
#include "driver.h"
|
||||
#include "audio.h"
|
||||
|
||||
-static int line6_index[SNDRV_CARDS] = SNDRV_DEFAULT_IDX;
|
||||
-static char *line6_id[SNDRV_CARDS] = SNDRV_DEFAULT_STR;
|
||||
-
|
||||
/*
|
||||
Initialize the Line6 USB audio system.
|
||||
*/
|
||||
int line6_init_audio(struct usb_line6 *line6)
|
||||
{
|
||||
- static int dev;
|
||||
struct snd_card *card;
|
||||
int err;
|
||||
|
||||
- err = snd_card_create(line6_index[dev], line6_id[dev], THIS_MODULE, 0,
|
||||
- &card);
|
||||
+ err = snd_card_create(SNDRV_DEFAULT_IDX1, SNDRV_DEFAULT_STR1,
|
||||
+ THIS_MODULE, 0, &card);
|
||||
if (err < 0)
|
||||
return err;
|
||||
|
57
debian/patches/features/all/line6/0044-staging-line6-wrap-80-char-lines-in-capture.c.patch
vendored
Normal file
57
debian/patches/features/all/line6/0044-staging-line6-wrap-80-char-lines-in-capture.c.patch
vendored
Normal file
|
@ -0,0 +1,57 @@
|
|||
From: Stefan Hajnoczi <stefanha@gmail.com>
|
||||
Date: Sun, 11 Nov 2012 13:24:39 +0100
|
||||
Subject: [044/106] staging: line6: wrap >80 char lines in capture.c
|
||||
|
||||
commit a71cac2a4c502b2ef6715b1576681834f9dbe693 upstream.
|
||||
|
||||
Signed-off-by: Stefan Hajnoczi <stefanha@gmail.com>
|
||||
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
||||
---
|
||||
drivers/staging/line6/capture.c | 13 ++++++++-----
|
||||
1 file changed, 8 insertions(+), 5 deletions(-)
|
||||
|
||||
diff --git a/drivers/staging/line6/capture.c b/drivers/staging/line6/capture.c
|
||||
index c85c5b6..389c41f 100644
|
||||
--- a/drivers/staging/line6/capture.c
|
||||
+++ b/drivers/staging/line6/capture.c
|
||||
@@ -256,8 +256,8 @@ static void audio_in_callback(struct urb *urb)
|
||||
#ifdef CONFIG_LINE6_USB_IMPULSE_RESPONSE
|
||||
if (!(line6pcm->flags & LINE6_BITS_PCM_IMPULSE))
|
||||
#endif
|
||||
- if (test_bit(LINE6_INDEX_PCM_ALSA_CAPTURE_STREAM, &line6pcm->flags)
|
||||
- && (fsize > 0))
|
||||
+ if (test_bit(LINE6_INDEX_PCM_ALSA_CAPTURE_STREAM,
|
||||
+ &line6pcm->flags) && (fsize > 0))
|
||||
line6_capture_copy(line6pcm, fbuf, fsize);
|
||||
}
|
||||
|
||||
@@ -274,7 +274,8 @@ static void audio_in_callback(struct urb *urb)
|
||||
#ifdef CONFIG_LINE6_USB_IMPULSE_RESPONSE
|
||||
if (!(line6pcm->flags & LINE6_BITS_PCM_IMPULSE))
|
||||
#endif
|
||||
- if (test_bit(LINE6_INDEX_PCM_ALSA_CAPTURE_STREAM, &line6pcm->flags))
|
||||
+ if (test_bit(LINE6_INDEX_PCM_ALSA_CAPTURE_STREAM,
|
||||
+ &line6pcm->flags))
|
||||
line6_capture_check_period(line6pcm, length);
|
||||
}
|
||||
}
|
||||
@@ -356,7 +357,8 @@ int snd_line6_capture_trigger(struct snd_line6_pcm *line6pcm, int cmd)
|
||||
#ifdef CONFIG_PM
|
||||
case SNDRV_PCM_TRIGGER_RESUME:
|
||||
#endif
|
||||
- err = line6_pcm_acquire(line6pcm, LINE6_BIT_PCM_ALSA_CAPTURE_STREAM);
|
||||
+ err = line6_pcm_acquire(line6pcm,
|
||||
+ LINE6_BIT_PCM_ALSA_CAPTURE_STREAM);
|
||||
|
||||
if (err < 0)
|
||||
return err;
|
||||
@@ -367,7 +369,8 @@ int snd_line6_capture_trigger(struct snd_line6_pcm *line6pcm, int cmd)
|
||||
#ifdef CONFIG_PM
|
||||
case SNDRV_PCM_TRIGGER_SUSPEND:
|
||||
#endif
|
||||
- err = line6_pcm_release(line6pcm, LINE6_BIT_PCM_ALSA_CAPTURE_STREAM);
|
||||
+ err = line6_pcm_release(line6pcm,
|
||||
+ LINE6_BIT_PCM_ALSA_CAPTURE_STREAM);
|
||||
|
||||
if (err < 0)
|
||||
return err;
|
|
@ -0,0 +1,35 @@
|
|||
From: Stefan Hajnoczi <stefanha@gmail.com>
|
||||
Date: Sun, 11 Nov 2012 13:24:40 +0100
|
||||
Subject: [045/106] staging: line6: fix quoted string across lines in
|
||||
midibuf.c
|
||||
|
||||
commit b3a24fc4e2ded4f28d5f4c69ea01fea721608658 upstream.
|
||||
|
||||
Checkpatch warns when quoted strings are split across lines. The
|
||||
rationale is that quoted strings should be left on a single line so that
|
||||
grep works. (The 80 character line limit does not apply to quoted
|
||||
strings.)
|
||||
|
||||
Signed-off-by: Stefan Hajnoczi <stefanha@gmail.com>
|
||||
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
||||
---
|
||||
drivers/staging/line6/midibuf.c | 6 +++---
|
||||
1 file changed, 3 insertions(+), 3 deletions(-)
|
||||
|
||||
diff --git a/drivers/staging/line6/midibuf.c b/drivers/staging/line6/midibuf.c
|
||||
index 836e8c8..968e0de 100644
|
||||
--- a/drivers/staging/line6/midibuf.c
|
||||
+++ b/drivers/staging/line6/midibuf.c
|
||||
@@ -64,9 +64,9 @@ int line6_midibuf_init(struct MidiBuffer *this, int size, int split)
|
||||
|
||||
void line6_midibuf_status(struct MidiBuffer *this)
|
||||
{
|
||||
- pr_debug("midibuf size=%d split=%d pos_read=%d pos_write=%d "
|
||||
- "full=%d command_prev=%02x\n", this->size, this->split,
|
||||
- this->pos_read, this->pos_write, this->full, this->command_prev);
|
||||
+ pr_debug("midibuf size=%d split=%d pos_read=%d pos_write=%d full=%d command_prev=%02x\n",
|
||||
+ this->size, this->split, this->pos_read, this->pos_write,
|
||||
+ this->full, this->command_prev);
|
||||
}
|
||||
|
||||
int line6_midibuf_bytes_free(struct MidiBuffer *this)
|
|
@ -0,0 +1,34 @@
|
|||
From: Stefan Hajnoczi <stefanha@gmail.com>
|
||||
Date: Sun, 11 Nov 2012 13:24:41 +0100
|
||||
Subject: [046/106] staging: line6: shorten comment below 80 chars in pcm.c
|
||||
|
||||
commit 928f25ee4393a94d80ab829427e1047a64702187 upstream.
|
||||
|
||||
Signed-off-by: Stefan Hajnoczi <stefanha@gmail.com>
|
||||
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
||||
---
|
||||
drivers/staging/line6/pcm.c | 4 ++--
|
||||
1 file changed, 2 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/drivers/staging/line6/pcm.c b/drivers/staging/line6/pcm.c
|
||||
index 7fe44a6..6c1e313 100644
|
||||
--- a/drivers/staging/line6/pcm.c
|
||||
+++ b/drivers/staging/line6/pcm.c
|
||||
@@ -109,7 +109,7 @@ int line6_pcm_acquire(struct snd_line6_pcm *line6pcm, int channels)
|
||||
line6pcm->prev_fbuf = NULL;
|
||||
|
||||
if (test_flags(flags_old, flags_new, LINE6_BITS_CAPTURE_BUFFER)) {
|
||||
- /* We may be invoked multiple times in a row so allocate once only */
|
||||
+ /* Invoked multiple times in a row so allocate once only */
|
||||
if (!line6pcm->buffer_in) {
|
||||
line6pcm->buffer_in =
|
||||
kmalloc(LINE6_ISO_BUFFERS * LINE6_ISO_PACKETS *
|
||||
@@ -148,7 +148,7 @@ int line6_pcm_acquire(struct snd_line6_pcm *line6pcm, int channels)
|
||||
}
|
||||
|
||||
if (test_flags(flags_old, flags_new, LINE6_BITS_PLAYBACK_BUFFER)) {
|
||||
- /* We may be invoked multiple times in a row so allocate once only */
|
||||
+ /* Invoked multiple times in a row so allocate once only */
|
||||
if (!line6pcm->buffer_out) {
|
||||
line6pcm->buffer_out =
|
||||
kmalloc(LINE6_ISO_BUFFERS * LINE6_ISO_PACKETS *
|
25
debian/patches/features/all/line6/0047-staging-line6-drop-trailing-whitespace-in-pcm.h.patch
vendored
Normal file
25
debian/patches/features/all/line6/0047-staging-line6-drop-trailing-whitespace-in-pcm.h.patch
vendored
Normal file
|
@ -0,0 +1,25 @@
|
|||
From: Stefan Hajnoczi <stefanha@gmail.com>
|
||||
Date: Sun, 11 Nov 2012 13:24:42 +0100
|
||||
Subject: [047/106] staging: line6: drop trailing whitespace in pcm.h
|
||||
|
||||
commit b957e0ceb667fe4f2a18275b5187b2813b983baf upstream.
|
||||
|
||||
Signed-off-by: Stefan Hajnoczi <stefanha@gmail.com>
|
||||
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
||||
---
|
||||
drivers/staging/line6/pcm.h | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/drivers/staging/line6/pcm.h b/drivers/staging/line6/pcm.h
|
||||
index 5210ec8..6aa0d46 100644
|
||||
--- a/drivers/staging/line6/pcm.h
|
||||
+++ b/drivers/staging/line6/pcm.h
|
||||
@@ -167,7 +167,7 @@ enum {
|
||||
#endif
|
||||
LINE6_BIT_PCM_ALSA_CAPTURE_STREAM |
|
||||
LINE6_BIT_PCM_MONITOR_CAPTURE_STREAM,
|
||||
-
|
||||
+
|
||||
LINE6_BITS_STREAM =
|
||||
LINE6_BITS_PLAYBACK_STREAM |
|
||||
LINE6_BITS_CAPTURE_STREAM
|
80
debian/patches/features/all/line6/0048-staging-line6-wrap-lines-to-80-chars-in-playback.c.patch
vendored
Normal file
80
debian/patches/features/all/line6/0048-staging-line6-wrap-lines-to-80-chars-in-playback.c.patch
vendored
Normal file
|
@ -0,0 +1,80 @@
|
|||
From: Stefan Hajnoczi <stefanha@gmail.com>
|
||||
Date: Sun, 11 Nov 2012 13:24:43 +0100
|
||||
Subject: [048/106] staging: line6: wrap lines to 80 chars in playback.c
|
||||
|
||||
commit 6a8ec8769d4613a5fbd981bfb3e5925b29d4140d upstream.
|
||||
|
||||
There are a few instances of 80+ character lines in playback.c. Two
|
||||
instances are just because of a useless comment "this is somewhat
|
||||
paranoid", so drop the comment. Other instances are straightforward
|
||||
line wrapping.
|
||||
|
||||
Signed-off-by: Stefan Hajnoczi <stefanha@gmail.com>
|
||||
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
||||
---
|
||||
drivers/staging/line6/playback.c | 17 +++++++++++------
|
||||
1 file changed, 11 insertions(+), 6 deletions(-)
|
||||
|
||||
diff --git a/drivers/staging/line6/playback.c b/drivers/staging/line6/playback.c
|
||||
index a0ab9d0..4cf23af 100644
|
||||
--- a/drivers/staging/line6/playback.c
|
||||
+++ b/drivers/staging/line6/playback.c
|
||||
@@ -185,7 +185,7 @@ static int submit_audio_out_urb(struct snd_line6_pcm *line6pcm)
|
||||
if (urb_size == 0) {
|
||||
/* can't determine URB size */
|
||||
spin_unlock_irqrestore(&line6pcm->lock_audio_out, flags);
|
||||
- dev_err(line6pcm->line6->ifcdev, "driver bug: urb_size = 0\n"); /* this is somewhat paranoid */
|
||||
+ dev_err(line6pcm->line6->ifcdev, "driver bug: urb_size = 0\n");
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
@@ -218,7 +218,8 @@ static int submit_audio_out_urb(struct snd_line6_pcm *line6pcm)
|
||||
len * bytes_per_frame, runtime->dma_area,
|
||||
(urb_frames - len) * bytes_per_frame);
|
||||
} else
|
||||
- dev_err(line6pcm->line6->ifcdev, "driver bug: len = %d\n", len); /* this is somewhat paranoid */
|
||||
+ dev_err(line6pcm->line6->ifcdev, "driver bug: len = %d\n",
|
||||
+ len);
|
||||
} else {
|
||||
memcpy(urb_out->transfer_buffer,
|
||||
runtime->dma_area +
|
||||
@@ -319,7 +320,8 @@ void line6_unlink_audio_out_urbs(struct snd_line6_pcm *line6pcm)
|
||||
}
|
||||
|
||||
/*
|
||||
- Wait until unlinking of all currently active playback URBs has been finished.
|
||||
+ Wait until unlinking of all currently active playback URBs has been
|
||||
+ finished.
|
||||
*/
|
||||
void line6_wait_clear_audio_out_urbs(struct snd_line6_pcm *line6pcm)
|
||||
{
|
||||
@@ -413,7 +415,8 @@ static void audio_out_callback(struct urb *urb)
|
||||
if (!shutdown) {
|
||||
submit_audio_out_urb(line6pcm);
|
||||
|
||||
- if (test_bit(LINE6_INDEX_PCM_ALSA_PLAYBACK_STREAM, &line6pcm->flags)) {
|
||||
+ if (test_bit(LINE6_INDEX_PCM_ALSA_PLAYBACK_STREAM,
|
||||
+ &line6pcm->flags)) {
|
||||
line6pcm->bytes_out += length;
|
||||
if (line6pcm->bytes_out >= line6pcm->period_out) {
|
||||
line6pcm->bytes_out %= line6pcm->period_out;
|
||||
@@ -499,7 +502,8 @@ int snd_line6_playback_trigger(struct snd_line6_pcm *line6pcm, int cmd)
|
||||
#ifdef CONFIG_PM
|
||||
case SNDRV_PCM_TRIGGER_RESUME:
|
||||
#endif
|
||||
- err = line6_pcm_acquire(line6pcm, LINE6_BIT_PCM_ALSA_PLAYBACK_STREAM);
|
||||
+ err = line6_pcm_acquire(line6pcm,
|
||||
+ LINE6_BIT_PCM_ALSA_PLAYBACK_STREAM);
|
||||
|
||||
if (err < 0)
|
||||
return err;
|
||||
@@ -510,7 +514,8 @@ int snd_line6_playback_trigger(struct snd_line6_pcm *line6pcm, int cmd)
|
||||
#ifdef CONFIG_PM
|
||||
case SNDRV_PCM_TRIGGER_SUSPEND:
|
||||
#endif
|
||||
- err = line6_pcm_release(line6pcm, LINE6_BIT_PCM_ALSA_PLAYBACK_STREAM);
|
||||
+ err = line6_pcm_release(line6pcm,
|
||||
+ LINE6_BIT_PCM_ALSA_PLAYBACK_STREAM);
|
||||
|
||||
if (err < 0)
|
||||
return err;
|
|
@ -0,0 +1,52 @@
|
|||
From: Stefan Hajnoczi <stefanha@gmail.com>
|
||||
Date: Sun, 11 Nov 2012 13:24:44 +0100
|
||||
Subject: [049/106] staging: line6: replace deprecated strict_strtol() in
|
||||
toneport.c
|
||||
|
||||
commit b07d945227e4e62d93e26c694bf0e7b70978a7d6 upstream.
|
||||
|
||||
The LED value is an int, so replace strict_strtol() with kstrtoint().
|
||||
It's safe to pass in the actual variable instead of a local temporary
|
||||
because strto*() doesn't write to the result unless the function returns
|
||||
success.
|
||||
|
||||
Signed-off-by: Stefan Hajnoczi <stefanha@gmail.com>
|
||||
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
||||
---
|
||||
drivers/staging/line6/toneport.c | 8 ++------
|
||||
1 file changed, 2 insertions(+), 6 deletions(-)
|
||||
|
||||
diff --git a/drivers/staging/line6/toneport.c b/drivers/staging/line6/toneport.c
|
||||
index 31b624b..a529dd3 100644
|
||||
--- a/drivers/staging/line6/toneport.c
|
||||
+++ b/drivers/staging/line6/toneport.c
|
||||
@@ -127,13 +127,11 @@ static ssize_t toneport_set_led_red(struct device *dev,
|
||||
const char *buf, size_t count)
|
||||
{
|
||||
int retval;
|
||||
- long value;
|
||||
|
||||
- retval = strict_strtol(buf, 10, &value);
|
||||
+ retval = kstrtoint(buf, 10, &led_red);
|
||||
if (retval)
|
||||
return retval;
|
||||
|
||||
- led_red = value;
|
||||
toneport_update_led(dev);
|
||||
return count;
|
||||
}
|
||||
@@ -143,13 +141,11 @@ static ssize_t toneport_set_led_green(struct device *dev,
|
||||
const char *buf, size_t count)
|
||||
{
|
||||
int retval;
|
||||
- long value;
|
||||
|
||||
- retval = strict_strtol(buf, 10, &value);
|
||||
+ retval = kstrtoint(buf, 10, &led_green);
|
||||
if (retval)
|
||||
return retval;
|
||||
|
||||
- led_green = value;
|
||||
toneport_update_led(dev);
|
||||
return count;
|
||||
}
|
35
debian/patches/features/all/line6/0050-staging-line6-wrap-lines-to-80-chars-in-usbdefs.h.patch
vendored
Normal file
35
debian/patches/features/all/line6/0050-staging-line6-wrap-lines-to-80-chars-in-usbdefs.h.patch
vendored
Normal file
|
@ -0,0 +1,35 @@
|
|||
From: Stefan Hajnoczi <stefanha@gmail.com>
|
||||
Date: Sun, 11 Nov 2012 13:24:45 +0100
|
||||
Subject: [050/106] staging: line6: wrap lines to 80 chars in usbdefs.h
|
||||
|
||||
commit 4391bb982b9d0ccbae724dd8f8d95c1ddb725ae3 upstream.
|
||||
|
||||
Signed-off-by: Stefan Hajnoczi <stefanha@gmail.com>
|
||||
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
||||
---
|
||||
drivers/staging/line6/usbdefs.h | 10 +++++++---
|
||||
1 file changed, 7 insertions(+), 3 deletions(-)
|
||||
|
||||
diff --git a/drivers/staging/line6/usbdefs.h b/drivers/staging/line6/usbdefs.h
|
||||
index 353d59d..43eb540 100644
|
||||
--- a/drivers/staging/line6/usbdefs.h
|
||||
+++ b/drivers/staging/line6/usbdefs.h
|
||||
@@ -83,11 +83,15 @@ enum {
|
||||
LINE6_BIT(VARIAX),
|
||||
|
||||
LINE6_BITS_PRO = LINE6_BIT_BASSPODXTPRO | LINE6_BIT_PODXTPRO,
|
||||
- LINE6_BITS_LIVE = LINE6_BIT_BASSPODXTLIVE | LINE6_BIT_PODXTLIVE | LINE6_BIT_PODX3LIVE,
|
||||
- LINE6_BITS_PODXTALL = LINE6_BIT_PODXT | LINE6_BIT_PODXTLIVE | LINE6_BIT_PODXTPRO,
|
||||
+ LINE6_BITS_LIVE = LINE6_BIT_BASSPODXTLIVE | LINE6_BIT_PODXTLIVE |
|
||||
+ LINE6_BIT_PODX3LIVE,
|
||||
+ LINE6_BITS_PODXTALL = LINE6_BIT_PODXT | LINE6_BIT_PODXTLIVE |
|
||||
+ LINE6_BIT_PODXTPRO,
|
||||
LINE6_BITS_PODX3ALL = LINE6_BIT_PODX3 | LINE6_BIT_PODX3LIVE,
|
||||
LINE6_BITS_PODHDALL = LINE6_BIT_PODHD300 | LINE6_BIT_PODHD500,
|
||||
- LINE6_BITS_BASSPODXTALL = LINE6_BIT_BASSPODXT | LINE6_BIT_BASSPODXTLIVE | LINE6_BIT_BASSPODXTPRO
|
||||
+ LINE6_BITS_BASSPODXTALL = LINE6_BIT_BASSPODXT |
|
||||
+ LINE6_BIT_BASSPODXTLIVE |
|
||||
+ LINE6_BIT_BASSPODXTPRO
|
||||
};
|
||||
|
||||
/* device supports settings parameter via USB */
|
27
debian/patches/features/all/line6/0051-staging-line6-wrap-comment-to-80-chars-in-variax.c.patch
vendored
Normal file
27
debian/patches/features/all/line6/0051-staging-line6-wrap-comment-to-80-chars-in-variax.c.patch
vendored
Normal file
|
@ -0,0 +1,27 @@
|
|||
From: Stefan Hajnoczi <stefanha@gmail.com>
|
||||
Date: Sun, 11 Nov 2012 13:24:46 +0100
|
||||
Subject: [051/106] staging: line6: wrap comment to 80 chars in variax.c
|
||||
|
||||
commit e5603cbd7f6b8d8ec6a59d3ce11c3fa28ef2a733 upstream.
|
||||
|
||||
Signed-off-by: Stefan Hajnoczi <stefanha@gmail.com>
|
||||
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
||||
---
|
||||
drivers/staging/line6/variax.c | 4 +++-
|
||||
1 file changed, 3 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/drivers/staging/line6/variax.c b/drivers/staging/line6/variax.c
|
||||
index f97416b..1b85ecc 100644
|
||||
--- a/drivers/staging/line6/variax.c
|
||||
+++ b/drivers/staging/line6/variax.c
|
||||
@@ -160,7 +160,9 @@ static void variax_startup5(unsigned long data)
|
||||
/* current model dump: */
|
||||
line6_dump_request_async(&variax->dumpreq, &variax->line6, 0,
|
||||
VARIAX_DUMP_PASS1);
|
||||
- /* passes 2 and 3 are performed implicitly before entering variax_startup6 */
|
||||
+ /* passes 2 and 3 are performed implicitly before entering
|
||||
+ * variax_startup6.
|
||||
+ */
|
||||
}
|
||||
|
||||
static void variax_startup6(struct usb_line6_variax *variax)
|
174
debian/patches/features/all/line6/0052-staging-line6-replace-DEBUG_MESSAGES-with-dev_dbg.patch
vendored
Normal file
174
debian/patches/features/all/line6/0052-staging-line6-replace-DEBUG_MESSAGES-with-dev_dbg.patch
vendored
Normal file
|
@ -0,0 +1,174 @@
|
|||
From: Stefan Hajnoczi <stefanha@gmail.com>
|
||||
Date: Sun, 11 Nov 2012 13:52:24 +0100
|
||||
Subject: [052/106] staging: line6: replace DEBUG_MESSAGES() with dev_dbg()
|
||||
|
||||
commit e00d33cb5de0c68ed95513d3b4f42f9e3697f8ee upstream.
|
||||
|
||||
The dyndbg feature allows dev_dbg() calls to be enabled/disabled at
|
||||
runtime and is therefore more convenient than static debug log messages.
|
||||
Use dev_dbg() instead of the line6-specific DEBUG_MESSAGES() macro.
|
||||
|
||||
Signed-off-by: Stefan Hajnoczi <stefanha@gmail.com>
|
||||
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
||||
---
|
||||
drivers/staging/line6/driver.c | 6 ++---
|
||||
drivers/staging/line6/pod.c | 57 +++++++++++++++-------------------------
|
||||
drivers/staging/line6/variax.c | 12 ++++-----
|
||||
3 files changed, 28 insertions(+), 47 deletions(-)
|
||||
|
||||
diff --git a/drivers/staging/line6/driver.c b/drivers/staging/line6/driver.c
|
||||
index ac11a3b..571f2ce 100644
|
||||
--- a/drivers/staging/line6/driver.c
|
||||
+++ b/drivers/staging/line6/driver.c
|
||||
@@ -412,10 +412,8 @@ static void line6_data_received(struct urb *urb)
|
||||
|
||||
if (done < urb->actual_length) {
|
||||
line6_midibuf_ignore(mb, done);
|
||||
- DEBUG_MESSAGES(dev_err
|
||||
- (line6->ifcdev,
|
||||
- "%d %d buffer overflow - message skipped\n",
|
||||
- done, urb->actual_length));
|
||||
+ dev_dbg(line6->ifcdev, "%d %d buffer overflow - message skipped\n",
|
||||
+ done, urb->actual_length);
|
||||
}
|
||||
|
||||
for (;;) {
|
||||
diff --git a/drivers/staging/line6/pod.c b/drivers/staging/line6/pod.c
|
||||
index 9edd053..4a86f7a 100644
|
||||
--- a/drivers/staging/line6/pod.c
|
||||
+++ b/drivers/staging/line6/pod.c
|
||||
@@ -252,25 +252,19 @@ void line6_pod_process_message(struct usb_line6_pod *pod)
|
||||
break;
|
||||
|
||||
default:
|
||||
- DEBUG_MESSAGES(dev_err
|
||||
- (pod->
|
||||
- line6.ifcdev,
|
||||
- "unknown dump code %02X\n",
|
||||
- pod->
|
||||
- dumpreq.in_progress));
|
||||
+ dev_dbg(pod->line6.ifcdev,
|
||||
+ "unknown dump code %02X\n",
|
||||
+ pod->dumpreq.in_progress);
|
||||
}
|
||||
|
||||
line6_dump_finished(&pod->dumpreq);
|
||||
pod_startup3(pod);
|
||||
} else
|
||||
- DEBUG_MESSAGES(dev_err
|
||||
- (pod->line6.ifcdev,
|
||||
- "wrong size of channel dump message (%d instead of %d)\n",
|
||||
- pod->
|
||||
- line6.message_length,
|
||||
- (int)
|
||||
- sizeof(pod->prog_data) +
|
||||
- 7));
|
||||
+ dev_dbg(pod->line6.ifcdev,
|
||||
+ "wrong size of channel dump message (%d instead of %d)\n",
|
||||
+ pod->line6.message_length,
|
||||
+ (int)sizeof(pod->prog_data) +
|
||||
+ 7);
|
||||
|
||||
break;
|
||||
|
||||
@@ -302,11 +296,9 @@ void line6_pod_process_message(struct usb_line6_pod *pod)
|
||||
#undef PROCESS_SYSTEM_PARAM
|
||||
|
||||
default:
|
||||
- DEBUG_MESSAGES(dev_err
|
||||
- (pod->
|
||||
- line6.ifcdev,
|
||||
- "unknown tuner/system response %02X\n",
|
||||
- buf[6]));
|
||||
+ dev_dbg(pod->line6.ifcdev,
|
||||
+ "unknown tuner/system response %02X\n",
|
||||
+ buf[6]);
|
||||
}
|
||||
|
||||
break;
|
||||
@@ -321,25 +313,21 @@ void line6_pod_process_message(struct usb_line6_pod *pod)
|
||||
break;
|
||||
|
||||
case POD_SYSEX_CLIP:
|
||||
- DEBUG_MESSAGES(dev_err
|
||||
- (pod->line6.ifcdev,
|
||||
- "audio clipped\n"));
|
||||
+ dev_dbg(pod->line6.ifcdev, "audio clipped\n");
|
||||
pod->clipping.value = 1;
|
||||
wake_up(&pod->clipping.wait);
|
||||
break;
|
||||
|
||||
case POD_SYSEX_STORE:
|
||||
- DEBUG_MESSAGES(dev_err
|
||||
- (pod->line6.ifcdev,
|
||||
- "message %02X not yet implemented\n",
|
||||
- buf[5]));
|
||||
+ dev_dbg(pod->line6.ifcdev,
|
||||
+ "message %02X not yet implemented\n",
|
||||
+ buf[5]);
|
||||
break;
|
||||
|
||||
default:
|
||||
- DEBUG_MESSAGES(dev_err
|
||||
- (pod->line6.ifcdev,
|
||||
- "unknown sysex message %02X\n",
|
||||
- buf[5]));
|
||||
+ dev_dbg(pod->line6.ifcdev,
|
||||
+ "unknown sysex message %02X\n",
|
||||
+ buf[5]);
|
||||
}
|
||||
} else
|
||||
if (memcmp
|
||||
@@ -352,9 +340,7 @@ void line6_pod_process_message(struct usb_line6_pod *pod)
|
||||
buf[10];
|
||||
pod_startup4(pod);
|
||||
} else
|
||||
- DEBUG_MESSAGES(dev_err
|
||||
- (pod->line6.ifcdev,
|
||||
- "unknown sysex header\n"));
|
||||
+ dev_dbg(pod->line6.ifcdev, "unknown sysex header\n");
|
||||
|
||||
break;
|
||||
|
||||
@@ -362,9 +348,8 @@ void line6_pod_process_message(struct usb_line6_pod *pod)
|
||||
break;
|
||||
|
||||
default:
|
||||
- DEBUG_MESSAGES(dev_err
|
||||
- (pod->line6.ifcdev,
|
||||
- "POD: unknown message %02X\n", buf[0]));
|
||||
+ dev_dbg(pod->line6.ifcdev, "POD: unknown message %02X\n",
|
||||
+ buf[0]);
|
||||
}
|
||||
}
|
||||
|
||||
diff --git a/drivers/staging/line6/variax.c b/drivers/staging/line6/variax.c
|
||||
index 1b85ecc..8df529f 100644
|
||||
--- a/drivers/staging/line6/variax.c
|
||||
+++ b/drivers/staging/line6/variax.c
|
||||
@@ -262,10 +262,9 @@ void line6_variax_process_message(struct usb_line6_variax *variax)
|
||||
2, VARIAX_DUMP_PASS3);
|
||||
}
|
||||
} else {
|
||||
- DEBUG_MESSAGES(dev_err
|
||||
- (variax->line6.ifcdev,
|
||||
- "illegal length %d of model data\n",
|
||||
- variax->line6.message_length));
|
||||
+ dev_dbg(variax->line6.ifcdev,
|
||||
+ "illegal length %d of model data\n",
|
||||
+ variax->line6.message_length);
|
||||
line6_dump_finished(&variax->dumpreq);
|
||||
}
|
||||
} else if (memcmp(buf + 1, variax_request_bank + 1,
|
||||
@@ -295,9 +294,8 @@ void line6_variax_process_message(struct usb_line6_variax *variax)
|
||||
break;
|
||||
|
||||
default:
|
||||
- DEBUG_MESSAGES(dev_err
|
||||
- (variax->line6.ifcdev,
|
||||
- "Variax: unknown message %02X\n", buf[0]));
|
||||
+ dev_dbg(variax->line6.ifcdev,
|
||||
+ "Variax: unknown message %02X\n", buf[0]);
|
||||
}
|
||||
}
|
||||
|
32
debian/patches/features/all/line6/0053-staging-line6-drop-unused-DEBUG_MESSAGES-macro.patch
vendored
Normal file
32
debian/patches/features/all/line6/0053-staging-line6-drop-unused-DEBUG_MESSAGES-macro.patch
vendored
Normal file
|
@ -0,0 +1,32 @@
|
|||
From: Stefan Hajnoczi <stefanha@gmail.com>
|
||||
Date: Sun, 11 Nov 2012 13:52:25 +0100
|
||||
Subject: [053/106] staging: line6: drop unused DEBUG_MESSAGES() macro
|
||||
|
||||
commit 60fb08b38eb1c9ffdde52817417f4b87f52be7b3 upstream.
|
||||
|
||||
The DEBUG_MESSAGES() macro is no longer needed since dev_dbg() is now
|
||||
used for debug messages.
|
||||
|
||||
Signed-off-by: Stefan Hajnoczi <stefanha@gmail.com>
|
||||
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
||||
---
|
||||
drivers/staging/line6/driver.h | 6 ------
|
||||
1 file changed, 6 deletions(-)
|
||||
|
||||
diff --git a/drivers/staging/line6/driver.h b/drivers/staging/line6/driver.h
|
||||
index 35246cf..9dd8ff4 100644
|
||||
--- a/drivers/staging/line6/driver.h
|
||||
+++ b/drivers/staging/line6/driver.h
|
||||
@@ -52,12 +52,6 @@
|
||||
|
||||
#define LINE6_CHANNEL_MASK 0x0f
|
||||
|
||||
-#ifdef CONFIG_LINE6_USB_DEBUG
|
||||
-#define DEBUG_MESSAGES(x) (x)
|
||||
-#else
|
||||
-#define DEBUG_MESSAGES(x)
|
||||
-#endif
|
||||
-
|
||||
#define MISSING_CASE \
|
||||
printk(KERN_ERR "line6usb driver bug: missing case in %s:%d\n", \
|
||||
__FILE__, __LINE__)
|
35
debian/patches/features/all/line6/0054-staging-line6-drop-unused-CONFIG_LINE6_USB_DEBUG.patch
vendored
Normal file
35
debian/patches/features/all/line6/0054-staging-line6-drop-unused-CONFIG_LINE6_USB_DEBUG.patch
vendored
Normal file
|
@ -0,0 +1,35 @@
|
|||
From: Stefan Hajnoczi <stefanha@gmail.com>
|
||||
Date: Sun, 11 Nov 2012 13:52:26 +0100
|
||||
Subject: [054/106] staging: line6: drop unused CONFIG_LINE6_USB_DEBUG
|
||||
|
||||
commit bf83e30ec654e3a6d79e89ae70d1c9811a2387df upstream.
|
||||
|
||||
The CONFIG_LINE6_USB_DEBUG option is no longer relevant since dyndbg
|
||||
dev_dbg() is now used instead of a compile-time decision whether to
|
||||
enable debug messages or not.
|
||||
|
||||
Signed-off-by: Stefan Hajnoczi <stefanha@gmail.com>
|
||||
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
||||
---
|
||||
drivers/staging/line6/Kconfig | 8 --------
|
||||
1 file changed, 8 deletions(-)
|
||||
|
||||
diff --git a/drivers/staging/line6/Kconfig b/drivers/staging/line6/Kconfig
|
||||
index 43120ff..a5ded12 100644
|
||||
--- a/drivers/staging/line6/Kconfig
|
||||
+++ b/drivers/staging/line6/Kconfig
|
||||
@@ -23,14 +23,6 @@ menuconfig LINE6_USB
|
||||
|
||||
if LINE6_USB
|
||||
|
||||
-config LINE6_USB_DEBUG
|
||||
- bool "print debug messages"
|
||||
- default n
|
||||
- help
|
||||
- Say Y here to write debug messages to the syslog.
|
||||
-
|
||||
- If unsure, say N.
|
||||
-
|
||||
config LINE6_USB_DUMP_CTRL
|
||||
bool "dump control messages"
|
||||
default n
|
117
debian/patches/features/all/line6/0055-staging-line6-drop-control-URB-dumping-code.patch
vendored
Normal file
117
debian/patches/features/all/line6/0055-staging-line6-drop-control-URB-dumping-code.patch
vendored
Normal file
|
@ -0,0 +1,117 @@
|
|||
From: Stefan Hajnoczi <stefanha@gmail.com>
|
||||
Date: Wed, 14 Nov 2012 08:50:41 +0100
|
||||
Subject: [055/106] staging: line6: drop control URB dumping code
|
||||
|
||||
commit 70ce93954f571eb913ee52529fa87fd1a315b2d1 upstream.
|
||||
|
||||
The usbmon feature should be used instead of manually dumping control
|
||||
URBs. There are a few advantages to using usbmon:
|
||||
|
||||
* Can be turned on/off at runtime
|
||||
* Provides full USB-level traffic
|
||||
* tcpdump and wireshark support for powerful analysis
|
||||
* No driver-specific code is required
|
||||
|
||||
Signed-off-by: Stefan Hajnoczi <stefanha@gmail.com>
|
||||
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
||||
---
|
||||
drivers/staging/line6/driver.c | 36 ------------------------------------
|
||||
drivers/staging/line6/midi.c | 3 ---
|
||||
2 files changed, 39 deletions(-)
|
||||
|
||||
diff --git a/drivers/staging/line6/driver.c b/drivers/staging/line6/driver.c
|
||||
index 571f2ce..fda92d1e 100644
|
||||
--- a/drivers/staging/line6/driver.c
|
||||
+++ b/drivers/staging/line6/driver.c
|
||||
@@ -177,22 +177,6 @@ void line6_write_hexdump(struct usb_line6 *line6, char dir,
|
||||
}
|
||||
#endif
|
||||
|
||||
-#ifdef CONFIG_LINE6_USB_DUMP_CTRL
|
||||
-/*
|
||||
- Dump URB data to syslog.
|
||||
-*/
|
||||
-static void line6_dump_urb(struct urb *urb)
|
||||
-{
|
||||
- struct usb_line6 *line6 = (struct usb_line6 *)urb->context;
|
||||
-
|
||||
- if (urb->status < 0)
|
||||
- return;
|
||||
-
|
||||
- line6_write_hexdump(line6, 'R', (unsigned char *)urb->transfer_buffer,
|
||||
- urb->actual_length);
|
||||
-}
|
||||
-#endif
|
||||
-
|
||||
/*
|
||||
Send raw message in pieces of wMaxPacketSize bytes.
|
||||
*/
|
||||
@@ -201,10 +185,6 @@ int line6_send_raw_message(struct usb_line6 *line6, const char *buffer,
|
||||
{
|
||||
int i, done = 0;
|
||||
|
||||
-#ifdef CONFIG_LINE6_USB_DUMP_CTRL
|
||||
- line6_write_hexdump(line6, 'S', buffer, size);
|
||||
-#endif
|
||||
-
|
||||
for (i = 0; i < size; i += line6->max_packet_size) {
|
||||
int partial;
|
||||
const char *frag_buf = buffer + i;
|
||||
@@ -259,10 +239,6 @@ static int line6_send_raw_message_async_part(struct message *msg,
|
||||
(char *)msg->buffer + done, bytes,
|
||||
line6_async_request_sent, msg, line6->interval);
|
||||
|
||||
-#ifdef CONFIG_LINE6_USB_DUMP_CTRL
|
||||
- line6_write_hexdump(line6, 'S', (char *)msg->buffer + done, bytes);
|
||||
-#endif
|
||||
-
|
||||
msg->done += bytes;
|
||||
retval = usb_submit_urb(urb, GFP_ATOMIC);
|
||||
|
||||
@@ -403,10 +379,6 @@ static void line6_data_received(struct urb *urb)
|
||||
if (urb->status == -ESHUTDOWN)
|
||||
return;
|
||||
|
||||
-#ifdef CONFIG_LINE6_USB_DUMP_CTRL
|
||||
- line6_dump_urb(urb);
|
||||
-#endif
|
||||
-
|
||||
done =
|
||||
line6_midibuf_write(mb, urb->transfer_buffer, urb->actual_length);
|
||||
|
||||
@@ -502,10 +474,6 @@ int line6_send_program(struct usb_line6 *line6, u8 value)
|
||||
buffer[0] = LINE6_PROGRAM_CHANGE | LINE6_CHANNEL_HOST;
|
||||
buffer[1] = value;
|
||||
|
||||
-#ifdef CONFIG_LINE6_USB_DUMP_CTRL
|
||||
- line6_write_hexdump(line6, 'S', buffer, 2);
|
||||
-#endif
|
||||
-
|
||||
retval = usb_interrupt_msg(line6->usbdev,
|
||||
usb_sndintpipe(line6->usbdev,
|
||||
line6->ep_control_write),
|
||||
@@ -539,10 +507,6 @@ int line6_transmit_parameter(struct usb_line6 *line6, int param, u8 value)
|
||||
buffer[1] = param;
|
||||
buffer[2] = value;
|
||||
|
||||
-#ifdef CONFIG_LINE6_USB_DUMP_CTRL
|
||||
- line6_write_hexdump(line6, 'S', buffer, 3);
|
||||
-#endif
|
||||
-
|
||||
retval = usb_interrupt_msg(line6->usbdev,
|
||||
usb_sndintpipe(line6->usbdev,
|
||||
line6->ep_control_write),
|
||||
diff --git a/drivers/staging/line6/midi.c b/drivers/staging/line6/midi.c
|
||||
index 5040729..348d425 100644
|
||||
--- a/drivers/staging/line6/midi.c
|
||||
+++ b/drivers/staging/line6/midi.c
|
||||
@@ -131,9 +131,6 @@ static int send_midi_async(struct usb_line6 *line6, unsigned char *data,
|
||||
dev_err(line6->ifcdev, "Out of memory\n");
|
||||
return -ENOMEM;
|
||||
}
|
||||
-#ifdef CONFIG_LINE6_USB_DUMP_CTRL
|
||||
- line6_write_hexdump(line6, 'S', data, length);
|
||||
-#endif
|
||||
|
||||
transfer_buffer = kmemdup(data, length, GFP_ATOMIC);
|
||||
|
|
@ -0,0 +1,29 @@
|
|||
From: Stefan Hajnoczi <stefanha@gmail.com>
|
||||
Date: Wed, 14 Nov 2012 08:50:42 +0100
|
||||
Subject: [056/106] staging: line6: drop CONTROL from
|
||||
CONFIG_LINE6_USB_DUMP_ANY
|
||||
|
||||
commit 19ae77935e45d60bf64144e2d67074a2886db245 upstream.
|
||||
|
||||
CONFIG_LINE6_USB_DUMP_CTRL is no longer used by the code and therefore
|
||||
no longer plays a role in CONFIG_LINE6_USB_DUMP_ANY.
|
||||
|
||||
Signed-off-by: Stefan Hajnoczi <stefanha@gmail.com>
|
||||
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
||||
---
|
||||
drivers/staging/line6/driver.h | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/drivers/staging/line6/driver.h b/drivers/staging/line6/driver.h
|
||||
index 9dd8ff4..7770635 100644
|
||||
--- a/drivers/staging/line6/driver.h
|
||||
+++ b/drivers/staging/line6/driver.h
|
||||
@@ -20,7 +20,7 @@
|
||||
|
||||
#define DRIVER_NAME "line6usb"
|
||||
|
||||
-#if defined(CONFIG_LINE6_USB_DUMP_CTRL) || defined(CONFIG_LINE6_USB_DUMP_MIDI) || defined(CONFIG_LINE6_USB_DUMP_PCM)
|
||||
+#if defined(CONFIG_LINE6_USB_DUMP_MIDI) || defined(CONFIG_LINE6_USB_DUMP_PCM)
|
||||
#define CONFIG_LINE6_USB_DUMP_ANY
|
||||
#endif
|
||||
|
|
@ -0,0 +1,32 @@
|
|||
From: Stefan Hajnoczi <stefanha@gmail.com>
|
||||
Date: Wed, 14 Nov 2012 08:50:43 +0100
|
||||
Subject: [057/106] staging: line6: drop unused CONFIG_LINE6_USB_DUMP_CTRL
|
||||
|
||||
commit 4aea449ac8c4955f18c49ecb6fd3e0417a2073c0 upstream.
|
||||
|
||||
Signed-off-by: Stefan Hajnoczi <stefanha@gmail.com>
|
||||
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
||||
---
|
||||
drivers/staging/line6/Kconfig | 9 ---------
|
||||
1 file changed, 9 deletions(-)
|
||||
|
||||
diff --git a/drivers/staging/line6/Kconfig b/drivers/staging/line6/Kconfig
|
||||
index a5ded12..2101799 100644
|
||||
--- a/drivers/staging/line6/Kconfig
|
||||
+++ b/drivers/staging/line6/Kconfig
|
||||
@@ -23,15 +23,6 @@ menuconfig LINE6_USB
|
||||
|
||||
if LINE6_USB
|
||||
|
||||
-config LINE6_USB_DUMP_CTRL
|
||||
- bool "dump control messages"
|
||||
- default n
|
||||
- help
|
||||
- Say Y here to write control messages sent to and received from
|
||||
- Line6 devices to the syslog.
|
||||
-
|
||||
- If unsure, say N.
|
||||
-
|
||||
config LINE6_USB_DUMP_MIDI
|
||||
bool "dump MIDI messages"
|
||||
default n
|
46
debian/patches/features/all/line6/0058-staging-line6-drop-MIDI-dumping-code.patch
vendored
Normal file
46
debian/patches/features/all/line6/0058-staging-line6-drop-MIDI-dumping-code.patch
vendored
Normal file
|
@ -0,0 +1,46 @@
|
|||
From: Stefan Hajnoczi <stefanha@gmail.com>
|
||||
Date: Wed, 14 Nov 2012 08:50:44 +0100
|
||||
Subject: [058/106] staging: line6: drop MIDI dumping code
|
||||
|
||||
commit 36a01f4d971c4d2d9923a94ca21ccd3f2d579563 upstream.
|
||||
|
||||
ALSA amidi(1) and aseqdump(1) can be used to dump MIDI instead of
|
||||
manually dumping MIDI messages in the driver. The advantage of using
|
||||
these existing tools is that can be used at run-time rather than
|
||||
compile-time.
|
||||
|
||||
Signed-off-by: Stefan Hajnoczi <stefanha@gmail.com>
|
||||
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
||||
---
|
||||
drivers/staging/line6/driver.c | 3 ---
|
||||
drivers/staging/line6/midi.c | 3 ---
|
||||
2 files changed, 6 deletions(-)
|
||||
|
||||
diff --git a/drivers/staging/line6/driver.c b/drivers/staging/line6/driver.c
|
||||
index fda92d1e..0bc838d 100644
|
||||
--- a/drivers/staging/line6/driver.c
|
||||
+++ b/drivers/staging/line6/driver.c
|
||||
@@ -402,9 +402,6 @@ static void line6_data_received(struct urb *urb)
|
||||
continue;
|
||||
|
||||
line6->message_length = done;
|
||||
-#ifdef CONFIG_LINE6_USB_DUMP_MIDI
|
||||
- line6_write_hexdump(line6, 'r', line6->buffer_message, done);
|
||||
-#endif
|
||||
line6_midi_receive(line6, line6->buffer_message, done);
|
||||
|
||||
switch (line6->usbdev->descriptor.idProduct) {
|
||||
diff --git a/drivers/staging/line6/midi.c b/drivers/staging/line6/midi.c
|
||||
index 348d425..c8e099b 100644
|
||||
--- a/drivers/staging/line6/midi.c
|
||||
+++ b/drivers/staging/line6/midi.c
|
||||
@@ -59,9 +59,6 @@ static void line6_midi_transmit(struct snd_rawmidi_substream *substream)
|
||||
if (done == 0)
|
||||
break;
|
||||
|
||||
-#ifdef CONFIG_LINE6_USB_DUMP_MIDI
|
||||
- line6_write_hexdump(line6, 's', chunk, done);
|
||||
-#endif
|
||||
line6_midibuf_write(mb, chunk, done);
|
||||
snd_rawmidi_transmit_ack(substream, done);
|
||||
}
|
|
@ -0,0 +1,28 @@
|
|||
From: Stefan Hajnoczi <stefanha@gmail.com>
|
||||
Date: Wed, 14 Nov 2012 08:50:45 +0100
|
||||
Subject: [059/106] staging: line6: drop MIDI from CONFIG_LINE6_USB_DUMP_ANY
|
||||
|
||||
commit 10c39f1d717d3e5e8bcb2998f7dee4362edda26a upstream.
|
||||
|
||||
CONFIG_LINE6_USB_DUMP_MIDI is no longer used by the code and therefore
|
||||
no longer plays a role in CONFIG_LINE6_USB_DUMP_ANY.
|
||||
|
||||
Signed-off-by: Stefan Hajnoczi <stefanha@gmail.com>
|
||||
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
||||
---
|
||||
drivers/staging/line6/driver.h | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/drivers/staging/line6/driver.h b/drivers/staging/line6/driver.h
|
||||
index 7770635..f0be5a2 100644
|
||||
--- a/drivers/staging/line6/driver.h
|
||||
+++ b/drivers/staging/line6/driver.h
|
||||
@@ -20,7 +20,7 @@
|
||||
|
||||
#define DRIVER_NAME "line6usb"
|
||||
|
||||
-#if defined(CONFIG_LINE6_USB_DUMP_MIDI) || defined(CONFIG_LINE6_USB_DUMP_PCM)
|
||||
+#if defined(CONFIG_LINE6_USB_DUMP_PCM)
|
||||
#define CONFIG_LINE6_USB_DUMP_ANY
|
||||
#endif
|
||||
|
|
@ -0,0 +1,32 @@
|
|||
From: Stefan Hajnoczi <stefanha@gmail.com>
|
||||
Date: Wed, 14 Nov 2012 08:50:46 +0100
|
||||
Subject: [060/106] staging: line6: drop unused CONFIG_LINE6_USB_DUMP_MIDI
|
||||
|
||||
commit c6c2f47f30c44f3fdae9362f811f95109f81303e upstream.
|
||||
|
||||
Signed-off-by: Stefan Hajnoczi <stefanha@gmail.com>
|
||||
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
||||
---
|
||||
drivers/staging/line6/Kconfig | 9 ---------
|
||||
1 file changed, 9 deletions(-)
|
||||
|
||||
diff --git a/drivers/staging/line6/Kconfig b/drivers/staging/line6/Kconfig
|
||||
index 2101799..80a7202 100644
|
||||
--- a/drivers/staging/line6/Kconfig
|
||||
+++ b/drivers/staging/line6/Kconfig
|
||||
@@ -23,15 +23,6 @@ menuconfig LINE6_USB
|
||||
|
||||
if LINE6_USB
|
||||
|
||||
-config LINE6_USB_DUMP_MIDI
|
||||
- bool "dump MIDI messages"
|
||||
- default n
|
||||
- help
|
||||
- Say Y here to write MIDI messages sent to and received from
|
||||
- Line6 devices to the syslog.
|
||||
-
|
||||
- If unsure, say N.
|
||||
-
|
||||
config LINE6_USB_DUMP_PCM
|
||||
bool "dump PCM data"
|
||||
default n
|
133
debian/patches/features/all/line6/0061-staging-line6-drop-channel-sysfs-attr.patch
vendored
Normal file
133
debian/patches/features/all/line6/0061-staging-line6-drop-channel-sysfs-attr.patch
vendored
Normal file
|
@ -0,0 +1,133 @@
|
|||
From: Stefan Hajnoczi <stefanha@gmail.com>
|
||||
Date: Thu, 22 Nov 2012 20:48:40 +0100
|
||||
Subject: [061/106] staging: line6: drop channel sysfs attr
|
||||
|
||||
commit 236666e958dd3e0d2b9caf226b49633475d6cbd2 upstream.
|
||||
|
||||
Signed-off-by: Stefan Hajnoczi <stefanha@gmail.com>
|
||||
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
||||
---
|
||||
drivers/staging/line6/pod.c | 51 -------------------------------------------
|
||||
drivers/staging/line6/pod.h | 5 -----
|
||||
2 files changed, 56 deletions(-)
|
||||
|
||||
diff --git a/drivers/staging/line6/pod.c b/drivers/staging/line6/pod.c
|
||||
index 4a86f7a..e3e2247 100644
|
||||
--- a/drivers/staging/line6/pod.c
|
||||
+++ b/drivers/staging/line6/pod.c
|
||||
@@ -223,7 +223,6 @@ void line6_pod_process_message(struct usb_line6_pod *pod)
|
||||
|
||||
case LINE6_PROGRAM_CHANGE | LINE6_CHANNEL_DEVICE:
|
||||
case LINE6_PROGRAM_CHANGE | LINE6_CHANNEL_HOST:
|
||||
- pod->channel_num = buf[1];
|
||||
pod->dirty = 0;
|
||||
set_bit(POD_CHANNEL_DIRTY, &pod->atomic_flags);
|
||||
line6_dump_request_async(&pod->dumpreq, &pod->line6, 0,
|
||||
@@ -388,19 +387,6 @@ void line6_pod_midi_postprocess(struct usb_line6_pod *pod, unsigned char *data,
|
||||
}
|
||||
|
||||
/*
|
||||
- Send channel number (i.e., switch to a different sound).
|
||||
-*/
|
||||
-static void pod_send_channel(struct usb_line6_pod *pod, u8 value)
|
||||
-{
|
||||
- line6_invalidate_current(&pod->dumpreq);
|
||||
-
|
||||
- if (line6_send_program(&pod->line6, value) == 0)
|
||||
- pod->channel_num = value;
|
||||
- else
|
||||
- line6_dump_finished(&pod->dumpreq);
|
||||
-}
|
||||
-
|
||||
-/*
|
||||
Transmit PODxt Pro control parameter.
|
||||
*/
|
||||
void line6_pod_transmit_parameter(struct usb_line6_pod *pod, int param,
|
||||
@@ -526,37 +512,6 @@ static ssize_t get_name_generic(struct usb_line6_pod *pod, const char *str,
|
||||
}
|
||||
|
||||
/*
|
||||
- "read" request on "channel" special file.
|
||||
-*/
|
||||
-static ssize_t pod_get_channel(struct device *dev,
|
||||
- struct device_attribute *attr, char *buf)
|
||||
-{
|
||||
- struct usb_interface *interface = to_usb_interface(dev);
|
||||
- struct usb_line6_pod *pod = usb_get_intfdata(interface);
|
||||
- return sprintf(buf, "%d\n", pod->channel_num);
|
||||
-}
|
||||
-
|
||||
-/*
|
||||
- "write" request on "channel" special file.
|
||||
-*/
|
||||
-static ssize_t pod_set_channel(struct device *dev,
|
||||
- struct device_attribute *attr,
|
||||
- const char *buf, size_t count)
|
||||
-{
|
||||
- struct usb_interface *interface = to_usb_interface(dev);
|
||||
- struct usb_line6_pod *pod = usb_get_intfdata(interface);
|
||||
- u8 value;
|
||||
- int ret;
|
||||
-
|
||||
- ret = kstrtou8(buf, 10, &value);
|
||||
- if (ret)
|
||||
- return ret;
|
||||
-
|
||||
- pod_send_channel(pod, value);
|
||||
- return count;
|
||||
-}
|
||||
-
|
||||
-/*
|
||||
"read" request on "name" special file.
|
||||
*/
|
||||
static ssize_t pod_get_name(struct device *dev, struct device_attribute *attr,
|
||||
@@ -1036,8 +991,6 @@ POD_GET_SYSTEM_PARAM(tuner_pitch, 1);
|
||||
#undef GET_SYSTEM_PARAM
|
||||
|
||||
/* POD special files: */
|
||||
-static DEVICE_ATTR(channel, S_IWUSR | S_IRUGO, pod_get_channel,
|
||||
- pod_set_channel);
|
||||
static DEVICE_ATTR(clip, S_IRUGO, pod_wait_for_clip, line6_nop_write);
|
||||
static DEVICE_ATTR(device_id, S_IRUGO, pod_get_device_id, line6_nop_write);
|
||||
static DEVICE_ATTR(dirty, S_IRUGO, pod_get_dirty, line6_nop_write);
|
||||
@@ -1153,7 +1106,6 @@ static int pod_create_files2(struct device *dev)
|
||||
{
|
||||
int err;
|
||||
|
||||
- CHECK_RETURN(device_create_file(dev, &dev_attr_channel));
|
||||
CHECK_RETURN(device_create_file(dev, &dev_attr_clip));
|
||||
CHECK_RETURN(device_create_file(dev, &dev_attr_device_id));
|
||||
CHECK_RETURN(device_create_file(dev, &dev_attr_dirty));
|
||||
@@ -1200,8 +1152,6 @@ static int pod_try_init(struct usb_interface *interface,
|
||||
if ((interface == NULL) || (pod == NULL))
|
||||
return -ENODEV;
|
||||
|
||||
- pod->channel_num = 255;
|
||||
-
|
||||
/* initialize wait queues: */
|
||||
init_waitqueue_head(&pod->monitor_level.wait);
|
||||
init_waitqueue_head(&pod->routing.wait);
|
||||
@@ -1300,7 +1250,6 @@ void line6_pod_disconnect(struct usb_interface *interface)
|
||||
pod->line6.
|
||||
properties->device_bit, dev);
|
||||
|
||||
- device_remove_file(dev, &dev_attr_channel);
|
||||
device_remove_file(dev, &dev_attr_clip);
|
||||
device_remove_file(dev, &dev_attr_device_id);
|
||||
device_remove_file(dev, &dev_attr_dirty);
|
||||
diff --git a/drivers/staging/line6/pod.h b/drivers/staging/line6/pod.h
|
||||
index 47e0d1a..0f9e83d 100644
|
||||
--- a/drivers/staging/line6/pod.h
|
||||
+++ b/drivers/staging/line6/pod.h
|
||||
@@ -89,11 +89,6 @@ struct usb_line6_pod {
|
||||
struct line6_dump_request dumpreq;
|
||||
|
||||
/**
|
||||
- Current program number.
|
||||
- */
|
||||
- unsigned char channel_num;
|
||||
-
|
||||
- /**
|
||||
Current program settings.
|
||||
*/
|
||||
struct pod_program prog_data;
|
105
debian/patches/features/all/line6/0062-staging-line6-drop-clip-sysfs-attr.patch
vendored
Normal file
105
debian/patches/features/all/line6/0062-staging-line6-drop-clip-sysfs-attr.patch
vendored
Normal file
|
@ -0,0 +1,105 @@
|
|||
From: Stefan Hajnoczi <stefanha@gmail.com>
|
||||
Date: Thu, 22 Nov 2012 20:48:41 +0100
|
||||
Subject: [062/106] staging: line6: drop clip sysfs attr
|
||||
|
||||
commit cab3c900c191a21dad70fcc35d0156dc42d509c8 upstream.
|
||||
|
||||
Signed-off-by: Stefan Hajnoczi <stefanha@gmail.com>
|
||||
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
||||
---
|
||||
drivers/staging/line6/pod.c | 23 -----------------------
|
||||
drivers/staging/line6/pod.h | 5 -----
|
||||
2 files changed, 28 deletions(-)
|
||||
|
||||
diff --git a/drivers/staging/line6/pod.c b/drivers/staging/line6/pod.c
|
||||
index e3e2247..4abe2de 100644
|
||||
--- a/drivers/staging/line6/pod.c
|
||||
+++ b/drivers/staging/line6/pod.c
|
||||
@@ -26,7 +26,6 @@
|
||||
/* *INDENT-OFF* */
|
||||
|
||||
enum {
|
||||
- POD_SYSEX_CLIP = 0x0f,
|
||||
POD_SYSEX_SAVE = 0x24,
|
||||
POD_SYSEX_SYSTEM = 0x56,
|
||||
POD_SYSEX_SYSTEMREQ = 0x57,
|
||||
@@ -311,12 +310,6 @@ void line6_pod_process_message(struct usb_line6_pod *pod)
|
||||
pod_save_button_pressed(pod, buf[6], buf[7]);
|
||||
break;
|
||||
|
||||
- case POD_SYSEX_CLIP:
|
||||
- dev_dbg(pod->line6.ifcdev, "audio clipped\n");
|
||||
- pod->clipping.value = 1;
|
||||
- wake_up(&pod->clipping.wait);
|
||||
- break;
|
||||
-
|
||||
case POD_SYSEX_STORE:
|
||||
dev_dbg(pod->line6.ifcdev,
|
||||
"message %02X not yet implemented\n",
|
||||
@@ -879,18 +872,6 @@ static ssize_t pod_get_device_id(struct device *dev,
|
||||
}
|
||||
|
||||
/*
|
||||
- "read" request on "clip" special file.
|
||||
-*/
|
||||
-static ssize_t pod_wait_for_clip(struct device *dev,
|
||||
- struct device_attribute *attr, char *buf)
|
||||
-{
|
||||
- struct usb_interface *interface = to_usb_interface(dev);
|
||||
- struct usb_line6_pod *pod = usb_get_intfdata(interface);
|
||||
- return wait_event_interruptible(pod->clipping.wait,
|
||||
- pod->clipping.value != 0);
|
||||
-}
|
||||
-
|
||||
-/*
|
||||
POD startup procedure.
|
||||
This is a sequence of functions with special requirements (e.g., must
|
||||
not run immediately after initialization, must not run in interrupt
|
||||
@@ -991,7 +972,6 @@ POD_GET_SYSTEM_PARAM(tuner_pitch, 1);
|
||||
#undef GET_SYSTEM_PARAM
|
||||
|
||||
/* POD special files: */
|
||||
-static DEVICE_ATTR(clip, S_IRUGO, pod_wait_for_clip, line6_nop_write);
|
||||
static DEVICE_ATTR(device_id, S_IRUGO, pod_get_device_id, line6_nop_write);
|
||||
static DEVICE_ATTR(dirty, S_IRUGO, pod_get_dirty, line6_nop_write);
|
||||
static DEVICE_ATTR(dump, S_IWUSR | S_IRUGO, pod_get_dump, pod_set_dump);
|
||||
@@ -1106,7 +1086,6 @@ static int pod_create_files2(struct device *dev)
|
||||
{
|
||||
int err;
|
||||
|
||||
- CHECK_RETURN(device_create_file(dev, &dev_attr_clip));
|
||||
CHECK_RETURN(device_create_file(dev, &dev_attr_device_id));
|
||||
CHECK_RETURN(device_create_file(dev, &dev_attr_dirty));
|
||||
CHECK_RETURN(device_create_file(dev, &dev_attr_dump));
|
||||
@@ -1159,7 +1138,6 @@ static int pod_try_init(struct usb_interface *interface,
|
||||
init_waitqueue_head(&pod->tuner_freq.wait);
|
||||
init_waitqueue_head(&pod->tuner_note.wait);
|
||||
init_waitqueue_head(&pod->tuner_pitch.wait);
|
||||
- init_waitqueue_head(&pod->clipping.wait);
|
||||
|
||||
memset(pod->param_dirty, 0xff, sizeof(pod->param_dirty));
|
||||
|
||||
@@ -1250,7 +1228,6 @@ void line6_pod_disconnect(struct usb_interface *interface)
|
||||
pod->line6.
|
||||
properties->device_bit, dev);
|
||||
|
||||
- device_remove_file(dev, &dev_attr_clip);
|
||||
device_remove_file(dev, &dev_attr_device_id);
|
||||
device_remove_file(dev, &dev_attr_dirty);
|
||||
device_remove_file(dev, &dev_attr_dump);
|
||||
diff --git a/drivers/staging/line6/pod.h b/drivers/staging/line6/pod.h
|
||||
index 0f9e83d..fa247b8 100644
|
||||
--- a/drivers/staging/line6/pod.h
|
||||
+++ b/drivers/staging/line6/pod.h
|
||||
@@ -133,11 +133,6 @@ struct usb_line6_pod {
|
||||
struct ValueWait routing;
|
||||
|
||||
/**
|
||||
- Wait for audio clipping event.
|
||||
- */
|
||||
- struct ValueWait clipping;
|
||||
-
|
||||
- /**
|
||||
Timer for device initializaton.
|
||||
*/
|
||||
struct timer_list startup_timer;
|
88
debian/patches/features/all/line6/0063-staging-line6-drop-unused-param_dirty-bitmap.patch
vendored
Normal file
88
debian/patches/features/all/line6/0063-staging-line6-drop-unused-param_dirty-bitmap.patch
vendored
Normal file
|
@ -0,0 +1,88 @@
|
|||
From: Stefan Hajnoczi <stefanha@gmail.com>
|
||||
Date: Thu, 22 Nov 2012 20:48:42 +0100
|
||||
Subject: [063/106] staging: line6: drop unused param_dirty bitmap
|
||||
|
||||
commit 9c29cf51d16f36c6b20b49091a1263a28aba7794 upstream.
|
||||
|
||||
The param_dirty bitmap tracks which parameters have been modified since
|
||||
saving a preset. The bitmap is never used though so we can drop this
|
||||
deadcode.
|
||||
|
||||
Signed-off-by: Stefan Hajnoczi <stefanha@gmail.com>
|
||||
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
||||
---
|
||||
drivers/staging/line6/pod.c | 16 ----------------
|
||||
drivers/staging/line6/pod.h | 5 -----
|
||||
2 files changed, 21 deletions(-)
|
||||
|
||||
diff --git a/drivers/staging/line6/pod.c b/drivers/staging/line6/pod.c
|
||||
index 4abe2de..8fdbe9f 100644
|
||||
--- a/drivers/staging/line6/pod.c
|
||||
+++ b/drivers/staging/line6/pod.c
|
||||
@@ -130,17 +130,6 @@ static void pod_startup2(unsigned long data);
|
||||
static void pod_startup3(struct usb_line6_pod *pod);
|
||||
static void pod_startup4(struct usb_line6_pod *pod);
|
||||
|
||||
-/*
|
||||
- Mark all parameters as dirty and notify waiting processes.
|
||||
-*/
|
||||
-static void pod_mark_batch_all_dirty(struct usb_line6_pod *pod)
|
||||
-{
|
||||
- int i;
|
||||
-
|
||||
- for (i = 0; i < POD_CONTROL_SIZE; i++)
|
||||
- set_bit(i, pod->param_dirty);
|
||||
-}
|
||||
-
|
||||
static char *pod_alloc_sysex_buffer(struct usb_line6_pod *pod, int code,
|
||||
int size)
|
||||
{
|
||||
@@ -163,7 +152,6 @@ static void pod_dump(struct usb_line6_pod *pod, const unsigned char *data)
|
||||
memcpy(sysex + SYSEX_DATA_OFS + 1, data, sizeof(pod->prog_data));
|
||||
line6_send_sysex_message(&pod->line6, sysex, size);
|
||||
memcpy(&pod->prog_data, data, sizeof(pod->prog_data));
|
||||
- pod_mark_batch_all_dirty(pod);
|
||||
kfree(sysex);
|
||||
}
|
||||
|
||||
@@ -173,7 +161,6 @@ static void pod_dump(struct usb_line6_pod *pod, const unsigned char *data)
|
||||
static void pod_store_parameter(struct usb_line6_pod *pod, int param, int value)
|
||||
{
|
||||
pod->prog_data.control[param] = value;
|
||||
- set_bit(param, pod->param_dirty);
|
||||
pod->dirty = 1;
|
||||
}
|
||||
|
||||
@@ -239,7 +226,6 @@ void line6_pod_process_message(struct usb_line6_pod *pod)
|
||||
case LINE6_DUMP_CURRENT:
|
||||
memcpy(&pod->prog_data, buf + 7,
|
||||
sizeof(pod->prog_data));
|
||||
- pod_mark_batch_all_dirty(pod);
|
||||
break;
|
||||
|
||||
case POD_DUMP_MEMORY:
|
||||
@@ -1139,8 +1125,6 @@ static int pod_try_init(struct usb_interface *interface,
|
||||
init_waitqueue_head(&pod->tuner_note.wait);
|
||||
init_waitqueue_head(&pod->tuner_pitch.wait);
|
||||
|
||||
- memset(pod->param_dirty, 0xff, sizeof(pod->param_dirty));
|
||||
-
|
||||
/* initialize USB buffers: */
|
||||
err = line6_dumpreq_init(&pod->dumpreq, pod_request_channel,
|
||||
sizeof(pod_request_channel));
|
||||
diff --git a/drivers/staging/line6/pod.h b/drivers/staging/line6/pod.h
|
||||
index fa247b8..dd6c318 100644
|
||||
--- a/drivers/staging/line6/pod.h
|
||||
+++ b/drivers/staging/line6/pod.h
|
||||
@@ -148,11 +148,6 @@ struct usb_line6_pod {
|
||||
int startup_progress;
|
||||
|
||||
/**
|
||||
- Dirty flags for access to parameter data.
|
||||
- */
|
||||
- unsigned long param_dirty[POD_CONTROL_SIZE / sizeof(unsigned long)];
|
||||
-
|
||||
- /**
|
||||
Some atomic flags.
|
||||
*/
|
||||
unsigned long atomic_flags;
|
107
debian/patches/features/all/line6/0064-staging-line6-drop-dirty-sysfs-attr.patch
vendored
Normal file
107
debian/patches/features/all/line6/0064-staging-line6-drop-dirty-sysfs-attr.patch
vendored
Normal file
|
@ -0,0 +1,107 @@
|
|||
From: Stefan Hajnoczi <stefanha@gmail.com>
|
||||
Date: Thu, 22 Nov 2012 20:48:43 +0100
|
||||
Subject: [064/106] staging: line6: drop dirty sysfs attr
|
||||
|
||||
commit b772fe9e33b685bc552bc40eab6ff3160aee86c7 upstream.
|
||||
|
||||
Signed-off-by: Stefan Hajnoczi <stefanha@gmail.com>
|
||||
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
||||
---
|
||||
drivers/staging/line6/pod.c | 21 +--------------------
|
||||
drivers/staging/line6/pod.h | 5 -----
|
||||
2 files changed, 1 insertion(+), 25 deletions(-)
|
||||
|
||||
diff --git a/drivers/staging/line6/pod.c b/drivers/staging/line6/pod.c
|
||||
index 8fdbe9f..7c76b65 100644
|
||||
--- a/drivers/staging/line6/pod.c
|
||||
+++ b/drivers/staging/line6/pod.c
|
||||
@@ -156,12 +156,11 @@ static void pod_dump(struct usb_line6_pod *pod, const unsigned char *data)
|
||||
}
|
||||
|
||||
/*
|
||||
- Store parameter value in driver memory and mark it as dirty.
|
||||
+ Store parameter value in driver memory.
|
||||
*/
|
||||
static void pod_store_parameter(struct usb_line6_pod *pod, int param, int value)
|
||||
{
|
||||
pod->prog_data.control[param] = value;
|
||||
- pod->dirty = 1;
|
||||
}
|
||||
|
||||
/*
|
||||
@@ -170,7 +169,6 @@ static void pod_store_parameter(struct usb_line6_pod *pod, int param, int value)
|
||||
static void pod_save_button_pressed(struct usb_line6_pod *pod, int type,
|
||||
int index)
|
||||
{
|
||||
- pod->dirty = 0;
|
||||
set_bit(POD_SAVE_PRESSED, &pod->atomic_flags);
|
||||
}
|
||||
|
||||
@@ -209,7 +207,6 @@ void line6_pod_process_message(struct usb_line6_pod *pod)
|
||||
|
||||
case LINE6_PROGRAM_CHANGE | LINE6_CHANNEL_DEVICE:
|
||||
case LINE6_PROGRAM_CHANGE | LINE6_CHANNEL_HOST:
|
||||
- pod->dirty = 0;
|
||||
set_bit(POD_CHANNEL_DIRTY, &pod->atomic_flags);
|
||||
line6_dump_request_async(&pod->dumpreq, &pod->line6, 0,
|
||||
LINE6_DUMP_CURRENT);
|
||||
@@ -778,19 +775,6 @@ static ssize_t pod_set_retrieve_amp_setup(struct device *dev,
|
||||
}
|
||||
|
||||
/*
|
||||
- "read" request on "dirty" special file.
|
||||
-*/
|
||||
-static ssize_t pod_get_dirty(struct device *dev, struct device_attribute *attr,
|
||||
- char *buf)
|
||||
-{
|
||||
- struct usb_interface *interface = to_usb_interface(dev);
|
||||
- struct usb_line6_pod *pod = usb_get_intfdata(interface);
|
||||
- buf[0] = pod->dirty ? '1' : '0';
|
||||
- buf[1] = '\n';
|
||||
- return 2;
|
||||
-}
|
||||
-
|
||||
-/*
|
||||
"read" request on "midi_postprocess" special file.
|
||||
*/
|
||||
static ssize_t pod_get_midi_postprocess(struct device *dev,
|
||||
@@ -959,7 +943,6 @@ POD_GET_SYSTEM_PARAM(tuner_pitch, 1);
|
||||
|
||||
/* POD special files: */
|
||||
static DEVICE_ATTR(device_id, S_IRUGO, pod_get_device_id, line6_nop_write);
|
||||
-static DEVICE_ATTR(dirty, S_IRUGO, pod_get_dirty, line6_nop_write);
|
||||
static DEVICE_ATTR(dump, S_IWUSR | S_IRUGO, pod_get_dump, pod_set_dump);
|
||||
static DEVICE_ATTR(dump_buf, S_IWUSR | S_IRUGO, pod_get_dump_buf,
|
||||
pod_set_dump_buf);
|
||||
@@ -1073,7 +1056,6 @@ static int pod_create_files2(struct device *dev)
|
||||
int err;
|
||||
|
||||
CHECK_RETURN(device_create_file(dev, &dev_attr_device_id));
|
||||
- CHECK_RETURN(device_create_file(dev, &dev_attr_dirty));
|
||||
CHECK_RETURN(device_create_file(dev, &dev_attr_dump));
|
||||
CHECK_RETURN(device_create_file(dev, &dev_attr_dump_buf));
|
||||
CHECK_RETURN(device_create_file(dev, &dev_attr_finish));
|
||||
@@ -1213,7 +1195,6 @@ void line6_pod_disconnect(struct usb_interface *interface)
|
||||
properties->device_bit, dev);
|
||||
|
||||
device_remove_file(dev, &dev_attr_device_id);
|
||||
- device_remove_file(dev, &dev_attr_dirty);
|
||||
device_remove_file(dev, &dev_attr_dump);
|
||||
device_remove_file(dev, &dev_attr_dump_buf);
|
||||
device_remove_file(dev, &dev_attr_finish);
|
||||
diff --git a/drivers/staging/line6/pod.h b/drivers/staging/line6/pod.h
|
||||
index dd6c318..b3bf243 100644
|
||||
--- a/drivers/staging/line6/pod.h
|
||||
+++ b/drivers/staging/line6/pod.h
|
||||
@@ -168,11 +168,6 @@ struct usb_line6_pod {
|
||||
int device_id;
|
||||
|
||||
/**
|
||||
- Flag to indicate modification of current program settings.
|
||||
- */
|
||||
- char dirty;
|
||||
-
|
||||
- /**
|
||||
Flag to enable MIDI postprocessing.
|
||||
*/
|
||||
char midi_postprocess;
|
121
debian/patches/features/all/line6/0065-staging-line6-drop-dump-sysfs-attr.patch
vendored
Normal file
121
debian/patches/features/all/line6/0065-staging-line6-drop-dump-sysfs-attr.patch
vendored
Normal file
|
@ -0,0 +1,121 @@
|
|||
From: Stefan Hajnoczi <stefanha@gmail.com>
|
||||
Date: Thu, 22 Nov 2012 20:48:44 +0100
|
||||
Subject: [065/106] staging: line6: drop dump sysfs attr
|
||||
|
||||
commit 980688f9d79ef2e169037a94ae2c7a3e08f7adc3 upstream.
|
||||
|
||||
Once further sysfs attrs have been removed it will also be possible to
|
||||
drop prog_data and other pieces which we keep for now.
|
||||
|
||||
Signed-off-by: Stefan Hajnoczi <stefanha@gmail.com>
|
||||
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
||||
---
|
||||
drivers/staging/line6/pod.c | 60 +++----------------------------------------
|
||||
1 file changed, 3 insertions(+), 57 deletions(-)
|
||||
|
||||
diff --git a/drivers/staging/line6/pod.c b/drivers/staging/line6/pod.c
|
||||
index 7c76b65..56eab0a 100644
|
||||
--- a/drivers/staging/line6/pod.c
|
||||
+++ b/drivers/staging/line6/pod.c
|
||||
@@ -138,24 +138,6 @@ static char *pod_alloc_sysex_buffer(struct usb_line6_pod *pod, int code,
|
||||
}
|
||||
|
||||
/*
|
||||
- Send channel dump data to the PODxt Pro.
|
||||
-*/
|
||||
-static void pod_dump(struct usb_line6_pod *pod, const unsigned char *data)
|
||||
-{
|
||||
- int size = 1 + sizeof(pod->prog_data);
|
||||
- char *sysex = pod_alloc_sysex_buffer(pod, POD_SYSEX_DUMP, size);
|
||||
- if (!sysex)
|
||||
- return;
|
||||
- /* Don't know what this is good for, but PODxt Pro transmits it, so we
|
||||
- * also do... */
|
||||
- sysex[SYSEX_DATA_OFS] = 5;
|
||||
- memcpy(sysex + SYSEX_DATA_OFS + 1, data, sizeof(pod->prog_data));
|
||||
- line6_send_sysex_message(&pod->line6, sysex, size);
|
||||
- memcpy(&pod->prog_data, data, sizeof(pod->prog_data));
|
||||
- kfree(sysex);
|
||||
-}
|
||||
-
|
||||
-/*
|
||||
Store parameter value in driver memory.
|
||||
*/
|
||||
static void pod_store_parameter(struct usb_line6_pod *pod, int param, int value)
|
||||
@@ -411,7 +393,9 @@ static ssize_t pod_send_store_command(struct device *dev, const char *buf,
|
||||
if (!sysex)
|
||||
return 0;
|
||||
|
||||
- sysex[SYSEX_DATA_OFS] = 5; /* see pod_dump() */
|
||||
+ /* Don't know what this is good for, but PODxt Pro transmits it, so we
|
||||
+ * also do... */
|
||||
+ sysex[SYSEX_DATA_OFS] = 5;
|
||||
ret = pod_resolve(buf, block0, block1, sysex + SYSEX_DATA_OFS + 1);
|
||||
if (ret) {
|
||||
kfree(sysex);
|
||||
@@ -513,41 +497,6 @@ static ssize_t pod_get_name_buf(struct device *dev,
|
||||
}
|
||||
|
||||
/*
|
||||
- "read" request on "dump" special file.
|
||||
-*/
|
||||
-static ssize_t pod_get_dump(struct device *dev, struct device_attribute *attr,
|
||||
- char *buf)
|
||||
-{
|
||||
- struct usb_interface *interface = to_usb_interface(dev);
|
||||
- struct usb_line6_pod *pod = usb_get_intfdata(interface);
|
||||
- int retval = line6_dump_wait_interruptible(&pod->dumpreq);
|
||||
- if (retval < 0)
|
||||
- return retval;
|
||||
- memcpy(buf, &pod->prog_data, sizeof(pod->prog_data));
|
||||
- return sizeof(pod->prog_data);
|
||||
-}
|
||||
-
|
||||
-/*
|
||||
- "write" request on "dump" special file.
|
||||
-*/
|
||||
-static ssize_t pod_set_dump(struct device *dev, struct device_attribute *attr,
|
||||
- const char *buf, size_t count)
|
||||
-{
|
||||
- struct usb_interface *interface = to_usb_interface(dev);
|
||||
- struct usb_line6_pod *pod = usb_get_intfdata(interface);
|
||||
-
|
||||
- if (count != sizeof(pod->prog_data)) {
|
||||
- dev_err(pod->line6.ifcdev,
|
||||
- "data block must be exactly %d bytes\n",
|
||||
- (int)sizeof(pod->prog_data));
|
||||
- return -EINVAL;
|
||||
- }
|
||||
-
|
||||
- pod_dump(pod, buf);
|
||||
- return sizeof(pod->prog_data);
|
||||
-}
|
||||
-
|
||||
-/*
|
||||
Identify system parameters related to the tuner.
|
||||
*/
|
||||
static bool pod_is_tuner(int code)
|
||||
@@ -943,7 +892,6 @@ POD_GET_SYSTEM_PARAM(tuner_pitch, 1);
|
||||
|
||||
/* POD special files: */
|
||||
static DEVICE_ATTR(device_id, S_IRUGO, pod_get_device_id, line6_nop_write);
|
||||
-static DEVICE_ATTR(dump, S_IWUSR | S_IRUGO, pod_get_dump, pod_set_dump);
|
||||
static DEVICE_ATTR(dump_buf, S_IWUSR | S_IRUGO, pod_get_dump_buf,
|
||||
pod_set_dump_buf);
|
||||
static DEVICE_ATTR(finish, S_IWUSR, line6_nop_read, pod_set_finish);
|
||||
@@ -1056,7 +1004,6 @@ static int pod_create_files2(struct device *dev)
|
||||
int err;
|
||||
|
||||
CHECK_RETURN(device_create_file(dev, &dev_attr_device_id));
|
||||
- CHECK_RETURN(device_create_file(dev, &dev_attr_dump));
|
||||
CHECK_RETURN(device_create_file(dev, &dev_attr_dump_buf));
|
||||
CHECK_RETURN(device_create_file(dev, &dev_attr_finish));
|
||||
CHECK_RETURN(device_create_file(dev, &dev_attr_firmware_version));
|
||||
@@ -1195,7 +1142,6 @@ void line6_pod_disconnect(struct usb_interface *interface)
|
||||
properties->device_bit, dev);
|
||||
|
||||
device_remove_file(dev, &dev_attr_device_id);
|
||||
- device_remove_file(dev, &dev_attr_dump);
|
||||
device_remove_file(dev, &dev_attr_dump_buf);
|
||||
device_remove_file(dev, &dev_attr_finish);
|
||||
device_remove_file(dev, &dev_attr_firmware_version);
|
84
debian/patches/features/all/line6/0066-staging-line6-drop-dump_buf-sysfs-attr.patch
vendored
Normal file
84
debian/patches/features/all/line6/0066-staging-line6-drop-dump_buf-sysfs-attr.patch
vendored
Normal file
|
@ -0,0 +1,84 @@
|
|||
From: Stefan Hajnoczi <stefanha@gmail.com>
|
||||
Date: Thu, 22 Nov 2012 20:48:45 +0100
|
||||
Subject: [066/106] staging: line6: drop dump_buf sysfs attr
|
||||
|
||||
commit 4fe520dc27d4912913e9ce1cd76d4e9a1c73b93c upstream.
|
||||
|
||||
Signed-off-by: Stefan Hajnoczi <stefanha@gmail.com>
|
||||
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
||||
---
|
||||
drivers/staging/line6/pod.c | 40 ----------------------------------------
|
||||
1 file changed, 40 deletions(-)
|
||||
|
||||
diff --git a/drivers/staging/line6/pod.c b/drivers/staging/line6/pod.c
|
||||
index 56eab0a..c1eb145 100644
|
||||
--- a/drivers/staging/line6/pod.c
|
||||
+++ b/drivers/staging/line6/pod.c
|
||||
@@ -610,42 +610,6 @@ static ssize_t pod_set_system_param_string(struct usb_line6_pod *pod,
|
||||
}
|
||||
|
||||
/*
|
||||
- "read" request on "dump_buf" special file.
|
||||
-*/
|
||||
-static ssize_t pod_get_dump_buf(struct device *dev,
|
||||
- struct device_attribute *attr, char *buf)
|
||||
-{
|
||||
- struct usb_interface *interface = to_usb_interface(dev);
|
||||
- struct usb_line6_pod *pod = usb_get_intfdata(interface);
|
||||
- int retval = line6_dump_wait_interruptible(&pod->dumpreq);
|
||||
- if (retval < 0)
|
||||
- return retval;
|
||||
- memcpy(buf, &pod->prog_data_buf, sizeof(pod->prog_data_buf));
|
||||
- return sizeof(pod->prog_data_buf);
|
||||
-}
|
||||
-
|
||||
-/*
|
||||
- "write" request on "dump_buf" special file.
|
||||
-*/
|
||||
-static ssize_t pod_set_dump_buf(struct device *dev,
|
||||
- struct device_attribute *attr,
|
||||
- const char *buf, size_t count)
|
||||
-{
|
||||
- struct usb_interface *interface = to_usb_interface(dev);
|
||||
- struct usb_line6_pod *pod = usb_get_intfdata(interface);
|
||||
-
|
||||
- if (count != sizeof(pod->prog_data)) {
|
||||
- dev_err(pod->line6.ifcdev,
|
||||
- "data block must be exactly %d bytes\n",
|
||||
- (int)sizeof(pod->prog_data));
|
||||
- return -EINVAL;
|
||||
- }
|
||||
-
|
||||
- memcpy(&pod->prog_data_buf, buf, sizeof(pod->prog_data));
|
||||
- return sizeof(pod->prog_data);
|
||||
-}
|
||||
-
|
||||
-/*
|
||||
"write" request on "finish" special file.
|
||||
*/
|
||||
static ssize_t pod_set_finish(struct device *dev,
|
||||
@@ -892,8 +856,6 @@ POD_GET_SYSTEM_PARAM(tuner_pitch, 1);
|
||||
|
||||
/* POD special files: */
|
||||
static DEVICE_ATTR(device_id, S_IRUGO, pod_get_device_id, line6_nop_write);
|
||||
-static DEVICE_ATTR(dump_buf, S_IWUSR | S_IRUGO, pod_get_dump_buf,
|
||||
- pod_set_dump_buf);
|
||||
static DEVICE_ATTR(finish, S_IWUSR, line6_nop_read, pod_set_finish);
|
||||
static DEVICE_ATTR(firmware_version, S_IRUGO, pod_get_firmware_version,
|
||||
line6_nop_write);
|
||||
@@ -1004,7 +966,6 @@ static int pod_create_files2(struct device *dev)
|
||||
int err;
|
||||
|
||||
CHECK_RETURN(device_create_file(dev, &dev_attr_device_id));
|
||||
- CHECK_RETURN(device_create_file(dev, &dev_attr_dump_buf));
|
||||
CHECK_RETURN(device_create_file(dev, &dev_attr_finish));
|
||||
CHECK_RETURN(device_create_file(dev, &dev_attr_firmware_version));
|
||||
CHECK_RETURN(device_create_file(dev, &dev_attr_midi_postprocess));
|
||||
@@ -1142,7 +1103,6 @@ void line6_pod_disconnect(struct usb_interface *interface)
|
||||
properties->device_bit, dev);
|
||||
|
||||
device_remove_file(dev, &dev_attr_device_id);
|
||||
- device_remove_file(dev, &dev_attr_dump_buf);
|
||||
device_remove_file(dev, &dev_attr_finish);
|
||||
device_remove_file(dev, &dev_attr_firmware_version);
|
||||
device_remove_file(dev, &dev_attr_midi_postprocess);
|
75
debian/patches/features/all/line6/0067-staging-line6-drop-monitor_level-sysfs-attr.patch
vendored
Normal file
75
debian/patches/features/all/line6/0067-staging-line6-drop-monitor_level-sysfs-attr.patch
vendored
Normal file
|
@ -0,0 +1,75 @@
|
|||
From: Stefan Hajnoczi <stefanha@gmail.com>
|
||||
Date: Thu, 22 Nov 2012 20:48:46 +0100
|
||||
Subject: [067/106] staging: line6: drop monitor_level sysfs attr
|
||||
|
||||
commit 410cefa7e9990373d2f46d6ea2c95f1bad284b04 upstream.
|
||||
|
||||
The monitor level can be adjusted using an ALSA volume control.
|
||||
Therefore the sysfs attribute is unnecessary. Note that we leave the
|
||||
monitor_level driver variable so that the ALSA volume control still
|
||||
works.
|
||||
|
||||
Signed-off-by: Stefan Hajnoczi <stefanha@gmail.com>
|
||||
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
||||
---
|
||||
drivers/staging/line6/pod.c | 12 ++++--------
|
||||
1 file changed, 4 insertions(+), 8 deletions(-)
|
||||
|
||||
diff --git a/drivers/staging/line6/pod.c b/drivers/staging/line6/pod.c
|
||||
index c1eb145..5a941fa 100644
|
||||
--- a/drivers/staging/line6/pod.c
|
||||
+++ b/drivers/staging/line6/pod.c
|
||||
@@ -244,8 +244,10 @@ void line6_pod_process_message(struct usb_line6_pod *pod)
|
||||
break;
|
||||
|
||||
switch (buf[6]) {
|
||||
- PROCESS_SYSTEM_PARAM
|
||||
- (monitor_level);
|
||||
+ case POD_monitor_level:
|
||||
+ pod->monitor_level.value = value;
|
||||
+ break;
|
||||
+
|
||||
PROCESS_SYSTEM_PARAM(routing);
|
||||
PROCESS_SYSTEM_PARAM
|
||||
(tuner_mute);
|
||||
@@ -844,7 +846,6 @@ static ssize_t pod_set_ ## code(struct device *dev, \
|
||||
return pod_set_system_param_string(pod, buf, count, POD_ ## code, mask); \
|
||||
}
|
||||
|
||||
-POD_GET_SET_SYSTEM_PARAM(monitor_level, 0xffff, 0);
|
||||
POD_GET_SET_SYSTEM_PARAM(routing, 0x0003, 0);
|
||||
POD_GET_SET_SYSTEM_PARAM(tuner_mute, 0x0001, 0);
|
||||
POD_GET_SET_SYSTEM_PARAM(tuner_freq, 0xffff, 0);
|
||||
@@ -861,8 +862,6 @@ static DEVICE_ATTR(firmware_version, S_IRUGO, pod_get_firmware_version,
|
||||
line6_nop_write);
|
||||
static DEVICE_ATTR(midi_postprocess, S_IWUSR | S_IRUGO,
|
||||
pod_get_midi_postprocess, pod_set_midi_postprocess);
|
||||
-static DEVICE_ATTR(monitor_level, S_IWUSR | S_IRUGO, pod_get_monitor_level,
|
||||
- pod_set_monitor_level);
|
||||
static DEVICE_ATTR(name, S_IRUGO, pod_get_name, line6_nop_write);
|
||||
static DEVICE_ATTR(name_buf, S_IRUGO, pod_get_name_buf, line6_nop_write);
|
||||
static DEVICE_ATTR(retrieve_amp_setup, S_IWUSR, line6_nop_read,
|
||||
@@ -969,7 +968,6 @@ static int pod_create_files2(struct device *dev)
|
||||
CHECK_RETURN(device_create_file(dev, &dev_attr_finish));
|
||||
CHECK_RETURN(device_create_file(dev, &dev_attr_firmware_version));
|
||||
CHECK_RETURN(device_create_file(dev, &dev_attr_midi_postprocess));
|
||||
- CHECK_RETURN(device_create_file(dev, &dev_attr_monitor_level));
|
||||
CHECK_RETURN(device_create_file(dev, &dev_attr_name));
|
||||
CHECK_RETURN(device_create_file(dev, &dev_attr_name_buf));
|
||||
CHECK_RETURN(device_create_file(dev, &dev_attr_retrieve_amp_setup));
|
||||
@@ -1008,7 +1006,6 @@ static int pod_try_init(struct usb_interface *interface,
|
||||
return -ENODEV;
|
||||
|
||||
/* initialize wait queues: */
|
||||
- init_waitqueue_head(&pod->monitor_level.wait);
|
||||
init_waitqueue_head(&pod->routing.wait);
|
||||
init_waitqueue_head(&pod->tuner_mute.wait);
|
||||
init_waitqueue_head(&pod->tuner_freq.wait);
|
||||
@@ -1106,7 +1103,6 @@ void line6_pod_disconnect(struct usb_interface *interface)
|
||||
device_remove_file(dev, &dev_attr_finish);
|
||||
device_remove_file(dev, &dev_attr_firmware_version);
|
||||
device_remove_file(dev, &dev_attr_midi_postprocess);
|
||||
- device_remove_file(dev, &dev_attr_monitor_level);
|
||||
device_remove_file(dev, &dev_attr_name);
|
||||
device_remove_file(dev, &dev_attr_name_buf);
|
||||
device_remove_file(dev, &dev_attr_retrieve_amp_setup);
|
|
@ -0,0 +1,74 @@
|
|||
From: Stefan Hajnoczi <stefanha@gmail.com>
|
||||
Date: Thu, 22 Nov 2012 20:48:47 +0100
|
||||
Subject: [068/106] staging: line6: change monitor_level type ValueWait -> int
|
||||
|
||||
commit 2c35dc2186ba0acbff57846c19cfedee87efd272 upstream.
|
||||
|
||||
The monitor_level sysfs attr has been dropped and we never need to wait
|
||||
on the monitor_level value to change. Switch to a plain int and drop
|
||||
the wait queue.
|
||||
|
||||
Signed-off-by: Stefan Hajnoczi <stefanha@gmail.com>
|
||||
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
||||
---
|
||||
drivers/staging/line6/pod.c | 10 +++++-----
|
||||
drivers/staging/line6/pod.h | 2 +-
|
||||
2 files changed, 6 insertions(+), 6 deletions(-)
|
||||
|
||||
diff --git a/drivers/staging/line6/pod.c b/drivers/staging/line6/pod.c
|
||||
index 5a941fa..165c7ad 100644
|
||||
--- a/drivers/staging/line6/pod.c
|
||||
+++ b/drivers/staging/line6/pod.c
|
||||
@@ -245,7 +245,7 @@ void line6_pod_process_message(struct usb_line6_pod *pod)
|
||||
|
||||
switch (buf[6]) {
|
||||
case POD_monitor_level:
|
||||
- pod->monitor_level.value = value;
|
||||
+ pod->monitor_level = value;
|
||||
break;
|
||||
|
||||
PROCESS_SYSTEM_PARAM(routing);
|
||||
@@ -908,7 +908,7 @@ static int snd_pod_control_monitor_get(struct snd_kcontrol *kcontrol,
|
||||
{
|
||||
struct snd_line6_pcm *line6pcm = snd_kcontrol_chip(kcontrol);
|
||||
struct usb_line6_pod *pod = (struct usb_line6_pod *)line6pcm->line6;
|
||||
- ucontrol->value.integer.value[0] = pod->monitor_level.value;
|
||||
+ ucontrol->value.integer.value[0] = pod->monitor_level;
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -919,10 +919,10 @@ static int snd_pod_control_monitor_put(struct snd_kcontrol *kcontrol,
|
||||
struct snd_line6_pcm *line6pcm = snd_kcontrol_chip(kcontrol);
|
||||
struct usb_line6_pod *pod = (struct usb_line6_pod *)line6pcm->line6;
|
||||
|
||||
- if (ucontrol->value.integer.value[0] == pod->monitor_level.value)
|
||||
+ if (ucontrol->value.integer.value[0] == pod->monitor_level)
|
||||
return 0;
|
||||
|
||||
- pod->monitor_level.value = ucontrol->value.integer.value[0];
|
||||
+ pod->monitor_level = ucontrol->value.integer.value[0];
|
||||
pod_set_system_param_int(pod, ucontrol->value.integer.value[0],
|
||||
POD_monitor_level);
|
||||
return 1;
|
||||
@@ -1053,7 +1053,7 @@ static int pod_try_init(struct usb_interface *interface,
|
||||
*/
|
||||
|
||||
if (pod->line6.properties->capabilities & LINE6_BIT_CONTROL) {
|
||||
- pod->monitor_level.value = POD_system_invalid;
|
||||
+ pod->monitor_level = POD_system_invalid;
|
||||
|
||||
/* initiate startup procedure: */
|
||||
pod_startup1(pod);
|
||||
diff --git a/drivers/staging/line6/pod.h b/drivers/staging/line6/pod.h
|
||||
index b3bf243..d5bbd2f 100644
|
||||
--- a/drivers/staging/line6/pod.h
|
||||
+++ b/drivers/staging/line6/pod.h
|
||||
@@ -121,7 +121,7 @@ struct usb_line6_pod {
|
||||
/**
|
||||
Instrument monitor level.
|
||||
*/
|
||||
- struct ValueWait monitor_level;
|
||||
+ int monitor_level;
|
||||
|
||||
/**
|
||||
Audio routing mode.
|
59
debian/patches/features/all/line6/0069-staging-line6-drop-name-sysfs-attr.patch
vendored
Normal file
59
debian/patches/features/all/line6/0069-staging-line6-drop-name-sysfs-attr.patch
vendored
Normal file
|
@ -0,0 +1,59 @@
|
|||
From: Stefan Hajnoczi <stefanha@gmail.com>
|
||||
Date: Thu, 22 Nov 2012 20:48:48 +0100
|
||||
Subject: [069/106] staging: line6: drop name sysfs attr
|
||||
|
||||
commit 3eac723b4b30a7a85777ea84453ff7f8866331cf upstream.
|
||||
|
||||
Signed-off-by: Stefan Hajnoczi <stefanha@gmail.com>
|
||||
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
||||
---
|
||||
drivers/staging/line6/pod.c | 15 ---------------
|
||||
1 file changed, 15 deletions(-)
|
||||
|
||||
diff --git a/drivers/staging/line6/pod.c b/drivers/staging/line6/pod.c
|
||||
index 165c7ad..76525c5 100644
|
||||
--- a/drivers/staging/line6/pod.c
|
||||
+++ b/drivers/staging/line6/pod.c
|
||||
@@ -476,18 +476,6 @@ static ssize_t get_name_generic(struct usb_line6_pod *pod, const char *str,
|
||||
/*
|
||||
"read" request on "name" special file.
|
||||
*/
|
||||
-static ssize_t pod_get_name(struct device *dev, struct device_attribute *attr,
|
||||
- char *buf)
|
||||
-{
|
||||
- struct usb_interface *interface = to_usb_interface(dev);
|
||||
- struct usb_line6_pod *pod = usb_get_intfdata(interface);
|
||||
- return get_name_generic(pod, pod->prog_data.header + POD_NAME_OFFSET,
|
||||
- buf);
|
||||
-}
|
||||
-
|
||||
-/*
|
||||
- "read" request on "name" special file.
|
||||
-*/
|
||||
static ssize_t pod_get_name_buf(struct device *dev,
|
||||
struct device_attribute *attr, char *buf)
|
||||
{
|
||||
@@ -862,7 +850,6 @@ static DEVICE_ATTR(firmware_version, S_IRUGO, pod_get_firmware_version,
|
||||
line6_nop_write);
|
||||
static DEVICE_ATTR(midi_postprocess, S_IWUSR | S_IRUGO,
|
||||
pod_get_midi_postprocess, pod_set_midi_postprocess);
|
||||
-static DEVICE_ATTR(name, S_IRUGO, pod_get_name, line6_nop_write);
|
||||
static DEVICE_ATTR(name_buf, S_IRUGO, pod_get_name_buf, line6_nop_write);
|
||||
static DEVICE_ATTR(retrieve_amp_setup, S_IWUSR, line6_nop_read,
|
||||
pod_set_retrieve_amp_setup);
|
||||
@@ -968,7 +955,6 @@ static int pod_create_files2(struct device *dev)
|
||||
CHECK_RETURN(device_create_file(dev, &dev_attr_finish));
|
||||
CHECK_RETURN(device_create_file(dev, &dev_attr_firmware_version));
|
||||
CHECK_RETURN(device_create_file(dev, &dev_attr_midi_postprocess));
|
||||
- CHECK_RETURN(device_create_file(dev, &dev_attr_name));
|
||||
CHECK_RETURN(device_create_file(dev, &dev_attr_name_buf));
|
||||
CHECK_RETURN(device_create_file(dev, &dev_attr_retrieve_amp_setup));
|
||||
CHECK_RETURN(device_create_file(dev, &dev_attr_retrieve_channel));
|
||||
@@ -1103,7 +1089,6 @@ void line6_pod_disconnect(struct usb_interface *interface)
|
||||
device_remove_file(dev, &dev_attr_finish);
|
||||
device_remove_file(dev, &dev_attr_firmware_version);
|
||||
device_remove_file(dev, &dev_attr_midi_postprocess);
|
||||
- device_remove_file(dev, &dev_attr_name);
|
||||
device_remove_file(dev, &dev_attr_name_buf);
|
||||
device_remove_file(dev, &dev_attr_retrieve_amp_setup);
|
||||
device_remove_file(dev, &dev_attr_retrieve_channel);
|
87
debian/patches/features/all/line6/0070-staging-line6-drop-name_buf-sysfs-attr.patch
vendored
Normal file
87
debian/patches/features/all/line6/0070-staging-line6-drop-name_buf-sysfs-attr.patch
vendored
Normal file
|
@ -0,0 +1,87 @@
|
|||
From: Stefan Hajnoczi <stefanha@gmail.com>
|
||||
Date: Thu, 22 Nov 2012 20:48:49 +0100
|
||||
Subject: [070/106] staging: line6: drop name_buf sysfs attr
|
||||
|
||||
commit c62c4df3f934582d26434a371e7676776fcd0fda upstream.
|
||||
|
||||
Signed-off-by: Stefan Hajnoczi <stefanha@gmail.com>
|
||||
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
||||
---
|
||||
drivers/staging/line6/pod.c | 43 -------------------------------------------
|
||||
1 file changed, 43 deletions(-)
|
||||
|
||||
diff --git a/drivers/staging/line6/pod.c b/drivers/staging/line6/pod.c
|
||||
index 76525c5..dbf821e 100644
|
||||
--- a/drivers/staging/line6/pod.c
|
||||
+++ b/drivers/staging/line6/pod.c
|
||||
@@ -447,46 +447,6 @@ static ssize_t pod_send_retrieve_command(struct device *dev, const char *buf,
|
||||
}
|
||||
|
||||
/*
|
||||
- Generic get name function.
|
||||
-*/
|
||||
-static ssize_t get_name_generic(struct usb_line6_pod *pod, const char *str,
|
||||
- char *buf)
|
||||
-{
|
||||
- int length = 0;
|
||||
- const char *p1;
|
||||
- char *p2;
|
||||
- char *last_non_space = buf;
|
||||
-
|
||||
- int retval = line6_dump_wait_interruptible(&pod->dumpreq);
|
||||
- if (retval < 0)
|
||||
- return retval;
|
||||
-
|
||||
- for (p1 = str, p2 = buf; *p1; ++p1, ++p2) {
|
||||
- *p2 = *p1;
|
||||
- if (*p2 != ' ')
|
||||
- last_non_space = p2;
|
||||
- if (++length == POD_NAME_LENGTH)
|
||||
- break;
|
||||
- }
|
||||
-
|
||||
- *(last_non_space + 1) = '\n';
|
||||
- return last_non_space - buf + 2;
|
||||
-}
|
||||
-
|
||||
-/*
|
||||
- "read" request on "name" special file.
|
||||
-*/
|
||||
-static ssize_t pod_get_name_buf(struct device *dev,
|
||||
- struct device_attribute *attr, char *buf)
|
||||
-{
|
||||
- struct usb_interface *interface = to_usb_interface(dev);
|
||||
- struct usb_line6_pod *pod = usb_get_intfdata(interface);
|
||||
- return get_name_generic(pod,
|
||||
- pod->prog_data_buf.header + POD_NAME_OFFSET,
|
||||
- buf);
|
||||
-}
|
||||
-
|
||||
-/*
|
||||
Identify system parameters related to the tuner.
|
||||
*/
|
||||
static bool pod_is_tuner(int code)
|
||||
@@ -850,7 +810,6 @@ static DEVICE_ATTR(firmware_version, S_IRUGO, pod_get_firmware_version,
|
||||
line6_nop_write);
|
||||
static DEVICE_ATTR(midi_postprocess, S_IWUSR | S_IRUGO,
|
||||
pod_get_midi_postprocess, pod_set_midi_postprocess);
|
||||
-static DEVICE_ATTR(name_buf, S_IRUGO, pod_get_name_buf, line6_nop_write);
|
||||
static DEVICE_ATTR(retrieve_amp_setup, S_IWUSR, line6_nop_read,
|
||||
pod_set_retrieve_amp_setup);
|
||||
static DEVICE_ATTR(retrieve_channel, S_IWUSR, line6_nop_read,
|
||||
@@ -955,7 +914,6 @@ static int pod_create_files2(struct device *dev)
|
||||
CHECK_RETURN(device_create_file(dev, &dev_attr_finish));
|
||||
CHECK_RETURN(device_create_file(dev, &dev_attr_firmware_version));
|
||||
CHECK_RETURN(device_create_file(dev, &dev_attr_midi_postprocess));
|
||||
- CHECK_RETURN(device_create_file(dev, &dev_attr_name_buf));
|
||||
CHECK_RETURN(device_create_file(dev, &dev_attr_retrieve_amp_setup));
|
||||
CHECK_RETURN(device_create_file(dev, &dev_attr_retrieve_channel));
|
||||
CHECK_RETURN(device_create_file(dev, &dev_attr_retrieve_effects_setup));
|
||||
@@ -1089,7 +1047,6 @@ void line6_pod_disconnect(struct usb_interface *interface)
|
||||
device_remove_file(dev, &dev_attr_finish);
|
||||
device_remove_file(dev, &dev_attr_firmware_version);
|
||||
device_remove_file(dev, &dev_attr_midi_postprocess);
|
||||
- device_remove_file(dev, &dev_attr_name_buf);
|
||||
device_remove_file(dev, &dev_attr_retrieve_amp_setup);
|
||||
device_remove_file(dev, &dev_attr_retrieve_channel);
|
||||
device_remove_file(dev,
|
58
debian/patches/features/all/line6/0071-staging-line6-drop-retrieve_amp_setup-sysfs-attr.patch
vendored
Normal file
58
debian/patches/features/all/line6/0071-staging-line6-drop-retrieve_amp_setup-sysfs-attr.patch
vendored
Normal file
|
@ -0,0 +1,58 @@
|
|||
From: Stefan Hajnoczi <stefanha@gmail.com>
|
||||
Date: Thu, 22 Nov 2012 20:48:50 +0100
|
||||
Subject: [071/106] staging: line6: drop retrieve_amp_setup sysfs attr
|
||||
|
||||
commit 390174a9353b41f6aaab2ef90a4e94b56ec6974a upstream.
|
||||
|
||||
Signed-off-by: Stefan Hajnoczi <stefanha@gmail.com>
|
||||
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
||||
---
|
||||
drivers/staging/line6/pod.c | 14 --------------
|
||||
1 file changed, 14 deletions(-)
|
||||
|
||||
diff --git a/drivers/staging/line6/pod.c b/drivers/staging/line6/pod.c
|
||||
index dbf821e..6d6cd5a 100644
|
||||
--- a/drivers/staging/line6/pod.c
|
||||
+++ b/drivers/staging/line6/pod.c
|
||||
@@ -628,16 +628,6 @@ static ssize_t pod_set_retrieve_effects_setup(struct device *dev,
|
||||
}
|
||||
|
||||
/*
|
||||
- "write" request on "retrieve_amp_setup" special file.
|
||||
-*/
|
||||
-static ssize_t pod_set_retrieve_amp_setup(struct device *dev,
|
||||
- struct device_attribute *attr,
|
||||
- const char *buf, size_t count)
|
||||
-{
|
||||
- return pod_send_retrieve_command(dev, buf, count, 0x0040, 0x0100);
|
||||
-}
|
||||
-
|
||||
-/*
|
||||
"read" request on "midi_postprocess" special file.
|
||||
*/
|
||||
static ssize_t pod_get_midi_postprocess(struct device *dev,
|
||||
@@ -810,8 +800,6 @@ static DEVICE_ATTR(firmware_version, S_IRUGO, pod_get_firmware_version,
|
||||
line6_nop_write);
|
||||
static DEVICE_ATTR(midi_postprocess, S_IWUSR | S_IRUGO,
|
||||
pod_get_midi_postprocess, pod_set_midi_postprocess);
|
||||
-static DEVICE_ATTR(retrieve_amp_setup, S_IWUSR, line6_nop_read,
|
||||
- pod_set_retrieve_amp_setup);
|
||||
static DEVICE_ATTR(retrieve_channel, S_IWUSR, line6_nop_read,
|
||||
pod_set_retrieve_channel);
|
||||
static DEVICE_ATTR(retrieve_effects_setup, S_IWUSR, line6_nop_read,
|
||||
@@ -914,7 +902,6 @@ static int pod_create_files2(struct device *dev)
|
||||
CHECK_RETURN(device_create_file(dev, &dev_attr_finish));
|
||||
CHECK_RETURN(device_create_file(dev, &dev_attr_firmware_version));
|
||||
CHECK_RETURN(device_create_file(dev, &dev_attr_midi_postprocess));
|
||||
- CHECK_RETURN(device_create_file(dev, &dev_attr_retrieve_amp_setup));
|
||||
CHECK_RETURN(device_create_file(dev, &dev_attr_retrieve_channel));
|
||||
CHECK_RETURN(device_create_file(dev, &dev_attr_retrieve_effects_setup));
|
||||
CHECK_RETURN(device_create_file(dev, &dev_attr_routing));
|
||||
@@ -1047,7 +1034,6 @@ void line6_pod_disconnect(struct usb_interface *interface)
|
||||
device_remove_file(dev, &dev_attr_finish);
|
||||
device_remove_file(dev, &dev_attr_firmware_version);
|
||||
device_remove_file(dev, &dev_attr_midi_postprocess);
|
||||
- device_remove_file(dev, &dev_attr_retrieve_amp_setup);
|
||||
device_remove_file(dev, &dev_attr_retrieve_channel);
|
||||
device_remove_file(dev,
|
||||
&dev_attr_retrieve_effects_setup);
|
58
debian/patches/features/all/line6/0072-staging-line6-drop-retrieve_channel-sysfs-attr.patch
vendored
Normal file
58
debian/patches/features/all/line6/0072-staging-line6-drop-retrieve_channel-sysfs-attr.patch
vendored
Normal file
|
@ -0,0 +1,58 @@
|
|||
From: Stefan Hajnoczi <stefanha@gmail.com>
|
||||
Date: Thu, 22 Nov 2012 20:48:51 +0100
|
||||
Subject: [072/106] staging: line6: drop retrieve_channel sysfs attr
|
||||
|
||||
commit 439f21fa2212fb839c5324c7fdfe6b04e9760e00 upstream.
|
||||
|
||||
Signed-off-by: Stefan Hajnoczi <stefanha@gmail.com>
|
||||
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
||||
---
|
||||
drivers/staging/line6/pod.c | 14 --------------
|
||||
1 file changed, 14 deletions(-)
|
||||
|
||||
diff --git a/drivers/staging/line6/pod.c b/drivers/staging/line6/pod.c
|
||||
index 6d6cd5a..bc65fc7 100644
|
||||
--- a/drivers/staging/line6/pod.c
|
||||
+++ b/drivers/staging/line6/pod.c
|
||||
@@ -608,16 +608,6 @@ static ssize_t pod_set_store_amp_setup(struct device *dev,
|
||||
}
|
||||
|
||||
/*
|
||||
- "write" request on "retrieve_channel" special file.
|
||||
-*/
|
||||
-static ssize_t pod_set_retrieve_channel(struct device *dev,
|
||||
- struct device_attribute *attr,
|
||||
- const char *buf, size_t count)
|
||||
-{
|
||||
- return pod_send_retrieve_command(dev, buf, count, 0x0000, 0x00c0);
|
||||
-}
|
||||
-
|
||||
-/*
|
||||
"write" request on "retrieve_effects_setup" special file.
|
||||
*/
|
||||
static ssize_t pod_set_retrieve_effects_setup(struct device *dev,
|
||||
@@ -800,8 +790,6 @@ static DEVICE_ATTR(firmware_version, S_IRUGO, pod_get_firmware_version,
|
||||
line6_nop_write);
|
||||
static DEVICE_ATTR(midi_postprocess, S_IWUSR | S_IRUGO,
|
||||
pod_get_midi_postprocess, pod_set_midi_postprocess);
|
||||
-static DEVICE_ATTR(retrieve_channel, S_IWUSR, line6_nop_read,
|
||||
- pod_set_retrieve_channel);
|
||||
static DEVICE_ATTR(retrieve_effects_setup, S_IWUSR, line6_nop_read,
|
||||
pod_set_retrieve_effects_setup);
|
||||
static DEVICE_ATTR(routing, S_IWUSR | S_IRUGO, pod_get_routing,
|
||||
@@ -902,7 +890,6 @@ static int pod_create_files2(struct device *dev)
|
||||
CHECK_RETURN(device_create_file(dev, &dev_attr_finish));
|
||||
CHECK_RETURN(device_create_file(dev, &dev_attr_firmware_version));
|
||||
CHECK_RETURN(device_create_file(dev, &dev_attr_midi_postprocess));
|
||||
- CHECK_RETURN(device_create_file(dev, &dev_attr_retrieve_channel));
|
||||
CHECK_RETURN(device_create_file(dev, &dev_attr_retrieve_effects_setup));
|
||||
CHECK_RETURN(device_create_file(dev, &dev_attr_routing));
|
||||
CHECK_RETURN(device_create_file(dev, &dev_attr_serial_number));
|
||||
@@ -1034,7 +1021,6 @@ void line6_pod_disconnect(struct usb_interface *interface)
|
||||
device_remove_file(dev, &dev_attr_finish);
|
||||
device_remove_file(dev, &dev_attr_firmware_version);
|
||||
device_remove_file(dev, &dev_attr_midi_postprocess);
|
||||
- device_remove_file(dev, &dev_attr_retrieve_channel);
|
||||
device_remove_file(dev,
|
||||
&dev_attr_retrieve_effects_setup);
|
||||
device_remove_file(dev, &dev_attr_routing);
|
|
@ -0,0 +1,99 @@
|
|||
From: Stefan Hajnoczi <stefanha@gmail.com>
|
||||
Date: Thu, 22 Nov 2012 20:48:52 +0100
|
||||
Subject: [073/106] staging: line6: drop retrieve_effects_setup sysfs attr
|
||||
|
||||
commit 7404419c903087b9c9c73c69888c9af2b9d0f733 upstream.
|
||||
|
||||
Signed-off-by: Stefan Hajnoczi <stefanha@gmail.com>
|
||||
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
||||
---
|
||||
drivers/staging/line6/pod.c | 48 -------------------------------------------
|
||||
1 file changed, 48 deletions(-)
|
||||
|
||||
diff --git a/drivers/staging/line6/pod.c b/drivers/staging/line6/pod.c
|
||||
index bc65fc7..95769c5 100644
|
||||
--- a/drivers/staging/line6/pod.c
|
||||
+++ b/drivers/staging/line6/pod.c
|
||||
@@ -381,39 +381,6 @@ static int pod_resolve(const char *buf, short block0, short block1,
|
||||
}
|
||||
|
||||
/*
|
||||
- Send command to store channel/effects setup/amp setup to PODxt Pro.
|
||||
-*/
|
||||
-static ssize_t pod_send_store_command(struct device *dev, const char *buf,
|
||||
- size_t count, short block0, short block1)
|
||||
-{
|
||||
- struct usb_interface *interface = to_usb_interface(dev);
|
||||
- struct usb_line6_pod *pod = usb_get_intfdata(interface);
|
||||
- int ret;
|
||||
- int size = 3 + sizeof(pod->prog_data_buf);
|
||||
- char *sysex = pod_alloc_sysex_buffer(pod, POD_SYSEX_STORE, size);
|
||||
-
|
||||
- if (!sysex)
|
||||
- return 0;
|
||||
-
|
||||
- /* Don't know what this is good for, but PODxt Pro transmits it, so we
|
||||
- * also do... */
|
||||
- sysex[SYSEX_DATA_OFS] = 5;
|
||||
- ret = pod_resolve(buf, block0, block1, sysex + SYSEX_DATA_OFS + 1);
|
||||
- if (ret) {
|
||||
- kfree(sysex);
|
||||
- return ret;
|
||||
- }
|
||||
-
|
||||
- memcpy(sysex + SYSEX_DATA_OFS + 3, &pod->prog_data_buf,
|
||||
- sizeof(pod->prog_data_buf));
|
||||
-
|
||||
- line6_send_sysex_message(&pod->line6, sysex, size);
|
||||
- kfree(sysex);
|
||||
- /* needs some delay here on AMD64 platform */
|
||||
- return count;
|
||||
-}
|
||||
-
|
||||
-/*
|
||||
Send command to retrieve channel/effects setup/amp setup to PODxt Pro.
|
||||
*/
|
||||
static ssize_t pod_send_retrieve_command(struct device *dev, const char *buf,
|
||||
@@ -608,16 +575,6 @@ static ssize_t pod_set_store_amp_setup(struct device *dev,
|
||||
}
|
||||
|
||||
/*
|
||||
- "write" request on "retrieve_effects_setup" special file.
|
||||
-*/
|
||||
-static ssize_t pod_set_retrieve_effects_setup(struct device *dev,
|
||||
- struct device_attribute *attr,
|
||||
- const char *buf, size_t count)
|
||||
-{
|
||||
- return pod_send_retrieve_command(dev, buf, count, 0x0080, 0x0080);
|
||||
-}
|
||||
-
|
||||
-/*
|
||||
"read" request on "midi_postprocess" special file.
|
||||
*/
|
||||
static ssize_t pod_get_midi_postprocess(struct device *dev,
|
||||
@@ -790,8 +747,6 @@ static DEVICE_ATTR(firmware_version, S_IRUGO, pod_get_firmware_version,
|
||||
line6_nop_write);
|
||||
static DEVICE_ATTR(midi_postprocess, S_IWUSR | S_IRUGO,
|
||||
pod_get_midi_postprocess, pod_set_midi_postprocess);
|
||||
-static DEVICE_ATTR(retrieve_effects_setup, S_IWUSR, line6_nop_read,
|
||||
- pod_set_retrieve_effects_setup);
|
||||
static DEVICE_ATTR(routing, S_IWUSR | S_IRUGO, pod_get_routing,
|
||||
pod_set_routing);
|
||||
static DEVICE_ATTR(serial_number, S_IRUGO, pod_get_serial_number,
|
||||
@@ -890,7 +845,6 @@ static int pod_create_files2(struct device *dev)
|
||||
CHECK_RETURN(device_create_file(dev, &dev_attr_finish));
|
||||
CHECK_RETURN(device_create_file(dev, &dev_attr_firmware_version));
|
||||
CHECK_RETURN(device_create_file(dev, &dev_attr_midi_postprocess));
|
||||
- CHECK_RETURN(device_create_file(dev, &dev_attr_retrieve_effects_setup));
|
||||
CHECK_RETURN(device_create_file(dev, &dev_attr_routing));
|
||||
CHECK_RETURN(device_create_file(dev, &dev_attr_serial_number));
|
||||
CHECK_RETURN(device_create_file(dev, &dev_attr_store_amp_setup));
|
||||
@@ -1021,8 +975,6 @@ void line6_pod_disconnect(struct usb_interface *interface)
|
||||
device_remove_file(dev, &dev_attr_finish);
|
||||
device_remove_file(dev, &dev_attr_firmware_version);
|
||||
device_remove_file(dev, &dev_attr_midi_postprocess);
|
||||
- device_remove_file(dev,
|
||||
- &dev_attr_retrieve_effects_setup);
|
||||
device_remove_file(dev, &dev_attr_routing);
|
||||
device_remove_file(dev, &dev_attr_serial_number);
|
||||
device_remove_file(dev, &dev_attr_store_amp_setup);
|
58
debian/patches/features/all/line6/0074-staging-line6-drop-store_amp_setup-sysfs-attr.patch
vendored
Normal file
58
debian/patches/features/all/line6/0074-staging-line6-drop-store_amp_setup-sysfs-attr.patch
vendored
Normal file
|
@ -0,0 +1,58 @@
|
|||
From: Stefan Hajnoczi <stefanha@gmail.com>
|
||||
Date: Thu, 22 Nov 2012 20:48:53 +0100
|
||||
Subject: [074/106] staging: line6: drop store_amp_setup sysfs attr
|
||||
|
||||
commit 4c41d9210eb851b7c28c3af21c5069e68ec14497 upstream.
|
||||
|
||||
Signed-off-by: Stefan Hajnoczi <stefanha@gmail.com>
|
||||
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
||||
---
|
||||
drivers/staging/line6/pod.c | 14 --------------
|
||||
1 file changed, 14 deletions(-)
|
||||
|
||||
diff --git a/drivers/staging/line6/pod.c b/drivers/staging/line6/pod.c
|
||||
index 95769c5..deafee9 100644
|
||||
--- a/drivers/staging/line6/pod.c
|
||||
+++ b/drivers/staging/line6/pod.c
|
||||
@@ -565,16 +565,6 @@ static ssize_t pod_set_store_effects_setup(struct device *dev,
|
||||
}
|
||||
|
||||
/*
|
||||
- "write" request on "store_amp_setup" special file.
|
||||
-*/
|
||||
-static ssize_t pod_set_store_amp_setup(struct device *dev,
|
||||
- struct device_attribute *attr,
|
||||
- const char *buf, size_t count)
|
||||
-{
|
||||
- return pod_send_store_command(dev, buf, count, 0x0040, 0x0100);
|
||||
-}
|
||||
-
|
||||
-/*
|
||||
"read" request on "midi_postprocess" special file.
|
||||
*/
|
||||
static ssize_t pod_get_midi_postprocess(struct device *dev,
|
||||
@@ -751,8 +741,6 @@ static DEVICE_ATTR(routing, S_IWUSR | S_IRUGO, pod_get_routing,
|
||||
pod_set_routing);
|
||||
static DEVICE_ATTR(serial_number, S_IRUGO, pod_get_serial_number,
|
||||
line6_nop_write);
|
||||
-static DEVICE_ATTR(store_amp_setup, S_IWUSR, line6_nop_read,
|
||||
- pod_set_store_amp_setup);
|
||||
static DEVICE_ATTR(store_channel, S_IWUSR, line6_nop_read,
|
||||
pod_set_store_channel);
|
||||
static DEVICE_ATTR(store_effects_setup, S_IWUSR, line6_nop_read,
|
||||
@@ -847,7 +835,6 @@ static int pod_create_files2(struct device *dev)
|
||||
CHECK_RETURN(device_create_file(dev, &dev_attr_midi_postprocess));
|
||||
CHECK_RETURN(device_create_file(dev, &dev_attr_routing));
|
||||
CHECK_RETURN(device_create_file(dev, &dev_attr_serial_number));
|
||||
- CHECK_RETURN(device_create_file(dev, &dev_attr_store_amp_setup));
|
||||
CHECK_RETURN(device_create_file(dev, &dev_attr_store_channel));
|
||||
CHECK_RETURN(device_create_file(dev, &dev_attr_store_effects_setup));
|
||||
CHECK_RETURN(device_create_file(dev, &dev_attr_tuner_freq));
|
||||
@@ -977,7 +964,6 @@ void line6_pod_disconnect(struct usb_interface *interface)
|
||||
device_remove_file(dev, &dev_attr_midi_postprocess);
|
||||
device_remove_file(dev, &dev_attr_routing);
|
||||
device_remove_file(dev, &dev_attr_serial_number);
|
||||
- device_remove_file(dev, &dev_attr_store_amp_setup);
|
||||
device_remove_file(dev, &dev_attr_store_channel);
|
||||
device_remove_file(dev, &dev_attr_store_effects_setup);
|
||||
device_remove_file(dev, &dev_attr_tuner_freq);
|
58
debian/patches/features/all/line6/0075-staging-line6-drop-store_channel-sysfs-attr.patch
vendored
Normal file
58
debian/patches/features/all/line6/0075-staging-line6-drop-store_channel-sysfs-attr.patch
vendored
Normal file
|
@ -0,0 +1,58 @@
|
|||
From: Stefan Hajnoczi <stefanha@gmail.com>
|
||||
Date: Thu, 22 Nov 2012 20:48:54 +0100
|
||||
Subject: [075/106] staging: line6: drop store_channel sysfs attr
|
||||
|
||||
commit e6bf11a7a70cbe63ad68ce783815b7fc76e791fe upstream.
|
||||
|
||||
Signed-off-by: Stefan Hajnoczi <stefanha@gmail.com>
|
||||
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
||||
---
|
||||
drivers/staging/line6/pod.c | 14 --------------
|
||||
1 file changed, 14 deletions(-)
|
||||
|
||||
diff --git a/drivers/staging/line6/pod.c b/drivers/staging/line6/pod.c
|
||||
index deafee9..abf7ebe 100644
|
||||
--- a/drivers/staging/line6/pod.c
|
||||
+++ b/drivers/staging/line6/pod.c
|
||||
@@ -545,16 +545,6 @@ static ssize_t pod_set_finish(struct device *dev,
|
||||
}
|
||||
|
||||
/*
|
||||
- "write" request on "store_channel" special file.
|
||||
-*/
|
||||
-static ssize_t pod_set_store_channel(struct device *dev,
|
||||
- struct device_attribute *attr,
|
||||
- const char *buf, size_t count)
|
||||
-{
|
||||
- return pod_send_store_command(dev, buf, count, 0x0000, 0x00c0);
|
||||
-}
|
||||
-
|
||||
-/*
|
||||
"write" request on "store_effects_setup" special file.
|
||||
*/
|
||||
static ssize_t pod_set_store_effects_setup(struct device *dev,
|
||||
@@ -741,8 +731,6 @@ static DEVICE_ATTR(routing, S_IWUSR | S_IRUGO, pod_get_routing,
|
||||
pod_set_routing);
|
||||
static DEVICE_ATTR(serial_number, S_IRUGO, pod_get_serial_number,
|
||||
line6_nop_write);
|
||||
-static DEVICE_ATTR(store_channel, S_IWUSR, line6_nop_read,
|
||||
- pod_set_store_channel);
|
||||
static DEVICE_ATTR(store_effects_setup, S_IWUSR, line6_nop_read,
|
||||
pod_set_store_effects_setup);
|
||||
static DEVICE_ATTR(tuner_freq, S_IWUSR | S_IRUGO, pod_get_tuner_freq,
|
||||
@@ -835,7 +823,6 @@ static int pod_create_files2(struct device *dev)
|
||||
CHECK_RETURN(device_create_file(dev, &dev_attr_midi_postprocess));
|
||||
CHECK_RETURN(device_create_file(dev, &dev_attr_routing));
|
||||
CHECK_RETURN(device_create_file(dev, &dev_attr_serial_number));
|
||||
- CHECK_RETURN(device_create_file(dev, &dev_attr_store_channel));
|
||||
CHECK_RETURN(device_create_file(dev, &dev_attr_store_effects_setup));
|
||||
CHECK_RETURN(device_create_file(dev, &dev_attr_tuner_freq));
|
||||
CHECK_RETURN(device_create_file(dev, &dev_attr_tuner_mute));
|
||||
@@ -964,7 +951,6 @@ void line6_pod_disconnect(struct usb_interface *interface)
|
||||
device_remove_file(dev, &dev_attr_midi_postprocess);
|
||||
device_remove_file(dev, &dev_attr_routing);
|
||||
device_remove_file(dev, &dev_attr_serial_number);
|
||||
- device_remove_file(dev, &dev_attr_store_channel);
|
||||
device_remove_file(dev, &dev_attr_store_effects_setup);
|
||||
device_remove_file(dev, &dev_attr_tuner_freq);
|
||||
device_remove_file(dev, &dev_attr_tuner_mute);
|
119
debian/patches/features/all/line6/0076-staging-line6-drop-store_effects_setup-sysfs-attr.patch
vendored
Normal file
119
debian/patches/features/all/line6/0076-staging-line6-drop-store_effects_setup-sysfs-attr.patch
vendored
Normal file
|
@ -0,0 +1,119 @@
|
|||
From: Stefan Hajnoczi <stefanha@gmail.com>
|
||||
Date: Thu, 22 Nov 2012 20:48:55 +0100
|
||||
Subject: [076/106] staging: line6: drop store_effects_setup sysfs attr
|
||||
|
||||
commit d249652ac4649553ca5b58dc4bf8c6b7c18a0c80 upstream.
|
||||
|
||||
Signed-off-by: Stefan Hajnoczi <stefanha@gmail.com>
|
||||
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
||||
---
|
||||
drivers/staging/line6/pod.c | 68 -------------------------------------------
|
||||
1 file changed, 68 deletions(-)
|
||||
|
||||
diff --git a/drivers/staging/line6/pod.c b/drivers/staging/line6/pod.c
|
||||
index abf7ebe..949b8f7 100644
|
||||
--- a/drivers/staging/line6/pod.c
|
||||
+++ b/drivers/staging/line6/pod.c
|
||||
@@ -360,60 +360,6 @@ void line6_pod_transmit_parameter(struct usb_line6_pod *pod, int param,
|
||||
}
|
||||
|
||||
/*
|
||||
- Resolve value to memory location.
|
||||
-*/
|
||||
-static int pod_resolve(const char *buf, short block0, short block1,
|
||||
- unsigned char *location)
|
||||
-{
|
||||
- u8 value;
|
||||
- short block;
|
||||
- int ret;
|
||||
-
|
||||
- ret = kstrtou8(buf, 10, &value);
|
||||
- if (ret)
|
||||
- return ret;
|
||||
-
|
||||
- block = (value < 0x40) ? block0 : block1;
|
||||
- value &= 0x3f;
|
||||
- location[0] = block >> 7;
|
||||
- location[1] = value | (block & 0x7f);
|
||||
- return 0;
|
||||
-}
|
||||
-
|
||||
-/*
|
||||
- Send command to retrieve channel/effects setup/amp setup to PODxt Pro.
|
||||
-*/
|
||||
-static ssize_t pod_send_retrieve_command(struct device *dev, const char *buf,
|
||||
- size_t count, short block0,
|
||||
- short block1)
|
||||
-{
|
||||
- struct usb_interface *interface = to_usb_interface(dev);
|
||||
- struct usb_line6_pod *pod = usb_get_intfdata(interface);
|
||||
- int ret;
|
||||
- int size = 4;
|
||||
- char *sysex = pod_alloc_sysex_buffer(pod, POD_SYSEX_DUMPMEM, size);
|
||||
-
|
||||
- if (!sysex)
|
||||
- return 0;
|
||||
-
|
||||
- ret = pod_resolve(buf, block0, block1, sysex + SYSEX_DATA_OFS);
|
||||
- if (ret) {
|
||||
- kfree(sysex);
|
||||
- return ret;
|
||||
- }
|
||||
- sysex[SYSEX_DATA_OFS + 2] = 0;
|
||||
- sysex[SYSEX_DATA_OFS + 3] = 0;
|
||||
- line6_dump_started(&pod->dumpreq, POD_DUMP_MEMORY);
|
||||
-
|
||||
- if (line6_send_sysex_message(&pod->line6, sysex, size) < size)
|
||||
- line6_dump_finished(&pod->dumpreq);
|
||||
-
|
||||
- kfree(sysex);
|
||||
- /* needs some delay here on AMD64 platform */
|
||||
- return count;
|
||||
-}
|
||||
-
|
||||
-/*
|
||||
Identify system parameters related to the tuner.
|
||||
*/
|
||||
static bool pod_is_tuner(int code)
|
||||
@@ -545,16 +491,6 @@ static ssize_t pod_set_finish(struct device *dev,
|
||||
}
|
||||
|
||||
/*
|
||||
- "write" request on "store_effects_setup" special file.
|
||||
-*/
|
||||
-static ssize_t pod_set_store_effects_setup(struct device *dev,
|
||||
- struct device_attribute *attr,
|
||||
- const char *buf, size_t count)
|
||||
-{
|
||||
- return pod_send_store_command(dev, buf, count, 0x0080, 0x0080);
|
||||
-}
|
||||
-
|
||||
-/*
|
||||
"read" request on "midi_postprocess" special file.
|
||||
*/
|
||||
static ssize_t pod_get_midi_postprocess(struct device *dev,
|
||||
@@ -731,8 +667,6 @@ static DEVICE_ATTR(routing, S_IWUSR | S_IRUGO, pod_get_routing,
|
||||
pod_set_routing);
|
||||
static DEVICE_ATTR(serial_number, S_IRUGO, pod_get_serial_number,
|
||||
line6_nop_write);
|
||||
-static DEVICE_ATTR(store_effects_setup, S_IWUSR, line6_nop_read,
|
||||
- pod_set_store_effects_setup);
|
||||
static DEVICE_ATTR(tuner_freq, S_IWUSR | S_IRUGO, pod_get_tuner_freq,
|
||||
pod_set_tuner_freq);
|
||||
static DEVICE_ATTR(tuner_mute, S_IWUSR | S_IRUGO, pod_get_tuner_mute,
|
||||
@@ -823,7 +757,6 @@ static int pod_create_files2(struct device *dev)
|
||||
CHECK_RETURN(device_create_file(dev, &dev_attr_midi_postprocess));
|
||||
CHECK_RETURN(device_create_file(dev, &dev_attr_routing));
|
||||
CHECK_RETURN(device_create_file(dev, &dev_attr_serial_number));
|
||||
- CHECK_RETURN(device_create_file(dev, &dev_attr_store_effects_setup));
|
||||
CHECK_RETURN(device_create_file(dev, &dev_attr_tuner_freq));
|
||||
CHECK_RETURN(device_create_file(dev, &dev_attr_tuner_mute));
|
||||
CHECK_RETURN(device_create_file(dev, &dev_attr_tuner_note));
|
||||
@@ -951,7 +884,6 @@ void line6_pod_disconnect(struct usb_interface *interface)
|
||||
device_remove_file(dev, &dev_attr_midi_postprocess);
|
||||
device_remove_file(dev, &dev_attr_routing);
|
||||
device_remove_file(dev, &dev_attr_serial_number);
|
||||
- device_remove_file(dev, &dev_attr_store_effects_setup);
|
||||
device_remove_file(dev, &dev_attr_tuner_freq);
|
||||
device_remove_file(dev, &dev_attr_tuner_mute);
|
||||
device_remove_file(dev, &dev_attr_tuner_note);
|
94
debian/patches/features/all/line6/0077-staging-line6-drop-routing-sysfs-attr.patch
vendored
Normal file
94
debian/patches/features/all/line6/0077-staging-line6-drop-routing-sysfs-attr.patch
vendored
Normal file
|
@ -0,0 +1,94 @@
|
|||
From: Stefan Hajnoczi <stefanha@gmail.com>
|
||||
Date: Thu, 22 Nov 2012 20:48:56 +0100
|
||||
Subject: [077/106] staging: line6: drop routing sysfs attr
|
||||
|
||||
commit 4cade5c09ff0e483afbeb7546f6c87e708cdda00 upstream.
|
||||
|
||||
Signed-off-by: Stefan Hajnoczi <stefanha@gmail.com>
|
||||
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
||||
---
|
||||
drivers/staging/line6/pod.c | 8 --------
|
||||
drivers/staging/line6/pod.h | 9 ---------
|
||||
2 files changed, 17 deletions(-)
|
||||
|
||||
diff --git a/drivers/staging/line6/pod.c b/drivers/staging/line6/pod.c
|
||||
index 949b8f7..f84a4ea 100644
|
||||
--- a/drivers/staging/line6/pod.c
|
||||
+++ b/drivers/staging/line6/pod.c
|
||||
@@ -40,7 +40,6 @@ enum {
|
||||
|
||||
enum {
|
||||
POD_monitor_level = 0x04,
|
||||
- POD_routing = 0x05,
|
||||
POD_tuner_mute = 0x13,
|
||||
POD_tuner_freq = 0x15,
|
||||
POD_tuner_note = 0x16,
|
||||
@@ -248,7 +247,6 @@ void line6_pod_process_message(struct usb_line6_pod *pod)
|
||||
pod->monitor_level = value;
|
||||
break;
|
||||
|
||||
- PROCESS_SYSTEM_PARAM(routing);
|
||||
PROCESS_SYSTEM_PARAM
|
||||
(tuner_mute);
|
||||
PROCESS_SYSTEM_PARAM
|
||||
@@ -647,7 +645,6 @@ static ssize_t pod_set_ ## code(struct device *dev, \
|
||||
return pod_set_system_param_string(pod, buf, count, POD_ ## code, mask); \
|
||||
}
|
||||
|
||||
-POD_GET_SET_SYSTEM_PARAM(routing, 0x0003, 0);
|
||||
POD_GET_SET_SYSTEM_PARAM(tuner_mute, 0x0001, 0);
|
||||
POD_GET_SET_SYSTEM_PARAM(tuner_freq, 0xffff, 0);
|
||||
POD_GET_SYSTEM_PARAM(tuner_note, 1);
|
||||
@@ -663,8 +660,6 @@ static DEVICE_ATTR(firmware_version, S_IRUGO, pod_get_firmware_version,
|
||||
line6_nop_write);
|
||||
static DEVICE_ATTR(midi_postprocess, S_IWUSR | S_IRUGO,
|
||||
pod_get_midi_postprocess, pod_set_midi_postprocess);
|
||||
-static DEVICE_ATTR(routing, S_IWUSR | S_IRUGO, pod_get_routing,
|
||||
- pod_set_routing);
|
||||
static DEVICE_ATTR(serial_number, S_IRUGO, pod_get_serial_number,
|
||||
line6_nop_write);
|
||||
static DEVICE_ATTR(tuner_freq, S_IWUSR | S_IRUGO, pod_get_tuner_freq,
|
||||
@@ -755,7 +750,6 @@ static int pod_create_files2(struct device *dev)
|
||||
CHECK_RETURN(device_create_file(dev, &dev_attr_finish));
|
||||
CHECK_RETURN(device_create_file(dev, &dev_attr_firmware_version));
|
||||
CHECK_RETURN(device_create_file(dev, &dev_attr_midi_postprocess));
|
||||
- CHECK_RETURN(device_create_file(dev, &dev_attr_routing));
|
||||
CHECK_RETURN(device_create_file(dev, &dev_attr_serial_number));
|
||||
CHECK_RETURN(device_create_file(dev, &dev_attr_tuner_freq));
|
||||
CHECK_RETURN(device_create_file(dev, &dev_attr_tuner_mute));
|
||||
@@ -785,7 +779,6 @@ static int pod_try_init(struct usb_interface *interface,
|
||||
return -ENODEV;
|
||||
|
||||
/* initialize wait queues: */
|
||||
- init_waitqueue_head(&pod->routing.wait);
|
||||
init_waitqueue_head(&pod->tuner_mute.wait);
|
||||
init_waitqueue_head(&pod->tuner_freq.wait);
|
||||
init_waitqueue_head(&pod->tuner_note.wait);
|
||||
@@ -882,7 +875,6 @@ void line6_pod_disconnect(struct usb_interface *interface)
|
||||
device_remove_file(dev, &dev_attr_finish);
|
||||
device_remove_file(dev, &dev_attr_firmware_version);
|
||||
device_remove_file(dev, &dev_attr_midi_postprocess);
|
||||
- device_remove_file(dev, &dev_attr_routing);
|
||||
device_remove_file(dev, &dev_attr_serial_number);
|
||||
device_remove_file(dev, &dev_attr_tuner_freq);
|
||||
device_remove_file(dev, &dev_attr_tuner_mute);
|
||||
diff --git a/drivers/staging/line6/pod.h b/drivers/staging/line6/pod.h
|
||||
index d5bbd2f..732311a 100644
|
||||
--- a/drivers/staging/line6/pod.h
|
||||
+++ b/drivers/staging/line6/pod.h
|
||||
@@ -124,15 +124,6 @@ struct usb_line6_pod {
|
||||
int monitor_level;
|
||||
|
||||
/**
|
||||
- Audio routing mode.
|
||||
- 0: send processed guitar
|
||||
- 1: send clean guitar
|
||||
- 2: send clean guitar re-amp playback
|
||||
- 3: send re-amp playback
|
||||
- */
|
||||
- struct ValueWait routing;
|
||||
-
|
||||
- /**
|
||||
Timer for device initializaton.
|
||||
*/
|
||||
struct timer_list startup_timer;
|
83
debian/patches/features/all/line6/0078-staging-line6-drop-tuner_freq-sysfs-attr.patch
vendored
Normal file
83
debian/patches/features/all/line6/0078-staging-line6-drop-tuner_freq-sysfs-attr.patch
vendored
Normal file
|
@ -0,0 +1,83 @@
|
|||
From: Stefan Hajnoczi <stefanha@gmail.com>
|
||||
Date: Thu, 22 Nov 2012 20:48:57 +0100
|
||||
Subject: [078/106] staging: line6: drop tuner_freq sysfs attr
|
||||
|
||||
commit b972739fd8aeed17b07c060ab32141a151a4f901 upstream.
|
||||
|
||||
Signed-off-by: Stefan Hajnoczi <stefanha@gmail.com>
|
||||
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
||||
---
|
||||
drivers/staging/line6/pod.c | 8 --------
|
||||
drivers/staging/line6/pod.h | 5 -----
|
||||
2 files changed, 13 deletions(-)
|
||||
|
||||
diff --git a/drivers/staging/line6/pod.c b/drivers/staging/line6/pod.c
|
||||
index f84a4ea..3184570 100644
|
||||
--- a/drivers/staging/line6/pod.c
|
||||
+++ b/drivers/staging/line6/pod.c
|
||||
@@ -250,8 +250,6 @@ void line6_pod_process_message(struct usb_line6_pod *pod)
|
||||
PROCESS_SYSTEM_PARAM
|
||||
(tuner_mute);
|
||||
PROCESS_SYSTEM_PARAM
|
||||
- (tuner_freq);
|
||||
- PROCESS_SYSTEM_PARAM
|
||||
(tuner_note);
|
||||
PROCESS_SYSTEM_PARAM
|
||||
(tuner_pitch);
|
||||
@@ -646,7 +644,6 @@ static ssize_t pod_set_ ## code(struct device *dev, \
|
||||
}
|
||||
|
||||
POD_GET_SET_SYSTEM_PARAM(tuner_mute, 0x0001, 0);
|
||||
-POD_GET_SET_SYSTEM_PARAM(tuner_freq, 0xffff, 0);
|
||||
POD_GET_SYSTEM_PARAM(tuner_note, 1);
|
||||
POD_GET_SYSTEM_PARAM(tuner_pitch, 1);
|
||||
|
||||
@@ -662,8 +659,6 @@ static DEVICE_ATTR(midi_postprocess, S_IWUSR | S_IRUGO,
|
||||
pod_get_midi_postprocess, pod_set_midi_postprocess);
|
||||
static DEVICE_ATTR(serial_number, S_IRUGO, pod_get_serial_number,
|
||||
line6_nop_write);
|
||||
-static DEVICE_ATTR(tuner_freq, S_IWUSR | S_IRUGO, pod_get_tuner_freq,
|
||||
- pod_set_tuner_freq);
|
||||
static DEVICE_ATTR(tuner_mute, S_IWUSR | S_IRUGO, pod_get_tuner_mute,
|
||||
pod_set_tuner_mute);
|
||||
static DEVICE_ATTR(tuner_note, S_IRUGO, pod_get_tuner_note, line6_nop_write);
|
||||
@@ -751,7 +746,6 @@ static int pod_create_files2(struct device *dev)
|
||||
CHECK_RETURN(device_create_file(dev, &dev_attr_firmware_version));
|
||||
CHECK_RETURN(device_create_file(dev, &dev_attr_midi_postprocess));
|
||||
CHECK_RETURN(device_create_file(dev, &dev_attr_serial_number));
|
||||
- CHECK_RETURN(device_create_file(dev, &dev_attr_tuner_freq));
|
||||
CHECK_RETURN(device_create_file(dev, &dev_attr_tuner_mute));
|
||||
CHECK_RETURN(device_create_file(dev, &dev_attr_tuner_note));
|
||||
CHECK_RETURN(device_create_file(dev, &dev_attr_tuner_pitch));
|
||||
@@ -780,7 +774,6 @@ static int pod_try_init(struct usb_interface *interface,
|
||||
|
||||
/* initialize wait queues: */
|
||||
init_waitqueue_head(&pod->tuner_mute.wait);
|
||||
- init_waitqueue_head(&pod->tuner_freq.wait);
|
||||
init_waitqueue_head(&pod->tuner_note.wait);
|
||||
init_waitqueue_head(&pod->tuner_pitch.wait);
|
||||
|
||||
@@ -876,7 +869,6 @@ void line6_pod_disconnect(struct usb_interface *interface)
|
||||
device_remove_file(dev, &dev_attr_firmware_version);
|
||||
device_remove_file(dev, &dev_attr_midi_postprocess);
|
||||
device_remove_file(dev, &dev_attr_serial_number);
|
||||
- device_remove_file(dev, &dev_attr_tuner_freq);
|
||||
device_remove_file(dev, &dev_attr_tuner_mute);
|
||||
device_remove_file(dev, &dev_attr_tuner_note);
|
||||
device_remove_file(dev, &dev_attr_tuner_pitch);
|
||||
diff --git a/drivers/staging/line6/pod.h b/drivers/staging/line6/pod.h
|
||||
index 732311a..91f2661 100644
|
||||
--- a/drivers/staging/line6/pod.h
|
||||
+++ b/drivers/staging/line6/pod.h
|
||||
@@ -104,11 +104,6 @@ struct usb_line6_pod {
|
||||
struct ValueWait tuner_mute;
|
||||
|
||||
/**
|
||||
- Tuner base frequency (typically 440Hz).
|
||||
- */
|
||||
- struct ValueWait tuner_freq;
|
||||
-
|
||||
- /**
|
||||
Note received from tuner.
|
||||
*/
|
||||
struct ValueWait tuner_note;
|
82
debian/patches/features/all/line6/0079-staging-line6-drop-tuner_note-sysfs-attr.patch
vendored
Normal file
82
debian/patches/features/all/line6/0079-staging-line6-drop-tuner_note-sysfs-attr.patch
vendored
Normal file
|
@ -0,0 +1,82 @@
|
|||
From: Stefan Hajnoczi <stefanha@gmail.com>
|
||||
Date: Thu, 22 Nov 2012 20:48:58 +0100
|
||||
Subject: [079/106] staging: line6: drop tuner_note sysfs attr
|
||||
|
||||
commit c9040c84855afb290413909d24b32a1163a47303 upstream.
|
||||
|
||||
Signed-off-by: Stefan Hajnoczi <stefanha@gmail.com>
|
||||
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
||||
---
|
||||
drivers/staging/line6/pod.c | 7 -------
|
||||
drivers/staging/line6/pod.h | 5 -----
|
||||
2 files changed, 12 deletions(-)
|
||||
|
||||
diff --git a/drivers/staging/line6/pod.c b/drivers/staging/line6/pod.c
|
||||
index 3184570..57fbe27 100644
|
||||
--- a/drivers/staging/line6/pod.c
|
||||
+++ b/drivers/staging/line6/pod.c
|
||||
@@ -250,8 +250,6 @@ void line6_pod_process_message(struct usb_line6_pod *pod)
|
||||
PROCESS_SYSTEM_PARAM
|
||||
(tuner_mute);
|
||||
PROCESS_SYSTEM_PARAM
|
||||
- (tuner_note);
|
||||
- PROCESS_SYSTEM_PARAM
|
||||
(tuner_pitch);
|
||||
|
||||
#undef PROCESS_SYSTEM_PARAM
|
||||
@@ -644,7 +642,6 @@ static ssize_t pod_set_ ## code(struct device *dev, \
|
||||
}
|
||||
|
||||
POD_GET_SET_SYSTEM_PARAM(tuner_mute, 0x0001, 0);
|
||||
-POD_GET_SYSTEM_PARAM(tuner_note, 1);
|
||||
POD_GET_SYSTEM_PARAM(tuner_pitch, 1);
|
||||
|
||||
#undef GET_SET_SYSTEM_PARAM
|
||||
@@ -661,7 +658,6 @@ static DEVICE_ATTR(serial_number, S_IRUGO, pod_get_serial_number,
|
||||
line6_nop_write);
|
||||
static DEVICE_ATTR(tuner_mute, S_IWUSR | S_IRUGO, pod_get_tuner_mute,
|
||||
pod_set_tuner_mute);
|
||||
-static DEVICE_ATTR(tuner_note, S_IRUGO, pod_get_tuner_note, line6_nop_write);
|
||||
static DEVICE_ATTR(tuner_pitch, S_IRUGO, pod_get_tuner_pitch, line6_nop_write);
|
||||
|
||||
#ifdef CONFIG_LINE6_USB_RAW
|
||||
@@ -747,7 +743,6 @@ static int pod_create_files2(struct device *dev)
|
||||
CHECK_RETURN(device_create_file(dev, &dev_attr_midi_postprocess));
|
||||
CHECK_RETURN(device_create_file(dev, &dev_attr_serial_number));
|
||||
CHECK_RETURN(device_create_file(dev, &dev_attr_tuner_mute));
|
||||
- CHECK_RETURN(device_create_file(dev, &dev_attr_tuner_note));
|
||||
CHECK_RETURN(device_create_file(dev, &dev_attr_tuner_pitch));
|
||||
|
||||
#ifdef CONFIG_LINE6_USB_RAW
|
||||
@@ -774,7 +769,6 @@ static int pod_try_init(struct usb_interface *interface,
|
||||
|
||||
/* initialize wait queues: */
|
||||
init_waitqueue_head(&pod->tuner_mute.wait);
|
||||
- init_waitqueue_head(&pod->tuner_note.wait);
|
||||
init_waitqueue_head(&pod->tuner_pitch.wait);
|
||||
|
||||
/* initialize USB buffers: */
|
||||
@@ -870,7 +864,6 @@ void line6_pod_disconnect(struct usb_interface *interface)
|
||||
device_remove_file(dev, &dev_attr_midi_postprocess);
|
||||
device_remove_file(dev, &dev_attr_serial_number);
|
||||
device_remove_file(dev, &dev_attr_tuner_mute);
|
||||
- device_remove_file(dev, &dev_attr_tuner_note);
|
||||
device_remove_file(dev, &dev_attr_tuner_pitch);
|
||||
|
||||
#ifdef CONFIG_LINE6_USB_RAW
|
||||
diff --git a/drivers/staging/line6/pod.h b/drivers/staging/line6/pod.h
|
||||
index 91f2661..1659120 100644
|
||||
--- a/drivers/staging/line6/pod.h
|
||||
+++ b/drivers/staging/line6/pod.h
|
||||
@@ -104,11 +104,6 @@ struct usb_line6_pod {
|
||||
struct ValueWait tuner_mute;
|
||||
|
||||
/**
|
||||
- Note received from tuner.
|
||||
- */
|
||||
- struct ValueWait tuner_note;
|
||||
-
|
||||
- /**
|
||||
Pitch value received from tuner.
|
||||
*/
|
||||
struct ValueWait tuner_pitch;
|
118
debian/patches/features/all/line6/0080-staging-line6-drop-tuner_mute-sysfs-attr.patch
vendored
Normal file
118
debian/patches/features/all/line6/0080-staging-line6-drop-tuner_mute-sysfs-attr.patch
vendored
Normal file
|
@ -0,0 +1,118 @@
|
|||
From: Stefan Hajnoczi <stefanha@gmail.com>
|
||||
Date: Thu, 22 Nov 2012 20:48:59 +0100
|
||||
Subject: [080/106] staging: line6: drop tuner_mute sysfs attr
|
||||
|
||||
commit 5e275f4586484d7a8f17046930f473883a660a73 upstream.
|
||||
|
||||
Signed-off-by: Stefan Hajnoczi <stefanha@gmail.com>
|
||||
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
||||
---
|
||||
drivers/staging/line6/pod.c | 34 ----------------------------------
|
||||
drivers/staging/line6/pod.h | 5 -----
|
||||
2 files changed, 39 deletions(-)
|
||||
|
||||
diff --git a/drivers/staging/line6/pod.c b/drivers/staging/line6/pod.c
|
||||
index 57fbe27..df2f37a 100644
|
||||
--- a/drivers/staging/line6/pod.c
|
||||
+++ b/drivers/staging/line6/pod.c
|
||||
@@ -248,8 +248,6 @@ void line6_pod_process_message(struct usb_line6_pod *pod)
|
||||
break;
|
||||
|
||||
PROCESS_SYSTEM_PARAM
|
||||
- (tuner_mute);
|
||||
- PROCESS_SYSTEM_PARAM
|
||||
(tuner_pitch);
|
||||
|
||||
#undef PROCESS_SYSTEM_PARAM
|
||||
@@ -453,20 +451,6 @@ static int pod_set_system_param_int(struct usb_line6_pod *pod, int value,
|
||||
}
|
||||
|
||||
/*
|
||||
- Send system parameter (from string).
|
||||
- @param tuner non-zero, if code refers to a tuner parameter
|
||||
-*/
|
||||
-static ssize_t pod_set_system_param_string(struct usb_line6_pod *pod,
|
||||
- const char *buf, int count, int code,
|
||||
- unsigned short mask)
|
||||
-{
|
||||
- int retval;
|
||||
- unsigned short value = simple_strtoul(buf, NULL, 10) & mask;
|
||||
- retval = pod_set_system_param_int(pod, value, code);
|
||||
- return (retval < 0) ? retval : count;
|
||||
-}
|
||||
-
|
||||
-/*
|
||||
"write" request on "finish" special file.
|
||||
*/
|
||||
static ssize_t pod_set_finish(struct device *dev,
|
||||
@@ -630,21 +614,8 @@ static ssize_t pod_get_ ## code(struct device *dev, \
|
||||
&pod->code, sign); \
|
||||
}
|
||||
|
||||
-#define POD_GET_SET_SYSTEM_PARAM(code, mask, sign) \
|
||||
-POD_GET_SYSTEM_PARAM(code, sign) \
|
||||
-static ssize_t pod_set_ ## code(struct device *dev, \
|
||||
- struct device_attribute *attr, \
|
||||
- const char *buf, size_t count) \
|
||||
-{ \
|
||||
- struct usb_interface *interface = to_usb_interface(dev); \
|
||||
- struct usb_line6_pod *pod = usb_get_intfdata(interface); \
|
||||
- return pod_set_system_param_string(pod, buf, count, POD_ ## code, mask); \
|
||||
-}
|
||||
-
|
||||
-POD_GET_SET_SYSTEM_PARAM(tuner_mute, 0x0001, 0);
|
||||
POD_GET_SYSTEM_PARAM(tuner_pitch, 1);
|
||||
|
||||
-#undef GET_SET_SYSTEM_PARAM
|
||||
#undef GET_SYSTEM_PARAM
|
||||
|
||||
/* POD special files: */
|
||||
@@ -656,8 +627,6 @@ static DEVICE_ATTR(midi_postprocess, S_IWUSR | S_IRUGO,
|
||||
pod_get_midi_postprocess, pod_set_midi_postprocess);
|
||||
static DEVICE_ATTR(serial_number, S_IRUGO, pod_get_serial_number,
|
||||
line6_nop_write);
|
||||
-static DEVICE_ATTR(tuner_mute, S_IWUSR | S_IRUGO, pod_get_tuner_mute,
|
||||
- pod_set_tuner_mute);
|
||||
static DEVICE_ATTR(tuner_pitch, S_IRUGO, pod_get_tuner_pitch, line6_nop_write);
|
||||
|
||||
#ifdef CONFIG_LINE6_USB_RAW
|
||||
@@ -742,7 +711,6 @@ static int pod_create_files2(struct device *dev)
|
||||
CHECK_RETURN(device_create_file(dev, &dev_attr_firmware_version));
|
||||
CHECK_RETURN(device_create_file(dev, &dev_attr_midi_postprocess));
|
||||
CHECK_RETURN(device_create_file(dev, &dev_attr_serial_number));
|
||||
- CHECK_RETURN(device_create_file(dev, &dev_attr_tuner_mute));
|
||||
CHECK_RETURN(device_create_file(dev, &dev_attr_tuner_pitch));
|
||||
|
||||
#ifdef CONFIG_LINE6_USB_RAW
|
||||
@@ -768,7 +736,6 @@ static int pod_try_init(struct usb_interface *interface,
|
||||
return -ENODEV;
|
||||
|
||||
/* initialize wait queues: */
|
||||
- init_waitqueue_head(&pod->tuner_mute.wait);
|
||||
init_waitqueue_head(&pod->tuner_pitch.wait);
|
||||
|
||||
/* initialize USB buffers: */
|
||||
@@ -863,7 +830,6 @@ void line6_pod_disconnect(struct usb_interface *interface)
|
||||
device_remove_file(dev, &dev_attr_firmware_version);
|
||||
device_remove_file(dev, &dev_attr_midi_postprocess);
|
||||
device_remove_file(dev, &dev_attr_serial_number);
|
||||
- device_remove_file(dev, &dev_attr_tuner_mute);
|
||||
device_remove_file(dev, &dev_attr_tuner_pitch);
|
||||
|
||||
#ifdef CONFIG_LINE6_USB_RAW
|
||||
diff --git a/drivers/staging/line6/pod.h b/drivers/staging/line6/pod.h
|
||||
index 1659120..4930742 100644
|
||||
--- a/drivers/staging/line6/pod.h
|
||||
+++ b/drivers/staging/line6/pod.h
|
||||
@@ -99,11 +99,6 @@ struct usb_line6_pod {
|
||||
struct pod_program prog_data_buf;
|
||||
|
||||
/**
|
||||
- Tuner mute mode.
|
||||
- */
|
||||
- struct ValueWait tuner_mute;
|
||||
-
|
||||
- /**
|
||||
Pitch value received from tuner.
|
||||
*/
|
||||
struct ValueWait tuner_pitch;
|
220
debian/patches/features/all/line6/0081-staging-line6-drop-tuner_pitch-sysfs-attr.patch
vendored
Normal file
220
debian/patches/features/all/line6/0081-staging-line6-drop-tuner_pitch-sysfs-attr.patch
vendored
Normal file
|
@ -0,0 +1,220 @@
|
|||
From: Stefan Hajnoczi <stefanha@gmail.com>
|
||||
Date: Thu, 22 Nov 2012 20:49:00 +0100
|
||||
Subject: [081/106] staging: line6: drop tuner_pitch sysfs attr
|
||||
|
||||
commit 99c54e9830feb746c9175fae887546e741bb56eb upstream.
|
||||
|
||||
Dropping this final tuner sysfs attr also leaves the
|
||||
POD_GET_SYSTEM_PARAM() macro, pod_get_system_param_string(), and
|
||||
pod_get_system_param_int() unused. Remove them immediately to avoid
|
||||
compiler warnings.
|
||||
|
||||
POD_monitor_level is now the only SYSEX value that needs to be watched
|
||||
by the driver since the ALSA volume control should reflect the current
|
||||
monitor volume level used by the device. Therefore, drop the switch
|
||||
statement entirely and just check for POD_monitor_level, ignoring
|
||||
unknown system parameter changes.
|
||||
|
||||
Signed-off-by: Stefan Hajnoczi <stefanha@gmail.com>
|
||||
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
||||
---
|
||||
drivers/staging/line6/pod.c | 102 +------------------------------------------
|
||||
drivers/staging/line6/pod.h | 15 -------
|
||||
2 files changed, 1 insertion(+), 116 deletions(-)
|
||||
|
||||
diff --git a/drivers/staging/line6/pod.c b/drivers/staging/line6/pod.c
|
||||
index df2f37a..052db4a 100644
|
||||
--- a/drivers/staging/line6/pod.c
|
||||
+++ b/drivers/staging/line6/pod.c
|
||||
@@ -236,28 +236,8 @@ void line6_pod_process_message(struct usb_line6_pod *pod)
|
||||
<< 8) |
|
||||
((int)buf[9] << 4) | (int)buf[10];
|
||||
|
||||
-#define PROCESS_SYSTEM_PARAM(x) \
|
||||
- case POD_ ## x: \
|
||||
- pod->x.value = value; \
|
||||
- wake_up(&pod->x.wait); \
|
||||
- break;
|
||||
-
|
||||
- switch (buf[6]) {
|
||||
- case POD_monitor_level:
|
||||
+ if (buf[6] == POD_monitor_level)
|
||||
pod->monitor_level = value;
|
||||
- break;
|
||||
-
|
||||
- PROCESS_SYSTEM_PARAM
|
||||
- (tuner_pitch);
|
||||
-
|
||||
-#undef PROCESS_SYSTEM_PARAM
|
||||
-
|
||||
- default:
|
||||
- dev_dbg(pod->line6.ifcdev,
|
||||
- "unknown tuner/system response %02X\n",
|
||||
- buf[6]);
|
||||
- }
|
||||
-
|
||||
break;
|
||||
}
|
||||
|
||||
@@ -363,66 +343,6 @@ static bool pod_is_tuner(int code)
|
||||
}
|
||||
|
||||
/*
|
||||
- Get system parameter (as integer).
|
||||
- @param tuner non-zero, if code refers to a tuner parameter
|
||||
-*/
|
||||
-static int pod_get_system_param_int(struct usb_line6_pod *pod, int *value,
|
||||
- int code, struct ValueWait *param, int sign)
|
||||
-{
|
||||
- char *sysex;
|
||||
- static const int size = 1;
|
||||
- int retval = 0;
|
||||
-
|
||||
- if (((pod->prog_data.control[POD_tuner] & 0x40) == 0)
|
||||
- && pod_is_tuner(code))
|
||||
- return -ENODEV;
|
||||
-
|
||||
- /* send value request to device: */
|
||||
- param->value = POD_system_invalid;
|
||||
- sysex = pod_alloc_sysex_buffer(pod, POD_SYSEX_SYSTEMREQ, size);
|
||||
-
|
||||
- if (!sysex)
|
||||
- return -ENOMEM;
|
||||
-
|
||||
- sysex[SYSEX_DATA_OFS] = code;
|
||||
- line6_send_sysex_message(&pod->line6, sysex, size);
|
||||
- kfree(sysex);
|
||||
-
|
||||
- /* wait for device to respond: */
|
||||
- retval =
|
||||
- wait_event_interruptible(param->wait,
|
||||
- param->value != POD_system_invalid);
|
||||
-
|
||||
- if (retval < 0)
|
||||
- return retval;
|
||||
-
|
||||
- *value = sign ? (int)(signed short)param->value : (int)(unsigned short)
|
||||
- param->value;
|
||||
-
|
||||
- if (*value == POD_system_invalid)
|
||||
- *value = 0; /* don't report uninitialized values */
|
||||
-
|
||||
- return 0;
|
||||
-}
|
||||
-
|
||||
-/*
|
||||
- Get system parameter (as string).
|
||||
- @param tuner non-zero, if code refers to a tuner parameter
|
||||
-*/
|
||||
-static ssize_t pod_get_system_param_string(struct usb_line6_pod *pod, char *buf,
|
||||
- int code, struct ValueWait *param,
|
||||
- int sign)
|
||||
-{
|
||||
- int retval, value = 0;
|
||||
- retval = pod_get_system_param_int(pod, &value, code, param, sign);
|
||||
-
|
||||
- if (retval < 0)
|
||||
- return retval;
|
||||
-
|
||||
- return sprintf(buf, "%d\n", value);
|
||||
-}
|
||||
-
|
||||
-/*
|
||||
Send system parameter (from integer).
|
||||
@param tuner non-zero, if code refers to a tuner parameter
|
||||
*/
|
||||
@@ -604,20 +524,6 @@ static void pod_startup5(struct work_struct *work)
|
||||
line6->properties->device_bit, line6->ifcdev);
|
||||
}
|
||||
|
||||
-#define POD_GET_SYSTEM_PARAM(code, sign) \
|
||||
-static ssize_t pod_get_ ## code(struct device *dev, \
|
||||
- struct device_attribute *attr, char *buf) \
|
||||
-{ \
|
||||
- struct usb_interface *interface = to_usb_interface(dev); \
|
||||
- struct usb_line6_pod *pod = usb_get_intfdata(interface); \
|
||||
- return pod_get_system_param_string(pod, buf, POD_ ## code, \
|
||||
- &pod->code, sign); \
|
||||
-}
|
||||
-
|
||||
-POD_GET_SYSTEM_PARAM(tuner_pitch, 1);
|
||||
-
|
||||
-#undef GET_SYSTEM_PARAM
|
||||
-
|
||||
/* POD special files: */
|
||||
static DEVICE_ATTR(device_id, S_IRUGO, pod_get_device_id, line6_nop_write);
|
||||
static DEVICE_ATTR(finish, S_IWUSR, line6_nop_read, pod_set_finish);
|
||||
@@ -627,7 +533,6 @@ static DEVICE_ATTR(midi_postprocess, S_IWUSR | S_IRUGO,
|
||||
pod_get_midi_postprocess, pod_set_midi_postprocess);
|
||||
static DEVICE_ATTR(serial_number, S_IRUGO, pod_get_serial_number,
|
||||
line6_nop_write);
|
||||
-static DEVICE_ATTR(tuner_pitch, S_IRUGO, pod_get_tuner_pitch, line6_nop_write);
|
||||
|
||||
#ifdef CONFIG_LINE6_USB_RAW
|
||||
static DEVICE_ATTR(raw, S_IWUSR, line6_nop_read, line6_set_raw);
|
||||
@@ -711,7 +616,6 @@ static int pod_create_files2(struct device *dev)
|
||||
CHECK_RETURN(device_create_file(dev, &dev_attr_firmware_version));
|
||||
CHECK_RETURN(device_create_file(dev, &dev_attr_midi_postprocess));
|
||||
CHECK_RETURN(device_create_file(dev, &dev_attr_serial_number));
|
||||
- CHECK_RETURN(device_create_file(dev, &dev_attr_tuner_pitch));
|
||||
|
||||
#ifdef CONFIG_LINE6_USB_RAW
|
||||
CHECK_RETURN(device_create_file(dev, &dev_attr_raw));
|
||||
@@ -735,9 +639,6 @@ static int pod_try_init(struct usb_interface *interface,
|
||||
if ((interface == NULL) || (pod == NULL))
|
||||
return -ENODEV;
|
||||
|
||||
- /* initialize wait queues: */
|
||||
- init_waitqueue_head(&pod->tuner_pitch.wait);
|
||||
-
|
||||
/* initialize USB buffers: */
|
||||
err = line6_dumpreq_init(&pod->dumpreq, pod_request_channel,
|
||||
sizeof(pod_request_channel));
|
||||
@@ -830,7 +731,6 @@ void line6_pod_disconnect(struct usb_interface *interface)
|
||||
device_remove_file(dev, &dev_attr_firmware_version);
|
||||
device_remove_file(dev, &dev_attr_midi_postprocess);
|
||||
device_remove_file(dev, &dev_attr_serial_number);
|
||||
- device_remove_file(dev, &dev_attr_tuner_pitch);
|
||||
|
||||
#ifdef CONFIG_LINE6_USB_RAW
|
||||
device_remove_file(dev, &dev_attr_raw);
|
||||
diff --git a/drivers/staging/line6/pod.h b/drivers/staging/line6/pod.h
|
||||
index 4930742..481cce6 100644
|
||||
--- a/drivers/staging/line6/pod.h
|
||||
+++ b/drivers/staging/line6/pod.h
|
||||
@@ -15,7 +15,6 @@
|
||||
#include <linux/interrupt.h>
|
||||
#include <linux/spinlock.h>
|
||||
#include <linux/usb.h>
|
||||
-#include <linux/wait.h>
|
||||
|
||||
#include <sound/core.h>
|
||||
|
||||
@@ -54,15 +53,6 @@ enum {
|
||||
};
|
||||
|
||||
/**
|
||||
- Data structure for values that need to be requested explicitly.
|
||||
- This is the case for system and tuner settings.
|
||||
-*/
|
||||
-struct ValueWait {
|
||||
- int value;
|
||||
- wait_queue_head_t wait;
|
||||
-};
|
||||
-
|
||||
-/**
|
||||
Binary PODxt Pro program dump
|
||||
*/
|
||||
struct pod_program {
|
||||
@@ -99,11 +89,6 @@ struct usb_line6_pod {
|
||||
struct pod_program prog_data_buf;
|
||||
|
||||
/**
|
||||
- Pitch value received from tuner.
|
||||
- */
|
||||
- struct ValueWait tuner_pitch;
|
||||
-
|
||||
- /**
|
||||
Instrument monitor level.
|
||||
*/
|
||||
int monitor_level;
|
65
debian/patches/features/all/line6/0082-staging-line6-drop-finish-sysfs-attr.patch
vendored
Normal file
65
debian/patches/features/all/line6/0082-staging-line6-drop-finish-sysfs-attr.patch
vendored
Normal file
|
@ -0,0 +1,65 @@
|
|||
From: Stefan Hajnoczi <stefanha@gmail.com>
|
||||
Date: Thu, 22 Nov 2012 20:49:01 +0100
|
||||
Subject: [082/106] staging: line6: drop finish sysfs attr
|
||||
|
||||
commit c7b8ca5a596197f6b1069bf4164387f474873f00 upstream.
|
||||
|
||||
Signed-off-by: Stefan Hajnoczi <stefanha@gmail.com>
|
||||
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
||||
---
|
||||
drivers/staging/line6/pod.c | 21 ---------------------
|
||||
1 file changed, 21 deletions(-)
|
||||
|
||||
diff --git a/drivers/staging/line6/pod.c b/drivers/staging/line6/pod.c
|
||||
index 052db4a..797f6e0 100644
|
||||
--- a/drivers/staging/line6/pod.c
|
||||
+++ b/drivers/staging/line6/pod.c
|
||||
@@ -371,24 +371,6 @@ static int pod_set_system_param_int(struct usb_line6_pod *pod, int value,
|
||||
}
|
||||
|
||||
/*
|
||||
- "write" request on "finish" special file.
|
||||
-*/
|
||||
-static ssize_t pod_set_finish(struct device *dev,
|
||||
- struct device_attribute *attr,
|
||||
- const char *buf, size_t count)
|
||||
-{
|
||||
- struct usb_interface *interface = to_usb_interface(dev);
|
||||
- struct usb_line6_pod *pod = usb_get_intfdata(interface);
|
||||
- int size = 0;
|
||||
- char *sysex = pod_alloc_sysex_buffer(pod, POD_SYSEX_FINISH, size);
|
||||
- if (!sysex)
|
||||
- return 0;
|
||||
- line6_send_sysex_message(&pod->line6, sysex, size);
|
||||
- kfree(sysex);
|
||||
- return count;
|
||||
-}
|
||||
-
|
||||
-/*
|
||||
"read" request on "midi_postprocess" special file.
|
||||
*/
|
||||
static ssize_t pod_get_midi_postprocess(struct device *dev,
|
||||
@@ -526,7 +508,6 @@ static void pod_startup5(struct work_struct *work)
|
||||
|
||||
/* POD special files: */
|
||||
static DEVICE_ATTR(device_id, S_IRUGO, pod_get_device_id, line6_nop_write);
|
||||
-static DEVICE_ATTR(finish, S_IWUSR, line6_nop_read, pod_set_finish);
|
||||
static DEVICE_ATTR(firmware_version, S_IRUGO, pod_get_firmware_version,
|
||||
line6_nop_write);
|
||||
static DEVICE_ATTR(midi_postprocess, S_IWUSR | S_IRUGO,
|
||||
@@ -612,7 +593,6 @@ static int pod_create_files2(struct device *dev)
|
||||
int err;
|
||||
|
||||
CHECK_RETURN(device_create_file(dev, &dev_attr_device_id));
|
||||
- CHECK_RETURN(device_create_file(dev, &dev_attr_finish));
|
||||
CHECK_RETURN(device_create_file(dev, &dev_attr_firmware_version));
|
||||
CHECK_RETURN(device_create_file(dev, &dev_attr_midi_postprocess));
|
||||
CHECK_RETURN(device_create_file(dev, &dev_attr_serial_number));
|
||||
@@ -727,7 +707,6 @@ void line6_pod_disconnect(struct usb_interface *interface)
|
||||
properties->device_bit, dev);
|
||||
|
||||
device_remove_file(dev, &dev_attr_device_id);
|
||||
- device_remove_file(dev, &dev_attr_finish);
|
||||
device_remove_file(dev, &dev_attr_firmware_version);
|
||||
device_remove_file(dev, &dev_attr_midi_postprocess);
|
||||
device_remove_file(dev, &dev_attr_serial_number);
|
80
debian/patches/features/all/line6/0083-staging-line6-drop-midi_postprocess-sysfs-attr.patch
vendored
Normal file
80
debian/patches/features/all/line6/0083-staging-line6-drop-midi_postprocess-sysfs-attr.patch
vendored
Normal file
|
@ -0,0 +1,80 @@
|
|||
From: Stefan Hajnoczi <stefanha@gmail.com>
|
||||
Date: Thu, 22 Nov 2012 20:49:02 +0100
|
||||
Subject: [083/106] staging: line6: drop midi_postprocess sysfs attr
|
||||
|
||||
commit bd99f84f484877ad87ee82adf2b3bbde4fdd9c2b upstream.
|
||||
|
||||
Signed-off-by: Stefan Hajnoczi <stefanha@gmail.com>
|
||||
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
||||
---
|
||||
drivers/staging/line6/pod.c | 36 ------------------------------------
|
||||
1 file changed, 36 deletions(-)
|
||||
|
||||
diff --git a/drivers/staging/line6/pod.c b/drivers/staging/line6/pod.c
|
||||
index 797f6e0..37b20d7 100644
|
||||
--- a/drivers/staging/line6/pod.c
|
||||
+++ b/drivers/staging/line6/pod.c
|
||||
@@ -371,38 +371,6 @@ static int pod_set_system_param_int(struct usb_line6_pod *pod, int value,
|
||||
}
|
||||
|
||||
/*
|
||||
- "read" request on "midi_postprocess" special file.
|
||||
-*/
|
||||
-static ssize_t pod_get_midi_postprocess(struct device *dev,
|
||||
- struct device_attribute *attr,
|
||||
- char *buf)
|
||||
-{
|
||||
- struct usb_interface *interface = to_usb_interface(dev);
|
||||
- struct usb_line6_pod *pod = usb_get_intfdata(interface);
|
||||
- return sprintf(buf, "%d\n", pod->midi_postprocess);
|
||||
-}
|
||||
-
|
||||
-/*
|
||||
- "write" request on "midi_postprocess" special file.
|
||||
-*/
|
||||
-static ssize_t pod_set_midi_postprocess(struct device *dev,
|
||||
- struct device_attribute *attr,
|
||||
- const char *buf, size_t count)
|
||||
-{
|
||||
- struct usb_interface *interface = to_usb_interface(dev);
|
||||
- struct usb_line6_pod *pod = usb_get_intfdata(interface);
|
||||
- u8 value;
|
||||
- int ret;
|
||||
-
|
||||
- ret = kstrtou8(buf, 10, &value);
|
||||
- if (ret)
|
||||
- return ret;
|
||||
-
|
||||
- pod->midi_postprocess = value ? 1 : 0;
|
||||
- return count;
|
||||
-}
|
||||
-
|
||||
-/*
|
||||
"read" request on "serial_number" special file.
|
||||
*/
|
||||
static ssize_t pod_get_serial_number(struct device *dev,
|
||||
@@ -510,8 +478,6 @@ static void pod_startup5(struct work_struct *work)
|
||||
static DEVICE_ATTR(device_id, S_IRUGO, pod_get_device_id, line6_nop_write);
|
||||
static DEVICE_ATTR(firmware_version, S_IRUGO, pod_get_firmware_version,
|
||||
line6_nop_write);
|
||||
-static DEVICE_ATTR(midi_postprocess, S_IWUSR | S_IRUGO,
|
||||
- pod_get_midi_postprocess, pod_set_midi_postprocess);
|
||||
static DEVICE_ATTR(serial_number, S_IRUGO, pod_get_serial_number,
|
||||
line6_nop_write);
|
||||
|
||||
@@ -594,7 +560,6 @@ static int pod_create_files2(struct device *dev)
|
||||
|
||||
CHECK_RETURN(device_create_file(dev, &dev_attr_device_id));
|
||||
CHECK_RETURN(device_create_file(dev, &dev_attr_firmware_version));
|
||||
- CHECK_RETURN(device_create_file(dev, &dev_attr_midi_postprocess));
|
||||
CHECK_RETURN(device_create_file(dev, &dev_attr_serial_number));
|
||||
|
||||
#ifdef CONFIG_LINE6_USB_RAW
|
||||
@@ -708,7 +673,6 @@ void line6_pod_disconnect(struct usb_interface *interface)
|
||||
|
||||
device_remove_file(dev, &dev_attr_device_id);
|
||||
device_remove_file(dev, &dev_attr_firmware_version);
|
||||
- device_remove_file(dev, &dev_attr_midi_postprocess);
|
||||
device_remove_file(dev, &dev_attr_serial_number);
|
||||
|
||||
#ifdef CONFIG_LINE6_USB_RAW
|
133
debian/patches/features/all/line6/0084-staging-line6-drop-midi_mask_receive.patch
vendored
Normal file
133
debian/patches/features/all/line6/0084-staging-line6-drop-midi_mask_receive.patch
vendored
Normal file
|
@ -0,0 +1,133 @@
|
|||
From: Stefan Hajnoczi <stefanha@gmail.com>
|
||||
Date: Thu, 22 Nov 2012 20:49:03 +0100
|
||||
Subject: [084/106] staging: line6: drop midi_mask_receive
|
||||
|
||||
commit 3e58c868db1dc1402943f6a585529873f445c14f upstream.
|
||||
|
||||
The midi_mask_receive sysfs attribute selects the MIDI channels on which
|
||||
to receive messages. There is no need to do this at the driver level,
|
||||
instead the MIDI application endpoints decide which channels to use.
|
||||
Other drivers don't implement midi_mask_receive so applications cannot
|
||||
make use of this feature. Therefore we drop it as part of the effort to
|
||||
clean up the staging driver.
|
||||
|
||||
Signed-off-by: Stefan Hajnoczi <stefanha@gmail.com>
|
||||
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
||||
---
|
||||
drivers/staging/line6/driver.c | 5 -----
|
||||
drivers/staging/line6/midi.c | 42 ----------------------------------------
|
||||
drivers/staging/line6/midi.h | 5 -----
|
||||
3 files changed, 52 deletions(-)
|
||||
|
||||
diff --git a/drivers/staging/line6/driver.c b/drivers/staging/line6/driver.c
|
||||
index 0bc838d..e0e0779 100644
|
||||
--- a/drivers/staging/line6/driver.c
|
||||
+++ b/drivers/staging/line6/driver.c
|
||||
@@ -396,11 +396,6 @@ static void line6_data_received(struct urb *urb)
|
||||
if (done == 0)
|
||||
break;
|
||||
|
||||
- /* MIDI input filter */
|
||||
- if (line6_midibuf_skip_message
|
||||
- (mb, line6->line6midi->midi_mask_receive))
|
||||
- continue;
|
||||
-
|
||||
line6->message_length = done;
|
||||
line6_midi_receive(line6, line6->buffer_message, done);
|
||||
|
||||
diff --git a/drivers/staging/line6/midi.c b/drivers/staging/line6/midi.c
|
||||
index c8e099b..c543c48 100644
|
||||
--- a/drivers/staging/line6/midi.c
|
||||
+++ b/drivers/staging/line6/midi.c
|
||||
@@ -313,42 +313,8 @@ static ssize_t midi_set_midi_mask_transmit(struct device *dev,
|
||||
return count;
|
||||
}
|
||||
|
||||
-/*
|
||||
- "read" request on "midi_mask_receive" special file.
|
||||
-*/
|
||||
-static ssize_t midi_get_midi_mask_receive(struct device *dev,
|
||||
- struct device_attribute *attr,
|
||||
- char *buf)
|
||||
-{
|
||||
- struct usb_interface *interface = to_usb_interface(dev);
|
||||
- struct usb_line6 *line6 = usb_get_intfdata(interface);
|
||||
- return sprintf(buf, "%d\n", line6->line6midi->midi_mask_receive);
|
||||
-}
|
||||
-
|
||||
-/*
|
||||
- "write" request on "midi_mask" special file.
|
||||
-*/
|
||||
-static ssize_t midi_set_midi_mask_receive(struct device *dev,
|
||||
- struct device_attribute *attr,
|
||||
- const char *buf, size_t count)
|
||||
-{
|
||||
- struct usb_interface *interface = to_usb_interface(dev);
|
||||
- struct usb_line6 *line6 = usb_get_intfdata(interface);
|
||||
- unsigned short value;
|
||||
- int ret;
|
||||
-
|
||||
- ret = kstrtou16(buf, 10, &value);
|
||||
- if (ret)
|
||||
- return ret;
|
||||
-
|
||||
- line6->line6midi->midi_mask_receive = value;
|
||||
- return count;
|
||||
-}
|
||||
-
|
||||
static DEVICE_ATTR(midi_mask_transmit, S_IWUSR | S_IRUGO,
|
||||
midi_get_midi_mask_transmit, midi_set_midi_mask_transmit);
|
||||
-static DEVICE_ATTR(midi_mask_receive, S_IWUSR | S_IRUGO,
|
||||
- midi_get_midi_mask_receive, midi_set_midi_mask_receive);
|
||||
|
||||
/* MIDI device destructor */
|
||||
static int snd_line6_midi_free(struct snd_device *device)
|
||||
@@ -356,8 +322,6 @@ static int snd_line6_midi_free(struct snd_device *device)
|
||||
struct snd_line6_midi *line6midi = device->device_data;
|
||||
device_remove_file(line6midi->line6->ifcdev,
|
||||
&dev_attr_midi_mask_transmit);
|
||||
- device_remove_file(line6midi->line6->ifcdev,
|
||||
- &dev_attr_midi_mask_receive);
|
||||
line6_midibuf_destroy(&line6midi->midibuf_in);
|
||||
line6_midibuf_destroy(&line6midi->midibuf_out);
|
||||
return 0;
|
||||
@@ -404,12 +368,10 @@ int line6_init_midi(struct usb_line6 *line6)
|
||||
case LINE6_DEVID_PODHD300:
|
||||
case LINE6_DEVID_PODHD500:
|
||||
line6midi->midi_mask_transmit = 1;
|
||||
- line6midi->midi_mask_receive = 1;
|
||||
break;
|
||||
|
||||
default:
|
||||
line6midi->midi_mask_transmit = 1;
|
||||
- line6midi->midi_mask_receive = 4;
|
||||
}
|
||||
|
||||
line6->line6midi = line6midi;
|
||||
@@ -429,10 +391,6 @@ int line6_init_midi(struct usb_line6 *line6)
|
||||
if (err < 0)
|
||||
return err;
|
||||
|
||||
- err = device_create_file(line6->ifcdev, &dev_attr_midi_mask_receive);
|
||||
- if (err < 0)
|
||||
- return err;
|
||||
-
|
||||
init_waitqueue_head(&line6midi->send_wait);
|
||||
spin_lock_init(&line6midi->send_urb_lock);
|
||||
spin_lock_init(&line6midi->midi_transmit_lock);
|
||||
diff --git a/drivers/staging/line6/midi.h b/drivers/staging/line6/midi.h
|
||||
index 4a9e9f9..cf32d77 100644
|
||||
--- a/drivers/staging/line6/midi.h
|
||||
+++ b/drivers/staging/line6/midi.h
|
||||
@@ -60,11 +60,6 @@ struct snd_line6_midi {
|
||||
unsigned short midi_mask_transmit;
|
||||
|
||||
/**
|
||||
- Bit mask for input MIDI channels.
|
||||
- */
|
||||
- unsigned short midi_mask_receive;
|
||||
-
|
||||
- /**
|
||||
Buffer for incoming MIDI stream.
|
||||
*/
|
||||
struct MidiBuffer midibuf_in;
|
128
debian/patches/features/all/line6/0085-staging-line6-drop-midi_mask_transmit.patch
vendored
Normal file
128
debian/patches/features/all/line6/0085-staging-line6-drop-midi_mask_transmit.patch
vendored
Normal file
|
@ -0,0 +1,128 @@
|
|||
From: Stefan Hajnoczi <stefanha@gmail.com>
|
||||
Date: Thu, 22 Nov 2012 20:49:04 +0100
|
||||
Subject: [085/106] staging: line6: drop midi_mask_transmit
|
||||
|
||||
commit af89d2897a716e8e46cc5aad052a015d234e490f upstream.
|
||||
|
||||
The midi_mask_transmit sysfs attribute selects the MIDI channels on
|
||||
which to transmit messages. If ALSA wants to transmit a message that
|
||||
does not match an allowed channel, the message will be dropped. This
|
||||
driver feature is not really used and applications don't know how to
|
||||
take advantage of it. Therefore we drop it and rely on applications or
|
||||
MIDI sequencers to select the channels used for communication.
|
||||
|
||||
Signed-off-by: Stefan Hajnoczi <stefanha@gmail.com>
|
||||
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
||||
---
|
||||
drivers/staging/line6/midi.c | 56 ------------------------------------------
|
||||
drivers/staging/line6/midi.h | 5 ----
|
||||
2 files changed, 61 deletions(-)
|
||||
|
||||
diff --git a/drivers/staging/line6/midi.c b/drivers/staging/line6/midi.c
|
||||
index c543c48..6d9ecb9 100644
|
||||
--- a/drivers/staging/line6/midi.c
|
||||
+++ b/drivers/staging/line6/midi.c
|
||||
@@ -69,10 +69,6 @@ static void line6_midi_transmit(struct snd_rawmidi_substream *substream)
|
||||
if (done == 0)
|
||||
break;
|
||||
|
||||
- if (line6_midibuf_skip_message
|
||||
- (mb, line6midi->midi_mask_transmit))
|
||||
- continue;
|
||||
-
|
||||
send_midi_async(line6, chunk, done);
|
||||
}
|
||||
|
||||
@@ -281,47 +277,10 @@ static int snd_line6_new_midi(struct snd_line6_midi *line6midi)
|
||||
return 0;
|
||||
}
|
||||
|
||||
-/*
|
||||
- "read" request on "midi_mask_transmit" special file.
|
||||
-*/
|
||||
-static ssize_t midi_get_midi_mask_transmit(struct device *dev,
|
||||
- struct device_attribute *attr,
|
||||
- char *buf)
|
||||
-{
|
||||
- struct usb_interface *interface = to_usb_interface(dev);
|
||||
- struct usb_line6 *line6 = usb_get_intfdata(interface);
|
||||
- return sprintf(buf, "%d\n", line6->line6midi->midi_mask_transmit);
|
||||
-}
|
||||
-
|
||||
-/*
|
||||
- "write" request on "midi_mask" special file.
|
||||
-*/
|
||||
-static ssize_t midi_set_midi_mask_transmit(struct device *dev,
|
||||
- struct device_attribute *attr,
|
||||
- const char *buf, size_t count)
|
||||
-{
|
||||
- struct usb_interface *interface = to_usb_interface(dev);
|
||||
- struct usb_line6 *line6 = usb_get_intfdata(interface);
|
||||
- unsigned short value;
|
||||
- int ret;
|
||||
-
|
||||
- ret = kstrtou16(buf, 10, &value);
|
||||
- if (ret)
|
||||
- return ret;
|
||||
-
|
||||
- line6->line6midi->midi_mask_transmit = value;
|
||||
- return count;
|
||||
-}
|
||||
-
|
||||
-static DEVICE_ATTR(midi_mask_transmit, S_IWUSR | S_IRUGO,
|
||||
- midi_get_midi_mask_transmit, midi_set_midi_mask_transmit);
|
||||
-
|
||||
/* MIDI device destructor */
|
||||
static int snd_line6_midi_free(struct snd_device *device)
|
||||
{
|
||||
struct snd_line6_midi *line6midi = device->device_data;
|
||||
- device_remove_file(line6midi->line6->ifcdev,
|
||||
- &dev_attr_midi_mask_transmit);
|
||||
line6_midibuf_destroy(&line6midi->midibuf_in);
|
||||
line6_midibuf_destroy(&line6midi->midibuf_out);
|
||||
return 0;
|
||||
@@ -363,17 +322,6 @@ int line6_init_midi(struct usb_line6 *line6)
|
||||
}
|
||||
|
||||
line6midi->line6 = line6;
|
||||
-
|
||||
- switch (line6->product) {
|
||||
- case LINE6_DEVID_PODHD300:
|
||||
- case LINE6_DEVID_PODHD500:
|
||||
- line6midi->midi_mask_transmit = 1;
|
||||
- break;
|
||||
-
|
||||
- default:
|
||||
- line6midi->midi_mask_transmit = 1;
|
||||
- }
|
||||
-
|
||||
line6->line6midi = line6midi;
|
||||
|
||||
err = snd_device_new(line6->card, SNDRV_DEV_RAWMIDI, line6midi,
|
||||
@@ -387,10 +335,6 @@ int line6_init_midi(struct usb_line6 *line6)
|
||||
if (err < 0)
|
||||
return err;
|
||||
|
||||
- err = device_create_file(line6->ifcdev, &dev_attr_midi_mask_transmit);
|
||||
- if (err < 0)
|
||||
- return err;
|
||||
-
|
||||
init_waitqueue_head(&line6midi->send_wait);
|
||||
spin_lock_init(&line6midi->send_urb_lock);
|
||||
spin_lock_init(&line6midi->midi_transmit_lock);
|
||||
diff --git a/drivers/staging/line6/midi.h b/drivers/staging/line6/midi.h
|
||||
index cf32d77..19dabd5 100644
|
||||
--- a/drivers/staging/line6/midi.h
|
||||
+++ b/drivers/staging/line6/midi.h
|
||||
@@ -55,11 +55,6 @@ struct snd_line6_midi {
|
||||
wait_queue_head_t send_wait;
|
||||
|
||||
/**
|
||||
- Bit mask for output MIDI channels.
|
||||
- */
|
||||
- unsigned short midi_mask_transmit;
|
||||
-
|
||||
- /**
|
||||
Buffer for incoming MIDI stream.
|
||||
*/
|
||||
struct MidiBuffer midibuf_in;
|
126
debian/patches/features/all/line6/0086-staging-line6-drop-midi_postprocess-flag.patch
vendored
Normal file
126
debian/patches/features/all/line6/0086-staging-line6-drop-midi_postprocess-flag.patch
vendored
Normal file
|
@ -0,0 +1,126 @@
|
|||
From: Stefan Hajnoczi <stefanha@gmail.com>
|
||||
Date: Thu, 22 Nov 2012 20:49:05 +0100
|
||||
Subject: [086/106] staging: line6: drop midi_postprocess flag
|
||||
|
||||
commit 370a382fa72879a23eb92786009cd41e38b93385 upstream.
|
||||
|
||||
It is no longer necessary to trigger on MIDI transmit messages that will
|
||||
change the state of the device since:
|
||||
|
||||
1. We've dropped the midi_postprocess sysfs attr in a previous commit so
|
||||
it is not possible to activate this feature anymore.
|
||||
|
||||
2. The other sysfs attrs that could inspect the state after a dump
|
||||
request have been dropped.
|
||||
|
||||
Therefore we can safely remove this dead code.
|
||||
|
||||
Signed-off-by: Stefan Hajnoczi <stefanha@gmail.com>
|
||||
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
||||
---
|
||||
drivers/staging/line6/midi.c | 22 ----------------------
|
||||
drivers/staging/line6/pod.c | 34 ----------------------------------
|
||||
drivers/staging/line6/pod.h | 7 -------
|
||||
3 files changed, 63 deletions(-)
|
||||
|
||||
diff --git a/drivers/staging/line6/midi.c b/drivers/staging/line6/midi.c
|
||||
index 6d9ecb9..6982eca 100644
|
||||
--- a/drivers/staging/line6/midi.c
|
||||
+++ b/drivers/staging/line6/midi.c
|
||||
@@ -148,28 +148,6 @@ static int send_midi_async(struct usb_line6 *line6, unsigned char *data,
|
||||
}
|
||||
|
||||
++line6->line6midi->num_active_send_urbs;
|
||||
-
|
||||
- switch (line6->usbdev->descriptor.idProduct) {
|
||||
- case LINE6_DEVID_BASSPODXT:
|
||||
- case LINE6_DEVID_BASSPODXTLIVE:
|
||||
- case LINE6_DEVID_BASSPODXTPRO:
|
||||
- case LINE6_DEVID_PODXT:
|
||||
- case LINE6_DEVID_PODXTLIVE:
|
||||
- case LINE6_DEVID_PODXTPRO:
|
||||
- case LINE6_DEVID_POCKETPOD:
|
||||
- line6_pod_midi_postprocess((struct usb_line6_pod *)line6, data,
|
||||
- length);
|
||||
- break;
|
||||
-
|
||||
- case LINE6_DEVID_VARIAX:
|
||||
- case LINE6_DEVID_PODHD300:
|
||||
- case LINE6_DEVID_PODHD500:
|
||||
- break;
|
||||
-
|
||||
- default:
|
||||
- MISSING_CASE;
|
||||
- }
|
||||
-
|
||||
return 0;
|
||||
}
|
||||
|
||||
diff --git a/drivers/staging/line6/pod.c b/drivers/staging/line6/pod.c
|
||||
index 37b20d7..ddd0e54 100644
|
||||
--- a/drivers/staging/line6/pod.c
|
||||
+++ b/drivers/staging/line6/pod.c
|
||||
@@ -285,40 +285,6 @@ void line6_pod_process_message(struct usb_line6_pod *pod)
|
||||
}
|
||||
|
||||
/*
|
||||
- Detect some cases that require a channel dump after sending a command to the
|
||||
- device. Important notes:
|
||||
- *) The actual dump request can not be sent here since we are not allowed to
|
||||
- wait for the completion of the first message in this context, and sending
|
||||
- the dump request before completion of the previous message leaves the POD
|
||||
- in an undefined state. The dump request will be sent when the echoed
|
||||
- commands are received.
|
||||
- *) This method fails if a param change message is "chopped" after the first
|
||||
- byte.
|
||||
-*/
|
||||
-void line6_pod_midi_postprocess(struct usb_line6_pod *pod, unsigned char *data,
|
||||
- int length)
|
||||
-{
|
||||
- int i;
|
||||
-
|
||||
- if (!pod->midi_postprocess)
|
||||
- return;
|
||||
-
|
||||
- for (i = 0; i < length; ++i) {
|
||||
- if (data[i] == (LINE6_PROGRAM_CHANGE | LINE6_CHANNEL_HOST)) {
|
||||
- line6_invalidate_current(&pod->dumpreq);
|
||||
- break;
|
||||
- } else
|
||||
- if ((data[i] == (LINE6_PARAM_CHANGE | LINE6_CHANNEL_HOST))
|
||||
- && (i < length - 1))
|
||||
- if ((data[i + 1] == POD_amp_model_setup)
|
||||
- || (data[i + 1] == POD_effect_setup)) {
|
||||
- line6_invalidate_current(&pod->dumpreq);
|
||||
- break;
|
||||
- }
|
||||
- }
|
||||
-}
|
||||
-
|
||||
-/*
|
||||
Transmit PODxt Pro control parameter.
|
||||
*/
|
||||
void line6_pod_transmit_parameter(struct usb_line6_pod *pod, int param,
|
||||
diff --git a/drivers/staging/line6/pod.h b/drivers/staging/line6/pod.h
|
||||
index 481cce6..8543bae 100644
|
||||
--- a/drivers/staging/line6/pod.h
|
||||
+++ b/drivers/staging/line6/pod.h
|
||||
@@ -127,18 +127,11 @@ struct usb_line6_pod {
|
||||
Device ID.
|
||||
*/
|
||||
int device_id;
|
||||
-
|
||||
- /**
|
||||
- Flag to enable MIDI postprocessing.
|
||||
- */
|
||||
- char midi_postprocess;
|
||||
};
|
||||
|
||||
extern void line6_pod_disconnect(struct usb_interface *interface);
|
||||
extern int line6_pod_init(struct usb_interface *interface,
|
||||
struct usb_line6_pod *pod);
|
||||
-extern void line6_pod_midi_postprocess(struct usb_line6_pod *pod,
|
||||
- unsigned char *data, int length);
|
||||
extern void line6_pod_process_message(struct usb_line6_pod *pod);
|
||||
extern void line6_pod_transmit_parameter(struct usb_line6_pod *pod, int param,
|
||||
u8 value);
|
55
debian/patches/features/all/line6/0087-staging-line6-drop-pod.c-raw-sysfs-attr.patch
vendored
Normal file
55
debian/patches/features/all/line6/0087-staging-line6-drop-pod.c-raw-sysfs-attr.patch
vendored
Normal file
|
@ -0,0 +1,55 @@
|
|||
From: Stefan Hajnoczi <stefanha@gmail.com>
|
||||
Date: Thu, 22 Nov 2012 20:49:06 +0100
|
||||
Subject: [087/106] staging: line6: drop pod.c raw sysfs attr
|
||||
|
||||
commit e62025281bb565f2cdb3e42e900caf972809eb35 upstream.
|
||||
|
||||
The raw sysfs attr transmits MIDI messages with less filtering. This
|
||||
was a useful debugging tool while the staging driver still had a lot of
|
||||
state and filtering. It is not useful anymore since the filtering is
|
||||
being dropped.
|
||||
|
||||
Signed-off-by: Stefan Hajnoczi <stefanha@gmail.com>
|
||||
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
||||
---
|
||||
drivers/staging/line6/pod.c | 13 -------------
|
||||
1 file changed, 13 deletions(-)
|
||||
|
||||
diff --git a/drivers/staging/line6/pod.c b/drivers/staging/line6/pod.c
|
||||
index ddd0e54..db9c905 100644
|
||||
--- a/drivers/staging/line6/pod.c
|
||||
+++ b/drivers/staging/line6/pod.c
|
||||
@@ -447,10 +447,6 @@ static DEVICE_ATTR(firmware_version, S_IRUGO, pod_get_firmware_version,
|
||||
static DEVICE_ATTR(serial_number, S_IRUGO, pod_get_serial_number,
|
||||
line6_nop_write);
|
||||
|
||||
-#ifdef CONFIG_LINE6_USB_RAW
|
||||
-static DEVICE_ATTR(raw, S_IWUSR, line6_nop_read, line6_set_raw);
|
||||
-#endif
|
||||
-
|
||||
/* control info callback */
|
||||
static int snd_pod_control_monitor_info(struct snd_kcontrol *kcontrol,
|
||||
struct snd_ctl_elem_info *uinfo)
|
||||
@@ -527,11 +523,6 @@ static int pod_create_files2(struct device *dev)
|
||||
CHECK_RETURN(device_create_file(dev, &dev_attr_device_id));
|
||||
CHECK_RETURN(device_create_file(dev, &dev_attr_firmware_version));
|
||||
CHECK_RETURN(device_create_file(dev, &dev_attr_serial_number));
|
||||
-
|
||||
-#ifdef CONFIG_LINE6_USB_RAW
|
||||
- CHECK_RETURN(device_create_file(dev, &dev_attr_raw));
|
||||
-#endif
|
||||
-
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -640,10 +631,6 @@ void line6_pod_disconnect(struct usb_interface *interface)
|
||||
device_remove_file(dev, &dev_attr_device_id);
|
||||
device_remove_file(dev, &dev_attr_firmware_version);
|
||||
device_remove_file(dev, &dev_attr_serial_number);
|
||||
-
|
||||
-#ifdef CONFIG_LINE6_USB_RAW
|
||||
- device_remove_file(dev, &dev_attr_raw);
|
||||
-#endif
|
||||
}
|
||||
}
|
||||
|
64
debian/patches/features/all/line6/0088-staging-line6-drop-tuner-param-filtering.patch
vendored
Normal file
64
debian/patches/features/all/line6/0088-staging-line6-drop-tuner-param-filtering.patch
vendored
Normal file
|
@ -0,0 +1,64 @@
|
|||
From: Stefan Hajnoczi <stefanha@gmail.com>
|
||||
Date: Thu, 22 Nov 2012 20:49:07 +0100
|
||||
Subject: [088/106] staging: line6: drop tuner param filtering
|
||||
|
||||
commit baa081f127dcb213e06dec828c091e4f1048e4b3 upstream.
|
||||
|
||||
The pod_set_system_param_int() helper function is only used to set the
|
||||
monitor level. Previously it was also used to control the tuner and has
|
||||
special checks. These checks can now be dropped, along with the tuner
|
||||
constants.
|
||||
|
||||
Signed-off-by: Stefan Hajnoczi <stefanha@gmail.com>
|
||||
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
||||
---
|
||||
drivers/staging/line6/pod.c | 21 ---------------------
|
||||
1 file changed, 21 deletions(-)
|
||||
|
||||
diff --git a/drivers/staging/line6/pod.c b/drivers/staging/line6/pod.c
|
||||
index db9c905..157ef68 100644
|
||||
--- a/drivers/staging/line6/pod.c
|
||||
+++ b/drivers/staging/line6/pod.c
|
||||
@@ -40,10 +40,6 @@ enum {
|
||||
|
||||
enum {
|
||||
POD_monitor_level = 0x04,
|
||||
- POD_tuner_mute = 0x13,
|
||||
- POD_tuner_freq = 0x15,
|
||||
- POD_tuner_note = 0x16,
|
||||
- POD_tuner_pitch = 0x17,
|
||||
POD_system_invalid = 0x10000
|
||||
};
|
||||
|
||||
@@ -298,19 +294,7 @@ void line6_pod_transmit_parameter(struct usb_line6_pod *pod, int param,
|
||||
}
|
||||
|
||||
/*
|
||||
- Identify system parameters related to the tuner.
|
||||
-*/
|
||||
-static bool pod_is_tuner(int code)
|
||||
-{
|
||||
- return
|
||||
- (code == POD_tuner_mute) ||
|
||||
- (code == POD_tuner_freq) ||
|
||||
- (code == POD_tuner_note) || (code == POD_tuner_pitch);
|
||||
-}
|
||||
-
|
||||
-/*
|
||||
Send system parameter (from integer).
|
||||
- @param tuner non-zero, if code refers to a tuner parameter
|
||||
*/
|
||||
static int pod_set_system_param_int(struct usb_line6_pod *pod, int value,
|
||||
int code)
|
||||
@@ -318,11 +302,6 @@ static int pod_set_system_param_int(struct usb_line6_pod *pod, int value,
|
||||
char *sysex;
|
||||
static const int size = 5;
|
||||
|
||||
- if (((pod->prog_data.control[POD_tuner] & 0x40) == 0)
|
||||
- && pod_is_tuner(code))
|
||||
- return -EINVAL;
|
||||
-
|
||||
- /* send value to tuner: */
|
||||
sysex = pod_alloc_sysex_buffer(pod, POD_SYSEX_SYSTEM, size);
|
||||
if (!sysex)
|
||||
return -ENOMEM;
|
106
debian/patches/features/all/line6/0089-staging-line6-drop-variax-model-sysfs-attr.patch
vendored
Normal file
106
debian/patches/features/all/line6/0089-staging-line6-drop-variax-model-sysfs-attr.patch
vendored
Normal file
|
@ -0,0 +1,106 @@
|
|||
From: Stefan Hajnoczi <stefanha@gmail.com>
|
||||
Date: Thu, 22 Nov 2012 20:49:08 +0100
|
||||
Subject: [089/106] staging: line6: drop variax model sysfs attr
|
||||
|
||||
commit a865e012a29a92f07ed25b81bc86d7e772edeb38 upstream.
|
||||
|
||||
Signed-off-by: Stefan Hajnoczi <stefanha@gmail.com>
|
||||
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
||||
---
|
||||
drivers/staging/line6/variax.c | 38 --------------------------------------
|
||||
drivers/staging/line6/variax.h | 5 -----
|
||||
2 files changed, 43 deletions(-)
|
||||
|
||||
diff --git a/drivers/staging/line6/variax.c b/drivers/staging/line6/variax.c
|
||||
index 8df529f..e76255b 100644
|
||||
--- a/drivers/staging/line6/variax.c
|
||||
+++ b/drivers/staging/line6/variax.c
|
||||
@@ -212,7 +212,6 @@ void line6_variax_process_message(struct usb_line6_variax *variax)
|
||||
|
||||
case LINE6_PROGRAM_CHANGE | LINE6_CHANNEL_DEVICE:
|
||||
case LINE6_PROGRAM_CHANGE | LINE6_CHANNEL_HOST:
|
||||
- variax->model = buf[1];
|
||||
line6_dump_request_async(&variax->dumpreq, &variax->line6, 0,
|
||||
VARIAX_DUMP_PASS1);
|
||||
break;
|
||||
@@ -334,39 +333,6 @@ static ssize_t variax_set_volume(struct device *dev,
|
||||
}
|
||||
|
||||
/*
|
||||
- "read" request on "model" special file.
|
||||
-*/
|
||||
-static ssize_t variax_get_model(struct device *dev,
|
||||
- struct device_attribute *attr, char *buf)
|
||||
-{
|
||||
- struct usb_line6_variax *variax =
|
||||
- usb_get_intfdata(to_usb_interface(dev));
|
||||
- return sprintf(buf, "%d\n", variax->model);
|
||||
-}
|
||||
-
|
||||
-/*
|
||||
- "write" request on "model" special file.
|
||||
-*/
|
||||
-static ssize_t variax_set_model(struct device *dev,
|
||||
- struct device_attribute *attr,
|
||||
- const char *buf, size_t count)
|
||||
-{
|
||||
- struct usb_line6_variax *variax =
|
||||
- usb_get_intfdata(to_usb_interface(dev));
|
||||
- u8 value;
|
||||
- int ret;
|
||||
-
|
||||
- ret = kstrtou8(buf, 10, &value);
|
||||
- if (ret)
|
||||
- return ret;
|
||||
-
|
||||
- if (line6_send_program(&variax->line6, value) == 0)
|
||||
- variax->model = value;
|
||||
-
|
||||
- return count;
|
||||
-}
|
||||
-
|
||||
-/*
|
||||
"read" request on "active" special file.
|
||||
*/
|
||||
static ssize_t variax_get_active(struct device *dev,
|
||||
@@ -549,8 +515,6 @@ static ssize_t variax_set_raw2(struct device *dev,
|
||||
#endif
|
||||
|
||||
/* Variax workbench special files: */
|
||||
-static DEVICE_ATTR(model, S_IWUSR | S_IRUGO, variax_get_model,
|
||||
- variax_set_model);
|
||||
static DEVICE_ATTR(volume, S_IWUSR | S_IRUGO, variax_get_volume,
|
||||
variax_set_volume);
|
||||
static DEVICE_ATTR(tone, S_IWUSR | S_IRUGO, variax_get_tone, variax_set_tone);
|
||||
@@ -595,7 +559,6 @@ static void variax_destruct(struct usb_interface *interface)
|
||||
static int variax_create_files2(struct device *dev)
|
||||
{
|
||||
int err;
|
||||
- CHECK_RETURN(device_create_file(dev, &dev_attr_model));
|
||||
CHECK_RETURN(device_create_file(dev, &dev_attr_volume));
|
||||
CHECK_RETURN(device_create_file(dev, &dev_attr_tone));
|
||||
CHECK_RETURN(device_create_file(dev, &dev_attr_name));
|
||||
@@ -701,7 +664,6 @@ void line6_variax_disconnect(struct usb_interface *interface)
|
||||
if (dev != NULL) {
|
||||
/* remove sysfs entries: */
|
||||
line6_variax_remove_files(0, 0, dev);
|
||||
- device_remove_file(dev, &dev_attr_model);
|
||||
device_remove_file(dev, &dev_attr_volume);
|
||||
device_remove_file(dev, &dev_attr_tone);
|
||||
device_remove_file(dev, &dev_attr_name);
|
||||
diff --git a/drivers/staging/line6/variax.h b/drivers/staging/line6/variax.h
|
||||
index e2999ab..4151c14 100644
|
||||
--- a/drivers/staging/line6/variax.h
|
||||
+++ b/drivers/staging/line6/variax.h
|
||||
@@ -78,11 +78,6 @@ struct usb_line6_variax {
|
||||
unsigned char *buffer_activate;
|
||||
|
||||
/**
|
||||
- Model number.
|
||||
- */
|
||||
- int model;
|
||||
-
|
||||
- /**
|
||||
Current model settings.
|
||||
*/
|
||||
struct variax_model model_data;
|
110
debian/patches/features/all/line6/0090-staging-line6-drop-variax-volume-sysfs-attr.patch
vendored
Normal file
110
debian/patches/features/all/line6/0090-staging-line6-drop-variax-volume-sysfs-attr.patch
vendored
Normal file
|
@ -0,0 +1,110 @@
|
|||
From: Stefan Hajnoczi <stefanha@gmail.com>
|
||||
Date: Thu, 22 Nov 2012 20:49:09 +0100
|
||||
Subject: [090/106] staging: line6: drop variax volume sysfs attr
|
||||
|
||||
commit 9f242ef59b72be7f1c71233a5c91b6e2b3dbc6dc upstream.
|
||||
|
||||
Signed-off-by: Stefan Hajnoczi <stefanha@gmail.com>
|
||||
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
||||
---
|
||||
drivers/staging/line6/variax.c | 42 ----------------------------------------
|
||||
drivers/staging/line6/variax.h | 5 -----
|
||||
2 files changed, 47 deletions(-)
|
||||
|
||||
diff --git a/drivers/staging/line6/variax.c b/drivers/staging/line6/variax.c
|
||||
index e76255b..ef78f5a 100644
|
||||
--- a/drivers/staging/line6/variax.c
|
||||
+++ b/drivers/staging/line6/variax.c
|
||||
@@ -200,10 +200,6 @@ void line6_variax_process_message(struct usb_line6_variax *variax)
|
||||
switch (buf[0]) {
|
||||
case LINE6_PARAM_CHANGE | LINE6_CHANNEL_HOST:
|
||||
switch (buf[1]) {
|
||||
- case VARIAXMIDI_volume:
|
||||
- variax->volume = buf[2];
|
||||
- break;
|
||||
-
|
||||
case VARIAXMIDI_tone:
|
||||
variax->tone = buf[2];
|
||||
}
|
||||
@@ -299,40 +295,6 @@ void line6_variax_process_message(struct usb_line6_variax *variax)
|
||||
}
|
||||
|
||||
/*
|
||||
- "read" request on "volume" special file.
|
||||
-*/
|
||||
-static ssize_t variax_get_volume(struct device *dev,
|
||||
- struct device_attribute *attr, char *buf)
|
||||
-{
|
||||
- struct usb_line6_variax *variax =
|
||||
- usb_get_intfdata(to_usb_interface(dev));
|
||||
- return sprintf(buf, "%d\n", variax->volume);
|
||||
-}
|
||||
-
|
||||
-/*
|
||||
- "write" request on "volume" special file.
|
||||
-*/
|
||||
-static ssize_t variax_set_volume(struct device *dev,
|
||||
- struct device_attribute *attr,
|
||||
- const char *buf, size_t count)
|
||||
-{
|
||||
- struct usb_line6_variax *variax =
|
||||
- usb_get_intfdata(to_usb_interface(dev));
|
||||
- u8 value;
|
||||
- int ret;
|
||||
-
|
||||
- ret = kstrtou8(buf, 10, &value);
|
||||
- if (ret)
|
||||
- return ret;
|
||||
-
|
||||
- if (line6_transmit_parameter(&variax->line6, VARIAXMIDI_volume,
|
||||
- value) == 0)
|
||||
- variax->volume = value;
|
||||
-
|
||||
- return count;
|
||||
-}
|
||||
-
|
||||
-/*
|
||||
"read" request on "active" special file.
|
||||
*/
|
||||
static ssize_t variax_get_active(struct device *dev,
|
||||
@@ -515,8 +477,6 @@ static ssize_t variax_set_raw2(struct device *dev,
|
||||
#endif
|
||||
|
||||
/* Variax workbench special files: */
|
||||
-static DEVICE_ATTR(volume, S_IWUSR | S_IRUGO, variax_get_volume,
|
||||
- variax_set_volume);
|
||||
static DEVICE_ATTR(tone, S_IWUSR | S_IRUGO, variax_get_tone, variax_set_tone);
|
||||
static DEVICE_ATTR(name, S_IRUGO, variax_get_name, line6_nop_write);
|
||||
static DEVICE_ATTR(bank, S_IRUGO, variax_get_bank, line6_nop_write);
|
||||
@@ -559,7 +519,6 @@ static void variax_destruct(struct usb_interface *interface)
|
||||
static int variax_create_files2(struct device *dev)
|
||||
{
|
||||
int err;
|
||||
- CHECK_RETURN(device_create_file(dev, &dev_attr_volume));
|
||||
CHECK_RETURN(device_create_file(dev, &dev_attr_tone));
|
||||
CHECK_RETURN(device_create_file(dev, &dev_attr_name));
|
||||
CHECK_RETURN(device_create_file(dev, &dev_attr_bank));
|
||||
@@ -664,7 +623,6 @@ void line6_variax_disconnect(struct usb_interface *interface)
|
||||
if (dev != NULL) {
|
||||
/* remove sysfs entries: */
|
||||
line6_variax_remove_files(0, 0, dev);
|
||||
- device_remove_file(dev, &dev_attr_volume);
|
||||
device_remove_file(dev, &dev_attr_tone);
|
||||
device_remove_file(dev, &dev_attr_name);
|
||||
device_remove_file(dev, &dev_attr_bank);
|
||||
diff --git a/drivers/staging/line6/variax.h b/drivers/staging/line6/variax.h
|
||||
index 4151c14..426c90c 100644
|
||||
--- a/drivers/staging/line6/variax.h
|
||||
+++ b/drivers/staging/line6/variax.h
|
||||
@@ -93,11 +93,6 @@ struct usb_line6_variax {
|
||||
unsigned char bank[18];
|
||||
|
||||
/**
|
||||
- Position of volume dial.
|
||||
- */
|
||||
- int volume;
|
||||
-
|
||||
- /**
|
||||
Position of tone control dial.
|
||||
*/
|
||||
int tone;
|
110
debian/patches/features/all/line6/0091-staging-line6-drop-variax-tone-sysfs-attr.patch
vendored
Normal file
110
debian/patches/features/all/line6/0091-staging-line6-drop-variax-tone-sysfs-attr.patch
vendored
Normal file
|
@ -0,0 +1,110 @@
|
|||
From: Stefan Hajnoczi <stefanha@gmail.com>
|
||||
Date: Thu, 22 Nov 2012 20:49:10 +0100
|
||||
Subject: [091/106] staging: line6: drop variax tone sysfs attr
|
||||
|
||||
commit abac15bd1812c8c8c7186b019dc2b946ac885e5b upstream.
|
||||
|
||||
Signed-off-by: Stefan Hajnoczi <stefanha@gmail.com>
|
||||
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
||||
---
|
||||
drivers/staging/line6/variax.c | 42 ----------------------------------------
|
||||
drivers/staging/line6/variax.h | 5 -----
|
||||
2 files changed, 47 deletions(-)
|
||||
|
||||
diff --git a/drivers/staging/line6/variax.c b/drivers/staging/line6/variax.c
|
||||
index ef78f5a..31ece34 100644
|
||||
--- a/drivers/staging/line6/variax.c
|
||||
+++ b/drivers/staging/line6/variax.c
|
||||
@@ -199,11 +199,6 @@ void line6_variax_process_message(struct usb_line6_variax *variax)
|
||||
|
||||
switch (buf[0]) {
|
||||
case LINE6_PARAM_CHANGE | LINE6_CHANNEL_HOST:
|
||||
- switch (buf[1]) {
|
||||
- case VARIAXMIDI_tone:
|
||||
- variax->tone = buf[2];
|
||||
- }
|
||||
-
|
||||
break;
|
||||
|
||||
case LINE6_PROGRAM_CHANGE | LINE6_CHANNEL_DEVICE:
|
||||
@@ -326,40 +321,6 @@ static ssize_t variax_set_active(struct device *dev,
|
||||
return count;
|
||||
}
|
||||
|
||||
-/*
|
||||
- "read" request on "tone" special file.
|
||||
-*/
|
||||
-static ssize_t variax_get_tone(struct device *dev,
|
||||
- struct device_attribute *attr, char *buf)
|
||||
-{
|
||||
- struct usb_line6_variax *variax =
|
||||
- usb_get_intfdata(to_usb_interface(dev));
|
||||
- return sprintf(buf, "%d\n", variax->tone);
|
||||
-}
|
||||
-
|
||||
-/*
|
||||
- "write" request on "tone" special file.
|
||||
-*/
|
||||
-static ssize_t variax_set_tone(struct device *dev,
|
||||
- struct device_attribute *attr,
|
||||
- const char *buf, size_t count)
|
||||
-{
|
||||
- struct usb_line6_variax *variax =
|
||||
- usb_get_intfdata(to_usb_interface(dev));
|
||||
- u8 value;
|
||||
- int ret;
|
||||
-
|
||||
- ret = kstrtou8(buf, 10, &value);
|
||||
- if (ret)
|
||||
- return ret;
|
||||
-
|
||||
- if (line6_transmit_parameter(&variax->line6, VARIAXMIDI_tone,
|
||||
- value) == 0)
|
||||
- variax->tone = value;
|
||||
-
|
||||
- return count;
|
||||
-}
|
||||
-
|
||||
static ssize_t get_string(char *buf, const char *data, int length)
|
||||
{
|
||||
int i;
|
||||
@@ -477,7 +438,6 @@ static ssize_t variax_set_raw2(struct device *dev,
|
||||
#endif
|
||||
|
||||
/* Variax workbench special files: */
|
||||
-static DEVICE_ATTR(tone, S_IWUSR | S_IRUGO, variax_get_tone, variax_set_tone);
|
||||
static DEVICE_ATTR(name, S_IRUGO, variax_get_name, line6_nop_write);
|
||||
static DEVICE_ATTR(bank, S_IRUGO, variax_get_bank, line6_nop_write);
|
||||
static DEVICE_ATTR(dump, S_IRUGO, variax_get_dump, line6_nop_write);
|
||||
@@ -519,7 +479,6 @@ static void variax_destruct(struct usb_interface *interface)
|
||||
static int variax_create_files2(struct device *dev)
|
||||
{
|
||||
int err;
|
||||
- CHECK_RETURN(device_create_file(dev, &dev_attr_tone));
|
||||
CHECK_RETURN(device_create_file(dev, &dev_attr_name));
|
||||
CHECK_RETURN(device_create_file(dev, &dev_attr_bank));
|
||||
CHECK_RETURN(device_create_file(dev, &dev_attr_dump));
|
||||
@@ -623,7 +582,6 @@ void line6_variax_disconnect(struct usb_interface *interface)
|
||||
if (dev != NULL) {
|
||||
/* remove sysfs entries: */
|
||||
line6_variax_remove_files(0, 0, dev);
|
||||
- device_remove_file(dev, &dev_attr_tone);
|
||||
device_remove_file(dev, &dev_attr_name);
|
||||
device_remove_file(dev, &dev_attr_bank);
|
||||
device_remove_file(dev, &dev_attr_dump);
|
||||
diff --git a/drivers/staging/line6/variax.h b/drivers/staging/line6/variax.h
|
||||
index 426c90c..745b5a1 100644
|
||||
--- a/drivers/staging/line6/variax.h
|
||||
+++ b/drivers/staging/line6/variax.h
|
||||
@@ -93,11 +93,6 @@ struct usb_line6_variax {
|
||||
unsigned char bank[18];
|
||||
|
||||
/**
|
||||
- Position of tone control dial.
|
||||
- */
|
||||
- int tone;
|
||||
-
|
||||
- /**
|
||||
Handler for device initializaton.
|
||||
*/
|
||||
struct work_struct startup_work;
|
78
debian/patches/features/all/line6/0092-staging-line6-drop-variax-name-sysfs-attr.patch
vendored
Normal file
78
debian/patches/features/all/line6/0092-staging-line6-drop-variax-name-sysfs-attr.patch
vendored
Normal file
|
@ -0,0 +1,78 @@
|
|||
From: Stefan Hajnoczi <stefanha@gmail.com>
|
||||
Date: Thu, 22 Nov 2012 20:49:11 +0100
|
||||
Subject: [092/106] staging: line6: drop variax name sysfs attr
|
||||
|
||||
commit ed5da06a77cef2aa64eb8298578fe1dc8e96ce35 upstream.
|
||||
|
||||
Signed-off-by: Stefan Hajnoczi <stefanha@gmail.com>
|
||||
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
||||
---
|
||||
drivers/staging/line6/variax.c | 27 ---------------------------
|
||||
1 file changed, 27 deletions(-)
|
||||
|
||||
diff --git a/drivers/staging/line6/variax.c b/drivers/staging/line6/variax.c
|
||||
index 31ece34..94a9f71 100644
|
||||
--- a/drivers/staging/line6/variax.c
|
||||
+++ b/drivers/staging/line6/variax.c
|
||||
@@ -218,17 +218,6 @@ void line6_variax_process_message(struct usb_line6_variax *variax)
|
||||
VARIAX_MODEL_MESSAGE_LENGTH) {
|
||||
switch (variax->dumpreq.in_progress) {
|
||||
case VARIAX_DUMP_PASS1:
|
||||
- variax_decode(buf +
|
||||
- VARIAX_MODEL_HEADER_LENGTH,
|
||||
- (unsigned char *)
|
||||
- &variax->model_data,
|
||||
- (sizeof
|
||||
- (variax->model_data.
|
||||
- name) +
|
||||
- sizeof(variax->
|
||||
- model_data.
|
||||
- control)
|
||||
- / 2) * 2);
|
||||
line6_dump_request_async
|
||||
(&variax->dumpreq, &variax->line6,
|
||||
1, VARIAX_DUMP_PASS2);
|
||||
@@ -338,19 +327,6 @@ static ssize_t get_string(char *buf, const char *data, int length)
|
||||
}
|
||||
|
||||
/*
|
||||
- "read" request on "name" special file.
|
||||
-*/
|
||||
-static ssize_t variax_get_name(struct device *dev,
|
||||
- struct device_attribute *attr, char *buf)
|
||||
-{
|
||||
- struct usb_line6_variax *variax =
|
||||
- usb_get_intfdata(to_usb_interface(dev));
|
||||
- line6_dump_wait_interruptible(&variax->dumpreq);
|
||||
- return get_string(buf, variax->model_data.name,
|
||||
- sizeof(variax->model_data.name));
|
||||
-}
|
||||
-
|
||||
-/*
|
||||
"read" request on "bank" special file.
|
||||
*/
|
||||
static ssize_t variax_get_bank(struct device *dev,
|
||||
@@ -438,7 +414,6 @@ static ssize_t variax_set_raw2(struct device *dev,
|
||||
#endif
|
||||
|
||||
/* Variax workbench special files: */
|
||||
-static DEVICE_ATTR(name, S_IRUGO, variax_get_name, line6_nop_write);
|
||||
static DEVICE_ATTR(bank, S_IRUGO, variax_get_bank, line6_nop_write);
|
||||
static DEVICE_ATTR(dump, S_IRUGO, variax_get_dump, line6_nop_write);
|
||||
static DEVICE_ATTR(active, S_IWUSR | S_IRUGO, variax_get_active,
|
||||
@@ -479,7 +454,6 @@ static void variax_destruct(struct usb_interface *interface)
|
||||
static int variax_create_files2(struct device *dev)
|
||||
{
|
||||
int err;
|
||||
- CHECK_RETURN(device_create_file(dev, &dev_attr_name));
|
||||
CHECK_RETURN(device_create_file(dev, &dev_attr_bank));
|
||||
CHECK_RETURN(device_create_file(dev, &dev_attr_dump));
|
||||
CHECK_RETURN(device_create_file(dev, &dev_attr_active));
|
||||
@@ -582,7 +556,6 @@ void line6_variax_disconnect(struct usb_interface *interface)
|
||||
if (dev != NULL) {
|
||||
/* remove sysfs entries: */
|
||||
line6_variax_remove_files(0, 0, dev);
|
||||
- device_remove_file(dev, &dev_attr_name);
|
||||
device_remove_file(dev, &dev_attr_bank);
|
||||
device_remove_file(dev, &dev_attr_dump);
|
||||
device_remove_file(dev, &dev_attr_active);
|
104
debian/patches/features/all/line6/0093-staging-line6-drop-variax-bank-sysfs-attr.patch
vendored
Normal file
104
debian/patches/features/all/line6/0093-staging-line6-drop-variax-bank-sysfs-attr.patch
vendored
Normal file
|
@ -0,0 +1,104 @@
|
|||
From: Stefan Hajnoczi <stefanha@gmail.com>
|
||||
Date: Thu, 22 Nov 2012 20:49:12 +0100
|
||||
Subject: [093/106] staging: line6: drop variax bank sysfs attr
|
||||
|
||||
commit a9de8ddabb542c33945f5c733d80978fee556029 upstream.
|
||||
|
||||
The get_string() function is no longer used so drop it too.
|
||||
|
||||
Signed-off-by: Stefan Hajnoczi <stefanha@gmail.com>
|
||||
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
||||
---
|
||||
drivers/staging/line6/variax.c | 34 ----------------------------------
|
||||
drivers/staging/line6/variax.h | 5 -----
|
||||
2 files changed, 39 deletions(-)
|
||||
|
||||
diff --git a/drivers/staging/line6/variax.c b/drivers/staging/line6/variax.c
|
||||
index 94a9f71..8eec139 100644
|
||||
--- a/drivers/staging/line6/variax.c
|
||||
+++ b/drivers/staging/line6/variax.c
|
||||
@@ -248,9 +248,6 @@ void line6_variax_process_message(struct usb_line6_variax *variax)
|
||||
}
|
||||
} else if (memcmp(buf + 1, variax_request_bank + 1,
|
||||
sizeof(variax_request_bank) - 2) == 0) {
|
||||
- memcpy(variax->bank,
|
||||
- buf + sizeof(variax_request_bank) - 1,
|
||||
- sizeof(variax->bank));
|
||||
line6_dump_finished(&variax->dumpreq);
|
||||
variax_startup6(variax);
|
||||
} else if (memcmp(buf + 1, variax_init_model + 1,
|
||||
@@ -310,34 +307,6 @@ static ssize_t variax_set_active(struct device *dev,
|
||||
return count;
|
||||
}
|
||||
|
||||
-static ssize_t get_string(char *buf, const char *data, int length)
|
||||
-{
|
||||
- int i;
|
||||
- memcpy(buf, data, length);
|
||||
-
|
||||
- for (i = length; i--;) {
|
||||
- char c = buf[i];
|
||||
-
|
||||
- if ((c != 0) && (c != ' '))
|
||||
- break;
|
||||
- }
|
||||
-
|
||||
- buf[i + 1] = '\n';
|
||||
- return i + 2;
|
||||
-}
|
||||
-
|
||||
-/*
|
||||
- "read" request on "bank" special file.
|
||||
-*/
|
||||
-static ssize_t variax_get_bank(struct device *dev,
|
||||
- struct device_attribute *attr, char *buf)
|
||||
-{
|
||||
- struct usb_line6_variax *variax =
|
||||
- usb_get_intfdata(to_usb_interface(dev));
|
||||
- line6_dump_wait_interruptible(&variax->dumpreq);
|
||||
- return get_string(buf, variax->bank, sizeof(variax->bank));
|
||||
-}
|
||||
-
|
||||
/*
|
||||
"read" request on "dump" special file.
|
||||
*/
|
||||
@@ -414,7 +383,6 @@ static ssize_t variax_set_raw2(struct device *dev,
|
||||
#endif
|
||||
|
||||
/* Variax workbench special files: */
|
||||
-static DEVICE_ATTR(bank, S_IRUGO, variax_get_bank, line6_nop_write);
|
||||
static DEVICE_ATTR(dump, S_IRUGO, variax_get_dump, line6_nop_write);
|
||||
static DEVICE_ATTR(active, S_IWUSR | S_IRUGO, variax_get_active,
|
||||
variax_set_active);
|
||||
@@ -454,7 +422,6 @@ static void variax_destruct(struct usb_interface *interface)
|
||||
static int variax_create_files2(struct device *dev)
|
||||
{
|
||||
int err;
|
||||
- CHECK_RETURN(device_create_file(dev, &dev_attr_bank));
|
||||
CHECK_RETURN(device_create_file(dev, &dev_attr_dump));
|
||||
CHECK_RETURN(device_create_file(dev, &dev_attr_active));
|
||||
CHECK_RETURN(device_create_file(dev, &dev_attr_guitar));
|
||||
@@ -556,7 +523,6 @@ void line6_variax_disconnect(struct usb_interface *interface)
|
||||
if (dev != NULL) {
|
||||
/* remove sysfs entries: */
|
||||
line6_variax_remove_files(0, 0, dev);
|
||||
- device_remove_file(dev, &dev_attr_bank);
|
||||
device_remove_file(dev, &dev_attr_dump);
|
||||
device_remove_file(dev, &dev_attr_active);
|
||||
device_remove_file(dev, &dev_attr_guitar);
|
||||
diff --git a/drivers/staging/line6/variax.h b/drivers/staging/line6/variax.h
|
||||
index 745b5a1..b5d6a66 100644
|
||||
--- a/drivers/staging/line6/variax.h
|
||||
+++ b/drivers/staging/line6/variax.h
|
||||
@@ -88,11 +88,6 @@ struct usb_line6_variax {
|
||||
unsigned char guitar[18];
|
||||
|
||||
/**
|
||||
- Name of current model bank.
|
||||
- */
|
||||
- unsigned char bank[18];
|
||||
-
|
||||
- /**
|
||||
Handler for device initializaton.
|
||||
*/
|
||||
struct work_struct startup_work;
|
64
debian/patches/features/all/line6/0094-staging-line6-drop-variax-dump-sysfs-attr.patch
vendored
Normal file
64
debian/patches/features/all/line6/0094-staging-line6-drop-variax-dump-sysfs-attr.patch
vendored
Normal file
|
@ -0,0 +1,64 @@
|
|||
From: Stefan Hajnoczi <stefanha@gmail.com>
|
||||
Date: Thu, 22 Nov 2012 20:49:13 +0100
|
||||
Subject: [094/106] staging: line6: drop variax dump sysfs attr
|
||||
|
||||
commit 502eb4ee43064ad40d10a9ea20477f841a35167d upstream.
|
||||
|
||||
Signed-off-by: Stefan Hajnoczi <stefanha@gmail.com>
|
||||
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
||||
---
|
||||
drivers/staging/line6/variax.c | 20 --------------------
|
||||
1 file changed, 20 deletions(-)
|
||||
|
||||
diff --git a/drivers/staging/line6/variax.c b/drivers/staging/line6/variax.c
|
||||
index 8eec139..0f1846e 100644
|
||||
--- a/drivers/staging/line6/variax.c
|
||||
+++ b/drivers/staging/line6/variax.c
|
||||
@@ -308,23 +308,6 @@ static ssize_t variax_set_active(struct device *dev,
|
||||
}
|
||||
|
||||
/*
|
||||
- "read" request on "dump" special file.
|
||||
-*/
|
||||
-static ssize_t variax_get_dump(struct device *dev,
|
||||
- struct device_attribute *attr, char *buf)
|
||||
-{
|
||||
- struct usb_line6_variax *variax =
|
||||
- usb_get_intfdata(to_usb_interface(dev));
|
||||
- int retval;
|
||||
- retval = line6_dump_wait_interruptible(&variax->dumpreq);
|
||||
- if (retval < 0)
|
||||
- return retval;
|
||||
- memcpy(buf, &variax->model_data.control,
|
||||
- sizeof(variax->model_data.control));
|
||||
- return sizeof(variax->model_data.control);
|
||||
-}
|
||||
-
|
||||
-/*
|
||||
"read" request on "guitar" special file.
|
||||
*/
|
||||
static ssize_t variax_get_guitar(struct device *dev,
|
||||
@@ -383,7 +366,6 @@ static ssize_t variax_set_raw2(struct device *dev,
|
||||
#endif
|
||||
|
||||
/* Variax workbench special files: */
|
||||
-static DEVICE_ATTR(dump, S_IRUGO, variax_get_dump, line6_nop_write);
|
||||
static DEVICE_ATTR(active, S_IWUSR | S_IRUGO, variax_get_active,
|
||||
variax_set_active);
|
||||
static DEVICE_ATTR(guitar, S_IRUGO, variax_get_guitar, line6_nop_write);
|
||||
@@ -422,7 +404,6 @@ static void variax_destruct(struct usb_interface *interface)
|
||||
static int variax_create_files2(struct device *dev)
|
||||
{
|
||||
int err;
|
||||
- CHECK_RETURN(device_create_file(dev, &dev_attr_dump));
|
||||
CHECK_RETURN(device_create_file(dev, &dev_attr_active));
|
||||
CHECK_RETURN(device_create_file(dev, &dev_attr_guitar));
|
||||
#ifdef CONFIG_LINE6_USB_RAW
|
||||
@@ -523,7 +504,6 @@ void line6_variax_disconnect(struct usb_interface *interface)
|
||||
if (dev != NULL) {
|
||||
/* remove sysfs entries: */
|
||||
line6_variax_remove_files(0, 0, dev);
|
||||
- device_remove_file(dev, &dev_attr_dump);
|
||||
device_remove_file(dev, &dev_attr_active);
|
||||
device_remove_file(dev, &dev_attr_guitar);
|
||||
#ifdef CONFIG_LINE6_USB_RAW
|
82
debian/patches/features/all/line6/0095-staging-line6-drop-variax-active-sysfs-attr.patch
vendored
Normal file
82
debian/patches/features/all/line6/0095-staging-line6-drop-variax-active-sysfs-attr.patch
vendored
Normal file
|
@ -0,0 +1,82 @@
|
|||
From: Stefan Hajnoczi <stefanha@gmail.com>
|
||||
Date: Thu, 22 Nov 2012 20:49:14 +0100
|
||||
Subject: [095/106] staging: line6: drop variax active sysfs attr
|
||||
|
||||
commit d46e7c215229c29008c30fb8bca16a381d3ef5f4 upstream.
|
||||
|
||||
The get_string() function has no other callers so remove it too.
|
||||
|
||||
Signed-off-by: Stefan Hajnoczi <stefanha@gmail.com>
|
||||
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
||||
---
|
||||
drivers/staging/line6/variax.c | 36 ------------------------------------
|
||||
1 file changed, 36 deletions(-)
|
||||
|
||||
diff --git a/drivers/staging/line6/variax.c b/drivers/staging/line6/variax.c
|
||||
index 0f1846e..4600d24 100644
|
||||
--- a/drivers/staging/line6/variax.c
|
||||
+++ b/drivers/staging/line6/variax.c
|
||||
@@ -276,38 +276,6 @@ void line6_variax_process_message(struct usb_line6_variax *variax)
|
||||
}
|
||||
|
||||
/*
|
||||
- "read" request on "active" special file.
|
||||
-*/
|
||||
-static ssize_t variax_get_active(struct device *dev,
|
||||
- struct device_attribute *attr, char *buf)
|
||||
-{
|
||||
- struct usb_line6_variax *variax =
|
||||
- usb_get_intfdata(to_usb_interface(dev));
|
||||
- return sprintf(buf, "%d\n",
|
||||
- variax->buffer_activate[VARIAX_OFFSET_ACTIVATE]);
|
||||
-}
|
||||
-
|
||||
-/*
|
||||
- "write" request on "active" special file.
|
||||
-*/
|
||||
-static ssize_t variax_set_active(struct device *dev,
|
||||
- struct device_attribute *attr,
|
||||
- const char *buf, size_t count)
|
||||
-{
|
||||
- struct usb_line6_variax *variax =
|
||||
- usb_get_intfdata(to_usb_interface(dev));
|
||||
- u8 value;
|
||||
- int ret;
|
||||
-
|
||||
- ret = kstrtou8(buf, 10, &value);
|
||||
- if (ret)
|
||||
- return ret;
|
||||
-
|
||||
- variax_activate_async(variax, value ? 1 : 0);
|
||||
- return count;
|
||||
-}
|
||||
-
|
||||
-/*
|
||||
"read" request on "guitar" special file.
|
||||
*/
|
||||
static ssize_t variax_get_guitar(struct device *dev,
|
||||
@@ -366,8 +334,6 @@ static ssize_t variax_set_raw2(struct device *dev,
|
||||
#endif
|
||||
|
||||
/* Variax workbench special files: */
|
||||
-static DEVICE_ATTR(active, S_IWUSR | S_IRUGO, variax_get_active,
|
||||
- variax_set_active);
|
||||
static DEVICE_ATTR(guitar, S_IRUGO, variax_get_guitar, line6_nop_write);
|
||||
|
||||
#ifdef CONFIG_LINE6_USB_RAW
|
||||
@@ -404,7 +370,6 @@ static void variax_destruct(struct usb_interface *interface)
|
||||
static int variax_create_files2(struct device *dev)
|
||||
{
|
||||
int err;
|
||||
- CHECK_RETURN(device_create_file(dev, &dev_attr_active));
|
||||
CHECK_RETURN(device_create_file(dev, &dev_attr_guitar));
|
||||
#ifdef CONFIG_LINE6_USB_RAW
|
||||
CHECK_RETURN(device_create_file(dev, &dev_attr_raw));
|
||||
@@ -504,7 +469,6 @@ void line6_variax_disconnect(struct usb_interface *interface)
|
||||
if (dev != NULL) {
|
||||
/* remove sysfs entries: */
|
||||
line6_variax_remove_files(0, 0, dev);
|
||||
- device_remove_file(dev, &dev_attr_active);
|
||||
device_remove_file(dev, &dev_attr_guitar);
|
||||
#ifdef CONFIG_LINE6_USB_RAW
|
||||
device_remove_file(dev, &dev_attr_raw);
|
90
debian/patches/features/all/line6/0096-staging-line6-drop-variax-guitar-sysfs-attr.patch
vendored
Normal file
90
debian/patches/features/all/line6/0096-staging-line6-drop-variax-guitar-sysfs-attr.patch
vendored
Normal file
|
@ -0,0 +1,90 @@
|
|||
From: Stefan Hajnoczi <stefanha@gmail.com>
|
||||
Date: Thu, 22 Nov 2012 20:49:15 +0100
|
||||
Subject: [096/106] staging: line6: drop variax guitar sysfs attr
|
||||
|
||||
commit 52c5505ac5ff0588c51c82893a782bd8571e180c upstream.
|
||||
|
||||
Signed-off-by: Stefan Hajnoczi <stefanha@gmail.com>
|
||||
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
||||
---
|
||||
drivers/staging/line6/variax.c | 22 ----------------------
|
||||
drivers/staging/line6/variax.h | 5 -----
|
||||
2 files changed, 27 deletions(-)
|
||||
|
||||
diff --git a/drivers/staging/line6/variax.c b/drivers/staging/line6/variax.c
|
||||
index 4600d24..4db21a3 100644
|
||||
--- a/drivers/staging/line6/variax.c
|
||||
+++ b/drivers/staging/line6/variax.c
|
||||
@@ -250,11 +250,6 @@ void line6_variax_process_message(struct usb_line6_variax *variax)
|
||||
sizeof(variax_request_bank) - 2) == 0) {
|
||||
line6_dump_finished(&variax->dumpreq);
|
||||
variax_startup6(variax);
|
||||
- } else if (memcmp(buf + 1, variax_init_model + 1,
|
||||
- sizeof(variax_init_model) - 1) == 0) {
|
||||
- memcpy(variax->guitar,
|
||||
- buf + sizeof(variax_init_model),
|
||||
- sizeof(variax->guitar));
|
||||
} else if (memcmp(buf + 1, variax_init_version + 1,
|
||||
sizeof(variax_init_version) - 1) == 0) {
|
||||
variax_startup3(variax);
|
||||
@@ -275,17 +270,6 @@ void line6_variax_process_message(struct usb_line6_variax *variax)
|
||||
}
|
||||
}
|
||||
|
||||
-/*
|
||||
- "read" request on "guitar" special file.
|
||||
-*/
|
||||
-static ssize_t variax_get_guitar(struct device *dev,
|
||||
- struct device_attribute *attr, char *buf)
|
||||
-{
|
||||
- struct usb_line6_variax *variax =
|
||||
- usb_get_intfdata(to_usb_interface(dev));
|
||||
- return sprintf(buf, "%s\n", variax->guitar);
|
||||
-}
|
||||
-
|
||||
#ifdef CONFIG_LINE6_USB_RAW
|
||||
|
||||
static char *variax_alloc_sysex_buffer(struct usb_line6_variax *variax,
|
||||
@@ -333,9 +317,6 @@ static ssize_t variax_set_raw2(struct device *dev,
|
||||
|
||||
#endif
|
||||
|
||||
-/* Variax workbench special files: */
|
||||
-static DEVICE_ATTR(guitar, S_IRUGO, variax_get_guitar, line6_nop_write);
|
||||
-
|
||||
#ifdef CONFIG_LINE6_USB_RAW
|
||||
static DEVICE_ATTR(raw, S_IWUSR, line6_nop_read, line6_set_raw);
|
||||
static DEVICE_ATTR(raw2, S_IWUSR, line6_nop_read, variax_set_raw2);
|
||||
@@ -369,8 +350,6 @@ static void variax_destruct(struct usb_interface *interface)
|
||||
*/
|
||||
static int variax_create_files2(struct device *dev)
|
||||
{
|
||||
- int err;
|
||||
- CHECK_RETURN(device_create_file(dev, &dev_attr_guitar));
|
||||
#ifdef CONFIG_LINE6_USB_RAW
|
||||
CHECK_RETURN(device_create_file(dev, &dev_attr_raw));
|
||||
CHECK_RETURN(device_create_file(dev, &dev_attr_raw2));
|
||||
@@ -469,7 +448,6 @@ void line6_variax_disconnect(struct usb_interface *interface)
|
||||
if (dev != NULL) {
|
||||
/* remove sysfs entries: */
|
||||
line6_variax_remove_files(0, 0, dev);
|
||||
- device_remove_file(dev, &dev_attr_guitar);
|
||||
#ifdef CONFIG_LINE6_USB_RAW
|
||||
device_remove_file(dev, &dev_attr_raw);
|
||||
device_remove_file(dev, &dev_attr_raw2);
|
||||
diff --git a/drivers/staging/line6/variax.h b/drivers/staging/line6/variax.h
|
||||
index b5d6a66..f3d95fa 100644
|
||||
--- a/drivers/staging/line6/variax.h
|
||||
+++ b/drivers/staging/line6/variax.h
|
||||
@@ -83,11 +83,6 @@ struct usb_line6_variax {
|
||||
struct variax_model model_data;
|
||||
|
||||
/**
|
||||
- Name of connected guitar.
|
||||
- */
|
||||
- unsigned char guitar[18];
|
||||
-
|
||||
- /**
|
||||
Handler for device initializaton.
|
||||
*/
|
||||
struct work_struct startup_work;
|
134
debian/patches/features/all/line6/0097-staging-line6-drop-variax-raw-sysfs-attrs.patch
vendored
Normal file
134
debian/patches/features/all/line6/0097-staging-line6-drop-variax-raw-sysfs-attrs.patch
vendored
Normal file
|
@ -0,0 +1,134 @@
|
|||
From: Stefan Hajnoczi <stefanha@gmail.com>
|
||||
Date: Thu, 22 Nov 2012 20:49:16 +0100
|
||||
Subject: [097/106] staging: line6: drop variax raw sysfs attrs
|
||||
|
||||
commit 59ac6936bcb7fc95039eb7813bfb827271185c56 upstream.
|
||||
|
||||
Note that VARIAX_SYSEX_ACTIVATE was never used so drop it along with the
|
||||
other VARIAX_SYSEX_* constants which are now unused.
|
||||
|
||||
Signed-off-by: Stefan Hajnoczi <stefanha@gmail.com>
|
||||
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
||||
---
|
||||
drivers/staging/line6/variax.c | 73 ----------------------------------------
|
||||
1 file changed, 73 deletions(-)
|
||||
|
||||
diff --git a/drivers/staging/line6/variax.c b/drivers/staging/line6/variax.c
|
||||
index 4db21a3..ff55ad37 100644
|
||||
--- a/drivers/staging/line6/variax.c
|
||||
+++ b/drivers/staging/line6/variax.c
|
||||
@@ -16,9 +16,6 @@
|
||||
#include "driver.h"
|
||||
#include "variax.h"
|
||||
|
||||
-#define VARIAX_SYSEX_CODE 7
|
||||
-#define VARIAX_SYSEX_PARAM 0x3b
|
||||
-#define VARIAX_SYSEX_ACTIVATE 0x2a
|
||||
#define VARIAX_MODEL_HEADER_LENGTH 7
|
||||
#define VARIAX_MODEL_MESSAGE_LENGTH 199
|
||||
#define VARIAX_OFFSET_ACTIVATE 7
|
||||
@@ -70,7 +67,6 @@ static const char variax_request_model2[] = {
|
||||
};
|
||||
|
||||
/* forward declarations: */
|
||||
-static int variax_create_files2(struct device *dev);
|
||||
static void variax_startup2(unsigned long data);
|
||||
static void variax_startup4(unsigned long data);
|
||||
static void variax_startup5(unsigned long data);
|
||||
@@ -187,7 +183,6 @@ static void variax_startup7(struct work_struct *work)
|
||||
|
||||
/* device files: */
|
||||
line6_variax_create_files(0, 0, line6->ifcdev);
|
||||
- variax_create_files2(line6->ifcdev);
|
||||
}
|
||||
|
||||
/*
|
||||
@@ -270,58 +265,6 @@ void line6_variax_process_message(struct usb_line6_variax *variax)
|
||||
}
|
||||
}
|
||||
|
||||
-#ifdef CONFIG_LINE6_USB_RAW
|
||||
-
|
||||
-static char *variax_alloc_sysex_buffer(struct usb_line6_variax *variax,
|
||||
- int code, int size)
|
||||
-{
|
||||
- return line6_alloc_sysex_buffer(&variax->line6, VARIAX_SYSEX_CODE, code,
|
||||
- size);
|
||||
-}
|
||||
-
|
||||
-/*
|
||||
- "write" request on "raw" special file.
|
||||
-*/
|
||||
-static ssize_t variax_set_raw2(struct device *dev,
|
||||
- struct device_attribute *attr,
|
||||
- const char *buf, size_t count)
|
||||
-{
|
||||
- struct usb_line6_variax *variax =
|
||||
- usb_get_intfdata(to_usb_interface(dev));
|
||||
- int size;
|
||||
- int i;
|
||||
- char *sysex;
|
||||
-
|
||||
- count -= count % 3;
|
||||
- size = count * 2;
|
||||
- sysex = variax_alloc_sysex_buffer(variax, VARIAX_SYSEX_PARAM, size);
|
||||
-
|
||||
- if (!sysex)
|
||||
- return 0;
|
||||
-
|
||||
- for (i = 0; i < count; i += 3) {
|
||||
- const unsigned char *p1 = buf + i;
|
||||
- char *p2 = sysex + SYSEX_DATA_OFS + i * 2;
|
||||
- p2[0] = p1[2] & 0x0f;
|
||||
- p2[1] = p1[2] >> 4;
|
||||
- p2[2] = p1[1] & 0x0f;
|
||||
- p2[3] = p1[1] >> 4;
|
||||
- p2[4] = p1[0] & 0x0f;
|
||||
- p2[5] = p1[0] >> 4;
|
||||
- }
|
||||
-
|
||||
- line6_send_sysex_message(&variax->line6, sysex, size);
|
||||
- kfree(sysex);
|
||||
- return count;
|
||||
-}
|
||||
-
|
||||
-#endif
|
||||
-
|
||||
-#ifdef CONFIG_LINE6_USB_RAW
|
||||
-static DEVICE_ATTR(raw, S_IWUSR, line6_nop_read, line6_set_raw);
|
||||
-static DEVICE_ATTR(raw2, S_IWUSR, line6_nop_read, variax_set_raw2);
|
||||
-#endif
|
||||
-
|
||||
/*
|
||||
Variax destructor.
|
||||
*/
|
||||
@@ -346,18 +289,6 @@ static void variax_destruct(struct usb_interface *interface)
|
||||
}
|
||||
|
||||
/*
|
||||
- Create sysfs entries.
|
||||
-*/
|
||||
-static int variax_create_files2(struct device *dev)
|
||||
-{
|
||||
-#ifdef CONFIG_LINE6_USB_RAW
|
||||
- CHECK_RETURN(device_create_file(dev, &dev_attr_raw));
|
||||
- CHECK_RETURN(device_create_file(dev, &dev_attr_raw2));
|
||||
-#endif
|
||||
- return 0;
|
||||
-}
|
||||
-
|
||||
-/*
|
||||
Try to init workbench device.
|
||||
*/
|
||||
static int variax_try_init(struct usb_interface *interface,
|
||||
@@ -448,10 +379,6 @@ void line6_variax_disconnect(struct usb_interface *interface)
|
||||
if (dev != NULL) {
|
||||
/* remove sysfs entries: */
|
||||
line6_variax_remove_files(0, 0, dev);
|
||||
-#ifdef CONFIG_LINE6_USB_RAW
|
||||
- device_remove_file(dev, &dev_attr_raw);
|
||||
- device_remove_file(dev, &dev_attr_raw2);
|
||||
-#endif
|
||||
}
|
||||
|
||||
variax_destruct(interface);
|
66
debian/patches/features/all/line6/0098-staging-line6-drop-CONFIG_LINE6_USB_RAW.patch
vendored
Normal file
66
debian/patches/features/all/line6/0098-staging-line6-drop-CONFIG_LINE6_USB_RAW.patch
vendored
Normal file
|
@ -0,0 +1,66 @@
|
|||
From: Stefan Hajnoczi <stefanha@gmail.com>
|
||||
Date: Thu, 22 Nov 2012 20:49:17 +0100
|
||||
Subject: [098/106] staging: line6: drop CONFIG_LINE6_USB_RAW
|
||||
|
||||
commit 9f673d7a6022b9425fc412d619fd72bcadcf80c3 upstream.
|
||||
|
||||
Now that both pod.c and variax.c have removed their raw sysfs attrs, the
|
||||
CONFIG_LINE6_USB_RAW config option can be dropped. The drivers are
|
||||
being stripped down to just PCM and MIDI I/O so there is less state and
|
||||
filtering. Therefore it's no longer necessary to have a special sysfs
|
||||
attr to bypass the filtering ("raw").
|
||||
|
||||
Signed-off-by: Stefan Hajnoczi <stefanha@gmail.com>
|
||||
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
||||
---
|
||||
drivers/staging/line6/Kconfig | 11 -----------
|
||||
drivers/staging/line6/driver.c | 14 --------------
|
||||
2 files changed, 25 deletions(-)
|
||||
|
||||
diff --git a/drivers/staging/line6/Kconfig b/drivers/staging/line6/Kconfig
|
||||
index 80a7202..b635436 100644
|
||||
--- a/drivers/staging/line6/Kconfig
|
||||
+++ b/drivers/staging/line6/Kconfig
|
||||
@@ -33,17 +33,6 @@ config LINE6_USB_DUMP_PCM
|
||||
|
||||
If unsure, say N.
|
||||
|
||||
-config LINE6_USB_RAW
|
||||
- bool "raw data communication"
|
||||
- default n
|
||||
- help
|
||||
- Say Y here to create special files which allow to send raw data
|
||||
- to the device. This bypasses any sanity checks, so if you discover
|
||||
- the code to erase the firmware, feel free to render your device
|
||||
- useless, but only after reading the GPL section "NO WARRANTY".
|
||||
-
|
||||
- If unsure, say N.
|
||||
-
|
||||
config LINE6_USB_IMPULSE_RESPONSE
|
||||
bool "measure impulse response"
|
||||
default n
|
||||
diff --git a/drivers/staging/line6/driver.c b/drivers/staging/line6/driver.c
|
||||
index e0e0779..6f07a06c 100644
|
||||
--- a/drivers/staging/line6/driver.c
|
||||
+++ b/drivers/staging/line6/driver.c
|
||||
@@ -642,20 +642,6 @@ ssize_t line6_nop_write(struct device *dev, struct device_attribute *attr,
|
||||
}
|
||||
|
||||
/*
|
||||
- "write" request on "raw" special file.
|
||||
-*/
|
||||
-#ifdef CONFIG_LINE6_USB_RAW
|
||||
-ssize_t line6_set_raw(struct device *dev, struct device_attribute *attr,
|
||||
- const char *buf, size_t count)
|
||||
-{
|
||||
- struct usb_interface *interface = to_usb_interface(dev);
|
||||
- struct usb_line6 *line6 = usb_get_intfdata(interface);
|
||||
- line6_send_raw_message(line6, buf, count);
|
||||
- return count;
|
||||
-}
|
||||
-#endif
|
||||
-
|
||||
-/*
|
||||
Generic destructor.
|
||||
*/
|
||||
static void line6_destruct(struct usb_interface *interface)
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue