Support for the upcoming NetBSD/Amiga Hypercom driver family:
* support chip clocks != COM_FREQ, by introducing sc_frequency (for the mainline code) and adding a frequency parameter right after the rate parameter to comcnattach() and com_kgdb_attach(). - Make com_isa and com_multi initialize sc_frequency to COM_FREQ. - Make i386/machdep.c and alpha/dec_xxx.c call com*attach() with the freq. parameter. * supio_attach_args get two more fields: a sc_ipl and a sc_arg, both ints. - com_supio uses the first for interupt establishment (all childs will, as soon as they exist) and the 2nd for sc_frequency. - drsupio passes sc_ipl alway as 5, and for the "com"s, sc_arg as 16*115200 - hyper will pass sc_ipl as 6, and sc_arg as 16 * 460800
This commit is contained in:
parent
d1b4b49231
commit
718fb97e11
|
@ -1,4 +1,4 @@
|
|||
/* $NetBSD: dec_2100_a50.c,v 1.32 1997/09/02 20:43:07 thorpej Exp $ */
|
||||
/* $NetBSD: dec_2100_a50.c,v 1.33 1997/09/16 20:34:41 is Exp $ */
|
||||
|
||||
/*
|
||||
* Copyright (c) 1995, 1996, 1997 Carnegie-Mellon University.
|
||||
|
@ -29,7 +29,7 @@
|
|||
|
||||
#include <sys/cdefs.h> /* RCS ID & Copyright macro defns */
|
||||
|
||||
__KERNEL_RCSID(0, "$NetBSD: dec_2100_a50.c,v 1.32 1997/09/02 20:43:07 thorpej Exp $");
|
||||
__KERNEL_RCSID(0, "$NetBSD: dec_2100_a50.c,v 1.33 1997/09/16 20:34:41 is Exp $");
|
||||
|
||||
#include <sys/param.h>
|
||||
#include <sys/systm.h>
|
||||
|
@ -116,7 +116,8 @@ dec_2100_a50_cons_init()
|
|||
DELAY(160000000 / comcnrate);
|
||||
|
||||
if(comcnattach(&acp->ac_iot, 0x3f8, comcnrate,
|
||||
(TTYDEF_CFLAG & ~(CSIZE | PARENB)) | CS8))
|
||||
COM_FREQ,
|
||||
(TTYDEF_CFLAG & ~(CSIZE | PARENB)) | CS8))
|
||||
panic("can't init serial console");
|
||||
|
||||
break;
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/* $NetBSD: dec_axppci_33.c,v 1.30 1997/09/02 20:43:09 thorpej Exp $ */
|
||||
/* $NetBSD: dec_axppci_33.c,v 1.31 1997/09/16 20:34:42 is Exp $ */
|
||||
|
||||
/*
|
||||
* Copyright (c) 1995, 1996, 1997 Carnegie-Mellon University.
|
||||
|
@ -29,7 +29,7 @@
|
|||
|
||||
#include <sys/cdefs.h> /* RCS ID & Copyright macro defns */
|
||||
|
||||
__KERNEL_RCSID(0, "$NetBSD: dec_axppci_33.c,v 1.30 1997/09/02 20:43:09 thorpej Exp $");
|
||||
__KERNEL_RCSID(0, "$NetBSD: dec_axppci_33.c,v 1.31 1997/09/16 20:34:42 is Exp $");
|
||||
|
||||
#include <sys/param.h>
|
||||
#include <sys/systm.h>
|
||||
|
@ -99,7 +99,8 @@ dec_axppci_33_cons_init()
|
|||
DELAY(160000000 / comcnrate);
|
||||
|
||||
if(comcnattach(&lcp->lc_iot, 0x3f8, comcnrate,
|
||||
(TTYDEF_CFLAG & ~(CSIZE | PARENB)) | CS8))
|
||||
COM_FREQ,
|
||||
(TTYDEF_CFLAG & ~(CSIZE | PARENB)) | CS8))
|
||||
panic("can't init serial console");
|
||||
|
||||
break;
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/* $NetBSD: dec_eb164.c,v 1.18 1997/09/02 20:43:10 thorpej Exp $ */
|
||||
/* $NetBSD: dec_eb164.c,v 1.19 1997/09/16 20:34:43 is Exp $ */
|
||||
|
||||
/*
|
||||
* Copyright (c) 1995, 1996, 1997 Carnegie-Mellon University.
|
||||
|
@ -29,7 +29,7 @@
|
|||
|
||||
#include <sys/cdefs.h> /* RCS ID & Copyright macro defns */
|
||||
|
||||
__KERNEL_RCSID(0, "$NetBSD: dec_eb164.c,v 1.18 1997/09/02 20:43:10 thorpej Exp $");
|
||||
__KERNEL_RCSID(0, "$NetBSD: dec_eb164.c,v 1.19 1997/09/16 20:34:43 is Exp $");
|
||||
|
||||
#include <sys/param.h>
|
||||
#include <sys/systm.h>
|
||||
|
@ -96,7 +96,8 @@ dec_eb164_cons_init()
|
|||
DELAY(160000000 / comcnrate);
|
||||
|
||||
if(comcnattach(&ccp->cc_iot, 0x3f8, comcnrate,
|
||||
(TTYDEF_CFLAG & ~(CSIZE | PARENB)) | CS8))
|
||||
COM_FREQ,
|
||||
(TTYDEF_CFLAG & ~(CSIZE | PARENB)) | CS8))
|
||||
panic("can't init serial console");
|
||||
|
||||
break;
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/* $NetBSD: dec_eb64plus.c,v 1.7 1997/09/02 20:43:11 thorpej Exp $ */
|
||||
/* $NetBSD: dec_eb64plus.c,v 1.8 1997/09/16 20:34:45 is Exp $ */
|
||||
|
||||
/*
|
||||
* Copyright (c) 1995, 1996, 1997 Carnegie-Mellon University.
|
||||
|
@ -29,7 +29,7 @@
|
|||
|
||||
#include <sys/cdefs.h> /* RCS ID & Copyright macro defns */
|
||||
|
||||
__KERNEL_RCSID(0, "$NetBSD: dec_eb64plus.c,v 1.7 1997/09/02 20:43:11 thorpej Exp $");
|
||||
__KERNEL_RCSID(0, "$NetBSD: dec_eb64plus.c,v 1.8 1997/09/16 20:34:45 is Exp $");
|
||||
|
||||
#include <sys/param.h>
|
||||
#include <sys/systm.h>
|
||||
|
@ -96,7 +96,8 @@ dec_eb64plus_cons_init()
|
|||
DELAY(160000000 / comcnrate);
|
||||
|
||||
if(comcnattach(&acp->ac_iot, 0x3f8, comcnrate,
|
||||
(TTYDEF_CFLAG & ~(CSIZE | PARENB)) | CS8))
|
||||
COM_FREQ,
|
||||
(TTYDEF_CFLAG & ~(CSIZE | PARENB)) | CS8))
|
||||
panic("can't init serial console");
|
||||
|
||||
break;
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/* $NetBSD: dec_kn20aa.c,v 1.31 1997/09/13 10:09:39 thorpej Exp $ */
|
||||
/* $NetBSD: dec_kn20aa.c,v 1.32 1997/09/16 20:34:46 is Exp $ */
|
||||
|
||||
/*
|
||||
* Copyright (c) 1995, 1996, 1997 Carnegie-Mellon University.
|
||||
|
@ -29,7 +29,7 @@
|
|||
|
||||
#include <sys/cdefs.h> /* RCS ID & Copyright macro defns */
|
||||
|
||||
__KERNEL_RCSID(0, "$NetBSD: dec_kn20aa.c,v 1.31 1997/09/13 10:09:39 thorpej Exp $");
|
||||
__KERNEL_RCSID(0, "$NetBSD: dec_kn20aa.c,v 1.32 1997/09/16 20:34:46 is Exp $");
|
||||
|
||||
#include <sys/param.h>
|
||||
#include <sys/systm.h>
|
||||
|
@ -99,7 +99,8 @@ dec_kn20aa_cons_init()
|
|||
DELAY(160000000 / comcnrate);
|
||||
|
||||
if(comcnattach(&ccp->cc_iot, 0x3f8, comcnrate,
|
||||
(TTYDEF_CFLAG & ~(CSIZE | PARENB)) | CS8))
|
||||
COM_FREQ,
|
||||
(TTYDEF_CFLAG & ~(CSIZE | PARENB)) | CS8))
|
||||
panic("can't init serial console");
|
||||
|
||||
break;
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/* $NetBSD: com_supio.c,v 1.3 1997/08/27 20:41:30 is Exp $ */
|
||||
/* $NetBSD: com_supio.c,v 1.4 1997/09/16 20:34:36 is Exp $ */
|
||||
|
||||
/*-
|
||||
* Copyright (c) 1993, 1994, 1995, 1996
|
||||
|
@ -97,7 +97,7 @@ com_supio_match(parent, match, aux)
|
|||
iot = supa->supio_iot;
|
||||
iobase = supa->supio_iobase;
|
||||
|
||||
if (strcmp(supa->supio_name,"com") || (match->cf_unit > 1))
|
||||
if (strcmp(supa->supio_name,"com"))
|
||||
return 0;
|
||||
#if 0
|
||||
/* if it's in use as console, it's there. */
|
||||
|
@ -122,6 +122,7 @@ com_supio_attach(parent, self, aux)
|
|||
int iobase;
|
||||
bus_space_tag_t iot;
|
||||
struct supio_attach_args *supa = aux;
|
||||
u_int16_t needpsl;
|
||||
|
||||
/*
|
||||
* We're living on a superio chip.
|
||||
|
@ -134,17 +135,22 @@ com_supio_attach(parent, self, aux)
|
|||
} else
|
||||
csc->sc_ioh = comconsioh;
|
||||
|
||||
csc->sc_frequency = supa->supio_arg;
|
||||
|
||||
printf(" port 0x%x", iobase);
|
||||
com_attach_subr(csc);
|
||||
|
||||
if (amiga_ttyspl < (PSL_S|PSL_IPL5)) {
|
||||
/* XXX this should be really in the interupt stuff */
|
||||
needpsl = PSL_S | (supa->supio_ipl << 8);
|
||||
|
||||
if (amiga_ttyspl < needpsl) {
|
||||
printf("%s: raising amiga_ttyspl from 0x%x to 0x%x\n",
|
||||
csc->sc_dev.dv_xname, amiga_ttyspl, PSL_S|PSL_IPL5);
|
||||
amiga_ttyspl = PSL_S|PSL_IPL5;
|
||||
csc->sc_dev.dv_xname, amiga_ttyspl, needpsl);
|
||||
amiga_ttyspl = needpsl;
|
||||
}
|
||||
sc->sc_isr.isr_intr = comintr;
|
||||
sc->sc_isr.isr_arg = csc;
|
||||
sc->sc_isr.isr_ipl = 5;
|
||||
sc->sc_isr.isr_ipl = supa->supio_ipl;
|
||||
add_isr(&sc->sc_isr);
|
||||
|
||||
/*
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/* $NetBSD: drsupio.c,v 1.1 1997/08/27 19:32:53 is Exp $ */
|
||||
/* $NetBSD: drsupio.c,v 1.2 1997/09/16 20:34:38 is Exp $ */
|
||||
|
||||
/*
|
||||
* Copyright (c) 1997 Ignatios Souvatzis
|
||||
|
@ -88,11 +88,12 @@ drsupiomatch(parent, cfp, auxp)
|
|||
struct drsupio_devs {
|
||||
char *name;
|
||||
int off;
|
||||
int arg;
|
||||
} drsupiodevs[] = {
|
||||
{ "com", 0x3f8 },
|
||||
{ "com", 0x2f8 },
|
||||
{ "lpt", 0x378 },
|
||||
{ "fdc", 0x3f0 },
|
||||
{ "com", 0x3f8, 115200 * 16 },
|
||||
{ "com", 0x2f8, 115200 * 16 },
|
||||
{ "lpt", 0x378, 0 },
|
||||
{ "fdc", 0x3f0, 0 },
|
||||
/* WD port? */
|
||||
{ 0 }
|
||||
};
|
||||
|
@ -116,10 +117,12 @@ drsupioattach(parent, self, auxp)
|
|||
drsc->sc_bst.stride = 2;
|
||||
|
||||
supa.supio_iot = &drsc->sc_bst;
|
||||
supa.supio_ipl = 5;
|
||||
|
||||
while (drsd->name) {
|
||||
supa.supio_name = drsd->name;
|
||||
supa.supio_iobase = drsd->off;
|
||||
supa.supio_arg = drsd->arg;
|
||||
config_found(self, &supa, drsupprint); /* XXX */
|
||||
++drsd;
|
||||
}
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/* $NetBSD: supio.h,v 1.1 1997/08/27 19:32:52 is Exp $ */
|
||||
/* $NetBSD: supio.h,v 1.2 1997/09/16 20:34:39 is Exp $ */
|
||||
|
||||
/*
|
||||
* Copyright (c) 1997 Ignatios Souvatzis
|
||||
|
@ -39,4 +39,6 @@ struct supio_attach_args {
|
|||
bus_space_tag_t supio_iot;
|
||||
char *supio_name;
|
||||
int supio_iobase;
|
||||
int supio_ipl;
|
||||
int supio_arg;
|
||||
};
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/* $NetBSD: machdep.c,v 1.252 1997/09/12 05:01:09 mycroft Exp $ */
|
||||
/* $NetBSD: machdep.c,v 1.253 1997/09/16 20:34:34 is Exp $ */
|
||||
|
||||
/*-
|
||||
* Copyright (c) 1996, 1997 The NetBSD Foundation, Inc.
|
||||
|
@ -1750,7 +1750,7 @@ consinit()
|
|||
comcnrate = CONSPEED;
|
||||
comcnmode = CONMODE;
|
||||
|
||||
if(comcnattach(tag, comcnaddr, comcnrate, comcnmode))
|
||||
if(comcnattach(tag, comcnaddr, comcnrate, COM_FREQ, comcnmode))
|
||||
panic("can't init serial console @%x", comcnaddr);
|
||||
|
||||
return;
|
||||
|
@ -1771,7 +1771,8 @@ kgdb_port_init()
|
|||
comkgdbrate = KGDBRATE;
|
||||
comkgdbmode = KGDBMODE;
|
||||
|
||||
com_kgdb_attach(tag, comkgdbaddr, comkgdbrate, comkgdbmode);
|
||||
com_kgdb_attach(tag, comkgdbaddr, comkgdbrate, COM_FREQ,
|
||||
comkgdbmode);
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/* $NetBSD: com.c,v 1.108 1997/08/27 18:00:13 is Exp $ */
|
||||
/* $NetBSD: com.c,v 1.109 1997/09/16 20:34:23 is Exp $ */
|
||||
|
||||
/*-
|
||||
* Copyright (c) 1993, 1994, 1995, 1996, 1997
|
||||
|
@ -109,7 +109,7 @@ static void com_enable_debugport __P((struct com_softc *));
|
|||
#endif
|
||||
void com_attach_subr __P((struct com_softc *sc));
|
||||
void comdiag __P((void *));
|
||||
int comspeed __P((long));
|
||||
int comspeed __P((long, long));
|
||||
static u_char cflag2lcr __P((tcflag_t));
|
||||
int comparam __P((struct tty *, struct termios *));
|
||||
void comstart __P((struct tty *));
|
||||
|
@ -180,8 +180,8 @@ void com_kgdb_putc __P((void *, int));
|
|||
#define COMUNIT(x) (minor(x))
|
||||
|
||||
int
|
||||
comspeed(speed)
|
||||
long speed;
|
||||
comspeed(speed, frequency)
|
||||
long speed, frequency;
|
||||
{
|
||||
#define divrnd(n, q) (((n)*2/(q)+1)/2) /* divide and round off */
|
||||
|
||||
|
@ -193,10 +193,10 @@ comspeed(speed)
|
|||
#endif
|
||||
if (speed <= 0)
|
||||
return (-1);
|
||||
x = divrnd((COM_FREQ / 16), speed);
|
||||
x = divrnd(frequency / 16, speed);
|
||||
if (x <= 0)
|
||||
return (-1);
|
||||
err = divrnd((COM_FREQ / 16) * 1000, speed * x) - 1000;
|
||||
err = divrnd(frequency * 1000 / 16, speed * x) - 1000;
|
||||
if (err < 0)
|
||||
err = -err;
|
||||
if (err > COM_TOLERANCE)
|
||||
|
@ -847,7 +847,7 @@ comparam(tp, t)
|
|||
struct termios *t;
|
||||
{
|
||||
struct com_softc *sc = com_cd.cd_devs[COMUNIT(tp->t_dev)];
|
||||
int ospeed = comspeed(t->c_ospeed);
|
||||
int ospeed = comspeed(t->c_ospeed, sc->sc_frequency);
|
||||
u_char lcr;
|
||||
int s;
|
||||
|
||||
|
@ -1613,10 +1613,10 @@ com_common_putc(iot, ioh, c)
|
|||
* Initialize UART to known state.
|
||||
*/
|
||||
int
|
||||
cominit(iot, iobase, rate, cflag, iohp)
|
||||
cominit(iot, iobase, rate, frequency, cflag, iohp)
|
||||
bus_space_tag_t iot;
|
||||
int iobase;
|
||||
int rate;
|
||||
int rate, frequency;
|
||||
tcflag_t cflag;
|
||||
bus_space_handle_t *iohp;
|
||||
{
|
||||
|
@ -1626,7 +1626,7 @@ cominit(iot, iobase, rate, cflag, iohp)
|
|||
return(ENOMEM); /* ??? */
|
||||
|
||||
bus_space_write_1(iot, ioh, com_lcr, LCR_DLAB);
|
||||
rate = comspeed(rate);
|
||||
rate = comspeed(rate, frequency);
|
||||
bus_space_write_1(iot, ioh, com_dlbl, rate);
|
||||
bus_space_write_1(iot, ioh, com_dlbh, rate >> 8);
|
||||
bus_space_write_1(iot, ioh, com_lcr, cflag2lcr(cflag));
|
||||
|
@ -1644,17 +1644,17 @@ cominit(iot, iobase, rate, cflag, iohp)
|
|||
*/
|
||||
|
||||
int
|
||||
comcnattach(iot, iobase, rate, cflag)
|
||||
comcnattach(iot, iobase, rate, frequency, cflag)
|
||||
bus_space_tag_t iot;
|
||||
int iobase;
|
||||
int rate;
|
||||
int rate, frequency;
|
||||
tcflag_t cflag;
|
||||
{
|
||||
int res;
|
||||
static struct consdev comcons = { NULL, NULL,
|
||||
comcngetc, comcnputc, comcnpollc, NODEV, CN_NORMAL};
|
||||
|
||||
res = cominit(iot, iobase, rate, cflag, &comconsioh);
|
||||
res = cominit(iot, iobase, rate, frequency, cflag, &comconsioh);
|
||||
if(res) return(res);
|
||||
|
||||
cn_tab = &comcons;
|
||||
|
@ -1697,7 +1697,7 @@ comcnpollc(dev, on)
|
|||
|
||||
#ifdef KGDB
|
||||
int
|
||||
com_kgdb_attach(iot, iobase, rate, cflag)
|
||||
com_kgdb_attach(iot, iobase, rate, frequency, cflag)
|
||||
bus_space_tag_t iot;
|
||||
int iobase;
|
||||
int rate;
|
||||
|
@ -1708,7 +1708,7 @@ com_kgdb_attach(iot, iobase, rate, cflag)
|
|||
if (iot == comconstag && iobase == comconsaddr)
|
||||
return(EBUSY); /* cannot share with console */
|
||||
|
||||
res = cominit(iot, iobase, rate, cflag, &com_kgdb_ioh);
|
||||
res = cominit(iot, iobase, rate, frequency, cflag, &com_kgdb_ioh);
|
||||
if(res) return(res);
|
||||
|
||||
kgdb_attach(com_kgdb_getc, com_kgdb_putc, NULL);
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/* $NetBSD: comvar.h,v 1.14 1997/08/23 14:01:34 drochner Exp $ */
|
||||
/* $NetBSD: comvar.h,v 1.15 1997/09/16 20:34:29 is Exp $ */
|
||||
|
||||
/*
|
||||
* Copyright (c) 1996 Christopher G. Demetriou. All rights reserved.
|
||||
|
@ -30,10 +30,10 @@
|
|||
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*/
|
||||
|
||||
int comcnattach __P((bus_space_tag_t, int, int, tcflag_t));
|
||||
int comcnattach __P((bus_space_tag_t, int, int, int, tcflag_t));
|
||||
|
||||
#ifdef KGDB
|
||||
int com_kgdb_attach __P((bus_space_tag_t, int, int, tcflag_t));
|
||||
int com_kgdb_attach __P((bus_space_tag_t, int, int, int, tcflag_t));
|
||||
#endif
|
||||
|
||||
int com_is_console __P((bus_space_tag_t, int, bus_space_handle_t *));
|
||||
|
@ -62,6 +62,7 @@ struct com_softc {
|
|||
int sc_errors;
|
||||
|
||||
int sc_iobase;
|
||||
int sc_frequency;
|
||||
|
||||
bus_space_tag_t sc_iot;
|
||||
bus_space_handle_t sc_ioh;
|
||||
|
@ -110,7 +111,8 @@ struct com_softc {
|
|||
int comprobe1 __P((bus_space_tag_t, bus_space_handle_t, int));
|
||||
int comintr __P((void *));
|
||||
void com_attach_subr __P((struct com_softc *));
|
||||
int cominit __P((bus_space_tag_t, int, int, tcflag_t, bus_space_handle_t *));
|
||||
int cominit __P((bus_space_tag_t, int, int, int, tcflag_t,
|
||||
bus_space_handle_t *));
|
||||
|
||||
#ifndef __GENERIC_SOFT_INTERRUPTS
|
||||
#ifdef alpha
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/* $NetBSD: com.c,v 1.108 1997/08/27 18:00:13 is Exp $ */
|
||||
/* $NetBSD: com.c,v 1.109 1997/09/16 20:34:23 is Exp $ */
|
||||
|
||||
/*-
|
||||
* Copyright (c) 1993, 1994, 1995, 1996, 1997
|
||||
|
@ -109,7 +109,7 @@ static void com_enable_debugport __P((struct com_softc *));
|
|||
#endif
|
||||
void com_attach_subr __P((struct com_softc *sc));
|
||||
void comdiag __P((void *));
|
||||
int comspeed __P((long));
|
||||
int comspeed __P((long, long));
|
||||
static u_char cflag2lcr __P((tcflag_t));
|
||||
int comparam __P((struct tty *, struct termios *));
|
||||
void comstart __P((struct tty *));
|
||||
|
@ -180,8 +180,8 @@ void com_kgdb_putc __P((void *, int));
|
|||
#define COMUNIT(x) (minor(x))
|
||||
|
||||
int
|
||||
comspeed(speed)
|
||||
long speed;
|
||||
comspeed(speed, frequency)
|
||||
long speed, frequency;
|
||||
{
|
||||
#define divrnd(n, q) (((n)*2/(q)+1)/2) /* divide and round off */
|
||||
|
||||
|
@ -193,10 +193,10 @@ comspeed(speed)
|
|||
#endif
|
||||
if (speed <= 0)
|
||||
return (-1);
|
||||
x = divrnd((COM_FREQ / 16), speed);
|
||||
x = divrnd(frequency / 16, speed);
|
||||
if (x <= 0)
|
||||
return (-1);
|
||||
err = divrnd((COM_FREQ / 16) * 1000, speed * x) - 1000;
|
||||
err = divrnd(frequency * 1000 / 16, speed * x) - 1000;
|
||||
if (err < 0)
|
||||
err = -err;
|
||||
if (err > COM_TOLERANCE)
|
||||
|
@ -847,7 +847,7 @@ comparam(tp, t)
|
|||
struct termios *t;
|
||||
{
|
||||
struct com_softc *sc = com_cd.cd_devs[COMUNIT(tp->t_dev)];
|
||||
int ospeed = comspeed(t->c_ospeed);
|
||||
int ospeed = comspeed(t->c_ospeed, sc->sc_frequency);
|
||||
u_char lcr;
|
||||
int s;
|
||||
|
||||
|
@ -1613,10 +1613,10 @@ com_common_putc(iot, ioh, c)
|
|||
* Initialize UART to known state.
|
||||
*/
|
||||
int
|
||||
cominit(iot, iobase, rate, cflag, iohp)
|
||||
cominit(iot, iobase, rate, frequency, cflag, iohp)
|
||||
bus_space_tag_t iot;
|
||||
int iobase;
|
||||
int rate;
|
||||
int rate, frequency;
|
||||
tcflag_t cflag;
|
||||
bus_space_handle_t *iohp;
|
||||
{
|
||||
|
@ -1626,7 +1626,7 @@ cominit(iot, iobase, rate, cflag, iohp)
|
|||
return(ENOMEM); /* ??? */
|
||||
|
||||
bus_space_write_1(iot, ioh, com_lcr, LCR_DLAB);
|
||||
rate = comspeed(rate);
|
||||
rate = comspeed(rate, frequency);
|
||||
bus_space_write_1(iot, ioh, com_dlbl, rate);
|
||||
bus_space_write_1(iot, ioh, com_dlbh, rate >> 8);
|
||||
bus_space_write_1(iot, ioh, com_lcr, cflag2lcr(cflag));
|
||||
|
@ -1644,17 +1644,17 @@ cominit(iot, iobase, rate, cflag, iohp)
|
|||
*/
|
||||
|
||||
int
|
||||
comcnattach(iot, iobase, rate, cflag)
|
||||
comcnattach(iot, iobase, rate, frequency, cflag)
|
||||
bus_space_tag_t iot;
|
||||
int iobase;
|
||||
int rate;
|
||||
int rate, frequency;
|
||||
tcflag_t cflag;
|
||||
{
|
||||
int res;
|
||||
static struct consdev comcons = { NULL, NULL,
|
||||
comcngetc, comcnputc, comcnpollc, NODEV, CN_NORMAL};
|
||||
|
||||
res = cominit(iot, iobase, rate, cflag, &comconsioh);
|
||||
res = cominit(iot, iobase, rate, frequency, cflag, &comconsioh);
|
||||
if(res) return(res);
|
||||
|
||||
cn_tab = &comcons;
|
||||
|
@ -1697,7 +1697,7 @@ comcnpollc(dev, on)
|
|||
|
||||
#ifdef KGDB
|
||||
int
|
||||
com_kgdb_attach(iot, iobase, rate, cflag)
|
||||
com_kgdb_attach(iot, iobase, rate, frequency, cflag)
|
||||
bus_space_tag_t iot;
|
||||
int iobase;
|
||||
int rate;
|
||||
|
@ -1708,7 +1708,7 @@ com_kgdb_attach(iot, iobase, rate, cflag)
|
|||
if (iot == comconstag && iobase == comconsaddr)
|
||||
return(EBUSY); /* cannot share with console */
|
||||
|
||||
res = cominit(iot, iobase, rate, cflag, &com_kgdb_ioh);
|
||||
res = cominit(iot, iobase, rate, frequency, cflag, &com_kgdb_ioh);
|
||||
if(res) return(res);
|
||||
|
||||
kgdb_attach(com_kgdb_getc, com_kgdb_putc, NULL);
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/* $NetBSD: com_isa.c,v 1.5 1997/08/23 14:03:54 drochner Exp $ */
|
||||
/* $NetBSD: com_isa.c,v 1.6 1997/09/16 20:34:25 is Exp $ */
|
||||
|
||||
/*-
|
||||
* Copyright (c) 1993, 1994, 1995, 1996
|
||||
|
@ -124,6 +124,8 @@ com_isa_attach(parent, self, aux)
|
|||
if(!com_is_console(iot, iobase, &sc->sc_ioh)
|
||||
&& bus_space_map(iot, iobase, COM_NPORTS, 0, &sc->sc_ioh))
|
||||
panic("comattach: io mapping failed");
|
||||
|
||||
sc->sc_frequency = COM_FREQ;
|
||||
irq = ia->ia_irq;
|
||||
|
||||
com_attach_subr(sc);
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/* $NetBSD: com_multi.c,v 1.5 1997/08/23 14:03:55 drochner Exp $ */
|
||||
/* $NetBSD: com_multi.c,v 1.6 1997/09/16 20:34:28 is Exp $ */
|
||||
|
||||
/*-
|
||||
* Copyright (c) 1993, 1994, 1995, 1996
|
||||
|
@ -106,6 +106,7 @@ com_multi_attach(parent, self, aux)
|
|||
sc->sc_iot = ca->ca_iot;
|
||||
sc->sc_ioh = ca->ca_ioh;
|
||||
sc->sc_iobase = ca->ca_iobase;
|
||||
sc->sc_frequency = 115200 * 16;
|
||||
|
||||
if (ca->ca_noien)
|
||||
sc->sc_hwflags |= COM_HW_NOIEN;
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/* $NetBSD: comvar.h,v 1.14 1997/08/23 14:01:34 drochner Exp $ */
|
||||
/* $NetBSD: comvar.h,v 1.15 1997/09/16 20:34:29 is Exp $ */
|
||||
|
||||
/*
|
||||
* Copyright (c) 1996 Christopher G. Demetriou. All rights reserved.
|
||||
|
@ -30,10 +30,10 @@
|
|||
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*/
|
||||
|
||||
int comcnattach __P((bus_space_tag_t, int, int, tcflag_t));
|
||||
int comcnattach __P((bus_space_tag_t, int, int, int, tcflag_t));
|
||||
|
||||
#ifdef KGDB
|
||||
int com_kgdb_attach __P((bus_space_tag_t, int, int, tcflag_t));
|
||||
int com_kgdb_attach __P((bus_space_tag_t, int, int, int, tcflag_t));
|
||||
#endif
|
||||
|
||||
int com_is_console __P((bus_space_tag_t, int, bus_space_handle_t *));
|
||||
|
@ -62,6 +62,7 @@ struct com_softc {
|
|||
int sc_errors;
|
||||
|
||||
int sc_iobase;
|
||||
int sc_frequency;
|
||||
|
||||
bus_space_tag_t sc_iot;
|
||||
bus_space_handle_t sc_ioh;
|
||||
|
@ -110,7 +111,8 @@ struct com_softc {
|
|||
int comprobe1 __P((bus_space_tag_t, bus_space_handle_t, int));
|
||||
int comintr __P((void *));
|
||||
void com_attach_subr __P((struct com_softc *));
|
||||
int cominit __P((bus_space_tag_t, int, int, tcflag_t, bus_space_handle_t *));
|
||||
int cominit __P((bus_space_tag_t, int, int, int, tcflag_t,
|
||||
bus_space_handle_t *));
|
||||
|
||||
#ifndef __GENERIC_SOFT_INTERRUPTS
|
||||
#ifdef alpha
|
||||
|
|
Loading…
Reference in New Issue