update for new ISA & bus code, and clean a bit

This commit is contained in:
cgd 1996-04-12 02:05:14 +00:00
parent f0a062ba62
commit 26bf14c6fe
2 changed files with 46 additions and 40 deletions

View File

@ -1,4 +1,4 @@
/* $NetBSD: clock.c,v 1.7 1996/03/17 01:06:18 thorpej Exp $ */
/* $NetBSD: clock.c,v 1.8 1996/04/12 02:05:14 cgd Exp $ */
/*
* Copyright (c) 1988 University of Utah.
@ -68,11 +68,11 @@ static int clockmatch __P((struct device *, void *, void *));
static void clockattach __P((struct device *, struct device *, void *));
struct cfattach clock_ca = {
sizeof(struct clock_softc), clockmatch, clockattach
sizeof(struct clock_softc), clockmatch, clockattach,
};
struct cfdriver clock_cd = {
NULL, "clock", DV_DULL
NULL, "clock", DV_DULL,
};
#if defined(DEC_3000_500) || defined(DEC_3000_300) || \
@ -107,19 +107,24 @@ clockmatch(parent, cfdata, aux)
} else
#endif
#if NISA
if ((parent->dv_cfdata->cf_driver == &isa_cd)) {
struct isadev_attach_args *ida = aux;
{
extern struct cfdriver isa_cd;
/* XXX XXX XXX */
if (ida->ida_port[0] != 0x70 && ida->ida_port[0] != -1)
if ((parent->dv_cfdata->cf_driver == &isa_cd)) {
struct isa_attach_args *ia = aux;
if (ia->ia_iobase != 0x70 && ia->ia_iobase != -1)
return (0);
ida->ida_port[0] = 0x70; /* XXX */
ida->ida_nports[0] = 2; /* XXX */
ida->ida_iosiz[0] = 0;
ia->ia_iobase = 0x70; /* XXX */
ia->ia_iosize = 2; /* XXX */
ia->ia_msize = 0;
} else
#endif
return (0);
#if NISA
}
#endif
return (1);
}
@ -331,15 +336,3 @@ resettodr()
(*csc->sc_set)(csc, &ct);
}
/*
* Wait "n" microseconds. This doesn't belong here. XXX.
*/
delay(n)
int n;
{
register long N = cycles_per_usec * (n);
while (N > 0)
N -= 3;
}

View File

@ -1,4 +1,4 @@
/* $NetBSD: clock_mc.c,v 1.4 1995/12/20 00:38:57 cgd Exp $ */
/* $NetBSD: clock_mc.c,v 1.5 1996/04/12 02:05:18 cgd Exp $ */
/*
* Copyright (c) 1988 University of Utah.
@ -49,6 +49,7 @@
#include <machine/autoconf.h>
#include <machine/pte.h> /* XXX */
#include <machine/bus.h>
#include <alpha/alpha/clockvar.h>
#include <dev/ic/mc146818reg.h>
@ -78,8 +79,8 @@ struct mcclockdata {
void (*mc_write) __P((struct clock_softc *csc, u_int reg,
u_int datum));
u_int (*mc_read) __P((struct clock_softc *csc, u_int reg));
__const void *mc_accessfns;
void *mc_accessarg;
bus_chipset_tag_t mc_bc;
bus_io_handle_t mc_ioh;
void *mc_addr;
};
@ -119,32 +120,44 @@ mcclock_attach(parent, self, aux)
csc->sc_set = mcclock_set;
#if NIOASIC
if (parent->dv_cfdata->cf_driver == &ioasiccd) {
if (parent->dv_cfdata->cf_driver == &ioasic_cd) {
struct ioasicdev_attach_args *ioasicdev = aux;
struct mcclockdata *cdp;
/*
* XXX should really allocate a new one and copy, or
* something. unlikely we'll have more than one...
*/
csc->sc_data = &mcclockdata_tc;
mcclockdata_tc.mc_addr = (void *)ioasicdev->iada_addr;
csc->sc_data = cdp = &mcclockdata_tc;
cdp->mc_addr = (void *)ioasicdev->iada_addr;
} else
#endif
#if NISA
if (parent->dv_cfdata->cf_driver == &isacd) {
{
extern struct cfdriver isa_cd;
if (parent->dv_cfdata->cf_driver == &isa_cd) {
struct isa_attach_args *ia = aux;
struct mcclockdata *cdp;
/*
* XXX should really allocate a new one and copy, or
* something. unlikely we'll have more than one...
*/
csc->sc_data = &mcclockdata_isa;
mcclockdata_isa.mc_accessfns = ida->ida_piofns;
mcclockdata_isa.mc_accessarg = ida->ida_pioarg;
csc->sc_data = cdp = &mcclockdata_isa;
cdp->mc_bc = ia->ia_bc;
if (bus_io_map(cdp->mc_bc, ia->ia_iobase, ia->ia_iosize,
&cdp->mc_ioh))
panic("couldn't map clock I/O space");
} else
#endif
{
printf("\n");
panic("clockattach: can't tell what bus we're on");
}
#if NISA
}
#endif
/* Turn interrupts off, just in case. */
mc146818_write(csc, MC_REGB, MC_REGB_BINARY | MC_REGB_24HR);
@ -257,11 +270,11 @@ mc_write_isa(csc, reg, datum)
u_int reg, datum;
{
struct mcclockdata *cdp = csc->sc_data;
__const struct isa_pio_fns *ipf = cdp->mc_accessfns;
void *ipfa = cdp->mc_accessarg;
bus_chipset_tag_t bc = cdp->mc_bc;
bus_io_handle_t ioh = cdp->mc_ioh;
OUTB(ipf, ipfa, IO_RTC, reg);
OUTB(ipf, ipfa, IO_RTC + 1, datum);
bus_io_write_1(bc, ioh, 0, reg);
bus_io_write_1(bc, ioh, 1, datum);
}
static u_int
@ -270,10 +283,10 @@ mc_read_isa(csc, reg)
u_int reg;
{
struct mcclockdata *cdp = csc->sc_data;
__const struct isa_pio_fns *ipf = cdp->mc_accessfns;
void *ipfa = cdp->mc_accessarg;
bus_chipset_tag_t bc = cdp->mc_bc;
bus_io_handle_t ioh = cdp->mc_ioh;
OUTB(ipf, ipfa, IO_RTC, reg);
return INB(ipf, ipfa, IO_RTC + 1);
bus_io_write_1(bc, ioh, 0, reg);
return bus_io_read_1(bc, ioh, 1);
}
#endif /* NISA */