summaryrefslogtreecommitdiff
path: root/lib/rbtree.c
diff options
context:
space:
mode:
authorHans de Goede <hdegoede@redhat.com>2016-09-17 16:02:38 +0200
committerHans de Goede <hdegoede@redhat.com>2016-09-18 14:39:16 +0200
commit7c22e26ec5badd564cfb674827ac11ac4e943e9f (patch)
treec2156a04b6c690866e763e8003f8665a6fc30c49 /lib/rbtree.c
parent57075a472a5c2b9a7c498a9dc2f2cfcc1e898ec2 (diff)
downloadu-boot-imx-7c22e26ec5badd564cfb674827ac11ac4e943e9f.zip
u-boot-imx-7c22e26ec5badd564cfb674827ac11ac4e943e9f.tar.gz
u-boot-imx-7c22e26ec5badd564cfb674827ac11ac4e943e9f.tar.bz2
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>
Diffstat (limited to 'lib/rbtree.c')
0 files changed, 0 insertions, 0 deletions