diff options
| author | Dmitry Lavnikevich <d.lavnikevich@sam-solutions.com> | 2014-11-21 10:29:07 -0500 |
|---|---|---|
| committer | Lee Jones <lee.jones@linaro.org> | 2014-11-25 11:19:24 -0500 |
| commit | 439b8bddaa1ebed9f9f8fb2f6f33f5e639d76ab8 (patch) | |
| tree | 9bc05f4c1f87de1a36a343d69b826689a2a09b95 | |
| parent | 2c20f6de95afef89127163d16c88cd0456c48077 (diff) | |
mfd: da9063: Get irq base dynamically before registering device
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>
| -rw-r--r-- | drivers/mfd/da9063-core.c | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/drivers/mfd/da9063-core.c b/drivers/mfd/da9063-core.c index 93db8bb8c8f0..f38bc98a3c57 100644 --- a/drivers/mfd/da9063-core.c +++ b/drivers/mfd/da9063-core.c | |||
| @@ -118,7 +118,7 @@ int da9063_device_init(struct da9063 *da9063, unsigned int irq) | |||
| 118 | da9063->irq_base = pdata->irq_base; | 118 | da9063->irq_base = pdata->irq_base; |
| 119 | } else { | 119 | } else { |
| 120 | da9063->flags = 0; | 120 | da9063->flags = 0; |
| 121 | da9063->irq_base = 0; | 121 | da9063->irq_base = -1; |
| 122 | } | 122 | } |
| 123 | da9063->chip_irq = irq; | 123 | da9063->chip_irq = irq; |
| 124 | 124 | ||
| @@ -168,6 +168,8 @@ int da9063_device_init(struct da9063 *da9063, unsigned int irq) | |||
| 168 | return ret; | 168 | return ret; |
| 169 | } | 169 | } |
| 170 | 170 | ||
| 171 | da9063->irq_base = regmap_irq_chip_get_base(da9063->regmap_irq); | ||
| 172 | |||
| 171 | ret = mfd_add_devices(da9063->dev, -1, da9063_devs, | 173 | ret = mfd_add_devices(da9063->dev, -1, da9063_devs, |
| 172 | ARRAY_SIZE(da9063_devs), NULL, da9063->irq_base, | 174 | ARRAY_SIZE(da9063_devs), NULL, da9063->irq_base, |
| 173 | NULL); | 175 | NULL); |
