Update of /cvsroot/linux-vax/kernel-2.4/drivers/char
In directory sc8-pr-cvs1:/tmp/cvs-serv31853
Modified Files:
sc26c94.c
Log Message:
Fixed sc26c94_write_io. Before, it could only set bits, not clear them.
Index: sc26c94.c
===================================================================
RCS file: /cvsroot/linux-vax/kernel-2.4/drivers/char/sc26c94.c,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -r1.4 -r1.5
--- sc26c94.c 3 Jun 2002 02:52:42 -0000 1.4
+++ sc26c94.c 29 Jul 2003 18:21:01 -0000 1.5
@@ -233,16 +233,21 @@
{
int opr_reg = (channum < SC26C94_PORT_C) ? SC26C94_REG_OPRab : SC26C94_REG_OPRcd;
int opr;
+ u8 mask;
unsigned long flags;
- val = val ? 0 : io_bits[ionum & 3];
+ mask = io_bits[ionum & 3];
if((channum & 1) != 0)
- val <<= 2;
+ mask <<= 2;
+
+ val = val ? 0 : mask;
save_flags(flags);
cli();
opr = quart->readreg(quart, opr_reg);
- quart->writereg(quart, opr_reg, opr | val);
+ opr &= ~mask;
+ opr |= val;
+ quart->writereg(quart, opr_reg, opr);
restore_flags(flags);
}
|