From 4ac2e2d69fb028c7bd749a07346820a4fd38f65a Mon Sep 17 00:00:00 2001 From: Fabio Estevam Date: Sun, 5 Jun 2011 06:26:49 +0000 Subject: mx31ads: Use the new relocation scheme This fixes the MX31ADS build by using the new relocation scheme. Signed-off-by: Fabio Estevam Tested-by: Felix Radensky --- board/freescale/mx31ads/config.mk | 1 - board/freescale/mx31ads/mx31ads.c | 19 +++++++++++++---- board/freescale/mx31ads/u-boot.lds | 42 ++++++++++++++++++++++++++++++-------- include/configs/mx31ads.h | 11 ++++++++++ 4 files changed, 59 insertions(+), 14 deletions(-) delete mode 100644 board/freescale/mx31ads/config.mk diff --git a/board/freescale/mx31ads/config.mk b/board/freescale/mx31ads/config.mk deleted file mode 100644 index 0131edfbe..000000000 --- a/board/freescale/mx31ads/config.mk +++ /dev/null @@ -1 +0,0 @@ -CONFIG_SYS_TEXT_BASE = 0x87f00000 diff --git a/board/freescale/mx31ads/mx31ads.c b/board/freescale/mx31ads/mx31ads.c index a298e0530..9bf9c18fd 100644 --- a/board/freescale/mx31ads/mx31ads.c +++ b/board/freescale/mx31ads/mx31ads.c @@ -28,15 +28,21 @@ DECLARE_GLOBAL_DATA_PTR; -int dram_init (void) +int dram_init(void) +{ + /* dram_init must store complete ramsize in gd->ram_size */ + gd->ram_size = get_ram_size((volatile void *)PHYS_SDRAM_1, + PHYS_SDRAM_1_SIZE); + return 0; +} + +void dram_init_banksize(void) { gd->bd->bi_dram[0].start = PHYS_SDRAM_1; gd->bd->bi_dram[0].size = PHYS_SDRAM_1_SIZE; - - return 0; } -int board_init (void) +int board_early_init_f(void) { int i; @@ -94,6 +100,11 @@ int board_init (void) readb(CS4_BASE + 8); readb(CS4_BASE + 7); + return 0; +} + +int board_init(void) +{ gd->bd->bi_arch_number = MACH_TYPE_MX31ADS; /* board id for linux */ gd->bd->bi_boot_params = 0x80000100; /* adress of boot parameters */ diff --git a/board/freescale/mx31ads/u-boot.lds b/board/freescale/mx31ads/u-boot.lds index b081b2194..79eb7aca3 100644 --- a/board/freescale/mx31ads/u-boot.lds +++ b/board/freescale/mx31ads/u-boot.lds @@ -48,23 +48,47 @@ SECTIONS *(.text) } - . = ALIGN(4); - .rodata : { *(SORT_BY_ALIGNMENT(SORT_BY_NAME(.rodata*))) } + .rodata : { *(.rodata) } . = ALIGN(4); - .data : { *(.data) } + .data : { + *(.data) + } . = ALIGN(4); - .got : { *(.got) } - - . = .; __u_boot_cmd_start = .; .u_boot_cmd : { *(.u_boot_cmd) } __u_boot_cmd_end = .; . = ALIGN(4); - __bss_start = .; - .bss : { *(.bss) . = ALIGN(4); } - __bss_end__ = .; + + .rel.dyn : { + __rel_dyn_start = .; + *(.rel*) + __rel_dyn_end = .; + } + + .dynsym : { + __dynsym_start = .; + *(.dynsym) + } + + _end = .; + + .bss __rel_dyn_start (OVERLAY) : { + __bss_start = .; + *(.bss) + . = ALIGN(4); + __bss_end__ = .; + } + + /DISCARD/ : { *(.bss*) } + /DISCARD/ : { *(.dynstr*) } + /DISCARD/ : { *(.dynsym*) } + /DISCARD/ : { *(.dynamic*) } + /DISCARD/ : { *(.hash*) } + /DISCARD/ : { *(.plt*) } + /DISCARD/ : { *(.interp*) } + /DISCARD/ : { *(.gnu*) } } diff --git a/include/configs/mx31ads.h b/include/configs/mx31ads.h index 5ea59b4ab..6d6c1bd26 100644 --- a/include/configs/mx31ads.h +++ b/include/configs/mx31ads.h @@ -33,6 +33,8 @@ #define CONFIG_DISPLAY_CPUINFO #define CONFIG_DISPLAY_BOARDINFO +#define CONFIG_SYS_TEXT_BASE 0xA0000000 + /* * Disabled for now due to build problems under Debian and a significant increase * in the final file size: 144260 vs. 109536 Bytes. @@ -160,6 +162,15 @@ #define CONFIG_NR_DRAM_BANKS 1 #define PHYS_SDRAM_1 CSD0_BASE #define PHYS_SDRAM_1_SIZE (128 * 1024 * 1024) +#define CONFIG_BOARD_EARLY_INIT_F + +#define CONFIG_SYS_SDRAM_BASE PHYS_SDRAM_1 +#define CONFIG_SYS_INIT_RAM_ADDR IRAM_BASE_ADDR +#define CONFIG_SYS_INIT_RAM_SIZE IRAM_SIZE +#define CONFIG_SYS_GBL_DATA_OFFSET (CONFIG_SYS_INIT_RAM_SIZE - \ + GENERATED_GBL_DATA_SIZE) +#define CONFIG_SYS_INIT_SP_ADDR (CONFIG_SYS_INIT_RAM_ADDR + \ + CONFIG_SYS_GBL_DATA_OFFSET) /*----------------------------------------------------------------------- * FLASH and environment organization -- cgit v1.2.3 From 4e37731a27faeba57e4814954544ce18324ae259 Mon Sep 17 00:00:00 2001 From: Fabio Estevam Date: Sun, 5 Jun 2011 14:56:02 +0000 Subject: mx31litekit: Fix boot with the new relocation scheme. imx31_litekit has been converted to the new relocation scheme, but it does not boot. Make the boot functional by using board_early_init_f . Signed-off-by: Fabio Estevam Tested-by: Magnus Lilja --- board/logicpd/imx31_litekit/imx31_litekit.c | 17 +++++++++++------ include/configs/imx31_litekit.h | 1 + 2 files changed, 12 insertions(+), 6 deletions(-) diff --git a/board/logicpd/imx31_litekit/imx31_litekit.c b/board/logicpd/imx31_litekit/imx31_litekit.c index 2ed742fb5..bf635c301 100644 --- a/board/logicpd/imx31_litekit/imx31_litekit.c +++ b/board/logicpd/imx31_litekit/imx31_litekit.c @@ -29,21 +29,21 @@ DECLARE_GLOBAL_DATA_PTR; -int dram_init (void) +int dram_init(void) { - gd->ram_size = PHYS_SDRAM_1_SIZE; - + /* dram_init must store complete ramsize in gd->ram_size */ + gd->ram_size = get_ram_size((volatile void *)PHYS_SDRAM_1, + PHYS_SDRAM_1_SIZE); return 0; } -void -dram_init_banksize (void) +void dram_init_banksize(void) { gd->bd->bi_dram[0].start = PHYS_SDRAM_1; gd->bd->bi_dram[0].size = PHYS_SDRAM_1_SIZE; } -int board_init (void) +int board_early_init_f(void) { __REG(CSCR_U(0)) = 0x0000cf03; /* CS0: Nor Flash */ __REG(CSCR_L(0)) = 0xa0330d01; @@ -71,6 +71,11 @@ int board_init (void) /* start SPI2 clock */ __REG(CCM_CGR2) = __REG(CCM_CGR2) | (3 << 4); + return 0; +} + +int board_init(void) +{ gd->bd->bi_arch_number = MACH_TYPE_MX31LITE; /* board id for linux */ gd->bd->bi_boot_params = (0x80000100); /* adress of boot parameters */ diff --git a/include/configs/imx31_litekit.h b/include/configs/imx31_litekit.h index 9405f562c..7ee7076f9 100644 --- a/include/configs/imx31_litekit.h +++ b/include/configs/imx31_litekit.h @@ -145,6 +145,7 @@ #define CONFIG_NR_DRAM_BANKS 1 #define PHYS_SDRAM_1 CSD0_BASE #define PHYS_SDRAM_1_SIZE (128 * 1024 * 1024) +#define CONFIG_BOARD_EARLY_INIT_F #define CONFIG_SYS_SDRAM_BASE CSD0_BASE #define CONFIG_SYS_INIT_RAM_ADDR IRAM_BASE_ADDR -- cgit v1.2.3 From ac88e66e14886ab97c25c91b0f3a5350d7c8db65 Mon Sep 17 00:00:00 2001 From: Fabio Estevam Date: Mon, 6 Jun 2011 03:13:36 +0000 Subject: imx31_litekit: Remove local config.mk Local board config.mk should be avoided. Place CONFIG_SYS_TEXT_BASE definition into the board config file instead. Signed-off-by: Fabio Estevam Acked-by: Stefano Babic --- board/logicpd/imx31_litekit/config.mk | 1 - include/configs/imx31_litekit.h | 2 ++ 2 files changed, 2 insertions(+), 1 deletion(-) delete mode 100644 board/logicpd/imx31_litekit/config.mk diff --git a/board/logicpd/imx31_litekit/config.mk b/board/logicpd/imx31_litekit/config.mk deleted file mode 100644 index a7887ba44..000000000 --- a/board/logicpd/imx31_litekit/config.mk +++ /dev/null @@ -1 +0,0 @@ -CONFIG_SYS_TEXT_BASE = 0xa0000000 diff --git a/include/configs/imx31_litekit.h b/include/configs/imx31_litekit.h index 7ee7076f9..1131db0a5 100644 --- a/include/configs/imx31_litekit.h +++ b/include/configs/imx31_litekit.h @@ -39,6 +39,8 @@ #define CONFIG_DISPLAY_CPUINFO #define CONFIG_DISPLAY_BOARDINFO +#define CONFIG_SYS_TEXT_BASE 0xa0000000 + /* Temporarily disabled */ #if 0 #define CONFIG_OF_LIBFDT 1 -- cgit v1.2.3 From ba8dcca78dc071fb1f419a920c82c18b10f9eff3 Mon Sep 17 00:00:00 2001 From: Felix Radensky Date: Mon, 6 Jun 2011 05:06:07 +0000 Subject: mx31ads: Fix environment location on flash At the moment u-boot and u-boot environment on flash have overlapping addresses, so each u-boot update erases the environment. Fix this by placing evironment right after u-boot. Also, remove confusing comment about environment location. Signed-off-by: Felix Radensky --- include/configs/mx31ads.h | 10 +++------- 1 file changed, 3 insertions(+), 7 deletions(-) diff --git a/include/configs/mx31ads.h b/include/configs/mx31ads.h index 6d6c1bd26..3c61911b0 100644 --- a/include/configs/mx31ads.h +++ b/include/configs/mx31ads.h @@ -182,18 +182,14 @@ #define CONFIG_SYS_MONITOR_LEN (256 * 1024) /* Reserve 256KiB */ #define CONFIG_ENV_IS_IN_FLASH 1 -#define CONFIG_ENV_SECT_SIZE (32 * 1024) +#define CONFIG_ENV_SECT_SIZE (128 * 1024) #define CONFIG_ENV_SIZE CONFIG_ENV_SECT_SIZE +#define CONFIG_ENV_ADDR (CONFIG_SYS_MONITOR_BASE + CONFIG_SYS_MONITOR_LEN) /* Address and size of Redundant Environment Sector */ -#define CONFIG_ENV_OFFSET_REDUND (CONFIG_ENV_OFFSET + CONFIG_ENV_SIZE) +#define CONFIG_ENV_ADDR_REDUND (CONFIG_ENV_ADDR + CONFIG_ENV_SIZE) #define CONFIG_ENV_SIZE_REDUND CONFIG_ENV_SIZE -/* S29WS256N NOR flash has 4 32KiB small sectors at the beginning and at the end. - * The rest of 32MiB is in 128KiB big sectors. U-Boot occupies the low 4 sectors, - * if we put environment next to it, we will have to occupy 128KiB for it. - * Putting it at the top of flash we use only 32KiB. */ -#define CONFIG_ENV_ADDR (CONFIG_SYS_MONITOR_BASE + CONFIG_ENV_SECT_SIZE) /*----------------------------------------------------------------------- * CFI FLASH driver setup -- cgit v1.2.3 From 43f13e4ad7b5fb5606d6cf4a902b2ccf9c67277c Mon Sep 17 00:00:00 2001 From: Fabio Estevam Date: Mon, 6 Jun 2011 05:25:20 +0000 Subject: imx27lite: Remove local config.mk Local board config.mk should be avoided. Place CONFIG_SYS_TEXT_BASE definition into the board config file instead. Signed-off-by: Fabio Estevam --- board/logicpd/imx27lite/config.mk | 5 ----- include/configs/imx27lite-common.h | 2 ++ 2 files changed, 2 insertions(+), 5 deletions(-) delete mode 100644 board/logicpd/imx27lite/config.mk diff --git a/board/logicpd/imx27lite/config.mk b/board/logicpd/imx27lite/config.mk deleted file mode 100644 index 018d9207e..000000000 --- a/board/logicpd/imx27lite/config.mk +++ /dev/null @@ -1,5 +0,0 @@ -# with relocation CONFIG_SYS_TEXT_BASE can be anything, and making it 0 -# makes relative and absolute relocation fixups interchangeable. -#CONFIG_SYS_TEXT_BASE = 0 - -CONFIG_SYS_TEXT_BASE = 0xc0000000 diff --git a/include/configs/imx27lite-common.h b/include/configs/imx27lite-common.h index bc1fa00ef..8d93277c2 100644 --- a/include/configs/imx27lite-common.h +++ b/include/configs/imx27lite-common.h @@ -34,6 +34,8 @@ #define CONFIG_DISPLAY_BOARDINFO #define CONFIG_DISPLAY_CPUINFO +#define CONFIG_SYS_TEXT_BASE 0xc0000000 + #define CONFIG_CMDLINE_TAG 1 /* enable passing of ATAGs */ #define CONFIG_SETUP_MEMORY_TAGS 1 #define CONFIG_INITRD_TAG 1 -- cgit v1.2.3 From 84b80856387a72c38586075c9a6795e4face7693 Mon Sep 17 00:00:00 2001 From: Minkyu Kang Date: Thu, 2 Jun 2011 21:27:01 +0000 Subject: SMDK6400: fix the compiler error This patch adds _end for fix following compiler error arch/arm/cpu/arm1176/start.o: In function `_end_ofs': arch/arm/cpu/arm1176/start.S:61: undefined reference to `_end' Signed-off-by: Minkyu Kang --- board/samsung/smdk6400/u-boot-nand.lds | 2 ++ 1 file changed, 2 insertions(+) diff --git a/board/samsung/smdk6400/u-boot-nand.lds b/board/samsung/smdk6400/u-boot-nand.lds index 21e1ed3b7..f1628152d 100644 --- a/board/samsung/smdk6400/u-boot-nand.lds +++ b/board/samsung/smdk6400/u-boot-nand.lds @@ -67,6 +67,8 @@ SECTIONS *(.dynsym) } + _end = .; + .bss __rel_dyn_start (OVERLAY) : { __bss_start = .; *(.bss) -- cgit v1.2.3