From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S933107AbdJRGIj convert rfc822-to-8bit (ORCPT ); Wed, 18 Oct 2017 02:08:39 -0400 Received: from smtprelay.synopsys.com ([198.182.60.111]:59048 "EHLO smtprelay.synopsys.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1755508AbdJRGIh (ORCPT ); Wed, 18 Oct 2017 02:08:37 -0400 From: Minas Harutyunyan To: Marek Vasut , Dinh Nguyen , "John.Youn@synopsys.com" CC: "balbi@kernel.org" , "linux-usb@vger.kernel.org" , "linux-kernel@vger.kernel.org" Subject: Re: [PATCH] usb: dwc2: disable erroneous overcurrent condition Thread-Topic: [PATCH] usb: dwc2: disable erroneous overcurrent condition Thread-Index: AQHTRobKJUR/ijO2BEm0jCEXpRxvvw== Date: Wed, 18 Oct 2017 06:08:11 +0000 Message-ID: <410670D7E743164D87FA6160E7907A560113A2F435@am04wembxa.internal.synopsys.com> References: <1508162238-12206-1-git-send-email-dinguyen@kernel.org> <90d8caae-baaa-244f-a6f3-1ce6fd4e8143@denx.de> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-originating-ip: [10.116.70.92] Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 8BIT MIME-Version: 1.0 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On 10/16/2017 8:40 PM, Marek Vasut wrote: > On 10/16/2017 03:57 PM, Dinh Nguyen wrote: >> For the case where an external VBUS is used, we should enable the external >> VBUS comparator in the driver. This would prevent an unnecessary >> overcurrent error which would then disable the host port. >> >> This patch uses the standard 'disable-over-current' binding to allow of the >> option of disabling the over-current condition. >> >> Signed-off-by: Dinh Nguyen > > Reviewed-by: Marek Vasut > > Similar patch was in U-Boot for two years now and it does the trick indeed. > >> --- >> drivers/usb/dwc2/core.h | 4 ++++ >> drivers/usb/dwc2/hcd.c | 5 +++++ >> drivers/usb/dwc2/params.c | 3 +++ >> 3 files changed, 12 insertions(+) >> >> diff --git a/drivers/usb/dwc2/core.h b/drivers/usb/dwc2/core.h >> index 8367d4f9..730d7eb 100644 >> --- a/drivers/usb/dwc2/core.h >> +++ b/drivers/usb/dwc2/core.h >> @@ -395,6 +395,9 @@ enum dwc2_ep0_state { >> * (default when phy_type is UTMI+ or ULPI) >> * 1 - 6 MHz >> * (default when phy_type is Full Speed) >> + * @oc_disable: Flag to disable overcurrent condition. >> + * 0 - Allow overcurrent condition to get detected >> + * 1 - Disable overcurrent condtion to get detected >> * @ts_dline: Enable Term Select Dline pulsing >> * 0 - No (default) >> * 1 - Yes >> @@ -492,6 +495,7 @@ struct dwc2_core_params { >> bool dma_desc_fs_enable; >> bool host_support_fs_ls_low_power; >> bool host_ls_low_power_phy_clk; >> + bool oc_disable; >> >> u8 host_channels; >> u16 host_rx_fifo_size; >> diff --git a/drivers/usb/dwc2/hcd.c b/drivers/usb/dwc2/hcd.c >> index c263114..5e20336 100644 >> --- a/drivers/usb/dwc2/hcd.c >> +++ b/drivers/usb/dwc2/hcd.c >> @@ -213,6 +213,11 @@ static int dwc2_hs_phy_init(struct dwc2_hsotg *hsotg, bool select_phy) >> usbcfg &= ~(GUSBCFG_PHYIF16 | GUSBCFG_DDRSEL); >> if (hsotg->params.phy_ulpi_ddr) >> usbcfg |= GUSBCFG_DDRSEL; >> + >> + /* Set external VBUS indicator as needed. */ >> + if (hsotg->params.oc_disable) >> + usbcfg |= (GUSBCFG_ULPI_INT_VBUS_IND | >> + GUSBCFG_INDICATORPASSTHROUGH); >> break; >> case DWC2_PHY_TYPE_PARAM_UTMI: >> /* UTMI+ interface */ >> diff --git a/drivers/usb/dwc2/params.c b/drivers/usb/dwc2/params.c >> index a3ffe97..39e02cd 100644 >> --- a/drivers/usb/dwc2/params.c >> +++ b/drivers/usb/dwc2/params.c >> @@ -335,6 +335,9 @@ static void dwc2_get_device_properties(struct dwc2_hsotg *hsotg) >> num); >> } >> } >> + >> + if (of_find_property(hsotg->dev->of_node, "disable-over-current", NULL)) >> + p->oc_disable = true; >> } >> >> static void dwc2_check_param_otg_cap(struct dwc2_hsotg *hsotg) >> > > Hi John Youn, I checked with HW team - patch is OK. Acked-by: Minas Harutyunyan