[U-Boot] SAMA5D2 xplained SD/eMMC boot

Hi!
I've been playing around with latest mainline u-boot on sama5d2 xplained ultra. I noticed that if I want to boot the board from SD card (SDHCI1), the board will indeed load the SPL from it, but SPL will try to load u-boot.img from eMMC (SDHCI0) and fail, as my eMMC is blank. This is a result of hard-coding boot device to BOOT_DEVICE_MMC1 in arch/arm/mach-at91/spl.c spl_boot_device() I think.
Is there any way to discern from which SDHCI the board booted to continue loading u-boot.img from the correct one ? This would let us implement board_boot_order() and boot from correct SDHCI.

Hi Marek,
On 2016-04-18 17:30, Marek Vasut wrote:
Hi!
I've been playing around with latest mainline u-boot on sama5d2 xplained ultra. I noticed that if I want to boot the board from SD card (SDHCI1), the board will indeed load the SPL from it, but SPL will try to load u-boot.img from eMMC (SDHCI0) and fail, as my eMMC is blank. This is a result of hard-coding boot device to BOOT_DEVICE_MMC1 in arch/arm/mach-at91/spl.c spl_boot_device() I think.
Is there any way to discern from which SDHCI the board booted to continue loading u-boot.img from the correct one ? This would let us implement board_boot_order() and boot from correct SDHCI.
AFIAK it is not possible to detect the boot medium in a running device. At least was this the case when I checked it the last time (for sama5d3).
Andreas

On 04/18/2016 09:54 AM, Andreas Bießmann wrote:
Hi Marek,
On 2016-04-18 17:30, Marek Vasut wrote:
Hi!
I've been playing around with latest mainline u-boot on sama5d2 xplained ultra. I noticed that if I want to boot the board from SD card (SDHCI1), the board will indeed load the SPL from it, but SPL will try to load u-boot.img from eMMC (SDHCI0) and fail, as my eMMC is blank. This is a result of hard-coding boot device to BOOT_DEVICE_MMC1 in arch/arm/mach-at91/spl.c spl_boot_device() I think.
Is there any way to discern from which SDHCI the board booted to continue loading u-boot.img from the correct one ? This would let us implement board_boot_order() and boot from correct SDHCI.
AFIAK it is not possible to detect the boot medium in a running device. At least was this the case when I checked it the last time (for sama5d3).
For the TI am5728 (ARM V7), there is a register, CTRL_CORE_BOOTSTRAP (0x4A0026C4) which contains the boot device selection at last power cycle. I'm new to ARM so I don't know how likely it is that the Atmel part has a similar register. Good luck.

Hi Marek,
-----Original Message----- From: Marek Vasut [mailto:marek.vasut@gmail.com] Sent: 2016年4月18日 23:30 To: Yang, Wenyou Wenyou.Yang@atmel.com Cc: u-boot@lists.denx.de Subject: SAMA5D2 xplained SD/eMMC boot
Hi!
I've been playing around with latest mainline u-boot on sama5d2 xplained ultra. I noticed that if I want to boot the board from SD card (SDHCI1), the board will indeed load the SPL from it, but SPL will try to load u-boot.img from eMMC (SDHCI0) and fail, as my eMMC is blank.
Yes, there is some issue to load u-boot.img. I found there is something to do on sdhci.c.
You can try this branch, it should works.
https://github.com/linux4sam/u-boot-at91/commits/u-boot-2016.03-at91
This is a result of hard-coding boot device to BOOT_DEVICE_MMC1 in arch/arm/mach-at91/spl.c spl_boot_device() I think.
Is there any way to discern from which SDHCI the board booted to continue loading u-boot.img from the correct one ? This would let us implement board_boot_order() and boot from correct SDHCI.
-- Best regards, Marek Vasut
Best Regards, Wenyou Yang

On 04/19/2016 05:22 AM, Yang, Wenyou wrote:
Hi Marek,
-----Original Message----- From: Marek Vasut [mailto:marek.vasut@gmail.com] Sent: 2016年4月18日 23:30 To: Yang, Wenyou Wenyou.Yang@atmel.com Cc: u-boot@lists.denx.de Subject: SAMA5D2 xplained SD/eMMC boot
Hi!
I've been playing around with latest mainline u-boot on sama5d2 xplained ultra. I noticed that if I want to boot the board from SD card (SDHCI1), the board will indeed load the SPL from it, but SPL will try to load u-boot.img from eMMC (SDHCI0) and fail, as my eMMC is blank.
Yes, there is some issue to load u-boot.img. I found there is something to do on sdhci.c.
You can try this branch, it should works.
https://github.com/linux4sam/u-boot-at91/commits/u-boot-2016.03-at91
I am not interested in using non-mainline stuff. Do you have any particular patch/commit which I can refer to ? I do not think this has anything to do with sdhci.c driver at all, it has to do with detecting the boot device from which SPL was started and loading u-boot.img from the same boot device instead of always using SDHCI0.
This is a result of hard-coding boot device to BOOT_DEVICE_MMC1 in arch/arm/mach-at91/spl.c spl_boot_device() I think.
Is there any way to discern from which SDHCI the board booted to continue loading u-boot.img from the correct one ? This would let us implement board_boot_order() and boot from correct SDHCI.
-- Best regards, Marek Vasut
Best Regards, Wenyou Yang

Hi Marek,
-----Original Message----- From: Marek Vasut [mailto:marex@denx.de] Sent: 2016年4月20日 0:34 To: Yang, Wenyou Wenyou.Yang@atmel.com Cc: u-boot@lists.denx.de Subject: Re: SAMA5D2 xplained SD/eMMC boot
On 04/19/2016 05:22 AM, Yang, Wenyou wrote:
Hi Marek,
-----Original Message----- From: Marek Vasut [mailto:marek.vasut@gmail.com] Sent: 2016年4月18日 23:30 To: Yang, Wenyou Wenyou.Yang@atmel.com Cc: u-boot@lists.denx.de Subject: SAMA5D2 xplained SD/eMMC boot
Hi!
I've been playing around with latest mainline u-boot on sama5d2 xplained ultra. I noticed that if I want to boot the board from SD card (SDHCI1), the board will indeed load the SPL from it, but SPL will try to load u-boot.img from eMMC (SDHCI0) and fail, as my eMMC is blank.
Yes, there is some issue to load u-boot.img. I found there is something to do on
sdhci.c.
You can try this branch, it should works.
https://github.com/linux4sam/u-boot-at91/commits/u-boot-2016.03-at91
I am not interested in using non-mainline stuff. Do you have any particular patch/commit which I can refer to ? I do not think this has anything to do with sdhci.c driver at all, it has to do with detecting the boot device from which SPL was started and loading u-boot.img from the same boot device instead of always using SDHCI0.
I will test the mainline code. I will let you know when I get something.
Thank you.
This is a result of hard-coding boot device to BOOT_DEVICE_MMC1 in arch/arm/mach-at91/spl.c spl_boot_device() I think.
Is there any way to discern from which SDHCI the board booted to continue loading u-boot.img from the correct one ? This would let us implement board_boot_order() and boot from correct SDHCI.
-- Best regards, Marek Vasut
Best Regards, Wenyou Yang
-- Best regards, Marek Vasut
Best Regards, Wenyou Yang

On 04/20/2016 03:17 AM, Yang, Wenyou wrote:
Hi Marek,
-----Original Message----- From: Marek Vasut [mailto:marex@denx.de] Sent: 2016年4月20日 0:34 To: Yang, Wenyou Wenyou.Yang@atmel.com Cc: u-boot@lists.denx.de Subject: Re: SAMA5D2 xplained SD/eMMC boot
On 04/19/2016 05:22 AM, Yang, Wenyou wrote:
Hi Marek,
-----Original Message----- From: Marek Vasut [mailto:marek.vasut@gmail.com] Sent: 2016年4月18日 23:30 To: Yang, Wenyou Wenyou.Yang@atmel.com Cc: u-boot@lists.denx.de Subject: SAMA5D2 xplained SD/eMMC boot
Hi!
I've been playing around with latest mainline u-boot on sama5d2 xplained ultra. I noticed that if I want to boot the board from SD card (SDHCI1), the board will indeed load the SPL from it, but SPL will try to load u-boot.img from eMMC (SDHCI0) and fail, as my eMMC is blank.
Yes, there is some issue to load u-boot.img. I found there is something to do on
sdhci.c.
You can try this branch, it should works.
https://github.com/linux4sam/u-boot-at91/commits/u-boot-2016.03-at91
I am not interested in using non-mainline stuff. Do you have any particular patch/commit which I can refer to ? I do not think this has anything to do with sdhci.c driver at all, it has to do with detecting the boot device from which SPL was started and loading u-boot.img from the same boot device instead of always using SDHCI0.
I will test the mainline code. I will let you know when I get something.
OK.
Does the SoC have any sort of register which lists the current boot device ?
Thank you.
This is a result of hard-coding boot device to BOOT_DEVICE_MMC1 in arch/arm/mach-at91/spl.c spl_boot_device() I think.
Is there any way to discern from which SDHCI the board booted to continue loading u-boot.img from the correct one ? This would let us implement board_boot_order() and boot from correct SDHCI.
-- Best regards, Marek Vasut
Best Regards, Wenyou Yang
-- Best regards, Marek Vasut
Best Regards, Wenyou Yang

Hi Marek,
-----Original Message----- From: Marek Vasut [mailto:marex@denx.de] Sent: 2016年4月20日 17:37 To: Yang, Wenyou Wenyou.Yang@atmel.com Cc: u-boot@lists.denx.de Subject: Re: SAMA5D2 xplained SD/eMMC boot
On 04/20/2016 03:17 AM, Yang, Wenyou wrote:
Hi Marek,
-----Original Message----- From: Marek Vasut [mailto:marex@denx.de] Sent: 2016年4月20日 0:34 To: Yang, Wenyou Wenyou.Yang@atmel.com Cc: u-boot@lists.denx.de Subject: Re: SAMA5D2 xplained SD/eMMC boot
On 04/19/2016 05:22 AM, Yang, Wenyou wrote:
Hi Marek,
-----Original Message----- From: Marek Vasut [mailto:marek.vasut@gmail.com] Sent: 2016年4月18日 23:30 To: Yang, Wenyou Wenyou.Yang@atmel.com Cc: u-boot@lists.denx.de Subject: SAMA5D2 xplained SD/eMMC boot
Hi!
I've been playing around with latest mainline u-boot on sama5d2 xplained ultra. I noticed that if I want to boot the board from SD card (SDHCI1), the board will indeed load the SPL from it, but SPL will try to load u-boot.img from eMMC (SDHCI0) and fail, as my eMMC is blank.
Yes, there is some issue to load u-boot.img. I found there is something to do on
sdhci.c.
You can try this branch, it should works.
https://github.com/linux4sam/u-boot-at91/commits/u-boot-2016.03-at91
I am not interested in using non-mainline stuff. Do you have any particular patch/commit which I can refer to ? I do not think this has anything to do with sdhci.c driver at all, it has to do with detecting the boot device from which SPL was started and loading u-boot.img from the same boot device instead of always using SDHCI0.
I will test the mainline code. I will let you know when I get something.
OK.
Does the SoC have any sort of register which lists the current boot device ?
In this SoC, there is not register to list the current boot device.
Thank you.
This is a result of hard-coding boot device to BOOT_DEVICE_MMC1 in arch/arm/mach-at91/spl.c spl_boot_device() I
think.
Is there any way to discern from which SDHCI the board booted to continue loading u-boot.img from the correct one ? This would let us implement board_boot_order() and boot from correct SDHCI.
-- Best regards, Marek Vasut
Best Regards, Wenyou Yang
-- Best regards, Marek Vasut
Best Regards, Wenyou Yang
-- Best regards, Marek Vasut
Best Regards, Wenyou Yang

On 04/21/2016 04:30 AM, Yang, Wenyou wrote:
Hi Marek,
Hi!
-----Original Message----- From: Marek Vasut [mailto:marex@denx.de] Sent: 2016年4月20日 17:37 To: Yang, Wenyou Wenyou.Yang@atmel.com Cc: u-boot@lists.denx.de Subject: Re: SAMA5D2 xplained SD/eMMC boot
Can you fix your mailer so it doesn't insert this crap into each and every message ? Pretty please ?
On 04/20/2016 03:17 AM, Yang, Wenyou wrote:
Hi Marek,
-----Original Message----- From: Marek Vasut [mailto:marex@denx.de] Sent: 2016年4月20日 0:34 To: Yang, Wenyou Wenyou.Yang@atmel.com Cc: u-boot@lists.denx.de Subject: Re: SAMA5D2 xplained SD/eMMC boot
On 04/19/2016 05:22 AM, Yang, Wenyou wrote:
Hi Marek,
-----Original Message----- From: Marek Vasut [mailto:marek.vasut@gmail.com] Sent: 2016年4月18日 23:30 To: Yang, Wenyou Wenyou.Yang@atmel.com Cc: u-boot@lists.denx.de Subject: SAMA5D2 xplained SD/eMMC boot
Hi!
I've been playing around with latest mainline u-boot on sama5d2 xplained ultra. I noticed that if I want to boot the board from SD card (SDHCI1), the board will indeed load the SPL from it, but SPL will try to load u-boot.img from eMMC (SDHCI0) and fail, as my eMMC is blank.
Yes, there is some issue to load u-boot.img. I found there is something to do on
sdhci.c.
You can try this branch, it should works.
https://github.com/linux4sam/u-boot-at91/commits/u-boot-2016.03-at91
I am not interested in using non-mainline stuff. Do you have any particular patch/commit which I can refer to ? I do not think this has anything to do with sdhci.c driver at all, it has to do with detecting the boot device from which SPL was started and loading u-boot.img from the same boot device instead of always using SDHCI0.
I will test the mainline code. I will let you know when I get something.
OK.
Does the SoC have any sort of register which lists the current boot device ?
In this SoC, there is not register to list the current boot device.
And thus, it is not possible to detect at runtime from which device the SoC booted and thus load u-boot.img from the same device. Correct ?
You should add such register, it's a few lines of HDL ...
[...] Best regards, Marek Vasut

Hi,
-----Original Message----- From: Marek Vasut [mailto:marex@denx.de] Sent: 2016年4月21日 10:41 To: Yang, Wenyou Wenyou.Yang@atmel.com Cc: u-boot@lists.denx.de Subject: Re: SAMA5D2 xplained SD/eMMC boot
On 04/21/2016 04:30 AM, Yang, Wenyou wrote:
Hi Marek,
Hi!
-----Original Message----- From: Marek Vasut [mailto:marex@denx.de] Sent: 2016年4月20日 17:37 To: Yang, Wenyou Wenyou.Yang@atmel.com Cc: u-boot@lists.denx.de Subject: Re: SAMA5D2 xplained SD/eMMC boot
Can you fix your mailer so it doesn't insert this crap into each and every message ? Pretty please ?
On 04/20/2016 03:17 AM, Yang, Wenyou wrote:
Hi Marek,
-----Original Message----- From: Marek Vasut [mailto:marex@denx.de] Sent: 2016年4月20日 0:34 To: Yang, Wenyou Wenyou.Yang@atmel.com Cc: u-boot@lists.denx.de Subject: Re: SAMA5D2 xplained SD/eMMC boot
On 04/19/2016 05:22 AM, Yang, Wenyou wrote:
Hi Marek,
> -----Original Message----- > From: Marek Vasut [mailto:marek.vasut@gmail.com] > Sent: 2016年4月18日 23:30 > To: Yang, Wenyou Wenyou.Yang@atmel.com > Cc: u-boot@lists.denx.de > Subject: SAMA5D2 xplained SD/eMMC boot > > Hi! > > I've been playing around with latest mainline u-boot on sama5d2 > xplained ultra. I noticed that if I want to boot the board from > SD card (SDHCI1), the board will indeed load the SPL from it, but > SPL will try to load u-boot.img from eMMC > (SDHCI0) and fail, as my eMMC is blank.
Yes, there is some issue to load u-boot.img. I found there is something to do on
sdhci.c.
You can try this branch, it should works.
https://github.com/linux4sam/u-boot-at91/commits/u-boot-2016.03-at 91
I am not interested in using non-mainline stuff. Do you have any particular patch/commit which I can refer to ? I do not think this has anything to do with sdhci.c driver at all, it has to do with detecting the boot device from which SPL was started and loading u-boot.img from the same boot device instead of always using SDHCI0.
I will test the mainline code. I will let you know when I get something.
OK.
Does the SoC have any sort of register which lists the current boot device ?
In this SoC, there is not register to list the current boot device.
And thus, it is not possible to detect at runtime from which device the SoC booted and thus load u-boot.img from the same device. Correct ?
Yes,
You should add such register, it's a few lines of HDL ...
Good suggestion.
Recorded.
Thank you.
[...] Best regards, Marek Vasut
Best Regards Wenyou Yang

On 04/21/2016 04:46 AM, Yang, Wenyou wrote:
Hi,
Hi!
[...] pile of unnecessary email headers redacted. [...]
>> Hi! >> >> I've been playing around with latest mainline u-boot on sama5d2 >> xplained ultra. I noticed that if I want to boot the board from >> SD card (SDHCI1), the board will indeed load the SPL from it, but >> SPL will try to load u-boot.img from eMMC >> (SDHCI0) and fail, as my eMMC is blank. > > Yes, there is some issue to load u-boot.img. I found there is > something to do on sdhci.c. > > You can try this branch, it should works. > > https://github.com/linux4sam/u-boot-at91/commits/u-boot-2016.03-at > 91
I am not interested in using non-mainline stuff. Do you have any particular patch/commit which I can refer to ? I do not think this has anything to do with sdhci.c driver at all, it has to do with detecting the boot device from which SPL was started and loading u-boot.img from the same boot device instead of always using SDHCI0.
I will test the mainline code. I will let you know when I get something.
OK.
Does the SoC have any sort of register which lists the current boot device ?
In this SoC, there is not register to list the current boot device.
And thus, it is not possible to detect at runtime from which device the SoC booted and thus load u-boot.img from the same device. Correct ?
Yes,
Ha, thanks for confirming.
[...]

Hi Marek,
-----Original Message----- From: Marek Vasut [mailto:marex@denx.de] Sent: 2016年4月21日 10:59 To: Yang, Wenyou Wenyou.Yang@atmel.com Cc: u-boot@lists.denx.de Subject: Re: SAMA5D2 xplained SD/eMMC boot
On 04/21/2016 04:46 AM, Yang, Wenyou wrote:
Hi,
Hi!
[...] pile of unnecessary email headers redacted. [...]
>>> Hi! >>> >>> I've been playing around with latest mainline u-boot on sama5d2 >>> xplained ultra. I noticed that if I want to boot the board from >>> SD card (SDHCI1), the board will indeed load the SPL from it, >>> but SPL will try to load u-boot.img from eMMC >>> (SDHCI0) and fail, as my eMMC is blank. >> >> Yes, there is some issue to load u-boot.img. I found there is >> something to do on > sdhci.c. >> >> You can try this branch, it should works. >> >> https://github.com/linux4sam/u-boot-at91/commits/u-boot-2016.03- >> at >> 91 > > I am not interested in using non-mainline stuff. Do you have any > particular patch/commit which I can refer to ? I do not think > this has anything to do with sdhci.c driver at all, it has to do > with detecting the boot device from which SPL was started and > loading u-boot.img from the same boot device instead of always using
SDHCI0.
I will test the mainline code. I will let you know when I get something.
OK.
Does the SoC have any sort of register which lists the current boot device ?
In this SoC, there is not register to list the current boot device.
And thus, it is not possible to detect at runtime from which device the SoC booted and thus load u-boot.img from the same device. Correct ?
Yes,
Ha, thanks for confirming.
Sorry, can I correct what I said yesterday? There is a register to list the boot information exported by ROMCode.
The boot information is stored in R4 register when the ROMCode jumps to the bootstrap.
Here is the contents definitions R4 on the SAMA5D2 (improved compared to old MPUs to take care of IOSet features).
/* bootFrom ID Definitions */ #define BOOT_FROM_KEY (0xBAu << 24)
#define BOOT_FROM_SPI (0x0u << 0) #define BOOT_FROM_MCI (0x1u << 0) #define BOOT_FROM_SMC (0x2u << 0) #define BOOT_FROM_TWI (0x3u << 0) #define BOOT_FROM_QSPI (0x4u << 0)
/* ID number of the IP from the data sheet */ #define BOOT_FROM_ID0 (0x0u << 4) #define BOOT_FROM_ID1 (0x1u << 4) #define BOOT_FROM_ID2 (0x2u << 4) #define BOOT_FROM_ID3 (0x3u << 4) #define BOOT_FROM_ID4 (0x4u << 4)
#define BOOT_FROM_ID_Pos 4 #define BOOT_FROM_ID_Msk (0xfu << BOOT_FROM_ID_Pos) #define BOOT_FROM_ID(value) ((BOOT_FROM_ID_Msk & ((value) << BOOT_FROM_ID_Pos)))
#define BOOT_FROM_TYPE_SD_OR_AT25 (0x0u << 8) #define BOOT_FROM_TYPE_MMC_OR_AT45 (0x1u << 8) #define BOOT_FROM_TYPE_EMMC (0x2u << 8)
/* QSPI serial flashes */ #define BOOT_FROM_TYPE_SPANSION (0x0u << 8) #define BOOT_FROM_TYPE_MICRON (0x1u << 8) #define BOOT_FROM_TYPE_MACRONIX (0x2u << 8)
/* Chip Select or (MCI) Slot identifier used in code by the IP. */ #define BOOT_FROM_CS0 (0x0u << 12) // Slot A #define BOOT_FROM_CS1 (0x1u << 12) // Slot B #define BOOT_FROM_CS2 (0x2u << 12) // Slot C #define BOOT_FROM_CS3 (0x3u << 12) // Slot D #define BOOT_FROM_CS4 (0x4u << 12)
#define BOOT_FROM_CS_Pos 12 #define BOOT_FROM_CS_Msk (0xfu << BOOT_FROM_CS_Pos) #define BOOT_FROM_CS(value) ((BOOT_FROM_CS_Msk & ((value) << BOOT_FROM_CS_Pos)))
#define BOOT_FROM_IOSET_Pos 16 #define BOOT_FROM_IOSET_Msk (0x3u << BOOT_FROM_IOSET_Pos) #define BOOT_FROM_IOSET(value) ((BOOT_FROM_IOSET_Msk & ((value) << BOOT_FROM_IOSET_Pos)))>>
[...]
-- Best regards, Marek Vasut
Sorry for incorrect information before.
Best Regards, Wenyou Yang

On 04/22/2016 02:54 AM, Yang, Wenyou wrote:
Hi Marek,
Hi!
-----Original Message----- From: Marek Vasut [mailto:marex@denx.de] Sent: 2016年4月21日 10:59 To: Yang, Wenyou Wenyou.Yang@atmel.com Cc: u-boot@lists.denx.de Subject: Re: SAMA5D2 xplained SD/eMMC boot
On 04/21/2016 04:46 AM, Yang, Wenyou wrote:
Hi,
Hi!
[...] pile of unnecessary email headers redacted. [...]
>>>> Hi! >>>> >>>> I've been playing around with latest mainline u-boot on sama5d2 >>>> xplained ultra. I noticed that if I want to boot the board from >>>> SD card (SDHCI1), the board will indeed load the SPL from it, >>>> but SPL will try to load u-boot.img from eMMC >>>> (SDHCI0) and fail, as my eMMC is blank. >>> >>> Yes, there is some issue to load u-boot.img. I found there is >>> something to do on >> sdhci.c. >>> >>> You can try this branch, it should works. >>> >>> https://github.com/linux4sam/u-boot-at91/commits/u-boot-2016.03- >>> at >>> 91 >> >> I am not interested in using non-mainline stuff. Do you have any >> particular patch/commit which I can refer to ? I do not think >> this has anything to do with sdhci.c driver at all, it has to do >> with detecting the boot device from which SPL was started and >> loading u-boot.img from the same boot device instead of always using
SDHCI0.
> > I will test the mainline code. I will let you know when I get something.
OK.
Does the SoC have any sort of register which lists the current boot device ?
In this SoC, there is not register to list the current boot device.
And thus, it is not possible to detect at runtime from which device the SoC booted and thus load u-boot.img from the same device. Correct ?
Yes,
Ha, thanks for confirming.
Sorry, can I correct what I said yesterday?
What if I said "no" ? :-)
There is a register to list the boot information exported by ROMCode.
The boot information is stored in R4 register when the ROMCode jumps to the bootstrap.
Ha, so the U-Boot SPL can save the r4 register early in the boot and extract the boot device from it. That's neat. Thanks!
Here is the contents definitions R4 on the SAMA5D2 (improved compared to old MPUs to take care of IOSet features).
Is this stuff somewhere in the SAMA5Dx datasheet ? It'd be nice to know/have this information for other SAMA5Dx too (d3 and d4).
/* bootFrom ID Definitions */ #define BOOT_FROM_KEY (0xBAu << 24)
#define BOOT_FROM_SPI (0x0u << 0) #define BOOT_FROM_MCI (0x1u << 0) #define BOOT_FROM_SMC (0x2u << 0) #define BOOT_FROM_TWI (0x3u << 0) #define BOOT_FROM_QSPI (0x4u << 0)
/* ID number of the IP from the data sheet */ #define BOOT_FROM_ID0 (0x0u << 4) #define BOOT_FROM_ID1 (0x1u << 4) #define BOOT_FROM_ID2 (0x2u << 4) #define BOOT_FROM_ID3 (0x3u << 4) #define BOOT_FROM_ID4 (0x4u << 4)
#define BOOT_FROM_ID_Pos 4 #define BOOT_FROM_ID_Msk (0xfu << BOOT_FROM_ID_Pos) #define BOOT_FROM_ID(value) ((BOOT_FROM_ID_Msk & ((value) << BOOT_FROM_ID_Pos)))
#define BOOT_FROM_TYPE_SD_OR_AT25 (0x0u << 8) #define BOOT_FROM_TYPE_MMC_OR_AT45 (0x1u << 8) #define BOOT_FROM_TYPE_EMMC (0x2u << 8)
/* QSPI serial flashes */ #define BOOT_FROM_TYPE_SPANSION (0x0u << 8) #define BOOT_FROM_TYPE_MICRON (0x1u << 8) #define BOOT_FROM_TYPE_MACRONIX (0x2u << 8)
/* Chip Select or (MCI) Slot identifier used in code by the IP. */ #define BOOT_FROM_CS0 (0x0u << 12) // Slot A #define BOOT_FROM_CS1 (0x1u << 12) // Slot B #define BOOT_FROM_CS2 (0x2u << 12) // Slot C #define BOOT_FROM_CS3 (0x3u << 12) // Slot D #define BOOT_FROM_CS4 (0x4u << 12)
#define BOOT_FROM_CS_Pos 12 #define BOOT_FROM_CS_Msk (0xfu << BOOT_FROM_CS_Pos) #define BOOT_FROM_CS(value) ((BOOT_FROM_CS_Msk & ((value) << BOOT_FROM_CS_Pos)))
#define BOOT_FROM_IOSET_Pos 16 #define BOOT_FROM_IOSET_Msk (0x3u << BOOT_FROM_IOSET_Pos) #define BOOT_FROM_IOSET(value) ((BOOT_FROM_IOSET_Msk & ((value) << BOOT_FROM_IOSET_Pos)))>>
[...]
-- Best regards, Marek Vasut
Sorry for incorrect information before.
No problem, thanks for the update!
Best Regards, Wenyou Yang

Hi Marek,
-----Original Message----- From: Marek Vasut [mailto:marex@denx.de] Sent: 2016年4月22日 20:18 To: Yang, Wenyou Wenyou.Yang@atmel.com Cc: u-boot@lists.denx.de Subject: Re: SAMA5D2 xplained SD/eMMC boot
On 04/22/2016 02:54 AM, Yang, Wenyou wrote:
Hi Marek,
Hi!
-----Original Message----- From: Marek Vasut [mailto:marex@denx.de] Sent: 2016年4月21日 10:59 To: Yang, Wenyou Wenyou.Yang@atmel.com Cc: u-boot@lists.denx.de Subject: Re: SAMA5D2 xplained SD/eMMC boot
On 04/21/2016 04:46 AM, Yang, Wenyou wrote:
Hi,
Hi!
[...] pile of unnecessary email headers redacted. [...]
>>>>> Hi! >>>>> >>>>> I've been playing around with latest mainline u-boot on >>>>> sama5d2 xplained ultra. I noticed that if I want to boot the >>>>> board from SD card (SDHCI1), the board will indeed load the >>>>> SPL from it, but SPL will try to load u-boot.img from eMMC >>>>> (SDHCI0) and fail, as my eMMC is blank. >>>> >>>> Yes, there is some issue to load u-boot.img. I found there is >>>> something to do on >>> sdhci.c. >>>> >>>> You can try this branch, it should works. >>>> >>>> https://github.com/linux4sam/u-boot-at91/commits/u-boot-2016.0 >>>> 3- >>>> at >>>> 91 >>> >>> I am not interested in using non-mainline stuff. Do you have >>> any particular patch/commit which I can refer to ? I do not >>> think this has anything to do with sdhci.c driver at all, it >>> has to do with detecting the boot device from which SPL was >>> started and loading u-boot.img from the same boot device >>> instead of always using
SDHCI0.
>> >> I will test the mainline code. I will let you know when I get something. > > OK. > > Does the SoC have any sort of register which lists the current boot
device ?
In this SoC, there is not register to list the current boot device.
And thus, it is not possible to detect at runtime from which device the SoC booted and thus load u-boot.img from the same device. Correct ?
Yes,
Ha, thanks for confirming.
Sorry, can I correct what I said yesterday?
What if I said "no" ? :-)
There is a register to list the boot information exported by ROMCode.
The boot information is stored in R4 register when the ROMCode jumps to the
bootstrap.
Ha, so the U-Boot SPL can save the r4 register early in the boot and extract the boot device from it. That's neat. Thanks!
Here is the contents definitions R4 on the SAMA5D2 (improved compared to old
MPUs to take care of IOSet features).
Is this stuff somewhere in the SAMA5Dx datasheet ? It'd be nice to know/have this information for other SAMA5Dx too (d3 and d4).
It seems it is not included in the in the SAMA5Dx datasheet.
This feature is available since AT91SAM9G45, inclusive d3 and d4.
/* bootFrom ID Definitions */ #define BOOT_FROM_KEY (0xBAu << 24)
#define BOOT_FROM_SPI (0x0u << 0) #define BOOT_FROM_MCI (0x1u << 0) #define BOOT_FROM_SMC (0x2u << 0) #define BOOT_FROM_TWI (0x3u << 0) #define BOOT_FROM_QSPI (0x4u << 0)
/* ID number of the IP from the data sheet */ #define BOOT_FROM_ID0 (0x0u << 4) #define BOOT_FROM_ID1 (0x1u << 4) #define BOOT_FROM_ID2 (0x2u << 4) #define BOOT_FROM_ID3 (0x3u << 4) #define BOOT_FROM_ID4 (0x4u << 4)
#define BOOT_FROM_ID_Pos 4 #define BOOT_FROM_ID_Msk (0xfu << BOOT_FROM_ID_Pos) #define BOOT_FROM_ID(value) ((BOOT_FROM_ID_Msk &
((value) << BOOT_FROM_ID_Pos)))
#define BOOT_FROM_TYPE_SD_OR_AT25 (0x0u << 8) #define BOOT_FROM_TYPE_MMC_OR_AT45 (0x1u << 8) #define BOOT_FROM_TYPE_EMMC (0x2u << 8)
/* QSPI serial flashes */ #define BOOT_FROM_TYPE_SPANSION (0x0u << 8) #define BOOT_FROM_TYPE_MICRON (0x1u << 8) #define BOOT_FROM_TYPE_MACRONIX (0x2u << 8)
/* Chip Select or (MCI) Slot identifier used in code by the IP. */ #define BOOT_FROM_CS0 (0x0u << 12) // Slot A #define BOOT_FROM_CS1 (0x1u << 12) // Slot B #define BOOT_FROM_CS2 (0x2u << 12) // Slot C #define BOOT_FROM_CS3 (0x3u << 12) // Slot D #define BOOT_FROM_CS4 (0x4u << 12)
#define BOOT_FROM_CS_Pos 12 #define BOOT_FROM_CS_Msk (0xfu << BOOT_FROM_CS_Pos) #define BOOT_FROM_CS(value) ((BOOT_FROM_CS_Msk & ((value) <<
BOOT_FROM_CS_Pos)))
#define BOOT_FROM_IOSET_Pos 16 #define BOOT_FROM_IOSET_Msk (0x3u << BOOT_FROM_IOSET_Pos) #define BOOT_FROM_IOSET(value) ((BOOT_FROM_IOSET_Msk &
((value) << BOOT_FROM_IOSET_Pos)))>>
[...]
-- Best regards, Marek Vasut
Sorry for incorrect information before.
No problem, thanks for the update!
Best Regards, Wenyou Yang
-- Best regards, Marek Vasut
Best Regards, Wenyou Yang

On 04/25/2016 02:55 AM, Yang, Wenyou wrote:
Hi Marek,
-----Original Message----- From: Marek Vasut [mailto:marex@denx.de] Sent: 2016年4月22日 20:18 To: Yang, Wenyou Wenyou.Yang@atmel.com Cc: u-boot@lists.denx.de Subject: Re: SAMA5D2 xplained SD/eMMC boot
On 04/22/2016 02:54 AM, Yang, Wenyou wrote:
Hi Marek,
Hi!
-----Original Message----- From: Marek Vasut [mailto:marex@denx.de] Sent: 2016年4月21日 10:59 To: Yang, Wenyou Wenyou.Yang@atmel.com Cc: u-boot@lists.denx.de Subject: Re: SAMA5D2 xplained SD/eMMC boot
On 04/21/2016 04:46 AM, Yang, Wenyou wrote:
Hi,
Hi!
[...] pile of unnecessary email headers redacted. [...]
>>>>>> Hi! >>>>>> >>>>>> I've been playing around with latest mainline u-boot on >>>>>> sama5d2 xplained ultra. I noticed that if I want to boot the >>>>>> board from SD card (SDHCI1), the board will indeed load the >>>>>> SPL from it, but SPL will try to load u-boot.img from eMMC >>>>>> (SDHCI0) and fail, as my eMMC is blank. >>>>> >>>>> Yes, there is some issue to load u-boot.img. I found there is >>>>> something to do on >>>> sdhci.c. >>>>> >>>>> You can try this branch, it should works. >>>>> >>>>> https://github.com/linux4sam/u-boot-at91/commits/u-boot-2016.0 >>>>> 3- >>>>> at >>>>> 91 >>>> >>>> I am not interested in using non-mainline stuff. Do you have >>>> any particular patch/commit which I can refer to ? I do not >>>> think this has anything to do with sdhci.c driver at all, it >>>> has to do with detecting the boot device from which SPL was >>>> started and loading u-boot.img from the same boot device >>>> instead of always using
SDHCI0.
>>> >>> I will test the mainline code. I will let you know when I get something. >> >> OK. >> >> Does the SoC have any sort of register which lists the current boot
device ?
> > In this SoC, there is not register to list the current boot device.
And thus, it is not possible to detect at runtime from which device the SoC booted and thus load u-boot.img from the same device. Correct ?
Yes,
Ha, thanks for confirming.
Sorry, can I correct what I said yesterday?
What if I said "no" ? :-)
There is a register to list the boot information exported by ROMCode.
The boot information is stored in R4 register when the ROMCode jumps to the
bootstrap.
Ha, so the U-Boot SPL can save the r4 register early in the boot and extract the boot device from it. That's neat. Thanks!
Here is the contents definitions R4 on the SAMA5D2 (improved compared to old
MPUs to take care of IOSet features).
Is this stuff somewhere in the SAMA5Dx datasheet ? It'd be nice to know/have this information for other SAMA5Dx too (d3 and d4).
It seems it is not included in the in the SAMA5Dx datasheet.
So where did you get these numbers from ?
This feature is available since AT91SAM9G45, inclusive d3 and d4.
Oh cool, so the numbers are the same for all these chips ?
Thanks! Best regards, Marek Vasut

-----Original Message----- From: Marek Vasut [mailto:marex@denx.de] Sent: 2016年4月25日 18:30 To: Yang, Wenyou Wenyou.Yang@atmel.com Cc: u-boot@lists.denx.de Subject: Re: SAMA5D2 xplained SD/eMMC boot
On 04/25/2016 02:55 AM, Yang, Wenyou wrote:
Hi Marek,
-----Original Message----- From: Marek Vasut [mailto:marex@denx.de] Sent: 2016年4月22日 20:18 To: Yang, Wenyou Wenyou.Yang@atmel.com Cc: u-boot@lists.denx.de Subject: Re: SAMA5D2 xplained SD/eMMC boot
On 04/22/2016 02:54 AM, Yang, Wenyou wrote:
Hi Marek,
Hi!
-----Original Message----- From: Marek Vasut [mailto:marex@denx.de] Sent: 2016年4月21日 10:59 To: Yang, Wenyou Wenyou.Yang@atmel.com Cc: u-boot@lists.denx.de Subject: Re: SAMA5D2 xplained SD/eMMC boot
On 04/21/2016 04:46 AM, Yang, Wenyou wrote:
Hi,
Hi!
[...] pile of unnecessary email headers redacted. [...]
>>>>>>> Hi! >>>>>>> >>>>>>> I've been playing around with latest mainline u-boot on >>>>>>> sama5d2 xplained ultra. I noticed that if I want to boot >>>>>>> the board from SD card (SDHCI1), the board will indeed load >>>>>>> the SPL from it, but SPL will try to load u-boot.img from >>>>>>> eMMC >>>>>>> (SDHCI0) and fail, as my eMMC is blank. >>>>>> >>>>>> Yes, there is some issue to load u-boot.img. I found there >>>>>> is something to do on >>>>> sdhci.c. >>>>>> >>>>>> You can try this branch, it should works. >>>>>> >>>>>> https://github.com/linux4sam/u-boot-at91/commits/u-boot-2016 >>>>>> .0 >>>>>> 3- >>>>>> at >>>>>> 91 >>>>> >>>>> I am not interested in using non-mainline stuff. Do you have >>>>> any particular patch/commit which I can refer to ? I do not >>>>> think this has anything to do with sdhci.c driver at all, it >>>>> has to do with detecting the boot device from which SPL was >>>>> started and loading u-boot.img from the same boot device >>>>> instead of always using
SDHCI0.
>>>> >>>> I will test the mainline code. I will let you know when I get something. >>> >>> OK. >>> >>> Does the SoC have any sort of register which lists the current >>> boot
device ?
>> >> In this SoC, there is not register to list the current boot device. > > And thus, it is not possible to detect at runtime from which > device the SoC booted and thus load u-boot.img from the same device.
Correct ?
Yes,
Ha, thanks for confirming.
Sorry, can I correct what I said yesterday?
What if I said "no" ? :-)
There is a register to list the boot information exported by ROMCode.
The boot information is stored in R4 register when the ROMCode jumps to the
bootstrap.
Ha, so the U-Boot SPL can save the r4 register early in the boot and extract the boot device from it. That's neat. Thanks!
Here is the contents definitions R4 on the SAMA5D2 (improved compared to old
MPUs to take care of IOSet features).
Is this stuff somewhere in the SAMA5Dx datasheet ? It'd be nice to know/have this information for other SAMA5Dx too (d3 and d4).
It seems it is not included in the in the SAMA5Dx datasheet.
So where did you get these numbers from ?
Yes, it is not included in the datasheet now. We are not recommend to use them.
If it is helpful for you, please reference the previous mail.
This feature is available since AT91SAM9G45, inclusive d3 and d4.
Oh cool, so the numbers are the same for all these chips ?
Yes, basically same, only d2 includes additional ioset information.
Best Regards, Wenyou Yang

On 04/26/2016 03:47 AM, Yang, Wenyou wrote:
-----Original Message----- From: Marek Vasut [mailto:marex@denx.de] Sent: 2016年4月25日 18:30 To: Yang, Wenyou Wenyou.Yang@atmel.com Cc: u-boot@lists.denx.de Subject: Re: SAMA5D2 xplained SD/eMMC boot
On 04/25/2016 02:55 AM, Yang, Wenyou wrote:
Hi Marek,
-----Original Message----- From: Marek Vasut [mailto:marex@denx.de] Sent: 2016年4月22日 20:18 To: Yang, Wenyou Wenyou.Yang@atmel.com Cc: u-boot@lists.denx.de Subject: Re: SAMA5D2 xplained SD/eMMC boot
On 04/22/2016 02:54 AM, Yang, Wenyou wrote:
Hi Marek,
Hi!
-----Original Message----- From: Marek Vasut [mailto:marex@denx.de] Sent: 2016年4月21日 10:59 To: Yang, Wenyou Wenyou.Yang@atmel.com Cc: u-boot@lists.denx.de Subject: Re: SAMA5D2 xplained SD/eMMC boot
On 04/21/2016 04:46 AM, Yang, Wenyou wrote: > Hi,
Hi!
[...] pile of unnecessary email headers redacted. [...]
>>>>>>>> Hi! >>>>>>>> >>>>>>>> I've been playing around with latest mainline u-boot on >>>>>>>> sama5d2 xplained ultra. I noticed that if I want to boot >>>>>>>> the board from SD card (SDHCI1), the board will indeed load >>>>>>>> the SPL from it, but SPL will try to load u-boot.img from >>>>>>>> eMMC >>>>>>>> (SDHCI0) and fail, as my eMMC is blank. >>>>>>> >>>>>>> Yes, there is some issue to load u-boot.img. I found there >>>>>>> is something to do on >>>>>> sdhci.c. >>>>>>> >>>>>>> You can try this branch, it should works. >>>>>>> >>>>>>> https://github.com/linux4sam/u-boot-at91/commits/u-boot-2016 >>>>>>> .0 >>>>>>> 3- >>>>>>> at >>>>>>> 91 >>>>>> >>>>>> I am not interested in using non-mainline stuff. Do you have >>>>>> any particular patch/commit which I can refer to ? I do not >>>>>> think this has anything to do with sdhci.c driver at all, it >>>>>> has to do with detecting the boot device from which SPL was >>>>>> started and loading u-boot.img from the same boot device >>>>>> instead of always using SDHCI0. >>>>> >>>>> I will test the mainline code. I will let you know when I get something. >>>> >>>> OK. >>>> >>>> Does the SoC have any sort of register which lists the current >>>> boot
device ?
>>> >>> In this SoC, there is not register to list the current boot device. >> >> And thus, it is not possible to detect at runtime from which >> device the SoC booted and thus load u-boot.img from the same device.
Correct ?
> > Yes,
Ha, thanks for confirming.
Sorry, can I correct what I said yesterday?
What if I said "no" ? :-)
There is a register to list the boot information exported by ROMCode.
The boot information is stored in R4 register when the ROMCode jumps to the
bootstrap.
Ha, so the U-Boot SPL can save the r4 register early in the boot and extract the boot device from it. That's neat. Thanks!
Here is the contents definitions R4 on the SAMA5D2 (improved compared to old
MPUs to take care of IOSet features).
Is this stuff somewhere in the SAMA5Dx datasheet ? It'd be nice to know/have this information for other SAMA5Dx too (d3 and d4).
It seems it is not included in the in the SAMA5Dx datasheet.
So where did you get these numbers from ?
Yes, it is not included in the datasheet now. We are not recommend to use them.
If it is helpful for you, please reference the previous mail.
It is helpful, I sent a patch for SAMA5D2 which makes it behave sane. I will have to battle SAMA5D4 board soon, so I will most likely extend that patch for SAMA5D4.
This feature is available since AT91SAM9G45, inclusive d3 and d4.
Oh cool, so the numbers are the same for all these chips ?
Yes, basically same, only d2 includes additional ioset information.
OK, the IOSET is not interesting for now.
It'd be cool to have this documented somewhere :)
Best regards, Marek Vasut
participants (5)
-
Andreas Bießmann
-
James Chargin
-
Marek Vasut
-
Marek Vasut
-
Yang, Wenyou