From ec818d5b0e273212e082f87ac9949fcaee13cddb Mon Sep 17 00:00:00 2001 From: Julia Lawall Date: Tue, 6 Apr 2010 14:34:48 -0700 Subject: [PATCH] --- yaml --- r: 189559 b: refs/heads/master c: 2a481800caf78f4750cc673c8baed12b5d703ff6 h: refs/heads/master i: 189557: 4c207200de3c3903f58434c7fa957f731acec07c 189555: c7b3e5282c1207d58beefe1c61842d36ff0b7459 189551: 7cd23ed42bf8b6ea297d2e18b99195487ed80325 v: v3 --- [refs] | 2 +- trunk/drivers/gpio/timbgpio.c | 12 ++++++++---- 2 files changed, 9 insertions(+), 5 deletions(-) diff --git a/[refs] b/[refs] index 40a4e1c0f069..052d820f1c1c 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: c70c036f04b7b74282477d6a51bbcc8bb8897e03 +refs/heads/master: 2a481800caf78f4750cc673c8baed12b5d703ff6 diff --git a/trunk/drivers/gpio/timbgpio.c b/trunk/drivers/gpio/timbgpio.c index ac4d0f0ea02b..ddd053108a13 100644 --- a/trunk/drivers/gpio/timbgpio.c +++ b/trunk/drivers/gpio/timbgpio.c @@ -131,6 +131,7 @@ static int timbgpio_irq_type(unsigned irq, unsigned trigger) unsigned long flags; u32 lvr, flr, bflr = 0; u32 ver; + int ret = 0; if (offset < 0 || offset > tgpio->gpio.ngpio) return -EINVAL; @@ -154,8 +155,10 @@ static int timbgpio_irq_type(unsigned irq, unsigned trigger) } if ((trigger & IRQ_TYPE_EDGE_BOTH) == IRQ_TYPE_EDGE_BOTH) { - if (ver < 3) - return -EINVAL; + if (ver < 3) { + ret = -EINVAL; + goto out; + } else { flr |= 1 << offset; bflr |= 1 << offset; @@ -175,9 +178,10 @@ static int timbgpio_irq_type(unsigned irq, unsigned trigger) iowrite32(bflr, tgpio->membase + TGPIO_BFLR); iowrite32(1 << offset, tgpio->membase + TGPIO_ICR); - spin_unlock_irqrestore(&tgpio->lock, flags); - return 0; +out: + spin_unlock_irqrestore(&tgpio->lock, flags); + return ret; } static void timbgpio_irq(unsigned int irq, struct irq_desc *desc)