[patch 2/5] ulpi: handle ULPI_OTG_CTRL_CHRGVBUS

Arnaud Patard (Rtp) arnaud.patard at rtp-net.org
Thu Dec 23 15:11:03 EST 2010


Igor Grinberg <grinberg at compulab.co.il> writes:

> Hi Arnaud,
>
> On 12/20/10 17:48, Arnaud Patard (Rtp) wrote:
>> Current code doesn't handle setting CHRGVBUS when enabling vbus.
>> Add support for it
>>
>>
>>
>> Signed-off-by: Arnaud Patard <arnaud.patard at rtp-net.org>
>> Index: tst-usb/drivers/usb/otg/ulpi.c
>> ===================================================================
>> --- tst-usb.orig/drivers/usb/otg/ulpi.c	2010-12-20 15:38:41.000000000 +0100
>> +++ tst-usb/drivers/usb/otg/ulpi.c	2010-12-20 15:38:57.000000000 +0100
>> @@ -234,7 +234,8 @@
>>  {
>>  	unsigned int flags = otg_io_read(otg, ULPI_OTG_CTRL);
>>  
>> -	flags &= ~(ULPI_OTG_CTRL_DRVVBUS | ULPI_OTG_CTRL_DRVVBUS_EXT);
>> +	flags &= ~(ULPI_OTG_CTRL_DRVVBUS | ULPI_OTG_CTRL_DRVVBUS_EXT |
>> +			ULPI_OTG_CTRL_CHRGVBUS);
>>  
>>  	if (on) {
>>  		if (otg->flags & ULPI_OTG_DRVVBUS)
>> @@ -242,6 +243,9 @@
>>  
>>  		if (otg->flags & ULPI_OTG_DRVVBUS_EXT)
>>  			flags |= ULPI_OTG_CTRL_DRVVBUS_EXT;
>> +
>> +		if (otg->flags & ULPI_OTG_CHRGVBUS)
>> +			flags |= ULPI_OTG_CTRL_CHRGVBUS;
>>  	}
>>  
>>  	return otg_io_write(otg, flags, ULPI_OTG_CTRL);
>
> I think this is a wrong place to set the ChrgVbus bit.
> As for ULPI spec. 1.1:
> "3.8.7.1 Session Request Protocol (SRP)
> ULPI provides full SRP support. The Link uses the ChrgVbus and DischrgVbus bits
> in the OTG Control register to begin and end a session."
>
> So it is used for SRP.
> May be it is better to implement
> int    (*start_srp)(struct otg_transceiver *otg);
> method for setting this bit?
>
I was not sure on where to put this so I took the same approach as the
fsl bsp which was to set it in this function and to call this function
_after_ usb_add_hcd() [ see my previous patch ]. Indeed, it fixed my
issue so I believe it not so bad given that there has already been some
troubles on the ehci-mxc init.

Arnaud



More information about the linux-arm-kernel mailing list