From: Dave A. <ai...@us...> - 2001-11-11 22:42:43
|
Update of /cvsroot/linux-vax/kernel-2.4/drivers/char In directory usw-pr-cvs1:/tmp/cvs-serv32542 Modified Files: dz.c Log Message: DA: dz.c fixes for 4000/60 .. need to test on 3100m38 Index: dz.c =================================================================== RCS file: /cvsroot/linux-vax/kernel-2.4/drivers/char/dz.c,v retrieving revision 1.10 retrieving revision 1.11 diff -u -r1.10 -r1.11 --- dz.c 2001/09/21 20:54:16 1.10 +++ dz.c 2001/11/11 22:42:39 1.11 @@ -1444,10 +1444,11 @@ #ifndef CONFIG_SERIAL_CONSOLE dz_out(info, DZ_CSR, DZ_CLR); while ((tmp = dz_in(info,DZ_CSR)) & DZ_CLR) ; +#ifndef CONFIG_VAX wbflush(); +#endif - /* enable scanning */ - dz_out(info, DZ_CSR, DZ_MSE); + #endif /* order matters here... the trick is that flags @@ -1464,9 +1465,9 @@ i = dz_in(info, DZ_TCR); dz_out(info, DZ_CSR, DZ_MSE|DZ_TIE); dz_out(info, DZ_TCR, 0); - udelay(1000); + mdelay(1); dz_out(info, DZ_TCR, 1); - udelay(10000); + mdelay(10); dz_out(info, DZ_TCR, i); num=vsbus_probe_irq_report(); irq=autoirq_report(0); @@ -1482,13 +1483,13 @@ i = dz_in(info, DZ_TCR); dz_out(info, DZ_CSR, DZ_MSE|DZ_TIE); dz_out(info, DZ_TCR, 0); - udelay(1000); + mdelay(1); dz_out(info, DZ_TCR, 1); - udelay(10000); + mdelay(10); dz_out(info, DZ_TCR, i); vsbus_clear_int(num); vsbus_disable_int(num); - irq=autoirq_report(100); + irq=autoirq_report(0); } #else if (is_ka46()){ @@ -1512,7 +1513,8 @@ if (request_irq (SERIAL, dz_interrupt_rx, SA_INTERRUPT, "DZ", lines[0])) panic ("Unable to register DZ interrupt\n"); #endif - + /* enable scanning */ + dz_out(info, DZ_CSR, DZ_MSE); return 0; } @@ -1544,6 +1546,9 @@ /* Actually transmit the character. */ dz_out (dz_console, DZ_TDR, tmp); + /* spin our wheels */ + while (((dz_in(dz_console,DZ_CSR) & DZ_TRDY) != DZ_TRDY) && loops--) + ; dz_out(dz_console, DZ_TCR, tcr); restore_flags(flags); } @@ -1650,13 +1655,12 @@ dz_console->line = CONSOLE_LINE; /* This line locks up Dave Airlie's VS3100m38 after HALT */ - /* dz_out(dz_console, DZ_CSR, DZ_CLR); */ +#ifndef CONFIG_VAX + dz_out(dz_console, DZ_CSR, DZ_CLR); +#endif while ((tmp = dz_in(dz_console,DZ_CSR)) & DZ_CLR) ; - - /* enable scanning */ - dz_out(dz_console, DZ_CSR, DZ_MSE); /* Set up flags... */ dz_console->cflags = co->cflag; |