• Home
  • History
  • Annotate
  • Raw
  • Download
  • only in /netgear-R7000-V1.0.7.12_1.2.5/components/opensource/linux/linux-2.6.36/drivers/staging/line6/

Lines Matching defs:pod

20 #include "pod.h"
124 static void pod_mark_batch_all_dirty(struct usb_line6_pod *pod)
129 set_bit(i, pod->param_dirty);
135 static int pod_version_request_async(struct usb_line6_pod *pod)
137 return line6_send_raw_message_async(&pod->line6, pod->buffer_versionreq, sizeof(pod_request_version));
142 struct usb_line6_pod *pod = container_of(work, struct usb_line6_pod, create_files_work);
144 pod_create_files(pod->firmware_version, pod->line6.properties->device_bit, pod->line6.ifcdev);
156 struct usb_line6_pod *pod = (struct usb_line6_pod *)arg;
158 if (pod->dumpreq.ok) {
159 if (!pod->versionreq_ok)
162 if (pod->versionreq_ok)
164 else if (pod->startup_count++ & 1)
172 line6_dump_request_async(&pod->dumpreq, &pod->line6, 0);
176 pod_version_request_async(pod);
183 line6_startup_delayed(&pod->dumpreq, 1, pod_startup_timeout, pod);
186 static char *pod_alloc_sysex_buffer(struct usb_line6_pod *pod, int code, int size)
188 return line6_alloc_sysex_buffer(&pod->line6, POD_SYSEX_CODE, code, size);
194 static void pod_dump(struct usb_line6_pod *pod, const unsigned char *data)
196 int size = 1 + sizeof(pod->prog_data);
197 char *sysex = pod_alloc_sysex_buffer(pod, POD_SYSEX_DUMP, size);
203 memcpy(sysex + SYSEX_DATA_OFS + 1, data, sizeof(pod->prog_data));
204 line6_send_sysex_message(&pod->line6, sysex, size);
205 memcpy(&pod->prog_data, data, sizeof(pod->prog_data));
206 pod_mark_batch_all_dirty(pod);
213 static void pod_store_parameter(struct usb_line6_pod *pod, int param, int value)
215 pod->prog_data.control[param] = value;
216 set_bit(param, pod->param_dirty);
217 pod->dirty = 1;
223 static void pod_save_button_pressed(struct usb_line6_pod *pod, int type, int index)
225 pod->dirty = 0;
226 set_bit(POD_SAVE_PRESSED, &pod->atomic_flags);
232 void pod_process_message(struct usb_line6_pod *pod)
234 const unsigned char *buf = pod->line6.buffer_message;
250 pod_store_parameter(pod, buf[1], buf[2]);
257 line6_dump_request_async(&pod->dumpreq, &pod->line6, 0);
263 pod->channel_num = buf[1];
264 pod->dirty = 0;
265 set_bit(POD_CHANNEL_DIRTY, &pod->atomic_flags);
266 line6_dump_request_async(&pod->dumpreq, &pod->line6, 0);
274 if (pod->line6.message_length == sizeof(pod->prog_data) + 7) {
275 switch (pod->dumpreq.in_progress) {
277 memcpy(&pod->prog_data, buf + 7, sizeof(pod->prog_data));
278 pod_mark_batch_all_dirty(pod);
279 pod->dumpreq.ok = 1;
283 memcpy(&pod->prog_data_buf, buf + 7, sizeof(pod->prog_data_buf));
287 DEBUG_MESSAGES(dev_err(pod->line6.ifcdev, "unknown dump code %02X\n", pod->dumpreq.in_progress));
290 line6_dump_finished(&pod->dumpreq);
292 DEBUG_MESSAGES(dev_err(pod->line6.ifcdev, "wrong size of channel dump message (%d instead of %d)\n",
293 pod->line6.message_length, (int)sizeof(pod->prog_data) + 7));
302 pod->x.value = value; \
303 wake_up_interruptible(&pod->x.wait); \
317 DEBUG_MESSAGES(dev_err(pod->line6.ifcdev, "unknown tuner/system response %02X\n", buf[6]));
328 pod_save_button_pressed(pod, buf[6], buf[7]);
332 DEBUG_MESSAGES(dev_err(pod->line6.ifcdev, "audio clipped\n"));
333 pod->clipping.value = 1;
334 wake_up_interruptible(&pod->clipping.wait);
338 DEBUG_MESSAGES(dev_err(pod->line6.ifcdev, "message %02X not yet implemented\n", buf[5]));
342 DEBUG_MESSAGES(dev_err(pod->line6.ifcdev, "unknown sysex message %02X\n", buf[5]));
345 if (pod->versionreq_ok == 0) {
346 pod->firmware_version = buf[13] * 100 + buf[14] * 10 + buf[15];
347 pod->device_id = ((int)buf[8] << 16) | ((int)buf[9] << 8) | (int)buf[10];
348 pod->versionreq_ok = 1;
352 INIT_WORK(&pod->create_files_work, pod_create_files_work);
353 queue_work(line6_workqueue, &pod->create_files_work);
355 DEBUG_MESSAGES(dev_err(pod->line6.ifcdev, "multiple firmware version message\n"));
357 DEBUG_MESSAGES(dev_err(pod->line6.ifcdev, "unknown sysex header\n"));
365 DEBUG_MESSAGES(dev_err(pod->line6.ifcdev, "POD: unknown message %02X\n", buf[0]));
380 void pod_midi_postprocess(struct usb_line6_pod *pod, unsigned char *data, int length)
384 if (!pod->midi_postprocess)
389 line6_invalidate_current(&pod->dumpreq);
393 line6_invalidate_current(&pod->dumpreq);
402 static void pod_send_channel(struct usb_line6_pod *pod, int value)
404 line6_invalidate_current(&pod->dumpreq);
406 if (line6_send_program(&pod->line6, value) == 0)
407 pod->channel_num = value;
409 line6_dump_finished(&pod->dumpreq);
415 void pod_transmit_parameter(struct usb_line6_pod *pod, int param, int value)
417 if (line6_transmit_parameter(&pod->line6, param, value) == 0)
418 pod_store_parameter(pod, param, value);
421 line6_invalidate_current(&pod->dumpreq);
450 struct usb_line6_pod *pod = usb_get_intfdata(interface);
452 int size = 3 + sizeof(pod->prog_data_buf);
453 char *sysex = pod_alloc_sysex_buffer(pod, POD_SYSEX_STORE, size);
465 memcpy(sysex + SYSEX_DATA_OFS + 3, &pod->prog_data_buf, sizeof(pod->prog_data_buf));
467 line6_send_sysex_message(&pod->line6, sysex, size);
479 struct usb_line6_pod *pod = usb_get_intfdata(interface);
482 char *sysex = pod_alloc_sysex_buffer(pod, POD_SYSEX_DUMPMEM, size);
494 line6_dump_started(&pod->dumpreq, POD_DUMP_MEMORY);
496 if (line6_send_sysex_message(&pod->line6, sysex, size) < size)
497 line6_dump_finished(&pod->dumpreq);
507 static ssize_t get_name_generic(struct usb_line6_pod *pod, const char *str, char *buf)
514 int retval = line6_wait_dump(&pod->dumpreq, 0);
537 struct usb_line6_pod *pod = usb_get_intfdata(interface);
538 return sprintf(buf, "%d\n", pod->channel_num);
549 struct usb_line6_pod *pod = usb_get_intfdata(interface);
557 pod_send_channel(pod, value);
568 struct usb_line6_pod *pod = usb_get_intfdata(interface);
569 return get_name_generic(pod, pod->prog_data.header + POD_NAME_OFFSET, buf);
579 struct usb_line6_pod *pod = usb_get_intfdata(interface);
580 return get_name_generic(pod, pod->prog_data_buf.header + POD_NAME_OFFSET, buf);
590 struct usb_line6_pod *pod = usb_get_intfdata(interface);
591 int retval = line6_wait_dump(&pod->dumpreq, 0);
594 memcpy(buf, &pod->prog_data, sizeof(pod->prog_data));
595 return sizeof(pod->prog_data);
605 struct usb_line6_pod *pod = usb_get_intfdata(interface);
607 if (count != sizeof(pod->prog_data)) {
608 dev_err(pod->line6.ifcdev,
610 sizeof(pod->prog_data));
614 pod_dump(pod, buf);
615 return sizeof(pod->prog_data);
622 static ssize_t pod_get_system_param(struct usb_line6_pod *pod, char *buf, int code, struct ValueWait *param, int tuner, int sign)
630 if (((pod->prog_data.control[POD_tuner] & 0x40) == 0) && tuner)
635 sysex = pod_alloc_sysex_buffer(pod, POD_SYSEX_SYSTEMREQ, size);
639 line6_send_sysex_message(&pod->line6, sysex, size);
668 static ssize_t pod_set_system_param(struct usb_line6_pod *pod, const char *buf,
678 if (((pod->prog_data.control[POD_tuner] & 0x40) == 0) && tuner)
682 sysex = pod_alloc_sysex_buffer(pod, POD_SYSEX_SYSTEM, size);
696 line6_send_sysex_message(&pod->line6, sysex, size);
708 struct usb_line6_pod *pod = usb_get_intfdata(interface);
709 int retval = line6_wait_dump(&pod->dumpreq, 0);
712 memcpy(buf, &pod->prog_data_buf, sizeof(pod->prog_data_buf));
713 return sizeof(pod->prog_data_buf);
724 struct usb_line6_pod *pod = usb_get_intfdata(interface);
726 if (count != sizeof(pod->prog_data)) {
727 dev_err(pod->line6.ifcdev,
729 sizeof(pod->prog_data));
733 memcpy(&pod->prog_data_buf, buf, sizeof(pod->prog_data));
734 return sizeof(pod->prog_data);
745 struct usb_line6_pod *pod = usb_get_intfdata(interface);
747 char *sysex = pod_alloc_sysex_buffer(pod, POD_SYSEX_FINISH, size);
750 line6_send_sysex_message(&pod->line6, sysex, size);
822 struct usb_line6_pod *pod = usb_get_intfdata(interface);
823 buf[0] = pod->dirty ? '1' : '0';
836 struct usb_line6_pod *pod = usb_get_intfdata(interface);
837 return sprintf(buf, "%d\n", pod->midi_postprocess);
848 struct usb_line6_pod *pod = usb_get_intfdata(interface);
856 pod->midi_postprocess = value ? 1 : 0;
867 struct usb_line6_pod *pod = usb_get_intfdata(interface);
868 return sprintf(buf, "%d\n", pod->serial_number);
879 struct usb_line6_pod *pod = usb_get_intfdata(interface);
880 return sprintf(buf, "%d.%02d\n", pod->firmware_version / 100,
881 pod->firmware_version % 100);
891 struct usb_line6_pod *pod = usb_get_intfdata(interface);
892 return sprintf(buf, "%d\n", pod->device_id);
902 struct usb_line6_pod *pod = usb_get_intfdata(interface);
905 pod->clipping.value = 0;
906 add_wait_queue(&pod->clipping.wait, &wait);
909 while (pod->clipping.value == 0) {
918 remove_wait_queue(&pod->clipping.wait, &wait);
927 struct usb_line6_pod *pod = usb_get_intfdata(interface); \
928 return pod_get_system_param(pod, buf, POD_ ## code, &pod->code, \
939 struct usb_line6_pod *pod = usb_get_intfdata(interface); \
940 return pod_set_system_param(pod, buf, count, POD_ ## code, mask, \
989 struct usb_line6_pod *pod = usb_get_intfdata(interface);
992 if (pod == NULL)
994 line6 = &pod->line6;
1000 line6_dumpreq_destruct(&pod->dumpreq);
1002 kfree(pod->buffer_versionreq);
1047 int pod_init(struct usb_interface *interface, struct usb_line6_pod *pod)
1050 struct usb_line6 *line6 = &pod->line6;
1052 if ((interface == NULL) || (pod == NULL))
1055 pod->channel_num = 255;
1058 init_waitqueue_head(&pod->monitor_level.wait);
1059 init_waitqueue_head(&pod->routing.wait);
1060 init_waitqueue_head(&pod->tuner_mute.wait);
1061 init_waitqueue_head(&pod->tuner_freq.wait);
1062 init_waitqueue_head(&pod->tuner_note.wait);
1063 init_waitqueue_head(&pod->tuner_pitch.wait);
1064 init_waitqueue_head(&pod->clipping.wait);
1066 memset(pod->param_dirty, 0xff, sizeof(pod->param_dirty));
1069 err = line6_dumpreq_init(&pod->dumpreq, pod_request_channel,
1077 pod->buffer_versionreq = kmemdup(pod_request_version,
1081 if (pod->buffer_versionreq == NULL) {
1122 if (pod->line6.properties->capabilities & LINE6_BIT_CONTROL) {
1124 line6_startup_delayed(&pod->dumpreq, POD_STARTUP_DELAY,
1125 pod_startup_timeout, pod);
1126 line6_read_serial_number(&pod->line6, &pod->serial_number);
1137 struct usb_line6_pod *pod;
1141 pod = usb_get_intfdata(interface);
1143 if (pod != NULL) {
1144 struct snd_line6_pcm *line6pcm = pod->line6.line6pcm;
1154 if (pod->versionreq_ok)
1155 pod_remove_files(pod->firmware_version, pod->line6.properties->device_bit, dev);