Skip to content
Snippets Groups Projects
Commit ea9f7395 authored by Jon Loeliger's avatar Jon Loeliger
Browse files

Convert MPC8641HPCN to use libfdt.


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

Use consistent fdtaddr and fdtfile in environment variables.

Signed-off-by: default avatarJon Loeliger <jdl@freescale.com>
parent 2c353642
No related branches found
No related tags found
No related merge requests found
...@@ -27,11 +27,8 @@ ...@@ -27,11 +27,8 @@
#include <asm/immap_fsl_pci.h> #include <asm/immap_fsl_pci.h>
#include <spd.h> #include <spd.h>
#include <asm/io.h> #include <asm/io.h>
#include <libfdt.h>
#if defined(CONFIG_OF_FLAT_TREE) #include <fdt_support.h>
#include <ft_build.h>
extern void ft_cpu_setup(void *blob, bd_t *bd);
#endif
#include "../common/pixis.h" #include "../common/pixis.h"
...@@ -324,36 +321,47 @@ void pci_init_board(void) ...@@ -324,36 +321,47 @@ void pci_init_board(void)
} }
#if defined(CONFIG_OF_FLAT_TREE) && defined(CONFIG_OF_BOARD_SETUP) #if defined(CONFIG_OF_BOARD_SETUP)
void void
ft_board_setup(void *blob, bd_t *bd) ft_board_setup(void *blob, bd_t *bd)
{ {
u32 *p; int node, tmp[2];
int len; const char *path;
ft_cpu_setup(blob, bd); fdt_fixup_ethernet(blob, bd);
p = ft_get_prop(blob, "/memory/reg", &len); do_fixup_by_prop_u32(blob, "device_type", "cpu", 4,
if (p != NULL) { "timebase-frequency", bd->bi_busfreq / 4, 1);
*p++ = cpu_to_be32(bd->bi_memstart); do_fixup_by_prop_u32(blob, "device_type", "cpu", 4,
*p = cpu_to_be32(bd->bi_memsize); "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);
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 #ifdef CONFIG_PCI1
p = (u32 *)ft_get_prop(blob, "/" OF_SOC "/pcie@8000/bus-range", &len); path = fdt_getprop(blob, node, "pci0", NULL);
if (p != NULL) { if (path) {
p[0] = 0; tmp[1] = pci1_hose.last_busno - pci1_hose.first_busno;
p[1] = pci1_hose.last_busno - pci1_hose.first_busno; do_fixup_by_path(blob, path, "bus-range", &tmp, 8, 1);
debug("PCI@8000 first_busno=%d last_busno=%d\n",p[0],p[1]); }
}
#endif #endif
#ifdef CONFIG_PCI2 #ifdef CONFIG_PCI2
p = (u32 *)ft_get_prop(blob, "/" OF_SOC "/pcie@9000/bus-range", &len); path = fdt_getprop(blob, node, "pci1", NULL);
if (p != NULL) { if (path) {
p[0] = 0; tmp[1] = pci2_hose.last_busno - pci2_hose.first_busno;
p[1] = pci2_hose.last_busno - pci2_hose.first_busno; do_fixup_by_path(blob, path, "bus-range", &tmp, 8, 1);
debug("PCI@9000 first_busno=%d last_busno=%d\n",p[0],p[1]); }
}
#endif #endif
}
} }
#endif #endif
......
...@@ -267,13 +267,10 @@ extern unsigned long get_board_sys_clk(unsigned long dummy); ...@@ -267,13 +267,10 @@ extern unsigned long get_board_sys_clk(unsigned long dummy);
/* /*
* Pass open firmware flat tree to kernel * Pass open firmware flat tree to kernel
*/ */
#define CONFIG_OF_FLAT_TREE 1 #define CONFIG_OF_LIBFDT 1
#define CONFIG_OF_BOARD_SETUP 1 #define CONFIG_OF_BOARD_SETUP 1
#define CONFIG_OF_STDOUT_VIA_ALIAS 1
#define OF_CPU "PowerPC,8641@0"
#define OF_SOC "soc8641@f8000000"
#define OF_TBCLK (bd->bi_busfreq / 4)
#define OF_STDOUT_PATH "/soc8641@f8000000/serial@4500"
#define CFG_64BIT_VSPRINTF 1 #define CFG_64BIT_VSPRINTF 1
#define CFG_64BIT_STRTOUL 1 #define CFG_64BIT_STRTOUL 1
...@@ -645,8 +642,8 @@ extern unsigned long get_board_sys_clk(unsigned long dummy); ...@@ -645,8 +642,8 @@ extern unsigned long get_board_sys_clk(unsigned long dummy);
"consoledev=ttyS0\0" \ "consoledev=ttyS0\0" \
"ramdiskaddr=2000000\0" \ "ramdiskaddr=2000000\0" \
"ramdiskfile=your.ramdisk.u-boot\0" \ "ramdiskfile=your.ramdisk.u-boot\0" \
"dtbaddr=c00000\0" \ "fdtaddr=c00000\0" \
"dtbfile=mpc8641_hpcn.dtb\0" \ "fdtfile=mpc8641_hpcn.dtb\0" \
"en-wd=mw.b f8100010 0x08; echo -expect:- 08; md.b f8100010 1\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" \ "dis-wd=mw.b f8100010 0x00; echo -expect:- 00; md.b f8100010 1\0" \
"maxcpus=2" "maxcpus=2"
...@@ -658,16 +655,16 @@ extern unsigned long get_board_sys_clk(unsigned long dummy); ...@@ -658,16 +655,16 @@ extern unsigned long get_board_sys_clk(unsigned long dummy);
"ip=$ipaddr:$serverip:$gatewayip:$netmask:$hostname:$netdev:off " \ "ip=$ipaddr:$serverip:$gatewayip:$netmask:$hostname:$netdev:off " \
"console=$consoledev,$baudrate $othbootargs;" \ "console=$consoledev,$baudrate $othbootargs;" \
"tftp $loadaddr $bootfile;" \ "tftp $loadaddr $bootfile;" \
"tftp $dtbaddr $dtbfile;" \ "tftp $fdtaddr $fdtfile;" \
"bootm $loadaddr - $dtbaddr" "bootm $loadaddr - $fdtaddr"
#define CONFIG_RAMBOOTCOMMAND \ #define CONFIG_RAMBOOTCOMMAND \
"setenv bootargs root=/dev/ram rw " \ "setenv bootargs root=/dev/ram rw " \
"console=$consoledev,$baudrate $othbootargs;" \ "console=$consoledev,$baudrate $othbootargs;" \
"tftp $ramdiskaddr $ramdiskfile;" \ "tftp $ramdiskaddr $ramdiskfile;" \
"tftp $loadaddr $bootfile;" \ "tftp $loadaddr $bootfile;" \
"tftp $dtbaddr $dtbfile;" \ "tftp $fdtaddr $fdtfile;" \
"bootm $loadaddr $ramdiskaddr $dtbaddr" "bootm $loadaddr $ramdiskaddr $fdtaddr"
#define CONFIG_BOOTCOMMAND CONFIG_NFSBOOTCOMMAND #define CONFIG_BOOTCOMMAND CONFIG_NFSBOOTCOMMAND
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment