diff options
Diffstat (limited to 'drivers/gpio/gpio-omap.c')
| -rw-r--r-- | drivers/gpio/gpio-omap.c | 11 | 
1 files changed, 8 insertions, 3 deletions
| diff --git a/drivers/gpio/gpio-omap.c b/drivers/gpio/gpio-omap.c index 2ae0d47e9554..5236db161e76 100644 --- a/drivers/gpio/gpio-omap.c +++ b/drivers/gpio/gpio-omap.c @@ -709,7 +709,7 @@ static void omap_gpio_free(struct gpio_chip *chip, unsigned offset)   * line's interrupt handler has been run, we may miss some nested   * interrupts.   */ -static void omap_gpio_irq_handler(unsigned int irq, struct irq_desc *desc) +static void omap_gpio_irq_handler(struct irq_desc *desc)  {  	void __iomem *isr_reg = NULL;  	u32 isr; @@ -1098,7 +1098,6 @@ static int omap_gpio_chip_init(struct gpio_bank *bank, struct irq_chip *irqc)  	} else {  		bank->chip.label = "gpio";  		bank->chip.base = gpio; -		gpio += bank->width;  	}  	bank->chip.ngpio = bank->width; @@ -1108,6 +1107,9 @@ static int omap_gpio_chip_init(struct gpio_bank *bank, struct irq_chip *irqc)  		return ret;  	} +	if (!bank->is_mpuio) +		gpio += bank->width; +  #ifdef CONFIG_ARCH_OMAP1  	/*  	 * REVISIT: Once we have OMAP1 supporting SPARSE_IRQ, we can drop @@ -1253,8 +1255,11 @@ static int omap_gpio_probe(struct platform_device *pdev)  	omap_gpio_mod_init(bank);  	ret = omap_gpio_chip_init(bank, irqc); -	if (ret) +	if (ret) { +		pm_runtime_put_sync(bank->dev); +		pm_runtime_disable(bank->dev);  		return ret; +	}  	omap_gpio_show_rev(bank); |