summaryrefslogtreecommitdiff
path: root/firmware/target/arm/imx31/gigabeat-s/usb-gigabeat-s.c
diff options
context:
space:
mode:
authorMichael Sevakis <jethead71@rockbox.org>2012-01-02 18:32:35 +0000
committerMichael Sevakis <jethead71@rockbox.org>2012-01-02 18:32:35 +0000
commit5a8da163c842b08c6dbf1df6921507ec2fd5a534 (patch)
tree559e1704efa126f603411fd71abd99a01c0e6610 /firmware/target/arm/imx31/gigabeat-s/usb-gigabeat-s.c
parent1f0e6530386e2295d9573f3f9cb7fd75f2e87450 (diff)
downloadrockbox-5a8da163c842b08c6dbf1df6921507ec2fd5a534.tar.gz
rockbox-5a8da163c842b08c6dbf1df6921507ec2fd5a534.zip
i.MX31 - Dethreading operations continue
Dispense with "pmic" thread and process PMIC events directly within ISR. Add sense bit reading as part of the handling. git-svn-id: svn://svn.rockbox.org/rockbox/trunk@31528 a1c6a512-1295-4272-9138-f99709370657
Diffstat (limited to 'firmware/target/arm/imx31/gigabeat-s/usb-gigabeat-s.c')
-rw-r--r--firmware/target/arm/imx31/gigabeat-s/usb-gigabeat-s.c17
1 files changed, 12 insertions, 5 deletions
diff --git a/firmware/target/arm/imx31/gigabeat-s/usb-gigabeat-s.c b/firmware/target/arm/imx31/gigabeat-s/usb-gigabeat-s.c
index b157544016..1584ffb574 100644
--- a/firmware/target/arm/imx31/gigabeat-s/usb-gigabeat-s.c
+++ b/firmware/target/arm/imx31/gigabeat-s/usb-gigabeat-s.c
@@ -59,16 +59,23 @@ bool usb_plugged(void)
59 return mc13783_read(MC13783_INTERRUPT_SENSE0) & MC13783_USB4V4S; 59 return mc13783_read(MC13783_INTERRUPT_SENSE0) & MC13783_USB4V4S;
60} 60}
61 61
62void usb_connect_event(void) 62/* Helper to update the USB cable status */
63static void update_usb_status(bool sense)
63{ 64{
64 /* Read the immediate state of the cable from the PMIC */ 65 int status = sense ? USB_INSERTED : USB_EXTRACTED;
65 int status = usb_plugged() ? USB_INSERTED : USB_EXTRACTED;
66 usb_status = status; 66 usb_status = status;
67 /* Notify power that USB charging is potentially available */ 67 /* Notify power that USB charging is potentially available */
68 charger_usb_detect_event(status); 68 charger_usb_detect_event(status);
69 usb_status_event(status); 69 usb_status_event(status);
70} 70}
71 71
72/* Detect presence of USB bus - called from PMIC ISR */
73void usb_connect_event(void)
74{
75 /* Read the associated sense value */
76 update_usb_status(mc13783_event_sense(MC13783_USB_EVENT));
77}
78
72int usb_detect(void) 79int usb_detect(void)
73{ 80{
74 return usb_status; 81 return usb_status;
@@ -80,10 +87,10 @@ void usb_init_device(void)
80 usb_drv_startup(); 87 usb_drv_startup();
81 88
82 /* Initially poll */ 89 /* Initially poll */
83 usb_connect_event(); 90 update_usb_status(usb_plugged());
84 91
85 /* Enable PMIC event */ 92 /* Enable PMIC event */
86 mc13783_enable_event(MC13783_USB_EVENT); 93 mc13783_enable_event(MC13783_USB_EVENT, true);
87} 94}
88 95
89void usb_enable(bool on) 96void usb_enable(bool on)