Subversion Repositories NaviCtrl

Rev

Rev 196 | 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