diff options
Diffstat (limited to 'drivers/gpio/gpio-omap.c')
| -rw-r--r-- | drivers/gpio/gpio-omap.c | 7 | 
1 files changed, 4 insertions, 3 deletions
diff --git a/drivers/gpio/gpio-omap.c b/drivers/gpio/gpio-omap.c index e099c39e0355..80ddc43fd875 100644 --- a/drivers/gpio/gpio-omap.c +++ b/drivers/gpio/gpio-omap.c @@ -986,7 +986,8 @@ static void omap_gpio_mod_init(struct gpio_bank *bank)  		writel_relaxed(0, base + bank->regs->ctrl);  } -static int omap_gpio_chip_init(struct gpio_bank *bank, struct irq_chip *irqc) +static int omap_gpio_chip_init(struct gpio_bank *bank, struct irq_chip *irqc, +			       struct device *pm_dev)  {  	struct gpio_irq_chip *irq;  	static int gpio; @@ -1052,6 +1053,7 @@ static int omap_gpio_chip_init(struct gpio_bank *bank, struct irq_chip *irqc)  	if (ret)  		return dev_err_probe(bank->chip.parent, ret, "Could not register gpio chip\n"); +	irq_domain_set_pm_device(bank->chip.irq.domain, pm_dev);  	ret = devm_request_irq(bank->chip.parent, bank->irq,  			       omap_gpio_irq_handler,  			       0, dev_name(bank->chip.parent), bank); @@ -1402,7 +1404,6 @@ static int omap_gpio_probe(struct platform_device *pdev)  	irqc->irq_bus_sync_unlock = gpio_irq_bus_sync_unlock,  	irqc->name = dev_name(&pdev->dev);  	irqc->flags = IRQCHIP_MASK_ON_SUSPEND; -	irqc->parent_device = dev;  	bank->irq = platform_get_irq(pdev, 0);  	if (bank->irq <= 0) { @@ -1466,7 +1467,7 @@ static int omap_gpio_probe(struct platform_device *pdev)  	omap_gpio_mod_init(bank); -	ret = omap_gpio_chip_init(bank, irqc); +	ret = omap_gpio_chip_init(bank, irqc, dev);  	if (ret) {  		pm_runtime_put_sync(dev);  		pm_runtime_disable(dev);  |