linux-rtc.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Alexandre Belloni <alexandre.belloni@bootlin.com>
To: David Virag <virag.david003@gmail.com>
Cc: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>,
	Lee Jones <lee@kernel.org>,
	Alessandro Zummo <a.zummo@towertech.it>,
	linux-kernel@vger.kernel.org, linux-samsung-soc@vger.kernel.org,
	linux-rtc@vger.kernel.org
Subject: Re: [PATCH 2/2] rtc: s5m: Drop S5M8763 support
Date: Mon, 6 Mar 2023 21:58:09 +0100	[thread overview]
Message-ID: <ZAZT4Q7I2l2gPpMX@mail.local> (raw)
In-Reply-To: <20230131183008.4451-3-virag.david003@gmail.com>

On 31/01/2023 19:30:07+0100, David Virag wrote:
> The S5M8763 MFD has no device tree compatible, and since board file
> support for it was removed, there's no way to use this MFD. After
> removing the remaining code for it from the MFD driver, also remove
> support for it in the s5m RTC driver, and all remaining references to
> it.
> 
> Signed-off-by: David Virag <virag.david003@gmail.com>
Acked-by: Alexandre Belloni <alexandre.belloni@bootlin.com>

> ---
>  drivers/rtc/rtc-s5m.c            | 82 ++------------------------------
>  include/linux/mfd/samsung/core.h |  1 -
>  include/linux/mfd/samsung/irq.h  | 50 -------------------
>  3 files changed, 3 insertions(+), 130 deletions(-)
> 
> diff --git a/drivers/rtc/rtc-s5m.c b/drivers/rtc/rtc-s5m.c
> index 4243fe6d3842..dad294a0ce2a 100644
> --- a/drivers/rtc/rtc-s5m.c
> +++ b/drivers/rtc/rtc-s5m.c
> @@ -85,7 +85,7 @@ struct s5m_rtc_reg_config {
>  	unsigned int write_alarm_udr_mask;
>  };
>  
> -/* Register map for S5M8763 and S5M8767 */
> +/* Register map for S5M8767 */
>  static const struct s5m_rtc_reg_config s5m_rtc_regs = {
>  	.regs_count		= 8,
>  	.time			= S5M_RTC_SEC,
> @@ -236,7 +236,6 @@ static int s5m_check_peding_alarm_interrupt(struct s5m_rtc_info *info,
>  
>  	switch (info->device_type) {
>  	case S5M8767X:
> -	case S5M8763X:
>  		ret = regmap_read(info->regmap, S5M_RTC_STATUS, &val);
>  		val &= S5M_ALARM0_STATUS;
>  		break;
> @@ -299,7 +298,6 @@ static int s5m8767_rtc_set_alarm_reg(struct s5m_rtc_info *info)
>  
>  	data |= info->regs->write_alarm_udr_mask;
>  	switch (info->device_type) {
> -	case S5M8763X:
>  	case S5M8767X:
>  		data &= ~S5M_RTC_TIME_EN_MASK;
>  		break;
> @@ -329,38 +327,6 @@ static int s5m8767_rtc_set_alarm_reg(struct s5m_rtc_info *info)
>  	return ret;
>  }
>  
> -static void s5m8763_data_to_tm(u8 *data, struct rtc_time *tm)
> -{
> -	tm->tm_sec = bcd2bin(data[RTC_SEC]);
> -	tm->tm_min = bcd2bin(data[RTC_MIN]);
> -
> -	if (data[RTC_HOUR] & HOUR_12) {
> -		tm->tm_hour = bcd2bin(data[RTC_HOUR] & 0x1f);
> -		if (data[RTC_HOUR] & HOUR_PM)
> -			tm->tm_hour += 12;
> -	} else {
> -		tm->tm_hour = bcd2bin(data[RTC_HOUR] & 0x3f);
> -	}
> -
> -	tm->tm_wday = data[RTC_WEEKDAY] & 0x07;
> -	tm->tm_mday = bcd2bin(data[RTC_DATE]);
> -	tm->tm_mon = bcd2bin(data[RTC_MONTH]);
> -	tm->tm_year = bcd2bin(data[RTC_YEAR1]) + bcd2bin(data[RTC_YEAR2]) * 100;
> -	tm->tm_year -= 1900;
> -}
> -
> -static void s5m8763_tm_to_data(struct rtc_time *tm, u8 *data)
> -{
> -	data[RTC_SEC] = bin2bcd(tm->tm_sec);
> -	data[RTC_MIN] = bin2bcd(tm->tm_min);
> -	data[RTC_HOUR] = bin2bcd(tm->tm_hour);
> -	data[RTC_WEEKDAY] = tm->tm_wday;
> -	data[RTC_DATE] = bin2bcd(tm->tm_mday);
> -	data[RTC_MONTH] = bin2bcd(tm->tm_mon);
> -	data[RTC_YEAR1] = bin2bcd(tm->tm_year % 100);
> -	data[RTC_YEAR2] = bin2bcd((tm->tm_year + 1900) / 100);
> -}
> -
>  static int s5m_rtc_read_time(struct device *dev, struct rtc_time *tm)
>  {
>  	struct s5m_rtc_info *info = dev_get_drvdata(dev);
> @@ -385,10 +351,6 @@ static int s5m_rtc_read_time(struct device *dev, struct rtc_time *tm)
>  		return ret;
>  
>  	switch (info->device_type) {
> -	case S5M8763X:
> -		s5m8763_data_to_tm(data, tm);
> -		break;
> -
>  	case S5M8767X:
>  	case S2MPS15X:
>  	case S2MPS14X:
> @@ -412,9 +374,6 @@ static int s5m_rtc_set_time(struct device *dev, struct rtc_time *tm)
>  	int ret = 0;
>  
>  	switch (info->device_type) {
> -	case S5M8763X:
> -		s5m8763_tm_to_data(tm, data);
> -		break;
>  	case S5M8767X:
>  	case S2MPS15X:
>  	case S2MPS14X:
> @@ -444,7 +403,6 @@ static int s5m_rtc_read_alarm(struct device *dev, struct rtc_wkalrm *alrm)
>  {
>  	struct s5m_rtc_info *info = dev_get_drvdata(dev);
>  	u8 data[RTC_MAX_NUM_TIME_REGS];
> -	unsigned int val;
>  	int ret, i;
>  
>  	ret = regmap_bulk_read(info->regmap, info->regs->alarm0, data,
> @@ -453,15 +411,6 @@ static int s5m_rtc_read_alarm(struct device *dev, struct rtc_wkalrm *alrm)
>  		return ret;
>  
>  	switch (info->device_type) {
> -	case S5M8763X:
> -		s5m8763_data_to_tm(data, &alrm->time);
> -		ret = regmap_read(info->regmap, S5M_ALARM0_CONF, &val);
> -		if (ret < 0)
> -			return ret;
> -
> -		alrm->enabled = !!val;
> -		break;
> -
>  	case S5M8767X:
>  	case S2MPS15X:
>  	case S2MPS14X:
> @@ -500,10 +449,6 @@ static int s5m_rtc_stop_alarm(struct s5m_rtc_info *info)
>  	dev_dbg(info->dev, "%s: %ptR(%d)\n", __func__, &tm, tm.tm_wday);
>  
>  	switch (info->device_type) {
> -	case S5M8763X:
> -		ret = regmap_write(info->regmap, S5M_ALARM0_CONF, 0);
> -		break;
> -
>  	case S5M8767X:
>  	case S2MPS15X:
>  	case S2MPS14X:
> @@ -531,7 +476,6 @@ static int s5m_rtc_start_alarm(struct s5m_rtc_info *info)
>  {
>  	int ret;
>  	u8 data[RTC_MAX_NUM_TIME_REGS];
> -	u8 alarm0_conf;
>  	struct rtc_time tm;
>  
>  	ret = regmap_bulk_read(info->regmap, info->regs->alarm0, data,
> @@ -543,11 +487,6 @@ static int s5m_rtc_start_alarm(struct s5m_rtc_info *info)
>  	dev_dbg(info->dev, "%s: %ptR(%d)\n", __func__, &tm, tm.tm_wday);
>  
>  	switch (info->device_type) {
> -	case S5M8763X:
> -		alarm0_conf = 0x77;
> -		ret = regmap_write(info->regmap, S5M_ALARM0_CONF, alarm0_conf);
> -		break;
> -
>  	case S5M8767X:
>  	case S2MPS15X:
>  	case S2MPS14X:
> @@ -585,10 +524,6 @@ static int s5m_rtc_set_alarm(struct device *dev, struct rtc_wkalrm *alrm)
>  	int ret;
>  
>  	switch (info->device_type) {
> -	case S5M8763X:
> -		s5m8763_tm_to_data(&alrm->time, data);
> -		break;
> -
>  	case S5M8767X:
>  	case S2MPS15X:
>  	case S2MPS14X:
> @@ -655,7 +590,6 @@ static int s5m8767_rtc_init_reg(struct s5m_rtc_info *info)
>  	int ret;
>  
>  	switch (info->device_type) {
> -	case S5M8763X:
>  	case S5M8767X:
>  		/* UDR update time. Default of 7.32 ms is too long. */
>  		ret = regmap_update_bits(info->regmap, S5M_RTC_UDR_CON,
> @@ -729,11 +663,6 @@ static int s5m_rtc_probe(struct platform_device *pdev)
>  		info->regs = &s2mps13_rtc_regs;
>  		alarm_irq = S2MPS14_IRQ_RTCA0;
>  		break;
> -	case S5M8763X:
> -		regmap_cfg = &s5m_rtc_regmap_config;
> -		info->regs = &s5m_rtc_regs;
> -		alarm_irq = S5M8763_IRQ_ALARM0;
> -		break;
>  	case S5M8767X:
>  		regmap_cfg = &s5m_rtc_regmap_config;
>  		info->regs = &s5m_rtc_regs;
> @@ -786,13 +715,8 @@ static int s5m_rtc_probe(struct platform_device *pdev)
>  
>  	info->rtc_dev->ops = &s5m_rtc_ops;
>  
> -	if (info->device_type == S5M8763X) {
> -		info->rtc_dev->range_min = RTC_TIMESTAMP_BEGIN_0000;
> -		info->rtc_dev->range_max = RTC_TIMESTAMP_END_9999;
> -	} else {
> -		info->rtc_dev->range_min = RTC_TIMESTAMP_BEGIN_2000;
> -		info->rtc_dev->range_max = RTC_TIMESTAMP_END_2099;
> -	}
> +	info->rtc_dev->range_min = RTC_TIMESTAMP_BEGIN_2000;
> +	info->rtc_dev->range_max = RTC_TIMESTAMP_END_2099;
>  
>  	if (!info->irq) {
>  		clear_bit(RTC_FEATURE_ALARM, info->rtc_dev->features);
> diff --git a/include/linux/mfd/samsung/core.h b/include/linux/mfd/samsung/core.h
> index 07aae649a86f..a212b9f72bc9 100644
> --- a/include/linux/mfd/samsung/core.h
> +++ b/include/linux/mfd/samsung/core.h
> @@ -36,7 +36,6 @@
>  struct gpio_desc;
>  
>  enum sec_device_type {
> -	S5M8763X,
>  	S5M8767X,
>  	S2MPA01,
>  	S2MPS11X,
> diff --git a/include/linux/mfd/samsung/irq.h b/include/linux/mfd/samsung/irq.h
> index 6cfe4201a106..3fd2775eb9bb 100644
> --- a/include/linux/mfd/samsung/irq.h
> +++ b/include/linux/mfd/samsung/irq.h
> @@ -194,54 +194,4 @@ enum s5m8767_irq {
>  #define S5M8767_IRQ_RTC1S_MASK		(1 << 4)
>  #define S5M8767_IRQ_WTSR_MASK		(1 << 5)
>  
> -enum s5m8763_irq {
> -	S5M8763_IRQ_DCINF,
> -	S5M8763_IRQ_DCINR,
> -	S5M8763_IRQ_JIGF,
> -	S5M8763_IRQ_JIGR,
> -	S5M8763_IRQ_PWRONF,
> -	S5M8763_IRQ_PWRONR,
> -
> -	S5M8763_IRQ_WTSREVNT,
> -	S5M8763_IRQ_SMPLEVNT,
> -	S5M8763_IRQ_ALARM1,
> -	S5M8763_IRQ_ALARM0,
> -
> -	S5M8763_IRQ_ONKEY1S,
> -	S5M8763_IRQ_TOPOFFR,
> -	S5M8763_IRQ_DCINOVPR,
> -	S5M8763_IRQ_CHGRSTF,
> -	S5M8763_IRQ_DONER,
> -	S5M8763_IRQ_CHGFAULT,
> -
> -	S5M8763_IRQ_LOBAT1,
> -	S5M8763_IRQ_LOBAT2,
> -
> -	S5M8763_IRQ_NR,
> -};
> -
> -#define S5M8763_IRQ_DCINF_MASK		(1 << 2)
> -#define S5M8763_IRQ_DCINR_MASK		(1 << 3)
> -#define S5M8763_IRQ_JIGF_MASK		(1 << 4)
> -#define S5M8763_IRQ_JIGR_MASK		(1 << 5)
> -#define S5M8763_IRQ_PWRONF_MASK		(1 << 6)
> -#define S5M8763_IRQ_PWRONR_MASK		(1 << 7)
> -
> -#define S5M8763_IRQ_WTSREVNT_MASK	(1 << 0)
> -#define S5M8763_IRQ_SMPLEVNT_MASK	(1 << 1)
> -#define S5M8763_IRQ_ALARM1_MASK		(1 << 2)
> -#define S5M8763_IRQ_ALARM0_MASK		(1 << 3)
> -
> -#define S5M8763_IRQ_ONKEY1S_MASK	(1 << 0)
> -#define S5M8763_IRQ_TOPOFFR_MASK	(1 << 2)
> -#define S5M8763_IRQ_DCINOVPR_MASK	(1 << 3)
> -#define S5M8763_IRQ_CHGRSTF_MASK	(1 << 4)
> -#define S5M8763_IRQ_DONER_MASK		(1 << 5)
> -#define S5M8763_IRQ_CHGFAULT_MASK	(1 << 7)
> -
> -#define S5M8763_IRQ_LOBAT1_MASK		(1 << 0)
> -#define S5M8763_IRQ_LOBAT2_MASK		(1 << 1)
> -
> -#define S5M8763_ENRAMP                  (1 << 4)
> -
>  #endif /*  __LINUX_MFD_SEC_IRQ_H */
> -- 
> 2.39.0
> 

-- 
Alexandre Belloni, co-owner and COO, Bootlin
Embedded Linux and Kernel engineering
https://bootlin.com

  parent reply	other threads:[~2023-03-06 20:58 UTC|newest]

Thread overview: 17+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-01-31 18:30 [PATCH 0/2] Remove SEC S5M MFDs with no compatibles David Virag
2023-01-31 18:30 ` [PATCH 1/2] mfd: sec: Remove PMICs without compatibles David Virag
2023-02-02 11:24   ` Krzysztof Kozlowski
2023-02-02 12:11     ` David Virag
2023-02-02 11:28   ` Krzysztof Kozlowski
2023-03-16 15:11   ` Lee Jones
2023-01-31 18:30 ` [PATCH 2/2] rtc: s5m: Drop S5M8763 support David Virag
2023-02-02 11:28   ` Krzysztof Kozlowski
2023-02-23 14:15   ` Lee Jones
2023-02-23 14:18     ` Lee Jones
2023-02-23 15:03       ` Alexandre Belloni
2023-02-23 15:11         ` David Virag
2023-02-23 15:22           ` Krzysztof Kozlowski
2023-03-06 20:58   ` Alexandre Belloni [this message]
2023-03-16 15:12   ` Lee Jones
2023-03-16 15:13 ` [PATCH 0/2] Remove SEC S5M MFDs with no compatibles Lee Jones
2023-03-17  8:06 ` Immutable branch between MFD and RTC due for the v6.4 merge window Lee Jones

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=ZAZT4Q7I2l2gPpMX@mail.local \
    --to=alexandre.belloni@bootlin.com \
    --cc=a.zummo@towertech.it \
    --cc=krzysztof.kozlowski@linaro.org \
    --cc=lee@kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-rtc@vger.kernel.org \
    --cc=linux-samsung-soc@vger.kernel.org \
    --cc=virag.david003@gmail.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).