[U-Boot] [PATCH 1/2] sunxi: musb: Do not fully reset the controler from sunxi_musb_disable

Hans de Goede hdegoede at redhat.com
Sun Jun 14 19:21:47 CEST 2015


Hi,

On 06/14/2015 01:46 PM, Ian Campbell wrote:
> On Sun, 2015-06-14 at 12:40 +0200, Hans de Goede wrote:
>> Fully resetting the controller is a too big hammer, and the musb_core will
>> then afterwards fail to communicate with any endpoints other then 0 as
>> too much state was cleared.
>>
>> Instead report vbus low for 200ms which will effectively end the current
>> session without needing to do a full reset.
>>
>> This fixes usb mass-storage devices no longer working after a "usb reset"
>>
>> Signed-off-by: Hans de Goede <hdegoede at redhat.com>
>
> Acked-by: Ian Campbell <ijc at hellion.org.uk>
>
> One question (which turned into two) (both more for the musb maint than
> you):
>
>> +/* musb_core does not call enable / disable in a balanced manner <sigh> */
>> +static bool enabled = false;
>
> Is this sufficient, or should we be reference counting? Or should the
> core be fixed?

The u-boot musb-new code is a copy of the kernel code, and both are of,
ah, interesting quality. One problem is that the core calls
musb_platform_disable as part of musb_init_controller and thus before
musb_platform_enable is ever called.

Ideally the core would not do this, but in u-boot it is used on 4
different SoCs and in the kernel even more, and chances are that that
call was added to put the hw in a clean state on some SoC...

Basically my approach for these kind of problems in the musb core so
far has been to work around them were possible, so as to not cause
any regressions on other SoCs.

Regards,

Hans


More information about the U-Boot mailing list