From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753473AbcC0X0i (ORCPT ); Sun, 27 Mar 2016 19:26:38 -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 S1752405AbcC0XZv (ORCPT ); Sun, 27 Mar 2016 19:25:51 -0400 X-AuditID: cbfee690-f79e56d0000012c4-86-56f86bfabc33 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 2/3] power: axp288_charger: Replace deprecatd API of extcon Date: Mon, 28 Mar 2016 08:25:41 +0900 Message-id: <1459121142-3768-3-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+NgFrrDLMWRmVeSWpSXmKPExsWyRsSkRPdX9o8wg5UnlC2uf3nOajHpyXtm i/lHzrFaTFw5mdni8q45bBafe48wWtxuXMFmcXp3iQOHx85Zd9k9Nq/Q8ti0qpPNo2/LKkaP z5vkAlijuGxSUnMyy1KL9O0SuDJuvtzJXrDVoqJ34QqmBsZH+l2MnBwSAiYS15a0skPYYhIX 7q1n62Lk4hASWMEoser7N1aYouWTrrFCJJYySvxYdZARwvnCKPH0/CwWkCo2AS2J/S9uALVz cIgIREoceMEEEmYWyJd4d3kRG4gtLOAtcWBPN1gJi4AqUDkLiMkr4CKxb3cBxCo5iQ97HoHd wyngKnF29R+wTiGgkv8//4KdICEwj11i6cpusASLgIDEt8mHwOZICMhKbDrADDFHUuLgihss ExiFFzAyrGIUTS1ILihOSi8y0StOzC0uzUvXS87P3cQIDPTT/55N2MF474D1IUYBDkYlHt4M yx9hQqyJZcWVuYcYTYE2TGSWEk3OB8ZTXkm8obGZkYWpiamxkbmlmZI472upn8FCAumJJanZ qakFqUXxRaU5qcWHGJk4OKUaGJs8LhX85j75afqMY94pTspva14J7/h5rOzr0tOf9IJnn2uP 6jrFqzv1HtuX5d4LuN1uJs6IYTKJ+Wuj6XN7U7vQuYIVqeH9Bw7bHOIu4o/Wrn9RnKFSH8/R 3socvHrt4/Kedw9iYhP3vHYP+6Lqwcx/42618OfTq+8rVLae51Et2J9z+NDxCUosxRmJhlrM RcWJAH7XPTZvAgAA X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFlrJIsWRmVeSWpSXmKPExsVy+t9jAd1f2T/CDNpvSlpc//Kc1WLSk/fM FvOPnGO1mLhyMrPF5V1z2Cw+9x5htLjduILN4vTuEgcOj52z7rJ7bF6h5bFpVSebR9+WVYwe nzfJBbBGNTDaZKQmpqQWKaTmJeenZOal2yp5B8c7x5uaGRjqGlpamCsp5CXmptoqufgE6Lpl 5gCdoqRQlphTChQKSCwuVtK3wzQhNMRN1wKmMULXNyQIrsfIAA0krGHMuPlyJ3vBVouK3oUr mBoYH+l3MXJySAiYSCyfdI0VwhaTuHBvPVsXIxeHkMBSRokfqw4yQjhfGCWenp/FAlLFJqAl sf/FDaAqDg4RgUiJAy+YQMLMAvkS7y4vYgOxhQW8JQ7s6QYrYRFQBSpnATF5BVwk9u0ugFgl J/FhzyN2EJtTwFXi7Oo/YJ1CQCX/f/5lncDIu4CRYRWjRGpBckFxUnquUV5quV5xYm5xaV66 XnJ+7iZGcDQ9k97BeHiX+yFGAQ5GJR7eDMsfYUKsiWXFlbmHGCU4mJVEeKvSgEK8KYmVValF +fFFpTmpxYcYTYHOmsgsJZqcD4z0vJJ4Q2MTMyNLI3NDCyNjcyVx3sf/14UJCaQnlqRmp6YW pBbB9DFxcEo1MDqJiV7pf9I1VXPLE51m8XXVXR8cA9L+qGrfP33bJsf0n/qFXdN+mLxfUDm5 /sDTTLUY1ZsLt01cyW13pfeZSS/nq7W1k0oX9roFLuzu++d+o9OwLkrHQSM4V/HS4ow5cs/f LNIxYmTROrKi+h97QLKF462eXX75H5ozDOI388a+KSr5XhLprcRSnJFoqMVcVJwIAJmgmoC8 AgAA DLP-Filter: Pass X-MTR: 20000000000000000@CPGS X-CFilter-Loop: Reflected Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org 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() - extcon_get_cable_state() -> extcon_get_cable_state_() 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 */ [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 --- drivers/power/axp288_charger.c | 77 +++++++++++++++++++++++++++++------------- 1 file changed, 53 insertions(+), 24 deletions(-) diff --git a/drivers/power/axp288_charger.c b/drivers/power/axp288_charger.c index e4d569f57acc..e5c2569befa6 100644 --- a/drivers/power/axp288_charger.c +++ b/drivers/power/axp288_charger.c @@ -129,10 +129,6 @@ #define AXP288_EXTCON_DEV_NAME "axp288_extcon" -#define AXP288_EXTCON_SLOW_CHARGER "SLOW-CHARGER" -#define AXP288_EXTCON_DOWNSTREAM_CHARGER "CHARGE-DOWNSTREAM" -#define AXP288_EXTCON_FAST_CHARGER "FAST-CHARGER" - enum { VBUS_OV_IRQ = 0, CHARGE_DONE_IRQ, @@ -158,7 +154,7 @@ struct axp288_chrg_info { /* OTG/Host mode */ struct { struct work_struct work; - struct extcon_specific_cable_nb cable; + struct extcon_dev *cable; struct notifier_block id_nb; bool id_short; } otg; @@ -586,17 +582,15 @@ static void axp288_charger_extcon_evt_worker(struct work_struct *work) bool old_connected = info->cable.connected; /* Determine cable/charger type */ - if (extcon_get_cable_state(edev, AXP288_EXTCON_SLOW_CHARGER) > 0) { + if (extcon_get_cable_state_(edev, EXTCON_CHG_USB_SDP) > 0) { dev_dbg(&info->pdev->dev, "USB SDP charger is connected"); info->cable.connected = true; info->cable.chg_type = POWER_SUPPLY_TYPE_USB; - } else if (extcon_get_cable_state(edev, - AXP288_EXTCON_DOWNSTREAM_CHARGER) > 0) { + } else if (extcon_get_cable_state_(edev, EXTCON_CHG_USB_CDP) > 0) { dev_dbg(&info->pdev->dev, "USB CDP charger is connected"); info->cable.connected = true; info->cable.chg_type = POWER_SUPPLY_TYPE_USB_CDP; - } else if (extcon_get_cable_state(edev, - AXP288_EXTCON_FAST_CHARGER) > 0) { + } else if (extcon_get_cable_state_(edev, EXTCON_CHG_USB_DCP) > 0) { dev_dbg(&info->pdev->dev, "USB DCP charger is connected"); info->cable.connected = true; info->cable.chg_type = POWER_SUPPLY_TYPE_USB_DCP; @@ -692,8 +686,8 @@ static int axp288_charger_handle_otg_evt(struct notifier_block *nb, { struct axp288_chrg_info *info = container_of(nb, struct axp288_chrg_info, otg.id_nb); - struct extcon_dev *edev = param; - int usb_host = extcon_get_cable_state(edev, "USB-Host"); + struct extcon_dev *edev = info->otg.cable; + int usb_host = extcon_get_cable_state_(edev, EXTCON_USB_HOST); dev_dbg(&info->pdev->dev, "external connector USB-Host is %s\n", usb_host ? "attached" : "detached"); @@ -848,10 +842,33 @@ static int axp288_charger_probe(struct platform_device *pdev) /* Register for extcon notification */ INIT_WORK(&info->cable.work, axp288_charger_extcon_evt_worker); info->cable.nb.notifier_call = axp288_charger_handle_cable_evt; - ret = extcon_register_notifier(info->cable.edev, EXTCON_NONE, &info->cable.nb); + ret = extcon_register_notifier(info->cable.edev, EXTCON_CHG_USB_SDP, + &info->cable.nb); + if (ret) { + dev_err(&info->pdev->dev, + "failed to register extcon notifier for SDP %d\n", ret); + return ret; + } + + ret = extcon_register_notifier(info->cable.edev, EXTCON_CHG_USB_CDP, + &info->cable.nb); + if (ret) { + dev_err(&info->pdev->dev, + "failed to register extcon notifier for CDP %d\n", ret); + extcon_unregister_notifier(info->cable.edev, + EXTCON_CHG_USB_SDP, &info->cable.nb); + return ret; + } + + ret = extcon_register_notifier(info->cable.edev, EXTCON_CHG_USB_DCP, + &info->cable.nb); if (ret) { dev_err(&info->pdev->dev, - "failed to register extcon notifier %d\n", ret); + "failed to register extcon notifier for DCP %d\n", ret); + extcon_unregister_notifier(info->cable.edev, + EXTCON_CHG_USB_SDP, &info->cable.nb); + extcon_unregister_notifier(info->cable.edev, + EXTCON_CHG_USB_CDP, &info->cable.nb); return ret; } @@ -871,14 +888,14 @@ static int axp288_charger_probe(struct platform_device *pdev) /* Register for OTG notification */ INIT_WORK(&info->otg.work, axp288_charger_otg_evt_worker); info->otg.id_nb.notifier_call = axp288_charger_handle_otg_evt; - ret = extcon_register_interest(&info->otg.cable, NULL, "USB-Host", + ret = extcon_register_notifier(info->otg.cable, EXTCON_USB_HOST, &info->otg.id_nb); if (ret) dev_warn(&pdev->dev, "failed to register otg notifier\n"); - if (info->otg.cable.edev) - info->otg.id_short = extcon_get_cable_state( - info->otg.cable.edev, "USB-Host"); + if (info->otg.cable) + info->otg.id_short = extcon_get_cable_state_( + info->otg.cable, EXTCON_USB_HOST); /* Register charger interrupts */ for (i = 0; i < CHRG_INTR_END; i++) { @@ -905,11 +922,17 @@ static int axp288_charger_probe(struct platform_device *pdev) return 0; intr_reg_failed: - if (info->otg.cable.edev) - extcon_unregister_interest(&info->otg.cable); + if (info->otg.cable) + extcon_unregister_notifier(info->otg.cable, EXTCON_USB_HOST, + &info->otg.id_nb); power_supply_unregister(info->psy_usb); psy_reg_failed: - extcon_unregister_notifier(info->cable.edev, EXTCON_NONE, &info->cable.nb); + extcon_unregister_notifier(info->cable.edev, EXTCON_CHG_USB_SDP, + &info->cable.nb); + extcon_unregister_notifier(info->cable.edev, EXTCON_CHG_USB_SDP, + &info->cable.nb); + extcon_unregister_notifier(info->cable.edev, EXTCON_CHG_USB_DCP, + &info->cable.nb); return ret; } @@ -917,10 +940,16 @@ static int axp288_charger_remove(struct platform_device *pdev) { struct axp288_chrg_info *info = dev_get_drvdata(&pdev->dev); - if (info->otg.cable.edev) - extcon_unregister_interest(&info->otg.cable); + if (info->otg.cable) + extcon_unregister_notifier(info->otg.cable, EXTCON_USB_HOST, + &info->otg.id_nb); - extcon_unregister_notifier(info->cable.edev, EXTCON_NONE, &info->cable.nb); + extcon_unregister_notifier(info->cable.edev, EXTCON_CHG_USB_SDP, + &info->cable.nb); + extcon_unregister_notifier(info->cable.edev, EXTCON_CHG_USB_SDP, + &info->cable.nb); + extcon_unregister_notifier(info->cable.edev, EXTCON_CHG_USB_DCP, + &info->cable.nb); power_supply_unregister(info->psy_usb); return 0; -- 1.9.1