linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH 00/46] staging: line6: drop MIDI state sysfs attrs
@ 2012-11-22 19:48 Stefan Hajnoczi
  2012-11-22 19:48 ` [PATCH 01/46] staging: line6: drop channel sysfs attr Stefan Hajnoczi
                   ` (46 more replies)
  0 siblings, 47 replies; 50+ messages in thread
From: Stefan Hajnoczi @ 2012-11-22 19:48 UTC (permalink / raw)
  To: devel
  Cc: Markus Grabner, Greg Kroah-Hartman, line6linux-devel,
	linux-kernel, laurent_navet, Stefan Hajnoczi

Let's put the line6 staging driver on a diet for Thanksgiving! :)

Markus and I have discussed the MIDI processing that currently happens in the
line6 driver.  This stuff really belongs in userspace where a library or
utility can use ALSA MIDI APIs to control the device.  Moving MIDI processing
to userspace has several benefits:

1. The driver only handles PCM and MIDI I/O.  This means less kernel code.

2. A large number of sysfs attributes can be removed.  These attributes exposed
   MIDI state and driver code was necessary to sync and manage this state.

3. It's easier for userspace to control the device, try out new MIDI commands,
   etc when the driver acts as a dumb transport.

This patch series removes the sysfs attributes and then removes the state
behind those attributes.  I have tried to make small incremental changes that
can be reviewed easily.

Testing would be appreciated and especially necessary for POD XT and Variax
devices where the startup process has been modified.  I only have access to a
POD HD300 device which doesn't take these code paths.

The only MIDI processing left are initialization commands and the monitor
volume level, which remains in the kernel because the driver presents an ALSA
volume control.

Stefan Hajnoczi (46):
  staging: line6: drop channel sysfs attr
  staging: line6: drop clip sysfs attr
  staging: line6: drop unused param_dirty bitmap
  staging: line6: drop dirty sysfs attr
  staging: line6: drop dump sysfs attr
  staging: line6: drop dump_buf sysfs attr
  staging: line6: drop monitor_level sysfs attr
  staging: line6: change monitor_level type ValueWait -> int
  staging: line6: drop name sysfs attr
  staging: line6: drop name_buf sysfs attr
  staging: line6: drop retrieve_amp_setup sysfs attr
  staging: line6: drop retrieve_channel sysfs attr
  staging: line6: drop retrieve_effects_setup sysfs attr
  staging: line6: drop store_amp_setup sysfs attr
  staging: line6: drop store_channel sysfs attr
  staging: line6: drop store_effects_setup sysfs attr
  staging: line6: drop routing sysfs attr
  staging: line6: drop tuner_freq sysfs attr
  staging: line6: drop tuner_note sysfs attr
  staging: line6: drop tuner_mute sysfs attr
  staging: line6: drop tuner_pitch sysfs attr
  staging: line6: drop finish sysfs attr
  staging: line6: drop midi_postprocess sysfs attr
  staging: line6: drop midi_mask_receive
  staging: line6: drop midi_mask_transmit
  staging: line6: drop midi_postprocess flag
  staging: line6: drop pod.c raw sysfs attr
  staging: line6: drop tuner param filtering
  staging: line6: drop variax model sysfs attr
  staging: line6: drop variax volume sysfs attr
  staging: line6: drop variax tone sysfs attr
  staging: line6: drop variax name sysfs attr
  staging: line6: drop variax bank sysfs attr
  staging: line6: drop variax dump sysfs attr
  staging: line6: drop variax active sysfs attr
  staging: line6: drop variax guitar sysfs attr
  staging: line6: drop variax raw sysfs attrs
  staging: line6: drop CONFIG_LINE6_USB_RAW
  staging: line6: drop amp/effects dump request triggers
  staging: line6: drop MIDI parameter sysfs attrs
  staging: line6: drop pod prog_data buffers
  staging: line6: drop unused pod atomic_flags field
  staging: line6: drop variax model_data field
  staging: line6: drop dump requests from variax startup
  staging: line6: drop dump requests from pod startup
  staging: line6: drop unused dumprequest code

 drivers/staging/line6/Kconfig       |  11 -
 drivers/staging/line6/Makefile      |   2 -
 drivers/staging/line6/control.c     | 995 ------------------------------------
 drivers/staging/line6/control.h     | 195 -------
 drivers/staging/line6/driver.c      |  20 -
 drivers/staging/line6/dumprequest.c | 135 -----
 drivers/staging/line6/dumprequest.h |  76 ---
 drivers/staging/line6/midi.c        | 120 -----
 drivers/staging/line6/midi.h        |  10 -
 drivers/staging/line6/pod.c         | 846 +-----------------------------
 drivers/staging/line6/pod.h         | 105 +---
 drivers/staging/line6/variax.c      | 480 +----------------
 drivers/staging/line6/variax.h      |  60 ---
 13 files changed, 16 insertions(+), 3039 deletions(-)
 delete mode 100644 drivers/staging/line6/control.c
 delete mode 100644 drivers/staging/line6/control.h
 delete mode 100644 drivers/staging/line6/dumprequest.c
 delete mode 100644 drivers/staging/line6/dumprequest.h

-- 
1.8.0


^ permalink raw reply	[flat|nested] 50+ messages in thread

* [PATCH 01/46] staging: line6: drop channel sysfs attr
  2012-11-22 19:48 [PATCH 00/46] staging: line6: drop MIDI state sysfs attrs Stefan Hajnoczi
@ 2012-11-22 19:48 ` Stefan Hajnoczi
  2012-11-22 19:48 ` [PATCH 02/46] staging: line6: drop clip " Stefan Hajnoczi
                   ` (45 subsequent siblings)
  46 siblings, 0 replies; 50+ messages in thread
From: Stefan Hajnoczi @ 2012-11-22 19:48 UTC (permalink / raw)
  To: devel
  Cc: Markus Grabner, Greg Kroah-Hartman, line6linux-devel,
	linux-kernel, laurent_navet, Stefan Hajnoczi

Signed-off-by: Stefan Hajnoczi <stefanha@gmail.com>
---
 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;
-- 
1.8.0


^ permalink raw reply related	[flat|nested] 50+ messages in thread

* [PATCH 02/46] staging: line6: drop clip sysfs attr
  2012-11-22 19:48 [PATCH 00/46] staging: line6: drop MIDI state sysfs attrs Stefan Hajnoczi
  2012-11-22 19:48 ` [PATCH 01/46] staging: line6: drop channel sysfs attr Stefan Hajnoczi
@ 2012-11-22 19:48 ` Stefan Hajnoczi
  2012-11-22 19:48 ` [PATCH 03/46] staging: line6: drop unused param_dirty bitmap Stefan Hajnoczi
                   ` (44 subsequent siblings)
  46 siblings, 0 replies; 50+ messages in thread
From: Stefan Hajnoczi @ 2012-11-22 19:48 UTC (permalink / raw)
  To: devel
  Cc: Markus Grabner, Greg Kroah-Hartman, line6linux-devel,
	linux-kernel, laurent_navet, Stefan Hajnoczi

Signed-off-by: Stefan Hajnoczi <stefanha@gmail.com>
---
 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;
-- 
1.8.0


^ permalink raw reply related	[flat|nested] 50+ messages in thread

* [PATCH 03/46] staging: line6: drop unused param_dirty bitmap
  2012-11-22 19:48 [PATCH 00/46] staging: line6: drop MIDI state sysfs attrs Stefan Hajnoczi
  2012-11-22 19:48 ` [PATCH 01/46] staging: line6: drop channel sysfs attr Stefan Hajnoczi
  2012-11-22 19:48 ` [PATCH 02/46] staging: line6: drop clip " Stefan Hajnoczi
@ 2012-11-22 19:48 ` Stefan Hajnoczi
  2012-11-22 19:48 ` [PATCH 04/46] staging: line6: drop dirty sysfs attr Stefan Hajnoczi
                   ` (43 subsequent siblings)
  46 siblings, 0 replies; 50+ messages in thread
From: Stefan Hajnoczi @ 2012-11-22 19:48 UTC (permalink / raw)
  To: devel
  Cc: Markus Grabner, Greg Kroah-Hartman, line6linux-devel,
	linux-kernel, laurent_navet, Stefan Hajnoczi

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>
---
 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;
-- 
1.8.0


^ permalink raw reply related	[flat|nested] 50+ messages in thread

* [PATCH 04/46] staging: line6: drop dirty sysfs attr
  2012-11-22 19:48 [PATCH 00/46] staging: line6: drop MIDI state sysfs attrs Stefan Hajnoczi
                   ` (2 preceding siblings ...)
  2012-11-22 19:48 ` [PATCH 03/46] staging: line6: drop unused param_dirty bitmap Stefan Hajnoczi
@ 2012-11-22 19:48 ` Stefan Hajnoczi
  2012-11-22 19:48 ` [PATCH 05/46] staging: line6: drop dump " Stefan Hajnoczi
                   ` (42 subsequent siblings)
  46 siblings, 0 replies; 50+ messages in thread
From: Stefan Hajnoczi @ 2012-11-22 19:48 UTC (permalink / raw)
  To: devel
  Cc: Markus Grabner, Greg Kroah-Hartman, line6linux-devel,
	linux-kernel, laurent_navet, Stefan Hajnoczi

Signed-off-by: Stefan Hajnoczi <stefanha@gmail.com>
---
 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;
-- 
1.8.0


^ permalink raw reply related	[flat|nested] 50+ messages in thread

* [PATCH 05/46] staging: line6: drop dump sysfs attr
  2012-11-22 19:48 [PATCH 00/46] staging: line6: drop MIDI state sysfs attrs Stefan Hajnoczi
                   ` (3 preceding siblings ...)
  2012-11-22 19:48 ` [PATCH 04/46] staging: line6: drop dirty sysfs attr Stefan Hajnoczi
@ 2012-11-22 19:48 ` Stefan Hajnoczi
  2012-11-22 19:48 ` [PATCH 06/46] staging: line6: drop dump_buf " Stefan Hajnoczi
                   ` (41 subsequent siblings)
  46 siblings, 0 replies; 50+ messages in thread
From: Stefan Hajnoczi @ 2012-11-22 19:48 UTC (permalink / raw)
  To: devel
  Cc: Markus Grabner, Greg Kroah-Hartman, line6linux-devel,
	linux-kernel, laurent_navet, Stefan Hajnoczi

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>
---
 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);
-- 
1.8.0


^ permalink raw reply related	[flat|nested] 50+ messages in thread

* [PATCH 06/46] staging: line6: drop dump_buf sysfs attr
  2012-11-22 19:48 [PATCH 00/46] staging: line6: drop MIDI state sysfs attrs Stefan Hajnoczi
                   ` (4 preceding siblings ...)
  2012-11-22 19:48 ` [PATCH 05/46] staging: line6: drop dump " Stefan Hajnoczi
@ 2012-11-22 19:48 ` Stefan Hajnoczi
  2012-11-22 19:48 ` [PATCH 07/46] staging: line6: drop monitor_level " Stefan Hajnoczi
                   ` (40 subsequent siblings)
  46 siblings, 0 replies; 50+ messages in thread
From: Stefan Hajnoczi @ 2012-11-22 19:48 UTC (permalink / raw)
  To: devel
  Cc: Markus Grabner, Greg Kroah-Hartman, line6linux-devel,
	linux-kernel, laurent_navet, Stefan Hajnoczi

Signed-off-by: Stefan Hajnoczi <stefanha@gmail.com>
---
 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);
-- 
1.8.0


^ permalink raw reply related	[flat|nested] 50+ messages in thread

* [PATCH 07/46] staging: line6: drop monitor_level sysfs attr
  2012-11-22 19:48 [PATCH 00/46] staging: line6: drop MIDI state sysfs attrs Stefan Hajnoczi
                   ` (5 preceding siblings ...)
  2012-11-22 19:48 ` [PATCH 06/46] staging: line6: drop dump_buf " Stefan Hajnoczi
@ 2012-11-22 19:48 ` Stefan Hajnoczi
  2012-11-22 19:48 ` [PATCH 08/46] staging: line6: change monitor_level type ValueWait -> int Stefan Hajnoczi
                   ` (39 subsequent siblings)
  46 siblings, 0 replies; 50+ messages in thread
From: Stefan Hajnoczi @ 2012-11-22 19:48 UTC (permalink / raw)
  To: devel
  Cc: Markus Grabner, Greg Kroah-Hartman, line6linux-devel,
	linux-kernel, laurent_navet, Stefan Hajnoczi

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>
---
 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);
-- 
1.8.0


^ permalink raw reply related	[flat|nested] 50+ messages in thread

* [PATCH 08/46] staging: line6: change monitor_level type ValueWait -> int
  2012-11-22 19:48 [PATCH 00/46] staging: line6: drop MIDI state sysfs attrs Stefan Hajnoczi
                   ` (6 preceding siblings ...)
  2012-11-22 19:48 ` [PATCH 07/46] staging: line6: drop monitor_level " Stefan Hajnoczi
@ 2012-11-22 19:48 ` Stefan Hajnoczi
  2012-11-22 19:48 ` [PATCH 09/46] staging: line6: drop name sysfs attr Stefan Hajnoczi
                   ` (38 subsequent siblings)
  46 siblings, 0 replies; 50+ messages in thread
From: Stefan Hajnoczi @ 2012-11-22 19:48 UTC (permalink / raw)
  To: devel
  Cc: Markus Grabner, Greg Kroah-Hartman, line6linux-devel,
	linux-kernel, laurent_navet, Stefan Hajnoczi

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>
---
 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.
-- 
1.8.0


^ permalink raw reply related	[flat|nested] 50+ messages in thread

* [PATCH 09/46] staging: line6: drop name sysfs attr
  2012-11-22 19:48 [PATCH 00/46] staging: line6: drop MIDI state sysfs attrs Stefan Hajnoczi
                   ` (7 preceding siblings ...)
  2012-11-22 19:48 ` [PATCH 08/46] staging: line6: change monitor_level type ValueWait -> int Stefan Hajnoczi
@ 2012-11-22 19:48 ` Stefan Hajnoczi
  2012-11-22 19:48 ` [PATCH 10/46] staging: line6: drop name_buf " Stefan Hajnoczi
                   ` (37 subsequent siblings)
  46 siblings, 0 replies; 50+ messages in thread
From: Stefan Hajnoczi @ 2012-11-22 19:48 UTC (permalink / raw)
  To: devel
  Cc: Markus Grabner, Greg Kroah-Hartman, line6linux-devel,
	linux-kernel, laurent_navet, Stefan Hajnoczi

Signed-off-by: Stefan Hajnoczi <stefanha@gmail.com>
---
 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);
-- 
1.8.0


^ permalink raw reply related	[flat|nested] 50+ messages in thread

* [PATCH 10/46] staging: line6: drop name_buf sysfs attr
  2012-11-22 19:48 [PATCH 00/46] staging: line6: drop MIDI state sysfs attrs Stefan Hajnoczi
                   ` (8 preceding siblings ...)
  2012-11-22 19:48 ` [PATCH 09/46] staging: line6: drop name sysfs attr Stefan Hajnoczi
@ 2012-11-22 19:48 ` Stefan Hajnoczi
  2012-11-22 19:48 ` [PATCH 11/46] staging: line6: drop retrieve_amp_setup " Stefan Hajnoczi
                   ` (36 subsequent siblings)
  46 siblings, 0 replies; 50+ messages in thread
From: Stefan Hajnoczi @ 2012-11-22 19:48 UTC (permalink / raw)
  To: devel
  Cc: Markus Grabner, Greg Kroah-Hartman, line6linux-devel,
	linux-kernel, laurent_navet, Stefan Hajnoczi

Signed-off-by: Stefan Hajnoczi <stefanha@gmail.com>
---
 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,
-- 
1.8.0


^ permalink raw reply related	[flat|nested] 50+ messages in thread

* [PATCH 11/46] staging: line6: drop retrieve_amp_setup sysfs attr
  2012-11-22 19:48 [PATCH 00/46] staging: line6: drop MIDI state sysfs attrs Stefan Hajnoczi
                   ` (9 preceding siblings ...)
  2012-11-22 19:48 ` [PATCH 10/46] staging: line6: drop name_buf " Stefan Hajnoczi
@ 2012-11-22 19:48 ` Stefan Hajnoczi
  2012-11-22 19:48 ` [PATCH 12/46] staging: line6: drop retrieve_channel " Stefan Hajnoczi
                   ` (35 subsequent siblings)
  46 siblings, 0 replies; 50+ messages in thread
From: Stefan Hajnoczi @ 2012-11-22 19:48 UTC (permalink / raw)
  To: devel
  Cc: Markus Grabner, Greg Kroah-Hartman, line6linux-devel,
	linux-kernel, laurent_navet, Stefan Hajnoczi

Signed-off-by: Stefan Hajnoczi <stefanha@gmail.com>
---
 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);
-- 
1.8.0


^ permalink raw reply related	[flat|nested] 50+ messages in thread

* [PATCH 12/46] staging: line6: drop retrieve_channel sysfs attr
  2012-11-22 19:48 [PATCH 00/46] staging: line6: drop MIDI state sysfs attrs Stefan Hajnoczi
                   ` (10 preceding siblings ...)
  2012-11-22 19:48 ` [PATCH 11/46] staging: line6: drop retrieve_amp_setup " Stefan Hajnoczi
@ 2012-11-22 19:48 ` Stefan Hajnoczi
  2012-11-22 19:48 ` [PATCH 13/46] staging: line6: drop retrieve_effects_setup " Stefan Hajnoczi
                   ` (34 subsequent siblings)
  46 siblings, 0 replies; 50+ messages in thread
From: Stefan Hajnoczi @ 2012-11-22 19:48 UTC (permalink / raw)
  To: devel
  Cc: Markus Grabner, Greg Kroah-Hartman, line6linux-devel,
	linux-kernel, laurent_navet, Stefan Hajnoczi

Signed-off-by: Stefan Hajnoczi <stefanha@gmail.com>
---
 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);
-- 
1.8.0


^ permalink raw reply related	[flat|nested] 50+ messages in thread

* [PATCH 13/46] staging: line6: drop retrieve_effects_setup sysfs attr
  2012-11-22 19:48 [PATCH 00/46] staging: line6: drop MIDI state sysfs attrs Stefan Hajnoczi
                   ` (11 preceding siblings ...)
  2012-11-22 19:48 ` [PATCH 12/46] staging: line6: drop retrieve_channel " Stefan Hajnoczi
@ 2012-11-22 19:48 ` Stefan Hajnoczi
  2012-11-22 19:48 ` [PATCH 14/46] staging: line6: drop store_amp_setup " Stefan Hajnoczi
                   ` (33 subsequent siblings)
  46 siblings, 0 replies; 50+ messages in thread
From: Stefan Hajnoczi @ 2012-11-22 19:48 UTC (permalink / raw)
  To: devel
  Cc: Markus Grabner, Greg Kroah-Hartman, line6linux-devel,
	linux-kernel, laurent_navet, Stefan Hajnoczi

Signed-off-by: Stefan Hajnoczi <stefanha@gmail.com>
---
 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);
-- 
1.8.0


^ permalink raw reply related	[flat|nested] 50+ messages in thread

* [PATCH 14/46] staging: line6: drop store_amp_setup sysfs attr
  2012-11-22 19:48 [PATCH 00/46] staging: line6: drop MIDI state sysfs attrs Stefan Hajnoczi
                   ` (12 preceding siblings ...)
  2012-11-22 19:48 ` [PATCH 13/46] staging: line6: drop retrieve_effects_setup " Stefan Hajnoczi
@ 2012-11-22 19:48 ` Stefan Hajnoczi
  2012-11-22 19:48 ` [PATCH 15/46] staging: line6: drop store_channel " Stefan Hajnoczi
                   ` (32 subsequent siblings)
  46 siblings, 0 replies; 50+ messages in thread
From: Stefan Hajnoczi @ 2012-11-22 19:48 UTC (permalink / raw)
  To: devel
  Cc: Markus Grabner, Greg Kroah-Hartman, line6linux-devel,
	linux-kernel, laurent_navet, Stefan Hajnoczi

Signed-off-by: Stefan Hajnoczi <stefanha@gmail.com>
---
 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);
-- 
1.8.0


^ permalink raw reply related	[flat|nested] 50+ messages in thread

* [PATCH 15/46] staging: line6: drop store_channel sysfs attr
  2012-11-22 19:48 [PATCH 00/46] staging: line6: drop MIDI state sysfs attrs Stefan Hajnoczi
                   ` (13 preceding siblings ...)
  2012-11-22 19:48 ` [PATCH 14/46] staging: line6: drop store_amp_setup " Stefan Hajnoczi
@ 2012-11-22 19:48 ` Stefan Hajnoczi
  2012-11-22 19:48 ` [PATCH 16/46] staging: line6: drop store_effects_setup " Stefan Hajnoczi
                   ` (31 subsequent siblings)
  46 siblings, 0 replies; 50+ messages in thread
From: Stefan Hajnoczi @ 2012-11-22 19:48 UTC (permalink / raw)
  To: devel
  Cc: Markus Grabner, Greg Kroah-Hartman, line6linux-devel,
	linux-kernel, laurent_navet, Stefan Hajnoczi

Signed-off-by: Stefan Hajnoczi <stefanha@gmail.com>
---
 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);
-- 
1.8.0


^ permalink raw reply related	[flat|nested] 50+ messages in thread

* [PATCH 16/46] staging: line6: drop store_effects_setup sysfs attr
  2012-11-22 19:48 [PATCH 00/46] staging: line6: drop MIDI state sysfs attrs Stefan Hajnoczi
                   ` (14 preceding siblings ...)
  2012-11-22 19:48 ` [PATCH 15/46] staging: line6: drop store_channel " Stefan Hajnoczi
@ 2012-11-22 19:48 ` Stefan Hajnoczi
  2012-11-22 19:48 ` [PATCH 17/46] staging: line6: drop routing " Stefan Hajnoczi
                   ` (30 subsequent siblings)
  46 siblings, 0 replies; 50+ messages in thread
From: Stefan Hajnoczi @ 2012-11-22 19:48 UTC (permalink / raw)
  To: devel
  Cc: Markus Grabner, Greg Kroah-Hartman, line6linux-devel,
	linux-kernel, laurent_navet, Stefan Hajnoczi

Signed-off-by: Stefan Hajnoczi <stefanha@gmail.com>
---
 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);
-- 
1.8.0


^ permalink raw reply related	[flat|nested] 50+ messages in thread

* [PATCH 17/46] staging: line6: drop routing sysfs attr
  2012-11-22 19:48 [PATCH 00/46] staging: line6: drop MIDI state sysfs attrs Stefan Hajnoczi
                   ` (15 preceding siblings ...)
  2012-11-22 19:48 ` [PATCH 16/46] staging: line6: drop store_effects_setup " Stefan Hajnoczi
@ 2012-11-22 19:48 ` Stefan Hajnoczi
  2012-11-22 19:48 ` [PATCH 18/46] staging: line6: drop tuner_freq " Stefan Hajnoczi
                   ` (29 subsequent siblings)
  46 siblings, 0 replies; 50+ messages in thread
From: Stefan Hajnoczi @ 2012-11-22 19:48 UTC (permalink / raw)
  To: devel
  Cc: Markus Grabner, Greg Kroah-Hartman, line6linux-devel,
	linux-kernel, laurent_navet, Stefan Hajnoczi

Signed-off-by: Stefan Hajnoczi <stefanha@gmail.com>
---
 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;
-- 
1.8.0


^ permalink raw reply related	[flat|nested] 50+ messages in thread

* [PATCH 18/46] staging: line6: drop tuner_freq sysfs attr
  2012-11-22 19:48 [PATCH 00/46] staging: line6: drop MIDI state sysfs attrs Stefan Hajnoczi
                   ` (16 preceding siblings ...)
  2012-11-22 19:48 ` [PATCH 17/46] staging: line6: drop routing " Stefan Hajnoczi
@ 2012-11-22 19:48 ` Stefan Hajnoczi
  2012-11-22 19:48 ` [PATCH 19/46] staging: line6: drop tuner_note " Stefan Hajnoczi
                   ` (28 subsequent siblings)
  46 siblings, 0 replies; 50+ messages in thread
From: Stefan Hajnoczi @ 2012-11-22 19:48 UTC (permalink / raw)
  To: devel
  Cc: Markus Grabner, Greg Kroah-Hartman, line6linux-devel,
	linux-kernel, laurent_navet, Stefan Hajnoczi

Signed-off-by: Stefan Hajnoczi <stefanha@gmail.com>
---
 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;
-- 
1.8.0


^ permalink raw reply related	[flat|nested] 50+ messages in thread

* [PATCH 19/46] staging: line6: drop tuner_note sysfs attr
  2012-11-22 19:48 [PATCH 00/46] staging: line6: drop MIDI state sysfs attrs Stefan Hajnoczi
                   ` (17 preceding siblings ...)
  2012-11-22 19:48 ` [PATCH 18/46] staging: line6: drop tuner_freq " Stefan Hajnoczi
@ 2012-11-22 19:48 ` Stefan Hajnoczi
  2012-11-22 19:48 ` [PATCH 20/46] staging: line6: drop tuner_mute " Stefan Hajnoczi
                   ` (27 subsequent siblings)
  46 siblings, 0 replies; 50+ messages in thread
From: Stefan Hajnoczi @ 2012-11-22 19:48 UTC (permalink / raw)
  To: devel
  Cc: Markus Grabner, Greg Kroah-Hartman, line6linux-devel,
	linux-kernel, laurent_navet, Stefan Hajnoczi

Signed-off-by: Stefan Hajnoczi <stefanha@gmail.com>
---
 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;
-- 
1.8.0


^ permalink raw reply related	[flat|nested] 50+ messages in thread

* [PATCH 20/46] staging: line6: drop tuner_mute sysfs attr
  2012-11-22 19:48 [PATCH 00/46] staging: line6: drop MIDI state sysfs attrs Stefan Hajnoczi
                   ` (18 preceding siblings ...)
  2012-11-22 19:48 ` [PATCH 19/46] staging: line6: drop tuner_note " Stefan Hajnoczi
@ 2012-11-22 19:48 ` Stefan Hajnoczi
  2012-11-22 19:49 ` [PATCH 21/46] staging: line6: drop tuner_pitch " Stefan Hajnoczi
                   ` (26 subsequent siblings)
  46 siblings, 0 replies; 50+ messages in thread
From: Stefan Hajnoczi @ 2012-11-22 19:48 UTC (permalink / raw)
  To: devel
  Cc: Markus Grabner, Greg Kroah-Hartman, line6linux-devel,
	linux-kernel, laurent_navet, Stefan Hajnoczi

Signed-off-by: Stefan Hajnoczi <stefanha@gmail.com>
---
 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;
-- 
1.8.0


^ permalink raw reply related	[flat|nested] 50+ messages in thread

* [PATCH 21/46] staging: line6: drop tuner_pitch sysfs attr
  2012-11-22 19:48 [PATCH 00/46] staging: line6: drop MIDI state sysfs attrs Stefan Hajnoczi
                   ` (19 preceding siblings ...)
  2012-11-22 19:48 ` [PATCH 20/46] staging: line6: drop tuner_mute " Stefan Hajnoczi
@ 2012-11-22 19:49 ` Stefan Hajnoczi
  2012-11-22 19:49 ` [PATCH 22/46] staging: line6: drop finish " Stefan Hajnoczi
                   ` (25 subsequent siblings)
  46 siblings, 0 replies; 50+ messages in thread
From: Stefan Hajnoczi @ 2012-11-22 19:49 UTC (permalink / raw)
  To: devel
  Cc: Markus Grabner, Greg Kroah-Hartman, line6linux-devel,
	linux-kernel, laurent_navet, Stefan Hajnoczi

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>
---
 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;
-- 
1.8.0


^ permalink raw reply related	[flat|nested] 50+ messages in thread

* [PATCH 22/46] staging: line6: drop finish sysfs attr
  2012-11-22 19:48 [PATCH 00/46] staging: line6: drop MIDI state sysfs attrs Stefan Hajnoczi
                   ` (20 preceding siblings ...)
  2012-11-22 19:49 ` [PATCH 21/46] staging: line6: drop tuner_pitch " Stefan Hajnoczi
@ 2012-11-22 19:49 ` Stefan Hajnoczi
  2012-11-22 19:49 ` [PATCH 23/46] staging: line6: drop midi_postprocess " Stefan Hajnoczi
                   ` (24 subsequent siblings)
  46 siblings, 0 replies; 50+ messages in thread
From: Stefan Hajnoczi @ 2012-11-22 19:49 UTC (permalink / raw)
  To: devel
  Cc: Markus Grabner, Greg Kroah-Hartman, line6linux-devel,
	linux-kernel, laurent_navet, Stefan Hajnoczi

Signed-off-by: Stefan Hajnoczi <stefanha@gmail.com>
---
 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);
-- 
1.8.0


^ permalink raw reply related	[flat|nested] 50+ messages in thread

* [PATCH 23/46] staging: line6: drop midi_postprocess sysfs attr
  2012-11-22 19:48 [PATCH 00/46] staging: line6: drop MIDI state sysfs attrs Stefan Hajnoczi
                   ` (21 preceding siblings ...)
  2012-11-22 19:49 ` [PATCH 22/46] staging: line6: drop finish " Stefan Hajnoczi
@ 2012-11-22 19:49 ` Stefan Hajnoczi
  2012-11-22 19:49 ` [PATCH 24/46] staging: line6: drop midi_mask_receive Stefan Hajnoczi
                   ` (23 subsequent siblings)
  46 siblings, 0 replies; 50+ messages in thread
From: Stefan Hajnoczi @ 2012-11-22 19:49 UTC (permalink / raw)
  To: devel
  Cc: Markus Grabner, Greg Kroah-Hartman, line6linux-devel,
	linux-kernel, laurent_navet, Stefan Hajnoczi

Signed-off-by: Stefan Hajnoczi <stefanha@gmail.com>
---
 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
-- 
1.8.0


^ permalink raw reply related	[flat|nested] 50+ messages in thread

* [PATCH 24/46] staging: line6: drop midi_mask_receive
  2012-11-22 19:48 [PATCH 00/46] staging: line6: drop MIDI state sysfs attrs Stefan Hajnoczi
                   ` (22 preceding siblings ...)
  2012-11-22 19:49 ` [PATCH 23/46] staging: line6: drop midi_postprocess " Stefan Hajnoczi
@ 2012-11-22 19:49 ` Stefan Hajnoczi
  2012-11-22 19:49 ` [PATCH 25/46] staging: line6: drop midi_mask_transmit Stefan Hajnoczi
                   ` (22 subsequent siblings)
  46 siblings, 0 replies; 50+ messages in thread
From: Stefan Hajnoczi @ 2012-11-22 19:49 UTC (permalink / raw)
  To: devel
  Cc: Markus Grabner, Greg Kroah-Hartman, line6linux-devel,
	linux-kernel, laurent_navet, Stefan Hajnoczi

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>
---
 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 571f2ce..3c27051 100644
--- a/drivers/staging/line6/driver.c
+++ b/drivers/staging/line6/driver.c
@@ -424,11 +424,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;
 #ifdef CONFIG_LINE6_USB_DUMP_MIDI
 		line6_write_hexdump(line6, 'r', line6->buffer_message, done);
diff --git a/drivers/staging/line6/midi.c b/drivers/staging/line6/midi.c
index 5040729..f0f3e59 100644
--- a/drivers/staging/line6/midi.c
+++ b/drivers/staging/line6/midi.c
@@ -319,42 +319,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)
@@ -362,8 +328,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;
@@ -410,12 +374,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;
@@ -435,10 +397,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;
-- 
1.8.0


^ permalink raw reply related	[flat|nested] 50+ messages in thread

* [PATCH 25/46] staging: line6: drop midi_mask_transmit
  2012-11-22 19:48 [PATCH 00/46] staging: line6: drop MIDI state sysfs attrs Stefan Hajnoczi
                   ` (23 preceding siblings ...)
  2012-11-22 19:49 ` [PATCH 24/46] staging: line6: drop midi_mask_receive Stefan Hajnoczi
@ 2012-11-22 19:49 ` Stefan Hajnoczi
  2012-11-22 19:49 ` [PATCH 26/46] staging: line6: drop midi_postprocess flag Stefan Hajnoczi
                   ` (21 subsequent siblings)
  46 siblings, 0 replies; 50+ messages in thread
From: Stefan Hajnoczi @ 2012-11-22 19:49 UTC (permalink / raw)
  To: devel
  Cc: Markus Grabner, Greg Kroah-Hartman, line6linux-devel,
	linux-kernel, laurent_navet, Stefan Hajnoczi

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>
---
 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 f0f3e59..8261875 100644
--- a/drivers/staging/line6/midi.c
+++ b/drivers/staging/line6/midi.c
@@ -72,10 +72,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);
 	}
 
@@ -287,47 +283,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;
@@ -369,17 +328,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,
@@ -393,10 +341,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;
-- 
1.8.0


^ permalink raw reply related	[flat|nested] 50+ messages in thread

* [PATCH 26/46] staging: line6: drop midi_postprocess flag
  2012-11-22 19:48 [PATCH 00/46] staging: line6: drop MIDI state sysfs attrs Stefan Hajnoczi
                   ` (24 preceding siblings ...)
  2012-11-22 19:49 ` [PATCH 25/46] staging: line6: drop midi_mask_transmit Stefan Hajnoczi
@ 2012-11-22 19:49 ` Stefan Hajnoczi
  2012-11-22 19:49 ` [PATCH 27/46] staging: line6: drop pod.c raw sysfs attr Stefan Hajnoczi
                   ` (20 subsequent siblings)
  46 siblings, 0 replies; 50+ messages in thread
From: Stefan Hajnoczi @ 2012-11-22 19:49 UTC (permalink / raw)
  To: devel
  Cc: Markus Grabner, Greg Kroah-Hartman, line6linux-devel,
	linux-kernel, laurent_navet, Stefan Hajnoczi

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>
---
 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 8261875..53bef97 100644
--- a/drivers/staging/line6/midi.c
+++ b/drivers/staging/line6/midi.c
@@ -154,28 +154,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);
-- 
1.8.0


^ permalink raw reply related	[flat|nested] 50+ messages in thread

* [PATCH 27/46] staging: line6: drop pod.c raw sysfs attr
  2012-11-22 19:48 [PATCH 00/46] staging: line6: drop MIDI state sysfs attrs Stefan Hajnoczi
                   ` (25 preceding siblings ...)
  2012-11-22 19:49 ` [PATCH 26/46] staging: line6: drop midi_postprocess flag Stefan Hajnoczi
@ 2012-11-22 19:49 ` Stefan Hajnoczi
  2012-11-22 19:49 ` [PATCH 28/46] staging: line6: drop tuner param filtering Stefan Hajnoczi
                   ` (19 subsequent siblings)
  46 siblings, 0 replies; 50+ messages in thread
From: Stefan Hajnoczi @ 2012-11-22 19:49 UTC (permalink / raw)
  To: devel
  Cc: Markus Grabner, Greg Kroah-Hartman, line6linux-devel,
	linux-kernel, laurent_navet, Stefan Hajnoczi

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>
---
 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
 		}
 	}
 
-- 
1.8.0


^ permalink raw reply related	[flat|nested] 50+ messages in thread

* [PATCH 28/46] staging: line6: drop tuner param filtering
  2012-11-22 19:48 [PATCH 00/46] staging: line6: drop MIDI state sysfs attrs Stefan Hajnoczi
                   ` (26 preceding siblings ...)
  2012-11-22 19:49 ` [PATCH 27/46] staging: line6: drop pod.c raw sysfs attr Stefan Hajnoczi
@ 2012-11-22 19:49 ` Stefan Hajnoczi
  2012-11-22 19:49 ` [PATCH 29/46] staging: line6: drop variax model sysfs attr Stefan Hajnoczi
                   ` (18 subsequent siblings)
  46 siblings, 0 replies; 50+ messages in thread
From: Stefan Hajnoczi @ 2012-11-22 19:49 UTC (permalink / raw)
  To: devel
  Cc: Markus Grabner, Greg Kroah-Hartman, line6linux-devel,
	linux-kernel, laurent_navet, Stefan Hajnoczi

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>
---
 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;
-- 
1.8.0


^ permalink raw reply related	[flat|nested] 50+ messages in thread

* [PATCH 29/46] staging: line6: drop variax model sysfs attr
  2012-11-22 19:48 [PATCH 00/46] staging: line6: drop MIDI state sysfs attrs Stefan Hajnoczi
                   ` (27 preceding siblings ...)
  2012-11-22 19:49 ` [PATCH 28/46] staging: line6: drop tuner param filtering Stefan Hajnoczi
@ 2012-11-22 19:49 ` Stefan Hajnoczi
  2012-11-22 19:49 ` [PATCH 30/46] staging: line6: drop variax volume " Stefan Hajnoczi
                   ` (17 subsequent siblings)
  46 siblings, 0 replies; 50+ messages in thread
From: Stefan Hajnoczi @ 2012-11-22 19:49 UTC (permalink / raw)
  To: devel
  Cc: Markus Grabner, Greg Kroah-Hartman, line6linux-devel,
	linux-kernel, laurent_navet, Stefan Hajnoczi

Signed-off-by: Stefan Hajnoczi <stefanha@gmail.com>
---
 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;
-- 
1.8.0


^ permalink raw reply related	[flat|nested] 50+ messages in thread

* [PATCH 30/46] staging: line6: drop variax volume sysfs attr
  2012-11-22 19:48 [PATCH 00/46] staging: line6: drop MIDI state sysfs attrs Stefan Hajnoczi
                   ` (28 preceding siblings ...)
  2012-11-22 19:49 ` [PATCH 29/46] staging: line6: drop variax model sysfs attr Stefan Hajnoczi
@ 2012-11-22 19:49 ` Stefan Hajnoczi
  2012-11-22 19:49 ` [PATCH 31/46] staging: line6: drop variax tone " Stefan Hajnoczi
                   ` (16 subsequent siblings)
  46 siblings, 0 replies; 50+ messages in thread
From: Stefan Hajnoczi @ 2012-11-22 19:49 UTC (permalink / raw)
  To: devel
  Cc: Markus Grabner, Greg Kroah-Hartman, line6linux-devel,
	linux-kernel, laurent_navet, Stefan Hajnoczi

Signed-off-by: Stefan Hajnoczi <stefanha@gmail.com>
---
 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;
-- 
1.8.0


^ permalink raw reply related	[flat|nested] 50+ messages in thread

* [PATCH 31/46] staging: line6: drop variax tone sysfs attr
  2012-11-22 19:48 [PATCH 00/46] staging: line6: drop MIDI state sysfs attrs Stefan Hajnoczi
                   ` (29 preceding siblings ...)
  2012-11-22 19:49 ` [PATCH 30/46] staging: line6: drop variax volume " Stefan Hajnoczi
@ 2012-11-22 19:49 ` Stefan Hajnoczi
  2012-11-22 19:49 ` [PATCH 32/46] staging: line6: drop variax name " Stefan Hajnoczi
                   ` (15 subsequent siblings)
  46 siblings, 0 replies; 50+ messages in thread
From: Stefan Hajnoczi @ 2012-11-22 19:49 UTC (permalink / raw)
  To: devel
  Cc: Markus Grabner, Greg Kroah-Hartman, line6linux-devel,
	linux-kernel, laurent_navet, Stefan Hajnoczi

Signed-off-by: Stefan Hajnoczi <stefanha@gmail.com>
---
 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;
-- 
1.8.0


^ permalink raw reply related	[flat|nested] 50+ messages in thread

* [PATCH 32/46] staging: line6: drop variax name sysfs attr
  2012-11-22 19:48 [PATCH 00/46] staging: line6: drop MIDI state sysfs attrs Stefan Hajnoczi
                   ` (30 preceding siblings ...)
  2012-11-22 19:49 ` [PATCH 31/46] staging: line6: drop variax tone " Stefan Hajnoczi
@ 2012-11-22 19:49 ` Stefan Hajnoczi
  2012-11-22 19:49 ` [PATCH 33/46] staging: line6: drop variax bank " Stefan Hajnoczi
                   ` (14 subsequent siblings)
  46 siblings, 0 replies; 50+ messages in thread
From: Stefan Hajnoczi @ 2012-11-22 19:49 UTC (permalink / raw)
  To: devel
  Cc: Markus Grabner, Greg Kroah-Hartman, line6linux-devel,
	linux-kernel, laurent_navet, Stefan Hajnoczi

Signed-off-by: Stefan Hajnoczi <stefanha@gmail.com>
---
 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);
-- 
1.8.0


^ permalink raw reply related	[flat|nested] 50+ messages in thread

* [PATCH 33/46] staging: line6: drop variax bank sysfs attr
  2012-11-22 19:48 [PATCH 00/46] staging: line6: drop MIDI state sysfs attrs Stefan Hajnoczi
                   ` (31 preceding siblings ...)
  2012-11-22 19:49 ` [PATCH 32/46] staging: line6: drop variax name " Stefan Hajnoczi
@ 2012-11-22 19:49 ` Stefan Hajnoczi
  2012-11-22 19:49 ` [PATCH 34/46] staging: line6: drop variax dump " Stefan Hajnoczi
                   ` (13 subsequent siblings)
  46 siblings, 0 replies; 50+ messages in thread
From: Stefan Hajnoczi @ 2012-11-22 19:49 UTC (permalink / raw)
  To: devel
  Cc: Markus Grabner, Greg Kroah-Hartman, line6linux-devel,
	linux-kernel, laurent_navet, Stefan Hajnoczi

The get_string() function is no longer used so drop it too.

Signed-off-by: Stefan Hajnoczi <stefanha@gmail.com>
---
 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;
-- 
1.8.0


^ permalink raw reply related	[flat|nested] 50+ messages in thread

* [PATCH 34/46] staging: line6: drop variax dump sysfs attr
  2012-11-22 19:48 [PATCH 00/46] staging: line6: drop MIDI state sysfs attrs Stefan Hajnoczi
                   ` (32 preceding siblings ...)
  2012-11-22 19:49 ` [PATCH 33/46] staging: line6: drop variax bank " Stefan Hajnoczi
@ 2012-11-22 19:49 ` Stefan Hajnoczi
  2012-11-22 19:49 ` [PATCH 35/46] staging: line6: drop variax active " Stefan Hajnoczi
                   ` (12 subsequent siblings)
  46 siblings, 0 replies; 50+ messages in thread
From: Stefan Hajnoczi @ 2012-11-22 19:49 UTC (permalink / raw)
  To: devel
  Cc: Markus Grabner, Greg Kroah-Hartman, line6linux-devel,
	linux-kernel, laurent_navet, Stefan Hajnoczi

Signed-off-by: Stefan Hajnoczi <stefanha@gmail.com>
---
 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
-- 
1.8.0


^ permalink raw reply related	[flat|nested] 50+ messages in thread

* [PATCH 35/46] staging: line6: drop variax active sysfs attr
  2012-11-22 19:48 [PATCH 00/46] staging: line6: drop MIDI state sysfs attrs Stefan Hajnoczi
                   ` (33 preceding siblings ...)
  2012-11-22 19:49 ` [PATCH 34/46] staging: line6: drop variax dump " Stefan Hajnoczi
@ 2012-11-22 19:49 ` Stefan Hajnoczi
  2012-11-22 19:49 ` [PATCH 36/46] staging: line6: drop variax guitar " Stefan Hajnoczi
                   ` (11 subsequent siblings)
  46 siblings, 0 replies; 50+ messages in thread
From: Stefan Hajnoczi @ 2012-11-22 19:49 UTC (permalink / raw)
  To: devel
  Cc: Markus Grabner, Greg Kroah-Hartman, line6linux-devel,
	linux-kernel, laurent_navet, Stefan Hajnoczi

The get_string() function has no other callers so remove it too.

Signed-off-by: Stefan Hajnoczi <stefanha@gmail.com>
---
 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);
-- 
1.8.0


^ permalink raw reply related	[flat|nested] 50+ messages in thread

* [PATCH 36/46] staging: line6: drop variax guitar sysfs attr
  2012-11-22 19:48 [PATCH 00/46] staging: line6: drop MIDI state sysfs attrs Stefan Hajnoczi
                   ` (34 preceding siblings ...)
  2012-11-22 19:49 ` [PATCH 35/46] staging: line6: drop variax active " Stefan Hajnoczi
@ 2012-11-22 19:49 ` Stefan Hajnoczi
  2012-11-22 19:49 ` [PATCH 37/46] staging: line6: drop variax raw sysfs attrs Stefan Hajnoczi
                   ` (10 subsequent siblings)
  46 siblings, 0 replies; 50+ messages in thread
From: Stefan Hajnoczi @ 2012-11-22 19:49 UTC (permalink / raw)
  To: devel
  Cc: Markus Grabner, Greg Kroah-Hartman, line6linux-devel,
	linux-kernel, laurent_navet, Stefan Hajnoczi

Signed-off-by: Stefan Hajnoczi <stefanha@gmail.com>
---
 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;
-- 
1.8.0


^ permalink raw reply related	[flat|nested] 50+ messages in thread

* [PATCH 37/46] staging: line6: drop variax raw sysfs attrs
  2012-11-22 19:48 [PATCH 00/46] staging: line6: drop MIDI state sysfs attrs Stefan Hajnoczi
                   ` (35 preceding siblings ...)
  2012-11-22 19:49 ` [PATCH 36/46] staging: line6: drop variax guitar " Stefan Hajnoczi
@ 2012-11-22 19:49 ` Stefan Hajnoczi
  2012-11-22 19:49 ` [PATCH 38/46] staging: line6: drop CONFIG_LINE6_USB_RAW Stefan Hajnoczi
                   ` (9 subsequent siblings)
  46 siblings, 0 replies; 50+ messages in thread
From: Stefan Hajnoczi @ 2012-11-22 19:49 UTC (permalink / raw)
  To: devel
  Cc: Markus Grabner, Greg Kroah-Hartman, line6linux-devel,
	linux-kernel, laurent_navet, Stefan Hajnoczi

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>
---
 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);
-- 
1.8.0


^ permalink raw reply related	[flat|nested] 50+ messages in thread

* [PATCH 38/46] staging: line6: drop CONFIG_LINE6_USB_RAW
  2012-11-22 19:48 [PATCH 00/46] staging: line6: drop MIDI state sysfs attrs Stefan Hajnoczi
                   ` (36 preceding siblings ...)
  2012-11-22 19:49 ` [PATCH 37/46] staging: line6: drop variax raw sysfs attrs Stefan Hajnoczi
@ 2012-11-22 19:49 ` Stefan Hajnoczi
  2012-11-22 19:49 ` [PATCH 39/46] staging: line6: drop amp/effects dump request triggers Stefan Hajnoczi
                   ` (8 subsequent siblings)
  46 siblings, 0 replies; 50+ messages in thread
From: Stefan Hajnoczi @ 2012-11-22 19:49 UTC (permalink / raw)
  To: devel
  Cc: Markus Grabner, Greg Kroah-Hartman, line6linux-devel,
	linux-kernel, laurent_navet, Stefan Hajnoczi

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>
---
 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 a5ded12..2a84767 100644
--- a/drivers/staging/line6/Kconfig
+++ b/drivers/staging/line6/Kconfig
@@ -51,17 +51,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 3c27051..c0986f5 100644
--- a/drivers/staging/line6/driver.c
+++ b/drivers/staging/line6/driver.c
@@ -681,20 +681,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)
-- 
1.8.0


^ permalink raw reply related	[flat|nested] 50+ messages in thread

* [PATCH 39/46] staging: line6: drop amp/effects dump request triggers
  2012-11-22 19:48 [PATCH 00/46] staging: line6: drop MIDI state sysfs attrs Stefan Hajnoczi
                   ` (37 preceding siblings ...)
  2012-11-22 19:49 ` [PATCH 38/46] staging: line6: drop CONFIG_LINE6_USB_RAW Stefan Hajnoczi
@ 2012-11-22 19:49 ` Stefan Hajnoczi
  2012-11-22 19:49 ` [PATCH 40/46] staging: line6: drop MIDI parameter sysfs attrs Stefan Hajnoczi
                   ` (7 subsequent siblings)
  46 siblings, 0 replies; 50+ messages in thread
From: Stefan Hajnoczi @ 2012-11-22 19:49 UTC (permalink / raw)
  To: devel
  Cc: Markus Grabner, Greg Kroah-Hartman, line6linux-devel,
	linux-kernel, laurent_navet, Stefan Hajnoczi

Since the driver no longer needs to keep state of device parameters it
is no longer necessary to refresh state when messages that affect other
parameters are sent.  Drop the code to trigger a dump when amp/effects
are changed.

Signed-off-by: Stefan Hajnoczi <stefanha@gmail.com>
---
 drivers/staging/line6/pod.c | 9 ---------
 1 file changed, 9 deletions(-)

diff --git a/drivers/staging/line6/pod.c b/drivers/staging/line6/pod.c
index 157ef68..aa3a547 100644
--- a/drivers/staging/line6/pod.c
+++ b/drivers/staging/line6/pod.c
@@ -174,12 +174,6 @@ void line6_pod_process_message(struct usb_line6_pod *pod)
 		/* intentionally no break here! */
 
 	case LINE6_PARAM_CHANGE | LINE6_CHANNEL_HOST:
-		if ((buf[1] == POD_amp_model_setup) ||
-		    (buf[1] == POD_effect_setup))
-			/* these also affect other settings */
-			line6_dump_request_async(&pod->dumpreq, &pod->line6, 0,
-						 LINE6_DUMP_CURRENT);
-
 		break;
 
 	case LINE6_PROGRAM_CHANGE | LINE6_CHANNEL_DEVICE:
@@ -288,9 +282,6 @@ void line6_pod_transmit_parameter(struct usb_line6_pod *pod, int param,
 {
 	if (line6_transmit_parameter(&pod->line6, param, value) == 0)
 		pod_store_parameter(pod, param, value);
-
-	if ((param == POD_amp_model_setup) || (param == POD_effect_setup))	/* these also affect other settings */
-		line6_invalidate_current(&pod->dumpreq);
 }
 
 /*
-- 
1.8.0


^ permalink raw reply related	[flat|nested] 50+ messages in thread

* [PATCH 40/46] staging: line6: drop MIDI parameter sysfs attrs
  2012-11-22 19:48 [PATCH 00/46] staging: line6: drop MIDI state sysfs attrs Stefan Hajnoczi
                   ` (38 preceding siblings ...)
  2012-11-22 19:49 ` [PATCH 39/46] staging: line6: drop amp/effects dump request triggers Stefan Hajnoczi
@ 2012-11-22 19:49 ` Stefan Hajnoczi
  2012-11-22 19:49 ` [PATCH 41/46] staging: line6: drop pod prog_data buffers Stefan Hajnoczi
                   ` (6 subsequent siblings)
  46 siblings, 0 replies; 50+ messages in thread
From: Stefan Hajnoczi @ 2012-11-22 19:49 UTC (permalink / raw)
  To: devel
  Cc: Markus Grabner, Greg Kroah-Hartman, line6linux-devel,
	linux-kernel, laurent_navet, Stefan Hajnoczi

Both pod.c and variax.c expose the device's MIDI parameters as sysfs
attrs.  Knowledge of MIDI constants should be in userspace, not in the
driver.  Drop the sysfs attrs and let userspace interpret parameters it
cares about instead.

Signed-off-by: Stefan Hajnoczi <stefanha@gmail.com>
---
 drivers/staging/line6/Makefile  |   1 -
 drivers/staging/line6/control.c | 995 ----------------------------------------
 drivers/staging/line6/control.h | 195 --------
 drivers/staging/line6/driver.c  |   1 -
 drivers/staging/line6/pod.c     |   9 -
 drivers/staging/line6/variax.c  |  13 -
 6 files changed, 1214 deletions(-)
 delete mode 100644 drivers/staging/line6/control.c
 delete mode 100644 drivers/staging/line6/control.h

diff --git a/drivers/staging/line6/Makefile b/drivers/staging/line6/Makefile
index 34a2dda..44ee5ae 100644
--- a/drivers/staging/line6/Makefile
+++ b/drivers/staging/line6/Makefile
@@ -3,7 +3,6 @@ obj-$(CONFIG_LINE6_USB)		+= line6usb.o
 line6usb-y := 		\
 		audio.o		\
 		capture.o	\
-		control.o	\
 		driver.o	\
 		dumprequest.o	\
 		midi.o		\
diff --git a/drivers/staging/line6/control.c b/drivers/staging/line6/control.c
deleted file mode 100644
index f8326f5..0000000
--- a/drivers/staging/line6/control.c
+++ /dev/null
@@ -1,995 +0,0 @@
-/*
- * Line6 Linux USB driver - 0.9.1beta
- *
- * Copyright (C) 2004-2010 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.
- *
- */
-
-#include <linux/usb.h>
-
-#include "control.h"
-#include "driver.h"
-#include "pod.h"
-#include "usbdefs.h"
-#include "variax.h"
-
-#define DEVICE_ATTR2(_name1, _name2, _mode, _show, _store) \
-struct device_attribute dev_attr_##_name1 = __ATTR(_name2, _mode, _show, _store)
-
-#define LINE6_PARAM_R(PREFIX, prefix, type, param) \
-static ssize_t prefix##_get_##param(struct device *dev, \
-			struct device_attribute *attr, char *buf) \
-{ \
-	return prefix##_get_param_##type(dev, buf, PREFIX##_##param); \
-}
-
-#define LINE6_PARAM_RW(PREFIX, prefix, type, param) \
-LINE6_PARAM_R(PREFIX, prefix, type, param); \
-static ssize_t prefix##_set_##param(struct device *dev, \
-		struct device_attribute *attr, const char *buf, size_t count) \
-{ \
-	return prefix##_set_param_##type(dev, buf, count, PREFIX##_##param); \
-}
-
-#define POD_PARAM_R(type, param) LINE6_PARAM_R(POD, pod, type, param)
-#define POD_PARAM_RW(type, param) LINE6_PARAM_RW(POD, pod, type, param)
-#define VARIAX_PARAM_R(type, param) LINE6_PARAM_R(VARIAX, variax, type, param)
-#define VARIAX_PARAM_RW(type, param) LINE6_PARAM_RW(VARIAX, variax, type, param)
-
-static ssize_t pod_get_param_int(struct device *dev, char *buf, int param)
-{
-	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;
-	return sprintf(buf, "%d\n", pod->prog_data.control[param]);
-}
-
-static ssize_t pod_set_param_int(struct device *dev, const char *buf,
-				 size_t count, int param)
-{
-	struct usb_interface *interface = to_usb_interface(dev);
-	struct usb_line6_pod *pod = usb_get_intfdata(interface);
-	u8 value;
-	int retval;
-
-	retval = kstrtou8(buf, 10, &value);
-	if (retval)
-		return retval;
-
-	line6_pod_transmit_parameter(pod, param, value);
-	return count;
-}
-
-static ssize_t variax_get_param_int(struct device *dev, char *buf, int param)
-{
-	struct usb_interface *interface = to_usb_interface(dev);
-	struct usb_line6_variax *variax = usb_get_intfdata(interface);
-	int retval = line6_dump_wait_interruptible(&variax->dumpreq);
-	if (retval < 0)
-		return retval;
-	return sprintf(buf, "%d\n", variax->model_data.control[param]);
-}
-
-static ssize_t variax_get_param_float(struct device *dev, char *buf, int param)
-{
-	/*
-	   We do our own floating point handling here since at the time
-	   this code was written (Jan 2006) it was highly discouraged to
-	   use floating point arithmetic in the kernel. If you think that
-	   this no longer applies, feel free to replace this by generic
-	   floating point code.
-	 */
-
-	static const int BIAS = 0x7f;
-	static const int OFFSET = 0xf;
-	static const int PRECISION = 1000;
-
-	int len = 0;
-	unsigned part_int, part_frac;
-	struct usb_interface *interface = to_usb_interface(dev);
-	struct usb_line6_variax *variax = usb_get_intfdata(interface);
-	const unsigned char *p = variax->model_data.control + param;
-	int retval = line6_dump_wait_interruptible(&variax->dumpreq);
-	if (retval < 0)
-		return retval;
-
-	if ((p[0] == 0) && (p[1] == 0) && (p[2] == 0))
-		part_int = part_frac = 0;
-	else {
-		int exponent = (((p[0] & 0x7f) << 1) | (p[1] >> 7)) - BIAS;
-		unsigned mantissa = (p[1] << 8) | p[2] | 0x8000;
-		exponent -= OFFSET;
-
-		if (exponent >= 0) {
-			part_int = mantissa << exponent;
-			part_frac = 0;
-		} else {
-			part_int = mantissa >> -exponent;
-			part_frac = (mantissa << (32 + exponent)) & 0xffffffff;
-		}
-
-		part_frac =
-		    (part_frac / ((1UL << 31) / (PRECISION / 2 * 10)) + 5) / 10;
-	}
-
-	len +=
-	    sprintf(buf + len, "%s%d.%03d\n", ((p[0] & 0x80) ? "-" : ""),
-		    part_int, part_frac);
-	return len;
-}
-
-POD_PARAM_RW(int, tweak);
-POD_PARAM_RW(int, wah_position);
-POD_PARAM_RW(int, compression_gain);
-POD_PARAM_RW(int, vol_pedal_position);
-POD_PARAM_RW(int, compression_threshold);
-POD_PARAM_RW(int, pan);
-POD_PARAM_RW(int, amp_model_setup);
-POD_PARAM_RW(int, amp_model);
-POD_PARAM_RW(int, drive);
-POD_PARAM_RW(int, bass);
-POD_PARAM_RW(int, mid);
-POD_PARAM_RW(int, lowmid);
-POD_PARAM_RW(int, treble);
-POD_PARAM_RW(int, highmid);
-POD_PARAM_RW(int, chan_vol);
-POD_PARAM_RW(int, reverb_mix);
-POD_PARAM_RW(int, effect_setup);
-POD_PARAM_RW(int, band_1_frequency);
-POD_PARAM_RW(int, presence);
-POD_PARAM_RW(int, treble__bass);
-POD_PARAM_RW(int, noise_gate_enable);
-POD_PARAM_RW(int, gate_threshold);
-POD_PARAM_RW(int, gate_decay_time);
-POD_PARAM_RW(int, stomp_enable);
-POD_PARAM_RW(int, comp_enable);
-POD_PARAM_RW(int, stomp_time);
-POD_PARAM_RW(int, delay_enable);
-POD_PARAM_RW(int, mod_param_1);
-POD_PARAM_RW(int, delay_param_1);
-POD_PARAM_RW(int, delay_param_1_note_value);
-POD_PARAM_RW(int, band_2_frequency__bass);
-POD_PARAM_RW(int, delay_param_2);
-POD_PARAM_RW(int, delay_volume_mix);
-POD_PARAM_RW(int, delay_param_3);
-POD_PARAM_RW(int, reverb_enable);
-POD_PARAM_RW(int, reverb_type);
-POD_PARAM_RW(int, reverb_decay);
-POD_PARAM_RW(int, reverb_tone);
-POD_PARAM_RW(int, reverb_pre_delay);
-POD_PARAM_RW(int, reverb_pre_post);
-POD_PARAM_RW(int, band_2_frequency);
-POD_PARAM_RW(int, band_3_frequency__bass);
-POD_PARAM_RW(int, wah_enable);
-POD_PARAM_RW(int, modulation_lo_cut);
-POD_PARAM_RW(int, delay_reverb_lo_cut);
-POD_PARAM_RW(int, volume_pedal_minimum);
-POD_PARAM_RW(int, eq_pre_post);
-POD_PARAM_RW(int, volume_pre_post);
-POD_PARAM_RW(int, di_model);
-POD_PARAM_RW(int, di_delay);
-POD_PARAM_RW(int, mod_enable);
-POD_PARAM_RW(int, mod_param_1_note_value);
-POD_PARAM_RW(int, mod_param_2);
-POD_PARAM_RW(int, mod_param_3);
-POD_PARAM_RW(int, mod_param_4);
-POD_PARAM_RW(int, mod_param_5);
-POD_PARAM_RW(int, mod_volume_mix);
-POD_PARAM_RW(int, mod_pre_post);
-POD_PARAM_RW(int, modulation_model);
-POD_PARAM_RW(int, band_3_frequency);
-POD_PARAM_RW(int, band_4_frequency__bass);
-POD_PARAM_RW(int, mod_param_1_double_precision);
-POD_PARAM_RW(int, delay_param_1_double_precision);
-POD_PARAM_RW(int, eq_enable);
-POD_PARAM_RW(int, tap);
-POD_PARAM_RW(int, volume_tweak_pedal_assign);
-POD_PARAM_RW(int, band_5_frequency);
-POD_PARAM_RW(int, tuner);
-POD_PARAM_RW(int, mic_selection);
-POD_PARAM_RW(int, cabinet_model);
-POD_PARAM_RW(int, stomp_model);
-POD_PARAM_RW(int, roomlevel);
-POD_PARAM_RW(int, band_4_frequency);
-POD_PARAM_RW(int, band_6_frequency);
-POD_PARAM_RW(int, stomp_param_1_note_value);
-POD_PARAM_RW(int, stomp_param_2);
-POD_PARAM_RW(int, stomp_param_3);
-POD_PARAM_RW(int, stomp_param_4);
-POD_PARAM_RW(int, stomp_param_5);
-POD_PARAM_RW(int, stomp_param_6);
-POD_PARAM_RW(int, amp_switch_select);
-POD_PARAM_RW(int, delay_param_4);
-POD_PARAM_RW(int, delay_param_5);
-POD_PARAM_RW(int, delay_pre_post);
-POD_PARAM_RW(int, delay_model);
-POD_PARAM_RW(int, delay_verb_model);
-POD_PARAM_RW(int, tempo_msb);
-POD_PARAM_RW(int, tempo_lsb);
-POD_PARAM_RW(int, wah_model);
-POD_PARAM_RW(int, bypass_volume);
-POD_PARAM_RW(int, fx_loop_on_off);
-POD_PARAM_RW(int, tweak_param_select);
-POD_PARAM_RW(int, amp1_engage);
-POD_PARAM_RW(int, band_1_gain);
-POD_PARAM_RW(int, band_2_gain__bass);
-POD_PARAM_RW(int, band_2_gain);
-POD_PARAM_RW(int, band_3_gain__bass);
-POD_PARAM_RW(int, band_3_gain);
-POD_PARAM_RW(int, band_4_gain__bass);
-POD_PARAM_RW(int, band_5_gain__bass);
-POD_PARAM_RW(int, band_4_gain);
-POD_PARAM_RW(int, band_6_gain__bass);
-VARIAX_PARAM_R(int, body);
-VARIAX_PARAM_R(int, pickup1_enable);
-VARIAX_PARAM_R(int, pickup1_type);
-VARIAX_PARAM_R(float, pickup1_position);
-VARIAX_PARAM_R(float, pickup1_angle);
-VARIAX_PARAM_R(float, pickup1_level);
-VARIAX_PARAM_R(int, pickup2_enable);
-VARIAX_PARAM_R(int, pickup2_type);
-VARIAX_PARAM_R(float, pickup2_position);
-VARIAX_PARAM_R(float, pickup2_angle);
-VARIAX_PARAM_R(float, pickup2_level);
-VARIAX_PARAM_R(int, pickup_phase);
-VARIAX_PARAM_R(float, capacitance);
-VARIAX_PARAM_R(float, tone_resistance);
-VARIAX_PARAM_R(float, volume_resistance);
-VARIAX_PARAM_R(int, taper);
-VARIAX_PARAM_R(float, tone_dump);
-VARIAX_PARAM_R(int, save_tone);
-VARIAX_PARAM_R(float, volume_dump);
-VARIAX_PARAM_R(int, tuning_enable);
-VARIAX_PARAM_R(int, tuning6);
-VARIAX_PARAM_R(int, tuning5);
-VARIAX_PARAM_R(int, tuning4);
-VARIAX_PARAM_R(int, tuning3);
-VARIAX_PARAM_R(int, tuning2);
-VARIAX_PARAM_R(int, tuning1);
-VARIAX_PARAM_R(float, detune6);
-VARIAX_PARAM_R(float, detune5);
-VARIAX_PARAM_R(float, detune4);
-VARIAX_PARAM_R(float, detune3);
-VARIAX_PARAM_R(float, detune2);
-VARIAX_PARAM_R(float, detune1);
-VARIAX_PARAM_R(float, mix6);
-VARIAX_PARAM_R(float, mix5);
-VARIAX_PARAM_R(float, mix4);
-VARIAX_PARAM_R(float, mix3);
-VARIAX_PARAM_R(float, mix2);
-VARIAX_PARAM_R(float, mix1);
-VARIAX_PARAM_R(int, pickup_wiring);
-
-static DEVICE_ATTR(tweak, S_IWUSR | S_IRUGO, pod_get_tweak, pod_set_tweak);
-static DEVICE_ATTR(wah_position, S_IWUSR | S_IRUGO, pod_get_wah_position,
-		   pod_set_wah_position);
-static DEVICE_ATTR(compression_gain, S_IWUSR | S_IRUGO,
-		   pod_get_compression_gain, pod_set_compression_gain);
-static DEVICE_ATTR(vol_pedal_position, S_IWUSR | S_IRUGO,
-		   pod_get_vol_pedal_position, pod_set_vol_pedal_position);
-static DEVICE_ATTR(compression_threshold, S_IWUSR | S_IRUGO,
-		   pod_get_compression_threshold,
-		   pod_set_compression_threshold);
-static DEVICE_ATTR(pan, S_IWUSR | S_IRUGO, pod_get_pan, pod_set_pan);
-static DEVICE_ATTR(amp_model_setup, S_IWUSR | S_IRUGO, pod_get_amp_model_setup,
-		   pod_set_amp_model_setup);
-static DEVICE_ATTR(amp_model, S_IWUSR | S_IRUGO, pod_get_amp_model,
-		   pod_set_amp_model);
-static DEVICE_ATTR(drive, S_IWUSR | S_IRUGO, pod_get_drive, pod_set_drive);
-static DEVICE_ATTR(bass, S_IWUSR | S_IRUGO, pod_get_bass, pod_set_bass);
-static DEVICE_ATTR(mid, S_IWUSR | S_IRUGO, pod_get_mid, pod_set_mid);
-static DEVICE_ATTR(lowmid, S_IWUSR | S_IRUGO, pod_get_lowmid, pod_set_lowmid);
-static DEVICE_ATTR(treble, S_IWUSR | S_IRUGO, pod_get_treble, pod_set_treble);
-static DEVICE_ATTR(highmid, S_IWUSR | S_IRUGO, pod_get_highmid,
-		   pod_set_highmid);
-static DEVICE_ATTR(chan_vol, S_IWUSR | S_IRUGO, pod_get_chan_vol,
-		   pod_set_chan_vol);
-static DEVICE_ATTR(reverb_mix, S_IWUSR | S_IRUGO, pod_get_reverb_mix,
-		   pod_set_reverb_mix);
-static DEVICE_ATTR(effect_setup, S_IWUSR | S_IRUGO, pod_get_effect_setup,
-		   pod_set_effect_setup);
-static DEVICE_ATTR(band_1_frequency, S_IWUSR | S_IRUGO,
-		   pod_get_band_1_frequency, pod_set_band_1_frequency);
-static DEVICE_ATTR(presence, S_IWUSR | S_IRUGO, pod_get_presence,
-		   pod_set_presence);
-static DEVICE_ATTR2(treble__bass, treble, S_IWUSR | S_IRUGO,
-		    pod_get_treble__bass, pod_set_treble__bass);
-static DEVICE_ATTR(noise_gate_enable, S_IWUSR | S_IRUGO,
-		   pod_get_noise_gate_enable, pod_set_noise_gate_enable);
-static DEVICE_ATTR(gate_threshold, S_IWUSR | S_IRUGO, pod_get_gate_threshold,
-		   pod_set_gate_threshold);
-static DEVICE_ATTR(gate_decay_time, S_IWUSR | S_IRUGO, pod_get_gate_decay_time,
-		   pod_set_gate_decay_time);
-static DEVICE_ATTR(stomp_enable, S_IWUSR | S_IRUGO, pod_get_stomp_enable,
-		   pod_set_stomp_enable);
-static DEVICE_ATTR(comp_enable, S_IWUSR | S_IRUGO, pod_get_comp_enable,
-		   pod_set_comp_enable);
-static DEVICE_ATTR(stomp_time, S_IWUSR | S_IRUGO, pod_get_stomp_time,
-		   pod_set_stomp_time);
-static DEVICE_ATTR(delay_enable, S_IWUSR | S_IRUGO, pod_get_delay_enable,
-		   pod_set_delay_enable);
-static DEVICE_ATTR(mod_param_1, S_IWUSR | S_IRUGO, pod_get_mod_param_1,
-		   pod_set_mod_param_1);
-static DEVICE_ATTR(delay_param_1, S_IWUSR | S_IRUGO, pod_get_delay_param_1,
-		   pod_set_delay_param_1);
-static DEVICE_ATTR(delay_param_1_note_value, S_IWUSR | S_IRUGO,
-		   pod_get_delay_param_1_note_value,
-		   pod_set_delay_param_1_note_value);
-static DEVICE_ATTR2(band_2_frequency__bass, band_2_frequency, S_IWUSR | S_IRUGO,
-		    pod_get_band_2_frequency__bass,
-		    pod_set_band_2_frequency__bass);
-static DEVICE_ATTR(delay_param_2, S_IWUSR | S_IRUGO, pod_get_delay_param_2,
-		   pod_set_delay_param_2);
-static DEVICE_ATTR(delay_volume_mix, S_IWUSR | S_IRUGO,
-		   pod_get_delay_volume_mix, pod_set_delay_volume_mix);
-static DEVICE_ATTR(delay_param_3, S_IWUSR | S_IRUGO, pod_get_delay_param_3,
-		   pod_set_delay_param_3);
-static DEVICE_ATTR(reverb_enable, S_IWUSR | S_IRUGO, pod_get_reverb_enable,
-		   pod_set_reverb_enable);
-static DEVICE_ATTR(reverb_type, S_IWUSR | S_IRUGO, pod_get_reverb_type,
-		   pod_set_reverb_type);
-static DEVICE_ATTR(reverb_decay, S_IWUSR | S_IRUGO, pod_get_reverb_decay,
-		   pod_set_reverb_decay);
-static DEVICE_ATTR(reverb_tone, S_IWUSR | S_IRUGO, pod_get_reverb_tone,
-		   pod_set_reverb_tone);
-static DEVICE_ATTR(reverb_pre_delay, S_IWUSR | S_IRUGO,
-		   pod_get_reverb_pre_delay, pod_set_reverb_pre_delay);
-static DEVICE_ATTR(reverb_pre_post, S_IWUSR | S_IRUGO, pod_get_reverb_pre_post,
-		   pod_set_reverb_pre_post);
-static DEVICE_ATTR(band_2_frequency, S_IWUSR | S_IRUGO,
-		   pod_get_band_2_frequency, pod_set_band_2_frequency);
-static DEVICE_ATTR2(band_3_frequency__bass, band_3_frequency, S_IWUSR | S_IRUGO,
-		    pod_get_band_3_frequency__bass,
-		    pod_set_band_3_frequency__bass);
-static DEVICE_ATTR(wah_enable, S_IWUSR | S_IRUGO, pod_get_wah_enable,
-		   pod_set_wah_enable);
-static DEVICE_ATTR(modulation_lo_cut, S_IWUSR | S_IRUGO,
-		   pod_get_modulation_lo_cut, pod_set_modulation_lo_cut);
-static DEVICE_ATTR(delay_reverb_lo_cut, S_IWUSR | S_IRUGO,
-		   pod_get_delay_reverb_lo_cut, pod_set_delay_reverb_lo_cut);
-static DEVICE_ATTR(volume_pedal_minimum, S_IWUSR | S_IRUGO,
-		   pod_get_volume_pedal_minimum, pod_set_volume_pedal_minimum);
-static DEVICE_ATTR(eq_pre_post, S_IWUSR | S_IRUGO, pod_get_eq_pre_post,
-		   pod_set_eq_pre_post);
-static DEVICE_ATTR(volume_pre_post, S_IWUSR | S_IRUGO, pod_get_volume_pre_post,
-		   pod_set_volume_pre_post);
-static DEVICE_ATTR(di_model, S_IWUSR | S_IRUGO, pod_get_di_model,
-		   pod_set_di_model);
-static DEVICE_ATTR(di_delay, S_IWUSR | S_IRUGO, pod_get_di_delay,
-		   pod_set_di_delay);
-static DEVICE_ATTR(mod_enable, S_IWUSR | S_IRUGO, pod_get_mod_enable,
-		   pod_set_mod_enable);
-static DEVICE_ATTR(mod_param_1_note_value, S_IWUSR | S_IRUGO,
-		   pod_get_mod_param_1_note_value,
-		   pod_set_mod_param_1_note_value);
-static DEVICE_ATTR(mod_param_2, S_IWUSR | S_IRUGO, pod_get_mod_param_2,
-		   pod_set_mod_param_2);
-static DEVICE_ATTR(mod_param_3, S_IWUSR | S_IRUGO, pod_get_mod_param_3,
-		   pod_set_mod_param_3);
-static DEVICE_ATTR(mod_param_4, S_IWUSR | S_IRUGO, pod_get_mod_param_4,
-		   pod_set_mod_param_4);
-static DEVICE_ATTR(mod_param_5, S_IWUSR | S_IRUGO, pod_get_mod_param_5,
-		   pod_set_mod_param_5);
-static DEVICE_ATTR(mod_volume_mix, S_IWUSR | S_IRUGO, pod_get_mod_volume_mix,
-		   pod_set_mod_volume_mix);
-static DEVICE_ATTR(mod_pre_post, S_IWUSR | S_IRUGO, pod_get_mod_pre_post,
-		   pod_set_mod_pre_post);
-static DEVICE_ATTR(modulation_model, S_IWUSR | S_IRUGO,
-		   pod_get_modulation_model, pod_set_modulation_model);
-static DEVICE_ATTR(band_3_frequency, S_IWUSR | S_IRUGO,
-		   pod_get_band_3_frequency, pod_set_band_3_frequency);
-static DEVICE_ATTR2(band_4_frequency__bass, band_4_frequency, S_IWUSR | S_IRUGO,
-		    pod_get_band_4_frequency__bass,
-		    pod_set_band_4_frequency__bass);
-static DEVICE_ATTR(mod_param_1_double_precision, S_IWUSR | S_IRUGO,
-		   pod_get_mod_param_1_double_precision,
-		   pod_set_mod_param_1_double_precision);
-static DEVICE_ATTR(delay_param_1_double_precision, S_IWUSR | S_IRUGO,
-		   pod_get_delay_param_1_double_precision,
-		   pod_set_delay_param_1_double_precision);
-static DEVICE_ATTR(eq_enable, S_IWUSR | S_IRUGO, pod_get_eq_enable,
-		   pod_set_eq_enable);
-static DEVICE_ATTR(tap, S_IWUSR | S_IRUGO, pod_get_tap, pod_set_tap);
-static DEVICE_ATTR(volume_tweak_pedal_assign, S_IWUSR | S_IRUGO,
-		   pod_get_volume_tweak_pedal_assign,
-		   pod_set_volume_tweak_pedal_assign);
-static DEVICE_ATTR(band_5_frequency, S_IWUSR | S_IRUGO,
-		   pod_get_band_5_frequency, pod_set_band_5_frequency);
-static DEVICE_ATTR(tuner, S_IWUSR | S_IRUGO, pod_get_tuner, pod_set_tuner);
-static DEVICE_ATTR(mic_selection, S_IWUSR | S_IRUGO, pod_get_mic_selection,
-		   pod_set_mic_selection);
-static DEVICE_ATTR(cabinet_model, S_IWUSR | S_IRUGO, pod_get_cabinet_model,
-		   pod_set_cabinet_model);
-static DEVICE_ATTR(stomp_model, S_IWUSR | S_IRUGO, pod_get_stomp_model,
-		   pod_set_stomp_model);
-static DEVICE_ATTR(roomlevel, S_IWUSR | S_IRUGO, pod_get_roomlevel,
-		   pod_set_roomlevel);
-static DEVICE_ATTR(band_4_frequency, S_IWUSR | S_IRUGO,
-		   pod_get_band_4_frequency, pod_set_band_4_frequency);
-static DEVICE_ATTR(band_6_frequency, S_IWUSR | S_IRUGO,
-		   pod_get_band_6_frequency, pod_set_band_6_frequency);
-static DEVICE_ATTR(stomp_param_1_note_value, S_IWUSR | S_IRUGO,
-		   pod_get_stomp_param_1_note_value,
-		   pod_set_stomp_param_1_note_value);
-static DEVICE_ATTR(stomp_param_2, S_IWUSR | S_IRUGO, pod_get_stomp_param_2,
-		   pod_set_stomp_param_2);
-static DEVICE_ATTR(stomp_param_3, S_IWUSR | S_IRUGO, pod_get_stomp_param_3,
-		   pod_set_stomp_param_3);
-static DEVICE_ATTR(stomp_param_4, S_IWUSR | S_IRUGO, pod_get_stomp_param_4,
-		   pod_set_stomp_param_4);
-static DEVICE_ATTR(stomp_param_5, S_IWUSR | S_IRUGO, pod_get_stomp_param_5,
-		   pod_set_stomp_param_5);
-static DEVICE_ATTR(stomp_param_6, S_IWUSR | S_IRUGO, pod_get_stomp_param_6,
-		   pod_set_stomp_param_6);
-static DEVICE_ATTR(amp_switch_select, S_IWUSR | S_IRUGO,
-		   pod_get_amp_switch_select, pod_set_amp_switch_select);
-static DEVICE_ATTR(delay_param_4, S_IWUSR | S_IRUGO, pod_get_delay_param_4,
-		   pod_set_delay_param_4);
-static DEVICE_ATTR(delay_param_5, S_IWUSR | S_IRUGO, pod_get_delay_param_5,
-		   pod_set_delay_param_5);
-static DEVICE_ATTR(delay_pre_post, S_IWUSR | S_IRUGO, pod_get_delay_pre_post,
-		   pod_set_delay_pre_post);
-static DEVICE_ATTR(delay_model, S_IWUSR | S_IRUGO, pod_get_delay_model,
-		   pod_set_delay_model);
-static DEVICE_ATTR(delay_verb_model, S_IWUSR | S_IRUGO,
-		   pod_get_delay_verb_model, pod_set_delay_verb_model);
-static DEVICE_ATTR(tempo_msb, S_IWUSR | S_IRUGO, pod_get_tempo_msb,
-		   pod_set_tempo_msb);
-static DEVICE_ATTR(tempo_lsb, S_IWUSR | S_IRUGO, pod_get_tempo_lsb,
-		   pod_set_tempo_lsb);
-static DEVICE_ATTR(wah_model, S_IWUSR | S_IRUGO, pod_get_wah_model,
-		   pod_set_wah_model);
-static DEVICE_ATTR(bypass_volume, S_IWUSR | S_IRUGO, pod_get_bypass_volume,
-		   pod_set_bypass_volume);
-static DEVICE_ATTR(fx_loop_on_off, S_IWUSR | S_IRUGO, pod_get_fx_loop_on_off,
-		   pod_set_fx_loop_on_off);
-static DEVICE_ATTR(tweak_param_select, S_IWUSR | S_IRUGO,
-		   pod_get_tweak_param_select, pod_set_tweak_param_select);
-static DEVICE_ATTR(amp1_engage, S_IWUSR | S_IRUGO, pod_get_amp1_engage,
-		   pod_set_amp1_engage);
-static DEVICE_ATTR(band_1_gain, S_IWUSR | S_IRUGO, pod_get_band_1_gain,
-		   pod_set_band_1_gain);
-static DEVICE_ATTR2(band_2_gain__bass, band_2_gain, S_IWUSR | S_IRUGO,
-		    pod_get_band_2_gain__bass, pod_set_band_2_gain__bass);
-static DEVICE_ATTR(band_2_gain, S_IWUSR | S_IRUGO, pod_get_band_2_gain,
-		   pod_set_band_2_gain);
-static DEVICE_ATTR2(band_3_gain__bass, band_3_gain, S_IWUSR | S_IRUGO,
-		    pod_get_band_3_gain__bass, pod_set_band_3_gain__bass);
-static DEVICE_ATTR(band_3_gain, S_IWUSR | S_IRUGO, pod_get_band_3_gain,
-		   pod_set_band_3_gain);
-static DEVICE_ATTR2(band_4_gain__bass, band_4_gain, S_IWUSR | S_IRUGO,
-		    pod_get_band_4_gain__bass, pod_set_band_4_gain__bass);
-static DEVICE_ATTR2(band_5_gain__bass, band_5_gain, S_IWUSR | S_IRUGO,
-		    pod_get_band_5_gain__bass, pod_set_band_5_gain__bass);
-static DEVICE_ATTR(band_4_gain, S_IWUSR | S_IRUGO, pod_get_band_4_gain,
-		   pod_set_band_4_gain);
-static DEVICE_ATTR2(band_6_gain__bass, band_6_gain, S_IWUSR | S_IRUGO,
-		    pod_get_band_6_gain__bass, pod_set_band_6_gain__bass);
-static DEVICE_ATTR(body, S_IRUGO, variax_get_body, line6_nop_write);
-static DEVICE_ATTR(pickup1_enable, S_IRUGO, variax_get_pickup1_enable,
-		   line6_nop_write);
-static DEVICE_ATTR(pickup1_type, S_IRUGO, variax_get_pickup1_type,
-		   line6_nop_write);
-static DEVICE_ATTR(pickup1_position, S_IRUGO, variax_get_pickup1_position,
-		   line6_nop_write);
-static DEVICE_ATTR(pickup1_angle, S_IRUGO, variax_get_pickup1_angle,
-		   line6_nop_write);
-static DEVICE_ATTR(pickup1_level, S_IRUGO, variax_get_pickup1_level,
-		   line6_nop_write);
-static DEVICE_ATTR(pickup2_enable, S_IRUGO, variax_get_pickup2_enable,
-		   line6_nop_write);
-static DEVICE_ATTR(pickup2_type, S_IRUGO, variax_get_pickup2_type,
-		   line6_nop_write);
-static DEVICE_ATTR(pickup2_position, S_IRUGO, variax_get_pickup2_position,
-		   line6_nop_write);
-static DEVICE_ATTR(pickup2_angle, S_IRUGO, variax_get_pickup2_angle,
-		   line6_nop_write);
-static DEVICE_ATTR(pickup2_level, S_IRUGO, variax_get_pickup2_level,
-		   line6_nop_write);
-static DEVICE_ATTR(pickup_phase, S_IRUGO, variax_get_pickup_phase,
-		   line6_nop_write);
-static DEVICE_ATTR(capacitance, S_IRUGO, variax_get_capacitance,
-		   line6_nop_write);
-static DEVICE_ATTR(tone_resistance, S_IRUGO, variax_get_tone_resistance,
-		   line6_nop_write);
-static DEVICE_ATTR(volume_resistance, S_IRUGO, variax_get_volume_resistance,
-		   line6_nop_write);
-static DEVICE_ATTR(taper, S_IRUGO, variax_get_taper, line6_nop_write);
-static DEVICE_ATTR(tone_dump, S_IRUGO, variax_get_tone_dump, line6_nop_write);
-static DEVICE_ATTR(save_tone, S_IRUGO, variax_get_save_tone, line6_nop_write);
-static DEVICE_ATTR(volume_dump, S_IRUGO, variax_get_volume_dump,
-		   line6_nop_write);
-static DEVICE_ATTR(tuning_enable, S_IRUGO, variax_get_tuning_enable,
-		   line6_nop_write);
-static DEVICE_ATTR(tuning6, S_IRUGO, variax_get_tuning6, line6_nop_write);
-static DEVICE_ATTR(tuning5, S_IRUGO, variax_get_tuning5, line6_nop_write);
-static DEVICE_ATTR(tuning4, S_IRUGO, variax_get_tuning4, line6_nop_write);
-static DEVICE_ATTR(tuning3, S_IRUGO, variax_get_tuning3, line6_nop_write);
-static DEVICE_ATTR(tuning2, S_IRUGO, variax_get_tuning2, line6_nop_write);
-static DEVICE_ATTR(tuning1, S_IRUGO, variax_get_tuning1, line6_nop_write);
-static DEVICE_ATTR(detune6, S_IRUGO, variax_get_detune6, line6_nop_write);
-static DEVICE_ATTR(detune5, S_IRUGO, variax_get_detune5, line6_nop_write);
-static DEVICE_ATTR(detune4, S_IRUGO, variax_get_detune4, line6_nop_write);
-static DEVICE_ATTR(detune3, S_IRUGO, variax_get_detune3, line6_nop_write);
-static DEVICE_ATTR(detune2, S_IRUGO, variax_get_detune2, line6_nop_write);
-static DEVICE_ATTR(detune1, S_IRUGO, variax_get_detune1, line6_nop_write);
-static DEVICE_ATTR(mix6, S_IRUGO, variax_get_mix6, line6_nop_write);
-static DEVICE_ATTR(mix5, S_IRUGO, variax_get_mix5, line6_nop_write);
-static DEVICE_ATTR(mix4, S_IRUGO, variax_get_mix4, line6_nop_write);
-static DEVICE_ATTR(mix3, S_IRUGO, variax_get_mix3, line6_nop_write);
-static DEVICE_ATTR(mix2, S_IRUGO, variax_get_mix2, line6_nop_write);
-static DEVICE_ATTR(mix1, S_IRUGO, variax_get_mix1, line6_nop_write);
-static DEVICE_ATTR(pickup_wiring, S_IRUGO, variax_get_pickup_wiring,
-		   line6_nop_write);
-
-int line6_pod_create_files(int firmware, int type, struct device *dev)
-{
-	int err;
-	CHECK_RETURN(device_create_file(dev, &dev_attr_tweak));
-	CHECK_RETURN(device_create_file(dev, &dev_attr_wah_position));
-	if ((type & (LINE6_BITS_PODXTALL)) != 0)
-		CHECK_RETURN(device_create_file
-			     (dev, &dev_attr_compression_gain));
-	CHECK_RETURN(device_create_file(dev, &dev_attr_vol_pedal_position));
-	CHECK_RETURN(device_create_file(dev, &dev_attr_compression_threshold));
-	CHECK_RETURN(device_create_file(dev, &dev_attr_pan));
-	CHECK_RETURN(device_create_file(dev, &dev_attr_amp_model_setup));
-	if (firmware >= 200)
-		CHECK_RETURN(device_create_file(dev, &dev_attr_amp_model));
-	CHECK_RETURN(device_create_file(dev, &dev_attr_drive));
-	CHECK_RETURN(device_create_file(dev, &dev_attr_bass));
-	if ((type & (LINE6_BITS_PODXTALL)) != 0)
-		CHECK_RETURN(device_create_file(dev, &dev_attr_mid));
-	if ((type & (LINE6_BITS_BASSPODXTALL)) != 0)
-		CHECK_RETURN(device_create_file(dev, &dev_attr_lowmid));
-	if ((type & (LINE6_BITS_PODXTALL)) != 0)
-		CHECK_RETURN(device_create_file(dev, &dev_attr_treble));
-	if ((type & (LINE6_BITS_BASSPODXTALL)) != 0)
-		CHECK_RETURN(device_create_file(dev, &dev_attr_highmid));
-	CHECK_RETURN(device_create_file(dev, &dev_attr_chan_vol));
-	if ((type & (LINE6_BITS_PODXTALL)) != 0)
-		CHECK_RETURN(device_create_file(dev, &dev_attr_reverb_mix));
-	CHECK_RETURN(device_create_file(dev, &dev_attr_effect_setup));
-	if (firmware >= 200)
-		CHECK_RETURN(device_create_file
-			     (dev, &dev_attr_band_1_frequency));
-	if ((type & (LINE6_BITS_PODXTALL)) != 0)
-		CHECK_RETURN(device_create_file(dev, &dev_attr_presence));
-	if ((type & (LINE6_BITS_BASSPODXTALL)) != 0)
-		CHECK_RETURN(device_create_file(dev, &dev_attr_treble__bass));
-	CHECK_RETURN(device_create_file(dev, &dev_attr_noise_gate_enable));
-	CHECK_RETURN(device_create_file(dev, &dev_attr_gate_threshold));
-	CHECK_RETURN(device_create_file(dev, &dev_attr_gate_decay_time));
-	CHECK_RETURN(device_create_file(dev, &dev_attr_stomp_enable));
-	CHECK_RETURN(device_create_file(dev, &dev_attr_comp_enable));
-	CHECK_RETURN(device_create_file(dev, &dev_attr_stomp_time));
-	CHECK_RETURN(device_create_file(dev, &dev_attr_delay_enable));
-	CHECK_RETURN(device_create_file(dev, &dev_attr_mod_param_1));
-	CHECK_RETURN(device_create_file(dev, &dev_attr_delay_param_1));
-	CHECK_RETURN(device_create_file
-		     (dev, &dev_attr_delay_param_1_note_value));
-	if ((type & (LINE6_BITS_BASSPODXTALL)) != 0)
-		if (firmware >= 200)
-			CHECK_RETURN(device_create_file
-				     (dev, &dev_attr_band_2_frequency__bass));
-	CHECK_RETURN(device_create_file(dev, &dev_attr_delay_param_2));
-	CHECK_RETURN(device_create_file(dev, &dev_attr_delay_volume_mix));
-	CHECK_RETURN(device_create_file(dev, &dev_attr_delay_param_3));
-	if ((type & (LINE6_BITS_PODXTALL)) != 0)
-		CHECK_RETURN(device_create_file(dev, &dev_attr_reverb_enable));
-	if ((type & (LINE6_BITS_PODXTALL)) != 0)
-		CHECK_RETURN(device_create_file(dev, &dev_attr_reverb_type));
-	if ((type & (LINE6_BITS_PODXTALL)) != 0)
-		CHECK_RETURN(device_create_file(dev, &dev_attr_reverb_decay));
-	if ((type & (LINE6_BITS_PODXTALL)) != 0)
-		CHECK_RETURN(device_create_file(dev, &dev_attr_reverb_tone));
-	if ((type & (LINE6_BITS_PODXTALL)) != 0)
-		CHECK_RETURN(device_create_file
-			     (dev, &dev_attr_reverb_pre_delay));
-	if ((type & (LINE6_BITS_PODXTALL)) != 0)
-		CHECK_RETURN(device_create_file
-			     (dev, &dev_attr_reverb_pre_post));
-	if ((type & (LINE6_BITS_PODXTALL)) != 0)
-		if (firmware >= 200)
-			CHECK_RETURN(device_create_file
-				     (dev, &dev_attr_band_2_frequency));
-	if ((type & (LINE6_BITS_BASSPODXTALL)) != 0)
-		if (firmware >= 200)
-			CHECK_RETURN(device_create_file
-				     (dev, &dev_attr_band_3_frequency__bass));
-	CHECK_RETURN(device_create_file(dev, &dev_attr_wah_enable));
-	if ((type & (LINE6_BITS_BASSPODXTALL)) != 0)
-		CHECK_RETURN(device_create_file
-			     (dev, &dev_attr_modulation_lo_cut));
-	if ((type & (LINE6_BITS_BASSPODXTALL)) != 0)
-		CHECK_RETURN(device_create_file
-			     (dev, &dev_attr_delay_reverb_lo_cut));
-	if ((type & (LINE6_BITS_PODXTALL)) != 0)
-		if (firmware >= 200)
-			CHECK_RETURN(device_create_file
-				     (dev, &dev_attr_volume_pedal_minimum));
-	if ((type & (LINE6_BITS_BASSPODXTALL)) != 0)
-		if (firmware >= 200)
-			CHECK_RETURN(device_create_file
-				     (dev, &dev_attr_eq_pre_post));
-	CHECK_RETURN(device_create_file(dev, &dev_attr_volume_pre_post));
-	if ((type & (LINE6_BITS_BASSPODXTALL)) != 0)
-		CHECK_RETURN(device_create_file(dev, &dev_attr_di_model));
-	if ((type & (LINE6_BITS_BASSPODXTALL)) != 0)
-		CHECK_RETURN(device_create_file(dev, &dev_attr_di_delay));
-	CHECK_RETURN(device_create_file(dev, &dev_attr_mod_enable));
-	CHECK_RETURN(device_create_file(dev, &dev_attr_mod_param_1_note_value));
-	CHECK_RETURN(device_create_file(dev, &dev_attr_mod_param_2));
-	CHECK_RETURN(device_create_file(dev, &dev_attr_mod_param_3));
-	CHECK_RETURN(device_create_file(dev, &dev_attr_mod_param_4));
-	if ((type & (LINE6_BITS_BASSPODXTALL)) != 0)
-		CHECK_RETURN(device_create_file(dev, &dev_attr_mod_param_5));
-	CHECK_RETURN(device_create_file(dev, &dev_attr_mod_volume_mix));
-	CHECK_RETURN(device_create_file(dev, &dev_attr_mod_pre_post));
-	CHECK_RETURN(device_create_file(dev, &dev_attr_modulation_model));
-	if ((type & (LINE6_BITS_PODXTALL)) != 0)
-		if (firmware >= 200)
-			CHECK_RETURN(device_create_file
-				     (dev, &dev_attr_band_3_frequency));
-	if ((type & (LINE6_BITS_BASSPODXTALL)) != 0)
-		if (firmware >= 200)
-			CHECK_RETURN(device_create_file
-				     (dev, &dev_attr_band_4_frequency__bass));
-	CHECK_RETURN(device_create_file
-		     (dev, &dev_attr_mod_param_1_double_precision));
-	CHECK_RETURN(device_create_file
-		     (dev, &dev_attr_delay_param_1_double_precision));
-	if (firmware >= 200)
-		CHECK_RETURN(device_create_file(dev, &dev_attr_eq_enable));
-	CHECK_RETURN(device_create_file(dev, &dev_attr_tap));
-	CHECK_RETURN(device_create_file
-		     (dev, &dev_attr_volume_tweak_pedal_assign));
-	if ((type & (LINE6_BITS_BASSPODXTALL)) != 0)
-		if (firmware >= 200)
-			CHECK_RETURN(device_create_file
-				     (dev, &dev_attr_band_5_frequency));
-	CHECK_RETURN(device_create_file(dev, &dev_attr_tuner));
-	CHECK_RETURN(device_create_file(dev, &dev_attr_mic_selection));
-	CHECK_RETURN(device_create_file(dev, &dev_attr_cabinet_model));
-	CHECK_RETURN(device_create_file(dev, &dev_attr_stomp_model));
-	CHECK_RETURN(device_create_file(dev, &dev_attr_roomlevel));
-	if ((type & (LINE6_BITS_PODXTALL)) != 0)
-		if (firmware >= 200)
-			CHECK_RETURN(device_create_file
-				     (dev, &dev_attr_band_4_frequency));
-	if ((type & (LINE6_BITS_BASSPODXTALL)) != 0)
-		if (firmware >= 200)
-			CHECK_RETURN(device_create_file
-				     (dev, &dev_attr_band_6_frequency));
-	CHECK_RETURN(device_create_file
-		     (dev, &dev_attr_stomp_param_1_note_value));
-	CHECK_RETURN(device_create_file(dev, &dev_attr_stomp_param_2));
-	CHECK_RETURN(device_create_file(dev, &dev_attr_stomp_param_3));
-	CHECK_RETURN(device_create_file(dev, &dev_attr_stomp_param_4));
-	CHECK_RETURN(device_create_file(dev, &dev_attr_stomp_param_5));
-	CHECK_RETURN(device_create_file(dev, &dev_attr_stomp_param_6));
-	if ((type & (LINE6_BITS_LIVE)) != 0)
-		CHECK_RETURN(device_create_file
-			     (dev, &dev_attr_amp_switch_select));
-	CHECK_RETURN(device_create_file(dev, &dev_attr_delay_param_4));
-	CHECK_RETURN(device_create_file(dev, &dev_attr_delay_param_5));
-	CHECK_RETURN(device_create_file(dev, &dev_attr_delay_pre_post));
-	if ((type & (LINE6_BITS_PODXTALL)) != 0)
-		CHECK_RETURN(device_create_file(dev, &dev_attr_delay_model));
-	if ((type & (LINE6_BITS_BASSPODXTALL)) != 0)
-		CHECK_RETURN(device_create_file
-			     (dev, &dev_attr_delay_verb_model));
-	CHECK_RETURN(device_create_file(dev, &dev_attr_tempo_msb));
-	CHECK_RETURN(device_create_file(dev, &dev_attr_tempo_lsb));
-	if (firmware >= 300)
-		CHECK_RETURN(device_create_file(dev, &dev_attr_wah_model));
-	if (firmware >= 214)
-		CHECK_RETURN(device_create_file(dev, &dev_attr_bypass_volume));
-	if ((type & (LINE6_BITS_PRO)) != 0)
-		CHECK_RETURN(device_create_file(dev, &dev_attr_fx_loop_on_off));
-	CHECK_RETURN(device_create_file(dev, &dev_attr_tweak_param_select));
-	CHECK_RETURN(device_create_file(dev, &dev_attr_amp1_engage));
-	if (firmware >= 200)
-		CHECK_RETURN(device_create_file(dev, &dev_attr_band_1_gain));
-	if ((type & (LINE6_BITS_BASSPODXTALL)) != 0)
-		if (firmware >= 200)
-			CHECK_RETURN(device_create_file
-				     (dev, &dev_attr_band_2_gain__bass));
-	if ((type & (LINE6_BITS_PODXTALL)) != 0)
-		if (firmware >= 200)
-			CHECK_RETURN(device_create_file
-				     (dev, &dev_attr_band_2_gain));
-	if ((type & (LINE6_BITS_BASSPODXTALL)) != 0)
-		if (firmware >= 200)
-			CHECK_RETURN(device_create_file
-				     (dev, &dev_attr_band_3_gain__bass));
-	if ((type & (LINE6_BITS_PODXTALL)) != 0)
-		if (firmware >= 200)
-			CHECK_RETURN(device_create_file
-				     (dev, &dev_attr_band_3_gain));
-	if ((type & (LINE6_BITS_BASSPODXTALL)) != 0)
-		if (firmware >= 200)
-			CHECK_RETURN(device_create_file
-				     (dev, &dev_attr_band_4_gain__bass));
-	if ((type & (LINE6_BITS_BASSPODXTALL)) != 0)
-		if (firmware >= 200)
-			CHECK_RETURN(device_create_file
-				     (dev, &dev_attr_band_5_gain__bass));
-	if ((type & (LINE6_BITS_PODXTALL)) != 0)
-		if (firmware >= 200)
-			CHECK_RETURN(device_create_file
-				     (dev, &dev_attr_band_4_gain));
-	if ((type & (LINE6_BITS_BASSPODXTALL)) != 0)
-		if (firmware >= 200)
-			CHECK_RETURN(device_create_file
-				     (dev, &dev_attr_band_6_gain__bass));
-	return 0;
-}
-
-void line6_pod_remove_files(int firmware, int type, struct device *dev)
-{
-	device_remove_file(dev, &dev_attr_tweak);
-	device_remove_file(dev, &dev_attr_wah_position);
-	if ((type & (LINE6_BITS_PODXTALL)) != 0)
-		device_remove_file(dev, &dev_attr_compression_gain);
-	device_remove_file(dev, &dev_attr_vol_pedal_position);
-	device_remove_file(dev, &dev_attr_compression_threshold);
-	device_remove_file(dev, &dev_attr_pan);
-	device_remove_file(dev, &dev_attr_amp_model_setup);
-	if (firmware >= 200)
-		device_remove_file(dev, &dev_attr_amp_model);
-	device_remove_file(dev, &dev_attr_drive);
-	device_remove_file(dev, &dev_attr_bass);
-	if ((type & (LINE6_BITS_PODXTALL)) != 0)
-		device_remove_file(dev, &dev_attr_mid);
-	if ((type & (LINE6_BITS_BASSPODXTALL)) != 0)
-		device_remove_file(dev, &dev_attr_lowmid);
-	if ((type & (LINE6_BITS_PODXTALL)) != 0)
-		device_remove_file(dev, &dev_attr_treble);
-	if ((type & (LINE6_BITS_BASSPODXTALL)) != 0)
-		device_remove_file(dev, &dev_attr_highmid);
-	device_remove_file(dev, &dev_attr_chan_vol);
-	if ((type & (LINE6_BITS_PODXTALL)) != 0)
-		device_remove_file(dev, &dev_attr_reverb_mix);
-	device_remove_file(dev, &dev_attr_effect_setup);
-	if (firmware >= 200)
-		device_remove_file(dev, &dev_attr_band_1_frequency);
-	if ((type & (LINE6_BITS_PODXTALL)) != 0)
-		device_remove_file(dev, &dev_attr_presence);
-	if ((type & (LINE6_BITS_BASSPODXTALL)) != 0)
-		device_remove_file(dev, &dev_attr_treble__bass);
-	device_remove_file(dev, &dev_attr_noise_gate_enable);
-	device_remove_file(dev, &dev_attr_gate_threshold);
-	device_remove_file(dev, &dev_attr_gate_decay_time);
-	device_remove_file(dev, &dev_attr_stomp_enable);
-	device_remove_file(dev, &dev_attr_comp_enable);
-	device_remove_file(dev, &dev_attr_stomp_time);
-	device_remove_file(dev, &dev_attr_delay_enable);
-	device_remove_file(dev, &dev_attr_mod_param_1);
-	device_remove_file(dev, &dev_attr_delay_param_1);
-	device_remove_file(dev, &dev_attr_delay_param_1_note_value);
-	if ((type & (LINE6_BITS_BASSPODXTALL)) != 0)
-		if (firmware >= 200)
-			device_remove_file(dev,
-					   &dev_attr_band_2_frequency__bass);
-	device_remove_file(dev, &dev_attr_delay_param_2);
-	device_remove_file(dev, &dev_attr_delay_volume_mix);
-	device_remove_file(dev, &dev_attr_delay_param_3);
-	if ((type & (LINE6_BITS_PODXTALL)) != 0)
-		device_remove_file(dev, &dev_attr_reverb_enable);
-	if ((type & (LINE6_BITS_PODXTALL)) != 0)
-		device_remove_file(dev, &dev_attr_reverb_type);
-	if ((type & (LINE6_BITS_PODXTALL)) != 0)
-		device_remove_file(dev, &dev_attr_reverb_decay);
-	if ((type & (LINE6_BITS_PODXTALL)) != 0)
-		device_remove_file(dev, &dev_attr_reverb_tone);
-	if ((type & (LINE6_BITS_PODXTALL)) != 0)
-		device_remove_file(dev, &dev_attr_reverb_pre_delay);
-	if ((type & (LINE6_BITS_PODXTALL)) != 0)
-		device_remove_file(dev, &dev_attr_reverb_pre_post);
-	if ((type & (LINE6_BITS_PODXTALL)) != 0)
-		if (firmware >= 200)
-			device_remove_file(dev, &dev_attr_band_2_frequency);
-	if ((type & (LINE6_BITS_BASSPODXTALL)) != 0)
-		if (firmware >= 200)
-			device_remove_file(dev,
-					   &dev_attr_band_3_frequency__bass);
-	device_remove_file(dev, &dev_attr_wah_enable);
-	if ((type & (LINE6_BITS_BASSPODXTALL)) != 0)
-		device_remove_file(dev, &dev_attr_modulation_lo_cut);
-	if ((type & (LINE6_BITS_BASSPODXTALL)) != 0)
-		device_remove_file(dev, &dev_attr_delay_reverb_lo_cut);
-	if ((type & (LINE6_BITS_PODXTALL)) != 0)
-		if (firmware >= 200)
-			device_remove_file(dev, &dev_attr_volume_pedal_minimum);
-	if ((type & (LINE6_BITS_BASSPODXTALL)) != 0)
-		if (firmware >= 200)
-			device_remove_file(dev, &dev_attr_eq_pre_post);
-	device_remove_file(dev, &dev_attr_volume_pre_post);
-	if ((type & (LINE6_BITS_BASSPODXTALL)) != 0)
-		device_remove_file(dev, &dev_attr_di_model);
-	if ((type & (LINE6_BITS_BASSPODXTALL)) != 0)
-		device_remove_file(dev, &dev_attr_di_delay);
-	device_remove_file(dev, &dev_attr_mod_enable);
-	device_remove_file(dev, &dev_attr_mod_param_1_note_value);
-	device_remove_file(dev, &dev_attr_mod_param_2);
-	device_remove_file(dev, &dev_attr_mod_param_3);
-	device_remove_file(dev, &dev_attr_mod_param_4);
-	if ((type & (LINE6_BITS_BASSPODXTALL)) != 0)
-		device_remove_file(dev, &dev_attr_mod_param_5);
-	device_remove_file(dev, &dev_attr_mod_volume_mix);
-	device_remove_file(dev, &dev_attr_mod_pre_post);
-	device_remove_file(dev, &dev_attr_modulation_model);
-	if ((type & (LINE6_BITS_PODXTALL)) != 0)
-		if (firmware >= 200)
-			device_remove_file(dev, &dev_attr_band_3_frequency);
-	if ((type & (LINE6_BITS_BASSPODXTALL)) != 0)
-		if (firmware >= 200)
-			device_remove_file(dev,
-					   &dev_attr_band_4_frequency__bass);
-	device_remove_file(dev, &dev_attr_mod_param_1_double_precision);
-	device_remove_file(dev, &dev_attr_delay_param_1_double_precision);
-	if (firmware >= 200)
-		device_remove_file(dev, &dev_attr_eq_enable);
-	device_remove_file(dev, &dev_attr_tap);
-	device_remove_file(dev, &dev_attr_volume_tweak_pedal_assign);
-	if ((type & (LINE6_BITS_BASSPODXTALL)) != 0)
-		if (firmware >= 200)
-			device_remove_file(dev, &dev_attr_band_5_frequency);
-	device_remove_file(dev, &dev_attr_tuner);
-	device_remove_file(dev, &dev_attr_mic_selection);
-	device_remove_file(dev, &dev_attr_cabinet_model);
-	device_remove_file(dev, &dev_attr_stomp_model);
-	device_remove_file(dev, &dev_attr_roomlevel);
-	if ((type & (LINE6_BITS_PODXTALL)) != 0)
-		if (firmware >= 200)
-			device_remove_file(dev, &dev_attr_band_4_frequency);
-	if ((type & (LINE6_BITS_BASSPODXTALL)) != 0)
-		if (firmware >= 200)
-			device_remove_file(dev, &dev_attr_band_6_frequency);
-	device_remove_file(dev, &dev_attr_stomp_param_1_note_value);
-	device_remove_file(dev, &dev_attr_stomp_param_2);
-	device_remove_file(dev, &dev_attr_stomp_param_3);
-	device_remove_file(dev, &dev_attr_stomp_param_4);
-	device_remove_file(dev, &dev_attr_stomp_param_5);
-	device_remove_file(dev, &dev_attr_stomp_param_6);
-	if ((type & (LINE6_BITS_LIVE)) != 0)
-		device_remove_file(dev, &dev_attr_amp_switch_select);
-	device_remove_file(dev, &dev_attr_delay_param_4);
-	device_remove_file(dev, &dev_attr_delay_param_5);
-	device_remove_file(dev, &dev_attr_delay_pre_post);
-	if ((type & (LINE6_BITS_PODXTALL)) != 0)
-		device_remove_file(dev, &dev_attr_delay_model);
-	if ((type & (LINE6_BITS_BASSPODXTALL)) != 0)
-		device_remove_file(dev, &dev_attr_delay_verb_model);
-	device_remove_file(dev, &dev_attr_tempo_msb);
-	device_remove_file(dev, &dev_attr_tempo_lsb);
-	if (firmware >= 300)
-		device_remove_file(dev, &dev_attr_wah_model);
-	if (firmware >= 214)
-		device_remove_file(dev, &dev_attr_bypass_volume);
-	if ((type & (LINE6_BITS_PRO)) != 0)
-		device_remove_file(dev, &dev_attr_fx_loop_on_off);
-	device_remove_file(dev, &dev_attr_tweak_param_select);
-	device_remove_file(dev, &dev_attr_amp1_engage);
-	if (firmware >= 200)
-		device_remove_file(dev, &dev_attr_band_1_gain);
-	if ((type & (LINE6_BITS_BASSPODXTALL)) != 0)
-		if (firmware >= 200)
-			device_remove_file(dev, &dev_attr_band_2_gain__bass);
-	if ((type & (LINE6_BITS_PODXTALL)) != 0)
-		if (firmware >= 200)
-			device_remove_file(dev, &dev_attr_band_2_gain);
-	if ((type & (LINE6_BITS_BASSPODXTALL)) != 0)
-		if (firmware >= 200)
-			device_remove_file(dev, &dev_attr_band_3_gain__bass);
-	if ((type & (LINE6_BITS_PODXTALL)) != 0)
-		if (firmware >= 200)
-			device_remove_file(dev, &dev_attr_band_3_gain);
-	if ((type & (LINE6_BITS_BASSPODXTALL)) != 0)
-		if (firmware >= 200)
-			device_remove_file(dev, &dev_attr_band_4_gain__bass);
-	if ((type & (LINE6_BITS_BASSPODXTALL)) != 0)
-		if (firmware >= 200)
-			device_remove_file(dev, &dev_attr_band_5_gain__bass);
-	if ((type & (LINE6_BITS_PODXTALL)) != 0)
-		if (firmware >= 200)
-			device_remove_file(dev, &dev_attr_band_4_gain);
-	if ((type & (LINE6_BITS_BASSPODXTALL)) != 0)
-		if (firmware >= 200)
-			device_remove_file(dev, &dev_attr_band_6_gain__bass);
-}
-
-int line6_variax_create_files(int firmware, int type, struct device *dev)
-{
-	int err;
-	CHECK_RETURN(device_create_file(dev, &dev_attr_body));
-	CHECK_RETURN(device_create_file(dev, &dev_attr_pickup1_enable));
-	CHECK_RETURN(device_create_file(dev, &dev_attr_pickup1_type));
-	CHECK_RETURN(device_create_file(dev, &dev_attr_pickup1_position));
-	CHECK_RETURN(device_create_file(dev, &dev_attr_pickup1_angle));
-	CHECK_RETURN(device_create_file(dev, &dev_attr_pickup1_level));
-	CHECK_RETURN(device_create_file(dev, &dev_attr_pickup2_enable));
-	CHECK_RETURN(device_create_file(dev, &dev_attr_pickup2_type));
-	CHECK_RETURN(device_create_file(dev, &dev_attr_pickup2_position));
-	CHECK_RETURN(device_create_file(dev, &dev_attr_pickup2_angle));
-	CHECK_RETURN(device_create_file(dev, &dev_attr_pickup2_level));
-	CHECK_RETURN(device_create_file(dev, &dev_attr_pickup_phase));
-	CHECK_RETURN(device_create_file(dev, &dev_attr_capacitance));
-	CHECK_RETURN(device_create_file(dev, &dev_attr_tone_resistance));
-	CHECK_RETURN(device_create_file(dev, &dev_attr_volume_resistance));
-	CHECK_RETURN(device_create_file(dev, &dev_attr_taper));
-	CHECK_RETURN(device_create_file(dev, &dev_attr_tone_dump));
-	CHECK_RETURN(device_create_file(dev, &dev_attr_save_tone));
-	CHECK_RETURN(device_create_file(dev, &dev_attr_volume_dump));
-	CHECK_RETURN(device_create_file(dev, &dev_attr_tuning_enable));
-	CHECK_RETURN(device_create_file(dev, &dev_attr_tuning6));
-	CHECK_RETURN(device_create_file(dev, &dev_attr_tuning5));
-	CHECK_RETURN(device_create_file(dev, &dev_attr_tuning4));
-	CHECK_RETURN(device_create_file(dev, &dev_attr_tuning3));
-	CHECK_RETURN(device_create_file(dev, &dev_attr_tuning2));
-	CHECK_RETURN(device_create_file(dev, &dev_attr_tuning1));
-	CHECK_RETURN(device_create_file(dev, &dev_attr_detune6));
-	CHECK_RETURN(device_create_file(dev, &dev_attr_detune5));
-	CHECK_RETURN(device_create_file(dev, &dev_attr_detune4));
-	CHECK_RETURN(device_create_file(dev, &dev_attr_detune3));
-	CHECK_RETURN(device_create_file(dev, &dev_attr_detune2));
-	CHECK_RETURN(device_create_file(dev, &dev_attr_detune1));
-	CHECK_RETURN(device_create_file(dev, &dev_attr_mix6));
-	CHECK_RETURN(device_create_file(dev, &dev_attr_mix5));
-	CHECK_RETURN(device_create_file(dev, &dev_attr_mix4));
-	CHECK_RETURN(device_create_file(dev, &dev_attr_mix3));
-	CHECK_RETURN(device_create_file(dev, &dev_attr_mix2));
-	CHECK_RETURN(device_create_file(dev, &dev_attr_mix1));
-	CHECK_RETURN(device_create_file(dev, &dev_attr_pickup_wiring));
-	return 0;
-}
-
-void line6_variax_remove_files(int firmware, int type, struct device *dev)
-{
-	device_remove_file(dev, &dev_attr_body);
-	device_remove_file(dev, &dev_attr_pickup1_enable);
-	device_remove_file(dev, &dev_attr_pickup1_type);
-	device_remove_file(dev, &dev_attr_pickup1_position);
-	device_remove_file(dev, &dev_attr_pickup1_angle);
-	device_remove_file(dev, &dev_attr_pickup1_level);
-	device_remove_file(dev, &dev_attr_pickup2_enable);
-	device_remove_file(dev, &dev_attr_pickup2_type);
-	device_remove_file(dev, &dev_attr_pickup2_position);
-	device_remove_file(dev, &dev_attr_pickup2_angle);
-	device_remove_file(dev, &dev_attr_pickup2_level);
-	device_remove_file(dev, &dev_attr_pickup_phase);
-	device_remove_file(dev, &dev_attr_capacitance);
-	device_remove_file(dev, &dev_attr_tone_resistance);
-	device_remove_file(dev, &dev_attr_volume_resistance);
-	device_remove_file(dev, &dev_attr_taper);
-	device_remove_file(dev, &dev_attr_tone_dump);
-	device_remove_file(dev, &dev_attr_save_tone);
-	device_remove_file(dev, &dev_attr_volume_dump);
-	device_remove_file(dev, &dev_attr_tuning_enable);
-	device_remove_file(dev, &dev_attr_tuning6);
-	device_remove_file(dev, &dev_attr_tuning5);
-	device_remove_file(dev, &dev_attr_tuning4);
-	device_remove_file(dev, &dev_attr_tuning3);
-	device_remove_file(dev, &dev_attr_tuning2);
-	device_remove_file(dev, &dev_attr_tuning1);
-	device_remove_file(dev, &dev_attr_detune6);
-	device_remove_file(dev, &dev_attr_detune5);
-	device_remove_file(dev, &dev_attr_detune4);
-	device_remove_file(dev, &dev_attr_detune3);
-	device_remove_file(dev, &dev_attr_detune2);
-	device_remove_file(dev, &dev_attr_detune1);
-	device_remove_file(dev, &dev_attr_mix6);
-	device_remove_file(dev, &dev_attr_mix5);
-	device_remove_file(dev, &dev_attr_mix4);
-	device_remove_file(dev, &dev_attr_mix3);
-	device_remove_file(dev, &dev_attr_mix2);
-	device_remove_file(dev, &dev_attr_mix1);
-	device_remove_file(dev, &dev_attr_pickup_wiring);
-}
diff --git a/drivers/staging/line6/control.h b/drivers/staging/line6/control.h
deleted file mode 100644
index e4c5d2c..0000000
--- a/drivers/staging/line6/control.h
+++ /dev/null
@@ -1,195 +0,0 @@
-/*
- * Line6 Linux USB driver - 0.9.1beta
- *
- * Copyright (C) 2004-2010 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 LINE6_CONTROL_H
-#define LINE6_CONTROL_H
-
-/**
-   List of PODxt Pro controls.
-   See Appendix C of the "PODxt (Pro) Pilot's Handbook" by Line6.
-   Comments after the number refer to the PODxt Pro firmware version required
-   for this feature.
-
-   Please *don't* reformat this file since "control.c" is created automatically
-   from "control.h", and this process depends on the exact formatting of the
-   code and the comments below!
-*/
-
-/* *INDENT-OFF* */
-
-enum {
-	POD_tweak                          =   1,
-	POD_wah_position                   =   4,
-	POD_compression_gain               =   5,  /* device: LINE6_BITS_PODXTALL */
-	POD_vol_pedal_position             =   7,
-	POD_compression_threshold          =   9,
-	POD_pan                            =  10,
-	POD_amp_model_setup                =  11,
-	POD_amp_model                      =  12,  /* firmware: 2.0 */
-	POD_drive                          =  13,
-	POD_bass                           =  14,
-	POD_mid                            =  15,  /* device: LINE6_BITS_PODXTALL */
-	POD_lowmid                         =  15,  /* device: LINE6_BITS_BASSPODXTALL */
-	POD_treble                         =  16,  /* device: LINE6_BITS_PODXTALL */
-	POD_highmid                        =  16,  /* device: LINE6_BITS_BASSPODXTALL */
-	POD_chan_vol                       =  17,
-	POD_reverb_mix                     =  18,  /* device: LINE6_BITS_PODXTALL */
-	POD_effect_setup                   =  19,
-	POD_band_1_frequency               =  20,  /* firmware: 2.0 */
-	POD_presence                       =  21,  /* device: LINE6_BITS_PODXTALL */
-	POD_treble__bass                   =  21,  /* device: LINE6_BITS_BASSPODXTALL */
-	POD_noise_gate_enable              =  22,
-	POD_gate_threshold                 =  23,
-	POD_gate_decay_time                =  24,
-	POD_stomp_enable                   =  25,
-	POD_comp_enable                    =  26,
-	POD_stomp_time                     =  27,
-	POD_delay_enable                   =  28,
-	POD_mod_param_1                    =  29,
-	POD_delay_param_1                  =  30,
-	POD_delay_param_1_note_value       =  31,
-	POD_band_2_frequency__bass         =  32,  /* device: LINE6_BITS_BASSPODXTALL */ /* firmware: 2.0 */
-	POD_delay_param_2                  =  33,
-	POD_delay_volume_mix               =  34,
-	POD_delay_param_3                  =  35,
-	POD_reverb_enable                  =  36,  /* device: LINE6_BITS_PODXTALL */
-	POD_reverb_type                    =  37,  /* device: LINE6_BITS_PODXTALL */
-	POD_reverb_decay                   =  38,  /* device: LINE6_BITS_PODXTALL */
-	POD_reverb_tone                    =  39,  /* device: LINE6_BITS_PODXTALL */
-	POD_reverb_pre_delay               =  40,  /* device: LINE6_BITS_PODXTALL */
-	POD_reverb_pre_post                =  41,  /* device: LINE6_BITS_PODXTALL */
-	POD_band_2_frequency               =  42,  /* device: LINE6_BITS_PODXTALL */     /* firmware: 2.0 */
-	POD_band_3_frequency__bass         =  42,  /* device: LINE6_BITS_BASSPODXTALL */ /* firmware: 2.0 */
-	POD_wah_enable                     =  43,
-	POD_modulation_lo_cut              =  44,  /* device: LINE6_BITS_BASSPODXTALL */
-	POD_delay_reverb_lo_cut            =  45,  /* device: LINE6_BITS_BASSPODXTALL */
-	POD_volume_pedal_minimum           =  46,  /* device: LINE6_BITS_PODXTALL */     /* firmware: 2.0 */
-	POD_eq_pre_post                    =  46,  /* device: LINE6_BITS_BASSPODXTALL */ /* firmware: 2.0 */
-	POD_volume_pre_post                =  47,
-	POD_di_model                       =  48,  /* device: LINE6_BITS_BASSPODXTALL */
-	POD_di_delay                       =  49,  /* device: LINE6_BITS_BASSPODXTALL */
-	POD_mod_enable                     =  50,
-	POD_mod_param_1_note_value         =  51,
-	POD_mod_param_2                    =  52,
-	POD_mod_param_3                    =  53,
-	POD_mod_param_4                    =  54,
-	POD_mod_param_5                    =  55,  /* device: LINE6_BITS_BASSPODXTALL */
-	POD_mod_volume_mix                 =  56,
-	POD_mod_pre_post                   =  57,
-	POD_modulation_model               =  58,
-	POD_band_3_frequency               =  60,  /* device: LINE6_BITS_PODXTALL */     /* firmware: 2.0 */
-	POD_band_4_frequency__bass         =  60,  /* device: LINE6_BITS_BASSPODXTALL */ /* firmware: 2.0 */
-	POD_mod_param_1_double_precision   =  61,
-	POD_delay_param_1_double_precision =  62,
-	POD_eq_enable                      =  63,  /* firmware: 2.0 */
-	POD_tap                            =  64,
-	POD_volume_tweak_pedal_assign      =  65,
-	POD_band_5_frequency               =  68,  /* device: LINE6_BITS_BASSPODXTALL */ /* firmware: 2.0 */
-	POD_tuner                          =  69,
-	POD_mic_selection                  =  70,
-	POD_cabinet_model                  =  71,
-	POD_stomp_model                    =  75,
-	POD_roomlevel                      =  76,
-	POD_band_4_frequency               =  77,  /* device: LINE6_BITS_PODXTALL */     /* firmware: 2.0 */
-	POD_band_6_frequency               =  77,  /* device: LINE6_BITS_BASSPODXTALL */ /* firmware: 2.0 */
-	POD_stomp_param_1_note_value       =  78,
-	POD_stomp_param_2                  =  79,
-	POD_stomp_param_3                  =  80,
-	POD_stomp_param_4                  =  81,
-	POD_stomp_param_5                  =  82,
-	POD_stomp_param_6                  =  83,
-	POD_amp_switch_select              =  84,  /* device: LINE6_BITS_LIVE */
-	POD_delay_param_4                  =  85,
-	POD_delay_param_5                  =  86,
-	POD_delay_pre_post                 =  87,
-	POD_delay_model                    =  88,  /* device: LINE6_BITS_PODXTALL */
-	POD_delay_verb_model               =  88,  /* device: LINE6_BITS_BASSPODXTALL */
-	POD_tempo_msb                      =  89,
-	POD_tempo_lsb                      =  90,
-	POD_wah_model                      =  91,  /* firmware: 3.0 */
-	POD_bypass_volume                  = 105,  /* firmware: 2.14 */
-	POD_fx_loop_on_off                 = 107,  /* device: LINE6_BITS_PRO */
-	POD_tweak_param_select             = 108,
-	POD_amp1_engage                    = 111,
-	POD_band_1_gain                    = 114,  /* firmware: 2.0 */
-	POD_band_2_gain__bass              = 115,  /* device: LINE6_BITS_BASSPODXTALL */ /* firmware: 2.0 */
-	POD_band_2_gain                    = 116,  /* device: LINE6_BITS_PODXTALL */     /* firmware: 2.0 */
-	POD_band_3_gain__bass              = 116,  /* device: LINE6_BITS_BASSPODXTALL */ /* firmware: 2.0 */
-	POD_band_3_gain                    = 117,  /* device: LINE6_BITS_PODXTALL */     /* firmware: 2.0 */
-	POD_band_4_gain__bass              = 117,  /* device: LINE6_BITS_BASSPODXTALL */ /* firmware: 2.0 */
-	POD_band_5_gain__bass              = 118,  /* device: LINE6_BITS_BASSPODXTALL */ /* firmware: 2.0 */
-	POD_band_4_gain                    = 119,  /* device: LINE6_BITS_PODXTALL */     /* firmware: 2.0 */
-	POD_band_6_gain__bass              = 119   /* device: LINE6_BITS_BASSPODXTALL */ /* firmware: 2.0 */
-};
-
-/**
-   List of Variax workbench controls (dump).
-*/
-enum {
-	VARIAX_body                        =   3,
-	VARIAX_pickup1_enable              =   4,  /* 0: enabled, 1: disabled */
-	VARIAX_pickup1_type                =   8,
-	VARIAX_pickup1_position            =   9,  /* type: 24 bit float */
-	VARIAX_pickup1_angle               =  12,  /* type: 24 bit float */
-	VARIAX_pickup1_level               =  15,  /* type: 24 bit float */
-	VARIAX_pickup2_enable              =  18,  /* 0: enabled, 1: disabled */
-	VARIAX_pickup2_type                =  22,
-	VARIAX_pickup2_position            =  23,  /* type: 24 bit float */
-	VARIAX_pickup2_angle               =  26,  /* type: 24 bit float */
-	VARIAX_pickup2_level               =  29,  /* type: 24 bit float */
-	VARIAX_pickup_phase                =  32,  /* 0: in phase, 1: out of phase */
-	VARIAX_capacitance                 =  33,  /* type: 24 bit float */
-	VARIAX_tone_resistance             =  36,  /* type: 24 bit float */
-	VARIAX_volume_resistance           =  39,  /* type: 24 bit float */
-	VARIAX_taper                       =  42,  /* 0: Linear, 1: Audio */
-	VARIAX_tone_dump                   =  43,  /* type: 24 bit float */
-	VARIAX_save_tone                   =  46,
-	VARIAX_volume_dump                 =  47,  /* type: 24 bit float */
-	VARIAX_tuning_enable               =  50,
-	VARIAX_tuning6                     =  51,
-	VARIAX_tuning5                     =  52,
-	VARIAX_tuning4                     =  53,
-	VARIAX_tuning3                     =  54,
-	VARIAX_tuning2                     =  55,
-	VARIAX_tuning1                     =  56,
-	VARIAX_detune6                     =  57,  /* type: 24 bit float */
-	VARIAX_detune5                     =  60,  /* type: 24 bit float */
-	VARIAX_detune4                     =  63,  /* type: 24 bit float */
-	VARIAX_detune3                     =  66,  /* type: 24 bit float */
-	VARIAX_detune2                     =  69,  /* type: 24 bit float */
-	VARIAX_detune1                     =  72,  /* type: 24 bit float */
-	VARIAX_mix6                        =  75,  /* type: 24 bit float */
-	VARIAX_mix5                        =  78,  /* type: 24 bit float */
-	VARIAX_mix4                        =  81,  /* type: 24 bit float */
-	VARIAX_mix3                        =  84,  /* type: 24 bit float */
-	VARIAX_mix2                        =  87,  /* type: 24 bit float */
-	VARIAX_mix1                        =  90,  /* type: 24 bit float */
-	VARIAX_pickup_wiring               =  96   /* 0: parallel, 1: series */
-};
-
-/**
-   List of Variax workbench controls (MIDI).
-*/
-enum {
-	VARIAXMIDI_volume                  =   7,
-	VARIAXMIDI_tone                    =  79,
-};
-
-/* *INDENT-ON* */
-
-extern int line6_pod_create_files(int firmware, int type, struct device *dev);
-extern void line6_pod_remove_files(int firmware, int type, struct device *dev);
-extern int line6_variax_create_files(int firmware, int type,
-				     struct device *dev);
-extern void line6_variax_remove_files(int firmware, int type,
-				      struct device *dev);
-
-#endif
diff --git a/drivers/staging/line6/driver.c b/drivers/staging/line6/driver.c
index c0986f5..f5c19b2 100644
--- a/drivers/staging/line6/driver.c
+++ b/drivers/staging/line6/driver.c
@@ -16,7 +16,6 @@
 
 #include "audio.h"
 #include "capture.h"
-#include "control.h"
 #include "driver.h"
 #include "midi.h"
 #include "playback.h"
diff --git a/drivers/staging/line6/pod.c b/drivers/staging/line6/pod.c
index aa3a547..278976d 100644
--- a/drivers/staging/line6/pod.c
+++ b/drivers/staging/line6/pod.c
@@ -15,7 +15,6 @@
 
 #include "audio.h"
 #include "capture.h"
-#include "control.h"
 #include "driver.h"
 #include "playback.h"
 #include "pod.h"
@@ -404,10 +403,6 @@ static void pod_startup5(struct work_struct *work)
 
 	/* ALSA audio interface: */
 	line6_register_audio(line6);
-
-	/* device files: */
-	line6_pod_create_files(pod->firmware_version,
-			       line6->properties->device_bit, line6->ifcdev);
 }
 
 /* POD special files: */
@@ -594,10 +589,6 @@ void line6_pod_disconnect(struct usb_interface *interface)
 
 		if (dev != NULL) {
 			/* remove sysfs entries: */
-			line6_pod_remove_files(pod->firmware_version,
-					       pod->line6.
-					       properties->device_bit, dev);
-
 			device_remove_file(dev, &dev_attr_device_id);
 			device_remove_file(dev, &dev_attr_firmware_version);
 			device_remove_file(dev, &dev_attr_serial_number);
diff --git a/drivers/staging/line6/variax.c b/drivers/staging/line6/variax.c
index ff55ad37..0adba32 100644
--- a/drivers/staging/line6/variax.c
+++ b/drivers/staging/line6/variax.c
@@ -12,7 +12,6 @@
 #include <linux/slab.h>
 
 #include "audio.h"
-#include "control.h"
 #include "driver.h"
 #include "variax.h"
 
@@ -174,15 +173,11 @@ static void variax_startup7(struct work_struct *work)
 {
 	struct usb_line6_variax *variax =
 	    container_of(work, struct usb_line6_variax, startup_work);
-	struct usb_line6 *line6 = &variax->line6;
 
 	CHECK_STARTUP_PROGRESS(variax->startup_progress, VARIAX_STARTUP_SETUP);
 
 	/* ALSA audio interface: */
 	line6_register_audio(&variax->line6);
-
-	/* device files: */
-	line6_variax_create_files(0, 0, line6->ifcdev);
 }
 
 /*
@@ -370,16 +365,8 @@ int line6_variax_init(struct usb_interface *interface,
 */
 void line6_variax_disconnect(struct usb_interface *interface)
 {
-	struct device *dev;
-
 	if (interface == NULL)
 		return;
-	dev = &interface->dev;
-
-	if (dev != NULL) {
-		/* remove sysfs entries: */
-		line6_variax_remove_files(0, 0, dev);
-	}
 
 	variax_destruct(interface);
 }
-- 
1.8.0


^ permalink raw reply related	[flat|nested] 50+ messages in thread

* [PATCH 41/46] staging: line6: drop pod prog_data buffers
  2012-11-22 19:48 [PATCH 00/46] staging: line6: drop MIDI state sysfs attrs Stefan Hajnoczi
                   ` (39 preceding siblings ...)
  2012-11-22 19:49 ` [PATCH 40/46] staging: line6: drop MIDI parameter sysfs attrs Stefan Hajnoczi
@ 2012-11-22 19:49 ` Stefan Hajnoczi
  2012-11-22 19:49 ` [PATCH 42/46] staging: line6: drop unused pod atomic_flags field Stefan Hajnoczi
                   ` (5 subsequent siblings)
  46 siblings, 0 replies; 50+ messages in thread
From: Stefan Hajnoczi @ 2012-11-22 19:49 UTC (permalink / raw)
  To: devel
  Cc: Markus Grabner, Greg Kroah-Hartman, line6linux-devel,
	linux-kernel, laurent_navet, Stefan Hajnoczi

The driver no longer keeps state of MIDI-accessible device parameters.
Drop the buffers but be careful to keep the device startup procedure
working even though we no longer store the contents of the dump request.
The startup procedure will be simplified in a later patch.

Signed-off-by: Stefan Hajnoczi <stefanha@gmail.com>
---
 drivers/staging/line6/pod.c | 46 +++------------------------------------------
 drivers/staging/line6/pod.h | 25 ------------------------
 2 files changed, 3 insertions(+), 68 deletions(-)

diff --git a/drivers/staging/line6/pod.c b/drivers/staging/line6/pod.c
index 278976d..e892b4a 100644
--- a/drivers/staging/line6/pod.c
+++ b/drivers/staging/line6/pod.c
@@ -132,14 +132,6 @@ static char *pod_alloc_sysex_buffer(struct usb_line6_pod *pod, int code,
 }
 
 /*
-	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;
-}
-
-/*
 	Handle SAVE button.
 */
 static void pod_save_button_pressed(struct usb_line6_pod *pod, int type,
@@ -169,9 +161,6 @@ void line6_pod_process_message(struct usb_line6_pod *pod)
 	/* process all remaining messages */
 	switch (buf[0]) {
 	case LINE6_PARAM_CHANGE | LINE6_CHANNEL_DEVICE:
-		pod_store_parameter(pod, buf[1], buf[2]);
-		/* intentionally no break here! */
-
 	case LINE6_PARAM_CHANGE | LINE6_CHANNEL_HOST:
 		break;
 
@@ -187,36 +176,8 @@ void line6_pod_process_message(struct usb_line6_pod *pod)
 		if (memcmp(buf + 1, line6_midi_id, sizeof(line6_midi_id)) == 0) {
 			switch (buf[5]) {
 			case POD_SYSEX_DUMP:
-				if (pod->line6.message_length ==
-				    sizeof(pod->prog_data) + 7) {
-					switch (pod->dumpreq.in_progress) {
-					case LINE6_DUMP_CURRENT:
-						memcpy(&pod->prog_data, buf + 7,
-						       sizeof(pod->prog_data));
-						break;
-
-					case POD_DUMP_MEMORY:
-						memcpy(&pod->prog_data_buf,
-						       buf + 7,
-						       sizeof
-						       (pod->prog_data_buf));
-						break;
-
-					default:
-						dev_dbg(pod->line6.ifcdev,
-							"unknown dump code %02X\n",
-							pod->dumpreq.in_progress);
-					}
-
-					line6_dump_finished(&pod->dumpreq);
-					pod_startup3(pod);
-				} else
-					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);
-
+				line6_dump_finished(&pod->dumpreq);
+				pod_startup3(pod);
 				break;
 
 			case POD_SYSEX_SYSTEM:{
@@ -279,8 +240,7 @@ void line6_pod_process_message(struct usb_line6_pod *pod)
 void line6_pod_transmit_parameter(struct usb_line6_pod *pod, int param,
 				  u8 value)
 {
-	if (line6_transmit_parameter(&pod->line6, param, value) == 0)
-		pod_store_parameter(pod, param, value);
+	line6_transmit_parameter(&pod->line6, param, value);
 }
 
 /*
diff --git a/drivers/staging/line6/pod.h b/drivers/staging/line6/pod.h
index 8543bae..52534ca 100644
--- a/drivers/staging/line6/pod.h
+++ b/drivers/staging/line6/pod.h
@@ -52,21 +52,6 @@ enum {
 	POD_STARTUP_LAST = POD_STARTUP_SETUP - 1
 };
 
-/**
-	Binary PODxt Pro program dump
-*/
-struct pod_program {
-	/**
-		Header information (including program name).
-	*/
-	unsigned char header[0x20];
-
-	/**
-		Program parameters.
-	*/
-	unsigned char control[POD_CONTROL_SIZE];
-};
-
 struct usb_line6_pod {
 	/**
 		Generic Line6 USB data.
@@ -79,16 +64,6 @@ struct usb_line6_pod {
 	struct line6_dump_request dumpreq;
 
 	/**
-		Current program settings.
-	*/
-	struct pod_program prog_data;
-
-	/**
-		Buffer for data retrieved from or to be stored on PODxt Pro.
-	*/
-	struct pod_program prog_data_buf;
-
-	/**
 		Instrument monitor level.
 	*/
 	int monitor_level;
-- 
1.8.0


^ permalink raw reply related	[flat|nested] 50+ messages in thread

* [PATCH 42/46] staging: line6: drop unused pod atomic_flags field
  2012-11-22 19:48 [PATCH 00/46] staging: line6: drop MIDI state sysfs attrs Stefan Hajnoczi
                   ` (40 preceding siblings ...)
  2012-11-22 19:49 ` [PATCH 41/46] staging: line6: drop pod prog_data buffers Stefan Hajnoczi
@ 2012-11-22 19:49 ` Stefan Hajnoczi
  2012-11-22 19:49 ` [PATCH 43/46] staging: line6: drop variax model_data field Stefan Hajnoczi
                   ` (4 subsequent siblings)
  46 siblings, 0 replies; 50+ messages in thread
From: Stefan Hajnoczi @ 2012-11-22 19:49 UTC (permalink / raw)
  To: devel
  Cc: Markus Grabner, Greg Kroah-Hartman, line6linux-devel,
	linux-kernel, laurent_navet, Stefan Hajnoczi

Signed-off-by: Stefan Hajnoczi <stefanha@gmail.com>
---
 drivers/staging/line6/pod.c | 11 -----------
 drivers/staging/line6/pod.h |  5 -----
 2 files changed, 16 deletions(-)

diff --git a/drivers/staging/line6/pod.c b/drivers/staging/line6/pod.c
index e892b4a..f8257be 100644
--- a/drivers/staging/line6/pod.c
+++ b/drivers/staging/line6/pod.c
@@ -132,15 +132,6 @@ static char *pod_alloc_sysex_buffer(struct usb_line6_pod *pod, int code,
 }
 
 /*
-	Handle SAVE button.
-*/
-static void pod_save_button_pressed(struct usb_line6_pod *pod, int type,
-				    int index)
-{
-	set_bit(POD_SAVE_PRESSED, &pod->atomic_flags);
-}
-
-/*
 	Process a completely received message.
 */
 void line6_pod_process_message(struct usb_line6_pod *pod)
@@ -166,7 +157,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:
-		set_bit(POD_CHANNEL_DIRTY, &pod->atomic_flags);
 		line6_dump_request_async(&pod->dumpreq, &pod->line6, 0,
 					 LINE6_DUMP_CURRENT);
 		break;
@@ -196,7 +186,6 @@ void line6_pod_process_message(struct usb_line6_pod *pod)
 				break;
 
 			case POD_SYSEX_SAVE:
-				pod_save_button_pressed(pod, buf[6], buf[7]);
 				break;
 
 			case POD_SYSEX_STORE:
diff --git a/drivers/staging/line6/pod.h b/drivers/staging/line6/pod.h
index 52534ca..843eb4e 100644
--- a/drivers/staging/line6/pod.h
+++ b/drivers/staging/line6/pod.h
@@ -84,11 +84,6 @@ struct usb_line6_pod {
 	int startup_progress;
 
 	/**
-		Some atomic flags.
-	*/
-	unsigned long atomic_flags;
-
-	/**
 		Serial number of device.
 	*/
 	int serial_number;
-- 
1.8.0


^ permalink raw reply related	[flat|nested] 50+ messages in thread

* [PATCH 43/46] staging: line6: drop variax model_data field
  2012-11-22 19:48 [PATCH 00/46] staging: line6: drop MIDI state sysfs attrs Stefan Hajnoczi
                   ` (41 preceding siblings ...)
  2012-11-22 19:49 ` [PATCH 42/46] staging: line6: drop unused pod atomic_flags field Stefan Hajnoczi
@ 2012-11-22 19:49 ` Stefan Hajnoczi
  2012-11-22 19:49 ` [PATCH 44/46] staging: line6: drop dump requests from variax startup Stefan Hajnoczi
                   ` (3 subsequent siblings)
  46 siblings, 0 replies; 50+ messages in thread
From: Stefan Hajnoczi @ 2012-11-22 19:49 UTC (permalink / raw)
  To: devel
  Cc: Markus Grabner, Greg Kroah-Hartman, line6linux-devel,
	linux-kernel, laurent_navet, Stefan Hajnoczi

The sysfs attrs to access the model dump have been removed so it's safe
to drop the model_data field.  The next step will be to simplify the
startup process since we no longer need to fetch this data via dump
requests, but that will be done in a later patch.

Signed-off-by: Stefan Hajnoczi <stefanha@gmail.com>
---
 drivers/staging/line6/variax.c | 27 ---------------------------
 drivers/staging/line6/variax.h | 20 --------------------
 2 files changed, 47 deletions(-)

diff --git a/drivers/staging/line6/variax.c b/drivers/staging/line6/variax.c
index 0adba32..0262d7d 100644
--- a/drivers/staging/line6/variax.c
+++ b/drivers/staging/line6/variax.c
@@ -70,21 +70,6 @@ static void variax_startup2(unsigned long data);
 static void variax_startup4(unsigned long data);
 static void variax_startup5(unsigned long data);
 
-/*
-	Decode data transmitted by workbench.
-*/
-static void variax_decode(const unsigned char *raw_data, unsigned char *data,
-			  int raw_size)
-{
-	for (; raw_size > 0; raw_size -= 6) {
-		data[2] = raw_data[0] | (raw_data[1] << 4);
-		data[1] = raw_data[2] | (raw_data[3] << 4);
-		data[0] = raw_data[4] | (raw_data[5] << 4);
-		raw_data += 6;
-		data += 3;
-	}
-}
-
 static void variax_activate_async(struct usb_line6_variax *variax, int a)
 {
 	variax->buffer_activate[VARIAX_OFFSET_ACTIVATE] = a;
@@ -214,18 +199,6 @@ void line6_variax_process_message(struct usb_line6_variax *variax)
 					break;
 
 				case VARIAX_DUMP_PASS2:
-					/* model name is transmitted twice, so skip it here: */
-					variax_decode(buf +
-						      VARIAX_MODEL_HEADER_LENGTH,
-						      (unsigned char *)
-						      &variax->
-						      model_data.control +
-						      sizeof(variax->model_data.
-							     control)
-						      / 2,
-						      sizeof(variax->model_data.
-							     control)
-						      / 2 * 2);
 					line6_dump_request_async
 					    (&variax->dumpreq, &variax->line6,
 					     2, VARIAX_DUMP_PASS3);
diff --git a/drivers/staging/line6/variax.h b/drivers/staging/line6/variax.h
index f3d95fa..13d5680 100644
--- a/drivers/staging/line6/variax.h
+++ b/drivers/staging/line6/variax.h
@@ -44,21 +44,6 @@ enum {
 	VARIAX_DUMP_PASS3
 };
 
-/**
-	Binary Variax model dump
-*/
-struct variax_model {
-	/**
-		Header information (including program name).
-	*/
-	unsigned char name[18];
-
-	/**
-		Model parameters.
-	*/
-	unsigned char control[78 * 2];
-};
-
 struct usb_line6_variax {
 	/**
 		Generic Line6 USB data.
@@ -78,11 +63,6 @@ struct usb_line6_variax {
 	unsigned char *buffer_activate;
 
 	/**
-		Current model settings.
-	*/
-	struct variax_model model_data;
-
-	/**
 		Handler for device initializaton.
 	*/
 	struct work_struct startup_work;
-- 
1.8.0


^ permalink raw reply related	[flat|nested] 50+ messages in thread

* [PATCH 44/46] staging: line6: drop dump requests from variax startup
  2012-11-22 19:48 [PATCH 00/46] staging: line6: drop MIDI state sysfs attrs Stefan Hajnoczi
                   ` (42 preceding siblings ...)
  2012-11-22 19:49 ` [PATCH 43/46] staging: line6: drop variax model_data field Stefan Hajnoczi
@ 2012-11-22 19:49 ` Stefan Hajnoczi
  2012-11-22 19:49 ` [PATCH 45/46] staging: line6: drop dump requests from pod startup Stefan Hajnoczi
                   ` (2 subsequent siblings)
  46 siblings, 0 replies; 50+ messages in thread
From: Stefan Hajnoczi @ 2012-11-22 19:49 UTC (permalink / raw)
  To: devel
  Cc: Markus Grabner, Greg Kroah-Hartman, line6linux-devel,
	linux-kernel, laurent_navet, Stefan Hajnoczi

The variax startup procedure dumps model data.  This is no longer useful
since the sysfs attrs which expose this information to userspace have
been removed.  The dump request wasn't been processed anymore.

Signed-off-by: Stefan Hajnoczi <stefanha@gmail.com>
---
 drivers/staging/line6/variax.c | 106 ++---------------------------------------
 drivers/staging/line6/variax.h |  15 ------
 2 files changed, 4 insertions(+), 117 deletions(-)

diff --git a/drivers/staging/line6/variax.c b/drivers/staging/line6/variax.c
index 0262d7d..4fca58f 100644
--- a/drivers/staging/line6/variax.c
+++ b/drivers/staging/line6/variax.c
@@ -15,21 +15,10 @@
 #include "driver.h"
 #include "variax.h"
 
-#define VARIAX_MODEL_HEADER_LENGTH 7
-#define VARIAX_MODEL_MESSAGE_LENGTH 199
 #define VARIAX_OFFSET_ACTIVATE 7
 
 /*
 	This message is sent by the device during initialization and identifies
-	the connected guitar model.
-*/
-static const char variax_init_model[] = {
-	0xf0, 0x00, 0x01, 0x0c, 0x07, 0x00, 0x69, 0x02,
-	0x00
-};
-
-/*
-	This message is sent by the device during initialization and identifies
 	the connected guitar version.
 */
 static const char variax_init_version[] = {
@@ -49,22 +38,6 @@ static const char variax_activate[] = {
 	0xf7
 };
 
-static const char variax_request_bank[] = {
-	0xf0, 0x00, 0x01, 0x0c, 0x07, 0x00, 0x6d, 0xf7
-};
-
-static const char variax_request_model1[] = {
-	0xf0, 0x00, 0x01, 0x0c, 0x07, 0x00, 0x3c, 0x00,
-	0x02, 0x00, 0x00, 0x00, 0x00, 0x03, 0x05, 0x03,
-	0x00, 0x00, 0x00, 0xf7
-};
-
-static const char variax_request_model2[] = {
-	0xf0, 0x00, 0x01, 0x0c, 0x07, 0x00, 0x3c, 0x00,
-	0x02, 0x00, 0x00, 0x00, 0x00, 0x03, 0x07, 0x03,
-	0x00, 0x00, 0x00, 0xf7
-};
-
 /* forward declarations: */
 static void variax_startup2(unsigned long data);
 static void variax_startup4(unsigned long data);
@@ -135,26 +108,13 @@ static void variax_startup5(unsigned long data)
 {
 	struct usb_line6_variax *variax = (struct usb_line6_variax *)data;
 	CHECK_STARTUP_PROGRESS(variax->startup_progress,
-			       VARIAX_STARTUP_DUMPREQ);
-
-	/* 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.
-	 */
-}
-
-static void variax_startup6(struct usb_line6_variax *variax)
-{
-	CHECK_STARTUP_PROGRESS(variax->startup_progress,
 			       VARIAX_STARTUP_WORKQUEUE);
 
 	/* schedule work for global work queue: */
 	schedule_work(&variax->startup_work);
 }
 
-static void variax_startup7(struct work_struct *work)
+static void variax_startup6(struct work_struct *work)
 {
 	struct usb_line6_variax *variax =
 	    container_of(work, struct usb_line6_variax, startup_work);
@@ -178,8 +138,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:
-		line6_dump_request_async(&variax->dumpreq, &variax->line6, 0,
-					 VARIAX_DUMP_PASS1);
 		break;
 
 	case LINE6_RESET:
@@ -187,41 +145,14 @@ void line6_variax_process_message(struct usb_line6_variax *variax)
 		break;
 
 	case LINE6_SYSEX_BEGIN:
-		if (memcmp(buf + 1, variax_request_model1 + 1,
-			   VARIAX_MODEL_HEADER_LENGTH - 1) == 0) {
-			if (variax->line6.message_length ==
-			    VARIAX_MODEL_MESSAGE_LENGTH) {
-				switch (variax->dumpreq.in_progress) {
-				case VARIAX_DUMP_PASS1:
-					line6_dump_request_async
-					    (&variax->dumpreq, &variax->line6,
-					     1, VARIAX_DUMP_PASS2);
-					break;
-
-				case VARIAX_DUMP_PASS2:
-					line6_dump_request_async
-					    (&variax->dumpreq, &variax->line6,
-					     2, VARIAX_DUMP_PASS3);
-				}
-			} else {
-				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,
-				  sizeof(variax_request_bank) - 2) == 0) {
-			line6_dump_finished(&variax->dumpreq);
-			variax_startup6(variax);
-		} else if (memcmp(buf + 1, variax_init_version + 1,
-				  sizeof(variax_init_version) - 1) == 0) {
+		if (memcmp(buf + 1, variax_init_version + 1,
+			   sizeof(variax_init_version) - 1) == 0) {
 			variax_startup3(variax);
 		} else if (memcmp(buf + 1, variax_init_done + 1,
 				  sizeof(variax_init_done) - 1) == 0) {
 			/* notify of complete initialization: */
 			variax_startup4((unsigned long)variax);
 		}
-
 		break;
 
 	case LINE6_SYSEX_END:
@@ -248,11 +179,6 @@ static void variax_destruct(struct usb_interface *interface)
 	del_timer(&variax->startup_timer2);
 	cancel_work_sync(&variax->startup_work);
 
-	/* free dump request data: */
-	line6_dumpreq_destructbuf(&variax->dumpreq, 2);
-	line6_dumpreq_destructbuf(&variax->dumpreq, 1);
-	line6_dumpreq_destruct(&variax->dumpreq);
-
 	kfree(variax->buffer_activate);
 }
 
@@ -266,36 +192,12 @@ static int variax_try_init(struct usb_interface *interface,
 
 	init_timer(&variax->startup_timer1);
 	init_timer(&variax->startup_timer2);
-	INIT_WORK(&variax->startup_work, variax_startup7);
+	INIT_WORK(&variax->startup_work, variax_startup6);
 
 	if ((interface == NULL) || (variax == NULL))
 		return -ENODEV;
 
 	/* initialize USB buffers: */
-	err = line6_dumpreq_init(&variax->dumpreq, variax_request_model1,
-				 sizeof(variax_request_model1));
-
-	if (err < 0) {
-		dev_err(&interface->dev, "Out of memory\n");
-		return err;
-	}
-
-	err = line6_dumpreq_initbuf(&variax->dumpreq, variax_request_model2,
-				    sizeof(variax_request_model2), 1);
-
-	if (err < 0) {
-		dev_err(&interface->dev, "Out of memory\n");
-		return err;
-	}
-
-	err = line6_dumpreq_initbuf(&variax->dumpreq, variax_request_bank,
-				    sizeof(variax_request_bank), 2);
-
-	if (err < 0) {
-		dev_err(&interface->dev, "Out of memory\n");
-		return err;
-	}
-
 	variax->buffer_activate = kmemdup(variax_activate,
 					  sizeof(variax_activate), GFP_KERNEL);
 
diff --git a/drivers/staging/line6/variax.h b/drivers/staging/line6/variax.h
index 13d5680..24de796 100644
--- a/drivers/staging/line6/variax.h
+++ b/drivers/staging/line6/variax.h
@@ -18,7 +18,6 @@
 #include <sound/core.h>
 
 #include "driver.h"
-#include "dumprequest.h"
 
 #define VARIAX_STARTUP_DELAY1 1000
 #define VARIAX_STARTUP_DELAY3 100
@@ -32,18 +31,11 @@ enum {
 	VARIAX_STARTUP_VERSIONREQ,
 	VARIAX_STARTUP_WAIT,
 	VARIAX_STARTUP_ACTIVATE,
-	VARIAX_STARTUP_DUMPREQ,
 	VARIAX_STARTUP_WORKQUEUE,
 	VARIAX_STARTUP_SETUP,
 	VARIAX_STARTUP_LAST = VARIAX_STARTUP_SETUP - 1
 };
 
-enum {
-	VARIAX_DUMP_PASS1 = LINE6_DUMP_CURRENT,
-	VARIAX_DUMP_PASS2,
-	VARIAX_DUMP_PASS3
-};
-
 struct usb_line6_variax {
 	/**
 		Generic Line6 USB data.
@@ -51,13 +43,6 @@ struct usb_line6_variax {
 	struct usb_line6 line6;
 
 	/**
-		Dump request structure.
-		Append two extra buffers for 3-pass data query.
-	*/
-	struct line6_dump_request dumpreq;
-	struct line6_dump_reqbuf extrabuf[2];
-
-	/**
 		Buffer for activation code.
 	*/
 	unsigned char *buffer_activate;
-- 
1.8.0


^ permalink raw reply related	[flat|nested] 50+ messages in thread

* [PATCH 45/46] staging: line6: drop dump requests from pod startup
  2012-11-22 19:48 [PATCH 00/46] staging: line6: drop MIDI state sysfs attrs Stefan Hajnoczi
                   ` (43 preceding siblings ...)
  2012-11-22 19:49 ` [PATCH 44/46] staging: line6: drop dump requests from variax startup Stefan Hajnoczi
@ 2012-11-22 19:49 ` Stefan Hajnoczi
  2012-11-22 19:49 ` [PATCH 46/46] staging: line6: drop unused dumprequest code Stefan Hajnoczi
  2012-11-22 19:58 ` [PATCH 00/46] staging: line6: drop MIDI state sysfs attrs Greg Kroah-Hartman
  46 siblings, 0 replies; 50+ messages in thread
From: Stefan Hajnoczi @ 2012-11-22 19:49 UTC (permalink / raw)
  To: devel
  Cc: Markus Grabner, Greg Kroah-Hartman, line6linux-devel,
	linux-kernel, laurent_navet, Stefan Hajnoczi

The pod startup procedure dumps model data.  This is no longer useful
since the sysfs attrs which expose this information to userspace have
been removed.  The dump request wasn't been processed anymore.

Signed-off-by: Stefan Hajnoczi <stefanha@gmail.com>
---
 drivers/staging/line6/pod.c | 44 ++++----------------------------------------
 drivers/staging/line6/pod.h |  7 -------
 2 files changed, 4 insertions(+), 47 deletions(-)

diff --git a/drivers/staging/line6/pod.c b/drivers/staging/line6/pod.c
index f8257be..e542540 100644
--- a/drivers/staging/line6/pod.c
+++ b/drivers/staging/line6/pod.c
@@ -111,10 +111,6 @@ static struct line6_pcm_properties pod_pcm_properties = {
 	.bytes_per_frame = POD_BYTES_PER_FRAME
 };
 
-static const char pod_request_channel[] = {
-	0xf0, 0x00, 0x01, 0x0c, 0x03, 0x75, 0xf7
-};
-
 static const char pod_version_header[] = {
 	0xf2, 0x7e, 0x7f, 0x06, 0x02
 };
@@ -122,7 +118,6 @@ static const char pod_version_header[] = {
 /* forward declarations: */
 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);
 
 static char *pod_alloc_sysex_buffer(struct usb_line6_pod *pod, int code,
 				    int size)
@@ -157,8 +152,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:
-		line6_dump_request_async(&pod->dumpreq, &pod->line6, 0,
-					 LINE6_DUMP_CURRENT);
 		break;
 
 	case LINE6_SYSEX_BEGIN | LINE6_CHANNEL_DEVICE:
@@ -166,8 +159,6 @@ void line6_pod_process_message(struct usb_line6_pod *pod)
 		if (memcmp(buf + 1, line6_midi_id, sizeof(line6_midi_id)) == 0) {
 			switch (buf[5]) {
 			case POD_SYSEX_DUMP:
-				line6_dump_finished(&pod->dumpreq);
-				pod_startup3(pod);
 				break;
 
 			case POD_SYSEX_SYSTEM:{
@@ -208,7 +199,7 @@ void line6_pod_process_message(struct usb_line6_pod *pod)
 			pod->device_id =
 			    ((int)buf[8] << 16) | ((int)buf[9] << 8) | (int)
 			    buf[10];
-			pod_startup4(pod);
+			pod_startup3(pod);
 		} else
 			dev_dbg(pod->line6.ifcdev, "unknown sysex header\n");
 
@@ -308,22 +299,6 @@ static void pod_startup1(struct usb_line6_pod *pod)
 static void pod_startup2(unsigned long data)
 {
 	struct usb_line6_pod *pod = (struct usb_line6_pod *)data;
-
-	/* schedule another startup procedure until startup is complete: */
-	if (pod->startup_progress >= POD_STARTUP_LAST)
-		return;
-
-	pod->startup_progress = POD_STARTUP_DUMPREQ;
-	line6_start_timer(&pod->startup_timer, POD_STARTUP_DELAY, pod_startup2,
-			  (unsigned long)pod);
-
-	/* current channel dump: */
-	line6_dump_request_async(&pod->dumpreq, &pod->line6, 0,
-				 LINE6_DUMP_CURRENT);
-}
-
-static void pod_startup3(struct usb_line6_pod *pod)
-{
 	struct usb_line6 *line6 = &pod->line6;
 	CHECK_STARTUP_PROGRESS(pod->startup_progress, POD_STARTUP_VERSIONREQ);
 
@@ -331,7 +306,7 @@ static void pod_startup3(struct usb_line6_pod *pod)
 	line6_version_request_async(line6);
 }
 
-static void pod_startup4(struct usb_line6_pod *pod)
+static void pod_startup3(struct usb_line6_pod *pod)
 {
 	CHECK_STARTUP_PROGRESS(pod->startup_progress, POD_STARTUP_WORKQUEUE);
 
@@ -339,7 +314,7 @@ static void pod_startup4(struct usb_line6_pod *pod)
 	schedule_work(&pod->startup_work);
 }
 
-static void pod_startup5(struct work_struct *work)
+static void pod_startup4(struct work_struct *work)
 {
 	struct usb_line6_pod *pod =
 	    container_of(work, struct usb_line6_pod, startup_work);
@@ -422,9 +397,6 @@ static void pod_destruct(struct usb_interface *interface)
 
 	del_timer(&pod->startup_timer);
 	cancel_work_sync(&pod->startup_work);
-
-	/* free dump request data: */
-	line6_dumpreq_destruct(&pod->dumpreq);
 }
 
 /*
@@ -450,19 +422,11 @@ static int pod_try_init(struct usb_interface *interface,
 	struct usb_line6 *line6 = &pod->line6;
 
 	init_timer(&pod->startup_timer);
-	INIT_WORK(&pod->startup_work, pod_startup5);
+	INIT_WORK(&pod->startup_work, pod_startup4);
 
 	if ((interface == NULL) || (pod == NULL))
 		return -ENODEV;
 
-	/* initialize USB buffers: */
-	err = line6_dumpreq_init(&pod->dumpreq, pod_request_channel,
-				 sizeof(pod_request_channel));
-	if (err < 0) {
-		dev_err(&interface->dev, "Out of memory\n");
-		return -ENOMEM;
-	}
-
 	/* create sysfs entries: */
 	err = pod_create_files2(&interface->dev);
 	if (err < 0)
diff --git a/drivers/staging/line6/pod.h b/drivers/staging/line6/pod.h
index 843eb4e..3e3f167 100644
--- a/drivers/staging/line6/pod.h
+++ b/drivers/staging/line6/pod.h
@@ -19,7 +19,6 @@
 #include <sound/core.h>
 
 #include "driver.h"
-#include "dumprequest.h"
 
 /*
 	PODxt Live interfaces
@@ -45,7 +44,6 @@
 */
 enum {
 	POD_STARTUP_INIT = 1,
-	POD_STARTUP_DUMPREQ,
 	POD_STARTUP_VERSIONREQ,
 	POD_STARTUP_WORKQUEUE,
 	POD_STARTUP_SETUP,
@@ -59,11 +57,6 @@ struct usb_line6_pod {
 	struct usb_line6 line6;
 
 	/**
-		Dump request structure.
-	*/
-	struct line6_dump_request dumpreq;
-
-	/**
 		Instrument monitor level.
 	*/
 	int monitor_level;
-- 
1.8.0


^ permalink raw reply related	[flat|nested] 50+ messages in thread

* [PATCH 46/46] staging: line6: drop unused dumprequest code
  2012-11-22 19:48 [PATCH 00/46] staging: line6: drop MIDI state sysfs attrs Stefan Hajnoczi
                   ` (44 preceding siblings ...)
  2012-11-22 19:49 ` [PATCH 45/46] staging: line6: drop dump requests from pod startup Stefan Hajnoczi
@ 2012-11-22 19:49 ` Stefan Hajnoczi
  2012-11-22 19:58 ` [PATCH 00/46] staging: line6: drop MIDI state sysfs attrs Greg Kroah-Hartman
  46 siblings, 0 replies; 50+ messages in thread
From: Stefan Hajnoczi @ 2012-11-22 19:49 UTC (permalink / raw)
  To: devel
  Cc: Markus Grabner, Greg Kroah-Hartman, line6linux-devel,
	linux-kernel, laurent_navet, Stefan Hajnoczi

The line6 drive no longer requests MIDI dumps from the device so
dumprequest.c is not needed.

Signed-off-by: Stefan Hajnoczi <stefanha@gmail.com>
---
 drivers/staging/line6/Makefile      |   1 -
 drivers/staging/line6/dumprequest.c | 135 ------------------------------------
 drivers/staging/line6/dumprequest.h |  76 --------------------
 3 files changed, 212 deletions(-)
 delete mode 100644 drivers/staging/line6/dumprequest.c
 delete mode 100644 drivers/staging/line6/dumprequest.h

diff --git a/drivers/staging/line6/Makefile b/drivers/staging/line6/Makefile
index 44ee5ae..ae5c374 100644
--- a/drivers/staging/line6/Makefile
+++ b/drivers/staging/line6/Makefile
@@ -4,7 +4,6 @@ line6usb-y := 		\
 		audio.o		\
 		capture.o	\
 		driver.o	\
-		dumprequest.o	\
 		midi.o		\
 		midibuf.o	\
 		pcm.o		\
diff --git a/drivers/staging/line6/dumprequest.c b/drivers/staging/line6/dumprequest.c
deleted file mode 100644
index 60c7bae..0000000
--- a/drivers/staging/line6/dumprequest.c
+++ /dev/null
@@ -1,135 +0,0 @@
-/*
- * Line6 Linux USB driver - 0.9.1beta
- *
- * Copyright (C) 2004-2010 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.
- *
- */
-
-#include <linux/slab.h>
-
-#include "driver.h"
-#include "dumprequest.h"
-
-/*
-	Set "dump in progress" flag.
-*/
-void line6_dump_started(struct line6_dump_request *l6dr, int dest)
-{
-	l6dr->in_progress = dest;
-}
-
-/*
-	Invalidate current channel, i.e., set "dump in progress" flag.
-	Reading from the "dump" special file blocks until dump is completed.
-*/
-void line6_invalidate_current(struct line6_dump_request *l6dr)
-{
-	line6_dump_started(l6dr, LINE6_DUMP_CURRENT);
-}
-
-/*
-	Clear "dump in progress" flag and notify waiting processes.
-*/
-void line6_dump_finished(struct line6_dump_request *l6dr)
-{
-	l6dr->in_progress = LINE6_DUMP_NONE;
-	wake_up(&l6dr->wait);
-}
-
-/*
-	Send an asynchronous channel dump request.
-*/
-int line6_dump_request_async(struct line6_dump_request *l6dr,
-			     struct usb_line6 *line6, int num, int dest)
-{
-	int ret;
-	line6_dump_started(l6dr, dest);
-	ret = line6_send_raw_message_async(line6, l6dr->reqbufs[num].buffer,
-					   l6dr->reqbufs[num].length);
-
-	if (ret < 0)
-		line6_dump_finished(l6dr);
-
-	return ret;
-}
-
-/*
-	Wait for completion (interruptible).
-*/
-int line6_dump_wait_interruptible(struct line6_dump_request *l6dr)
-{
-	return wait_event_interruptible(l6dr->wait,
-					l6dr->in_progress == LINE6_DUMP_NONE);
-}
-
-/*
-	Wait for completion.
-*/
-void line6_dump_wait(struct line6_dump_request *l6dr)
-{
-	wait_event(l6dr->wait, l6dr->in_progress == LINE6_DUMP_NONE);
-}
-
-/*
-	Wait for completion (with timeout).
-*/
-int line6_dump_wait_timeout(struct line6_dump_request *l6dr, long timeout)
-{
-	return wait_event_timeout(l6dr->wait,
-				  l6dr->in_progress == LINE6_DUMP_NONE,
-				  timeout);
-}
-
-/*
-	Initialize dump request buffer.
-*/
-int line6_dumpreq_initbuf(struct line6_dump_request *l6dr, const void *buf,
-			  size_t len, int num)
-{
-	l6dr->reqbufs[num].buffer = kmemdup(buf, len, GFP_KERNEL);
-	if (l6dr->reqbufs[num].buffer == NULL)
-		return -ENOMEM;
-	l6dr->reqbufs[num].length = len;
-	return 0;
-}
-
-/*
-	Initialize dump request data structure (including one buffer).
-*/
-int line6_dumpreq_init(struct line6_dump_request *l6dr, const void *buf,
-		       size_t len)
-{
-	int ret;
-	ret = line6_dumpreq_initbuf(l6dr, buf, len, 0);
-	if (ret < 0)
-		return ret;
-	init_waitqueue_head(&l6dr->wait);
-	return 0;
-}
-
-/*
-	Destruct dump request data structure.
-*/
-void line6_dumpreq_destructbuf(struct line6_dump_request *l6dr, int num)
-{
-	if (l6dr == NULL)
-		return;
-	if (l6dr->reqbufs[num].buffer == NULL)
-		return;
-	kfree(l6dr->reqbufs[num].buffer);
-	l6dr->reqbufs[num].buffer = NULL;
-}
-
-/*
-	Destruct dump request data structure.
-*/
-void line6_dumpreq_destruct(struct line6_dump_request *l6dr)
-{
-	if (l6dr->reqbufs[0].buffer == NULL)
-		return;
-	line6_dumpreq_destructbuf(l6dr, 0);
-}
diff --git a/drivers/staging/line6/dumprequest.h b/drivers/staging/line6/dumprequest.h
deleted file mode 100644
index c17a262..0000000
--- a/drivers/staging/line6/dumprequest.h
+++ /dev/null
@@ -1,76 +0,0 @@
-/*
- * Line6 Linux USB driver - 0.9.1beta
- *
- * Copyright (C) 2004-2010 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 DUMPREQUEST_H
-#define DUMPREQUEST_H
-
-#include <linux/usb.h>
-#include <linux/wait.h>
-#include <sound/core.h>
-
-enum {
-	LINE6_DUMP_NONE,
-	LINE6_DUMP_CURRENT
-};
-
-struct line6_dump_reqbuf {
-	/**
-		 Buffer for dump requests.
-	*/
-	unsigned char *buffer;
-
-	/**
-		 Size of dump request.
-	*/
-	size_t length;
-};
-
-/**
-	 Provides the functionality to request channel/model/... dump data from a
-	 Line6 device.
-*/
-struct line6_dump_request {
-	/**
-		 Wait queue for access to program dump data.
-	*/
-	wait_queue_head_t wait;
-
-	/**
-		 Indicates an unfinished program dump request.
-		 0: no dump
-		 1: dump current settings
-		 Other device-specific values are also allowed.
-	*/
-	int in_progress;
-
-	/**
-		 Dump request buffers
-	*/
-	struct line6_dump_reqbuf reqbufs[1];
-};
-
-extern void line6_dump_finished(struct line6_dump_request *l6dr);
-extern int line6_dump_request_async(struct line6_dump_request *l6dr,
-				    struct usb_line6 *line6, int num, int dest);
-extern void line6_dump_started(struct line6_dump_request *l6dr, int dest);
-extern void line6_dumpreq_destruct(struct line6_dump_request *l6dr);
-extern void line6_dumpreq_destructbuf(struct line6_dump_request *l6dr, int num);
-extern int line6_dumpreq_init(struct line6_dump_request *l6dr, const void *buf,
-			      size_t len);
-extern int line6_dumpreq_initbuf(struct line6_dump_request *l6dr,
-				 const void *buf, size_t len, int num);
-extern void line6_invalidate_current(struct line6_dump_request *l6dr);
-extern void line6_dump_wait(struct line6_dump_request *l6dr);
-extern int line6_dump_wait_interruptible(struct line6_dump_request *l6dr);
-extern int line6_dump_wait_timeout(struct line6_dump_request *l6dr,
-				   long timeout);
-
-#endif
-- 
1.8.0


^ permalink raw reply related	[flat|nested] 50+ messages in thread

* Re: [PATCH 00/46] staging: line6: drop MIDI state sysfs attrs
  2012-11-22 19:48 [PATCH 00/46] staging: line6: drop MIDI state sysfs attrs Stefan Hajnoczi
                   ` (45 preceding siblings ...)
  2012-11-22 19:49 ` [PATCH 46/46] staging: line6: drop unused dumprequest code Stefan Hajnoczi
@ 2012-11-22 19:58 ` Greg Kroah-Hartman
  2012-11-22 20:08   ` Stefan Hajnoczi
  46 siblings, 1 reply; 50+ messages in thread
From: Greg Kroah-Hartman @ 2012-11-22 19:58 UTC (permalink / raw)
  To: Stefan Hajnoczi
  Cc: devel, Markus Grabner, line6linux-devel, linux-kernel, laurent_navet

On Thu, Nov 22, 2012 at 08:48:39PM +0100, Stefan Hajnoczi wrote:
> Let's put the line6 staging driver on a diet for Thanksgiving! :)

Yeah!

> Markus and I have discussed the MIDI processing that currently happens in the
> line6 driver.  This stuff really belongs in userspace where a library or
> utility can use ALSA MIDI APIs to control the device.  Moving MIDI processing
> to userspace has several benefits:
> 
> 1. The driver only handles PCM and MIDI I/O.  This means less kernel code.
> 
> 2. A large number of sysfs attributes can be removed.  These attributes exposed
>    MIDI state and driver code was necessary to sync and manage this state.
> 
> 3. It's easier for userspace to control the device, try out new MIDI commands,
>    etc when the driver acts as a dumb transport.
> 
> This patch series removes the sysfs attributes and then removes the state
> behind those attributes.  I have tried to make small incremental changes that
> can be reviewed easily.

Very nice, I'll queue these up on Monday, very good work, thanks so much
for doing this.

>  drivers/staging/line6/Kconfig       |  11 -
>  drivers/staging/line6/Makefile      |   2 -
>  drivers/staging/line6/control.c     | 995 ------------------------------------
>  drivers/staging/line6/control.h     | 195 -------
>  drivers/staging/line6/driver.c      |  20 -
>  drivers/staging/line6/dumprequest.c | 135 -----
>  drivers/staging/line6/dumprequest.h |  76 ---
>  drivers/staging/line6/midi.c        | 120 -----
>  drivers/staging/line6/midi.h        |  10 -
>  drivers/staging/line6/pod.c         | 846 +-----------------------------
>  drivers/staging/line6/pod.h         | 105 +---
>  drivers/staging/line6/variax.c      | 480 +----------------
>  drivers/staging/line6/variax.h      |  60 ---
>  13 files changed, 16 insertions(+), 3039 deletions(-)
>  delete mode 100644 drivers/staging/line6/control.c
>  delete mode 100644 drivers/staging/line6/control.h
>  delete mode 100644 drivers/staging/line6/dumprequest.c
>  delete mode 100644 drivers/staging/line6/dumprequest.h

I like seeing diffstats like that :)

greg k-h

^ permalink raw reply	[flat|nested] 50+ messages in thread

* Re: [PATCH 00/46] staging: line6: drop MIDI state sysfs attrs
  2012-11-22 19:58 ` [PATCH 00/46] staging: line6: drop MIDI state sysfs attrs Greg Kroah-Hartman
@ 2012-11-22 20:08   ` Stefan Hajnoczi
  2012-11-24  0:13     ` Markus Grabner
  0 siblings, 1 reply; 50+ messages in thread
From: Stefan Hajnoczi @ 2012-11-22 20:08 UTC (permalink / raw)
  To: Greg Kroah-Hartman
  Cc: devel, Markus Grabner, line6linux-devel, linux-kernel, Laurent Navet

On Thu, Nov 22, 2012 at 8:58 PM, Greg Kroah-Hartman
<gregkh@linuxfoundation.org> wrote:
> On Thu, Nov 22, 2012 at 08:48:39PM +0100, Stefan Hajnoczi wrote:
>> Markus and I have discussed the MIDI processing that currently happens in the
>> line6 driver.  This stuff really belongs in userspace where a library or
>> utility can use ALSA MIDI APIs to control the device.  Moving MIDI processing
>> to userspace has several benefits:
>>
>> 1. The driver only handles PCM and MIDI I/O.  This means less kernel code.
>>
>> 2. A large number of sysfs attributes can be removed.  These attributes exposed
>>    MIDI state and driver code was necessary to sync and manage this state.
>>
>> 3. It's easier for userspace to control the device, try out new MIDI commands,
>>    etc when the driver acts as a dumb transport.
>>
>> This patch series removes the sysfs attributes and then removes the state
>> behind those attributes.  I have tried to make small incremental changes that
>> can be reviewed easily.
>
> Very nice, I'll queue these up on Monday, very good work, thanks so much
> for doing this.

Thanks!  I hope Markus has a chance to review and/or test these
changes first - he knows generally what I'm up too but should have the
final word on details.

Stefan

^ permalink raw reply	[flat|nested] 50+ messages in thread

* Re: [PATCH 00/46] staging: line6: drop MIDI state sysfs attrs
  2012-11-22 20:08   ` Stefan Hajnoczi
@ 2012-11-24  0:13     ` Markus Grabner
  0 siblings, 0 replies; 50+ messages in thread
From: Markus Grabner @ 2012-11-24  0:13 UTC (permalink / raw)
  To: Stefan Hajnoczi
  Cc: Greg Kroah-Hartman, devel, line6linux-devel, linux-kernel, Laurent Navet

Am Donnerstag, 22. November 2012, 21:08:55 schrieb Stefan Hajnoczi:
> On Thu, Nov 22, 2012 at 8:58 PM, Greg Kroah-Hartman
> 
> <gregkh@linuxfoundation.org> wrote:
> > On Thu, Nov 22, 2012 at 08:48:39PM +0100, Stefan Hajnoczi wrote:
> >> Markus and I have discussed the MIDI processing that currently happens in
> >> the line6 driver.  This stuff really belongs in userspace where a
> >> library or utility can use ALSA MIDI APIs to control the device.  Moving
> >> MIDI processing to userspace has several benefits:
> >> 
> >> 1. The driver only handles PCM and MIDI I/O.  This means less kernel
> >> code.
> >> 
> >> 2. A large number of sysfs attributes can be removed.  These attributes
> >> exposed>> 
> >>    MIDI state and driver code was necessary to sync and manage this
> >>    state.
> >> 
> >> 3. It's easier for userspace to control the device, try out new MIDI
> >> commands,>> 
> >>    etc when the driver acts as a dumb transport.
> >> 
> >> This patch series removes the sysfs attributes and then removes the state
> >> behind those attributes.  I have tried to make small incremental changes
> >> that can be reviewed easily.
> > 
> > Very nice, I'll queue these up on Monday, very good work, thanks so much
> > for doing this.
> 
> Thanks!  I hope Markus has a chance to review and/or test these
> changes first - he knows generally what I'm up too but should have the
> final word on details.
I just applied all patches and did a quick check with the PODxt Live. The 
following features are still working:
*) the user space code which receives and interprets (at least some) MIDI 
messages from the device
*) ALSA playback
*) ALSA volume and monitor controls

I will have a look at the Variax and TonePort later.

	Kind regards,
		Markus


^ permalink raw reply	[flat|nested] 50+ messages in thread

end of thread, other threads:[~2012-11-24  0:14 UTC | newest]

Thread overview: 50+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2012-11-22 19:48 [PATCH 00/46] staging: line6: drop MIDI state sysfs attrs Stefan Hajnoczi
2012-11-22 19:48 ` [PATCH 01/46] staging: line6: drop channel sysfs attr Stefan Hajnoczi
2012-11-22 19:48 ` [PATCH 02/46] staging: line6: drop clip " Stefan Hajnoczi
2012-11-22 19:48 ` [PATCH 03/46] staging: line6: drop unused param_dirty bitmap Stefan Hajnoczi
2012-11-22 19:48 ` [PATCH 04/46] staging: line6: drop dirty sysfs attr Stefan Hajnoczi
2012-11-22 19:48 ` [PATCH 05/46] staging: line6: drop dump " Stefan Hajnoczi
2012-11-22 19:48 ` [PATCH 06/46] staging: line6: drop dump_buf " Stefan Hajnoczi
2012-11-22 19:48 ` [PATCH 07/46] staging: line6: drop monitor_level " Stefan Hajnoczi
2012-11-22 19:48 ` [PATCH 08/46] staging: line6: change monitor_level type ValueWait -> int Stefan Hajnoczi
2012-11-22 19:48 ` [PATCH 09/46] staging: line6: drop name sysfs attr Stefan Hajnoczi
2012-11-22 19:48 ` [PATCH 10/46] staging: line6: drop name_buf " Stefan Hajnoczi
2012-11-22 19:48 ` [PATCH 11/46] staging: line6: drop retrieve_amp_setup " Stefan Hajnoczi
2012-11-22 19:48 ` [PATCH 12/46] staging: line6: drop retrieve_channel " Stefan Hajnoczi
2012-11-22 19:48 ` [PATCH 13/46] staging: line6: drop retrieve_effects_setup " Stefan Hajnoczi
2012-11-22 19:48 ` [PATCH 14/46] staging: line6: drop store_amp_setup " Stefan Hajnoczi
2012-11-22 19:48 ` [PATCH 15/46] staging: line6: drop store_channel " Stefan Hajnoczi
2012-11-22 19:48 ` [PATCH 16/46] staging: line6: drop store_effects_setup " Stefan Hajnoczi
2012-11-22 19:48 ` [PATCH 17/46] staging: line6: drop routing " Stefan Hajnoczi
2012-11-22 19:48 ` [PATCH 18/46] staging: line6: drop tuner_freq " Stefan Hajnoczi
2012-11-22 19:48 ` [PATCH 19/46] staging: line6: drop tuner_note " Stefan Hajnoczi
2012-11-22 19:48 ` [PATCH 20/46] staging: line6: drop tuner_mute " Stefan Hajnoczi
2012-11-22 19:49 ` [PATCH 21/46] staging: line6: drop tuner_pitch " Stefan Hajnoczi
2012-11-22 19:49 ` [PATCH 22/46] staging: line6: drop finish " Stefan Hajnoczi
2012-11-22 19:49 ` [PATCH 23/46] staging: line6: drop midi_postprocess " Stefan Hajnoczi
2012-11-22 19:49 ` [PATCH 24/46] staging: line6: drop midi_mask_receive Stefan Hajnoczi
2012-11-22 19:49 ` [PATCH 25/46] staging: line6: drop midi_mask_transmit Stefan Hajnoczi
2012-11-22 19:49 ` [PATCH 26/46] staging: line6: drop midi_postprocess flag Stefan Hajnoczi
2012-11-22 19:49 ` [PATCH 27/46] staging: line6: drop pod.c raw sysfs attr Stefan Hajnoczi
2012-11-22 19:49 ` [PATCH 28/46] staging: line6: drop tuner param filtering Stefan Hajnoczi
2012-11-22 19:49 ` [PATCH 29/46] staging: line6: drop variax model sysfs attr Stefan Hajnoczi
2012-11-22 19:49 ` [PATCH 30/46] staging: line6: drop variax volume " Stefan Hajnoczi
2012-11-22 19:49 ` [PATCH 31/46] staging: line6: drop variax tone " Stefan Hajnoczi
2012-11-22 19:49 ` [PATCH 32/46] staging: line6: drop variax name " Stefan Hajnoczi
2012-11-22 19:49 ` [PATCH 33/46] staging: line6: drop variax bank " Stefan Hajnoczi
2012-11-22 19:49 ` [PATCH 34/46] staging: line6: drop variax dump " Stefan Hajnoczi
2012-11-22 19:49 ` [PATCH 35/46] staging: line6: drop variax active " Stefan Hajnoczi
2012-11-22 19:49 ` [PATCH 36/46] staging: line6: drop variax guitar " Stefan Hajnoczi
2012-11-22 19:49 ` [PATCH 37/46] staging: line6: drop variax raw sysfs attrs Stefan Hajnoczi
2012-11-22 19:49 ` [PATCH 38/46] staging: line6: drop CONFIG_LINE6_USB_RAW Stefan Hajnoczi
2012-11-22 19:49 ` [PATCH 39/46] staging: line6: drop amp/effects dump request triggers Stefan Hajnoczi
2012-11-22 19:49 ` [PATCH 40/46] staging: line6: drop MIDI parameter sysfs attrs Stefan Hajnoczi
2012-11-22 19:49 ` [PATCH 41/46] staging: line6: drop pod prog_data buffers Stefan Hajnoczi
2012-11-22 19:49 ` [PATCH 42/46] staging: line6: drop unused pod atomic_flags field Stefan Hajnoczi
2012-11-22 19:49 ` [PATCH 43/46] staging: line6: drop variax model_data field Stefan Hajnoczi
2012-11-22 19:49 ` [PATCH 44/46] staging: line6: drop dump requests from variax startup Stefan Hajnoczi
2012-11-22 19:49 ` [PATCH 45/46] staging: line6: drop dump requests from pod startup Stefan Hajnoczi
2012-11-22 19:49 ` [PATCH 46/46] staging: line6: drop unused dumprequest code Stefan Hajnoczi
2012-11-22 19:58 ` [PATCH 00/46] staging: line6: drop MIDI state sysfs attrs Greg Kroah-Hartman
2012-11-22 20:08   ` Stefan Hajnoczi
2012-11-24  0:13     ` Markus Grabner

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).