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#include <common.h>
31#include <74xx_7xx.h>
32#include "../include/memory.h"
33#include "../include/pci.h"
34#include "../include/mv_gen_reg.h"
35#include <net.h>
36#include <netdev.h>
37#include <linux/compiler.h>
38
39#include "eth.h"
40#include "mpsc.h"
41#include "i2c.h"
42#include "64360.h"
43#include "mv_regs.h"
44
45#undef DEBUG
46
47
48#define MAP_PCI
49
50#ifdef DEBUG
51#define DP(x) x
52#else
53#define DP(x)
54#endif
55
56
57
58
59
60
61
62
63
64
65
66
67void board_prebootm_init (void);
68unsigned int INTERNAL_REG_BASE_ADDR = CONFIG_SYS_GT_REGS;
69int display_mem_map (void);
70
71
72
73
74
75
76
77
78
79
80
81void my_remap_gt_regs (u32 cur_loc, u32 new_loc)
82{
83 u32 temp;
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101 temp = in_le32 ((u32 *) (new_loc + INTERNAL_SPACE_DECODE));
102 if ((temp & 0xffff) == new_loc >> 16)
103 return;
104
105 temp = (in_le32 ((u32 *) (cur_loc + INTERNAL_SPACE_DECODE)) &
106 0xffff0000) | (new_loc >> 16);
107
108 out_le32 ((u32 *) (cur_loc + INTERNAL_SPACE_DECODE), temp);
109
110 while (GTREGREAD (INTERNAL_SPACE_DECODE) != temp);
111}
112
113#ifdef CONFIG_PCI
114
115static void gt_pci_config (void)
116{
117 unsigned int stat;
118 unsigned int val = 0x00fff864;
119
120
121
122
123
124 if ((GTREGREAD (PCI_0_MODE) & (BIT4 | BIT5)) != 0) {
125 GT_REG_WRITE (PCI_0_CONFIG_ADDR, BIT31 | val);
126
127 GT_REG_READ (PCI_0_CONFIG_DATA_VIRTUAL_REG, &stat);
128
129 GT_REG_WRITE (PCI_0_CONFIG_ADDR, BIT31 | val);
130 GT_REG_WRITE (PCI_0_CONFIG_DATA_VIRTUAL_REG,
131 (stat & 0xffff0000) | CONFIG_SYS_PCI_IDSEL);
132
133 }
134 if ((GTREGREAD (PCI_1_MODE) & (BIT4 | BIT5)) != 0) {
135 GT_REG_WRITE (PCI_1_CONFIG_ADDR, BIT31 | val);
136 GT_REG_READ (PCI_1_CONFIG_DATA_VIRTUAL_REG, &stat);
137
138 GT_REG_WRITE (PCI_1_CONFIG_ADDR, BIT31 | val);
139 GT_REG_WRITE (PCI_1_CONFIG_DATA_VIRTUAL_REG,
140 (stat & 0xffff0000) | CONFIG_SYS_PCI_IDSEL);
141 }
142
143
144 PCI_MASTER_ENABLE (0, SELF);
145 PCI_MASTER_ENABLE (1, SELF);
146
147
148 GT_REG_READ (BASE_ADDR_ENABLE, &stat);
149 stat |= (1 << 11) | (1 << 12) | (1 << 13) | (1 << 16) | (1 << 17) | (1
150 <<
151 18);
152 stat &= ~((1 << 9) | (1 << 10) | (1 << 14) | (1 << 15));
153 GT_REG_WRITE (BASE_ADDR_ENABLE, stat);
154
155
156
157
158 GT_REG_WRITE (PCI_0_IO_BASE_ADDR, CONFIG_SYS_PCI0_IO_BASE >> 16);
159 GT_REG_WRITE (PCI_0I_O_ADDRESS_REMAP, CONFIG_SYS_PCI0_IO_BASE >> 16);
160 GT_REG_WRITE (PCI_0_IO_SIZE, (CONFIG_SYS_PCI0_IO_SIZE - 1) >> 16);
161
162 GT_REG_WRITE (PCI_0_MEMORY0_BASE_ADDR, CONFIG_SYS_PCI0_MEM_BASE >> 16);
163 GT_REG_WRITE (PCI_0MEMORY0_ADDRESS_REMAP, CONFIG_SYS_PCI0_MEM_BASE >> 16);
164 GT_REG_WRITE (PCI_0_MEMORY0_SIZE, (CONFIG_SYS_PCI0_MEM_SIZE - 1) >> 16);
165
166 GT_REG_WRITE (PCI_1_IO_BASE_ADDR, CONFIG_SYS_PCI1_IO_BASE >> 16);
167 GT_REG_WRITE (PCI_1I_O_ADDRESS_REMAP, CONFIG_SYS_PCI1_IO_BASE >> 16);
168 GT_REG_WRITE (PCI_1_IO_SIZE, (CONFIG_SYS_PCI1_IO_SIZE - 1) >> 16);
169
170 GT_REG_WRITE (PCI_1_MEMORY0_BASE_ADDR, CONFIG_SYS_PCI1_MEM_BASE >> 16);
171 GT_REG_WRITE (PCI_1MEMORY0_ADDRESS_REMAP, CONFIG_SYS_PCI1_MEM_BASE >> 16);
172 GT_REG_WRITE (PCI_1_MEMORY0_SIZE, (CONFIG_SYS_PCI1_MEM_SIZE - 1) >> 16);
173
174
175
176 GT_REG_WRITE (PCI_0TIMEOUT_RETRY, 0x0);
177 GT_REG_WRITE (PCI_1TIMEOUT_RETRY, 0x0);
178
179
180 GT_REG_WRITE (PCI_0BASE_ADDRESS_REGISTERS_ENABLE, 0xfffffdfe);
181 GT_REG_WRITE (PCI_1BASE_ADDRESS_REGISTERS_ENABLE, 0xfffffdfe);
182
183
184#ifdef MAP_PCI
185 for (stat = 0; stat <= PCI_HOST1; stat++)
186 pciWriteConfigReg (stat,
187 PCI_INTERNAL_REGISTERS_MEMORY_MAPPED_BASE_ADDRESS,
188 SELF, CONFIG_SYS_GT_REGS);
189#endif
190
191}
192#endif
193
194
195static void gt_cpu_config (void)
196{
197 cpu_t cpu = get_cpu_type ();
198 ulong tmp;
199
200
201 tmp = GTREGREAD (CPU_CONFIGURATION);
202
203
204#ifndef CONFIG_SYS_GT_DUAL_CPU
205 tmp |= CPU_CONF_SINGLE_CPU;
206#endif
207
208 tmp &= ~CPU_CONF_AACK_DELAY_2;
209
210 tmp |= CPU_CONF_DP_VALID;
211 tmp |= CPU_CONF_AP_VALID;
212
213 tmp |= CPU_CONF_PIPELINE;
214
215 GT_REG_WRITE (CPU_CONFIGURATION, tmp);
216
217
218 tmp = GTREGREAD (CPU_MASTER_CONTROL);
219
220 tmp |= CPU_MAST_CTL_ARB_EN;
221
222 if ((cpu == CPU_7400) ||
223 (cpu == CPU_7410) || (cpu == CPU_7455) || (cpu == CPU_7450)) {
224
225 tmp |= CPU_MAST_CTL_CLEAN_BLK;
226 tmp |= CPU_MAST_CTL_FLUSH_BLK;
227
228 } else {
229
230
231
232 tmp &= ~CPU_MAST_CTL_CLEAN_BLK;
233 tmp &= ~CPU_MAST_CTL_FLUSH_BLK;
234 }
235 GT_REG_WRITE (CPU_MASTER_CONTROL, tmp);
236}
237
238
239
240
241
242
243int board_early_init_f (void)
244{
245 uchar sram_boot = 0;
246
247
248
249
250
251
252
253
254
255 my_remap_gt_regs (CONFIG_SYS_DFL_GT_REGS, CONFIG_SYS_GT_REGS);
256
257
258#ifdef CONFIG_PCI
259 gt_pci_config ();
260#endif
261
262 GT_REG_WRITE (CPU_INTERRUPT_MASK_REGISTER_LOW, 0);
263 GT_REG_WRITE (CPU_INTERRUPT_MASK_REGISTER_HIGH, 0);
264
265 GT_REG_WRITE (CPU_INTERRUPT_1_MASK_REGISTER_LOW, 0);
266 GT_REG_WRITE (CPU_INTERRUPT_1_MASK_REGISTER_HIGH, 0);
267
268 GT_REG_WRITE (PCI_0INTERRUPT_CAUSE_MASK_REGISTER_LOW, 0);
269 GT_REG_WRITE (PCI_0INTERRUPT_CAUSE_MASK_REGISTER_HIGH, 0);
270 GT_REG_WRITE (PCI_1INTERRUPT_CAUSE_MASK_REGISTER_LOW, 0);
271 GT_REG_WRITE (PCI_1INTERRUPT_CAUSE_MASK_REGISTER_HIGH, 0);
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 if (memoryGetDeviceBaseAddress (DEVICE0) == CONFIG_SYS_DFL_BOOTCS_BASE)
302 sram_boot = 1;
303 if (!sram_boot)
304 memoryMapDeviceSpace (DEVICE0, CONFIG_SYS_DEV0_SPACE, CONFIG_SYS_DEV0_SIZE);
305
306 memoryMapDeviceSpace (DEVICE1, CONFIG_SYS_DEV1_SPACE, CONFIG_SYS_DEV1_SIZE);
307 memoryMapDeviceSpace (DEVICE2, CONFIG_SYS_DEV2_SPACE, CONFIG_SYS_DEV2_SIZE);
308 memoryMapDeviceSpace (DEVICE3, CONFIG_SYS_DEV3_SPACE, CONFIG_SYS_DEV3_SIZE);
309
310
311
312#ifdef CONFIG_SYS_DEV0_PAR
313 if (!sram_boot)
314 GT_REG_WRITE (DEVICE_BANK0PARAMETERS, CONFIG_SYS_DEV0_PAR);
315#endif
316
317#ifdef CONFIG_SYS_DEV1_PAR
318 GT_REG_WRITE (DEVICE_BANK1PARAMETERS, CONFIG_SYS_DEV1_PAR);
319#endif
320#ifdef CONFIG_SYS_DEV2_PAR
321 GT_REG_WRITE (DEVICE_BANK2PARAMETERS, CONFIG_SYS_DEV2_PAR);
322#endif
323
324#ifdef CONFIG_SYS_32BIT_BOOT_PAR
325
326 if (GTREGREAD (DEVICE_BOOT_BANK_PARAMETERS) & (0x3 << 20)) {
327
328 GT_REG_WRITE (DEVICE_BANK3PARAMETERS, CONFIG_SYS_8BIT_BOOT_PAR);
329 GT_REG_WRITE (DEVICE_BOOT_BANK_PARAMETERS,
330 CONFIG_SYS_32BIT_BOOT_PAR);
331 } else {
332
333 GT_REG_WRITE (DEVICE_BANK3PARAMETERS, CONFIG_SYS_32BIT_BOOT_PAR);
334 GT_REG_WRITE (DEVICE_BOOT_BANK_PARAMETERS, CONFIG_SYS_8BIT_BOOT_PAR);
335 }
336#else
337
338
339#endif
340
341
342 gt_cpu_config ();
343
344
345 GT_REG_WRITE (MPP_CONTROL0, CONFIG_SYS_MPP_CONTROL_0);
346 GT_REG_WRITE (MPP_CONTROL1, CONFIG_SYS_MPP_CONTROL_1);
347 GT_REG_WRITE (MPP_CONTROL2, CONFIG_SYS_MPP_CONTROL_2);
348 GT_REG_WRITE (MPP_CONTROL3, CONFIG_SYS_MPP_CONTROL_3);
349
350 GT_REG_WRITE (GPP_LEVEL_CONTROL, CONFIG_SYS_GPP_LEVEL_CONTROL);
351 DEBUG_LED0_ON ();
352 DEBUG_LED1_ON ();
353 DEBUG_LED2_ON ();
354
355 return 0;
356}
357
358
359
360int misc_init_r ()
361{
362 icache_enable ();
363#ifdef CONFIG_SYS_L2
364 l2cache_enable ();
365#endif
366#ifdef CONFIG_MPSC
367
368 mpsc_sdma_init ();
369 mpsc_init2 ();
370#endif
371
372#if 0
373
374 dcache_lock ();
375#endif
376 return 0;
377}
378
379void after_reloc (ulong dest_addr, gd_t * gd)
380{
381
382
383
384 if (memoryGetDeviceBaseAddress (DEVICE0) == CONFIG_SYS_DFL_BOOTCS_BASE) {
385 memoryMapDeviceSpace (DEVICE0, CONFIG_SYS_DEV0_SPACE, CONFIG_SYS_DEV0_SIZE);
386 memoryMapDeviceSpace (BOOT_DEVICE, CONFIG_SYS_DFL_BOOTCS_BASE, _8M);
387 }
388 display_mem_map ();
389
390 board_init_r (gd, dest_addr);
391
392}
393
394
395
396
397
398
399
400
401
402int checkboard (void)
403{
404 int l_type = 0;
405
406 printf ("BOARD: %s\n", CONFIG_SYS_BOARD_NAME);
407 return (l_type);
408}
409
410
411void debug_led (int led, int mode)
412{
413 volatile int *addr = 0;
414 __maybe_unused int dummy;
415
416 if (mode == 1) {
417 switch (led) {
418 case 0:
419 addr = (int *) ((unsigned int) CONFIG_SYS_DEV1_SPACE |
420 0x08000);
421 break;
422
423 case 1:
424 addr = (int *) ((unsigned int) CONFIG_SYS_DEV1_SPACE |
425 0x0c000);
426 break;
427
428 case 2:
429 addr = (int *) ((unsigned int) CONFIG_SYS_DEV1_SPACE |
430 0x10000);
431 break;
432 }
433 } else if (mode == 0) {
434 switch (led) {
435 case 0:
436 addr = (int *) ((unsigned int) CONFIG_SYS_DEV1_SPACE |
437 0x14000);
438 break;
439
440 case 1:
441 addr = (int *) ((unsigned int) CONFIG_SYS_DEV1_SPACE |
442 0x18000);
443 break;
444
445 case 2:
446 addr = (int *) ((unsigned int) CONFIG_SYS_DEV1_SPACE |
447 0x1c000);
448 break;
449 }
450 }
451
452 dummy = *addr;
453}
454
455int display_mem_map (void)
456{
457 int i, j;
458 unsigned int base, size, width;
459
460
461 printf ("SD (DDR) RAM\n");
462 for (i = 0; i <= BANK3; i++) {
463 base = memoryGetBankBaseAddress (i);
464 size = memoryGetBankSize (i);
465 if (size != 0) {
466 printf ("BANK%d: base - 0x%08x\tsize - %dM bytes\n",
467 i, base, size >> 20);
468 }
469 }
470
471
472 for (i = 0; i <= PCI_HOST1; i++) {
473 printf ("\nCPU's PCI %d windows\n", i);
474 base = pciGetSpaceBase (i, PCI_IO);
475 size = pciGetSpaceSize (i, PCI_IO);
476 printf (" IO: base - 0x%08x\tsize - %dM bytes\n", base,
477 size >> 20);
478 for (j = 0;
479 j <=
480 PCI_REGION0
481 ;
482 j++) {
483 base = pciGetSpaceBase (i, j);
484 size = pciGetSpaceSize (i, j);
485 printf ("MEMORY %d: base - 0x%08x\tsize - %dM bytes\n", j, base, size >> 20);
486 }
487 }
488
489
490 printf ("\nDEVICES\n");
491 for (i = 0; i <= DEVICE3; i++) {
492 base = memoryGetDeviceBaseAddress (i);
493 size = memoryGetDeviceSize (i);
494 width = memoryGetDeviceWidth (i) * 8;
495 printf ("DEV %d: base - 0x%08x size - %dM bytes\twidth - %d bits", i, base, size >> 20, width);
496 if (i == 0)
497 printf ("\t- EXT SRAM (actual - 1M)\n");
498 else if (i == 1)
499 printf ("\t- RTC\n");
500 else if (i == 2)
501 printf ("\t- UART\n");
502 else
503 printf ("\t- LARGE FLASH\n");
504 }
505
506
507 base = memoryGetDeviceBaseAddress (BOOT_DEVICE);
508 size = memoryGetDeviceSize (BOOT_DEVICE);
509 width = memoryGetDeviceWidth (BOOT_DEVICE) * 8;
510 printf (" BOOT: base - 0x%08x size - %dM bytes\twidth - %d bits\n",
511 base, size >> 20, width);
512 return (0);
513}
514
515
516
517#if defined (CONFIG_SYS_DRAM_TEST)
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539static void move64 (unsigned long long *src, unsigned long long *dest)
540{
541 asm ("lfd 0, 0(3)\n\t"
542 "stfd 0, 0(4)"
543 : : : "fr0");
544 return;
545}
546
547
548#if defined (CONFIG_SYS_DRAM_TEST_DATA)
549
550unsigned long long pattern[] = {
551 0xaaaaaaaaaaaaaaaaULL,
552 0xccccccccccccccccULL,
553 0xf0f0f0f0f0f0f0f0ULL,
554 0xff00ff00ff00ff00ULL,
555 0xffff0000ffff0000ULL,
556 0xffffffff00000000ULL,
557 0x00000000ffffffffULL,
558 0x0000ffff0000ffffULL,
559 0x00ff00ff00ff00ffULL,
560 0x0f0f0f0f0f0f0f0fULL,
561 0x3333333333333333ULL,
562 0x5555555555555555ULL,
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
609int mem_test_data (void)
610{
611 unsigned long long *pmem = (unsigned long long *) CONFIG_SYS_MEMTEST_START;
612 unsigned long long temp64 = 0;
613 int num_patterns = sizeof (pattern) / sizeof (pattern[0]);
614 int i;
615 unsigned int hi, lo;
616
617 for (i = 0; i < num_patterns; i++) {
618 move64 (&(pattern[i]), pmem);
619 move64 (pmem, &temp64);
620
621
622
623
624
625 hi = (pattern[i] >> 32) & 0xffffffff;
626 lo = pattern[i] & 0xffffffff;
627
628
629 if (temp64 != pattern[i]) {
630 printf ("\n Data Test Failed, pattern 0x%08x%08x",
631 hi, lo);
632 return 1;
633 }
634 }
635
636 return 0;
637}
638#endif
639
640#if defined (CONFIG_SYS_DRAM_TEST_ADDRESS)
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662int mem_test_address (void)
663{
664 volatile unsigned int *pmem =
665 (volatile unsigned int *) CONFIG_SYS_MEMTEST_START;
666 const unsigned int size = (CONFIG_SYS_MEMTEST_END - CONFIG_SYS_MEMTEST_START) / 4;
667 unsigned int i;
668
669
670 for (i = 0; i < size; i++) {
671 pmem[i] = i;
672 }
673
674
675 for (i = 0; i < size; i++) {
676 if (pmem[i] != i) {
677 printf ("\n Address Test Failed at 0x%x", i);
678 return 1;
679 }
680 }
681 return 0;
682}
683#endif
684
685#if defined (CONFIG_SYS_DRAM_TEST_WALK)
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
713int mem_march (volatile unsigned long long *base,
714 unsigned int size,
715 unsigned long long rmask,
716 unsigned long long wmask, short read, short write)
717{
718 unsigned int i;
719 unsigned long long temp = 0;
720 unsigned int hitemp, lotemp, himask, lomask;
721
722 for (i = 0; i < size; i++) {
723 if (read != 0) {
724
725 move64 ((unsigned long long *) &(base[i]), &temp);
726 if (rmask != temp) {
727 hitemp = (temp >> 32) & 0xffffffff;
728 lotemp = temp & 0xffffffff;
729 himask = (rmask >> 32) & 0xffffffff;
730 lomask = rmask & 0xffffffff;
731
732 printf ("\n Walking one's test failed: address = 0x%08x," "\n\texpected 0x%08x%08x, found 0x%08x%08x", i << 3, himask, lomask, hitemp, lotemp);
733 return 1;
734 }
735 }
736 if (write != 0) {
737
738 move64 (&wmask, (unsigned long long *) &(base[i]));
739 }
740 }
741 return 0;
742}
743#endif
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
771int mem_test_walk (void)
772{
773 unsigned long long mask;
774 volatile unsigned long long *pmem =
775 (volatile unsigned long long *) CONFIG_SYS_MEMTEST_START;
776 const unsigned long size = (CONFIG_SYS_MEMTEST_END - CONFIG_SYS_MEMTEST_START) / 8;
777
778 unsigned int i;
779
780 mask = 0x01;
781
782 printf ("Initial Pass");
783 mem_march (pmem, size, 0x0, 0x1, 0, 1);
784
785 printf ("\b\b\b\b\b\b\b\b\b\b\b\b");
786 printf (" ");
787 printf (" ");
788 printf ("\b\b\b\b\b\b\b\b\b\b\b\b");
789
790 for (i = 0; i < 63; i++) {
791 printf ("Pass %2d", i + 2);
792 if (mem_march (pmem, size, mask, mask << 1, 1, 1) != 0) {
793
794 return 1;
795 }
796 mask = mask << 1;
797 printf ("\b\b\b\b\b\b\b");
798 }
799
800 printf ("Last Pass");
801 if (mem_march (pmem, size, 0, mask, 0, 1) != 0) {
802
803 return 1;
804 }
805 printf ("\b\b\b\b\b\b\b\b\b");
806 printf (" ");
807 printf ("\b\b\b\b\b\b\b\b\b");
808
809 return 0;
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
835int testdram (void)
836{
837 char *s;
838 int rundata, runaddress, runwalk;
839
840 s = getenv ("testdramdata");
841 rundata = (s && (*s == 'y')) ? 1 : 0;
842 s = getenv ("testdramaddress");
843 runaddress = (s && (*s == 'y')) ? 1 : 0;
844 s = getenv ("testdramwalk");
845 runwalk = (s && (*s == 'y')) ? 1 : 0;
846
847
848
849
850
851 if ((rundata == 1) || (runaddress == 1) || (runwalk == 1)) {
852 printf ("Testing RAM from 0x%08x to 0x%08x ... (don't panic... that will take a moment !!!!)\n", CONFIG_SYS_MEMTEST_START, CONFIG_SYS_MEMTEST_END);
853 }
854#ifdef CONFIG_SYS_DRAM_TEST_DATA
855 if (rundata == 1) {
856 printf ("Test DATA ... ");
857 if (mem_test_data () == 1) {
858 printf ("failed \n");
859 return 1;
860 } else
861 printf ("ok \n");
862 }
863#endif
864#ifdef CONFIG_SYS_DRAM_TEST_ADDRESS
865 if (runaddress == 1) {
866 printf ("Test ADDRESS ... ");
867 if (mem_test_address () == 1) {
868 printf ("failed \n");
869 return 1;
870 } else
871 printf ("ok \n");
872 }
873#endif
874#ifdef CONFIG_SYS_DRAM_TEST_WALK
875 if (runwalk == 1) {
876 printf ("Test WALKING ONEs ... ");
877 if (mem_test_walk () == 1) {
878 printf ("failed \n");
879 return 1;
880 } else
881 printf ("ok \n");
882 }
883#endif
884 if ((rundata == 1) || (runaddress == 1) || (runwalk == 1)) {
885 printf ("passed\n");
886 }
887 return 0;
888
889}
890#endif
891
892
893
894
895
896
897void my_remap_gt_regs_bootm (u32 cur_loc, u32 new_loc)
898{
899 u32 temp;
900
901 temp = in_le32 ((u32 *) (new_loc + INTERNAL_SPACE_DECODE));
902 if ((temp & 0xffff) == new_loc >> 16)
903 return;
904
905 temp = (in_le32 ((u32 *) (cur_loc + INTERNAL_SPACE_DECODE)) &
906 0xffff0000) | (new_loc >> 16);
907
908 out_le32 ((u32 *) (cur_loc + INTERNAL_SPACE_DECODE), temp);
909
910 while ((WORD_SWAP (*((volatile unsigned int *) (NONE_CACHEABLE |
911 new_loc |
912 (INTERNAL_SPACE_DECODE)))))
913 != temp);
914
915}
916
917void board_prebootm_init ()
918{
919
920
921 GT_REG_WRITE (PCI_1_IO_SIZE, (_64K - 1) >> 16);
922
923
924 GT_REG_WRITE (MV64360_ETH_RECEIVE_QUEUE_COMMAND_REG (0), 0x0000ff00);
925 GT_REG_WRITE (MV64360_ETH_RECEIVE_QUEUE_COMMAND_REG (1), 0x0000ff00);
926
927
928
929 my_remap_gt_regs_bootm (CONFIG_SYS_GT_REGS, BRIDGE_REG_BASE_BOOTM);
930
931 icache_disable ();
932 dcache_disable ();
933}
934
935int board_eth_init(bd_t *bis)
936{
937 return pci_eth_init(bis);
938}
939