diff options
author | Greg Kroah-Hartman <gregkh@suse.de> | 2010-10-28 09:44:56 -0700 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@suse.de> | 2010-10-28 09:44:56 -0700 |
commit | e4c5bf8e3dca827a1b3a6fac494eae8c74b7e1e7 (patch) | |
tree | ea51b391f7d74ca695dcb9f5e46eb02688a92ed9 /drivers/staging/line6/pod.h | |
parent | 81280572ca6f54009edfa4deee563e8678784218 (diff) | |
parent | a4ac0d847af9dd34d5953a5e264400326144b6b2 (diff) | |
download | op-kernel-dev-e4c5bf8e3dca827a1b3a6fac494eae8c74b7e1e7.zip op-kernel-dev-e4c5bf8e3dca827a1b3a6fac494eae8c74b7e1e7.tar.gz |
Merge 'staging-next' to Linus's tree
This merges the staging-next tree to Linus's tree and resolves
some conflicts that were present due to changes in other trees that were
affected by files here.
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 | 127 |
1 files changed, 64 insertions, 63 deletions
diff --git a/drivers/staging/line6/pod.h b/drivers/staging/line6/pod.h index 7051ca6..18b9d08 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.1beta * - * 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 @@ -12,19 +12,16 @@ #ifndef POD_H #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" - /* PODxt Live interfaces */ @@ -42,163 +39,167 @@ */ #define POD_CONTROL_SIZE 0x80 #define POD_BUFSIZE_DUMPREQ 7 -#define POD_STARTUP_DELAY 3 +#define POD_STARTUP_DELAY 1000 +/* + Stages of POD startup procedure +*/ +enum { + POD_STARTUP_INIT = 1, + POD_STARTUP_DUMPREQ, + POD_STARTUP_VERSIONREQ, + POD_STARTUP_WORKQUEUE, + POD_STARTUP_SETUP, + POD_STARTUP_LAST = POD_STARTUP_SETUP - 1 +}; /** - 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; + + /** + Dirty flags for access to parameter data. + */ + unsigned long param_dirty[POD_CONTROL_SIZE / sizeof(unsigned long)]; /** - Counter for startup process. + Some atomic flags. */ - int startup_count; + 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 |