|
@@ -201,7 +201,6 @@ static void z8530_init(void);
|
|
|
|
|
|
static void init_channel(struct scc_channel *scc);
|
|
|
static void scc_key_trx (struct scc_channel *scc, char tx);
|
|
|
-static irqreturn_t scc_isr(int irq, void *dev_id);
|
|
|
static void scc_init_timer(struct scc_channel *scc);
|
|
|
|
|
|
static int scc_net_alloc(const char *name, struct scc_channel *scc);
|
|
@@ -629,6 +628,7 @@ static void scc_isr_dispatch(struct scc_channel *scc, int vector)
|
|
|
|
|
|
static irqreturn_t scc_isr(int irq, void *dev_id)
|
|
|
{
|
|
|
+ int chip_irq = (long) dev_id;
|
|
|
unsigned char vector;
|
|
|
struct scc_channel *scc;
|
|
|
struct scc_ctrl *ctrl;
|
|
@@ -665,7 +665,7 @@ static irqreturn_t scc_isr(int irq, void *dev_id)
|
|
|
ctrl = SCC_ctrl;
|
|
|
while (ctrl->chan_A)
|
|
|
{
|
|
|
- if (ctrl->irq != irq)
|
|
|
+ if (ctrl->irq != chip_irq)
|
|
|
{
|
|
|
ctrl++;
|
|
|
continue;
|
|
@@ -1732,7 +1732,9 @@ static int scc_net_ioctl(struct net_device *dev, struct ifreq *ifr, int cmd)
|
|
|
|
|
|
if (!Ivec[hwcfg.irq].used && hwcfg.irq)
|
|
|
{
|
|
|
- if (request_irq(hwcfg.irq, scc_isr, IRQF_DISABLED, "AX.25 SCC", NULL))
|
|
|
+ if (request_irq(hwcfg.irq, scc_isr,
|
|
|
+ IRQF_DISABLED, "AX.25 SCC",
|
|
|
+ (void *)(long) hwcfg.irq))
|
|
|
printk(KERN_WARNING "z8530drv: warning, cannot get IRQ %d\n", hwcfg.irq);
|
|
|
else
|
|
|
Ivec[hwcfg.irq].used = 1;
|