* [PATCH]: sgiserial 7/7: ->pendregs is a WOV
@ 2003-03-27 2:55 Juan Quintela
0 siblings, 0 replies; only message in thread
From: Juan Quintela @ 2003-03-27 2:55 UTC (permalink / raw)
To: Ralf Baechle, mipslist
Hi
->peonages[] array is a WO variable.
build/drivers/sgi/char/sgiserial.c | 49 ++++++-------------------------------
build/drivers/sgi/char/sgiserial.h | 3 --
2 files changed, 8 insertions(+), 44 deletions(-)
diff -puN build/drivers/sgi/char/sgiserial.c~sgiserial_remove_pendregs build/drivers/sgi/char/sgiserial.c
--- 24/build/drivers/sgi/char/sgiserial.c~sgiserial_remove_pendregs 2003-03-26 18:54:23.000000000 +0100
+++ 24-quintela/build/drivers/sgi/char/sgiserial.c 2003-03-26 18:54:23.000000000 +0100
@@ -223,11 +223,9 @@ static inline void zs_rtsdtr(struct sgi_
{
if(set) {
ss->curregs[5] |= (RTS | DTR);
- ss->pendregs[5] = ss->curregs[5];
write_zsreg(ss->zs_channel, 5, ss->curregs[5]);
} else {
ss->curregs[5] &= ~(RTS | DTR);
- ss->pendregs[5] = ss->curregs[5];
write_zsreg(ss->zs_channel, 5, ss->curregs[5]);
}
return;
@@ -285,7 +283,6 @@ static void rs_stop(struct tty_struct *t
save_flags(flags); cli();
if (info->curregs[5] & TxENAB) {
info->curregs[5] &= ~TxENAB;
- info->pendregs[5] &= ~TxENAB;
write_zsreg(info->zs_channel, 5, info->curregs[5]);
}
restore_flags(flags);
@@ -302,7 +299,6 @@ static void rs_start(struct tty_struct *
save_flags(flags); cli();
if (info->xmit_cnt && info->xmit_buf && !(info->curregs[5] & TxENAB)) {
info->curregs[5] |= TxENAB;
- info->pendregs[5] = info->curregs[5];
write_zsreg(info->zs_channel, 5, info->curregs[5]);
}
restore_flags(flags);
@@ -527,13 +523,11 @@ static inline void status_handle(struct
if((info->tty->termios->c_cflag & CRTSCTS) &&
((info->curregs[3] & AUTO_ENAB)==0)) {
info->curregs[3] |= AUTO_ENAB;
- info->pendregs[3] |= AUTO_ENAB;
write_zsreg(info->zs_channel, 3, info->curregs[3]);
}
} else {
if((info->curregs[3] & AUTO_ENAB)) {
info->curregs[3] &= ~AUTO_ENAB;
- info->pendregs[3] &= ~AUTO_ENAB;
write_zsreg(info->zs_channel, 3, info->curregs[3]);
}
}
@@ -699,14 +693,10 @@ static int startup(struct sgi_serial * i
* Finally, enable sequencing and interrupts
*/
info->curregs[1] |= (info->curregs[1] & ~0x18) | (EXT_INT_ENAB|INT_ALL_Rx);
- info->pendregs[1] = info->curregs[1];
info->curregs[3] |= (RxENABLE | Rx8);
- info->pendregs[3] = info->curregs[3];
/* We enable Tx interrupts as needed. */
info->curregs[5] |= (TxENAB | Tx8);
- info->pendregs[5] = info->curregs[5];
info->curregs[9] |= (NV | MIE);
- info->pendregs[9] = info->curregs[9];
write_zsreg(info->zs_channel, 3, info->curregs[3]);
write_zsreg(info->zs_channel, 5, info->curregs[5]);
write_zsreg(info->zs_channel, 9, info->curregs[9]);
@@ -808,58 +798,44 @@ static void change_speed(struct sgi_seri
case CS5:
info->curregs[3] &= ~(0xc0);
info->curregs[3] |= Rx5;
- info->pendregs[3] = info->curregs[3];
info->curregs[5] &= ~(0xe0);
info->curregs[5] |= Tx5;
- info->pendregs[5] = info->curregs[5];
break;
case CS6:
info->curregs[3] &= ~(0xc0);
info->curregs[3] |= Rx6;
- info->pendregs[3] = info->curregs[3];
info->curregs[5] &= ~(0xe0);
info->curregs[5] |= Tx6;
- info->pendregs[5] = info->curregs[5];
break;
case CS7:
info->curregs[3] &= ~(0xc0);
info->curregs[3] |= Rx7;
- info->pendregs[3] = info->curregs[3];
info->curregs[5] &= ~(0xe0);
info->curregs[5] |= Tx7;
- info->pendregs[5] = info->curregs[5];
break;
case CS8:
default: /* defaults to 8 bits */
info->curregs[3] &= ~(0xc0);
info->curregs[3] |= Rx8;
- info->pendregs[3] = info->curregs[3];
info->curregs[5] &= ~(0xe0);
info->curregs[5] |= Tx8;
- info->pendregs[5] = info->curregs[5];
break;
}
info->curregs[4] &= ~(0x0c);
- if (cflag & CSTOPB) {
+ if (cflag & CSTOPB)
info->curregs[4] |= SB2;
- } else {
+ else
info->curregs[4] |= SB1;
- }
- info->pendregs[4] = info->curregs[4];
- if (cflag & PARENB) {
+
+ if (cflag & PARENB)
info->curregs[4] |= PAR_ENA;
- info->pendregs[4] |= PAR_ENA;
- } else {
+ else
info->curregs[4] &= ~PAR_ENA;
- info->pendregs[4] &= ~PAR_ENA;
- }
- if (!(cflag & PARODD)) {
+
+ if (!(cflag & PARODD))
info->curregs[4] |= PAR_EVEN;
- info->pendregs[4] |= PAR_EVEN;
- } else {
+ else
info->curregs[4] &= ~PAR_EVEN;
- info->pendregs[4] &= ~PAR_EVEN;
- }
/* Load up the new values */
load_zsregs(info->zs_channel, info->curregs);
@@ -1037,10 +1013,8 @@ static int rs_write(struct tty_struct *
*/
/* Enable transmitter */
info->curregs[1] |= TxINT_ENAB|EXT_INT_ENAB;
- info->pendregs[1] |= TxINT_ENAB|EXT_INT_ENAB;
write_zsreg(info->zs_channel, 1, info->curregs[1]);
info->curregs[5] |= TxENAB;
- info->pendregs[5] |= TxENAB;
write_zsreg(info->zs_channel, 5, info->curregs[5]);
/*
@@ -1113,10 +1087,8 @@ static void rs_flush_chars(struct tty_st
/* Enable transmitter */
save_flags(flags); cli();
info->curregs[1] |= TxINT_ENAB|EXT_INT_ENAB;
- info->pendregs[1] |= TxINT_ENAB|EXT_INT_ENAB;
write_zsreg(info->zs_channel, 1, info->curregs[1]);
info->curregs[5] |= TxENAB;
- info->pendregs[5] |= TxENAB;
write_zsreg(info->zs_channel, 5, info->curregs[5]);
/*
@@ -1166,7 +1138,6 @@ static void rs_throttle(struct tty_struc
/* Turn off RTS line */
cli();
info->curregs[5] &= ~RTS;
- info->pendregs[5] &= ~RTS;
write_zsreg(info->zs_channel, 5, info->curregs[5]);
sti();
}
@@ -1194,7 +1165,6 @@ static void rs_unthrottle(struct tty_str
/* Assert RTS line */
cli();
info->curregs[5] |= RTS;
- info->pendregs[5] |= RTS;
write_zsreg(info->zs_channel, 5, info->curregs[5]);
sti();
}
@@ -1521,10 +1491,8 @@ static void rs_close(struct tty_struct *
*/
/** if (!info->iscons) ... **/
info->curregs[3] &= ~RxENABLE;
- info->pendregs[3] = info->curregs[3];
write_zsreg(info->zs_channel, 3, info->curregs[3]);
info->curregs[1] &= ~(0x18);
- info->pendregs[1] = info->curregs[1];
write_zsreg(info->zs_channel, 1, info->curregs[1]);
ZS_CLEARFIFO(info->zs_channel);
@@ -2245,7 +2213,6 @@ static int __init zs_console_setup(struc
zscons_regs[12] = brg & 0xff;
zscons_regs[13] = (brg >> 8) & 0xff;
memcpy(info->curregs, zscons_regs, sizeof(zscons_regs));
- memcpy(info->pendregs, zscons_regs, sizeof(zscons_regs));
load_zsregs(info->zs_channel, zscons_regs);
ZS_CLEARERR(info->zs_channel);
ZS_CLEARFIFO(info->zs_channel);
diff -puN build/drivers/sgi/char/sgiserial.h~sgiserial_remove_pendregs build/drivers/sgi/char/sgiserial.h
--- 24/build/drivers/sgi/char/sgiserial.h~sgiserial_remove_pendregs 2003-03-26 18:54:23.000000000 +0100
+++ 24-quintela/build/drivers/sgi/char/sgiserial.h 2003-03-26 18:54:23.000000000 +0100
@@ -122,9 +122,6 @@ struct sgi_serial {
/* Current write register values */
unsigned char curregs[NUM_ZSREGS];
- /* Values we need to set next opportunity */
- unsigned char pendregs[NUM_ZSREGS];
-
char change_needed;
int magic;
_
--
In theory, practice and theory are the same, but in practice they
are different -- Larry McVoy
^ permalink raw reply [flat|nested] only message in thread
only message in thread, other threads:[~2003-03-27 2:59 UTC | newest]
Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2003-03-27 2:55 [PATCH]: sgiserial 7/7: ->pendregs is a WOV Juan Quintela
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox