Commit cb4169bc authored by Russell King's avatar Russell King

[ARM] Update a variety of ARM drivers to use irqreturn_t.

parent d2480494
...@@ -58,6 +58,11 @@ void dummy_mask_unmask_irq(unsigned int irq) ...@@ -58,6 +58,11 @@ void dummy_mask_unmask_irq(unsigned int irq)
{ {
} }
irqreturn_t no_action(int irq, void *dev_id, struct pt_regs *regs)
{
return IRQ_NONE;
}
void do_bad_IRQ(unsigned int irq, struct irqdesc *desc, struct pt_regs *regs) void do_bad_IRQ(unsigned int irq, struct irqdesc *desc, struct pt_regs *regs)
{ {
irq_err_count += 1; irq_err_count += 1;
...@@ -222,6 +227,7 @@ static void ...@@ -222,6 +227,7 @@ static void
__do_irq(unsigned int irq, struct irqaction *action, struct pt_regs *regs) __do_irq(unsigned int irq, struct irqaction *action, struct pt_regs *regs)
{ {
unsigned int status; unsigned int status;
int retval = 0;
spin_unlock(&irq_controller_lock); spin_unlock(&irq_controller_lock);
...@@ -231,7 +237,7 @@ __do_irq(unsigned int irq, struct irqaction *action, struct pt_regs *regs) ...@@ -231,7 +237,7 @@ __do_irq(unsigned int irq, struct irqaction *action, struct pt_regs *regs)
status = 0; status = 0;
do { do {
status |= action->flags; status |= action->flags;
action->handler(irq, action->dev_id, regs); retval |= action->handler(irq, action->dev_id, regs);
action = action->next; action = action->next;
} while (action); } while (action);
...@@ -239,6 +245,19 @@ __do_irq(unsigned int irq, struct irqaction *action, struct pt_regs *regs) ...@@ -239,6 +245,19 @@ __do_irq(unsigned int irq, struct irqaction *action, struct pt_regs *regs)
add_interrupt_randomness(irq); add_interrupt_randomness(irq);
spin_lock_irq(&irq_controller_lock); spin_lock_irq(&irq_controller_lock);
if (retval != 1) {
static int count = 100;
if (count) {
count--;
if (retval) {
printk("irq event %d: bogus retval mask %x\n",
irq, retval);
} else {
printk("irq %d: nobody cared\n", irq);
}
}
}
} }
/* /*
...@@ -606,7 +625,7 @@ int setup_irq(unsigned int irq, struct irqaction *new) ...@@ -606,7 +625,7 @@ int setup_irq(unsigned int irq, struct irqaction *new)
* SA_SAMPLE_RANDOM The interrupt can be used for entropy * SA_SAMPLE_RANDOM The interrupt can be used for entropy
* *
*/ */
int request_irq(unsigned int irq, void (*handler)(int, void *, struct pt_regs *), int request_irq(unsigned int irq, irqreturn_t (*handler)(int, void *, struct pt_regs *),
unsigned long irq_flags, const char * devname, void *dev_id) unsigned long irq_flags, const char * devname, void *dev_id)
{ {
unsigned long retval; unsigned long retval;
......
...@@ -154,7 +154,7 @@ static void dc21285_enable_error(unsigned long __data) ...@@ -154,7 +154,7 @@ static void dc21285_enable_error(unsigned long __data)
/* /*
* Warn on PCI errors. * Warn on PCI errors.
*/ */
static void dc21285_abort_irq(int irq, void *dev_id, struct pt_regs *regs) static irqreturn_t dc21285_abort_irq(int irq, void *dev_id, struct pt_regs *regs)
{ {
unsigned int cmd; unsigned int cmd;
unsigned int status; unsigned int status;
...@@ -180,9 +180,11 @@ static void dc21285_abort_irq(int irq, void *dev_id, struct pt_regs *regs) ...@@ -180,9 +180,11 @@ static void dc21285_abort_irq(int irq, void *dev_id, struct pt_regs *regs)
} }
*CSR_PCICMD = cmd; *CSR_PCICMD = cmd;
return IRQ_HANDLED;
} }
static void dc21285_serr_irq(int irq, void *dev_id, struct pt_regs *regs) static irqreturn_t dc21285_serr_irq(int irq, void *dev_id, struct pt_regs *regs)
{ {
struct timer_list *timer = dev_id; struct timer_list *timer = dev_id;
unsigned int cntl; unsigned int cntl;
...@@ -200,15 +202,19 @@ static void dc21285_serr_irq(int irq, void *dev_id, struct pt_regs *regs) ...@@ -200,15 +202,19 @@ static void dc21285_serr_irq(int irq, void *dev_id, struct pt_regs *regs)
disable_irq(irq); disable_irq(irq);
timer->expires = jiffies + HZ; timer->expires = jiffies + HZ;
add_timer(timer); add_timer(timer);
return IRQ_HANDLED;
} }
static void dc21285_discard_irq(int irq, void *dev_id, struct pt_regs *regs) static irqreturn_t dc21285_discard_irq(int irq, void *dev_id, struct pt_regs *regs)
{ {
printk(KERN_DEBUG "PCI: discard timer expired\n"); printk(KERN_DEBUG "PCI: discard timer expired\n");
*CSR_SA110_CNTL &= 0xffffde07; *CSR_SA110_CNTL &= 0xffffde07;
return IRQ_HANDLED;
} }
static void dc21285_dparity_irq(int irq, void *dev_id, struct pt_regs *regs) static irqreturn_t dc21285_dparity_irq(int irq, void *dev_id, struct pt_regs *regs)
{ {
unsigned int cmd; unsigned int cmd;
...@@ -218,9 +224,11 @@ static void dc21285_dparity_irq(int irq, void *dev_id, struct pt_regs *regs) ...@@ -218,9 +224,11 @@ static void dc21285_dparity_irq(int irq, void *dev_id, struct pt_regs *regs)
cmd = *CSR_PCICMD & 0xffff; cmd = *CSR_PCICMD & 0xffff;
*CSR_PCICMD = cmd | 1 << 24; *CSR_PCICMD = cmd | 1 << 24;
return IRQ_HANDLED;
} }
static void dc21285_parity_irq(int irq, void *dev_id, struct pt_regs *regs) static irqreturn_t dc21285_parity_irq(int irq, void *dev_id, struct pt_regs *regs)
{ {
struct timer_list *timer = dev_id; struct timer_list *timer = dev_id;
unsigned int cmd; unsigned int cmd;
...@@ -238,6 +246,8 @@ static void dc21285_parity_irq(int irq, void *dev_id, struct pt_regs *regs) ...@@ -238,6 +246,8 @@ static void dc21285_parity_irq(int irq, void *dev_id, struct pt_regs *regs)
disable_irq(irq); disable_irq(irq);
timer->expires = jiffies + HZ; timer->expires = jiffies + HZ;
add_timer(timer); add_timer(timer);
return IRQ_HANDLED;
} }
int __init dc21285_setup(int nr, struct pci_sys_data *sys) int __init dc21285_setup(int nr, struct pci_sys_data *sys)
......
...@@ -83,7 +83,7 @@ static void iomd_get_next_sg(struct scatterlist *sg, dma_t *dma) ...@@ -83,7 +83,7 @@ static void iomd_get_next_sg(struct scatterlist *sg, dma_t *dma)
sg->length |= flags; sg->length |= flags;
} }
static void iomd_dma_handle(int irq, void *dev_id, struct pt_regs *regs) static irqreturn_t iomd_dma_handle(int irq, void *dev_id, struct pt_regs *regs)
{ {
dma_t *dma = (dma_t *)dev_id; dma_t *dma = (dma_t *)dev_id;
unsigned long base = dma->dma_base; unsigned long base = dma->dma_base;
...@@ -93,7 +93,7 @@ static void iomd_dma_handle(int irq, void *dev_id, struct pt_regs *regs) ...@@ -93,7 +93,7 @@ static void iomd_dma_handle(int irq, void *dev_id, struct pt_regs *regs)
status = iomd_readb(base + ST); status = iomd_readb(base + ST);
if (!(status & DMA_ST_INT)) if (!(status & DMA_ST_INT))
return; return IRQ_HANDLED;
if (status & DMA_ST_OFL && !dma->sg) if (status & DMA_ST_OFL && !dma->sg)
break; break;
...@@ -117,6 +117,8 @@ static void iomd_dma_handle(int irq, void *dev_id, struct pt_regs *regs) ...@@ -117,6 +117,8 @@ static void iomd_dma_handle(int irq, void *dev_id, struct pt_regs *regs)
iomd_writeb(0, dma->dma_base + CR); iomd_writeb(0, dma->dma_base + CR);
disable_irq(irq); disable_irq(irq);
return IRQ_HANDLED;
} }
static int iomd_request_dma(dmach_t channel, dma_t *dma) static int iomd_request_dma(dmach_t channel, dma_t *dma)
......
...@@ -68,7 +68,7 @@ static unsigned int net_debug = NET_DEBUG; ...@@ -68,7 +68,7 @@ static unsigned int net_debug = NET_DEBUG;
static int ether1_open(struct net_device *dev); static int ether1_open(struct net_device *dev);
static int ether1_sendpacket(struct sk_buff *skb, struct net_device *dev); static int ether1_sendpacket(struct sk_buff *skb, struct net_device *dev);
static void ether1_interrupt(int irq, void *dev_id, struct pt_regs *regs); static irqreturn_t ether1_interrupt(int irq, void *dev_id, struct pt_regs *regs);
static int ether1_close(struct net_device *dev); static int ether1_close(struct net_device *dev);
static struct net_device_stats *ether1_getstats(struct net_device *dev); static struct net_device_stats *ether1_getstats(struct net_device *dev);
static void ether1_setmulticastlist(struct net_device *dev); static void ether1_setmulticastlist(struct net_device *dev);
...@@ -908,7 +908,7 @@ ether1_recv_done (struct net_device *dev) ...@@ -908,7 +908,7 @@ ether1_recv_done (struct net_device *dev)
} while (1); } while (1);
} }
static void static irqreturn_t
ether1_interrupt (int irq, void *dev_id, struct pt_regs *regs) ether1_interrupt (int irq, void *dev_id, struct pt_regs *regs)
{ {
struct net_device *dev = (struct net_device *)dev_id; struct net_device *dev = (struct net_device *)dev_id;
...@@ -954,6 +954,8 @@ ether1_interrupt (int irq, void *dev_id, struct pt_regs *regs) ...@@ -954,6 +954,8 @@ ether1_interrupt (int irq, void *dev_id, struct pt_regs *regs)
} }
} else } else
outb (CTRL_ACK, REG_CONTROL); outb (CTRL_ACK, REG_CONTROL);
return IRQ_HANDLED;
} }
static int static int
......
...@@ -82,7 +82,7 @@ static int ether3_rx(struct net_device *dev, struct dev_priv *priv, unsigned int ...@@ -82,7 +82,7 @@ static int ether3_rx(struct net_device *dev, struct dev_priv *priv, unsigned int
static void ether3_tx(struct net_device *dev, struct dev_priv *priv); static void ether3_tx(struct net_device *dev, struct dev_priv *priv);
static int ether3_open (struct net_device *dev); static int ether3_open (struct net_device *dev);
static int ether3_sendpacket (struct sk_buff *skb, struct net_device *dev); static int ether3_sendpacket (struct sk_buff *skb, struct net_device *dev);
static void ether3_interrupt (int irq, void *dev_id, struct pt_regs *regs); static irqreturn_t ether3_interrupt (int irq, void *dev_id, struct pt_regs *regs);
static int ether3_close (struct net_device *dev); static int ether3_close (struct net_device *dev);
static struct net_device_stats *ether3_getstats (struct net_device *dev); static struct net_device_stats *ether3_getstats (struct net_device *dev);
static void ether3_setmulticastlist (struct net_device *dev); static void ether3_setmulticastlist (struct net_device *dev);
...@@ -576,12 +576,12 @@ ether3_sendpacket(struct sk_buff *skb, struct net_device *dev) ...@@ -576,12 +576,12 @@ ether3_sendpacket(struct sk_buff *skb, struct net_device *dev)
return 0; return 0;
} }
static void static irqreturn_t
ether3_interrupt(int irq, void *dev_id, struct pt_regs *regs) ether3_interrupt(int irq, void *dev_id, struct pt_regs *regs)
{ {
struct net_device *dev = (struct net_device *)dev_id; struct net_device *dev = (struct net_device *)dev_id;
struct dev_priv *priv; struct dev_priv *priv;
unsigned int status; unsigned int status, handled = IRQ_NONE;
#if NET_DEBUG > 1 #if NET_DEBUG > 1
if(net_debug & DEBUG_INT) if(net_debug & DEBUG_INT)
...@@ -595,17 +595,20 @@ ether3_interrupt(int irq, void *dev_id, struct pt_regs *regs) ...@@ -595,17 +595,20 @@ ether3_interrupt(int irq, void *dev_id, struct pt_regs *regs)
if (status & STAT_INTRX) { if (status & STAT_INTRX) {
ether3_outw(CMD_ACKINTRX | priv->regs.command, REG_COMMAND); ether3_outw(CMD_ACKINTRX | priv->regs.command, REG_COMMAND);
ether3_rx(dev, priv, 12); ether3_rx(dev, priv, 12);
handled = IRQ_HANDLED;
} }
if (status & STAT_INTTX) { if (status & STAT_INTTX) {
ether3_outw(CMD_ACKINTTX | priv->regs.command, REG_COMMAND); ether3_outw(CMD_ACKINTTX | priv->regs.command, REG_COMMAND);
ether3_tx(dev, priv); ether3_tx(dev, priv);
handled = IRQ_HANDLED;
} }
#if NET_DEBUG > 1 #if NET_DEBUG > 1
if(net_debug & DEBUG_INT) if(net_debug & DEBUG_INT)
printk("done\n"); printk("done\n");
#endif #endif
return handled;
} }
/* /*
......
...@@ -2466,18 +2466,14 @@ intr_ret_t acornscsi_sbicintr(AS_Host *host, int in_irq) ...@@ -2466,18 +2466,14 @@ intr_ret_t acornscsi_sbicintr(AS_Host *host, int in_irq)
* dev_id - device specific data (AS_Host structure) * dev_id - device specific data (AS_Host structure)
* regs - processor registers when interrupt occurred * regs - processor registers when interrupt occurred
*/ */
static static irqreturn_t
void acornscsi_intr(int irq, void *dev_id, struct pt_regs *regs) acornscsi_intr(int irq, void *dev_id, struct pt_regs *regs)
{ {
AS_Host *host = (AS_Host *)dev_id; AS_Host *host = (AS_Host *)dev_id;
intr_ret_t ret; intr_ret_t ret;
int iostatus; int iostatus;
int in_irq = 0; int in_irq = 0;
if (host->scsi.interrupt)
printk("scsi%d: interrupt re-entered\n", host->host->host_no);
host->scsi.interrupt = 1;
do { do {
ret = INTR_IDLE; ret = INTR_IDLE;
...@@ -2505,7 +2501,7 @@ void acornscsi_intr(int irq, void *dev_id, struct pt_regs *regs) ...@@ -2505,7 +2501,7 @@ void acornscsi_intr(int irq, void *dev_id, struct pt_regs *regs)
in_irq = 1; in_irq = 1;
} while (ret != INTR_IDLE); } while (ret != INTR_IDLE);
host->scsi.interrupt = 0; return IRQ_HANDLED;
} }
/*============================================================================================= /*=============================================================================================
......
...@@ -141,12 +141,12 @@ cumanascsi_2_terminator_ctl(struct Scsi_Host *host, int on_off) ...@@ -141,12 +141,12 @@ cumanascsi_2_terminator_ctl(struct Scsi_Host *host, int on_off)
* dev_id - user-defined (Scsi_Host structure) * dev_id - user-defined (Scsi_Host structure)
* regs - processor registers at interrupt * regs - processor registers at interrupt
*/ */
static void static irqreturn_t
cumanascsi_2_intr(int irq, void *dev_id, struct pt_regs *regs) cumanascsi_2_intr(int irq, void *dev_id, struct pt_regs *regs)
{ {
struct cumanascsi2_info *info = dev_id; struct cumanascsi2_info *info = dev_id;
fas216_intr(&info->info); return fas216_intr(&info->info);
} }
/* Prototype: fasdmatype_t cumanascsi_2_dma_setup(host, SCpnt, direction, min_type) /* Prototype: fasdmatype_t cumanascsi_2_dma_setup(host, SCpnt, direction, min_type)
......
...@@ -141,12 +141,12 @@ eesoxscsi_terminator_ctl(struct Scsi_Host *host, int on_off) ...@@ -141,12 +141,12 @@ eesoxscsi_terminator_ctl(struct Scsi_Host *host, int on_off)
* dev_id - user-defined (Scsi_Host structure) * dev_id - user-defined (Scsi_Host structure)
* regs - processor registers at interrupt * regs - processor registers at interrupt
*/ */
static void static irqreturn_t
eesoxscsi_intr(int irq, void *dev_id, struct pt_regs *regs) eesoxscsi_intr(int irq, void *dev_id, struct pt_regs *regs)
{ {
struct eesoxscsi_info *info = dev_id; struct eesoxscsi_info *info = dev_id;
fas216_intr(&info->info); return fas216_intr(&info->info);
} }
/* Prototype: fasdmatype_t eesoxscsi_dma_setup(host, SCpnt, direction, min_type) /* Prototype: fasdmatype_t eesoxscsi_dma_setup(host, SCpnt, direction, min_type)
......
...@@ -1824,9 +1824,10 @@ static void fas216_bus_reset(FAS216_Info *info) ...@@ -1824,9 +1824,10 @@ static void fas216_bus_reset(FAS216_Info *info)
* *
* Handle interrupts from the interface to progress a command * Handle interrupts from the interface to progress a command
*/ */
void fas216_intr(FAS216_Info *info) irqreturn_t fas216_intr(FAS216_Info *info)
{ {
unsigned char isr, ssr, stat; unsigned char isr, ssr, stat;
int handled = IRQ_NONE;
fas216_checkmagic(info); fas216_checkmagic(info);
...@@ -1857,7 +1858,9 @@ void fas216_intr(FAS216_Info *info) ...@@ -1857,7 +1858,9 @@ void fas216_intr(FAS216_Info *info)
fas216_log(info, 0, "unknown interrupt received:" fas216_log(info, 0, "unknown interrupt received:"
" phase %s isr %02X ssr %02X stat %02X", " phase %s isr %02X ssr %02X stat %02X",
fas216_drv_phase(info), isr, ssr, stat); fas216_drv_phase(info), isr, ssr, stat);
handled = IRQ_HANDLED;
} }
return handled;
} }
static void __fas216_start_command(FAS216_Info *info, Scsi_Cmnd *SCpnt) static void __fas216_start_command(FAS216_Info *info, Scsi_Cmnd *SCpnt)
......
...@@ -351,11 +351,11 @@ extern int fas216_queue_command (Scsi_Cmnd *, void (*done)(Scsi_Cmnd *)); ...@@ -351,11 +351,11 @@ extern int fas216_queue_command (Scsi_Cmnd *, void (*done)(Scsi_Cmnd *));
*/ */
extern int fas216_command (Scsi_Cmnd *); extern int fas216_command (Scsi_Cmnd *);
/* Function: void fas216_intr (FAS216_Info *info) /* Function: irqreturn_t fas216_intr (FAS216_Info *info)
* Purpose : handle interrupts from the interface to progress a command * Purpose : handle interrupts from the interface to progress a command
* Params : info - interface to service * Params : info - interface to service
*/ */
extern void fas216_intr (FAS216_Info *info); extern irqreturn_t fas216_intr (FAS216_Info *info);
extern void fas216_remove (struct Scsi_Host *instance); extern void fas216_remove (struct Scsi_Host *instance);
......
...@@ -113,12 +113,12 @@ powertecscsi_terminator_ctl(struct Scsi_Host *host, int on_off) ...@@ -113,12 +113,12 @@ powertecscsi_terminator_ctl(struct Scsi_Host *host, int on_off)
* dev_id - user-defined (Scsi_Host structure) * dev_id - user-defined (Scsi_Host structure)
* regs - processor registers at interrupt * regs - processor registers at interrupt
*/ */
static void static irqreturn_t
powertecscsi_intr(int irq, void *dev_id, struct pt_regs *regs) powertecscsi_intr(int irq, void *dev_id, struct pt_regs *regs)
{ {
struct powertec_info *info = dev_id; struct powertec_info *info = dev_id;
fas216_intr(&info->info); return fas216_intr(&info->info);
} }
/* Prototype: fasdmatype_t powertecscsi_dma_setup(host, SCpnt, direction, min_type) /* Prototype: fasdmatype_t powertecscsi_dma_setup(host, SCpnt, direction, min_type)
......
...@@ -146,7 +146,7 @@ static void button_sequence_finished (unsigned long parameters) ...@@ -146,7 +146,7 @@ static void button_sequence_finished (unsigned long parameters)
* increments the counter. * increments the counter.
*/ */
static void button_handler (int irq, void *dev_id, struct pt_regs *regs) static irqreturn_t button_handler (int irq, void *dev_id, struct pt_regs *regs)
{ {
if (button_press_count) { if (button_press_count) {
del_timer (&button_timer); del_timer (&button_timer);
...@@ -156,6 +156,8 @@ static void button_handler (int irq, void *dev_id, struct pt_regs *regs) ...@@ -156,6 +156,8 @@ static void button_handler (int irq, void *dev_id, struct pt_regs *regs)
button_timer.function = button_sequence_finished; button_timer.function = button_sequence_finished;
button_timer.expires = (jiffies + bdelay); button_timer.expires = (jiffies + bdelay);
add_timer (&button_timer); add_timer (&button_timer);
return IRQ_HANDLED;
} }
/* /*
......
...@@ -49,7 +49,7 @@ static struct input_dev rpcmouse_dev = { ...@@ -49,7 +49,7 @@ static struct input_dev rpcmouse_dev = {
}, },
}; };
static void rpcmouse_irq(int irq, void *dev_id, struct pt_regs *regs) static irqreturn_t rpcmouse_irq(int irq, void *dev_id, struct pt_regs *regs)
{ {
struct input_dev *dev = dev_id; struct input_dev *dev = dev_id;
short x, y, dx, dy, b; short x, y, dx, dy, b;
...@@ -74,6 +74,8 @@ static void rpcmouse_irq(int irq, void *dev_id, struct pt_regs *regs) ...@@ -74,6 +74,8 @@ static void rpcmouse_irq(int irq, void *dev_id, struct pt_regs *regs)
input_report_key(dev, BTN_RIGHT, b & 0x10); input_report_key(dev, BTN_RIGHT, b & 0x10);
input_sync(dev); input_sync(dev);
return IRQ_HANDLED;
} }
static int __init rpcmouse_init(void) static int __init rpcmouse_init(void)
......
...@@ -35,15 +35,19 @@ struct amba_kmi_port { ...@@ -35,15 +35,19 @@ struct amba_kmi_port {
char phys[16]; char phys[16];
}; };
static void amba_kmi_int(int irq, void *dev_id, struct pt_regs *regs) static irqreturn_t amba_kmi_int(int irq, void *dev_id, struct pt_regs *regs)
{ {
struct amba_kmi_port *kmi = dev_id; struct amba_kmi_port *kmi = dev_id;
unsigned int status = __raw_readb(KMIIR); unsigned int status = __raw_readb(KMIIR);
int handled = IRQ_NONE;
while (status & KMIIR_RXINTR) { while (status & KMIIR_RXINTR) {
serio_interrupt(&kmi->io, __raw_readb(KMIDATA), 0, regs); serio_interrupt(&kmi->io, __raw_readb(KMIDATA), 0, regs);
status = __raw_readb(KMIIR); status = __raw_readb(KMIIR);
handled = IRQ_HANDLED;
} }
return handled;
} }
static int amba_kmi_write(struct serio *io, unsigned char val) static int amba_kmi_write(struct serio *io, unsigned char val)
......
...@@ -54,20 +54,24 @@ static int rpckbd_write(struct serio *port, unsigned char val) ...@@ -54,20 +54,24 @@ static int rpckbd_write(struct serio *port, unsigned char val)
return 0; return 0;
} }
static void rpckbd_rx(int irq, void *dev_id, struct pt_regs *regs) static irqreturn_t rpckbd_rx(int irq, void *dev_id, struct pt_regs *regs)
{ {
struct serio *port = dev_id; struct serio *port = dev_id;
unsigned int byte; unsigned int byte;
int handled = IRQ_NONE;
while (iomd_readb(IOMD_KCTRL) & (1 << 5)) { while (iomd_readb(IOMD_KCTRL) & (1 << 5)) {
byte = iomd_readb(IOMD_KARTRX); byte = iomd_readb(IOMD_KARTRX);
serio_interrupt(port, byte, 0, regs); serio_interrupt(port, byte, 0, regs);
handled = IRQ_HANDLED;
} }
return handled;
} }
static void rpckbd_tx(int irq, void *dev_id, struct pt_regs *regs) static irqreturn_t rpckbd_tx(int irq, void *dev_id, struct pt_regs *regs)
{ {
return IRQ_HANDLED;
} }
static int rpckbd_open(struct serio *port) static int rpckbd_open(struct serio *port)
......
...@@ -41,10 +41,11 @@ struct ps2if { ...@@ -41,10 +41,11 @@ struct ps2if {
* at the most one, but we loop for safety. If there was a * at the most one, but we loop for safety. If there was a
* framing error, we have to manually clear the status. * framing error, we have to manually clear the status.
*/ */
static void ps2_rxint(int irq, void *dev_id, struct pt_regs *regs) static irqreturn_t ps2_rxint(int irq, void *dev_id, struct pt_regs *regs)
{ {
struct ps2if *ps2if = dev_id; struct ps2if *ps2if = dev_id;
unsigned int scancode, flag, status; unsigned int scancode, flag, status;
int handled = IRQ_NONE;
status = sa1111_readl(ps2if->base + SA1111_PS2STAT); status = sa1111_readl(ps2if->base + SA1111_PS2STAT);
while (status & PS2STAT_RXF) { while (status & PS2STAT_RXF) {
...@@ -62,13 +63,17 @@ static void ps2_rxint(int irq, void *dev_id, struct pt_regs *regs) ...@@ -62,13 +63,17 @@ static void ps2_rxint(int irq, void *dev_id, struct pt_regs *regs)
serio_interrupt(&ps2if->io, scancode, flag, regs); serio_interrupt(&ps2if->io, scancode, flag, regs);
status = sa1111_readl(ps2if->base + SA1111_PS2STAT); status = sa1111_readl(ps2if->base + SA1111_PS2STAT);
handled = IRQ_HANDLED;
} }
return handled;
} }
/* /*
* Completion of ps2 write * Completion of ps2 write
*/ */
static void ps2_txint(int irq, void *dev_id, struct pt_regs *regs) static irqreturn_t ps2_txint(int irq, void *dev_id, struct pt_regs *regs)
{ {
struct ps2if *ps2if = dev_id; struct ps2if *ps2if = dev_id;
unsigned int status; unsigned int status;
...@@ -83,6 +88,8 @@ static void ps2_txint(int irq, void *dev_id, struct pt_regs *regs) ...@@ -83,6 +88,8 @@ static void ps2_txint(int irq, void *dev_id, struct pt_regs *regs)
ps2if->tail = (ps2if->tail + 1) & (sizeof(ps2if->buf) - 1); ps2if->tail = (ps2if->tail + 1) & (sizeof(ps2if->buf) - 1);
} }
spin_unlock(&ps2if->lock); spin_unlock(&ps2if->lock);
return IRQ_HANDLED;
} }
/* /*
......
...@@ -120,7 +120,6 @@ sa1100_pcmcia_set_mecr(struct sa1100_pcmcia_socket *skt, unsigned int cpu_clock) ...@@ -120,7 +120,6 @@ sa1100_pcmcia_set_mecr(struct sa1100_pcmcia_socket *skt, unsigned int cpu_clock)
unsigned long flags; unsigned long flags;
unsigned short speed; unsigned short speed;
unsigned int bs_io, bs_mem, bs_attr; unsigned int bs_io, bs_mem, bs_attr;
int i;
speed = calc_speed(skt->spd_io, MAX_IO_WIN, SA1100_PCMCIA_IO_ACCESS); speed = calc_speed(skt->spd_io, MAX_IO_WIN, SA1100_PCMCIA_IO_ACCESS);
bs_io = skt->ops->socket_get_timing(skt, cpu_clock, speed); bs_io = skt->ops->socket_get_timing(skt, cpu_clock, speed);
...@@ -324,13 +323,15 @@ static void sa1100_pcmcia_poll_event(unsigned long dummy) ...@@ -324,13 +323,15 @@ static void sa1100_pcmcia_poll_event(unsigned long dummy)
* handling code performs scheduling operations which cannot be * handling code performs scheduling operations which cannot be
* executed from within an interrupt context. * executed from within an interrupt context.
*/ */
static void sa1100_pcmcia_interrupt(int irq, void *dev, struct pt_regs *regs) static irqreturn_t sa1100_pcmcia_interrupt(int irq, void *dev, struct pt_regs *regs)
{ {
struct sa1100_pcmcia_socket *skt = dev; struct sa1100_pcmcia_socket *skt = dev;
DEBUG(3, "%s(): servicing IRQ %d\n", __FUNCTION__, irq); DEBUG(3, "%s(): servicing IRQ %d\n", __FUNCTION__, irq);
schedule_work(&skt->work); schedule_work(&skt->work);
return IRQ_HANDLED;
} }
/* sa1100_pcmcia_register_callback() /* sa1100_pcmcia_register_callback()
......
...@@ -85,7 +85,7 @@ static void serial21285_enable_ms(struct uart_port *port) ...@@ -85,7 +85,7 @@ static void serial21285_enable_ms(struct uart_port *port)
{ {
} }
static void serial21285_rx_chars(int irq, void *dev_id, struct pt_regs *regs) static irqreturn_t serial21285_rx_chars(int irq, void *dev_id, struct pt_regs *regs)
{ {
struct uart_port *port = dev_id; struct uart_port *port = dev_id;
struct tty_struct *tty = port->info->tty; struct tty_struct *tty = port->info->tty;
...@@ -97,7 +97,7 @@ static void serial21285_rx_chars(int irq, void *dev_id, struct pt_regs *regs) ...@@ -97,7 +97,7 @@ static void serial21285_rx_chars(int irq, void *dev_id, struct pt_regs *regs)
tty->flip.work.func((void *)tty); tty->flip.work.func((void *)tty);
if (tty->flip.count >= TTY_FLIPBUF_SIZE) { if (tty->flip.count >= TTY_FLIPBUF_SIZE) {
printk(KERN_WARNING "TTY_DONT_FLIP set\n"); printk(KERN_WARNING "TTY_DONT_FLIP set\n");
return; goto out;
} }
} }
...@@ -143,9 +143,12 @@ static void serial21285_rx_chars(int irq, void *dev_id, struct pt_regs *regs) ...@@ -143,9 +143,12 @@ static void serial21285_rx_chars(int irq, void *dev_id, struct pt_regs *regs)
status = *CSR_UARTFLG; status = *CSR_UARTFLG;
} }
tty_flip_buffer_push(tty); tty_flip_buffer_push(tty);
out:
return IRQ_HANDLED;
} }
static void serial21285_tx_chars(int irq, void *dev_id, struct pt_regs *regs) static irqreturn_t serial21285_tx_chars(int irq, void *dev_id, struct pt_regs *regs)
{ {
struct uart_port *port = dev_id; struct uart_port *port = dev_id;
struct circ_buf *xmit = &port->info->xmit; struct circ_buf *xmit = &port->info->xmit;
...@@ -155,11 +158,11 @@ static void serial21285_tx_chars(int irq, void *dev_id, struct pt_regs *regs) ...@@ -155,11 +158,11 @@ static void serial21285_tx_chars(int irq, void *dev_id, struct pt_regs *regs)
*CSR_UARTDR = port->x_char; *CSR_UARTDR = port->x_char;
port->icount.tx++; port->icount.tx++;
port->x_char = 0; port->x_char = 0;
return; goto out;
} }
if (uart_circ_empty(xmit) || uart_tx_stopped(port)) { if (uart_circ_empty(xmit) || uart_tx_stopped(port)) {
serial21285_stop_tx(port, 0); serial21285_stop_tx(port, 0);
return; goto out;
} }
do { do {
...@@ -175,6 +178,9 @@ static void serial21285_tx_chars(int irq, void *dev_id, struct pt_regs *regs) ...@@ -175,6 +178,9 @@ static void serial21285_tx_chars(int irq, void *dev_id, struct pt_regs *regs)
if (uart_circ_empty(xmit)) if (uart_circ_empty(xmit))
serial21285_stop_tx(port, 0); serial21285_stop_tx(port, 0);
out:
return IRQ_HANDLED;
} }
static unsigned int serial21285_tx_empty(struct uart_port *port) static unsigned int serial21285_tx_empty(struct uart_port *port)
......
...@@ -278,7 +278,7 @@ static void ambauart_modem_status(struct uart_port *port) ...@@ -278,7 +278,7 @@ static void ambauart_modem_status(struct uart_port *port)
wake_up_interruptible(&uap->port.info->delta_msr_wait); wake_up_interruptible(&uap->port.info->delta_msr_wait);
} }
static void ambauart_int(int irq, void *dev_id, struct pt_regs *regs) static irqreturn_t ambauart_int(int irq, void *dev_id, struct pt_regs *regs)
{ {
struct uart_port *port = dev_id; struct uart_port *port = dev_id;
unsigned int status, pass_counter = AMBA_ISR_PASS_LIMIT; unsigned int status, pass_counter = AMBA_ISR_PASS_LIMIT;
...@@ -302,6 +302,8 @@ static void ambauart_int(int irq, void *dev_id, struct pt_regs *regs) ...@@ -302,6 +302,8 @@ static void ambauart_int(int irq, void *dev_id, struct pt_regs *regs)
status = UART_GET_INT_STATUS(port); status = UART_GET_INT_STATUS(port);
} while (status & (AMBA_UARTIIR_RTIS | AMBA_UARTIIR_RIS | } while (status & (AMBA_UARTIIR_RTIS | AMBA_UARTIIR_RIS |
AMBA_UARTIIR_TIS)); AMBA_UARTIIR_TIS));
return IRQ_HANDLED;
} }
static unsigned int ambauart_tx_empty(struct uart_port *port) static unsigned int ambauart_tx_empty(struct uart_port *port)
......
...@@ -312,7 +312,7 @@ static void sa1100_tx_chars(struct sa1100_port *sport) ...@@ -312,7 +312,7 @@ static void sa1100_tx_chars(struct sa1100_port *sport)
sa1100_stop_tx(&sport->port, 0); sa1100_stop_tx(&sport->port, 0);
} }
static void sa1100_int(int irq, void *dev_id, struct pt_regs *regs) static irqreturn_t sa1100_int(int irq, void *dev_id, struct pt_regs *regs)
{ {
struct sa1100_port *sport = dev_id; struct sa1100_port *sport = dev_id;
unsigned int status, pass_counter = 0; unsigned int status, pass_counter = 0;
...@@ -347,6 +347,8 @@ static void sa1100_int(int irq, void *dev_id, struct pt_regs *regs) ...@@ -347,6 +347,8 @@ static void sa1100_int(int irq, void *dev_id, struct pt_regs *regs)
~UTSR0_TFS; ~UTSR0_TFS;
} while (status & (UTSR0_TFS | UTSR0_RFS | UTSR0_RID)); } while (status & (UTSR0_TFS | UTSR0_RFS | UTSR0_RID));
spin_unlock(&sport->port.lock); spin_unlock(&sport->port.lock);
return IRQ_HANDLED;
} }
/* /*
...@@ -830,7 +832,7 @@ static struct console sa1100_console = { ...@@ -830,7 +832,7 @@ static struct console sa1100_console = {
.setup = sa1100_console_setup, .setup = sa1100_console_setup,
.flags = CON_PRINTBUFFER, .flags = CON_PRINTBUFFER,
.index = -1, .index = -1,
.data = sa1100_reg, .data = &sa1100_reg,
}; };
static int __init sa1100_rs_console_init(void) static int __init sa1100_rs_console_init(void)
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment