static void display_feedback(enum boot_action image) { // uint16_t *image_start; // uint16_t *image_end; lcd_bl_set_brightness(150); lcd_console_setpos(53, 25); lcd_console_setcolor(CONSOLE_COLOR_CYAN, CONSOLE_COLOR_BLACK); switch(image) { case BOOT_EMMC_NORMAL: lcd_puts(" (INT) LOADING BOOT ... "); break; case BOOT_EMMC_RECOVERY: lcd_puts(" (INT) LOADING RECOVERY ... "); break; case BOOT_EMMC_ALTBOOT: lcd_puts(" (INT) LOADING ALTBOOT ... "); break; case BOOT_SD_RECOVERY: lcd_puts(" (SDC) LOADING RECOVERY ... "); break; case BOOT_SD_CM7: lcd_puts(" (SDC) LOADING CM7 ... "); break; case BOOT_SD_CM9: lcd_puts(" (SDC) LOADING CM9 ... "); break; case BOOT_SD_ALTBOOT1: lcd_puts(" (SDC) LOADING ALTBOOT1 ... "); break; case BOOT_SD_ALTBOOT2: lcd_puts(" (SDC) LOADING ALTBOOT2 ... "); break; case BOOT_SD_ALTBOOT3: lcd_puts(" (SDC) LOADING ALTBOOT3 ... "); break; case BOOT_FASTBOOT: lcd_puts(" FASTBOOT HAS STARTED, PRESS POWER TO CANCEL "); break; default: lcd_puts(" LOADING ... "); break; } //lcd_display_image(image_start, image_end); }
static void display_feedback(enum boot_action image) { // uint16_t *image_start; // uint16_t *image_end; lcd_bl_set_brightness(140); lcd_console_setpos(54, 25); lcd_console_setcolor(CONSOLE_COLOR_CYAN, CONSOLE_COLOR_BLACK); switch(image) { case BOOT_EMMC_NORMAL: lcd_puts(" Loading (EMMC)..."); break; case BOOT_SD_RECOVERY: lcd_puts("Loading Recovery from SD..."); break; case BOOT_SD_ALTBOOT: lcd_puts(" Loading AltBoot from SD..."); break; case BOOT_SD_NORMAL: lcd_puts(" Loading (SD)..."); break; case BOOT_EMMC_RECOVERY: lcd_puts("Loading Recovery from EMMC..."); break; case BOOT_EMMC_ALTBOOT: lcd_puts(" Loading AltBoot from EMMC..."); break; case BOOT_FASTBOOT: lcd_console_setpos(54, 13); lcd_puts(" - fastboot has started, press POWER to cancel -"); break; default: lcd_puts(" Loading..."); break; } //lcd_display_image(image_start, image_end); }
static void display_image(enum image_t image, uint16_t soc) { uint16_t *image_start; uint16_t *image_end; if (soc < SOC_THRESH_DISPLAY_MIN) { lcd_disable(); lcd_is_on = 0; return; } switch(image) { case IMAGE_CHARGE_NEEDED: image_start = (uint16_t *) _binary_connect_charge_rle_start; image_end = (uint16_t *) _binary_connect_charge_rle_end; break; case IMAGE_CHARGING: image_start = (uint16_t *) _binary_lowbatt_charge_rle_start; image_end = (uint16_t *) _binary_lowbatt_charge_rle_end; break; case IMAGE_BOOT: default: image_start = (uint16_t *) _binary_o_nookcolor_logo_large_rle_start; image_end = (uint16_t *) _binary_o_nookcolor_logo_large_rle_end; break; } if (!lcd_is_on) { spi_init(); lcd_enable(); lcd_is_on = 1; } if (image == IMAGE_BOOT) { lcd_bl_set_brightness(255); } lcd_display_image(image_start, image_end); }
int determine_boot_type(void) { DECLARE_GLOBAL_DATA_PTR; uint8_t charging; uint16_t batt_lvl; extern uint16_t check_charging(uint8_t* enabling); unsigned long bootcount = bootcount_load(); char s [5]; setenv("bootlimit", stringify(ACCLAIM_BOOTLIMIT)); setenv("altbootcmd", "mmcinit 1; booti mmc1 recovery"); batt_lvl = check_charging(&charging); lcd_console_init(); // give subtle indicator if uboot is booting from emmc or sd if(charging) lcd_bl_set_brightness(35); //batt very low, let it charge lcd_console_setpos(0, 1); //indent slightly lcd_console_setcolor(CONSOLE_COLOR_GRAY, CONSOLE_COLOR_BLACK); if (running_from_sd()) { lcd_puts("SD"); } else { lcd_puts("EMMC"); } sprintf(s, " %u", bootcount); lcd_puts(s); extern const char* board_rev_string(unsigned long btype); lcd_console_setpos(1, 1); lcd_printf("board rev: %s | %s", board_rev_string(gd->bd->bi_board_revision), (get_sdram_size() == SZ_512M?"512MB/8GB":"1GB/16GB")); lcd_console_setpos(2, 1); lcd_console_setcolor((batt_lvl < 30?(batt_lvl <= 10?CONSOLE_COLOR_RED:CONSOLE_COLOR_ORANGE):CONSOLE_COLOR_GREEN), CONSOLE_COLOR_BLACK); lcd_printf("batt level: %d\n charging %s", batt_lvl, (charging?"ENABLED":"DISABLED")); int action = get_boot_action(); while(1){ if(charging) lcd_bl_set_brightness(35); //batt very low, let it charge else lcd_bl_set_brightness(100); //batt very low, let it charge switch(action) { case BOOT_SD_NORMAL: setenv ("bootcmd", "setenv setbootargs setenv bootargs ${sdbootargs}; run setbootargs; mmcinit 0; fatload mmc 0:1 0x81000000 boot.img; booti 0x81000000"); setenv ("altbootcmd", "run bootcmd"); // for sd boot altbootcmd is the same as bootcmd display_feedback(BOOT_SD_NORMAL); return 0; case BOOT_SD_RECOVERY: setenv ("bootcmd", "setenv setbootargs setenv bootargs ${sdbootargs}; run setbootargs; mmcinit 0; fatload mmc 0:1 0x81000000 recovery.img; booti 0x81000000"); setenv ("altbootcmd", "run bootcmd"); // for sd boot altbootcmd is the same as bootcmd display_feedback(BOOT_SD_RECOVERY); return 0; case BOOT_SD_ALTBOOT: setenv ("bootcmd", "setenv setbootargs setenv bootargs ${sdbootargs}; run setbootargs; mmcinit 0; fatload mmc 0:1 0x81000000 altboot.img; booti 0x81000000"); setenv ("altbootcmd", "run bootcmd"); // for sd boot altbootcmd is the same as bootcmd display_feedback(BOOT_SD_ALTBOOT); return 0; //actually, boot from boot+512K -- thanks bauwks! case BOOT_EMMC_NORMAL: setenv("bootcmd", "mmcinit 1; booti mmc1 boot 0x80000"); display_feedback(BOOT_EMMC_NORMAL); return 0; //actually, boot from recovery+512K -- thanks bauwks! case BOOT_EMMC_RECOVERY: setenv("bootcmd", "mmcinit 1; booti mmc1 recovery 0x80000"); display_feedback(BOOT_EMMC_RECOVERY); return 0; case BOOT_EMMC_ALTBOOT: // no 512K offset, this is just a file. setenv ("bootcmd", "setenv setbootargs setenv bootargs ${emmcbootargs}; run setbootargs; mmcinit 1; fatload mmc 1:5 0x81000000 altboot.img; booti 0x81000000"); setenv ("altbootcmd", "run bootcmd"); // for emmc altboot altbootcmd is the same as bootcmd display_feedback(BOOT_EMMC_ALTBOOT); return 0; case BOOT_FASTBOOT: display_feedback(BOOT_FASTBOOT); run_command("fastboot", 0); break; case INVALID: default: printf("Aborting boot!\n"); return 1; } action = do_menu(); } }