From patchwork Thu Jul 25 12:29:03 2013 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Laxman Dewangan X-Patchwork-Id: 261681 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Received: from mail-qa0-x23f.google.com (mail-qa0-x23f.google.com [IPv6:2607:f8b0:400d:c00::23f]) (using TLSv1 with cipher ECDHE-RSA-RC4-SHA (128/128 bits)) (Client CN "smtp.gmail.com", Issuer "Google Internet Authority" (not verified)) by ozlabs.org (Postfix) with ESMTPS id 520C82C007C for ; Thu, 25 Jul 2013 22:18:30 +1000 (EST) Received: by mail-qa0-f63.google.com with SMTP id u10sf348664qaz.18 for ; Thu, 25 Jul 2013 05:18:26 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=googlegroups.com; s=20120806; h=x-beenthere:x-pgp-universal:from:to:cc:subject:date:message-id :x-mailer:mime-version:x-original-sender :x-original-authentication-results:reply-to:precedence:mailing-list :list-id:x-google-group-id:list-post:list-help:list-archive:sender :list-subscribe:list-unsubscribe:content-type; bh=6+RM8X+iAB2rYNEAC9GW6KpBVJbQ8WluSCQ7189J0kM=; b=RKwVqZ2of2Up/OA5q8cBYgx0evyDlEf8FBokrTo3VZXpVFbZM1IajHWFp2tSupJkzB Sp+8CiTVmbbHFjUvY7TJm988RSrzmRPhj6vlpsYiAxWK8TMiELFWoZ24aGLYhIf4aSg2 I0MeaSKsFlLz7tOh6Wf6bmB6APgugIBvGoRKBFFDLVsh+ZqCY+1VQFdsa07QLSKVFw9v kD5LZF8Tuhgm8lAWcJ1jJUvnJ+GBE9tZ1Kt/pTPNYEbdNSBgThzr8MGLz10rtZVcworr X54nfp3Jxd1Q4/s9tRQ2d/wACCJYVd2InHT+fVBPF6ee2VJDqSEVv1PcSlVxbRfaofYe PGfA== X-Received: by 10.50.27.74 with SMTP id r10mr171246igg.10.1374754706501; Thu, 25 Jul 2013 05:18:26 -0700 (PDT) X-BeenThere: rtc-linux@googlegroups.com Received: by 10.50.128.166 with SMTP id np6ls1038524igb.18.gmail; Thu, 25 Jul 2013 05:18:25 -0700 (PDT) X-Received: by 10.66.122.2 with SMTP id lo2mr8602623pab.41.1374754705953; Thu, 25 Jul 2013 05:18:25 -0700 (PDT) Received: from hqemgate16.nvidia.com (hqemgate16.nvidia.com. [216.228.121.65]) by gmr-mx.google.com with ESMTPS id al8si5688472pbd.0.2013.07.25.05.18.25 for (version=TLSv1 cipher=ECDHE-RSA-RC4-SHA bits=128/128); Thu, 25 Jul 2013 05:18:25 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of ldewangan@nvidia.com designates 216.228.121.65 as permitted sender) client-ip=216.228.121.65; Received: from hqnvupgp08.nvidia.com (Not Verified[216.228.121.13]) by hqemgate16.nvidia.com id ; Thu, 25 Jul 2013 05:18:08 -0700 Received: from hqemhub02.nvidia.com ([172.20.12.94]) by hqnvupgp08.nvidia.com (PGP Universal service); Thu, 25 Jul 2013 05:17:14 -0700 X-PGP-Universal: processed; by hqnvupgp08.nvidia.com on Thu, 25 Jul 2013 05:17:14 -0700 Received: from hqnvemgw02.nvidia.com (172.16.227.111) by hqemhub02.nvidia.com (172.20.150.31) with Microsoft SMTP Server id 8.3.298.1; Thu, 25 Jul 2013 05:18:25 -0700 Received: from sc-daphne.nvidia.com (Not Verified[172.20.232.60]) by hqnvemgw02.nvidia.com with MailMarshal (v7,1,2,5326) id ; Thu, 25 Jul 2013 05:18:24 -0700 Received: from ldewangan-ubuntu.nvidia.com ([10.19.65.30]) by sc-daphne.nvidia.com (8.13.8+Sun/8.8.8) with ESMTP id r6PCIJL8014066; Thu, 25 Jul 2013 05:18:20 -0700 (PDT) From: Laxman Dewangan To: CC: , , , , , , , , , , Laxman Dewangan Subject: [rtc-linux] [PATCH] drivers/rtc/rtc-palmas.c: support for backup battery charging Date: Thu, 25 Jul 2013 17:59:03 +0530 Message-ID: <1374755343-32573-1-git-send-email-ldewangan@nvidia.com> X-Mailer: git-send-email 1.7.1.1 MIME-Version: 1.0 X-Original-Sender: ldewangan@nvidia.com X-Original-Authentication-Results: gmr-mx.google.com; spf=pass (google.com: best guess record for domain of ldewangan@nvidia.com designates 216.228.121.65 as permitted sender) smtp.mail=ldewangan@nvidia.com Reply-To: rtc-linux@googlegroups.com Precedence: list Mailing-list: list rtc-linux@googlegroups.com; contact rtc-linux+owners@googlegroups.com List-ID: X-Google-Group-Id: 712029733259 List-Post: , List-Help: , List-Archive: Sender: rtc-linux@googlegroups.com List-Subscribe: , List-Unsubscribe: , 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 --- .../devicetree/bindings/rtc/rtc-palmas.txt | 28 ++++++++++++++ drivers/rtc/rtc-palmas.c | 39 ++++++++++++++++++++ 2 files changed, 67 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..e4b6910 --- /dev/null +++ b/Documentation/devicetree/bindings/rtc/rtc-palmas.txt @@ -0,0 +1,28 @@ +Palmas RTC controller bindings + +Required properties: +- compatible: + - "ti,palams-rtc" for palma series of the RTC controller +- interrupt-parent: Parent interrupt device, must be handle of palams node. +- interrupts: Interrupt number of RTC submodule on device. + +Optional properties: +- ti,back-bat-chg-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-bat-chg-current: Configure charging current. Device supports the + charging current as < 100mA or >100mA. + +Example: + palmas: tps65913@58 { + ::::::::::: + palmas_rtc: rtc { + compatible = "ti,palmas-rtc"; + interrupt-parent = <&palmas>; + interrupts = <8 0>; + ti,back-bat-chg-enable; + ti,back-bat-chg-current = <100>; + }; + ::::::::::: + }; diff --git a/drivers/rtc/rtc-palmas.c b/drivers/rtc/rtc-palmas.c index a1fecc8..1a7c44a 100644 --- a/drivers/rtc/rtc-palmas.c +++ b/drivers/rtc/rtc-palmas.c @@ -238,6 +238,19 @@ 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; + u32 bb_charging_current = 100; + + if (pdev->dev.of_node) { + u32 pval; + + enable_bb_charging = of_property_read_bool(pdev->dev.of_node, + "ti,back-bat-chg-enable"); + ret = of_property_read_u32(pdev->dev.of_node, + "ti,back-bat-chg-current", &pval); + if (!ret) + bb_charging_current = pval; + } palmas_rtc = devm_kzalloc(&pdev->dev, sizeof(struct palmas_rtc), GFP_KERNEL); @@ -254,6 +267,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 (bb_charging_current < 100) + 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; + } + } + /* Start RTC */ ret = palmas_update_bits(palmas, PALMAS_RTC_BASE, PALMAS_RTC_CTRL_REG, PALMAS_RTC_CTRL_REG_STOP_RTC,