]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
rtc: bd70528: Support BD72720 rtc
authorMatti Vaittinen <mazziesaccount@gmail.com>
Mon, 15 Dec 2025 13:20:50 +0000 (15:20 +0200)
committerLee Jones <lee@kernel.org>
Tue, 13 Jan 2026 12:50:24 +0000 (12:50 +0000)
The BD72720 has similar RTC block as a few other ROHM PMICs.

Add support for BD72720 RTC.

Signed-off-by: Matti Vaittinen <mazziesaccount@gmail.com>
Acked-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
Link: https://patch.msgid.link/3241773f0f8e8d8e591a8e948495686cfdee4875.1765804226.git.mazziesaccount@gmail.com
Signed-off-by: Lee Jones <lee@kernel.org>
drivers/rtc/Kconfig
drivers/rtc/rtc-bd70528.c

index 50dc779f7f983074df7882200c90f0df21d142f2..7ac18985e438f9c0509670a4365e79e3dabf058e 100644 (file)
@@ -570,7 +570,8 @@ config RTC_DRV_BD70528
        depends on MFD_ROHM_BD71828
        help
          If you say Y here you will get support for the RTC
-         block on ROHM BD71815 and BD71828 Power Management IC.
+         block on ROHM BD71815, BD71828 and BD72720 Power
+         Management ICs.
 
          This driver can also be built as a module. If so, the module
          will be called rtc-bd70528.
index 954ac4ef53e835562099977dc1447482e05a94e5..4c8599761b2e5664b8a6d822c18575924a56c826 100644 (file)
@@ -7,6 +7,7 @@
 #include <linux/bcd.h>
 #include <linux/mfd/rohm-bd71815.h>
 #include <linux/mfd/rohm-bd71828.h>
+#include <linux/mfd/rohm-bd72720.h>
 #include <linux/module.h>
 #include <linux/of.h>
 #include <linux/platform_device.h>
@@ -262,13 +263,13 @@ static int bd70528_probe(struct platform_device *pdev)
 
                /*
                 * See also BD718XX_ALM_EN_OFFSET:
-                * This works for BD71828 and BD71815 as they have same offset
-                * between ALM0 start and ALM0_MASK. If new ICs are to be
-                * added this requires proper check as ALM0_MASK is not located
-                * at the end of ALM0 block - but after all ALM blocks so if
-                * amount of ALMs differ the offset to enable/disable is likely
-                * to be incorrect and enable/disable must be given as own
-                * reg address here.
+                * This works for BD71828, BD71815, and BD72720 as they all
+                * have same offset between the ALM0 start and the ALM0_MASK.
+                * If new ICs are to be added this requires proper check as
+                * the  ALM0_MASK is not located at the end of ALM0 block -
+                * but after all ALM blocks. If amount of ALMs differ, the
+                * offset to enable/disable is likely to be incorrect and
+                * enable/disable must be given as own reg address here.
                 */
                bd_rtc->bd718xx_alm_block_start = BD71815_REG_RTC_ALM_START;
                hour_reg = BD71815_REG_HOUR;
@@ -278,6 +279,11 @@ static int bd70528_probe(struct platform_device *pdev)
                bd_rtc->bd718xx_alm_block_start = BD71828_REG_RTC_ALM_START;
                hour_reg = BD71828_REG_RTC_HOUR;
                break;
+       case ROHM_CHIP_TYPE_BD72720:
+               bd_rtc->reg_time_start = BD72720_REG_RTC_START;
+               bd_rtc->bd718xx_alm_block_start = BD72720_REG_RTC_ALM_START;
+               hour_reg = BD72720_REG_RTC_HOUR;
+               break;
        default:
                dev_err(&pdev->dev, "Unknown chip\n");
                return -ENOENT;
@@ -337,6 +343,7 @@ static int bd70528_probe(struct platform_device *pdev)
 static const struct platform_device_id bd718x7_rtc_id[] = {
        { "bd71828-rtc", ROHM_CHIP_TYPE_BD71828 },
        { "bd71815-rtc", ROHM_CHIP_TYPE_BD71815 },
+       { "bd72720-rtc", ROHM_CHIP_TYPE_BD72720 },
        { },
 };
 MODULE_DEVICE_TABLE(platform, bd718x7_rtc_id);