示例#1
0
文件: xload.c 项目: frantony/barebox
/*
 * Replaces the default shell in xload configuration
 */
static __noreturn int omap_xload(void)
{
	void *func;

	if (!barebox_part)
		barebox_part = &default_part;

	switch (bootsource_get())
	{
	case BOOTSOURCE_MMC:
		printf("booting from MMC\n");
		func = omap_xload_boot_mmc();
		break;
	case BOOTSOURCE_USB:
		if (IS_ENABLED(CONFIG_OMAP3_USBBOOT) && cpu_is_omap3()) {
			printf("booting from USB\n");
			func = omap3_xload_boot_usb();
		} else if (IS_ENABLED(CONFIG_FS_OMAP4_USBBOOT)) {
			printf("booting from USB\n");
			func = omap4_xload_boot_usb();
		} else {
			printf("booting from USB not enabled\n");
			func = NULL;
		}
		break;
	case BOOTSOURCE_NAND:
		printf("booting from NAND\n");
		func = omap_xload_boot_nand(barebox_part);
		break;
	case BOOTSOURCE_SPI:
		printf("booting from SPI\n");
		func = omap_xload_boot_spi(barebox_part);
		break;
	case BOOTSOURCE_SERIAL:
		if (IS_ENABLED(CONFIG_OMAP_SERIALBOOT)) {
			printf("booting from serial\n");
			func = omap_serial_boot();
			break;
		}
	case BOOTSOURCE_NET:
		if (IS_ENABLED(CONFIG_AM33XX_NET_BOOT)) {
			printf("booting from NET\n");
			func = am33xx_net_boot();
			break;
		} else {
			printf("booting from network not enabled\n");
		}
	default:
		printf("unknown boot source. Fall back to nand\n");
		func = omap_xload_boot_nand(barebox_part);
		break;
	}

	if (!func) {
		printf("booting failed\n");
		while (1);
	}

	omap_start_barebox(func);
}
示例#2
0
/*
 * Replaces the default shell in xload configuration
 */
static __noreturn int omap_xload(void)
{
    void *func;

    if (!barebox_part)
        barebox_part = &default_part;

    switch (bootsource_get())
    {
    case BOOTSOURCE_MMC:
        printf("booting from MMC\n");
        func = omap_xload_boot_mmc();
        break;
    case BOOTSOURCE_USB:
        if (IS_ENABLED(CONFIG_FS_OMAP4_USBBOOT)) {
            printf("booting from USB\n");
            func = omap4_xload_boot_usb();
            break;
        } else {
            printf("booting from USB not enabled\n");
        }
    case BOOTSOURCE_NAND:
        printf("booting from NAND\n");
        func = omap_xload_boot_nand(barebox_part->nand_offset,
                                    barebox_part->nand_size);
        break;
    case BOOTSOURCE_SPI:
        printf("booting from SPI\n");
        func = omap_xload_boot_spi(barebox_part->nor_offset,
                                   barebox_part->nor_size);
        break;
    default:
        printf("unknown boot source. Fall back to nand\n");
        func = omap_xload_boot_nand(barebox_part->nand_offset,
                                    barebox_part->nand_size);
        break;
    }

    if (!func) {
        printf("booting failed\n");
        while (1);
    }

    omap_start_barebox(func);
}