version 4.1.0 from http://fpga4u.epfl.ch/wiki/FX2
[fx2fw-sdcc] / fx2 / fx2utils.c
1 /* -*- c++ -*- */\r
2 \r
3 /*-----------------------------------------------------------------------------\r
4 \r
5  * FX2 specific subroutines\r
6 \r
7  *-----------------------------------------------------------------------------\r
8 \r
9  * Code taken from USRP2 firmware (GNU Radio Project), version 3.0.2,\r
10 \r
11  * Copyright 2003 Free Software Foundation, Inc.\r
12 \r
13  *-----------------------------------------------------------------------------\r
14 \r
15  * This code is part of usbjtag. usbjtag is free software; you can redistribute\r
16 \r
17  * it and/or modify it under the terms of the GNU General Public License as\r
18 \r
19  * published by the Free Software Foundation; either version 2 of the License,\r
20 \r
21  * or (at your option) any later version. usbjtag is distributed in the hope\r
22 \r
23  * that it will be useful, but WITHOUT ANY WARRANTY; without even the implied\r
24 \r
25  * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r
26 \r
27  * GNU General Public License for more details.  You should have received a\r
28 \r
29  * copy of the GNU General Public License along with this program in the file\r
30 \r
31  * COPYING; if not, write to the Free Software Foundation, Inc., 51 Franklin\r
32 \r
33  * St, Fifth Floor, Boston, MA  02110-1301  USA\r
34 \r
35  *-----------------------------------------------------------------------------\r
36 \r
37  */\r
38 \r
39 \r
40 \r
41 #include "fx2utils.h"\r
42 \r
43 #include "fx2regs.h"\r
44 \r
45 #include "delay.h"\r
46 \r
47 \r
48 \r
49 void\r
50 \r
51 fx2_stall_ep0 (void)\r
52 \r
53 {\r
54 \r
55   EP0CS |= bmEPSTALL;\r
56 \r
57 }\r
58 \r
59 \r
60 \r
61 void\r
62 \r
63 fx2_reset_data_toggle (unsigned char ep)\r
64 \r
65 {\r
66 \r
67   TOGCTL = ((ep & 0x80) >> 3 | (ep & 0x0f));\r
68 \r
69   TOGCTL |= bmRESETTOGGLE;\r
70 \r
71 }\r
72 \r
73 \r
74 \r
75 void\r
76 \r
77 fx2_renumerate (void)\r
78 \r
79 {\r
80 \r
81   USBCS |= bmDISCON | bmRENUM;\r
82 \r
83 \r
84 \r
85   // mdelay (1500);             // FIXME why 1.5 seconds?\r
86 \r
87   mdelay (250);                 // FIXME why 1.5 seconds?\r
88 \r
89   \r
90 \r
91   USBIRQ = 0xff;                // clear any pending USB irqs...\r
92 \r
93   EPIRQ =  0xff;                //   they're from before the renumeration\r
94 \r
95 \r
96 \r
97   EXIF &= ~bmEXIF_USBINT;\r
98 \r
99 \r
100 \r
101   USBCS &= ~bmDISCON;           // reconnect USB\r
102 \r
103 }\r
104 \r