rtc: s5m: Drop S5M8763 support

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>
Reviewed-by: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
Signed-off-by: Lee Jones <lee@kernel.org>
Link: https://lore.kernel.org/r/20230131183008.4451-3-virag.david003@gmail.com
This commit is contained in:
David Virag 2023-01-31 19:30:07 +01:00 committed by Lee Jones
parent f736d2c0ca
commit a3165abaa9
3 changed files with 3 additions and 130 deletions

View File

@ -85,7 +85,7 @@ struct s5m_rtc_reg_config {
unsigned int write_alarm_udr_mask; 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 = { static const struct s5m_rtc_reg_config s5m_rtc_regs = {
.regs_count = 8, .regs_count = 8,
.time = S5M_RTC_SEC, .time = S5M_RTC_SEC,
@ -236,7 +236,6 @@ static int s5m_check_peding_alarm_interrupt(struct s5m_rtc_info *info,
switch (info->device_type) { switch (info->device_type) {
case S5M8767X: case S5M8767X:
case S5M8763X:
ret = regmap_read(info->regmap, S5M_RTC_STATUS, &val); ret = regmap_read(info->regmap, S5M_RTC_STATUS, &val);
val &= S5M_ALARM0_STATUS; val &= S5M_ALARM0_STATUS;
break; break;
@ -299,7 +298,6 @@ static int s5m8767_rtc_set_alarm_reg(struct s5m_rtc_info *info)
data |= info->regs->write_alarm_udr_mask; data |= info->regs->write_alarm_udr_mask;
switch (info->device_type) { switch (info->device_type) {
case S5M8763X:
case S5M8767X: case S5M8767X:
data &= ~S5M_RTC_TIME_EN_MASK; data &= ~S5M_RTC_TIME_EN_MASK;
break; break;
@ -329,38 +327,6 @@ static int s5m8767_rtc_set_alarm_reg(struct s5m_rtc_info *info)
return ret; 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) static int s5m_rtc_read_time(struct device *dev, struct rtc_time *tm)
{ {
struct s5m_rtc_info *info = dev_get_drvdata(dev); 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; return ret;
switch (info->device_type) { switch (info->device_type) {
case S5M8763X:
s5m8763_data_to_tm(data, tm);
break;
case S5M8767X: case S5M8767X:
case S2MPS15X: case S2MPS15X:
case S2MPS14X: case S2MPS14X:
@ -412,9 +374,6 @@ static int s5m_rtc_set_time(struct device *dev, struct rtc_time *tm)
int ret = 0; int ret = 0;
switch (info->device_type) { switch (info->device_type) {
case S5M8763X:
s5m8763_tm_to_data(tm, data);
break;
case S5M8767X: case S5M8767X:
case S2MPS15X: case S2MPS15X:
case S2MPS14X: 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); struct s5m_rtc_info *info = dev_get_drvdata(dev);
u8 data[RTC_MAX_NUM_TIME_REGS]; u8 data[RTC_MAX_NUM_TIME_REGS];
unsigned int val;
int ret, i; int ret, i;
ret = regmap_bulk_read(info->regmap, info->regs->alarm0, data, 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; return ret;
switch (info->device_type) { 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 S5M8767X:
case S2MPS15X: case S2MPS15X:
case S2MPS14X: 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); dev_dbg(info->dev, "%s: %ptR(%d)\n", __func__, &tm, tm.tm_wday);
switch (info->device_type) { switch (info->device_type) {
case S5M8763X:
ret = regmap_write(info->regmap, S5M_ALARM0_CONF, 0);
break;
case S5M8767X: case S5M8767X:
case S2MPS15X: case S2MPS15X:
case S2MPS14X: case S2MPS14X:
@ -531,7 +476,6 @@ static int s5m_rtc_start_alarm(struct s5m_rtc_info *info)
{ {
int ret; int ret;
u8 data[RTC_MAX_NUM_TIME_REGS]; u8 data[RTC_MAX_NUM_TIME_REGS];
u8 alarm0_conf;
struct rtc_time tm; struct rtc_time tm;
ret = regmap_bulk_read(info->regmap, info->regs->alarm0, data, 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); dev_dbg(info->dev, "%s: %ptR(%d)\n", __func__, &tm, tm.tm_wday);
switch (info->device_type) { switch (info->device_type) {
case S5M8763X:
alarm0_conf = 0x77;
ret = regmap_write(info->regmap, S5M_ALARM0_CONF, alarm0_conf);
break;
case S5M8767X: case S5M8767X:
case S2MPS15X: case S2MPS15X:
case S2MPS14X: case S2MPS14X:
@ -585,10 +524,6 @@ static int s5m_rtc_set_alarm(struct device *dev, struct rtc_wkalrm *alrm)
int ret; int ret;
switch (info->device_type) { switch (info->device_type) {
case S5M8763X:
s5m8763_tm_to_data(&alrm->time, data);
break;
case S5M8767X: case S5M8767X:
case S2MPS15X: case S2MPS15X:
case S2MPS14X: case S2MPS14X:
@ -655,7 +590,6 @@ static int s5m8767_rtc_init_reg(struct s5m_rtc_info *info)
int ret; int ret;
switch (info->device_type) { switch (info->device_type) {
case S5M8763X:
case S5M8767X: case S5M8767X:
/* UDR update time. Default of 7.32 ms is too long. */ /* UDR update time. Default of 7.32 ms is too long. */
ret = regmap_update_bits(info->regmap, S5M_RTC_UDR_CON, 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; info->regs = &s2mps13_rtc_regs;
alarm_irq = S2MPS14_IRQ_RTCA0; alarm_irq = S2MPS14_IRQ_RTCA0;
break; break;
case S5M8763X:
regmap_cfg = &s5m_rtc_regmap_config;
info->regs = &s5m_rtc_regs;
alarm_irq = S5M8763_IRQ_ALARM0;
break;
case S5M8767X: case S5M8767X:
regmap_cfg = &s5m_rtc_regmap_config; regmap_cfg = &s5m_rtc_regmap_config;
info->regs = &s5m_rtc_regs; 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; info->rtc_dev->ops = &s5m_rtc_ops;
if (info->device_type == S5M8763X) { info->rtc_dev->range_min = RTC_TIMESTAMP_BEGIN_2000;
info->rtc_dev->range_min = RTC_TIMESTAMP_BEGIN_0000; info->rtc_dev->range_max = RTC_TIMESTAMP_END_2099;
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;
}
if (!info->irq) { if (!info->irq) {
clear_bit(RTC_FEATURE_ALARM, info->rtc_dev->features); clear_bit(RTC_FEATURE_ALARM, info->rtc_dev->features);

View File

@ -36,7 +36,6 @@
struct gpio_desc; struct gpio_desc;
enum sec_device_type { enum sec_device_type {
S5M8763X,
S5M8767X, S5M8767X,
S2MPA01, S2MPA01,
S2MPS11X, S2MPS11X,

View File

@ -194,54 +194,4 @@ enum s5m8767_irq {
#define S5M8767_IRQ_RTC1S_MASK (1 << 4) #define S5M8767_IRQ_RTC1S_MASK (1 << 4)
#define S5M8767_IRQ_WTSR_MASK (1 << 5) #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 */ #endif /* __LINUX_MFD_SEC_IRQ_H */