self = (struct smsc_ircc_cb *) dev->priv; 
 self = netdev_priv(dev); 
static irqreturn_t smsc_ircc_interrupt(int irq, void *dev_id, struct pt_regs *regs){	struct net_device *dev = (struct net_device *) dev_id;	struct smsc_ircc_cb *self;	int iobase, iir, lcra, lsr;	irqreturn_t ret = IRQ_NONE;	if (dev == NULL) {		printk(KERN_WARNING "%s: irq %d for unknown device.\n",		       driver_name, irq);		goto irq_ret;	}	self = (struct smsc_ircc_cb *) dev->priv;	IRDA_ASSERT(self != NULL, return IRQ_NONE;);	/* Serialise the interrupt handler in various CPUs, stop Tx path */	spin_lock(&self->lock);	/* Check if we should use the SIR interrupt handler */	if (self->io.speed <= SMSC_IRCC2_MAX_SIR_SPEED) {		ret = smsc_ircc_interrupt_sir(dev);		goto irq_ret_unlock;	}	iobase = self->io.fir_base;	register_bank(iobase, 0);	iir = inb(iobase + IRCC_IIR);	if (iir == 0)		goto irq_ret_unlock;	ret = IRQ_HANDLED;	/* Disable interrupts */	outb(0, iobase + IRCC_IER);	lcra = inb(iobase + IRCC_LCR_A);	lsr = inb(iobase + IRCC_LSR);	IRDA_DEBUG(2, "%s(), iir = 0x%02x\n", __FUNCTION__, iir);	if (iir & IRCC_IIR_EOM) {		if (self->io.direction == IO_RECV)			smsc_ircc_dma_receive_complete(self);		else			smsc_ircc_dma_xmit_complete(self);		smsc_ircc_dma_receive(self);	}	if (iir & IRCC_IIR_ACTIVE_FRAME) {		/*printk(KERN_WARNING "%s(): Active Frame\n", __FUNCTION__);*/	}	/* Enable interrupts again */	register_bank(iobase, 0);	outb(IRCC_IER_ACTIVE_FRAME | IRCC_IER_EOM, iobase + IRCC_IER); irq_ret_unlock:	spin_unlock(&self->lock); irq_ret:	return ret;}
4520	/local/tlutelli/issta_data/temp/c/2005_temp/2005/4520/da0841a09531818000f816b76374abaef7e4b9b9/smsc-ircc2.c/clean/drivers/net/irda/smsc-ircc2.c