diff --git a/arch/arm/mach-socfpga/include/mach/generic.h b/arch/arm/mach-socfpga/include/mach/generic.h index 1f4247f..2a7e0ea 100644 --- a/arch/arm/mach-socfpga/include/mach/generic.h +++ b/arch/arm/mach-socfpga/include/mach/generic.h @@ -18,6 +18,10 @@ struct socfpga_barebox_part { unsigned int nor_offset; unsigned int nor_size; + const char *mmc_disk; }; +/* Partition/device for xloader to load main bootloader from */ +extern const struct socfpga_barebox_part *barebox_part; + #endif /* __MACH_SOCFPGA_GENERIC_H */ diff --git a/arch/arm/mach-socfpga/xload.c b/arch/arm/mach-socfpga/xload.c index cf05ff3..fd0d777 100644 --- a/arch/arm/mach-socfpga/xload.c +++ b/arch/arm/mach-socfpga/xload.c @@ -20,12 +20,13 @@ #include #include -struct socfpga_barebox_part *barebox_part; static struct socfpga_barebox_part default_part = { .nor_offset = SZ_256K, .nor_size = SZ_1M, + .mmc_disk = "disk0.1", }; +const struct socfpga_barebox_part *barebox_part = &default_part; enum socfpga_clks { timer, mmc, qspi_clk, uart, clk_max @@ -110,13 +111,10 @@ enum bootsource bootsource = bootsource_get(); void *buf; - if (!barebox_part) - barebox_part = &default_part; - switch (bootsource) { case BOOTSOURCE_MMC: socfpga_mmc_init(); - buf = bootstrap_read_disk("disk0.1", "fat"); + buf = bootstrap_read_disk(barebox_part->mmc_disk, "fat"); break; case BOOTSOURCE_SPI: socfpga_qspi_init();