From 91d52494d37c9ea452306eb015aa70f9a4d9f673 Mon Sep 17 00:00:00 2001 From: Mika Westerberg Date: Thu, 5 Apr 2012 12:15:17 +0300 Subject: [PATCH] --- yaml --- r: 307663 b: refs/heads/master c: f5f93117f4ac24b8493cda67e6a1443517d26845 h: refs/heads/master i: 307661: 62c34ce7293e9aae9177fd25f1b9b5c5b2cec891 307659: e7bd81aaca274170c15c8b2a95df5eba975fc15c 307655: aefe5aeeb7c1f90e816fe618c90dfa7b64000ec2 307647: 9697318c38a6f3e415ef6995964f00e7b4c08716 v: v3 --- [refs] | 2 +- trunk/drivers/gpio/gpio-langwell.c | 21 +++++++++++++++++++++ 2 files changed, 22 insertions(+), 1 deletion(-) diff --git a/[refs] b/[refs] index 8dac8e1d9752..2768286e8b11 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: b3e35af2b0ea9ad1618e01f40a1ffee83333ef35 +refs/heads/master: f5f93117f4ac24b8493cda67e6a1443517d26845 diff --git a/trunk/drivers/gpio/gpio-langwell.c b/trunk/drivers/gpio/gpio-langwell.c index bc15ae3d7cf2..52f00d3cf667 100644 --- a/trunk/drivers/gpio/gpio-langwell.c +++ b/trunk/drivers/gpio/gpio-langwell.c @@ -263,6 +263,24 @@ static void lnw_irq_handler(unsigned irq, struct irq_desc *desc) chip->irq_eoi(data); } +static void lnw_irq_init_hw(struct lnw_gpio *lnw) +{ + void __iomem *reg; + unsigned base; + + for (base = 0; base < lnw->chip.ngpio; base += 32) { + /* Clear the rising-edge detect register */ + reg = gpio_reg(&lnw->chip, base, GRER); + writel(0, reg); + /* Clear the falling-edge detect register */ + reg = gpio_reg(&lnw->chip, base, GFER); + writel(0, reg); + /* Clear the edge detect status register */ + reg = gpio_reg(&lnw->chip, base, GEDR); + writel(~0, reg); + } +} + #ifdef CONFIG_PM static int lnw_gpio_runtime_resume(struct device *dev) { @@ -371,6 +389,9 @@ static int __devinit lnw_gpio_probe(struct pci_dev *pdev, dev_err(&pdev->dev, "langwell gpiochip_add error %d\n", retval); goto err4; } + + lnw_irq_init_hw(lnw); + irq_set_handler_data(pdev->irq, lnw); irq_set_chained_handler(pdev->irq, lnw_irq_handler); for (i = 0; i < lnw->chip.ngpio; i++) {