]> git.sur5r.net Git - u-boot/commit
sunxi: musb: Re-init musb controller on repeated probe calls
authorHans de Goede <hdegoede@redhat.com>
Sat, 17 Sep 2016 14:02:38 +0000 (16:02 +0200)
committerHans de Goede <hdegoede@redhat.com>
Sun, 18 Sep 2016 12:39:16 +0000 (14:39 +0200)
commit7c22e26ec5badd564cfb674827ac11ac4e943e9f
treec2156a04b6c690866e763e8003f8665a6fc30c49
parent57075a472a5c2b9a7c498a9dc2f2cfcc1e898ec2
sunxi: musb: Re-init musb controller on repeated probe calls

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@redhat.com>
drivers/usb/musb-new/sunxi.c