static inline void sx_check_modem(struct specialix_board * bp){	struct specialix_port *port;	struct tty_struct *tty;	unsigned char mcr;	int msvr_cd;	dprintk (SX_DEBUG_SIGNALS, "Modem intr. ");	if (!(port = sx_get_port(bp, "Modem")))		return;		tty = port->tty;		mcr = sx_in(bp, CD186x_MCR);	printk ("mcr = %02x.\n", mcr);	if ((mcr & MCR_CDCHG)) {		dprintk (SX_DEBUG_SIGNALS, "CD just changed... ");		msvr_cd = sx_in(bp, CD186x_MSVR) & MSVR_CD;		if (msvr_cd) {			dprintk (SX_DEBUG_SIGNALS, "Waking up guys in open.\n");			wake_up_interruptible(&port->open_wait);		} else {			dprintk (SX_DEBUG_SIGNALS, "Sending HUP.\n");			schedule_work(&port->tqueue_hangup);		}	}	#ifdef SPECIALIX_BRAIN_DAMAGED_CTS	if (mcr & MCR_CTSCHG) {		if (sx_in(bp, CD186x_MSVR) & MSVR_CTS) {			tty->hw_stopped = 0;			port->IER |= IER_TXRDY;			if (port->xmit_cnt <= port->wakeup_chars)				sx_mark_event(port, RS_EVENT_WRITE_WAKEUP);		} else {			tty->hw_stopped = 1;			port->IER &= ~IER_TXRDY;		}		sx_out(bp, CD186x_IER, port->IER);	}	if (mcr & MCR_DSSXHG) {		if (sx_in(bp, CD186x_MSVR) & MSVR_DSR) {			tty->hw_stopped = 0;			port->IER |= IER_TXRDY;			if (port->xmit_cnt <= port->wakeup_chars)				sx_mark_event(port, RS_EVENT_WRITE_WAKEUP);		} else {			tty->hw_stopped = 1;			port->IER &= ~IER_TXRDY;		}		sx_out(bp, CD186x_IER, port->IER);	}#endif /* SPECIALIX_BRAIN_DAMAGED_CTS */		/* Clear change bits */	sx_out(bp, CD186x_MCR, 0);}
10457	/local/tlutelli/issta_data/temp/c/2005_temp/2005/10457/d61780c0d384939ef31c46b47442854d5def4623/specialix.c/buggy/drivers/char/specialix.c