1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19#include <common.h>
20#include <bootstage.h>
21#include <cpu_func.h>
22#include <dm.h>
23#include <env.h>
24#include <init.h>
25#include <net.h>
26#include <netdev.h>
27#include <asm/io.h>
28#include <dm/platform_data/serial_pl01x.h>
29#include "arm-ebi.h"
30#include "integrator-sc.h"
31#include <asm/mach-types.h>
32
33DECLARE_GLOBAL_DATA_PTR;
34
35static const struct pl01x_serial_platdata serial_platdata = {
36 .base = 0x16000000,
37#ifdef CONFIG_ARCH_CINTEGRATOR
38 .type = TYPE_PL011,
39 .clock = 14745600,
40#else
41 .type = TYPE_PL010,
42 .clock = 0,
43#endif
44};
45
46U_BOOT_DEVICE(integrator_serials) = {
47 .name = "serial_pl01x",
48 .platdata = &serial_platdata,
49};
50
51void peripheral_power_enable (void);
52
53#if defined(CONFIG_SHOW_BOOT_PROGRESS)
54void show_boot_progress(int progress)
55{
56 printf("Boot reached stage %d\n", progress);
57}
58#endif
59
60#define COMP_MODE_ENABLE ((unsigned int)0x0000EAEF)
61
62
63
64
65
66int board_init (void)
67{
68 u32 val;
69
70
71#ifdef CONFIG_ARCH_CINTEGRATOR
72 gd->bd->bi_arch_number = MACH_TYPE_CINTEGRATOR;
73#else
74 gd->bd->bi_arch_number = MACH_TYPE_INTEGRATOR;
75#endif
76
77
78 gd->bd->bi_boot_params = 0x00000100;
79
80#ifdef CONFIG_CM_REMAP
81extern void cm_remap(void);
82 cm_remap();
83#endif
84
85#ifdef CONFIG_ARCH_CINTEGRATOR
86
87
88
89 val = readl(CP_FLASHPROG);
90 val |= (CP_FLASHPROG_FLVPPEN | CP_FLASHPROG_FLWREN);
91 writel(val, CP_FLASHPROG);
92#else
93
94
95
96
97
98
99
100
101
102 writel(EBI_UNLOCK_MAGIC, EBI_BASE + EBI_LOCK_REG);
103 val = readl(EBI_BASE + EBI_CSR1_REG);
104 val &= EBI_CSR_WREN_MASK;
105 val |= EBI_CSR_WREN_ENABLE;
106 writel(val, EBI_BASE + EBI_CSR1_REG);
107 writel(0, EBI_BASE + EBI_LOCK_REG);
108
109
110
111
112
113 writel(SC_CTRL_FLASHVPP | SC_CTRL_FLASHWP, SC_CTRLS);
114#endif
115
116 icache_enable();
117
118 return 0;
119}
120
121int misc_init_r (void)
122{
123 env_set("verify", "n");
124 return (0);
125}
126
127
128
129
130
131
132
133
134#define REMAPPED_FLASH_SZ 0x40000
135
136int dram_init (void)
137{
138 gd->bd->bi_dram[0].start = CONFIG_SYS_SDRAM_BASE;
139#ifdef CONFIG_CM_SPD_DETECT
140 {
141extern void dram_query(void);
142 u32 cm_reg_sdram;
143 u32 sdram_shift;
144
145 dram_query();
146
147
148
149
150 cm_reg_sdram = readl(CM_BASE + OS_SDRAM);
151
152
153
154
155
156
157
158
159
160 sdram_shift = ((cm_reg_sdram & 0x0000001C)/4)%4;
161 gd->ram_size = get_ram_size((long *) CONFIG_SYS_SDRAM_BASE +
162 REMAPPED_FLASH_SZ,
163 0x01000000 << sdram_shift);
164 }
165#else
166 gd->ram_size = get_ram_size((long *) CONFIG_SYS_SDRAM_BASE +
167 REMAPPED_FLASH_SZ,
168 PHYS_SDRAM_1_SIZE);
169#endif
170
171 gd->bd->bi_dram[0].size = gd->ram_size;
172
173 return 0;
174}
175
176#ifdef CONFIG_CMD_NET
177int board_eth_init(bd_t *bis)
178{
179 int rc = 0;
180#ifdef CONFIG_SMC91111
181 rc = smc91111_initialize(0, CONFIG_SMC91111_BASE);
182#endif
183 rc += pci_eth_init(bis);
184 return rc;
185}
186#endif
187