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 | |
| 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')
| -rw-r--r-- | arch/powerpc/sysdev/tsi108_dev.c | 10 | ||||
| -rw-r--r-- | arch/powerpc/sysdev/tsi108_pci.c | 21 | 
2 files changed, 18 insertions, 13 deletions
diff --git a/arch/powerpc/sysdev/tsi108_dev.c b/arch/powerpc/sysdev/tsi108_dev.c index 26a0cc820cd..f3038461d4c 100644 --- a/arch/powerpc/sysdev/tsi108_dev.c +++ b/arch/powerpc/sysdev/tsi108_dev.c @@ -93,13 +93,15 @@ static int __init tsi108_eth_of_init(void)  			goto err;  		r[1].name = "tx"; -		r[1].start = np->intrs[0].line; -		r[1].end = np->intrs[0].line; +		r[1].start = irq_of_parse_and_map(np, 0); +		r[1].end = irq_of_parse_and_map(np, 0);  		r[1].flags = IORESOURCE_IRQ; +		DBG("%s: name:start->end = %s:0x%lx-> 0x%lx\n", +			__FUNCTION__,r[1].name, r[1].start, r[1].end);  		tsi_eth_dev =  		    platform_device_register_simple("tsi-ethernet", i, &r[0], -						    np->n_intrs + 1); +						    1);  		if (IS_ERR(tsi_eth_dev)) {  			ret = PTR_ERR(tsi_eth_dev); @@ -127,7 +129,7 @@ static int __init tsi108_eth_of_init(void)  		tsi_eth_data.regs = r[0].start;  		tsi_eth_data.phyregs = res.start;  		tsi_eth_data.phy = *phy_id; -		tsi_eth_data.irq_num = np->intrs[0].line; +		tsi_eth_data.irq_num = irq_of_parse_and_map(np, 0);  		of_node_put(phy);  		ret =  		    platform_device_add_data(tsi_eth_dev, &tsi_eth_data, 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);  }  |