From patchwork Sun Mar 27 23:25:40 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Chanwoo Choi X-Patchwork-Id: 8676591 Return-Path: X-Original-To: patchwork-linux-pm@patchwork.kernel.org Delivered-To: patchwork-parsemail@patchwork2.web.kernel.org Received: from mail.kernel.org (mail.kernel.org [198.145.29.136]) by patchwork2.web.kernel.org (Postfix) with ESMTP id 31283C0553 for ; Sun, 27 Mar 2016 23:25:58 +0000 (UTC) Received: from mail.kernel.org (localhost [127.0.0.1]) by mail.kernel.org (Postfix) with ESMTP id 1A6DF201CE for ; Sun, 27 Mar 2016 23:25:57 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id 6D5462021F for ; Sun, 27 Mar 2016 23:25:55 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752516AbcC0XZv (ORCPT ); Sun, 27 Mar 2016 19:25:51 -0400 Received: from mailout3.samsung.com ([203.254.224.33]:34180 "EHLO mailout3.samsung.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752227AbcC0XZt (ORCPT ); Sun, 27 Mar 2016 19:25:49 -0400 Received: from epcpsbgr4.samsung.com (u144.gpu120.samsung.co.kr [203.254.230.144]) by mailout3.samsung.com (Oracle Communications Messaging Server 7.0.5.31.0 64bit (built May 5 2014)) with ESMTP id <0O4Q02WKT12YL690@mailout3.samsung.com>; Mon, 28 Mar 2016 08:25:46 +0900 (KST) Received: from epcpsbgm2new.samsung.com ( [172.20.52.116]) by epcpsbgr4.samsung.com (EPCPMTA) with SMTP id 72.BD.04804.AFB68F65; Mon, 28 Mar 2016 08:25:46 +0900 (KST) X-AuditID: cbfee690-f79e56d0000012c4-84-56f86bfadd2a Received: from epmmp1.local.host ( [203.254.227.16]) by epcpsbgm2new.samsung.com (EPCPMTA) with SMTP id FB.D1.06699.AFB68F65; Mon, 28 Mar 2016 08:25:46 +0900 (KST) Received: from chan.10.32.193.11 ([10.113.62.212]) by mmp1.samsung.com (Oracle Communications Messaging Server 7.0.5.31.0 64bit (built May 5 2014)) with ESMTPA id <0O4Q006BF12XDL20@mmp1.samsung.com>; Mon, 28 Mar 2016 08:25:46 +0900 (KST) From: Chanwoo Choi To: sre@kernel.org, dbaryshkov@gmail.com, dwmw2@infradead.org, myungjoo.ham@samsung.com Cc: cw00.choi@samsung.com, linux-pm@vger.kernel.org, linux-kernel@vger.kernel.org, devicetree@vger.kernel.org Subject: [PATCH 1/3] power: charger-manager: Replace deprecatd API of extcon Date: Mon, 28 Mar 2016 08:25:40 +0900 Message-id: <1459121142-3768-2-git-send-email-cw00.choi@samsung.com> X-Mailer: git-send-email 1.8.0 In-reply-to: <1459121142-3768-1-git-send-email-cw00.choi@samsung.com> References: <1459121142-3768-1-git-send-email-cw00.choi@samsung.com> X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFrrJLMWRmVeSWpSXmKPExsWyRsSkRPdX9o8wg6X3pSyuf3nOajHpyXtm i/lHzrFaTFw5mdni8q45bBafe48wWtxuXMFmcXp3iQOHx85Zd9k9Nq/Q8ti0qpPNo2/LKkaP z5vkAlijuGxSUnMyy1KL9O0SuDLuNE5gLHiuVfH51waWBsZpyl2MHBwSAiYSDxcbdTFyApli EhfurWcDsYUEVjBK7NgLV7K6IaSLkQsovJRRon3FUWYI5wujxNPzs1hAGtgEtCT2v7jBBtIg IhApceAFE0iYWSBf4t3lRWAzhQV8JJ6e3sEIUsIioCpx+Kk1iMkr4CLxfZMuxAVyEh/2PGIH sTkFXCXOrv4DdY2LxP+ff1lBtkoILGOXeP6rCWw8i4CAxLfJh1ggzpSV2HSAGWKOpMTBFTdY JjAKL2BkWMUomlqQXFCclF5kolecmFtcmpeul5yfu4kRGOKn/z2bsIPx3gHrQ4wCHIxKPLwZ lj/ChFgTy4orcw8xmgJtmMgsJZqcD4ykvJJ4Q2MzIwtTE1NjI3NLMyVx3tdSP4OFBNITS1Kz U1MLUovii0pzUosPMTJxcEo1MK7p0DVxvjkrnT+Xf8Zvo4zJedIvTlsInJ41S6A/5eCT0wa+ HzjPzq74zZOz29BXc8W90ndSjr8W3Za6Y3G0V0h/ro/oymwdu4+fdzxSWHj3n+jr7zNezmvb 23yzf2/4PU+e3+3imue+yi354tz546pqx8mOZ8smOdwIN/A+Nee5Uar37tjPi42VWIozEg21 mIuKEwGgYCkFbAIAAA== X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFlrBIsWRmVeSWpSXmKPExsVy+t9jAd1f2T/CDC6vE7K4/uU5q8WkJ++Z LeYfOcdqMXHlZGaLy7vmsFl87j3CaHG7cQWbxendJQ4cHjtn3WX32LxCy2PTqk42j74tqxg9 Pm+SC2CNamC0yUhNTEktUkjNS85PycxLt1XyDo53jjc1MzDUNbS0MFdSyEvMTbVVcvEJ0HXL zAE6RUmhLDGnFCgUkFhcrKRvh2lCaIibrgVMY4Sub0gQXI+RARpIWMOYcadxAmPBc62Kz782 sDQwTlPuYuTgkBAwkVjdENLFyAlkiklcuLeerYuRi0NIYCmjRPuKo8wQzhdGiafnZ7GAVLEJ aEnsf3GDDaRZRCBS4sALJpAws0C+xLvLi9hAbGEBH4mnp3cwgpSwCKhKHH5qDWLyCrhIfN+k C7FKTuLDnkfsIDangKvE2dV/wDqFgEr+//zLOoGRdwEjwypGidSC5ILipPRco7zUcr3ixNzi 0rx0veT83E2M4Fh6Jr2D8fAu90OMAhyMSjy8GZY/woRYE8uKK3MPMUpwMCuJ8FalAYV4UxIr q1KL8uOLSnNSiw8xmgKdNZFZSjQ5HxjneSXxhsYmZkaWRuaGFkbG5krivI//rwsTEkhPLEnN Tk0tSC2C6WPi4JRqYDTJ/i7Xc2TDi69Vtn8DtvTe7l4s9Dpz/rIM15rWp9cj+CUP5U+WedX2 yysz/95h44jDGxey8j34tHNC/rpEVqfUSI+wy7n/eIR9mmMnr9r5JLvx3przz38K3ax7G3ia Yd731Ss77Q+f9NH/qN9j/NpdLby3/NtDKQnuaJUZCTcezLlzKth2uooSS3FGoqEWc1FxIgCL 3MCUuwIAAA== DLP-Filter: Pass X-MTR: 20000000000000000@CPGS X-CFilter-Loop: Reflected Sender: linux-pm-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-pm@vger.kernel.org X-Spam-Status: No, score=-7.9 required=5.0 tests=BAYES_00, RCVD_IN_DNSWL_HI, RP_MATCHES_RCVD, UNPARSEABLE_RELAY autolearn=unavailable version=3.3.1 X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on mail.kernel.org X-Virus-Scanned: ClamAV using ClamSMTP This patch removes the deprecated notifier API of extcon framework and then use the new extcon API[2] with the unique id[1] to indicate the each external connector. Alter deprecated API as following: - extcon_register_interest() -> extcon_register_notifier() - extcon_unregister_interest() -> extcon_unregister_notifier() And, extcon alters the name of USB charger connector in patch[3] as following: - EXTCON_CHG_USB_SDP /* Standard Downstream Port */ - EXTCON_CHG_USB_DCP /* Dedicated Charging Port */ - EXTCON_CHG_USB_CDP /* Charging Downstream Port */ - EXTCON_CHG_USB_ACA /* Accessory Charger Adapter */ So, the name of external charger connector are changed as following: - "USB" -> "SDP" - "TA" -> "DCP" [1] Commit 2a9de9c0f08d61 - ("extcon: Use the unique id for external connector instead of string) [2] Commit 046050f6e623e4 - ("extcon: Update the prototype of extcon_register_notifier() with enum extcon [3] Commit 11eecf910bd81d - ("extcon: Modify the id and name of external connector") Signed-off-by: Chanwoo Choi --- .../bindings/power_supply/charger-manager.txt | 4 +-- drivers/power/charger-manager.c | 31 ++++++++++++++-------- include/linux/power/charger-manager.h | 4 +-- 3 files changed, 24 insertions(+), 15 deletions(-) diff --git a/Documentation/devicetree/bindings/power_supply/charger-manager.txt b/Documentation/devicetree/bindings/power_supply/charger-manager.txt index ec4fe9de3137..73193e380dc2 100644 --- a/Documentation/devicetree/bindings/power_supply/charger-manager.txt +++ b/Documentation/devicetree/bindings/power_supply/charger-manager.txt @@ -65,13 +65,13 @@ Example : regulator@0 { cm-regulator-name = "chg-reg"; cable@0 { - cm-cable-name = "USB"; + cm-cable-id = 5; /* EXTCON_CHG_USB_SDP */ cm-cable-extcon = "extcon-dev.0"; cm-cable-min = <475000>; cm-cable-max = <500000>; }; cable@1 { - cm-cable-name = "TA"; + cm-cable-id = 6; /* EXTCON_CHG_USB_DCP */ cm-cable-extcon = "extcon-dev.0"; cm-cable-min = <650000>; cm-cable-max = <675000>; diff --git a/drivers/power/charger-manager.c b/drivers/power/charger-manager.c index e664ca7c0afd..ed63dc086eb6 100644 --- a/drivers/power/charger-manager.c +++ b/drivers/power/charger-manager.c @@ -1137,8 +1137,8 @@ static void charger_extcon_work(struct work_struct *work) ret = regulator_set_current_limit(cable->charger->consumer, cable->min_uA, cable->max_uA); if (ret < 0) { - pr_err("Cannot set current limit of %s (%s)\n", - cable->charger->regulator_name, cable->name); + pr_err("Cannot set current limit of %s (%d)\n", + cable->charger->regulator_name, cable->id); return; } @@ -1207,11 +1207,18 @@ static int charger_extcon_init(struct charger_manager *cm, */ INIT_WORK(&cable->wq, charger_extcon_work); cable->nb.notifier_call = charger_extcon_notifier; - ret = extcon_register_interest(&cable->extcon_dev, - cable->extcon_name, cable->name, &cable->nb); + + cable->extcon_dev = extcon_get_extcon_dev(cable->extcon_name); + if (IS_ERR(cable->extcon_dev)) { + pr_err("Cannot get extcon_dev for %s\n", cable->extcon_name); + return PTR_ERR(cable->extcon_dev); + } + + ret = extcon_register_notifier(cable->extcon_dev, cable->id, + &cable->nb); if (ret < 0) { - pr_info("Cannot register extcon_dev for %s(cable: %s)\n", - cable->extcon_name, cable->name); + pr_info("Cannot register extcon_dev for %s(cable: %d)\n", + cable->extcon_name, cable->id); ret = -EINVAL; } @@ -1589,8 +1596,8 @@ static struct charger_desc *of_cm_parse_desc(struct device *dev) chg_regs->cables = cables; for_each_child_of_node(child, _child) { - of_property_read_string(_child, - "cm-cable-name", &cables->name); + of_property_read_u32(_child, + "cm-cable-id", &cables->id); of_property_read_string(_child, "cm-cable-extcon", &cables->extcon_name); @@ -1833,8 +1840,9 @@ err_reg_extcon: for (j = 0; j < charger->num_cables; j++) { struct charger_cable *cable = &charger->cables[j]; /* Remove notifier block if only edev exists */ - if (cable->extcon_dev.edev) - extcon_unregister_interest(&cable->extcon_dev); + if (cable->extcon_dev) + extcon_unregister_notifier(cable->extcon_dev, + cable->id, &cable->nb); } regulator_put(desc->charger_regulators[i].consumer); @@ -1865,7 +1873,8 @@ static int charger_manager_remove(struct platform_device *pdev) = &desc->charger_regulators[i]; for (j = 0 ; j < charger->num_cables ; j++) { struct charger_cable *cable = &charger->cables[j]; - extcon_unregister_interest(&cable->extcon_dev); + extcon_unregister_notifier(cable->extcon_dev, + cable->id, &cable->nb); } } diff --git a/include/linux/power/charger-manager.h b/include/linux/power/charger-manager.h index c4fa907c8f14..b3404bb825d6 100644 --- a/include/linux/power/charger-manager.h +++ b/include/linux/power/charger-manager.h @@ -63,10 +63,10 @@ enum cm_event_types { */ struct charger_cable { const char *extcon_name; - const char *name; + unsigned int id; /* The charger-manager use Extcon framework */ - struct extcon_specific_cable_nb extcon_dev; + struct extcon_dev *extcon_dev; struct work_struct wq; struct notifier_block nb;