diff options
author | Markus Grabner <grabner@icg.tugraz.at> | 2010-08-12 01:35:30 +0200 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@suse.de> | 2010-08-31 15:28:15 -0700 |
commit | 1027f476f507ef7ed9919cd3e3d32310f3985da1 (patch) | |
tree | 5f0da58a5bc15338c71e848693a5ae259b97a207 /drivers/staging/line6/pod.h | |
parent | staging: rtl8193*: Remove double test (diff) | |
download | linux-dev-1027f476f507ef7ed9919cd3e3d32310f3985da1.tar.xz linux-dev-1027f476f507ef7ed9919cd3e3d32310f3985da1.zip |
staging: line6: sync with upstream
Big upstream sync.
Signed-off-by: Markus Grabner <grabner@icg.tugraz.at>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
Diffstat (limited to 'drivers/staging/line6/pod.h')
-rw-r--r-- | drivers/staging/line6/pod.h | 112 |
1 files changed, 52 insertions, 60 deletions
diff --git a/drivers/staging/line6/pod.h b/drivers/staging/line6/pod.h index 7051ca613819..d8e38a95d076 100644 --- a/drivers/staging/line6/pod.h +++ b/drivers/staging/line6/pod.h @@ -1,7 +1,7 @@ /* - * Line6 Linux USB driver - 0.8.0 + * Line6 Linux USB driver - 0.9.0 * - * Copyright (C) 2004-2009 Markus Grabner (grabner@icg.tugraz.at) + * Copyright (C) 2004-2010 Markus Grabner (grabner@icg.tugraz.at) * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License as @@ -13,15 +13,14 @@ #define POD_H -#include "driver.h" - +#include <linux/interrupt.h> #include <linux/spinlock.h> #include <linux/usb.h> #include <linux/wait.h> -#include <linux/workqueue.h> #include <sound/core.h> +#include "driver.h" #include "dumprequest.h" @@ -42,163 +41,156 @@ */ #define POD_CONTROL_SIZE 0x80 #define POD_BUFSIZE_DUMPREQ 7 -#define POD_STARTUP_DELAY 3 - +#define POD_STARTUP_DELAY 3000 /** - Data structure for values that need to be requested explicitly. - This is the case for system and tuner settings. + Data structure for values that need to be requested explicitly. + This is the case for system and tuner settings. */ struct ValueWait { - unsigned short value; + int value; wait_queue_head_t wait; }; /** - Binary PodXT Pro program dump + Binary PODxt Pro program dump */ struct pod_program { /** - Header information (including program name). + Header information (including program name). */ unsigned char header[0x20]; /** - Program parameters. + Program parameters. */ unsigned char control[POD_CONTROL_SIZE]; }; struct usb_line6_pod { /** - Generic Line6 USB data. + Generic Line6 USB data. */ struct usb_line6 line6; /** - Dump request structure. + Dump request structure. */ struct line6_dump_request dumpreq; /** - Current program number. + Current program number. */ unsigned char channel_num; /** - Current program settings. + Current program settings. */ struct pod_program prog_data; /** - Buffer for data retrieved from or to be stored on PODxt Pro. + Buffer for data retrieved from or to be stored on PODxt Pro. */ struct pod_program prog_data_buf; /** - Buffer for requesting version number. - */ - unsigned char *buffer_versionreq; - - /** - Tuner mute mode. + Tuner mute mode. */ struct ValueWait tuner_mute; /** - Tuner base frequency (typically 440Hz). + Tuner base frequency (typically 440Hz). */ struct ValueWait tuner_freq; /** - Note received from tuner. + Note received from tuner. */ struct ValueWait tuner_note; /** - Pitch value received from tuner. + Pitch value received from tuner. */ struct ValueWait tuner_pitch; /** - Instrument monitor level. + Instrument monitor level. */ struct ValueWait monitor_level; /** - Audio routing mode. - 0: send processed guitar - 1: send clean guitar - 2: send clean guitar re-amp playback - 3: send re-amp playback + Audio routing mode. + 0: send processed guitar + 1: send clean guitar + 2: send clean guitar re-amp playback + 3: send re-amp playback */ struct ValueWait routing; /** - Wait for audio clipping event. + Wait for audio clipping event. */ struct ValueWait clipping; /** - Bottom-half for creation of sysfs special files. + Timer for device initializaton. */ - struct work_struct create_files_work; + struct timer_list startup_timer; /** - Dirty flags for access to parameter data. + Work handler for device initializaton. */ - unsigned long param_dirty[POD_CONTROL_SIZE / sizeof(unsigned long)]; + struct work_struct startup_work; /** - Some atomic flags. + Current progress in startup procedure. */ - unsigned long atomic_flags; + int startup_progress; /** - Counter for startup process. + Dirty flags for access to parameter data. */ - int startup_count; + unsigned long param_dirty[POD_CONTROL_SIZE / sizeof(unsigned long)]; + + /** + Some atomic flags. + */ + unsigned long atomic_flags; /** - Serial number of device. + Serial number of device. */ int serial_number; /** - Firmware version (x 100). + Firmware version (x 100). */ int firmware_version; /** - Device ID. + Device ID. */ int device_id; /** - Flag to indicate modification of current program settings. + Flag to indicate modification of current program settings. */ char dirty; /** - Flag if initial firmware version request has been successful. - */ - char versionreq_ok; - - /** - Flag to enable MIDI postprocessing. + Flag to enable MIDI postprocessing. */ char midi_postprocess; }; -extern void pod_disconnect(struct usb_interface *interface); -extern int pod_init(struct usb_interface *interface, struct usb_line6_pod *pod); -extern void pod_midi_postprocess(struct usb_line6_pod *pod, - unsigned char *data, int length); -extern void pod_process_message(struct usb_line6_pod *pod); -extern void pod_receive_parameter(struct usb_line6_pod *pod, int param); -extern void pod_transmit_parameter(struct usb_line6_pod *pod, int param, - int value); +extern void line6_pod_disconnect(struct usb_interface *interface); +extern int line6_pod_init(struct usb_interface *interface, struct usb_line6_pod *pod); +extern void line6_pod_midi_postprocess(struct usb_line6_pod *pod, + unsigned char *data, int length); +extern void line6_pod_process_message(struct usb_line6_pod *pod); +extern void line6_pod_transmit_parameter(struct usb_line6_pod *pod, int param, + int value); #endif |