--- /dev/null
+Palmas RTC controller bindings
+
+Required properties:
+- compatible:
+  - "ti,palmas-rtc" for palma series of the RTC controller
+- interrupt-parent: Parent interrupt device, must be handle of palmas node.
+- interrupts: Interrupt number of RTC submodule on device.
+
+Optional properties:
+
+- ti,backup-battery-chargeable: The Palmas series device like TPS65913 or
+       TPS80036 supports the backup battery for powering the RTC when main
+       battery is removed or in very low power state. The backup battery
+       can be chargeable or non-chargeable. This flag will tells whether
+       battery is chargeable or not. If charging battery then driver can
+       enable the charging.
+- ti,backup-battery-charge-high-current: Enable high current charging in
+       backup battery. Device supports the < 100mA and > 100mA charging.
+       The high current will be > 100mA. Absence of this property will
+       charge battery to lower current i.e. < 100mA.
+
+Example:
+       palmas: tps65913@58 {
+               ...
+               palmas_rtc: rtc {
+                       compatible = "ti,palmas-rtc";
+                       interrupt-parent = <&palmas>;
+                       interrupts = <8 0>;
+                       ti,backup-battery-chargeable;
+                       ti,backup-battery-charge-high-current;
+               };
+               ...
+       };
 
        struct palmas *palmas = dev_get_drvdata(pdev->dev.parent);
        struct palmas_rtc *palmas_rtc = NULL;
        int ret;
+       bool enable_bb_charging = false;
+       bool high_bb_charging;
+
+       if (pdev->dev.of_node) {
+               enable_bb_charging = of_property_read_bool(pdev->dev.of_node,
+                                       "ti,backup-battery-chargeable");
+               high_bb_charging = of_property_read_bool(pdev->dev.of_node,
+                                       "ti,backup-battery-charge-high-current");
+       }
 
        palmas_rtc = devm_kzalloc(&pdev->dev, sizeof(struct palmas_rtc),
                        GFP_KERNEL);
        palmas_rtc->dev = &pdev->dev;
        platform_set_drvdata(pdev, palmas_rtc);
 
+       if (enable_bb_charging) {
+               unsigned reg = PALMAS_BACKUP_BATTERY_CTRL_BBS_BBC_LOW_ICHRG;
+
+               if (high_bb_charging)
+                       reg = 0;
+
+               ret = palmas_update_bits(palmas, PALMAS_PMU_CONTROL_BASE,
+                       PALMAS_BACKUP_BATTERY_CTRL,
+                       PALMAS_BACKUP_BATTERY_CTRL_BBS_BBC_LOW_ICHRG, reg);
+               if (ret < 0) {
+                       dev_err(&pdev->dev,
+                               "BACKUP_BATTERY_CTRL update failed, %d\n", ret);
+                       return ret;
+               }
+
+               ret = palmas_update_bits(palmas, PALMAS_PMU_CONTROL_BASE,
+                       PALMAS_BACKUP_BATTERY_CTRL,
+                       PALMAS_BACKUP_BATTERY_CTRL_BB_CHG_EN,
+                       PALMAS_BACKUP_BATTERY_CTRL_BB_CHG_EN);
+               if (ret < 0) {
+                       dev_err(&pdev->dev,
+                               "BACKUP_BATTERY_CTRL update failed, %d\n", ret);
+                       return ret;
+               }
+       }
+
        /* Start RTC */
        ret = palmas_update_bits(palmas, PALMAS_RTC_BASE, PALMAS_RTC_CTRL_REG,
                        PALMAS_RTC_CTRL_REG_STOP_RTC,