1
0
Fork 0
forked from len0rd/rockbox

Gigabeat S: Revert removal of usb_plugged in r31489

Synchronous cable read is still required because the timing of the receipt of
the cable event cannot be known for sure-- basically it introduced a thread
race between main and pmic. If a keypress is desired instead to enter BL USB
mode a la AS3525, then it's possible to remove that.


git-svn-id: svn://svn.rockbox.org/rockbox/trunk@31510 a1c6a512-1295-4272-9138-f99709370657
This commit is contained in:
Michael Sevakis 2012-01-01 03:19:52 +00:00
parent 7b22ea0d37
commit 36bc6a1fd5
3 changed files with 10 additions and 4 deletions

View file

@ -109,7 +109,7 @@ static void handle_usb(int connect_timeout)
break; break;
} }
if (usb_detect() == USB_EXTRACTED) if (usb_plugged() == USB_EXTRACTED)
break; /* Cable pulled */ break; /* Cable pulled */
} }
@ -376,7 +376,7 @@ void main(void)
/* Do USB first since a tar or binary could be added to the MTP directory /* Do USB first since a tar or binary could be added to the MTP directory
* at the time and we can untar or move after unplugging. */ * at the time and we can untar or move after unplugging. */
if (usb_detect() == USB_INSERTED) if (usb_plugged() == USB_INSERTED)
handle_usb(HZ*2); handle_usb(HZ*2);
handle_untar(); handle_untar();

View file

@ -85,6 +85,7 @@ struct ARM_REGS {
void dumpregs(void); void dumpregs(void);
bool usb_plugged(void);
void usb_connect_event(void); void usb_connect_event(void);
/** Sector read/write filters **/ /** Sector read/write filters **/

View file

@ -53,11 +53,16 @@ static void enable_transceiver(bool enable)
} }
} }
/* Read the immediate state of the cable from the PMIC */
bool usb_plugged(void)
{
return mc13783_read(MC13783_INTERRUPT_SENSE0) & MC13783_USB4V4S;
}
void usb_connect_event(void) void usb_connect_event(void)
{ {
/* Read the immediate state of the cable from the PMIC */ /* Read the immediate state of the cable from the PMIC */
int status = (mc13783_read(MC13783_INTERRUPT_SENSE0) & MC13783_USB4V4S) int status = usb_plugged() ? USB_INSERTED : USB_EXTRACTED;
? USB_INSERTED : USB_EXTRACTED;
usb_status = status; usb_status = status;
/* Notify power that USB charging is potentially available */ /* Notify power that USB charging is potentially available */
charger_usb_detect_event(status); charger_usb_detect_event(status);