20 #define DEVICE_ATTR2(_name1, _name2, _mode, _show, _store) \
21 struct device_attribute dev_attr_##_name1 = __ATTR(_name2, _mode, _show, _store)
23 #define LINE6_PARAM_R(PREFIX, prefix, type, param) \
24 static ssize_t prefix##_get_##param(struct device *dev, \
25 struct device_attribute *attr, char *buf) \
27 return prefix##_get_param_##type(dev, buf, PREFIX##_##param); \
30 #define LINE6_PARAM_RW(PREFIX, prefix, type, param) \
31 LINE6_PARAM_R(PREFIX, prefix, type, param); \
32 static ssize_t prefix##_set_##param(struct device *dev, \
33 struct device_attribute *attr, const char *buf, size_t count) \
35 return prefix##_set_param_##type(dev, buf, count, PREFIX##_##param); \
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)
50 return sprintf(buf,
"%d\n", pod->prog_data.control[param]);
69 static ssize_t variax_get_param_int(
struct device *dev,
char *buf,
int param)
76 return sprintf(buf,
"%d\n", variax->model_data.control[param]);
79 static ssize_t variax_get_param_float(
struct device *dev,
char *buf,
int param)
89 static const int BIAS = 0x7f;
90 static const int OFFSET = 0xf;
91 static const int PRECISION = 1000;
94 unsigned part_int, part_frac;
97 const unsigned char *
p = variax->model_data.control +
param;
102 if ((
p[0] == 0) && (
p[1] == 0) && (
p[2] == 0))
103 part_int = part_frac = 0;
106 unsigned mantissa = (
p[1] << 8) |
p[2] | 0x8000;
114 part_frac = (mantissa << (32 +
exponent)) & 0xffffffff;
118 (part_frac / ((1
UL << 31) / (PRECISION / 2 * 10)) + 5) / 10;
122 sprintf(buf + len,
"%s%d.%03d\n", ((
p[0] & 0x80) ?
"-" :
""),
123 part_int, part_frac);
271 pod_set_wah_position);
273 pod_get_compression_gain, pod_set_compression_gain);
275 pod_get_vol_pedal_position, pod_set_vol_pedal_position);
277 pod_get_compression_threshold,
278 pod_set_compression_threshold);
281 pod_set_amp_model_setup);
296 pod_set_effect_setup);
298 pod_get_band_1_frequency, pod_set_band_1_frequency);
302 pod_get_treble__bass, pod_set_treble__bass);
304 pod_get_noise_gate_enable, pod_set_noise_gate_enable);
306 pod_set_gate_threshold);
308 pod_set_gate_decay_time);
310 pod_set_stomp_enable);
312 pod_set_comp_enable);
316 pod_set_delay_enable);
318 pod_set_mod_param_1);
320 pod_set_delay_param_1);
322 pod_get_delay_param_1_note_value,
323 pod_set_delay_param_1_note_value);
325 pod_get_band_2_frequency__bass,
326 pod_set_band_2_frequency__bass);
328 pod_set_delay_param_2);
330 pod_get_delay_volume_mix, pod_set_delay_volume_mix);
332 pod_set_delay_param_3);
334 pod_set_reverb_enable);
336 pod_set_reverb_type);
338 pod_set_reverb_decay);
340 pod_set_reverb_tone);
342 pod_get_reverb_pre_delay, pod_set_reverb_pre_delay);
344 pod_set_reverb_pre_post);
346 pod_get_band_2_frequency, pod_set_band_2_frequency);
348 pod_get_band_3_frequency__bass,
349 pod_set_band_3_frequency__bass);
353 pod_get_modulation_lo_cut, pod_set_modulation_lo_cut);
355 pod_get_delay_reverb_lo_cut, pod_set_delay_reverb_lo_cut);
357 pod_get_volume_pedal_minimum, pod_set_volume_pedal_minimum);
359 pod_set_eq_pre_post);
361 pod_set_volume_pre_post);
369 pod_get_mod_param_1_note_value,
370 pod_set_mod_param_1_note_value);
372 pod_set_mod_param_2);
374 pod_set_mod_param_3);
376 pod_set_mod_param_4);
378 pod_set_mod_param_5);
380 pod_set_mod_volume_mix);
382 pod_set_mod_pre_post);
384 pod_get_modulation_model, pod_set_modulation_model);
386 pod_get_band_3_frequency, pod_set_band_3_frequency);
388 pod_get_band_4_frequency__bass,
389 pod_set_band_4_frequency__bass);
391 pod_get_mod_param_1_double_precision,
392 pod_set_mod_param_1_double_precision);
394 pod_get_delay_param_1_double_precision,
395 pod_set_delay_param_1_double_precision);
400 pod_get_volume_tweak_pedal_assign,
401 pod_set_volume_tweak_pedal_assign);
403 pod_get_band_5_frequency, pod_set_band_5_frequency);
406 pod_set_mic_selection);
408 pod_set_cabinet_model);
410 pod_set_stomp_model);
414 pod_get_band_4_frequency, pod_set_band_4_frequency);
416 pod_get_band_6_frequency, pod_set_band_6_frequency);
418 pod_get_stomp_param_1_note_value,
419 pod_set_stomp_param_1_note_value);
421 pod_set_stomp_param_2);
423 pod_set_stomp_param_3);
425 pod_set_stomp_param_4);
427 pod_set_stomp_param_5);
429 pod_set_stomp_param_6);
431 pod_get_amp_switch_select, pod_set_amp_switch_select);
433 pod_set_delay_param_4);
435 pod_set_delay_param_5);
437 pod_set_delay_pre_post);
439 pod_set_delay_model);
441 pod_get_delay_verb_model, pod_set_delay_verb_model);
449 pod_set_bypass_volume);
451 pod_set_fx_loop_on_off);
453 pod_get_tweak_param_select, pod_set_tweak_param_select);
455 pod_set_amp1_engage);
457 pod_set_band_1_gain);
459 pod_get_band_2_gain__bass, pod_set_band_2_gain__bass);
461 pod_set_band_2_gain);
463 pod_get_band_3_gain__bass, pod_set_band_3_gain__bass);
465 pod_set_band_3_gain);
467 pod_get_band_4_gain__bass, pod_set_band_4_gain__bass);
469 pod_get_band_5_gain__bass, pod_set_band_5_gain__bass);
471 pod_set_band_4_gain);
473 pod_get_band_6_gain__bass, pod_set_band_6_gain__bass);
538 (dev, &dev_attr_compression_gain));
561 (dev, &dev_attr_band_1_frequency));
576 (dev, &dev_attr_delay_param_1_note_value));
580 (dev, &dev_attr_band_2_frequency__bass));
594 (dev, &dev_attr_reverb_pre_delay));
597 (dev, &dev_attr_reverb_pre_post));
601 (dev, &dev_attr_band_2_frequency));
605 (dev, &dev_attr_band_3_frequency__bass));
609 (dev, &dev_attr_modulation_lo_cut));
612 (dev, &dev_attr_delay_reverb_lo_cut));
616 (dev, &dev_attr_volume_pedal_minimum));
620 (dev, &dev_attr_eq_pre_post));
639 (dev, &dev_attr_band_3_frequency));
643 (dev, &dev_attr_band_4_frequency__bass));
645 (dev, &dev_attr_mod_param_1_double_precision));
647 (dev, &dev_attr_delay_param_1_double_precision));
652 (dev, &dev_attr_volume_tweak_pedal_assign));
656 (dev, &dev_attr_band_5_frequency));
665 (dev, &dev_attr_band_4_frequency));
669 (dev, &dev_attr_band_6_frequency));
671 (dev, &dev_attr_stomp_param_1_note_value));
679 (dev, &dev_attr_amp_switch_select));
687 (dev, &dev_attr_delay_verb_model));
703 (dev, &dev_attr_band_2_gain__bass));
707 (dev, &dev_attr_band_2_gain));
711 (dev, &dev_attr_band_3_gain__bass));
715 (dev, &dev_attr_band_3_gain));
719 (dev, &dev_attr_band_4_gain__bass));
723 (dev, &dev_attr_band_5_gain__bass));
727 (dev, &dev_attr_band_4_gain));
731 (dev, &dev_attr_band_6_gain__bass));
780 &dev_attr_band_2_frequency__bass);
802 &dev_attr_band_3_frequency__bass);
835 &dev_attr_band_4_frequency__bass);