summaryrefslogtreecommitdiff
path: root/bootloader/x1000/utils.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/utils.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/utils.c')
-rw-r--r--bootloader/x1000/utils.c25
1 files changed, 25 insertions, 0 deletions
diff --git a/bootloader/x1000/utils.c b/bootloader/x1000/utils.c
index f4dbac4c5e..56ac6d1fff 100644
--- a/bootloader/x1000/utils.c
+++ b/bootloader/x1000/utils.c
@@ -23,6 +23,13 @@
23#include "storage.h" 23#include "storage.h"
24#include "button.h" 24#include "button.h"
25#include "kernel.h" 25#include "kernel.h"
26#include "usb.h"
27
28/* Set to true if a SYS_USB_CONNECTED event is seen
29 * Set to false if a SYS_USB_DISCONNECTED event is seen
30 * Handled by the gui code since that's how events are delivered
31 * TODO: this is an ugly kludge */
32bool is_usb_connected = false;
26 33
27/* this is both incorrect and incredibly racy... */ 34/* this is both incorrect and incredibly racy... */
28int check_disk(bool wait) 35int check_disk(bool wait)
@@ -43,3 +50,21 @@ int check_disk(bool wait)
43 50
44 return DISK_PRESENT; 51 return DISK_PRESENT;
45} 52}
53
54void usb_mode(void)
55{
56 if(!is_usb_connected)
57 splash2(0, "Waiting for USB", "Press " BL_QUIT_NAME " to cancel");
58
59 while(!is_usb_connected)
60 if(get_button(TIMEOUT_BLOCK) == BL_QUIT)
61 return;
62
63 splash(0, "USB mode");
64 usb_acknowledge(SYS_USB_CONNECTED_ACK);
65
66 while(is_usb_connected)
67 get_button(TIMEOUT_BLOCK);
68
69 splash(3*HZ, "USB disconnected");
70}