summaryrefslogtreecommitdiffstats
path: root/fpga/xilinx/programmer/dependencies/libxsvf/xsvftool-xpcu.src/fx2regs.h
blob: f0d7f5b015b03e454e12f786a7dd33090702c4a3 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
// **** Auto-generated using genfx2hrd.sh from CY3684 EZ USB FX2LP Development Kit headers
//-----------------------------------------------------------------------------
//   File:      FX2regs.h
//   Contents:   EZ-USB FX2/FX2LP/FX1 register declarations and bit mask definitions.
//
// $Archive: /USB/Target/Inc/fx2regs.h $
// $Date: 4/13/05 4:29p $
// $Revision: 42 $
//
//
//   Copyright (c) 2005 Cypress Semiconductor, All rights reserved
//-----------------------------------------------------------------------------

#ifndef FX2REGS_H   /* Header Sentry */
#define FX2REGS_H

//-----------------------------------------------------------------------------
// FX2/FX2LP/FX1 Related Register Assignments
//-----------------------------------------------------------------------------

// The Ez-USB FX2/FX2LP/FX1 registers are defined here. We use fx2regs.h for register 
// address allocation by using "#define ALLOCATE_EXTERN". 
// When using "#define ALLOCATE_EXTERN", you get (for instance): 
// xdata volatile BYTE OUT7BUF[64]   _at_   0x7B40;
// Such lines are created from FX2.h by using the preprocessor. 
// Incidently, these lines will not generate any space in the resulting hex 
// file; they just bind the symbols to the addresses for compilation. 
// You just need to put "#define ALLOCATE_EXTERN" in your main program file; 
// i.e. fw.c or a stand-alone C source file. 
// Without "#define ALLOCATE_EXTERN", you just get the external reference: 
// extern xdata volatile BYTE OUT7BUF[64]   ;//   0x7B40;
// This uses the concatenation operator "##" to insert a comment "//" 
// to cut off the end of the line, "_at_   0x7B40;", which is not wanted.

#ifdef ALLOCATE_EXTERN
#define EXTERN
#define _AT_ _at_
#else
#define EXTERN extern
#define _AT_ ;/ ## /
#endif

xdata at 0xE400 volatile BYTE GPIF_WAVE_DATA;    
xdata at 0xE480 volatile BYTE RES_WAVEDATA_END;  

// General Configuration

xdata at 0xE600 volatile BYTE CPUCS;               // Control & Status
xdata at 0xE601 volatile BYTE IFCONFIG;            // Interface Configuration
xdata at 0xE602 volatile BYTE PINFLAGSAB;          // FIFO FLAGA and FLAGB Assignments
xdata at 0xE603 volatile BYTE PINFLAGSCD;          // FIFO FLAGC and FLAGD Assignments
xdata at 0xE604 volatile BYTE FIFORESET;           // Restore FIFOS to default state
xdata at 0xE605 volatile BYTE BREAKPT;             // Breakpoint
xdata at 0xE606 volatile BYTE BPADDRH;             // Breakpoint Address H
xdata at 0xE607 volatile BYTE BPADDRL;             // Breakpoint Address L
xdata at 0xE608 volatile BYTE UART230;             // 230 Kbaud clock for T0,T1,T2
xdata at 0xE609 volatile BYTE FIFOPINPOLAR;        // FIFO polarities
xdata at 0xE60A volatile BYTE REVID;               // Chip Revision
xdata at 0xE60B volatile BYTE REVCTL;              // Chip Revision Control

// Endpoint Configuration

xdata at 0xE610 volatile BYTE EP1OUTCFG;           // Endpoint 1-OUT Configuration
xdata at 0xE611 volatile BYTE EP1INCFG;            // Endpoint 1-IN Configuration
xdata at 0xE612 volatile BYTE EP2CFG;              // Endpoint 2 Configuration
xdata at 0xE613 volatile BYTE EP4CFG;              // Endpoint 4 Configuration
xdata at 0xE614 volatile BYTE EP6CFG;              // Endpoint 6 Configuration
xdata at 0xE615 volatile BYTE EP8CFG;              // Endpoint 8 Configuration
xdata at 0xE618 volatile BYTE EP2FIFOCFG;          // Endpoint 2 FIFO configuration
xdata at 0xE619 volatile BYTE EP4FIFOCFG;          // Endpoint 4 FIFO configuration
xdata at 0xE61A volatile BYTE EP6FIFOCFG;          // Endpoint 6 FIFO configuration
xdata at 0xE61B volatile BYTE EP8FIFOCFG;          // Endpoint 8 FIFO configuration
xdata at 0xE620 volatile BYTE EP2AUTOINLENH;       // Endpoint 2 Packet Length H (IN only)
xdata at 0xE621 volatile BYTE EP2AUTOINLENL;       // Endpoint 2 Packet Length L (IN only)
xdata at 0xE622 volatile BYTE EP4AUTOINLENH;       // Endpoint 4 Packet Length H (IN only)
xdata at 0xE623 volatile BYTE EP4AUTOINLENL;       // Endpoint 4 Packet Length L (IN only)
xdata at 0xE624 volatile BYTE EP6AUTOINLENH;       // Endpoint 6 Packet Length H (IN only)
xdata at 0xE625 volatile BYTE EP6AUTOINLENL;       // Endpoint 6 Packet Length L (IN only)
xdata at 0xE626 volatile BYTE EP8AUTOINLENH;       // Endpoint 8 Packet Length H (IN only)
xdata at 0xE627 volatile BYTE EP8AUTOINLENL;       // Endpoint 8 Packet Length L (IN only)
xdata at 0xE630 volatile BYTE EP2FIFOPFH;          // EP2 Programmable Flag trigger H
xdata at 0xE631 volatile BYTE EP2FIFOPFL;          // EP2 Programmable Flag trigger L
xdata at 0xE632 volatile BYTE EP4FIFOPFH;          // EP4 Programmable Flag trigger H
xdata at 0xE633 volatile BYTE EP4FIFOPFL;          // EP4 Programmable Flag trigger L
xdata at 0xE634 volatile BYTE EP6FIFOPFH;          // EP6 Programmable Flag trigger H
xdata at 0xE635 volatile BYTE EP6FIFOPFL;          // EP6 Programmable Flag trigger L
xdata at 0xE636 volatile BYTE EP8FIFOPFH;          // EP8 Programmable Flag trigger H
xdata at 0xE637 volatile BYTE EP8FIFOPFL;          // EP8 Programmable Flag trigger L
xdata at 0xE640 volatile BYTE EP2ISOINPKTS;        // EP2 (if ISO) IN Packets per frame (1-3)
xdata at 0xE641 volatile BYTE EP4ISOINPKTS;        // EP4 (if ISO) IN Packets per frame (1-3)
xdata at 0xE642 volatile BYTE EP6ISOINPKTS;        // EP6 (if ISO) IN Packets per frame (1-3)
xdata at 0xE643 volatile BYTE EP8ISOINPKTS;        // EP8 (if ISO) IN Packets per frame (1-3)
xdata at 0xE648 volatile BYTE INPKTEND;            // Force IN Packet End
xdata at 0xE649 volatile BYTE OUTPKTEND;           // Force OUT Packet End

// Interrupts

xdata at 0xE650 volatile BYTE EP2FIFOIE;           // Endpoint 2 Flag Interrupt Enable
xdata at 0xE651 volatile BYTE EP2FIFOIRQ;          // Endpoint 2 Flag Interrupt Request
xdata at 0xE652 volatile BYTE EP4FIFOIE;           // Endpoint 4 Flag Interrupt Enable
xdata at 0xE653 volatile BYTE EP4FIFOIRQ;          // Endpoint 4 Flag Interrupt Request
xdata at 0xE654 volatile BYTE EP6FIFOIE;           // Endpoint 6 Flag Interrupt Enable
xdata at 0xE655 volatile BYTE EP6FIFOIRQ;          // Endpoint 6 Flag Interrupt Request
xdata at 0xE656 volatile BYTE EP8FIFOIE;           // Endpoint 8 Flag Interrupt Enable
xdata at 0xE657 volatile BYTE EP8FIFOIRQ;          // Endpoint 8 Flag Interrupt Request
xdata at 0xE658 volatile BYTE IBNIE;               // IN-BULK-NAK Interrupt Enable
xdata at 0xE659 volatile BYTE IBNIRQ;              // IN-BULK-NAK interrupt Request
xdata at 0xE65A volatile BYTE NAKIE;               // Endpoint Ping NAK interrupt Enable
xdata at 0xE65B volatile BYTE NAKIRQ;              // Endpoint Ping NAK interrupt Request
xdata at 0xE65C volatile BYTE USBIE;               // USB Int Enables
xdata at 0xE65D volatile BYTE USBIRQ;              // USB Interrupt Requests
xdata at 0xE65E volatile BYTE EPIE;                // Endpoint Interrupt Enables
xdata at 0xE65F volatile BYTE EPIRQ;               // Endpoint Interrupt Requests
xdata at 0xE660 volatile BYTE GPIFIE;              // GPIF Interrupt Enable
xdata at 0xE661 volatile BYTE GPIFIRQ;             // GPIF Interrupt Request
xdata at 0xE662 volatile BYTE USBERRIE;            // USB Error Interrupt Enables
xdata at 0xE663 volatile BYTE USBERRIRQ;           // USB Error Interrupt Requests
xdata at 0xE664 volatile BYTE ERRCNTLIM;           // USB Error counter and limit
xdata at 0xE665 volatile BYTE CLRERRCNT;           // Clear Error Counter EC[3..0]
xdata at 0xE666 volatile BYTE INT2IVEC;            // Interupt 2 (USB) Autovector
xdata at 0xE667 volatile BYTE INT4IVEC;            // Interupt 4 (FIFOS & GPIF) Autovector
xdata at 0xE668 volatile BYTE INTSETUP;            // Interrupt 2&4 Setup

// Input/Output

xdata at 0xE670 volatile BYTE PORTACFG;            // I/O PORTA Alternate Configuration
xdata at 0xE671 volatile BYTE PORTCCFG;            // I/O PORTC Alternate Configuration
xdata at 0xE672 volatile BYTE PORTECFG;            // I/O PORTE Alternate Configuration
xdata at 0xE678 volatile BYTE I2CS;                // Control & Status
xdata at 0xE679 volatile BYTE I2DAT;               // Data
xdata at 0xE67A volatile BYTE I2CTL;               // I2C Control
xdata at 0xE67B volatile BYTE XAUTODAT1;           // Autoptr1 MOVX access
xdata at 0xE67C volatile BYTE XAUTODAT2;           // Autoptr2 MOVX access

#define EXTAUTODAT1 XAUTODAT1
#define EXTAUTODAT2 XAUTODAT2

// USB Control

xdata at 0xE680 volatile BYTE USBCS;               // USB Control & Status
xdata at 0xE681 volatile BYTE SUSPEND;             // Put chip into suspend
xdata at 0xE682 volatile BYTE WAKEUPCS;            // Wakeup source and polarity
xdata at 0xE683 volatile BYTE TOGCTL;              // Toggle Control
xdata at 0xE684 volatile BYTE USBFRAMEH;           // USB Frame count H
xdata at 0xE685 volatile BYTE USBFRAMEL;           // USB Frame count L
xdata at 0xE686 volatile BYTE MICROFRAME;          // Microframe count, 0-7
xdata at 0xE687 volatile BYTE FNADDR;              // USB Function address

// Endpoints

xdata at 0xE68A volatile BYTE EP0BCH;              // Endpoint 0 Byte Count H
xdata at 0xE68B volatile BYTE EP0BCL;              // Endpoint 0 Byte Count L
xdata at 0xE68D volatile BYTE EP1OUTBC;            // Endpoint 1 OUT Byte Count
xdata at 0xE68F volatile BYTE EP1INBC;             // Endpoint 1 IN Byte Count
xdata at 0xE690 volatile BYTE EP2BCH;              // Endpoint 2 Byte Count H
xdata at 0xE691 volatile BYTE EP2BCL;              // Endpoint 2 Byte Count L
xdata at 0xE694 volatile BYTE EP4BCH;              // Endpoint 4 Byte Count H
xdata at 0xE695 volatile BYTE EP4BCL;              // Endpoint 4 Byte Count L
xdata at 0xE698 volatile BYTE EP6BCH;              // Endpoint 6 Byte Count H
xdata at 0xE699 volatile BYTE EP6BCL;              // Endpoint 6 Byte Count L
xdata at 0xE69C volatile BYTE EP8BCH;              // Endpoint 8 Byte Count H
xdata at 0xE69D volatile BYTE EP8BCL;              // Endpoint 8 Byte Count L
xdata at 0xE6A0 volatile BYTE EP0CS;               // Endpoint  Control and Status
xdata at 0xE6A1 volatile BYTE EP1OUTCS;            // Endpoint 1 OUT Control and Status
xdata at 0xE6A2 volatile BYTE EP1INCS;             // Endpoint 1 IN Control and Status
xdata at 0xE6A3 volatile BYTE EP2CS;               // Endpoint 2 Control and Status
xdata at 0xE6A4 volatile BYTE EP4CS;               // Endpoint 4 Control and Status
xdata at 0xE6A5 volatile BYTE EP6CS;               // Endpoint 6 Control and Status
xdata at 0xE6A6 volatile BYTE EP8CS;               // Endpoint 8 Control and Status
xdata at 0xE6A7 volatile BYTE EP2FIFOFLGS;         // Endpoint 2 Flags
xdata at 0xE6A8 volatile BYTE EP4FIFOFLGS;         // Endpoint 4 Flags
xdata at 0xE6A9 volatile BYTE EP6FIFOFLGS;         // Endpoint 6 Flags
xdata at 0xE6AA volatile BYTE EP8FIFOFLGS;         // Endpoint 8 Flags
xdata at 0xE6AB volatile BYTE EP2FIFOBCH;          // EP2 FIFO total byte count H
xdata at 0xE6AC volatile BYTE EP2FIFOBCL;          // EP2 FIFO total byte count L
xdata at 0xE6AD volatile BYTE EP4FIFOBCH;          // EP4 FIFO total byte count H
xdata at 0xE6AE volatile BYTE EP4FIFOBCL;          // EP4 FIFO total byte count L
xdata at 0xE6AF volatile BYTE EP6FIFOBCH;          // EP6 FIFO total byte count H
xdata at 0xE6B0 volatile BYTE EP6FIFOBCL;          // EP6 FIFO total byte count L
xdata at 0xE6B1 volatile BYTE EP8FIFOBCH;          // EP8 FIFO total byte count H
xdata at 0xE6B2 volatile BYTE EP8FIFOBCL;          // EP8 FIFO total byte count L
xdata at 0xE6B3 volatile BYTE SUDPTRH;             // Setup Data Pointer high address byte
xdata at 0xE6B4 volatile BYTE SUDPTRL;             // Setup Data Pointer low address byte
xdata at 0xE6B5 volatile BYTE SUDPTRCTL;           // Setup Data Pointer Auto Mode
xdata at 0xE6B8 volatile BYTE SETUPDAT[8];         // 8 bytes of SETUP data

// GPIF

xdata at 0xE6C0 volatile BYTE GPIFWFSELECT;        // Waveform Selector
xdata at 0xE6C1 volatile BYTE GPIFIDLECS;          // GPIF Done, GPIF IDLE drive mode
xdata at 0xE6C2 volatile BYTE GPIFIDLECTL;         // Inactive Bus, CTL states
xdata at 0xE6C3 volatile BYTE GPIFCTLCFG;          // CTL OUT pin drive
xdata at 0xE6C4 volatile BYTE GPIFADRH;            // GPIF Address H
xdata at 0xE6C5 volatile BYTE GPIFADRL;            // GPIF Address L

xdata at 0xE6CE volatile BYTE GPIFTCB3;            // GPIF Transaction Count Byte 3
xdata at 0xE6CF volatile BYTE GPIFTCB2;            // GPIF Transaction Count Byte 2
xdata at 0xE6D0 volatile BYTE GPIFTCB1;            // GPIF Transaction Count Byte 1
xdata at 0xE6D1 volatile BYTE GPIFTCB0;            // GPIF Transaction Count Byte 0

#define EP2GPIFTCH GPIFTCB1   // these are here for backwards compatibility
#define EP2GPIFTCL GPIFTCB0   // 
#define EP4GPIFTCH GPIFTCB1   // these are here for backwards compatibility
#define EP4GPIFTCL GPIFTCB0   // 
#define EP6GPIFTCH GPIFTCB1   // these are here for backwards compatibility
#define EP6GPIFTCL GPIFTCB0   // 
#define EP8GPIFTCH GPIFTCB1   // these are here for backwards compatibility
#define EP8GPIFTCL GPIFTCB0   // 

xdata at 0xE6D2 volatile BYTE EP2GPIFFLGSEL;       // EP2 GPIF Flag select
xdata at 0xE6D3 volatile BYTE EP2GPIFPFSTOP;       // Stop GPIF EP2 transaction on prog. flag
xdata at 0xE6D4 volatile BYTE EP2GPIFTRIG;         // EP2 FIFO Trigger
xdata at 0xE6DA volatile BYTE EP4GPIFFLGSEL;       // EP4 GPIF Flag select
xdata at 0xE6DB volatile BYTE EP4GPIFPFSTOP;       // Stop GPIF EP4 transaction on prog. flag
xdata at 0xE6DC volatile BYTE EP4GPIFTRIG;         // EP4 FIFO Trigger
xdata at 0xE6E2 volatile BYTE EP6GPIFFLGSEL;       // EP6 GPIF Flag select
xdata at 0xE6E3 volatile BYTE EP6GPIFPFSTOP;       // Stop GPIF EP6 transaction on prog. flag
xdata at 0xE6E4 volatile BYTE EP6GPIFTRIG;         // EP6 FIFO Trigger
xdata at 0xE6EA volatile BYTE EP8GPIFFLGSEL;       // EP8 GPIF Flag select
xdata at 0xE6EB volatile BYTE EP8GPIFPFSTOP;       // Stop GPIF EP8 transaction on prog. flag
xdata at 0xE6EC volatile BYTE EP8GPIFTRIG;         // EP8 FIFO Trigger
xdata at 0xE6F0 volatile BYTE XGPIFSGLDATH;        // GPIF Data H (16-bit mode only)
xdata at 0xE6F1 volatile BYTE XGPIFSGLDATLX;       // Read/Write GPIF Data L & trigger transac
xdata at 0xE6F2 volatile BYTE XGPIFSGLDATLNOX;     // Read GPIF Data L, no transac trigger
xdata at 0xE6F3 volatile BYTE GPIFREADYCFG;        // Internal RDY,Sync/Async, RDY5CFG
xdata at 0xE6F4 volatile BYTE GPIFREADYSTAT;       // RDY pin states
xdata at 0xE6F5 volatile BYTE GPIFABORT;           // Abort GPIF cycles

// UDMA

xdata at 0xE6C6 volatile BYTE FLOWSTATE;          //Defines GPIF flow state
xdata at 0xE6C7 volatile BYTE FLOWLOGIC;          //Defines flow/hold decision criteria
xdata at 0xE6C8 volatile BYTE FLOWEQ0CTL;         //CTL states during active flow state
xdata at 0xE6C9 volatile BYTE FLOWEQ1CTL;         //CTL states during hold flow state
xdata at 0xE6CA volatile BYTE FLOWHOLDOFF;       
xdata at 0xE6CB volatile BYTE FLOWSTB;            //CTL/RDY Signal to use as master data strobe 
xdata at 0xE6CC volatile BYTE FLOWSTBEDGE;        //Defines active master strobe edge
xdata at 0xE6CD volatile BYTE FLOWSTBHPERIOD;     //Half Period of output master strobe
xdata at 0xE60C volatile BYTE GPIFHOLDAMOUNT;     //Data delay shift 
xdata at 0xE67D volatile BYTE UDMACRCH;           //CRC Upper byte
xdata at 0xE67E volatile BYTE UDMACRCL;           //CRC Lower byte
xdata at 0xE67F volatile BYTE UDMACRCQUAL;        //UDMA In only, host terminated use only


// Debug/Test
// The following registers are for Cypress's internal testing purposes only.
// These registers are not documented in the datasheet or the Technical Reference
// Manual as they were not designed for end user application usage 
xdata at 0xE6F8 volatile BYTE DBUG;                // Debug
xdata at 0xE6F9 volatile BYTE TESTCFG;             // Test configuration
xdata at 0xE6FA volatile BYTE USBTEST;             // USB Test Modes
xdata at 0xE6FB volatile BYTE CT1;                 // Chirp Test--Override
xdata at 0xE6FC volatile BYTE CT2;                 // Chirp Test--FSM
xdata at 0xE6FD volatile BYTE CT3;                 // Chirp Test--Control Signals
xdata at 0xE6FE volatile BYTE CT4;                 // Chirp Test--Inputs

// Endpoint Buffers

xdata at 0xE740 volatile BYTE EP0BUF[64];          // EP0 IN-OUT buffer
xdata at 0xE780 volatile BYTE EP1OUTBUF[64];       // EP1-OUT buffer
xdata at 0xE7C0 volatile BYTE EP1INBUF[64];        // EP1-IN buffer
xdata at 0xF000 volatile BYTE EP2FIFOBUF[1024];    // 512/1024-byte EP2 buffer (IN or OUT)
xdata at 0xF400 volatile BYTE EP4FIFOBUF[1024];    // 512 byte EP4 buffer (IN or OUT)
xdata at 0xF800 volatile BYTE EP6FIFOBUF[1024];    // 512/1024-byte EP6 buffer (IN or OUT)
xdata at 0xFC00 volatile BYTE EP8FIFOBUF[1024];    // 512 byte EP8 buffer (IN or OUT)

// Error Correction Code (ECC) Registers (FX2LP/FX1 only)

xdata at 0xE628 volatile BYTE ECCCFG;              // ECC Configuration
xdata at 0xE629 volatile BYTE ECCRESET;            // ECC Reset
xdata at 0xE62A volatile BYTE ECC1B0;              // ECC1 Byte 0
xdata at 0xE62B volatile BYTE ECC1B1;              // ECC1 Byte 1
xdata at 0xE62C volatile BYTE ECC1B2;              // ECC1 Byte 2
xdata at 0xE62D volatile BYTE ECC2B0;              // ECC2 Byte 0
xdata at 0xE62E volatile BYTE ECC2B1;              // ECC2 Byte 1
xdata at 0xE62F volatile BYTE ECC2B2;              // ECC2 Byte 2

// Feature Registers  (FX2LP/FX1 only)
xdata at 0xE50D volatile BYTE GPCR2;               // Chip Features

#undef EXTERN
#undef _AT_

/*-----------------------------------------------------------------------------
   Special Function Registers (SFRs)
   The byte registers and bits defined in the following list are based
   on the Synopsis definition of the 8051 Special Function Registers for EZ-USB. 
    If you modify the register definitions below, please regenerate the file 
    "ezregs.inc" which includes the same basic information for assembly inclusion.
-----------------------------------------------------------------------------*/

sfr at 0x80 IOA;     
         /*  IOA  */
         sbit at (0x80 + 0) PA0;    
         sbit at (0x80 + 1) PA1;    
         sbit at (0x80 + 2) PA2;    
         sbit at (0x80 + 3) PA3;    

         sbit at (0x80 + 4) PA4;    
         sbit at (0x80 + 5) PA5;    
         sbit at (0x80 + 6) PA6;    
         sbit at (0x80 + 7) PA7;    
sfr at 0x81 SP;      
sfr at 0x82 DPL;     
sfr at 0x83 DPH;     
sfr at 0x84 DPL1;    
sfr at 0x85 DPH1;    
sfr at 0x86 DPS;     
         /*  DPS  */
         // sbit SEL   = 0x86+0;
sfr at 0x87 PCON;    
         /*  PCON  */
         //sbit IDLE   = 0x87+0;
         //sbit STOP   = 0x87+1;
         //sbit GF0    = 0x87+2;
         //sbit GF1    = 0x87+3;
         //sbit SMOD0  = 0x87+7;
sfr at 0x88 TCON;    
         /*  TCON  */
         sbit at (0x88+0) IT0;    
         sbit at (0x88+1) IE0;    
         sbit at (0x88+2) IT1;    
         sbit at (0x88+3) IE1;    
         sbit at (0x88+4) TR0;    
         sbit at (0x88+5) TF0;    
         sbit at (0x88+6) TR1;    
         sbit at (0x88+7) TF1;    
sfr at 0x89 TMOD;    
         /*  TMOD  */
         //sbit M00    = 0x89+0;
         //sbit M10    = 0x89+1;
         //sbit CT0    = 0x89+2;
         //sbit GATE0  = 0x89+3;
         //sbit M01    = 0x89+4;
         //sbit M11    = 0x89+5;
         //sbit CT1    = 0x89+6;
         //sbit GATE1  = 0x89+7;
sfr at 0x8A TL0;     
sfr at 0x8B TL1;     
sfr at 0x8C TH0;     
sfr at 0x8D TH1;     
sfr at 0x8E CKCON;   
         /*  CKCON  */
         //sbit MD0    = 0x89+0;
         //sbit MD1    = 0x89+1;
         //sbit MD2    = 0x89+2;
         //sbit T0M    = 0x89+3;
         //sbit T1M    = 0x89+4;
         //sbit T2M    = 0x89+5;
sfr at 0x8F SPC_FNC;  // Was WRS in Reg320
         /*  CKCON  */
         //sbit WRS    = 0x8F+0;
sfr at 0x90 IOB;     
         /*  IOB  */
         sbit at (0x90 + 0) PB0;    
         sbit at (0x90 + 1) PB1;    
         sbit at (0x90 + 2) PB2;    
         sbit at (0x90 + 3) PB3;    

         sbit at (0x90 + 4) PB4;    
         sbit at (0x90 + 5) PB5;    
         sbit at (0x90 + 6) PB6;    
         sbit at (0x90 + 7) PB7;    
sfr at 0x91 EXIF;     // EXIF Bit Values differ from Reg320
         /*  EXIF  */
         //sbit USBINT = 0x91+4;
         //sbit I2CINT = 0x91+5;
         //sbit IE4    = 0x91+6;
         //sbit IE5    = 0x91+7;
sfr at 0x92 MPAGE;  
sfr at 0x98 SCON0;  
         /*  SCON0  */
         sbit at (0x98+0) RI;    
         sbit at (0x98+1) TI;    
         sbit at (0x98+2) RB8;   
         sbit at (0x98+3) TB8;   
         sbit at (0x98+4) REN;   
         sbit at (0x98+5) SM2;   
         sbit at (0x98+6) SM1;   
         sbit at (0x98+7) SM0;   
sfr at 0x99 SBUF0;  

#define AUTOPTR1H AUTOPTRH1 // for backwards compatibility with examples
#define AUTOPTR1L AUTOPTRL1 // for backwards compatibility with examples
#define APTR1H AUTOPTRH1 // for backwards compatibility with examples
#define APTR1L AUTOPTRL1 // for backwards compatibility with examples

// this is how they are defined in the TRM
sfr at 0x9A AUTOPTRH1;      
sfr at 0x9B AUTOPTRL1;      
sfr at 0x9D AUTOPTRH2;     
sfr at 0x9E AUTOPTRL2;      

sfr at 0xA0 IOC;        
         /*  IOC  */
         sbit at (0xA0 + 0) PC0;    
         sbit at (0xA0 + 1) PC1;    
         sbit at (0xA0 + 2) PC2;    
         sbit at (0xA0 + 3) PC3;    

         sbit at (0xA0 + 4) PC4;    
         sbit at (0xA0 + 5) PC5;    
         sbit at (0xA0 + 6) PC6;    
         sbit at (0xA0 + 7) PC7;    
sfr at 0xA1 INT2CLR;    
sfr at 0xA2 INT4CLR;    

sfr at 0xA8 IE;     
         /*  IE  */
         sbit at (0xA8+0) EX0;   
         sbit at (0xA8+1) ET0;   
         sbit at (0xA8+2) EX1;   
         sbit at (0xA8+3) ET1;   
         sbit at (0xA8+4) ES0;   
         sbit at (0xA8+5) ET2;   
         sbit at (0xA8+6) ES1;   
         sbit at (0xA8+7) EA;    

sfr at 0xAA EP2468STAT;     
         /* EP2468STAT */
         //sbit EP2E   = 0xAA+0;
         //sbit EP2F   = 0xAA+1;
         //sbit EP4E   = 0xAA+2;
         //sbit EP4F   = 0xAA+3;
         //sbit EP6E   = 0xAA+4;
         //sbit EP6F   = 0xAA+5;
         //sbit EP8E   = 0xAA+6;
         //sbit EP8F   = 0xAA+7;

sfr at 0xAB EP24FIFOFLGS;   
sfr at 0xAC EP68FIFOFLGS;   
sfr at 0xAF AUTOPTRSETUP;  
         /* AUTOPTRSETUP */
         //   sbit EXTACC  = 0xAF+0;
         //   sbit APTR1FZ = 0xAF+1;
         //   sbit APTR2FZ = 0xAF+2;

sfr at 0xB0 IOD;     
         /*  IOD  */
         sbit at (0xB0 + 0) PD0;    
         sbit at (0xB0 + 1) PD1;    
         sbit at (0xB0 + 2) PD2;    
         sbit at (0xB0 + 3) PD3;    

         sbit at (0xB0 + 4) PD4;    
         sbit at (0xB0 + 5) PD5;    
         sbit at (0xB0 + 6) PD6;    
         sbit at (0xB0 + 7) PD7;    
sfr at 0xB1 IOE;     
sfr at 0xB2 OEA;     
sfr at 0xB3 OEB;     
sfr at 0xB4 OEC;     
sfr at 0xB5 OED;     
sfr at 0xB6 OEE;     

sfr at 0xB8 IP;     
         /*  IP  */
         sbit at (0xB8+0) PX0;   
         sbit at (0xB8+1) PT0;   
         sbit at (0xB8+2) PX1;   
         sbit at (0xB8+3) PT1;   
         sbit at (0xB8+4) PS0;   
         sbit at (0xB8+5) PT2;   
         sbit at (0xB8+6) PS1;   

sfr at 0xBA EP01STAT;    
sfr at 0xBB GPIFTRIG;    
                
sfr at 0xBD GPIFSGLDATH;     
sfr at 0xBE GPIFSGLDATLX;    
sfr at 0xBF GPIFSGLDATLNOX;  

sfr at 0xC0 SCON1;  
         /*  SCON1  */
         sbit at (0xC0+0) RI1;   
         sbit at (0xC0+1) TI1;   
         sbit at (0xC0+2) RB81;  
         sbit at (0xC0+3) TB81;  
         sbit at (0xC0+4) REN1;  
         sbit at (0xC0+5) SM21;  
         sbit at (0xC0+6) SM11;  
         sbit at (0xC0+7) SM01;  
sfr at 0xC1 SBUF1;  
sfr at 0xC8 T2CON;  
         /*  T2CON  */
         sbit at (0xC8+0) CP_RL2; 
         sbit at (0xC8+1) C_T2;  
         sbit at (0xC8+2) TR2;   
         sbit at (0xC8+3) EXEN2; 
         sbit at (0xC8+4) TCLK;  
         sbit at (0xC8+5) RCLK;  
         sbit at (0xC8+6) EXF2;  
         sbit at (0xC8+7) TF2;   
sfr at 0xCA RCAP2L; 
sfr at 0xCB RCAP2H; 
sfr at 0xCC TL2;    
sfr at 0xCD TH2;    
sfr at 0xD0 PSW;    
         /*  PSW  */
         sbit at (0xD0+0) P;     
         sbit at (0xD0+1) FL;    
         sbit at (0xD0+2) OV;    
         sbit at (0xD0+3) RS0;   
         sbit at (0xD0+4) RS1;   
         sbit at (0xD0+5) F0;    
         sbit at (0xD0+6) AC;    
         sbit at (0xD0+7) CY;    
sfr at 0xD8 EICON;   // Was WDCON in DS80C320; Bit Values differ from Reg320
         /*  EICON  */
         sbit at (0xD8+3) INT6;  
         sbit at (0xD8+4) RESI;  
         sbit at (0xD8+5) ERESI; 
         sbit at (0xD8+7) SMOD1; 
sfr at 0xE0 ACC;    
sfr at 0xE8 EIE;     // EIE Bit Values differ from Reg320
         /*  EIE  */
         sbit at (0xE8+0) EUSB;    
         sbit at (0xE8+1) EI2C;    
         sbit at (0xE8+2) EIEX4;   
         sbit at (0xE8+3) EIEX5;   
         sbit at (0xE8+4) EIEX6;   
sfr at 0xF0 B;      
sfr at 0xF8 EIP;     // EIP Bit Values differ from Reg320
         /*  EIP  */
         sbit at (0xF8+0) PUSB;    
         sbit at (0xF8+1) PI2C;    
         sbit at (0xF8+2) EIPX4;   
         sbit at (0xF8+3) EIPX5;   
         sbit at (0xF8+4) EIPX6;   

/*-----------------------------------------------------------------------------
   Bit Masks
-----------------------------------------------------------------------------*/

/* CPU Control & Status Register (CPUCS) */
#define bmPRTCSTB    bmBIT5
#define bmCLKSPD     (bmBIT4 | bmBIT3)
#define bmCLKSPD1    bmBIT4
#define bmCLKSPD0    bmBIT3
#define bmCLKINV     bmBIT2
#define bmCLKOE      bmBIT1
#define bm8051RES    bmBIT0
/* Port Alternate Configuration Registers */
/* Port A (PORTACFG) */
#define bmFLAGD      bmBIT7
#define bmINT1       bmBIT1
#define bmINT0       bmBIT0
/* Port C (PORTCCFG) */
#define bmGPIFA7     bmBIT7
#define bmGPIFA6     bmBIT6
#define bmGPIFA5     bmBIT5
#define bmGPIFA4     bmBIT4
#define bmGPIFA3     bmBIT3
#define bmGPIFA2     bmBIT2
#define bmGPIFA1     bmBIT1
#define bmGPIFA0     bmBIT0
/* Port E (PORTECFG) */
#define bmGPIFA8     bmBIT7
#define bmT2EX       bmBIT6
#define bmINT6       bmBIT5
#define bmRXD1OUT    bmBIT4
#define bmRXD0OUT    bmBIT3
#define bmT2OUT      bmBIT2
#define bmT1OUT      bmBIT1
#define bmT0OUT      bmBIT0

/* I2C Control & Status Register (I2CS) */
#define bmSTART      bmBIT7
#define bmSTOP       bmBIT6
#define bmLASTRD     bmBIT5
#define bmID         (bmBIT4 | bmBIT3)
#define bmBERR       bmBIT2
#define bmACK        bmBIT1
#define bmDONE       bmBIT0
/* I2C Control Register (I2CTL) */
#define bmSTOPIE     bmBIT1
#define bm400KHZ     bmBIT0
/* Interrupt 2 (USB) Autovector Register (INT2IVEC) */
#define bmIV4        bmBIT6
#define bmIV3        bmBIT5
#define bmIV2        bmBIT4
#define bmIV1        bmBIT3
#define bmIV0        bmBIT2
/* USB Interrupt Request & Enable Registers (USBIE/USBIRQ) */
#define bmEP0ACK     bmBIT6
#define bmHSGRANT    bmBIT5
#define bmURES       bmBIT4
#define bmSUSP       bmBIT3
#define bmSUTOK      bmBIT2
#define bmSOF        bmBIT1
#define bmSUDAV      bmBIT0
/* Breakpoint register (BREAKPT) */
#define bmBREAK      bmBIT3
#define bmBPPULSE    bmBIT2
#define bmBPEN       bmBIT1
/* Interrupt 2 & 4 Setup (INTSETUP) */
#define bmAV2EN      bmBIT3
#define INT4IN       bmBIT1
#define bmAV4EN      bmBIT0
/* USB Control & Status Register (USBCS) */
#define bmHSM        bmBIT7
#define bmDISCON     bmBIT3
#define bmNOSYNSOF   bmBIT2
#define bmRENUM      bmBIT1
#define bmSIGRESUME  bmBIT0
/* Wakeup Control and Status Register (WAKEUPCS) */
#define bmWU2        bmBIT7
#define bmWU         bmBIT6
#define bmWU2POL     bmBIT5
#define bmWUPOL      bmBIT4
#define bmDPEN       bmBIT2
#define bmWU2EN      bmBIT1
#define bmWUEN       bmBIT0
/* End Point 0 Control & Status Register (EP0CS) */
#define bmHSNAK      bmBIT7
/* End Point 0-1 Control & Status Registers (EP0CS/EP1OUTCS/EP1INCS) */
#define bmEPBUSY     bmBIT1
#define bmEPSTALL    bmBIT0
/* End Point 2-8 Control & Status Registers (EP2CS/EP4CS/EP6CS/EP8CS) */
#define bmNPAK       (bmBIT6 | bmBIT5 | bmBIT4)
#define bmEPFULL     bmBIT3
#define bmEPEMPTY    bmBIT2
/* Endpoint Status (EP2468STAT) SFR bits */
#define bmEP8FULL    bmBIT7
#define bmEP8EMPTY   bmBIT6
#define bmEP6FULL    bmBIT5
#define bmEP6EMPTY   bmBIT4
#define bmEP4FULL    bmBIT3
#define bmEP4EMPTY   bmBIT2
#define bmEP2FULL    bmBIT1
#define bmEP2EMPTY   bmBIT0
/* SETUP Data Pointer Auto Mode (SUDPTRCTL) */
#define bmSDPAUTO    bmBIT0
/* Endpoint Data Toggle Control (TOGCTL) */
#define bmQUERYTOGGLE  bmBIT7
#define bmSETTOGGLE    bmBIT6
#define bmRESETTOGGLE  bmBIT5
#define bmTOGCTLEPMASK bmBIT3 | bmBIT2 | bmBIT1 | bmBIT0
/* IBN (In Bulk Nak) enable and request bits (IBNIE/IBNIRQ) */
#define bmEP8IBN     bmBIT5
#define bmEP6IBN     bmBIT4
#define bmEP4IBN     bmBIT3
#define bmEP2IBN     bmBIT2
#define bmEP1IBN     bmBIT1
#define bmEP0IBN     bmBIT0

/* PING-NAK enable and request bits (NAKIE/NAKIRQ) */
#define bmEP8PING     bmBIT7
#define bmEP6PING     bmBIT6
#define bmEP4PING     bmBIT5
#define bmEP2PING     bmBIT4
#define bmEP1PING     bmBIT3
#define bmEP0PING     bmBIT2
#define bmIBN         bmBIT0

/* Interface Configuration bits (IFCONFIG) */
#define bmIFCLKSRC    bmBIT7
#define bm3048MHZ     bmBIT6
#define bmIFCLKOE     bmBIT5
#define bmIFCLKPOL    bmBIT4
#define bmASYNC       bmBIT3
#define bmGSTATE      bmBIT2
#define bmIFCFG1      bmBIT1
#define bmIFCFG0      bmBIT0
#define bmIFCFGMASK   (bmIFCFG0 | bmIFCFG1)
#define bmIFGPIF      bmIFCFG1

/* EP 2468 FIFO Configuration bits (EP2FIFOCFG,EP4FIFOCFG,EP6FIFOCFG,EP8FIFOCFG) */
#define bmINFM       bmBIT6
#define bmOEP        bmBIT5
#define bmAUTOOUT    bmBIT4
#define bmAUTOIN     bmBIT3
#define bmZEROLENIN  bmBIT2
#define bmWORDWIDE   bmBIT0

/* Chip Revision Control Bits (REVCTL) - used to ebable/disable revision specidic
   features */ 
#define bmNOAUTOARM    bmBIT1
#define bmSKIPCOMMIT   bmBIT0

/* Fifo Reset bits (FIFORESET) */
#define bmNAKALL       bmBIT7

/* Chip Feature Register (GPCR2) */
#define bmFULLSPEEDONLY    bmBIT4

#endif   /* FX2REGS_H */