On 2017-08-27 01:45, Sébastien Szymanski wrote: > Hello, > >> On 25 Aug 2017, at 13:33, Stefano Babic <sba...@denx.de> wrote: >> >> On 16/08/2017 02:49, Stefan Agner wrote: >>> From: Stefan Agner <stefan.ag...@toradex.com> >>> >>> i.MX 6 serial downloader is not necessarily booting via UART but can >>> also boot from USB. In fact only some i.MX chips have serial >>> downloader support via UART (e.g. 6UL/ULL and Vybrid) but all of >>> them have serial downloader support via USB. Use the more appropriate >>> BOOT_DEVICE_BOARD define which is used for ROM provided recovery >>> mechanisms in general. >>> >>> Signed-off-by: Stefan Agner <stefan.ag...@toradex.com> >>> --- >>> >>> arch/arm/mach-imx/spl.c | 4 ++-- >>> 1 file changed, 2 insertions(+), 2 deletions(-) >>> >>> diff --git a/arch/arm/mach-imx/spl.c b/arch/arm/mach-imx/spl.c >>> index 836b334fa9..bcd1033fdb 100644 >>> --- a/arch/arm/mach-imx/spl.c >>> +++ b/arch/arm/mach-imx/spl.c >>> @@ -27,7 +27,7 @@ u32 spl_boot_device(void) >>> * BOOT_MODE - see IMX6DQRM Table 8-1 >>> */ >>> if (((bmode >> 24) & 0x03) == 0x01) /* Serial Downloader */ >>> - return BOOT_DEVICE_UART; > > Returning BOOT_DEVICE_UART here makes the SPL to load U-Boot from the > debug UART using a ymodem transfer when enabled with > CONFIG_SPL_YMODEM_SUPPORT like it is on the OPOS6ULDev board. This is > now broken.
For reference, the change has been discussed here: https://www.mail-archive.com/u-boot@lists.denx.de/msg259729.html Returning UART is definitely wrong, because the boot ROM can also boot from USB... As I mentioned in the other thread, ideally we should be able to do a runtime detection to discriminate between UART and USB loader. I think Stefano did not like that since it relies on undocumented features. So BOOT_DEVICE is really ambiguous. Maybe BOOT_DEVICE_* should be a bitfield? Then we could return BOOT_DEVICE_UART and BOOT_DEVICE_USB, and boards can just compile in the support they need. Changing the Y-Modem support to boot device BOOT_DEVICE_BOARD is not possible since other SoCs use BOOT_DEVICE_UART. I guess we could just add a second SPL_LOAD_IMAGE_METHOD in common/spl/spl_ymodem.c for BOOT_DEVICE_BOARD. -- Stefan > > Regards, > >>> + return BOOT_DEVICE_BOARD; >>> >>> /* BOOT_CFG1[7:4] - see IMX6DQRM Table 8-8 */ >>> switch ((reg & IMX6_BMODE_MASK) >> IMX6_BMODE_SHIFT) { >>> @@ -43,7 +43,7 @@ u32 spl_boot_device(void) >>> } >>> /* Reserved: Used to force Serial Downloader */ >>> case IMX6_BMODE_RESERVED: >>> - return BOOT_DEVICE_UART; >>> + return BOOT_DEVICE_BOARD; >>> /* SATA: See 8.5.4, Table 8-20 */ >>> case IMX6_BMODE_SATA: >>> return BOOT_DEVICE_SATA; >>> >> >> Applied to u-boot-imx, -master, thanks ! >> >> Best regards, >> Stefano Babic >> >> >> -- >> ===================================================================== >> DENX Software Engineering GmbH, Managing Director: Wolfgang Denk >> HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany >> Phone: +49-8142-66989-53 Fax: +49-8142-66989-80 Email: sba...@denx.de >> ===================================================================== >> _______________________________________________ >> U-Boot mailing list >> U-Boot@lists.denx.de >> https://lists.denx.de/listinfo/u-boot _______________________________________________ U-Boot mailing list U-Boot@lists.denx.de https://lists.denx.de/listinfo/u-boot