diff options
author | Michael Sevakis <jethead71@rockbox.org> | 2011-09-14 15:26:57 +0000 |
---|---|---|
committer | Michael Sevakis <jethead71@rockbox.org> | 2011-09-14 15:26:57 +0000 |
commit | 82259b7af57eab383b38616a2e391d9b7fcaf967 (patch) | |
tree | 6430bfee221c6e7ae87a47355953e7a8c7c29ed3 /firmware/target/arm/as3525 | |
parent | 207131c53b15e7b5956177e90932b7445ff5b4ce (diff) | |
download | rockbox-82259b7af57eab383b38616a2e391d9b7fcaf967.tar.gz rockbox-82259b7af57eab383b38616a2e391d9b7fcaf967.zip |
Move AMSv1 (AMSv2 had been done already) to using setup packet request to detect a host.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@30547 a1c6a512-1295-4272-9138-f99709370657
Diffstat (limited to 'firmware/target/arm/as3525')
-rw-r--r-- | firmware/target/arm/as3525/usb-as3525.c | 59 | ||||
-rw-r--r-- | firmware/target/arm/as3525/usb-drv-as3525.c | 4 |
2 files changed, 13 insertions, 50 deletions
diff --git a/firmware/target/arm/as3525/usb-as3525.c b/firmware/target/arm/as3525/usb-as3525.c index a6d5d3a245..6dcf99934e 100644 --- a/firmware/target/arm/as3525/usb-as3525.c +++ b/firmware/target/arm/as3525/usb-as3525.c | |||
@@ -30,39 +30,6 @@ | |||
30 | 30 | ||
31 | static int usb_status = USB_EXTRACTED; | 31 | static int usb_status = USB_EXTRACTED; |
32 | 32 | ||
33 | #if CONFIG_CPU == AS3525v2 && !defined(USE_ROCKBOX_USB) | ||
34 | /* Rebooting on USB plug can crash these players in a state where | ||
35 | * hardware power off (pressing the power button) doesn't work anymore | ||
36 | * TODO: Implement USB in rockbox for these players */ | ||
37 | #define USB_INSERT_INT_STATUS USB_EXTRACTED | ||
38 | #undef USB_DETECT_BY_DRV | ||
39 | #undef USB_DETECT_BY_CORE | ||
40 | #undef USB_STATUS_BY_EVENT | ||
41 | |||
42 | #else /* !AS3525v2 */ | ||
43 | |||
44 | #if defined(USB_DETECT_BY_DRV) || defined(USB_DETECT_BY_CORE) | ||
45 | |||
46 | #ifdef USB_STATUS_BY_EVENT | ||
47 | #define USB_INSERT_INT_STATUS USB_INSERTED | ||
48 | #define USB_INSERT_INT_EVENT USB_POWERED | ||
49 | #define USB_REMOVE_INT_EVENT USB_UNPOWERED | ||
50 | #else | ||
51 | #define USB_INSERT_INT_STATUS USB_POWERED | ||
52 | #endif /* USB_STATUS_BY_EVENT */ | ||
53 | |||
54 | #else /* !USB_DETECT_BY_* */ | ||
55 | |||
56 | #define USB_INSERT_INT_STATUS USB_INSERTED | ||
57 | #ifdef USB_STATUS_BY_EVENT | ||
58 | #define USB_INSERT_INT_EVENT USB_INSERTED | ||
59 | #define USB_REMOVE_INT_EVENT USB_EXTRACTED | ||
60 | #endif /* USB_STATUS_BY_EVENT */ | ||
61 | |||
62 | #endif /* USB_DETECT_BY_* */ | ||
63 | |||
64 | #endif /* AS3525v2 */ | ||
65 | |||
66 | void usb_enable(bool on) | 33 | void usb_enable(bool on) |
67 | { | 34 | { |
68 | #if defined(HAVE_USBSTACK) && defined(USE_ROCKBOX_USB) | 35 | #if defined(HAVE_USBSTACK) && defined(USE_ROCKBOX_USB) |
@@ -77,33 +44,29 @@ void usb_enable(bool on) | |||
77 | 44 | ||
78 | void usb_insert_int(void) | 45 | void usb_insert_int(void) |
79 | { | 46 | { |
80 | usb_status = USB_INSERT_INT_STATUS; | 47 | usb_status = USB_INSERTED; |
81 | #ifdef USB_STATUS_BY_EVENT | 48 | usb_status_event(USB_POWERED); |
82 | usb_status_event(USB_INSERT_INT_EVENT); | ||
83 | #endif | ||
84 | } | 49 | } |
85 | 50 | ||
86 | void usb_remove_int(void) | 51 | void usb_remove_int(void) |
87 | { | 52 | { |
88 | usb_status = USB_EXTRACTED; | 53 | usb_status = USB_EXTRACTED; |
89 | #ifdef USB_STATUS_BY_EVENT | 54 | usb_status_event(USB_UNPOWERED); |
90 | usb_status_event(USB_REMOVE_INT_EVENT); | ||
91 | #endif | ||
92 | } | 55 | } |
93 | 56 | ||
94 | void usb_drv_usb_detect_event(void) | 57 | void usb_drv_usb_detect_event(void) |
95 | { | 58 | { |
96 | #if defined(USB_DETECT_BY_DRV) || defined(USB_DETECT_BY_CORE) | 59 | #if CONFIG_CPU != AS3525v2 || defined(USE_ROCKBOX_USB) |
60 | /* Rebooting on USB plug can crash these players in a state where | ||
61 | * hardware power off (pressing the power button) doesn't work anymore | ||
62 | * TODO: Implement USB in rockbox for these players */ | ||
97 | int oldstatus = disable_irq_save(); /* May come via USB thread */ | 63 | int oldstatus = disable_irq_save(); /* May come via USB thread */ |
98 | if (usb_status == USB_INSERT_INT_STATUS) | 64 | |
99 | { | 65 | if (usb_status == USB_INSERTED) |
100 | usb_status = USB_INSERTED; | ||
101 | #ifdef USB_STATUS_BY_EVENT | ||
102 | usb_status_event(USB_INSERTED); | 66 | usb_status_event(USB_INSERTED); |
103 | #endif | 67 | |
104 | } | ||
105 | restore_irq(oldstatus); | 68 | restore_irq(oldstatus); |
106 | #endif /* USB_DETECT_BY_* */ | 69 | #endif |
107 | } | 70 | } |
108 | 71 | ||
109 | int usb_detect(void) | 72 | int usb_detect(void) |
diff --git a/firmware/target/arm/as3525/usb-drv-as3525.c b/firmware/target/arm/as3525/usb-drv-as3525.c index 69c50cda93..1f52d40ce6 100644 --- a/firmware/target/arm/as3525/usb-drv-as3525.c +++ b/firmware/target/arm/as3525/usb-drv-as3525.c | |||
@@ -76,7 +76,8 @@ static inline void usb_disable_pll(void) | |||
76 | 76 | ||
77 | void usb_attach(void) | 77 | void usb_attach(void) |
78 | { | 78 | { |
79 | usb_enable(true); | 79 | logf("usb-drv: attach"); |
80 | /* Nothing to do */ | ||
80 | } | 81 | } |
81 | 82 | ||
82 | static void usb_tick(void); | 83 | static void usb_tick(void); |
@@ -768,7 +769,6 @@ void INT_USB(void) | |||
768 | } | 769 | } |
769 | if (intr & USB_DEV_INTR_USB_RESET) {/* usb reset from host? */ | 770 | if (intr & USB_DEV_INTR_USB_RESET) {/* usb reset from host? */ |
770 | logf("usb reset\n"); | 771 | logf("usb reset\n"); |
771 | usb_drv_usb_detect_event(); | ||
772 | reset_endpoints(1); | 772 | reset_endpoints(1); |
773 | usb_core_bus_reset(); | 773 | usb_core_bus_reset(); |
774 | intr &= ~USB_DEV_INTR_USB_RESET; | 774 | intr &= ~USB_DEV_INTR_USB_RESET; |