aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorStefan Hajnoczi <stefanha@gmail.com>2012-11-22 14:49:23 -0500
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2012-11-26 19:13:51 -0500
commit323246b2514f80e305399084f12792cc074c2d2d (patch)
tree36eefc1e48eca76e8df2aede6459b656c4225f9f
parent81804c54db877b78b12bd1cf4f4e0f7bf6c86d72 (diff)
staging: line6: drop dump requests from variax startup
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> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
-rw-r--r--drivers/staging/line6/variax.c106
-rw-r--r--drivers/staging/line6/variax.h15
2 files changed, 4 insertions, 117 deletions
diff --git a/drivers/staging/line6/variax.c b/drivers/staging/line6/variax.c
index 0262d7def73..4fca58f1124 100644
--- a/drivers/staging/line6/variax.c
+++ b/drivers/staging/line6/variax.c
@@ -15,21 +15,10 @@
15#include "driver.h" 15#include "driver.h"
16#include "variax.h" 16#include "variax.h"
17 17
18#define VARIAX_MODEL_HEADER_LENGTH 7
19#define VARIAX_MODEL_MESSAGE_LENGTH 199
20#define VARIAX_OFFSET_ACTIVATE 7 18#define VARIAX_OFFSET_ACTIVATE 7
21 19
22/* 20/*
23 This message is sent by the device during initialization and identifies 21 This message is sent by the device during initialization and identifies
24 the connected guitar model.
25*/
26static const char variax_init_model[] = {
27 0xf0, 0x00, 0x01, 0x0c, 0x07, 0x00, 0x69, 0x02,
28 0x00
29};
30
31/*
32 This message is sent by the device during initialization and identifies
33 the connected guitar version. 22 the connected guitar version.
34*/ 23*/
35static const char variax_init_version[] = { 24static const char variax_init_version[] = {
@@ -49,22 +38,6 @@ static const char variax_activate[] = {
49 0xf7 38 0xf7
50}; 39};
51 40
52static const char variax_request_bank[] = {
53 0xf0, 0x00, 0x01, 0x0c, 0x07, 0x00, 0x6d, 0xf7
54};
55
56static const char variax_request_model1[] = {
57 0xf0, 0x00, 0x01, 0x0c, 0x07, 0x00, 0x3c, 0x00,
58 0x02, 0x00, 0x00, 0x00, 0x00, 0x03, 0x05, 0x03,
59 0x00, 0x00, 0x00, 0xf7
60};
61
62static const char variax_request_model2[] = {
63 0xf0, 0x00, 0x01, 0x0c, 0x07, 0x00, 0x3c, 0x00,
64 0x02, 0x00, 0x00, 0x00, 0x00, 0x03, 0x07, 0x03,
65 0x00, 0x00, 0x00, 0xf7
66};
67
68/* forward declarations: */ 41/* forward declarations: */
69static void variax_startup2(unsigned long data); 42static void variax_startup2(unsigned long data);
70static void variax_startup4(unsigned long data); 43static void variax_startup4(unsigned long data);
@@ -135,26 +108,13 @@ static void variax_startup5(unsigned long data)
135{ 108{
136 struct usb_line6_variax *variax = (struct usb_line6_variax *)data; 109 struct usb_line6_variax *variax = (struct usb_line6_variax *)data;
137 CHECK_STARTUP_PROGRESS(variax->startup_progress, 110 CHECK_STARTUP_PROGRESS(variax->startup_progress,
138 VARIAX_STARTUP_DUMPREQ);
139
140 /* current model dump: */
141 line6_dump_request_async(&variax->dumpreq, &variax->line6, 0,
142 VARIAX_DUMP_PASS1);
143 /* passes 2 and 3 are performed implicitly before entering
144 * variax_startup6.
145 */
146}
147
148static void variax_startup6(struct usb_line6_variax *variax)
149{
150 CHECK_STARTUP_PROGRESS(variax->startup_progress,
151 VARIAX_STARTUP_WORKQUEUE); 111 VARIAX_STARTUP_WORKQUEUE);
152 112
153 /* schedule work for global work queue: */ 113 /* schedule work for global work queue: */
154 schedule_work(&variax->startup_work); 114 schedule_work(&variax->startup_work);
155} 115}
156 116
157static void variax_startup7(struct work_struct *work) 117static void variax_startup6(struct work_struct *work)
158{ 118{
159 struct usb_line6_variax *variax = 119 struct usb_line6_variax *variax =
160 container_of(work, struct usb_line6_variax, startup_work); 120 container_of(work, struct usb_line6_variax, startup_work);
@@ -178,8 +138,6 @@ void line6_variax_process_message(struct usb_line6_variax *variax)
178 138
179 case LINE6_PROGRAM_CHANGE | LINE6_CHANNEL_DEVICE: 139 case LINE6_PROGRAM_CHANGE | LINE6_CHANNEL_DEVICE:
180 case LINE6_PROGRAM_CHANGE | LINE6_CHANNEL_HOST: 140 case LINE6_PROGRAM_CHANGE | LINE6_CHANNEL_HOST:
181 line6_dump_request_async(&variax->dumpreq, &variax->line6, 0,
182 VARIAX_DUMP_PASS1);
183 break; 141 break;
184 142
185 case LINE6_RESET: 143 case LINE6_RESET:
@@ -187,41 +145,14 @@ void line6_variax_process_message(struct usb_line6_variax *variax)
187 break; 145 break;
188 146
189 case LINE6_SYSEX_BEGIN: 147 case LINE6_SYSEX_BEGIN:
190 if (memcmp(buf + 1, variax_request_model1 + 1, 148 if (memcmp(buf + 1, variax_init_version + 1,
191 VARIAX_MODEL_HEADER_LENGTH - 1) == 0) { 149 sizeof(variax_init_version) - 1) == 0) {
192 if (variax->line6.message_length ==
193 VARIAX_MODEL_MESSAGE_LENGTH) {
194 switch (variax->dumpreq.in_progress) {
195 case VARIAX_DUMP_PASS1:
196 line6_dump_request_async
197 (&variax->dumpreq, &variax->line6,
198 1, VARIAX_DUMP_PASS2);
199 break;
200
201 case VARIAX_DUMP_PASS2:
202 line6_dump_request_async
203 (&variax->dumpreq, &variax->line6,
204 2, VARIAX_DUMP_PASS3);
205 }
206 } else {
207 dev_dbg(variax->line6.ifcdev,
208 "illegal length %d of model data\n",
209 variax->line6.message_length);
210 line6_dump_finished(&variax->dumpreq);
211 }
212 } else if (memcmp(buf + 1, variax_request_bank + 1,
213 sizeof(variax_request_bank) - 2) == 0) {
214 line6_dump_finished(&variax->dumpreq);
215 variax_startup6(variax);
216 } else if (memcmp(buf + 1, variax_init_version + 1,
217 sizeof(variax_init_version) - 1) == 0) {
218 variax_startup3(variax); 150 variax_startup3(variax);
219 } else if (memcmp(buf + 1, variax_init_done + 1, 151 } else if (memcmp(buf + 1, variax_init_done + 1,
220 sizeof(variax_init_done) - 1) == 0) { 152 sizeof(variax_init_done) - 1) == 0) {
221 /* notify of complete initialization: */ 153 /* notify of complete initialization: */
222 variax_startup4((unsigned long)variax); 154 variax_startup4((unsigned long)variax);
223 } 155 }
224
225 break; 156 break;
226 157
227 case LINE6_SYSEX_END: 158 case LINE6_SYSEX_END:
@@ -248,11 +179,6 @@ static void variax_destruct(struct usb_interface *interface)
248 del_timer(&variax->startup_timer2); 179 del_timer(&variax->startup_timer2);
249 cancel_work_sync(&variax->startup_work); 180 cancel_work_sync(&variax->startup_work);
250 181
251 /* free dump request data: */
252 line6_dumpreq_destructbuf(&variax->dumpreq, 2);
253 line6_dumpreq_destructbuf(&variax->dumpreq, 1);
254 line6_dumpreq_destruct(&variax->dumpreq);
255
256 kfree(variax->buffer_activate); 182 kfree(variax->buffer_activate);
257} 183}
258 184
@@ -266,36 +192,12 @@ static int variax_try_init(struct usb_interface *interface,
266 192
267 init_timer(&variax->startup_timer1); 193 init_timer(&variax->startup_timer1);
268 init_timer(&variax->startup_timer2); 194 init_timer(&variax->startup_timer2);
269 INIT_WORK(&variax->startup_work, variax_startup7); 195 INIT_WORK(&variax->startup_work, variax_startup6);
270 196
271 if ((interface == NULL) || (variax == NULL)) 197 if ((interface == NULL) || (variax == NULL))
272 return -ENODEV; 198 return -ENODEV;
273 199
274 /* initialize USB buffers: */ 200 /* initialize USB buffers: */
275 err = line6_dumpreq_init(&variax->dumpreq, variax_request_model1,
276 sizeof(variax_request_model1));
277
278 if (err < 0) {
279 dev_err(&interface->dev, "Out of memory\n");
280 return err;
281 }
282
283 err = line6_dumpreq_initbuf(&variax->dumpreq, variax_request_model2,
284 sizeof(variax_request_model2), 1);
285
286 if (err < 0) {
287 dev_err(&interface->dev, "Out of memory\n");
288 return err;
289 }
290
291 err = line6_dumpreq_initbuf(&variax->dumpreq, variax_request_bank,
292 sizeof(variax_request_bank), 2);
293
294 if (err < 0) {
295 dev_err(&interface->dev, "Out of memory\n");
296 return err;
297 }
298
299 variax->buffer_activate = kmemdup(variax_activate, 201 variax->buffer_activate = kmemdup(variax_activate,
300 sizeof(variax_activate), GFP_KERNEL); 202 sizeof(variax_activate), GFP_KERNEL);
301 203
diff --git a/drivers/staging/line6/variax.h b/drivers/staging/line6/variax.h
index 13d5680d2e5..24de79620d8 100644
--- a/drivers/staging/line6/variax.h
+++ b/drivers/staging/line6/variax.h
@@ -18,7 +18,6 @@
18#include <sound/core.h> 18#include <sound/core.h>
19 19
20#include "driver.h" 20#include "driver.h"
21#include "dumprequest.h"
22 21
23#define VARIAX_STARTUP_DELAY1 1000 22#define VARIAX_STARTUP_DELAY1 1000
24#define VARIAX_STARTUP_DELAY3 100 23#define VARIAX_STARTUP_DELAY3 100
@@ -32,18 +31,11 @@ enum {
32 VARIAX_STARTUP_VERSIONREQ, 31 VARIAX_STARTUP_VERSIONREQ,
33 VARIAX_STARTUP_WAIT, 32 VARIAX_STARTUP_WAIT,
34 VARIAX_STARTUP_ACTIVATE, 33 VARIAX_STARTUP_ACTIVATE,
35 VARIAX_STARTUP_DUMPREQ,
36 VARIAX_STARTUP_WORKQUEUE, 34 VARIAX_STARTUP_WORKQUEUE,
37 VARIAX_STARTUP_SETUP, 35 VARIAX_STARTUP_SETUP,
38 VARIAX_STARTUP_LAST = VARIAX_STARTUP_SETUP - 1 36 VARIAX_STARTUP_LAST = VARIAX_STARTUP_SETUP - 1
39}; 37};
40 38
41enum {
42 VARIAX_DUMP_PASS1 = LINE6_DUMP_CURRENT,
43 VARIAX_DUMP_PASS2,
44 VARIAX_DUMP_PASS3
45};
46
47struct usb_line6_variax { 39struct usb_line6_variax {
48 /** 40 /**
49 Generic Line6 USB data. 41 Generic Line6 USB data.
@@ -51,13 +43,6 @@ struct usb_line6_variax {
51 struct usb_line6 line6; 43 struct usb_line6 line6;
52 44
53 /** 45 /**
54 Dump request structure.
55 Append two extra buffers for 3-pass data query.
56 */
57 struct line6_dump_request dumpreq;
58 struct line6_dump_reqbuf extrabuf[2];
59
60 /**
61 Buffer for activation code. 46 Buffer for activation code.
62 */ 47 */
63 unsigned char *buffer_activate; 48 unsigned char *buffer_activate;