From patchwork Thu Oct 9 19:06:29 2014 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Johan Hovold X-Patchwork-Id: 5060671 Return-Path: X-Original-To: patchwork-linux-arm@patchwork.kernel.org Delivered-To: patchwork-parsemail@patchwork1.web.kernel.org Received: from mail.kernel.org (mail.kernel.org [198.145.19.201]) by patchwork1.web.kernel.org (Postfix) with ESMTP id B20779F30B for ; Thu, 9 Oct 2014 19:16:32 +0000 (UTC) Received: from mail.kernel.org (localhost [127.0.0.1]) by mail.kernel.org (Postfix) with ESMTP id DAECF2021A for ; Thu, 9 Oct 2014 19:16:31 +0000 (UTC) Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.9]) (using TLSv1.2 with cipher DHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 0BBE920222 for ; Thu, 9 Oct 2014 19:16:31 +0000 (UTC) Received: from localhost ([127.0.0.1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.80.1 #2 (Red Hat Linux)) id 1XcJ9T-0006jY-El; Thu, 09 Oct 2014 19:13:27 +0000 Received: from mail-lb0-x22a.google.com ([2a00:1450:4010:c04::22a]) by bombadil.infradead.org with esmtps (Exim 4.80.1 #2 (Red Hat Linux)) id 1XcJ8t-0006Vv-29 for linux-arm-kernel@lists.infradead.org; Thu, 09 Oct 2014 19:12:52 +0000 Received: by mail-lb0-f170.google.com with SMTP id u10so1784532lbd.1 for ; Thu, 09 Oct 2014 12:12:28 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=sender:from:to:cc:subject:date:message-id:in-reply-to:references; bh=RVM8x1Uupb0zjo88M1w95hMO9zauAGnb+57N5ZJ5zGQ=; b=fKp2MrT/XoaLkXcjhADMGcslEYA1cp0fVgMGs67pC7HQozMDFQzyng9sa0h94Dwe/D HBDl0uGYnFh48Eesa/iIy+hxPfq7pncuO8s4ydDoy07CSEveuTV3nPmIhJWaZuZQ7nC6 j3HDMAt2W69XBg4bk8RB8D7otavd1Y8YbW7y8RcglSx3AR0bDswRAztxn7432tyF8gRu JA+C5LRqgOoxKDrCAIZcIzOwu9FxdvysaCtrrjIhv1K/Ga2d5zQkV3us8eJ5mT+5Waep WZG2oIVEj8rOSire1UyAgwEuCrKo0gvBwFyHd9xBnoXv1MH+mxmf83xud7zu4zNmL4MX 0NpQ== X-Received: by 10.112.147.39 with SMTP id th7mr20154922lbb.84.1412881948726; Thu, 09 Oct 2014 12:12:28 -0700 (PDT) Received: from xi.terra (s83-177-171-8.cust.tele2.se. [83.177.171.8]) by mx.google.com with ESMTPSA id je9sm1198459lac.6.2014.10.09.12.12.26 for (version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Thu, 09 Oct 2014 12:12:27 -0700 (PDT) X-Google-Original-Sender: Received: from johan by xi.terra with local (Exim 4.84) (envelope-from ) id 1XcJ5o-0006hc-R4; Thu, 09 Oct 2014 21:09:40 +0200 From: Johan Hovold To: Alessandro Zummo , Tony Lindgren , =?UTF-8?q?Beno=C3=AEt=20Cousson?= Subject: [PATCH 07/12] rtc: omap: silence bogus power-up reset message at probe Date: Thu, 9 Oct 2014 21:06:29 +0200 Message-Id: <1412881594-25678-8-git-send-email-johan@kernel.org> X-Mailer: git-send-email 2.0.4 In-Reply-To: <1412881594-25678-1-git-send-email-johan@kernel.org> References: <1412881594-25678-1-git-send-email-johan@kernel.org> X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20141009_121251_319976_E8F35374 X-CRM114-Status: GOOD ( 15.71 ) X-Spam-Score: -0.7 (/) Cc: devicetree@vger.kernel.org, rtc-linux@googlegroups.com, Colin Foe-Parker , Lokesh Vutla , j-keerthy@ti.com, nsekhar@ti.com, linux-kernel@vger.kernel.org, Felipe Balbi , Johan Hovold , t-kristo@ti.com, linux-arm-kernel@lists.infradead.org, AnilKumar Ch , Andrew Morton , linux-omap@vger.kernel.org, Guenter Roeck X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.18-1 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , MIME-Version: 1.0 Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+patchwork-linux-arm=patchwork.kernel.org@lists.infradead.org X-Spam-Status: No, score=-1.8 required=5.0 tests=BAYES_00,DKIM_SIGNED, RCVD_IN_DNSWL_NONE, T_DKIM_INVALID, T_RP_MATCHES_RCVD, UNPARSEABLE_RELAY autolearn=no version=3.3.1 X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on mail.kernel.org X-Virus-Scanned: ClamAV using ClamSMTP Some legacy RTC IP revisions has a power-up reset flag in the status register that later revisions lack. As this flag is always read back as set on later revisions (or is overloaded with a different flag), make sure to only clear the flag and print the info message on legacy platforms. Signed-off-by: Johan Hovold Reviewed-by: Felipe Balbi --- drivers/rtc/rtc-omap.c | 23 +++++++++++++++++------ 1 file changed, 17 insertions(+), 6 deletions(-) diff --git a/drivers/rtc/rtc-omap.c b/drivers/rtc/rtc-omap.c index 1c58920b0c88..0ef016553a97 100644 --- a/drivers/rtc/rtc-omap.c +++ b/drivers/rtc/rtc-omap.c @@ -118,6 +118,12 @@ */ #define OMAP_RTC_HAS_32KCLK_EN BIT(2) +/* + * Some legacy RTC IP revisions has a power-up reset flag which later + * revisions lack. + */ +#define OMAP_RTC_HAS_POWER_UP_RESET BIT(3) + static void __iomem *rtc_base; #define rtc_read(addr) readb(rtc_base + (addr)) @@ -347,6 +353,7 @@ static int omap_rtc_timer; static struct platform_device_id omap_rtc_devtype[] = { { .name = DRIVER_NAME, + .driver_data = OMAP_RTC_HAS_POWER_UP_RESET, }, [OMAP_RTC_DATA_AM3352_IDX] = { .name = "am3352-rtc", @@ -376,7 +383,7 @@ static int __init omap_rtc_probe(struct platform_device *pdev) { struct resource *res; struct rtc_device *rtc; - u8 reg, new_ctrl; + u8 reg, mask, new_ctrl; const struct platform_device_id *id_entry; const struct of_device_id *of_id; @@ -429,12 +436,16 @@ static int __init omap_rtc_probe(struct platform_device *pdev) /* clear old status */ reg = rtc_read(OMAP_RTC_STATUS_REG); - if (reg & (u8) OMAP_RTC_STATUS_POWER_UP) { - dev_info(&pdev->dev, "RTC power up reset detected\n"); - rtc_write(OMAP_RTC_STATUS_POWER_UP, OMAP_RTC_STATUS_REG); + + mask = OMAP_RTC_STATUS_ALARM; + if (id_entry->driver_data & OMAP_RTC_HAS_POWER_UP_RESET) { + mask |= OMAP_RTC_STATUS_POWER_UP; + if (reg & OMAP_RTC_STATUS_POWER_UP) + dev_info(&pdev->dev, "RTC power up reset detected\n"); } - if (reg & (u8) OMAP_RTC_STATUS_ALARM) - rtc_write(OMAP_RTC_STATUS_ALARM, OMAP_RTC_STATUS_REG); + + if (reg & mask) + rtc_write(reg & mask, OMAP_RTC_STATUS_REG); /* handle periodic and alarm irqs */ if (devm_request_irq(&pdev->dev, omap_rtc_timer, rtc_irq, 0,