From: Johan Hovold <johan@kernel.org>
To: Felipe Balbi <balbi@ti.com>
Cc: "Johan Hovold" <johan@kernel.org>,
"Alessandro Zummo" <a.zummo@towertech.it>,
"Tony Lindgren" <tony@atomide.com>,
"Benoît Cousson" <bcousson@baylibre.com>,
"Andrew Morton" <akpm@linux-foundation.org>,
"Lokesh Vutla" <lokeshvutla@ti.com>,
"Guenter Roeck" <linux@roeck-us.net>,
"Colin Foe-Parker" <colin.foeparker@logicpd.com>,
nsekhar@ti.com, t-kristo@ti.com, j-keerthy@ti.com,
linux-omap@vger.kernel.org, linux-arm-kernel@lists.infradead.org,
devicetree@vger.kernel.org, rtc-linux@googlegroups.com,
linux-kernel@vger.kernel.org
Subject: Re: [PATCH 03/12] rtc: omap: fix class-device registration
Date: Sat, 11 Oct 2014 11:59:47 +0200 [thread overview]
Message-ID: <20141011095947.GB18988@localhost> (raw)
In-Reply-To: <20141010175919.GO31348@saruman>
On Fri, Oct 10, 2014 at 12:59:30PM -0500, Felipe Balbi wrote:
> On Thu, Oct 09, 2014 at 09:06:25PM +0200, Johan Hovold wrote:
> > Make sure not to register the class device until after it has been
> > configured and interrupt handlers registered at probe.
> >
> > Currently, the device is not fully configured (e.g. 24-hour mode) when
> > the class device is registered, something which involves driver
> > callbacks for example to read the current time.
> >
> > This reordering also prevents user space from enabling an alarm before
> > an interrupt handler has been registered.
> >
> > Note that the interrupts are now registered using the platform-device
> > rather than class-device name.
> >
> > Signed-off-by: Johan Hovold <johan@kernel.org>
> > ---
> > drivers/rtc/rtc-omap.c | 32 +++++++++++++++++---------------
> > 1 file changed, 17 insertions(+), 15 deletions(-)
> >
> > diff --git a/drivers/rtc/rtc-omap.c b/drivers/rtc/rtc-omap.c
> > index 828cb9983cc2..2eca141e784e 100644
> > --- a/drivers/rtc/rtc-omap.c
> > +++ b/drivers/rtc/rtc-omap.c
> > @@ -147,8 +147,9 @@ static void rtc_wait_not_busy(void)
> > /* now we have ~15 usec to read/write various registers */
> > }
> >
> > -static irqreturn_t rtc_irq(int irq, void *rtc)
> > +static irqreturn_t rtc_irq(int irq, void *dev_id)
> > {
> > + struct rtc_device *rtc = platform_get_drvdata(dev_id);
> > unsigned long events = 0;
> > u8 irq_data;
> >
> > @@ -164,7 +165,8 @@ static irqreturn_t rtc_irq(int irq, void *rtc)
> > if (irq_data & OMAP_RTC_STATUS_1S_EVENT)
> > events |= RTC_IRQF | RTC_UF;
> >
> > - rtc_update_irq(rtc, 1, events);
> > + if (rtc)
> > + rtc_update_irq(rtc, 1, events);
> >
> > return IRQ_HANDLED;
> > }
> > @@ -416,17 +418,6 @@ static int __init omap_rtc_probe(struct platform_device *pdev)
> > rtc_writel(KICK1_VALUE, OMAP_RTC_KICK1_REG);
> > }
> >
> > - device_init_wakeup(&pdev->dev, true);
> > -
> > - rtc = devm_rtc_device_register(&pdev->dev, pdev->name,
> > - &omap_rtc_ops, THIS_MODULE);
> > - if (IS_ERR(rtc)) {
> > - pr_debug("%s: can't register RTC device, err %ld\n",
> > - pdev->name, PTR_ERR(rtc));
> > - goto fail0;
> > - }
> > - platform_set_drvdata(pdev, rtc);
> > -
> > /* clear pending irqs, and set 1/second periodic,
> > * which we'll use instead of update irqs
> > */
> > @@ -450,14 +441,14 @@ static int __init omap_rtc_probe(struct platform_device *pdev)
> >
> > /* handle periodic and alarm irqs */
> > if (devm_request_irq(&pdev->dev, omap_rtc_timer, rtc_irq, 0,
> > - dev_name(&rtc->dev), rtc)) {
> > + dev_name(&pdev->dev), pdev)) {
> > pr_debug("%s: RTC timer interrupt IRQ%d already claimed\n",
> > pdev->name, omap_rtc_timer);
> > goto fail0;
> > }
> > if ((omap_rtc_timer != omap_rtc_alarm) &&
> > (devm_request_irq(&pdev->dev, omap_rtc_alarm, rtc_irq, 0,
> > - dev_name(&rtc->dev), rtc))) {
> > + dev_name(&pdev->dev), pdev))) {
>
> i don't get it. Why pass pdev as cookie when all you need is rtc ?
> Doesn't sound very good to me. Also, IRQ handler *must* be registered
> only after RTC is registered. That's because if you request an IRQ here,
> you could already have a pending interrupt and since you won't have a
> valid rtc pointer you won't be able to clear the interrupt line.
We don't need the class device (rtc pointer) to clear the interrupt
line. The iomem base is enough, and that is static until Lokesh adds the
struct omap_rtc_dev abstraction. Then we pass that as the cookie.
And all RTC interrupts have been disabled, and pending interrupts
cleared before registering the handlers so that should not be a problem.
To the contrary, once the class device has been registered user-space
could enable interrupts at any time and that is why everything should
have been set up before.
Johan
next prev parent reply other threads:[~2014-10-11 9:59 UTC|newest]
Thread overview: 113+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-10-09 19:06 [PATCH 00/12] rtc: omap: fixes and power-off feature Johan Hovold
2014-10-09 19:06 ` [PATCH 01/12] rtc: omap: fix clock-source configuration Johan Hovold
2014-10-10 17:55 ` Felipe Balbi
2014-10-09 19:06 ` [PATCH 02/12] rtc: omap: fix missing wakealarm attribute Johan Hovold
2014-10-10 17:55 ` Felipe Balbi
2014-10-09 19:06 ` [PATCH 03/12] rtc: omap: fix class-device registration Johan Hovold
2014-10-10 17:59 ` Felipe Balbi
2014-10-11 9:59 ` Johan Hovold [this message]
2014-10-13 15:57 ` Felipe Balbi
2014-10-09 19:06 ` [PATCH 04/12] rtc: omap: remove unused register-base define Johan Hovold
2014-10-10 17:59 ` Felipe Balbi
2014-10-09 19:06 ` [PATCH 05/12] rtc: omap: remove redundant debug message Johan Hovold
2014-10-10 17:59 ` Felipe Balbi
2014-10-09 19:06 ` [PATCH 06/12] rtc: omap: use dev_info and dev_dbg Johan Hovold
2014-10-10 18:00 ` Felipe Balbi
2014-10-09 19:06 ` [PATCH 07/12] rtc: omap: silence bogus power-up reset message at probe Johan Hovold
2014-10-10 18:00 ` Felipe Balbi
2014-10-10 18:02 ` Felipe Balbi
2014-10-11 10:20 ` Johan Hovold
2014-10-12 0:50 ` Felipe Balbi
2014-10-12 18:42 ` Johan Hovold
2014-10-13 15:56 ` Felipe Balbi
2014-10-09 19:06 ` [PATCH 08/12] rtc: omap: restore irq state after reading TC registers Johan Hovold
2014-10-10 18:02 ` Felipe Balbi
2014-10-11 10:12 ` Johan Hovold
2014-10-12 0:47 ` Felipe Balbi
2014-10-22 10:50 ` Johan Hovold
2014-10-23 18:52 ` Felipe Balbi
2014-10-09 19:06 ` [PATCH 09/12] rtc: omap: add support for pmic_power_en Johan Hovold
2014-10-10 18:07 ` Felipe Balbi
2014-10-11 10:31 ` Johan Hovold
2014-10-22 10:18 ` Johan Hovold
2014-10-23 18:52 ` Felipe Balbi
2014-10-09 19:06 ` [PATCH 10/12] rtc: omap: enable wake-up from power off Johan Hovold
2014-10-10 18:08 ` Felipe Balbi
2014-10-09 19:06 ` [PATCH 11/12] ARM: dts: am33xx: update rtc node compatible property Johan Hovold
2014-10-10 18:08 ` Felipe Balbi
2014-10-09 19:06 ` [PATCH 12/12] ARM: dts: am335x-bone-common: enable power off and rtc wake up Johan Hovold
2014-10-10 18:09 ` Felipe Balbi
2014-10-11 10:34 ` Johan Hovold
2014-10-10 17:54 ` [PATCH 00/12] rtc: omap: fixes and power-off feature Felipe Balbi
2014-10-11 9:38 ` Johan Hovold
2014-10-11 19:08 ` Tony Lindgren
2014-10-22 11:07 ` Johan Hovold
2014-10-22 15:29 ` Tony Lindgren
2014-10-22 16:21 ` Johan Hovold
2014-10-22 16:43 ` Tony Lindgren
2014-10-15 16:55 ` Felipe Balbi
2014-10-15 17:06 ` Johan Hovold
2014-10-15 17:08 ` Felipe Balbi
2014-10-22 10:23 ` Johan Hovold
2014-10-23 18:55 ` Felipe Balbi
2014-10-24 7:58 ` Johan Hovold
2014-10-21 17:37 ` [PATCH v2 00/20] " Johan Hovold
[not found] ` <1413913086-12730-1-git-send-email-johan-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org>
2014-10-21 17:37 ` [PATCH v2 01/20] rtc: omap: fix clock-source configuration Johan Hovold
2014-10-21 17:37 ` [PATCH v2 02/20] rtc: omap: fix missing wakealarm attribute Johan Hovold
2014-10-21 17:37 ` [PATCH v2 03/20] rtc: omap: fix interrupt disable at probe Johan Hovold
2014-10-21 17:37 ` [PATCH v2 04/20] rtc: omap: clean up probe error handling Johan Hovold
2014-10-21 17:37 ` [PATCH v2 05/20] rtc: omap: fix class-device registration Johan Hovold
2014-10-21 17:37 ` [PATCH v2 06/20] rtc: omap: remove unused register-base define Johan Hovold
2014-10-21 17:37 ` [PATCH v2 07/20] rtc: omap: use dev_info Johan Hovold
2014-10-21 17:37 ` [PATCH v2 08/20] rtc: omap: make platform-device id table const Johan Hovold
2014-10-21 17:37 ` [PATCH v2 09/20] rtc: omap: add device abstraction Johan Hovold
2014-10-21 17:37 ` [PATCH v2 10/20] rtc: omap: remove DRIVER_NAME macro Johan Hovold
2014-10-21 17:37 ` [PATCH v2 11/20] rtc: omap: add structured device-type info Johan Hovold
2014-10-21 17:37 ` [PATCH v2 12/20] rtc: omap: silence bogus power-up reset message at probe Johan Hovold
2014-10-21 17:37 ` [PATCH v2 13/20] rtc: omap: add helper to read raw bcd time Johan Hovold
2014-10-21 17:38 ` [PATCH v2 14/20] rtc: omap: add helper to read 32-bit registers Johan Hovold
2014-10-21 17:38 ` [PATCH v2 15/20] rtc: omap: add support for pmic_power_en Johan Hovold
2014-10-21 17:38 ` [PATCH v2 16/20] rtc: omap: enable wake-up from power off Johan Hovold
2014-10-21 17:38 ` [PATCH v2 17/20] rtc: omap: fix minor coding style issues Johan Hovold
2014-10-21 17:38 ` [PATCH v2 18/20] rtc: omap: add copyright entry Johan Hovold
2014-10-21 17:38 ` [PATCH v2 19/20] ARM: dts: am33xx: update rtc-node compatible property Johan Hovold
2014-10-21 17:38 ` [PATCH v2 20/20] ARM: dts: am335x-boneblack: enable power off and rtc wake up Johan Hovold
2014-10-24 16:08 ` [PATCH v2 00/20] rtc: omap: fixes and power-off feature Felipe Balbi
2014-10-24 19:02 ` Johan Hovold
2014-10-24 19:25 ` Felipe Balbi
2014-10-24 19:29 ` Felipe Balbi
2014-10-24 19:36 ` Johan Hovold
2014-10-24 19:44 ` Felipe Balbi
2014-10-24 19:55 ` Johan Hovold
2014-10-24 20:08 ` Felipe Balbi
2014-10-27 23:22 ` Andrew Morton
2014-10-28 0:25 ` Russell King - ARM Linux
[not found] ` <20141028002552.GX12379-l+eeeJia6m9vn6HldHNs0ANdhmdF6hFW@public.gmane.org>
2014-10-28 8:16 ` Johan Hovold
2014-10-28 8:47 ` Russell King - ARM Linux
2014-10-28 13:12 ` Johan Hovold
2014-10-28 15:16 ` Russell King - ARM Linux
2014-10-29 12:34 ` Johan Hovold
2014-10-29 12:55 ` Romain Perier
[not found] ` <CABgxDo+ewxNwb3RrBVZA7kqYMvSujLb9U6A6FCvnHQH1W8V0kg-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2014-10-29 13:00 ` Johan Hovold
2014-10-29 13:11 ` Romain Perier
2014-10-29 13:44 ` Johan Hovold
2014-10-29 13:10 ` Russell King - ARM Linux
2014-10-29 13:22 ` Johan Hovold
2014-10-29 15:25 ` Guenter Roeck
2014-10-29 15:51 ` Johan Hovold
2014-10-30 10:01 ` Johan Hovold
2014-10-29 13:20 ` Guenter Roeck
2014-10-29 13:35 ` Johan Hovold
2014-10-29 15:36 ` Guenter Roeck
2014-10-29 15:54 ` Johan Hovold
2014-10-27 8:09 ` [PATCH v3] rtc: omap: add support for pmic_power_en Johan Hovold
2014-10-27 16:45 ` Felipe Balbi
2014-10-27 16:56 ` Johan Hovold
2014-10-27 17:09 ` Felipe Balbi
2014-10-27 22:40 ` Andrew Morton
[not found] ` <20141027154031.4492ea11d401045ca04a3ff8-de/tnXTf+JLsfHDXvbKv3WD2FQJk+8+b@public.gmane.org>
2014-10-28 8:36 ` Johan Hovold
2014-10-28 21:18 ` Andrew Morton
2014-10-29 12:46 ` Johan Hovold
2014-10-29 12:50 ` Johan Hovold
2014-10-29 19:14 ` Andrew Morton
2014-10-30 9:55 ` [PATCH v4] " Johan Hovold
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20141011095947.GB18988@localhost \
--to=johan@kernel.org \
--cc=a.zummo@towertech.it \
--cc=akpm@linux-foundation.org \
--cc=balbi@ti.com \
--cc=bcousson@baylibre.com \
--cc=colin.foeparker@logicpd.com \
--cc=devicetree@vger.kernel.org \
--cc=j-keerthy@ti.com \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-omap@vger.kernel.org \
--cc=linux@roeck-us.net \
--cc=lokeshvutla@ti.com \
--cc=nsekhar@ti.com \
--cc=rtc-linux@googlegroups.com \
--cc=t-kristo@ti.com \
--cc=tony@atomide.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).