OpenCores
URL https://opencores.org/ocsvn/usb_fpga_1_2/usb_fpga_1_2/trunk

Subversion Repositories usb_fpga_1_2

[/] [usb_fpga_1_2/] [trunk/] [include/] [ztex.h] - Blame information for rev 3

Go to most recent revision | Details | Compare with Previous | View Log

Line No. Rev Author Line
1 2 ZTEX
/*!
2
   ZTEX Firmware Kit for EZ-USB Microcontrollers
3
   Copyright (C) 2008-2009 ZTEX e.K.
4
   http://www.ztex.de
5
 
6
   This program is free software; you can redistribute it and/or modify
7
   it under the terms of the GNU General Public License version 3 as
8
   published by the Free Software Foundation.
9
 
10
   This program is distributed in the hope that it will be useful, but
11
   WITHOUT ANY WARRANTY; without even the implied warranty of
12
   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13
   General Public License for more details.
14
 
15
   You should have received a copy of the GNU General Public License
16
   along with this program; if not, see http://www.gnu.org/licenses/.
17
!*/
18
 
19
/*
20 3 ZTEX
   Puts everything together.
21 2 ZTEX
*/
22
 
23
#ifndef[ZTEX_H]
24
#define[ZTEX_H]
25
 
26
/* *********************************************************************
27
   ***** include the basic functions ***********************************
28
   ********************************************************************* */
29
#include[ztex-utils.h]
30
 
31
 
32
/* *********************************************************************
33 3 ZTEX
   ***** EEPROM support and some I2c helper functions ******************
34
   ********************************************************************* */
35
#ifneq[EEPROM_DISABLED][1]
36
#include[ztex-eeprom.h]
37
#endif
38
 
39
/* *********************************************************************
40 2 ZTEX
   ***** Flash memory support ******************************************
41
   ********************************************************************* */
42
#ifeq[FLASH_ENABLED][1]
43 3 ZTEX
 
44 2 ZTEX
#ifeq[PRODUCT_IS][UFM-1_1]
45 3 ZTEX
#define[MMC_PORT][E]
46
#define[MMC_BIT_CS][7]
47
#define[MMC_BIT_DI][6]
48
#define[MMC_BIT_DO][4]
49
#define[MMC_BIT_CLK][5]
50 2 ZTEX
#include[ztex-flash1.h]
51 3 ZTEX
 
52 2 ZTEX
#elifeq[PRODUCT_IS][UFM-1_2]
53 3 ZTEX
#define[MMC_PORT][E]
54
#define[MMC_BIT_CS][7]
55
#define[MMC_BIT_DI][6]
56
#define[MMC_BIT_DO][4]
57
#define[MMC_BIT_CLK][5]
58 2 ZTEX
#include[ztex-flash1.h]
59 3 ZTEX
 
60
#elifeq[PRODUCT_IS][UM-1_0]
61
#define[MMC_PORT][C]
62
#define[MMC_BIT_CS][7]
63
#define[MMC_BIT_DI][6]
64
#define[MMC_BIT_DO][4]
65
#define[MMC_BIT_CLK][5]
66
#include[ztex-flash1.h]
67
 
68
#elifeq[PRODUCT_IS][UM-1_10]
69
#define[MMC_PORT][C]
70
#define[MMC_BIT_CS][4]
71
#define[MMC_BIT_DI][5]
72
#define[MMC_BIT_DO][7]
73
#define[MMC_BIT_CLK][6]
74
#include[ztex-flash1.h]
75
 
76 2 ZTEX
#else
77
#warning[FLASH option is not supported by this product]
78
#define[FLASH_ENABLED][0]
79
#endif
80
#endif
81
 
82
/* *********************************************************************
83
   ***** FPGA configuration support ************************************
84
   ********************************************************************* */
85
#ifeq[PRODUCT_IS][UFM-1_0]
86
#include[ztex-fpga.h]
87
#elifeq[PRODUCT_IS][UFM-1_1]
88
#include[ztex-fpga.h]
89
#elifeq[PRODUCT_IS][UFM-1_2]
90
#include[ztex-fpga.h]
91
#endif
92
 
93
/* *********************************************************************
94
   ***** define the descriptors and the interrupt routines *************
95
   ********************************************************************* */
96
#include[ztex-descriptors.h]
97
#include[ztex-isr.h]
98
 
99
 
100
/* *********************************************************************
101
   ***** init_USB ******************************************************
102
   ********************************************************************* */
103
#define[EPXCFG(][);][    EP$0CFG = 
104
#ifeq[EP$0_DIR][IN]
105
        bmBIT7 | bmBIT6
106
#elifeq[EP$0_DIR][OUT]
107
        bmBIT7
108
#else
109
 
110
#endif
111
#ifeq[EP$0_TYPE][BULK]
112
        | bmBIT5
113
#elifeq[EP$0_TYPE][ISO]
114
        | bmBIT4
115
#elifeq[EP$0_TYPE][INT]
116
        | bmBIT5 | bmBIT4
117
#endif
118
#ifeq[EP$0_SIZE][1024]
119
        | bmBIT3
120
#endif
121
#ifeq[EP$0_BUFFERS][2]
122
        | bmBIT1
123
#elifeq[EP$0_BUFFERS][3]
124
        | bmBIT1 | bmBIT0
125
#endif  
126
        ;
127
        SYNCDELAY;
128
]
129
 
130
#define[EP1XCFG(][);][#ifeq[EP$0_TYPE][BULK]
131
        EP$0CFG = bmBIT7 | bmBIT5;
132
#elifeq[EP$0_TYPE][ISO]
133
        EP$0CFG = bmBIT7 | bmBIT4;
134
#elifeq[EP$0_TYPE][INT]
135
        EP$0CFG = bmBIT7 | bmBIT5 | bmBIT4;
136
#else   
137
        EP$0CFG = 0;
138
#endif
139
        SYNCDELAY;
140
]
141
 
142
void init_USB ()
143
{
144 3 ZTEX
    USBCS |= 0x08;
145
 
146 2 ZTEX
    CPUCS = bmBIT4 | bmBIT1;
147
    CKCON &= ~7;
148
 
149 3 ZTEX
#ifeq[PRODUCT_IS][UFM-1_0]
150 2 ZTEX
    IOA1 = 1;
151
    OEA |= bmBIT1;
152 3 ZTEX
#elifeq[PRODUCT_IS][UFM-1_1]
153
    IOA1 = 1;
154
    OEA |= bmBIT1;
155
#elifeq[PRODUCT_IS][UFM-1_2]
156
    IOA1 = 1;
157
    OEA |= bmBIT1;
158
#endif
159 2 ZTEX
 
160
    EA = 0;
161 3 ZTEX
    EUSB = 0;
162 2 ZTEX
 
163
    ENABLE_AVUSB;
164
 
165
    INIT_INTERRUPT_VECTOR(INTVEC_SUDAV, SUDAV_ISR);
166
    INIT_INTERRUPT_VECTOR(INTVEC_SOF, SOF_ISR);
167
    INIT_INTERRUPT_VECTOR(INTVEC_SUTOK, SUTOK_ISR);
168
    INIT_INTERRUPT_VECTOR(INTVEC_SUSPEND, SUSP_ISR);
169
    INIT_INTERRUPT_VECTOR(INTVEC_USBRESET, URES_ISR);
170
    INIT_INTERRUPT_VECTOR(INTVEC_HISPEED, HSGRANT_ISR);
171
    INIT_INTERRUPT_VECTOR(INTVEC_EP0ACK, EP0ACK_ISR);
172
 
173
    INIT_INTERRUPT_VECTOR(INTVEC_EP0IN, EP0IN_ISR);
174
    INIT_INTERRUPT_VECTOR(INTVEC_EP0OUT, EP0OUT_ISR);
175
    INIT_INTERRUPT_VECTOR(INTVEC_EP1IN, EP1IN_ISR);
176
    INIT_INTERRUPT_VECTOR(INTVEC_EP1OUT, EP1OUT_ISR);
177
    INIT_INTERRUPT_VECTOR(INTVEC_EP2, EP2_ISR);
178
    INIT_INTERRUPT_VECTOR(INTVEC_EP4, EP4_ISR);
179
    INIT_INTERRUPT_VECTOR(INTVEC_EP6, EP6_ISR);
180
    INIT_INTERRUPT_VECTOR(INTVEC_EP8, EP8_ISR);
181
 
182
    EXIF &= ~bmBIT4;
183
    USBIRQ = 0x7f;
184
    USBIE |= 0x7f;
185
    EPIRQ = 0xff;
186
    EPIE = 0xff;
187
 
188
    EUSB = 1;
189
    EA = 1;
190
 
191
    EP1XCFG(1IN);
192
    EP1XCFG(1OUT);
193
    EPXCFG(2);
194
    EPXCFG(4);
195
    EPXCFG(6);
196
    EPXCFG(8);
197 3 ZTEX
 
198
#ifeq[FLASH_ENABLED][1]
199
    flash_init();
200
#endif
201
#ifeq[FLASH_BITSTREAM_ENABLED][1]
202
    fpga_configure_from_flash_init();
203
#endif
204
 
205
    USBCS |= bmBIT7 | bmBIT1;
206
    wait(250);
207
    USBCS &= ~0x08;
208 2 ZTEX
}
209
 
210 3 ZTEX
 
211 2 ZTEX
#endif   /* ZTEX_H */

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.