From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1756163AbaHHHfA (ORCPT ); Fri, 8 Aug 2014 03:35:00 -0400 Received: from mailout3.w1.samsung.com ([210.118.77.13]:41285 "EHLO mailout3.w1.samsung.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752948AbaHHHe4 (ORCPT ); Fri, 8 Aug 2014 03:34:56 -0400 X-AuditID: cbfec7f4-b7f156d0000063c7-a9-53e47d9ef65f Message-id: <1407483297.21474.2.camel@AMDC1943> Subject: Re: [PATCH] rtc: s5m: re-add support for devices without irq specified From: Krzysztof Kozlowski To: Bartlomiej Zolnierkiewicz Cc: Alessandro Zummo , Kyungmin Park , rtc-linux@googlegroups.com, linux-kernel@vger.kernel.org, linux-samsung-soc@vger.kernel.org Date: Fri, 08 Aug 2014 09:34:57 +0200 In-reply-to: <3505114.LnLWmLa1kW@amdc1032> References: <2220469.b1qFJrigEi@amdc1032> <3505114.LnLWmLa1kW@amdc1032> Content-type: text/plain; charset=UTF-8 X-Mailer: Evolution 3.10.4-0ubuntu1 MIME-version: 1.0 Content-transfer-encoding: 7bit X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFtrKLMWRmVeSWpSXmKPExsVy+t/xq7rzap8EG8xuFbJYcvEqu8XGGetZ Lc42vWG3uLxrDpvFjPP7mCz2d3YwOrB57Jl4ks2jb8sqRo/p834yeXzeJBfAEsVlk5Kak1mW WqRvl8CV0bP7AlvBbtOKLf+/sDQw3tfqYuTkkBAwkTiw7xUrhC0mceHeerYuRi4OIYGljBLP 7i1lhHA+M0r8mNnJDlLFK6Av0X3pBwuILSzgLzF3+n6wOJuAscTm5UvYQGwRAQuJtSvesoA0 MwtsZ5RoXNTBDJJgEVCVOHp5F1gRp4CWxI0TLxhBbCEBd4m3C2eDxZkF1CUmzVvEDHGSssS8 /ceYIBYLSvyYfI8FokZeYvOat8wTGAVmIWmZhaRsFpKyBYzMqxhFU0uTC4qT0nMN9YoTc4tL 89L1kvNzNzFCgvrLDsbFx6wOMQpwMCrx8BqcvhssxJpYVlyZe4hRgoNZSYS35vPjYCHelMTK qtSi/Pii0pzU4kOMTBycUg2MG38xB86acz5vvjHDhVfdqbLzJBvvndnpU3f2a7wkf//Sszu2 cDlu5ZPveJLuw21/ZP4cJyaTXz5XlIzkdx3iXifNsUelfnObtvL6ry0GS7xP5vAk2seIsOfZ vVMvcDheczJ6+zq+E4uvSvAKCCzIr/gjUBrt++PfB6aDp5Nu7TrrntGwjttFiaU4I9FQi7mo OBEAWVoFe0gCAAA= Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On czw, 2014-08-07 at 18:48 +0200, Bartlomiej Zolnierkiewicz wrote: > [ added missing linux-samsung-soc ML, sorry for the noise ] > > On Thursday, August 07, 2014 06:41:02 PM Bartlomiej Zolnierkiewicz wrote: > > The rtc-s5m driver used to support devices without irq specified > > in the past. Re-add this support. > > > > The patch fixes boot for Insignal's Exynos4412 based Origen board. Looks and works good (tested on board with S2MPS14 with and without interrupt). Reviewed-by: Krzysztof Kozlowski Tested-by: Krzysztof Kozlowski Best regards, Krzysztof > > > > Error messages before the patch: > > ... > > [ 2.095991] Unable to handle kernel NULL pointer dereference at virtual address 00000094 > > [ 2.103299] pgd = c0004000 > > [ 2.105944] [00000094] *pgd=00000000 > > [ 2.109510] Internal error: Oops: 5 [#1] PREEMPT SMP ARM > > [ 2.114796] Modules linked in: > > [ 2.117840] CPU: 1 PID: 1 Comm: swapper/0 Not tainted 3.16.0-next-20140804-00008-ga59480f-dirty #701 > > [ 2.126950] task: ea80f000 ti: ea882000 task.ti: ea882000 > > [ 2.132348] PC is at regmap_irq_get_virq+0x0/0x28 > > [ 2.137033] LR is at s5m_rtc_probe+0xdc/0x310 > > [ 2.141360] pc : [] lr : [] psr: 80000153 > > [ 2.141360] sp : ea883e48 ip : 00000000 fp : 00000000 > > [ 2.152815] r10: 0000000c r9 : c05de7ac r8 : eaabc600 > > [ 2.158024] r7 : eaa6b4d0 r6 : c0439e8c r5 : eaabc610 r4 : eab30e50 > > [ 2.164533] r3 : 00000000 r2 : 00000000 r1 : 0000000c r0 : 00000000 > > [ 2.171045] Flags: Nzcv IRQs on FIQs off Mode SVC_32 ISA ARM Segment kernel > > [ 2.178423] Control: 10c5387d Table: 4000404a DAC: 00000015 > > [ 2.184150] Process swapper/0 (pid: 1, stack limit = 0xea882240) > > [ 2.190139] Stack: (0xea883e48 to 0xea884000) > > [ 2.194483] 3e40: eab32910 00000001 c05de7ac eab329b0 00000000 eaabc610 > > [ 2.202642] 3e60: c0618c68 eaabc610 c0618c68 00000000 00000000 c0618c68 0000008f c02429cc > > [ 2.210801] 3e80: c02429a0 eaabc610 c06628a8 c02415f0 eaabc610 c0618c68 eaabc644 00000000 > > [ 2.218960] 3ea0: eab30d00 c024179c c0618c68 00000000 c0241710 c023ffb4 ea805478 eaadefc0 > > [ 2.227119] 3ec0: c0618c68 ea115e80 c0610b10 c0240df8 c0518984 c0618c68 00000000 c0618c68 > > [ 2.235278] 3ee0: 00000000 c05ecc18 c05ecc18 c0241db8 c02426a0 c05b480c 00000000 c00088a4 > > [ 2.243437] 3f00: 0000009f c040f134 ea92a300 c0649fe0 ea80f000 60000153 c05efe54 00000000 > > [ 2.251596] 3f20: 00000000 c05efe54 60000153 00000000 eb7ff916 eb7ff908 c0573048 c00376dc > > [ 2.259756] 3f40: c05288f0 c0572758 00000006 00000006 c05efdf4 c05c2da4 00000006 c05c2d84 > > [ 2.267914] 3f60: c0626900 c059a508 c05de7ac 0000008f 00000000 c059ac94 00000006 00000006 > > [ 2.276074] 3f80: c059a508 c003c3fc 00000000 c0401330 00000000 00000000 00000000 00000000 > > [ 2.284233] 3fa0: 00000000 c0401338 00000000 c000e538 00000000 00000000 00000000 00000000 > > [ 2.292392] 3fc0: 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 > > [ 2.300551] 3fe0: 00000000 00000000 00000000 00000000 00000013 00000000 c0c0c0c0 c0c0c0c0 > > [ 2.308729] [] (regmap_irq_get_virq) from [] (s5m_rtc_probe+0xdc/0x310) > > [ 2.317057] [] (s5m_rtc_probe) from [] (platform_drv_probe+0x2c/0x5c) > > [ 2.325209] [] (platform_drv_probe) from [] (driver_probe_device+0x114/0x234) > > [ 2.334060] [] (driver_probe_device) from [] (__driver_attach+0x8c/0x90) > > [ 2.342479] [] (__driver_attach) from [] (bus_for_each_dev+0x54/0x88) > > [ 2.350637] [] (bus_for_each_dev) from [] (bus_add_driver+0xd8/0x1cc) > > [ 2.358796] [] (bus_add_driver) from [] (driver_register+0x78/0xf4) > > [ 2.366785] [] (driver_register) from [] (do_one_initcall+0x80/0x1d0) > > [ 2.374947] [] (do_one_initcall) from [] (kernel_init_freeable+0x108/0x1d4) > > [ 2.383634] [] (kernel_init_freeable) from [] (kernel_init+0x8/0xe4) > > [ 2.391704] [] (kernel_init) from [] (ret_from_fork+0x14/0x3c) > > [ 2.399246] Code: e8bd8070 e3500000 1590009c e12fff1e (e5903094) > > [ 2.405391] ---[ end trace a954d7f019122700 ]--- > > [ 2.409987] Kernel panic - not syncing: Attempted to kill init! exitcode=0x0000000b > > ... > > > > Cc: Krzysztof Kozlowski > > Signed-off-by: Bartlomiej Zolnierkiewicz > > Acked-by: Kyungmin Park > > --- > > patch is against next-20140804 branch of linux-next kernel > > > > drivers/rtc/rtc-s5m.c | 21 ++++++++++++++------- > > 1 file changed, 14 insertions(+), 7 deletions(-) > > > > diff --git a/drivers/rtc/rtc-s5m.c b/drivers/rtc/rtc-s5m.c > > index 8f06250a..8754c33 100644 > > --- a/drivers/rtc/rtc-s5m.c > > +++ b/drivers/rtc/rtc-s5m.c > > @@ -717,12 +717,14 @@ static int s5m_rtc_probe(struct platform_device *pdev) > > info->device_type = s5m87xx->device_type; > > info->wtsr_smpl = s5m87xx->wtsr_smpl; > > > > - info->irq = regmap_irq_get_virq(s5m87xx->irq_data, alarm_irq); > > - if (info->irq <= 0) { > > - ret = -EINVAL; > > - dev_err(&pdev->dev, "Failed to get virtual IRQ %d\n", > > + if (s5m87xx->irq_data) { > > + info->irq = regmap_irq_get_virq(s5m87xx->irq_data, alarm_irq); > > + if (info->irq <= 0) { > > + ret = -EINVAL; > > + dev_err(&pdev->dev, "Failed to get virtual IRQ %d\n", > > alarm_irq); > > - goto err; > > + goto err; > > + } > > } > > > > platform_set_drvdata(pdev, info); > > @@ -744,6 +746,11 @@ static int s5m_rtc_probe(struct platform_device *pdev) > > goto err; > > } > > > > + if (!info->irq) { > > + dev_info(&pdev->dev, "Alarm IRQ not available\n"); > > + return 0; > > + } > > + > > ret = devm_request_threaded_irq(&pdev->dev, info->irq, NULL, > > s5m_rtc_alarm_irq, 0, "rtc-alarm0", > > info); > > @@ -802,7 +809,7 @@ static int s5m_rtc_resume(struct device *dev) > > struct s5m_rtc_info *info = dev_get_drvdata(dev); > > int ret = 0; > > > > - if (device_may_wakeup(dev)) > > + if (info->irq && device_may_wakeup(dev)) > > ret = disable_irq_wake(info->irq); > > > > return ret; > > @@ -813,7 +820,7 @@ static int s5m_rtc_suspend(struct device *dev) > > struct s5m_rtc_info *info = dev_get_drvdata(dev); > > int ret = 0; > > > > - if (device_may_wakeup(dev)) > > + if (info->irq && device_may_wakeup(dev)) > > ret = enable_irq_wake(info->irq); > > > > return ret;