summaryrefslogtreecommitdiff
path: root/bootloader/x1000.c
diff options
context:
space:
mode:
authorAidan MacDonald <amachronic@protonmail.com>2022-03-05 09:39:46 +0000
committerAidan MacDonald <amachronic@protonmail.com>2022-03-12 18:25:10 +0000
commit5bdb2fccdb9846e75e499593c6183346eca3e660 (patch)
tree2445901276eb7f1e11748b8c1d1134d29848b2a6 /bootloader/x1000.c
parent7554a49309fe31e69747c64caa28b4303270481b (diff)
downloadrockbox-5bdb2fccdb9846e75e499593c6183346eca3e660.tar.gz
rockbox-5bdb2fccdb9846e75e499593c6183346eca3e660.zip
x1000: bootloader: refactor usb handling
Drop init_usb(), instead initialize USB early in the main function so the hardware is placed into a known good state after a USB boot. The impact on boot time should be minimal. Change-Id: I9774ddfc2c27811363bdb0c54cb0e57b5ca59d73
Diffstat (limited to 'bootloader/x1000.c')
-rw-r--r--bootloader/x1000.c40
1 files changed, 3 insertions, 37 deletions
diff --git a/bootloader/x1000.c b/bootloader/x1000.c
index 1c9f3cd2fa..bc56b8f822 100644
--- a/bootloader/x1000.c
+++ b/bootloader/x1000.c
@@ -56,43 +56,6 @@
56#include <stdio.h> 56#include <stdio.h>
57#include <stdarg.h> 57#include <stdarg.h>
58 58
59/* Flags to indicate if hardware was already initialized */
60bool usb_inited = false;
61
62/* Set to true if a SYS_USB_CONNECTED event is seen
63 * Set to false if a SYS_USB_DISCONNECTED event is seen */
64bool is_usb_connected = false;
65
66void init_usb(void)
67{
68 if(usb_inited)
69 return;
70
71 usb_init();
72 usb_start_monitoring();
73 usb_inited = true;
74}
75
76void usb_mode(void)
77{
78 init_usb();
79
80 if(!is_usb_connected)
81 splash2(0, "Waiting for USB", "Press " BL_QUIT_NAME " to go back");
82
83 while(!is_usb_connected)
84 if(get_button(TIMEOUT_BLOCK) == BL_QUIT)
85 return;
86
87 splash(0, "USB mode");
88 usb_acknowledge(SYS_USB_CONNECTED_ACK);
89
90 while(is_usb_connected)
91 get_button(TIMEOUT_BLOCK);
92
93 splash(3*HZ, "USB disconnected");
94}
95
96void main(void) 59void main(void)
97{ 60{
98 system_init(); 61 system_init();
@@ -110,6 +73,9 @@ void main(void)
110 73
111 filesystem_init(); 74 filesystem_init();
112 75
76 usb_init();
77 usb_start_monitoring();
78
113 /* It's OK if this doesn't mount anything. Any disk access should 79 /* It's OK if this doesn't mount anything. Any disk access should
114 * be guarded by a call to check_disk() to see if the disk is really 80 * be guarded by a call to check_disk() to see if the disk is really
115 * present, blocking with an "insert SD card" prompt if appropriate. */ 81 * present, blocking with an "insert SD card" prompt if appropriate. */