summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGrzegorz Bernacki <gjb@semihalf.com>2008-01-08 17:16:15 +0100
committerWolfgang Denk <wd@denx.de>2008-01-12 15:36:17 +0100
commit281ff9a45cf9eb17b8a9afc436cb783cf1f62363 (patch)
treebbaead33085ac4021caf04214b4efdda61757168
parenta10ff9196183e7e5f2ae3c4f5f3cbe92ae9cb719 (diff)
downloadu-boot-imx-281ff9a45cf9eb17b8a9afc436cb783cf1f62363.zip
u-boot-imx-281ff9a45cf9eb17b8a9afc436cb783cf1f62363.tar.gz
u-boot-imx-281ff9a45cf9eb17b8a9afc436cb783cf1f62363.tar.bz2
ads5121: Added support for FDT.
Signed-off-by: Grzegorz Bernacki <gjb@semihalf.com>
-rw-r--r--board/ads5121/ads5121.c8
-rw-r--r--cpu/mpc512x/cpu.c21
-rw-r--r--include/asm-ppc/u-boot.h3
-rw-r--r--include/configs/ads5121.h8
-rw-r--r--lib_ppc/board.c3
5 files changed, 43 insertions, 0 deletions
diff --git a/board/ads5121/ads5121.c b/board/ads5121/ads5121.c
index f275ce7..46be6a5 100644
--- a/board/ads5121/ads5121.c
+++ b/board/ads5121/ads5121.c
@@ -184,3 +184,11 @@ int checkboard (void)
brd_rev, cpld_rev);
return 0;
}
+
+#if defined(CONFIG_OF_LIBFDT) && defined(CONFIG_OF_BOARD_SETUP)
+void ft_board_setup(void *blob, bd_t *bd)
+{
+ ft_cpu_setup(blob, bd);
+ fdt_fixup_memory(blob, (u64)bd->bi_memstart, (u64)bd->bi_memsize);
+}
+#endif /* defined(CONFIG_OF_LIBFDT) && defined(CONFIG_OF_BOARD_SETUP) */
diff --git a/cpu/mpc512x/cpu.c b/cpu/mpc512x/cpu.c
index accae6e..6421a51 100644
--- a/cpu/mpc512x/cpu.c
+++ b/cpu/mpc512x/cpu.c
@@ -32,6 +32,10 @@
#include <mpc512x.h>
#include <asm/processor.h>
+#if defined(CONFIG_OF_LIBFDT)
+#include <fdt_support.h>
+#endif
+
DECLARE_GLOBAL_DATA_PTR;
int checkcpu (void)
@@ -125,3 +129,20 @@ void watchdog_reset (void)
enable_interrupts ();
}
#endif
+
+#ifdef CONFIG_OF_LIBFDT
+void ft_cpu_setup(void *blob, bd_t *bd)
+{
+ char * cpu_path = "/cpus/" OF_CPU;
+ char * eth_path = "/" OF_SOC "/ethernet@2800";
+
+ do_fixup_by_path_u32(blob, cpu_path, "timebase-frequency", OF_TBCLK, 1);
+ do_fixup_by_path_u32(blob, cpu_path, "bus-frequency", bd->bi_busfreq, 1);
+ do_fixup_by_path_u32(blob, cpu_path, "ref-frequency", CFG_MPC512X_CLKIN, 1);
+ do_fixup_by_path_u32(blob, cpu_path, "clock-frequency", bd->bi_intfreq, 1);
+ do_fixup_by_path_u32(blob, "/" OF_SOC, "bus-frequency", bd->bi_ipsfreq, 1);
+ do_fixup_by_path_u32(blob, "/" OF_SOC, "ref-frequency", CFG_MPC512X_CLKIN, 1);
+ do_fixup_by_path(blob, eth_path, "address", bd->bi_enetaddr, 6, 0);
+ do_fixup_by_path(blob, eth_path, "local-mac-address", bd->bi_enetaddr, 6, 0);
+}
+#endif
diff --git a/include/asm-ppc/u-boot.h b/include/asm-ppc/u-boot.h
index bd9b6f7..2b31814 100644
--- a/include/asm-ppc/u-boot.h
+++ b/include/asm-ppc/u-boot.h
@@ -74,6 +74,9 @@ typedef struct bd_info {
unsigned long bi_sccfreq; /* SCC_CLK Freq, in MHz */
unsigned long bi_vco; /* VCO Out from PLL, in MHz */
#endif
+#if defined(CONFIG_MPC512X)
+ unsigned long bi_ipsfreq; /* IPS Bus Freq, in MHz */
+#endif /* CONFIG_MPC512X */
#if defined(CONFIG_MPC5xxx)
unsigned long bi_ipbfreq; /* IPB Bus Freq, in MHz */
unsigned long bi_pcifreq; /* PCI Bus Freq, in MHz */
diff --git a/include/configs/ads5121.h b/include/configs/ads5121.h
index 58060a8..11e7e44 100644
--- a/include/configs/ads5121.h
+++ b/include/configs/ads5121.h
@@ -407,4 +407,12 @@
#define CONFIG_BOOTCOMMAND "run flash_self"
+#define CONFIG_OF_LIBFDT 1
+#define CONFIG_OF_BOARD_SETUP 1
+
+#define OF_CPU "PowerPC,5121@0"
+#define OF_SOC "soc5121@80000000"
+#define OF_TBCLK (bd->bi_busfreq / 4)
+#define OF_STDOUT_PATH "/soc5121@80000000/serial@11300"
+
#endif /* __CONFIG_H */
diff --git a/lib_ppc/board.c b/lib_ppc/board.c
index 0719745..6350918 100644
--- a/lib_ppc/board.c
+++ b/lib_ppc/board.c
@@ -555,6 +555,9 @@ void board_init_f (ulong bootflag)
bd->bi_sccfreq = gd->scc_clk;
bd->bi_vco = gd->vco_out;
#endif /* CONFIG_CPM2 */
+#if defined(CONFIG_MPC512X)
+ bd->bi_ipsfreq = gd->ipb_clk;
+#endif /* CONFIG_MPC512X */
#if defined(CONFIG_MPC5xxx)
bd->bi_ipbfreq = gd->ipb_clk;
bd->bi_pcifreq = gd->pci_clk;