Browse Source

powerpc: keymile boards updates

- 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@denx.de>
Heiko Schocher 14 years ago
parent
commit
4897ee33c9

+ 5 - 42
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@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,

+ 6 - 44
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@f0000000,0", "reg", flash_reg,
-				sizeof (flash_reg));
+  /* no board specific update */
 }
 
 

+ 3 - 59
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@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) */

+ 1 - 1
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

+ 7 - 3
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
@@ -152,7 +157,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
@@ -213,9 +217,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