staging: line6: remove unneeded EXPORT_SYMBOL() usage
[pandora-kernel.git] / drivers / staging / line6 / control.c
1 /*
2  * Line6 Linux USB driver - 0.9.1beta
3  *
4  * Copyright (C) 2004-2010 Markus Grabner (grabner@icg.tugraz.at)
5  *
6  *      This program is free software; you can redistribute it and/or
7  *      modify it under the terms of the GNU General Public License as
8  *      published by the Free Software Foundation, version 2.
9  *
10  */
11
12 #include <linux/usb.h>
13
14 #include "control.h"
15 #include "driver.h"
16 #include "pod.h"
17 #include "usbdefs.h"
18 #include "variax.h"
19
20 #define DEVICE_ATTR2(_name1, _name2, _mode, _show, _store) \
21 struct device_attribute dev_attr_##_name1 = __ATTR(_name2, _mode, _show, _store)
22
23 #define LINE6_PARAM_R(PREFIX, prefix, type, param) \
24 static ssize_t prefix##_get_##param(struct device *dev, \
25                         struct device_attribute *attr, char *buf) \
26 { \
27         return prefix##_get_param_##type(dev, buf, PREFIX##_##param); \
28 }
29
30 #define LINE6_PARAM_RW(PREFIX, prefix, type, param) \
31 LINE6_PARAM_R(PREFIX, prefix, type, param); \
32 static ssize_t prefix##_set_##param(struct device *dev, \
33                 struct device_attribute *attr, const char *buf, size_t count) \
34 { \
35         return prefix##_set_param_##type(dev, buf, count, PREFIX##_##param); \
36 }
37
38 #define POD_PARAM_R(type, param) LINE6_PARAM_R(POD, pod, type, param)
39 #define POD_PARAM_RW(type, param) LINE6_PARAM_RW(POD, pod, type, param)
40 #define VARIAX_PARAM_R(type, param) LINE6_PARAM_R(VARIAX, variax, type, param)
41 #define VARIAX_PARAM_RW(type, param) LINE6_PARAM_RW(VARIAX, variax, type, param)
42
43 static ssize_t pod_get_param_int(struct device *dev, char *buf, int param)
44 {
45         struct usb_interface *interface = to_usb_interface(dev);
46         struct usb_line6_pod *pod = usb_get_intfdata(interface);
47         int retval = line6_dump_wait_interruptible(&pod->dumpreq);
48         if (retval < 0)
49                 return retval;
50         return sprintf(buf, "%d\n", pod->prog_data.control[param]);
51 }
52
53 static ssize_t pod_set_param_int(struct device *dev, const char *buf,
54                                  size_t count, int param)
55 {
56         struct usb_interface *interface = to_usb_interface(dev);
57         struct usb_line6_pod *pod = usb_get_intfdata(interface);
58         unsigned long value;
59         int retval;
60
61         retval = strict_strtoul(buf, 10, &value);
62         if (retval)
63                 return retval;
64
65         line6_pod_transmit_parameter(pod, param, value);
66         return count;
67 }
68
69 static ssize_t variax_get_param_int(struct device *dev, char *buf, int param)
70 {
71         struct usb_interface *interface = to_usb_interface(dev);
72         struct usb_line6_variax *variax = usb_get_intfdata(interface);
73         int retval = line6_dump_wait_interruptible(&variax->dumpreq);
74         if (retval < 0)
75                 return retval;
76         return sprintf(buf, "%d\n", variax->model_data.control[param]);
77 }
78
79 static ssize_t variax_get_param_float(struct device *dev, char *buf, int param)
80 {
81         /*
82            We do our own floating point handling here since at the time
83            this code was written (Jan 2006) it was highly discouraged to
84            use floating point arithmetic in the kernel. If you think that
85            this no longer applies, feel free to replace this by generic
86            floating point code.
87          */
88
89         static const int BIAS = 0x7f;
90         static const int OFFSET = 0xf;
91         static const int PRECISION = 1000;
92
93         int len = 0;
94         unsigned part_int, part_frac;
95         struct usb_interface *interface = to_usb_interface(dev);
96         struct usb_line6_variax *variax = usb_get_intfdata(interface);
97         const unsigned char *p = variax->model_data.control + param;
98         int retval = line6_dump_wait_interruptible(&variax->dumpreq);
99         if (retval < 0)
100                 return retval;
101
102         if ((p[0] == 0) && (p[1] == 0) && (p[2] == 0))
103                 part_int = part_frac = 0;
104         else {
105                 int exponent = (((p[0] & 0x7f) << 1) | (p[1] >> 7)) - BIAS;
106                 unsigned mantissa = (p[1] << 8) | p[2] | 0x8000;
107                 exponent -= OFFSET;
108
109                 if (exponent >= 0) {
110                         part_int = mantissa << exponent;
111                         part_frac = 0;
112                 } else {
113                         part_int = mantissa >> -exponent;
114                         part_frac = (mantissa << (32 + exponent)) & 0xffffffff;
115                 }
116
117                 part_frac =
118                     (part_frac / ((1UL << 31) / (PRECISION / 2 * 10)) + 5) / 10;
119         }
120
121         len +=
122             sprintf(buf + len, "%s%d.%03d\n", ((p[0] & 0x80) ? "-" : ""),
123                     part_int, part_frac);
124         return len;
125 }
126
127 POD_PARAM_RW(int, tweak);
128 POD_PARAM_RW(int, wah_position);
129 POD_PARAM_RW(int, compression_gain);
130 POD_PARAM_RW(int, vol_pedal_position);
131 POD_PARAM_RW(int, compression_threshold);
132 POD_PARAM_RW(int, pan);
133 POD_PARAM_RW(int, amp_model_setup);
134 POD_PARAM_RW(int, amp_model);
135 POD_PARAM_RW(int, drive);
136 POD_PARAM_RW(int, bass);
137 POD_PARAM_RW(int, mid);
138 POD_PARAM_RW(int, lowmid);
139 POD_PARAM_RW(int, treble);
140 POD_PARAM_RW(int, highmid);
141 POD_PARAM_RW(int, chan_vol);
142 POD_PARAM_RW(int, reverb_mix);
143 POD_PARAM_RW(int, effect_setup);
144 POD_PARAM_RW(int, band_1_frequency);
145 POD_PARAM_RW(int, presence);
146 POD_PARAM_RW(int, treble__bass);
147 POD_PARAM_RW(int, noise_gate_enable);
148 POD_PARAM_RW(int, gate_threshold);
149 POD_PARAM_RW(int, gate_decay_time);
150 POD_PARAM_RW(int, stomp_enable);
151 POD_PARAM_RW(int, comp_enable);
152 POD_PARAM_RW(int, stomp_time);
153 POD_PARAM_RW(int, delay_enable);
154 POD_PARAM_RW(int, mod_param_1);
155 POD_PARAM_RW(int, delay_param_1);
156 POD_PARAM_RW(int, delay_param_1_note_value);
157 POD_PARAM_RW(int, band_2_frequency__bass);
158 POD_PARAM_RW(int, delay_param_2);
159 POD_PARAM_RW(int, delay_volume_mix);
160 POD_PARAM_RW(int, delay_param_3);
161 POD_PARAM_RW(int, reverb_enable);
162 POD_PARAM_RW(int, reverb_type);
163 POD_PARAM_RW(int, reverb_decay);
164 POD_PARAM_RW(int, reverb_tone);
165 POD_PARAM_RW(int, reverb_pre_delay);
166 POD_PARAM_RW(int, reverb_pre_post);
167 POD_PARAM_RW(int, band_2_frequency);
168 POD_PARAM_RW(int, band_3_frequency__bass);
169 POD_PARAM_RW(int, wah_enable);
170 POD_PARAM_RW(int, modulation_lo_cut);
171 POD_PARAM_RW(int, delay_reverb_lo_cut);
172 POD_PARAM_RW(int, volume_pedal_minimum);
173 POD_PARAM_RW(int, eq_pre_post);
174 POD_PARAM_RW(int, volume_pre_post);
175 POD_PARAM_RW(int, di_model);
176 POD_PARAM_RW(int, di_delay);
177 POD_PARAM_RW(int, mod_enable);
178 POD_PARAM_RW(int, mod_param_1_note_value);
179 POD_PARAM_RW(int, mod_param_2);
180 POD_PARAM_RW(int, mod_param_3);
181 POD_PARAM_RW(int, mod_param_4);
182 POD_PARAM_RW(int, mod_param_5);
183 POD_PARAM_RW(int, mod_volume_mix);
184 POD_PARAM_RW(int, mod_pre_post);
185 POD_PARAM_RW(int, modulation_model);
186 POD_PARAM_RW(int, band_3_frequency);
187 POD_PARAM_RW(int, band_4_frequency__bass);
188 POD_PARAM_RW(int, mod_param_1_double_precision);
189 POD_PARAM_RW(int, delay_param_1_double_precision);
190 POD_PARAM_RW(int, eq_enable);
191 POD_PARAM_RW(int, tap);
192 POD_PARAM_RW(int, volume_tweak_pedal_assign);
193 POD_PARAM_RW(int, band_5_frequency);
194 POD_PARAM_RW(int, tuner);
195 POD_PARAM_RW(int, mic_selection);
196 POD_PARAM_RW(int, cabinet_model);
197 POD_PARAM_RW(int, stomp_model);
198 POD_PARAM_RW(int, roomlevel);
199 POD_PARAM_RW(int, band_4_frequency);
200 POD_PARAM_RW(int, band_6_frequency);
201 POD_PARAM_RW(int, stomp_param_1_note_value);
202 POD_PARAM_RW(int, stomp_param_2);
203 POD_PARAM_RW(int, stomp_param_3);
204 POD_PARAM_RW(int, stomp_param_4);
205 POD_PARAM_RW(int, stomp_param_5);
206 POD_PARAM_RW(int, stomp_param_6);
207 POD_PARAM_RW(int, amp_switch_select);
208 POD_PARAM_RW(int, delay_param_4);
209 POD_PARAM_RW(int, delay_param_5);
210 POD_PARAM_RW(int, delay_pre_post);
211 POD_PARAM_RW(int, delay_model);
212 POD_PARAM_RW(int, delay_verb_model);
213 POD_PARAM_RW(int, tempo_msb);
214 POD_PARAM_RW(int, tempo_lsb);
215 POD_PARAM_RW(int, wah_model);
216 POD_PARAM_RW(int, bypass_volume);
217 POD_PARAM_RW(int, fx_loop_on_off);
218 POD_PARAM_RW(int, tweak_param_select);
219 POD_PARAM_RW(int, amp1_engage);
220 POD_PARAM_RW(int, band_1_gain);
221 POD_PARAM_RW(int, band_2_gain__bass);
222 POD_PARAM_RW(int, band_2_gain);
223 POD_PARAM_RW(int, band_3_gain__bass);
224 POD_PARAM_RW(int, band_3_gain);
225 POD_PARAM_RW(int, band_4_gain__bass);
226 POD_PARAM_RW(int, band_5_gain__bass);
227 POD_PARAM_RW(int, band_4_gain);
228 POD_PARAM_RW(int, band_6_gain__bass);
229 VARIAX_PARAM_R(int, body);
230 VARIAX_PARAM_R(int, pickup1_enable);
231 VARIAX_PARAM_R(int, pickup1_type);
232 VARIAX_PARAM_R(float, pickup1_position);
233 VARIAX_PARAM_R(float, pickup1_angle);
234 VARIAX_PARAM_R(float, pickup1_level);
235 VARIAX_PARAM_R(int, pickup2_enable);
236 VARIAX_PARAM_R(int, pickup2_type);
237 VARIAX_PARAM_R(float, pickup2_position);
238 VARIAX_PARAM_R(float, pickup2_angle);
239 VARIAX_PARAM_R(float, pickup2_level);
240 VARIAX_PARAM_R(int, pickup_phase);
241 VARIAX_PARAM_R(float, capacitance);
242 VARIAX_PARAM_R(float, tone_resistance);
243 VARIAX_PARAM_R(float, volume_resistance);
244 VARIAX_PARAM_R(int, taper);
245 VARIAX_PARAM_R(float, tone_dump);
246 VARIAX_PARAM_R(int, save_tone);
247 VARIAX_PARAM_R(float, volume_dump);
248 VARIAX_PARAM_R(int, tuning_enable);
249 VARIAX_PARAM_R(int, tuning6);
250 VARIAX_PARAM_R(int, tuning5);
251 VARIAX_PARAM_R(int, tuning4);
252 VARIAX_PARAM_R(int, tuning3);
253 VARIAX_PARAM_R(int, tuning2);
254 VARIAX_PARAM_R(int, tuning1);
255 VARIAX_PARAM_R(float, detune6);
256 VARIAX_PARAM_R(float, detune5);
257 VARIAX_PARAM_R(float, detune4);
258 VARIAX_PARAM_R(float, detune3);
259 VARIAX_PARAM_R(float, detune2);
260 VARIAX_PARAM_R(float, detune1);
261 VARIAX_PARAM_R(float, mix6);
262 VARIAX_PARAM_R(float, mix5);
263 VARIAX_PARAM_R(float, mix4);
264 VARIAX_PARAM_R(float, mix3);
265 VARIAX_PARAM_R(float, mix2);
266 VARIAX_PARAM_R(float, mix1);
267 VARIAX_PARAM_R(int, pickup_wiring);
268
269 static DEVICE_ATTR(tweak, S_IWUGO | S_IRUGO, pod_get_tweak, pod_set_tweak);
270 static DEVICE_ATTR(wah_position, S_IWUGO | S_IRUGO, pod_get_wah_position,
271                    pod_set_wah_position);
272 static DEVICE_ATTR(compression_gain, S_IWUGO | S_IRUGO,
273                    pod_get_compression_gain, pod_set_compression_gain);
274 static DEVICE_ATTR(vol_pedal_position, S_IWUGO | S_IRUGO,
275                    pod_get_vol_pedal_position, pod_set_vol_pedal_position);
276 static DEVICE_ATTR(compression_threshold, S_IWUGO | S_IRUGO,
277                    pod_get_compression_threshold,
278                    pod_set_compression_threshold);
279 static DEVICE_ATTR(pan, S_IWUGO | S_IRUGO, pod_get_pan, pod_set_pan);
280 static DEVICE_ATTR(amp_model_setup, S_IWUGO | S_IRUGO, pod_get_amp_model_setup,
281                    pod_set_amp_model_setup);
282 static DEVICE_ATTR(amp_model, S_IWUGO | S_IRUGO, pod_get_amp_model,
283                    pod_set_amp_model);
284 static DEVICE_ATTR(drive, S_IWUGO | S_IRUGO, pod_get_drive, pod_set_drive);
285 static DEVICE_ATTR(bass, S_IWUGO | S_IRUGO, pod_get_bass, pod_set_bass);
286 static DEVICE_ATTR(mid, S_IWUGO | S_IRUGO, pod_get_mid, pod_set_mid);
287 static DEVICE_ATTR(lowmid, S_IWUGO | S_IRUGO, pod_get_lowmid, pod_set_lowmid);
288 static DEVICE_ATTR(treble, S_IWUGO | S_IRUGO, pod_get_treble, pod_set_treble);
289 static DEVICE_ATTR(highmid, S_IWUGO | S_IRUGO, pod_get_highmid,
290                    pod_set_highmid);
291 static DEVICE_ATTR(chan_vol, S_IWUGO | S_IRUGO, pod_get_chan_vol,
292                    pod_set_chan_vol);
293 static DEVICE_ATTR(reverb_mix, S_IWUGO | S_IRUGO, pod_get_reverb_mix,
294                    pod_set_reverb_mix);
295 static DEVICE_ATTR(effect_setup, S_IWUGO | S_IRUGO, pod_get_effect_setup,
296                    pod_set_effect_setup);
297 static DEVICE_ATTR(band_1_frequency, S_IWUGO | S_IRUGO,
298                    pod_get_band_1_frequency, pod_set_band_1_frequency);
299 static DEVICE_ATTR(presence, S_IWUGO | S_IRUGO, pod_get_presence,
300                    pod_set_presence);
301 static DEVICE_ATTR2(treble__bass, treble, S_IWUGO | S_IRUGO,
302                     pod_get_treble__bass, pod_set_treble__bass);
303 static DEVICE_ATTR(noise_gate_enable, S_IWUGO | S_IRUGO,
304                    pod_get_noise_gate_enable, pod_set_noise_gate_enable);
305 static DEVICE_ATTR(gate_threshold, S_IWUGO | S_IRUGO, pod_get_gate_threshold,
306                    pod_set_gate_threshold);
307 static DEVICE_ATTR(gate_decay_time, S_IWUGO | S_IRUGO, pod_get_gate_decay_time,
308                    pod_set_gate_decay_time);
309 static DEVICE_ATTR(stomp_enable, S_IWUGO | S_IRUGO, pod_get_stomp_enable,
310                    pod_set_stomp_enable);
311 static DEVICE_ATTR(comp_enable, S_IWUGO | S_IRUGO, pod_get_comp_enable,
312                    pod_set_comp_enable);
313 static DEVICE_ATTR(stomp_time, S_IWUGO | S_IRUGO, pod_get_stomp_time,
314                    pod_set_stomp_time);
315 static DEVICE_ATTR(delay_enable, S_IWUGO | S_IRUGO, pod_get_delay_enable,
316                    pod_set_delay_enable);
317 static DEVICE_ATTR(mod_param_1, S_IWUGO | S_IRUGO, pod_get_mod_param_1,
318                    pod_set_mod_param_1);
319 static DEVICE_ATTR(delay_param_1, S_IWUGO | S_IRUGO, pod_get_delay_param_1,
320                    pod_set_delay_param_1);
321 static DEVICE_ATTR(delay_param_1_note_value, S_IWUGO | S_IRUGO,
322                    pod_get_delay_param_1_note_value,
323                    pod_set_delay_param_1_note_value);
324 static DEVICE_ATTR2(band_2_frequency__bass, band_2_frequency, S_IWUGO | S_IRUGO,
325                     pod_get_band_2_frequency__bass,
326                     pod_set_band_2_frequency__bass);
327 static DEVICE_ATTR(delay_param_2, S_IWUGO | S_IRUGO, pod_get_delay_param_2,
328                    pod_set_delay_param_2);
329 static DEVICE_ATTR(delay_volume_mix, S_IWUGO | S_IRUGO,
330                    pod_get_delay_volume_mix, pod_set_delay_volume_mix);
331 static DEVICE_ATTR(delay_param_3, S_IWUGO | S_IRUGO, pod_get_delay_param_3,
332                    pod_set_delay_param_3);
333 static DEVICE_ATTR(reverb_enable, S_IWUGO | S_IRUGO, pod_get_reverb_enable,
334                    pod_set_reverb_enable);
335 static DEVICE_ATTR(reverb_type, S_IWUGO | S_IRUGO, pod_get_reverb_type,
336                    pod_set_reverb_type);
337 static DEVICE_ATTR(reverb_decay, S_IWUGO | S_IRUGO, pod_get_reverb_decay,
338                    pod_set_reverb_decay);
339 static DEVICE_ATTR(reverb_tone, S_IWUGO | S_IRUGO, pod_get_reverb_tone,
340                    pod_set_reverb_tone);
341 static DEVICE_ATTR(reverb_pre_delay, S_IWUGO | S_IRUGO,
342                    pod_get_reverb_pre_delay, pod_set_reverb_pre_delay);
343 static DEVICE_ATTR(reverb_pre_post, S_IWUGO | S_IRUGO, pod_get_reverb_pre_post,
344                    pod_set_reverb_pre_post);
345 static DEVICE_ATTR(band_2_frequency, S_IWUGO | S_IRUGO,
346                    pod_get_band_2_frequency, pod_set_band_2_frequency);
347 static DEVICE_ATTR2(band_3_frequency__bass, band_3_frequency, S_IWUGO | S_IRUGO,
348                     pod_get_band_3_frequency__bass,
349                     pod_set_band_3_frequency__bass);
350 static DEVICE_ATTR(wah_enable, S_IWUGO | S_IRUGO, pod_get_wah_enable,
351                    pod_set_wah_enable);
352 static DEVICE_ATTR(modulation_lo_cut, S_IWUGO | S_IRUGO,
353                    pod_get_modulation_lo_cut, pod_set_modulation_lo_cut);
354 static DEVICE_ATTR(delay_reverb_lo_cut, S_IWUGO | S_IRUGO,
355                    pod_get_delay_reverb_lo_cut, pod_set_delay_reverb_lo_cut);
356 static DEVICE_ATTR(volume_pedal_minimum, S_IWUGO | S_IRUGO,
357                    pod_get_volume_pedal_minimum, pod_set_volume_pedal_minimum);
358 static DEVICE_ATTR(eq_pre_post, S_IWUGO | S_IRUGO, pod_get_eq_pre_post,
359                    pod_set_eq_pre_post);
360 static DEVICE_ATTR(volume_pre_post, S_IWUGO | S_IRUGO, pod_get_volume_pre_post,
361                    pod_set_volume_pre_post);
362 static DEVICE_ATTR(di_model, S_IWUGO | S_IRUGO, pod_get_di_model,
363                    pod_set_di_model);
364 static DEVICE_ATTR(di_delay, S_IWUGO | S_IRUGO, pod_get_di_delay,
365                    pod_set_di_delay);
366 static DEVICE_ATTR(mod_enable, S_IWUGO | S_IRUGO, pod_get_mod_enable,
367                    pod_set_mod_enable);
368 static DEVICE_ATTR(mod_param_1_note_value, S_IWUGO | S_IRUGO,
369                    pod_get_mod_param_1_note_value,
370                    pod_set_mod_param_1_note_value);
371 static DEVICE_ATTR(mod_param_2, S_IWUGO | S_IRUGO, pod_get_mod_param_2,
372                    pod_set_mod_param_2);
373 static DEVICE_ATTR(mod_param_3, S_IWUGO | S_IRUGO, pod_get_mod_param_3,
374                    pod_set_mod_param_3);
375 static DEVICE_ATTR(mod_param_4, S_IWUGO | S_IRUGO, pod_get_mod_param_4,
376                    pod_set_mod_param_4);
377 static DEVICE_ATTR(mod_param_5, S_IWUGO | S_IRUGO, pod_get_mod_param_5,
378                    pod_set_mod_param_5);
379 static DEVICE_ATTR(mod_volume_mix, S_IWUGO | S_IRUGO, pod_get_mod_volume_mix,
380                    pod_set_mod_volume_mix);
381 static DEVICE_ATTR(mod_pre_post, S_IWUGO | S_IRUGO, pod_get_mod_pre_post,
382                    pod_set_mod_pre_post);
383 static DEVICE_ATTR(modulation_model, S_IWUGO | S_IRUGO,
384                    pod_get_modulation_model, pod_set_modulation_model);
385 static DEVICE_ATTR(band_3_frequency, S_IWUGO | S_IRUGO,
386                    pod_get_band_3_frequency, pod_set_band_3_frequency);
387 static DEVICE_ATTR2(band_4_frequency__bass, band_4_frequency, S_IWUGO | S_IRUGO,
388                     pod_get_band_4_frequency__bass,
389                     pod_set_band_4_frequency__bass);
390 static DEVICE_ATTR(mod_param_1_double_precision, S_IWUGO | S_IRUGO,
391                    pod_get_mod_param_1_double_precision,
392                    pod_set_mod_param_1_double_precision);
393 static DEVICE_ATTR(delay_param_1_double_precision, S_IWUGO | S_IRUGO,
394                    pod_get_delay_param_1_double_precision,
395                    pod_set_delay_param_1_double_precision);
396 static DEVICE_ATTR(eq_enable, S_IWUGO | S_IRUGO, pod_get_eq_enable,
397                    pod_set_eq_enable);
398 static DEVICE_ATTR(tap, S_IWUGO | S_IRUGO, pod_get_tap, pod_set_tap);
399 static DEVICE_ATTR(volume_tweak_pedal_assign, S_IWUGO | S_IRUGO,
400                    pod_get_volume_tweak_pedal_assign,
401                    pod_set_volume_tweak_pedal_assign);
402 static DEVICE_ATTR(band_5_frequency, S_IWUGO | S_IRUGO,
403                    pod_get_band_5_frequency, pod_set_band_5_frequency);
404 static DEVICE_ATTR(tuner, S_IWUGO | S_IRUGO, pod_get_tuner, pod_set_tuner);
405 static DEVICE_ATTR(mic_selection, S_IWUGO | S_IRUGO, pod_get_mic_selection,
406                    pod_set_mic_selection);
407 static DEVICE_ATTR(cabinet_model, S_IWUGO | S_IRUGO, pod_get_cabinet_model,
408                    pod_set_cabinet_model);
409 static DEVICE_ATTR(stomp_model, S_IWUGO | S_IRUGO, pod_get_stomp_model,
410                    pod_set_stomp_model);
411 static DEVICE_ATTR(roomlevel, S_IWUGO | S_IRUGO, pod_get_roomlevel,
412                    pod_set_roomlevel);
413 static DEVICE_ATTR(band_4_frequency, S_IWUGO | S_IRUGO,
414                    pod_get_band_4_frequency, pod_set_band_4_frequency);
415 static DEVICE_ATTR(band_6_frequency, S_IWUGO | S_IRUGO,
416                    pod_get_band_6_frequency, pod_set_band_6_frequency);
417 static DEVICE_ATTR(stomp_param_1_note_value, S_IWUGO | S_IRUGO,
418                    pod_get_stomp_param_1_note_value,
419                    pod_set_stomp_param_1_note_value);
420 static DEVICE_ATTR(stomp_param_2, S_IWUGO | S_IRUGO, pod_get_stomp_param_2,
421                    pod_set_stomp_param_2);
422 static DEVICE_ATTR(stomp_param_3, S_IWUGO | S_IRUGO, pod_get_stomp_param_3,
423                    pod_set_stomp_param_3);
424 static DEVICE_ATTR(stomp_param_4, S_IWUGO | S_IRUGO, pod_get_stomp_param_4,
425                    pod_set_stomp_param_4);
426 static DEVICE_ATTR(stomp_param_5, S_IWUGO | S_IRUGO, pod_get_stomp_param_5,
427                    pod_set_stomp_param_5);
428 static DEVICE_ATTR(stomp_param_6, S_IWUGO | S_IRUGO, pod_get_stomp_param_6,
429                    pod_set_stomp_param_6);
430 static DEVICE_ATTR(amp_switch_select, S_IWUGO | S_IRUGO,
431                    pod_get_amp_switch_select, pod_set_amp_switch_select);
432 static DEVICE_ATTR(delay_param_4, S_IWUGO | S_IRUGO, pod_get_delay_param_4,
433                    pod_set_delay_param_4);
434 static DEVICE_ATTR(delay_param_5, S_IWUGO | S_IRUGO, pod_get_delay_param_5,
435                    pod_set_delay_param_5);
436 static DEVICE_ATTR(delay_pre_post, S_IWUGO | S_IRUGO, pod_get_delay_pre_post,
437                    pod_set_delay_pre_post);
438 static DEVICE_ATTR(delay_model, S_IWUGO | S_IRUGO, pod_get_delay_model,
439                    pod_set_delay_model);
440 static DEVICE_ATTR(delay_verb_model, S_IWUGO | S_IRUGO,
441                    pod_get_delay_verb_model, pod_set_delay_verb_model);
442 static DEVICE_ATTR(tempo_msb, S_IWUGO | S_IRUGO, pod_get_tempo_msb,
443                    pod_set_tempo_msb);
444 static DEVICE_ATTR(tempo_lsb, S_IWUGO | S_IRUGO, pod_get_tempo_lsb,
445                    pod_set_tempo_lsb);
446 static DEVICE_ATTR(wah_model, S_IWUGO | S_IRUGO, pod_get_wah_model,
447                    pod_set_wah_model);
448 static DEVICE_ATTR(bypass_volume, S_IWUGO | S_IRUGO, pod_get_bypass_volume,
449                    pod_set_bypass_volume);
450 static DEVICE_ATTR(fx_loop_on_off, S_IWUGO | S_IRUGO, pod_get_fx_loop_on_off,
451                    pod_set_fx_loop_on_off);
452 static DEVICE_ATTR(tweak_param_select, S_IWUGO | S_IRUGO,
453                    pod_get_tweak_param_select, pod_set_tweak_param_select);
454 static DEVICE_ATTR(amp1_engage, S_IWUGO | S_IRUGO, pod_get_amp1_engage,
455                    pod_set_amp1_engage);
456 static DEVICE_ATTR(band_1_gain, S_IWUGO | S_IRUGO, pod_get_band_1_gain,
457                    pod_set_band_1_gain);
458 static DEVICE_ATTR2(band_2_gain__bass, band_2_gain, S_IWUGO | S_IRUGO,
459                     pod_get_band_2_gain__bass, pod_set_band_2_gain__bass);
460 static DEVICE_ATTR(band_2_gain, S_IWUGO | S_IRUGO, pod_get_band_2_gain,
461                    pod_set_band_2_gain);
462 static DEVICE_ATTR2(band_3_gain__bass, band_3_gain, S_IWUGO | S_IRUGO,
463                     pod_get_band_3_gain__bass, pod_set_band_3_gain__bass);
464 static DEVICE_ATTR(band_3_gain, S_IWUGO | S_IRUGO, pod_get_band_3_gain,
465                    pod_set_band_3_gain);
466 static DEVICE_ATTR2(band_4_gain__bass, band_4_gain, S_IWUGO | S_IRUGO,
467                     pod_get_band_4_gain__bass, pod_set_band_4_gain__bass);
468 static DEVICE_ATTR2(band_5_gain__bass, band_5_gain, S_IWUGO | S_IRUGO,
469                     pod_get_band_5_gain__bass, pod_set_band_5_gain__bass);
470 static DEVICE_ATTR(band_4_gain, S_IWUGO | S_IRUGO, pod_get_band_4_gain,
471                    pod_set_band_4_gain);
472 static DEVICE_ATTR2(band_6_gain__bass, band_6_gain, S_IWUGO | S_IRUGO,
473                     pod_get_band_6_gain__bass, pod_set_band_6_gain__bass);
474 static DEVICE_ATTR(body, S_IRUGO, variax_get_body, line6_nop_write);
475 static DEVICE_ATTR(pickup1_enable, S_IRUGO, variax_get_pickup1_enable,
476                    line6_nop_write);
477 static DEVICE_ATTR(pickup1_type, S_IRUGO, variax_get_pickup1_type,
478                    line6_nop_write);
479 static DEVICE_ATTR(pickup1_position, S_IRUGO, variax_get_pickup1_position,
480                    line6_nop_write);
481 static DEVICE_ATTR(pickup1_angle, S_IRUGO, variax_get_pickup1_angle,
482                    line6_nop_write);
483 static DEVICE_ATTR(pickup1_level, S_IRUGO, variax_get_pickup1_level,
484                    line6_nop_write);
485 static DEVICE_ATTR(pickup2_enable, S_IRUGO, variax_get_pickup2_enable,
486                    line6_nop_write);
487 static DEVICE_ATTR(pickup2_type, S_IRUGO, variax_get_pickup2_type,
488                    line6_nop_write);
489 static DEVICE_ATTR(pickup2_position, S_IRUGO, variax_get_pickup2_position,
490                    line6_nop_write);
491 static DEVICE_ATTR(pickup2_angle, S_IRUGO, variax_get_pickup2_angle,
492                    line6_nop_write);
493 static DEVICE_ATTR(pickup2_level, S_IRUGO, variax_get_pickup2_level,
494                    line6_nop_write);
495 static DEVICE_ATTR(pickup_phase, S_IRUGO, variax_get_pickup_phase,
496                    line6_nop_write);
497 static DEVICE_ATTR(capacitance, S_IRUGO, variax_get_capacitance,
498                    line6_nop_write);
499 static DEVICE_ATTR(tone_resistance, S_IRUGO, variax_get_tone_resistance,
500                    line6_nop_write);
501 static DEVICE_ATTR(volume_resistance, S_IRUGO, variax_get_volume_resistance,
502                    line6_nop_write);
503 static DEVICE_ATTR(taper, S_IRUGO, variax_get_taper, line6_nop_write);
504 static DEVICE_ATTR(tone_dump, S_IRUGO, variax_get_tone_dump, line6_nop_write);
505 static DEVICE_ATTR(save_tone, S_IRUGO, variax_get_save_tone, line6_nop_write);
506 static DEVICE_ATTR(volume_dump, S_IRUGO, variax_get_volume_dump,
507                    line6_nop_write);
508 static DEVICE_ATTR(tuning_enable, S_IRUGO, variax_get_tuning_enable,
509                    line6_nop_write);
510 static DEVICE_ATTR(tuning6, S_IRUGO, variax_get_tuning6, line6_nop_write);
511 static DEVICE_ATTR(tuning5, S_IRUGO, variax_get_tuning5, line6_nop_write);
512 static DEVICE_ATTR(tuning4, S_IRUGO, variax_get_tuning4, line6_nop_write);
513 static DEVICE_ATTR(tuning3, S_IRUGO, variax_get_tuning3, line6_nop_write);
514 static DEVICE_ATTR(tuning2, S_IRUGO, variax_get_tuning2, line6_nop_write);
515 static DEVICE_ATTR(tuning1, S_IRUGO, variax_get_tuning1, line6_nop_write);
516 static DEVICE_ATTR(detune6, S_IRUGO, variax_get_detune6, line6_nop_write);
517 static DEVICE_ATTR(detune5, S_IRUGO, variax_get_detune5, line6_nop_write);
518 static DEVICE_ATTR(detune4, S_IRUGO, variax_get_detune4, line6_nop_write);
519 static DEVICE_ATTR(detune3, S_IRUGO, variax_get_detune3, line6_nop_write);
520 static DEVICE_ATTR(detune2, S_IRUGO, variax_get_detune2, line6_nop_write);
521 static DEVICE_ATTR(detune1, S_IRUGO, variax_get_detune1, line6_nop_write);
522 static DEVICE_ATTR(mix6, S_IRUGO, variax_get_mix6, line6_nop_write);
523 static DEVICE_ATTR(mix5, S_IRUGO, variax_get_mix5, line6_nop_write);
524 static DEVICE_ATTR(mix4, S_IRUGO, variax_get_mix4, line6_nop_write);
525 static DEVICE_ATTR(mix3, S_IRUGO, variax_get_mix3, line6_nop_write);
526 static DEVICE_ATTR(mix2, S_IRUGO, variax_get_mix2, line6_nop_write);
527 static DEVICE_ATTR(mix1, S_IRUGO, variax_get_mix1, line6_nop_write);
528 static DEVICE_ATTR(pickup_wiring, S_IRUGO, variax_get_pickup_wiring,
529                    line6_nop_write);
530
531 int line6_pod_create_files(int firmware, int type, struct device *dev)
532 {
533         int err;
534         CHECK_RETURN(device_create_file(dev, &dev_attr_tweak));
535         CHECK_RETURN(device_create_file(dev, &dev_attr_wah_position));
536         if ((type & (LINE6_BITS_PODXTALL)) != 0)
537                 CHECK_RETURN(device_create_file
538                              (dev, &dev_attr_compression_gain));
539         CHECK_RETURN(device_create_file(dev, &dev_attr_vol_pedal_position));
540         CHECK_RETURN(device_create_file(dev, &dev_attr_compression_threshold));
541         CHECK_RETURN(device_create_file(dev, &dev_attr_pan));
542         CHECK_RETURN(device_create_file(dev, &dev_attr_amp_model_setup));
543         if (firmware >= 200)
544                 CHECK_RETURN(device_create_file(dev, &dev_attr_amp_model));
545         CHECK_RETURN(device_create_file(dev, &dev_attr_drive));
546         CHECK_RETURN(device_create_file(dev, &dev_attr_bass));
547         if ((type & (LINE6_BITS_PODXTALL)) != 0)
548                 CHECK_RETURN(device_create_file(dev, &dev_attr_mid));
549         if ((type & (LINE6_BITS_BASSPODXTALL)) != 0)
550                 CHECK_RETURN(device_create_file(dev, &dev_attr_lowmid));
551         if ((type & (LINE6_BITS_PODXTALL)) != 0)
552                 CHECK_RETURN(device_create_file(dev, &dev_attr_treble));
553         if ((type & (LINE6_BITS_BASSPODXTALL)) != 0)
554                 CHECK_RETURN(device_create_file(dev, &dev_attr_highmid));
555         CHECK_RETURN(device_create_file(dev, &dev_attr_chan_vol));
556         if ((type & (LINE6_BITS_PODXTALL)) != 0)
557                 CHECK_RETURN(device_create_file(dev, &dev_attr_reverb_mix));
558         CHECK_RETURN(device_create_file(dev, &dev_attr_effect_setup));
559         if (firmware >= 200)
560                 CHECK_RETURN(device_create_file
561                              (dev, &dev_attr_band_1_frequency));
562         if ((type & (LINE6_BITS_PODXTALL)) != 0)
563                 CHECK_RETURN(device_create_file(dev, &dev_attr_presence));
564         if ((type & (LINE6_BITS_BASSPODXTALL)) != 0)
565                 CHECK_RETURN(device_create_file(dev, &dev_attr_treble__bass));
566         CHECK_RETURN(device_create_file(dev, &dev_attr_noise_gate_enable));
567         CHECK_RETURN(device_create_file(dev, &dev_attr_gate_threshold));
568         CHECK_RETURN(device_create_file(dev, &dev_attr_gate_decay_time));
569         CHECK_RETURN(device_create_file(dev, &dev_attr_stomp_enable));
570         CHECK_RETURN(device_create_file(dev, &dev_attr_comp_enable));
571         CHECK_RETURN(device_create_file(dev, &dev_attr_stomp_time));
572         CHECK_RETURN(device_create_file(dev, &dev_attr_delay_enable));
573         CHECK_RETURN(device_create_file(dev, &dev_attr_mod_param_1));
574         CHECK_RETURN(device_create_file(dev, &dev_attr_delay_param_1));
575         CHECK_RETURN(device_create_file
576                      (dev, &dev_attr_delay_param_1_note_value));
577         if ((type & (LINE6_BITS_BASSPODXTALL)) != 0)
578                 if (firmware >= 200)
579                         CHECK_RETURN(device_create_file
580                                      (dev, &dev_attr_band_2_frequency__bass));
581         CHECK_RETURN(device_create_file(dev, &dev_attr_delay_param_2));
582         CHECK_RETURN(device_create_file(dev, &dev_attr_delay_volume_mix));
583         CHECK_RETURN(device_create_file(dev, &dev_attr_delay_param_3));
584         if ((type & (LINE6_BITS_PODXTALL)) != 0)
585                 CHECK_RETURN(device_create_file(dev, &dev_attr_reverb_enable));
586         if ((type & (LINE6_BITS_PODXTALL)) != 0)
587                 CHECK_RETURN(device_create_file(dev, &dev_attr_reverb_type));
588         if ((type & (LINE6_BITS_PODXTALL)) != 0)
589                 CHECK_RETURN(device_create_file(dev, &dev_attr_reverb_decay));
590         if ((type & (LINE6_BITS_PODXTALL)) != 0)
591                 CHECK_RETURN(device_create_file(dev, &dev_attr_reverb_tone));
592         if ((type & (LINE6_BITS_PODXTALL)) != 0)
593                 CHECK_RETURN(device_create_file
594                              (dev, &dev_attr_reverb_pre_delay));
595         if ((type & (LINE6_BITS_PODXTALL)) != 0)
596                 CHECK_RETURN(device_create_file
597                              (dev, &dev_attr_reverb_pre_post));
598         if ((type & (LINE6_BITS_PODXTALL)) != 0)
599                 if (firmware >= 200)
600                         CHECK_RETURN(device_create_file
601                                      (dev, &dev_attr_band_2_frequency));
602         if ((type & (LINE6_BITS_BASSPODXTALL)) != 0)
603                 if (firmware >= 200)
604                         CHECK_RETURN(device_create_file
605                                      (dev, &dev_attr_band_3_frequency__bass));
606         CHECK_RETURN(device_create_file(dev, &dev_attr_wah_enable));
607         if ((type & (LINE6_BITS_BASSPODXTALL)) != 0)
608                 CHECK_RETURN(device_create_file
609                              (dev, &dev_attr_modulation_lo_cut));
610         if ((type & (LINE6_BITS_BASSPODXTALL)) != 0)
611                 CHECK_RETURN(device_create_file
612                              (dev, &dev_attr_delay_reverb_lo_cut));
613         if ((type & (LINE6_BITS_PODXTALL)) != 0)
614                 if (firmware >= 200)
615                         CHECK_RETURN(device_create_file
616                                      (dev, &dev_attr_volume_pedal_minimum));
617         if ((type & (LINE6_BITS_BASSPODXTALL)) != 0)
618                 if (firmware >= 200)
619                         CHECK_RETURN(device_create_file
620                                      (dev, &dev_attr_eq_pre_post));
621         CHECK_RETURN(device_create_file(dev, &dev_attr_volume_pre_post));
622         if ((type & (LINE6_BITS_BASSPODXTALL)) != 0)
623                 CHECK_RETURN(device_create_file(dev, &dev_attr_di_model));
624         if ((type & (LINE6_BITS_BASSPODXTALL)) != 0)
625                 CHECK_RETURN(device_create_file(dev, &dev_attr_di_delay));
626         CHECK_RETURN(device_create_file(dev, &dev_attr_mod_enable));
627         CHECK_RETURN(device_create_file(dev, &dev_attr_mod_param_1_note_value));
628         CHECK_RETURN(device_create_file(dev, &dev_attr_mod_param_2));
629         CHECK_RETURN(device_create_file(dev, &dev_attr_mod_param_3));
630         CHECK_RETURN(device_create_file(dev, &dev_attr_mod_param_4));
631         if ((type & (LINE6_BITS_BASSPODXTALL)) != 0)
632                 CHECK_RETURN(device_create_file(dev, &dev_attr_mod_param_5));
633         CHECK_RETURN(device_create_file(dev, &dev_attr_mod_volume_mix));
634         CHECK_RETURN(device_create_file(dev, &dev_attr_mod_pre_post));
635         CHECK_RETURN(device_create_file(dev, &dev_attr_modulation_model));
636         if ((type & (LINE6_BITS_PODXTALL)) != 0)
637                 if (firmware >= 200)
638                         CHECK_RETURN(device_create_file
639                                      (dev, &dev_attr_band_3_frequency));
640         if ((type & (LINE6_BITS_BASSPODXTALL)) != 0)
641                 if (firmware >= 200)
642                         CHECK_RETURN(device_create_file
643                                      (dev, &dev_attr_band_4_frequency__bass));
644         CHECK_RETURN(device_create_file
645                      (dev, &dev_attr_mod_param_1_double_precision));
646         CHECK_RETURN(device_create_file
647                      (dev, &dev_attr_delay_param_1_double_precision));
648         if (firmware >= 200)
649                 CHECK_RETURN(device_create_file(dev, &dev_attr_eq_enable));
650         CHECK_RETURN(device_create_file(dev, &dev_attr_tap));
651         CHECK_RETURN(device_create_file
652                      (dev, &dev_attr_volume_tweak_pedal_assign));
653         if ((type & (LINE6_BITS_BASSPODXTALL)) != 0)
654                 if (firmware >= 200)
655                         CHECK_RETURN(device_create_file
656                                      (dev, &dev_attr_band_5_frequency));
657         CHECK_RETURN(device_create_file(dev, &dev_attr_tuner));
658         CHECK_RETURN(device_create_file(dev, &dev_attr_mic_selection));
659         CHECK_RETURN(device_create_file(dev, &dev_attr_cabinet_model));
660         CHECK_RETURN(device_create_file(dev, &dev_attr_stomp_model));
661         CHECK_RETURN(device_create_file(dev, &dev_attr_roomlevel));
662         if ((type & (LINE6_BITS_PODXTALL)) != 0)
663                 if (firmware >= 200)
664                         CHECK_RETURN(device_create_file
665                                      (dev, &dev_attr_band_4_frequency));
666         if ((type & (LINE6_BITS_BASSPODXTALL)) != 0)
667                 if (firmware >= 200)
668                         CHECK_RETURN(device_create_file
669                                      (dev, &dev_attr_band_6_frequency));
670         CHECK_RETURN(device_create_file
671                      (dev, &dev_attr_stomp_param_1_note_value));
672         CHECK_RETURN(device_create_file(dev, &dev_attr_stomp_param_2));
673         CHECK_RETURN(device_create_file(dev, &dev_attr_stomp_param_3));
674         CHECK_RETURN(device_create_file(dev, &dev_attr_stomp_param_4));
675         CHECK_RETURN(device_create_file(dev, &dev_attr_stomp_param_5));
676         CHECK_RETURN(device_create_file(dev, &dev_attr_stomp_param_6));
677         if ((type & (LINE6_BITS_LIVE)) != 0)
678                 CHECK_RETURN(device_create_file
679                              (dev, &dev_attr_amp_switch_select));
680         CHECK_RETURN(device_create_file(dev, &dev_attr_delay_param_4));
681         CHECK_RETURN(device_create_file(dev, &dev_attr_delay_param_5));
682         CHECK_RETURN(device_create_file(dev, &dev_attr_delay_pre_post));
683         if ((type & (LINE6_BITS_PODXTALL)) != 0)
684                 CHECK_RETURN(device_create_file(dev, &dev_attr_delay_model));
685         if ((type & (LINE6_BITS_BASSPODXTALL)) != 0)
686                 CHECK_RETURN(device_create_file
687                              (dev, &dev_attr_delay_verb_model));
688         CHECK_RETURN(device_create_file(dev, &dev_attr_tempo_msb));
689         CHECK_RETURN(device_create_file(dev, &dev_attr_tempo_lsb));
690         if (firmware >= 300)
691                 CHECK_RETURN(device_create_file(dev, &dev_attr_wah_model));
692         if (firmware >= 214)
693                 CHECK_RETURN(device_create_file(dev, &dev_attr_bypass_volume));
694         if ((type & (LINE6_BITS_PRO)) != 0)
695                 CHECK_RETURN(device_create_file(dev, &dev_attr_fx_loop_on_off));
696         CHECK_RETURN(device_create_file(dev, &dev_attr_tweak_param_select));
697         CHECK_RETURN(device_create_file(dev, &dev_attr_amp1_engage));
698         if (firmware >= 200)
699                 CHECK_RETURN(device_create_file(dev, &dev_attr_band_1_gain));
700         if ((type & (LINE6_BITS_BASSPODXTALL)) != 0)
701                 if (firmware >= 200)
702                         CHECK_RETURN(device_create_file
703                                      (dev, &dev_attr_band_2_gain__bass));
704         if ((type & (LINE6_BITS_PODXTALL)) != 0)
705                 if (firmware >= 200)
706                         CHECK_RETURN(device_create_file
707                                      (dev, &dev_attr_band_2_gain));
708         if ((type & (LINE6_BITS_BASSPODXTALL)) != 0)
709                 if (firmware >= 200)
710                         CHECK_RETURN(device_create_file
711                                      (dev, &dev_attr_band_3_gain__bass));
712         if ((type & (LINE6_BITS_PODXTALL)) != 0)
713                 if (firmware >= 200)
714                         CHECK_RETURN(device_create_file
715                                      (dev, &dev_attr_band_3_gain));
716         if ((type & (LINE6_BITS_BASSPODXTALL)) != 0)
717                 if (firmware >= 200)
718                         CHECK_RETURN(device_create_file
719                                      (dev, &dev_attr_band_4_gain__bass));
720         if ((type & (LINE6_BITS_BASSPODXTALL)) != 0)
721                 if (firmware >= 200)
722                         CHECK_RETURN(device_create_file
723                                      (dev, &dev_attr_band_5_gain__bass));
724         if ((type & (LINE6_BITS_PODXTALL)) != 0)
725                 if (firmware >= 200)
726                         CHECK_RETURN(device_create_file
727                                      (dev, &dev_attr_band_4_gain));
728         if ((type & (LINE6_BITS_BASSPODXTALL)) != 0)
729                 if (firmware >= 200)
730                         CHECK_RETURN(device_create_file
731                                      (dev, &dev_attr_band_6_gain__bass));
732         return 0;
733 }
734
735 void line6_pod_remove_files(int firmware, int type, struct device *dev)
736 {
737         device_remove_file(dev, &dev_attr_tweak);
738         device_remove_file(dev, &dev_attr_wah_position);
739         if ((type & (LINE6_BITS_PODXTALL)) != 0)
740                 device_remove_file(dev, &dev_attr_compression_gain);
741         device_remove_file(dev, &dev_attr_vol_pedal_position);
742         device_remove_file(dev, &dev_attr_compression_threshold);
743         device_remove_file(dev, &dev_attr_pan);
744         device_remove_file(dev, &dev_attr_amp_model_setup);
745         if (firmware >= 200)
746                 device_remove_file(dev, &dev_attr_amp_model);
747         device_remove_file(dev, &dev_attr_drive);
748         device_remove_file(dev, &dev_attr_bass);
749         if ((type & (LINE6_BITS_PODXTALL)) != 0)
750                 device_remove_file(dev, &dev_attr_mid);
751         if ((type & (LINE6_BITS_BASSPODXTALL)) != 0)
752                 device_remove_file(dev, &dev_attr_lowmid);
753         if ((type & (LINE6_BITS_PODXTALL)) != 0)
754                 device_remove_file(dev, &dev_attr_treble);
755         if ((type & (LINE6_BITS_BASSPODXTALL)) != 0)
756                 device_remove_file(dev, &dev_attr_highmid);
757         device_remove_file(dev, &dev_attr_chan_vol);
758         if ((type & (LINE6_BITS_PODXTALL)) != 0)
759                 device_remove_file(dev, &dev_attr_reverb_mix);
760         device_remove_file(dev, &dev_attr_effect_setup);
761         if (firmware >= 200)
762                 device_remove_file(dev, &dev_attr_band_1_frequency);
763         if ((type & (LINE6_BITS_PODXTALL)) != 0)
764                 device_remove_file(dev, &dev_attr_presence);
765         if ((type & (LINE6_BITS_BASSPODXTALL)) != 0)
766                 device_remove_file(dev, &dev_attr_treble__bass);
767         device_remove_file(dev, &dev_attr_noise_gate_enable);
768         device_remove_file(dev, &dev_attr_gate_threshold);
769         device_remove_file(dev, &dev_attr_gate_decay_time);
770         device_remove_file(dev, &dev_attr_stomp_enable);
771         device_remove_file(dev, &dev_attr_comp_enable);
772         device_remove_file(dev, &dev_attr_stomp_time);
773         device_remove_file(dev, &dev_attr_delay_enable);
774         device_remove_file(dev, &dev_attr_mod_param_1);
775         device_remove_file(dev, &dev_attr_delay_param_1);
776         device_remove_file(dev, &dev_attr_delay_param_1_note_value);
777         if ((type & (LINE6_BITS_BASSPODXTALL)) != 0)
778                 if (firmware >= 200)
779                         device_remove_file(dev,
780                                            &dev_attr_band_2_frequency__bass);
781         device_remove_file(dev, &dev_attr_delay_param_2);
782         device_remove_file(dev, &dev_attr_delay_volume_mix);
783         device_remove_file(dev, &dev_attr_delay_param_3);
784         if ((type & (LINE6_BITS_PODXTALL)) != 0)
785                 device_remove_file(dev, &dev_attr_reverb_enable);
786         if ((type & (LINE6_BITS_PODXTALL)) != 0)
787                 device_remove_file(dev, &dev_attr_reverb_type);
788         if ((type & (LINE6_BITS_PODXTALL)) != 0)
789                 device_remove_file(dev, &dev_attr_reverb_decay);
790         if ((type & (LINE6_BITS_PODXTALL)) != 0)
791                 device_remove_file(dev, &dev_attr_reverb_tone);
792         if ((type & (LINE6_BITS_PODXTALL)) != 0)
793                 device_remove_file(dev, &dev_attr_reverb_pre_delay);
794         if ((type & (LINE6_BITS_PODXTALL)) != 0)
795                 device_remove_file(dev, &dev_attr_reverb_pre_post);
796         if ((type & (LINE6_BITS_PODXTALL)) != 0)
797                 if (firmware >= 200)
798                         device_remove_file(dev, &dev_attr_band_2_frequency);
799         if ((type & (LINE6_BITS_BASSPODXTALL)) != 0)
800                 if (firmware >= 200)
801                         device_remove_file(dev,
802                                            &dev_attr_band_3_frequency__bass);
803         device_remove_file(dev, &dev_attr_wah_enable);
804         if ((type & (LINE6_BITS_BASSPODXTALL)) != 0)
805                 device_remove_file(dev, &dev_attr_modulation_lo_cut);
806         if ((type & (LINE6_BITS_BASSPODXTALL)) != 0)
807                 device_remove_file(dev, &dev_attr_delay_reverb_lo_cut);
808         if ((type & (LINE6_BITS_PODXTALL)) != 0)
809                 if (firmware >= 200)
810                         device_remove_file(dev, &dev_attr_volume_pedal_minimum);
811         if ((type & (LINE6_BITS_BASSPODXTALL)) != 0)
812                 if (firmware >= 200)
813                         device_remove_file(dev, &dev_attr_eq_pre_post);
814         device_remove_file(dev, &dev_attr_volume_pre_post);
815         if ((type & (LINE6_BITS_BASSPODXTALL)) != 0)
816                 device_remove_file(dev, &dev_attr_di_model);
817         if ((type & (LINE6_BITS_BASSPODXTALL)) != 0)
818                 device_remove_file(dev, &dev_attr_di_delay);
819         device_remove_file(dev, &dev_attr_mod_enable);
820         device_remove_file(dev, &dev_attr_mod_param_1_note_value);
821         device_remove_file(dev, &dev_attr_mod_param_2);
822         device_remove_file(dev, &dev_attr_mod_param_3);
823         device_remove_file(dev, &dev_attr_mod_param_4);
824         if ((type & (LINE6_BITS_BASSPODXTALL)) != 0)
825                 device_remove_file(dev, &dev_attr_mod_param_5);
826         device_remove_file(dev, &dev_attr_mod_volume_mix);
827         device_remove_file(dev, &dev_attr_mod_pre_post);
828         device_remove_file(dev, &dev_attr_modulation_model);
829         if ((type & (LINE6_BITS_PODXTALL)) != 0)
830                 if (firmware >= 200)
831                         device_remove_file(dev, &dev_attr_band_3_frequency);
832         if ((type & (LINE6_BITS_BASSPODXTALL)) != 0)
833                 if (firmware >= 200)
834                         device_remove_file(dev,
835                                            &dev_attr_band_4_frequency__bass);
836         device_remove_file(dev, &dev_attr_mod_param_1_double_precision);
837         device_remove_file(dev, &dev_attr_delay_param_1_double_precision);
838         if (firmware >= 200)
839                 device_remove_file(dev, &dev_attr_eq_enable);
840         device_remove_file(dev, &dev_attr_tap);
841         device_remove_file(dev, &dev_attr_volume_tweak_pedal_assign);
842         if ((type & (LINE6_BITS_BASSPODXTALL)) != 0)
843                 if (firmware >= 200)
844                         device_remove_file(dev, &dev_attr_band_5_frequency);
845         device_remove_file(dev, &dev_attr_tuner);
846         device_remove_file(dev, &dev_attr_mic_selection);
847         device_remove_file(dev, &dev_attr_cabinet_model);
848         device_remove_file(dev, &dev_attr_stomp_model);
849         device_remove_file(dev, &dev_attr_roomlevel);
850         if ((type & (LINE6_BITS_PODXTALL)) != 0)
851                 if (firmware >= 200)
852                         device_remove_file(dev, &dev_attr_band_4_frequency);
853         if ((type & (LINE6_BITS_BASSPODXTALL)) != 0)
854                 if (firmware >= 200)
855                         device_remove_file(dev, &dev_attr_band_6_frequency);
856         device_remove_file(dev, &dev_attr_stomp_param_1_note_value);
857         device_remove_file(dev, &dev_attr_stomp_param_2);
858         device_remove_file(dev, &dev_attr_stomp_param_3);
859         device_remove_file(dev, &dev_attr_stomp_param_4);
860         device_remove_file(dev, &dev_attr_stomp_param_5);
861         device_remove_file(dev, &dev_attr_stomp_param_6);
862         if ((type & (LINE6_BITS_LIVE)) != 0)
863                 device_remove_file(dev, &dev_attr_amp_switch_select);
864         device_remove_file(dev, &dev_attr_delay_param_4);
865         device_remove_file(dev, &dev_attr_delay_param_5);
866         device_remove_file(dev, &dev_attr_delay_pre_post);
867         if ((type & (LINE6_BITS_PODXTALL)) != 0)
868                 device_remove_file(dev, &dev_attr_delay_model);
869         if ((type & (LINE6_BITS_BASSPODXTALL)) != 0)
870                 device_remove_file(dev, &dev_attr_delay_verb_model);
871         device_remove_file(dev, &dev_attr_tempo_msb);
872         device_remove_file(dev, &dev_attr_tempo_lsb);
873         if (firmware >= 300)
874                 device_remove_file(dev, &dev_attr_wah_model);
875         if (firmware >= 214)
876                 device_remove_file(dev, &dev_attr_bypass_volume);
877         if ((type & (LINE6_BITS_PRO)) != 0)
878                 device_remove_file(dev, &dev_attr_fx_loop_on_off);
879         device_remove_file(dev, &dev_attr_tweak_param_select);
880         device_remove_file(dev, &dev_attr_amp1_engage);
881         if (firmware >= 200)
882                 device_remove_file(dev, &dev_attr_band_1_gain);
883         if ((type & (LINE6_BITS_BASSPODXTALL)) != 0)
884                 if (firmware >= 200)
885                         device_remove_file(dev, &dev_attr_band_2_gain__bass);
886         if ((type & (LINE6_BITS_PODXTALL)) != 0)
887                 if (firmware >= 200)
888                         device_remove_file(dev, &dev_attr_band_2_gain);
889         if ((type & (LINE6_BITS_BASSPODXTALL)) != 0)
890                 if (firmware >= 200)
891                         device_remove_file(dev, &dev_attr_band_3_gain__bass);
892         if ((type & (LINE6_BITS_PODXTALL)) != 0)
893                 if (firmware >= 200)
894                         device_remove_file(dev, &dev_attr_band_3_gain);
895         if ((type & (LINE6_BITS_BASSPODXTALL)) != 0)
896                 if (firmware >= 200)
897                         device_remove_file(dev, &dev_attr_band_4_gain__bass);
898         if ((type & (LINE6_BITS_BASSPODXTALL)) != 0)
899                 if (firmware >= 200)
900                         device_remove_file(dev, &dev_attr_band_5_gain__bass);
901         if ((type & (LINE6_BITS_PODXTALL)) != 0)
902                 if (firmware >= 200)
903                         device_remove_file(dev, &dev_attr_band_4_gain);
904         if ((type & (LINE6_BITS_BASSPODXTALL)) != 0)
905                 if (firmware >= 200)
906                         device_remove_file(dev, &dev_attr_band_6_gain__bass);
907 }
908
909 int line6_variax_create_files(int firmware, int type, struct device *dev)
910 {
911         int err;
912         CHECK_RETURN(device_create_file(dev, &dev_attr_body));
913         CHECK_RETURN(device_create_file(dev, &dev_attr_pickup1_enable));
914         CHECK_RETURN(device_create_file(dev, &dev_attr_pickup1_type));
915         CHECK_RETURN(device_create_file(dev, &dev_attr_pickup1_position));
916         CHECK_RETURN(device_create_file(dev, &dev_attr_pickup1_angle));
917         CHECK_RETURN(device_create_file(dev, &dev_attr_pickup1_level));
918         CHECK_RETURN(device_create_file(dev, &dev_attr_pickup2_enable));
919         CHECK_RETURN(device_create_file(dev, &dev_attr_pickup2_type));
920         CHECK_RETURN(device_create_file(dev, &dev_attr_pickup2_position));
921         CHECK_RETURN(device_create_file(dev, &dev_attr_pickup2_angle));
922         CHECK_RETURN(device_create_file(dev, &dev_attr_pickup2_level));
923         CHECK_RETURN(device_create_file(dev, &dev_attr_pickup_phase));
924         CHECK_RETURN(device_create_file(dev, &dev_attr_capacitance));
925         CHECK_RETURN(device_create_file(dev, &dev_attr_tone_resistance));
926         CHECK_RETURN(device_create_file(dev, &dev_attr_volume_resistance));
927         CHECK_RETURN(device_create_file(dev, &dev_attr_taper));
928         CHECK_RETURN(device_create_file(dev, &dev_attr_tone_dump));
929         CHECK_RETURN(device_create_file(dev, &dev_attr_save_tone));
930         CHECK_RETURN(device_create_file(dev, &dev_attr_volume_dump));
931         CHECK_RETURN(device_create_file(dev, &dev_attr_tuning_enable));
932         CHECK_RETURN(device_create_file(dev, &dev_attr_tuning6));
933         CHECK_RETURN(device_create_file(dev, &dev_attr_tuning5));
934         CHECK_RETURN(device_create_file(dev, &dev_attr_tuning4));
935         CHECK_RETURN(device_create_file(dev, &dev_attr_tuning3));
936         CHECK_RETURN(device_create_file(dev, &dev_attr_tuning2));
937         CHECK_RETURN(device_create_file(dev, &dev_attr_tuning1));
938         CHECK_RETURN(device_create_file(dev, &dev_attr_detune6));
939         CHECK_RETURN(device_create_file(dev, &dev_attr_detune5));
940         CHECK_RETURN(device_create_file(dev, &dev_attr_detune4));
941         CHECK_RETURN(device_create_file(dev, &dev_attr_detune3));
942         CHECK_RETURN(device_create_file(dev, &dev_attr_detune2));
943         CHECK_RETURN(device_create_file(dev, &dev_attr_detune1));
944         CHECK_RETURN(device_create_file(dev, &dev_attr_mix6));
945         CHECK_RETURN(device_create_file(dev, &dev_attr_mix5));
946         CHECK_RETURN(device_create_file(dev, &dev_attr_mix4));
947         CHECK_RETURN(device_create_file(dev, &dev_attr_mix3));
948         CHECK_RETURN(device_create_file(dev, &dev_attr_mix2));
949         CHECK_RETURN(device_create_file(dev, &dev_attr_mix1));
950         CHECK_RETURN(device_create_file(dev, &dev_attr_pickup_wiring));
951         return 0;
952 }
953
954 void line6_variax_remove_files(int firmware, int type, struct device *dev)
955 {
956         device_remove_file(dev, &dev_attr_body);
957         device_remove_file(dev, &dev_attr_pickup1_enable);
958         device_remove_file(dev, &dev_attr_pickup1_type);
959         device_remove_file(dev, &dev_attr_pickup1_position);
960         device_remove_file(dev, &dev_attr_pickup1_angle);
961         device_remove_file(dev, &dev_attr_pickup1_level);
962         device_remove_file(dev, &dev_attr_pickup2_enable);
963         device_remove_file(dev, &dev_attr_pickup2_type);
964         device_remove_file(dev, &dev_attr_pickup2_position);
965         device_remove_file(dev, &dev_attr_pickup2_angle);
966         device_remove_file(dev, &dev_attr_pickup2_level);
967         device_remove_file(dev, &dev_attr_pickup_phase);
968         device_remove_file(dev, &dev_attr_capacitance);
969         device_remove_file(dev, &dev_attr_tone_resistance);
970         device_remove_file(dev, &dev_attr_volume_resistance);
971         device_remove_file(dev, &dev_attr_taper);
972         device_remove_file(dev, &dev_attr_tone_dump);
973         device_remove_file(dev, &dev_attr_save_tone);
974         device_remove_file(dev, &dev_attr_volume_dump);
975         device_remove_file(dev, &dev_attr_tuning_enable);
976         device_remove_file(dev, &dev_attr_tuning6);
977         device_remove_file(dev, &dev_attr_tuning5);
978         device_remove_file(dev, &dev_attr_tuning4);
979         device_remove_file(dev, &dev_attr_tuning3);
980         device_remove_file(dev, &dev_attr_tuning2);
981         device_remove_file(dev, &dev_attr_tuning1);
982         device_remove_file(dev, &dev_attr_detune6);
983         device_remove_file(dev, &dev_attr_detune5);
984         device_remove_file(dev, &dev_attr_detune4);
985         device_remove_file(dev, &dev_attr_detune3);
986         device_remove_file(dev, &dev_attr_detune2);
987         device_remove_file(dev, &dev_attr_detune1);
988         device_remove_file(dev, &dev_attr_mix6);
989         device_remove_file(dev, &dev_attr_mix5);
990         device_remove_file(dev, &dev_attr_mix4);
991         device_remove_file(dev, &dev_attr_mix3);
992         device_remove_file(dev, &dev_attr_mix2);
993         device_remove_file(dev, &dev_attr_mix1);
994         device_remove_file(dev, &dev_attr_pickup_wiring);
995 }