diff options
| author | Björn Stenberg <bjorn@haxx.se> | 2007-11-22 22:17:45 +0000 |
|---|---|---|
| committer | Björn Stenberg <bjorn@haxx.se> | 2007-11-22 22:17:45 +0000 |
| commit | 7af22e1a86a60da44356942fc403e87cca0977f3 (patch) | |
| tree | 6171e8c288a1456e128474101ba83aeb65da3e42 | |
| parent | f2815ff32f43fa682e9d577057d6b92e032757b3 (diff) | |
| download | rockbox-7af22e1a86a60da44356942fc403e87cca0977f3.zip rockbox-7af22e1a86a60da44356942fc403e87cca0977f3.tar.gz rockbox-7af22e1a86a60da44356942fc403e87cca0977f3.tar.bz2 rockbox-7af22e1a86a60da44356942fc403e87cca0977f3.tar.xz | |
Red fix: USB power check implemented in driver instead
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@15761 a1c6a512-1295-4272-9138-f99709370657
| -rw-r--r-- | bootloader/main-pp.c | 4 | ||||
| -rw-r--r-- | firmware/export/usb_drv.h | 1 | ||||
| -rw-r--r-- | firmware/target/arm/usb-drv-pp502x.c | 7 |
3 files changed, 10 insertions, 2 deletions
diff --git a/bootloader/main-pp.c b/bootloader/main-pp.c index c2d0b80..3cf7691 100644 --- a/bootloader/main-pp.c +++ b/bootloader/main-pp.c @@ -40,7 +40,7 @@ #endif #if defined(SANSA_E200) || defined(SANSA_C200) #include "usb.h" -#include "arcotg_udc.h" +#include "usb_drv.h" #endif @@ -460,7 +460,7 @@ void* main(void) btn = button_read_device(); #if defined(SANSA_E200) || defined(SANSA_C200) usb_init(); - while ((UDC_OTGSC&0x800) && usb_retry < 5 && !usb) + while (usb_drv_powered() && usb_retry < 5 && !usb) { usb_retry++; sleep(HZ/4); diff --git a/firmware/export/usb_drv.h b/firmware/export/usb_drv.h index a30f2ec..264b5d1 100644 --- a/firmware/export/usb_drv.h +++ b/firmware/export/usb_drv.h @@ -31,5 +31,6 @@ void usb_drv_ack(struct usb_ctrlrequest* req); void usb_drv_set_address(int address); void usb_drv_reset_endpoint(int endpoint, bool send); void usb_drv_wait(int endpoint, bool send); +bool usb_drv_powered(void); #endif diff --git a/firmware/target/arm/usb-drv-pp502x.c b/firmware/target/arm/usb-drv-pp502x.c index a837728..c77b881 100644 --- a/firmware/target/arm/usb-drv-pp502x.c +++ b/firmware/target/arm/usb-drv-pp502x.c @@ -247,6 +247,9 @@ #define USB_CTRL_IOENB (0x00000004) #define USB_CTRL_ULPI_INT0EN (0x00000001) +/* OTGSC Register Bit Masks */ +#define OTGSC_B_SESSION_VALID (0x00000800) + #define QH_MULT_POS (30) #define QH_ZLT_SEL (0x20000000) #define QH_MAX_PKT_LEN_POS (16) @@ -322,6 +325,10 @@ static void init_queue_heads(void); static void init_endpoints(void); /*-------------------------------------------------------------------------*/ +bool usb_drv_powered(void) +{ + return (REG_OTGSC & OTGSC_B_SESSION_VALID) ? true : false; +} /* manual: 32.14.1 Device Controller Initialization */ void usb_drv_init(void) |