diff options
| author | Brooks Davis <brooks@FreeBSD.org> | 2013-10-18 15:27:11 +0000 |
|---|---|---|
| committer | Brooks Davis <brooks@FreeBSD.org> | 2013-10-18 15:27:11 +0000 |
| commit | e908804339e365058f8b06216fbbd24f8336f418 (patch) | |
| tree | ceded70779d1ac03caec5c4bb104adec76f6c315 /sys/dev/altera | |
| parent | 1818891c93946e1d95f0fd019cff4d75749a05b9 (diff) | |
Notes
Diffstat (limited to 'sys/dev/altera')
| -rw-r--r-- | sys/dev/altera/sdcard/altera_sdcard.c | 18 |
1 files changed, 14 insertions, 4 deletions
diff --git a/sys/dev/altera/sdcard/altera_sdcard.c b/sys/dev/altera/sdcard/altera_sdcard.c index f64b9c51ab95..45088451bc33 100644 --- a/sys/dev/altera/sdcard/altera_sdcard.c +++ b/sys/dev/altera/sdcard/altera_sdcard.c @@ -31,6 +31,8 @@ #include <sys/cdefs.h> __FBSDID("$FreeBSD$"); +#include "opt_altera_sdcard.h" + #include <sys/param.h> #include <sys/bus.h> #include <sys/condvar.h> @@ -258,6 +260,9 @@ altera_sdcard_task_io(struct altera_sdcard_softc *sc) ALTERA_SDCARD_LOCK_ASSERT(sc); KASSERT(sc->as_currentbio != NULL, ("%s: no current I/O", __func__)); +#ifdef ALTERA_SDCARD_FAST_SIM +recheck: +#endif asr = altera_sdcard_read_asr(sc); /* @@ -299,9 +304,12 @@ altera_sdcard_task_io(struct altera_sdcard_softc *sc) /* * Finally, either start the next I/O or transition to the IDLE state. */ - if (bioq_first(&sc->as_bioq) != NULL) + if (bioq_first(&sc->as_bioq) != NULL) { altera_sdcard_nextio(sc); - else +#ifdef ALTERA_SDCARD_FAST_SIM + goto recheck; +#endif + } else sc->as_state = ALTERA_SDCARD_STATE_IDLE; } @@ -398,6 +406,8 @@ altera_sdcard_start(struct altera_sdcard_softc *sc) taskqueue_cancel_timeout(sc->as_taskqueue, &sc->as_task, NULL); altera_sdcard_nextio(sc); - taskqueue_enqueue_timeout(sc->as_taskqueue, &sc->as_task, - ALTERA_SDCARD_TIMEOUT_IO); +#ifdef ALTERA_SDCARD_FAST_SIM + altera_sdcard_task_io(sc); +#endif + altera_sdcard_task_rechedule(sc); } |
