|
|
|
@ -69,6 +69,45 @@ void ft_cpu_setup(void *blob, bd_t *bd) |
|
|
|
|
defined(CONFIG_HAS_ETH2) || defined(CONFIG_HAS_ETH3) ||\
|
|
|
|
|
defined(CONFIG_HAS_ETH4) || defined(CONFIG_HAS_ETH5) |
|
|
|
|
fdt_fixup_ethernet(blob); |
|
|
|
|
#ifdef CONFIG_MPC8313 |
|
|
|
|
/*
|
|
|
|
|
* mpc8313e erratum IPIC1 swapped TSEC interrupt ID numbers on rev. 1 |
|
|
|
|
* h/w (see AN3545). The base device tree in use has rev. 1 ID numbers, |
|
|
|
|
* so if on Rev. 2 (and higher) h/w, we fix them up here |
|
|
|
|
*/ |
|
|
|
|
if (REVID_MAJOR(immr->sysconf.spridr) >= 2) { |
|
|
|
|
int nodeoffset, path; |
|
|
|
|
const char *prop; |
|
|
|
|
|
|
|
|
|
nodeoffset = fdt_path_offset(blob, "/aliases"); |
|
|
|
|
if (nodeoffset >= 0) { |
|
|
|
|
#if defined(CONFIG_HAS_ETH0) |
|
|
|
|
prop = fdt_getprop(blob, nodeoffset, "ethernet0", NULL); |
|
|
|
|
if (prop) { |
|
|
|
|
u32 tmp[] = { 32, 0x8, 33, 0x8, 34, 0x8 }; |
|
|
|
|
|
|
|
|
|
path = fdt_path_offset(blob, prop); |
|
|
|
|
prop = fdt_getprop(blob, path, "interrupts", 0); |
|
|
|
|
if (prop) |
|
|
|
|
fdt_setprop(blob, path, "interrupts", |
|
|
|
|
&tmp, sizeof(tmp)); |
|
|
|
|
} |
|
|
|
|
#endif |
|
|
|
|
#if defined(CONFIG_HAS_ETH1) |
|
|
|
|
prop = fdt_getprop(blob, nodeoffset, "ethernet1", NULL); |
|
|
|
|
if (prop) { |
|
|
|
|
u32 tmp[] = { 35, 0x8, 36, 0x8, 37, 0x8 }; |
|
|
|
|
|
|
|
|
|
path = fdt_path_offset(blob, prop); |
|
|
|
|
prop = fdt_getprop(blob, path, "interrupts", 0); |
|
|
|
|
if (prop) |
|
|
|
|
fdt_setprop(blob, path, "interrupts", |
|
|
|
|
&tmp, sizeof(tmp)); |
|
|
|
|
} |
|
|
|
|
#endif |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
#endif |
|
|
|
|
#endif |
|
|
|
|
|
|
|
|
|
do_fixup_by_prop_u32(blob, "device_type", "cpu", 4, |
|
|
|
|