Commit 50dea66b authored by Linus Torvalds's avatar Linus Torvalds

Fix ray_cs for new interrupt handling.

Damn 16-bit PCMCIA layer has no type checking. Complete crap.
parent eee4f071
...@@ -138,7 +138,7 @@ static void ray_update_parm(struct net_device *dev, UCHAR objid, UCHAR *value, i ...@@ -138,7 +138,7 @@ static void ray_update_parm(struct net_device *dev, UCHAR objid, UCHAR *value, i
static void verify_dl_startup(u_long); static void verify_dl_startup(u_long);
/* Prototypes for interrpt time functions **********************************/ /* Prototypes for interrpt time functions **********************************/
static void ray_interrupt (int reg, void *dev_id, struct pt_regs *regs); static irqreturn_t ray_interrupt (int reg, void *dev_id, struct pt_regs *regs);
static void clear_interrupt(ray_dev_t *local); static void clear_interrupt(ray_dev_t *local);
static void rx_deauthenticate(ray_dev_t *local, struct rcs *prcs, static void rx_deauthenticate(ray_dev_t *local, struct rcs *prcs,
unsigned int pkt_addr, int rx_len); unsigned int pkt_addr, int rx_len);
...@@ -2050,7 +2050,7 @@ static void set_multicast_list(struct net_device *dev) ...@@ -2050,7 +2050,7 @@ static void set_multicast_list(struct net_device *dev)
/*============================================================================= /*=============================================================================
* All routines below here are run at interrupt time. * All routines below here are run at interrupt time.
=============================================================================*/ =============================================================================*/
static void ray_interrupt(int irq, void *dev_id, struct pt_regs * regs) static irqreturn_t ray_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;
dev_link_t *link; dev_link_t *link;
...@@ -2063,7 +2063,7 @@ static void ray_interrupt(int irq, void *dev_id, struct pt_regs * regs) ...@@ -2063,7 +2063,7 @@ static void ray_interrupt(int irq, void *dev_id, struct pt_regs * regs)
UCHAR status; UCHAR status;
if (dev == NULL) /* Note that we want interrupts with dev->start == 0 */ if (dev == NULL) /* Note that we want interrupts with dev->start == 0 */
return; return IRQ_NONE;
DEBUG(4,"ray_cs: interrupt for *dev=%p\n",dev); DEBUG(4,"ray_cs: interrupt for *dev=%p\n",dev);
...@@ -2071,7 +2071,7 @@ static void ray_interrupt(int irq, void *dev_id, struct pt_regs * regs) ...@@ -2071,7 +2071,7 @@ static void ray_interrupt(int irq, void *dev_id, struct pt_regs * regs)
link = (dev_link_t *)local->finder; link = (dev_link_t *)local->finder;
if ( ! (link->state & DEV_PRESENT) || link->state & DEV_SUSPEND ) { if ( ! (link->state & DEV_PRESENT) || link->state & DEV_SUSPEND ) {
DEBUG(2,"ray_cs interrupt from device not present or suspended.\n"); DEBUG(2,"ray_cs interrupt from device not present or suspended.\n");
return; return IRQ_NONE;
} }
rcsindex = readb(&((struct scb *)(local->sram))->rcs_index); rcsindex = readb(&((struct scb *)(local->sram))->rcs_index);
...@@ -2079,7 +2079,7 @@ static void ray_interrupt(int irq, void *dev_id, struct pt_regs * regs) ...@@ -2079,7 +2079,7 @@ static void ray_interrupt(int irq, void *dev_id, struct pt_regs * regs)
{ {
DEBUG(1,"ray_cs interrupt bad rcsindex = 0x%x\n",rcsindex); DEBUG(1,"ray_cs interrupt bad rcsindex = 0x%x\n",rcsindex);
clear_interrupt(local); clear_interrupt(local);
return; return IRQ_HANDLED;
} }
if (rcsindex < NUMBER_OF_CCS) /* If it's a returned CCS */ if (rcsindex < NUMBER_OF_CCS) /* If it's a returned CCS */
{ {
...@@ -2235,6 +2235,7 @@ static void ray_interrupt(int irq, void *dev_id, struct pt_regs * regs) ...@@ -2235,6 +2235,7 @@ static void ray_interrupt(int irq, void *dev_id, struct pt_regs * regs)
writeb(CCS_BUFFER_FREE, &prcs->buffer_status); writeb(CCS_BUFFER_FREE, &prcs->buffer_status);
} }
clear_interrupt(local); clear_interrupt(local);
return IRQ_HANDLED;
} /* ray_interrupt */ } /* ray_interrupt */
/*===========================================================================*/ /*===========================================================================*/
static void ray_rx(struct net_device *dev, ray_dev_t *local, struct rcs *prcs) static void ray_rx(struct net_device *dev, ray_dev_t *local, struct rcs *prcs)
......
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