From patchwork Tue Oct 21 17:37:51 2014 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Johan Hovold X-Patchwork-Id: 401646 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Received: from mail-lb0-x23c.google.com (mail-lb0-x23c.google.com [IPv6:2a00:1450:4010:c04::23c]) (using TLSv1 with cipher ECDHE-RSA-RC4-SHA (128/128 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 01DDB14009E for ; Wed, 22 Oct 2014 04:44:56 +1100 (AEDT) Received: by mail-lb0-f188.google.com with SMTP id 10sf150560lbg.25 for ; Tue, 21 Oct 2014 10:44:53 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=googlegroups.com; s=20120806; h=mime-version:sender:from:to:cc:subject:date:message-id:in-reply-to :references:x-original-sender:x-original-authentication-results :reply-to:precedence:mailing-list:list-id:list-post:list-help :list-archive:list-subscribe:list-unsubscribe:content-type; bh=fcVzb3GReEIzPMsz8uEZdt8JzOhDHkm+olaXeloj8Lc=; b=CeG/HPmyPgvQ7p8g/gYbmIa94yy1lw8VWk/nxJjWY6UPhwZckYNzmUi6/eX+EZfVuZ matZVFrqnHbhimwoVhqYOPqfdRVne5nRvirrtHaXk8YVoAxqeCqCHM5wMLwGb4VQs92E QGxTImUCTEIHUJDCCoskdQ+UjvfozQ04mxs5U55D7dSjYvYgqB4bNJ49w14/ppoUSC+V NWfp5Q0y5ScjUkZjY4i++DRPKEQCR756vPUZQtAShAoB3u9mZR5S4YQGN4ic5h8s4kUS JCW1RjcPTqOQQmUDhMopOP8a885VBqcM7mRaWzCyhXT5T1Hfp+2n12Es1XKCwrctB0O8 s/NQ== X-Received: by 10.152.234.139 with SMTP id ue11mr27629lac.15.1413913493281; Tue, 21 Oct 2014 10:44:53 -0700 (PDT) MIME-Version: 1.0 X-BeenThere: rtc-linux@googlegroups.com Received: by 10.152.20.42 with SMTP id k10ls81895lae.66.gmail; Tue, 21 Oct 2014 10:44:52 -0700 (PDT) X-Received: by 10.112.217.102 with SMTP id ox6mr300460lbc.19.1413913492546; Tue, 21 Oct 2014 10:44:52 -0700 (PDT) Received: from mail-lb0-x22d.google.com (mail-lb0-x22d.google.com. [2a00:1450:4010:c04::22d]) by gmr-mx.google.com with ESMTPS id us10si1847581lbc.1.2014.10.21.10.44.52 for (version=TLSv1 cipher=ECDHE-RSA-RC4-SHA bits=128/128); Tue, 21 Oct 2014 10:44:52 -0700 (PDT) Received-SPF: pass (google.com: domain of jhovold@gmail.com designates 2a00:1450:4010:c04::22d as permitted sender) client-ip=2a00:1450:4010:c04::22d; Received: by mail-lb0-f173.google.com with SMTP id 10so1424023lbg.18 for ; Tue, 21 Oct 2014 10:44:52 -0700 (PDT) X-Received: by 10.152.23.3 with SMTP id i3mr12214713laf.53.1413913492466; Tue, 21 Oct 2014 10:44:52 -0700 (PDT) Received: from xi.terra (s83-177-171-8.cust.tele2.se. [83.177.171.8]) by mx.google.com with ESMTPSA id l13sm4805760lbh.32.2014.10.21.10.44.49 for (version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 21 Oct 2014 10:44:50 -0700 (PDT) Sender: rtc-linux@googlegroups.com Received: from johan by xi.terra with local (Exim 4.84) (envelope-from ) id 1XgdRN-0003NB-Da; Tue, 21 Oct 2014 19:41:49 +0200 From: Johan Hovold To: Alessandro Zummo , Tony Lindgren , =?UTF-8?q?Beno=C3=AEt=20Cousson?= , Felipe Balbi Cc: Andrew Morton , Lokesh Vutla , Guenter Roeck , 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, Johan Hovold Subject: [rtc-linux] [PATCH v2 05/20] rtc: omap: fix class-device registration Date: Tue, 21 Oct 2014 19:37:51 +0200 Message-Id: <1413913086-12730-6-git-send-email-johan@kernel.org> X-Mailer: git-send-email 2.0.4 In-Reply-To: <1413913086-12730-1-git-send-email-johan@kernel.org> References: <1412881594-25678-1-git-send-email-johan@kernel.org> <1413913086-12730-1-git-send-email-johan@kernel.org> X-Original-Sender: jhovold@gmail.com X-Original-Authentication-Results: gmr-mx.google.com; spf=pass (google.com: domain of jhovold@gmail.com designates 2a00:1450:4010:c04::22d as permitted sender) smtp.mail=jhovold@gmail.com; dkim=pass header.i=@gmail.com Reply-To: rtc-linux@googlegroups.com Precedence: list Mailing-list: list rtc-linux@googlegroups.com; contact rtc-linux+owners@googlegroups.com List-ID: X-Google-Group-Id: 712029733259 List-Post: , List-Help: , List-Archive: , List-Unsubscribe: , Make sure not to register the class device until after the device has been configured. 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. Signed-off-by: Johan Hovold --- drivers/rtc/rtc-omap.c | 46 +++++++++++++++++++++++----------------------- 1 file changed, 23 insertions(+), 23 deletions(-) diff --git a/drivers/rtc/rtc-omap.c b/drivers/rtc/rtc-omap.c index 6b10db5a5702..813bed270867 100644 --- a/drivers/rtc/rtc-omap.c +++ b/drivers/rtc/rtc-omap.c @@ -413,16 +413,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)) { - ret = PTR_ERR(rtc); - goto err; - } - platform_set_drvdata(pdev, rtc); - /* * disable interrupts * @@ -446,19 +436,6 @@ static int __init omap_rtc_probe(struct platform_device *pdev) if (reg & (u8) OMAP_RTC_STATUS_ALARM) rtc_write(OMAP_RTC_STATUS_ALARM, OMAP_RTC_STATUS_REG); - /* handle periodic and alarm irqs */ - ret = devm_request_irq(&pdev->dev, omap_rtc_timer, rtc_irq, 0, - dev_name(&rtc->dev), rtc); - if (ret) - goto err; - - if (omap_rtc_timer != omap_rtc_alarm) { - ret = devm_request_irq(&pdev->dev, omap_rtc_alarm, rtc_irq, 0, - dev_name(&rtc->dev), rtc); - if (ret) - goto err; - } - /* On boards with split power, RTC_ON_NOFF won't reset the RTC */ reg = rtc_read(OMAP_RTC_CTRL_REG); if (reg & (u8) OMAP_RTC_CTRL_STOP) @@ -488,6 +465,29 @@ static int __init omap_rtc_probe(struct platform_device *pdev) if (reg != new_ctrl) rtc_write(new_ctrl, OMAP_RTC_CTRL_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)) { + ret = PTR_ERR(rtc); + goto err; + } + platform_set_drvdata(pdev, rtc); + + /* handle periodic and alarm irqs */ + ret = devm_request_irq(&pdev->dev, omap_rtc_timer, rtc_irq, 0, + dev_name(&rtc->dev), rtc); + if (ret) + goto err; + + if (omap_rtc_timer != omap_rtc_alarm) { + ret = devm_request_irq(&pdev->dev, omap_rtc_alarm, rtc_irq, 0, + dev_name(&rtc->dev), rtc); + if (ret) + goto err; + } + return 0; err: