|
@@ -5,6 +5,8 @@
|
|
|
* Created: June 18, 2007
|
|
|
* Copyright: MontaVista Software Inc.
|
|
|
*
|
|
|
+ * Copyright 2008 Pierre Ossman
|
|
|
+ *
|
|
|
* This program is free software; you can redistribute it and/or modify
|
|
|
* it under the terms of the GNU General Public License as published by
|
|
|
* the Free Software Foundation; either version 2 of the License, or (at
|
|
@@ -107,11 +109,14 @@ static int sdio_irq_thread(void *_host)
|
|
|
|
|
|
/*
|
|
|
* Give other threads a chance to run in the presence of
|
|
|
- * errors. FIXME: determine if due to card removal and
|
|
|
- * possibly exit this thread if so.
|
|
|
+ * errors.
|
|
|
*/
|
|
|
- if (ret < 0)
|
|
|
- ssleep(1);
|
|
|
+ if (ret < 0) {
|
|
|
+ set_current_state(TASK_INTERRUPTIBLE);
|
|
|
+ if (!kthread_should_stop())
|
|
|
+ schedule_timeout(HZ);
|
|
|
+ set_current_state(TASK_RUNNING);
|
|
|
+ }
|
|
|
|
|
|
/*
|
|
|
* Adaptive polling frequency based on the assumption
|