[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <6ED8E3B22081A4459DAC7699F3695FB7D0B483EE@SW-EX-MBX02.diasemi.com>
Date: Thu, 20 Nov 2014 14:43:01 +0000
From: "Opensource [Steve Twiss]" <stwiss.opensource@...semi.com>
To: Dmitry Lavnikevich <D.Lavnikevich@...-solutions.com>
CC: Support Opensource <Support.Opensource@...semi.com>,
"a.zummo@...ertech.it" <a.zummo@...ertech.it>,
"rtc-linux@...glegroups.com" <rtc-linux@...glegroups.com>,
"linux-kernel@...r.kernel.org" <linux-kernel@...r.kernel.org>
Subject: RE: [PATCH] rtc: da9063: Fix ALARM interrupt registration.
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@...-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);
>
Powered by blists - more mailing lists