summaryrefslogtreecommitdiffstats
path: root/sys/dev/altera/sdcard
diff options
context:
space:
mode:
authorbrooks <brooks@FreeBSD.org>2013-10-18 15:27:11 +0000
committerbrooks <brooks@FreeBSD.org>2013-10-18 15:27:11 +0000
commitd38a7644930b14f7c24cd9cfe41aefe0472bcbe3 (patch)
treeceded70779d1ac03caec5c4bb104adec76f6c315 /sys/dev/altera/sdcard
parent2c64db60d774334e0a7d62c6f1ed6e99f5141bf5 (diff)
downloadFreeBSD-src-d38a7644930b14f7c24cd9cfe41aefe0472bcbe3.zip
FreeBSD-src-d38a7644930b14f7c24cd9cfe41aefe0472bcbe3.tar.gz
MFP4 (driver change only):
Change 231100 by brooks@brooks_zenith on 2013/07/12 21:01:31 Add a new option ALTERA_SDCARD_FAST_SIM which checks immediatly for success of I/O operations rather than queuing a task. MFC after: 3 days Sponsored by: DARPA/AFRL
Diffstat (limited to 'sys/dev/altera/sdcard')
-rw-r--r--sys/dev/altera/sdcard/altera_sdcard.c18
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 f64b9c5..4508845 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);
}
OpenPOWER on IntegriCloud