#include <sys/cdefs.h>
__KERNEL_RCSID(0, "$NetBSD: mcclock_ioasic.c,v 1.24 2015/06/09 20:23:53 matt Exp $");
#include <sys/param.h>
#include <sys/cpu.h>
#include <sys/device.h>
#include <sys/systm.h>
#include <dev/clock_subr.h>
#include <dev/dec/mcclockvar.h>
#include <dev/dec/mcclock_pad32.h>
#include <dev/tc/tcvar.h>
#include <dev/tc/ioasicvar.h>
static int mcclock_ioasic_match(device_t, cfdata_t, void *);
static void mcclock_ioasic_attach(device_t, device_t, void *);
CFATTACH_DECL_NEW(mcclock_ioasic, sizeof (struct mcclock_pad32_softc),
mcclock_ioasic_match, mcclock_ioasic_attach, NULL, NULL);
static int
mcclock_ioasic_match(device_t parent, cfdata_t cf, void *aux)
{
struct ioasicdev_attach_args *d = aux;
if (strcmp("mc146818", d->iada_modname) != 0)
return (0);
if (tc_badaddr(d->iada_addr))
return (0);
return (1);
}
static void
mcclock_ioasic_attach(device_t parent, device_t self, void *aux)
{
struct ioasicdev_attach_args *ioasicdev = aux;
struct mcclock_pad32_softc *sc = device_private(self);
sc->sc_mcclock.sc_dev = self;
sc->sc_dp = (struct mcclock_pad32_clockdatum *)ioasicdev->iada_addr;
mcclock_attach(&sc->sc_mcclock, &mcclock_pad32_busfns);
}