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
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
|
/* $NetBSD: e500reg.h,v 1.17 2022/05/24 20:50:18 andvar Exp $ */
/*-
* Copyright (c) 2010, 2011 The NetBSD Foundation, Inc.
* All rights reserved.
*
* This code is derived from software contributed to The NetBSD Foundation
* by Raytheon BBN Technologies Corp and Defense Advanced Research Projects
* Agency and which was developed by Matt Thomas of 3am Software Foundry.
*
* This material is based upon work supported by the Defense Advanced Research
* Projects Agency and Space and Naval Warfare Systems Center, Pacific, under
* Contract No. N66001-09-C-2073.
* Approved for Public Release, Distribution Unlimited
*
* 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.
*
* THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
* ``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 FOUNDATION OR CONTRIBUTORS
* 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.
*/
#include <sys/cdefs.h>
#ifdef _LOCORE
#define __PPCBIT(n) (1 << (31 - (n)))
#define __PPCBITS(m, n) (((1 << ((n) - (m) + 1)) - 1) << (31 - (m)))
#else
#define __PPCBIT(n) __BIT(31-(n))
#define __PPCBITS(m,n) __BITS(31-(n),31-(m))
#endif
#define GUR_SIZE 0x100000
#define GUR_BPTR 0x0020 /* Boot Page Translation */
#define BPTR_EN __PPCBIT(0) /* Boot Page Enabled */
#define BPTR_BOOT_PAGE __PPCBITS(8,31) /* high 24 bits of phys addr */
#define DDRC1_BASE 0x02000
#define DDRC2_BASE 0x06000
#define DDRC_SIZE 0x01000
#ifdef DDRC_PRIVATE
#define CS_BNDS(n) (0x000 + 0x008 * (n))
#define BNDS_SA __PPCBITS(4,15)
#define BNDS_SA_GET(n) (((n) & BNDS_SA) << 8)
#define BNDS_EA __PPCBITS(20,31)
#define BNDS_EA_GET(n) (((n) & BNDS_EA) << 24)
#define BNDS_SIZE_GET(n) \
((((((n) & BNDS_EA) + __LOWEST_SET_BIT(BNDS_EA)) << 16) - (((n) & BNDS_SA))) << 8)
#define CS_CONFIG(n) (0x080 + 0x004 * (n))
#define CS_CONFIG_EN __PPCBIT(0)
#define DDR_SDRAM_CFG 0x110
#define SDRAM_CFG_MEM_EN __PPCBIT(0)
#define SDRAM_CFG_SREN __PPCBIT(1)
#define SDRAM_CFG_ECC_EN __PPCBIT(2)
#define SDRAM_CFG_RDEN __PPCBIT(3)
#define SDRAM_CFG_TYPE __PPCBITS(5,7)
#define SDRAM_CFG_TYPE_DDR2 3
#define SDRAM_CFG_TYPE_DDR3 7
#define SDRAM_CFG_DYN_PWR __PPCBIT(10)
#define SDRAM_CFG_DBW __PPCBITS(11,12)
#define SDRAM_CFG_DBW_64BIT 0
#define SDRAM_CFG_DBW_32BIT 1
#define CAPTURE_DATA_HI 0xe20
#define CAPTURE_DATA_LO 0xe24
#define CAPTURE_ECC 0xe28
#define ERR_DETECT 0xe40
#define ERR_DISABLE 0xe44
#define ERR_INT_EN 0xe48
#define ERR_MMEE __PPCBIT(0)
#define ERR_APEE __PPCBIT(23)
#define ERR_ACEE __PPCBIT(24)
#define ERR_MBEE __PPCBIT(28)
#define ERR_SBEE __PPCBIT(29)
#define ERR_MSEE __PPCBIT(31)
#define CAPTURE_ATTRIBUTES 0xe4c
#define CATTR_BNUM __PPCBITS(1,3)
#define CATTR_TSIZ __PPCBITS(5,7)
#define CATTR_TSRC __PPCBITS(11,15)
#define CATTR_TTYP __PPCBITS(18,19)
#define CATTR_VLD __PPCBIT(31)
#define CAPTURE_ADDRESS 0xe50
#define CAPTURE_EXT_ADDRESS 0xe54
#define ERR_SBE 0xe58
#define ERR_SBE_SBET __PPCBITS(8,15)
#define ERR_SBE_SBEC __PPCBITS(24,31)
#endif /* DDRC_PRIVATE */
#define GPIO_BASE 0x0fc00
#define GPIO_SIZE 0x00020
#ifdef GPIO_PRIVATE
#define GPDIR 0x00 /* GPIO direction register */
#define GPODR 0x04 /* GPIO open drain register */
#define GPDAT 0x08 /* GPIO data register */
#define GPIER 0x0C /* GPIO interrupt event register */
#define GPIMR 0x10 /* GPIO interrupt mask register */
#define GPICR 0x14 /* GPIO external interrupt control register */
#endif /* GPIO_PRIVATE */
#define PCIE1_BASE 0x0a000
#define PCIE2_MPC8572_BASE 0x09000 /* P2020 too */
#define PCIE3_MPC8572_BASE 0x08000 /* P2020 too */
#define PCIX1_MPC8548_BASE 0x08000
#define PCIX2_MPC8548_BASE 0x09000
#define PCIE2_MPC8544_BASE 0x09000 /* MPC8536 too */
#define PCIE3_MPC8544_BASE 0x0b000 /* MPC8536 too */
#define PCIX1_MPC8544_BASE 0x08000 /* MPC8536 too */
#define PCI_SIZE 0x01000
#ifdef PCI_PRIVATE
/* PCI Express Configuration Access Registers */
#define PEX_CONFIG_ADDR 0x000 /* PCI Express configuration address register */
#define PCI_CONFIG_ADDR PEX_CONFIG_ADDR
#define PEX_CONFIG_ADDR_EN __PPCBIT(0)
#define PEX_CONFIG_ADDR_TAG(b,d,f,r) (((b) << 16) | ((d) << 11) | ((f) << 8) | (r))
#define PEX_CONFIG_DATA 0x004 /* PCI Express configuration data register */
#define PCI_CONFIG_DATA PEX_CONFIG_DATA
#define PCI_INT_ACK 0x008 /* PCI Interrupt Acknowledge */
#define PEX_OTB_CPL_TOR 0x00C /* PCI Express outbound completion timeout register */
#define PEX_CONF_RTY_TOR 0x010 /* PCI Express configuration retry timeout register */
#define PEX_CONFIG 0x014 /* PCI Express configuration register */
/* PCI Express Power Management Event & Message Registers */
#define PEX_PME_MES_DR 0x020 /* PCI Express PME & message detect register */
#define PEX_PME_MES_DISR 0x024 /* PCI Express PME & message disable register */
#define PEX_PME_MES_IER 0x028 /* PCI Express PME & message interrupt enable register */
#define PEX_PMCR 0x02C /* PCI Express power management command register */
/* PCI Express IP Block Revision Registers */
#define PEX_IP_BLK_REV1 0xBF8 /* IP block revision register 1 */
#define PEX_IP_BLK_REV2 0xBFC /* IP block revision register 2 */
/* PCI Express / PCI-X ATMU Registers */
#define PEXOWAR_EN __PPCBIT(0) /* enable window */
#define PEXOWAR_ROE __PPCBIT(3) /* relaxed ordering enable */
#define PEXOWAR_NS __PPCBIT(4) /* no snoop enable */
#define PEXOWAR_TC __PPCBITS(8,10) /* traffic class PCIEX only */
#define PEXOWAR_TC0 __SHIFTIN(0, PEXOWAR_TC)
#define PEXOWAR_TC1 __SHIFTIN(1, PEXOWAR_TC)
#define PEXOWAR_TC2 __SHIFTIN(2, PEXOWAR_TC)
#define PEXOWAR_TC3 __SHIFTIN(3, PEXOWAR_TC)
#define PEXOWAR_TC4 __SHIFTIN(4, PEXOWAR_TC)
#define PEXOWAR_TC5 __SHIFTIN(5, PEXOWAR_TC)
#define PEXOWAR_TC6 __SHIFTIN(6, PEXOWAR_TC)
#define PEXOWAR_TC7 __SHIFTIN(7, PEXOWAR_TC)
#define PEXOWAR_RTT __PPCBITS(12,15) /* read transaction type */
#define PEXOWAR_RTT_CONF __SHIFTIN(2, PEXOWAR_RTT) /* PCIEX only */
#define PEXOWAR_RTT_MEM __SHIFTIN(4, PEXOWAR_RTT)
#define PEXOWAR_RTT_IO __SHIFTIN(8, PEXOWAR_RTT)
#define PEXOWAR_WTT __PPCBITS(16,19) /* write transaction type */
#define PEXOWAR_WTT_CONF __SHIFTIN(2, PEXOWAR_WTT) /* PCIEX only */
#define PEXOWAR_WTT_MEM __SHIFTIN(4, PEXOWAR_WTT)
#define PEXOWAR_WTT_IO __SHIFTIN(8, PEXOWAR_WTT)
#define PEXOWAR_OWS __PPCBITS(26,31) /* encoded as 2^(N+1) bytes */
/* PCI Express / PCI-X ATMU Registers */
#define PEXIWAR_EN __PPCBIT(0) /* enable window */
#define PEXIWAR_PF __PPCBIT(3) /* prefetchable */
#define PEXIWAR_TRGT __PPCBITS(8,11) /* traffic class PCIEX only */
#define PEXIWAR_TRGT_PCI1 __SHIFTIN(0, PEXIWAR_TRGT)
#define PEXIWAR_TRGT_PCI2 __SHIFTIN(1, PEXIWAR_TRGT)
#define PEXIWAR_TRGT_PCIEX __SHIFTIN(2, PEXIWAR_TRGT)
#define PEXIWAR_TRGT_SRIO __SHIFTIN(12, PEXIWAR_TRGT)
#define PEXIWAR_TRGT_LOCALMEM __SHIFTIN(15, PEXIWAR_TRGT)
#define PEXIWAR_RTT __PPCBITS(12,15) /* read transaction type */
#define PEXIWAR_RTT_MEM __SHIFTIN(4, PEXIWAR_RTT)
#define PEXIWAR_RTT_MEM_NOSNOOP __SHIFTIN(4, PEXIWAR_RTT)
#define PEXIWAR_RTT_MEM_SNOOP __SHIFTIN(5, PEXIWAR_RTT)
#define PEXIWAR_RTT_MEM_ULCKL2 __SHIFTIN(7, PEXIWAR_RTT)
#define PEXIWAR_WTT __PPCBITS(16,19) /* write transaction type */
#define PEXIWAR_WTT_MEM_NOSNOOP __SHIFTIN(4, PEXIWAR_WTT)
#define PEXIWAR_WTT_MEM_SNOOP __SHIFTIN(5, PEXIWAR_WTT)
#define PEXIWAR_WTT_MEM_ALLOL2 __SHIFTIN(6, PEXIWAR_WTT)
#define PEXIWAR_WTT_MEM_ALCKL2 __SHIFTIN(7, PEXIWAR_WTT)
#define PEXIWAR_IWS __PPCBITS(26,31) /* encoded as 2^(N+1) bytes */
#define PEXIWAR_IWS_GET(n) __SHIFTOUT((n), PEXIWAR_IWS)
/* Outbound Window 0 (Default) */
#define PEXOTAR0 0xC00 /* PCI Express outbound translation address register 0 (default) */
#define PEXOTEAR0 0xC04 /* PCI Express outbound translation extended address register 0 (default) */
#define PEXOWAR0 0xC10 /* PCI Express outbound window attributes register 0 (default) */
/* Outbound Window 1 */
#define PEXOTAR1 0xC20 /* PCI Express outbound translation address register 1 */
#define PEXOTEAR1 0xC24 /* PCI Express outbound translation extended address register 1 */
#define PEXOWBAR1 0xC28 /* PCI Express outbound window base address register 1 */
#define PEXOWAR1 0xC30 /* PCI Express outbound window attributes register 1 */
/* Outbound Window 2 */
#define PEXOTAR2 0xC40 /* PCI Express outbound translation address register 2 */
#define PEXOTEAR2 0xC44 /* PCI Express outbound translation extended address register 2 */
#define PEXOWBAR2 0xC48 /* PCI Express outbound window base address register 2 */
#define PEXOWAR2 0xC50 /* PCI Express outbound window attributes register 2 */
/* Outbound Window 3 */
#define PEXOTAR3 0xC60 /* PCI Express outbound translation address register 3 */
#define PEXOTEAR3 0xC64 /* PCI Express outbound translation extended address register 3 */
#define PEXOWBAR3 0xC68 /* PCI Express outbound window base address register 3 */
#define PEXOWAR3 0xC70 /* PCI Express outbound window attributes register 3 */
/* Outbound Window 4 */
#define PEXOTAR4 0xC80 /* PCI Express outbound translation address register 4 */
#define PEXOTEAR4 0xC84 /* PCI Express outbound translation extended address register 4 */
#define PEXOWBAR4 0xC88 /* PCI Express outbound window base address register 4 */
#define PEXOWAR4 0xC90 /* PCI Express outbound window attributes register 4 */
/* Inbound Window 3 */
#define PEXITAR3 0xDA0 /* PCI Express inbound translation address register 3 */
#define PEXIWBAR3 0xDA8 /* PCI Express inbound window base address register 3 */
#define PEXIWBEAR3 0xDAC /* PCI Express inbound window base extended address register 3 */
#define PEXIWAR3 0xDB0 /* PCI Express inbound window attributes register 3 */
/* Inbound Window 2 */
#define PEXITAR2 0xDC0 /* PCI Express inbound translation address register 2 */
#define PEXIWBAR2 0xDC8 /* PCI Express inbound window base address register 2 */
#define PEXIWBEAR2 0xDCC /* PCI Express inbound window base extended address register 2 */
#define PEXIWAR2 0xDD0 /* PCI Express inbound window attributes register 2 */
/* Inbound Window 1 */
#define PEXITAR1 0xDE0 /* PCI Express inbound translation address register 1 */
#define PEXIWBAR1 0xDE8 /* PCI Express inbound window base address register 1 */
#define PEXIWAR1 0xDF0 /* PCI Express inbound window attributes register 1 */
/* PCI Express Error Management Registers */
#define PEX_ERR_DR 0xE00 /* PCI Express error detect register */
#define PEXERRDR_ICCA __PPCBIT(14)
#define PEX_ERR_EN 0xE08 /* PCI Express error interrupt enable register */
#define PEX_ERR_DISR 0xE10 /* PCI Express error disable register */
#define PEX_ERR_CAP_STAT 0xE20 /* PCI Express error capture status register */
#define PEX_ERR_CAP_R0 0xE28 /* PCI Express error capture register 0 */
#define PEX_ERR_CAP_R1 0xE2C /* PCI Express error capture register 1 */
#define PEX_ERR_CAP_R2 0xE30 /* PCI Express error capture register 2 */
#define PEX_ERR_CAP_R3 0xE34 /* PCI Express error capture register 3 */
/* PCI Express Private Configuration Space */
#define PEX_LTSSM 0x404
#define LTSSM_L0 16
#define PCI_PBFR 0x44 /* Bus Function Register */
#define PBFR_PAH __BIT(0)
#endif /* PCI_PRIVATE */
#define OPENPIC_BASE 0x40000
#define OPENPIC_SIZE 0x40000
#define L2CACHE_BASE 0x20000
#define L2CACHE_SIZE 0x01000
#ifdef L2CACHE_PRIVATE
#define L2CTL 0x000
#define L2CTL_L2E __PPCBIT(0)
#define L2CTL_L2I __PPCBIT(1)
#define L2CTL_L2SIZ __PPCBITS(2,3)
#define L2CTL_L2SIZ_GET(x) (1 << (17 + __SHIFTOUT((x), L2CTL_L2SIZ)))
#define L2CTL_L2DO __PPCBIT(9)
#define L2CTL_L2IO __PPCBIT(10)
#define L2CTL_L2INTDIS __PPCBIT(12)
#define L2CTL_L2SRAM __PPCBITS(13,15)
#define L2CTL_L2LO __PPCBIT(18)
#define L2CTL_L2SLC __PPCBIT(19)
#define L2CTL_L2LFR __PPCBIT(21)
#define L2CTL_L2LFRID __PPCBITS(22,23)
#define L2CTL_L2STASHDIS __PPCBIT(28)
#define L2CTL_L2STASH __PPCBITS(30,31)
#endif /* L2CACHE_PRIVATE */
#define I2C1_BASE 0x3000
#define I2C2_BASE 0x3100
#define I2C_SIZE 0x0100
#ifdef I2C_PRIVATE
#define I2CADR 0x000 /* i2c address register */
#define I2CFDR 0x004 /* i2c frequency divider register */
#define I2CCR 0x008 /* i2c control register */
#define I2CSR 0x00c /* i2c status register */
#define I2CDR 0x010 /* i2c data register */
#define I2CDFSSR 0x014 /* i2c address register */
#endif /* I2C_PRIVATE */
#define DUART1_BASE 0x4500
#define DUART2_BASE 0x4600
#define DUART_SIZE 0x0100
#define SPI_BASE 0x7000 /* MPC8536 */
#define SPI_SIZE 0x1000
#ifdef SPI_PRIVATE
#define SPMODE 0x000 /* mode register */
#define SPMODE_EN __PPCBIT(0) /* Enable eSPI: 0=disabled, 1=enabled */
#define SPMODE_LOOP __PPCBIT(1) /* Loop mode: 0=normal, 1=loopback */
#define SPMODE_OD __PPCBIT(2) /* P1023: Open drain mode: 0=actively driven, 1=open drain */
#define SPMODE_HO_ADJ __PPCBITS(13,15) /* Data output hold adjustment */
#define SPMODE_TXTHR __PPCBITS(18,23) /* Tx FIFO Threshold: 1-32 */
#define SPMODE_RXTHR __PPCBITS(27,31) /* Rx FIFO threshold: 0-31 */
#define SPIE 0x004 /* event register */
#define SPIE_RXCNT __PPCBITS(2,7) /* current number of full Rx FIFO bytes */
#define SPIE_TXCNT __PPCBITS(10,15) /* current number of full Tx FIFO bytes */
#define SPIE_TXE __PPCBIT(16) /* Tx FIFO is empty */
#define SPIE_DON __PPCBIT(17) /* Last character was transmitted */
#define SPIE_RXT __PPCBIT(18) /* Rx FIFO has more than RXTHR bytes */
#define SPIE_RXF __PPCBIT(19) /* Rx FIFO is full */
#define SPIE_TXT __PPCBIT(20) /* Tx FIFO has less than TXTHR bytes */
#define SPIE_RNE __PPCBIT(22) /* Not empty: 0=empty, 1=not empty */
#define SPIE_TNF __PPCBIT(23) /* Tx FIFO not full: 0=full, 1=not full */
#define SPIM 0x008 /* mask register */
#define SPIM_TXE __PPCBIT(16)
#define SPIM_DON __PPCBIT(17)
#define SPIM_RXT __PPCBIT(18)
#define SPIM_RXF __PPCBIT(19)
#define SPIM_TXT __PPCBIT(20)
#define SPIM_RNE __PPCBIT(22)
#define SPIM_TNF __PPCBIT(23)
#define SPCOM 0x00c /* command register */
#define SPCOM_CS __PPCBITS(0,1) /* Chip select: 0=CS0, 1=CS1, 2=CS2(P1025), 3=CS3(P1025) */
#define SPCOM_RXDELAY __PPCBIT(2) /* 0=normal eSPI operation */
#define SPCOM_DO __PPCBIT(3) /* 0=normal eSPI operation, 1=Winbond dual output read */
#define SPCOM_TO __PPCBIT(4) /* Transmit only: 0=normal operation, 1=No reception is done for the frame */
#define SPCOM_HLD __PPCBIT(5) /* 0=normal operation, 1=Mask first generated SPI_CLK */
#define SPCOM_LS __PPCBIT(6) /* P1023: Late sample: 0=normal operation, 1=Late data sample */
#define SPCOM_RXSKIP __PPCBITS(8,15) /* if RxSKIP != 0: Number of characters skipped for reception from frame start */
#define SPCOM_TRANLEN __PPCBITS(16,31) /* Transaction length */
#define SPITF 0x010 /* transmit FIFO access register */
#define SPIRF 0x014 /* receive FIFO access register */
#define SPMODE0 0x020 /* CS0 mode register */
#define SPMODE1 0x024 /* CS1 mode register */
#define SPMODE2 0x028 /* CS2 mode register (P1025) */
#define SPMODE3 0x02c /* CS3 mode register (P1025) */
#define SPMODEn(n) (0x020+(n)*4)
#define SPMODEn_CI __PPCBIT(0) /* Clock invert: 0=inactive state of SPI_CLK is low, 1=high */
#define SPMODEn_CP __PPCBIT(1) /* Clock phase: SPI_CLK starts toggling at the middle of the data transfer, 1=beginning */
#define SPMODEn_REV __PPCBIT(2) /* Reverse data mode: 0=LSB of the character sent and received first, 1=MSB */
#define SPMODEn_DIV16 __PPCBIT(3) /* Divide by 16: 0=System clock, 1=System clock/16 */
#define SPMODEn_PM __PPCBITS(4,7) /* Prescale modulus select */
#define SPMODEn_ODD __PPCBIT(8) /* 0=Even division, 1=Odd dividion */
#define SPMODEn_POL __PPCBIT(11) /* CS polarity: 0=Asserted high/Negated low, 1=Asserted low/Negated high */
#define SPMODEn_LEN __PPCBITS(12,15) /* Character length in bits per character */
#define SPMODEn_CSBEF __PPCBITS(16,19) /* CS assertion time in bits before frame start */
#define SPMODEn_CSAFT __PPCBITS(20,23) /* CS assertion time in bits after frame end */
#define SPMODEn_CSCG __PPCBITS(24,28) /* Clock gap */
#endif
#define SATA1_BASE 0x18000 /* MPC8536 */
#define SATA2_BASE 0x19000 /* MPC8536 */
#define SATA_SIZE 0x01000
#define USB1_BASE 0x22100 /* MPC8536 */
#define USB2_BASE 0x23100 /* MPC8536 */
#define USB3_BASE 0x2b100 /* MPC8536 */
#define USB_SNOOP1 0x0300 /* DMA Snooping Register 1 */
#define USB_SNOOP2 0x0304 /* DMA Snooping Register 2 */
#define USB_CONTROL 0x0400 /* USB General Purpose Register */
#define USB_EN __PPCBIT(29)
#define USB_ULPI_INT_EN __PPCBIT(31)
#define USB_SIZE 0x00f00
#define SNOOP_2GB 0x1e
#define ETSEC1_BASE 0x24000
#define ETSEC2_BASE 0x25000
#define ETSEC3_BASE 0x26000
#define ETSEC4_BASE 0x27000
#define ETSEC1_G0_BASE 0xB0000
#define ETSEC2_G0_BASE 0xB1000
#define ETSEC3_G0_BASE 0xB2000
#define ETSEC1_G1_BASE 0xB4000
#define ETSEC2_G1_BASE 0xB5000
#define ETSEC3_G1_BASE 0xB6000
#define ETSEC_SIZE 0x01000
#define ESDHC_BASE 0x2e000
#define ESDHC_SIZE 0x01000
#ifdef ESDHC_PRIVATE
#define DCR 0x40c /* DMA Control Register */
#define DCR_SNOOP __PPCBIT(25) /* DMA transactions are snooped */
#define DCR_RD_SAFE __PPCBIT(29) /* memory is read safe */
#define DCR_RD_PFE __PPCBIT(30) /* memory is prefetch safe */
#define DCR_RD_PF_SIZE __PPCBIT(31) /* prefetch size is 32-bytes */
#endif
#define GLOBAL_BASE 0xe0000
#define GLOBAL_SIZE 0x01000
#ifdef GLOBAL_PRIVATE
/* Power-On Reset Configuration Values */
#define PORPLLSR 0x000 /* POR PLL ratio status register */
#define E500_RATIO2 __PPCBITS(2,7)
#define E500_RATIO2_GET(n) __SHIFTOUT(n, E500_RATIO2)
#define E500_RATIO __PPCBITS(10,15)
#define E500_RATIO_GET(n) __SHIFTOUT(n, E500_RATIO)
#define PCI1_CLK_SEL __PPCBIT(16)
#define PCI2_CLK_SEL __PPCBIT(17)
#define PLAT_RATIO __PPCBITS(26,30)
#define PLAT_RATIO_GET(n) __SHIFTOUT(n, PLAT_RATIO)
#define PORBMSR 0x004 /* POR boot mode status register */
#define PORBMSR_BCFG __PPCBITS(0,1)
#define PORBMSR_HA __PPCBITS(13,15)
#define PORBMSR_HA_GET(n) __SHIFTOUT(m, PORBMSR_HA)
#define PORBMSR_HA_PEXSRIO_AGENT 0 /* PCI Express & SRIO agent mode */
#define PORBMSR_HA_SRIO_AGENT 1 /* SRIO agent mode */
#define PORBMSR_HA_PEX_AGENT 2 /* PCI Express agent mode */
#define PORBMSR_HA_PEXPCI_AGENT2 3 /* PCI[-X] & PCI Express agent mode */
#define PORBMSR_HA_PCISRIO_AGENT2 4 /* PCI[-X] & SRIO mode */
#define PORBMSR_HA_SRIO_AGENT2 5 /* SRIO agent mode */
#define PORBMSR_HA_PCI_AGENT2 6 /* PCI[-X] agent mode */
#define PORBMSR_HA_HOST 7 /* Host mode */
#define PORIMPSCR 0x008 /* POR I/O impedance status and control register */
#define PORDEVSR 0x00C /* POR I/O device status register */
#define PORDEVSR_ECW1 __PPCBIT(0)
#define PORDEVSR_ECW2 __PPCBIT(1)
#define PORDEVSR_SGMII1_DIS1 __PPCBIT(2)
#define PORDEVSR_SGMII1_DIS2 __PPCBIT(3)
#define PORDEVSR_SGMII1_DIS3 __PPCBIT(4)
#define PORDEVSR_SGMII1_DIS4 __PPCBIT(5)
#define PORDEVSR_ECP1 __PPCBITS(6,7)
#define PORDEVSR_PCI1 __PPCBIT(8)
#define PCI1_PCIX 0
#define PCI1_PCI1 1
#define PORDEVSR_IOSEL_P1023 __PPCBITS(9,10)
#define IOSEL_P1023_PCIE12_X1 0
#define IOSEL_P1023_PCIE123_X1 1
#define IOSEL_P1023_PCIE123_X1_SGMII2 2
#define IOSEL_P1023_PCIE12_X1_SGMII12 3
#define PORDEVSR_IOSEL __PPCBITS(9,12)
#define IOSEL_MPC8536_OFF 0x01
#define IOSEL_MPC8536_PCIE1_X4 0x02
#define IOSEL_MPC8536_PCIE1_X8 0x03
#define IOSEL_MPC8536_PCIE12_X4 0x05
#define IOSEL_MPC8536_PCIE1_X4_PCI23_X2 0x07
#define IOSEL_MPC8544_OFF 0x00
#define IOSEL_MPC8544_SGMII_ON 0x01
#define IOSEL_MPC8544_PCIE1_ON 0x02
#define IOSEL_MPC8544_PCIE1_SGMII_ON 0x03
#define IOSEL_MPC8544_PCIE12_ON 0x04
#define IOSEL_MPC8544_PCIE12_SGMII_ON 0x05
#define IOSEL_MPC8544_PCIE123_ON 0x06
#define IOSEL_MPC8544_PCIE123_SGMII_ON 0x07
#define IOSEL_MPC8548_SRIO2500_PCIE1_X4 3
#define IOSEL_MPC8548_SRIO1250_PCIE1_X4 4
#define IOSEL_MPC8548_SRIO3125 5
#define IOSEL_MPC8548_SRIO1250 6
#define IOSEL_MPC8548_PCIE1_X8 7
#define IOSEL_MPC8572_PCIE1_X4 2
#define IOSEL_MPC8572_PCIE12_X4 3
#define IOSEL_MPC8572_SRIO2500 6
#define IOSEL_MPC8572_PCIE1_X4_23_X2 7
#define IOSEL_MPC8572_SRIO2500_PCIE1_X4 11
#define IOSEL_MPC8572_SRIO1250_PCIE1_X4 12
#define IOSEL_MPC8572_SRIO3125 13
#define IOSEL_MPC8572_SRIO1250 14
#define IOSEL_MPC8572_PCIE1_X8 15
#define IOSEL_P20x0_PCIE1_X1 0
#define IOSEL_P20x0_PCIE12_X1_3_X2 2
#define IOSEL_P20x0_PCIE13_X2 4
#define IOSEL_P20x0_PCIE1_X4 6
#define IOSEL_P20x0_PCIE1_X1_SRIO2500_1X 13
#define IOSEL_P20x0_PCIE12_X1_SGMII23 14
#define IOSEL_P20x0_PCIE1_X2_SGMII23 15
#define IOSEL_P1025_PCIE1_X1 0 /* same at P20x10 */
#define IOSEL_P1025_PCIE1_X4 6 /* same at P20x10 */
#define IOSEL_P1025_PCIE12_X1_SGMII23 14 /* same at P20x10 */
#define IOSEL_P1025_PCIE1_X2_SGMII23 15 /* same at P20x10 */
#define PORDEVSR_PCI2_ARB __PPCBIT(13)
#define PORDEVSR_PCI1_ARB __PPCBIT(14)
#define PORDEVSR_PCI32 __PPCBIT(15)
#define PCI32_FALSE 0
#define PCI32_TRUE 1
#define PORDEVSR_PCI1_SPD __PPCBIT(16)
#define PORDEVSR_PCI2_SPD __PPCBIT(17)
#define PORDEVSR_SYS_SPD __PPCBIT(17) /* MPC8536 */
#define PORDEVSR_CORE_SPD __PPCBIT(18) /* MPC8536 */
#define PORDEVSR_ECP2 __PPCBITS(18,19)
#define PORDEVSR_ECP3 __PPCBITS(20,21)
#define PORDEVSR_ECP4 __PPCBITS(22,23)
#define PORDEVSR_FEC_DIS __PPCBIT(24)
#define PORDEVSR_RTPE __PPCBIT(25)
#define PORDEVSR_RIO_CTLS __PPCBIT(28)
#define PORDEVSR_DEV_ID __PPCBITs(29,31)
#define PORDBGMSR 0x010 /* POR debug mode status register */
#define PORDEVSR2 0x014 /* POR I/O device status register 2 */
#define GPPORCR 0x020 /* General-purpose POR configuration register */
/* Signal Multiplexing and GPIO Controls */
#define GPIOCR 0x030 /* GPIO control register */
#define GPIOCR_TX2 __PPCBIT(6) /* Enable TSEC2_TX[7:0] as GP output */
#define GPIOCR_RX2 __PPCBIT(7) /* Enable TSEC2_RX[7:0] as GP input */
#define GPIOCR_PCIOUT __PPCBIT(14) /* Enable PCI2_AD[15:8] as GP output */
#define GPIOCR_PCIIN __PPCBIT(15) /* Enable PCI2_AD[7:0] as GP input */
#define GPIOCR_GPOUT __PPCBIT(22) /* Enable GPOUT[24:31] as GP output */
#define GPOUTDR 0x040 /* General-purpose output data register */
#define GPOUTDR_TX2 0x040 /* General-purpose output data register */
#define GPOUTDR_PCI 0x041 /* General-purpose output data register */
#define GPOUTDR_GPOUT 0x043 /* General-purpose output data register */
#define GPINDR 0x050 /* General-purpose input data register */
#define GPINDR_RX2 0x059
#define GPINDR_PCI 0x051
#define PMUXCR 0x060 /* Alternate function signal multiplex control */
#define PMUXCR_SD_DATA __PPCBIT(0)
#define PMUXCR_SDHC_CD __PPCBIT(1)
#define PMUXCR_SDHC_WP __PPCBIT(2)
#define PMUXCR_PCI_REQGNT3 __PPCBIT(3)
#define PMUXCR_TSEC1_TS __PPCBIT(3)
#define PMUXCR_PCI_REQGNT4 __PPCBIT(4)
#define PMUXCR_TSEC2_TS __PPCBIT(4)
#define PMUXCR_USB1 __PPCBIT(5)
#define PMUXCR_TSEC3_TS __PPCBIT(5)
#define PMUXCR_USB2 __PPCBIT(6)
#define PMUXCR_USB_PCTL __PPCBITS(6,5)
#define PMUXCR_USB __PPCBIT(6)
#define PMUXCR_TSEC1 __PPCBIT(14)
#define PMUXCR_DMA0 __PPCBIT(14)
#define PMUXCR_DMA2 __PPCBIT(15)
#define PMUXCR_QE0 __PPCBIT(16)
#define PMUXCR_QE1 __PPCBIT(17)
#define PMUXCR_QE2 __PPCBIT(18)
#define PMUXCR_QE3 __PPCBIT(19)
#define PMUXCR_QE8 __PPCBIT(24)
#define PMUXCR_QE9 __PPCBIT(25)
#define PMUXCR_QE10 __PPCBIT(26)
#define PMUXCR_QE11 __PPCBIT(27)
#define PMUXCR_QE12 __PPCBIT(28)
#define PMUXCR_DMA1 __PPCBIT(30)
#define PMUXCR_DMA3 __PPCBIT(31)
#define PMUXCR2 0x064 /* Alternate function signal multiplex control2 */
/* Device Disables */
#define DEVDISR 0x070 /* Device disable control */
#define DEVDISR_PCI1 __PPCBIT(0)
#define DEVDISR_QMAN_BMAN __PPCBIT(0) /* P1023 */
#define DEVDISR_PCI2 __PPCBIT(1)
#define DEVDISR_FMAN __PPCBIT(1) /* P1023 */
#define DEVDISR_PCIE __PPCBIT(2)
#define DEVDISR_MACSEC __PPCBIT(3) /* P1023 */
#define DEVDISR_LBC __PPCBIT(4)
#define DEVDISR_PCIE2 __PPCBIT(5)
#define DEVDISR_PCIE3 __PPCBIT(6)
#define DEVDISR_SEC __PPCBIT(7)
#define DEVDISR_PME __PPCBIT(8)
#define DEVDISR_USB1 __PPCBIT(8) /* MPC8536 */
#define DEVDISR_TLU1 __PPCBIT(9)
#define DEVDISR_USB2 __PPCBIT(9) /* MPC8536 */
#define DEVDISR_TLU2 __PPCBIT(10)
#define DEVDISR_ESDHC_10 __PPCBIT(10)
#define DEVDISR_USB3 __PPCBIT(10) /* MPC8536 */
#define DEVDISR_L2 __PPCBIT(11) /* MPC8536 */
#define DEVDISR_SRIO __PPCBIT(12)
#define DEVDISR_ESDHC_12 __PPCBIT(12) /* MPC8536 */
#define DEVDISR_RMSG __PPCBIT(13)
#define DEVDISR_SATA1 __PPCBIT(13) /* MPC8536 */
#define DEVDISR_DDR2_14 __PPCBIT(14)
#define DEVDISR_DDR_15 __PPCBIT(15)
#define DEVDISR_SPI_15 __PPCBIT(15) /* MPC8536 */
#define DEVDISR_E500 __PPCBIT(16)
#define DEVDISR_DDR_16 __PPCBIT(16) /* MPC8536 */
#define DEVDISR_TB __PPCBIT(17)
#define DEVDISR_E500_1 __PPCBIT(18)
#define DEVDISR_TB_1 __PPCBIT(19)
#define DEVDISR_SATA2 __PPCBIT(20) /* MPC8536 */
#define DEVDISR_DMA __PPCBIT(21)
#define DEVDISR_DMA2 __PPCBIT(22)
#define DEVDISR_SRDS2 __PPCBIT(22) /* MPC8536 */
#define DEVDISR_TSEC1 __PPCBIT(24)
#define DEVDISR_TSEC2 __PPCBIT(25)
#define DEVDISR_TSEC3 __PPCBIT(26)
#define DEVDISR_TSEC4 __PPCBIT(27)
#define DEVDISR_FEC __PPCBIT(28)
#define DEVDISR_SPI_28 __PPCBIT(28) /* P2020 */
#define DEVDISR_I2C __PPCBIT(29)
#define DEVDISR_DUART __PPCBIT(30)
#define DEVDISR_SRDS1 __PPCBIT(31) /* MPC8536 */
/* Power Management Registers */
#define POWMGTCSR 0x080 /* Power management status and control register */
/* Interrupt and Reset Status and Control */
#define MCPSUMR 0x090 /* Machine check summary register */
#define RSTRSCR 0x094 /* Reset request status and control register */
/* Version Registers */
#define PVR 0x0A0 /* Processor version register */
#define SVR 0x0A4 /* System version register */
/* Control Pin Registers (GPIO) for P1025 */
#define CPBASE(n) (0x100+0x20*(n)) /* Control Pin (GPIO) base */
#define CPODR 0x0000 /* Open Drain */
#define CPDAT 0x0004 /* Output Data */
#define CPDIR1 0x0008 /* Direction1 */
#define CPDIR2 0x000c /* Direction2 */
#define CPPAR1 0x0010 /* Pin Assignment1 */
#define CPPAR2 0x0014 /* Pin Assignment2 */
#define CPDIR_DIS 0
#define CPDIR_OUT 1
#define CPDIR_IN 2
#define CPDIR_INOUT 3
#define CPPAR_FUNC0 0
#define CPPAR_FUNC1 1
#define CPPAR_FUNC2 2
#define CPPAR_FUNC3 3
/* Status Registers */
#define RSTCR 0x0B0 /* Reset control register */
#define HRESET_REQ __PPCBIT(30) /* hardware reset request */
#define LBCVSELCR 0x0C0 /* LBC voltage select control register */
#define DDRCSR 0xB20 /* DDR calibration status register */
#define DDRCDR 0xB24 /* DDR control driver register */
#define DDRCLKDR 0xB28 /* DDR clock disable register */
/* Debug Control */
#define CLKOCR 0xE00 /* Clock out control register */
#define SRDSCR0 0xF04 /* LSerDes control register 0 */
#define SRDSCR1 0xF08 /* LSerDes control register 1 */
#define TSEC12IOOVCR 0xF28 /* eTSEC 1 & 2 overdrive control register */
#define TSEC34IOOVCR 0xF2C /* eTSEC 3 & 4 overdrive control register */
#endif /* GLOBAL_PRIVATE */
#define LBC_BASE 0x5000
#define LBC_SIZE 0x0fff
#ifdef LBC_PRIVATE
#define BR_BA __PPCBITS(0,16)
#define BR_XBA __PPCBITS(17,18)
#define BR_PS __PPCBITS(19,20)
#define BR_PS_8BIT __SHIFTIN(1,BR_PS)
#define BR_PS_16BIT __SHIFTIN(2,BR_PS)
#define BR_PS_32BIT __SHIFTIN(3,BR_PS)
#define BR_DECC __PPCBITS(21,22)
#define BR_DECC_NONE __SHIFTIN(0,BR_DECC)
#define BR_DECC_PARITY __SHIFTIN(1,BR_DECC)
#define BR_DECC_RMWPAR __SHIFTIN(2,BR_DECC)
#define BR_WP __PPCBIT(23)
#define BR_MSEL __PPCBITS(24,26)
#define BR_MSEL_GPCM __SHIFTIN(0,BR_MSEL)
#define BR_MSEL_FCM __SHIFTIN(1,BR_MSEL)
#define BR_MSEL_SDRAM __SHIFTIN(3,BR_MSEL)
#define BR_MSEL_UPMA __SHIFTIN(4,BR_MSEL)
#define BR_MSEL_UPMB __SHIFTIN(5,BR_MSEL)
#define BR_MSEL_UPMC __SHIFTIN(6,BR_MSEL)
#define BR_ATOM __PPCBITS(28,29)
#define BR_ATOM_NONE __SHIFTIN(0,BR_ATOM)
#define BR_ATOM_RAWA __SHIFTIN(1,BR_ATOM)
#define BR_ATOM_WARA __SHIFTIN(2,BR_ATOM)
#define BR_V __PPCBIT(31)
#define OR_AM __PPCBITS(0,16)
#define OR_XAM __PPCBITS(17,18)
#define OR_BCTLD __PPCBIT(19)
#define OR_CSNT __PPCBIT(20)
#define OR_ACS __PPCBITS(21,22)
#define OR_XACS __PPCBIT(23)
#define OR_SCY __PPCBITS(24,27)
#define OR_SETA __PPCBIT(28)
#define OR_TRLX __PPCBIT(29)
#define OR_EHTR __PPCBIT(30)
#define OR_EAD __PPCBIT(31)
#define BRn(n) (BR0 + 8*(n))
#define ORn(n) (OR0 + 8*(n))
#define BR0 0x000 /* Base register 0 */
#define OR0 0x004 /* Options register 0 */
#define BR1 0x008 /* Base register 1 */
#define OR1 0x00C /* Options register 1 */
#define BR2 0x010 /* Base register 2 */
#define OR2 0x014 /* Options register 2 */
#define BR3 0x018 /* Base register 3 */
#define OR3 0x01C /* Options register 3 */
#define BR4 0x020 /* Base register 4 */
#define OR4 0x024 /* Options register 4 */
#define BR5 0x028 /* Base register 5 */
#define OR5 0x02C /* Options register 5 */
#define BR6 0x030 /* Base register 6 */
#define OR6 0x034 /* Options register 6 */
#define BR7 0x038 /* Base register 7 */
#define OR7 0x03C /* Options register 7 */
#define MAR 0x068 /* UPM address register */
#define MAMR 0x070 /* UPMA mode register */
#define MBMR 0x074 /* UPMB mode register */
#define MCMR 0x078 /* UPMC mode register */
#define MRTPR 0x084 /* Memory refresh timer prescaler register */
#define MDR 0x088 /* UPM/FCM data register */
#define MDR_AS3 __PPCBITS(0,7)
#define MDR_AS2 __PPCBITS(8,15)
#define MDR_AS1 __PPCBITS(16,23)
#define MDR_AS0 __PPCBITS(24,31)
#define LSOR 0x090 /* Special Operation Initiation register */
#define LSDMR 0x094 /* SDRAM mode register */
#define LURT 0x0A0 /* UPM refresh timer */
#define LSRT 0x0A4 /* SDRAM refresh timer */
#define LTESR 0x0B0 /* Transfer error status register */
#define LTESR_BM __PPCBIT(0)
#define LTESR_FCT __PPCBIT(1)
#define LTESR_PAR __PPCBIT(2)
#define LTESR_WP __PPCBIT(5)
#define LTESR_ATMW __PPCBIT(8)
#define LTESR_ATMR __PPCBIT(9)
#define LTESR_CS __PPCBIT(12)
#define LTESR_UCC __PPCBIT(30)
#define LTESR_CC __PPCBIT(31)
#define LTEDR 0x0B4 /* Transfer error disable register */
#define LTEDR_BMD __PPCBIT(0)
#define LTEDR_FCTD __PPCBIT(1)
#define LTEDR_PARD __PPCBIT(2)
#define LTEDR_WPD __PPCBIT(5)
#define LTEDR_WARA __PPCBIT(8)
#define LTEDR_RAWA __PPCBIT(9)
#define LTEDR_CSD __PPCBIT(12)
#define LTEDR_UCCD __PPCBIT(30)
#define LTEDR_CCD __PPCBIT(31)
#define LTEIR 0x0B8 /* Transfer error interrupt register */
#define LTEIR_BMI __PPCBIT(0)
#define LTEIR_FCTI __PPCBIT(1)
#define LTEIR_PARI __PPCBIT(2)
#define LTEIR_WPI __PPCBIT(5)
#define LTEIR_WARA __PPCBIT(8)
#define LTEIR_RAWA __PPCBIT(9)
#define LTEIR_CSI __PPCBIT(12)
#define LTEIR_UCCI __PPCBIT(30)
#define LTEIR_CCI __PPCBIT(31)
#define LTEATR 0x0BC /* Transfer error attributes register */
#define LTEATR_RWB __PPCBIT(3)
#define LTEATR_SRCID __PPCBITS(11,15)
#define LTEATR_PB __PPCBITS(16,19)
#define LTEATR_BNK __PPCBITS(20,27)
#define LTEATR_V __PPCBIT(31)
#define LTEAR 0x0C0 /* Transfer error address register */
#define LTECCR 0x0C4 /* Transfer error ECC register */
#define LTECCR_SBCE __PPCBITS(12,15)
#define LTECCR_MBUE __PPCBITS(28,31)
#define LBCR 0x0D0 /* Configuration register */
#define LCRR 0x0D4 /* Clock ratio register */
#define FMR 0x0E0 /* Flash Mode Register */
#define FMR_CWTO __PPCBITS(16,19)
#define FMR_BOOT __PPCBIT(20)
#define FMR_ECCM __PPCBIT(23)
#define FMR_AL __PPCBITS(26,27)
#define FMR_OP __PPCBITS(30,31)
#define FIR 0x0E4 /* Flash Instruction Register */
#define FIR_OP0 __PPCBITS(0,3)
#define FIR_OP1 __PPCBITS(4,7)
#define FIR_OP2 __PPCBITS(8,11)
#define FIR_OP3 __PPCBITS(12,15)
#define FIR_OP4 __PPCBITS(16,19)
#define FIR_OP5 __PPCBITS(20,23)
#define FIR_OP6 __PPCBITS(24,27)
#define FIR_OP7 __PPCBITS(28,31)
#define FIR_OP_NOP 0
#define FIR_OP_CA 1 /* Issue current column address */
#define FIR_OP_PA 2 /* Issue current block+page address */
#define FIR_OP_UA 3 /* Issue user-defined address byte */
#define FIR_OP_CM0 4 /* Issue command from FCR[CMD0] */
#define FIR_OP_CM1 5 /* Issue command from FCR[CMD1] */
#define FIR_OP_CM2 6 /* Issue command from FCR[CMD2] */
#define FIR_OP_CM3 7 /* Issue command from FCR[CMD3] */
#define FIR_OP_WB 8 /* Write FBCR bytes of data */
#define FIR_OP_WS 9 /* Write one byte of data from MDR */
#define FIR_OP_RB 10 /* Read FBCR bytes of data */
#define FIR_OP_RS 11 /* Read one byte of data into MDR */
#define FIR_OP_CW0 12 /* Wait for LFRB then FCR[CMD0] */
#define FIR_OP_CW1 13 /* Wait for LFRB then FCR[CMD1] */
#define FIR_OP_RBW 14 /* Wait for LFRB then read FBCR bytes */
#define FIR_OP_RSW 15 /* Wait for LFRB then byte into MDR */
#define FCR 0xE8 /* Flash Command Register */
#define FCR_CMD0 __PPCBITS(0,7)
#define FCR_CMD1 __PPCBITS(8,15)
#define FCR_CMD2 __PPCBITS(16,23)
#define FCR_CMD3 __PPCBITS(24,31)
#define FBAR 0xEC /* Flash Block Address Register */
#define FBAR_BLK __PPCBITS(8,31)
#define FPAR 0xF0 /* Flash Page Address Register */
#define FPAR_S_PI __PPCBITS(17,21) /* Page Index */
#define FPAR_S_MS __PPCBIT(22) /* Main(0)/Spare(1) */
#define FPAR_S_CI __PPCBITS(23,31) /* Column Index */
#define FPAR_L_PI __PPCBITS(14,19) /* Page Index */
#define FPAR_L_MS __PPCBIT(20) /* Main(0)/Spare(1) */
#define FPAR_L_CI __PPCBITS(21,31) /* Column Index */
#define FBCR 0xF4 /* Flash Byte Count Register */
#define FBCR_BC __PPCBITS(20,31)
#define FECC0 0x100
#define FECC_V __PPCBIT(0)
#define FECC_ECC __PPCBIT(8,31)
#define FECC1 0x104
#define FECC2 0x108
#define FECC3 0x10C
#define MXMR_RFEN __PPCBIT(1) /* Refresh enable */
#define MXMR_OP __PPCBITS(2,3) /* Command opcode */
#define MXMR_OP_NORMAL __SHIFTIN(0, MXMR_OP) /* Normal Operation */
#define MXMR_OP_WRITE __SHIFTIN(1, MXMR_OP) /* Write to UPM memory */
#define MXMR_OP_READ __SHIFTIN(2, MXMR_OP) /* Read from UPM memory */
#define MXMR_OP_RUN __SHIFTIN(3, MXMR_OP) /* Run Pattern */
#define MXMR_UWPL __PPCBIT(3) /* LUPWAIT is active low */
#define MXMR_AM __PPCBITS(5,7) /* Address multiplex size */
#define MXMR_DS __PPCBITS(8,9) /* Disable timer period */
#define MXMR_DS_1CYCLE __SHIFTIN(0,MXMR_DS)
#define MXMR_DS_2CYCLE __SHIFTIN(1,MXMR_DS)
#define MXMR_DS_3CYCLE __SHIFTIN(2,MXMR_DS)
#define MXMR_DS_4CYCLE __SHIFTIN(3,MXMR_DS)
#define MXMR_G0CL __PPCBITS(10,12) /* General line 0 control */
#define MXMR_G0CL_A12 __SHIFTIN(0,MXMR_G0CL)
#define MXMR_G0CL_A11 __SHIFTIN(1,MXMR_G0CL)
#define MXMR_G0CL_A10 __SHIFTIN(2,MXMR_G0CL)
#define MXMR_G0CL_A9 __SHIFTIN(3,MXMR_G0CL)
#define MXMR_G0CL_A8 __SHIFTIN(4,MXMR_G0CL)
#define MXMR_G0CL_A7 __SHIFTIN(5,MXMR_G0CL)
#define MXMR_G0CL_A6 __SHIFTIN(6,MXMR_G0CL)
#define MXMR_G0CL_A5 __SHIFTIN(7,MXMR_G0CL)
#define MXMR_GPL4 __PPCBIT(13) /* LGPL4 output line disable */
#define MXMR_RLF __PPCBITS(14,17) /* Read loop field */
#define MXMR_WLF __PPCBITS(18,21) /* Write loop field */
#define MXMR_TLF __PPCBITS(22,25) /* Refresh loop field */
#define MXMR_MAS __PPCBITS(26,31) /* Machine Address */
#define MRTPR_PTP __PPCBITS(0,7) /* Refresh timers prescaler */
#endif /* LBC_PRIVATE */
|