From ed897d1359bcf09692746d2b8b31fcbd2da95b58 Mon Sep 17 00:00:00 2001 From: Aidan MacDonald Date: Sat, 5 Mar 2022 09:40:57 +0000 Subject: x1000: bootloader: move the main function to its own file Now that everything has been refactored into separate files the main routine is the only thing left to move. Put it in main.c. Change-Id: I53aba87ed281b52944fb80d9a62beaec1c87f152 --- bootloader/x1000/main.c | 79 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 79 insertions(+) create mode 100644 bootloader/x1000/main.c (limited to 'bootloader/x1000') diff --git a/bootloader/x1000/main.c b/bootloader/x1000/main.c new file mode 100644 index 0000000000..c507b1d2c9 --- /dev/null +++ b/bootloader/x1000/main.c @@ -0,0 +1,79 @@ +/*************************************************************************** + * __________ __ ___. + * Open \______ \ ____ ____ | | _\_ |__ _______ ___ + * Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ / + * Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < < + * Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \ + * \/ \/ \/ \/ \/ + * $Id$ + * + * Copyright (C) 2021 Aidan MacDonald + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY + * KIND, either express or implied. + * + ****************************************************************************/ + +#include "x1000bootloader.h" +#include "system.h" +#include "core_alloc.h" +#include "kernel/kernel-internal.h" +#include "power.h" +#include "button.h" +#include "storage.h" +#include "disk.h" +#include "file_internal.h" +#include "usb.h" +#include "i2c-x1000.h" +#include "boot-x1000.h" +#include + +void main(void) +{ + system_init(); + core_allocator_init(); + kernel_init(); + i2c_init(); + power_init(); + button_init(); + enable_irq(); + + if(storage_init() < 0) { + splash(5*HZ, "storage_init() failed"); + power_off(); + } + + filesystem_init(); + + usb_init(); + usb_start_monitoring(); + + /* It's OK if this doesn't mount anything. Any disk access should + * be guarded by a call to check_disk() to see if the disk is really + * present, blocking with an "insert SD card" prompt if appropriate. */ + disk_mount_all(); + + /* If USB booting, the user probably needs to enter recovery mode; + * let's not force them to hold down the recovery key. */ + bool recovery_mode = get_boot_flag(BOOT_FLAG_USB_BOOT); + +#ifdef HAVE_BUTTON_DATA + int bdata; + if(button_read_device(&bdata) & BL_RECOVERY) +#else + if(button_read_device() & BL_RECOVERY) +#endif + recovery_mode = true; + + /* If boot fails, it will return and continue on below */ + if(!recovery_mode) + boot_rockbox(); + + /* This function does not return. */ + recovery_menu(); +} -- cgit v1.2.3