* [U-Boot] [PATCH v3 1/3] sunxi: Create helper function veryfing valid boot signature on MMC
@ 2015-05-29 14:55 Daniel Kochmański
2015-05-29 14:55 ` [U-Boot] [PATCH v3 2/3] sunxi/spl: Detect at runtime where from SPL was read Daniel Kochmański
` (2 more replies)
0 siblings, 3 replies; 6+ messages in thread
From: Daniel Kochmański @ 2015-05-29 14:55 UTC (permalink / raw)
To: u-boot
This patch extracts checking for valid SD card "eGON.BT0" signature from
`board_mmc_init` into function `sunxi_mmc_has_egon_boot_signature`.
Buffer for mmc sector is allocated and freed at runtime. `panic` is
triggered on malloc failure.
Signed-off-by: Daniel Kochma?ski <dkochmanski@turtle-solutions.eu>
CC: Roy Spliet <r.spliet@ultimaker.com>
Cc: Ian Campbell <ijc@hellion.org.uk>
Cc: Hans De Goede <hdegoede@redhat.com>
---
arch/arm/include/asm/arch-sunxi/mmc.h | 1 +
board/sunxi/board.c | 8 ++------
drivers/mmc/sunxi_mmc.c | 17 +++++++++++++++++
3 files changed, 20 insertions(+), 6 deletions(-)
diff --git a/arch/arm/include/asm/arch-sunxi/mmc.h b/arch/arm/include/asm/arch-sunxi/mmc.h
index cb52e64..3da360b 100644
--- a/arch/arm/include/asm/arch-sunxi/mmc.h
+++ b/arch/arm/include/asm/arch-sunxi/mmc.h
@@ -127,4 +127,5 @@ struct sunxi_mmc {
#define SUNXI_MMC_COMMON_RESET (1 << 18)
struct mmc *sunxi_mmc_init(int sdc_no);
+int sunxi_mmc_has_egon_boot_signature(struct mmc *mmc);
#endif /* _SUNXI_MMC_H */
diff --git a/board/sunxi/board.c b/board/sunxi/board.c
index 3f23f26..dc95431 100644
--- a/board/sunxi/board.c
+++ b/board/sunxi/board.c
@@ -302,12 +302,8 @@ int board_mmc_init(bd_t *bis)
* Both mmc0 and mmc2 are bootable, figure out where we're booting
* from. Try mmc0 first, just like the brom does.
*/
- if (mmc_getcd(mmc0) && mmc_init(mmc0) == 0 &&
- mmc0->block_dev.block_read(0, 16, 1, buf) == 1) {
- buf[12] = 0;
- if (strcmp(&buf[4], "eGON.BT0") == 0)
- return 0;
- }
+ if (sunxi_mmc_has_egon_boot_signature(mmc0))
+ return 0;
/* no bootable card in mmc0, so we must be booting from mmc2, swap */
mmc0->block_dev.dev = 1;
diff --git a/drivers/mmc/sunxi_mmc.c b/drivers/mmc/sunxi_mmc.c
index bb08147..ef3e84c 100644
--- a/drivers/mmc/sunxi_mmc.c
+++ b/drivers/mmc/sunxi_mmc.c
@@ -431,6 +431,23 @@ static int sunxi_mmc_getcd(struct mmc *mmc)
return !gpio_get_value(cd_pin);
}
+int sunxi_mmc_has_egon_boot_signature(struct mmc *mmc)
+{
+ char *buf = malloc(512);
+ int valid_signature = 0;
+
+ if (buf == NULL)
+ panic("Failed to allocate memory\n");
+
+ if (mmc_getcd(mmc) && mmc_init(mmc) == 0 &&
+ mmc->block_dev.block_read(0, 16, 1, buf) == 1 &&
+ strncmp(&buf[4], "eGON.BT0", 8) == 0)
+ valid_signature = 1;
+
+ free(buf);
+ return valid_signature;
+}
+
static const struct mmc_ops sunxi_mmc_ops = {
.send_cmd = sunxi_mmc_send_cmd,
.set_ios = sunxi_mmc_set_ios,
--
2.4.1
^ permalink raw reply related [flat|nested] 6+ messages in thread
* [U-Boot] [PATCH v3 2/3] sunxi/spl: Detect at runtime where from SPL was read
2015-05-29 14:55 [U-Boot] [PATCH v3 1/3] sunxi: Create helper function veryfing valid boot signature on MMC Daniel Kochmański
@ 2015-05-29 14:55 ` Daniel Kochmański
2015-06-06 14:56 ` Hans de Goede
2015-05-29 14:55 ` [U-Boot] [PATCH v3 3/3] mmc: Protect `mmc_initialize` from initilizing mmc multiple times Daniel Kochmański
2015-06-06 14:55 ` [U-Boot] [PATCH v3 1/3] sunxi: Create helper function veryfing valid boot signature on MMC Hans de Goede
2 siblings, 1 reply; 6+ messages in thread
From: Daniel Kochmański @ 2015-05-29 14:55 UTC (permalink / raw)
To: u-boot
Make possible using single `u-boot-sunxi-with-spl.bin` binary for both NAND
memory and SD card. Detection where SPL was read from is implemented in
`spl_boot_device`.
V2:
- Move signature verification to helper function
- Avoid unnecessary condition nesting
V3:
- Further simplification of conditions
- Move reassigning mmc block.dev numbers from `board_mmc_init` to
`spl_boot_device`
- If signature wasn't found on mmc0 and SPL_NAND_SUPPORT isn't enabled
don't assume mmc2 is a valid boot device - check for egon signature
first
Signed-off-by: Daniel Kochma?ski <dkochmanski@turtle-solutions.eu>
CC: Roy Spliet <r.spliet@ultimaker.com>
Cc: Ian Campbell <ijc@hellion.org.uk>
Cc: Hans De Goede <hdegoede@redhat.com>
---
arch/arm/cpu/armv7/sunxi/board.c | 63 ++++++++++++++++++++++++++--------------
1 file changed, 41 insertions(+), 22 deletions(-)
diff --git a/arch/arm/cpu/armv7/sunxi/board.c b/arch/arm/cpu/armv7/sunxi/board.c
index a82c8b9..c06922c 100644
--- a/arch/arm/cpu/armv7/sunxi/board.c
+++ b/arch/arm/cpu/armv7/sunxi/board.c
@@ -11,6 +11,7 @@
*/
#include <common.h>
+#include <mmc.h>
#include <i2c.h>
#include <serial.h>
#ifdef CONFIG_SPL_BUILD
@@ -22,6 +23,7 @@
#include <asm/arch/gpio.h>
#include <asm/arch/sys_proto.h>
#include <asm/arch/timer.h>
+#include <asm/arch/mmc.h>
#include <linux/compiler.h>
@@ -117,26 +119,18 @@ void s_init(void)
}
#ifdef CONFIG_SPL_BUILD
+DECLARE_GLOBAL_DATA_PTR;
+
/* The sunxi internal brom will try to loader external bootloader
* from mmc0, nand flash, mmc2.
- *
- * Unfortunately we can't check how SPL was loaded so assume it's
- * always the first SD/MMC controller, unless it was explicitly
- * stated that SPL is on nand flash.
*/
u32 spl_boot_device(void)
{
-#if defined(CONFIG_SPL_NAND_SUPPORT)
+ struct mmc *mmc0, *mmc1;
/*
- * This is compile time configuration informing SPL, that it
- * was loaded from nand flash.
- */
- return BOOT_DEVICE_NAND;
-#else
- /*
- * When booting from the SD card, the "eGON.BT0" signature is expected
- * to be found in memory at the address 0x0004 (see the "mksunxiboot"
- * tool, which generates this header).
+ * When booting from the SD card or NAND memory, the "eGON.BT0"
+ * signature is expected to be found in memory at the address 0x0004
+ * (see the "mksunxiboot" tool, which generates this header).
*
* When booting in the FEL mode over USB, this signature is patched in
* memory and replaced with something else by the 'fel' tool. This other
@@ -144,16 +138,41 @@ u32 spl_boot_device(void)
* valid bootable SD card image (because the BROM would refuse to
* execute the SPL in this case).
*
- * This branch is just making a decision at runtime whether to load
- * the main u-boot binary from the SD card (if the "eGON.BT0" signature
- * is found) or return to the FEL code in the BROM to wait and receive
- * the main u-boot binary over USB.
+ * This checks for the signature and if it is not found returns to
+ * the FEL code in the BROM to wait and receive the main u-boot
+ * binary over USB. If it is found, it determines where SPL was
+ * read from.
*/
- if (readl(4) == 0x4E4F4765 && readl(8) == 0x3054422E) /* eGON.BT0 */
- return BOOT_DEVICE_MMC1;
- else
+ if (readl(4) != 0x4E4F4765 || readl(8) != 0x3054422E) /* eGON.BT0 */
return BOOT_DEVICE_BOARD;
-#endif
+
+ /* The BROM will try to boot from mmc0 first, so try that first. */
+ mmc_initialize(gd->bd);
+ mmc0 = find_mmc_device(0);
+ if (sunxi_mmc_has_egon_boot_signature(mmc0))
+ return BOOT_DEVICE_MMC1;
+
+ /* Fallback to booting NAND if enabled. */
+ if (IS_ENABLED(CONFIG_SPL_NAND_SUPPORT))
+ return BOOT_DEVICE_NAND;
+
+ if (IS_ENABLED(CONFIG_MMC_SUNXI_SLOT_EXTRA) &&
+ CONFIG_MMC_SUNXI_SLOT_EXTRA == 2)
+ {
+ mmc1 = find_mmc_device(1);
+ if (sunxi_mmc_has_egon_boot_signature(mmc1))
+ {
+ /* spl_mmc.c: spl_mmc_load_image() is hard-coded to
+ * use find_mmc_device(0), no matter what we
+ * return. Swap mmc0 and mmc2 to make this work. */
+ mmc0->block_dev.dev = 1;
+ mmc1->block_dev.dev = 0;
+ return BOOT_DEVICE_MMC2
+ }
+ }
+
+ panic("Could not determine boot source\n");
+ return -1; /* Never reached */
}
/* No confirmation data available in SPL yet. Hardcode bootmode */
--
2.4.1
^ permalink raw reply related [flat|nested] 6+ messages in thread
* [U-Boot] [PATCH v3 3/3] mmc: Protect `mmc_initialize` from initilizing mmc multiple times
2015-05-29 14:55 [U-Boot] [PATCH v3 1/3] sunxi: Create helper function veryfing valid boot signature on MMC Daniel Kochmański
2015-05-29 14:55 ` [U-Boot] [PATCH v3 2/3] sunxi/spl: Detect at runtime where from SPL was read Daniel Kochmański
@ 2015-05-29 14:55 ` Daniel Kochmański
2015-06-06 9:53 ` Hans de Goede
2015-06-06 14:55 ` [U-Boot] [PATCH v3 1/3] sunxi: Create helper function veryfing valid boot signature on MMC Hans de Goede
2 siblings, 1 reply; 6+ messages in thread
From: Daniel Kochmański @ 2015-05-29 14:55 UTC (permalink / raw)
To: u-boot
`mmc_initialize` might be called from various places and initializing
list head of `mmc_devices` can lead to memory leaks.
Signed-off-by: Daniel Kochma?ski <dkochmanski@turtle-solutions.eu>
CC: Roy Spliet <r.spliet@ultimaker.com>
Cc: Ian Campbell <ijc@hellion.org.uk>
Cc: Hans De Goede <hdegoede@redhat.com>
CC: Pantelis Antoniou <panto@antoniou-consulting.com>
---
drivers/mmc/mmc.c | 5 +++++
1 file changed, 5 insertions(+)
diff --git a/drivers/mmc/mmc.c b/drivers/mmc/mmc.c
index 79e6fee..2959bde 100644
--- a/drivers/mmc/mmc.c
+++ b/drivers/mmc/mmc.c
@@ -1758,6 +1758,11 @@ static void do_preinit(void)
int mmc_initialize(bd_t *bis)
{
+ static int initialized = 0;
+ if (initialized) /* Avoid initializing mmc multiple times */
+ return 0;
+ initialized = 1;
+
INIT_LIST_HEAD (&mmc_devices);
cur_dev_num = 0;
--
2.4.1
^ permalink raw reply related [flat|nested] 6+ messages in thread
* [U-Boot] [PATCH v3 3/3] mmc: Protect `mmc_initialize` from initilizing mmc multiple times
2015-05-29 14:55 ` [U-Boot] [PATCH v3 3/3] mmc: Protect `mmc_initialize` from initilizing mmc multiple times Daniel Kochmański
@ 2015-06-06 9:53 ` Hans de Goede
0 siblings, 0 replies; 6+ messages in thread
From: Hans de Goede @ 2015-06-06 9:53 UTC (permalink / raw)
To: u-boot
Hi,
On 29-05-15 16:55, Daniel Kochma?ski wrote:
> `mmc_initialize` might be called from various places and initializing
> list head of `mmc_devices` can lead to memory leaks.
>
> Signed-off-by: Daniel Kochma?ski <dkochmanski@turtle-solutions.eu>
> CC: Roy Spliet <r.spliet@ultimaker.com>
> Cc: Ian Campbell <ijc@hellion.org.uk>
> Cc: Hans De Goede <hdegoede@redhat.com>
> CC: Pantelis Antoniou <panto@antoniou-consulting.com>
Thanks I've merged this one into u-boot-sunxi/next, for inclusion
into u-boot v2015.10, I've fixed a few typos in the commit message
and clarified the commit message a bit.
Pantelis, since this is an mmc patch may we have your ack for this
one please? It is a dep for some sunxi changes so it is probably
easiest if I just merge it through the sunxi tree.
Some background, we are adding support for booting from nand,
and as such we need to make spl_boot_device() for sunxi
smarter. The sunxi BROM does not communicate where it has
loaded the SPL from, so we simply retrace it steps trying
mmc0 first and looking for a valid bootsignature there.
This means calling mmc_initialize() from spl_boot_device()
and if spl_boot_device() then finds a boot signature
and returns BOOT_DEVICE_MMC1, then later on
spl_mmc_load_image() will call mmc_initialize() a second
time, this patch protects against this second call and
turns the second call into a nop.
Regards,
Hans
> ---
> drivers/mmc/mmc.c | 5 +++++
> 1 file changed, 5 insertions(+)
>
> diff --git a/drivers/mmc/mmc.c b/drivers/mmc/mmc.c
> index 79e6fee..2959bde 100644
> --- a/drivers/mmc/mmc.c
> +++ b/drivers/mmc/mmc.c
> @@ -1758,6 +1758,11 @@ static void do_preinit(void)
>
> int mmc_initialize(bd_t *bis)
> {
> + static int initialized = 0;
> + if (initialized) /* Avoid initializing mmc multiple times */
> + return 0;
> + initialized = 1;
> +
> INIT_LIST_HEAD (&mmc_devices);
> cur_dev_num = 0;
>
>
^ permalink raw reply [flat|nested] 6+ messages in thread
* [U-Boot] [PATCH v3 1/3] sunxi: Create helper function veryfing valid boot signature on MMC
2015-05-29 14:55 [U-Boot] [PATCH v3 1/3] sunxi: Create helper function veryfing valid boot signature on MMC Daniel Kochmański
2015-05-29 14:55 ` [U-Boot] [PATCH v3 2/3] sunxi/spl: Detect at runtime where from SPL was read Daniel Kochmański
2015-05-29 14:55 ` [U-Boot] [PATCH v3 3/3] mmc: Protect `mmc_initialize` from initilizing mmc multiple times Daniel Kochmański
@ 2015-06-06 14:55 ` Hans de Goede
2 siblings, 0 replies; 6+ messages in thread
From: Hans de Goede @ 2015-06-06 14:55 UTC (permalink / raw)
To: u-boot
Hi,
On 29-05-15 16:55, Daniel Kochma?ski wrote:
> This patch extracts checking for valid SD card "eGON.BT0" signature from
> `board_mmc_init` into function `sunxi_mmc_has_egon_boot_signature`.
>
> Buffer for mmc sector is allocated and freed at runtime. `panic` is
> triggered on malloc failure.
>
> Signed-off-by: Daniel Kochma?ski <dkochmanski@turtle-solutions.eu>
> CC: Roy Spliet <r.spliet@ultimaker.com>
> Cc: Ian Campbell <ijc@hellion.org.uk>
> Cc: Hans De Goede <hdegoede@redhat.com>
Thanks, pushed with a small bug-fix to u-boot-sunxi/next for merging into
v2015.10 .
Regards,
Hans
> ---
> arch/arm/include/asm/arch-sunxi/mmc.h | 1 +
> board/sunxi/board.c | 8 ++------
> drivers/mmc/sunxi_mmc.c | 17 +++++++++++++++++
> 3 files changed, 20 insertions(+), 6 deletions(-)
>
> diff --git a/arch/arm/include/asm/arch-sunxi/mmc.h b/arch/arm/include/asm/arch-sunxi/mmc.h
> index cb52e64..3da360b 100644
> --- a/arch/arm/include/asm/arch-sunxi/mmc.h
> +++ b/arch/arm/include/asm/arch-sunxi/mmc.h
> @@ -127,4 +127,5 @@ struct sunxi_mmc {
> #define SUNXI_MMC_COMMON_RESET (1 << 18)
>
> struct mmc *sunxi_mmc_init(int sdc_no);
> +int sunxi_mmc_has_egon_boot_signature(struct mmc *mmc);
> #endif /* _SUNXI_MMC_H */
> diff --git a/board/sunxi/board.c b/board/sunxi/board.c
> index 3f23f26..dc95431 100644
> --- a/board/sunxi/board.c
> +++ b/board/sunxi/board.c
> @@ -302,12 +302,8 @@ int board_mmc_init(bd_t *bis)
> * Both mmc0 and mmc2 are bootable, figure out where we're booting
> * from. Try mmc0 first, just like the brom does.
> */
> - if (mmc_getcd(mmc0) && mmc_init(mmc0) == 0 &&
> - mmc0->block_dev.block_read(0, 16, 1, buf) == 1) {
> - buf[12] = 0;
> - if (strcmp(&buf[4], "eGON.BT0") == 0)
> - return 0;
> - }
> + if (sunxi_mmc_has_egon_boot_signature(mmc0))
> + return 0;
>
> /* no bootable card in mmc0, so we must be booting from mmc2, swap */
> mmc0->block_dev.dev = 1;
> diff --git a/drivers/mmc/sunxi_mmc.c b/drivers/mmc/sunxi_mmc.c
> index bb08147..ef3e84c 100644
> --- a/drivers/mmc/sunxi_mmc.c
> +++ b/drivers/mmc/sunxi_mmc.c
> @@ -431,6 +431,23 @@ static int sunxi_mmc_getcd(struct mmc *mmc)
> return !gpio_get_value(cd_pin);
> }
>
> +int sunxi_mmc_has_egon_boot_signature(struct mmc *mmc)
> +{
> + char *buf = malloc(512);
> + int valid_signature = 0;
> +
> + if (buf == NULL)
> + panic("Failed to allocate memory\n");
> +
> + if (mmc_getcd(mmc) && mmc_init(mmc) == 0 &&
> + mmc->block_dev.block_read(0, 16, 1, buf) == 1 &&
> + strncmp(&buf[4], "eGON.BT0", 8) == 0)
> + valid_signature = 1;
> +
> + free(buf);
> + return valid_signature;
> +}
> +
> static const struct mmc_ops sunxi_mmc_ops = {
> .send_cmd = sunxi_mmc_send_cmd,
> .set_ios = sunxi_mmc_set_ios,
>
^ permalink raw reply [flat|nested] 6+ messages in thread
* [U-Boot] [PATCH v3 2/3] sunxi/spl: Detect at runtime where from SPL was read
2015-05-29 14:55 ` [U-Boot] [PATCH v3 2/3] sunxi/spl: Detect at runtime where from SPL was read Daniel Kochmański
@ 2015-06-06 14:56 ` Hans de Goede
0 siblings, 0 replies; 6+ messages in thread
From: Hans de Goede @ 2015-06-06 14:56 UTC (permalink / raw)
To: u-boot
Hi,
On 29-05-15 16:55, Daniel Kochma?ski wrote:
> Make possible using single `u-boot-sunxi-with-spl.bin` binary for both NAND
> memory and SD card. Detection where SPL was read from is implemented in
> `spl_boot_device`.
>
> V2:
> - Move signature verification to helper function
> - Avoid unnecessary condition nesting
>
> V3:
> - Further simplification of conditions
> - Move reassigning mmc block.dev numbers from `board_mmc_init` to
> `spl_boot_device`
> - If signature wasn't found on mmc0 and SPL_NAND_SUPPORT isn't enabled
> don't assume mmc2 is a valid boot device - check for egon signature
> first
>
> Signed-off-by: Daniel Kochma?ski <dkochmanski@turtle-solutions.eu>
> CC: Roy Spliet <r.spliet@ultimaker.com>
> Cc: Ian Campbell <ijc@hellion.org.uk>
> Cc: Hans De Goede <hdegoede@redhat.com>
Thanks, pushed with a few small coding style fixes (braces placement) to
u-boot-sunxi/next for merging into v2015.10 .
Regards,
Hans
> ---
> arch/arm/cpu/armv7/sunxi/board.c | 63 ++++++++++++++++++++++++++--------------
> 1 file changed, 41 insertions(+), 22 deletions(-)
>
> diff --git a/arch/arm/cpu/armv7/sunxi/board.c b/arch/arm/cpu/armv7/sunxi/board.c
> index a82c8b9..c06922c 100644
> --- a/arch/arm/cpu/armv7/sunxi/board.c
> +++ b/arch/arm/cpu/armv7/sunxi/board.c
> @@ -11,6 +11,7 @@
> */
>
> #include <common.h>
> +#include <mmc.h>
> #include <i2c.h>
> #include <serial.h>
> #ifdef CONFIG_SPL_BUILD
> @@ -22,6 +23,7 @@
> #include <asm/arch/gpio.h>
> #include <asm/arch/sys_proto.h>
> #include <asm/arch/timer.h>
> +#include <asm/arch/mmc.h>
>
> #include <linux/compiler.h>
>
> @@ -117,26 +119,18 @@ void s_init(void)
> }
>
> #ifdef CONFIG_SPL_BUILD
> +DECLARE_GLOBAL_DATA_PTR;
> +
> /* The sunxi internal brom will try to loader external bootloader
> * from mmc0, nand flash, mmc2.
> - *
> - * Unfortunately we can't check how SPL was loaded so assume it's
> - * always the first SD/MMC controller, unless it was explicitly
> - * stated that SPL is on nand flash.
> */
> u32 spl_boot_device(void)
> {
> -#if defined(CONFIG_SPL_NAND_SUPPORT)
> + struct mmc *mmc0, *mmc1;
> /*
> - * This is compile time configuration informing SPL, that it
> - * was loaded from nand flash.
> - */
> - return BOOT_DEVICE_NAND;
> -#else
> - /*
> - * When booting from the SD card, the "eGON.BT0" signature is expected
> - * to be found in memory at the address 0x0004 (see the "mksunxiboot"
> - * tool, which generates this header).
> + * When booting from the SD card or NAND memory, the "eGON.BT0"
> + * signature is expected to be found in memory at the address 0x0004
> + * (see the "mksunxiboot" tool, which generates this header).
> *
> * When booting in the FEL mode over USB, this signature is patched in
> * memory and replaced with something else by the 'fel' tool. This other
> @@ -144,16 +138,41 @@ u32 spl_boot_device(void)
> * valid bootable SD card image (because the BROM would refuse to
> * execute the SPL in this case).
> *
> - * This branch is just making a decision at runtime whether to load
> - * the main u-boot binary from the SD card (if the "eGON.BT0" signature
> - * is found) or return to the FEL code in the BROM to wait and receive
> - * the main u-boot binary over USB.
> + * This checks for the signature and if it is not found returns to
> + * the FEL code in the BROM to wait and receive the main u-boot
> + * binary over USB. If it is found, it determines where SPL was
> + * read from.
> */
> - if (readl(4) == 0x4E4F4765 && readl(8) == 0x3054422E) /* eGON.BT0 */
> - return BOOT_DEVICE_MMC1;
> - else
> + if (readl(4) != 0x4E4F4765 || readl(8) != 0x3054422E) /* eGON.BT0 */
> return BOOT_DEVICE_BOARD;
> -#endif
> +
> + /* The BROM will try to boot from mmc0 first, so try that first. */
> + mmc_initialize(gd->bd);
> + mmc0 = find_mmc_device(0);
> + if (sunxi_mmc_has_egon_boot_signature(mmc0))
> + return BOOT_DEVICE_MMC1;
> +
> + /* Fallback to booting NAND if enabled. */
> + if (IS_ENABLED(CONFIG_SPL_NAND_SUPPORT))
> + return BOOT_DEVICE_NAND;
> +
> + if (IS_ENABLED(CONFIG_MMC_SUNXI_SLOT_EXTRA) &&
> + CONFIG_MMC_SUNXI_SLOT_EXTRA == 2)
> + {
> + mmc1 = find_mmc_device(1);
> + if (sunxi_mmc_has_egon_boot_signature(mmc1))
> + {
> + /* spl_mmc.c: spl_mmc_load_image() is hard-coded to
> + * use find_mmc_device(0), no matter what we
> + * return. Swap mmc0 and mmc2 to make this work. */
> + mmc0->block_dev.dev = 1;
> + mmc1->block_dev.dev = 0;
> + return BOOT_DEVICE_MMC2
> + }
> + }
> +
> + panic("Could not determine boot source\n");
> + return -1; /* Never reached */
> }
>
> /* No confirmation data available in SPL yet. Hardcode bootmode */
>
^ permalink raw reply [flat|nested] 6+ messages in thread
end of thread, other threads:[~2015-06-06 14:56 UTC | newest]
Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2015-05-29 14:55 [U-Boot] [PATCH v3 1/3] sunxi: Create helper function veryfing valid boot signature on MMC Daniel Kochmański
2015-05-29 14:55 ` [U-Boot] [PATCH v3 2/3] sunxi/spl: Detect at runtime where from SPL was read Daniel Kochmański
2015-06-06 14:56 ` Hans de Goede
2015-05-29 14:55 ` [U-Boot] [PATCH v3 3/3] mmc: Protect `mmc_initialize` from initilizing mmc multiple times Daniel Kochmański
2015-06-06 9:53 ` Hans de Goede
2015-06-06 14:55 ` [U-Boot] [PATCH v3 1/3] sunxi: Create helper function veryfing valid boot signature on MMC Hans de Goede
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.