/* * Line6 Linux USB driver - 0.9.1beta * * 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 * published by the Free Software Foundation, version 2. * */ #ifndef VARIAX_H #define VARIAX_H #include <linux/spinlock.h> #include <linux/usb.h> #include <linux/wait.h> #include <sound/core.h> #include "driver.h" #define VARIAX_STARTUP_DELAY1 1000 #define VARIAX_STARTUP_DELAY3 100 #define VARIAX_STARTUP_DELAY4 100 /* Stages of Variax startup procedure */ enum { VARIAX_STARTUP_INIT = 1, VARIAX_STARTUP_VERSIONREQ, VARIAX_STARTUP_WAIT, VARIAX_STARTUP_ACTIVATE, VARIAX_STARTUP_WORKQUEUE, VARIAX_STARTUP_SETUP, VARIAX_STARTUP_LAST = VARIAX_STARTUP_SETUP - 1 }; struct usb_line6_variax { /** Generic Line6 USB data. */ struct usb_line6 line6; /** Buffer for activation code. */ unsigned char *buffer_activate; /** Handler for device initializaton. */ struct work_struct startup_work; /** Timers for device initializaton. */ struct timer_list startup_timer1; struct timer_list startup_timer2; /** Current progress in startup procedure. */ int startup_progress; }; extern void line6_variax_disconnect(struct usb_interface *interface); extern int line6_variax_init(struct usb_interface *interface, struct usb_line6_variax *variax); extern void line6_variax_process_message(struct usb_line6_variax *variax); #endif