1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24#include <common.h>
25#include <asm/ppc4xx.h>
26#include <asm/processor.h>
27
28
29
30
31#include "../common/flash.c"
32
33
34
35
36static ulong flash_get_size (vu_long * addr, flash_info_t * info);
37static void flash_get_offsets (ulong base, flash_info_t * info);
38
39
40
41
42unsigned long flash_init (void)
43{
44#ifdef __DEBUG_START_FROM_SRAM__
45 return CONFIG_SYS_DUMMY_FLASH_SIZE;
46#else
47 unsigned long size;
48 int i;
49 uint pbcr;
50 unsigned long base;
51 int size_val = 0;
52
53 debug("[%s, %d] Entering ...\n", __FUNCTION__, __LINE__);
54 debug("[%s, %d] flash_info = 0x%p ...\n", __func__, __LINE__,
55 flash_info);
56
57
58 for (i=0; i<CONFIG_SYS_MAX_FLASH_BANKS; ++i) {
59 flash_info[i].flash_id = FLASH_UNKNOWN;
60 }
61
62
63
64 debug("[%s, %d] Calling flash_get_size ...\n", __FUNCTION__, __LINE__);
65 size = flash_get_size((vu_long *)FLASH_BASE0_PRELIM, &flash_info[0]);
66
67 if (flash_info[0].flash_id == FLASH_UNKNOWN) {
68 printf ("## Unknown FLASH on Bank 0 - Size = 0x%08lx = %ld MB\n",
69 size, size<<20);
70 }
71
72 debug("[%s, %d] Test point ...\n", __FUNCTION__, __LINE__);
73
74
75 flash_get_offsets (-size, &flash_info[0]);
76 debug("[%s, %d] Test point ...\n", __FUNCTION__, __LINE__);
77
78
79 mtdcr(EBC0_CFGADDR, PB0CR);
80 pbcr = mfdcr(EBC0_CFGDATA);
81 mtdcr(EBC0_CFGADDR, PB0CR);
82 base = -size;
83 switch (size) {
84 case 1 << 20:
85 size_val = 0;
86 break;
87 case 2 << 20:
88 size_val = 1;
89 break;
90 case 4 << 20:
91 size_val = 2;
92 break;
93 case 8 << 20:
94 size_val = 3;
95 break;
96 case 16 << 20:
97 size_val = 4;
98 break;
99 }
100 pbcr = (pbcr & 0x0001ffff) | base | (size_val << 17);
101 mtdcr(EBC0_CFGDATA, pbcr);
102 debug("[%s, %d] Test point ...\n", __FUNCTION__, __LINE__);
103
104
105 (void)flash_protect(FLAG_PROTECT_SET,
106 -CONFIG_SYS_MONITOR_LEN,
107 0xffffffff,
108 &flash_info[0]);
109
110 debug("[%s, %d] Test point ...\n", __FUNCTION__, __LINE__);
111 flash_info[0].size = size;
112
113 return (size);
114#endif
115}
116