mirror of
https://github.com/Rockbox/rockbox.git
synced 2025-12-09 21:25:19 -05:00
This should take care of resetting when unplugging on e200 as reported in FS#9812. Be sure VBUS is valid before posting insert message as a spurious reset can occur. It seems to fix it for me (tested by insulating D+/D- pins).
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@19800 a1c6a512-1295-4272-9138-f99709370657
This commit is contained in:
parent
76042cb389
commit
5d1eb8ee31
1 changed files with 7 additions and 2 deletions
|
|
@ -272,6 +272,7 @@
|
||||||
|
|
||||||
/* OTGSC Register Bit Masks */
|
/* OTGSC Register Bit Masks */
|
||||||
#define OTGSC_B_SESSION_VALID (0x00000800)
|
#define OTGSC_B_SESSION_VALID (0x00000800)
|
||||||
|
#define OTGSC_A_VBUS_VALID (0x00000200)
|
||||||
|
|
||||||
#define QH_MULT_POS (30)
|
#define QH_MULT_POS (30)
|
||||||
#define QH_ZLT_SEL (0x20000000)
|
#define QH_ZLT_SEL (0x20000000)
|
||||||
|
|
@ -516,7 +517,10 @@ void usb_drv_int(void)
|
||||||
if (UNLIKELY(usbintr == USBINTR_RESET_EN)) {
|
if (UNLIKELY(usbintr == USBINTR_RESET_EN)) {
|
||||||
/* USB detected - detach and inform */
|
/* USB detected - detach and inform */
|
||||||
usb_drv_stop();
|
usb_drv_stop();
|
||||||
usb_drv_usb_detect_event();
|
/* A false reset may occur upon unplugging, be sure VBUS is above
|
||||||
|
* the 4V4 threshold. */
|
||||||
|
if (usb_drv_powered())
|
||||||
|
usb_drv_usb_detect_event();
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
#endif
|
#endif
|
||||||
|
|
@ -594,7 +598,8 @@ bool usb_drv_connected(void)
|
||||||
|
|
||||||
bool usb_drv_powered(void)
|
bool usb_drv_powered(void)
|
||||||
{
|
{
|
||||||
return (REG_OTGSC & OTGSC_B_SESSION_VALID) ? true : false;
|
/* true = bus 4V4 ok */
|
||||||
|
return (REG_OTGSC & OTGSC_A_VBUS_VALID) ? true : false;
|
||||||
}
|
}
|
||||||
|
|
||||||
void usb_drv_set_address(int address)
|
void usb_drv_set_address(int address)
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue