Use the right parameter to decide whether it's early configuration. (I wonder
why this worked with some configurations... it shouldn't have). While we're here, correct the 2.4% error in the delay divisor message.
This commit is contained in:
parent
ccf88919e4
commit
9ad0171cce
|
@ -1,4 +1,4 @@
|
||||||
/* $NetBSD: clock.c,v 1.24 1996/12/23 09:09:55 veego Exp $ */
|
/* $NetBSD: clock.c,v 1.25 1997/01/02 20:59:42 is Exp $ */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 1988 University of Utah.
|
* Copyright (c) 1988 University of Utah.
|
||||||
|
@ -143,7 +143,7 @@ clockattach(pdp, dp, auxp)
|
||||||
clockchip = "CIA B";
|
clockchip = "CIA B";
|
||||||
}
|
}
|
||||||
|
|
||||||
if (pdp)
|
if (dp)
|
||||||
printf(": %s system hz %d hardware hz %d\n", clockchip, hz,
|
printf(": %s system hz %d hardware hz %d\n", clockchip, hz,
|
||||||
#ifdef DRACO
|
#ifdef DRACO
|
||||||
dracorev >= 4 ? eclockfreq / 7 : eclockfreq);
|
dracorev >= 4 ? eclockfreq / 7 : eclockfreq);
|
||||||
|
@ -161,7 +161,7 @@ clockattach(pdp, dp, auxp)
|
||||||
draco_ioct->io_timerlo = CLK_INTERVAL & 0xff;
|
draco_ioct->io_timerlo = CLK_INTERVAL & 0xff;
|
||||||
draco_ioct->io_timerhi = CLK_INTERVAL >> 8;
|
draco_ioct->io_timerhi = CLK_INTERVAL >> 8;
|
||||||
|
|
||||||
calibrate_delay(pdp);
|
calibrate_delay(dp);
|
||||||
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@ -190,7 +190,7 @@ clockattach(pdp, dp, auxp)
|
||||||
*/
|
*/
|
||||||
clockcia->cra = (clockcia->cra & 0xc0) | 1;
|
clockcia->cra = (clockcia->cra & 0xc0) | 1;
|
||||||
|
|
||||||
calibrate_delay(pdp);
|
calibrate_delay(dp);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -205,14 +205,14 @@ clockattach(pdp, dp, auxp)
|
||||||
* off by 2.4%
|
* off by 2.4%
|
||||||
*/
|
*/
|
||||||
|
|
||||||
void calibrate_delay(pdp)
|
void calibrate_delay(dp)
|
||||||
struct device *pdp;
|
struct device *dp;
|
||||||
{
|
{
|
||||||
unsigned long t1, t2;
|
unsigned long t1, t2;
|
||||||
extern u_int32_t delaydivisor;
|
extern u_int32_t delaydivisor;
|
||||||
/* XXX this should be defined elsewhere */
|
/* XXX this should be defined elsewhere */
|
||||||
|
|
||||||
if (pdp)
|
if (dp)
|
||||||
printf("Calibrating delay loop... ");
|
printf("Calibrating delay loop... ");
|
||||||
|
|
||||||
do {
|
do {
|
||||||
|
@ -223,8 +223,9 @@ void calibrate_delay(pdp)
|
||||||
t2 -= t1;
|
t2 -= t1;
|
||||||
delaydivisor = (delaydivisor * t2 + 1023) >> 10;
|
delaydivisor = (delaydivisor * t2 + 1023) >> 10;
|
||||||
#ifdef DIAGNOSTIC
|
#ifdef DIAGNOSTIC
|
||||||
if (pdp)
|
if (dp)
|
||||||
printf("\ndiff %ld us, new divisor %u ns\n", t2, delaydivisor);
|
printf("\ndiff %ld us, new divisor %u/1024 us\n", t2,
|
||||||
|
delaydivisor);
|
||||||
do {
|
do {
|
||||||
t1 = clkread();
|
t1 = clkread();
|
||||||
delay(1024);
|
delay(1024);
|
||||||
|
@ -232,8 +233,9 @@ void calibrate_delay(pdp)
|
||||||
} while (t2 <= t1);
|
} while (t2 <= t1);
|
||||||
t2 -= t1;
|
t2 -= t1;
|
||||||
delaydivisor = (delaydivisor * t2 + 1023) >> 10;
|
delaydivisor = (delaydivisor * t2 + 1023) >> 10;
|
||||||
if (pdp)
|
if (dp)
|
||||||
printf("diff %ld us, new divisor %u ns\n", t2, delaydivisor);
|
printf("diff %ld us, new divisor %u/1024 us\n", t2,
|
||||||
|
delaydivisor);
|
||||||
#endif
|
#endif
|
||||||
do {
|
do {
|
||||||
t1 = clkread();
|
t1 = clkread();
|
||||||
|
@ -243,11 +245,11 @@ void calibrate_delay(pdp)
|
||||||
t2 -= t1;
|
t2 -= t1;
|
||||||
delaydivisor = (delaydivisor * t2 + 1023) >> 10;
|
delaydivisor = (delaydivisor * t2 + 1023) >> 10;
|
||||||
#ifdef DIAGNOSTIC
|
#ifdef DIAGNOSTIC
|
||||||
if (pdp)
|
if (dp)
|
||||||
printf("diff %ld us, new divisor ", t2);
|
printf("diff %ld us, new divisor ", t2);
|
||||||
#endif
|
#endif
|
||||||
if (pdp)
|
if (dp)
|
||||||
printf("%u ns\n", delaydivisor);
|
printf("%u/1024 us\n", delaydivisor);
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
|
|
Loading…
Reference in New Issue