imx: Internal boot sources, handle all header offsets
Makes the internal boot source configurable. Also changes section names slightly so that .flash_header_0x1000 isn't matched to .flash_header_0x100* etc. Signed-off-by: Marc Reilly <marc@cpdesign.com.au> Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
This commit is contained in:
parent
b82ee742d0
commit
5785072b37
|
@ -40,6 +40,28 @@ config ARCH_IMX_INTERNAL_BOOT
|
|||
bool "support internal boot mode"
|
||||
depends on ARCH_IMX25 || ARCH_IMX35
|
||||
|
||||
choice
|
||||
depends on ARCH_IMX_INTERNAL_BOOT
|
||||
prompt "Internal boot source"
|
||||
help
|
||||
Determines the location of the header information for internal boot.
|
||||
0x100 for OneNAND
|
||||
0x400 for NAND, SD/MMC or Serial ROM
|
||||
0x1000 for NOR
|
||||
|
||||
config ARCH_IMX_INTERNAL_BOOT_NAND
|
||||
default y
|
||||
bool "NAND, SD/MMC, Serial ROM"
|
||||
select NAND_IMX_BOOT
|
||||
|
||||
config ARCH_IMX_INTERNAL_BOOT_NOR
|
||||
bool "NOR"
|
||||
|
||||
config ARCH_IMX_INTERNAL_BOOT_ONENAND
|
||||
bool "OneNAND"
|
||||
|
||||
endchoice
|
||||
|
||||
comment "Freescale i.MX System-on-Chip"
|
||||
|
||||
choice
|
||||
|
|
|
@ -5,13 +5,13 @@
|
|||
.pre_image : { \
|
||||
KEEP(*(.flash_header_start*)) \
|
||||
. = 0x100; \
|
||||
KEEP(*(.flash_header_0x100*)) \
|
||||
KEEP(*(.dcd_entry_0x100*)) \
|
||||
KEEP(*(.image_len_0x100*)) \
|
||||
KEEP(*(.flash_header_0x0100*)) \
|
||||
KEEP(*(.dcd_entry_0x0100*)) \
|
||||
KEEP(*(.image_len_0x0100*)) \
|
||||
. = 0x400; \
|
||||
KEEP(*(.flash_header_0x400*)) \
|
||||
KEEP(*(.dcd_entry_0x400*)) \
|
||||
KEEP(*(.image_len_0x400*)) \
|
||||
KEEP(*(.flash_header_0x0400*)) \
|
||||
KEEP(*(.dcd_entry_0x0400*)) \
|
||||
KEEP(*(.image_len_0x0400*)) \
|
||||
. = 0x1000; \
|
||||
KEEP(*(.flash_header_0x1000*)) \
|
||||
KEEP(*(.dcd_entry_0x1000*)) \
|
||||
|
|
|
@ -3,17 +3,33 @@
|
|||
|
||||
#define __flash_header_start __section(.flash_header_start)
|
||||
|
||||
#define __flash_header_0x100 __section(.flash_header_0x100)
|
||||
#define __dcd_entry_0x100 __section(.dcd_entry_0x100)
|
||||
#define __image_len_0x100 __section(.image_len_0x100)
|
||||
#if defined(CONFIG_ARCH_IMX_INTERNAL_BOOT_NOR)
|
||||
#define __flash_header_section __section(.flash_header_0x1000)
|
||||
#define __dcd_entry_section __section(.dcd_entry_0x1000)
|
||||
#define __image_len_section __section(.image_len_0x1000)
|
||||
#define FLASH_HEADER_OFFSET 0x1000
|
||||
#elif defined(CONFIG_ARCH_IMX_INTERNAL_BOOT_ONENAND)
|
||||
#define __flash_header_section __section(.flash_header_0x0100)
|
||||
#define __dcd_entry_section __section(.dcd_entry_0x0100)
|
||||
#define __image_len_section __section(.image_len_0x0100)
|
||||
#define FLASH_HEADER_OFFSET 0x0100
|
||||
#else
|
||||
#define __flash_header_section __section(.flash_header_0x0400)
|
||||
#define __dcd_entry_section __section(.dcd_entry_0x0400)
|
||||
#define __image_len_section __section(.image_len_0x0400)
|
||||
#define FLASH_HEADER_OFFSET 0x0400
|
||||
#endif
|
||||
|
||||
#define __flash_header_0x400 __section(.flash_header_0x400)
|
||||
#define __dcd_entry_0x400 __section(.dcd_entry_0x400)
|
||||
#define __image_len_0x400 __section(.image_len_0x400)
|
||||
/*
|
||||
* NOR is not automatically copied anywhere by the boot ROM
|
||||
*/
|
||||
#if defined (CONFIG_ARCH_IMX_INTERNAL_BOOT_NOR)
|
||||
#define DEST_BASE IMX_CS0_BASE
|
||||
#else
|
||||
#define DEST_BASE TEXT_BASE
|
||||
#endif
|
||||
|
||||
#define __flash_header_0x1000 __section(.flash_header_0x1000)
|
||||
#define __dcd_entry_0x1000 __section(.dcd_entry_0x1000)
|
||||
#define __image_len_0x1000 __section(.image_len_0x1000)
|
||||
#define FLASH_HEADER_BASE (DEST_BASE + FLASH_HEADER_OFFSET)
|
||||
|
||||
struct imx_dcd_entry {
|
||||
unsigned long ptr_type;
|
||||
|
|
Loading…
Reference in New Issue