Training courses

Kernel and Embedded Linux

Bootlin training courses

Embedded Linux, kernel,
Yocto Project, Buildroot, real-time,
graphics, boot time, debugging...

Bootlin logo

Elixir Cross Referencer

  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
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
/* $NetBSD: if_admswreg.h,v 1.1 2007/03/20 08:52:02 dyoung Exp $ */

/*-
 * Copyright (c) 2007 Ruslan Ermilov and Vsevolod Lobko.
 * All rights reserved.
 *
 * Redistribution and use in source and binary forms, with or
 * without modification, are permitted provided that the following
 * conditions are met:
 * 1. Redistributions of source code must retain the above copyright
 *    notice, this list of conditions and the following disclaimer.
 * 2. Redistributions in binary form must reproduce the above
 *    copyright notice, this list of conditions and the following
 *    disclaimer in the documentation and/or other materials provided
 *    with the distribution.
 * 3. The names of the authors may not be used to endorse or promote
 *    products derived from this software without specific prior
 *    written permission.
 *
 * THIS SOFTWARE IS PROVIDED BY THE AUTHORS ``AS IS'' AND ANY
 * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
 * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
 * PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHORS
 * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY,
 * OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
 * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA,
 * OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR
 * TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
 * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY
 * OF SUCH DAMAGE.
 */
/*
 * Copyright (c) 2001 Wasabi Systems, Inc.
 * All rights reserved.
 *
 * Written by Jason R. Thorpe for Wasabi Systems, Inc.
 *
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions
 * are met:
 * 1. Redistributions of source code must retain the above copyright
 *    notice, this list of conditions and the following disclaimer.
 * 2. Redistributions in binary form must reproduce the above copyright
 *    notice, this list of conditions and the following disclaimer in the
 *    documentation and/or other materials provided with the distribution.
 * 3. All advertising materials mentioning features or use of this software
 *    must display the following acknowledgement:
 *	This product includes software developed for the NetBSD Project by
 *	Wasabi Systems, Inc.
 * 4. The name of Wasabi Systems, Inc. may not be used to endorse
 *    or promote products derived from this software without specific prior
 *    written permission.
 *
 * THIS SOFTWARE IS PROVIDED BY WASABI SYSTEMS, INC. ``AS IS'' AND
 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
 * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
 * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL WASABI SYSTEMS, INC
 * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
 * POSSIBILITY OF SUCH DAMAGE.
 */
#ifndef	_IF_ADMSWREG_H_
#define	_IF_ADMSWREG_H_

/* ADMSW_ definitions Copyright (c) 2007 David Young. */
#define	ADMSW_BOOT_DONE		0x0008
#define	ADMSW_BOOT_DONE_BO	__BIT(0)
#define	ADMSW_SW_RES		0x000c
#define	ADMSW_SW_RES_SWR	__BITS(31, 0)
#define	ADMSW_INT_ST		0x00b0
#define	ADMSW_INT_MASK		0x00b4

#define	ADMSW_INTR_RSVD	__BITS(31, 25)
#define	ADMSW_INTR_CPUH	__BIT(24)
#define	ADMSW_INTR_SDE	__BIT(23)
#define	ADMSW_INTR_RDE	__BIT(22)
#define	ADMSW_INTR_W1TE	__BIT(21)
#define	ADMSW_INTR_W0TE	__BIT(20)
#define	ADMSW_INTR_MI	__BIT(19)
#define	ADMSW_INTR_PSC	__BIT(18)
#define	ADMSW_INTR_BCS	__BIT(16)
#define	ADMSW_INTR_MD	__BIT(15)
#define	ADMSW_INTR_GQF	__BIT(14)
#define	ADMSW_INTR_CPQ	__BIT(13)
#define	ADMSW_INTR_P5QF	__BIT(11)
#define	ADMSW_INTR_P4QF	__BIT(10)
#define	ADMSW_INTR_P3QF	__BIT(9)
#define	ADMSW_INTR_P2QF	__BIT(8)
#define	ADMSW_INTR_P1QF	__BIT(7)
#define	ADMSW_INTR_P0QF	__BIT(6)
#define	ADMSW_INTR_LDF	__BIT(5)
#define	ADMSW_INTR_HDF	__BIT(4)
#define	ADMSW_INTR_RLD	__BIT(3)
#define	ADMSW_INTR_RHD	__BIT(2)
#define	ADMSW_INTR_SLD	__BIT(1)
#define	ADMSW_INTR_SHD	__BIT(0)

#define	ADMSW_INT_FMT	\
	"\x10"\
	"\x01SHD"\
	"\x02SLD"\
	"\x03RHD"\
	"\x04RLD"\
	"\x05HDF"\
	"\x06LDF"\
	"\x07P0QF"\
	"\x08P1QF"\
	"\x09P2QF"\
	"\x0aP3QF"\
	"\x0bP4QF"\
	"\x0cP5QF"\
	"\x0e"\
	"CPQ"\
	"\x0fGQF"\
	"\x10MD"\
	"\x11"\
	"BCS"\
	"\x13PSC"\
	"\x14MI"\
	"\x15W0TE"\
	"\x16W1TE"\
	"\x17RDE"\
	"\x18SDE"\
	"\x19"\
	"CPUH"

#define	CODE_REG		0x0000
#define	SFTREST_REG		0x0004
#define	BOOT_DONE_REG		0x0008
#define	GLOBAL_ST_REG		0x0010
#define	PHY_ST_REG		0x0014
#define		PHY_ST_LINKUP		(1 << 0)
#define		PHY_ST_100M		(1 << 8)
#define		PHY_ST_FDX		(1 << 16)
#define	PORT_ST_REG		0x0018
#define	MEM_CONTROL_REG		0x001C	
#define	SW_CONF_REG		0x0020

#define	CPUP_CONF_REG		0x0024
#define		CPUP_CONF_DCPUP		0x00000001
#define		CPUP_CONF_CRCP		0x00000002
#define		CPUP_CONF_BTM		0x00000004
#define		CPUP_CONF_DUNP_SHIFT	9
#define		CPUP_CONF_DUNP_MASK	(0x3F << CPUP_CONF_DUNP_SHIFT)
#define		CPUP_CONF_DMCP_SHIFT	16
#define		CPUP_CONF_DMCP_MASK	(0x3F << CPUP_CONF_DMCP_SHIFT)
#define		CPUP_CONF_DBCP_SHIFT	24
#define		CPUP_CONF_DBCP_MASK	(0x3F << CPUP_CONF_DBCP_SHIFT)

#define	PORT_CONF0_REG		0x0028
#define		PORT_CONF0_DP_MASK	0x0000003F
#define		PORT_CONF0_EMCP_MASK	0x00003F00
#define		PORT_CONF0_EMCP_SHIFT	8
#define		PORT_CONF0_EMBP_MASK	0x003F0000
#define		PORT_CONF0_EMBP_SHIFT	16
#define	PORT_CONF1_REG		0x002C
#define	PORT_CONF2_REG		0x0030

#define	VLAN_G1_REG		0x0040
#define	VLAN_G2_REG		0x0044
#define	SEND_TRIG_REG		0x0048
#define	SRCH_CMD_REG		0x004C
#define	ADDR_ST0_REG		0x0050
#define	ADDR_ST1_REG		0x0054
#define	MAC_WT0_REG		0x0058
#define		MAC_WT0_WRITE	0x00000001
#define		MAC_WT0_WRITE_DONE	0x00000002
#define		MAC_WT0_FILTER_EN	0x00000004
#define		MAC_WT0_VLANID_SHIFT	3
#define		MAC_WT0_VLANID_MASK	0x00000038
#define		MAC_WT0_VLANID_EN	0x00000040
#define		MAC_WT0_PORTMAP_MASK	0x00001F80
#define		MAC_WT0_PORTMAP_SHIFT	7
#define		MAC_WT0_AGE_MASK	(0x7	<<	13)
#define		MAC_WT0_AGE_STATIC	(0x7	<<	13)
#define		MAC_WT0_AGE_VALID	(0x1	<<	13)
#define		MAC_WT0_AGE_EMPTY	0
#define	MAC_WT1_REG		0x005C
#define	BW_CNTL0_REG		0x0060
#define	BW_CNTL1_REG		0x0064
#define	PHY_CNTL0_REG		0x0068
#define	PHY_CNTL1_REG		0x006C
#define	FC_TH_REG		0x0070
#define		FC_TH_FCS_MASK		0x01FF0000
#define		FC_TH_D2R_MASK		0x0000FF00
#define		FC_TH_D2S_MASK		0x000000FF
#define	ADJ_PORT_TH_REG		0x0074
#define	PORT_TH_REG		0x0078
#define	PHY_CNTL2_REG		0x007C
#define		PHY_CNTL2_AUTONEG	(1 << 0)
#define		PHY_CNTL2_ANE_MASK	0x0000001F
#define		PHY_CNTL2_SC_MASK	0x000003E0
#define		PHY_CNTL2_SC_SHIFT	5
#define		PHY_CNTL2_100M		(1 << PHY_CNTL2_SC_SHIFT)
#define		PHY_CNTL2_DC_MASK	0x00007C00
#define		PHY_CNTL2_DC_SHIFT	10
#define		PHY_CNTL2_FDX		(1 << PHY_CNTL2_DC_SHIFT)
#define		PHY_CNTL2_RFCV_MASK	0x000F8000
#define		PHY_CNTL2_RFCV_SHIFT	15
#define		PHY_CNTL2_PHYR_MASK	0x01F00000
#define		PHY_CNTL2_PHYR_SHIFT	20
#define		PHY_CNTL2_AMDIX_MASK	0x3E000000
#define		PHY_CNTL2_AMDIX_SHIFT	25
#define		PHY_CNTL2_RMAE		0x40000000
#define	PHY_CNTL3_REG		0x0080
#define 	PHY_CNTL3_RNT         0x00000400

#define	PRI_CNTL_REG		0x0084
#define	VLAN_PRI_REG		0x0088
#define	TOS_EN_REG		0x008C
#define	TOS_MAP0_REG		0x0090
#define	TOS_MAP1_REG		0x0094
#define	CUSTOM_PRI1_REG		0x0098
#define	CUSTOM_PRI2_REG		0x009C

#define	EMPTY_CNT_REG		0x00A4
#define	PORT_CNT_SEL_REG	0x00A8
#define	PORT_CNT_REG		0x00AC

#define	INT_MASK	0x1FDEFFF

#define	GPIO_CONF0_REG		0x00B8
#define	GPIO_CONF2_REG		0x00BC

#define	SWAP_IN_REG		0x00C8
#define	SWAP_OUT_REG		0x00CC

#define	SEND_HBADDR_REG		0x00D0
#define	SEND_LBADDR_REG		0x00D4
#define	RECV_HBADDR_REG		0x00D8
#define	RECV_LBADDR_REG		0x00DC
#define	SEND_HWADDR_REG		0x00E0
#define	SEND_LWADDR_REG		0x00E4
#define	RECV_HWADDR_REG		0x00E8
#define	RECV_LWADDR_REG		0x00EC

#define	TIMER_INT_REG		0x00F0
#define	TIMER_REG		0x00F4

#define	PORT0_LED_REG		0x0100
#define	PORT1_LED_REG		0x0104
#define	PORT2_LED_REG		0x0108
#define	PORT3_LED_REG		0x010c
#define	PORT4_LED_REG		0x0110

/* Hardware descriptor format */
struct admsw_desc {
        volatile uint32_t data;
        volatile uint32_t cntl;
        volatile uint32_t len;
        volatile uint32_t status;
} __attribute__((__packed__, __aligned__(4)));

#define ADM5120_DMA_MASK        0x01ffffff
#define ADM5120_DMA_OWN         0x80000000      /* buffer owner */
#define ADM5120_DMA_RINGEND     0x10000000      /* Last in DMA ring */
#define ADM5120_DMA_BUF2ENABLE	0x80000000

#define ADM5120_DMA_PORTID      0x00007000
#define ADM5120_DMA_PORTSHIFT   12
#define ADM5120_DMA_LEN         0x07ff0000
#define ADM5120_DMA_LENSHIFT    16
#define	ADM5120_DMA_TYPE	0x00000003
#define	ADM5120_DMA_TYPE_IP	0x00000000
#define	ADM5120_DMA_TYPE_PPPOE	0x00000001
#define	ADM5120_DMA_CSUM	0x80000000
#define	ADM5120_DMA_CSUMFAIL	0x00000008

#define SW_DEVS 6

#if 0
/*	CODE_REG	*/
#define	CODE_ID_MASK	0x00FFFF
#define	CODE_ADM5120_ID	0x5120

#define	CODE_REV_MASK	0x0F0000
#define	CODE_REV_SHIFT	16
#define	CODE_REV_ADM5120_0	0x8

#define	CODE_CLK_MASK	0x300000
#define	CODE_CLK_SHIFT	20

#define	CPU_CLK_175MHZ	0x0
#define	CPU_CLK_200MHZ	0x1
#define	CPU_CLK_225MHZ	0x2
#define	CPU_CLK_250MHZ	0x3

#define	CPU_SPEED_175M	(175000000/2)
#define	CPU_SPEED_200M	(200000000/2)
#define	CPU_SPEED_225M	(225000000/2)
#define	CPU_SPEED_250M	(250000000/2)

#define	CPU_NAND_BOOT	0x01000000
#define	CPU_DCACHE_2K_WAY	(0x1	<<	25)
#define	CPU_DCACHE_2WAY	(0x1	<<	26)
#define	CPU_ICACHE_2K_WAY	(0x1	<<	27)
#define	CPU_ICACHE_2WAY	(0x1	<<	28)

#define	CPU_GMII_SUPPORT	0x20000000

#define	CPU_PQFP_MODE	(0x1	<<	29)

#define	CPU_CACHE_LINE_SIZE	16

/*	SftRest_REG	*/
#define	SOFTWARE_RESET	0x1

/*	Boot_done_REG	*/
#define	BOOT_DONE	0x1

/*	SWReset_REG	*/
#define	SWITCH_RESET	0x1

/*	Global_St_REG	*/
#define	DATA_BUF_BIST_FAILED	(0x1	<<	0)
#define	LINK_TAB_BIST_FAILED	(0x1	<<	1)
#define	MC_TAB_BIST_FAILED	(0x1	<<	2)
#define	ADDR_TAB_BIST_FAILED	(0x1	<<	3)
#define	DCACHE_D_FAILED	(0x3	<<	4)
#define	DCACHE_T_FAILED	(0x1	<<	6)
#define	ICACHE_D_FAILED	(0x3	<<	7)
#define	ICACHE_T_FAILED	(0x1	<<	9)
#define	BIST_FAILED_MASK	0x03FF

#define	ALLMEM_TEST_DONE	(0x1	<<	10)

#define	SKIP_BLK_CNT_MASK	0x1FF000
#define	SKIP_BLK_CNT_SHIFT	12


/*	PHY_st_REG	*/
#define	PORT_LINK_MASK	0x0000001F
#define	PORT_MII_LINKFAIL	0x00000020
#define	PORT_SPEED_MASK	0x00001F00

#define	PORT_GMII_SPD_MASK	0x00006000
#define	PORT_GMII_SPD_10M	0
#define	PORT_GMII_SPD_100M	0x00002000
#define	PORT_GMII_SPD_1000M	0x00004000

#define	PORT_DUPLEX_MASK	0x003F0000
#define	PORT_FLOWCTRL_MASK	0x1F000000

#define	PORT_GMII_FLOWCTRL_MASK	0x60000000
#define	PORT_GMII_FC_ON	0x20000000
#define	PORT_GMII_RXFC_ON	0x20000000
#define	PORT_GMII_TXFC_ON	0x40000000

/*	Port_st_REG	*/
#define	PORT_SECURE_ST_MASK	0x001F
#define	MII_PORT_TXC_ERR	0x0080

/*	Mem_control_REG	*/
#define	SDRAM_SIZE_4MBYTES	0x0001
#define	SDRAM_SIZE_8MBYTES	0x0002
#define	SDRAM_SIZE_16MBYTES	0x0003
#define	SDRAM_SIZE_64MBYTES	0x0004
#define	SDRAM_SIZE_128MBYTES	0x0005
#define	SDRAM_SIZE_MASK	0x0007

#define	MEMCNTL_SDRAM1_EN	(0x1	<<	5)

#define	ROM_SIZE_DISABLE	0x0000
#define	ROM_SIZE_512KBYTES	0x0001
#define	ROM_SIZE_1MBYTES	0x0002
#define	ROM_SIZE_2MBYTES	0x0003
#define	ROM_SIZE_4MBYTES	0x0004
#define	ROM_SIZE_8MBYTES	0x0005
#define	ROM_SIZE_MASK	0x0007

#define	ROM0_SIZE_SHIFT	8
#define	ROM1_SIZE_SHIFT	16


/*	SW_conf_REG	*/
#define	SW_AGE_TIMER_MASK	0x000000F0
#define	SW_AGE_TIMER_DISABLE	0x0
#define	SW_AGE_TIMER_FAST	0x00000080
#define	SW_AGE_TIMER_300SEC	0x00000010
#define	SW_AGE_TIMER_600SEC	0x00000020
#define	SW_AGE_TIMER_1200SEC	0x00000030
#define	SW_AGE_TIMER_2400SEC	0x00000040
#define	SW_AGE_TIMER_4800SEC	0x00000050
#define	SW_AGE_TIMER_9600SEC	0x00000060
#define	SW_AGE_TIMER_19200SEC	0x00000070
//#define	SW_AGE_TIMER_38400SEC	0x00000070

#define	SW_BC_PREV_MASK	0x00000300
#define	SW_BC_PREV_DISABLE	0
#define	SW_BC_PREV_64BC	0x00000100
#define	SW_BC_PREV_48BC	0x00000200
#define	SW_BC_PREV_32BC	0x00000300

#define	SW_MAX_LEN_MASK	0x00000C00
#define	SW_MAX_LEN_1536	0
#define	SW_MAX_LEN_1522	0x00000800
#define	SW_MAX_LEN_1518	0x00000400

#define	SW_DIS_COLABT	0x00001000

#define	SW_HASH_ALG_MASK	0x00006000
#define	SW_HASH_ALG_DIRECT	0
#define	SW_HASH_ALG_XOR48	0x00002000
#define	SW_HASH_ALG_XOR32	0x00004000

#define	SW_DISABLE_BACKOFF_TIMER	0x00008000

#define	SW_BP_NUM_MASK	0x000F0000
#define	SW_BP_NUM_SHIFT	16
#define	SW_BP_MODE_MASK	0x00300000
#define	SW_BP_MODE_DISABLE	0
#define	SW_BP_MODE_JAM	0x00100000
#define	SW_BP_MODE_JAMALL	0x00200000
#define	SW_BP_MODE_CARRIER	0x00300000
#define	SW_RESRV_MC_FILTER	0x00400000
#define	SW_BISR_DISABLE	0x00800000

#define	SW_DIS_MII_WAS_TX	0x01000000
#define	SW_BISS_EN	0x02000000
#define	SW_BISS_TH_MASK	0x0C000000
#define	SW_BISS_TH_SHIFT	26
#define	SW_REQ_LATENCY_MASK	0xF0000000
#define	SW_REQ_LATENCY_SHIFT	28


/*	CPUp_conf_REG	*/
#define	SW_CPU_PORT_DISABLE	0x00000001
#define	SW_PADING_CRC	0x00000002
#define	SW_BRIDGE_MODE	0x00000004

#define	SW_DIS_UN_SHIFT	9
#define	SW_DIS_UN_MASK	(0x3F	<<	SW_DIS_UN_SHIFT)
#define	SW_DIS_MC_SHIFT	16
#define	SW_DIS_MC_MASK	(0x3F	<<	SW_DIS_MC_SHIFT)
#define	SW_DIS_BC_SHIFT	24
#define	SW_DIS_BC_MASK	(0x3F	<<	SW_DIS_BC_SHIFT)


/*	Port_conf0_REG	*/
#define	SW_DISABLE_PORT_MASK	0x0000003F
#define	SW_EN_MC_MASK	0x00003F00
#define	SW_EN_MC_SHIFT	8
#define	SW_EN_BP_MASK	0x003F0000
#define	SW_EN_BP_SHIFT	16
#define	SW_EN_FC_MASK	0x3F000000
#define	SW_EN_FC_SHIFT	24


/*	Port_conf1_REG	*/
#define	SW_DIS_SA_LEARN_MASK	0x0000003F
#define	SW_PORT_BLOCKING_MASK	0x00000FC0
#define	SW_PORT_BLOCKING_SHIFT	6
#define	SW_PORT_BLOCKING_ON	0x1

#define	SW_PORT_BLOCKING_MODE_MASK	0x0003F000
#define	SW_PORT_BLOCKING_MODE_SHIFT	12
#define	SW_PORT_BLOCKING_CTRLONLY	0x1

#define	SW_EN_PORT_AGE_MASK	0x03F00000
#define	SW_EN_PORT_AGE_SHIFT	20
#define	SW_EN_SA_SECURED_MASK	0xFC000000
#define	SW_EN_SA_SECURED_SHIFT	26


/*	Port_conf2_REG	*/
#define	SW_GMII_AN_EN	0x00000001
#define	SW_GMII_FORCE_SPD_MASK	0x00000006
#define	SW_GMII_FORCE_SPD_10M	0
#define	SW_GMII_FORCE_SPD_100M	0x2
#define	SW_GMII_FORCE_SPD_1000M	0x4

#define	SW_GMII_FORCE_FULL_DUPLEX	0x00000008

#define	SW_GMII_FORCE_RXFC	0x00000010
#define	SW_GMII_FORCE_TXFC	0x00000020

#define	SW_GMII_EN	0x00000040
#define	SW_GMII_REVERSE	0x00000080

#define	SW_GMII_TXC_CHECK_EN	0x00000100

#define	SW_LED_FLASH_TIME_MASK	0x00030000
#define	SW_LED_FLASH_TIME_30MS	0
#define	SW_LED_FLASH_TIME_60MS	0x00010000
#define	SW_LED_FLASH_TIME_240MS	0x00020000
#define	SW_LED_FLASH_TIME_480MS	0x00030000


/*	Send_trig_REG	*/
#define	SEND_TRIG_LOW	0x0001
#define	SEND_TRIG_HIGH	0x0002


/*	Srch_cmd_REG	*/
#define	SW_MAC_SEARCH_START	0x000001
#define	SW_MAX_SEARCH_AGAIN	0x000002


/*	MAC_wt0_REG	*/
#define	SW_MAC_WRITE	0x00000001
#define	SW_MAC_WRITE_DONE	0x00000002
#define	SW_MAC_FILTER_EN	0x00000004
#define	SW_MAC_VLANID_SHIFT	3
#define	SW_MAC_VLANID_MASK	0x00000038
#define	SW_MAC_VLANID_EN	0x00000040
#define	SW_MAC_PORTMAP_MASK	0x00001F80
#define	SW_MAC_PORTMAP_SHIFT	7
#define	SW_MAC_AGE_MASK	(0x7	<<	13)
#define	SW_MAC_AGE_STATIC	(0x7	<<	13)
#define	SW_MAC_AGE_VALID	(0x1	<<	13)
#define	SW_MAC_AGE_EMPTY	0

/*	BW_cntl0_REG	*/
#define	SW_PORT_TX_NOLIMIT	0
#define	SW_PORT_TX_64K	1
#define	SW_PORT_TX_128K	2
#define	SW_PORT_TX_256K	3
#define	SW_PORT_TX_512K	4
#define	SW_PORT_TX_1M	5
#define	SW_PORT_TX_4M	6
#define	SW_PORT_TX_10MK	7

/*	BW_cntl1_REG	*/
#define	SW_TRAFFIC_SHAPE_IPG	(0x1	<<	31)

/*	PHY_cntl0_REG	*/
#define	SW_PHY_ADDR_MASK	0x0000001F
#define	PHY_ADDR_MAX	0x1f
#define	SW_PHY_REG_ADDR_MASK	0x00001F00
#define	SW_PHY_REG_ADDR_SHIFT	8
#define	PHY_REG_ADDR_MAX	0x1f
#define	SW_PHY_WRITE	0x00002000
#define	SW_PHY_READ	0x00004000
#define	SW_PHY_WDATA_MASK	0xFFFF0000
#define	SW_PHY_WDATA_SHIFT	16


/*	PHY_cntl1_REG	*/
#define	SW_PHY_WRITE_DONE	0x00000001
#define	SW_PHY_READ_DONE	0x00000002
#define	SW_PHY_RDATA_MASK	0xFFFF0000
#define	SW_PHY_RDATA_SHIFT	16

/*	FC_th_REG	*/
/*	Adj_port_th_REG	*/
/*	Port_th_REG	*/

/*	PHY_cntl2_REG	*/
#define	SW_PHY_AN_MASK	0x0000001F
#define	SW_PHY_SPD_MASK	0x000003E0
#define	SW_PHY_SPD_SHIFT	5
#define	SW_PHY_DPX_MASK	0x00007C00
#define	SW_PHY_DPX_SHIFT	10
#define	SW_FORCE_FC_MASK	0x000F8000
#define	SW_FORCE_FC_SHIFT	15
#define	SW_PHY_NORMAL_MASK	0x01F00000
#define	SW_PHY_NORMAL_SHIFT	20
#define	SW_PHY_AUTOMDIX_MASK	0x3E000000
#define	SW_PHY_AUTOMDIX_SHIFT	25
#define	SW_PHY_REC_MCCAVERAGE	0x40000000


/*	PHY_cntl3_REG	*/
/*	Pri_cntl_REG	*/
/*	VLAN_pri_REG	*/
/*	TOS_en_REG	*/
/*	TOS_map0_REG	*/
/*	TOS_map1_REG	*/
/*	Custom_pri1_REG	*/
/*	Custom_pri2_REG	*/
/*	Empty_cnt_REG	*/
/*	Port_cnt_sel_REG	*/
/*	Port_cnt_REG	*/


/*	SW_Int_st_REG	&	SW_Int_mask_REG	*/
#define	SEND_H_DONE_INT	0x0000001
#define	SEND_L_DONE_INT	0x0000002
#define	RX_H_DONE_INT	0x0000004
#define	RX_L_DONE_INT	0x0000008
#define	RX_H_DESC_FULL_INT	0x0000010
#define	RX_L_DESC_FULL_INT	0x0000020
#define	PORT0_QUE_FULL_INT	0x0000040
#define	PORT1_QUE_FULL_INT	0x0000080
#define	PORT2_QUE_FULL_INT	0x0000100
#define	PORT3_QUE_FULL_INT	0x0000200
#define	PORT4_QUE_FULL_INT	0x0000400
#define	PORT5_QUE_FULL_INT	0x0000800

#define	CPU_QUE_FULL_INT	0x0002000
#define	GLOBAL_QUE_FULL_INT	0x0004000
#define	MUST_DROP_INT	0x0008000
#define	BC_STORM_INT	0x0010000

#define	PORT_STATUS_CHANGE_INT	0x0040000
#define	INTRUDER_INT	0x0080000
#define	WATCHDOG0_EXPR_INT	0x0100000
#define	WATCHDOG1_EXPR_INT	0x0200000
#define	RX_DESC_ERR_INT	0x0400000
#define	SEND_DESC_ERR_INT	0x0800000
#define	CPU_HOLD_INT	0x1000000
#define	SWITCH_INT_MASK	0x1FDEFFF


/*	GPIO_conf0_REG	*/
#define	GPIO0_INPUT_MODE	0x00000001
#define	GPIO1_INPUT_MODE	0x00000002
#define	GPIO2_INPUT_MODE	0x00000004
#define	GPIO3_INPUT_MODE	0x00000008
#define	GPIO4_INPUT_MODE	0x00000010
#define	GPIO5_INPUT_MODE	0x00000020
#define	GPIO6_INPUT_MODE	0x00000040
#define	GPIO7_INPUT_MODE	0x00000080

#define	GPIO0_OUTPUT_MODE	0
#define	GPIO1_OUTPUT_MODE	0
#define	GPIO2_OUTPUT_MODE	0
#define	GPIO3_OUTPUT_MODE	0
#define	GPIO4_OUTPUT_MODE	0
#define	GPIO5_OUTPUT_MODE	0
#define	GPIO6_OUTPUT_MODE	0
#define	GPIO7_OUTPUT_MODE	0

#define	GPIO0_INPUT_MASK	0x00000100
#define	GPIO1_INPUT_MASK	0x00000200
#define	GPIO2_INPUT_MASK	0x00000400
#define	GPIO3_INPUT_MASK	0x00000800
#define	GPIO4_INPUT_MASK	0x00001000
#define	GPIO5_INPUT_MASK	0x00002000
#define	GPIO6_INPUT_MASK	0x00004000
#define	GPIO7_INPUT_MASK	0x00008000

#define	GPIO0_OUTPUT_EN	0x00010000
#define	GPIO1_OUTPUT_EN	0x00020000
#define	GPIO2_OUTPUT_EN	0x00040000
#define	GPIO3_OUTPUT_EN	0x00080000
#define	GPIO4_OUTPUT_EN	0x00100000
#define	GPIO5_OUTPUT_EN	0x00200000
#define	GPIO6_OUTPUT_EN	0x00400000
#define	GPIO7_OUTPUT_EN	0x00800000

#define	GPIO_CONF0_OUTEN_MASK	0x00ff0000

#define	GPIO0_OUTPUT_HI	0x01000000
#define	GPIO1_OUTPUT_HI	0x02000000
#define	GPIO2_OUTPUT_HI	0x04000000
#define	GPIO3_OUTPUT_HI	0x08000000
#define	GPIO4_OUTPUT_HI	0x10000000
#define	GPIO5_OUTPUT_HI	0x20000000
#define	GPIO6_OUTPUT_HI	0x40000000
#define	GPIO7_OUTPUT_HI	0x80000000

#define	GPIO0_OUTPUT_LOW	0
#define	GPIO1_OUTPUT_LOW	0
#define	GPIO2_OUTPUT_LOW	0
#define	GPIO3_OUTPUT_LOW	0
#define	GPIO4_OUTPUT_LOW	0
#define	GPIO5_OUTPUT_LOW	0
#define	GPIO6_OUTPUT_LOW	0
#define	GPIO7_OUTPUT_LOW	0


/*	GPIO_conf2_REG	*/
#define	EXTIO_WAIT_EN	(0x1	<<	6)
#define	EXTIO_CS1_INT1_EN	(0x1	<<	5)
#define	EXTIO_CS0_INT0_EN	(0x1	<<	4)

/*	Timer_int_REG	*/
#define	SW_TIMER_INT_DISABLE	0x10000
#define	SW_TIMER_INT	0x1

/*	Timer_REG	*/
#define	SW_TIMER_EN	0x10000
#define	SW_TIMER_MASK	0xffff
#define	SW_TIMER_10MS_TICKS	0x3D09
#define	SW_TIMER_1MS_TICKS	0x61A
#define	SW_TIMER_100US_TICKS	0x9D


/*	Port0_LED_REG,	Port1_LED_REG,	Port2_LED_REG,	Port3_LED_REG,	Port4_LED_REG*/
#define	GPIOL_INPUT_MODE	0x00
#define	GPIOL_OUTPUT_FLASH	0x01
#define	GPIOL_OUTPUT_LOW	0x02
#define	GPIOL_OUTPUT_HIGH	0x03
#define	GPIOL_LINK_LED	0x04
#define	GPIOL_SPEED_LED	0x05
#define	GPIOL_DUPLEX_LED	0x06
#define	GPIOL_ACT_LED	0x07
#define	GPIOL_COL_LED	0x08
#define	GPIOL_LINK_ACT_LED	0x09
#define	GPIOL_DUPLEX_COL_LED	0x0A
#define	GPIOL_10MLINK_ACT_LED	0x0B
#define	GPIOL_100MLINK_ACT_LED	0x0C
#define	GPIOL_CTRL_MASK	0x0F

#define	GPIOL_INPUT_MASK	0x7000
#define	GPIOL_INPUT_0_MASK	0x1000
#define	GPIOL_INPUT_1_MASK	0x2000
#define	GPIOL_INPUT_2_MASK	0x4000

#define	PORT_LED0_SHIFT	0
#define	PORT_LED1_SHIFT	4
#define	PORT_LED2_SHIFT	8
#endif
#endif /* _IF_ADMSWREG_H_ */