2 * Line6 Linux USB driver - 0.8.0
4 * Copyright (C) 2004-2009 Markus Grabner (grabner@icg.tugraz.at)
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.
14 #include <linux/usb.h>
21 #define DEVICE_ATTR2(_name1, _name2, _mode, _show, _store) \
22 struct device_attribute dev_attr_##_name1 = __ATTR(_name2, _mode, _show, _store)
24 #define LINE6_PARAM_R(PREFIX, prefix, type, param) \
25 static ssize_t prefix ## _get_ ## param(struct device *dev, \
26 struct device_attribute *attr, char *buf) \
28 return prefix ## _get_param_ ## type(dev, buf, PREFIX ## _ ## param); \
31 #define LINE6_PARAM_RW(PREFIX, prefix, type, param) \
32 LINE6_PARAM_R(PREFIX, prefix, type, param); \
33 static ssize_t prefix ## _set_ ## param(struct device *dev, \
34 struct device_attribute *attr, const char *buf, size_t count) \
36 return prefix ## _set_param_ ## type(dev, buf, count, PREFIX ## _ ## param); \
39 #define POD_PARAM_R(type, param) LINE6_PARAM_R(POD, pod, type, param)
40 #define POD_PARAM_RW(type, param) LINE6_PARAM_RW(POD, pod, type, param)
41 #define VARIAX_PARAM_R(type, param) LINE6_PARAM_R(VARIAX, variax, type, param)
42 #define VARIAX_PARAM_RW(type, param) LINE6_PARAM_RW(VARIAX, variax, type, param)
45 static ssize_t
pod_get_param_int(struct device
*dev
, char *buf
, int param
)
47 struct usb_interface
*interface
= to_usb_interface(dev
);
48 struct usb_line6_pod
*pod
= usb_get_intfdata(interface
);
49 int retval
= line6_wait_dump(&pod
->dumpreq
, 0);
52 return sprintf(buf
, "%d\n", pod
->prog_data
.control
[param
]);
55 static ssize_t
pod_set_param_int(struct device
*dev
, const char *buf
, size_t count
, int param
)
57 struct usb_interface
*interface
= to_usb_interface(dev
);
58 struct usb_line6_pod
*pod
= usb_get_intfdata(interface
);
59 int value
= simple_strtoul(buf
, NULL
, 10);
60 pod_transmit_parameter(pod
, param
, value
);
64 static ssize_t
variax_get_param_int(struct device
*dev
, char *buf
, int param
)
66 struct usb_interface
*interface
= to_usb_interface(dev
);
67 struct usb_line6_variax
*variax
= usb_get_intfdata(interface
);
68 int retval
= line6_wait_dump(&variax
->dumpreq
, 0);
71 return sprintf(buf
, "%d\n", variax
->model_data
.control
[param
]);
74 static ssize_t
variax_get_param_float(struct device
*dev
, char *buf
, int param
)
77 We do our own floating point handling here since floats in the
78 kernel are problematic for at least two reasons: - many distros
79 are still shipped with binary kernels optimized for the ancient
81 - there isn't a printf("%f")
82 (see http://www.kernelthread.com/publications/faq/335.html)
85 static const int BIAS
= 0x7f;
86 static const int OFFSET
= 0xf;
87 static const int PRECISION
= 1000;
90 unsigned part_int
, part_frac
;
91 struct usb_interface
*interface
= to_usb_interface(dev
);
92 struct usb_line6_variax
*variax
= usb_get_intfdata(interface
);
93 const unsigned char *p
= variax
->model_data
.control
+ param
;
94 int retval
= line6_wait_dump(&variax
->dumpreq
, 0);
98 if ((p
[0] == 0) && (p
[1] == 0) && (p
[2] == 0))
99 part_int
= part_frac
= 0;
101 int exponent
= (((p
[0] & 0x7f) << 1) | (p
[1] >> 7)) - BIAS
;
102 unsigned mantissa
= (p
[1] << 8) | p
[2] | 0x8000;
106 part_int
= mantissa
<< exponent
;
109 part_int
= mantissa
>> -exponent
;
110 part_frac
= (mantissa
<< (32 + exponent
)) & 0xffffffff;
113 part_frac
= (part_frac
/ ((1UL << 31) / (PRECISION
/ 2 * 10)) + 5) / 10;
116 len
+= sprintf(buf
+ len
, "%s%d.%03d\n", ((p
[0] & 0x80) ? "-" : ""), part_int
, part_frac
);
120 POD_PARAM_RW(int, tweak
);
121 POD_PARAM_RW(int, wah_position
);
122 POD_PARAM_RW(int, compression_gain
);
123 POD_PARAM_RW(int, vol_pedal_position
);
124 POD_PARAM_RW(int, compression_threshold
);
125 POD_PARAM_RW(int, pan
);
126 POD_PARAM_RW(int, amp_model_setup
);
127 POD_PARAM_RW(int, amp_model
);
128 POD_PARAM_RW(int, drive
);
129 POD_PARAM_RW(int, bass
);
130 POD_PARAM_RW(int, mid
);
131 POD_PARAM_RW(int, lowmid
);
132 POD_PARAM_RW(int, treble
);
133 POD_PARAM_RW(int, highmid
);
134 POD_PARAM_RW(int, chan_vol
);
135 POD_PARAM_RW(int, reverb_mix
);
136 POD_PARAM_RW(int, effect_setup
);
137 POD_PARAM_RW(int, band_1_frequency
);
138 POD_PARAM_RW(int, presence
);
139 POD_PARAM_RW(int, treble__bass
);
140 POD_PARAM_RW(int, noise_gate_enable
);
141 POD_PARAM_RW(int, gate_threshold
);
142 POD_PARAM_RW(int, gate_decay_time
);
143 POD_PARAM_RW(int, stomp_enable
);
144 POD_PARAM_RW(int, comp_enable
);
145 POD_PARAM_RW(int, stomp_time
);
146 POD_PARAM_RW(int, delay_enable
);
147 POD_PARAM_RW(int, mod_param_1
);
148 POD_PARAM_RW(int, delay_param_1
);
149 POD_PARAM_RW(int, delay_param_1_note_value
);
150 POD_PARAM_RW(int, band_2_frequency__bass
);
151 POD_PARAM_RW(int, delay_param_2
);
152 POD_PARAM_RW(int, delay_volume_mix
);
153 POD_PARAM_RW(int, delay_param_3
);
154 POD_PARAM_RW(int, reverb_enable
);
155 POD_PARAM_RW(int, reverb_type
);
156 POD_PARAM_RW(int, reverb_decay
);
157 POD_PARAM_RW(int, reverb_tone
);
158 POD_PARAM_RW(int, reverb_pre_delay
);
159 POD_PARAM_RW(int, reverb_pre_post
);
160 POD_PARAM_RW(int, band_2_frequency
);
161 POD_PARAM_RW(int, band_3_frequency__bass
);
162 POD_PARAM_RW(int, wah_enable
);
163 POD_PARAM_RW(int, modulation_lo_cut
);
164 POD_PARAM_RW(int, delay_reverb_lo_cut
);
165 POD_PARAM_RW(int, volume_pedal_minimum
);
166 POD_PARAM_RW(int, eq_pre_post
);
167 POD_PARAM_RW(int, volume_pre_post
);
168 POD_PARAM_RW(int, di_model
);
169 POD_PARAM_RW(int, di_delay
);
170 POD_PARAM_RW(int, mod_enable
);
171 POD_PARAM_RW(int, mod_param_1_note_value
);
172 POD_PARAM_RW(int, mod_param_2
);
173 POD_PARAM_RW(int, mod_param_3
);
174 POD_PARAM_RW(int, mod_param_4
);
175 POD_PARAM_RW(int, mod_param_5
);
176 POD_PARAM_RW(int, mod_volume_mix
);
177 POD_PARAM_RW(int, mod_pre_post
);
178 POD_PARAM_RW(int, modulation_model
);
179 POD_PARAM_RW(int, band_3_frequency
);
180 POD_PARAM_RW(int, band_4_frequency__bass
);
181 POD_PARAM_RW(int, mod_param_1_double_precision
);
182 POD_PARAM_RW(int, delay_param_1_double_precision
);
183 POD_PARAM_RW(int, eq_enable
);
184 POD_PARAM_RW(int, tap
);
185 POD_PARAM_RW(int, volume_tweak_pedal_assign
);
186 POD_PARAM_RW(int, band_5_frequency
);
187 POD_PARAM_RW(int, tuner
);
188 POD_PARAM_RW(int, mic_selection
);
189 POD_PARAM_RW(int, cabinet_model
);
190 POD_PARAM_RW(int, stomp_model
);
191 POD_PARAM_RW(int, roomlevel
);
192 POD_PARAM_RW(int, band_4_frequency
);
193 POD_PARAM_RW(int, band_6_frequency
);
194 POD_PARAM_RW(int, stomp_param_1_note_value
);
195 POD_PARAM_RW(int, stomp_param_2
);
196 POD_PARAM_RW(int, stomp_param_3
);
197 POD_PARAM_RW(int, stomp_param_4
);
198 POD_PARAM_RW(int, stomp_param_5
);
199 POD_PARAM_RW(int, stomp_param_6
);
200 POD_PARAM_RW(int, amp_switch_select
);
201 POD_PARAM_RW(int, delay_param_4
);
202 POD_PARAM_RW(int, delay_param_5
);
203 POD_PARAM_RW(int, delay_pre_post
);
204 POD_PARAM_RW(int, delay_model
);
205 POD_PARAM_RW(int, delay_verb_model
);
206 POD_PARAM_RW(int, tempo_msb
);
207 POD_PARAM_RW(int, tempo_lsb
);
208 POD_PARAM_RW(int, wah_model
);
209 POD_PARAM_RW(int, bypass_volume
);
210 POD_PARAM_RW(int, fx_loop_on_off
);
211 POD_PARAM_RW(int, tweak_param_select
);
212 POD_PARAM_RW(int, amp1_engage
);
213 POD_PARAM_RW(int, band_1_gain
);
214 POD_PARAM_RW(int, band_2_gain__bass
);
215 POD_PARAM_RW(int, band_2_gain
);
216 POD_PARAM_RW(int, band_3_gain__bass
);
217 POD_PARAM_RW(int, band_3_gain
);
218 POD_PARAM_RW(int, band_4_gain__bass
);
219 POD_PARAM_RW(int, band_5_gain__bass
);
220 POD_PARAM_RW(int, band_4_gain
);
221 POD_PARAM_RW(int, band_6_gain__bass
);
222 VARIAX_PARAM_R(int, body
);
223 VARIAX_PARAM_R(int, pickup1_enable
);
224 VARIAX_PARAM_R(int, pickup1_type
);
225 VARIAX_PARAM_R(float, pickup1_position
);
226 VARIAX_PARAM_R(float, pickup1_angle
);
227 VARIAX_PARAM_R(float, pickup1_level
);
228 VARIAX_PARAM_R(int, pickup2_enable
);
229 VARIAX_PARAM_R(int, pickup2_type
);
230 VARIAX_PARAM_R(float, pickup2_position
);
231 VARIAX_PARAM_R(float, pickup2_angle
);
232 VARIAX_PARAM_R(float, pickup2_level
);
233 VARIAX_PARAM_R(int, pickup_phase
);
234 VARIAX_PARAM_R(float, capacitance
);
235 VARIAX_PARAM_R(float, tone_resistance
);
236 VARIAX_PARAM_R(float, volume_resistance
);
237 VARIAX_PARAM_R(int, taper
);
238 VARIAX_PARAM_R(float, tone_dump
);
239 VARIAX_PARAM_R(int, save_tone
);
240 VARIAX_PARAM_R(float, volume_dump
);
241 VARIAX_PARAM_R(int, tuning_enable
);
242 VARIAX_PARAM_R(int, tuning6
);
243 VARIAX_PARAM_R(int, tuning5
);
244 VARIAX_PARAM_R(int, tuning4
);
245 VARIAX_PARAM_R(int, tuning3
);
246 VARIAX_PARAM_R(int, tuning2
);
247 VARIAX_PARAM_R(int, tuning1
);
248 VARIAX_PARAM_R(float, detune6
);
249 VARIAX_PARAM_R(float, detune5
);
250 VARIAX_PARAM_R(float, detune4
);
251 VARIAX_PARAM_R(float, detune3
);
252 VARIAX_PARAM_R(float, detune2
);
253 VARIAX_PARAM_R(float, detune1
);
254 VARIAX_PARAM_R(float, mix6
);
255 VARIAX_PARAM_R(float, mix5
);
256 VARIAX_PARAM_R(float, mix4
);
257 VARIAX_PARAM_R(float, mix3
);
258 VARIAX_PARAM_R(float, mix2
);
259 VARIAX_PARAM_R(float, mix1
);
260 VARIAX_PARAM_R(int, pickup_wiring
);
262 static DEVICE_ATTR(tweak
, S_IWUGO
| S_IRUGO
, pod_get_tweak
, pod_set_tweak
);
263 static DEVICE_ATTR(wah_position
, S_IWUGO
| S_IRUGO
, pod_get_wah_position
, pod_set_wah_position
);
264 static DEVICE_ATTR(compression_gain
, S_IWUGO
| S_IRUGO
, pod_get_compression_gain
, pod_set_compression_gain
);
265 static DEVICE_ATTR(vol_pedal_position
, S_IWUGO
| S_IRUGO
, pod_get_vol_pedal_position
, pod_set_vol_pedal_position
);
266 static DEVICE_ATTR(compression_threshold
, S_IWUGO
| S_IRUGO
, pod_get_compression_threshold
, pod_set_compression_threshold
);
267 static DEVICE_ATTR(pan
, S_IWUGO
| S_IRUGO
, pod_get_pan
, pod_set_pan
);
268 static DEVICE_ATTR(amp_model_setup
, S_IWUGO
| S_IRUGO
, pod_get_amp_model_setup
, pod_set_amp_model_setup
);
269 static DEVICE_ATTR(amp_model
, S_IWUGO
| S_IRUGO
, pod_get_amp_model
, pod_set_amp_model
);
270 static DEVICE_ATTR(drive
, S_IWUGO
| S_IRUGO
, pod_get_drive
, pod_set_drive
);
271 static DEVICE_ATTR(bass
, S_IWUGO
| S_IRUGO
, pod_get_bass
, pod_set_bass
);
272 static DEVICE_ATTR(mid
, S_IWUGO
| S_IRUGO
, pod_get_mid
, pod_set_mid
);
273 static DEVICE_ATTR(lowmid
, S_IWUGO
| S_IRUGO
, pod_get_lowmid
, pod_set_lowmid
);
274 static DEVICE_ATTR(treble
, S_IWUGO
| S_IRUGO
, pod_get_treble
, pod_set_treble
);
275 static DEVICE_ATTR(highmid
, S_IWUGO
| S_IRUGO
, pod_get_highmid
, pod_set_highmid
);
276 static DEVICE_ATTR(chan_vol
, S_IWUGO
| S_IRUGO
, pod_get_chan_vol
, pod_set_chan_vol
);
277 static DEVICE_ATTR(reverb_mix
, S_IWUGO
| S_IRUGO
, pod_get_reverb_mix
, pod_set_reverb_mix
);
278 static DEVICE_ATTR(effect_setup
, S_IWUGO
| S_IRUGO
, pod_get_effect_setup
, pod_set_effect_setup
);
279 static DEVICE_ATTR(band_1_frequency
, S_IWUGO
| S_IRUGO
, pod_get_band_1_frequency
, pod_set_band_1_frequency
);
280 static DEVICE_ATTR(presence
, S_IWUGO
| S_IRUGO
, pod_get_presence
, pod_set_presence
);
281 static DEVICE_ATTR2(treble__bass
, treble
, S_IWUGO
| S_IRUGO
, pod_get_treble__bass
, pod_set_treble__bass
);
282 static DEVICE_ATTR(noise_gate_enable
, S_IWUGO
| S_IRUGO
, pod_get_noise_gate_enable
, pod_set_noise_gate_enable
);
283 static DEVICE_ATTR(gate_threshold
, S_IWUGO
| S_IRUGO
, pod_get_gate_threshold
, pod_set_gate_threshold
);
284 static DEVICE_ATTR(gate_decay_time
, S_IWUGO
| S_IRUGO
, pod_get_gate_decay_time
, pod_set_gate_decay_time
);
285 static DEVICE_ATTR(stomp_enable
, S_IWUGO
| S_IRUGO
, pod_get_stomp_enable
, pod_set_stomp_enable
);
286 static DEVICE_ATTR(comp_enable
, S_IWUGO
| S_IRUGO
, pod_get_comp_enable
, pod_set_comp_enable
);
287 static DEVICE_ATTR(stomp_time
, S_IWUGO
| S_IRUGO
, pod_get_stomp_time
, pod_set_stomp_time
);
288 static DEVICE_ATTR(delay_enable
, S_IWUGO
| S_IRUGO
, pod_get_delay_enable
, pod_set_delay_enable
);
289 static DEVICE_ATTR(mod_param_1
, S_IWUGO
| S_IRUGO
, pod_get_mod_param_1
, pod_set_mod_param_1
);
290 static DEVICE_ATTR(delay_param_1
, S_IWUGO
| S_IRUGO
, pod_get_delay_param_1
, pod_set_delay_param_1
);
291 static DEVICE_ATTR(delay_param_1_note_value
, S_IWUGO
| S_IRUGO
, pod_get_delay_param_1_note_value
, pod_set_delay_param_1_note_value
);
292 static DEVICE_ATTR2(band_2_frequency__bass
, band_2_frequency
, S_IWUGO
| S_IRUGO
, pod_get_band_2_frequency__bass
, pod_set_band_2_frequency__bass
);
293 static DEVICE_ATTR(delay_param_2
, S_IWUGO
| S_IRUGO
, pod_get_delay_param_2
, pod_set_delay_param_2
);
294 static DEVICE_ATTR(delay_volume_mix
, S_IWUGO
| S_IRUGO
, pod_get_delay_volume_mix
, pod_set_delay_volume_mix
);
295 static DEVICE_ATTR(delay_param_3
, S_IWUGO
| S_IRUGO
, pod_get_delay_param_3
, pod_set_delay_param_3
);
296 static DEVICE_ATTR(reverb_enable
, S_IWUGO
| S_IRUGO
, pod_get_reverb_enable
, pod_set_reverb_enable
);
297 static DEVICE_ATTR(reverb_type
, S_IWUGO
| S_IRUGO
, pod_get_reverb_type
, pod_set_reverb_type
);
298 static DEVICE_ATTR(reverb_decay
, S_IWUGO
| S_IRUGO
, pod_get_reverb_decay
, pod_set_reverb_decay
);
299 static DEVICE_ATTR(reverb_tone
, S_IWUGO
| S_IRUGO
, pod_get_reverb_tone
, pod_set_reverb_tone
);
300 static DEVICE_ATTR(reverb_pre_delay
, S_IWUGO
| S_IRUGO
, pod_get_reverb_pre_delay
, pod_set_reverb_pre_delay
);
301 static DEVICE_ATTR(reverb_pre_post
, S_IWUGO
| S_IRUGO
, pod_get_reverb_pre_post
, pod_set_reverb_pre_post
);
302 static DEVICE_ATTR(band_2_frequency
, S_IWUGO
| S_IRUGO
, pod_get_band_2_frequency
, pod_set_band_2_frequency
);
303 static DEVICE_ATTR2(band_3_frequency__bass
, band_3_frequency
, S_IWUGO
| S_IRUGO
, pod_get_band_3_frequency__bass
, pod_set_band_3_frequency__bass
);
304 static DEVICE_ATTR(wah_enable
, S_IWUGO
| S_IRUGO
, pod_get_wah_enable
, pod_set_wah_enable
);
305 static DEVICE_ATTR(modulation_lo_cut
, S_IWUGO
| S_IRUGO
, pod_get_modulation_lo_cut
, pod_set_modulation_lo_cut
);
306 static DEVICE_ATTR(delay_reverb_lo_cut
, S_IWUGO
| S_IRUGO
, pod_get_delay_reverb_lo_cut
, pod_set_delay_reverb_lo_cut
);
307 static DEVICE_ATTR(volume_pedal_minimum
, S_IWUGO
| S_IRUGO
, pod_get_volume_pedal_minimum
, pod_set_volume_pedal_minimum
);
308 static DEVICE_ATTR(eq_pre_post
, S_IWUGO
| S_IRUGO
, pod_get_eq_pre_post
, pod_set_eq_pre_post
);
309 static DEVICE_ATTR(volume_pre_post
, S_IWUGO
| S_IRUGO
, pod_get_volume_pre_post
, pod_set_volume_pre_post
);
310 static DEVICE_ATTR(di_model
, S_IWUGO
| S_IRUGO
, pod_get_di_model
, pod_set_di_model
);
311 static DEVICE_ATTR(di_delay
, S_IWUGO
| S_IRUGO
, pod_get_di_delay
, pod_set_di_delay
);
312 static DEVICE_ATTR(mod_enable
, S_IWUGO
| S_IRUGO
, pod_get_mod_enable
, pod_set_mod_enable
);
313 static DEVICE_ATTR(mod_param_1_note_value
, S_IWUGO
| S_IRUGO
, pod_get_mod_param_1_note_value
, pod_set_mod_param_1_note_value
);
314 static DEVICE_ATTR(mod_param_2
, S_IWUGO
| S_IRUGO
, pod_get_mod_param_2
, pod_set_mod_param_2
);
315 static DEVICE_ATTR(mod_param_3
, S_IWUGO
| S_IRUGO
, pod_get_mod_param_3
, pod_set_mod_param_3
);
316 static DEVICE_ATTR(mod_param_4
, S_IWUGO
| S_IRUGO
, pod_get_mod_param_4
, pod_set_mod_param_4
);
317 static DEVICE_ATTR(mod_param_5
, S_IWUGO
| S_IRUGO
, pod_get_mod_param_5
, pod_set_mod_param_5
);
318 static DEVICE_ATTR(mod_volume_mix
, S_IWUGO
| S_IRUGO
, pod_get_mod_volume_mix
, pod_set_mod_volume_mix
);
319 static DEVICE_ATTR(mod_pre_post
, S_IWUGO
| S_IRUGO
, pod_get_mod_pre_post
, pod_set_mod_pre_post
);
320 static DEVICE_ATTR(modulation_model
, S_IWUGO
| S_IRUGO
, pod_get_modulation_model
, pod_set_modulation_model
);
321 static DEVICE_ATTR(band_3_frequency
, S_IWUGO
| S_IRUGO
, pod_get_band_3_frequency
, pod_set_band_3_frequency
);
322 static DEVICE_ATTR2(band_4_frequency__bass
, band_4_frequency
, S_IWUGO
| S_IRUGO
, pod_get_band_4_frequency__bass
, pod_set_band_4_frequency__bass
);
323 static DEVICE_ATTR(mod_param_1_double_precision
, S_IWUGO
| S_IRUGO
, pod_get_mod_param_1_double_precision
, pod_set_mod_param_1_double_precision
);
324 static DEVICE_ATTR(delay_param_1_double_precision
, S_IWUGO
| S_IRUGO
, pod_get_delay_param_1_double_precision
, pod_set_delay_param_1_double_precision
);
325 static DEVICE_ATTR(eq_enable
, S_IWUGO
| S_IRUGO
, pod_get_eq_enable
, pod_set_eq_enable
);
326 static DEVICE_ATTR(tap
, S_IWUGO
| S_IRUGO
, pod_get_tap
, pod_set_tap
);
327 static DEVICE_ATTR(volume_tweak_pedal_assign
, S_IWUGO
| S_IRUGO
, pod_get_volume_tweak_pedal_assign
, pod_set_volume_tweak_pedal_assign
);
328 static DEVICE_ATTR(band_5_frequency
, S_IWUGO
| S_IRUGO
, pod_get_band_5_frequency
, pod_set_band_5_frequency
);
329 static DEVICE_ATTR(tuner
, S_IWUGO
| S_IRUGO
, pod_get_tuner
, pod_set_tuner
);
330 static DEVICE_ATTR(mic_selection
, S_IWUGO
| S_IRUGO
, pod_get_mic_selection
, pod_set_mic_selection
);
331 static DEVICE_ATTR(cabinet_model
, S_IWUGO
| S_IRUGO
, pod_get_cabinet_model
, pod_set_cabinet_model
);
332 static DEVICE_ATTR(stomp_model
, S_IWUGO
| S_IRUGO
, pod_get_stomp_model
, pod_set_stomp_model
);
333 static DEVICE_ATTR(roomlevel
, S_IWUGO
| S_IRUGO
, pod_get_roomlevel
, pod_set_roomlevel
);
334 static DEVICE_ATTR(band_4_frequency
, S_IWUGO
| S_IRUGO
, pod_get_band_4_frequency
, pod_set_band_4_frequency
);
335 static DEVICE_ATTR(band_6_frequency
, S_IWUGO
| S_IRUGO
, pod_get_band_6_frequency
, pod_set_band_6_frequency
);
336 static DEVICE_ATTR(stomp_param_1_note_value
, S_IWUGO
| S_IRUGO
, pod_get_stomp_param_1_note_value
, pod_set_stomp_param_1_note_value
);
337 static DEVICE_ATTR(stomp_param_2
, S_IWUGO
| S_IRUGO
, pod_get_stomp_param_2
, pod_set_stomp_param_2
);
338 static DEVICE_ATTR(stomp_param_3
, S_IWUGO
| S_IRUGO
, pod_get_stomp_param_3
, pod_set_stomp_param_3
);
339 static DEVICE_ATTR(stomp_param_4
, S_IWUGO
| S_IRUGO
, pod_get_stomp_param_4
, pod_set_stomp_param_4
);
340 static DEVICE_ATTR(stomp_param_5
, S_IWUGO
| S_IRUGO
, pod_get_stomp_param_5
, pod_set_stomp_param_5
);
341 static DEVICE_ATTR(stomp_param_6
, S_IWUGO
| S_IRUGO
, pod_get_stomp_param_6
, pod_set_stomp_param_6
);
342 static DEVICE_ATTR(amp_switch_select
, S_IWUGO
| S_IRUGO
, pod_get_amp_switch_select
, pod_set_amp_switch_select
);
343 static DEVICE_ATTR(delay_param_4
, S_IWUGO
| S_IRUGO
, pod_get_delay_param_4
, pod_set_delay_param_4
);
344 static DEVICE_ATTR(delay_param_5
, S_IWUGO
| S_IRUGO
, pod_get_delay_param_5
, pod_set_delay_param_5
);
345 static DEVICE_ATTR(delay_pre_post
, S_IWUGO
| S_IRUGO
, pod_get_delay_pre_post
, pod_set_delay_pre_post
);
346 static DEVICE_ATTR(delay_model
, S_IWUGO
| S_IRUGO
, pod_get_delay_model
, pod_set_delay_model
);
347 static DEVICE_ATTR(delay_verb_model
, S_IWUGO
| S_IRUGO
, pod_get_delay_verb_model
, pod_set_delay_verb_model
);
348 static DEVICE_ATTR(tempo_msb
, S_IWUGO
| S_IRUGO
, pod_get_tempo_msb
, pod_set_tempo_msb
);
349 static DEVICE_ATTR(tempo_lsb
, S_IWUGO
| S_IRUGO
, pod_get_tempo_lsb
, pod_set_tempo_lsb
);
350 static DEVICE_ATTR(wah_model
, S_IWUGO
| S_IRUGO
, pod_get_wah_model
, pod_set_wah_model
);
351 static DEVICE_ATTR(bypass_volume
, S_IWUGO
| S_IRUGO
, pod_get_bypass_volume
, pod_set_bypass_volume
);
352 static DEVICE_ATTR(fx_loop_on_off
, S_IWUGO
| S_IRUGO
, pod_get_fx_loop_on_off
, pod_set_fx_loop_on_off
);
353 static DEVICE_ATTR(tweak_param_select
, S_IWUGO
| S_IRUGO
, pod_get_tweak_param_select
, pod_set_tweak_param_select
);
354 static DEVICE_ATTR(amp1_engage
, S_IWUGO
| S_IRUGO
, pod_get_amp1_engage
, pod_set_amp1_engage
);
355 static DEVICE_ATTR(band_1_gain
, S_IWUGO
| S_IRUGO
, pod_get_band_1_gain
, pod_set_band_1_gain
);
356 static DEVICE_ATTR2(band_2_gain__bass
, band_2_gain
, S_IWUGO
| S_IRUGO
, pod_get_band_2_gain__bass
, pod_set_band_2_gain__bass
);
357 static DEVICE_ATTR(band_2_gain
, S_IWUGO
| S_IRUGO
, pod_get_band_2_gain
, pod_set_band_2_gain
);
358 static DEVICE_ATTR2(band_3_gain__bass
, band_3_gain
, S_IWUGO
| S_IRUGO
, pod_get_band_3_gain__bass
, pod_set_band_3_gain__bass
);
359 static DEVICE_ATTR(band_3_gain
, S_IWUGO
| S_IRUGO
, pod_get_band_3_gain
, pod_set_band_3_gain
);
360 static DEVICE_ATTR2(band_4_gain__bass
, band_4_gain
, S_IWUGO
| S_IRUGO
, pod_get_band_4_gain__bass
, pod_set_band_4_gain__bass
);
361 static DEVICE_ATTR2(band_5_gain__bass
, band_5_gain
, S_IWUGO
| S_IRUGO
, pod_get_band_5_gain__bass
, pod_set_band_5_gain__bass
);
362 static DEVICE_ATTR(band_4_gain
, S_IWUGO
| S_IRUGO
, pod_get_band_4_gain
, pod_set_band_4_gain
);
363 static DEVICE_ATTR2(band_6_gain__bass
, band_6_gain
, S_IWUGO
| S_IRUGO
, pod_get_band_6_gain__bass
, pod_set_band_6_gain__bass
);
364 static DEVICE_ATTR(body
, S_IRUGO
, variax_get_body
, line6_nop_write
);
365 static DEVICE_ATTR(pickup1_enable
, S_IRUGO
, variax_get_pickup1_enable
, line6_nop_write
);
366 static DEVICE_ATTR(pickup1_type
, S_IRUGO
, variax_get_pickup1_type
, line6_nop_write
);
367 static DEVICE_ATTR(pickup1_position
, S_IRUGO
, variax_get_pickup1_position
, line6_nop_write
);
368 static DEVICE_ATTR(pickup1_angle
, S_IRUGO
, variax_get_pickup1_angle
, line6_nop_write
);
369 static DEVICE_ATTR(pickup1_level
, S_IRUGO
, variax_get_pickup1_level
, line6_nop_write
);
370 static DEVICE_ATTR(pickup2_enable
, S_IRUGO
, variax_get_pickup2_enable
, line6_nop_write
);
371 static DEVICE_ATTR(pickup2_type
, S_IRUGO
, variax_get_pickup2_type
, line6_nop_write
);
372 static DEVICE_ATTR(pickup2_position
, S_IRUGO
, variax_get_pickup2_position
, line6_nop_write
);
373 static DEVICE_ATTR(pickup2_angle
, S_IRUGO
, variax_get_pickup2_angle
, line6_nop_write
);
374 static DEVICE_ATTR(pickup2_level
, S_IRUGO
, variax_get_pickup2_level
, line6_nop_write
);
375 static DEVICE_ATTR(pickup_phase
, S_IRUGO
, variax_get_pickup_phase
, line6_nop_write
);
376 static DEVICE_ATTR(capacitance
, S_IRUGO
, variax_get_capacitance
, line6_nop_write
);
377 static DEVICE_ATTR(tone_resistance
, S_IRUGO
, variax_get_tone_resistance
, line6_nop_write
);
378 static DEVICE_ATTR(volume_resistance
, S_IRUGO
, variax_get_volume_resistance
, line6_nop_write
);
379 static DEVICE_ATTR(taper
, S_IRUGO
, variax_get_taper
, line6_nop_write
);
380 static DEVICE_ATTR(tone_dump
, S_IRUGO
, variax_get_tone_dump
, line6_nop_write
);
381 static DEVICE_ATTR(save_tone
, S_IRUGO
, variax_get_save_tone
, line6_nop_write
);
382 static DEVICE_ATTR(volume_dump
, S_IRUGO
, variax_get_volume_dump
, line6_nop_write
);
383 static DEVICE_ATTR(tuning_enable
, S_IRUGO
, variax_get_tuning_enable
, line6_nop_write
);
384 static DEVICE_ATTR(tuning6
, S_IRUGO
, variax_get_tuning6
, line6_nop_write
);
385 static DEVICE_ATTR(tuning5
, S_IRUGO
, variax_get_tuning5
, line6_nop_write
);
386 static DEVICE_ATTR(tuning4
, S_IRUGO
, variax_get_tuning4
, line6_nop_write
);
387 static DEVICE_ATTR(tuning3
, S_IRUGO
, variax_get_tuning3
, line6_nop_write
);
388 static DEVICE_ATTR(tuning2
, S_IRUGO
, variax_get_tuning2
, line6_nop_write
);
389 static DEVICE_ATTR(tuning1
, S_IRUGO
, variax_get_tuning1
, line6_nop_write
);
390 static DEVICE_ATTR(detune6
, S_IRUGO
, variax_get_detune6
, line6_nop_write
);
391 static DEVICE_ATTR(detune5
, S_IRUGO
, variax_get_detune5
, line6_nop_write
);
392 static DEVICE_ATTR(detune4
, S_IRUGO
, variax_get_detune4
, line6_nop_write
);
393 static DEVICE_ATTR(detune3
, S_IRUGO
, variax_get_detune3
, line6_nop_write
);
394 static DEVICE_ATTR(detune2
, S_IRUGO
, variax_get_detune2
, line6_nop_write
);
395 static DEVICE_ATTR(detune1
, S_IRUGO
, variax_get_detune1
, line6_nop_write
);
396 static DEVICE_ATTR(mix6
, S_IRUGO
, variax_get_mix6
, line6_nop_write
);
397 static DEVICE_ATTR(mix5
, S_IRUGO
, variax_get_mix5
, line6_nop_write
);
398 static DEVICE_ATTR(mix4
, S_IRUGO
, variax_get_mix4
, line6_nop_write
);
399 static DEVICE_ATTR(mix3
, S_IRUGO
, variax_get_mix3
, line6_nop_write
);
400 static DEVICE_ATTR(mix2
, S_IRUGO
, variax_get_mix2
, line6_nop_write
);
401 static DEVICE_ATTR(mix1
, S_IRUGO
, variax_get_mix1
, line6_nop_write
);
402 static DEVICE_ATTR(pickup_wiring
, S_IRUGO
, variax_get_pickup_wiring
, line6_nop_write
);
404 int pod_create_files(int firmware
, int type
, struct device
*dev
)
407 CHECK_RETURN(device_create_file(dev
, &dev_attr_tweak
));
408 CHECK_RETURN(device_create_file(dev
, &dev_attr_wah_position
));
409 if ((type
& (LINE6_BITS_PODXTALL
)) != 0)
410 CHECK_RETURN(device_create_file(dev
, &dev_attr_compression_gain
));
411 CHECK_RETURN(device_create_file(dev
, &dev_attr_vol_pedal_position
));
412 CHECK_RETURN(device_create_file(dev
, &dev_attr_compression_threshold
));
413 CHECK_RETURN(device_create_file(dev
, &dev_attr_pan
));
414 CHECK_RETURN(device_create_file(dev
, &dev_attr_amp_model_setup
));
416 CHECK_RETURN(device_create_file(dev
, &dev_attr_amp_model
));
417 CHECK_RETURN(device_create_file(dev
, &dev_attr_drive
));
418 CHECK_RETURN(device_create_file(dev
, &dev_attr_bass
));
419 if ((type
& (LINE6_BITS_PODXTALL
)) != 0)
420 CHECK_RETURN(device_create_file(dev
, &dev_attr_mid
));
421 if ((type
& (LINE6_BITS_BASSPODXTALL
)) != 0)
422 CHECK_RETURN(device_create_file(dev
, &dev_attr_lowmid
));
423 if ((type
& (LINE6_BITS_PODXTALL
)) != 0)
424 CHECK_RETURN(device_create_file(dev
, &dev_attr_treble
));
425 if ((type
& (LINE6_BITS_BASSPODXTALL
)) != 0)
426 CHECK_RETURN(device_create_file(dev
, &dev_attr_highmid
));
427 CHECK_RETURN(device_create_file(dev
, &dev_attr_chan_vol
));
428 if ((type
& (LINE6_BITS_PODXTALL
)) != 0)
429 CHECK_RETURN(device_create_file(dev
, &dev_attr_reverb_mix
));
430 CHECK_RETURN(device_create_file(dev
, &dev_attr_effect_setup
));
432 CHECK_RETURN(device_create_file(dev
, &dev_attr_band_1_frequency
));
433 if ((type
& (LINE6_BITS_PODXTALL
)) != 0)
434 CHECK_RETURN(device_create_file(dev
, &dev_attr_presence
));
435 if ((type
& (LINE6_BITS_BASSPODXTALL
)) != 0)
436 CHECK_RETURN(device_create_file(dev
, &dev_attr_treble__bass
));
437 CHECK_RETURN(device_create_file(dev
, &dev_attr_noise_gate_enable
));
438 CHECK_RETURN(device_create_file(dev
, &dev_attr_gate_threshold
));
439 CHECK_RETURN(device_create_file(dev
, &dev_attr_gate_decay_time
));
440 CHECK_RETURN(device_create_file(dev
, &dev_attr_stomp_enable
));
441 CHECK_RETURN(device_create_file(dev
, &dev_attr_comp_enable
));
442 CHECK_RETURN(device_create_file(dev
, &dev_attr_stomp_time
));
443 CHECK_RETURN(device_create_file(dev
, &dev_attr_delay_enable
));
444 CHECK_RETURN(device_create_file(dev
, &dev_attr_mod_param_1
));
445 CHECK_RETURN(device_create_file(dev
, &dev_attr_delay_param_1
));
446 CHECK_RETURN(device_create_file(dev
, &dev_attr_delay_param_1_note_value
));
447 if ((type
& (LINE6_BITS_BASSPODXTALL
)) != 0)
449 CHECK_RETURN(device_create_file(dev
, &dev_attr_band_2_frequency__bass
));
450 CHECK_RETURN(device_create_file(dev
, &dev_attr_delay_param_2
));
451 CHECK_RETURN(device_create_file(dev
, &dev_attr_delay_volume_mix
));
452 CHECK_RETURN(device_create_file(dev
, &dev_attr_delay_param_3
));
453 if ((type
& (LINE6_BITS_PODXTALL
)) != 0)
454 CHECK_RETURN(device_create_file(dev
, &dev_attr_reverb_enable
));
455 if ((type
& (LINE6_BITS_PODXTALL
)) != 0)
456 CHECK_RETURN(device_create_file(dev
, &dev_attr_reverb_type
));
457 if ((type
& (LINE6_BITS_PODXTALL
)) != 0)
458 CHECK_RETURN(device_create_file(dev
, &dev_attr_reverb_decay
));
459 if ((type
& (LINE6_BITS_PODXTALL
)) != 0)
460 CHECK_RETURN(device_create_file(dev
, &dev_attr_reverb_tone
));
461 if ((type
& (LINE6_BITS_PODXTALL
)) != 0)
462 CHECK_RETURN(device_create_file(dev
, &dev_attr_reverb_pre_delay
));
463 if ((type
& (LINE6_BITS_PODXTALL
)) != 0)
464 CHECK_RETURN(device_create_file(dev
, &dev_attr_reverb_pre_post
));
465 if ((type
& (LINE6_BITS_PODXTALL
)) != 0)
467 CHECK_RETURN(device_create_file(dev
, &dev_attr_band_2_frequency
));
468 if ((type
& (LINE6_BITS_BASSPODXTALL
)) != 0)
470 CHECK_RETURN(device_create_file(dev
, &dev_attr_band_3_frequency__bass
));
471 CHECK_RETURN(device_create_file(dev
, &dev_attr_wah_enable
));
472 if ((type
& (LINE6_BITS_BASSPODXTALL
)) != 0)
473 CHECK_RETURN(device_create_file(dev
, &dev_attr_modulation_lo_cut
));
474 if ((type
& (LINE6_BITS_BASSPODXTALL
)) != 0)
475 CHECK_RETURN(device_create_file(dev
, &dev_attr_delay_reverb_lo_cut
));
476 if ((type
& (LINE6_BITS_PODXTALL
)) != 0)
478 CHECK_RETURN(device_create_file(dev
, &dev_attr_volume_pedal_minimum
));
479 if ((type
& (LINE6_BITS_BASSPODXTALL
)) != 0)
481 CHECK_RETURN(device_create_file(dev
, &dev_attr_eq_pre_post
));
482 CHECK_RETURN(device_create_file(dev
, &dev_attr_volume_pre_post
));
483 if ((type
& (LINE6_BITS_BASSPODXTALL
)) != 0)
484 CHECK_RETURN(device_create_file(dev
, &dev_attr_di_model
));
485 if ((type
& (LINE6_BITS_BASSPODXTALL
)) != 0)
486 CHECK_RETURN(device_create_file(dev
, &dev_attr_di_delay
));
487 CHECK_RETURN(device_create_file(dev
, &dev_attr_mod_enable
));
488 CHECK_RETURN(device_create_file(dev
, &dev_attr_mod_param_1_note_value
));
489 CHECK_RETURN(device_create_file(dev
, &dev_attr_mod_param_2
));
490 CHECK_RETURN(device_create_file(dev
, &dev_attr_mod_param_3
));
491 CHECK_RETURN(device_create_file(dev
, &dev_attr_mod_param_4
));
492 if ((type
& (LINE6_BITS_BASSPODXTALL
)) != 0)
493 CHECK_RETURN(device_create_file(dev
, &dev_attr_mod_param_5
));
494 CHECK_RETURN(device_create_file(dev
, &dev_attr_mod_volume_mix
));
495 CHECK_RETURN(device_create_file(dev
, &dev_attr_mod_pre_post
));
496 CHECK_RETURN(device_create_file(dev
, &dev_attr_modulation_model
));
497 if ((type
& (LINE6_BITS_PODXTALL
)) != 0)
499 CHECK_RETURN(device_create_file(dev
, &dev_attr_band_3_frequency
));
500 if ((type
& (LINE6_BITS_BASSPODXTALL
)) != 0)
502 CHECK_RETURN(device_create_file(dev
, &dev_attr_band_4_frequency__bass
));
503 CHECK_RETURN(device_create_file(dev
, &dev_attr_mod_param_1_double_precision
));
504 CHECK_RETURN(device_create_file(dev
, &dev_attr_delay_param_1_double_precision
));
506 CHECK_RETURN(device_create_file(dev
, &dev_attr_eq_enable
));
507 CHECK_RETURN(device_create_file(dev
, &dev_attr_tap
));
508 CHECK_RETURN(device_create_file(dev
, &dev_attr_volume_tweak_pedal_assign
));
509 if ((type
& (LINE6_BITS_BASSPODXTALL
)) != 0)
511 CHECK_RETURN(device_create_file(dev
, &dev_attr_band_5_frequency
));
512 CHECK_RETURN(device_create_file(dev
, &dev_attr_tuner
));
513 CHECK_RETURN(device_create_file(dev
, &dev_attr_mic_selection
));
514 CHECK_RETURN(device_create_file(dev
, &dev_attr_cabinet_model
));
515 CHECK_RETURN(device_create_file(dev
, &dev_attr_stomp_model
));
516 CHECK_RETURN(device_create_file(dev
, &dev_attr_roomlevel
));
517 if ((type
& (LINE6_BITS_PODXTALL
)) != 0)
519 CHECK_RETURN(device_create_file(dev
, &dev_attr_band_4_frequency
));
520 if ((type
& (LINE6_BITS_BASSPODXTALL
)) != 0)
522 CHECK_RETURN(device_create_file(dev
, &dev_attr_band_6_frequency
));
523 CHECK_RETURN(device_create_file(dev
, &dev_attr_stomp_param_1_note_value
));
524 CHECK_RETURN(device_create_file(dev
, &dev_attr_stomp_param_2
));
525 CHECK_RETURN(device_create_file(dev
, &dev_attr_stomp_param_3
));
526 CHECK_RETURN(device_create_file(dev
, &dev_attr_stomp_param_4
));
527 CHECK_RETURN(device_create_file(dev
, &dev_attr_stomp_param_5
));
528 CHECK_RETURN(device_create_file(dev
, &dev_attr_stomp_param_6
));
529 if ((type
& (LINE6_BITS_LIVE
)) != 0)
530 CHECK_RETURN(device_create_file(dev
, &dev_attr_amp_switch_select
));
531 CHECK_RETURN(device_create_file(dev
, &dev_attr_delay_param_4
));
532 CHECK_RETURN(device_create_file(dev
, &dev_attr_delay_param_5
));
533 CHECK_RETURN(device_create_file(dev
, &dev_attr_delay_pre_post
));
534 if ((type
& (LINE6_BITS_PODXTALL
)) != 0)
535 CHECK_RETURN(device_create_file(dev
, &dev_attr_delay_model
));
536 if ((type
& (LINE6_BITS_BASSPODXTALL
)) != 0)
537 CHECK_RETURN(device_create_file(dev
, &dev_attr_delay_verb_model
));
538 CHECK_RETURN(device_create_file(dev
, &dev_attr_tempo_msb
));
539 CHECK_RETURN(device_create_file(dev
, &dev_attr_tempo_lsb
));
541 CHECK_RETURN(device_create_file(dev
, &dev_attr_wah_model
));
543 CHECK_RETURN(device_create_file(dev
, &dev_attr_bypass_volume
));
544 if ((type
& (LINE6_BITS_PRO
)) != 0)
545 CHECK_RETURN(device_create_file(dev
, &dev_attr_fx_loop_on_off
));
546 CHECK_RETURN(device_create_file(dev
, &dev_attr_tweak_param_select
));
547 CHECK_RETURN(device_create_file(dev
, &dev_attr_amp1_engage
));
549 CHECK_RETURN(device_create_file(dev
, &dev_attr_band_1_gain
));
550 if ((type
& (LINE6_BITS_BASSPODXTALL
)) != 0)
552 CHECK_RETURN(device_create_file(dev
, &dev_attr_band_2_gain__bass
));
553 if ((type
& (LINE6_BITS_PODXTALL
)) != 0)
555 CHECK_RETURN(device_create_file(dev
, &dev_attr_band_2_gain
));
556 if ((type
& (LINE6_BITS_BASSPODXTALL
)) != 0)
558 CHECK_RETURN(device_create_file(dev
, &dev_attr_band_3_gain__bass
));
559 if ((type
& (LINE6_BITS_PODXTALL
)) != 0)
561 CHECK_RETURN(device_create_file(dev
, &dev_attr_band_3_gain
));
562 if ((type
& (LINE6_BITS_BASSPODXTALL
)) != 0)
564 CHECK_RETURN(device_create_file(dev
, &dev_attr_band_4_gain__bass
));
565 if ((type
& (LINE6_BITS_BASSPODXTALL
)) != 0)
567 CHECK_RETURN(device_create_file(dev
, &dev_attr_band_5_gain__bass
));
568 if ((type
& (LINE6_BITS_PODXTALL
)) != 0)
570 CHECK_RETURN(device_create_file(dev
, &dev_attr_band_4_gain
));
571 if ((type
& (LINE6_BITS_BASSPODXTALL
)) != 0)
573 CHECK_RETURN(device_create_file(dev
, &dev_attr_band_6_gain__bass
));
577 void pod_remove_files(int firmware
, int type
, struct device
*dev
)
579 device_remove_file(dev
, &dev_attr_tweak
);
580 device_remove_file(dev
, &dev_attr_wah_position
);
581 if ((type
& (LINE6_BITS_PODXTALL
)) != 0)
582 device_remove_file(dev
, &dev_attr_compression_gain
);
583 device_remove_file(dev
, &dev_attr_vol_pedal_position
);
584 device_remove_file(dev
, &dev_attr_compression_threshold
);
585 device_remove_file(dev
, &dev_attr_pan
);
586 device_remove_file(dev
, &dev_attr_amp_model_setup
);
588 device_remove_file(dev
, &dev_attr_amp_model
);
589 device_remove_file(dev
, &dev_attr_drive
);
590 device_remove_file(dev
, &dev_attr_bass
);
591 if ((type
& (LINE6_BITS_PODXTALL
)) != 0)
592 device_remove_file(dev
, &dev_attr_mid
);
593 if ((type
& (LINE6_BITS_BASSPODXTALL
)) != 0)
594 device_remove_file(dev
, &dev_attr_lowmid
);
595 if ((type
& (LINE6_BITS_PODXTALL
)) != 0)
596 device_remove_file(dev
, &dev_attr_treble
);
597 if ((type
& (LINE6_BITS_BASSPODXTALL
)) != 0)
598 device_remove_file(dev
, &dev_attr_highmid
);
599 device_remove_file(dev
, &dev_attr_chan_vol
);
600 if ((type
& (LINE6_BITS_PODXTALL
)) != 0)
601 device_remove_file(dev
, &dev_attr_reverb_mix
);
602 device_remove_file(dev
, &dev_attr_effect_setup
);
604 device_remove_file(dev
, &dev_attr_band_1_frequency
);
605 if ((type
& (LINE6_BITS_PODXTALL
)) != 0)
606 device_remove_file(dev
, &dev_attr_presence
);
607 if ((type
& (LINE6_BITS_BASSPODXTALL
)) != 0)
608 device_remove_file(dev
, &dev_attr_treble__bass
);
609 device_remove_file(dev
, &dev_attr_noise_gate_enable
);
610 device_remove_file(dev
, &dev_attr_gate_threshold
);
611 device_remove_file(dev
, &dev_attr_gate_decay_time
);
612 device_remove_file(dev
, &dev_attr_stomp_enable
);
613 device_remove_file(dev
, &dev_attr_comp_enable
);
614 device_remove_file(dev
, &dev_attr_stomp_time
);
615 device_remove_file(dev
, &dev_attr_delay_enable
);
616 device_remove_file(dev
, &dev_attr_mod_param_1
);
617 device_remove_file(dev
, &dev_attr_delay_param_1
);
618 device_remove_file(dev
, &dev_attr_delay_param_1_note_value
);
619 if ((type
& (LINE6_BITS_BASSPODXTALL
)) != 0)
621 device_remove_file(dev
, &dev_attr_band_2_frequency__bass
);
622 device_remove_file(dev
, &dev_attr_delay_param_2
);
623 device_remove_file(dev
, &dev_attr_delay_volume_mix
);
624 device_remove_file(dev
, &dev_attr_delay_param_3
);
625 if ((type
& (LINE6_BITS_PODXTALL
)) != 0)
626 device_remove_file(dev
, &dev_attr_reverb_enable
);
627 if ((type
& (LINE6_BITS_PODXTALL
)) != 0)
628 device_remove_file(dev
, &dev_attr_reverb_type
);
629 if ((type
& (LINE6_BITS_PODXTALL
)) != 0)
630 device_remove_file(dev
, &dev_attr_reverb_decay
);
631 if ((type
& (LINE6_BITS_PODXTALL
)) != 0)
632 device_remove_file(dev
, &dev_attr_reverb_tone
);
633 if ((type
& (LINE6_BITS_PODXTALL
)) != 0)
634 device_remove_file(dev
, &dev_attr_reverb_pre_delay
);
635 if ((type
& (LINE6_BITS_PODXTALL
)) != 0)
636 device_remove_file(dev
, &dev_attr_reverb_pre_post
);
637 if ((type
& (LINE6_BITS_PODXTALL
)) != 0)
639 device_remove_file(dev
, &dev_attr_band_2_frequency
);
640 if ((type
& (LINE6_BITS_BASSPODXTALL
)) != 0)
642 device_remove_file(dev
, &dev_attr_band_3_frequency__bass
);
643 device_remove_file(dev
, &dev_attr_wah_enable
);
644 if ((type
& (LINE6_BITS_BASSPODXTALL
)) != 0)
645 device_remove_file(dev
, &dev_attr_modulation_lo_cut
);
646 if ((type
& (LINE6_BITS_BASSPODXTALL
)) != 0)
647 device_remove_file(dev
, &dev_attr_delay_reverb_lo_cut
);
648 if ((type
& (LINE6_BITS_PODXTALL
)) != 0)
650 device_remove_file(dev
, &dev_attr_volume_pedal_minimum
);
651 if ((type
& (LINE6_BITS_BASSPODXTALL
)) != 0)
653 device_remove_file(dev
, &dev_attr_eq_pre_post
);
654 device_remove_file(dev
, &dev_attr_volume_pre_post
);
655 if ((type
& (LINE6_BITS_BASSPODXTALL
)) != 0)
656 device_remove_file(dev
, &dev_attr_di_model
);
657 if ((type
& (LINE6_BITS_BASSPODXTALL
)) != 0)
658 device_remove_file(dev
, &dev_attr_di_delay
);
659 device_remove_file(dev
, &dev_attr_mod_enable
);
660 device_remove_file(dev
, &dev_attr_mod_param_1_note_value
);
661 device_remove_file(dev
, &dev_attr_mod_param_2
);
662 device_remove_file(dev
, &dev_attr_mod_param_3
);
663 device_remove_file(dev
, &dev_attr_mod_param_4
);
664 if ((type
& (LINE6_BITS_BASSPODXTALL
)) != 0)
665 device_remove_file(dev
, &dev_attr_mod_param_5
);
666 device_remove_file(dev
, &dev_attr_mod_volume_mix
);
667 device_remove_file(dev
, &dev_attr_mod_pre_post
);
668 device_remove_file(dev
, &dev_attr_modulation_model
);
669 if ((type
& (LINE6_BITS_PODXTALL
)) != 0)
671 device_remove_file(dev
, &dev_attr_band_3_frequency
);
672 if ((type
& (LINE6_BITS_BASSPODXTALL
)) != 0)
674 device_remove_file(dev
, &dev_attr_band_4_frequency__bass
);
675 device_remove_file(dev
, &dev_attr_mod_param_1_double_precision
);
676 device_remove_file(dev
, &dev_attr_delay_param_1_double_precision
);
678 device_remove_file(dev
, &dev_attr_eq_enable
);
679 device_remove_file(dev
, &dev_attr_tap
);
680 device_remove_file(dev
, &dev_attr_volume_tweak_pedal_assign
);
681 if ((type
& (LINE6_BITS_BASSPODXTALL
)) != 0)
683 device_remove_file(dev
, &dev_attr_band_5_frequency
);
684 device_remove_file(dev
, &dev_attr_tuner
);
685 device_remove_file(dev
, &dev_attr_mic_selection
);
686 device_remove_file(dev
, &dev_attr_cabinet_model
);
687 device_remove_file(dev
, &dev_attr_stomp_model
);
688 device_remove_file(dev
, &dev_attr_roomlevel
);
689 if ((type
& (LINE6_BITS_PODXTALL
)) != 0)
691 device_remove_file(dev
, &dev_attr_band_4_frequency
);
692 if ((type
& (LINE6_BITS_BASSPODXTALL
)) != 0)
694 device_remove_file(dev
, &dev_attr_band_6_frequency
);
695 device_remove_file(dev
, &dev_attr_stomp_param_1_note_value
);
696 device_remove_file(dev
, &dev_attr_stomp_param_2
);
697 device_remove_file(dev
, &dev_attr_stomp_param_3
);
698 device_remove_file(dev
, &dev_attr_stomp_param_4
);
699 device_remove_file(dev
, &dev_attr_stomp_param_5
);
700 device_remove_file(dev
, &dev_attr_stomp_param_6
);
701 if ((type
& (LINE6_BITS_LIVE
)) != 0)
702 device_remove_file(dev
, &dev_attr_amp_switch_select
);
703 device_remove_file(dev
, &dev_attr_delay_param_4
);
704 device_remove_file(dev
, &dev_attr_delay_param_5
);
705 device_remove_file(dev
, &dev_attr_delay_pre_post
);
706 if ((type
& (LINE6_BITS_PODXTALL
)) != 0)
707 device_remove_file(dev
, &dev_attr_delay_model
);
708 if ((type
& (LINE6_BITS_BASSPODXTALL
)) != 0)
709 device_remove_file(dev
, &dev_attr_delay_verb_model
);
710 device_remove_file(dev
, &dev_attr_tempo_msb
);
711 device_remove_file(dev
, &dev_attr_tempo_lsb
);
713 device_remove_file(dev
, &dev_attr_wah_model
);
715 device_remove_file(dev
, &dev_attr_bypass_volume
);
716 if ((type
& (LINE6_BITS_PRO
)) != 0)
717 device_remove_file(dev
, &dev_attr_fx_loop_on_off
);
718 device_remove_file(dev
, &dev_attr_tweak_param_select
);
719 device_remove_file(dev
, &dev_attr_amp1_engage
);
721 device_remove_file(dev
, &dev_attr_band_1_gain
);
722 if ((type
& (LINE6_BITS_BASSPODXTALL
)) != 0)
724 device_remove_file(dev
, &dev_attr_band_2_gain__bass
);
725 if ((type
& (LINE6_BITS_PODXTALL
)) != 0)
727 device_remove_file(dev
, &dev_attr_band_2_gain
);
728 if ((type
& (LINE6_BITS_BASSPODXTALL
)) != 0)
730 device_remove_file(dev
, &dev_attr_band_3_gain__bass
);
731 if ((type
& (LINE6_BITS_PODXTALL
)) != 0)
733 device_remove_file(dev
, &dev_attr_band_3_gain
);
734 if ((type
& (LINE6_BITS_BASSPODXTALL
)) != 0)
736 device_remove_file(dev
, &dev_attr_band_4_gain__bass
);
737 if ((type
& (LINE6_BITS_BASSPODXTALL
)) != 0)
739 device_remove_file(dev
, &dev_attr_band_5_gain__bass
);
740 if ((type
& (LINE6_BITS_PODXTALL
)) != 0)
742 device_remove_file(dev
, &dev_attr_band_4_gain
);
743 if ((type
& (LINE6_BITS_BASSPODXTALL
)) != 0)
745 device_remove_file(dev
, &dev_attr_band_6_gain__bass
);
748 EXPORT_SYMBOL(pod_create_files
);
749 EXPORT_SYMBOL(pod_remove_files
);
751 int variax_create_files(int firmware
, int type
, struct device
*dev
)
754 CHECK_RETURN(device_create_file(dev
, &dev_attr_body
));
755 CHECK_RETURN(device_create_file(dev
, &dev_attr_pickup1_enable
));
756 CHECK_RETURN(device_create_file(dev
, &dev_attr_pickup1_type
));
757 CHECK_RETURN(device_create_file(dev
, &dev_attr_pickup1_position
));
758 CHECK_RETURN(device_create_file(dev
, &dev_attr_pickup1_angle
));
759 CHECK_RETURN(device_create_file(dev
, &dev_attr_pickup1_level
));
760 CHECK_RETURN(device_create_file(dev
, &dev_attr_pickup2_enable
));
761 CHECK_RETURN(device_create_file(dev
, &dev_attr_pickup2_type
));
762 CHECK_RETURN(device_create_file(dev
, &dev_attr_pickup2_position
));
763 CHECK_RETURN(device_create_file(dev
, &dev_attr_pickup2_angle
));
764 CHECK_RETURN(device_create_file(dev
, &dev_attr_pickup2_level
));
765 CHECK_RETURN(device_create_file(dev
, &dev_attr_pickup_phase
));
766 CHECK_RETURN(device_create_file(dev
, &dev_attr_capacitance
));
767 CHECK_RETURN(device_create_file(dev
, &dev_attr_tone_resistance
));
768 CHECK_RETURN(device_create_file(dev
, &dev_attr_volume_resistance
));
769 CHECK_RETURN(device_create_file(dev
, &dev_attr_taper
));
770 CHECK_RETURN(device_create_file(dev
, &dev_attr_tone_dump
));
771 CHECK_RETURN(device_create_file(dev
, &dev_attr_save_tone
));
772 CHECK_RETURN(device_create_file(dev
, &dev_attr_volume_dump
));
773 CHECK_RETURN(device_create_file(dev
, &dev_attr_tuning_enable
));
774 CHECK_RETURN(device_create_file(dev
, &dev_attr_tuning6
));
775 CHECK_RETURN(device_create_file(dev
, &dev_attr_tuning5
));
776 CHECK_RETURN(device_create_file(dev
, &dev_attr_tuning4
));
777 CHECK_RETURN(device_create_file(dev
, &dev_attr_tuning3
));
778 CHECK_RETURN(device_create_file(dev
, &dev_attr_tuning2
));
779 CHECK_RETURN(device_create_file(dev
, &dev_attr_tuning1
));
780 CHECK_RETURN(device_create_file(dev
, &dev_attr_detune6
));
781 CHECK_RETURN(device_create_file(dev
, &dev_attr_detune5
));
782 CHECK_RETURN(device_create_file(dev
, &dev_attr_detune4
));
783 CHECK_RETURN(device_create_file(dev
, &dev_attr_detune3
));
784 CHECK_RETURN(device_create_file(dev
, &dev_attr_detune2
));
785 CHECK_RETURN(device_create_file(dev
, &dev_attr_detune1
));
786 CHECK_RETURN(device_create_file(dev
, &dev_attr_mix6
));
787 CHECK_RETURN(device_create_file(dev
, &dev_attr_mix5
));
788 CHECK_RETURN(device_create_file(dev
, &dev_attr_mix4
));
789 CHECK_RETURN(device_create_file(dev
, &dev_attr_mix3
));
790 CHECK_RETURN(device_create_file(dev
, &dev_attr_mix2
));
791 CHECK_RETURN(device_create_file(dev
, &dev_attr_mix1
));
792 CHECK_RETURN(device_create_file(dev
, &dev_attr_pickup_wiring
));
796 void variax_remove_files(int firmware
, int type
, struct device
*dev
)
798 device_remove_file(dev
, &dev_attr_body
);
799 device_remove_file(dev
, &dev_attr_pickup1_enable
);
800 device_remove_file(dev
, &dev_attr_pickup1_type
);
801 device_remove_file(dev
, &dev_attr_pickup1_position
);
802 device_remove_file(dev
, &dev_attr_pickup1_angle
);
803 device_remove_file(dev
, &dev_attr_pickup1_level
);
804 device_remove_file(dev
, &dev_attr_pickup2_enable
);
805 device_remove_file(dev
, &dev_attr_pickup2_type
);
806 device_remove_file(dev
, &dev_attr_pickup2_position
);
807 device_remove_file(dev
, &dev_attr_pickup2_angle
);
808 device_remove_file(dev
, &dev_attr_pickup2_level
);
809 device_remove_file(dev
, &dev_attr_pickup_phase
);
810 device_remove_file(dev
, &dev_attr_capacitance
);
811 device_remove_file(dev
, &dev_attr_tone_resistance
);
812 device_remove_file(dev
, &dev_attr_volume_resistance
);
813 device_remove_file(dev
, &dev_attr_taper
);
814 device_remove_file(dev
, &dev_attr_tone_dump
);
815 device_remove_file(dev
, &dev_attr_save_tone
);
816 device_remove_file(dev
, &dev_attr_volume_dump
);
817 device_remove_file(dev
, &dev_attr_tuning_enable
);
818 device_remove_file(dev
, &dev_attr_tuning6
);
819 device_remove_file(dev
, &dev_attr_tuning5
);
820 device_remove_file(dev
, &dev_attr_tuning4
);
821 device_remove_file(dev
, &dev_attr_tuning3
);
822 device_remove_file(dev
, &dev_attr_tuning2
);
823 device_remove_file(dev
, &dev_attr_tuning1
);
824 device_remove_file(dev
, &dev_attr_detune6
);
825 device_remove_file(dev
, &dev_attr_detune5
);
826 device_remove_file(dev
, &dev_attr_detune4
);
827 device_remove_file(dev
, &dev_attr_detune3
);
828 device_remove_file(dev
, &dev_attr_detune2
);
829 device_remove_file(dev
, &dev_attr_detune1
);
830 device_remove_file(dev
, &dev_attr_mix6
);
831 device_remove_file(dev
, &dev_attr_mix5
);
832 device_remove_file(dev
, &dev_attr_mix4
);
833 device_remove_file(dev
, &dev_attr_mix3
);
834 device_remove_file(dev
, &dev_attr_mix2
);
835 device_remove_file(dev
, &dev_attr_mix1
);
836 device_remove_file(dev
, &dev_attr_pickup_wiring
);
839 EXPORT_SYMBOL(variax_create_files
);
840 EXPORT_SYMBOL(variax_remove_files
);