From patchwork Tue Oct 30 16:57:16 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: 195559 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 F1C312C0084 for ; Wed, 31 Oct 2012 04:04:28 +1100 (EST) Received: from localhost (localhost [127.0.0.1]) by theia.denx.de (Postfix) with ESMTP id 761374A343; Tue, 30 Oct 2012 18:01:27 +0100 (CET) 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 WIA-q+QpJVYD; Tue, 30 Oct 2012 18:01:27 +0100 (CET) Received: from theia.denx.de (localhost [127.0.0.1]) by theia.denx.de (Postfix) with ESMTP id BD96C4A366; Tue, 30 Oct 2012 17:59:48 +0100 (CET) Received: from localhost (localhost [127.0.0.1]) by theia.denx.de (Postfix) with ESMTP id 77EBA4A241 for ; Tue, 30 Oct 2012 17:59:34 +0100 (CET) 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 2zSGZzDyAhcI for ; Tue, 30 Oct 2012 17:59:32 +0100 (CET) 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 mailout2.samsung.com (mailout2.samsung.com [203.254.224.25]) by theia.denx.de (Postfix) with ESMTP id 231404A228 for ; Tue, 30 Oct 2012 17:58:44 +0100 (CET) Received: from epcpsbgm2.samsung.com (epcpsbgm2 [203.254.230.27]) by mailout2.samsung.com (Oracle Communications Messaging Server 7u4-24.01(7.0.4.24.0) 64bit (built Nov 17 2011)) with ESMTP id <0MCP00E6JTRI7J70@mailout2.samsung.com> for u-boot@lists.denx.de; Wed, 31 Oct 2012 01:58:42 +0900 (KST) X-AuditID: cbfee61b-b7f616d00000319b-e3-5090074228eb Received: from epmmp2 ( [203.254.227.17]) by epcpsbgm2.samsung.com (EPCPMTA) with SMTP id 0B.D2.12699.24700905; Wed, 31 Oct 2012 01:58:42 +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 <0MCP009BOTRPFA00@mmp2.samsung.com> for u-boot@lists.denx.de; Wed, 31 Oct 2012 01:58:42 +0900 (KST) From: Lukasz Majewski To: u-boot@lists.denx.de Date: Tue, 30 Oct 2012 17:57:16 +0100 Message-id: <1351616239-21079-22-git-send-email-l.majewski@samsung.com> X-Mailer: git-send-email 1.7.10 In-reply-to: <1351616239-21079-1-git-send-email-l.majewski@samsung.com> References: <1351616239-21079-1-git-send-email-l.majewski@samsung.com> X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFnrMJMWRmVeSWpSXmKPExsVy+t9jQV0n9gkBBv/n6li83dvJ7sDocfbO DsYAxigum5TUnMyy1CJ9uwSujK3Tm9gL/khXzG96ytrA+EO0i5GTQ0LAROL4y7csELaYxIV7 69m6GLk4hASmM0rsO7SEFcJZzCQx/+9iVpAqNgE9ic93nzKB2CICEhK/+q8yghQxC+xglGg+ eZYNJCEsEC2xfNtisLEsAqoSj3vWg9m8Au4Sa7YvZ4dYJy/x9H4fUD0HBydQfNvqfJCwkICb xOvv19gnMPIuYGRYxSiaWpBcUJyUnmukV5yYW1yal66XnJ+7iRHs9WfSOxhXNVgcYhTgYFTi 4TX41x8gxJpYVlyZe4hRgoNZSYR3yW+gEG9KYmVValF+fFFpTmrxIUZpDhYlcd5mj5QAIYH0 xJLU7NTUgtQimCwTB6dUA6Ohs+Spc42tJ2afKKqTWsE6K0hTasP3BfPPqP24PDlR/O3HHJ9Z M5Tt4xc8/TLpj+HyanW1jqnbqp/G5HvmxmT8szRf1rxbSmvHH/ubUj3H5cS27rvxj+m7Uuoh O4cFs6ZeWMWznuuQxsvN5o9n2iSrnQjUf8D9OW952uzlfVsruVVKOma6BYsosRRnJBpqMRcV JwIAfZRFWfYBAAA= Cc: Tom Rini , Kyungmin Park Subject: [U-Boot] [PATCH v4 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 Changes for v4: - None --- 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" );