diff options
author | kato <kato@FreeBSD.org> | 1998-12-30 08:09:11 +0000 |
---|---|---|
committer | kato <kato@FreeBSD.org> | 1998-12-30 08:09:11 +0000 |
commit | 73edf934d91b1865b86d80f53e5d5dd7790aa4d9 (patch) | |
tree | 546d897a99fc7c42f12c14f0c6342cbff9da45f6 /sys/pc98 | |
parent | c3a2261141ae3ce18e4cf0b1057d6a9c24cc92e7 (diff) | |
download | FreeBSD-src-73edf934d91b1865b86d80f53e5d5dd7790aa4d9.zip FreeBSD-src-73edf934d91b1865b86d80f53e5d5dd7790aa4d9.tar.gz |
Sync with sys/i386/isa/sio.c revision 1.220.
Diffstat (limited to 'sys/pc98')
-rw-r--r-- | sys/pc98/cbus/sio.c | 159 | ||||
-rw-r--r-- | sys/pc98/pc98/sio.c | 159 |
2 files changed, 2 insertions, 316 deletions
diff --git a/sys/pc98/cbus/sio.c b/sys/pc98/cbus/sio.c index e5dc784..80c260d 100644 --- a/sys/pc98/cbus/sio.c +++ b/sys/pc98/cbus/sio.c @@ -31,7 +31,7 @@ * SUCH DAMAGE. * * from: @(#)com.c 7.5 (Berkeley) 5/16/91 - * $Id: sio.c,v 1.69 1998/11/23 07:49:03 kato Exp $ + * $Id: sio.c,v 1.70 1998/12/08 08:18:59 kato Exp $ */ #include "opt_comconsole.h" @@ -416,9 +416,6 @@ static timeout_t comwakeup; static void disc_optim __P((struct tty *tp, struct termios *t, struct com_s *com)); -#ifdef DSI_SOFT_MODEM -static int LoadSoftModem __P((int unit,int base_io, u_long size, u_char *ptr)); -#endif /* DSI_SOFT_MODEM */ static char driver_name[] = "sio"; @@ -1274,12 +1271,6 @@ sioattach(isdp) /* attempt to determine UART type */ printf("sio%d: type", unit); -#ifdef DSI_SOFT_MODEM - if((inb(iobase+7) ^ inb(iobase+7)) & 0x80) { - printf(" Digicom Systems, Inc. SoftModem"); - goto determined_type; - } -#endif /* DSI_SOFT_MODEM */ #ifndef PC98 #ifdef COM_MULTIPORT @@ -2251,34 +2242,6 @@ sioioctl(dev, cmd, data, flag, p) case TIOCGWINSZ: bzero(data, sizeof(struct winsize)); return (0); -#ifdef DSI_SOFT_MODEM - /* - * Download micro-code to Digicom modem. - */ - case TIOCDSIMICROCODE: - { - u_long l; - u_char *p,*pi; - - pi = (u_char*)(*(caddr_t*)data); - error = copyin(pi,&l,sizeof l); - if(error) - {return error;}; - pi += sizeof l; - - p = malloc(l,M_TEMP,M_NOWAIT); - if(!p) - {return ENOBUFS;} - error = copyin(pi,p,l); - if(error) - {free(p,M_TEMP); return error;}; - if(error = LoadSoftModem( - MINOR_TO_UNIT(mynor),iobase,l,p)) - {free(p,M_TEMP); return error;} - free(p,M_TEMP); - return(0); - } -#endif /* DSI_SOFT_MODEM */ default: return (ENOTTY); } @@ -3494,126 +3457,6 @@ siocnputc(dev, c) splx(s); } -#ifdef DSI_SOFT_MODEM -/* - * The magic code to download microcode to a "Connection 14.4+Fax" - * modem from Digicom Systems Inc. Very magic. - */ - -#define DSI_ERROR(str) { ptr = str; goto error; } -static int -LoadSoftModem(int unit, int base_io, u_long size, u_char *ptr) -{ - int int_c,int_k; - int data_0188, data_0187; - - /* - * First see if it is a DSI SoftModem - */ - if(!((inb(base_io+7) ^ inb(base_io+7)) & 0x80)) - return ENODEV; - - data_0188 = inb(base_io+4); - data_0187 = inb(base_io+3); - outb(base_io+3,0x80); - outb(base_io+4,0x0C); - outb(base_io+0,0x31); - outb(base_io+1,0x8C); - outb(base_io+7,0x10); - outb(base_io+7,0x19); - - if(0x18 != (inb(base_io+7) & 0x1A)) - DSI_ERROR("dsp bus not granted"); - - if(0x01 != (inb(base_io+7) & 0x01)) { - outb(base_io+7,0x18); - outb(base_io+7,0x19); - if(0x01 != (inb(base_io+7) & 0x01)) - DSI_ERROR("program mem not granted"); - } - - int_c = 0; - - while(1) { - if(int_c >= 7 || size <= 0x1800) - break; - - for(int_k = 0 ; int_k < 0x800; int_k++) { - outb(base_io+0,*ptr++); - outb(base_io+1,*ptr++); - outb(base_io+2,*ptr++); - } - - size -= 0x1800; - int_c++; - } - - if(size > 0x1800) { - outb(base_io+7,0x18); - outb(base_io+7,0x19); - if(0x00 != (inb(base_io+7) & 0x01)) - DSI_ERROR("program data not granted"); - - for(int_k = 0 ; int_k < 0x800; int_k++) { - outb(base_io+1,*ptr++); - outb(base_io+2,0); - outb(base_io+1,*ptr++); - outb(base_io+2,*ptr++); - } - - size -= 0x1800; - - while(size > 0x1800) { - for(int_k = 0 ; int_k < 0xC00; int_k++) { - outb(base_io+1,*ptr++); - outb(base_io+2,*ptr++); - } - size -= 0x1800; - } - - if(size < 0x1800) { - for(int_k=0;int_k<size/2;int_k++) { - outb(base_io+1,*ptr++); - outb(base_io+2,*ptr++); - } - } - - } else if (size > 0) { - if(int_c == 7) { - outb(base_io+7,0x18); - outb(base_io+7,0x19); - if(0x00 != (inb(base_io+7) & 0x01)) - DSI_ERROR("program data not granted"); - for(int_k = 0 ; int_k < size/3; int_k++) { - outb(base_io+1,*ptr++); - outb(base_io+2,0); - outb(base_io+1,*ptr++); - outb(base_io+2,*ptr++); - } - } else { - for(int_k = 0 ; int_k < size/3; int_k++) { - outb(base_io+0,*ptr++); - outb(base_io+1,*ptr++); - outb(base_io+2,*ptr++); - } - } - } - outb(base_io+7,0x11); - outb(base_io+7,3); - - outb(base_io+4,data_0188 & 0xfb); - - outb(base_io+3,data_0187); - - return 0; -error: - printf("sio%d: DSI SoftModem microcode load failed: <%s>\n",unit,ptr); - outb(base_io+7,0x00); \ - outb(base_io+3,data_0187); \ - outb(base_io+4,data_0188); \ - return EIO; -} -#endif /* DSI_SOFT_MODEM */ /* * support PnP cards if we are using 'em diff --git a/sys/pc98/pc98/sio.c b/sys/pc98/pc98/sio.c index e5dc784..80c260d 100644 --- a/sys/pc98/pc98/sio.c +++ b/sys/pc98/pc98/sio.c @@ -31,7 +31,7 @@ * SUCH DAMAGE. * * from: @(#)com.c 7.5 (Berkeley) 5/16/91 - * $Id: sio.c,v 1.69 1998/11/23 07:49:03 kato Exp $ + * $Id: sio.c,v 1.70 1998/12/08 08:18:59 kato Exp $ */ #include "opt_comconsole.h" @@ -416,9 +416,6 @@ static timeout_t comwakeup; static void disc_optim __P((struct tty *tp, struct termios *t, struct com_s *com)); -#ifdef DSI_SOFT_MODEM -static int LoadSoftModem __P((int unit,int base_io, u_long size, u_char *ptr)); -#endif /* DSI_SOFT_MODEM */ static char driver_name[] = "sio"; @@ -1274,12 +1271,6 @@ sioattach(isdp) /* attempt to determine UART type */ printf("sio%d: type", unit); -#ifdef DSI_SOFT_MODEM - if((inb(iobase+7) ^ inb(iobase+7)) & 0x80) { - printf(" Digicom Systems, Inc. SoftModem"); - goto determined_type; - } -#endif /* DSI_SOFT_MODEM */ #ifndef PC98 #ifdef COM_MULTIPORT @@ -2251,34 +2242,6 @@ sioioctl(dev, cmd, data, flag, p) case TIOCGWINSZ: bzero(data, sizeof(struct winsize)); return (0); -#ifdef DSI_SOFT_MODEM - /* - * Download micro-code to Digicom modem. - */ - case TIOCDSIMICROCODE: - { - u_long l; - u_char *p,*pi; - - pi = (u_char*)(*(caddr_t*)data); - error = copyin(pi,&l,sizeof l); - if(error) - {return error;}; - pi += sizeof l; - - p = malloc(l,M_TEMP,M_NOWAIT); - if(!p) - {return ENOBUFS;} - error = copyin(pi,p,l); - if(error) - {free(p,M_TEMP); return error;}; - if(error = LoadSoftModem( - MINOR_TO_UNIT(mynor),iobase,l,p)) - {free(p,M_TEMP); return error;} - free(p,M_TEMP); - return(0); - } -#endif /* DSI_SOFT_MODEM */ default: return (ENOTTY); } @@ -3494,126 +3457,6 @@ siocnputc(dev, c) splx(s); } -#ifdef DSI_SOFT_MODEM -/* - * The magic code to download microcode to a "Connection 14.4+Fax" - * modem from Digicom Systems Inc. Very magic. - */ - -#define DSI_ERROR(str) { ptr = str; goto error; } -static int -LoadSoftModem(int unit, int base_io, u_long size, u_char *ptr) -{ - int int_c,int_k; - int data_0188, data_0187; - - /* - * First see if it is a DSI SoftModem - */ - if(!((inb(base_io+7) ^ inb(base_io+7)) & 0x80)) - return ENODEV; - - data_0188 = inb(base_io+4); - data_0187 = inb(base_io+3); - outb(base_io+3,0x80); - outb(base_io+4,0x0C); - outb(base_io+0,0x31); - outb(base_io+1,0x8C); - outb(base_io+7,0x10); - outb(base_io+7,0x19); - - if(0x18 != (inb(base_io+7) & 0x1A)) - DSI_ERROR("dsp bus not granted"); - - if(0x01 != (inb(base_io+7) & 0x01)) { - outb(base_io+7,0x18); - outb(base_io+7,0x19); - if(0x01 != (inb(base_io+7) & 0x01)) - DSI_ERROR("program mem not granted"); - } - - int_c = 0; - - while(1) { - if(int_c >= 7 || size <= 0x1800) - break; - - for(int_k = 0 ; int_k < 0x800; int_k++) { - outb(base_io+0,*ptr++); - outb(base_io+1,*ptr++); - outb(base_io+2,*ptr++); - } - - size -= 0x1800; - int_c++; - } - - if(size > 0x1800) { - outb(base_io+7,0x18); - outb(base_io+7,0x19); - if(0x00 != (inb(base_io+7) & 0x01)) - DSI_ERROR("program data not granted"); - - for(int_k = 0 ; int_k < 0x800; int_k++) { - outb(base_io+1,*ptr++); - outb(base_io+2,0); - outb(base_io+1,*ptr++); - outb(base_io+2,*ptr++); - } - - size -= 0x1800; - - while(size > 0x1800) { - for(int_k = 0 ; int_k < 0xC00; int_k++) { - outb(base_io+1,*ptr++); - outb(base_io+2,*ptr++); - } - size -= 0x1800; - } - - if(size < 0x1800) { - for(int_k=0;int_k<size/2;int_k++) { - outb(base_io+1,*ptr++); - outb(base_io+2,*ptr++); - } - } - - } else if (size > 0) { - if(int_c == 7) { - outb(base_io+7,0x18); - outb(base_io+7,0x19); - if(0x00 != (inb(base_io+7) & 0x01)) - DSI_ERROR("program data not granted"); - for(int_k = 0 ; int_k < size/3; int_k++) { - outb(base_io+1,*ptr++); - outb(base_io+2,0); - outb(base_io+1,*ptr++); - outb(base_io+2,*ptr++); - } - } else { - for(int_k = 0 ; int_k < size/3; int_k++) { - outb(base_io+0,*ptr++); - outb(base_io+1,*ptr++); - outb(base_io+2,*ptr++); - } - } - } - outb(base_io+7,0x11); - outb(base_io+7,3); - - outb(base_io+4,data_0188 & 0xfb); - - outb(base_io+3,data_0187); - - return 0; -error: - printf("sio%d: DSI SoftModem microcode load failed: <%s>\n",unit,ptr); - outb(base_io+7,0x00); \ - outb(base_io+3,data_0187); \ - outb(base_io+4,data_0188); \ - return EIO; -} -#endif /* DSI_SOFT_MODEM */ /* * support PnP cards if we are using 'em |