Explicitly initialize the MFP Timer-B for delay(9) from atari_hwinit()
rather than using if(!atari_realconfig) in clockmatch(). (I doubt the latter one has actually been called..)
This commit is contained in:
parent
0745bac2ee
commit
d41c06b17d
|
@ -1,4 +1,4 @@
|
|||
/* $NetBSD: atari_init.c,v 1.81 2009/07/06 12:55:24 tsutsui Exp $ */
|
||||
/* $NetBSD: atari_init.c,v 1.82 2009/07/07 15:37:02 tsutsui Exp $ */
|
||||
|
||||
/*
|
||||
* Copyright (c) 1995 Leo Weppelman
|
||||
|
@ -33,7 +33,7 @@
|
|||
*/
|
||||
|
||||
#include <sys/cdefs.h>
|
||||
__KERNEL_RCSID(0, "$NetBSD: atari_init.c,v 1.81 2009/07/06 12:55:24 tsutsui Exp $");
|
||||
__KERNEL_RCSID(0, "$NetBSD: atari_init.c,v 1.82 2009/07/07 15:37:02 tsutsui Exp $");
|
||||
|
||||
#include "opt_ddb.h"
|
||||
#include "opt_mbtype.h"
|
||||
|
@ -74,6 +74,7 @@ __KERNEL_RCSID(0, "$NetBSD: atari_init.c,v 1.81 2009/07/06 12:55:24 tsutsui Exp
|
|||
|
||||
#include <atari/atari/intr.h>
|
||||
#include <atari/atari/stalloc.h>
|
||||
#include <atari/dev/clockvar.h>
|
||||
#include <atari/dev/ym2149reg.h>
|
||||
|
||||
#include "pci.h"
|
||||
|
@ -707,6 +708,11 @@ atari_hwinit(void)
|
|||
}
|
||||
#endif /* defined(_ATARIHW_) */
|
||||
|
||||
/*
|
||||
* Initialize a timer for delay(9).
|
||||
*/
|
||||
init_delay();
|
||||
|
||||
#if NPCI > 0
|
||||
if (machineid & (ATARI_HADES|ATARI_MILAN)) {
|
||||
/*
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/* $NetBSD: clock.c,v 1.47 2009/07/07 15:15:08 tsutsui Exp $ */
|
||||
/* $NetBSD: clock.c,v 1.48 2009/07/07 15:37:02 tsutsui Exp $ */
|
||||
|
||||
/*
|
||||
* Copyright (c) 1982, 1990 The Regents of the University of California.
|
||||
|
@ -77,7 +77,7 @@
|
|||
*/
|
||||
|
||||
#include <sys/cdefs.h>
|
||||
__KERNEL_RCSID(0, "$NetBSD: clock.c,v 1.47 2009/07/07 15:15:08 tsutsui Exp $");
|
||||
__KERNEL_RCSID(0, "$NetBSD: clock.c,v 1.48 2009/07/07 15:37:02 tsutsui Exp $");
|
||||
|
||||
#include <sys/param.h>
|
||||
#include <sys/kernel.h>
|
||||
|
@ -96,6 +96,7 @@ __KERNEL_RCSID(0, "$NetBSD: clock.c,v 1.47 2009/07/07 15:15:08 tsutsui Exp $");
|
|||
#include <machine/iomap.h>
|
||||
#include <machine/mfp.h>
|
||||
#include <atari/dev/clockreg.h>
|
||||
#include <atari/dev/clockvar.h>
|
||||
#include <atari/atari/device.h>
|
||||
|
||||
#if defined(GPROF) && defined(PROFTIMER)
|
||||
|
@ -186,21 +187,6 @@ static int clk2min; /* current, from above choices */
|
|||
int
|
||||
clockmatch(struct device *pdp, struct cfdata *cfp, void *auxp)
|
||||
{
|
||||
if (!atari_realconfig) {
|
||||
/*
|
||||
* Initialize Timer-B in the ST-MFP. This timer is used by
|
||||
* the 'delay' function below. This timer is setup to be
|
||||
* continueously counting from 255 back to zero at a
|
||||
* frequency of 614400Hz. We do this *early* in the
|
||||
* initialisation process.
|
||||
*/
|
||||
MFP->mf_tbcr = 0; /* Stop timer */
|
||||
MFP->mf_iera &= ~IA_TIMB; /* Disable timer interrupts */
|
||||
MFP->mf_tbdr = 0;
|
||||
MFP->mf_tbcr = T_Q004; /* Start timer */
|
||||
|
||||
return 0;
|
||||
}
|
||||
if(!strcmp("clock", auxp))
|
||||
return(1);
|
||||
return(0);
|
||||
|
@ -342,6 +328,23 @@ clk_getcounter(struct timecounter *tc)
|
|||
#define TIMB_FREQ 614400
|
||||
#define TIMB_LIMIT 256
|
||||
|
||||
void
|
||||
init_delay(void)
|
||||
{
|
||||
|
||||
/*
|
||||
* Initialize Timer-B in the ST-MFP. This timer is used by
|
||||
* the 'delay' function below. This timer is setup to be
|
||||
* continueously counting from 255 back to zero at a
|
||||
* frequency of 614400Hz. We do this *early* in the
|
||||
* initialisation process.
|
||||
*/
|
||||
MFP->mf_tbcr = 0; /* Stop timer */
|
||||
MFP->mf_iera &= ~IA_TIMB; /* Disable timer interrupts */
|
||||
MFP->mf_tbdr = 0;
|
||||
MFP->mf_tbcr = T_Q004; /* Start timer */
|
||||
}
|
||||
|
||||
/*
|
||||
* Wait "n" microseconds.
|
||||
* Relies on MFP-Timer B counting down from TIMB_LIMIT at TIMB_FREQ Hz.
|
||||
|
|
|
@ -0,0 +1,3 @@
|
|||
/* $NetBSD: clockvar.h,v 1.1 2009/07/07 15:37:02 tsutsui Exp $ */
|
||||
|
||||
void init_delay(void);
|
Loading…
Reference in New Issue