Creating a platform device for the PCI error registers in order for the mpc85xx EDAC driver to pick up proper resources. This is to prevent the EDAC driver from monopolizing the of_device and thus preventing future PCI code from using the PCI of_device(s).
Signed-off-by: Dave Jiang <[EMAIL PROTECTED]> --- fsl_soc.c | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) diff --git a/arch/powerpc/sysdev/fsl_soc.c b/arch/powerpc/sysdev/fsl_soc.c index 727453d..fff7c91 100644 --- a/arch/powerpc/sysdev/fsl_soc.c +++ b/arch/powerpc/sysdev/fsl_soc.c @@ -1186,3 +1186,32 @@ err: arch_initcall(cpm_smc_uart_of_init); #endif /* CONFIG_8xx */ + +#ifdef CONFIG_85xx + +/* setting up 85xx PCI error platform device for EDAC consumption */ +static int __init mpc85xx_pcierr_setup(void) +{ + struct device_node *np = NULL; + int id = 0; + struct resource res[2]; + + for_each_compatible_node(np, "pci", "fsl,mpc8540-pci") { + memset(res, 0, sizeof(struct resource) * 2); + if (of_address_to_resource(np, 0, &res[0])) { + printk(KERN_WARNING "Can't get pci register base!\n"); + continue; + } + + /* move start to where the error registers are */ + res[0].start += 0xe00; + + of_irq_to_resource(np, 0, &res[1]); + platform_device_register_simple("mpc85xx_pci_err", id, res, 2); + id++; + } + return 0; +} +arch_initcall(mpc85xx_pcierr_setup); + +#endif _______________________________________________ Linuxppc-dev mailing list Linuxppc-dev@ozlabs.org https://ozlabs.org/mailman/listinfo/linuxppc-dev