blob: 24de79620d8963ddbe313ba60927a0ea5e0af530 [file] [log] [blame]
Markus Grabner705ecec2009-02-27 19:43:04 -08001/*
Markus Grabnere1a164d2010-08-23 01:08:25 +02002 * Line6 Linux USB driver - 0.9.1beta
Markus Grabner705ecec2009-02-27 19:43:04 -08003 *
Markus Grabner1027f4762010-08-12 01:35:30 +02004 * Copyright (C) 2004-2010 Markus Grabner (grabner@icg.tugraz.at)
Markus Grabner705ecec2009-02-27 19:43:04 -08005 *
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.
9 *
10 */
11
12#ifndef VARIAX_H
13#define VARIAX_H
14
Markus Grabner705ecec2009-02-27 19:43:04 -080015#include <linux/spinlock.h>
16#include <linux/usb.h>
17#include <linux/wait.h>
Markus Grabner705ecec2009-02-27 19:43:04 -080018#include <sound/core.h>
19
Markus Grabner1027f4762010-08-12 01:35:30 +020020#include "driver.h"
Markus Grabner705ecec2009-02-27 19:43:04 -080021
Markus Grabner1027f4762010-08-12 01:35:30 +020022#define VARIAX_STARTUP_DELAY1 1000
23#define VARIAX_STARTUP_DELAY3 100
24#define VARIAX_STARTUP_DELAY4 100
Markus Grabner705ecec2009-02-27 19:43:04 -080025
Markus Grabnere1a164d2010-08-23 01:08:25 +020026/*
27 Stages of Variax startup procedure
28*/
29enum {
30 VARIAX_STARTUP_INIT = 1,
31 VARIAX_STARTUP_VERSIONREQ,
32 VARIAX_STARTUP_WAIT,
33 VARIAX_STARTUP_ACTIVATE,
Markus Grabnere1a164d2010-08-23 01:08:25 +020034 VARIAX_STARTUP_WORKQUEUE,
35 VARIAX_STARTUP_SETUP,
36 VARIAX_STARTUP_LAST = VARIAX_STARTUP_SETUP - 1
37};
Markus Grabner705ecec2009-02-27 19:43:04 -080038
Markus Grabner705ecec2009-02-27 19:43:04 -080039struct usb_line6_variax {
40 /**
Markus Grabner1027f4762010-08-12 01:35:30 +020041 Generic Line6 USB data.
Markus Grabner705ecec2009-02-27 19:43:04 -080042 */
43 struct usb_line6 line6;
44
45 /**
Markus Grabner1027f4762010-08-12 01:35:30 +020046 Buffer for activation code.
Markus Grabner705ecec2009-02-27 19:43:04 -080047 */
48 unsigned char *buffer_activate;
49
50 /**
Markus Grabner1027f4762010-08-12 01:35:30 +020051 Handler for device initializaton.
Markus Grabner705ecec2009-02-27 19:43:04 -080052 */
Markus Grabner1027f4762010-08-12 01:35:30 +020053 struct work_struct startup_work;
54
55 /**
Markus Grabnere1a164d2010-08-23 01:08:25 +020056 Timers for device initializaton.
Markus Grabner1027f4762010-08-12 01:35:30 +020057 */
Markus Grabnere1a164d2010-08-23 01:08:25 +020058 struct timer_list startup_timer1;
59 struct timer_list startup_timer2;
Markus Grabner1027f4762010-08-12 01:35:30 +020060
61 /**
62 Current progress in startup procedure.
63 */
64 int startup_progress;
Markus Grabner705ecec2009-02-27 19:43:04 -080065};
66
Markus Grabner1027f4762010-08-12 01:35:30 +020067extern void line6_variax_disconnect(struct usb_interface *interface);
68extern int line6_variax_init(struct usb_interface *interface,
69 struct usb_line6_variax *variax);
70extern void line6_variax_process_message(struct usb_line6_variax *variax);
Markus Grabner705ecec2009-02-27 19:43:04 -080071
Markus Grabner705ecec2009-02-27 19:43:04 -080072#endif