mirror of
https://github.com/AsahiLinux/u-boot
synced 2024-11-11 07:34:31 +00:00
mpc8641: Try to detect old .dts files
Since we've changed the memory map of the board, be nice and add some checking to try to catch out-of-date .dts files. We do this by checking the CCSRBAR location in the .dts and comparing it to the CCSRBAR location in u-boot. If they don't match, a warning msg is printed. This isn't foolproof, but it's simple and will catch most of the cases where an out-of-date .dts is present, including all of the cases where a new u-boot is used with an old standard MPC8641 .dts file as supplied with Linux. Signed-off-by: Becky Bruce <becky.bruce@freescale.com>
This commit is contained in:
parent
8db0400a27
commit
d52082b12c
2 changed files with 30 additions and 0 deletions
|
@ -254,6 +254,10 @@ extern void ft_fsl_pci_setup(void *blob, const char *pci_alias,
|
|||
void
|
||||
ft_board_setup(void *blob, bd_t *bd)
|
||||
{
|
||||
int off;
|
||||
u64 *tmp;
|
||||
u32 *addrcells;
|
||||
|
||||
ft_cpu_setup(blob, bd);
|
||||
|
||||
#ifdef CONFIG_PCI1
|
||||
|
@ -262,6 +266,29 @@ ft_board_setup(void *blob, bd_t *bd)
|
|||
#ifdef CONFIG_PCI2
|
||||
ft_fsl_pci_setup(blob, "pci1", &pci2_hose);
|
||||
#endif
|
||||
|
||||
/*
|
||||
* Warn if it looks like the device tree doesn't match u-boot.
|
||||
* This is just an estimation, based on the location of CCSR,
|
||||
* which is defined by the "reg" property in the soc node.
|
||||
*/
|
||||
off = fdt_path_offset(blob, "/soc8641");
|
||||
addrcells = (u32 *)fdt_getprop(blob, 0, "#address-cells", NULL);
|
||||
tmp = (u64 *)fdt_getprop(blob, off, "reg", NULL);
|
||||
|
||||
if (tmp) {
|
||||
u64 addr;
|
||||
if (addrcells && (*addrcells == 2))
|
||||
addr = *tmp;
|
||||
else
|
||||
addr = *(u32 *)tmp;
|
||||
|
||||
if (addr != CONFIG_SYS_CCSRBAR_PHYS)
|
||||
printf("WARNING: The CCSRBAR address in your .dts "
|
||||
"does not match the address of the CCSR "
|
||||
"in u-boot. This means your .dts might "
|
||||
"be old.\n");
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
|
|
|
@ -115,8 +115,11 @@ extern unsigned long get_board_sys_clk(unsigned long dummy);
|
|||
#define CONFIG_SYS_CCSRBAR_PHYS_LOW CONFIG_SYS_CCSRBAR
|
||||
#ifdef CONFIG_PHYS_64BIT
|
||||
#define CONFIG_SYS_CCSRBAR_PHYS_HIGH 0xf
|
||||
#define CONFIG_SYS_CCSRBAR_PHYS (CONFIG_SYS_CCSRBAR_PHYS_LOW \
|
||||
| ((u64)CONFIG_SYS_CCSRBAR_PHYS_HIGH << 32))
|
||||
#else
|
||||
#define CONFIG_SYS_CCSRBAR_PHYS_HIGH 0x0
|
||||
#define CONFIG_SYS_CCSRBAR_PHYS CONFIG_SYS_CCSRBAR_PHYS_LOW
|
||||
#endif
|
||||
|
||||
#define CONFIG_SYS_PCI1_ADDR (CONFIG_SYS_CCSRBAR+0x8000)
|
||||
|
|
Loading…
Reference in a new issue