diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2010-10-28 19:13:00 (GMT) |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2010-10-28 19:13:00 (GMT) |
commit | f063a0c0c995d010960efcc1b2ed14b99674f25c (patch) | |
tree | 106e30acd1a58b3cf9f3c15abe1de83f1919e03b /drivers/staging/line6/pod.h | |
parent | 3c3762957818dc902222733a8184f23102e24472 (diff) | |
parent | 5af634789c93b97cfb314a102436716be8fbc577 (diff) | |
download | linux-fsl-qoriq-f063a0c0c995d010960efcc1b2ed14b99674f25c.tar.xz |
Merge git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/staging-2.6
* git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/staging-2.6: (841 commits)
Staging: brcm80211: fix usage of roundup in structures
Staging: bcm: fix up network device reference counting
Staging: keucr: fix up US_ macro change
staging: brcm80211: brcmfmac: Removed codeversion from firmware filenames.
staging: brcm80211: Remove unnecessary header files.
staging: brcm80211: Remove unnecessary includes from bcmutils.c
staging: brcm80211: Removed unnecessary pktsetprio() function.
Staging: brcm80211: remove typedefs.h
Staging: brcm80211: remove uintptr typedef usage
Staging: hv: remove struct vmbus_channel_interface
Staging: hv: remove Open from struct vmbus_channel_interface
Staging: hv: storvsc: call vmbus_open directly
Staging: hv: netvsc: call vmbus_open directly
Staging: hv: channel: export vmbus_open to modules
Staging: hv: remove Close from struct vmbus_channel_interface
Staging: hv: netvsc: call vmbus_close directly
Staging: hv: storvsc: call vmbus_close directly
Staging: hv: channel: export vmbus_close to modules
Staging: hv: remove SendPacket from struct vmbus_channel_interface
Staging: hv: storvsc: call vmbus_sendpacket directly
...
Fix up conflicts in
drivers/staging/cx25821/cx25821-audio-upstream.c
drivers/staging/cx25821/cx25821-audio.h
due to warring whitespace cleanups (neither of which were all that great)
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 |