Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753060AbbHUJnp (ORCPT ); Fri, 21 Aug 2015 05:43:45 -0400 Received: from mailout3.samsung.com ([203.254.224.33]:36312 "EHLO mailout3.samsung.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752102AbbHUJnn (ORCPT ); Fri, 21 Aug 2015 05:43:43 -0400 X-AuditID: cbfee691-f79ca6d00000456a-55-55d6f2cc4645 From: Joonyoung Shim To: rtc-linux@googlegroups.com Cc: linux-samsung-soc@vger.kernel.org, linux-kernel@vger.kernel.org, stable@vger.kernel.org, alexandre.belloni@free-electrons.com, a.zummo@towertech.it, sbkim73@samsung.com, k.kozlowski@samsung.com, jy0922.shim@samsung.com Subject: [PATCH v2] rtc: s5m: fix to update ctrl register Date: Fri, 21 Aug 2015 18:43:41 +0900 Message-id: <1440150221-2609-1-git-send-email-jy0922.shim@samsung.com> X-Mailer: git-send-email 1.9.1 X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFjrHLMWRmVeSWpSXmKPExsWyRsSkQPfMp2uhBg0bNC2WXLzKbtFxbTGT xYt7F1ksXr8wtLi8aw6bxYzz+5gs9nd2MFpcXPGFyWLBxkeMDpweTzZdZPTYM/Ekm0ffllWM HtPn/WTy+LxJLoA1issmJTUnsyy1SN8ugSvj9MYTjAWt/BWPHrYwNjB28XQxcnJICJhIfF2y lxHCFpO4cG89WxcjF4eQwApGiac959hgij7vuMsIkZjFKPH8xCmoqh+MEl9Oz2EFqWIT0JO4 s+04E4gtIiAncfPgOyaQImaBJ4wS/2b/BysSFrCUeH/yKwuIzSKgKrHx3SJmEJtXwE3iceNr qHVyEiePTWYFaZYQmMwusfTAelaIBgGJb5MPATVzACVkJTYdYIaol5Q4uOIGywRGwQWMDKsY RVMLkguKk9KLTPWKE3OLS/PS9ZLzczcxAoP59L9nE3cw3j9gfYhRgINRiYd3RuS1UCHWxLLi ytxDjKZAGyYyS4km5wNjJq8k3tDYzMjC1MTU2Mjc0kxJnFdH+mewkEB6YklqdmpqQWpRfFFp TmrxIUYmDk6pBkbjNk2LumdFoReevLuz5bAw66qpC0s/HtqltWNT28/NASsssrLKNDxOXMh5 c3v+vkzTSw/qD/L/8PCouHPmRs1r09mVtpOLGKbMXKK9/37igrqjdswPk8WqA+6xVPlpVEWZ pnD6WXXlB1m2sH7hlGh34E4Ol14Z7M3gZDphvQubclZj/G3Xv0osxRmJhlrMRcWJALqEDJZh AgAA X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFprNIsWRmVeSWpSXmKPExsVy+t9jQd0zn66FGtzcr2yx5OJVdouOa4uZ LF7cu8hi8fqFocXlXXPYLGac38dksb+zg9Hi4oovTBYLNj5idOD0eLLpIqPHnokn2Tz6tqxi 9Jg+7yeTx+dNcgGsUQ2MNhmpiSmpRQqpecn5KZl56bZK3sHxzvGmZgaGuoaWFuZKCnmJuam2 Si4+AbpumTlABykplCXmlAKFAhKLi5X07TBNCA1x07WAaYzQ9Q0JgusxMkADCWsYM05vPMFY 0Mpf8ehhC2MDYxdPFyMnh4SAicTnHXcZIWwxiQv31rN1MXJxCAnMYpR4fuIUlPODUeLL6Tms IFVsAnoSd7YdZwKxRQTkJG4efMcEUsQs8IRR4t/s/2BFwgKWEu9PfmUBsVkEVCU2vlvEDGLz CrhJPG58zQaxTk7i5LHJrBMYuRcwMqxilEgtSC4oTkrPNcpLLdcrTswtLs1L10vOz93ECI6Y Z9I7GA/vcj/EKMDBqMTDOyPyWqgQa2JZcWXuIUYJDmYlEV7rF0Ah3pTEyqrUovz4otKc1OJD jKZAB0xklhJNzgdGc15JvKGxiZmRpZG5oYWRsbmSOK++yaZQIYH0xJLU7NTUgtQimD4mDk6p BkbvnTmzXj7y2BqzVy1n2t/YSVLfmv+vF7xx1/ua5LsToVLnjkbZfJj8hiOj7J319Rr5J/dy q2+pNi/IPHk9L7lG/FiK4LKO87/YjfzOPDue+rB/pkfJic/7umW7+3d97Dz7PVDoVoDyZ/7w 3Z0MB1r3T1+nzqHMnH/2wrydukELNNyKrgWIyWUpsRRnJBpqMRcVJwIAjgKyWK4CAAA= DLP-Filter: Pass X-MTR: 20000000000000000@CPGS X-CFilter-Loop: Reflected Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 2118 Lines: 57 According to datasheet, the S2MPS13X and S2MPS14X should update write buffer via setting WUDR bit to high after ctrl register is written. If not, ALARM interrupt of rtc-s5m doesn't happen first time when i use tools/testing/selftests/timers/rtctest.c test program and hour format is used to 12 hour mode in Odroid-XU3 board. One more issue is the RTC doesn't keep time on Odroid-XU3 board when i turn on board after power off even if RTC battery is connected. It can be solved as setting WUDR & RUDR bits to high at the same time after RTC_CTRL register is written. It's same with condition of only writing ALARM registers, so this is for only S2MPS14 and we should set WUDR & A_UDR bits to high on S2MPS13. I can't find any reasonable description about this like fix from datasheet, but can find similar codes from rtc driver source of hardkernel kernel and vender kernel. Signed-off-by: Joonyoung Shim Cc: # v3.16 --- Changelog for v2: - update commit description and code to fix time keeping problem - update the stable tag with the kernel version drivers/rtc/rtc-s5m.c | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/drivers/rtc/rtc-s5m.c b/drivers/rtc/rtc-s5m.c index 8c70d78..646bf45 100644 --- a/drivers/rtc/rtc-s5m.c +++ b/drivers/rtc/rtc-s5m.c @@ -635,6 +635,16 @@ static int s5m8767_rtc_init_reg(struct s5m_rtc_info *info) case S2MPS13X: data[0] = (0 << BCD_EN_SHIFT) | (1 << MODEL24_SHIFT); ret = regmap_write(info->regmap, info->regs->ctrl, data[0]); + if (ret < 0) + break; + + /* + * Should set WUDR & (RUDR or AUDR) bits to high after writing + * RTC_CTRL register like writing Alarm registers. We can't find + * the description from datasheet but vender code does that + * really. + */ + ret = s5m8767_rtc_set_alarm_reg(info); break; default: -- 1.9.1 -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/