diff options
author | Linus Walleij <linus.walleij@linaro.org> | 2011-05-05 17:23:10 +0100 |
---|---|---|
committer | Russell King <rmk+kernel@arm.linux.org.uk> | 2011-06-06 11:11:12 +0100 |
commit | 17ee083b7897ab27b4949c42de805889ebd2b4c5 (patch) | |
tree | 097d6a0b11178bbe7bc7fbb702cc4586dc782cae /drivers/mmc | |
parent | 9fc2552a68eb28f95f367156cf46a3da7843ff37 (diff) | |
download | linux-3.10-17ee083b7897ab27b4949c42de805889ebd2b4c5.tar.gz linux-3.10-17ee083b7897ab27b4949c42de805889ebd2b4c5.tar.bz2 linux-3.10-17ee083b7897ab27b4949c42de805889ebd2b4c5.zip |
ARM: 6894/1: mmci: trigger card detect IRQs on falling and rising edges
Right now the card detect IRQ for MMCI is requested without any
flags which will give some default machine-specified IRQ
behaviour. However on the U300 rising+falling edges (such as can
be expected from a simple GPIO to generate when inserting/removing
a card) need to be requested explicitly.
Cc: Rabin Vincent <rabin.vincent@stericsson.com>
Cc: Ulf Hansson <ulf.hansson@stericsson.com>
Cc: Sebastian Rasmussen <sebastian.rasmussen@stericsson.com>
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
Diffstat (limited to 'drivers/mmc')
-rw-r--r-- | drivers/mmc/host/mmci.c | 12 |
1 files changed, 10 insertions, 2 deletions
diff --git a/drivers/mmc/host/mmci.c b/drivers/mmc/host/mmci.c index 5da5bea0f9f..7721de942c6 100644 --- a/drivers/mmc/host/mmci.c +++ b/drivers/mmc/host/mmci.c @@ -1144,9 +1144,17 @@ static int __devinit mmci_probe(struct amba_device *dev, else if (ret != -ENOSYS) goto err_gpio_cd; + /* + * A gpio pin that will detect cards when inserted and removed + * will most likely want to trigger on the edges if it is + * 0 when ejected and 1 when inserted (or mutatis mutandis + * for the inverted case) so we request triggers on both + * edges. + */ ret = request_any_context_irq(gpio_to_irq(plat->gpio_cd), - mmci_cd_irq, 0, - DRIVER_NAME " (cd)", host); + mmci_cd_irq, + IRQF_TRIGGER_RISING | IRQF_TRIGGER_FALLING, + DRIVER_NAME " (cd)", host); if (ret >= 0) host->gpio_cd_irq = gpio_to_irq(plat->gpio_cd); } |