[U-Boot] [PATCH 1/1] ARM: mxs: Get boot mode from OCRAM
Robert Deliën
robert at delien.nl
Wed Apr 29 12:12:09 CEST 2015
> The GLOBAL_BOOT_MODE_ADDR for i.MX28 is taken from an U-Boot patch for the
> MX28EVK:
> http://repository.timesys.com/buildsources/u/u-boot/u-boot-2009.08/u-boot-2009.08-mx28-201012211513.patch
It could be 0x0001a7f0 too:
/* The global boot mode will be detected by ROM code and
* a boot mode value will be stored at fixed address:
* TO1.0 addr 0x0001a7f0
* TO1.2 addr 0x00019BF0
*/
#ifndef MX28_EVK_TO1_0
#define GLOBAL_BOOT_MODE_ADDR 0x00019BF0
#else
#define GLOBAL_BOOT_MODE_ADDR 0x0001a7f0
#endif
Probably depending on the silicon spin, so perhaps we want to make a CONFIG_ for older silicon.
And the numbers read at this address don't match the numbers read from the boot mode GPIO pin. Only the lowest 4 bits represent the actual boot device and below the definitions:
#define BOOT_MODE_USB0 0x0
#define BOOT_MODE_I2C0 0x1
#define BOOT_MODE_SPI2 0x2
#define BOOT_MODE_SPI3 0x3
#define BOOT_MODE_GPMI 0x4
#define BOOT_MODE_rsvd1 0x5
#define BOOT_MODE_JTAG 0x6
#define BOOT_MODE_rsvd3 0x7
#define BOOT_MODE_SPI3_EE 0x8
#define BOOT_MODE_SSP0 0x9
#define BOOT_MODE_SSP1 0xa
#define BOOT_MODE_rsvd4 0xb
#define BOOT_MODE_rsvd5 0xc
#define BOOT_MODE_rsvd6 0xd
#define BOOT_MODE_rsvd7 0xe
#define BOOT_MODE_TEST 0xf
Higher bits have other purposes. On my board, for example, a value of 0x14 is reported when booting from NAND flash.
Having said all of this, I think your way is definitely the way to go.
More information about the U-Boot
mailing list