summaryrefslogtreecommitdiff
path: root/board/amcc/katmai
diff options
context:
space:
mode:
authorStefan Roese <sr@denx.de>2007-03-31 08:47:34 +0200
committerStefan Roese <sr@denx.de>2007-03-31 08:47:34 +0200
commit490e5730c674b20d708b783a2c5ffd7208f83873 (patch)
treef3c0d37173fa9b306314411cc8641327b7813029 /board/amcc/katmai
parent94f54703c3a776ec23e427ca2a16e0a79a5d50c1 (diff)
downloadu-boot-imx-490e5730c674b20d708b783a2c5ffd7208f83873.zip
u-boot-imx-490e5730c674b20d708b783a2c5ffd7208f83873.tar.gz
u-boot-imx-490e5730c674b20d708b783a2c5ffd7208f83873.tar.bz2
ppc4xx: Fix "bootstrap" command for Katmai board
The board specific "bootstrap" command is now fixed and can be used for the AMCC Katmai board to configure different CPU/PLB/OPB frequencies. Signed-off-by: Stefan Roese <sr@denx.de>
Diffstat (limited to 'board/amcc/katmai')
-rw-r--r--board/amcc/katmai/cmd_katmai.c101
1 files changed, 25 insertions, 76 deletions
diff --git a/board/amcc/katmai/cmd_katmai.c b/board/amcc/katmai/cmd_katmai.c
index 684f6a5..0c42c39 100644
--- a/board/amcc/katmai/cmd_katmai.c
+++ b/board/amcc/katmai/cmd_katmai.c
@@ -27,6 +27,8 @@
#include <i2c.h>
#include <asm/byteorder.h>
+#define CONFIG_STRESS /* enable 667 MHz CPU freq selection */
+
static int do_bootstrap(cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
{
uchar chip;
@@ -49,55 +51,28 @@ static int do_bootstrap(cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
else
chip = IIC0_ALT_BOOTPROM_ADDR;
- do {
- printf("enter sys clock frequency 33 or 66 Mhz or quit to abort\n");
- nbytes = readline (" ? ");
-
- if (strcmp(console_buffer, "quit") == 0)
- return 0;
-
- if ((strcmp(console_buffer, "33") != 0) &
- (strcmp(console_buffer, "66") != 0))
- nbytes=0;
-
- strcpy(sysClock, console_buffer);
-
- } while (nbytes == 0);
+ /* on Katmai SysClk is always 33MHz */
+ strcpy(sysClock, "33");
do {
- if (strcmp(sysClock, "66") == 0) {
- printf("enter cpu clock frequency 400, 533 Mhz or quit to abort\n");
- } else {
#ifdef CONFIG_STRESS
- printf("enter cpu clock frequency 400, 500, 533, 667 Mhz or quit to abort\n");
+ printf("enter cpu clock frequency 400, 500, 533, 667 Mhz or quit to abort\n");
#else
- printf("enter cpu clock frequency 400, 500, 533 Mhz or quit to abort\n");
+ printf("enter cpu clock frequency 400, 500, 533 Mhz or quit to abort\n");
#endif
- }
nbytes = readline (" ? ");
if (strcmp(console_buffer, "quit") == 0)
return 0;
- if (strcmp(sysClock, "66") == 0) {
- if ((strcmp(console_buffer, "400") != 0) &
- (strcmp(console_buffer, "533") != 0)
-#ifdef CONFIG_STRESS
- & (strcmp(console_buffer, "667") != 0)
-#endif
- ) {
- nbytes = 0;
- }
- } else {
- if ((strcmp(console_buffer, "400") != 0) &
- (strcmp(console_buffer, "500") != 0) &
- (strcmp(console_buffer, "533") != 0)
+ if ((strcmp(console_buffer, "400") != 0) &&
+ (strcmp(console_buffer, "500") != 0) &&
+ (strcmp(console_buffer, "533") != 0)
#ifdef CONFIG_STRESS
- & (strcmp(console_buffer, "667") != 0)
+ && (strcmp(console_buffer, "667") != 0)
#endif
- ) {
- nbytes = 0;
- }
+ ) {
+ nbytes = 0;
}
strcpy(cpuClock, console_buffer);
@@ -124,13 +99,13 @@ static int do_bootstrap(cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
return 0;
if (strcmp(cpuClock, "400") == 0) {
- if ((strcmp(console_buffer, "100") != 0) &
+ if ((strcmp(console_buffer, "100") != 0) &&
(strcmp(console_buffer, "133") != 0))
nbytes = 0;
}
#ifdef CONFIG_STRESS
if (strcmp(cpuClock, "667") == 0) {
- if ((strcmp(console_buffer, "133") != 0) &
+ if ((strcmp(console_buffer, "133") != 0) &&
(strcmp(console_buffer, "166") != 0))
nbytes = 0;
}
@@ -147,9 +122,9 @@ static int do_bootstrap(cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
if (strcmp(console_buffer, "quit") == 0)
return 0;
- if ((strcmp(console_buffer, "33") != 0) &
- (strcmp(console_buffer, "66") != 0) &
- (strcmp(console_buffer, "100") != 0) &
+ if ((strcmp(console_buffer, "33") != 0) &&
+ (strcmp(console_buffer, "66") != 0) &&
+ (strcmp(console_buffer, "100") != 0) &&
(strcmp(console_buffer, "133") != 0)) {
nbytes = 0;
}
@@ -176,11 +151,11 @@ static int do_bootstrap(cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
} while (nbytes == 0);
if (strcmp(sysClock, "33") == 0) {
- if ((strcmp(cpuClock, "400") == 0) &
+ if ((strcmp(cpuClock, "400") == 0) &&
(strcmp(plbClock, "100") == 0))
data = 0x8678c206;
- if ((strcmp(cpuClock, "400") == 0) &
+ if ((strcmp(cpuClock, "400") == 0) &&
(strcmp(plbClock, "133") == 0))
data = 0x8678c2c6;
@@ -189,42 +164,16 @@ static int do_bootstrap(cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
if ((strcmp(cpuClock, "533") == 0))
data = 0x87790252;
-
#ifdef CONFIG_STRESS
- if ((strcmp(cpuClock, "667") == 0) &
+ if ((strcmp(cpuClock, "667") == 0) &&
(strcmp(plbClock, "133") == 0))
data = 0x87794256;
- if ((strcmp(cpuClock, "667") == 0) &
+ if ((strcmp(cpuClock, "667") == 0) &&
(strcmp(plbClock, "166") == 0))
data = 0x87794206;
-
-#endif
- }
- if (strcmp(sysClock, "66") == 0) {
- if ((strcmp(cpuClock, "400") == 0) &
- (strcmp(plbClock, "100") == 0))
- data = 0x84706206;
-
- if ((strcmp(cpuClock, "400") == 0) &
- (strcmp(plbClock, "133") == 0))
- data = 0x847062c6;
-
- if ((strcmp(cpuClock, "533") == 0))
- data = 0x85708206;
-
-#ifdef CONFIG_STRESS
- if ((strcmp(cpuClock, "667") == 0) &
- (strcmp(plbClock, "133") == 0))
- data = 0x8570a256;
-
- if ((strcmp(cpuClock, "667") == 0) &
- (strcmp(plbClock, "166") == 0))
- data = 0x8570a206;
-
#endif
}
-
#ifdef DEBUG
printf(" pin strap0 to write in i2c = %x\n", data);
#endif /* DEBUG */
@@ -233,16 +182,16 @@ static int do_bootstrap(cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
printf("Error writing strap0 in %s\n", argv[2]);
if (strcmp(pcixClock, "33") == 0)
- data = 0x00000701;
+ data = 0x000007E1;
if (strcmp(pcixClock, "66") == 0)
- data = 0x00000601;
+ data = 0x000006E1;
if (strcmp(pcixClock, "100") == 0)
- data = 0x00000501;
+ data = 0x000005E1;
if (strcmp(pcixClock, "133") == 0)
- data = 0x00000401;
+ data = 0x000004E1;
if (strcmp(plbClock, "166") == 0)
data |= 0x05950000;