Hi, I think the patch should also remove the local_irq_enable() call in twl_rtc_interrupt, since it's no longer needed with threaded irq. At least on the Pandaboard the RTC is still working with the appended patch. -- Sebastian > >> On Apr 13, 2011 Krishnamoorthy, Balaji T wrote: > >>> On Wed, Mar 16, 2011 at 9:37 PM, Ilkka Koskinen > >> <ilkka.koskinen@xxxxxxxxx> wrote: > >>>> > >>>> The driver is accessing to i2c bus in interrupt handler. > >>>> Therefore, it should use threaded irq. > >> > >>> Acked-by: Balaji T K <balajitk@xxxxxx> > >> > >>>> > >>>> Signed-off-by: Ilkka Koskinen <ilkka.koskinen@xxxxxxxxx> > >>>> --- > >>>> drivers/rtc/rtc-twl.c | 2 +- > >>>> 1 files changed, 1 insertions(+), 1 deletions(-) > >>>> > >>>> diff --git a/drivers/rtc/rtc-twl.c b/drivers/rtc/rtc-twl.c > >>>> index ed1b868..2715b96 100644 > >>>> --- a/drivers/rtc/rtc-twl.c > >>>> +++ b/drivers/rtc/rtc-twl.c > >>>> @@ -475,7 +475,7 @@ static int __devinit twl_rtc_probe(struct platform_device *pdev) > >>>> if (ret < 0) > >>>> goto out1; > >>>> > >>>> - ret = request_irq(irq, twl_rtc_interrupt, > >>>> + ret = request_threaded_irq(irq, NULL, twl_rtc_interrupt, > >>>> IRQF_TRIGGER_RISING, > >>>> dev_name(&rtc->dev), rtc); > >>>> if (ret < 0) { > >>>> -- > >>>> 1.7.0.4
--- a/drivers/rtc/rtc-twl.c 2011-05-19 06:06:34.000000000 +0200 +++ b/drivers/rtc/rtc-twl.c 2011-05-26 20:34:03.000000000 +0200 @@ -362,14 +362,6 @@ int res; u8 rd_reg; -#ifdef CONFIG_LOCKDEP - /* WORKAROUND for lockdep forcing IRQF_DISABLED on us, which - * we don't want and can't tolerate. Although it might be - * friendlier not to borrow this thread context... - */ - local_irq_enable(); -#endif - res = twl_rtc_read_u8(&rd_reg, REG_RTC_STATUS_REG); if (res) goto out; @@ -462,7 +454,7 @@ if (ret < 0) goto out1; - ret = request_irq(irq, twl_rtc_interrupt, + ret = request_threaded_irq(irq, NULL, twl_rtc_interrupt, IRQF_TRIGGER_RISING, dev_name(&rtc->dev), rtc); if (ret < 0) {
Attachment:
signature.asc
Description: Digital signature