diff options
author | Stefan Roese <sr@denx.de> | 2007-10-23 11:31:05 +0200 |
---|---|---|
committer | Stefan Roese <sr@denx.de> | 2007-10-31 21:20:51 +0100 |
commit | f10493c6d77a1e07a6c2ff4d772937a5e7359d6a (patch) | |
tree | 8fe61beee476893114183f23a17304ef486679c7 | |
parent | 353f2688b4e0fc7b969bc70a02be4b40bf0dd124 (diff) | |
download | u-boot-imx-f10493c6d77a1e07a6c2ff4d772937a5e7359d6a.zip u-boot-imx-f10493c6d77a1e07a6c2ff4d772937a5e7359d6a.tar.gz u-boot-imx-f10493c6d77a1e07a6c2ff4d772937a5e7359d6a.tar.bz2 |
ppc4xx: Correct UART input clock calculation and passing to fdt
We now use a value in the gd (global data) structure for the UART input
frequency, since the PPC4xx_SYS_INFO struct is always rewritten completely
in get_sys_info().
Signed-off-by: Stefan Roese <sr@denx.de>
-rw-r--r-- | cpu/ppc4xx/4xx_uart.c | 4 | ||||
-rw-r--r-- | cpu/ppc4xx/fdt.c | 8 | ||||
-rw-r--r-- | include/asm-ppc/global_data.h | 3 |
3 files changed, 10 insertions, 5 deletions
diff --git a/cpu/ppc4xx/4xx_uart.c b/cpu/ppc4xx/4xx_uart.c index c6b229f..ac2b12b 100644 --- a/cpu/ppc4xx/4xx_uart.c +++ b/cpu/ppc4xx/4xx_uart.c @@ -192,9 +192,9 @@ static void serial_init_common(u32 base, u32 udiv, u16 bdiv) * the UART divisor is available */ #ifdef CFG_EXT_SERIAL_CLOCK - sys_info.freqUART = CFG_EXT_SERIAL_CLOCK; + gd->uart_clk = CFG_EXT_SERIAL_CLOCK; #else - sys_info.freqUART = sys_info.freqUART / udiv; + gd->uart_clk = sys_info.freqUART / udiv; #endif out_8((u8 *)base + UART_LCR, 0x80); /* set DLAB bit */ diff --git a/cpu/ppc4xx/fdt.c b/cpu/ppc4xx/fdt.c index bf97c2a..dcedbbb 100644 --- a/cpu/ppc4xx/fdt.c +++ b/cpu/ppc4xx/fdt.c @@ -36,6 +36,8 @@ #include <libfdt.h> #include <libfdt_env.h> +DECLARE_GLOBAL_DATA_PTR; + static void do_fixup(void *fdt, const char *node, const char *prop, const void *val, int len, int create) { @@ -44,7 +46,7 @@ static void do_fixup(void *fdt, const char *node, const char *prop, debug("Updating property '%s/%s' = ", node, prop); for (i = 0; i < len; i++) debug(" %.2x", *(u8*)(val+i)); - debug("\n"); + debug("(%d)\n", *(u32 *)val); #endif int rc = fdt_find_and_setprop(fdt, node, prop, val, len, create); if (rc) @@ -83,9 +85,9 @@ static void do_fixup_uart(void *fdt, int offset, int i, bd_t *bd) get_sys_info(&sys_info); - debug("Updating node UART%d\n", i); + debug("Updating node UART%d: clock-frequency=%d\n", i, gd->uart_clk); - val = cpu_to_fdt32(sys_info.freqUART); + val = cpu_to_fdt32(gd->uart_clk); rc = fdt_setprop(fdt, offset, "clock-frequency", &val, 4); if (rc) printf("Unable to update node UART, err=%s\n", fdt_strerror(rc)); diff --git a/include/asm-ppc/global_data.h b/include/asm-ppc/global_data.h index 4676e2c..05aee74 100644 --- a/include/asm-ppc/global_data.h +++ b/include/asm-ppc/global_data.h @@ -107,6 +107,9 @@ typedef struct global_data { unsigned int dp_alloc_base; unsigned int dp_alloc_top; #endif +#if defined(CONFIG_4xx) + u32 uart_clk; +#endif /* CONFIG_4xx */ #if defined(CFG_GT_6426x) unsigned int mirror_hack[16]; #endif |