Commit fe5a591b authored by Matti Vaittinen's avatar Matti Vaittinen Committed by Lee Jones

rtc: bd70528: add BD71828 support

ROHM BD71828 PMIC RTC block is from many parts similar to one
on BD70528. Support BD71828 RTC using BD70528 RTC driver and
avoid re-inventing the wheel.
Signed-off-by: default avatarMatti Vaittinen <matti.vaittinen@fi.rohmeurope.com>
Acked-by: default avatarAlexandre Belloni <alexandre.belloni@bootlin.com>
Signed-off-by: default avatarLee Jones <lee.jones@linaro.org>
parent 6c883472
...@@ -498,12 +498,13 @@ config RTC_DRV_M41T80_WDT ...@@ -498,12 +498,13 @@ config RTC_DRV_M41T80_WDT
help help
If you say Y here you will get support for the If you say Y here you will get support for the
watchdog timer in the ST M41T60 and M41T80 RTC chips series. watchdog timer in the ST M41T60 and M41T80 RTC chips series.
config RTC_DRV_BD70528 config RTC_DRV_BD70528
tristate "ROHM BD70528 PMIC RTC" tristate "ROHM BD70528 PMIC RTC"
depends on MFD_ROHM_BD70528 && (BD70528_WATCHDOG || !BD70528_WATCHDOG) depends on MFD_ROHM_BD70528 && (BD70528_WATCHDOG || !BD70528_WATCHDOG)
help help
If you say Y here you will get support for the RTC If you say Y here you will get support for the RTC
on ROHM BD70528 Power Management IC. block on ROHM BD70528 and BD71828 Power Management IC.
This driver can also be built as a module. If so, the module This driver can also be built as a module. If so, the module
will be called rtc-bd70528. will be called rtc-bd70528.
......
This diff is collapsed.
...@@ -7,6 +7,7 @@ ...@@ -7,6 +7,7 @@
#include <linux/bits.h> #include <linux/bits.h>
#include <linux/device.h> #include <linux/device.h>
#include <linux/mfd/rohm-generic.h> #include <linux/mfd/rohm-generic.h>
#include <linux/mfd/rohm-shared.h>
#include <linux/regmap.h> #include <linux/regmap.h>
enum { enum {
...@@ -307,17 +308,6 @@ enum { ...@@ -307,17 +308,6 @@ enum {
/* RTC masks to mask out reserved bits */ /* RTC masks to mask out reserved bits */
#define BD70528_MASK_RTC_SEC 0x7f
#define BD70528_MASK_RTC_MINUTE 0x7f
#define BD70528_MASK_RTC_HOUR_24H 0x80
#define BD70528_MASK_RTC_HOUR_PM 0x20
#define BD70528_MASK_RTC_HOUR 0x3f
#define BD70528_MASK_RTC_DAY 0x3f
#define BD70528_MASK_RTC_WEEK 0x07
#define BD70528_MASK_RTC_MONTH 0x1f
#define BD70528_MASK_RTC_YEAR 0xff
#define BD70528_MASK_RTC_COUNT_L 0x7f
#define BD70528_MASK_ELAPSED_TIMER_EN 0x1 #define BD70528_MASK_ELAPSED_TIMER_EN 0x1
/* Mask second, min and hour fields /* Mask second, min and hour fields
* HW would support ALM irq for over 24h * HW would support ALM irq for over 24h
...@@ -326,7 +316,6 @@ enum { ...@@ -326,7 +316,6 @@ enum {
* wake-up we limit ALM to 24H and only * wake-up we limit ALM to 24H and only
* unmask sec, min and hour * unmask sec, min and hour
*/ */
#define BD70528_MASK_ALM_EN 0x7
#define BD70528_MASK_WAKE_EN 0x1 #define BD70528_MASK_WAKE_EN 0x1
/* WDT masks */ /* WDT masks */
......
...@@ -5,6 +5,7 @@ ...@@ -5,6 +5,7 @@
#define __LINUX_MFD_BD71828_H__ #define __LINUX_MFD_BD71828_H__
#include <linux/mfd/rohm-generic.h> #include <linux/mfd/rohm-generic.h>
#include <linux/mfd/rohm-shared.h>
/* Regulator IDs */ /* Regulator IDs */
enum { enum {
...@@ -160,6 +161,7 @@ enum { ...@@ -160,6 +161,7 @@ enum {
#define BD71828_REG_RTC_YEAR 0x52 #define BD71828_REG_RTC_YEAR 0x52
#define BD71828_REG_RTC_ALM0_SEC 0x53 #define BD71828_REG_RTC_ALM0_SEC 0x53
#define BD71828_REG_RTC_ALM_START BD71828_REG_RTC_ALM0_SEC
#define BD71828_REG_RTC_ALM0_MINUTE 0x54 #define BD71828_REG_RTC_ALM0_MINUTE 0x54
#define BD71828_REG_RTC_ALM0_HOUR 0x55 #define BD71828_REG_RTC_ALM0_HOUR 0x55
#define BD71828_REG_RTC_ALM0_WEEK 0x56 #define BD71828_REG_RTC_ALM0_WEEK 0x56
...@@ -178,6 +180,7 @@ enum { ...@@ -178,6 +180,7 @@ enum {
#define BD71828_REG_RTC_ALM1_MASK 0x62 #define BD71828_REG_RTC_ALM1_MASK 0x62
#define BD71828_REG_RTC_ALM2 0x63 #define BD71828_REG_RTC_ALM2 0x63
#define BD71828_REG_RTC_START BD71828_REG_RTC_SEC
/* Charger/Battey */ /* Charger/Battey */
#define BD71828_REG_CHG_STATE 0x65 #define BD71828_REG_CHG_STATE 0x65
...@@ -204,7 +207,6 @@ enum { ...@@ -204,7 +207,6 @@ enum {
#define BD71828_REG_INT_MASK_TEMP 0xdd #define BD71828_REG_INT_MASK_TEMP 0xdd
#define BD71828_REG_INT_MASK_RTC 0xde #define BD71828_REG_INT_MASK_RTC 0xde
#define BD71828_REG_INT_MAIN 0xdf #define BD71828_REG_INT_MAIN 0xdf
#define BD71828_REG_INT_BUCK 0xe0 #define BD71828_REG_INT_BUCK 0xe0
#define BD71828_REG_INT_DCIN1 0xe1 #define BD71828_REG_INT_DCIN1 0xe1
......
/* SPDX-License-Identifier: GPL-2.0-or-later */
/* Copyright (C) 2020 ROHM Semiconductors */
#ifndef __LINUX_MFD_ROHM_SHARED_H__
#define __LINUX_MFD_ROHM_SHARED_H__
/* RTC definitions shared between BD70528 and BD71828 */
#define BD70528_MASK_RTC_SEC 0x7f
#define BD70528_MASK_RTC_MINUTE 0x7f
#define BD70528_MASK_RTC_HOUR_24H 0x80
#define BD70528_MASK_RTC_HOUR_PM 0x20
#define BD70528_MASK_RTC_HOUR 0x3f
#define BD70528_MASK_RTC_DAY 0x3f
#define BD70528_MASK_RTC_WEEK 0x07
#define BD70528_MASK_RTC_MONTH 0x1f
#define BD70528_MASK_RTC_YEAR 0xff
#define BD70528_MASK_ALM_EN 0x7
#endif /* __LINUX_MFD_ROHM_SHARED_H__ */
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment