Hi, On Thu, Aug 01, 2013 at 08:01:11PM +0530, Laxman Dewangan wrote: > Palmas series device like TPS65913, TPS80036 supports the backup battery > for powering the RTC when no other energy source is available. > > The backup battery is optional, connected to the VBACKUP pin, and can be > nonrechargeable or rechargeable. The rechargeable battery can be charged > from the system supply using the backup battery charger. > > Add support for enabling charging of this backup battery. Also add the DT > binding document and the new properties to have this support. > > Signed-off-by: Laxman Dewangan <ldewangan@xxxxxxxxxx> > --- > Changes from V1: > - Converted DT property to boolean. > - cleanups as use "...". > > .../devicetree/bindings/rtc/rtc-palmas.txt | 28 ++++++++++++++++ > drivers/rtc/rtc-palmas.c | 35 ++++++++++++++++++++ > 2 files changed, 63 insertions(+), 0 deletions(-) > create mode 100644 Documentation/devicetree/bindings/rtc/rtc-palmas.txt > > diff --git a/Documentation/devicetree/bindings/rtc/rtc-palmas.txt b/Documentation/devicetree/bindings/rtc/rtc-palmas.txt > new file mode 100644 > index 0000000..c8c9def > --- /dev/null > +++ b/Documentation/devicetree/bindings/rtc/rtc-palmas.txt > @@ -0,0 +1,28 @@ > +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,back-battery-charge-enable: The palmas series device like TPS65913 or > + TPS80036 supports the battery backup for powering the RTC when main > + battery is removed or in very low power state. This flag will enable > + the backup battery charging. > +- ti,back-charge-low-current: Configure lower charging current. Device supports the > + charging current as < 100mA or >100mA. Low current will set as <100mA. > + > +Example: > + palmas: tps65913@58 { > + ... > + palmas_rtc: rtc { > + compatible = "ti,palmas-rtc"; > + interrupt-parent = <&palmas>; > + interrupts = <8 0>; > + ti,back-battery-charge-enable; > + ti,back-charge-low-current; > + }; > + ... > + }; > diff --git a/drivers/rtc/rtc-palmas.c b/drivers/rtc/rtc-palmas.c > index a1fecc8..7f34e33 100644 > --- a/drivers/rtc/rtc-palmas.c > +++ b/drivers/rtc/rtc-palmas.c > @@ -238,6 +238,15 @@ static int palmas_rtc_probe(struct platform_device *pdev) > struct palmas *palmas = dev_get_drvdata(pdev->dev.parent); > struct palmas_rtc *palmas_rtc = NULL; > int ret; > + bool enable_bb_charging = false; > + bool low_bb_charging; > + > + if (pdev->dev.of_node) { > + enable_bb_charging = of_property_read_bool(pdev->dev.of_node, > + "ti,back-battery-charge-enable"); > + low_bb_charging = of_property_read_bool(pdev->dev.of_node, > + "ti,back-charge-low-current"); > + } > > palmas_rtc = devm_kzalloc(&pdev->dev, sizeof(struct palmas_rtc), > GFP_KERNEL); > @@ -254,6 +263,32 @@ static int palmas_rtc_probe(struct platform_device *pdev) > palmas_rtc->dev = &pdev->dev; > platform_set_drvdata(pdev, palmas_rtc); > > + if (enable_bb_charging) { > + unsigned reg = 0; > + > + if (low_bb_charging) > + reg |= PALMAS_BACKUP_BATTERY_CTRL_BBS_BBC_LOW_ICHRG; > + > + 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; > + } I wonder if this should be exposed via power_supply class, although it's not really a power supply. So perhaps not needed :-s looks good though (can't test as I don't have any boards available right now): Reviewed-by: Felipe Balbi <balbi@xxxxxx> -- balbi
Attachment:
signature.asc
Description: Digital signature