From: Uns L. <uns...@us...> - 2003-07-29 21:59:28
|
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); } |