Replace long delay with sleep.
This commit is contained in:
parent
012a23a770
commit
5cb9984dd0
|
@ -1,4 +1,4 @@
|
||||||
/* $NetBSD: i82365.c,v 1.29 2000/01/25 09:14:27 enami Exp $ */
|
/* $NetBSD: i82365.c,v 1.30 2000/01/25 09:17:35 enami Exp $ */
|
||||||
|
|
||||||
#define PCICDEBUG
|
#define PCICDEBUG
|
||||||
|
|
||||||
|
@ -94,6 +94,7 @@ void pcic_queue_event __P((struct pcic_handle *, int));
|
||||||
void pcic_power __P((int, void *));
|
void pcic_power __P((int, void *));
|
||||||
|
|
||||||
static void pcic_wait_ready __P((struct pcic_handle *));
|
static void pcic_wait_ready __P((struct pcic_handle *));
|
||||||
|
static void pcic_delay __P((struct pcic_handle *, int, const char *));
|
||||||
|
|
||||||
static u_int8_t st_pcic_read __P((struct pcic_handle *, int));
|
static u_int8_t st_pcic_read __P((struct pcic_handle *, int));
|
||||||
static void st_pcic_write __P((struct pcic_handle *, int, u_int8_t));
|
static void st_pcic_write __P((struct pcic_handle *, int, u_int8_t));
|
||||||
|
@ -1312,6 +1313,34 @@ pcic_wait_ready(h)
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Perform long (msec order) delay.
|
||||||
|
*/
|
||||||
|
static void
|
||||||
|
pcic_delay(h, timo, ident)
|
||||||
|
struct pcic_handle *h;
|
||||||
|
int timo; /* in ms. must not be zero */
|
||||||
|
const char *ident;
|
||||||
|
{
|
||||||
|
|
||||||
|
#ifdef DIAGNOSTIC
|
||||||
|
if (timo <= 0) {
|
||||||
|
printf("called with timeout %d\n", timo);
|
||||||
|
panic("pcic_delay");
|
||||||
|
}
|
||||||
|
if (curproc == NULL) {
|
||||||
|
printf("called in interrupt context\n");
|
||||||
|
panic("pcic_delay");
|
||||||
|
}
|
||||||
|
if (h->event_thread == NULL) {
|
||||||
|
printf("no event thread\n");
|
||||||
|
panic("pcic_delay");
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
DPRINTF(("pcic_delay: %p, sleep %d ms\n", h->event_thread, timo));
|
||||||
|
tsleep(pcic_delay, PWAIT, ident, roundup(timo * hz, 1000) / 1000);
|
||||||
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
pcic_chip_socket_enable(pch)
|
pcic_chip_socket_enable(pch)
|
||||||
pcmcia_chipset_handle_t pch;
|
pcmcia_chipset_handle_t pch;
|
||||||
|
@ -1329,7 +1358,7 @@ pcic_chip_socket_enable(pch)
|
||||||
* wait 300ms until power fails (Tpf). Then, wait 100ms since
|
* wait 300ms until power fails (Tpf). Then, wait 100ms since
|
||||||
* we are changing Vcc (Toff).
|
* we are changing Vcc (Toff).
|
||||||
*/
|
*/
|
||||||
delay((300 + 100) * 1000);
|
pcic_delay(h, 300 + 100, "pccen0");
|
||||||
|
|
||||||
#ifdef VADEM_POWER_HACK
|
#ifdef VADEM_POWER_HACK
|
||||||
bus_space_write_1(sc->iot, sc->ioh, PCIC_REG_INDEX, 0x0e);
|
bus_space_write_1(sc->iot, sc->ioh, PCIC_REG_INDEX, 0x0e);
|
||||||
|
@ -1353,7 +1382,7 @@ pcic_chip_socket_enable(pch)
|
||||||
* some machines require some more time to be settled
|
* some machines require some more time to be settled
|
||||||
* (300ms is added here).
|
* (300ms is added here).
|
||||||
*/
|
*/
|
||||||
delay((100 + 20 + 300) * 1000);
|
pcic_delay(h, 100 + 20 + 300, "pccen1");
|
||||||
|
|
||||||
pcic_write(h, PCIC_PWRCTL, PCIC_PWRCTL_DISABLE_RESETDRV | PCIC_PWRCTL_OE
|
pcic_write(h, PCIC_PWRCTL, PCIC_PWRCTL_DISABLE_RESETDRV | PCIC_PWRCTL_OE
|
||||||
| PCIC_PWRCTL_PWR_ENABLE);
|
| PCIC_PWRCTL_PWR_ENABLE);
|
||||||
|
@ -1370,7 +1399,7 @@ pcic_chip_socket_enable(pch)
|
||||||
|
|
||||||
/* wait 20ms as per pc card standard (r2.01) section 4.3.6 */
|
/* wait 20ms as per pc card standard (r2.01) section 4.3.6 */
|
||||||
|
|
||||||
delay(20000);
|
pcic_delay(h, 20, "pccen2");
|
||||||
|
|
||||||
/* wait for the chip to finish initializing */
|
/* wait for the chip to finish initializing */
|
||||||
|
|
||||||
|
@ -1426,10 +1455,16 @@ pcic_chip_socket_disable(pch)
|
||||||
|
|
||||||
pcic_write(h, PCIC_PWRCTL, 0);
|
pcic_write(h, PCIC_PWRCTL, 0);
|
||||||
|
|
||||||
|
#if 0
|
||||||
/*
|
/*
|
||||||
|
* This constraint is kept in pcic_chip_socket_enable.
|
||||||
|
* When we enable the same card slot, we first turn off the
|
||||||
|
* power and wait enough time. So we don't need to wait here.
|
||||||
|
*
|
||||||
* wait 300ms until power fails (Tpf).
|
* wait 300ms until power fails (Tpf).
|
||||||
*/
|
*/
|
||||||
delay(300 * 1000);
|
pcic_delay(h, 300, "pcicdis");
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
static u_int8_t
|
static u_int8_t
|
||||||
|
|
Loading…
Reference in New Issue