Rev 313 | Details | Compare with Previous | Last modification | View Log | RSS feed
Rev | Author | Line No. | Line |
---|---|---|---|
196 | killagreg | 1 | /******************** (C) COPYRIGHT 2008 STMicroelectronics ******************** |
1 | ingob | 2 | * File Name : usb_regs.c |
3 | * Author : MCD Application Team |
||
196 | killagreg | 4 | * Version : V4.0.0 |
5 | * Date : 09/29/2008 |
||
6 | * Description : Interface functions to USB cell registers. |
||
1 | ingob | 7 | ******************************************************************************** |
196 | killagreg | 8 | * THE PRESENT FIRMWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS |
1 | ingob | 9 | * WITH CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE TIME. |
10 | * AS A RESULT, STMICROELECTRONICS SHALL NOT BE HELD LIABLE FOR ANY DIRECT, |
||
11 | * INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING FROM THE |
||
12 | * CONTENT OF SUCH SOFTWARE AND/OR THE USE MADE BY CUSTOMERS OF THE CODING |
||
13 | * INFORMATION CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS. |
||
14 | *******************************************************************************/ |
||
15 | |||
16 | /* Includes ------------------------------------------------------------------*/ |
||
17 | #include "usb_lib.h" |
||
18 | /* Private typedef -----------------------------------------------------------*/ |
||
19 | /* Private define ------------------------------------------------------------*/ |
||
20 | /* Private macro -------------------------------------------------------------*/ |
||
21 | /* Private variables ---------------------------------------------------------*/ |
||
22 | /* Extern variables ----------------------------------------------------------*/ |
||
23 | /* Private function prototypes -----------------------------------------------*/ |
||
24 | /* Private functions ---------------------------------------------------------*/ |
||
196 | killagreg | 25 | |
1 | ingob | 26 | /******************************************************************************* |
196 | killagreg | 27 | * Function Name : SetCNTR. |
28 | * Description : Set the CNTR register value. |
||
29 | * Input : wRegValue: new register value. |
||
30 | * Output : None. |
||
31 | * Return : None. |
||
1 | ingob | 32 | *******************************************************************************/ |
33 | void SetCNTR(u16 wRegValue) |
||
34 | { |
||
196 | killagreg | 35 | _SetCNTR(wRegValue); |
1 | ingob | 36 | } |
196 | killagreg | 37 | |
1 | ingob | 38 | /******************************************************************************* |
196 | killagreg | 39 | * Function Name : GetCNTR. |
40 | * Description : returns the CNTR register value. |
||
41 | * Input : None. |
||
42 | * Output : None. |
||
43 | * Return : CNTR register Value. |
||
1 | ingob | 44 | *******************************************************************************/ |
45 | u16 GetCNTR(void) |
||
46 | { |
||
196 | killagreg | 47 | return(_GetCNTR()); |
1 | ingob | 48 | } |
196 | killagreg | 49 | |
1 | ingob | 50 | /******************************************************************************* |
196 | killagreg | 51 | * Function Name : SetISTR. |
52 | * Description : Set the ISTR register value. |
||
53 | * Input : wRegValue: new register value. |
||
54 | * Output : None. |
||
55 | * Return : None. |
||
1 | ingob | 56 | *******************************************************************************/ |
57 | void SetISTR(u16 wRegValue) |
||
58 | { |
||
196 | killagreg | 59 | _SetISTR(wRegValue); |
1 | ingob | 60 | } |
196 | killagreg | 61 | |
1 | ingob | 62 | /******************************************************************************* |
196 | killagreg | 63 | * Function Name : GetISTR. |
64 | * Description : Returns the ISTR register value. |
||
65 | * Input : None. |
||
66 | * Output : None. |
||
67 | * Return : ISTR register Value. |
||
1 | ingob | 68 | *******************************************************************************/ |
69 | u16 GetISTR(void) |
||
70 | { |
||
196 | killagreg | 71 | return(_GetISTR()); |
1 | ingob | 72 | } |
196 | killagreg | 73 | |
1 | ingob | 74 | /******************************************************************************* |
196 | killagreg | 75 | * Function Name : GetFNR. |
76 | * Description : Returns the FNR register value. |
||
77 | * Input : None. |
||
78 | * Output : None. |
||
79 | * Return : FNR register Value. |
||
1 | ingob | 80 | *******************************************************************************/ |
81 | u16 GetFNR(void) |
||
82 | { |
||
196 | killagreg | 83 | return(_GetFNR()); |
1 | ingob | 84 | } |
196 | killagreg | 85 | |
1 | ingob | 86 | /******************************************************************************* |
196 | killagreg | 87 | * Function Name : SetDADDR. |
88 | * Description : Set the DADDR register value. |
||
89 | * Input : wRegValue: new register value. |
||
90 | * Output : None. |
||
91 | * Return : None. |
||
1 | ingob | 92 | *******************************************************************************/ |
93 | void SetDADDR(u16 wRegValue) |
||
94 | { |
||
196 | killagreg | 95 | _SetDADDR(wRegValue); |
1 | ingob | 96 | } |
196 | killagreg | 97 | |
1 | ingob | 98 | /******************************************************************************* |
196 | killagreg | 99 | * Function Name : GetDADDR. |
100 | * Description : Returns the DADDR register value. |
||
101 | * Input : None. |
||
102 | * Output : None. |
||
1 | ingob | 103 | * Return : DADDR register Value |
104 | *******************************************************************************/ |
||
105 | u16 GetDADDR(void) |
||
106 | { |
||
196 | killagreg | 107 | return(_GetDADDR()); |
1 | ingob | 108 | } |
196 | killagreg | 109 | |
1 | ingob | 110 | /******************************************************************************* |
196 | killagreg | 111 | * Function Name : SetBTABLE. |
112 | * Description : Set the BTABLE. |
||
113 | * Input : wRegValue: New register value. |
||
114 | * Output : None. |
||
115 | * Return : None. |
||
1 | ingob | 116 | *******************************************************************************/ |
117 | void SetBTABLE(u16 wRegValue) |
||
118 | { |
||
196 | killagreg | 119 | _SetBTABLE(wRegValue); |
1 | ingob | 120 | } |
121 | |||
122 | /******************************************************************************* |
||
196 | killagreg | 123 | * Function Name : GetBTABLE. |
124 | * Description : Returns the BTABLE register value. |
||
125 | * Input : None. |
||
126 | * Output : None. |
||
127 | * Return : BTABLE address. |
||
1 | ingob | 128 | *******************************************************************************/ |
129 | u16 GetBTABLE(void) |
||
130 | { |
||
196 | killagreg | 131 | return(_GetBTABLE()); |
1 | ingob | 132 | } |
196 | killagreg | 133 | |
1 | ingob | 134 | /******************************************************************************* |
196 | killagreg | 135 | * Function Name : SetENDPOINT. |
136 | * Description : Setthe Endpoint register value. |
||
137 | * Input : bEpNum: Endpoint Number. |
||
138 | * wRegValue. |
||
139 | * Output : None. |
||
140 | * Return : None. |
||
1 | ingob | 141 | *******************************************************************************/ |
142 | void SetENDPOINT(u8 bEpNum, u16 wRegValue) |
||
143 | { |
||
196 | killagreg | 144 | _SetENDPOINT(bEpNum, wRegValue); |
1 | ingob | 145 | } |
196 | killagreg | 146 | |
1 | ingob | 147 | /******************************************************************************* |
196 | killagreg | 148 | * Function Name : GetENDPOINT. |
149 | * Description : Return the Endpoint register value. |
||
150 | * Input : bEpNum: Endpoint Number. |
||
151 | * Output : None. |
||
152 | * Return : Endpoint register value. |
||
1 | ingob | 153 | *******************************************************************************/ |
154 | u16 GetENDPOINT(u8 bEpNum) |
||
155 | { |
||
196 | killagreg | 156 | return(_GetENDPOINT(bEpNum)); |
1 | ingob | 157 | } |
196 | killagreg | 158 | |
1 | ingob | 159 | /******************************************************************************* |
196 | killagreg | 160 | * Function Name : SetEPType. |
161 | * Description : sets the type in the endpoint register. |
||
162 | * Input : bEpNum: Endpoint Number. |
||
163 | * wType: type definition. |
||
164 | * Output : None. |
||
165 | * Return : None. |
||
1 | ingob | 166 | *******************************************************************************/ |
167 | void SetEPType(u8 bEpNum, u16 wType) |
||
168 | { |
||
196 | killagreg | 169 | _SetEPType(bEpNum, wType); |
1 | ingob | 170 | } |
196 | killagreg | 171 | |
1 | ingob | 172 | /******************************************************************************* |
196 | killagreg | 173 | * Function Name : GetEPType. |
174 | * Description : Returns the endpoint type. |
||
175 | * Input : bEpNum: Endpoint Number. |
||
176 | * Output : None. |
||
177 | * Return : Endpoint Type. |
||
1 | ingob | 178 | *******************************************************************************/ |
179 | u16 GetEPType(u8 bEpNum) |
||
180 | { |
||
196 | killagreg | 181 | return(_GetEPType(bEpNum)); |
1 | ingob | 182 | } |
196 | killagreg | 183 | |
1 | ingob | 184 | /******************************************************************************* |
196 | killagreg | 185 | * Function Name : SetEPTxStatus. |
186 | * Description : Set the status of Tx endpoint. |
||
187 | * Input : bEpNum: Endpoint Number. |
||
188 | * wState: new state. |
||
189 | * Output : None. |
||
190 | * Return : None. |
||
1 | ingob | 191 | *******************************************************************************/ |
192 | void SetEPTxStatus(u8 bEpNum, u16 wState) |
||
193 | { |
||
196 | killagreg | 194 | _SetEPTxStatus(bEpNum, wState); |
1 | ingob | 195 | } |
196 | killagreg | 196 | |
1 | ingob | 197 | /******************************************************************************* |
196 | killagreg | 198 | * Function Name : SetEPRxStatus. |
199 | * Description : Set the status of Rx endpoint. |
||
200 | * Input : bEpNum: Endpoint Number. |
||
201 | * wState: new state. |
||
202 | * Output : None. |
||
203 | * Return : None. |
||
1 | ingob | 204 | *******************************************************************************/ |
205 | void SetEPRxStatus(u8 bEpNum, u16 wState) |
||
206 | { |
||
196 | killagreg | 207 | _SetEPRxStatus(bEpNum, wState); |
208 | } |
||
209 | |||
1 | ingob | 210 | /******************************************************************************* |
196 | killagreg | 211 | * Function Name : SetDouBleBuffEPStall. |
212 | * Description : sets the status for Double Buffer Endpoint to STALL. |
||
213 | * Input : bEpNum: Endpoint Number. |
||
214 | * bDir: Endpoint direction. |
||
215 | * Output : None. |
||
216 | * Return : None. |
||
1 | ingob | 217 | *******************************************************************************/ |
196 | killagreg | 218 | void SetDouBleBuffEPStall(u8 bEpNum, u8 bDir) |
1 | ingob | 219 | { |
220 | u16 Endpoint_DTOG_Status; |
||
221 | Endpoint_DTOG_Status = GetENDPOINT(bEpNum); |
||
196 | killagreg | 222 | if (bDir == EP_DBUF_OUT) |
223 | { /* OUT double buffered endpoint */ |
||
224 | _SetENDPOINT(bEpNum, Endpoint_DTOG_Status & ~EPRX_DTOG1); |
||
225 | } |
||
226 | else if (bDir == EP_DBUF_IN) |
||
227 | { /* IN double buffered endpoint */ |
||
228 | _SetENDPOINT(bEpNum, Endpoint_DTOG_Status & ~EPTX_DTOG1); |
||
229 | } |
||
1 | ingob | 230 | } |
196 | killagreg | 231 | |
1 | ingob | 232 | /******************************************************************************* |
196 | killagreg | 233 | * Function Name : GetEPTxStatus. |
234 | * Description : Returns the endpoint Tx status. |
||
235 | * Input : bEpNum: Endpoint Number. |
||
236 | * Output : None. |
||
237 | * Return : Endpoint TX Status. |
||
1 | ingob | 238 | *******************************************************************************/ |
239 | u16 GetEPTxStatus(u8 bEpNum) |
||
240 | { |
||
196 | killagreg | 241 | return(_GetEPTxStatus(bEpNum)); |
1 | ingob | 242 | } |
196 | killagreg | 243 | |
1 | ingob | 244 | /******************************************************************************* |
196 | killagreg | 245 | * Function Name : GetEPRxStatus. |
246 | * Description : Returns the endpoint Rx status. |
||
247 | * Input : bEpNum: Endpoint Number. |
||
248 | * Output : None. |
||
249 | * Return : Endpoint RX Status. |
||
1 | ingob | 250 | *******************************************************************************/ |
251 | u16 GetEPRxStatus(u8 bEpNum) |
||
252 | { |
||
196 | killagreg | 253 | return(_GetEPRxStatus(bEpNum)); |
1 | ingob | 254 | } |
196 | killagreg | 255 | |
1 | ingob | 256 | /******************************************************************************* |
196 | killagreg | 257 | * Function Name : SetEPTxValid. |
258 | * Description : Valid the endpoint Tx Status. |
||
259 | * Input : bEpNum: Endpoint Number. |
||
260 | * Output : None. |
||
261 | * Return : None. |
||
1 | ingob | 262 | *******************************************************************************/ |
263 | void SetEPTxValid(u8 bEpNum) |
||
264 | { |
||
196 | killagreg | 265 | _SetEPTxStatus(bEpNum, EP_TX_VALID); |
1 | ingob | 266 | } |
196 | killagreg | 267 | |
1 | ingob | 268 | /******************************************************************************* |
196 | killagreg | 269 | * Function Name : SetEPRxValid. |
270 | * Description : Valid the endpoint Rx Status. |
||
271 | * Input : bEpNum: Endpoint Number. |
||
272 | * Output : None. |
||
273 | * Return : None. |
||
1 | ingob | 274 | *******************************************************************************/ |
275 | void SetEPRxValid(u8 bEpNum) |
||
276 | { |
||
196 | killagreg | 277 | _SetEPRxStatus(bEpNum, EP_RX_VALID); |
1 | ingob | 278 | } |
196 | killagreg | 279 | |
1 | ingob | 280 | /******************************************************************************* |
196 | killagreg | 281 | * Function Name : SetEP_KIND. |
282 | * Description : Clear the EP_KIND bit. |
||
283 | * Input : bEpNum: Endpoint Number. |
||
284 | * Output : None. |
||
285 | * Return : None. |
||
1 | ingob | 286 | *******************************************************************************/ |
287 | void SetEP_KIND(u8 bEpNum) |
||
288 | { |
||
196 | killagreg | 289 | _SetEP_KIND(bEpNum); |
1 | ingob | 290 | } |
196 | killagreg | 291 | |
1 | ingob | 292 | /******************************************************************************* |
196 | killagreg | 293 | * Function Name : ClearEP_KIND. |
294 | * Description : set the EP_KIND bit. |
||
295 | * Input : bEpNum: Endpoint Number. |
||
296 | * Output : None. |
||
297 | * Return : None. |
||
1 | ingob | 298 | *******************************************************************************/ |
299 | void ClearEP_KIND(u8 bEpNum) |
||
300 | { |
||
196 | killagreg | 301 | _ClearEP_KIND(bEpNum); |
1 | ingob | 302 | } |
196 | killagreg | 303 | |
1 | ingob | 304 | /******************************************************************************* |
196 | killagreg | 305 | * Function Name : Clear_Status_Out. |
306 | * Description : Clear the Status Out of the related Endpoint. |
||
307 | * Input : bEpNum: Endpoint Number. |
||
308 | * Output : None. |
||
309 | * Return : None. |
||
1 | ingob | 310 | *******************************************************************************/ |
311 | void Clear_Status_Out(u8 bEpNum) |
||
312 | { |
||
196 | killagreg | 313 | _ClearEP_KIND(bEpNum); |
1 | ingob | 314 | } |
196 | killagreg | 315 | |
1 | ingob | 316 | /******************************************************************************* |
196 | killagreg | 317 | * Function Name : Set_Status_Out. |
318 | * Description : Set the Status Out of the related Endpoint. |
||
319 | * Input : bEpNum: Endpoint Number. |
||
320 | * Output : None. |
||
321 | * Return : None. |
||
1 | ingob | 322 | *******************************************************************************/ |
323 | void Set_Status_Out(u8 bEpNum) |
||
324 | { |
||
196 | killagreg | 325 | _SetEP_KIND(bEpNum); |
1 | ingob | 326 | } |
196 | killagreg | 327 | |
1 | ingob | 328 | /******************************************************************************* |
196 | killagreg | 329 | * Function Name : SetEPDoubleBuff. |
330 | * Description : Enable the double buffer feature for the endpoint. |
||
331 | * Input : bEpNum: Endpoint Number. |
||
332 | * Output : None. |
||
333 | * Return : None. |
||
1 | ingob | 334 | *******************************************************************************/ |
335 | void SetEPDoubleBuff(u8 bEpNum) |
||
336 | { |
||
196 | killagreg | 337 | _SetEP_KIND(bEpNum); |
1 | ingob | 338 | } |
196 | killagreg | 339 | |
1 | ingob | 340 | /******************************************************************************* |
196 | killagreg | 341 | * Function Name : ClearEPDoubleBuff. |
342 | * Description : Disable the double buffer feature for the endpoint. |
||
343 | * Input : bEpNum: Endpoint Number. |
||
344 | * Output : None. |
||
345 | * Return : None. |
||
1 | ingob | 346 | *******************************************************************************/ |
347 | void ClearEPDoubleBuff(u8 bEpNum) |
||
348 | { |
||
196 | killagreg | 349 | _ClearEP_KIND(bEpNum); |
1 | ingob | 350 | } |
196 | killagreg | 351 | |
1 | ingob | 352 | /******************************************************************************* |
353 | * Function Name : GetTxStallStatus |
||
196 | killagreg | 354 | * Description : Returns the Stall status of the Tx endpoint. |
355 | * Input : bEpNum: Endpoint Number. |
||
356 | * Output : None. |
||
357 | * Return : Tx Stall status. |
||
1 | ingob | 358 | *******************************************************************************/ |
359 | u16 GetTxStallStatus(u8 bEpNum) |
||
360 | { |
||
196 | killagreg | 361 | return(_GetTxStallStatus(bEpNum)); |
1 | ingob | 362 | } |
196 | killagreg | 363 | |
1 | ingob | 364 | /******************************************************************************* |
365 | * Function Name : GetRxStallStatus |
||
196 | killagreg | 366 | * Description : Returns the Stall status of the Rx endpoint. |
367 | * Input : bEpNum: Endpoint Number. |
||
368 | * Output : None. |
||
369 | * Return : Rx Stall status. |
||
1 | ingob | 370 | *******************************************************************************/ |
371 | u16 GetRxStallStatus(u8 bEpNum) |
||
372 | { |
||
196 | killagreg | 373 | return(_GetRxStallStatus(bEpNum)); |
1 | ingob | 374 | } |
196 | killagreg | 375 | |
1 | ingob | 376 | /******************************************************************************* |
377 | * Function Name : ClearEP_CTR_RX |
||
196 | killagreg | 378 | * Description : Clear the CTR_RX bit. |
379 | * Input : bEpNum: Endpoint Number. |
||
380 | * Output : None. |
||
381 | * Return : None. |
||
1 | ingob | 382 | *******************************************************************************/ |
383 | void ClearEP_CTR_RX(u8 bEpNum) |
||
384 | { |
||
196 | killagreg | 385 | _ClearEP_CTR_RX(bEpNum); |
1 | ingob | 386 | } |
196 | killagreg | 387 | |
1 | ingob | 388 | /******************************************************************************* |
389 | * Function Name : ClearEP_CTR_TX |
||
196 | killagreg | 390 | * Description : Clear the CTR_TX bit. |
391 | * Input : bEpNum: Endpoint Number. |
||
392 | * Output : None. |
||
393 | * Return : None. |
||
1 | ingob | 394 | *******************************************************************************/ |
395 | void ClearEP_CTR_TX(u8 bEpNum) |
||
396 | { |
||
196 | killagreg | 397 | _ClearEP_CTR_TX(bEpNum); |
1 | ingob | 398 | } |
196 | killagreg | 399 | |
1 | ingob | 400 | /******************************************************************************* |
401 | * Function Name : ToggleDTOG_RX |
||
196 | killagreg | 402 | * Description : Toggle the DTOG_RX bit. |
403 | * Input : bEpNum: Endpoint Number. |
||
404 | * Output : None. |
||
405 | * Return : None. |
||
1 | ingob | 406 | *******************************************************************************/ |
407 | void ToggleDTOG_RX(u8 bEpNum) |
||
408 | { |
||
196 | killagreg | 409 | _ToggleDTOG_RX(bEpNum); |
1 | ingob | 410 | } |
196 | killagreg | 411 | |
1 | ingob | 412 | /******************************************************************************* |
413 | * Function Name : ToggleDTOG_TX |
||
196 | killagreg | 414 | * Description : Toggle the DTOG_TX bit. |
415 | * Input : bEpNum: Endpoint Number. |
||
416 | * Output : None. |
||
417 | * Return : None. |
||
1 | ingob | 418 | *******************************************************************************/ |
419 | void ToggleDTOG_TX(u8 bEpNum) |
||
420 | { |
||
196 | killagreg | 421 | _ToggleDTOG_TX(bEpNum); |
1 | ingob | 422 | } |
196 | killagreg | 423 | |
1 | ingob | 424 | /******************************************************************************* |
196 | killagreg | 425 | * Function Name : ClearDTOG_RX. |
426 | * Description : Clear the DTOG_RX bit. |
||
427 | * Input : bEpNum: Endpoint Number. |
||
428 | * Output : None. |
||
429 | * Return : None. |
||
1 | ingob | 430 | *******************************************************************************/ |
431 | void ClearDTOG_RX(u8 bEpNum) |
||
432 | { |
||
196 | killagreg | 433 | _ClearDTOG_RX(bEpNum); |
1 | ingob | 434 | } |
196 | killagreg | 435 | |
1 | ingob | 436 | /******************************************************************************* |
196 | killagreg | 437 | * Function Name : ClearDTOG_TX. |
438 | * Description : Clear the DTOG_TX bit. |
||
439 | * Input : bEpNum: Endpoint Number. |
||
440 | * Output : None. |
||
441 | * Return : None. |
||
1 | ingob | 442 | *******************************************************************************/ |
443 | void ClearDTOG_TX(u8 bEpNum) |
||
444 | { |
||
196 | killagreg | 445 | _ClearDTOG_TX(bEpNum); |
1 | ingob | 446 | } |
196 | killagreg | 447 | |
1 | ingob | 448 | /******************************************************************************* |
449 | * Function Name : SetEPAddress |
||
196 | killagreg | 450 | * Description : Set the endpoint address. |
451 | * Input : bEpNum: Endpoint Number. |
||
452 | * bAddr: New endpoint address. |
||
453 | * Output : None. |
||
454 | * Return : None. |
||
1 | ingob | 455 | *******************************************************************************/ |
196 | killagreg | 456 | void SetEPAddress(u8 bEpNum, u8 bAddr) |
1 | ingob | 457 | { |
196 | killagreg | 458 | _SetEPAddress(bEpNum, bAddr); |
1 | ingob | 459 | } |
196 | killagreg | 460 | |
1 | ingob | 461 | /******************************************************************************* |
462 | * Function Name : GetEPAddress |
||
196 | killagreg | 463 | * Description : Get the endpoint address. |
464 | * Input : bEpNum: Endpoint Number. |
||
465 | * Output : None. |
||
466 | * Return : Endpoint address. |
||
1 | ingob | 467 | *******************************************************************************/ |
468 | u8 GetEPAddress(u8 bEpNum) |
||
469 | { |
||
196 | killagreg | 470 | return(_GetEPAddress(bEpNum)); |
1 | ingob | 471 | } |
196 | killagreg | 472 | |
1 | ingob | 473 | /******************************************************************************* |
474 | * Function Name : SetEPTxAddr |
||
196 | killagreg | 475 | * Description : Set the endpoint Tx buffer address. |
476 | * Input : bEpNum: Endpoint Number. |
||
477 | * wAddr: new address. |
||
478 | * Output : None. |
||
479 | * Return : None. |
||
1 | ingob | 480 | *******************************************************************************/ |
481 | void SetEPTxAddr(u8 bEpNum, u16 wAddr) |
||
482 | { |
||
196 | killagreg | 483 | _SetEPTxAddr(bEpNum, wAddr); |
1 | ingob | 484 | } |
196 | killagreg | 485 | |
1 | ingob | 486 | /******************************************************************************* |
487 | * Function Name : SetEPRxAddr |
||
196 | killagreg | 488 | * Description : Set the endpoint Rx buffer address. |
489 | * Input : bEpNum: Endpoint Number. |
||
490 | * wAddr: new address. |
||
491 | * Output : None. |
||
492 | * Return : None. |
||
1 | ingob | 493 | *******************************************************************************/ |
494 | void SetEPRxAddr(u8 bEpNum, u16 wAddr) |
||
495 | { |
||
196 | killagreg | 496 | _SetEPRxAddr(bEpNum, wAddr); |
1 | ingob | 497 | } |
196 | killagreg | 498 | |
1 | ingob | 499 | /******************************************************************************* |
500 | * Function Name : GetEPTxAddr |
||
196 | killagreg | 501 | * Description : Returns the endpoint Tx buffer address. |
502 | * Input : bEpNum: Endpoint Number. |
||
503 | * Output : None. |
||
504 | * Return : Rx buffer address. |
||
1 | ingob | 505 | *******************************************************************************/ |
506 | u16 GetEPTxAddr(u8 bEpNum) |
||
507 | { |
||
196 | killagreg | 508 | return(_GetEPTxAddr(bEpNum)); |
509 | } |
||
510 | |||
1 | ingob | 511 | /******************************************************************************* |
196 | killagreg | 512 | * Function Name : GetEPRxAddr. |
513 | * Description : Returns the endpoint Rx buffer address. |
||
514 | * Input : bEpNum: Endpoint Number. |
||
515 | * Output : None. |
||
516 | * Return : Rx buffer address. |
||
1 | ingob | 517 | *******************************************************************************/ |
518 | u16 GetEPRxAddr(u8 bEpNum) |
||
519 | { |
||
196 | killagreg | 520 | return(_GetEPRxAddr(bEpNum)); |
1 | ingob | 521 | } |
196 | killagreg | 522 | |
1 | ingob | 523 | /******************************************************************************* |
196 | killagreg | 524 | * Function Name : SetEPTxCount. |
525 | * Description : Set the Tx count. |
||
526 | * Input : bEpNum: Endpoint Number. |
||
527 | * wCount: new count value. |
||
528 | * Output : None. |
||
529 | * Return : None. |
||
1 | ingob | 530 | *******************************************************************************/ |
531 | void SetEPTxCount(u8 bEpNum, u16 wCount) |
||
532 | { |
||
196 | killagreg | 533 | _SetEPTxCount(bEpNum, wCount); |
1 | ingob | 534 | } |
196 | killagreg | 535 | |
1 | ingob | 536 | /******************************************************************************* |
196 | killagreg | 537 | * Function Name : SetEPCountRxReg. |
538 | * Description : Set the Count Rx Register value. |
||
539 | * Input : *pdwReg: point to the register. |
||
540 | * wCount: the new register value. |
||
541 | * Output : None. |
||
542 | * Return : None. |
||
1 | ingob | 543 | *******************************************************************************/ |
544 | #ifdef STR7xx |
||
545 | void SetEPCountRxReg(u32 *pdwReg, u16 wCount) |
||
546 | { |
||
196 | killagreg | 547 | _SetEPCountRxReg(dwReg, wCount); |
1 | ingob | 548 | } |
549 | #endif |
||
196 | killagreg | 550 | |
1 | ingob | 551 | /******************************************************************************* |
196 | killagreg | 552 | * Function Name : SetEPRxCount. |
553 | * Description : Set the Rx count. |
||
554 | * Input : bEpNum: Endpoint Number. |
||
555 | * wCount: the new count value. |
||
556 | * Output : None. |
||
557 | * Return : None. |
||
1 | ingob | 558 | *******************************************************************************/ |
559 | void SetEPRxCount(u8 bEpNum, u16 wCount) |
||
560 | { |
||
196 | killagreg | 561 | _SetEPRxCount(bEpNum, wCount); |
1 | ingob | 562 | } |
196 | killagreg | 563 | |
1 | ingob | 564 | /******************************************************************************* |
196 | killagreg | 565 | * Function Name : GetEPTxCount. |
566 | * Description : Get the Tx count. |
||
567 | * Input : bEpNum: Endpoint Number. |
||
568 | * Output : None. |
||
569 | * Return : Tx count value. |
||
1 | ingob | 570 | *******************************************************************************/ |
571 | u16 GetEPTxCount(u8 bEpNum) |
||
572 | { |
||
196 | killagreg | 573 | return(_GetEPTxCount(bEpNum)); |
1 | ingob | 574 | } |
196 | killagreg | 575 | |
1 | ingob | 576 | /******************************************************************************* |
196 | killagreg | 577 | * Function Name : GetEPRxCount. |
578 | * Description : Get the Rx count. |
||
579 | * Input : bEpNum: Endpoint Number. |
||
580 | * Output : None. |
||
581 | * Return : Rx count value. |
||
1 | ingob | 582 | *******************************************************************************/ |
583 | u16 GetEPRxCount(u8 bEpNum) |
||
584 | { |
||
196 | killagreg | 585 | return(_GetEPRxCount(bEpNum)); |
1 | ingob | 586 | } |
196 | killagreg | 587 | |
1 | ingob | 588 | /******************************************************************************* |
196 | killagreg | 589 | * Function Name : SetEPDblBuffAddr. |
590 | * Description : Set the addresses of the buffer 0 and 1. |
||
591 | * Input : bEpNum: Endpoint Number. |
||
592 | * wBuf0Addr: new address of buffer 0. |
||
593 | * wBuf1Addr: new address of buffer 1. |
||
594 | * Output : None. |
||
595 | * Return : None. |
||
1 | ingob | 596 | *******************************************************************************/ |
597 | void SetEPDblBuffAddr(u8 bEpNum, u16 wBuf0Addr, u16 wBuf1Addr) |
||
598 | { |
||
196 | killagreg | 599 | _SetEPDblBuffAddr(bEpNum, wBuf0Addr, wBuf1Addr); |
1 | ingob | 600 | } |
196 | killagreg | 601 | |
1 | ingob | 602 | /******************************************************************************* |
196 | killagreg | 603 | * Function Name : SetEPDblBuf0Addr. |
604 | * Description : Set the Buffer 1 address. |
||
605 | * Input : bEpNum: Endpoint Number. |
||
606 | * wBuf0Addr: new address. |
||
607 | * Output : None. |
||
608 | * Return : None. |
||
1 | ingob | 609 | *******************************************************************************/ |
196 | killagreg | 610 | void SetEPDblBuf0Addr(u8 bEpNum, u16 wBuf0Addr) |
1 | ingob | 611 | { |
196 | killagreg | 612 | _SetEPDblBuf0Addr(bEpNum, wBuf0Addr); |
1 | ingob | 613 | } |
196 | killagreg | 614 | |
1 | ingob | 615 | /******************************************************************************* |
196 | killagreg | 616 | * Function Name : SetEPDblBuf1Addr. |
617 | * Description : Set the Buffer 1 address. |
||
618 | * Input : bEpNum: Endpoint Number. |
||
619 | * wBuf1Addr: new address. |
||
620 | * Output : None. |
||
621 | * Return : None. |
||
1 | ingob | 622 | *******************************************************************************/ |
196 | killagreg | 623 | void SetEPDblBuf1Addr(u8 bEpNum, u16 wBuf1Addr) |
1 | ingob | 624 | { |
196 | killagreg | 625 | _SetEPDblBuf1Addr(bEpNum, wBuf1Addr); |
1 | ingob | 626 | } |
196 | killagreg | 627 | |
1 | ingob | 628 | /******************************************************************************* |
196 | killagreg | 629 | * Function Name : GetEPDblBuf0Addr. |
630 | * Description : Returns the address of the Buffer 0. |
||
631 | * Input : bEpNum: Endpoint Number. |
||
632 | * Output : None. |
||
633 | * Return : None. |
||
1 | ingob | 634 | *******************************************************************************/ |
635 | u16 GetEPDblBuf0Addr(u8 bEpNum) |
||
636 | { |
||
196 | killagreg | 637 | return(_GetEPDblBuf0Addr(bEpNum)); |
1 | ingob | 638 | } |
196 | killagreg | 639 | |
1 | ingob | 640 | /******************************************************************************* |
641 | * Function Name : GetEPDblBuf1Addr |
||
196 | killagreg | 642 | * Description : Returns the address of the Buffer 1. |
643 | * Input : bEpNum: Endpoint Number. |
||
644 | * Output : None. |
||
645 | * Return : Address of the Buffer 1. |
||
1 | ingob | 646 | *******************************************************************************/ |
647 | u16 GetEPDblBuf1Addr(u8 bEpNum) |
||
648 | { |
||
196 | killagreg | 649 | return(_GetEPDblBuf1Addr(bEpNum)); |
1 | ingob | 650 | } |
196 | killagreg | 651 | |
1 | ingob | 652 | /******************************************************************************* |
196 | killagreg | 653 | * Function Name : SetEPDblBuffCount. |
654 | * Description : Set the number of bytes for a double Buffer endpoint. |
||
655 | * Input : bEpNum,bDir, wCount. |
||
656 | * Output : None. |
||
657 | * Return : None. |
||
1 | ingob | 658 | *******************************************************************************/ |
659 | void SetEPDblBuffCount(u8 bEpNum, u8 bDir, u16 wCount) |
||
660 | { |
||
196 | killagreg | 661 | #ifdef STR7xx /*STR7xx family */ |
662 | _SetEPDblBuffCount(bEpNum, bDir, wCount); |
||
663 | #endif |
||
664 | |||
665 | #ifdef STR91x /*STR91x family*/ |
||
666 | SetEPDblBuf0Count(bEpNum, bDir, wCount); |
||
667 | SetEPDblBuf1Count(bEpNum, bDir, wCount); |
||
668 | #endif |
||
1 | ingob | 669 | } |
196 | killagreg | 670 | |
1 | ingob | 671 | /******************************************************************************* |
196 | killagreg | 672 | * Function Name : SetEPDblBuf0Count. |
673 | * Description : Set the number of bytes in the buffer 0 of a double Buffer |
||
674 | * endpoint. |
||
675 | * Input : bEpNum, bDir, wCount. |
||
676 | * Output : None. |
||
677 | * Return : None. |
||
1 | ingob | 678 | *******************************************************************************/ |
196 | killagreg | 679 | void SetEPDblBuf0Count(u8 bEpNum, u8 bDir, u16 wCount) |
1 | ingob | 680 | { |
196 | killagreg | 681 | #ifdef STR7xx /*STR7xx family */ |
682 | _SetEPDblBuf0Count(bEpNum, bDir, wCount); |
||
683 | #endif |
||
1 | ingob | 684 | |
196 | killagreg | 685 | #ifdef STR91x /*STR91x family*/ |
686 | u32 BLsize = 0; |
||
687 | u32 Blocks; |
||
688 | if (bDir == EP_DBUF_IN) |
||
689 | { |
||
690 | /* IN double bufferd endpoint */ |
||
691 | SetEPTxCount(bEpNum, wCount); |
||
692 | } |
||
693 | else if (bDir == EP_DBUF_OUT) |
||
694 | { |
||
695 | /* OUT double bufferd endpoint */ |
||
696 | |||
697 | if (wCount < 64) |
||
698 | { |
||
699 | Blocks = wCount >> 1; |
||
700 | } |
||
701 | else |
||
702 | { |
||
703 | BLsize = 0x8000; |
||
704 | Blocks = wCount >> 6; |
||
705 | } |
||
706 | *_pEPBufCount(bEpNum) &= ~0x8000; |
||
707 | *_pEPBufCount(bEpNum) |= BLsize; |
||
708 | *_pEPBufCount(bEpNum) &= ~0x7C00; |
||
709 | *_pEPBufCount(bEpNum) |= Blocks << 10; |
||
710 | *_pEPBufCount(bEpNum) &= 0xFFFFFC00; |
||
711 | } |
||
712 | #endif |
||
1 | ingob | 713 | } |
196 | killagreg | 714 | |
1 | ingob | 715 | /******************************************************************************* |
196 | killagreg | 716 | * Function Name : SetEPDblBuf1Count. |
717 | * Description : Set the number of bytes in the buffer 0 of a double Buffer |
||
718 | * endpoint. |
||
719 | * Input : bEpNum, bDir, wCount. |
||
720 | * Output : None. |
||
721 | * Return : None. |
||
1 | ingob | 722 | *******************************************************************************/ |
196 | killagreg | 723 | void SetEPDblBuf1Count(u8 bEpNum, u8 bDir, u16 wCount) |
1 | ingob | 724 | { |
196 | killagreg | 725 | #ifdef STR7xx /*STR7xx family */ |
726 | _SetEPDblBuf1Count(bEpNum, bDir, wCount); |
||
727 | #endif |
||
728 | |||
729 | #ifdef STR91x /*STR91x family*/ |
||
730 | if (bDir == EP_DBUF_IN) |
||
731 | /* IN double buffered endpoint */ |
||
732 | { |
||
733 | *_pEPBufCount(bEpNum) &= 0x000FFFF; |
||
734 | *_pEPBufCount(bEpNum) |= (wCount << 16); |
||
735 | } |
||
736 | else if (bDir == EP_DBUF_OUT) |
||
737 | { |
||
738 | /* OUT double buffered endpoint */ |
||
739 | _SetEPRxCount(bEpNum, wCount); |
||
740 | } |
||
741 | #endif |
||
1 | ingob | 742 | } |
196 | killagreg | 743 | |
1 | ingob | 744 | /******************************************************************************* |
196 | killagreg | 745 | * Function Name : GetEPDblBuf0Count. |
746 | * Description : Returns the number of byte received in the buffer 0 of a |
||
747 | * double Buffer endpoint. |
||
748 | * Input : bEpNum: Endpoint Number. |
||
749 | * Output : None. |
||
750 | * Return : Endpoint Buffer 0 count. |
||
1 | ingob | 751 | *******************************************************************************/ |
752 | u16 GetEPDblBuf0Count(u8 bEpNum) |
||
753 | { |
||
196 | killagreg | 754 | return(_GetEPDblBuf0Count(bEpNum)); |
1 | ingob | 755 | } |
196 | killagreg | 756 | |
1 | ingob | 757 | /******************************************************************************* |
758 | * Function Name : GetEPDblBuf1Count |
||
196 | killagreg | 759 | * Description : Returns the number of data received in the buffer 1 of a |
760 | * double Buffer endpoint. |
||
761 | * Input : bEpNum: Endpoint Number. |
||
762 | * Output : None. |
||
763 | * Return : Endpoint Buffer 1 count. |
||
1 | ingob | 764 | *******************************************************************************/ |
765 | u16 GetEPDblBuf1Count(u8 bEpNum) |
||
766 | { |
||
196 | killagreg | 767 | return(_GetEPDblBuf1Count(bEpNum)); |
1 | ingob | 768 | } |
769 | #ifdef STR7xx /*STR7xx family */ |
||
196 | killagreg | 770 | |
1 | ingob | 771 | /******************************************************************************* |
196 | killagreg | 772 | * Function Name : GetEPDblBufDir. |
773 | * Description : gets direction of the double buffered endpoint. |
||
774 | * Input : bEpNum: Endpoint Number. |
||
775 | * Output : None. |
||
776 | * Return : EP_DBUF_OUT, EP_DBUF_IN, |
||
777 | * EP_DBUF_ERR if the endpoint counter not yet programmed. |
||
1 | ingob | 778 | *******************************************************************************/ |
196 | killagreg | 779 | EP_DBUF_DIR GetEPDblBufDir(u8 bEpNum) |
780 | { |
||
781 | if ((u16)(*_pEPRxCount(bEpNum) & 0xFC00) != 0) |
||
782 | { |
||
783 | return(EP_DBUF_OUT); |
||
784 | } |
||
785 | else if (((u16)(*_pEPTxCount(bEpNum)) & 0x03FF) != 0) |
||
786 | { |
||
787 | return(EP_DBUF_IN); |
||
788 | } |
||
789 | else |
||
790 | { |
||
791 | return(EP_DBUF_ERR); |
||
792 | } |
||
1 | ingob | 793 | } |
794 | #endif |
||
196 | killagreg | 795 | |
1 | ingob | 796 | /******************************************************************************* |
196 | killagreg | 797 | * Function Name : FreeUserBuffer. |
798 | * Description : free buffer used from the application realizing it to the |
||
799 | * line toggles bit SW_BUF in the double buffered endpoint |
||
800 | * register. |
||
801 | * Input : bEpNum, bDir. |
||
802 | * Output : None. |
||
803 | * Return : None. |
||
1 | ingob | 804 | *******************************************************************************/ |
805 | void FreeUserBuffer(u8 bEpNum, u8 bDir) |
||
806 | { |
||
196 | killagreg | 807 | if (bDir == EP_DBUF_OUT) |
808 | { /* OUT double buffered endpoint */ |
||
1 | ingob | 809 | _ToggleDTOG_TX(bEpNum); |
196 | killagreg | 810 | } |
811 | else if (bDir == EP_DBUF_IN) |
||
812 | { /* IN double buffered endpoint */ |
||
1 | ingob | 813 | _ToggleDTOG_RX(bEpNum); |
196 | killagreg | 814 | } |
1 | ingob | 815 | } |
816 | |||
817 | /******************************************************************************* |
||
818 | * Function Name : ToWord |
||
196 | killagreg | 819 | * Description : merge two byte in a word. |
820 | * Input : bh: byte high, bl: bytes low. |
||
821 | * Output : None. |
||
822 | * Return : resulted word. |
||
1 | ingob | 823 | *******************************************************************************/ |
824 | u16 ToWord(u8 bh, u8 bl) |
||
825 | { |
||
196 | killagreg | 826 | u16 wRet; |
827 | wRet = (u16)bl | ((u16)bh << 8); |
||
828 | return(wRet); |
||
1 | ingob | 829 | } |
196 | killagreg | 830 | |
1 | ingob | 831 | /******************************************************************************* |
832 | * Function Name : ByteSwap |
||
196 | killagreg | 833 | * Description : Swap two byte in a word. |
834 | * Input : wSwW: word to Swap. |
||
835 | * Output : None. |
||
836 | * Return : resulted word. |
||
1 | ingob | 837 | *******************************************************************************/ |
838 | u16 ByteSwap(u16 wSwW) |
||
839 | { |
||
196 | killagreg | 840 | u8 bTemp; |
841 | u16 wRet; |
||
842 | bTemp = (u8)(wSwW & 0xff); |
||
843 | wRet = (wSwW >> 8) | ((u16)bTemp << 8); |
||
844 | return(wRet); |
||
1 | ingob | 845 | } |
846 | |||
847 | /* DMA Functions only for STR91x */ |
||
848 | #ifdef STR91x /*str91x family*/ |
||
849 | /******************************************************************************* |
||
196 | killagreg | 850 | * Function Name : SetDMAburstTxSize. |
851 | * Description : Configure the Burst Size for a Tx Endpoint. |
||
852 | * Input : DestBsize: Destination Burst Size. |
||
853 | * Output : None. |
||
854 | * Return : None. |
||
1 | ingob | 855 | *******************************************************************************/ |
856 | void SetDMABurstTxSize(u8 DestBsize) |
||
857 | { |
||
196 | killagreg | 858 | *DMABSIZE &= ~0xEF; |
859 | *DMABSIZE = (DestBsize << 4); |
||
1 | ingob | 860 | } |
861 | |||
862 | /******************************************************************************* |
||
196 | killagreg | 863 | * Function Name : SetDMABurstRxSize. |
864 | * Description : Configure the Burst Size for a Rx Endpoint. |
||
865 | * Input : SrcBsize: Source Burst. |
||
866 | * Output : None. |
||
867 | * Return : None. |
||
1 | ingob | 868 | *******************************************************************************/ |
869 | void SetDMABurstRxSize(u8 SrcBsize) |
||
870 | { |
||
196 | killagreg | 871 | *DMABSIZE &= ~0x7; |
872 | *DMABSIZE = SrcBsize; |
||
1 | ingob | 873 | } |
874 | |||
875 | /******************************************************************************* |
||
196 | killagreg | 876 | * Function Name : DMAUnlinkedModeTxConfig. |
877 | * Description : Configure a Tx Endpoint to trigger TX Unlinked DMA request. |
||
1 | ingob | 878 | * Note : Up to three endpoints could be configured to trigger DMA |
196 | killagreg | 879 | request, an index[0:2] must be associated to an endpoint. |
880 | * Input : -bEpNum: endpoint number[0:9]. |
||
881 | * -index: 0,1 or 2. |
||
882 | * Output : None. |
||
883 | * Return : None. |
||
1 | ingob | 884 | *******************************************************************************/ |
196 | killagreg | 885 | void DMAUnlinkedModeTxConfig(u8 bEpNum , u8 index) |
1 | ingob | 886 | { |
196 | killagreg | 887 | *DMACR2 &= ~(0x0F << (4 * index)); |
888 | *DMACR2 |= bEpNum << (4 * index); |
||
1 | ingob | 889 | } |
890 | |||
891 | /******************************************************************************* |
||
196 | killagreg | 892 | * Function Name : DMAUnlinkedModeTxEnable. |
893 | * Description : Enable a Tx endpoint to trigger Tx DMA request. |
||
1 | ingob | 894 | * Input : -index :0,1 or 2 = index associated to endpoint in function |
196 | killagreg | 895 | * "DMAUnlinkedModeTxConfig". |
896 | * Output : None. |
||
897 | * Return : None. |
||
1 | ingob | 898 | *******************************************************************************/ |
899 | void DMAUnlinkedModeTxEnable(u8 index) |
||
900 | { |
||
196 | killagreg | 901 | *DMACR3 &= ~0x01; /*DMA Tx linked mode disabled*/ |
902 | *DMACR2 &= ~0x3000; |
||
903 | *DMACR2 |= (index + 1) << 12; |
||
1 | ingob | 904 | } |
196 | killagreg | 905 | |
1 | ingob | 906 | /******************************************************************************* |
196 | killagreg | 907 | * Function Name : DMAUnlinkedModeTxDisable. |
908 | * Description : Enable a Tx endpoint to trigger Tx DMA request. |
||
1 | ingob | 909 | * Input : index :0,1 or 2 = index associated to endpoint in function |
196 | killagreg | 910 | * "DMAUnlinkedModeTxConfig". |
911 | * Output : None. |
||
912 | * Return : None. |
||
913 | *******************************************************************************/ |
||
1 | ingob | 914 | void DMAUnlinkedModeTxDisable(u8 index) |
915 | { |
||
196 | killagreg | 916 | *DMACR2 &= ~0x3000; |
1 | ingob | 917 | } |
918 | |||
919 | /******************************************************************************* |
||
196 | killagreg | 920 | * Function Name : DMAUnlinkedModeRxEnable. |
921 | * Description : Enable a Rx Endpoint to trigger Rx DMA. |
||
922 | * Input : bEpNum: endpoint number[0:9]. |
||
923 | * Output : None. |
||
924 | * Return : None. |
||
1 | ingob | 925 | *******************************************************************************/ |
926 | void DMAUnlinkedModeRxEnable(u8 bEpNum) |
||
927 | { |
||
196 | killagreg | 928 | *DMACR3 &= ~0x80; /*DMA Rx linked mode disabled*/ |
929 | *DMACR1 |= (0x1 << bEpNum); |
||
1 | ingob | 930 | } |
931 | |||
932 | /******************************************************************************* |
||
196 | killagreg | 933 | * Function Name : DMAUnlinkedModeRxDisable. |
934 | * Description : Disable a Rx Endpoint to trigger Rx DMA. |
||
935 | * Input : bEpNum: endpoint number[0:9]. |
||
936 | * Output : None. |
||
937 | * Return : None. |
||
1 | ingob | 938 | *******************************************************************************/ |
939 | void DMAUnlinkedModeRxDisable(u8 bEpNum) |
||
940 | { |
||
196 | killagreg | 941 | *DMACR1 &= ~(0x1 << bEpNum); |
1 | ingob | 942 | } |
943 | |||
944 | /******************************************************************************* |
||
196 | killagreg | 945 | * Function Name : DMALinkedModeRxConfig. |
946 | * Description : Configure a Rx endpoint to trigger DMA linked request. |
||
947 | * Input : bEpNum: endpoint number[0:9]. |
||
948 | * Output : None. |
||
949 | * Return : None. |
||
1 | ingob | 950 | *******************************************************************************/ |
951 | void DMALinkedModeRxConfig(u8 bEpNum) |
||
952 | { |
||
196 | killagreg | 953 | *DMACR3 &= ~0x1E00; |
954 | *DMACR3 |= bEpNum << 9; |
||
1 | ingob | 955 | } |
956 | |||
957 | /******************************************************************************* |
||
196 | killagreg | 958 | * Function Name : DMALinkedModeTxConfig. |
959 | * Description : Configure a Tx endpoint to trigger DMA linked request. |
||
960 | * Input : bEpNum: endpoint number[0:9]. |
||
961 | * Output : None. |
||
962 | * Return : None. |
||
1 | ingob | 963 | *******************************************************************************/ |
964 | void DMALinkedModeTxConfig(u8 bEpNum) |
||
965 | { |
||
196 | killagreg | 966 | *DMACR3 &= ~0x1E; |
967 | *DMACR3 |= bEpNum << 1; |
||
1 | ingob | 968 | } |
969 | |||
970 | /******************************************************************************* |
||
196 | killagreg | 971 | * Function Name : DMALinkedModeRxEnable. |
972 | * Description : Enable the DMA Linked Rx mode. |
||
973 | * Input : None. |
||
974 | * Output : None. |
||
975 | * Return : None. |
||
1 | ingob | 976 | *******************************************************************************/ |
977 | void DMALinkedModeRxEnable(void) |
||
978 | { |
||
196 | killagreg | 979 | *DMACR3 |= 0x100; |
980 | *DMACR3 |= 0x2000; |
||
1 | ingob | 981 | } |
982 | |||
983 | /******************************************************************************* |
||
196 | killagreg | 984 | * Function Name : DMALinkedModeTxEnable. |
985 | * Description : Enable the DMA Linked Tx mode. |
||
986 | * Input : None. |
||
987 | * Output : None. |
||
988 | * Return : None. |
||
1 | ingob | 989 | *******************************************************************************/ |
990 | void DMALinkedModeTxEnable(void) |
||
991 | { |
||
196 | killagreg | 992 | *DMACR3 |= 0x1; |
993 | *DMACR3 |= 0x20; |
||
1 | ingob | 994 | } |
995 | /******************************************************************************* |
||
196 | killagreg | 996 | * Function Name : DMALinkedModeRxDisable. |
997 | * Description : Disable the DMA Linked Rx mode. |
||
998 | * Input : None. |
||
999 | * Output : None. |
||
1000 | * Return : None. |
||
1 | ingob | 1001 | *******************************************************************************/ |
1002 | void DMALinkedModeRxDisable(void) |
||
1003 | { |
||
196 | killagreg | 1004 | *DMACR3 &= ~0x100; |
1005 | *DMACR3 &= ~0x2000; |
||
1 | ingob | 1006 | } |
1007 | |||
1008 | /******************************************************************************* |
||
196 | killagreg | 1009 | * Function Name : DMALinkedModeTxDisable. |
1010 | * Description : Disable the DMA Linked Tx mode. |
||
1011 | * Input : None. |
||
1012 | * Output : None. |
||
1013 | * Return : None. |
||
1 | ingob | 1014 | *******************************************************************************/ |
1015 | void DMALinkedModeTxDisable(void) |
||
1016 | { |
||
196 | killagreg | 1017 | *DMACR3 &= ~0x1; |
1018 | *DMACR3 &= ~0x20; |
||
1 | ingob | 1019 | } |
1020 | /******************************************************************************* |
||
196 | killagreg | 1021 | * Function Name : USB_DMASynchEnable. |
1022 | * Description : Enable the Synchronization Logic. |
||
1023 | * Input : TRUE or FALSE. |
||
1024 | * Output : None. |
||
1025 | * Return : None. |
||
1 | ingob | 1026 | *******************************************************************************/ |
1027 | void DMASynchEnable(void) |
||
1028 | { |
||
196 | killagreg | 1029 | *DMACR3 |= 0x40; |
1 | ingob | 1030 | } |
1031 | |||
1032 | /******************************************************************************* |
||
196 | killagreg | 1033 | * Function Name : USB_DMASynchDisable. |
1034 | * Description : Disable the Synchronization Logic. |
||
1035 | * Input : TRUE or FALSE. |
||
1036 | * Output : None. |
||
1037 | * Return : None. |
||
1 | ingob | 1038 | *******************************************************************************/ |
1039 | void DMASynchDisable(void) |
||
1040 | { |
||
196 | killagreg | 1041 | *DMACR3 &= ~0x40; |
1 | ingob | 1042 | } |
1043 | |||
1044 | /******************************************************************************* |
||
196 | killagreg | 1045 | * Function Name : SetDMALLITxLength. |
1046 | * Description : Set the DMA LLI Tx length. |
||
1047 | * Input : length. |
||
1048 | * Output : None. |
||
1049 | * Return : None. |
||
1 | ingob | 1050 | *******************************************************************************/ |
1051 | void SetDMALLITxLength(u8 length) |
||
1052 | { |
||
196 | killagreg | 1053 | *DMALLI &= ~0xFF; |
1054 | *DMALLI |= length; |
||
1 | ingob | 1055 | } |
1056 | |||
1057 | /******************************************************************************* |
||
196 | killagreg | 1058 | * Function Name : SetDMALLIRxLength. |
1059 | * Description : Set the DMA LLI Rx length. |
||
1060 | * Input : length. |
||
1061 | * Output : None. |
||
1062 | * Return : None. |
||
1 | ingob | 1063 | *******************************************************************************/ |
1064 | void SetDMALLIRxLength(u8 length ) |
||
1065 | { |
||
196 | killagreg | 1066 | *DMALLI &= ~0xFF00; |
1067 | *DMALLI |= length << 8; |
||
1 | ingob | 1068 | } |
1069 | |||
1070 | /******************************************************************************* |
||
196 | killagreg | 1071 | * Function Name : SetDMALLIRxPacketNum. |
1072 | * Description : Set the LLI_RX_NPACKETS field in USB_DMABSIZE register. |
||
1073 | * Input : None. |
||
1074 | * Output : None. |
||
1075 | * Return : None. |
||
1 | ingob | 1076 | *******************************************************************************/ |
1077 | void SetDMALLIRxPacketNum(u8 PacketNum) |
||
1078 | { |
||
196 | killagreg | 1079 | *DMABSIZE &= 0xFF; |
1080 | *DMABSIZE |= (PacketNum << 8); |
||
1 | ingob | 1081 | } |
1082 | |||
1083 | /******************************************************************************* |
||
196 | killagreg | 1084 | * Function Name : GetDMALLIPacketNum. |
1085 | * Description : gets the LLI_RX_NPACKETS field value. |
||
1086 | * Input : None. |
||
1087 | * Output : None. |
||
1088 | * Return : LLI_RX_NPACKETS field value. |
||
1 | ingob | 1089 | *******************************************************************************/ |
1090 | u8 GetDMALLIRxPacketNum(void) |
||
1091 | { |
||
196 | killagreg | 1092 | return((u8)(*DMABSIZE & 0xFF00) >> 8); |
1 | ingob | 1093 | } |
1094 | #endif |
||
196 | killagreg | 1095 | /******************* (C) COPYRIGHT 2008 STMicroelectronics *****END OF FILE****/ |
1 | ingob | 1096 |