[U-Boot] [PATCH] sunxi: musb: Re-init musb controller on repeated probe calls

Hans de Goede hdegoede at redhat.com
Sun Sep 18 17:40:19 CEST 2016


Hi,

On 18-09-16 17:00, Ian Campbell wrote:
> On Sun, 2016-09-18 at 16:53 +0200, Hans de Goede wrote:
>> With sunxi-musb musb_lowlevel_init() can fail when a charger; or no
>> cable
>> is plugged into the otg port.
>>
>> To avoid leaking the struct musb allocated by musb_init_controller()
>> on repeated musb_usb_probe() calls, we were caching its result.
>> But musb_init_controller() does more, such as calling
>> sunxi_musb_init()
>> which enables the clocks.
>>
>> Not calling sunxi_musb_init() causes the musb controller to stop
>> working
>> after a "usb reset" since that calls musb_usb_remove() which disables
>> the
>> clocks.
>>
>> This commit fixes this by removing the caching of the struct returned
>> from musb_init_controller(), it replaces this by free-ing the
>> allocated
>> memory in musb_usb_remove() and calling musb_usb_remove() on
>> musb_usb_probe() errors to ensure proper cleanup.
>>
>> While at it also make musb_usb_probe() and musb_usb_remove() static.
>>
>> Signed-off-by: Hans de Goede <hdegoede at redhat.com>
>
> LGTM in so far as it seems like a more normal way to do things,

Yeah my original hack here was bad, and something which I should
never have done, ain't hindsight a wonderful thing :)

Regards,

Hans


More information about the U-Boot mailing list