[PATCH 1/2] ppc/85xx: create a platform node for PCI EDAC device
Scott Wood
scottwood at freescale.com
Fri Jun 3 03:48:23 EST 2011
On Thu, 2 Jun 2011 16:25:02 +0400
Dmitry Eremin-Solenikov <dbaryshkov at gmail.com> wrote:
> 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 at gmail.com>
> ---
> arch/powerpc/sysdev/fsl_pci.c | 33 +++++++++++++++++++++++++++++++++
> 1 files changed, 33 insertions(+), 0 deletions(-)
>
> diff --git a/arch/powerpc/sysdev/fsl_pci.c b/arch/powerpc/sysdev/fsl_pci.c
> index 68ca929..0e37259 100644
> --- a/arch/powerpc/sysdev/fsl_pci.c
> +++ b/arch/powerpc/sysdev/fsl_pci.c
> @@ -381,6 +381,39 @@ int __init fsl_add_bridge(struct device_node *dev, int is_primary)
> return 0;
> }
>
> +int __init fsl_add_pci_err(void)
> +{
> + struct device_node *np;
> +
> + for_each_node_by_type(np, "pci") {
> + /* Only PCI, not PCI Express! */
> + if (of_device_is_compatible(np, "fsl,mpc8540-pci")) {
> + struct resource r[2];
> +
> + r[0].parent = NULL;
> + r[1].parent = NULL;
> +
> + 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));
> + }
> + }
This use of device_type is deprecated -- use for_each_compatible_node().
-Scott
More information about the Linuxppc-dev
mailing list