From mboxrd@z Thu Jan 1 00:00:00 1970 From: Stefano Babic Date: Mon, 7 Dec 2015 10:55:43 +0100 Subject: [U-Boot] [PATCH] imx_common: check for Serial Downloader in spl_boot_device In-Reply-To: <56634586.6050200@nelint.com> References: <1449219732-5396-1-git-send-email-sbabic@denx.de> <56634586.6050200@nelint.com> Message-ID: <5665579F.1080808@denx.de> List-Id: MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit To: u-boot@lists.denx.de Hi Eric, On 05/12/2015 21:13, Eric Nelson wrote: > Hi Stefano, > > On 12/04/2015 02:02 AM, Stefano Babic wrote: >> Check for bmode before reading the boot device >> to check if a serial downloader is started, >> and returns UART if the serial downloader is set, >> letting SPL to wait for an image if >> CONFIG_SPL_YMODEM_SUPPORT is set. >> >> This allows to load again a SPL based board >> with imx_usb_loader together with a tool >> such as kermit. >> >> Signed-off-by: Stefano Babic >> CC: Tim Harvey >> CC: Fabio Estevam >> CC: Eric Nelson >> --- >> >> Note: I know we have already discussed more complicated solution >> for adding multilple files to imx_usb_loader. >> However, fixing ymodem support for i.MX6 >> was trivial and imx_usb_loader is working >> again. >> >> arch/arm/imx-common/spl.c | 7 +++++++ >> 1 file changed, 7 insertions(+) >> >> diff --git a/arch/arm/imx-common/spl.c b/arch/arm/imx-common/spl.c >> index ac6e40e..28217d2 100644 >> --- a/arch/arm/imx-common/spl.c >> +++ b/arch/arm/imx-common/spl.c >> @@ -20,7 +20,14 @@ u32 spl_boot_device(void) >> struct src *psrc = (struct src *)SRC_BASE_ADDR; >> unsigned int gpr10_boot = readl(&psrc->gpr10) & (1 << 28); >> unsigned reg = gpr10_boot ? readl(&psrc->gpr9) : readl(&psrc->sbmr1); >> + unsigned int bmode = readl(&psrc->sbmr2); >> >> + /* >> + * Check for BMODE if serial downloader is enabled >> + * BOOT_MODE - see IMX6DQRM Table 8-1 >> + */ > > I think you may need to check only bits 24 and 25 here. > >> + if ((bmode >> 24) == 0x01) /* Serial Downloader */ >> + return BOOT_DEVICE_UART; > > Even though the data sheet says the high bits should be zero, > I'm seeing some other bits set on an i.MX6SL: > > => mm 0x020d801c > 020d801c: 22000001 ? x > Agree - I checked on Solo / DL, and bits were zero. I fix it in V2. > Separately, what's your thought about enabling this when the > system is reset through "bmode usb"? > > http://git.denx.de/?p=u-boot.git;a=blob;f=arch/arm/cpu/armv7/mx6/soc.c;h=bf5ae8cdffd8b0887291249332b06f66dc644832;hb=HEAD#l389 > > Since the gpr9 value in this mode is 0x00000001, the switch > statement currently falls into the NOR/OneNAND block, which > is pretty useless. I agree with you, in fact it does not work - but I do not see a way to inform the ROM that next time it should run with USB as boot device. >From the fusemap, I tried to set BOOT_CFG4 as 0x40 ("Reserved for serial ROM"), and fixing BOOT_CFG1 to 0x30, but it was only a try. In fact, we need to change BMODE from internal to serial, and I do not see a way in the "official" documentation. 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 =====================================================================