Commit | Line | Data |
---|---|---|
705ececd | 1 | /* |
e1a164d7 | 2 | * Line6 Linux USB driver - 0.9.1beta |
705ececd | 3 | * |
1027f476 | 4 | * Copyright (C) 2004-2010 Markus Grabner (grabner@icg.tugraz.at) |
705ececd MG |
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 | ||
705ececd MG |
12 | #include <linux/usb.h> |
13 | ||
14 | #include "control.h" | |
1027f476 | 15 | #include "driver.h" |
705ececd MG |
16 | #include "pod.h" |
17 | #include "usbdefs.h" | |
18 | #include "variax.h" | |
19 | ||
9a92fadc GKH |
20 | #define DEVICE_ATTR2(_name1, _name2, _mode, _show, _store) \ |
21 | struct device_attribute dev_attr_##_name1 = __ATTR(_name2, _mode, _show, _store) | |
705ececd MG |
22 | |
23 | #define LINE6_PARAM_R(PREFIX, prefix, type, param) \ | |
2a20bf6f | 24 | static ssize_t prefix##_get_##param(struct device *dev, \ |
77491e52 | 25 | struct device_attribute *attr, char *buf) \ |
705ececd | 26 | { \ |
2a20bf6f | 27 | return prefix##_get_param_##type(dev, buf, PREFIX##_##param); \ |
705ececd MG |
28 | } |
29 | ||
30 | #define LINE6_PARAM_RW(PREFIX, prefix, type, param) \ | |
31 | LINE6_PARAM_R(PREFIX, prefix, type, param); \ | |
2a20bf6f | 32 | static ssize_t prefix##_set_##param(struct device *dev, \ |
77491e52 | 33 | struct device_attribute *attr, const char *buf, size_t count) \ |
705ececd | 34 | { \ |
2a20bf6f | 35 | return prefix##_set_param_##type(dev, buf, count, PREFIX##_##param); \ |
705ececd MG |
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 | ||
705ececd MG |
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); | |
1027f476 | 47 | int retval = line6_dump_wait_interruptible(&pod->dumpreq); |
9a92fadc GKH |
48 | if (retval < 0) |
49 | return retval; | |
705ececd MG |
50 | return sprintf(buf, "%d\n", pod->prog_data.control[param]); |
51 | } | |
52 | ||
acdc1021 SB |
53 | static ssize_t pod_set_param_int(struct device *dev, const char *buf, |
54 | size_t count, int param) | |
705ececd MG |
55 | { |
56 | struct usb_interface *interface = to_usb_interface(dev); | |
57 | struct usb_line6_pod *pod = usb_get_intfdata(interface); | |
49da3dd9 SB |
58 | unsigned long value; |
59 | int retval; | |
60 | ||
61 | retval = strict_strtoul(buf, 10, &value); | |
62 | if (retval) | |
63 | return retval; | |
64 | ||
1027f476 | 65 | line6_pod_transmit_parameter(pod, param, value); |
705ececd MG |
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); | |
1027f476 | 73 | int retval = line6_dump_wait_interruptible(&variax->dumpreq); |
9a92fadc GKH |
74 | if (retval < 0) |
75 | return retval; | |
705ececd MG |
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 | /* | |
1027f476 MG |
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. | |
acdc1021 | 87 | */ |
705ececd MG |
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; | |
1027f476 | 98 | int retval = line6_dump_wait_interruptible(&variax->dumpreq); |
9a92fadc GKH |
99 | if (retval < 0) |
100 | return retval; | |
705ececd | 101 | |
9a92fadc | 102 | if ((p[0] == 0) && (p[1] == 0) && (p[2] == 0)) |
705ececd MG |
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 | ||
9a92fadc | 109 | if (exponent >= 0) { |
705ececd MG |
110 | part_int = mantissa << exponent; |
111 | part_frac = 0; | |
9a92fadc | 112 | } else { |
705ececd MG |
113 | part_int = mantissa >> -exponent; |
114 | part_frac = (mantissa << (32 + exponent)) & 0xffffffff; | |
115 | } | |
116 | ||
acdc1021 SB |
117 | part_frac = |
118 | (part_frac / ((1UL << 31) / (PRECISION / 2 * 10)) + 5) / 10; | |
705ececd MG |
119 | } |
120 | ||
acdc1021 SB |
121 | len += |
122 | sprintf(buf + len, "%s%d.%03d\n", ((p[0] & 0x80) ? "-" : ""), | |
123 | part_int, part_frac); | |
705ececd MG |
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 | ||
a3a972a0 GKH |
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, | |
acdc1021 | 271 | pod_set_wah_position); |
a3a972a0 | 272 | static DEVICE_ATTR(compression_gain, S_IWUSR | S_IRUGO, |
acdc1021 | 273 | pod_get_compression_gain, pod_set_compression_gain); |
a3a972a0 | 274 | static DEVICE_ATTR(vol_pedal_position, S_IWUSR | S_IRUGO, |
acdc1021 | 275 | pod_get_vol_pedal_position, pod_set_vol_pedal_position); |
a3a972a0 | 276 | static DEVICE_ATTR(compression_threshold, S_IWUSR | S_IRUGO, |
acdc1021 SB |
277 | pod_get_compression_threshold, |
278 | pod_set_compression_threshold); | |
a3a972a0 GKH |
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, | |
acdc1021 | 281 | pod_set_amp_model_setup); |
a3a972a0 | 282 | static DEVICE_ATTR(amp_model, S_IWUSR | S_IRUGO, pod_get_amp_model, |
acdc1021 | 283 | pod_set_amp_model); |
a3a972a0 GKH |
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, | |
acdc1021 | 290 | pod_set_highmid); |
a3a972a0 | 291 | static DEVICE_ATTR(chan_vol, S_IWUSR | S_IRUGO, pod_get_chan_vol, |
acdc1021 | 292 | pod_set_chan_vol); |
a3a972a0 | 293 | static DEVICE_ATTR(reverb_mix, S_IWUSR | S_IRUGO, pod_get_reverb_mix, |
acdc1021 | 294 | pod_set_reverb_mix); |
a3a972a0 | 295 | static DEVICE_ATTR(effect_setup, S_IWUSR | S_IRUGO, pod_get_effect_setup, |
acdc1021 | 296 | pod_set_effect_setup); |
a3a972a0 | 297 | static DEVICE_ATTR(band_1_frequency, S_IWUSR | S_IRUGO, |
acdc1021 | 298 | pod_get_band_1_frequency, pod_set_band_1_frequency); |
a3a972a0 | 299 | static DEVICE_ATTR(presence, S_IWUSR | S_IRUGO, pod_get_presence, |
acdc1021 | 300 | pod_set_presence); |
a3a972a0 | 301 | static DEVICE_ATTR2(treble__bass, treble, S_IWUSR | S_IRUGO, |
acdc1021 | 302 | pod_get_treble__bass, pod_set_treble__bass); |
a3a972a0 | 303 | static DEVICE_ATTR(noise_gate_enable, S_IWUSR | S_IRUGO, |
acdc1021 | 304 | pod_get_noise_gate_enable, pod_set_noise_gate_enable); |
a3a972a0 | 305 | static DEVICE_ATTR(gate_threshold, S_IWUSR | S_IRUGO, pod_get_gate_threshold, |
acdc1021 | 306 | pod_set_gate_threshold); |
a3a972a0 | 307 | static DEVICE_ATTR(gate_decay_time, S_IWUSR | S_IRUGO, pod_get_gate_decay_time, |
acdc1021 | 308 | pod_set_gate_decay_time); |
a3a972a0 | 309 | static DEVICE_ATTR(stomp_enable, S_IWUSR | S_IRUGO, pod_get_stomp_enable, |
acdc1021 | 310 | pod_set_stomp_enable); |
a3a972a0 | 311 | static DEVICE_ATTR(comp_enable, S_IWUSR | S_IRUGO, pod_get_comp_enable, |
acdc1021 | 312 | pod_set_comp_enable); |
a3a972a0 | 313 | static DEVICE_ATTR(stomp_time, S_IWUSR | S_IRUGO, pod_get_stomp_time, |
acdc1021 | 314 | pod_set_stomp_time); |
a3a972a0 | 315 | static DEVICE_ATTR(delay_enable, S_IWUSR | S_IRUGO, pod_get_delay_enable, |
acdc1021 | 316 | pod_set_delay_enable); |
a3a972a0 | 317 | static DEVICE_ATTR(mod_param_1, S_IWUSR | S_IRUGO, pod_get_mod_param_1, |
acdc1021 | 318 | pod_set_mod_param_1); |
a3a972a0 | 319 | static DEVICE_ATTR(delay_param_1, S_IWUSR | S_IRUGO, pod_get_delay_param_1, |
acdc1021 | 320 | pod_set_delay_param_1); |
a3a972a0 | 321 | static DEVICE_ATTR(delay_param_1_note_value, S_IWUSR | S_IRUGO, |
acdc1021 SB |
322 | pod_get_delay_param_1_note_value, |
323 | pod_set_delay_param_1_note_value); | |
a3a972a0 | 324 | static DEVICE_ATTR2(band_2_frequency__bass, band_2_frequency, S_IWUSR | S_IRUGO, |
acdc1021 SB |
325 | pod_get_band_2_frequency__bass, |
326 | pod_set_band_2_frequency__bass); | |
a3a972a0 | 327 | static DEVICE_ATTR(delay_param_2, S_IWUSR | S_IRUGO, pod_get_delay_param_2, |
acdc1021 | 328 | pod_set_delay_param_2); |
a3a972a0 | 329 | static DEVICE_ATTR(delay_volume_mix, S_IWUSR | S_IRUGO, |
acdc1021 | 330 | pod_get_delay_volume_mix, pod_set_delay_volume_mix); |
a3a972a0 | 331 | static DEVICE_ATTR(delay_param_3, S_IWUSR | S_IRUGO, pod_get_delay_param_3, |
acdc1021 | 332 | pod_set_delay_param_3); |
a3a972a0 | 333 | static DEVICE_ATTR(reverb_enable, S_IWUSR | S_IRUGO, pod_get_reverb_enable, |
acdc1021 | 334 | pod_set_reverb_enable); |
a3a972a0 | 335 | static DEVICE_ATTR(reverb_type, S_IWUSR | S_IRUGO, pod_get_reverb_type, |
acdc1021 | 336 | pod_set_reverb_type); |
a3a972a0 | 337 | static DEVICE_ATTR(reverb_decay, S_IWUSR | S_IRUGO, pod_get_reverb_decay, |
acdc1021 | 338 | pod_set_reverb_decay); |
a3a972a0 | 339 | static DEVICE_ATTR(reverb_tone, S_IWUSR | S_IRUGO, pod_get_reverb_tone, |
acdc1021 | 340 | pod_set_reverb_tone); |
a3a972a0 | 341 | static DEVICE_ATTR(reverb_pre_delay, S_IWUSR | S_IRUGO, |
acdc1021 | 342 | pod_get_reverb_pre_delay, pod_set_reverb_pre_delay); |
a3a972a0 | 343 | static DEVICE_ATTR(reverb_pre_post, S_IWUSR | S_IRUGO, pod_get_reverb_pre_post, |
acdc1021 | 344 | pod_set_reverb_pre_post); |
a3a972a0 | 345 | static DEVICE_ATTR(band_2_frequency, S_IWUSR | S_IRUGO, |
acdc1021 | 346 | pod_get_band_2_frequency, pod_set_band_2_frequency); |
a3a972a0 | 347 | static DEVICE_ATTR2(band_3_frequency__bass, band_3_frequency, S_IWUSR | S_IRUGO, |
acdc1021 SB |
348 | pod_get_band_3_frequency__bass, |
349 | pod_set_band_3_frequency__bass); | |
a3a972a0 | 350 | static DEVICE_ATTR(wah_enable, S_IWUSR | S_IRUGO, pod_get_wah_enable, |
acdc1021 | 351 | pod_set_wah_enable); |
a3a972a0 | 352 | static DEVICE_ATTR(modulation_lo_cut, S_IWUSR | S_IRUGO, |
acdc1021 | 353 | pod_get_modulation_lo_cut, pod_set_modulation_lo_cut); |
a3a972a0 | 354 | static DEVICE_ATTR(delay_reverb_lo_cut, S_IWUSR | S_IRUGO, |
acdc1021 | 355 | pod_get_delay_reverb_lo_cut, pod_set_delay_reverb_lo_cut); |
a3a972a0 | 356 | static DEVICE_ATTR(volume_pedal_minimum, S_IWUSR | S_IRUGO, |
acdc1021 | 357 | pod_get_volume_pedal_minimum, pod_set_volume_pedal_minimum); |
a3a972a0 | 358 | static DEVICE_ATTR(eq_pre_post, S_IWUSR | S_IRUGO, pod_get_eq_pre_post, |
acdc1021 | 359 | pod_set_eq_pre_post); |
a3a972a0 | 360 | static DEVICE_ATTR(volume_pre_post, S_IWUSR | S_IRUGO, pod_get_volume_pre_post, |
acdc1021 | 361 | pod_set_volume_pre_post); |
a3a972a0 | 362 | static DEVICE_ATTR(di_model, S_IWUSR | S_IRUGO, pod_get_di_model, |
acdc1021 | 363 | pod_set_di_model); |
a3a972a0 | 364 | static DEVICE_ATTR(di_delay, S_IWUSR | S_IRUGO, pod_get_di_delay, |
acdc1021 | 365 | pod_set_di_delay); |
a3a972a0 | 366 | static DEVICE_ATTR(mod_enable, S_IWUSR | S_IRUGO, pod_get_mod_enable, |
acdc1021 | 367 | pod_set_mod_enable); |
a3a972a0 | 368 | static DEVICE_ATTR(mod_param_1_note_value, S_IWUSR | S_IRUGO, |
acdc1021 SB |
369 | pod_get_mod_param_1_note_value, |
370 | pod_set_mod_param_1_note_value); | |
a3a972a0 | 371 | static DEVICE_ATTR(mod_param_2, S_IWUSR | S_IRUGO, pod_get_mod_param_2, |
acdc1021 | 372 | pod_set_mod_param_2); |
a3a972a0 | 373 | static DEVICE_ATTR(mod_param_3, S_IWUSR | S_IRUGO, pod_get_mod_param_3, |
acdc1021 | 374 | pod_set_mod_param_3); |
a3a972a0 | 375 | static DEVICE_ATTR(mod_param_4, S_IWUSR | S_IRUGO, pod_get_mod_param_4, |
acdc1021 | 376 | pod_set_mod_param_4); |
a3a972a0 | 377 | static DEVICE_ATTR(mod_param_5, S_IWUSR | S_IRUGO, pod_get_mod_param_5, |
acdc1021 | 378 | pod_set_mod_param_5); |
a3a972a0 | 379 | static DEVICE_ATTR(mod_volume_mix, S_IWUSR | S_IRUGO, pod_get_mod_volume_mix, |
acdc1021 | 380 | pod_set_mod_volume_mix); |
a3a972a0 | 381 | static DEVICE_ATTR(mod_pre_post, S_IWUSR | S_IRUGO, pod_get_mod_pre_post, |
acdc1021 | 382 | pod_set_mod_pre_post); |
a3a972a0 | 383 | static DEVICE_ATTR(modulation_model, S_IWUSR | S_IRUGO, |
acdc1021 | 384 | pod_get_modulation_model, pod_set_modulation_model); |
a3a972a0 | 385 | static DEVICE_ATTR(band_3_frequency, S_IWUSR | S_IRUGO, |
acdc1021 | 386 | pod_get_band_3_frequency, pod_set_band_3_frequency); |
a3a972a0 | 387 | static DEVICE_ATTR2(band_4_frequency__bass, band_4_frequency, S_IWUSR | S_IRUGO, |
acdc1021 SB |
388 | pod_get_band_4_frequency__bass, |
389 | pod_set_band_4_frequency__bass); | |
a3a972a0 | 390 | static DEVICE_ATTR(mod_param_1_double_precision, S_IWUSR | S_IRUGO, |
acdc1021 SB |
391 | pod_get_mod_param_1_double_precision, |
392 | pod_set_mod_param_1_double_precision); | |
a3a972a0 | 393 | static DEVICE_ATTR(delay_param_1_double_precision, S_IWUSR | S_IRUGO, |
acdc1021 SB |
394 | pod_get_delay_param_1_double_precision, |
395 | pod_set_delay_param_1_double_precision); | |
a3a972a0 | 396 | static DEVICE_ATTR(eq_enable, S_IWUSR | S_IRUGO, pod_get_eq_enable, |
acdc1021 | 397 | pod_set_eq_enable); |
a3a972a0 GKH |
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, | |
acdc1021 SB |
400 | pod_get_volume_tweak_pedal_assign, |
401 | pod_set_volume_tweak_pedal_assign); | |
a3a972a0 | 402 | static DEVICE_ATTR(band_5_frequency, S_IWUSR | S_IRUGO, |
acdc1021 | 403 | pod_get_band_5_frequency, pod_set_band_5_frequency); |
a3a972a0 GKH |
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, | |
acdc1021 | 406 | pod_set_mic_selection); |
a3a972a0 | 407 | static DEVICE_ATTR(cabinet_model, S_IWUSR | S_IRUGO, pod_get_cabinet_model, |
acdc1021 | 408 | pod_set_cabinet_model); |
a3a972a0 | 409 | static DEVICE_ATTR(stomp_model, S_IWUSR | S_IRUGO, pod_get_stomp_model, |
acdc1021 | 410 | pod_set_stomp_model); |
a3a972a0 | 411 | static DEVICE_ATTR(roomlevel, S_IWUSR | S_IRUGO, pod_get_roomlevel, |
acdc1021 | 412 | pod_set_roomlevel); |
a3a972a0 | 413 | static DEVICE_ATTR(band_4_frequency, S_IWUSR | S_IRUGO, |
acdc1021 | 414 | pod_get_band_4_frequency, pod_set_band_4_frequency); |
a3a972a0 | 415 | static DEVICE_ATTR(band_6_frequency, S_IWUSR | S_IRUGO, |
acdc1021 | 416 | pod_get_band_6_frequency, pod_set_band_6_frequency); |
a3a972a0 | 417 | static DEVICE_ATTR(stomp_param_1_note_value, S_IWUSR | S_IRUGO, |
acdc1021 SB |
418 | pod_get_stomp_param_1_note_value, |
419 | pod_set_stomp_param_1_note_value); | |
a3a972a0 | 420 | static DEVICE_ATTR(stomp_param_2, S_IWUSR | S_IRUGO, pod_get_stomp_param_2, |
acdc1021 | 421 | pod_set_stomp_param_2); |
a3a972a0 | 422 | static DEVICE_ATTR(stomp_param_3, S_IWUSR | S_IRUGO, pod_get_stomp_param_3, |
acdc1021 | 423 | pod_set_stomp_param_3); |
a3a972a0 | 424 | static DEVICE_ATTR(stomp_param_4, S_IWUSR | S_IRUGO, pod_get_stomp_param_4, |
acdc1021 | 425 | pod_set_stomp_param_4); |
a3a972a0 | 426 | static DEVICE_ATTR(stomp_param_5, S_IWUSR | S_IRUGO, pod_get_stomp_param_5, |
acdc1021 | 427 | pod_set_stomp_param_5); |
a3a972a0 | 428 | static DEVICE_ATTR(stomp_param_6, S_IWUSR | S_IRUGO, pod_get_stomp_param_6, |
acdc1021 | 429 | pod_set_stomp_param_6); |
a3a972a0 | 430 | static DEVICE_ATTR(amp_switch_select, S_IWUSR | S_IRUGO, |
acdc1021 | 431 | pod_get_amp_switch_select, pod_set_amp_switch_select); |
a3a972a0 | 432 | static DEVICE_ATTR(delay_param_4, S_IWUSR | S_IRUGO, pod_get_delay_param_4, |
acdc1021 | 433 | pod_set_delay_param_4); |
a3a972a0 | 434 | static DEVICE_ATTR(delay_param_5, S_IWUSR | S_IRUGO, pod_get_delay_param_5, |
acdc1021 | 435 | pod_set_delay_param_5); |
a3a972a0 | 436 | static DEVICE_ATTR(delay_pre_post, S_IWUSR | S_IRUGO, pod_get_delay_pre_post, |
acdc1021 | 437 | pod_set_delay_pre_post); |
a3a972a0 | 438 | static DEVICE_ATTR(delay_model, S_IWUSR | S_IRUGO, pod_get_delay_model, |
acdc1021 | 439 | pod_set_delay_model); |
a3a972a0 | 440 | static DEVICE_ATTR(delay_verb_model, S_IWUSR | S_IRUGO, |
acdc1021 | 441 | pod_get_delay_verb_model, pod_set_delay_verb_model); |
a3a972a0 | 442 | static DEVICE_ATTR(tempo_msb, S_IWUSR | S_IRUGO, pod_get_tempo_msb, |
acdc1021 | 443 | pod_set_tempo_msb); |
a3a972a0 | 444 | static DEVICE_ATTR(tempo_lsb, S_IWUSR | S_IRUGO, pod_get_tempo_lsb, |
acdc1021 | 445 | pod_set_tempo_lsb); |
a3a972a0 | 446 | static DEVICE_ATTR(wah_model, S_IWUSR | S_IRUGO, pod_get_wah_model, |
acdc1021 | 447 | pod_set_wah_model); |
a3a972a0 | 448 | static DEVICE_ATTR(bypass_volume, S_IWUSR | S_IRUGO, pod_get_bypass_volume, |
acdc1021 | 449 | pod_set_bypass_volume); |
a3a972a0 | 450 | static DEVICE_ATTR(fx_loop_on_off, S_IWUSR | S_IRUGO, pod_get_fx_loop_on_off, |
acdc1021 | 451 | pod_set_fx_loop_on_off); |
a3a972a0 | 452 | static DEVICE_ATTR(tweak_param_select, S_IWUSR | S_IRUGO, |
acdc1021 | 453 | pod_get_tweak_param_select, pod_set_tweak_param_select); |
a3a972a0 | 454 | static DEVICE_ATTR(amp1_engage, S_IWUSR | S_IRUGO, pod_get_amp1_engage, |
acdc1021 | 455 | pod_set_amp1_engage); |
a3a972a0 | 456 | static DEVICE_ATTR(band_1_gain, S_IWUSR | S_IRUGO, pod_get_band_1_gain, |
acdc1021 | 457 | pod_set_band_1_gain); |
a3a972a0 | 458 | static DEVICE_ATTR2(band_2_gain__bass, band_2_gain, S_IWUSR | S_IRUGO, |
acdc1021 | 459 | pod_get_band_2_gain__bass, pod_set_band_2_gain__bass); |
a3a972a0 | 460 | static DEVICE_ATTR(band_2_gain, S_IWUSR | S_IRUGO, pod_get_band_2_gain, |
acdc1021 | 461 | pod_set_band_2_gain); |
a3a972a0 | 462 | static DEVICE_ATTR2(band_3_gain__bass, band_3_gain, S_IWUSR | S_IRUGO, |
acdc1021 | 463 | pod_get_band_3_gain__bass, pod_set_band_3_gain__bass); |
a3a972a0 | 464 | static DEVICE_ATTR(band_3_gain, S_IWUSR | S_IRUGO, pod_get_band_3_gain, |
acdc1021 | 465 | pod_set_band_3_gain); |
a3a972a0 | 466 | static DEVICE_ATTR2(band_4_gain__bass, band_4_gain, S_IWUSR | S_IRUGO, |
acdc1021 | 467 | pod_get_band_4_gain__bass, pod_set_band_4_gain__bass); |
a3a972a0 | 468 | static DEVICE_ATTR2(band_5_gain__bass, band_5_gain, S_IWUSR | S_IRUGO, |
acdc1021 | 469 | pod_get_band_5_gain__bass, pod_set_band_5_gain__bass); |
a3a972a0 | 470 | static DEVICE_ATTR(band_4_gain, S_IWUSR | S_IRUGO, pod_get_band_4_gain, |
acdc1021 | 471 | pod_set_band_4_gain); |
a3a972a0 | 472 | static DEVICE_ATTR2(band_6_gain__bass, band_6_gain, S_IWUSR | S_IRUGO, |
acdc1021 | 473 | pod_get_band_6_gain__bass, pod_set_band_6_gain__bass); |
705ececd | 474 | static DEVICE_ATTR(body, S_IRUGO, variax_get_body, line6_nop_write); |
acdc1021 SB |
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); | |
705ececd MG |
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); | |
acdc1021 SB |
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); | |
705ececd MG |
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); | |
acdc1021 SB |
528 | static DEVICE_ATTR(pickup_wiring, S_IRUGO, variax_get_pickup_wiring, |
529 | line6_nop_write); | |
705ececd | 530 | |
1027f476 | 531 | int line6_pod_create_files(int firmware, int type, struct device *dev) |
9a92fadc | 532 | { |
705ececd MG |
533 | int err; |
534 | CHECK_RETURN(device_create_file(dev, &dev_attr_tweak)); | |
535 | CHECK_RETURN(device_create_file(dev, &dev_attr_wah_position)); | |
9a92fadc | 536 | if ((type & (LINE6_BITS_PODXTALL)) != 0) |
acdc1021 SB |
537 | CHECK_RETURN(device_create_file |
538 | (dev, &dev_attr_compression_gain)); | |
705ececd MG |
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)); | |
9a92fadc GKH |
543 | if (firmware >= 200) |
544 | CHECK_RETURN(device_create_file(dev, &dev_attr_amp_model)); | |
705ececd MG |
545 | CHECK_RETURN(device_create_file(dev, &dev_attr_drive)); |
546 | CHECK_RETURN(device_create_file(dev, &dev_attr_bass)); | |
9a92fadc GKH |
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)); | |
705ececd | 555 | CHECK_RETURN(device_create_file(dev, &dev_attr_chan_vol)); |
9a92fadc GKH |
556 | if ((type & (LINE6_BITS_PODXTALL)) != 0) |
557 | CHECK_RETURN(device_create_file(dev, &dev_attr_reverb_mix)); | |
705ececd | 558 | CHECK_RETURN(device_create_file(dev, &dev_attr_effect_setup)); |
9a92fadc | 559 | if (firmware >= 200) |
acdc1021 SB |
560 | CHECK_RETURN(device_create_file |
561 | (dev, &dev_attr_band_1_frequency)); | |
9a92fadc GKH |
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)); | |
705ececd MG |
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)); | |
acdc1021 SB |
575 | CHECK_RETURN(device_create_file |
576 | (dev, &dev_attr_delay_param_1_note_value)); | |
9a92fadc GKH |
577 | if ((type & (LINE6_BITS_BASSPODXTALL)) != 0) |
578 | if (firmware >= 200) | |
acdc1021 SB |
579 | CHECK_RETURN(device_create_file |
580 | (dev, &dev_attr_band_2_frequency__bass)); | |
705ececd MG |
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)); | |
9a92fadc GKH |
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) | |
acdc1021 SB |
593 | CHECK_RETURN(device_create_file |
594 | (dev, &dev_attr_reverb_pre_delay)); | |
9a92fadc | 595 | if ((type & (LINE6_BITS_PODXTALL)) != 0) |
acdc1021 SB |
596 | CHECK_RETURN(device_create_file |
597 | (dev, &dev_attr_reverb_pre_post)); | |
9a92fadc GKH |
598 | if ((type & (LINE6_BITS_PODXTALL)) != 0) |
599 | if (firmware >= 200) | |
acdc1021 SB |
600 | CHECK_RETURN(device_create_file |
601 | (dev, &dev_attr_band_2_frequency)); | |
9a92fadc GKH |
602 | if ((type & (LINE6_BITS_BASSPODXTALL)) != 0) |
603 | if (firmware >= 200) | |
acdc1021 SB |
604 | CHECK_RETURN(device_create_file |
605 | (dev, &dev_attr_band_3_frequency__bass)); | |
705ececd | 606 | CHECK_RETURN(device_create_file(dev, &dev_attr_wah_enable)); |
9a92fadc | 607 | if ((type & (LINE6_BITS_BASSPODXTALL)) != 0) |
acdc1021 SB |
608 | CHECK_RETURN(device_create_file |
609 | (dev, &dev_attr_modulation_lo_cut)); | |
9a92fadc | 610 | if ((type & (LINE6_BITS_BASSPODXTALL)) != 0) |
acdc1021 SB |
611 | CHECK_RETURN(device_create_file |
612 | (dev, &dev_attr_delay_reverb_lo_cut)); | |
9a92fadc GKH |
613 | if ((type & (LINE6_BITS_PODXTALL)) != 0) |
614 | if (firmware >= 200) | |
acdc1021 SB |
615 | CHECK_RETURN(device_create_file |
616 | (dev, &dev_attr_volume_pedal_minimum)); | |
9a92fadc GKH |
617 | if ((type & (LINE6_BITS_BASSPODXTALL)) != 0) |
618 | if (firmware >= 200) | |
acdc1021 SB |
619 | CHECK_RETURN(device_create_file |
620 | (dev, &dev_attr_eq_pre_post)); | |
705ececd | 621 | CHECK_RETURN(device_create_file(dev, &dev_attr_volume_pre_post)); |
9a92fadc GKH |
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)); | |
705ececd MG |
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)); | |
9a92fadc GKH |
631 | if ((type & (LINE6_BITS_BASSPODXTALL)) != 0) |
632 | CHECK_RETURN(device_create_file(dev, &dev_attr_mod_param_5)); | |
705ececd MG |
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)); | |
9a92fadc GKH |
636 | if ((type & (LINE6_BITS_PODXTALL)) != 0) |
637 | if (firmware >= 200) | |
acdc1021 SB |
638 | CHECK_RETURN(device_create_file |
639 | (dev, &dev_attr_band_3_frequency)); | |
9a92fadc GKH |
640 | if ((type & (LINE6_BITS_BASSPODXTALL)) != 0) |
641 | if (firmware >= 200) | |
acdc1021 SB |
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)); | |
9a92fadc GKH |
648 | if (firmware >= 200) |
649 | CHECK_RETURN(device_create_file(dev, &dev_attr_eq_enable)); | |
705ececd | 650 | CHECK_RETURN(device_create_file(dev, &dev_attr_tap)); |
acdc1021 SB |
651 | CHECK_RETURN(device_create_file |
652 | (dev, &dev_attr_volume_tweak_pedal_assign)); | |
9a92fadc GKH |
653 | if ((type & (LINE6_BITS_BASSPODXTALL)) != 0) |
654 | if (firmware >= 200) | |
acdc1021 SB |
655 | CHECK_RETURN(device_create_file |
656 | (dev, &dev_attr_band_5_frequency)); | |
705ececd MG |
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)); | |
9a92fadc GKH |
662 | if ((type & (LINE6_BITS_PODXTALL)) != 0) |
663 | if (firmware >= 200) | |
acdc1021 SB |
664 | CHECK_RETURN(device_create_file |
665 | (dev, &dev_attr_band_4_frequency)); | |
9a92fadc GKH |
666 | if ((type & (LINE6_BITS_BASSPODXTALL)) != 0) |
667 | if (firmware >= 200) | |
acdc1021 SB |
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)); | |
705ececd MG |
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)); | |
9a92fadc | 677 | if ((type & (LINE6_BITS_LIVE)) != 0) |
acdc1021 SB |
678 | CHECK_RETURN(device_create_file |
679 | (dev, &dev_attr_amp_switch_select)); | |
705ececd MG |
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)); | |
9a92fadc GKH |
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) | |
acdc1021 SB |
686 | CHECK_RETURN(device_create_file |
687 | (dev, &dev_attr_delay_verb_model)); | |
705ececd MG |
688 | CHECK_RETURN(device_create_file(dev, &dev_attr_tempo_msb)); |
689 | CHECK_RETURN(device_create_file(dev, &dev_attr_tempo_lsb)); | |
9a92fadc GKH |
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)); | |
705ececd MG |
696 | CHECK_RETURN(device_create_file(dev, &dev_attr_tweak_param_select)); |
697 | CHECK_RETURN(device_create_file(dev, &dev_attr_amp1_engage)); | |
9a92fadc GKH |
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) | |
acdc1021 SB |
702 | CHECK_RETURN(device_create_file |
703 | (dev, &dev_attr_band_2_gain__bass)); | |
9a92fadc GKH |
704 | if ((type & (LINE6_BITS_PODXTALL)) != 0) |
705 | if (firmware >= 200) | |
acdc1021 SB |
706 | CHECK_RETURN(device_create_file |
707 | (dev, &dev_attr_band_2_gain)); | |
9a92fadc GKH |
708 | if ((type & (LINE6_BITS_BASSPODXTALL)) != 0) |
709 | if (firmware >= 200) | |
acdc1021 SB |
710 | CHECK_RETURN(device_create_file |
711 | (dev, &dev_attr_band_3_gain__bass)); | |
9a92fadc GKH |
712 | if ((type & (LINE6_BITS_PODXTALL)) != 0) |
713 | if (firmware >= 200) | |
acdc1021 SB |
714 | CHECK_RETURN(device_create_file |
715 | (dev, &dev_attr_band_3_gain)); | |
9a92fadc GKH |
716 | if ((type & (LINE6_BITS_BASSPODXTALL)) != 0) |
717 | if (firmware >= 200) | |
acdc1021 SB |
718 | CHECK_RETURN(device_create_file |
719 | (dev, &dev_attr_band_4_gain__bass)); | |
9a92fadc GKH |
720 | if ((type & (LINE6_BITS_BASSPODXTALL)) != 0) |
721 | if (firmware >= 200) | |
acdc1021 SB |
722 | CHECK_RETURN(device_create_file |
723 | (dev, &dev_attr_band_5_gain__bass)); | |
9a92fadc GKH |
724 | if ((type & (LINE6_BITS_PODXTALL)) != 0) |
725 | if (firmware >= 200) | |
acdc1021 SB |
726 | CHECK_RETURN(device_create_file |
727 | (dev, &dev_attr_band_4_gain)); | |
9a92fadc GKH |
728 | if ((type & (LINE6_BITS_BASSPODXTALL)) != 0) |
729 | if (firmware >= 200) | |
acdc1021 SB |
730 | CHECK_RETURN(device_create_file |
731 | (dev, &dev_attr_band_6_gain__bass)); | |
732 | return 0; | |
705ececd MG |
733 | } |
734 | ||
1027f476 | 735 | void line6_pod_remove_files(int firmware, int type, struct device *dev) |
9a92fadc | 736 | { |
705ececd MG |
737 | device_remove_file(dev, &dev_attr_tweak); |
738 | device_remove_file(dev, &dev_attr_wah_position); | |
9a92fadc GKH |
739 | if ((type & (LINE6_BITS_PODXTALL)) != 0) |
740 | device_remove_file(dev, &dev_attr_compression_gain); | |
705ececd MG |
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); | |
9a92fadc GKH |
745 | if (firmware >= 200) |
746 | device_remove_file(dev, &dev_attr_amp_model); | |
705ececd MG |
747 | device_remove_file(dev, &dev_attr_drive); |
748 | device_remove_file(dev, &dev_attr_bass); | |
9a92fadc GKH |
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); | |
705ececd | 757 | device_remove_file(dev, &dev_attr_chan_vol); |
9a92fadc GKH |
758 | if ((type & (LINE6_BITS_PODXTALL)) != 0) |
759 | device_remove_file(dev, &dev_attr_reverb_mix); | |
705ececd | 760 | device_remove_file(dev, &dev_attr_effect_setup); |
9a92fadc GKH |
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); | |
705ececd MG |
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); | |
9a92fadc GKH |
777 | if ((type & (LINE6_BITS_BASSPODXTALL)) != 0) |
778 | if (firmware >= 200) | |
acdc1021 SB |
779 | device_remove_file(dev, |
780 | &dev_attr_band_2_frequency__bass); | |
705ececd MG |
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); | |
9a92fadc GKH |
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) | |
acdc1021 SB |
801 | device_remove_file(dev, |
802 | &dev_attr_band_3_frequency__bass); | |
705ececd | 803 | device_remove_file(dev, &dev_attr_wah_enable); |
9a92fadc GKH |
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); | |
705ececd | 814 | device_remove_file(dev, &dev_attr_volume_pre_post); |
9a92fadc GKH |
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); | |
705ececd MG |
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); | |
9a92fadc GKH |
824 | if ((type & (LINE6_BITS_BASSPODXTALL)) != 0) |
825 | device_remove_file(dev, &dev_attr_mod_param_5); | |
705ececd MG |
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); | |
9a92fadc GKH |
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) | |
acdc1021 SB |
834 | device_remove_file(dev, |
835 | &dev_attr_band_4_frequency__bass); | |
705ececd MG |
836 | device_remove_file(dev, &dev_attr_mod_param_1_double_precision); |
837 | device_remove_file(dev, &dev_attr_delay_param_1_double_precision); | |
9a92fadc GKH |
838 | if (firmware >= 200) |
839 | device_remove_file(dev, &dev_attr_eq_enable); | |
705ececd MG |
840 | device_remove_file(dev, &dev_attr_tap); |
841 | device_remove_file(dev, &dev_attr_volume_tweak_pedal_assign); | |
9a92fadc GKH |
842 | if ((type & (LINE6_BITS_BASSPODXTALL)) != 0) |
843 | if (firmware >= 200) | |
844 | device_remove_file(dev, &dev_attr_band_5_frequency); | |
705ececd MG |
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); | |
9a92fadc GKH |
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); | |
705ececd MG |
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); | |
9a92fadc GKH |
862 | if ((type & (LINE6_BITS_LIVE)) != 0) |
863 | device_remove_file(dev, &dev_attr_amp_switch_select); | |
705ececd MG |
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); | |
9a92fadc GKH |
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); | |
705ececd MG |
871 | device_remove_file(dev, &dev_attr_tempo_msb); |
872 | device_remove_file(dev, &dev_attr_tempo_lsb); | |
9a92fadc GKH |
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); | |
705ececd MG |
879 | device_remove_file(dev, &dev_attr_tweak_param_select); |
880 | device_remove_file(dev, &dev_attr_amp1_engage); | |
9a92fadc GKH |
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); | |
705ececd | 907 | } |
705ececd | 908 | |
1027f476 | 909 | int line6_variax_create_files(int firmware, int type, struct device *dev) |
9a92fadc | 910 | { |
705ececd MG |
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)); | |
acdc1021 | 951 | return 0; |
705ececd MG |
952 | } |
953 | ||
1027f476 | 954 | void line6_variax_remove_files(int firmware, int type, struct device *dev) |
9a92fadc | 955 | { |
705ececd MG |
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 | } |