[U-Boot] [PATCH v1 1/2] imx: add macro to detect whether USB has been initialized
Stefano Babic
sbabic at denx.de
Tue Sep 5 11:20:21 UTC 2017
Hi Stefan, Eric,
On 05/09/2017 06:50, Stefan Agner wrote:
> On 2017-09-04 19:57, Eric Nelson wrote:
>> Hi Stefan,
>>
>> On 09/04/2017 06:21 PM, Stefan Agner wrote:
>>> From: Stefan Agner <stefan.agner at toradex.com>
>>>
>>> This macro allows to detect whether the boot ROM initialized USB
>>> already (serial downloader). This is helpful to reliably detect
>>> if the system has been recovered via USB serial downloader.
>>>
>>> Signed-off-by: Stefan Agner <stefan.agner at toradex.com>
>>> Acked-by: Marcel Ziswiler <marcel.ziswiler at toradex.com>
>>> ---
>>> Hi Stefano,
>>>
>>> I noted already in my initial post that detection of serial
>>> downloader mode is somewhat brittle:
>>> https://lists.denx.de/pipermail/u-boot/2017-August/301952.html
>>>
>>> This came up quite fast now also for other boards:
>>> https://www.mail-archive.com/u-boot@lists.denx.de/msg262234.html
>>>
>>> We use this patches since quite some time. Also NXP uses this
>>> detection method to start their mfgr tools... Altough a hack,
>>> maybe we should still add it upstream?
>>>
>>> --
>>> Stefan
>>>
>>>
>>> arch/arm/include/asm/arch-mx6/imx-regs.h | 7 +++++++
>>> 1 file changed, 7 insertions(+)
>>>
>>> diff --git a/arch/arm/include/asm/arch-mx6/imx-regs.h b/arch/arm/include/asm/arch-mx6/imx-regs.h
>>> index 86e267087a..895ef4de83 100644
>>> --- a/arch/arm/include/asm/arch-mx6/imx-regs.h
>>> +++ b/arch/arm/include/asm/arch-mx6/imx-regs.h
>>> @@ -985,5 +985,12 @@ struct pwm_regs {
>>> u32 pr;
>>> u32 cnr;
>>> };
>>
>> It seems as if you've already named a constant, so you might as well
>> #define and use it (USBPH0_PWD or USB0_PWD).
>
> Agreed.
>
>>
>> The reference manual seems to call it RXPWDRX though.
>
> I guess taking the latest naming from the manual make sense. Will update
> in v2.
>
> Before I send out v2, I'd like to know from Stefano whether he agrees
> with the general direction of the patch.
>
Green light from my side :-)
>
>
>>
>>> +
>>> +/*
>>> + * If ROM fell back to USB recover mode, USBPH0_PWD will be clear to use USB
>>> + * If boot from the other mode, USB0_PWD will keep reset value
>>> + */
>>> +#define is_boot_from_usb(void) (!(readl(USB_PHY0_BASE_ADDR) & (1<<20)))
>>> +
>>> #endif /* __ASSEMBLER__*/
>>> #endif /* __ASM_ARCH_MX6_IMX_REGS_H__ */
>>>
>> If I'm reading your comment correctly, the RXPWDRX bit will be set (the
>> PHY will be powered down) unless it was enabled by the Boot ROM.
>>
>> Won't this also be clear if you've run 'usb start' under U-Boot?
>
> Yes, this only works before a USB initialization...
>
> This should be fine for the use case I have in mind (see patch 2).
Agree. We want to detect just in SPL which was the (last) bootdevice and
rather we cannot detect them from SCR/GPR that just reflect the
configured booting device and not a fallback.
>
> Note this idea is borrowed from NXP downstream and seems to work here:
> http://git.freescale.com/git/cgit.cgi/imx/uboot-imx.git/tree/arch/arm/include/asm/arch-mx7/imx-regs.h?h=imx_v2016.03_4.1.15_2.0.0_ga#n1204
>
Regards,
Stefano
--
=====================================================================
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