[U-Boot] [PATCH v3 2/2] imx_common: detect USB serial downloader reliably

Stefano Babic sbabic at denx.de
Mon Sep 18 15:05:43 UTC 2017


Hi Stefan,

On 14/09/2017 07:24, Eric Nelson wrote:
> Hi Stefan,
> 
> Thanks for this patch.
> 
> On 09/13/2017 02:29 PM, Stefan Agner wrote:
>> From: Stefan Agner <stefan.agner at toradex.com>
>>
>> The current mechanism using SCR/GPR registers work well when
>> the serial downloader boot mode has been selected explicitly
>> (either via boot mode pins or using bmode command). However,
>> in case the system entered boot ROM due to unbootable primary
>> boot devices (e.g. empty eMMC), the SPL fails to detect that
>> it has been downloaded through serial loader and tries to
>> continue booting from eMMC:
>>    Trying to boot from MMC1
>>    mmc_load_image_raw_sector: mmc block read error
>>    SPL: failed to boot from all boot devices
>>    ### ERROR ### Please RESET the board ###
>>
>> The only known way to reliably detect USB serial downloader
>> is by checking the USB PHY receiver block power state...
>>
>> Signed-off-by: Stefan Agner <stefan.agner at toradex.com>
>> Acked-by: Marcel Ziswiler <marcel.ziswiler at toradex.com>
>> Tested-by: Fabio Estevam <fabio.estevam at nxp.com>
>> ---
>>
>> Changes in v4:
>> - Rename macro to is_usbotg_phy_active()
>>
>> Changes in v3:
>> - Fix spelling and grammar
>>
>> Changes in v2:
>> - Add comment that we infer boot ROM behavior from USB PHY state
>>
>>   arch/arm/mach-imx/spl.c | 12 ++++++++++++
>>   1 file changed, 12 insertions(+)
>>
>> diff --git a/arch/arm/mach-imx/spl.c b/arch/arm/mach-imx/spl.c
>> index 258578ac25..534cc6504d 100644
>> --- a/arch/arm/mach-imx/spl.c
>> +++ b/arch/arm/mach-imx/spl.c
>> @@ -31,6 +31,18 @@ u32 spl_boot_device(void)
>>       if (((bmode >> 24) & 0x03) == 0x01) /* Serial Downloader */
>>           return BOOT_DEVICE_BOARD;
>>   +    /*
>> +     * The above method does not detect that the boot ROM used
>> +     * serial downloader in case the boot ROM decided to use the
>> +     * serial downloader as a fall back (primary boot source failed).
>> +     *
>> +     * Infer that the boot ROM used the USB serial downloader by
>> +     * checking whether the USB PHY is currently active... This
>> +     * assumes that SPL did not (yet) initialize the USB PHY...
>> +     */
>> +    if (is_otgusb_phy_active())

This is "otgusb", but in sys_proto.h is "usbotg".

Can I fix it myself as "usbotg" by merging ?

Best regards,
Stefano

>> +        return BOOT_DEVICE_BOARD;
>> +
>>       /* BOOT_CFG1[7:4] - see IMX6DQRM Table 8-8 */
>>       switch ((reg & IMX6_BMODE_MASK) >> IMX6_BMODE_SHIFT) {
>>        /* EIM: See 8.5.1, Table 8-9 */
>>
> 
> Reviewed-by: Eric Nelson <eric at nelint.com>


-- 
=====================================================================
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: sbabic at denx.de
=====================================================================


More information about the U-Boot mailing list