Skip to contentSkip to conversation

Convert MPC8610HPCD to use libfdt.

PATCH New Jon Loeliger 1 participant 1 message Jan 4, 2008

lore
Share & tools
lore
#0 lore raw

PATCH 1/1 Convert MPC8610HPCD to use libfdt.

Assumes the presence of the aliases node in the DTS to locate the pci and serial nodes for fixups.

Use consistent fdtaddr and fdtfile in environment variables.

---
 board/freescale/mpc8610hpcd/mpc8610hpcd.c |   73 ++++++++++++++++-------------
 include/configs/MPC8610HPCD.h             |   31 ++++++-------
 2 files changed, 54 insertions(+), 50 deletions(-)
board/freescale/mpc8610hpcd/mpc8610hpcd.c +40 -33
index 9f32890..264e959 100644
@@ -29,12 +29,8 @@
 #include <i2c.h>
 #include <spd.h>
 #include <asm/io.h>
-
-
-#if defined(CONFIG_OF_FLAT_TREE)
-#include <ft_build.h>
-extern void ft_cpu_setup(void *blob, bd_t *bd);
-#endif
+#include <libfdt.h>
+#include <fdt_support.h>
 
 #include "../common/pixis.h"
 
@@ -459,46 +455,57 @@ void pci_init_board(void)
 #endif /* CONFIG_PCI1 */
 }
 
-#if defined(CONFIG_OF_FLAT_TREE) && defined(CONFIG_OF_BOARD_SETUP)
+#if defined(CONFIG_OF_BOARD_SETUP)
 void
 ft_board_setup(void *blob, bd_t *bd)
 {
-	u32 *p;
-	int len;
+	int node, tmp[2];
+	const char *path;
 
-	ft_cpu_setup(blob, 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);
 
-	p = ft_get_prop(blob, "/memory/reg", &len);
-	if (p != NULL) {
-		*p++ = cpu_to_be32(bd->bi_memstart);
-		*p = cpu_to_be32(bd->bi_memsize);
-	}
+	do_fixup_by_compat_u32(blob, "ns16550",
+			       "clock-frequency", bd->bi_busfreq, 1);
+
+	fdt_fixup_memory(blob, bd->bi_memstart, bd->bi_memsize);
+
+
+	node = fdt_path_offset(blob, "/aliases");
+	tmp[0] = 0;
+	if (node >= 0) {
 
 #ifdef CONFIG_PCI1
-	p = (u32 *)ft_get_prop(blob, "/" OF_SOC "/pci at 8000/bus-range", &len);
-	if (p != NULL) {
-		p[0] = 0;
-		p[1] = pci1_hose.last_busno - pci1_hose.first_busno;
-		debug("pci at 8000 first_busno=%d last_busno=%d\n",p[0],p[1]);
-	}
+		path = fdt_getprop(blob, node, "pci0", NULL);
+		if (path) {
+			tmp[1] = pci1_hose.last_busno - pci1_hose.first_busno;
+			do_fixup_by_path(blob, path, "bus-range", &tmp, 8, 1);
+		}
+
 #endif
 #ifdef CONFIG_PCIE1
-	p = (u32 *)ft_get_prop(blob, "/" OF_SOC "/pcie at a000/bus-range", &len);
-	if (p != NULL) {
-		p[0] = 0;
-		p[1] = pcie1_hose.last_busno - pcie1_hose.first_busno;
-		debug("pcie at 9000 first_busno=%d last_busno=%d\n",p[0],p[1]);
+		path = fdt_getprop(blob, node, "pci1", NULL);
+		if (path) {
+			tmp[1] = pcie1_hose.last_busno
+				- pcie1_hose.first_busno;
+			do_fixup_by_path(blob, path, "bus-range", &tmp, 8, 1);
 	}
 #endif
 #ifdef CONFIG_PCIE2
-	p = (u32 *)ft_get_prop(blob, "/" OF_SOC "/pcie at 9000/bus-range", &len);
-	if (p != NULL) {
-		p[0] = 0;
-		p[1] = pcie2_hose.last_busno - pcie2_hose.first_busno;
-		debug("pcie at 9000 first_busno=%d last_busno=%d\n",p[0],p[1]);
-	}
+		path = fdt_getprop(blob, node, "pci2", NULL);
+		if (path) {
+			tmp[1] = pcie2_hose.last_busno
+				- pcie2_hose.first_busno;
+			do_fixup_by_path(blob, path, "bus-range", &tmp, 8, 1);
+		}
 #endif
-
+	}
 }
 #endif
 
include/configs/MPC8610HPCD.h +14 -17
index 55df5aa..11c1836 100644
@@ -245,17 +245,14 @@
 /*
  * Pass open firmware flat tree to kernel
  */
-#define CONFIG_OF_FLAT_TREE	1
-#define CONFIG_OF_BOARD_SETUP	1
+#define CONFIG_OF_LIBFDT		1
+#define CONFIG_OF_BOARD_SETUP		1
+#define CONFIG_OF_STDOUT_VIA_ALIAS	1
+
 
 /* maximum size of the flat tree (8K) */
 #define OF_FLAT_TREE_MAX_SIZE	8192
 
-#define OF_CPU		"PowerPC,8610 at 0"
-#define OF_SOC		"soc at e0000000"
-#define OF_TBCLK	(bd->bi_busfreq / 4)
-#define OF_STDOUT_PATH	"/soc at e0000000/serial at 4500"
-
 #define CFG_64BIT_VSPRINTF	1
 #define CFG_64BIT_STRTOUL	1
 
@@ -618,8 +615,8 @@
  "consoledev=ttyS0\0"						\
  "ramdiskaddr=2000000\0"					\
  "ramdiskfile=8610hpcd/ramdisk.uboot\0"				\
- "dtbaddr=c00000\0"						\
- "dtbfile=8610hpcd/mpc8610_hpcd.dtb\0"				\
+ "fdtaddr=c00000\0"						\
+ "fdtfile=8610hpcd/mpc8610_hpcd.dtb\0"				\
  "bdev=sda3\0"					\
  "en-wd=mw.b f8100010 0x08; echo -expect:- 08; md.b f8100010 1\0" \
  "dis-wd=mw.b f8100010 0x00; echo -expect:- 00; md.b f8100010 1\0" \
@@ -658,8 +655,8 @@
  "consoledev=ttyS0\0"                                           \
  "ramdiskaddr=2000000\0"                                        \
  "ramdiskfile=8610hpcd/ramdisk.uboot\0"                         \
- "dtbaddr=c00000\0"                                             \
- "dtbfile=8610hpcd/mpc8610_hpcd.dtb\0"                          \
+ "fdtaddr=c00000\0"                                             \
+ "fdtfile=8610hpcd/mpc8610_hpcd.dtb\0"                          \
  "bdev=sda3\0"							\
  "othbootargs=diufb=15M video=fslfb:1280x1024-32 at 60,monitor=0\0"\
  "monitor=0-DVI\0"
@@ -671,22 +668,22 @@
 	"ip=$ipaddr:$serverip:$gatewayip:$netmask:$hostname:$netdev:off " \
 	"console=$consoledev,$baudrate $othbootargs;"		\
  "tftp $loadaddr $bootfile;"					\
- "tftp $dtbaddr $dtbfile;"					\
- "bootm $loadaddr - $dtbaddr"
+ "tftp $fdtaddr $fdtfile;"					\
+ "bootm $loadaddr - $fdtaddr"
 
 #define CONFIG_RAMBOOTCOMMAND \
  "setenv bootargs root=/dev/ram rw "				\
 	"console=$consoledev,$baudrate $othbootargs;"		\
  "tftp $ramdiskaddr $ramdiskfile;"				\
  "tftp $loadaddr $bootfile;"					\
- "tftp $dtbaddr $dtbfile;"					\
- "bootm $loadaddr $ramdiskaddr $dtbaddr"
+ "tftp $fdtaddr $fdtfile;"					\
+ "bootm $loadaddr $ramdiskaddr $fdtaddr"
 
 #define CONFIG_BOOTCOMMAND		\
  "setenv bootargs root=/dev/$bdev rw "	\
 	"console=$consoledev,$baudrate $othbootargs;"	\
  "tftp $loadaddr $bootfile;"		\
- "tftp $dtbaddr $dtbfile;"		\
- "bootm $loadaddr - $dtbaddr"
+ "tftp $fdtaddr $fdtfile;"		\
+ "bootm $loadaddr - $fdtaddr"
 
 #endif	/* __CONFIG_H */
Signature · 1 line
1.5.2.1.126.g6abd0