2 * Line6 Linux USB driver - 0.9.1beta
4 * Copyright (C) 2004-2010 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.
15 #include <linux/interrupt.h>
16 #include <linux/spinlock.h>
17 #include <linux/usb.h>
19 #include <sound/core.h>
22 #include "dumprequest.h"
27 #define PODXTLIVE_INTERFACE_POD 0
28 #define PODXTLIVE_INTERFACE_VARIAX 1
31 Locate name in binary program dump
33 #define POD_NAME_OFFSET 0
34 #define POD_NAME_LENGTH 16
39 #define POD_CONTROL_SIZE 0x80
40 #define POD_BUFSIZE_DUMPREQ 7
41 #define POD_STARTUP_DELAY 1000
44 Stages of POD startup procedure
49 POD_STARTUP_VERSIONREQ,
50 POD_STARTUP_WORKQUEUE,
52 POD_STARTUP_LAST = POD_STARTUP_SETUP - 1
56 Binary PODxt Pro program dump
60 Header information (including program name).
62 unsigned char header[0x20];
67 unsigned char control[POD_CONTROL_SIZE];
70 struct usb_line6_pod {
72 Generic Line6 USB data.
74 struct usb_line6 line6;
77 Dump request structure.
79 struct line6_dump_request dumpreq;
82 Current program settings.
84 struct pod_program prog_data;
87 Buffer for data retrieved from or to be stored on PODxt Pro.
89 struct pod_program prog_data_buf;
92 Instrument monitor level.
97 Timer for device initializaton.
99 struct timer_list startup_timer;
102 Work handler for device initializaton.
104 struct work_struct startup_work;
107 Current progress in startup procedure.
109 int startup_progress;
114 unsigned long atomic_flags;
117 Serial number of device.
122 Firmware version (x 100).
124 int firmware_version;
132 extern void line6_pod_disconnect(struct usb_interface *interface);
133 extern int line6_pod_init(struct usb_interface *interface,
134 struct usb_line6_pod *pod);
135 extern void line6_pod_process_message(struct usb_line6_pod *pod);
136 extern void line6_pod_transmit_parameter(struct usb_line6_pod *pod, int param,