diff options
-rw-r--r-- | firmware/target/arm/usb-pp.c | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/firmware/target/arm/usb-pp.c b/firmware/target/arm/usb-pp.c index 042fb5bda5..d69c6e6c9c 100644 --- a/firmware/target/arm/usb-pp.c +++ b/firmware/target/arm/usb-pp.c | |||
@@ -85,6 +85,9 @@ void usb_init_device(void) | |||
85 | outl(inl(0x70000028) | 0x2, 0x70000028); | 85 | outl(inl(0x70000028) | 0x2, 0x70000028); |
86 | 86 | ||
87 | udelay(0x186A0); | 87 | udelay(0x186A0); |
88 | |||
89 | |||
90 | dr_controller_setup(); | ||
88 | } | 91 | } |
89 | 92 | ||
90 | void usb_enable(bool on) | 93 | void usb_enable(bool on) |
@@ -138,9 +141,11 @@ bool usb_detect(void) | |||
138 | 141 | ||
139 | usbstatus1 = (UDC_OTGSC & 0x800) ? true : false; | 142 | usbstatus1 = (UDC_OTGSC & 0x800) ? true : false; |
140 | if ((usbstatus1 == true) && (prev_usbstatus1 == false)) { | 143 | if ((usbstatus1 == true) && (prev_usbstatus1 == false)) { |
141 | dr_controller_setup(); | ||
142 | dr_controller_run(); | 144 | dr_controller_run(); |
145 | } else if ((usbstatus1 == false) && (prev_usbstatus1 == true)) { | ||
146 | dr_controller_stop(); | ||
143 | } | 147 | } |
148 | |||
144 | prev_usbstatus1 = usbstatus1; | 149 | prev_usbstatus1 = usbstatus1; |
145 | usbstatus2 = (UDC_PORTSC1 & PORTSCX_CURRENT_CONNECT_STATUS) ? true : false; | 150 | usbstatus2 = (UDC_PORTSC1 & PORTSCX_CURRENT_CONNECT_STATUS) ? true : false; |
146 | 151 | ||