Commit 51f4cc20 authored by Darren Stevens's avatar Darren Stevens Committed by Michael Ellerman
Browse files

powerpc/pasemi: Add Nemo board IRQ initroutine



Add a IRQ init routine for the Nemo board which inits and attatches
the i8259 found in the SB600, and a cascade routine to dispatch the
interrupts.

Signed-off-by: default avatarDarren Stevens <darren@stevens-zone.net>
Signed-off-by: default avatarMichael Ellerman <mpe@ellerman.id.au>
parent 656fdf3a
Loading
Loading
Loading
Loading
+11 −0
Original line number Diff line number Diff line
@@ -27,6 +27,7 @@
#include <linux/pci.h>

#include <asm/pci-bridge.h>
#include <asm/isa-bridge.h>
#include <asm/machdep.h>

#include <asm/ppc-pci.h>
@@ -181,6 +182,8 @@ static int pa_pxp_read_config(struct pci_bus *bus, unsigned int devfn,

	addr = pa_pxp_cfg_addr(hose, bus->number, devfn, offset);

	sb600_set_flag(bus->number);

	/*
	 * Note: the caller has already checked that offset is
	 * suitably aligned and that len is 1, 2 or 4.
@@ -215,6 +218,8 @@ static int pa_pxp_write_config(struct pci_bus *bus, unsigned int devfn,

	addr = pa_pxp_cfg_addr(hose, bus->number, devfn, offset);

	sb600_set_flag(bus->number);

	/*
	 * Note: the caller has already checked that offset is
	 * suitably aligned and that len is 1, 2 or 4.
@@ -265,6 +270,12 @@ static int __init pas_add_bridge(struct device_node *dev)
	/* Interpret the "ranges" property */
	pci_process_bridge_OF_ranges(hose, dev, 1);

	/*
	 * Scan for an isa bridge. This is needed to find the SB600 on the nemo
	 * and does nothing on machines without one.
	 */
	isa_bridge_find_early(hose);

	return 0;
}

+15 −0
Original line number Diff line number Diff line
@@ -314,6 +314,8 @@ static __init void pas_init_IRQ(void)
		mpic_unmask_irq(irq_get_irq_data(nmi_virq));
	}

	nemo_init_IRQ(mpic);

	of_node_put(mpic_node);
	of_node_put(root);
}
@@ -475,6 +477,8 @@ static int __init pasemi_publish_devices(void)
	/* Publish OF platform devices for SDC and other non-PCI devices */
	of_platform_bus_probe(NULL, pasemi_bus_ids, NULL);

	nemo_init_rtc();

	return 0;
}
machine_device_initcall(pasemi, pasemi_publish_devices);
@@ -489,6 +493,17 @@ static int __init pas_probe(void)
	    !of_machine_is_compatible("pasemi,pwrficient"))
		return 0;

#ifdef CONFIG_PPC_PASEMI_NEMO
	/*
	 * Check for the Nemo motherboard here, if we are running on one
	 * change the machine definition to fit
	 */
	if (of_machine_is_compatible("pasemi,nemo")) {
		pm_power_off		= pas_shutdown;
		ppc_md.name		= "A-EON Amigaone X1000";
	}
#endif

	iommu_init_early_pasemi();

	return 1;