diff options
Diffstat (limited to 'firmware/target/arm')
-rw-r--r-- | firmware/target/arm/system-pp502x.c | 4 | ||||
-rw-r--r-- | firmware/target/arm/usb-drv-arc.c | 8 | ||||
-rw-r--r-- | firmware/target/arm/usb-fw-pp502x.c | 14 |
3 files changed, 17 insertions, 9 deletions
diff --git a/firmware/target/arm/system-pp502x.c b/firmware/target/arm/system-pp502x.c index bd71d28417..0422ea7d9c 100644 --- a/firmware/target/arm/system-pp502x.c +++ b/firmware/target/arm/system-pp502x.c | |||
@@ -141,9 +141,7 @@ void __attribute__((interrupt("IRQ"))) irq_handler(void) | |||
141 | else if (CPU_HI_INT_STAT & GPIO0_MASK) { | 141 | else if (CPU_HI_INT_STAT & GPIO0_MASK) { |
142 | if (GPIOD_INT_STAT & 0x02) | 142 | if (GPIOD_INT_STAT & 0x02) |
143 | button_int(); | 143 | button_int(); |
144 | } | 144 | if (GPIOB_INT_STAT & 0x40) |
145 | else if (CPU_HI_INT_STAT & GPIO1_MASK) { | ||
146 | if (GPIOF_INT_STAT & 0x80) | ||
147 | usb_insert_int(); | 145 | usb_insert_int(); |
148 | } | 146 | } |
149 | /* end PHILIPS_SA9200 */ | 147 | /* end PHILIPS_SA9200 */ |
diff --git a/firmware/target/arm/usb-drv-arc.c b/firmware/target/arm/usb-drv-arc.c index 86a1637bc8..fc74ce5bf0 100644 --- a/firmware/target/arm/usb-drv-arc.c +++ b/firmware/target/arm/usb-drv-arc.c | |||
@@ -498,15 +498,23 @@ static void log_ep(int ep_num, int ep_dir, char* prefix) | |||
498 | 498 | ||
499 | void usb_drv_init(void) | 499 | void usb_drv_init(void) |
500 | { | 500 | { |
501 | #ifdef USB_DETECT_BY_CORE | ||
502 | /* USB core decides */ | ||
503 | _usb_drv_init(true); | ||
504 | #else | ||
505 | /* Use bus reset condition */ | ||
501 | _usb_drv_init(false); | 506 | _usb_drv_init(false); |
507 | #endif | ||
502 | } | 508 | } |
503 | 509 | ||
504 | /* fully enable driver */ | 510 | /* fully enable driver */ |
505 | void usb_drv_attach(void) | 511 | void usb_drv_attach(void) |
506 | { | 512 | { |
507 | logf("usb_drv_attach"); | 513 | logf("usb_drv_attach"); |
514 | #ifndef USB_DETECT_BY_CORE | ||
508 | sleep(HZ/10); | 515 | sleep(HZ/10); |
509 | _usb_drv_init(true); | 516 | _usb_drv_init(true); |
517 | #endif | ||
510 | } | 518 | } |
511 | 519 | ||
512 | void usb_drv_exit(void) | 520 | void usb_drv_exit(void) |
diff --git a/firmware/target/arm/usb-fw-pp502x.c b/firmware/target/arm/usb-fw-pp502x.c index 8f754fd04b..536535e059 100644 --- a/firmware/target/arm/usb-fw-pp502x.c +++ b/firmware/target/arm/usb-fw-pp502x.c | |||
@@ -65,10 +65,10 @@ | |||
65 | #define USB_GPIO_VAL 0x04 | 65 | #define USB_GPIO_VAL 0x04 |
66 | 66 | ||
67 | #elif defined(PHILIPS_SA9200) | 67 | #elif defined(PHILIPS_SA9200) |
68 | /* GPIO F bit 7 (low) is usb detect */ | 68 | /* GPIO B bit 6 (high) is usb bus power detect */ |
69 | #define USB_GPIO GPIOF | 69 | #define USB_GPIO GPIOB |
70 | #define USB_GPIO_MASK 0x80 | 70 | #define USB_GPIO_MASK 0x40 |
71 | #define USB_GPIO_VAL 0x00 | 71 | #define USB_GPIO_VAL 0x40 |
72 | 72 | ||
73 | #elif defined(PHILIPS_HDD1630) || defined(PHILIPS_HDD6330) | 73 | #elif defined(PHILIPS_HDD1630) || defined(PHILIPS_HDD6330) |
74 | /* GPIO E bit 2 is usb detect */ | 74 | /* GPIO E bit 2 is usb detect */ |
@@ -225,10 +225,12 @@ void usb_insert_int(void) | |||
225 | timeout_register(&usb_oneshot, usb_timeout_event, HZ/5, val); | 225 | timeout_register(&usb_oneshot, usb_timeout_event, HZ/5, val); |
226 | } | 226 | } |
227 | 227 | ||
228 | /* Called during the bus reset interrupt when in detect mode - filter for | 228 | /* USB_DETECT_BY_DRV: Called during the bus reset interrupt when in detect mode |
229 | * invalid bus reset when unplugging by checking the pin state. */ | 229 | * USB_DETECT_BY_CORE: Called when device descriptor is requested |
230 | */ | ||
230 | void usb_drv_usb_detect_event(void) | 231 | void usb_drv_usb_detect_event(void) |
231 | { | 232 | { |
233 | /* Filter for invalid bus reset when unplugging by checking the pin state. */ | ||
232 | if(usb_plugged()) { | 234 | if(usb_plugged()) { |
233 | usb_status_event(USB_INSERTED); | 235 | usb_status_event(USB_INSERTED); |
234 | } | 236 | } |