[U-Boot] powerpc: keymile boards updates
Heiko Schocher
hs at denx.de
Thu Jan 7 08:55:50 CET 2010
- malloc size 4 MB for all keymile boards
- use generic FDT code for fixing up the DTS
- enable unit-led at startup for keymile boards
- remove some dts updates for keymile boards
- ppc_83xx, kmeter1: take FE/GbE PHYs out of reset
- ppc_83xx, kmeter1: change from Intel Strata to Spansion 64MB flash
changed from Intel Strata to Spansion 64MB flash and changed flash layout.
+---------+----------+-----------------------+-----------------------------+
| name | size | range | description |
+---------+----------+-----------------------+-----------------------------+
| u-boot | 768 KB | 0xf0000000-0xf00bffff | for u-boot |
| env | 128 KB | 0xf00c0000-0xf00dffff | for environment |
| envred | 128 KB | 0xf00e0000-0xf00fffff | for environment (redundant) |
| ubi0 | 64512 KB | 0xf0100000-0xf3ffffff | ubi0 for ubi volumes |
+---------+----------+-----------------------+-----------------------------+
Signed-off-by: Heiko Schocher <hs at denx.de>
---
board/keymile/km8xx/km8xx.c | 47 +++-------------------------
board/keymile/kmeter1/kmeter1.c | 50 ++++---------------------------
board/keymile/mgcoge/mgcoge.c | 62 ++------------------------------------
include/configs/keymile-common.h | 2 +-
include/configs/kmeter1.h | 10 ++++--
5 files changed, 22 insertions(+), 149 deletions(-)
diff --git a/board/keymile/km8xx/km8xx.c b/board/keymile/km8xx/km8xx.c
index ec883a4..6de2f22 100644
--- a/board/keymile/km8xx/km8xx.c
+++ b/board/keymile/km8xx/km8xx.c
@@ -147,7 +147,9 @@ phys_size_t initdram (int board_type)
int board_early_init_r(void)
{
/* setup the UPIOx */
- out_8((u8 *)(CONFIG_SYS_PIGGY_BASE + 0x02), 0xc0);
+ /* General Unit Reset disabled, Flash Bank enabled, UnitLed on */
+ out_8((u8 *)(CONFIG_SYS_PIGGY_BASE + 0x02), 0xc2);
+ /* SCC4 enable, halfduplex, FCC1 powerdown, ANDI enable*/
out_8((u8 *)(CONFIG_SYS_PIGGY_BASE + 0x03), 0x35);
return 0;
}
@@ -160,51 +162,12 @@ int hush_init_var (void)
#if defined(CONFIG_OF_BOARD_SETUP) && defined(CONFIG_OF_LIBFDT)
/*
- * update "memory" property in the blob
+ * update "brg" property in the blob
*/
void ft_blob_update (void *blob, bd_t *bd)
{
ulong brg_data[1] = {0};
- ulong memory_data[2] = {0};
- ulong *flash_data = NULL;
- ulong flash_reg[3] = {0};
- flash_info_t *info;
- int len;
- int i = 0;
-
- memory_data[0] = cpu_to_be32 (bd->bi_memstart);
- memory_data[1] = cpu_to_be32 (bd->bi_memsize);
- fdt_set_node_and_value (blob, "/memory", "reg", memory_data,
- sizeof (memory_data));
-
- len = fdt_get_node_and_value (blob, "/localbus", "ranges",
- (void *)&flash_data);
-
- if (flash_data == NULL) {
- printf ("%s: error /localbus/ranges entry\n", __FUNCTION__);
- return;
- }
-
- /* update Flash addr, size */
- while ( i < (len / 4)) {
- switch (flash_data[i]) {
- case 0:
- info = flash_get_info(CONFIG_SYS_FLASH_BASE);
- flash_data[i + 1] = 0;
- flash_data[i + 2] = cpu_to_be32 (CONFIG_SYS_FLASH_BASE);
- flash_data[i + 3] = cpu_to_be32 (info->size);
- break;
- default:
- break;
- }
- i += 4;
- }
- fdt_set_node_and_value (blob, "/localbus", "ranges", flash_data,
- len);
-
- flash_reg[2] = cpu_to_be32 (bd->bi_flashsize);
- fdt_set_node_and_value (blob, "/localbus/flash at 0,0", "reg", flash_reg,
- sizeof (flash_reg));
+
/* BRG */
brg_data[0] = cpu_to_be32 (bd->bi_busfreq);
fdt_set_node_and_value (blob, "/soc/cpm", "brg-frequency", brg_data,
diff --git a/board/keymile/kmeter1/kmeter1.c b/board/keymile/kmeter1/kmeter1.c
index fa2f1cf..bbcaf5d 100644
--- a/board/keymile/kmeter1/kmeter1.c
+++ b/board/keymile/kmeter1/kmeter1.c
@@ -99,6 +99,10 @@ int board_early_init_r (void)
}
/* enable the PHY on the PIGGY */
setbits (8, (void *)(CONFIG_SYS_PIGGY_BASE + 0x10003), 0x01);
+ /* enable the Unit LED (green) */
+ setbits (8, (void *)(CONFIG_SYS_PIGGY_BASE + 0x00002), 0x01);
+ /* take FE/GbE PHYs out of reset */
+ setbits (8, (void *)(CONFIG_SYS_PIGGY_BASE + 0x0000f), 0x1c);
return 0;
}
@@ -188,53 +192,11 @@ int checkboard (void)
#if defined(CONFIG_OF_BOARD_SETUP)
/*
- * update "/localbus/ranges" property in the blob
+ * update property in the blob
*/
void ft_blob_update (void *blob, bd_t *bd)
{
- ulong *flash_data = NULL;
- flash_info_t *info;
- ulong flash_reg[6] = {0};
- int len;
- int size = 0;
- int i = 0;
-
- len = fdt_get_node_and_value (blob, "/localbus", "ranges",
- (void *)&flash_data);
-
- if (flash_data == NULL) {
- printf ("%s: error /localbus/ranges entry\n", __FUNCTION__);
- return;
- }
-
- /* update Flash addr, size */
- while ( i < (len / 4)) {
- switch (flash_data[i]) {
- case 0:
- info = flash_get_info(CONFIG_SYS_FLASH_BASE);
- size = info->size;
- info = flash_get_info(CONFIG_SYS_FLASH_BASE_1);
- size += info->size;
- flash_data[i + 1] = 0;
- flash_data[i + 2] = cpu_to_be32 (CONFIG_SYS_FLASH_BASE);
- flash_data[i + 3] = cpu_to_be32 (size);
- break;
- default:
- break;
- }
- i += 4;
- }
- fdt_set_node_and_value (blob, "/localbus", "ranges", flash_data,
- len);
-
- info = flash_get_info(CONFIG_SYS_FLASH_BASE);
- size = info->size;
- flash_reg[2] = cpu_to_be32 (size);
- flash_reg[4] = flash_reg[2];
- info = flash_get_info(CONFIG_SYS_FLASH_BASE_1);
- flash_reg[5] = cpu_to_be32 (info->size);
- fdt_set_node_and_value (blob, "/localbus/flash at f0000000,0", "reg", flash_reg,
- sizeof (flash_reg));
+ /* no board specific update */
}
diff --git a/board/keymile/mgcoge/mgcoge.c b/board/keymile/mgcoge/mgcoge.c
index 932a805..5c9496c 100644
--- a/board/keymile/mgcoge/mgcoge.c
+++ b/board/keymile/mgcoge/mgcoge.c
@@ -299,7 +299,9 @@ int checkboard(void)
int board_early_init_r (void)
{
/* setup the UPIOx */
- out_8((u8 *)(CONFIG_SYS_PIGGY_BASE + 0x02), 0xc0);
+ /* General Unit Reset disabled, Flash Bank enabled, UnitLed on */
+ out_8((u8 *)(CONFIG_SYS_PIGGY_BASE + 0x02), 0xc2);
+ /* SCC4 enable, halfduplex, FCC1 powerdown */
out_8((u8 *)(CONFIG_SYS_PIGGY_BASE + 0x03), 0x15);
return 0;
}
@@ -311,66 +313,8 @@ int hush_init_var (void)
}
#if defined(CONFIG_OF_BOARD_SETUP) && defined(CONFIG_OF_LIBFDT)
-/*
- * update "flash" property in the blob
- */
-void ft_blob_update (void *blob, bd_t *bd)
-{
- ulong *flash_data = NULL;
- ulong flash_reg[6] = {0};
- flash_info_t *info;
- int len;
- int size;
- int i = 0;
-
- len = fdt_get_node_and_value (blob, "/localbus", "ranges",
- (void *)&flash_data);
-
- if (flash_data == NULL) {
- printf ("%s: error /localbus/ranges entry\n", __FUNCTION__);
- return;
- }
-
- /* update Flash addr, size */
- while ( i < (len / 4)) {
- switch (flash_data[i]) {
- case 0:
- info = flash_get_info(CONFIG_SYS_FLASH_BASE);
- flash_data[i + 1] = 0;
- flash_data[i + 2] = cpu_to_be32 (CONFIG_SYS_FLASH_BASE);
- flash_data[i + 3] = cpu_to_be32 (info->size);
- break;
- case 5:
- info = flash_get_info(CONFIG_SYS_FLASH_BASE_1);
- size = info->size;
- info = flash_get_info(CONFIG_SYS_FLASH_BASE_2);
- size += info->size;
- flash_data[i + 1] = 0;
- flash_data[i + 2] = cpu_to_be32 (CONFIG_SYS_FLASH_BASE_1);
- flash_data[i + 3] = cpu_to_be32 (size);
- break;
- default:
- break;
- }
- i += 4;
- }
- fdt_set_node_and_value (blob, "/localbus", "ranges", flash_data,
- len);
-
- info = flash_get_info(CONFIG_SYS_FLASH_BASE_1);
- flash_reg[0] = cpu_to_be32 (5);
- flash_reg[2] = cpu_to_be32 (info->size);
- flash_reg[3] = flash_reg[0];
- flash_reg[4] = flash_reg[2];
- info = flash_get_info(CONFIG_SYS_FLASH_BASE_2);
- flash_reg[5] = cpu_to_be32 (info->size);
- fdt_set_node_and_value (blob, "/localbus/flash at 5,0", "reg", flash_reg,
- sizeof (flash_reg));
-}
-
void ft_board_setup (void *blob, bd_t *bd)
{
ft_cpu_setup (blob, bd);
- ft_blob_update (blob, bd);
}
#endif /* defined(CONFIG_OF_BOARD_SETUP) && defined(CONFIG_OF_LIBFDT) */
diff --git a/include/configs/keymile-common.h b/include/configs/keymile-common.h
index 2ef6a35..729d1c0 100644
--- a/include/configs/keymile-common.h
+++ b/include/configs/keymile-common.h
@@ -125,7 +125,7 @@
#define CONFIG_ENV_SIZE 0x04000 /* Size of Environment */
-#define CONFIG_SYS_MALLOC_LEN (1024 * 1024) /* Reserved for malloc */
+#define CONFIG_SYS_MALLOC_LEN (4 * 1024 * 1024)
/* UBI Support for all Keymile boards */
#define CONFIG_CMD_UBI
diff --git a/include/configs/kmeter1.h b/include/configs/kmeter1.h
index bec08da..9a48955 100644
--- a/include/configs/kmeter1.h
+++ b/include/configs/kmeter1.h
@@ -33,6 +33,11 @@
/* include common defines/options for all Keymile boards */
#include "keymile-common.h"
+#define MTDIDS_DEFAULT "nor0=boot"
+#define MTDPARTS_DEFAULT \
+ "mtdparts=boot:768k(u-boot),128k(env),128k(envred)," \
+ "-(" CONFIG_KM_UBI_PARTITION_NAME ")"
+
#define CONFIG_MISC_INIT_R 1
/*
* System Clock Setup
@@ -144,7 +149,6 @@
*/
#define CONFIG_SYS_MONITOR_BASE TEXT_BASE /* start of monitor */
#define CONFIG_SYS_FLASH_BASE 0xF0000000
-#define CONFIG_SYS_FLASH_BASE_1 0xF2000000
#define CONFIG_SYS_PIGGY_BASE 0xE8000000
#define CONFIG_SYS_PIGGY_SIZE 128
#define CONFIG_SYS_PAXE_BASE 0xA0000000
@@ -205,9 +209,9 @@
OR_GPCM_SCY_5 | \
OR_GPCM_TRLX | OR_GPCM_EAD)
-#define CONFIG_SYS_MAX_FLASH_BANKS 2 /* max num of flash banks */
+#define CONFIG_SYS_MAX_FLASH_BANKS 1 /* max num of flash banks */
#define CONFIG_SYS_MAX_FLASH_SECT 512 /* max num of sects on one chip */
-#define CONFIG_SYS_FLASH_BANKS_LIST { CONFIG_SYS_FLASH_BASE, CONFIG_SYS_FLASH_BASE_1 }
+#define CONFIG_SYS_FLASH_BANKS_LIST { CONFIG_SYS_FLASH_BASE }
#undef CONFIG_SYS_FLASH_CHECKSUM
--
1.6.2.5
--
DENX Software Engineering GmbH, MD: Wolfgang Denk & Detlev Zundel
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
More information about the U-Boot
mailing list