Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit e633b7bc authored by Pierre Ossman's avatar Pierre Ossman
Browse files

sdio: make sleep on error interruptable



Make sure we can be woken from the forced sleep that is done on errors.
Removing a card often results in -ENOMEDIUM or -EILSEQ so we previously
locked up the removal process for a second.

We could completely exit on -ENOMEDIUM, but it might be a transient
glitch so treat it like any other error.

Signed-off-by: default avatarPierre Ossman <drzeus@drzeus.cx>
parent 04cf585d
Loading
Loading
Loading
Loading
+9 −4
Original line number Diff line number Diff line
@@ -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