1 /*
2  * Line6 Linux USB driver - 0.9.1beta
3  *
4  * Copyright (C) 2005-2008 Markus Grabner (grabner@icg.tugraz.at)
5  *
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 USBDEFS_H
13 #define USBDEFS_H
14 
15 #define LINE6_VENDOR_ID  0x0e41
16 
17 #define USB_INTERVALS_PER_SECOND 1000
18 
19 /*
20 	Device ids.
21 */
22 #define LINE6_DEVID_BASSPODXT     0x4250
23 #define LINE6_DEVID_BASSPODXTLIVE 0x4642
24 #define LINE6_DEVID_BASSPODXTPRO  0x4252
25 #define LINE6_DEVID_GUITARPORT    0x4750
26 #define LINE6_DEVID_POCKETPOD     0x5051
27 #define LINE6_DEVID_PODHD300      0x5057
28 #define LINE6_DEVID_PODHD500      0x414D
29 #define LINE6_DEVID_PODSTUDIO_GX  0x4153
30 #define LINE6_DEVID_PODSTUDIO_UX1 0x4150
31 #define LINE6_DEVID_PODSTUDIO_UX2 0x4151
32 #define LINE6_DEVID_PODX3         0x414a
33 #define LINE6_DEVID_PODX3LIVE     0x414b
34 #define LINE6_DEVID_PODXT         0x5044
35 #define LINE6_DEVID_PODXTLIVE     0x4650
36 #define LINE6_DEVID_PODXTPRO      0x5050
37 #define LINE6_DEVID_TONEPORT_GX   0x4147
38 #define LINE6_DEVID_TONEPORT_UX1  0x4141
39 #define LINE6_DEVID_TONEPORT_UX2  0x4142
40 #define LINE6_DEVID_VARIAX        0x534d
41 
42 enum {
43 	LINE6_ID_BASSPODXT,
44 	LINE6_ID_BASSPODXTLIVE,
45 	LINE6_ID_BASSPODXTPRO,
46 	LINE6_ID_GUITARPORT,
47 	LINE6_ID_POCKETPOD,
48 	LINE6_ID_PODHD300,
49 	LINE6_ID_PODHD500,
50 	LINE6_ID_PODSTUDIO_GX,
51 	LINE6_ID_PODSTUDIO_UX1,
52 	LINE6_ID_PODSTUDIO_UX2,
53 	LINE6_ID_PODX3,
54 	LINE6_ID_PODX3LIVE,
55 	LINE6_ID_PODXT,
56 	LINE6_ID_PODXTLIVE,
57 	LINE6_ID_PODXTPRO,
58 	LINE6_ID_TONEPORT_GX,
59 	LINE6_ID_TONEPORT_UX1,
60 	LINE6_ID_TONEPORT_UX2,
61 	LINE6_ID_VARIAX
62 };
63 
64 #define LINE6_BIT(x) LINE6_BIT_ ## x = 1 << LINE6_ID_ ## x
65 
66 enum {
67 	LINE6_BIT(BASSPODXT),
68 	LINE6_BIT(BASSPODXTLIVE),
69 	LINE6_BIT(BASSPODXTPRO),
70 	LINE6_BIT(GUITARPORT),
71 	LINE6_BIT(POCKETPOD),
72 	LINE6_BIT(PODHD300),
73 	LINE6_BIT(PODHD500),
74 	LINE6_BIT(PODSTUDIO_GX),
75 	LINE6_BIT(PODSTUDIO_UX1),
76 	LINE6_BIT(PODSTUDIO_UX2),
77 	LINE6_BIT(PODX3),
78 	LINE6_BIT(PODX3LIVE),
79 	LINE6_BIT(PODXT),
80 	LINE6_BIT(PODXTLIVE),
81 	LINE6_BIT(PODXTPRO),
82 	LINE6_BIT(TONEPORT_GX),
83 	LINE6_BIT(TONEPORT_UX1),
84 	LINE6_BIT(TONEPORT_UX2),
85 	LINE6_BIT(VARIAX),
86 
87 	LINE6_BITS_PRO = LINE6_BIT_BASSPODXTPRO | LINE6_BIT_PODXTPRO,
88 	LINE6_BITS_LIVE = LINE6_BIT_BASSPODXTLIVE | LINE6_BIT_PODXTLIVE | LINE6_BIT_PODX3LIVE,
89 	LINE6_BITS_PODXTALL = LINE6_BIT_PODXT | LINE6_BIT_PODXTLIVE | LINE6_BIT_PODXTPRO,
90 	LINE6_BITS_PODX3ALL = LINE6_BIT_PODX3 | LINE6_BIT_PODX3LIVE,
91 	LINE6_BITS_PODHDALL = LINE6_BIT_PODHD300 | LINE6_BIT_PODHD500,
92 	LINE6_BITS_BASSPODXTALL	= LINE6_BIT_BASSPODXT |	LINE6_BIT_BASSPODXTLIVE | LINE6_BIT_BASSPODXTPRO
93 };
94 
95 /* device supports settings parameter via USB */
96 #define LINE6_BIT_CONTROL (1 << 0)
97 /* device supports PCM input/output via USB */
98 #define LINE6_BIT_PCM (1 << 1)
99 /* device support hardware monitoring */
100 #define LINE6_BIT_HWMON (1 << 2)
101 
102 #define LINE6_BIT_CONTROL_PCM_HWMON	(LINE6_BIT_CONTROL |	\
103 					 LINE6_BIT_PCM |	\
104 					 LINE6_BIT_HWMON)
105 
106 #define LINE6_FALLBACK_INTERVAL 10
107 #define LINE6_FALLBACK_MAXPACKETSIZE 16
108 
109 #endif
110