mfd: da9063: Get irq base dynamically before registering device
authorDmitry Lavnikevich <d.lavnikevich@sam-solutions.com>
Fri, 21 Nov 2014 15:29:07 +0000 (18:29 +0300)
committerLee Jones <lee.jones@linaro.org>
Tue, 25 Nov 2014 16:19:24 +0000 (16:19 +0000)
After registering mfd device with proper irq_base
platform_get_irq_byname() calls will return VIRQ instead of local IRQ.
This fixes da9063 rtc registration issue:
da9063-rtc da9063-rtc: Failed to request ALARM IRQ 1: -22

Signed-off-by: Dmitry Lavnikevich <d.lavnikevich@sam-solutions.com>
Signed-off-by: Lee Jones <lee.jones@linaro.org>
drivers/mfd/da9063-core.c

index 93db8bb8c8f0fd8d4ea86a36cedd541f4ecdc45a..f38bc98a3c57a60633b268bdee67136b58962918 100644 (file)
@@ -118,7 +118,7 @@ int da9063_device_init(struct da9063 *da9063, unsigned int irq)
                da9063->irq_base = pdata->irq_base;
        } else {
                da9063->flags = 0;
-               da9063->irq_base = 0;
+               da9063->irq_base = -1;
        }
        da9063->chip_irq = irq;
 
@@ -168,6 +168,8 @@ int da9063_device_init(struct da9063 *da9063, unsigned int irq)
                return ret;
        }
 
+       da9063->irq_base = regmap_irq_chip_get_base(da9063->regmap_irq);
+
        ret = mfd_add_devices(da9063->dev, -1, da9063_devs,
                              ARRAY_SIZE(da9063_devs), NULL, da9063->irq_base,
                              NULL);