/* Turn on receive interrupts */ outb(UART_IER_RDI, iobase+UART_IER); 
/* Turn on receive interrupts */ outb(UART_IER_RDI, iobase + UART_IER); 
static void smsc_ircc_sir_write_wakeup(struct smsc_ircc_cb *self){	int actual = 0;	int iobase;	int fcr;	IRDA_ASSERT(self != NULL, return;);	IRDA_DEBUG(4, "%s\n", __FUNCTION__);	iobase = self->io.sir_base;	/* Finished with frame?  */	if (self->tx_buff.len > 0)  {		/* Write data left in transmit buffer */		actual = smsc_ircc_sir_write(iobase, self->io.fifo_size,				      self->tx_buff.data, self->tx_buff.len);		self->tx_buff.data += actual;		self->tx_buff.len  -= actual;	} else {	/*if (self->tx_buff.len ==0)  {*/		/*		 *  Now serial buffer is almost free & we can start		 *  transmission of another packet. But first we must check		 *  if we need to change the speed of the hardware		 */		if (self->new_speed) {			IRDA_DEBUG(5, "%s(), Changing speed to %d.\n",				   __FUNCTION__, self->new_speed);			smsc_ircc_sir_wait_hw_transmitter_finish(self);			smsc_ircc_change_speed(self, self->new_speed);			self->new_speed = 0;		} else {			/* Tell network layer that we want more frames */			netif_wake_queue(self->netdev);		}		self->stats.tx_packets++;		if(self->io.speed <= 115200) {		/*		 * Reset Rx FIFO to make sure that all reflected transmit data		 * is discarded. This is needed for half duplex operation		 */		fcr = UART_FCR_ENABLE_FIFO | UART_FCR_CLEAR_RCVR;		if (self->io.speed < 38400)			fcr |= UART_FCR_TRIGGER_1;		else			fcr |= UART_FCR_TRIGGER_14;		outb(fcr, iobase+UART_FCR);		/* Turn on receive interrupts */		outb(UART_IER_RDI, iobase+UART_IER);		}	}}
10457	/local/tlutelli/issta_data/temp/c/2005_temp/2005/10457/98b7777331d4344821e900040da5d1d3016d9e67/smsc-ircc2.c/clean/drivers/net/irda/smsc-ircc2.c