lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [day] [month] [year] [list]
Date:   Wed, 18 Oct 2017 06:08:11 +0000
From:   Minas Harutyunyan <Minas.Harutyunyan@...opsys.com>
To:     Marek Vasut <marex@...x.de>, Dinh Nguyen <dinguyen@...nel.org>,
        "John.Youn@...opsys.com" <John.Youn@...opsys.com>
CC:     "balbi@...nel.org" <balbi@...nel.org>,
        "linux-usb@...r.kernel.org" <linux-usb@...r.kernel.org>,
        "linux-kernel@...r.kernel.org" <linux-kernel@...r.kernel.org>
Subject: Re: [PATCH] usb: dwc2: disable erroneous overcurrent condition

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 <dinguyen@...nel.org>
> 
> Reviewed-by: Marek Vasut <marex@...x.de>
> 
> 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 <hminas@...opsys.com>

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ