From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1756458AbbJ2FH1 (ORCPT ); Thu, 29 Oct 2015 01:07:27 -0400 Received: from mailout3.w1.samsung.com ([210.118.77.13]:10725 "EHLO mailout3.w1.samsung.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751788AbbJ2FHZ (ORCPT ); Thu, 29 Oct 2015 01:07:25 -0400 X-AuditID: cbfec7f5-f794b6d000001495-8a-5631a98987d8 Subject: Re: [PATCH v4 4/4] drivers/rtc/rtc-s5m.c: add support for S2MPS15 RTC To: Alim Akhtar , lee.jones@linaro.org, broonie@kernel.org References: <1446094723-6212-1-git-send-email-alim.akhtar@samsung.com> <1446094723-6212-5-git-send-email-alim.akhtar@samsung.com> Cc: linux-samsung-soc@vger.kernel.org, rtc-linux@googlegroups.com, linux-kernel@vger.kernel.org, Alexandre Belloni From: Krzysztof Kozlowski X-Enigmail-Draft-Status: N1110 Message-id: <5631A982.2050603@samsung.com> Date: Thu, 29 Oct 2015 14:07:14 +0900 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:38.0) Gecko/20100101 Thunderbird/38.3.0 MIME-version: 1.0 In-reply-to: <1446094723-6212-5-git-send-email-alim.akhtar@samsung.com> Content-type: text/plain; charset=windows-1252 Content-transfer-encoding: 7bit X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFvrILMWRmVeSWpSXmKPExsVy+t/xK7qdKw3DDK416Vh0XFvMZPFg3jY2 i6kPn7BZvH5haHH/61FGi8u75rBZzDi/j8lif2cHowOHx5NNFxk99kw8yeaxaVUnm8eda3vY PPq2rGL0+LxJLoAtissmJTUnsyy1SN8ugStjVfc09oKnuhUXXp5hbmB8otLFyMkhIWAi8WZK ExOELSZx4d56ti5GLg4hgaWMEh/ePmaEcL4wSnyc+Y0dpEpYwE/i0LQOMFtEIFRixvwHzBBF zYwSvauugDnMAnMZJV5s/8EIUsUmYCyxefkSNogdchK93ZNYQGxeAS2JVTM+gE1iEVCVOHBx A9gdogIREhMnNLBC1AhK/Jh8D6yeU8BdYs26PUA1HEAL9CTuX9QCCTMLyEtsXvOWeQKj4Cwk HbMQqmYhqVrAyLyKUTS1NLmgOCk910ivODG3uDQvXS85P3cTIyQivu5gXHrM6hCjAAejEg/v yhbDMCHWxLLiytxDjBIczEoivNIsQCHelMTKqtSi/Pii0pzU4kOM0hwsSuK8M3e9DxESSE8s Sc1OTS1ILYLJMnFwSjUwRtXVmF1lk9ljdNmw7OFm9zqNn0v+W+zsTzha9/R797Evl26+M+HM DZ7NXLpNqldTeuO3pw92vQxt2FkX87m9y90yR8nmJ+fF7Y9/fs9htAx1eDI78ea7RX2lcdaL 9G4oyTQlsrof1am58db8sGSBOf/CNuF5HysLqyttOhRnP0wIXuX7Os9CiaU4I9FQi7moOBEA PRe1eYQCAAA= Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On 29.10.2015 13:58, Alim Akhtar wrote: > RTC found in s2mps15 is almost same as one found on s2mps14/13 > with few differences in RTC_UPDATE register fields, like > bit fields are changed for WUDR and AUDR. > This patch add required changes to enable s2mps15 rtc timer. > > Cc: Alexandre Belloni > Signed-off-by: Alim Akhtar > --- > drivers/rtc/rtc-s5m.c | 20 ++++++++++++++++++-- > include/linux/mfd/samsung/rtc.h | 4 ++++ > 2 files changed, 22 insertions(+), 2 deletions(-) Oh, this is totally different than previous patch and changelog does not mention these changes. Was the previous RTC patch tested? Here the AUDR and WUDR seem to be reversed... oh, that is strange. :) Best regards, Krzysztof > > diff --git a/drivers/rtc/rtc-s5m.c b/drivers/rtc/rtc-s5m.c > index f2504b4eef34..0d106a99958f 100644 > --- a/drivers/rtc/rtc-s5m.c > +++ b/drivers/rtc/rtc-s5m.c > @@ -188,6 +188,7 @@ static inline int s5m_check_peding_alarm_interrupt(struct s5m_rtc_info *info, > ret = regmap_read(info->regmap, S5M_RTC_STATUS, &val); > val &= S5M_ALARM0_STATUS; > break; > + case S2MPS15X: > case S2MPS14X: > case S2MPS13X: > ret = regmap_read(info->s5m87xx->regmap_pmic, S2MPS14_REG_ST2, > @@ -223,6 +224,9 @@ static inline int s5m8767_rtc_set_time_reg(struct s5m_rtc_info *info) > if (info->device_type == S5M8763X || info->device_type == S5M8767X) > data |= S5M_RTC_TIME_EN_MASK; > > + if (info->device_type == S2MPS15X) > + data |= S2MPS15_RTC_WUDR_MASK; > + > ret = regmap_write(info->regmap, info->regs->rtc_udr_update, data); > if (ret < 0) { > dev_err(info->dev, "failed to write update reg(%d)\n", ret); > @@ -252,6 +256,9 @@ static inline int s5m8767_rtc_set_alarm_reg(struct s5m_rtc_info *info) > case S5M8767X: > data &= ~S5M_RTC_TIME_EN_MASK; > break; > + case S2MPS15X: > + data |= S2MPS15_RTC_AUDR_MASK; > + break; > case S2MPS14X: > data |= S2MPS_RTC_RUDR_MASK; > break; > @@ -275,7 +282,6 @@ static inline int s5m8767_rtc_set_alarm_reg(struct s5m_rtc_info *info) > if (info->device_type == S2MPS13X) > regmap_update_bits(info->regmap, info->regs->rtc_udr_update, > S2MPS13_RTC_AUDR_MASK, 0); > - > return ret; > } > > @@ -317,7 +323,8 @@ static int s5m_rtc_read_time(struct device *dev, struct rtc_time *tm) > u8 data[info->regs->regs_count]; > int ret; > > - if (info->device_type == S2MPS14X || info->device_type == S2MPS13X) { > + if (info->device_type == S2MPS15X || info->device_type == S2MPS14X || > + info->device_type == S2MPS13X) { > ret = regmap_update_bits(info->regmap, > info->regs->rtc_udr_update, > S2MPS_RTC_RUDR_MASK, S2MPS_RTC_RUDR_MASK); > @@ -339,6 +346,7 @@ static int s5m_rtc_read_time(struct device *dev, struct rtc_time *tm) > break; > > case S5M8767X: > + case S2MPS15X: > case S2MPS14X: > case S2MPS13X: > s5m8767_data_to_tm(data, tm, info->rtc_24hr_mode); > @@ -366,6 +374,7 @@ static int s5m_rtc_set_time(struct device *dev, struct rtc_time *tm) > s5m8763_tm_to_data(tm, data); > break; > case S5M8767X: > + case S2MPS15X: > case S2MPS14X: > case S2MPS13X: > ret = s5m8767_tm_to_data(tm, data); > @@ -414,6 +423,7 @@ static int s5m_rtc_read_alarm(struct device *dev, struct rtc_wkalrm *alrm) > break; > > case S5M8767X: > + case S2MPS15X: > case S2MPS14X: > case S2MPS13X: > s5m8767_data_to_tm(data, &alrm->time, info->rtc_24hr_mode); > @@ -463,6 +473,7 @@ static int s5m_rtc_stop_alarm(struct s5m_rtc_info *info) > break; > > case S5M8767X: > + case S2MPS15X: > case S2MPS14X: > case S2MPS13X: > for (i = 0; i < info->regs->regs_count; i++) > @@ -508,6 +519,7 @@ static int s5m_rtc_start_alarm(struct s5m_rtc_info *info) > break; > > case S5M8767X: > + case S2MPS15X: > case S2MPS14X: > case S2MPS13X: > data[RTC_SEC] |= ALARM_ENABLE_MASK; > @@ -548,6 +560,7 @@ static int s5m_rtc_set_alarm(struct device *dev, struct rtc_wkalrm *alrm) > break; > > case S5M8767X: > + case S2MPS15X: > case S2MPS14X: > case S2MPS13X: > s5m8767_tm_to_data(&alrm->time, data); > @@ -631,6 +644,7 @@ static int s5m8767_rtc_init_reg(struct s5m_rtc_info *info) > ret = regmap_raw_write(info->regmap, S5M_ALARM0_CONF, data, 2); > break; > > + case S2MPS15X: > case S2MPS14X: > case S2MPS13X: > data[0] = (0 << BCD_EN_SHIFT) | (1 << MODEL24_SHIFT); > @@ -679,6 +693,7 @@ static int s5m_rtc_probe(struct platform_device *pdev) > return -ENOMEM; > > switch (platform_get_device_id(pdev)->driver_data) { > + case S2MPS15X: > case S2MPS14X: > case S2MPS13X: > regmap_cfg = &s2mps14_rtc_regmap_config; > @@ -805,6 +820,7 @@ static const struct platform_device_id s5m_rtc_id[] = { > { "s5m-rtc", S5M8767X }, > { "s2mps13-rtc", S2MPS13X }, > { "s2mps14-rtc", S2MPS14X }, > + { "s2mps15-rtc", S2MPS15X }, > { }, > }; > MODULE_DEVICE_TABLE(platform, s5m_rtc_id); > diff --git a/include/linux/mfd/samsung/rtc.h b/include/linux/mfd/samsung/rtc.h > index 29c30ac36020..0be45fccc52b 100644 > --- a/include/linux/mfd/samsung/rtc.h > +++ b/include/linux/mfd/samsung/rtc.h > @@ -107,6 +107,10 @@ enum s2mps_rtc_reg { > #define S2MPS_RTC_WUDR_MASK (1 << S2MPS_RTC_WUDR_SHIFT) > #define S2MPS13_RTC_AUDR_SHIFT 1 > #define S2MPS13_RTC_AUDR_MASK (1 << S2MPS13_RTC_AUDR_SHIFT) > +#define S2MPS15_RTC_AUDR_SHIFT 4 > +#define S2MPS15_RTC_AUDR_MASK (1 << S2MPS15_RTC_AUDR_SHIFT) > +#define S2MPS15_RTC_WUDR_SHIFT 1 > +#define S2MPS15_RTC_WUDR_MASK (1 << S2MPS15_RTC_WUDR_SHIFT) > #define S2MPS_RTC_RUDR_SHIFT 0 > #define S2MPS_RTC_RUDR_MASK (1 << S2MPS_RTC_RUDR_SHIFT) > #define RTC_TCON_SHIFT 1 >