diff options
| author | Zang Roy-r61911 <tie-fei.zang@freescale.com> | 2006-08-23 10:19:50 +0800 | 
|---|---|---|
| committer | Paul Mackerras <paulus@samba.org> | 2006-08-23 15:51:18 +1000 | 
| commit | c4342ff92bed26f2e0e3543a9f0fdc5f3a29b8fd (patch) | |
| tree | 1e79e4a33cd9a5e19d7143d6fed20bed9e3adc3a /arch/powerpc/sysdev/tsi108_pci.c | |
| parent | 6cdd2bdfb9e2449f1c8a0f729cdf9cfd733dd63f (diff) | |
| download | olio-linux-3.10-c4342ff92bed26f2e0e3543a9f0fdc5f3a29b8fd.tar.xz olio-linux-3.10-c4342ff92bed26f2e0e3543a9f0fdc5f3a29b8fd.zip  | |
[POWERPC] Update mpc7448hpc2 board irq support using device tree
The patch rewrites mpc7448hpc2 board irq support according to the new
mpic device tree interface.
Signed-off-by: Roy Zang	<tie-fei.zang@freescale.com>
Signed-off-by: Paul Mackerras <paulus@samba.org>
Diffstat (limited to 'arch/powerpc/sysdev/tsi108_pci.c')
| -rw-r--r-- | arch/powerpc/sysdev/tsi108_pci.c | 21 | 
1 files changed, 12 insertions, 9 deletions
diff --git a/arch/powerpc/sysdev/tsi108_pci.c b/arch/powerpc/sysdev/tsi108_pci.c index 3265d54c82e..2ab06ed3ae7 100644 --- a/arch/powerpc/sysdev/tsi108_pci.c +++ b/arch/powerpc/sysdev/tsi108_pci.c @@ -26,7 +26,6 @@  #include <linux/irq.h>  #include <linux/interrupt.h> -  #include <asm/byteorder.h>  #include <asm/io.h>  #include <asm/irq.h> @@ -228,7 +227,7 @@ int __init tsi108_setup_pci(struct device_node *dev)  	(hose)->ops = &tsi108_direct_pci_ops; -	printk(KERN_INFO "Found tsi108 PCI host bridge at 0x%08lx. " +	printk(KERN_INFO "Found tsi108 PCI host bridge at 0x%08x. "  	       "Firmware bus number: %d->%d\n",  	       rsrc.start, hose->first_busno, hose->last_busno); @@ -278,7 +277,7 @@ static void init_pci_source(void)  	mb();  } -static inline int get_pci_source(void) +static inline unsigned int get_pci_source(void)  {  	u_int temp = 0;  	int irq = -1; @@ -371,12 +370,12 @@ static void tsi108_pci_irq_end(u_int irq)   * Interrupt controller descriptor for cascaded PCI interrupt controller.   */ -struct hw_interrupt_type tsi108_pci_irq = { +static struct irq_chip tsi108_pci_irq = {  	.typename = "tsi108_PCI_int", -	.enable = tsi108_pci_irq_enable, -	.disable = tsi108_pci_irq_disable, +	.mask = tsi108_pci_irq_disable,  	.ack = tsi108_pci_irq_ack,  	.end = tsi108_pci_irq_end, +	.unmask = tsi108_pci_irq_enable,  };  /* @@ -399,14 +398,18 @@ void __init tsi108_pci_int_init(void)  	DBG("Tsi108_pci_int_init: initializing PCI interrupts\n");  	for (i = 0; i < NUM_PCI_IRQS; i++) { -		irq_desc[i + IRQ_PCI_INTAD_BASE].handler = &tsi108_pci_irq; +		irq_desc[i + IRQ_PCI_INTAD_BASE].chip = &tsi108_pci_irq;  		irq_desc[i + IRQ_PCI_INTAD_BASE].status |= IRQ_LEVEL;  	}  	init_pci_source();  } -int tsi108_irq_cascade(struct pt_regs *regs, void *unused) +void tsi108_irq_cascade(unsigned int irq, struct irq_desc *desc, +			    struct pt_regs *regs)  { -	return get_pci_source(); +	unsigned int cascade_irq = get_pci_source(); +	if (cascade_irq != NO_IRQ) +		generic_handle_irq(cascade_irq, regs); +	desc->chip->eoi(irq);  }  |