Loading arch/mips/au1000/common/dma.c +1 −1 Original line number Diff line number Diff line Loading @@ -160,7 +160,7 @@ void dump_au1000_dma_channel(unsigned int dmanr) * Requests the DMA done IRQ if irqhandler != NULL. */ int request_au1000_dma(int dev_id, const char *dev_str, irqreturn_t (*irqhandler)(int, void *, struct pt_regs *), irqreturn_t (*irqhandler)(int, void *), unsigned long irqflags, void *irq_dev_id) { Loading arch/mips/au1000/common/irq.c +26 −26 Original line number Diff line number Diff line Loading @@ -67,7 +67,7 @@ extern void set_debug_traps(void); extern irq_cpustat_t irq_stat [NR_CPUS]; extern void mips_timer_interrupt(struct pt_regs *regs); extern void mips_timer_interrupt(void); static void setup_local_irq(unsigned int irq, int type, int int_req); static unsigned int startup_irq(unsigned int irq); Loading @@ -81,10 +81,6 @@ inline void local_disable_irq(unsigned int irq_nr); void (*board_init_irq)(void); #ifdef CONFIG_PM extern irqreturn_t counter0_irq(int irq, void *dev_id, struct pt_regs *regs); #endif static DEFINE_SPINLOCK(irq_lock); Loading Loading @@ -292,7 +288,7 @@ static struct irq_chip level_irq_type = { }; #ifdef CONFIG_PM void startup_match20_interrupt(irqreturn_t (*handler)(int, void *, struct pt_regs *)) void startup_match20_interrupt(irqreturn_t (*handler)(int, void *)) { struct irq_desc *desc = &irq_desc[AU1000_TOY_MATCH2_INT]; Loading Loading @@ -501,14 +497,15 @@ void __init arch_init_irq(void) * intcX_reqX_irqdispatch(). */ void intc0_req0_irqdispatch(struct pt_regs *regs) static void intc0_req0_irqdispatch(void) { int irq = 0; static unsigned long intc0_req0 = 0; intc0_req0 |= au_readl(IC0_REQ0INT); if (!intc0_req0) return; if (!intc0_req0) return; #ifdef AU1000_USB_DEV_REQ_INT /* * Because of the tight timing of SETUP token to reply Loading @@ -517,28 +514,29 @@ void intc0_req0_irqdispatch(struct pt_regs *regs) */ if ((intc0_req0 & (1<<AU1000_USB_DEV_REQ_INT))) { intc0_req0 &= ~(1<<AU1000_USB_DEV_REQ_INT); do_IRQ(AU1000_USB_DEV_REQ_INT, regs); do_IRQ(AU1000_USB_DEV_REQ_INT); return; } #endif irq = au_ffs(intc0_req0) - 1; intc0_req0 &= ~(1<<irq); do_IRQ(irq, regs); do_IRQ(irq); } void intc0_req1_irqdispatch(struct pt_regs *regs) static void intc0_req1_irqdispatch(void) { int irq = 0; static unsigned long intc0_req1 = 0; intc0_req1 |= au_readl(IC0_REQ1INT); if (!intc0_req1) return; if (!intc0_req1) return; irq = au_ffs(intc0_req1) - 1; intc0_req1 &= ~(1<<irq); do_IRQ(irq, regs); do_IRQ(irq); } Loading @@ -546,35 +544,37 @@ void intc0_req1_irqdispatch(struct pt_regs *regs) * Interrupt Controller 1: * interrupts 32 - 63 */ void intc1_req0_irqdispatch(struct pt_regs *regs) static void intc1_req0_irqdispatch(void) { int irq = 0; static unsigned long intc1_req0 = 0; intc1_req0 |= au_readl(IC1_REQ0INT); if (!intc1_req0) return; if (!intc1_req0) return; irq = au_ffs(intc1_req0) - 1; intc1_req0 &= ~(1<<irq); irq += 32; do_IRQ(irq, regs); do_IRQ(irq); } void intc1_req1_irqdispatch(struct pt_regs *regs) static void intc1_req1_irqdispatch(void) { int irq = 0; static unsigned long intc1_req1 = 0; intc1_req1 |= au_readl(IC1_REQ1INT); if (!intc1_req1) return; if (!intc1_req1) return; irq = au_ffs(intc1_req1) - 1; intc1_req1 &= ~(1<<irq); irq += 32; do_IRQ(irq, regs); do_IRQ(irq); } #ifdef CONFIG_PM Loading Loading @@ -660,20 +660,20 @@ restore_au1xxx_intctl(void) } #endif /* CONFIG_PM */ asmlinkage void plat_irq_dispatch(struct pt_regs *regs) asmlinkage void plat_irq_dispatch(void) { unsigned int pending = read_c0_status() & read_c0_cause() & ST0_IM; if (pending & CAUSEF_IP7) mips_timer_interrupt(regs); mips_timer_interrupt(); else if (pending & CAUSEF_IP2) intc0_req0_irqdispatch(regs); intc0_req0_irqdispatch(); else if (pending & CAUSEF_IP3) intc0_req1_irqdispatch(regs); intc0_req1_irqdispatch(); else if (pending & CAUSEF_IP4) intc1_req0_irqdispatch(regs); intc1_req0_irqdispatch(); else if (pending & CAUSEF_IP5) intc1_req1_irqdispatch(regs); intc1_req1_irqdispatch(); else spurious_interrupt(regs); spurious_interrupt(); } arch/mips/au1000/common/time.c +7 −6 Original line number Diff line number Diff line Loading @@ -62,7 +62,7 @@ static unsigned int timerhi = 0, timerlo = 0; #error "unsupported HZ value! Must be in [100,1000]" #endif #define MATCH20_INC (328*100/HZ) /* magic number 328 is for HZ=100... */ extern void startup_match20_interrupt(irqreturn_t (*handler)(int, void *, struct pt_regs *)); extern void startup_match20_interrupt(irqreturn_t (*handler)(int, void *)); static unsigned long last_pc0, last_match20; #endif Loading @@ -79,7 +79,8 @@ static inline void ack_r4ktimer(unsigned long newval) * is provably more robust. */ unsigned long wtimer; void mips_timer_interrupt(struct pt_regs *regs) void mips_timer_interrupt(void) { int irq = 63; unsigned long count; Loading @@ -98,7 +99,7 @@ void mips_timer_interrupt(struct pt_regs *regs) kstat_this_cpu.irqs[irq]++; do_timer(1); #ifndef CONFIG_SMP update_process_times(user_mode(regs)); update_process_times(user_mode(get_irq_regs())); #endif r4k_cur += r4k_offset; ack_r4ktimer(r4k_cur); Loading @@ -115,7 +116,7 @@ null: } #ifdef CONFIG_PM irqreturn_t counter0_irq(int irq, void *dev_id, struct pt_regs *regs) irqreturn_t counter0_irq(int irq, void *dev_id) { unsigned long pc0; int time_elapsed; Loading @@ -139,7 +140,7 @@ irqreturn_t counter0_irq(int irq, void *dev_id, struct pt_regs *regs) while (time_elapsed > 0) { do_timer(1); #ifndef CONFIG_SMP update_process_times(user_mode(regs)); update_process_times(user_mode(get_irq_regs())); #endif time_elapsed -= MATCH20_INC; last_match20 += MATCH20_INC; Loading @@ -158,7 +159,7 @@ irqreturn_t counter0_irq(int irq, void *dev_id, struct pt_regs *regs) jiffie_drift -= 999; do_timer(1); /* increment jiffies by one */ #ifndef CONFIG_SMP update_process_times(user_mode(regs)); update_process_times(user_mode(get_irq_regs())); #endif } Loading arch/mips/au1000/common/usbdev.c +3 −6 Original line number Diff line number Diff line Loading @@ -1031,8 +1031,7 @@ process_ep_receive (struct usb_dev* dev, endpoint_t *ep) /* This ISR handles the receive complete and suspend events */ static void req_sus_intr (int irq, void *dev_id, struct pt_regs *regs) static void req_sus_intr (int irq, void *dev_id) { struct usb_dev *dev = (struct usb_dev *) dev_id; u32 status; Loading @@ -1050,8 +1049,7 @@ req_sus_intr (int irq, void *dev_id, struct pt_regs *regs) /* This ISR handles the DMA done events on EP0 */ static void dma_done_ep0_intr(int irq, void *dev_id, struct pt_regs *regs) static void dma_done_ep0_intr(int irq, void *dev_id) { struct usb_dev *dev = (struct usb_dev *) dev_id; usbdev_pkt_t* pkt; Loading Loading @@ -1094,8 +1092,7 @@ dma_done_ep0_intr(int irq, void *dev_id, struct pt_regs *regs) } /* This ISR handles the DMA done events on endpoints 2,3,4,5 */ static void dma_done_ep_intr(int irq, void *dev_id, struct pt_regs *regs) static void dma_done_ep_intr(int irq, void *dev_id) { struct usb_dev *dev = (struct usb_dev *) dev_id; int i; Loading arch/mips/au1000/pb1200/irqmap.c +3 −2 Original line number Diff line number Diff line Loading @@ -65,7 +65,7 @@ int __initdata au1xxx_nr_irqs = ARRAY_SIZE(au1xxx_irq_map); */ static volatile int pb1200_cascade_en=0; irqreturn_t pb1200_cascade_handler( int irq, void *dev_id, struct pt_regs *regs) irqreturn_t pb1200_cascade_handler( int irq, void *dev_id) { unsigned short bisr = bcsr->int_status; int extirq_nr = 0; Loading @@ -76,8 +76,9 @@ irqreturn_t pb1200_cascade_handler( int irq, void *dev_id, struct pt_regs *regs) { extirq_nr = (PB1200_INT_BEGIN-1) + au_ffs(bisr); /* Ack and dispatch IRQ */ do_IRQ(extirq_nr,regs); do_IRQ(extirq_nr); } return IRQ_RETVAL(1); } Loading Loading
arch/mips/au1000/common/dma.c +1 −1 Original line number Diff line number Diff line Loading @@ -160,7 +160,7 @@ void dump_au1000_dma_channel(unsigned int dmanr) * Requests the DMA done IRQ if irqhandler != NULL. */ int request_au1000_dma(int dev_id, const char *dev_str, irqreturn_t (*irqhandler)(int, void *, struct pt_regs *), irqreturn_t (*irqhandler)(int, void *), unsigned long irqflags, void *irq_dev_id) { Loading
arch/mips/au1000/common/irq.c +26 −26 Original line number Diff line number Diff line Loading @@ -67,7 +67,7 @@ extern void set_debug_traps(void); extern irq_cpustat_t irq_stat [NR_CPUS]; extern void mips_timer_interrupt(struct pt_regs *regs); extern void mips_timer_interrupt(void); static void setup_local_irq(unsigned int irq, int type, int int_req); static unsigned int startup_irq(unsigned int irq); Loading @@ -81,10 +81,6 @@ inline void local_disable_irq(unsigned int irq_nr); void (*board_init_irq)(void); #ifdef CONFIG_PM extern irqreturn_t counter0_irq(int irq, void *dev_id, struct pt_regs *regs); #endif static DEFINE_SPINLOCK(irq_lock); Loading Loading @@ -292,7 +288,7 @@ static struct irq_chip level_irq_type = { }; #ifdef CONFIG_PM void startup_match20_interrupt(irqreturn_t (*handler)(int, void *, struct pt_regs *)) void startup_match20_interrupt(irqreturn_t (*handler)(int, void *)) { struct irq_desc *desc = &irq_desc[AU1000_TOY_MATCH2_INT]; Loading Loading @@ -501,14 +497,15 @@ void __init arch_init_irq(void) * intcX_reqX_irqdispatch(). */ void intc0_req0_irqdispatch(struct pt_regs *regs) static void intc0_req0_irqdispatch(void) { int irq = 0; static unsigned long intc0_req0 = 0; intc0_req0 |= au_readl(IC0_REQ0INT); if (!intc0_req0) return; if (!intc0_req0) return; #ifdef AU1000_USB_DEV_REQ_INT /* * Because of the tight timing of SETUP token to reply Loading @@ -517,28 +514,29 @@ void intc0_req0_irqdispatch(struct pt_regs *regs) */ if ((intc0_req0 & (1<<AU1000_USB_DEV_REQ_INT))) { intc0_req0 &= ~(1<<AU1000_USB_DEV_REQ_INT); do_IRQ(AU1000_USB_DEV_REQ_INT, regs); do_IRQ(AU1000_USB_DEV_REQ_INT); return; } #endif irq = au_ffs(intc0_req0) - 1; intc0_req0 &= ~(1<<irq); do_IRQ(irq, regs); do_IRQ(irq); } void intc0_req1_irqdispatch(struct pt_regs *regs) static void intc0_req1_irqdispatch(void) { int irq = 0; static unsigned long intc0_req1 = 0; intc0_req1 |= au_readl(IC0_REQ1INT); if (!intc0_req1) return; if (!intc0_req1) return; irq = au_ffs(intc0_req1) - 1; intc0_req1 &= ~(1<<irq); do_IRQ(irq, regs); do_IRQ(irq); } Loading @@ -546,35 +544,37 @@ void intc0_req1_irqdispatch(struct pt_regs *regs) * Interrupt Controller 1: * interrupts 32 - 63 */ void intc1_req0_irqdispatch(struct pt_regs *regs) static void intc1_req0_irqdispatch(void) { int irq = 0; static unsigned long intc1_req0 = 0; intc1_req0 |= au_readl(IC1_REQ0INT); if (!intc1_req0) return; if (!intc1_req0) return; irq = au_ffs(intc1_req0) - 1; intc1_req0 &= ~(1<<irq); irq += 32; do_IRQ(irq, regs); do_IRQ(irq); } void intc1_req1_irqdispatch(struct pt_regs *regs) static void intc1_req1_irqdispatch(void) { int irq = 0; static unsigned long intc1_req1 = 0; intc1_req1 |= au_readl(IC1_REQ1INT); if (!intc1_req1) return; if (!intc1_req1) return; irq = au_ffs(intc1_req1) - 1; intc1_req1 &= ~(1<<irq); irq += 32; do_IRQ(irq, regs); do_IRQ(irq); } #ifdef CONFIG_PM Loading Loading @@ -660,20 +660,20 @@ restore_au1xxx_intctl(void) } #endif /* CONFIG_PM */ asmlinkage void plat_irq_dispatch(struct pt_regs *regs) asmlinkage void plat_irq_dispatch(void) { unsigned int pending = read_c0_status() & read_c0_cause() & ST0_IM; if (pending & CAUSEF_IP7) mips_timer_interrupt(regs); mips_timer_interrupt(); else if (pending & CAUSEF_IP2) intc0_req0_irqdispatch(regs); intc0_req0_irqdispatch(); else if (pending & CAUSEF_IP3) intc0_req1_irqdispatch(regs); intc0_req1_irqdispatch(); else if (pending & CAUSEF_IP4) intc1_req0_irqdispatch(regs); intc1_req0_irqdispatch(); else if (pending & CAUSEF_IP5) intc1_req1_irqdispatch(regs); intc1_req1_irqdispatch(); else spurious_interrupt(regs); spurious_interrupt(); }
arch/mips/au1000/common/time.c +7 −6 Original line number Diff line number Diff line Loading @@ -62,7 +62,7 @@ static unsigned int timerhi = 0, timerlo = 0; #error "unsupported HZ value! Must be in [100,1000]" #endif #define MATCH20_INC (328*100/HZ) /* magic number 328 is for HZ=100... */ extern void startup_match20_interrupt(irqreturn_t (*handler)(int, void *, struct pt_regs *)); extern void startup_match20_interrupt(irqreturn_t (*handler)(int, void *)); static unsigned long last_pc0, last_match20; #endif Loading @@ -79,7 +79,8 @@ static inline void ack_r4ktimer(unsigned long newval) * is provably more robust. */ unsigned long wtimer; void mips_timer_interrupt(struct pt_regs *regs) void mips_timer_interrupt(void) { int irq = 63; unsigned long count; Loading @@ -98,7 +99,7 @@ void mips_timer_interrupt(struct pt_regs *regs) kstat_this_cpu.irqs[irq]++; do_timer(1); #ifndef CONFIG_SMP update_process_times(user_mode(regs)); update_process_times(user_mode(get_irq_regs())); #endif r4k_cur += r4k_offset; ack_r4ktimer(r4k_cur); Loading @@ -115,7 +116,7 @@ null: } #ifdef CONFIG_PM irqreturn_t counter0_irq(int irq, void *dev_id, struct pt_regs *regs) irqreturn_t counter0_irq(int irq, void *dev_id) { unsigned long pc0; int time_elapsed; Loading @@ -139,7 +140,7 @@ irqreturn_t counter0_irq(int irq, void *dev_id, struct pt_regs *regs) while (time_elapsed > 0) { do_timer(1); #ifndef CONFIG_SMP update_process_times(user_mode(regs)); update_process_times(user_mode(get_irq_regs())); #endif time_elapsed -= MATCH20_INC; last_match20 += MATCH20_INC; Loading @@ -158,7 +159,7 @@ irqreturn_t counter0_irq(int irq, void *dev_id, struct pt_regs *regs) jiffie_drift -= 999; do_timer(1); /* increment jiffies by one */ #ifndef CONFIG_SMP update_process_times(user_mode(regs)); update_process_times(user_mode(get_irq_regs())); #endif } Loading
arch/mips/au1000/common/usbdev.c +3 −6 Original line number Diff line number Diff line Loading @@ -1031,8 +1031,7 @@ process_ep_receive (struct usb_dev* dev, endpoint_t *ep) /* This ISR handles the receive complete and suspend events */ static void req_sus_intr (int irq, void *dev_id, struct pt_regs *regs) static void req_sus_intr (int irq, void *dev_id) { struct usb_dev *dev = (struct usb_dev *) dev_id; u32 status; Loading @@ -1050,8 +1049,7 @@ req_sus_intr (int irq, void *dev_id, struct pt_regs *regs) /* This ISR handles the DMA done events on EP0 */ static void dma_done_ep0_intr(int irq, void *dev_id, struct pt_regs *regs) static void dma_done_ep0_intr(int irq, void *dev_id) { struct usb_dev *dev = (struct usb_dev *) dev_id; usbdev_pkt_t* pkt; Loading Loading @@ -1094,8 +1092,7 @@ dma_done_ep0_intr(int irq, void *dev_id, struct pt_regs *regs) } /* This ISR handles the DMA done events on endpoints 2,3,4,5 */ static void dma_done_ep_intr(int irq, void *dev_id, struct pt_regs *regs) static void dma_done_ep_intr(int irq, void *dev_id) { struct usb_dev *dev = (struct usb_dev *) dev_id; int i; Loading
arch/mips/au1000/pb1200/irqmap.c +3 −2 Original line number Diff line number Diff line Loading @@ -65,7 +65,7 @@ int __initdata au1xxx_nr_irqs = ARRAY_SIZE(au1xxx_irq_map); */ static volatile int pb1200_cascade_en=0; irqreturn_t pb1200_cascade_handler( int irq, void *dev_id, struct pt_regs *regs) irqreturn_t pb1200_cascade_handler( int irq, void *dev_id) { unsigned short bisr = bcsr->int_status; int extirq_nr = 0; Loading @@ -76,8 +76,9 @@ irqreturn_t pb1200_cascade_handler( int irq, void *dev_id, struct pt_regs *regs) { extirq_nr = (PB1200_INT_BEGIN-1) + au_ffs(bisr); /* Ack and dispatch IRQ */ do_IRQ(extirq_nr,regs); do_IRQ(extirq_nr); } return IRQ_RETVAL(1); } Loading