From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752516AbbJFMMr (ORCPT ); Tue, 6 Oct 2015 08:12:47 -0400 Received: from mailout1.samsung.com ([203.254.224.24]:49903 "EHLO mailout1.samsung.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752282AbbJFMMo (ORCPT ); Tue, 6 Oct 2015 08:12:44 -0400 MIME-version: 1.0 Content-type: text/plain; charset=UTF-8 X-AuditID: cbfee691-f79d66d000001509-1a-5613baba5c4d Content-transfer-encoding: 8BIT Message-id: <5613BAB9.7070105@samsung.com> Date: Tue, 06 Oct 2015 21:12:41 +0900 From: Chanwoo Choi User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:31.0) Gecko/20100101 Thunderbird/31.6.0 To: Roger Quadros , linux-kernel@vger.kernel.org Cc: k.kozlowski@samsung.com, ckeepax@opensource.wolfsonmicro.com, gregkh@linuxfoundation.org, ramakrishna.pallala@intel.com, patches@opensource.wolfsonmicro.com, myungjoo.ham@samsung.com Subject: Re: [PATCH 2/2] extcon: Add the support of EXTCON_CHG_USB when SDP port is attached or detached References: <1444130485-23325-1-git-send-email-cw00.choi@samsung.com> <1444130485-23325-3-git-send-email-cw00.choi@samsung.com> <5613B553.9080005@ti.com> In-reply-to: <5613B553.9080005@ti.com> X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFlrOIsWRmVeSWpSXmKPExsWyRsSkQHfXLuEwg/YXHBb/ptxgt2hevJ7N 4vULQ4vLu+awWdxuXMFmsfztfzaLhW9uMln0PNJy4PBYvOclk8f+uWvYPV5O/M3m0bdlFaPH 8RvbmTw+b5ILYIvisklJzcksSy3St0vgyngzZzZzQWNIxe5JiQ2MG1y7GDk5JARMJHrOzmGG sMUkLtxbz9bFyMUhJLCCUWL7hbmMXYwcYEUN11kh4ksZJfZcuskC0sArICjxY/I9FpAaZgF5 iSOXskHCzALqEpPmLWKGqH/AKPHk0WE2iHotiaXvO5hB6lkEVCVW9VeAhNmAwvtf3GADCYsK REh0n6gECYsI2Ev0zp7FCjFyH6PE+hnlILawQJZE/4/ZLBDj5zJKfF7YyQ6S4BRQk7h74DE7 SEJC4B67RMvbpWAJFgEBiW+TD7FA/CIrsekA1L+SEgdX3GCZwCg2C8k3sxC+mYXkmwWMzKsY RVMLkguKk9KLTPWKE3OLS/PS9ZLzczcxAuPv9L9nE3cw3j9gfYhRgINRiYdX8qZQmBBrYllx Ze4hRlOgIyYyS4km5wOjPK8k3tDYzMjC1MTU2Mjc0kxJnFdH+mewkEB6YklqdmpqQWpRfFFp TmrxIUYmDk6pBsajvzwM7zRnv7ha8/jQtkPX106q87/Dq7HI7apA07XCppcaEi5JjfOz7oQy fXOIyHNSc5O/16V69h1j6j7npsLFTX1Nc5MXC6zj4vL21d3INaciXu5eVv61H/vfeHucDt9h teGNK59cqNepyInzfCos/r/oero/rpe94prC9F+fW3/F7LTRt1ZiKc5INNRiLipOBACf1Tkv ugIAAA== X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFvrCIsWRmVeSWpSXmKPExsVy+t9jAd1du4TDDG5OZrL4N+UGu0Xz4vVs Fq9fGFpc3jWHzeJ24wo2i+Vv/7NZLHxzk8mi55GWA4fH4j0vmTz2z13D7vFy4m82j74tqxg9 jt/YzuTxeZNcAFtUA6NNRmpiSmqRQmpecn5KZl66rZJ3cLxzvKmZgaGuoaWFuZJCXmJuqq2S i0+ArltmDtA9SgpliTmlQKGAxOJiJX07TBNCQ9x0LWAaI3R9Q4LgeowM0EDCGsaMN3NmMxc0 hlTsnpTYwLjBtYuRg0NCwESi4TprFyMnkCkmceHeerYuRi4OIYGljBJ7Lt1kAUnwCghK/Jh8 jwWknllAXuLIpWyQMLOAusSkeYuYIeofMEo8eXSYDaJeS2Lp+w5mkHoWAVWJVf0VIGE2oPD+ FzfYQMKiAhES3ScqQcIiAvYSvbNnsUKM3McosX5GOYgtLJAl0f9jNgvE+LmMEp8XdrKDJDgF 1CTuHnjMPoFRYBaS62YhXDcLyXULGJlXMUqkFiQXFCel5xrmpZbrFSfmFpfmpesl5+duYgTH +DOpHYwHd7kfYhTgYFTi4ZW4KRQmxJpYVlyZe4hRgoNZSYT37hThMCHelMTKqtSi/Pii0pzU 4kOMpkDvTWSWEk3OB6afvJJ4Q2MTMyNLI3NDCyNjcyVx3huHGMKEBNITS1KzU1MLUotg+pg4 OKUaGL1chRLZJ365I+3Lolf4ZK5MBpuRyCSRF4VnPTX6KubLvDof0yQ2fQFDie8b73+6UQbX Vc4dvxkdcvv3+SDG4/LCVxWUj3zwyYsuN2A6nXf/xnf7ep5XcWlvZwedOFwSESgfn5zhKaXn FyHdstBzGkO5tcNt5T8/nlZaWU28qatcJb64Yn+tEktxRqKhFnNRcSIAlgOxOgcDAAA= 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 Roger, On 2015년 10월 06일 20:49, Roger Quadros wrote: > Hi, > > On 06/10/15 14:21, Chanwoo Choi wrote: >> The SDP (Standard Downstream Port) is one of various USB Charging ports. The SDP >> supports both the data transmission and the charging through USB connector at >> the same time. So, the EXTCON framework defines two connector type for USB SDP >> connector as following: >> - EXTCON_USB means the USB cable for data transmission. >> - EXTCON_CHG_USB means the USB charger cable for battery charging. >> >> This patch add the support of EXTCON_CHG_USB when USB SDP is attached or >> detached. > > I didn't understand why this change is needed. SDP, EXTCON_USB and EXTCON_CHG_USB > are the same thing. no? As you knew, SDP support both data transmission and charging through one port at the same time. Also, On patch1 of this patch-set, I add the prefix to clarify both attribute and meaning of external connector as following: - EXTCON_CHG_* mean the charger connector. So, there are three possible naming approach for USB SDP. Approach 1. - EXTCON_USB /* SDP for both data transmission and charging */ Approach 2. - EXTCON_USB /* SDP for data transmission */ - EXTCON_CHG_USB /* SDP for charging */ Approach 3. - EXTCON_CHG_USB /* SDP for both data transmission and charging */ It is not fixed about name. I want to discuss what is proper name for USB SDP. Thanks, Chanwoo Choi > > cheers, > -roger > >> >> Signed-off-by: Chanwoo Choi >> --- >> drivers/extcon/extcon-max14577.c | 2 ++ >> drivers/extcon/extcon-max77693.c | 11 ++++++++++- >> drivers/extcon/extcon-max77843.c | 2 ++ >> drivers/extcon/extcon-max8997.c | 2 ++ >> drivers/extcon/extcon-palmas.c | 3 +++ >> drivers/extcon/extcon-rt8973a.c | 3 +++ >> drivers/extcon/extcon-sm5502.c | 3 +++ >> drivers/extcon/extcon-usb-gpio.c | 3 +++ >> 8 files changed, 28 insertions(+), 1 deletion(-) >> >> diff --git a/drivers/extcon/extcon-max14577.c b/drivers/extcon/extcon-max14577.c >> index 15c2dcc73fc6..f262dad10560 100644 >> --- a/drivers/extcon/extcon-max14577.c >> +++ b/drivers/extcon/extcon-max14577.c >> @@ -150,6 +150,7 @@ enum max14577_muic_acc_type { >> >> static const unsigned int max14577_extcon_cable[] = { >> EXTCON_USB, >> + EXTCON_CHG_USB, >> EXTCON_CHG_USB_DCP, >> EXTCON_CHG_USB_DCP_FAST, >> EXTCON_CHG_USB_DCP_SLOW, >> @@ -454,6 +455,7 @@ static int max14577_muic_chg_handler(struct max14577_muic_info *info) >> return ret; >> >> extcon_set_cable_state_(info->edev, EXTCON_USB, attached); >> + extcon_set_cable_state_(info->edev, EXTCON_CHG_USB, attached); >> break; >> case MAX14577_CHARGER_TYPE_DEDICATED_CHG: >> extcon_set_cable_state_(info->edev, EXTCON_CHG_USB_DCP, >> diff --git a/drivers/extcon/extcon-max77693.c b/drivers/extcon/extcon-max77693.c >> index 95c707b1fcee..ee63718de787 100644 >> --- a/drivers/extcon/extcon-max77693.c >> +++ b/drivers/extcon/extcon-max77693.c >> @@ -204,6 +204,7 @@ enum max77693_muic_acc_type { >> static const unsigned int max77693_extcon_cable[] = { >> EXTCON_USB, >> EXTCON_USB_HOST, >> + EXTCON_CHG_USB, >> EXTCON_CHG_USB_DCP, >> EXTCON_CHG_USB_DCP_FAST, >> EXTCON_CHG_USB_DCP_SLOW, >> @@ -512,8 +513,11 @@ static int max77693_muic_dock_handler(struct max77693_muic_info *info, >> break; >> case MAX77693_MUIC_ADC_AV_CABLE_NOLOAD: /* Dock-Audio */ >> dock_id = EXTCON_DOCK; >> - if (!attached) >> + if (!attached) { >> extcon_set_cable_state_(info->edev, EXTCON_USB, false); >> + extcon_set_cable_state_(info->edev, EXTCON_CHG_USB, >> + false); >> + } >> break; >> default: >> dev_err(info->dev, "failed to detect %s dock device\n", >> @@ -601,6 +605,7 @@ static int max77693_muic_adc_ground_handler(struct max77693_muic_info *info) >> if (ret < 0) >> return ret; >> extcon_set_cable_state_(info->edev, EXTCON_USB, attached); >> + extcon_set_cable_state_(info->edev, EXTCON_CHG_USB, attached); >> break; >> case MAX77693_MUIC_GND_MHL: >> case MAX77693_MUIC_GND_MHL_VB: >> @@ -830,6 +835,8 @@ static int max77693_muic_chg_handler(struct max77693_muic_info *info) >> */ >> extcon_set_cable_state_(info->edev, EXTCON_USB, >> attached); >> + extcon_set_cable_state_(info->edev, EXTCON_CHG_USB, >> + attached); >> >> if (!cable_attached) >> extcon_set_cable_state_(info->edev, EXTCON_DOCK, >> @@ -899,6 +906,8 @@ static int max77693_muic_chg_handler(struct max77693_muic_info *info) >> >> extcon_set_cable_state_(info->edev, EXTCON_USB, >> attached); >> + extcon_set_cable_state_(info->edev, EXTCON_CHG_USB, >> + attached); >> break; >> case MAX77693_CHARGER_TYPE_DEDICATED_CHG: >> /* Only TA cable */ >> diff --git a/drivers/extcon/extcon-max77843.c b/drivers/extcon/extcon-max77843.c >> index 97aebe5d67a6..5bfd4a5ec9c4 100644 >> --- a/drivers/extcon/extcon-max77843.c >> +++ b/drivers/extcon/extcon-max77843.c >> @@ -122,6 +122,7 @@ enum max77843_muic_charger_type { >> static const unsigned int max77843_extcon_cable[] = { >> EXTCON_USB, >> EXTCON_USB_HOST, >> + EXTCON_CHG_USB, >> EXTCON_CHG_USB_DCP, >> EXTCON_CHG_USB_CDP, >> EXTCON_CHG_USB_DCP_FAST, >> @@ -486,6 +487,7 @@ static int max77843_muic_chg_handler(struct max77843_muic_info *info) >> return ret; >> >> extcon_set_cable_state_(info->edev, EXTCON_USB, attached); >> + extcon_set_cable_state_(info->edev, EXTCON_CHG_USB, attached); >> break; >> case MAX77843_MUIC_CHG_DOWNSTREAM: >> ret = max77843_muic_set_path(info, >> diff --git a/drivers/extcon/extcon-max8997.c b/drivers/extcon/extcon-max8997.c >> index 8dbec5febdb6..3e8c6ab546b6 100644 >> --- a/drivers/extcon/extcon-max8997.c >> +++ b/drivers/extcon/extcon-max8997.c >> @@ -148,6 +148,7 @@ struct max8997_muic_info { >> static const unsigned int max8997_extcon_cable[] = { >> EXTCON_USB, >> EXTCON_USB_HOST, >> + EXTCON_CHG_USB, >> EXTCON_CHG_USB_DCP, >> EXTCON_CHG_USB_DCP_FAST, >> EXTCON_CHG_USB_DCP_SLOW, >> @@ -334,6 +335,7 @@ static int max8997_muic_handle_usb(struct max8997_muic_info *info, >> break; >> case MAX8997_USB_DEVICE: >> extcon_set_cable_state_(info->edev, EXTCON_USB, attached); >> + extcon_set_cable_state_(info->edev, EXTCON_CHG_USB, attached); >> break; >> default: >> dev_err(info->dev, "failed to detect %s usb cable\n", >> diff --git a/drivers/extcon/extcon-palmas.c b/drivers/extcon/extcon-palmas.c >> index 93c30a885740..a1e984ff4398 100644 >> --- a/drivers/extcon/extcon-palmas.c >> +++ b/drivers/extcon/extcon-palmas.c >> @@ -37,6 +37,7 @@ >> static const unsigned int palmas_extcon_cable[] = { >> EXTCON_USB, >> EXTCON_USB_HOST, >> + EXTCON_CHG_USB, >> EXTCON_NONE, >> }; >> >> @@ -62,6 +63,7 @@ static irqreturn_t palmas_vbus_irq_handler(int irq, void *_palmas_usb) >> if (palmas_usb->linkstat != PALMAS_USB_STATE_VBUS) { >> palmas_usb->linkstat = PALMAS_USB_STATE_VBUS; >> extcon_set_cable_state_(edev, EXTCON_USB, true); >> + extcon_set_cable_state_(edev, EXTCON_CHG_USB, true); >> dev_info(palmas_usb->dev, "USB cable is attached\n"); >> } else { >> dev_dbg(palmas_usb->dev, >> @@ -71,6 +73,7 @@ static irqreturn_t palmas_vbus_irq_handler(int irq, void *_palmas_usb) >> if (palmas_usb->linkstat == PALMAS_USB_STATE_VBUS) { >> palmas_usb->linkstat = PALMAS_USB_STATE_DISCONNECT; >> extcon_set_cable_state_(edev, EXTCON_USB, false); >> + extcon_set_cable_state_(edev, EXTCON_CHG_USB, false); >> dev_info(palmas_usb->dev, "USB cable is detached\n"); >> } else { >> dev_dbg(palmas_usb->dev, >> diff --git a/drivers/extcon/extcon-rt8973a.c b/drivers/extcon/extcon-rt8973a.c >> index 36bf1d63791c..64c7d8a90a11 100644 >> --- a/drivers/extcon/extcon-rt8973a.c >> +++ b/drivers/extcon/extcon-rt8973a.c >> @@ -93,6 +93,7 @@ static struct reg_data rt8973a_reg_data[] = { >> static const unsigned int rt8973a_extcon_cable[] = { >> EXTCON_USB, >> EXTCON_USB_HOST, >> + EXTCON_CHG_USB, >> EXTCON_CHG_USB_DCP, >> EXTCON_JIG, >> EXTCON_NONE, >> @@ -398,6 +399,8 @@ static int rt8973a_muic_cable_handler(struct rt8973a_muic_info *info, >> >> /* Change the state of external accessory */ >> extcon_set_cable_state_(info->edev, id, attached); >> + if (id == EXTCON_USB) >> + extcon_set_cable_state_(info->edev, EXTCON_CHG_USB, attached); >> >> return 0; >> } >> diff --git a/drivers/extcon/extcon-sm5502.c b/drivers/extcon/extcon-sm5502.c >> index 7aac3cc7efd7..24031759d306 100644 >> --- a/drivers/extcon/extcon-sm5502.c >> +++ b/drivers/extcon/extcon-sm5502.c >> @@ -95,6 +95,7 @@ static struct reg_data sm5502_reg_data[] = { >> static const unsigned int sm5502_extcon_cable[] = { >> EXTCON_USB, >> EXTCON_USB_HOST, >> + EXTCON_CHG_USB, >> EXTCON_CHG_USB_DCP, >> EXTCON_NONE, >> }; >> @@ -411,6 +412,8 @@ static int sm5502_muic_cable_handler(struct sm5502_muic_info *info, >> >> /* Change the state of external accessory */ >> extcon_set_cable_state_(info->edev, id, attached); >> + if (id == EXTCON_USB) >> + extcon_set_cable_state_(info->edev, EXTCON_CHG_USB, attached); >> >> return 0; >> } >> diff --git a/drivers/extcon/extcon-usb-gpio.c b/drivers/extcon/extcon-usb-gpio.c >> index 2b2fecffb1ad..ae8e3df0b5a6 100644 >> --- a/drivers/extcon/extcon-usb-gpio.c >> +++ b/drivers/extcon/extcon-usb-gpio.c >> @@ -43,6 +43,7 @@ struct usb_extcon_info { >> static const unsigned int usb_extcon_cable[] = { >> EXTCON_USB, >> EXTCON_USB_HOST, >> + EXTCON_CHG_USB, >> EXTCON_NONE, >> }; >> >> @@ -63,12 +64,14 @@ static void usb_extcon_detect_cable(struct work_struct *work) >> */ >> extcon_set_cable_state_(info->edev, EXTCON_USB_HOST, false); >> extcon_set_cable_state_(info->edev, EXTCON_USB, true); >> + extcon_set_cable_state_(info->edev, EXTCON_CHG_USB, true); >> } else { >> /* >> * ID = 0 means USB HOST cable attached. >> * As we don't have event for USB peripheral cable detached, >> * we simulate USB peripheral detach here. >> */ >> + extcon_set_cable_state_(info->edev, EXTCON_CHG_USB, false); >> extcon_set_cable_state_(info->edev, EXTCON_USB, false); >> extcon_set_cable_state_(info->edev, EXTCON_USB_HOST, true); >> } >> > -- > To unsubscribe from this list: send the line "unsubscribe linux-kernel" in > the body of a message to majordomo@vger.kernel.org > More majordomo info at http://vger.kernel.org/majordomo-info.html > Please read the FAQ at http://www.tux.org/lkml/ >