Linux Kernel  3.7.1
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Groups Pages
control.c
Go to the documentation of this file.
1 /*
2  * Line6 Linux USB driver - 0.9.1beta
3  *
4  * Copyright (C) 2004-2010 Markus Grabner ([email protected])
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  u8 value;
59  int retval;
60 
61  retval = kstrtou8(buf, 10, &value);
62  if (retval)
63  return retval;
64 
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_IWUSR | S_IRUGO, pod_get_tweak, pod_set_tweak);
270 static DEVICE_ATTR(wah_position, S_IWUSR | S_IRUGO, pod_get_wah_position,
271  pod_set_wah_position);
272 static DEVICE_ATTR(compression_gain, S_IWUSR | S_IRUGO,
273  pod_get_compression_gain, pod_set_compression_gain);
274 static DEVICE_ATTR(vol_pedal_position, S_IWUSR | S_IRUGO,
275  pod_get_vol_pedal_position, pod_set_vol_pedal_position);
276 static DEVICE_ATTR(compression_threshold, S_IWUSR | S_IRUGO,
277  pod_get_compression_threshold,
278  pod_set_compression_threshold);
279 static DEVICE_ATTR(pan, S_IWUSR | S_IRUGO, pod_get_pan, pod_set_pan);
280 static DEVICE_ATTR(amp_model_setup, S_IWUSR | S_IRUGO, pod_get_amp_model_setup,
281  pod_set_amp_model_setup);
282 static DEVICE_ATTR(amp_model, S_IWUSR | S_IRUGO, pod_get_amp_model,
283  pod_set_amp_model);
284 static DEVICE_ATTR(drive, S_IWUSR | S_IRUGO, pod_get_drive, pod_set_drive);
285 static DEVICE_ATTR(bass, S_IWUSR | S_IRUGO, pod_get_bass, pod_set_bass);
286 static DEVICE_ATTR(mid, S_IWUSR | S_IRUGO, pod_get_mid, pod_set_mid);
287 static DEVICE_ATTR(lowmid, S_IWUSR | S_IRUGO, pod_get_lowmid, pod_set_lowmid);
288 static DEVICE_ATTR(treble, S_IWUSR | S_IRUGO, pod_get_treble, pod_set_treble);
289 static DEVICE_ATTR(highmid, S_IWUSR | S_IRUGO, pod_get_highmid,
290  pod_set_highmid);
291 static DEVICE_ATTR(chan_vol, S_IWUSR | S_IRUGO, pod_get_chan_vol,
292  pod_set_chan_vol);
293 static DEVICE_ATTR(reverb_mix, S_IWUSR | S_IRUGO, pod_get_reverb_mix,
294  pod_set_reverb_mix);
295 static DEVICE_ATTR(effect_setup, S_IWUSR | S_IRUGO, pod_get_effect_setup,
296  pod_set_effect_setup);
297 static DEVICE_ATTR(band_1_frequency, S_IWUSR | S_IRUGO,
298  pod_get_band_1_frequency, pod_set_band_1_frequency);
299 static DEVICE_ATTR(presence, S_IWUSR | S_IRUGO, pod_get_presence,
300  pod_set_presence);
301 static DEVICE_ATTR2(treble__bass, treble, S_IWUSR | S_IRUGO,
302  pod_get_treble__bass, pod_set_treble__bass);
303 static DEVICE_ATTR(noise_gate_enable, S_IWUSR | S_IRUGO,
304  pod_get_noise_gate_enable, pod_set_noise_gate_enable);
305 static DEVICE_ATTR(gate_threshold, S_IWUSR | S_IRUGO, pod_get_gate_threshold,
306  pod_set_gate_threshold);
307 static DEVICE_ATTR(gate_decay_time, S_IWUSR | S_IRUGO, pod_get_gate_decay_time,
308  pod_set_gate_decay_time);
309 static DEVICE_ATTR(stomp_enable, S_IWUSR | S_IRUGO, pod_get_stomp_enable,
310  pod_set_stomp_enable);
311 static DEVICE_ATTR(comp_enable, S_IWUSR | S_IRUGO, pod_get_comp_enable,
312  pod_set_comp_enable);
313 static DEVICE_ATTR(stomp_time, S_IWUSR | S_IRUGO, pod_get_stomp_time,
314  pod_set_stomp_time);
315 static DEVICE_ATTR(delay_enable, S_IWUSR | S_IRUGO, pod_get_delay_enable,
316  pod_set_delay_enable);
317 static DEVICE_ATTR(mod_param_1, S_IWUSR | S_IRUGO, pod_get_mod_param_1,
318  pod_set_mod_param_1);
319 static DEVICE_ATTR(delay_param_1, S_IWUSR | S_IRUGO, pod_get_delay_param_1,
320  pod_set_delay_param_1);
321 static DEVICE_ATTR(delay_param_1_note_value, S_IWUSR | 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_IWUSR | S_IRUGO,
325  pod_get_band_2_frequency__bass,
326  pod_set_band_2_frequency__bass);
327 static DEVICE_ATTR(delay_param_2, S_IWUSR | S_IRUGO, pod_get_delay_param_2,
328  pod_set_delay_param_2);
329 static DEVICE_ATTR(delay_volume_mix, S_IWUSR | S_IRUGO,
330  pod_get_delay_volume_mix, pod_set_delay_volume_mix);
331 static DEVICE_ATTR(delay_param_3, S_IWUSR | S_IRUGO, pod_get_delay_param_3,
332  pod_set_delay_param_3);
333 static DEVICE_ATTR(reverb_enable, S_IWUSR | S_IRUGO, pod_get_reverb_enable,
334  pod_set_reverb_enable);
335 static DEVICE_ATTR(reverb_type, S_IWUSR | S_IRUGO, pod_get_reverb_type,
336  pod_set_reverb_type);
337 static DEVICE_ATTR(reverb_decay, S_IWUSR | S_IRUGO, pod_get_reverb_decay,
338  pod_set_reverb_decay);
339 static DEVICE_ATTR(reverb_tone, S_IWUSR | S_IRUGO, pod_get_reverb_tone,
340  pod_set_reverb_tone);
341 static DEVICE_ATTR(reverb_pre_delay, S_IWUSR | S_IRUGO,
342  pod_get_reverb_pre_delay, pod_set_reverb_pre_delay);
343 static DEVICE_ATTR(reverb_pre_post, S_IWUSR | S_IRUGO, pod_get_reverb_pre_post,
344  pod_set_reverb_pre_post);
345 static DEVICE_ATTR(band_2_frequency, S_IWUSR | 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_IWUSR | S_IRUGO,
348  pod_get_band_3_frequency__bass,
349  pod_set_band_3_frequency__bass);
350 static DEVICE_ATTR(wah_enable, S_IWUSR | S_IRUGO, pod_get_wah_enable,
351  pod_set_wah_enable);
352 static DEVICE_ATTR(modulation_lo_cut, S_IWUSR | S_IRUGO,
353  pod_get_modulation_lo_cut, pod_set_modulation_lo_cut);
354 static DEVICE_ATTR(delay_reverb_lo_cut, S_IWUSR | S_IRUGO,
355  pod_get_delay_reverb_lo_cut, pod_set_delay_reverb_lo_cut);
356 static DEVICE_ATTR(volume_pedal_minimum, S_IWUSR | S_IRUGO,
357  pod_get_volume_pedal_minimum, pod_set_volume_pedal_minimum);
358 static DEVICE_ATTR(eq_pre_post, S_IWUSR | S_IRUGO, pod_get_eq_pre_post,
359  pod_set_eq_pre_post);
360 static DEVICE_ATTR(volume_pre_post, S_IWUSR | S_IRUGO, pod_get_volume_pre_post,
361  pod_set_volume_pre_post);
362 static DEVICE_ATTR(di_model, S_IWUSR | S_IRUGO, pod_get_di_model,
363  pod_set_di_model);
364 static DEVICE_ATTR(di_delay, S_IWUSR | S_IRUGO, pod_get_di_delay,
365  pod_set_di_delay);
366 static DEVICE_ATTR(mod_enable, S_IWUSR | S_IRUGO, pod_get_mod_enable,
367  pod_set_mod_enable);
368 static DEVICE_ATTR(mod_param_1_note_value, S_IWUSR | 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_IWUSR | S_IRUGO, pod_get_mod_param_2,
372  pod_set_mod_param_2);
373 static DEVICE_ATTR(mod_param_3, S_IWUSR | S_IRUGO, pod_get_mod_param_3,
374  pod_set_mod_param_3);
375 static DEVICE_ATTR(mod_param_4, S_IWUSR | S_IRUGO, pod_get_mod_param_4,
376  pod_set_mod_param_4);
377 static DEVICE_ATTR(mod_param_5, S_IWUSR | S_IRUGO, pod_get_mod_param_5,
378  pod_set_mod_param_5);
379 static DEVICE_ATTR(mod_volume_mix, S_IWUSR | S_IRUGO, pod_get_mod_volume_mix,
380  pod_set_mod_volume_mix);
381 static DEVICE_ATTR(mod_pre_post, S_IWUSR | S_IRUGO, pod_get_mod_pre_post,
382  pod_set_mod_pre_post);
383 static DEVICE_ATTR(modulation_model, S_IWUSR | S_IRUGO,
384  pod_get_modulation_model, pod_set_modulation_model);
385 static DEVICE_ATTR(band_3_frequency, S_IWUSR | 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_IWUSR | 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_IWUSR | 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_IWUSR | 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_IWUSR | S_IRUGO, pod_get_eq_enable,
397  pod_set_eq_enable);
398 static DEVICE_ATTR(tap, S_IWUSR | S_IRUGO, pod_get_tap, pod_set_tap);
399 static DEVICE_ATTR(volume_tweak_pedal_assign, S_IWUSR | S_IRUGO,
400  pod_get_volume_tweak_pedal_assign,
401  pod_set_volume_tweak_pedal_assign);
402 static DEVICE_ATTR(band_5_frequency, S_IWUSR | S_IRUGO,
403  pod_get_band_5_frequency, pod_set_band_5_frequency);
404 static DEVICE_ATTR(tuner, S_IWUSR | S_IRUGO, pod_get_tuner, pod_set_tuner);
405 static DEVICE_ATTR(mic_selection, S_IWUSR | S_IRUGO, pod_get_mic_selection,
406  pod_set_mic_selection);
407 static DEVICE_ATTR(cabinet_model, S_IWUSR | S_IRUGO, pod_get_cabinet_model,
408  pod_set_cabinet_model);
409 static DEVICE_ATTR(stomp_model, S_IWUSR | S_IRUGO, pod_get_stomp_model,
410  pod_set_stomp_model);
411 static DEVICE_ATTR(roomlevel, S_IWUSR | S_IRUGO, pod_get_roomlevel,
412  pod_set_roomlevel);
413 static DEVICE_ATTR(band_4_frequency, S_IWUSR | S_IRUGO,
414  pod_get_band_4_frequency, pod_set_band_4_frequency);
415 static DEVICE_ATTR(band_6_frequency, S_IWUSR | S_IRUGO,
416  pod_get_band_6_frequency, pod_set_band_6_frequency);
417 static DEVICE_ATTR(stomp_param_1_note_value, S_IWUSR | 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_IWUSR | S_IRUGO, pod_get_stomp_param_2,
421  pod_set_stomp_param_2);
422 static DEVICE_ATTR(stomp_param_3, S_IWUSR | S_IRUGO, pod_get_stomp_param_3,
423  pod_set_stomp_param_3);
424 static DEVICE_ATTR(stomp_param_4, S_IWUSR | S_IRUGO, pod_get_stomp_param_4,
425  pod_set_stomp_param_4);
426 static DEVICE_ATTR(stomp_param_5, S_IWUSR | S_IRUGO, pod_get_stomp_param_5,
427  pod_set_stomp_param_5);
428 static DEVICE_ATTR(stomp_param_6, S_IWUSR | S_IRUGO, pod_get_stomp_param_6,
429  pod_set_stomp_param_6);
430 static DEVICE_ATTR(amp_switch_select, S_IWUSR | S_IRUGO,
431  pod_get_amp_switch_select, pod_set_amp_switch_select);
432 static DEVICE_ATTR(delay_param_4, S_IWUSR | S_IRUGO, pod_get_delay_param_4,
433  pod_set_delay_param_4);
434 static DEVICE_ATTR(delay_param_5, S_IWUSR | S_IRUGO, pod_get_delay_param_5,
435  pod_set_delay_param_5);
436 static DEVICE_ATTR(delay_pre_post, S_IWUSR | S_IRUGO, pod_get_delay_pre_post,
437  pod_set_delay_pre_post);
438 static DEVICE_ATTR(delay_model, S_IWUSR | S_IRUGO, pod_get_delay_model,
439  pod_set_delay_model);
440 static DEVICE_ATTR(delay_verb_model, S_IWUSR | S_IRUGO,
441  pod_get_delay_verb_model, pod_set_delay_verb_model);
442 static DEVICE_ATTR(tempo_msb, S_IWUSR | S_IRUGO, pod_get_tempo_msb,
443  pod_set_tempo_msb);
444 static DEVICE_ATTR(tempo_lsb, S_IWUSR | S_IRUGO, pod_get_tempo_lsb,
445  pod_set_tempo_lsb);
446 static DEVICE_ATTR(wah_model, S_IWUSR | S_IRUGO, pod_get_wah_model,
447  pod_set_wah_model);
448 static DEVICE_ATTR(bypass_volume, S_IWUSR | S_IRUGO, pod_get_bypass_volume,
449  pod_set_bypass_volume);
450 static DEVICE_ATTR(fx_loop_on_off, S_IWUSR | S_IRUGO, pod_get_fx_loop_on_off,
451  pod_set_fx_loop_on_off);
452 static DEVICE_ATTR(tweak_param_select, S_IWUSR | S_IRUGO,
453  pod_get_tweak_param_select, pod_set_tweak_param_select);
454 static DEVICE_ATTR(amp1_engage, S_IWUSR | S_IRUGO, pod_get_amp1_engage,
455  pod_set_amp1_engage);
456 static DEVICE_ATTR(band_1_gain, S_IWUSR | 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_IWUSR | S_IRUGO,
459  pod_get_band_2_gain__bass, pod_set_band_2_gain__bass);
460 static DEVICE_ATTR(band_2_gain, S_IWUSR | 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_IWUSR | S_IRUGO,
463  pod_get_band_3_gain__bass, pod_set_band_3_gain__bass);
464 static DEVICE_ATTR(band_3_gain, S_IWUSR | 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_IWUSR | 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_IWUSR | S_IRUGO,
469  pod_get_band_5_gain__bass, pod_set_band_5_gain__bass);
470 static DEVICE_ATTR(band_4_gain, S_IWUSR | 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_IWUSR | 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,
477 static DEVICE_ATTR(pickup1_type, S_IRUGO, variax_get_pickup1_type,
479 static DEVICE_ATTR(pickup1_position, S_IRUGO, variax_get_pickup1_position,
481 static DEVICE_ATTR(pickup1_angle, S_IRUGO, variax_get_pickup1_angle,
483 static DEVICE_ATTR(pickup1_level, S_IRUGO, variax_get_pickup1_level,
485 static DEVICE_ATTR(pickup2_enable, S_IRUGO, variax_get_pickup2_enable,
487 static DEVICE_ATTR(pickup2_type, S_IRUGO, variax_get_pickup2_type,
489 static DEVICE_ATTR(pickup2_position, S_IRUGO, variax_get_pickup2_position,
491 static DEVICE_ATTR(pickup2_angle, S_IRUGO, variax_get_pickup2_angle,
493 static DEVICE_ATTR(pickup2_level, S_IRUGO, variax_get_pickup2_level,
495 static DEVICE_ATTR(pickup_phase, S_IRUGO, variax_get_pickup_phase,
497 static DEVICE_ATTR(capacitance, S_IRUGO, variax_get_capacitance,
499 static DEVICE_ATTR(tone_resistance, S_IRUGO, variax_get_tone_resistance,
501 static DEVICE_ATTR(volume_resistance, S_IRUGO, variax_get_volume_resistance,
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,
508 static DEVICE_ATTR(tuning_enable, S_IRUGO, variax_get_tuning_enable,
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,
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)
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)
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));
576  (dev, &dev_attr_delay_param_1_note_value));
577  if ((type & (LINE6_BITS_BASSPODXTALL)) != 0)
578  if (firmware >= 200)
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)
594  (dev, &dev_attr_reverb_pre_delay));
595  if ((type & (LINE6_BITS_PODXTALL)) != 0)
597  (dev, &dev_attr_reverb_pre_post));
598  if ((type & (LINE6_BITS_PODXTALL)) != 0)
599  if (firmware >= 200)
601  (dev, &dev_attr_band_2_frequency));
602  if ((type & (LINE6_BITS_BASSPODXTALL)) != 0)
603  if (firmware >= 200)
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)
609  (dev, &dev_attr_modulation_lo_cut));
610  if ((type & (LINE6_BITS_BASSPODXTALL)) != 0)
612  (dev, &dev_attr_delay_reverb_lo_cut));
613  if ((type & (LINE6_BITS_PODXTALL)) != 0)
614  if (firmware >= 200)
616  (dev, &dev_attr_volume_pedal_minimum));
617  if ((type & (LINE6_BITS_BASSPODXTALL)) != 0)
618  if (firmware >= 200)
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)
639  (dev, &dev_attr_band_3_frequency));
640  if ((type & (LINE6_BITS_BASSPODXTALL)) != 0)
641  if (firmware >= 200)
643  (dev, &dev_attr_band_4_frequency__bass));
645  (dev, &dev_attr_mod_param_1_double_precision));
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));
652  (dev, &dev_attr_volume_tweak_pedal_assign));
653  if ((type & (LINE6_BITS_BASSPODXTALL)) != 0)
654  if (firmware >= 200)
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)
665  (dev, &dev_attr_band_4_frequency));
666  if ((type & (LINE6_BITS_BASSPODXTALL)) != 0)
667  if (firmware >= 200)
669  (dev, &dev_attr_band_6_frequency));
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)
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)
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)
703  (dev, &dev_attr_band_2_gain__bass));
704  if ((type & (LINE6_BITS_PODXTALL)) != 0)
705  if (firmware >= 200)
707  (dev, &dev_attr_band_2_gain));
708  if ((type & (LINE6_BITS_BASSPODXTALL)) != 0)
709  if (firmware >= 200)
711  (dev, &dev_attr_band_3_gain__bass));
712  if ((type & (LINE6_BITS_PODXTALL)) != 0)
713  if (firmware >= 200)
715  (dev, &dev_attr_band_3_gain));
716  if ((type & (LINE6_BITS_BASSPODXTALL)) != 0)
717  if (firmware >= 200)
719  (dev, &dev_attr_band_4_gain__bass));
720  if ((type & (LINE6_BITS_BASSPODXTALL)) != 0)
721  if (firmware >= 200)
723  (dev, &dev_attr_band_5_gain__bass));
724  if ((type & (LINE6_BITS_PODXTALL)) != 0)
725  if (firmware >= 200)
727  (dev, &dev_attr_band_4_gain));
728  if ((type & (LINE6_BITS_BASSPODXTALL)) != 0)
729  if (firmware >= 200)
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 }