Messages in this thread | | | From | "Opensource [Steve Twiss]" <> | Subject | RE: [PATCH] rtc: da9063: Fix ALARM interrupt registration. | Date | Thu, 20 Nov 2014 14:43:01 +0000 |
| |
On 20 November 2014 13:09 Dmitry Lavnikevich wrote:
> > On 20Nov, 2014, at 12:23, Steve Twiss wrote: > > On 20 November 2014 09:55 Dmitry Lavnikevich wrote: > > > >> Call platform_get_irq_byname() returns local IRQ number. Use > >> regmap_irq_get_virq() to get VIRQ instead. > >> This fixes rtc initialization error: > >> da9063-rtc da9063-rtc: Failed to request ALARM IRQ 1: -22 > >> > >> Signed-off-by: Dmitry Lavnikevich <d.lavnikevich@sam-solutions.com> > > > > Hi Dmitry, > > > > Please refer to the previous patch : > > http://patchwork.ozlabs.org/patch/329051/ > > Yes, I’ve seen this patch for da9055. > I have no hardware with da9055 to test it but as I understood from > da9055-core.c sources the difference is in regmap_add_irq_chip() > call. Looks like passing irq_base = -1 to it dynamically allocates > irq_base so call regmap_irq_chip_get_base() then returns base for > virtual IRQ.
Hi Dmitry, -- that is what I expect ... mmm..
[...] > > > > da9063-rtc da9063-rtc: Failed to request ALARM IRQ -22: -22 > > da9063-rtc: probe of da9063-rtc failed with error -22 > > I have tested this patch on pfla02 board and it was ok. On which > board this fail occurred?
I am using a MCIMX6DL-SDP board -- although I the differences are in my code base and not the platform in this case. My apologies
Regards, Steve
patch follows:
=== DIFF of drivers/regulator/da9063-regulator.c ... linux-next/v3.18-rc5 870,880c870,877 < regulators->irq_ldo_lim = regmap_irq_get_virq(da9063->regmap_irq, irq); < if (regulators->irq_ldo_lim >= 0) { < ret = request_threaded_irq(regulators->irq_ldo_lim, < NULL, da9063_ldo_lim_event, < IRQF_TRIGGER_LOW | IRQF_ONESHOT, < "LDO_LIM", regulators); < if (ret) { < dev_err(&pdev->dev, < "Failed to request LDO_LIM IRQ.\n"); < regulators->irq_ldo_lim = -ENXIO; < } --- > ret = request_threaded_irq(irq, > NULL, da9063_ldo_lim_event, > IRQF_TRIGGER_LOW | IRQF_ONESHOT, > "LDO_LIM", regulators); > if (ret) { > dev_err(&pdev->dev, > "Failed to request LDO_LIM IRQ.\n"); > regulators->irq_ldo_lim = -ENXIO; === DIFF of drivers/mfd/da9063-core.c ... linux-next/v3.18-rc5 <> InSparse 121c121 < da9063->irq_base = 0; --- > da9063->irq_base = -1; 170a171,172 > da9063->irq_base = regmap_irq_chip_get_base(da9063->regmap_irq); >
| |