@@ -381,6 +381,34 @@ int __init fsl_add_bridge(struct device_node *dev, int is_primary)
return 0;
}
+static int __init fsl_add_pci_err(void)
+{
+ struct device_node *np;
+
+ /* Only PCI, not PCI Express! */
+ for_each_compatible_node(np, "pci", "fsl,mpc8540-pci") {
+ struct resource r[2] = {};
+
+ if (of_address_to_resource(np, 0, &r[0])) {
+ printk(KERN_WARNING
+ "Can't get register base for PCI EDAC!\n");
+ continue;
+ }
+ r[0].start += 0xe00;
+
+ if (of_irq_to_resource(np, 0, &r[1]) == NO_IRQ) {
+ printk(KERN_WARNING
+ "Can't get irq for PCI EDAC!\n");
+ continue;
+ }
+ platform_device_register_simple("mpc85xx_pci_err", -1,
+ r, ARRAY_SIZE(r));
+ }
+
+ return 0;
+}
+device_initcall(fsl_add_pci_err);
+
DECLARE_PCI_FIXUP_HEADER(0x1957, PCI_DEVICE_ID_MPC8548E, quirk_fsl_pcie_header);
DECLARE_PCI_FIXUP_HEADER(0x1957, PCI_DEVICE_ID_MPC8548, quirk_fsl_pcie_header);
DECLARE_PCI_FIXUP_HEADER(0x1957, PCI_DEVICE_ID_MPC8543E, quirk_fsl_pcie_header);
As a device for pci node isn't created, create a special platform_device for PCI EDAC device on MPC85xx. Signed-off-by: Dmitry Eremin-Solenikov <dbaryshkov@gmail.com> --- arch/powerpc/sysdev/fsl_pci.c | 28 ++++++++++++++++++++++++++++ 1 files changed, 28 insertions(+), 0 deletions(-)