From patchwork Fri Oct 5 08:16:43 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: 189447 X-Patchwork-Delegate: sbabic@denx.de 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 5B14F2C00C6 for ; Fri, 5 Oct 2012 18:21:01 +1000 (EST) Received: from localhost (localhost [127.0.0.1]) by theia.denx.de (Postfix) with ESMTP id 66CA52810F; Fri, 5 Oct 2012 10:20:45 +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 CFMDAh859r4j; Fri, 5 Oct 2012 10:20:44 +0200 (CEST) Received: from theia.denx.de (localhost [127.0.0.1]) by theia.denx.de (Postfix) with ESMTP id 46A4E280E4; Fri, 5 Oct 2012 10:19:34 +0200 (CEST) Received: from localhost (localhost [127.0.0.1]) by theia.denx.de (Postfix) with ESMTP id 40D61280DB for ; Fri, 5 Oct 2012 10:19:27 +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 sHzdKWgdYal1 for ; Fri, 5 Oct 2012 10:19:25 +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 mailout1.samsung.com (mailout1.samsung.com [203.254.224.24]) by theia.denx.de (Postfix) with ESMTP id 757E628090 for ; Fri, 5 Oct 2012 10:17:57 +0200 (CEST) Received: from epcpsbgm2.samsung.com (epcpsbgm2 [203.254.230.27]) by mailout1.samsung.com (Oracle Communications Messaging Server 7u4-24.01(7.0.4.24.0) 64bit (built Nov 17 2011)) with ESMTP id <0MBE006R6V03SG20@mailout1.samsung.com> for u-boot@lists.denx.de; Fri, 05 Oct 2012 17:17:56 +0900 (KST) X-AuditID: cbfee61b-b7f2b6d000000f14-18-506e97b45361 Received: from epmmp2 ( [203.254.227.17]) by epcpsbgm2.samsung.com (EPCPMTA) with SMTP id 65.F7.03860.4B79E605; Fri, 05 Oct 2012 17:17:56 +0900 (KST) Received: from mcdsrvbld02.digital.local ([106.116.37.23]) by mmp2.samsung.com (Oracle Communications Messaging Server 7u4-24.01 (7.0.4.24.0) 64bit (built Nov 17 2011)) with ESMTPA id <0MBE0068VUZYNY10@mmp2.samsung.com> for u-boot@lists.denx.de; Fri, 05 Oct 2012 17:17:55 +0900 (KST) From: Lukasz Majewski To: u-boot@lists.denx.de Date: Fri, 05 Oct 2012 10:16:43 +0200 Message-id: <1349425003-32523-22-git-send-email-l.majewski@samsung.com> X-Mailer: git-send-email 1.7.10 In-reply-to: <1349425003-32523-1-git-send-email-l.majewski@samsung.com> References: <1349425003-32523-1-git-send-email-l.majewski@samsung.com> X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFnrCJMWRmVeSWpSXmKPExsVy+t9jQd0t0/MCDOYfYrd4u7eT3YHR4+yd HYwBjFFcNimpOZllqUX6dglcGa+OH2IqWCBd8WzeZLYGxg2iXYycHBICJhJ/plxjhbDFJC7c W8/WxcjFISQwnVHi+K02dghnMZPEm8fb2UGq2AT0JD7ffcoEYosISEj86r/KCFLELLCDUaL5 5Fk2kISwQLTE7a6ZzCA2i4CqxI+DR8CaeQXcJa7fvcQGsU5e4un9PjCbEyi+/f03sHohATeJ eQ8uMU5g5F3AyLCKUTS1ILmgOCk910ivODG3uDQvXS85P3cTI9jvz6R3MK5qsDjEKMDBqMTD K/AsN0CINbGsuDL3EKMEB7OSCO/VpLwAId6UxMqq1KL8+KLSnNTiQ4zSHCxK4rzNHikBQgLp iSWp2ampBalFMFkmDk6pBsYiLpGr26ZG3XRtrXvfLMncIvdeLa1cfqOE/GRbhstdx88rVF1U +q0/ea1c/4nPuqsP3Z3Ppm7/7l5D/6Gy7cd9//Ys1eWx7FuaUmWaaGef0vs0ofTyrtkyvuqx FyfOclA+ZaRQ+PrFwm4ns4k7buu/E9D7JPZppb1MVNYrZ8FVmyLcw5xfLFNiKc5INNRiLipO BAD27Ngm9wEAAA== Cc: Tom Rini , Kyungmin Park Subject: [U-Boot] [PATCH v2 21/21] 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. --- 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..85a00b5 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->pwr_bat->fg_battery_check(p->pwr_bat->fg, p); + + if (strcmp(argv[3], "charge") == 0) { + if (p->pwr_bat) { + printf("PRINT BAT charge %s\n", p->name); + if (p->low_power_mode) + p->low_power_mode(); + if (p->battery_charge) + p->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" );