aboutsummaryrefslogtreecommitdiff
path: root/lib/usbhost/USB_Host_Shield_2.0/max3421e.h
diff options
context:
space:
mode:
Diffstat (limited to 'lib/usbhost/USB_Host_Shield_2.0/max3421e.h')
-rw-r--r--lib/usbhost/USB_Host_Shield_2.0/max3421e.h228
1 files changed, 228 insertions, 0 deletions
diff --git a/lib/usbhost/USB_Host_Shield_2.0/max3421e.h b/lib/usbhost/USB_Host_Shield_2.0/max3421e.h
new file mode 100644
index 000000000..4e45a35e8
--- /dev/null
+++ b/lib/usbhost/USB_Host_Shield_2.0/max3421e.h
@@ -0,0 +1,228 @@
1/* Copyright (C) 2011 Circuits At Home, LTD. All rights reserved.
2
3This software may be distributed and modified under the terms of the GNU
4General Public License version 2 (GPL2) as published by the Free Software
5Foundation and appearing in the file GPL2.TXT included in the packaging of
6this file. Please note that GPL2 Section 2[b] requires that all works based
7on this software must also be made publicly available under the terms of
8the GPL2 ("Copyleft").
9
10Contact information
11-------------------
12
13Circuits At Home, LTD
14Web : http://www.circuitsathome.com
15e-mail : support@circuitsathome.com
16 */
17#if !defined(_usb_h_) || defined(_max3421e_h_)
18#error "Never include max3421e.h directly; include Usb.h instead"
19#else
20
21#define _max3421e_h_
22
23/* MAX3421E register/bit names and bitmasks */
24
25/* Arduino pin definitions */
26/* pin numbers to port numbers */
27
28#define SE0 0
29#define SE1 1
30#define FSHOST 2
31#define LSHOST 3
32
33/* MAX3421E command byte format: rrrrr0wa where 'r' is register number */
34//
35// MAX3421E Registers in HOST mode.
36//
37#define rRCVFIFO 0x08 //1<<3
38#define rSNDFIFO 0x10 //2<<3
39#define rSUDFIFO 0x20 //4<<3
40#define rRCVBC 0x30 //6<<3
41#define rSNDBC 0x38 //7<<3
42
43#define rUSBIRQ 0x68 //13<<3
44/* USBIRQ Bits */
45#define bmVBUSIRQ 0x40 //b6
46#define bmNOVBUSIRQ 0x20 //b5
47#define bmOSCOKIRQ 0x01 //b0
48
49#define rUSBIEN 0x70 //14<<3
50/* USBIEN Bits */
51#define bmVBUSIE 0x40 //b6
52#define bmNOVBUSIE 0x20 //b5
53#define bmOSCOKIE 0x01 //b0
54
55#define rUSBCTL 0x78 //15<<3
56/* USBCTL Bits */
57#define bmCHIPRES 0x20 //b5
58#define bmPWRDOWN 0x10 //b4
59
60#define rCPUCTL 0x80 //16<<3
61/* CPUCTL Bits */
62#define bmPUSLEWID1 0x80 //b7
63#define bmPULSEWID0 0x40 //b6
64#define bmIE 0x01 //b0
65
66#define rPINCTL 0x88 //17<<3
67/* PINCTL Bits */
68#define bmFDUPSPI 0x10 //b4
69#define bmINTLEVEL 0x08 //b3
70#define bmPOSINT 0x04 //b2
71#define bmGPXB 0x02 //b1
72#define bmGPXA 0x01 //b0
73// GPX pin selections
74#define GPX_OPERATE 0x00
75#define GPX_VBDET 0x01
76#define GPX_BUSACT 0x02
77#define GPX_SOF 0x03
78
79#define rREVISION 0x90 //18<<3
80
81#define rIOPINS1 0xa0 //20<<3
82
83/* IOPINS1 Bits */
84#define bmGPOUT0 0x01
85#define bmGPOUT1 0x02
86#define bmGPOUT2 0x04
87#define bmGPOUT3 0x08
88#define bmGPIN0 0x10
89#define bmGPIN1 0x20
90#define bmGPIN2 0x40
91#define bmGPIN3 0x80
92
93#define rIOPINS2 0xa8 //21<<3
94/* IOPINS2 Bits */
95#define bmGPOUT4 0x01
96#define bmGPOUT5 0x02
97#define bmGPOUT6 0x04
98#define bmGPOUT7 0x08
99#define bmGPIN4 0x10
100#define bmGPIN5 0x20
101#define bmGPIN6 0x40
102#define bmGPIN7 0x80
103
104#define rGPINIRQ 0xb0 //22<<3
105/* GPINIRQ Bits */
106#define bmGPINIRQ0 0x01
107#define bmGPINIRQ1 0x02
108#define bmGPINIRQ2 0x04
109#define bmGPINIRQ3 0x08
110#define bmGPINIRQ4 0x10
111#define bmGPINIRQ5 0x20
112#define bmGPINIRQ6 0x40
113#define bmGPINIRQ7 0x80
114
115#define rGPINIEN 0xb8 //23<<3
116/* GPINIEN Bits */
117#define bmGPINIEN0 0x01
118#define bmGPINIEN1 0x02
119#define bmGPINIEN2 0x04
120#define bmGPINIEN3 0x08
121#define bmGPINIEN4 0x10
122#define bmGPINIEN5 0x20
123#define bmGPINIEN6 0x40
124#define bmGPINIEN7 0x80
125
126#define rGPINPOL 0xc0 //24<<3
127/* GPINPOL Bits */
128#define bmGPINPOL0 0x01
129#define bmGPINPOL1 0x02
130#define bmGPINPOL2 0x04
131#define bmGPINPOL3 0x08
132#define bmGPINPOL4 0x10
133#define bmGPINPOL5 0x20
134#define bmGPINPOL6 0x40
135#define bmGPINPOL7 0x80
136
137#define rHIRQ 0xc8 //25<<3
138/* HIRQ Bits */
139#define bmBUSEVENTIRQ 0x01 // indicates BUS Reset Done or BUS Resume
140#define bmRWUIRQ 0x02
141#define bmRCVDAVIRQ 0x04
142#define bmSNDBAVIRQ 0x08
143#define bmSUSDNIRQ 0x10
144#define bmCONDETIRQ 0x20
145#define bmFRAMEIRQ 0x40
146#define bmHXFRDNIRQ 0x80
147
148#define rHIEN 0xd0 //26<<3
149
150/* HIEN Bits */
151#define bmBUSEVENTIE 0x01
152#define bmRWUIE 0x02
153#define bmRCVDAVIE 0x04
154#define bmSNDBAVIE 0x08
155#define bmSUSDNIE 0x10
156#define bmCONDETIE 0x20
157#define bmFRAMEIE 0x40
158#define bmHXFRDNIE 0x80
159
160#define rMODE 0xd8 //27<<3
161
162/* MODE Bits */
163#define bmHOST 0x01
164#define bmLOWSPEED 0x02
165#define bmHUBPRE 0x04
166#define bmSOFKAENAB 0x08
167#define bmSEPIRQ 0x10
168#define bmDELAYISO 0x20
169#define bmDMPULLDN 0x40
170#define bmDPPULLDN 0x80
171
172#define rPERADDR 0xe0 //28<<3
173
174#define rHCTL 0xe8 //29<<3
175/* HCTL Bits */
176#define bmBUSRST 0x01
177#define bmFRMRST 0x02
178#define bmSAMPLEBUS 0x04
179#define bmSIGRSM 0x08
180#define bmRCVTOG0 0x10
181#define bmRCVTOG1 0x20
182#define bmSNDTOG0 0x40
183#define bmSNDTOG1 0x80
184
185#define rHXFR 0xf0 //30<<3
186/* Host transfer token values for writing the HXFR register (R30) */
187/* OR this bit field with the endpoint number in bits 3:0 */
188#define tokSETUP 0x10 // HS=0, ISO=0, OUTNIN=0, SETUP=1
189#define tokIN 0x00 // HS=0, ISO=0, OUTNIN=0, SETUP=0
190#define tokOUT 0x20 // HS=0, ISO=0, OUTNIN=1, SETUP=0
191#define tokINHS 0x80 // HS=1, ISO=0, OUTNIN=0, SETUP=0
192#define tokOUTHS 0xA0 // HS=1, ISO=0, OUTNIN=1, SETUP=0
193#define tokISOIN 0x40 // HS=0, ISO=1, OUTNIN=0, SETUP=0
194#define tokISOOUT 0x60 // HS=0, ISO=1, OUTNIN=1, SETUP=0
195
196#define rHRSL 0xf8 //31<<3
197
198/* HRSL Bits */
199#define bmRCVTOGRD 0x10
200#define bmSNDTOGRD 0x20
201#define bmKSTATUS 0x40
202#define bmJSTATUS 0x80
203#define bmSE0 0x00 //SE0 - disconnect state
204#define bmSE1 0xc0 //SE1 - illegal state
205
206/* Host error result codes, the 4 LSB's in the HRSL register */
207#define hrSUCCESS 0x00
208#define hrBUSY 0x01
209#define hrBADREQ 0x02
210#define hrUNDEF 0x03
211#define hrNAK 0x04
212#define hrSTALL 0x05
213#define hrTOGERR 0x06
214#define hrWRONGPID 0x07
215#define hrBADBC 0x08
216#define hrPIDERR 0x09
217#define hrPKTERR 0x0A
218#define hrCRCERR 0x0B
219#define hrKERR 0x0C
220#define hrJERR 0x0D
221#define hrTIMEOUT 0x0E
222#define hrBABBLE 0x0F
223
224#define MODE_FS_HOST (bmDPPULLDN|bmDMPULLDN|bmHOST|bmSOFKAENAB)
225#define MODE_LS_HOST (bmDPPULLDN|bmDMPULLDN|bmHOST|bmLOWSPEED|bmSOFKAENAB)
226
227
228#endif //_max3421e_h_