diff options
author | Jonathan Herman <hermanjl@cs.unc.edu> | 2013-01-22 10:38:37 -0500 |
---|---|---|
committer | Jonathan Herman <hermanjl@cs.unc.edu> | 2013-01-22 10:38:37 -0500 |
commit | fcc9d2e5a6c89d22b8b773a64fb4ad21ac318446 (patch) | |
tree | a57612d1888735a2ec7972891b68c1ac5ec8faea /drivers/staging/line6/control.c | |
parent | 8dea78da5cee153b8af9c07a2745f6c55057fe12 (diff) |
Diffstat (limited to 'drivers/staging/line6/control.c')
-rw-r--r-- | drivers/staging/line6/control.c | 995 |
1 files changed, 995 insertions, 0 deletions
diff --git a/drivers/staging/line6/control.c b/drivers/staging/line6/control.c new file mode 100644 index 00000000000..67e23b6e2d3 --- /dev/null +++ b/drivers/staging/line6/control.c | |||
@@ -0,0 +1,995 @@ | |||
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_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, | ||
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 | } | ||