From patchwork Fri Oct 19 15:44:08 2012 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: =?utf-8?q?=C5=81ukasz_Majewski?= X-Patchwork-Id: 192762 X-Patchwork-Delegate: trini@ti.com Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Received: from theia.denx.de (theia.denx.de [85.214.87.163]) by ozlabs.org (Postfix) with ESMTP id D14B52C0080 for ; Sat, 20 Oct 2012 02:49:11 +1100 (EST) Received: from localhost (localhost [127.0.0.1]) by theia.denx.de (Postfix) with ESMTP id 5B4634A648; Fri, 19 Oct 2012 17:47:39 +0200 (CEST) X-Virus-Scanned: Debian amavisd-new at theia.denx.de Received: from theia.denx.de ([127.0.0.1]) by localhost (theia.denx.de [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id VxGiLPt40TyG; Fri, 19 Oct 2012 17:47:39 +0200 (CEST) Received: from theia.denx.de (localhost [127.0.0.1]) by theia.denx.de (Postfix) with ESMTP id 2A6914A5DD; Fri, 19 Oct 2012 17:46:41 +0200 (CEST) Received: from localhost (localhost [127.0.0.1]) by theia.denx.de (Postfix) with ESMTP id 4B1174A49C for ; Fri, 19 Oct 2012 17:46:28 +0200 (CEST) X-Virus-Scanned: Debian amavisd-new at theia.denx.de Received: from theia.denx.de ([127.0.0.1]) by localhost (theia.denx.de [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 1CvR-05HyHKM for ; Fri, 19 Oct 2012 17:46:26 +0200 (CEST) X-policyd-weight: NOT_IN_SBL_XBL_SPAMHAUS=-1.5 NOT_IN_SPAMCOP=-1.5 NOT_IN_BL_NJABL=-1.5 (only DNSBL check requested) Received: from mailout3.samsung.com (mailout3.samsung.com [203.254.224.33]) by theia.denx.de (Postfix) with ESMTP id 443D54A591 for ; Fri, 19 Oct 2012 17:45:47 +0200 (CEST) Received: from epcpsbgm1.samsung.com (epcpsbgm1 [203.254.230.26]) by mailout3.samsung.com (Oracle Communications Messaging Server 7u4-24.01(7.0.4.24.0) 64bit (built Nov 17 2011)) with ESMTP id <0MC500H4PD28WN00@mailout3.samsung.com> for u-boot@lists.denx.de; Sat, 20 Oct 2012 00:45:46 +0900 (KST) X-AuditID: cbfee61a-b7f976d000001eb9-30-508175aaff6c Received: from epmmp1.local.host ( [203.254.227.16]) by epcpsbgm1.samsung.com (EPCPMTA) with SMTP id FF.E4.07865.AA571805; Sat, 20 Oct 2012 00:45:46 +0900 (KST) Received: from mcdsrvbld02.digital.local ([106.116.37.23]) by mmp1.samsung.com (Oracle Communications Messaging Server 7u4-24.01 (7.0.4.24.0) 64bit (built Nov 17 2011)) with ESMTPA id <0MC500FFND1YC320@mmp1.samsung.com> for u-boot@lists.denx.de; Sat, 20 Oct 2012 00:45:45 +0900 (KST) From: Lukasz Majewski To: u-boot@lists.denx.de Date: Fri, 19 Oct 2012 17:44:08 +0200 Message-id: <1350661451-1273-22-git-send-email-l.majewski@samsung.com> X-Mailer: git-send-email 1.7.10 In-reply-to: <1350661451-1273-1-git-send-email-l.majewski@samsung.com> References: <1350661451-1273-1-git-send-email-l.majewski@samsung.com> X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFnrEJMWRmVeSWpSXmKPExsVy+t9jAd1VpY0BBtMusVm83dvJ7sDocfbO DsYAxigum5TUnMyy1CJ9uwSujN8v+AoeS1dc+fqKtYHxmWgXIyeHhICJxKUjS1ghbDGJC/fW s3UxcnEICSxilPh27TMLhLOYSeLUsm9MIFVsAnoSn+8+BbNFBCQkfvVfZQQpYhZ4wCjxpWkl WEJYIFpi9b8uFhCbRUBV4kfHQjCbV8BNYuHbQ1Dr5CWe3u8DWsfBwQkUf/W7HCQsJOAqcaH5 LssERt4FjAyrGEVTC5ILipPScw31ihNzi0vz0vWS83M3MYJ9/kxqB+PKBotDjAIcjEo8vL9u NwQIsSaWFVfmHmKU4GBWEuF1Y28MEOJNSaysSi3Kjy8qzUktPsQozcGiJM7b7JESICSQnliS mp2aWpBaBJNl4uCUamCMfVaT290pMeHB69cR2voyE/wvSuRcu7dm8ex3sifq7p3ij2byL568 8NCLpw2/F2/S5f2R9rBqzqPWY1tSMjv+b56/9qZ58s3Ql57My1XWHj7N4OdYMvnKvs2nNj+T m1Gw9n1CuMcaOR9+rTevlHfmV3wzn8k2cXX2uuQD0/jPX9t5oibTmY/1ohJLcUaioRZzUXEi APu5ahP1AQAA Cc: Jaehoon Chung , Kyungmin Park , Tom Rini Subject: [U-Boot] [PATCH v3 21/24] pmic: Extend PMIC framework to support battery related commands X-BeenThere: u-boot@lists.denx.de X-Mailman-Version: 2.1.11 Precedence: list List-Id: U-Boot discussion List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , MIME-Version: 1.0 Sender: u-boot-bounces@lists.denx.de Errors-To: u-boot-bounces@lists.denx.de Two extra commands: "pmic name bat state" and "pmic name bat charge" has been added to pmic framework. Those provides state display and charge capabilities to named batteries. The pmic_core.c file has been refactored to more consistent name scheme. Signed-off-by: Lukasz Majewski Signed-off-by: Kyungmin Park Cc: Stefano Babic --- Changes for v2: - New patch to v2. Changes for v3: - change code according to struct pmic redesign --- drivers/power/pmic_core.c | 51 ++++++++++++++++++++++++++++++++++++-------- 1 files changed, 41 insertions(+), 10 deletions(-) diff --git a/drivers/power/pmic_core.c b/drivers/power/pmic_core.c index 2908f66..01a240f 100644 --- a/drivers/power/pmic_core.c +++ b/drivers/power/pmic_core.c @@ -124,35 +124,46 @@ struct pmic *pmic_get(const char *s) return NULL; } +const char *power_get_interface(int interface) +{ + const char *power_interface[] = {"I2C", "SPI", "|+|-|"}; + return power_interface[interface]; +} + static void pmic_list_names(void) { struct pmic *p; puts("PMIC devices:\n"); list_for_each_entry(p, &pmic_list, list) { - printf("name: %s\n", p->name); + printf("name: %s bus: %s_%d\n", p->name, + power_get_interface(p->interface), p->bus); } } int do_pmic(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[]) { u32 ret, reg, val; + char *cmd, *name; struct pmic *p; - char *cmd; /* at least two arguments please */ if (argc < 2) return CMD_RET_USAGE; - cmd = argv[1]; - - if (strcmp(cmd, "list") == 0) { + if (strcmp(argv[1], "list") == 0) { pmic_list_names(); return CMD_RET_SUCCESS; } + name = argv[1]; + cmd = argv[2]; + + debug("%s: name: %s cmd: %s\n", __func__, name, cmd); + p = pmic_get(name); + if (strcmp(cmd, "dump") == 0) { - if (pmic_dump(pmic_get(argv[2]))) + if (pmic_dump(p)) return CMD_RET_FAILURE; return CMD_RET_SUCCESS; } @@ -162,7 +173,6 @@ int do_pmic(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[]) return CMD_RET_USAGE; reg = simple_strtoul(argv[3], NULL, 16); - p = pmic_get(argv[2]); ret = pmic_reg_read(p, reg, &val); if (ret) @@ -179,12 +189,31 @@ int do_pmic(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[]) reg = simple_strtoul(argv[3], NULL, 16); val = simple_strtoul(argv[4], NULL, 16); - p = pmic_get(argv[2]); pmic_reg_write(p, reg, val); return CMD_RET_SUCCESS; } + if (strcmp(cmd, "bat") == 0) { + if (argc < 4) + return CMD_RET_USAGE; + + if (strcmp(argv[3], "state") == 0) + p->fg->fg_battery_check(p->pbat->fg, p); + + if (strcmp(argv[3], "charge") == 0) { + if (p->pbat) { + printf("PRINT BAT charge %s\n", p->name); + if (p->low_power_mode) + p->low_power_mode(); + if (p->pbat->battery_charge) + p->pbat->battery_charge(p); + } + } + + return CMD_RET_SUCCESS; + } + /* No subcommand found */ return CMD_RET_SUCCESS; } @@ -193,7 +222,9 @@ U_BOOT_CMD( pmic, CONFIG_SYS_MAXARGS, 1, do_pmic, "PMIC", "list - list available PMICs\n" - "pmic dump name - dump named PMIC registers\n" + "pmic name dump - dump named PMIC registers\n" "pmic name read - read register\n" - "pmic name write - write register" + "pmic name write - write register\n" + "pmic name bat state - write register\n" + "pmic name bat charge - write register\n" );