summaryrefslogtreecommitdiff
path: root/cpu/mpc86xx/fdt.c
diff options
context:
space:
mode:
authorJon Loeliger <jdl@freescale.com>2008-02-18 14:01:56 -0600
committerJon Loeliger <jdl@freescale.com>2008-02-18 14:01:56 -0600
commit13f5433f700d4da9f6fdf2a4bb80310133a7c170 (patch)
tree96366e7145e82ea2d1d4a67611b75a954e998658 /cpu/mpc86xx/fdt.c
parent04efddc87c50c84f85dad5c331c634a6ce830a83 (diff)
downloadu-boot-imx-13f5433f700d4da9f6fdf2a4bb80310133a7c170.zip
u-boot-imx-13f5433f700d4da9f6fdf2a4bb80310133a7c170.tar.gz
u-boot-imx-13f5433f700d4da9f6fdf2a4bb80310133a7c170.tar.bz2
86xx: Convert sbc8641d to use libfdt.
This is the proper fix for a missing closing brace in the function ft_cpu_setup() noticed by joe.hamman <at> embeddedspecialties.com. The ft_cpu_setup() function in mpc8641hpcn.c should have been removed earlier as it was under the obsolete CONFIG_OF_FLAT_TREE, but was missed. Only, the sbc8641d was nominally still using it. It all got ripped out, and the funcality that was in ft_board_setup() was refactored to remove the CPU portions into the new file cpu/mpc86xx/fdt.c instead. Make sbc8641d use this now. Based loosely on an original patch from joe.hamman@embeddedspecialties.com Signed-off-by: Jon Loeliger <jdl@freescale.com>
Diffstat (limited to 'cpu/mpc86xx/fdt.c')
-rw-r--r--cpu/mpc86xx/fdt.c35
1 files changed, 35 insertions, 0 deletions
diff --git a/cpu/mpc86xx/fdt.c b/cpu/mpc86xx/fdt.c
new file mode 100644
index 0000000..379306e
--- /dev/null
+++ b/cpu/mpc86xx/fdt.c
@@ -0,0 +1,35 @@
+/*
+ * Copyright 2008 Freescale Semiconductor, Inc.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * Version 2 as published by the Free Software Foundation.
+ */
+
+#include <common.h>
+#include <libfdt.h>
+#include <fdt_support.h>
+
+void ft_cpu_setup(void *blob, bd_t *bd)
+{
+ do_fixup_by_prop_u32(blob, "device_type", "cpu", 4,
+ "timebase-frequency", bd->bi_busfreq / 4, 1);
+ do_fixup_by_prop_u32(blob, "device_type", "cpu", 4,
+ "bus-frequency", bd->bi_busfreq, 1);
+ do_fixup_by_prop_u32(blob, "device_type", "cpu", 4,
+ "clock-frequency", bd->bi_intfreq, 1);
+ do_fixup_by_prop_u32(blob, "device_type", "soc", 4,
+ "bus-frequency", bd->bi_busfreq, 1);
+
+ fdt_fixup_memory(blob, (u64)bd->bi_memstart, (u64)bd->bi_memsize);
+
+#if defined(CONFIG_HAS_ETH0) || defined(CONFIG_HAS_ETH1) \
+ || defined(CONFIG_HAS_ETH2) || defined(CONFIG_HAS_ETH3)
+ fdt_fixup_ethernet(blob, bd);
+#endif
+
+#ifdef CFG_NS16550
+ do_fixup_by_compat_u32(blob, "ns16550",
+ "clock-frequency", bd->bi_busfreq, 1);
+#endif
+}