Commit 37a9b4d0b7457f6d1c1998fff2372b7f92bc1d8c
Committed by
Albert ARIBAUD
1 parent
b550834458
Exists in
master
and in
55 other branches
ARM: remove broken "cmc_pu2" board
Signed-off-by: Wolfgang Denk <wd@denx.de>
Showing 8 changed files with 1 additions and 1066 deletions Side-by-side Diff
board/cmc_pu2/Makefile
1 | -# | |
2 | -# (C) Copyright 2003-2006 | |
3 | -# Wolfgang Denk, DENX Software Engineering, wd@denx.de. | |
4 | -# | |
5 | -# See file CREDITS for list of people who contributed to this | |
6 | -# project. | |
7 | -# | |
8 | -# This program is free software; you can redistribute it and/or | |
9 | -# modify it under the terms of the GNU General Public License as | |
10 | -# published by the Free Software Foundation; either version 2 of | |
11 | -# the License, or (at your option) any later version. | |
12 | -# | |
13 | -# This program is distributed in the hope that it will be useful, | |
14 | -# but WITHOUT ANY WARRANTY; without even the implied warranty of | |
15 | -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
16 | -# GNU General Public License for more details. | |
17 | -# | |
18 | -# You should have received a copy of the GNU General Public License | |
19 | -# along with this program; if not, write to the Free Software | |
20 | -# Foundation, Inc., 59 Temple Place, Suite 330, Boston, | |
21 | -# MA 02111-1307 USA | |
22 | -# | |
23 | - | |
24 | -include $(TOPDIR)/config.mk | |
25 | - | |
26 | -LIB = $(obj)lib$(BOARD).o | |
27 | - | |
28 | -COBJS := cmc_pu2.o flash.o load_sernum_ethaddr.o | |
29 | - | |
30 | -SRCS := $(SOBJS:.o=.S) $(COBJS:.o=.c) | |
31 | -OBJS := $(addprefix $(obj),$(COBJS)) | |
32 | -SOBJS := $(addprefix $(obj),$(SOBJS)) | |
33 | - | |
34 | -$(LIB): $(obj).depend $(OBJS) $(SOBJS) | |
35 | - $(call cmd_link_o_target, $(OBJS) $(SOBJS)) | |
36 | - | |
37 | -clean: | |
38 | - rm -f $(SOBJS) $(OBJS) | |
39 | - | |
40 | -distclean: clean | |
41 | - rm -f $(LIB) core *.bak $(obj).depend | |
42 | - | |
43 | -######################################################################### | |
44 | - | |
45 | -# defines $(obj).depend target | |
46 | -include $(SRCTREE)/rules.mk | |
47 | - | |
48 | -sinclude $(obj).depend | |
49 | - | |
50 | -######################################################################### |
board/cmc_pu2/cmc_pu2.c
1 | -/* | |
2 | - * (C) Copyright 2002 | |
3 | - * Sysgo Real-Time Solutions, GmbH <www.elinos.com> | |
4 | - * Marius Groeger <mgroeger@sysgo.de> | |
5 | - * | |
6 | - * Modified for CMC_PU2 (removed Smart Media support) by Gary Jennejohn | |
7 | - * (2004) garyj@denx.de | |
8 | - * | |
9 | - * Modified for CMC_BASIC by Martin Krause (2005), TQ-Systems GmbH | |
10 | - * | |
11 | - * See file CREDITS for list of people who contributed to this | |
12 | - * project. | |
13 | - * | |
14 | - * This program is free software; you can redistribute it and/or | |
15 | - * modify it under the terms of the GNU General Public License as | |
16 | - * published by the Free Software Foundation; either version 2 of | |
17 | - * the License, or (at your option) any later version. | |
18 | - * | |
19 | - * This program is distributed in the hope that it will be useful, | |
20 | - * but WITHOUT ANY WARRANTY; without even the implied warranty of | |
21 | - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
22 | - * GNU General Public License for more details. | |
23 | - * | |
24 | - * You should have received a copy of the GNU General Public License | |
25 | - * along with this program; if not, write to the Free Software | |
26 | - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, | |
27 | - * MA 02111-1307 USA | |
28 | - */ | |
29 | - | |
30 | -#include <common.h> | |
31 | -#include <asm/mach-types.h> | |
32 | -#include <asm/arch/AT91RM9200.h> | |
33 | -#include <asm/io.h> | |
34 | -#include <netdev.h> | |
35 | -#if defined(CONFIG_DRIVER_ETHER) | |
36 | -#include <at91rm9200_net.h> | |
37 | -#include <dm9161.h> | |
38 | -#endif | |
39 | - | |
40 | -DECLARE_GLOBAL_DATA_PTR; | |
41 | - | |
42 | -/* ------------------------------------------------------------------------- */ | |
43 | -/* | |
44 | - * Miscelaneous platform dependent initialisations | |
45 | - */ | |
46 | -#define CMC_HP_BASIC 1 | |
47 | -#define CMC_PU2 2 | |
48 | -#define CMC_BASIC 4 | |
49 | - | |
50 | -int hw_detect (void); | |
51 | - | |
52 | -int board_init (void) | |
53 | -{ | |
54 | - AT91PS_PIO piob = AT91C_BASE_PIOB; | |
55 | - AT91PS_PIO pioc = AT91C_BASE_PIOC; | |
56 | - | |
57 | - /* Enable Ctrlc */ | |
58 | - console_init_f (); | |
59 | - | |
60 | - /* Correct IRDA resistor problem */ | |
61 | - /* Set PA23_TXD in Output */ | |
62 | - /* (AT91PS_PIO) AT91C_BASE_PIOA->PIO_OER = AT91C_PA23_TXD2; */ | |
63 | - | |
64 | - /* memory and cpu-speed are setup before relocation */ | |
65 | - /* so we do _nothing_ here */ | |
66 | - | |
67 | - /* PIOB and PIOC clock enabling */ | |
68 | - *AT91C_PMC_PCER = 1 << AT91C_ID_PIOB; | |
69 | - *AT91C_PMC_PCER = 1 << AT91C_ID_PIOC; | |
70 | - | |
71 | - /* | |
72 | - * configure PC0-PC3 as input without pull ups, so RS485 driver enable | |
73 | - * (CMC-PU2) and digital outputs (CMC-BASIC) are deactivated. | |
74 | - */ | |
75 | - pioc->PIO_ODR = AT91C_PIO_PC0 | AT91C_PIO_PC1 | | |
76 | - AT91C_PIO_PC2 | AT91C_PIO_PC3; | |
77 | - pioc->PIO_PPUDR = AT91C_PIO_PC0 | AT91C_PIO_PC1 | | |
78 | - AT91C_PIO_PC2 | AT91C_PIO_PC3; | |
79 | - pioc->PIO_PER = AT91C_PIO_PC0 | AT91C_PIO_PC1 | | |
80 | - AT91C_PIO_PC2 | AT91C_PIO_PC3; | |
81 | - | |
82 | - /* | |
83 | - * On CMC-PU2 board configure PB3-PB6 to input without pull ups to | |
84 | - * clear the duo LEDs (the external pull downs assure a proper | |
85 | - * signal). On CMC-BASIC and CMC-HP-BASIC set PB3-PB6 to output and | |
86 | - * drive it high, to configure current measurement on AINx. | |
87 | - */ | |
88 | - if (hw_detect() & CMC_PU2) { | |
89 | - piob->PIO_ODR = AT91C_PIO_PB3 | AT91C_PIO_PB4 | | |
90 | - AT91C_PIO_PB5 | AT91C_PIO_PB6; | |
91 | - } | |
92 | - else if ((hw_detect() & CMC_BASIC) || (hw_detect() & CMC_HP_BASIC)) { | |
93 | - piob->PIO_SODR = AT91C_PIO_PB3 | AT91C_PIO_PB4 | | |
94 | - AT91C_PIO_PB5 | AT91C_PIO_PB6; | |
95 | - piob->PIO_OER = AT91C_PIO_PB3 | AT91C_PIO_PB4 | | |
96 | - AT91C_PIO_PB5 | AT91C_PIO_PB6; | |
97 | - } | |
98 | - piob->PIO_PPUDR = AT91C_PIO_PB3 | AT91C_PIO_PB4 | | |
99 | - AT91C_PIO_PB5 | AT91C_PIO_PB6; | |
100 | - piob->PIO_PER = AT91C_PIO_PB3 | AT91C_PIO_PB4 | | |
101 | - AT91C_PIO_PB5 | AT91C_PIO_PB6; | |
102 | - | |
103 | - /* | |
104 | - * arch number of CMC_PU2-Board. MACH_TYPE_CMC_PU2 is not supported in | |
105 | - * the linuxarm kernel, yet. | |
106 | - */ | |
107 | - /* gd->bd->bi_arch_number = MACH_TYPE_CMC_PU2; */ | |
108 | - gd->bd->bi_arch_number = 251; | |
109 | - /* adress of boot parameters */ | |
110 | - gd->bd->bi_boot_params = PHYS_SDRAM + 0x100; | |
111 | - | |
112 | - return 0; | |
113 | -} | |
114 | - | |
115 | -int dram_init (void) | |
116 | -{ | |
117 | - gd->bd->bi_dram[0].start = PHYS_SDRAM; | |
118 | - gd->bd->bi_dram[0].size = PHYS_SDRAM_SIZE; | |
119 | - return 0; | |
120 | -} | |
121 | - | |
122 | -int checkboard (void) | |
123 | -{ | |
124 | - if (hw_detect() & CMC_PU2) | |
125 | - puts ("Board: CMC-PU2 (Rittal GmbH)\n"); | |
126 | - else if (hw_detect() & CMC_BASIC) | |
127 | - puts ("Board: CMC-BASIC (Rittal GmbH)\n"); | |
128 | - else if (hw_detect() & CMC_HP_BASIC) | |
129 | - puts ("Board: CMC-HP-BASIC (Rittal GmbH)\n"); | |
130 | - else | |
131 | - puts ("Board: unknown\n"); | |
132 | - return 0; | |
133 | -} | |
134 | - | |
135 | -int hw_detect (void) | |
136 | -{ | |
137 | - AT91PS_PIO pio = AT91C_BASE_PIOB; | |
138 | - | |
139 | - /* PIOB clock enabling */ | |
140 | - *AT91C_PMC_PCER = 1 << AT91C_ID_PIOB; | |
141 | - | |
142 | - /* configure PB12 as input without pull up */ | |
143 | - pio->PIO_ODR = AT91C_PIO_PB12; | |
144 | - pio->PIO_PPUDR = AT91C_PIO_PB12; | |
145 | - pio->PIO_PER = AT91C_PIO_PB12; | |
146 | - | |
147 | - /* configure PB13 as input without pull up */ | |
148 | - pio->PIO_ODR = AT91C_PIO_PB13; | |
149 | - pio->PIO_PPUDR = AT91C_PIO_PB13; | |
150 | - pio->PIO_PER = AT91C_PIO_PB13; | |
151 | - | |
152 | - /* read board identification pin */ | |
153 | - if (pio->PIO_PDSR & AT91C_PIO_PB12) | |
154 | - return ((pio->PIO_PDSR & AT91C_PIO_PB13) | |
155 | - ? CMC_PU2 : 0); | |
156 | - else | |
157 | - return ((pio->PIO_PDSR & AT91C_PIO_PB13) | |
158 | - ? CMC_HP_BASIC : CMC_BASIC); | |
159 | -} | |
160 | - | |
161 | -#ifdef CONFIG_DRIVER_ETHER | |
162 | -#if defined(CONFIG_CMD_NET) | |
163 | - | |
164 | -/* | |
165 | - * Name: | |
166 | - * at91rm9200_GetPhyInterface | |
167 | - * Description: | |
168 | - * Initialise the interface functions to the PHY | |
169 | - * Arguments: | |
170 | - * None | |
171 | - * Return value: | |
172 | - * None | |
173 | - */ | |
174 | -void at91rm9200_GetPhyInterface(AT91PS_PhyOps p_phyops) | |
175 | -{ | |
176 | - p_phyops->Init = dm9161_InitPhy; | |
177 | - p_phyops->IsPhyConnected = dm9161_IsPhyConnected; | |
178 | - p_phyops->GetLinkSpeed = dm9161_GetLinkSpeed; | |
179 | - p_phyops->AutoNegotiate = dm9161_AutoNegotiate; | |
180 | -} | |
181 | - | |
182 | -#endif | |
183 | -#endif /* CONFIG_DRIVER_ETHER */ | |
184 | - | |
185 | -#ifdef CONFIG_DRIVER_AT91EMAC | |
186 | -int board_eth_init(bd_t *bis) | |
187 | -{ | |
188 | - int rc = 0; | |
189 | - rc = at91emac_register(bis, 0); | |
190 | - return rc; | |
191 | -} | |
192 | -#endif |
board/cmc_pu2/config.mk
board/cmc_pu2/flash.c
1 | -/* | |
2 | - * (C) Copyright 2003-2004 | |
3 | - * Wolfgang Denk, DENX Software Engineering, wd@denx.de. | |
4 | - * | |
5 | - * (C) Copyright 2004 | |
6 | - * Martin Krause, TQ-Systems GmbH, martin.krause@tqs.de | |
7 | - * | |
8 | - * Modified for the CMC PU2 by (C) Copyright 2004 Gary Jennejohn | |
9 | - * garyj@denx.de | |
10 | - * | |
11 | - * See file CREDITS for list of people who contributed to this | |
12 | - * project. | |
13 | - * | |
14 | - * This program is free software; you can redistribute it and/or | |
15 | - * modify it under the terms of the GNU General Public License as | |
16 | - * published by the Free Software Foundation; either version 2 of | |
17 | - * the License, or (at your option) any later version. | |
18 | - * | |
19 | - * This program is distributed in the hope that it will be useful, | |
20 | - * but WITHOUT ANY WARRANTY; without even the implied warranty of | |
21 | - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
22 | - * GNU General Public License for more details. | |
23 | - * | |
24 | - * You should have received a copy of the GNU General Public License | |
25 | - * along with this program; if not, write to the Free Software | |
26 | - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, | |
27 | - * MA 02111-1307 USA | |
28 | - */ | |
29 | - | |
30 | -#include <common.h> | |
31 | - | |
32 | -#ifndef CONFIG_ENV_ADDR | |
33 | -#define CONFIG_ENV_ADDR (CONFIG_SYS_FLASH_BASE + CONFIG_ENV_OFFSET) | |
34 | -#endif | |
35 | - | |
36 | -flash_info_t flash_info[CONFIG_SYS_MAX_FLASH_BANKS]; /* info for FLASH chips */ | |
37 | - | |
38 | -#define FLASH_CYCLE1 0x0555 | |
39 | -#define FLASH_CYCLE2 0x02AA | |
40 | - | |
41 | -/*----------------------------------------------------------------------- | |
42 | - * Functions | |
43 | - */ | |
44 | -static ulong flash_get_size(vu_short *addr, flash_info_t *info); | |
45 | -static void flash_reset(flash_info_t *info); | |
46 | -static int write_word_amd(flash_info_t *info, vu_short *dest, ushort data); | |
47 | -static flash_info_t *flash_get_info(ulong base); | |
48 | - | |
49 | -/*----------------------------------------------------------------------- | |
50 | - * flash_init() | |
51 | - * | |
52 | - * sets up flash_info and returns size of FLASH (bytes) | |
53 | - */ | |
54 | -unsigned long flash_init (void) | |
55 | -{ | |
56 | - unsigned long size = 0; | |
57 | - ulong flashbase = CONFIG_SYS_FLASH_BASE; | |
58 | - | |
59 | - /* Init: no FLASHes known */ | |
60 | - memset(&flash_info[0], 0, sizeof(flash_info_t)); | |
61 | - | |
62 | - flash_info[0].size = flash_get_size((vu_short *)flashbase, &flash_info[0]); | |
63 | - | |
64 | - size = flash_info[0].size; | |
65 | - | |
66 | -#if CONFIG_SYS_MONITOR_BASE >= CONFIG_SYS_FLASH_BASE | |
67 | - /* monitor protection ON by default */ | |
68 | - flash_protect(FLAG_PROTECT_SET, | |
69 | - CONFIG_SYS_MONITOR_BASE, | |
70 | - CONFIG_SYS_MONITOR_BASE+monitor_flash_len-1, | |
71 | - flash_get_info(CONFIG_SYS_MONITOR_BASE)); | |
72 | -#endif | |
73 | - | |
74 | -#ifdef CONFIG_ENV_IS_IN_FLASH | |
75 | - /* ENV protection ON by default */ | |
76 | - flash_protect(FLAG_PROTECT_SET, | |
77 | - CONFIG_ENV_ADDR, | |
78 | - CONFIG_ENV_ADDR+CONFIG_ENV_SIZE-1, | |
79 | - flash_get_info(CONFIG_ENV_ADDR)); | |
80 | -#endif | |
81 | - | |
82 | - return size ? size : 1; | |
83 | -} | |
84 | - | |
85 | -/*----------------------------------------------------------------------- | |
86 | - */ | |
87 | -static void flash_reset(flash_info_t *info) | |
88 | -{ | |
89 | - vu_short *base = (vu_short *)(info->start[0]); | |
90 | - | |
91 | - /* Put FLASH back in read mode */ | |
92 | - if ((info->flash_id & FLASH_VENDMASK) == FLASH_MAN_INTEL) | |
93 | - *base = 0x00FF; /* Intel Read Mode */ | |
94 | - else if ((info->flash_id & FLASH_VENDMASK) == FLASH_MAN_AMD) | |
95 | - *base = 0x00F0; /* AMD Read Mode */ | |
96 | -} | |
97 | - | |
98 | -/*----------------------------------------------------------------------- | |
99 | - */ | |
100 | - | |
101 | -static flash_info_t *flash_get_info(ulong base) | |
102 | -{ | |
103 | - int i; | |
104 | - flash_info_t * info; | |
105 | - | |
106 | - info = NULL; | |
107 | - for (i = 0; i < CONFIG_SYS_MAX_FLASH_BANKS; i ++) { | |
108 | - info = & flash_info[i]; | |
109 | - if (info->size && info->start[0] <= base && | |
110 | - base <= info->start[0] + info->size - 1) | |
111 | - break; | |
112 | - } | |
113 | - | |
114 | - return i == CONFIG_SYS_MAX_FLASH_BANKS ? 0 : info; | |
115 | -} | |
116 | - | |
117 | -/*----------------------------------------------------------------------- | |
118 | - */ | |
119 | - | |
120 | -void flash_print_info (flash_info_t *info) | |
121 | -{ | |
122 | - int i; | |
123 | - | |
124 | - if (info->flash_id == FLASH_UNKNOWN) { | |
125 | - printf ("missing or unknown FLASH type\n"); | |
126 | - return; | |
127 | - } | |
128 | - | |
129 | - switch (info->flash_id & FLASH_VENDMASK) { | |
130 | - case FLASH_MAN_AMD: printf ("AMD "); break; | |
131 | - case FLASH_MAN_BM: printf ("BRIGHT MICRO "); break; | |
132 | - case FLASH_MAN_FUJ: printf ("FUJITSU "); break; | |
133 | - case FLASH_MAN_SST: printf ("SST "); break; | |
134 | - case FLASH_MAN_STM: printf ("STM "); break; | |
135 | - case FLASH_MAN_INTEL: printf ("INTEL "); break; | |
136 | - default: printf ("Unknown Vendor "); break; | |
137 | - } | |
138 | - | |
139 | - switch (info->flash_id & FLASH_TYPEMASK) { | |
140 | - case FLASH_S29GL064M: | |
141 | - printf ("S29GL064M-R6 (64Mbit, uniform sector size)\n"); | |
142 | - break; | |
143 | - default: | |
144 | - printf ("Unknown Chip Type\n"); | |
145 | - break; | |
146 | - } | |
147 | - | |
148 | - printf (" Size: %ld MB in %d Sectors\n", | |
149 | - info->size >> 20, | |
150 | - info->sector_count); | |
151 | - | |
152 | - printf (" Sector Start Addresses:"); | |
153 | - | |
154 | - for (i=0; i<info->sector_count; ++i) { | |
155 | - if ((i % 5) == 0) { | |
156 | - printf ("\n "); | |
157 | - } | |
158 | - printf (" %08lX%s", | |
159 | - info->start[i], | |
160 | - info->protect[i] ? " (RO)" : " "); | |
161 | - } | |
162 | - printf ("\n"); | |
163 | - return; | |
164 | -} | |
165 | - | |
166 | -/*----------------------------------------------------------------------- | |
167 | - */ | |
168 | - | |
169 | -/* | |
170 | - * The following code cannot be run from FLASH! | |
171 | - */ | |
172 | - | |
173 | -ulong flash_get_size (vu_short *addr, flash_info_t *info) | |
174 | -{ | |
175 | - int i; | |
176 | - ushort value; | |
177 | - ulong base = (ulong)addr; | |
178 | - | |
179 | - /* Write auto select command sequence */ | |
180 | - addr[FLASH_CYCLE1] = 0x00AA; /* for AMD, Intel ignores this */ | |
181 | - addr[FLASH_CYCLE2] = 0x0055; /* for AMD, Intel ignores this */ | |
182 | - addr[FLASH_CYCLE1] = 0x0090; /* selects Intel or AMD */ | |
183 | - | |
184 | - /* read Manufacturer ID */ | |
185 | - udelay(100); | |
186 | - value = addr[0]; | |
187 | - debug ("Manufacturer ID: %04X\n", value); | |
188 | - | |
189 | - switch (value) { | |
190 | - | |
191 | - case (AMD_MANUFACT & 0xFFFF): | |
192 | - debug ("Manufacturer: AMD (Spansion)\n"); | |
193 | - info->flash_id = FLASH_MAN_AMD; | |
194 | - break; | |
195 | - | |
196 | - case (INTEL_MANUFACT & 0xFFFF): | |
197 | - debug ("Manufacturer: Intel (not supported yet)\n"); | |
198 | - info->flash_id = FLASH_MAN_INTEL; | |
199 | - break; | |
200 | - | |
201 | - default: | |
202 | - printf ("Unknown Manufacturer ID: %04X\n", value); | |
203 | - info->flash_id = FLASH_UNKNOWN; | |
204 | - info->sector_count = 0; | |
205 | - info->size = 0; | |
206 | - goto out; | |
207 | - } | |
208 | - | |
209 | - value = addr[1]; | |
210 | - debug ("Device ID: %04X\n", value); | |
211 | - | |
212 | - switch (addr[1]) { | |
213 | - | |
214 | - case (AMD_ID_MIRROR & 0xFFFF): | |
215 | - debug ("Mirror Bit flash: addr[14] = %08X addr[15] = %08X\n", | |
216 | - addr[14], addr[15]); | |
217 | - | |
218 | - switch(addr[14]) { | |
219 | - case (AMD_ID_GL064M_2 & 0xFFFF): | |
220 | - if (addr[15] != (AMD_ID_GL064M_3 & 0xffff)) { | |
221 | - printf ("Chip: S29GLxxxM -> unknown\n"); | |
222 | - info->flash_id = FLASH_UNKNOWN; | |
223 | - info->sector_count = 0; | |
224 | - info->size = 0; | |
225 | - } else { | |
226 | - debug ("Chip: S29GL064M-R6\n"); | |
227 | - info->flash_id += FLASH_S29GL064M; | |
228 | - info->sector_count = 128; | |
229 | - info->size = 0x00800000; | |
230 | - for (i = 0; i < info->sector_count; i++) { | |
231 | - info->start[i] = base; | |
232 | - base += 0x10000; | |
233 | - } | |
234 | - } | |
235 | - break; /* => 16 MB */ | |
236 | - default: | |
237 | - printf ("Chip: *** unknown ***\n"); | |
238 | - info->flash_id = FLASH_UNKNOWN; | |
239 | - info->sector_count = 0; | |
240 | - info->size = 0; | |
241 | - break; | |
242 | - } | |
243 | - break; | |
244 | - | |
245 | - default: | |
246 | - printf ("Unknown Device ID: %04X\n", value); | |
247 | - info->flash_id = FLASH_UNKNOWN; | |
248 | - info->sector_count = 0; | |
249 | - info->size = 0; | |
250 | - break; | |
251 | - } | |
252 | - | |
253 | -out: | |
254 | - /* Put FLASH back in read mode */ | |
255 | - flash_reset(info); | |
256 | - | |
257 | - return (info->size); | |
258 | -} | |
259 | - | |
260 | -/*----------------------------------------------------------------------- | |
261 | - */ | |
262 | - | |
263 | -int flash_erase (flash_info_t *info, int s_first, int s_last) | |
264 | -{ | |
265 | - vu_short *addr = (vu_short *)(info->start[0]); | |
266 | - int flag, prot, sect, ssect, l_sect; | |
267 | - ulong now, last, start; | |
268 | - | |
269 | - debug ("flash_erase: first: %d last: %d\n", s_first, s_last); | |
270 | - | |
271 | - if ((s_first < 0) || (s_first > s_last)) { | |
272 | - if (info->flash_id == FLASH_UNKNOWN) { | |
273 | - printf ("- missing\n"); | |
274 | - } else { | |
275 | - printf ("- no sectors to erase\n"); | |
276 | - } | |
277 | - return 1; | |
278 | - } | |
279 | - | |
280 | - if ((info->flash_id == FLASH_UNKNOWN) || | |
281 | - (info->flash_id > FLASH_AMD_COMP)) { | |
282 | - printf ("Can't erase unknown flash type %08lx - aborted\n", | |
283 | - info->flash_id); | |
284 | - return 1; | |
285 | - } | |
286 | - | |
287 | - prot = 0; | |
288 | - for (sect=s_first; sect<=s_last; ++sect) { | |
289 | - if (info->protect[sect]) { | |
290 | - prot++; | |
291 | - } | |
292 | - } | |
293 | - | |
294 | - if (prot) { | |
295 | - printf ("- Warning: %d protected sectors will not be erased!\n", | |
296 | - prot); | |
297 | - } else { | |
298 | - printf ("\n"); | |
299 | - } | |
300 | - | |
301 | - /* Disable interrupts which might cause a timeout here */ | |
302 | - flag = disable_interrupts(); | |
303 | - | |
304 | - /* | |
305 | - * Start erase on unprotected sectors. | |
306 | - * Since the flash can erase multiple sectors with one command | |
307 | - * we take advantage of that by doing the erase in chunks of | |
308 | - * 3 sectors. | |
309 | - */ | |
310 | - for (sect = s_first; sect <= s_last; ) { | |
311 | - l_sect = -1; | |
312 | - | |
313 | - addr[FLASH_CYCLE1] = 0x00AA; | |
314 | - addr[FLASH_CYCLE2] = 0x0055; | |
315 | - addr[FLASH_CYCLE1] = 0x0080; | |
316 | - addr[FLASH_CYCLE1] = 0x00AA; | |
317 | - addr[FLASH_CYCLE2] = 0x0055; | |
318 | - | |
319 | - /* do the erase in chunks of at most 3 sectors */ | |
320 | - for (ssect = 0; ssect < 3; ssect++) { | |
321 | - if ((sect + ssect) > s_last) | |
322 | - break; | |
323 | - if (info->protect[sect + ssect] == 0) { /* not protected */ | |
324 | - addr = (vu_short *)(info->start[sect + ssect]); | |
325 | - addr[0] = 0x0030; | |
326 | - l_sect = sect + ssect; | |
327 | - } | |
328 | - } | |
329 | - /* wait at least 80us - let's wait 1 ms */ | |
330 | - udelay (1000); | |
331 | - | |
332 | - /* | |
333 | - * We wait for the last triggered sector | |
334 | - */ | |
335 | - if (l_sect < 0) | |
336 | - goto DONE; | |
337 | - | |
338 | - start = get_timer(0); | |
339 | - last = 0; | |
340 | - addr = (vu_short *)(info->start[l_sect]); | |
341 | - while ((addr[0] & 0x0080) != 0x0080) { | |
342 | - if ((now = get_timer(start)) > CONFIG_SYS_FLASH_ERASE_TOUT) { | |
343 | - printf ("Timeout\n"); | |
344 | - return 1; | |
345 | - } | |
346 | - /* show that we're waiting */ | |
347 | - if ((now - last) > 1000) { /* every second */ | |
348 | - putc ('.'); | |
349 | - last = now; | |
350 | - } | |
351 | - } | |
352 | - addr = (vu_short *)info->start[0]; | |
353 | - addr[0] = 0x00F0; /* reset bank */ | |
354 | - sect += ssect; | |
355 | - } | |
356 | - | |
357 | - /* re-enable interrupts if necessary */ | |
358 | - if (flag) | |
359 | - enable_interrupts(); | |
360 | - | |
361 | -DONE: | |
362 | - /* reset to read mode */ | |
363 | - addr = (vu_short *)info->start[0]; | |
364 | - addr[0] = 0x00F0; /* reset bank */ | |
365 | - | |
366 | - printf (" done\n"); | |
367 | - return 0; | |
368 | -} | |
369 | - | |
370 | -/*----------------------------------------------------------------------- | |
371 | - * Copy memory to flash, returns: | |
372 | - * 0 - OK | |
373 | - * 1 - write timeout | |
374 | - * 2 - Flash not erased | |
375 | - */ | |
376 | - | |
377 | -int write_buff (flash_info_t *info, uchar *src, ulong addr, ulong cnt) | |
378 | -{ | |
379 | - ulong wp, data; | |
380 | - int rc; | |
381 | - | |
382 | - if (addr & 1) { | |
383 | - printf ("unaligned destination not supported\n"); | |
384 | - return ERR_ALIGN; | |
385 | - }; | |
386 | - | |
387 | - if ((int) src & 1) { | |
388 | - printf ("unaligned source not supported\n"); | |
389 | - return ERR_ALIGN; | |
390 | - }; | |
391 | - | |
392 | - wp = addr; | |
393 | - | |
394 | - while (cnt >= 2) { | |
395 | - data = *((vu_short *)src); | |
396 | - if ((rc = write_word_amd(info, (vu_short *)wp, data)) != 0) { | |
397 | -printf ("write_buff 1: write_word_amd() rc=%d\n", rc); | |
398 | - return (rc); | |
399 | - } | |
400 | - src += 2; | |
401 | - wp += 2; | |
402 | - cnt -= 2; | |
403 | - } | |
404 | - | |
405 | - if (cnt == 0) { | |
406 | - return (ERR_OK); | |
407 | - } | |
408 | - | |
409 | - if (cnt == 1) { | |
410 | - data = (*((volatile u8 *) src)) | (*((volatile u8 *) (wp + 1)) << 8); | |
411 | - if ((rc = write_word_amd(info, (vu_short *)wp, data)) != 0) { | |
412 | -printf ("write_buff 1: write_word_amd() rc=%d\n", rc); | |
413 | - return (rc); | |
414 | - } | |
415 | - src += 1; | |
416 | - wp += 1; | |
417 | - cnt -= 1; | |
418 | - } | |
419 | - | |
420 | - return ERR_OK; | |
421 | -} | |
422 | - | |
423 | -/*----------------------------------------------------------------------- | |
424 | - * Write a word to Flash for AMD FLASH | |
425 | - * A word is 16 or 32 bits, whichever the bus width of the flash bank | |
426 | - * (not an individual chip) is. | |
427 | - * | |
428 | - * returns: | |
429 | - * 0 - OK | |
430 | - * 1 - write timeout | |
431 | - * 2 - Flash not erased | |
432 | - */ | |
433 | -static int write_word_amd (flash_info_t *info, vu_short *dest, ushort data) | |
434 | -{ | |
435 | - int flag; | |
436 | - vu_short *base; /* first address in flash bank */ | |
437 | - ulong start; | |
438 | - | |
439 | - /* Check if Flash is (sufficiently) erased */ | |
440 | - if ((*dest & data) != data) { | |
441 | - return (2); | |
442 | - } | |
443 | - | |
444 | - base = (vu_short *)(info->start[0]); | |
445 | - | |
446 | - /* Disable interrupts which might cause a timeout here */ | |
447 | - flag = disable_interrupts(); | |
448 | - | |
449 | - base[FLASH_CYCLE1] = 0x00AA; /* unlock */ | |
450 | - base[FLASH_CYCLE2] = 0x0055; /* unlock */ | |
451 | - base[FLASH_CYCLE1] = 0x00A0; /* selects program mode */ | |
452 | - | |
453 | - *dest = data; /* start programming the data */ | |
454 | - | |
455 | - /* re-enable interrupts if necessary */ | |
456 | - if (flag) | |
457 | - enable_interrupts(); | |
458 | - | |
459 | - start = get_timer(0); | |
460 | - | |
461 | - /* data polling for D7 */ | |
462 | - while ((*dest & 0x0080) != (data & 0x0080)) { | |
463 | - if (get_timer(start) > CONFIG_SYS_FLASH_WRITE_TOUT) { | |
464 | - *dest = 0x00F0; /* reset bank */ | |
465 | - return (1); | |
466 | - } | |
467 | - } | |
468 | - return (0); | |
469 | -} |
board/cmc_pu2/load_sernum_ethaddr.c
1 | -/* | |
2 | - * (C) Copyright 2000, 2001, 2002 | |
3 | - * Wolfgang Denk, DENX Software Engineering, wd@denx.de. | |
4 | - * | |
5 | - * (C) Copyright 2005 | |
6 | - * Martin Krause, TQ-Systems GmbH, martin.krause@tqs.de | |
7 | - * | |
8 | - * See file CREDITS for list of people who contributed to this | |
9 | - * project. | |
10 | - * | |
11 | - * This program is free software; you can redistribute it and/or | |
12 | - * modify it under the terms of the GNU General Public License as | |
13 | - * published by the Free Software Foundation; either version 2 of | |
14 | - * the License, or (at your option) any later version. | |
15 | - * | |
16 | - * This program is distributed in the hope that it will be useful, | |
17 | - * but WITHOUT ANY WARRANTY; without even the implied warranty of | |
18 | - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
19 | - * GNU General Public License for more details. | |
20 | - * | |
21 | - * You should have received a copy of the GNU General Public License | |
22 | - * along with this program; if not, write to the Free Software | |
23 | - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, | |
24 | - * MA 02111-1307 USA | |
25 | - */ | |
26 | - | |
27 | -/* #define DEBUG */ | |
28 | - | |
29 | -#include <common.h> | |
30 | -#include <net.h> | |
31 | - | |
32 | -#define I2C_CHIP 0x50 /* I2C bus address of onboard EEPROM */ | |
33 | -#define I2C_ALEN 1 /* length of EEPROM addresses in bytes */ | |
34 | -#define I2C_OFFSET 0x0 /* start address of manufacturere data block | |
35 | - * in EEPROM */ | |
36 | - | |
37 | -/* 64 Byte manufacturer data block in EEPROM */ | |
38 | -struct manufacturer_data { | |
39 | - unsigned int serial_number; /* serial number (0...999999) */ | |
40 | - unsigned short hardware; /* hardware version (e.g. V1.02) */ | |
41 | - unsigned short manuf_date; /* manufacture date (e.g. 25/02) */ | |
42 | - unsigned char name[20]; /* device name (in CHIP.INI) */ | |
43 | - unsigned char macadr[6]; /* MAC address */ | |
44 | - signed char a_kal[4]; /* calibration value for U */ | |
45 | - signed char i_kal[4]; /* calibration value for I */ | |
46 | - unsigned char reserve[18]; /* reserved */ | |
47 | - unsigned short save_nr; /* save count */ | |
48 | - unsigned short chksum; /* checksum */ | |
49 | -}; | |
50 | - | |
51 | - | |
52 | -int i2c_read (unsigned char chip, unsigned int addr, int alen, | |
53 | - unsigned char *buffer, int len); | |
54 | - | |
55 | -/*----------------------------------------------------------------------- | |
56 | - * Process manufacturer data block in EEPROM: | |
57 | - * | |
58 | - * If we boot on a system fresh from factory, check if the manufacturer data | |
59 | - * in the EEPROM is valid and save some information it contains. | |
60 | - * | |
61 | - * CMC manufacturer data is defined as follows: | |
62 | - * | |
63 | - * - located in the onboard EEPROM | |
64 | - * - starts at offset 0x0 | |
65 | - * - size 0x00000040 | |
66 | - * | |
67 | - * Internal structure: see struct definition | |
68 | - */ | |
69 | - | |
70 | -int misc_init_r(void) | |
71 | -{ | |
72 | - struct manufacturer_data data; | |
73 | - char serial [9]; | |
74 | - unsigned short chksum; | |
75 | - unsigned char *p; | |
76 | - unsigned short i; | |
77 | - | |
78 | -#if !defined(CONFIG_HARD_I2C) && !defined(CONFIG_SOFT_I2C) | |
79 | -#error you must define some I2C support (CONFIG_HARD_I2C or CONFIG_SOFT_I2C) | |
80 | -#endif | |
81 | - if (i2c_read(I2C_CHIP, I2C_OFFSET, I2C_ALEN, (unsigned char *)&data, | |
82 | - sizeof(data)) != 0) { | |
83 | - puts ("Error reading manufacturer data from EEPROM\n"); | |
84 | - return -1; | |
85 | - } | |
86 | - | |
87 | - /* check if manufacturer data block is valid */ | |
88 | - p = (unsigned char *)&data; | |
89 | - chksum = 0; | |
90 | - for (i = 0; i < (sizeof(data) - sizeof(data.chksum)); i++) | |
91 | - chksum += *p++; | |
92 | - | |
93 | - debug ("checksum of manufacturer data block: %#.4x\n", chksum); | |
94 | - | |
95 | - if (chksum != data.chksum) { | |
96 | - puts ("Error: manufacturer data block has invalid checksum\n"); | |
97 | - return -1; | |
98 | - } | |
99 | - | |
100 | - /* copy serial number */ | |
101 | - sprintf (serial, "%d", data.serial_number); | |
102 | - | |
103 | - /* set serial# and ethaddr if not yet defined */ | |
104 | - if (getenv("serial#") == NULL) { | |
105 | - setenv ("serial#", serial); | |
106 | - } | |
107 | - | |
108 | - if (getenv("ethaddr") == NULL) { | |
109 | - eth_setenv_enetaddr("ethaddr", data.macadr); | |
110 | - } | |
111 | - | |
112 | - return 0; | |
113 | -} |
boards.cfg
... | ... | @@ -57,7 +57,6 @@ |
57 | 57 | eb_cpux9k2 arm arm920t - BuS at91 |
58 | 58 | cpuat91 arm arm920t cpuat91 eukrea at91 cpuat91 |
59 | 59 | cpuat91_ram arm arm920t cpuat91 eukrea at91 cpuat91:RAMBOOT |
60 | -cmc_pu2 arm arm920t - - at91rm9200 | |
61 | 60 | csb637 arm arm920t - - at91rm9200 |
62 | 61 | kb9202 arm arm920t - - at91rm9200 |
63 | 62 | m501sk arm arm920t - - at91rm9200 |
doc/README.scrapyard
... | ... | @@ -11,6 +11,7 @@ |
11 | 11 | |
12 | 12 | Board Arch CPU removed Commit last known maintainer/contact |
13 | 13 | ============================================================================= |
14 | +cmc_pu2 arm arm920t - 2011-07-17 | |
14 | 15 | at91cap9adk arm arm926ejs - 2011-07-17 Stelian Pop <stelian.pop@leadtechdesign.com> |
15 | 16 | voiceblue arm arm925t - 2011-07-17 |
16 | 17 | smdk2400 arm arm920t - 2011-07-17 Gary Jennejohn <garyj@denx.de> |
include/configs/cmc_pu2.h
1 | -/* | |
2 | - * 2004-2005 Gary Jennejohn <garyj@denx.de> | |
3 | - * | |
4 | - * Configuration settings for the CMC PU2 board. | |
5 | - * | |
6 | - * See file CREDITS for list of people who contributed to this | |
7 | - * project. | |
8 | - * | |
9 | - * This program is free software; you can redistribute it and/or | |
10 | - * modify it under the terms of the GNU General Public License as | |
11 | - * published by the Free Software Foundation; either version 2 of | |
12 | - * the License, or (at your option) any later version. | |
13 | - * | |
14 | - * This program is distributed in the hope that it will be useful, | |
15 | - * but WITHOUT ANY WARRANTY; without even the implied warranty of | |
16 | - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
17 | - * GNU General Public License for more details. | |
18 | - * | |
19 | - * You should have received a copy of the GNU General Public License | |
20 | - * along with this program; if not, write to the Free Software | |
21 | - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, | |
22 | - * MA 02111-1307 USA | |
23 | - */ | |
24 | - | |
25 | -#ifndef __CONFIG_H | |
26 | -#define __CONFIG_H | |
27 | - | |
28 | -#define CONFIG_AT91_LEGACY | |
29 | - | |
30 | -/* ARM asynchronous clock */ | |
31 | -#define AT91C_MAIN_CLOCK 179712000 /* from 18.432 MHz crystal (18432000 / 4 * 39) */ | |
32 | -#define AT91C_MASTER_CLOCK (AT91C_MAIN_CLOCK/3) /* peripheral clock */ | |
33 | - | |
34 | -#define AT91_SLOW_CLOCK 32768 /* slow clock */ | |
35 | - | |
36 | -#define CONFIG_ARM920T 1 /* This is an ARM920T Core */ | |
37 | -#define CONFIG_AT91RM9200 1 /* It's an Atmel AT91RM9200 SoC */ | |
38 | -#define CONFIG_CMC_PU2 1 /* on an CMC_PU2 Board */ | |
39 | -#undef CONFIG_USE_IRQ /* we don't need IRQ/FIQ stuff */ | |
40 | -#define USE_920T_MMU 1 | |
41 | - | |
42 | -#define CONFIG_CMDLINE_TAG 1 /* enable passing of ATAGs */ | |
43 | -#define CONFIG_SETUP_MEMORY_TAGS 1 | |
44 | -#define CONFIG_INITRD_TAG 1 | |
45 | - | |
46 | -#ifndef CONFIG_SKIP_LOWLEVEL_INIT | |
47 | -#define CONFIG_SYS_USE_MAIN_OSCILLATOR 1 | |
48 | -/* flash */ | |
49 | -#define CONFIG_SYS_EBI_CFGR_VAL 0x00000000 | |
50 | -#define CONFIG_SYS_SMC_CSR0_VAL 0x100032ad /* 16bit, 2 TDF, 4 WS */ | |
51 | - | |
52 | -/* clocks */ | |
53 | -#define CONFIG_SYS_PLLAR_VAL 0x2026BE04 /* 179,712 MHz for PCK */ | |
54 | -#define CONFIG_SYS_PLLBR_VAL 0x10483E0E /* 48.054857 MHz (divider by 2 for USB) */ | |
55 | -#define CONFIG_SYS_MCKR_VAL 0x00000202 /* PCK/3 = MCK Master Clock = 69.120MHz from PLLA */ | |
56 | - | |
57 | -/* sdram */ | |
58 | -#define CONFIG_SYS_PIOC_ASR_VAL 0xFFFF0000 /* Configure PIOC as peripheral (D16/D31) */ | |
59 | -#define CONFIG_SYS_PIOC_BSR_VAL 0x00000000 | |
60 | -#define CONFIG_SYS_PIOC_PDR_VAL 0xFFFF0000 | |
61 | -#define CONFIG_SYS_EBI_CSA_VAL 0x00000002 /* CS1=CONFIG_SYS_SDRAM */ | |
62 | -#define CONFIG_SYS_SDRC_CR_VAL 0x3399c1d4 /* set up the CONFIG_SYS_SDRAM */ | |
63 | -#define CONFIG_SYS_SDRAM 0x20000000 /* address of the CONFIG_SYS_SDRAM */ | |
64 | -#define CONFIG_SYS_SDRAM1 0x20000080 /* address of the CONFIG_SYS_SDRAM */ | |
65 | -#define CONFIG_SYS_SDRAM_VAL 0x00000000 /* value written to CONFIG_SYS_SDRAM */ | |
66 | -#define CONFIG_SYS_SDRC_MR_VAL 0x00000002 /* Precharge All */ | |
67 | -#define CONFIG_SYS_SDRC_MR_VAL1 0x00000004 /* refresh */ | |
68 | -#define CONFIG_SYS_SDRC_MR_VAL2 0x00000003 /* Load Mode Register */ | |
69 | -#define CONFIG_SYS_SDRC_MR_VAL3 0x00000000 /* Normal Mode */ | |
70 | -#define CONFIG_SYS_SDRC_TR_VAL 0x000002E0 /* Write refresh rate */ | |
71 | -#endif /* CONFIG_SKIP_LOWLEVEL_INIT */ | |
72 | - | |
73 | -/* | |
74 | - * Size of malloc() pool | |
75 | - */ | |
76 | -#define CONFIG_SYS_MALLOC_LEN (CONFIG_ENV_SIZE + 128*1024) | |
77 | - | |
78 | -#define CONFIG_BAUDRATE 9600 | |
79 | - | |
80 | -/* | |
81 | - * Hardware drivers | |
82 | - */ | |
83 | - | |
84 | -/* define one of these to choose the DBGU, USART0 or USART1 as console */ | |
85 | -#define CONFIG_AT91RM9200_USART | |
86 | -#undef CONFIG_DBGU | |
87 | -#define CONFIG_USART0 | |
88 | -#undef CONFIG_USART1 | |
89 | - | |
90 | -#undef CONFIG_HWFLOW /* don't include RTS/CTS flow control support */ | |
91 | - | |
92 | -#undef CONFIG_MODEM_SUPPORT /* disable modem initialization stuff */ | |
93 | - | |
94 | -#define CONFIG_HARD_I2C | |
95 | - | |
96 | -#ifdef CONFIG_HARD_I2C | |
97 | -#define CONFIG_SYS_I2C_SPEED 0 /* not used */ | |
98 | -#define CONFIG_SYS_I2C_SLAVE 0 /* not used */ | |
99 | -#define CONFIG_RTC_RS5C372A /* RICOH I2C RTC */ | |
100 | -#define CONFIG_SYS_I2C_RTC_ADDR 0x32 | |
101 | -#define CONFIG_SYS_I2C_EEPROM_ADDR 0x50 | |
102 | -#define CONFIG_SYS_I2C_EEPROM_ADDR_LEN 1 | |
103 | -#define CONFIG_SYS_I2C_EEPROM_ADDR_OVERFLOW | |
104 | -#else | |
105 | -#define CONFIG_TIMESTAMP | |
106 | -#endif | |
107 | -/* still about 20 kB free with this defined */ | |
108 | -#define CONFIG_SYS_LONGHELP | |
109 | - | |
110 | -#define CONFIG_BOOTDELAY 1 | |
111 | - | |
112 | - | |
113 | -/* | |
114 | - * BOOTP options | |
115 | - */ | |
116 | -#define CONFIG_BOOTP_BOOTFILESIZE | |
117 | -#define CONFIG_BOOTP_BOOTPATH | |
118 | -#define CONFIG_BOOTP_GATEWAY | |
119 | -#define CONFIG_BOOTP_HOSTNAME | |
120 | - | |
121 | - | |
122 | -/* | |
123 | - * Command line configuration. | |
124 | - */ | |
125 | -#include <config_cmd_default.h> | |
126 | - | |
127 | -#define CONFIG_CMD_DHCP | |
128 | -#define CONFIG_CMD_NFS | |
129 | -#define CONFIG_CMD_SNTP | |
130 | - | |
131 | -#undef CONFIG_CMD_FPGA | |
132 | -#undef CONFIG_CMD_MISC | |
133 | - | |
134 | -#if defined(CONFIG_HARD_I2C) | |
135 | - #define CONFIG_CMD_DATE | |
136 | - #define CONFIG_CMD_EEPROM | |
137 | - #define CONFIG_CMD_I2C | |
138 | -#endif | |
139 | - | |
140 | - | |
141 | -#define CONFIG_MISC_INIT_R | |
142 | -#define CONFIG_SYS_LONGHELP | |
143 | - | |
144 | -#define AT91_SMART_MEDIA_ALE (1 << 22) /* our ALE is AD22 */ | |
145 | -#define AT91_SMART_MEDIA_CLE (1 << 21) /* our CLE is AD21 */ | |
146 | - | |
147 | -#define CONFIG_NR_DRAM_BANKS 1 | |
148 | -#define PHYS_SDRAM 0x20000000 | |
149 | -#define PHYS_SDRAM_SIZE 0x1000000 /* 16 megs */ | |
150 | - | |
151 | -#define CONFIG_SYS_MEMTEST_START PHYS_SDRAM | |
152 | -#define CONFIG_SYS_MEMTEST_END CONFIG_SYS_MEMTEST_START + PHYS_SDRAM_SIZE - 262144 | |
153 | - | |
154 | -#define CONFIG_NET_MULTI 1 | |
155 | -#ifdef CONFIG_NET_MULTI | |
156 | -#define CONFIG_DRIVER_AT91EMAC 1 | |
157 | -#define CONFIG_SYS_RX_ETH_BUFFER 8 | |
158 | -#else | |
159 | -#define CONFIG_DRIVER_ETHER 1 | |
160 | -#endif | |
161 | -#define CONFIG_NET_RETRY_COUNT 20 | |
162 | -#define CONFIG_AT91C_USE_RMII | |
163 | - | |
164 | -#define CONFIG_SYS_SPI_WRITE_TOUT (5*CONFIG_SYS_HZ) | |
165 | -#define CONFIG_SYS_MAX_DATAFLASH_BANKS 2 | |
166 | -#define CONFIG_SYS_MAX_DATAFLASH_PAGES 16384 | |
167 | -#define CONFIG_SYS_DATAFLASH_LOGIC_ADDR_CS0 0xC0000000 /* Logical adress for CS0 */ | |
168 | -#define CONFIG_SYS_DATAFLASH_LOGIC_ADDR_CS3 0xD0000000 /* Logical adress for CS3 */ | |
169 | - | |
170 | -#define PHYS_FLASH_1 0x10000000 | |
171 | -#define PHYS_FLASH_SIZE 0x800000 /* 8 megs main flash */ | |
172 | -#define CONFIG_SYS_FLASH_BASE PHYS_FLASH_1 | |
173 | -#define CONFIG_SYS_MONITOR_BASE CONFIG_SYS_FLASH_BASE | |
174 | -#define CONFIG_SYS_MAX_FLASH_BANKS 1 | |
175 | -#define CONFIG_SYS_MAX_FLASH_SECT 256 | |
176 | -#define CONFIG_SYS_FLASH_ERASE_TOUT (11 * CONFIG_SYS_HZ) /* Timeout for Flash Erase */ | |
177 | -#define CONFIG_SYS_FLASH_WRITE_TOUT ( 2 * CONFIG_SYS_HZ) /* Timeout for Flash Write */ | |
178 | - | |
179 | -#define CONFIG_ENV_IS_IN_FLASH 1 | |
180 | -#define CONFIG_ENV_OFFSET 0x20000 /* after u-boot.bin */ | |
181 | -#define CONFIG_ENV_SECT_SIZE (64 << 10) /* sectors are 64 kB */ | |
182 | -#define CONFIG_ENV_SIZE (16 << 10) /* Use only 16 kB */ | |
183 | - | |
184 | -#define CONFIG_SYS_LOAD_ADDR 0x21000000 /* default load address */ | |
185 | - | |
186 | -#define CONFIG_SYS_BAUDRATE_TABLE { 115200, 57600, 38400, 19200, 9600 } | |
187 | - | |
188 | -#define CONFIG_SYS_PROMPT "=> " /* Monitor Command Prompt */ | |
189 | -#define CONFIG_SYS_CBSIZE 256 /* Console I/O Buffer Size */ | |
190 | -#define CONFIG_SYS_MAXARGS 32 /* max number of command args */ | |
191 | -#define CONFIG_SYS_PBSIZE (CONFIG_SYS_CBSIZE+sizeof(CONFIG_SYS_PROMPT)+16) /* Print Buffer Size */ | |
192 | - | |
193 | -#define CONFIG_SYS_HZ 1000 | |
194 | -#define CONFIG_SYS_HZ_CLOCK (AT91C_MASTER_CLOCK/2) /* AT91C_TC0_CMR is implicitly set to */ | |
195 | - /* AT91C_TC_TIMER_DIV1_CLOCK */ | |
196 | - | |
197 | -#define CONFIG_STACKSIZE (32*1024) /* regular stack */ | |
198 | - | |
199 | -#ifdef CONFIG_USE_IRQ | |
200 | -#error CONFIG_USE_IRQ not supported | |
201 | -#endif | |
202 | - | |
203 | -#define CONFIG_EXTRA_ENV_SETTINGS \ | |
204 | - "net_nfs=tftp ${loadaddr} ${bootfile};run nfsargs addip addcons " \ | |
205 | - "addmtd;bootm\0" \ | |
206 | - "nfsargs=setenv bootargs root=/dev/nfs rw " \ | |
207 | - "nfsroot=${serverip}:${rootpath}\0" \ | |
208 | - "net_cramfs=tftp ${loadaddr} ${bootfile}; run flashargs addip " \ | |
209 | - "addcons addmtd; bootm\0" \ | |
210 | - "flash_cramfs=run flashargs addip addcons addmtd; bootm 10030000\0" \ | |
211 | - "flashargs=setenv bootargs root=/dev/mtdblock3 ro\0" \ | |
212 | - "addip=setenv bootargs ${bootargs} ethaddr=${ethaddr} " \ | |
213 | - "ip=${ipaddr}:${serverip}:${gatewayip}:${netmask}:" \ | |
214 | - "${hostname}::off\0" \ | |
215 | - "addcons=setenv bootargs ${bootargs} console=ttyS0,${baudrate}\0" \ | |
216 | - "addmtd=setenv bootargs ${bootargs} mtdparts=cmc_pu2:128k(uboot)ro," \ | |
217 | - "64k(environment),768k(linux),4096k(root),-\0" \ | |
218 | - "load=tftp ${loadaddr} ${loadfile}\0" \ | |
219 | - "update=protect off 10000000 1001ffff;erase 10000000 1001ffff; " \ | |
220 | - "cp.b ${loadaddr} 10000000 ${filesize};" \ | |
221 | - "protect on 10000000 1001ffff\0" \ | |
222 | - "updatel=era 10030000 100effff;tftp ${loadaddr} ${bootfile}; " \ | |
223 | - "cp.b ${loadaddr} 10030000 ${filesize}\0" \ | |
224 | - "updatec=era 100f0000 104effff;tftp ${loadaddr} ${cramfsimage}; " \ | |
225 | - "cp.b ${loadaddr} 100f0000 ${filesize}\0" \ | |
226 | - "updatej=era 104f0000 107fffff;tftp ${loadaddr} ${jffsimage}; " \ | |
227 | - "cp.b ${loadaddr} 104f0000 ${filesize}\0" \ | |
228 | - "cramfsimage=cramfs_cmc-pu2.img\0" \ | |
229 | - "jffsimage=jffs2_cmc-pu2.img\0" \ | |
230 | - "loadfile=u-boot_cmc-pu2.bin\0" \ | |
231 | - "bootfile=uImage_cmc-pu2\0" \ | |
232 | - "loadaddr=0x20800000\0" \ | |
233 | - "hostname=CMC-TC-PU2\0" \ | |
234 | - "bootcmd=run dhcp_start;run flash_cramfs\0" \ | |
235 | - "autoload=n\0" \ | |
236 | - "dhcp_start=echo no DHCP\0" \ | |
237 | - "ipaddr=192.168.0.190\0" | |
238 | -#endif /* __CONFIG_H */ |