summaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
authorStefan Nilsson XK <stefan.xk.nilsson@stericsson.com>2011-04-26 11:25:24 +0200
committerPhilippe Langlais <philippe.langlais@linaro.org>2011-07-22 15:45:22 +0200
commit77a72748d8f0211e0f08ed59980dcefb8841bd3a (patch)
tree1c18a57b5ecdacb521d72cb476f722f058d42640 /include
parent3c7f9f17c32f12b3cb913d9cf921093adda4c098 (diff)
SDIO: Replace IRQ kthread with work queue
To make the IRQ handling of the SDIO framework more robust, the kernel thread that used to handle SDIO IRQ:s is replaced with a work queue. Both polling and regular IRQ mode is still supported. ST-Ericsson ID: ER318044 ST-Ericsson FOSS-OUT ID: Trivial Change-Id: Ibc1d10c00c972091d8880bd51962b5b45aa11ab3 Signed-off-by: Stefan Nilsson XK <stefan.xk.nilsson@stericsson.com> Reviewed-on: http://gerrit.lud.stericsson.com/gerrit/21665 Reviewed-by: QATEST Reviewed-by: Sebastian RASMUSSEN <sebastian.rasmussen@stericsson.com> Reviewed-by: Jonas ABERG <jonas.aberg@stericsson.com>
Diffstat (limited to 'include')
-rw-r--r--include/linux/mmc/host.h7
1 files changed, 4 insertions, 3 deletions
diff --git a/include/linux/mmc/host.h b/include/linux/mmc/host.h
index 303f6f1bba0..60e054cf2f0 100644
--- a/include/linux/mmc/host.h
+++ b/include/linux/mmc/host.h
@@ -266,8 +266,9 @@ struct mmc_host {
unsigned int bus_refs; /* reference counter */
unsigned int sdio_irqs;
- struct task_struct *sdio_irq_thread;
- atomic_t sdio_irq_thread_abort;
+ struct delayed_work sdio_irq_work;
+ struct workqueue_struct *sdio_irq_workqueue;
+ unsigned long sdio_poll_period;
mmc_pm_flag_t pm_flags; /* requested pm features */
@@ -312,7 +313,7 @@ extern void mmc_request_done(struct mmc_host *, struct mmc_request *);
static inline void mmc_signal_sdio_irq(struct mmc_host *host)
{
host->ops->enable_sdio_irq(host, 0);
- wake_up_process(host->sdio_irq_thread);
+ queue_delayed_work(host->sdio_irq_workqueue, &host->sdio_irq_work, 0);
}
struct regulator;