diff options
author | Stefan Nilsson XK <stefan.xk.nilsson@stericsson.com> | 2011-04-26 11:25:24 +0200 |
---|---|---|
committer | Philippe Langlais <philippe.langlais@linaro.org> | 2011-07-22 15:45:22 +0200 |
commit | 77a72748d8f0211e0f08ed59980dcefb8841bd3a (patch) | |
tree | 1c18a57b5ecdacb521d72cb476f722f058d42640 /include | |
parent | 3c7f9f17c32f12b3cb913d9cf921093adda4c098 (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.h | 7 |
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; |