From patchwork Fri Nov 9 07:42:26 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: 197983 X-Patchwork-Delegate: agust@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 5EEEC2C01FA for ; Fri, 9 Nov 2012 18:46:53 +1100 (EST) Received: from localhost (localhost [127.0.0.1]) by theia.denx.de (Postfix) with ESMTP id 937F34AC10; Fri, 9 Nov 2012 08:45:58 +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 JzL2nCp8MHiO; Fri, 9 Nov 2012 08:45:58 +0100 (CET) Received: from theia.denx.de (localhost [127.0.0.1]) by theia.denx.de (Postfix) with ESMTP id 2F0034A9F0; Fri, 9 Nov 2012 08:44:33 +0100 (CET) Received: from localhost (localhost [127.0.0.1]) by theia.denx.de (Postfix) with ESMTP id D0FE44A9B1 for ; Fri, 9 Nov 2012 08:44:20 +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 ajo+-f7+2tCI for ; Fri, 9 Nov 2012 08:44:20 +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 929A04A6BD for ; Fri, 9 Nov 2012 08:43:42 +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 <0MD7007UUMR20BV0@mailout2.samsung.com> for u-boot@lists.denx.de; Fri, 09 Nov 2012 16:43:41 +0900 (KST) X-AuditID: cbfee61b-b7f616d00000319b-80-509cb42d974b Received: from epmmp1.local.host ( [203.254.227.16]) by epcpsbgm2.samsung.com (EPCPMTA) with SMTP id 0C.00.12699.D24BC905; Fri, 09 Nov 2012 16:43:41 +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 <0MD700H3CMQZYP10@mmp1.samsung.com> for u-boot@lists.denx.de; Fri, 09 Nov 2012 16:43:41 +0900 (KST) From: Lukasz Majewski To: u-boot@lists.denx.de Date: Fri, 09 Nov 2012 08:42:26 +0100 Message-id: <1352446951-12558-22-git-send-email-l.majewski@samsung.com> X-Mailer: git-send-email 1.7.10 In-reply-to: <1352446951-12558-1-git-send-email-l.majewski@samsung.com> References: <1352446951-12558-1-git-send-email-l.majewski@samsung.com> X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFnrMJMWRmVeSWpSXmKPExsVy+t9jAV3dLXMCDJ50i1q83dvJ7sDocfbO DsYAxigum5TUnMyy1CJ9uwSujC/fm9kL1slUHFr0lL2BcY5YFyMnh4SAicTZ/StYIGwxiQv3 1rN1MXJxCAksYpQ4ufoblLOYSWJv60OwKjYBPYnPd58ygdgiAhISv/qvMoIUMQvsYJRoPnmW DSQhLBAtcfHMBCCbg4NFQFXizZRckDCvgLvE3L1r2SC2yUs8vd8HZnMCxXdeXARmCwm4SfTO f8w0gZF3ASPDKkbR1ILkguKk9FwjveLE3OLSvHS95PzcTYxgrz+T3sG4qsHiEKMAB6MSD2/i g9kBQqyJZcWVuYcYJTiYlUR452bOCRDiTUmsrEotyo8vKs1JLT7EKM3BoiTO2+yREiAkkJ5Y kpqdmlqQWgSTZeLglGpgjCgrm9rbP8HDbEHSsvh5796fDNBcf3BjREXoonWhd+bZrX+v9V89 rdShQZvr3Zz3zBJb4wqZv3V9dpcK9GNJERT/+ouxyUNAhVPT/rz7Y6evEwxf+2hsvPMl3bhl St7t5ZNDHhtG2Yg9juNpv8CnMnn5q7gtWfMSCm4GfixQmprOs++lsFOnEktxRqKhFnNRcSIA WN5GKPYBAAA= Cc: Tom Rini , Kyungmin Park Subject: [U-Boot] [PATCH v6 21/26] 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 Changes for v5: - None Changes for v6: - 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" );