[U-Boot] [PATCH 1/3 RESEND] M28: Document that units has to be set to sectors on SD bootcard

Signed-off-by: Marek Vasut marek.vasut@gmail.com Cc: Stefano Babic sbabic@denx.de Cc: Wolfgang Denk wd@denx.de --- doc/README.m28 | 3 ++- 1 files changed, 2 insertions(+), 1 deletions(-)
diff --git a/doc/README.m28 b/doc/README.m28 index b749ce0..548982f 100644 --- a/doc/README.m28 +++ b/doc/README.m28 @@ -113,7 +113,8 @@ must have the following parameters: * Partition size ........ at least 1024 kb * Partition type ........ 0x53 (sometimes "OnTrack DM6 Aux3")
-For example in Linux fdisk, the sequence for a clear card is the following: +For example in Linux fdisk, the sequence for a clear card follows. Be sure to +run fdisk with the option "-u=sectors" to set units to sectors:
* o ..................... create a clear partition table * n ..................... create new partition

Signed-off-by: Marek Vasut marek.vasut@gmail.com Cc: Wolfgang Denk wd@denx.de Cc: Detlev Zundel dzu@denx.de Cc: Stefano Babic sbabic@denx.de --- board/denx/m28evk/m28evk.c | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-)
diff --git a/board/denx/m28evk/m28evk.c b/board/denx/m28evk/m28evk.c index 8cf3dc9..fcee046 100644 --- a/board/denx/m28evk/m28evk.c +++ b/board/denx/m28evk/m28evk.c @@ -104,7 +104,7 @@ static int m28_mmc_wp(int id)
int board_mmc_init(bd_t *bis) { - /* Configure WP as output */ + /* Configure WP as input. */ gpio_direction_input(MX28_PAD_AUART2_CTS__GPIO_3_10);
return mxsmmc_initialize(bis, 0, m28_mmc_wp);

On 02/12/2011 14:47, Marek Vasut wrote:
Signed-off-by: Marek Vasut marek.vasut@gmail.com Cc: Wolfgang Denk wd@denx.de Cc: Detlev Zundel dzu@denx.de Cc: Stefano Babic sbabic@denx.de
Applied to u-boot-imx, next branch.
Best regards, Stefano Babic

This moves SPL to common location so it can be reused by multiple boards. Also, this commit adjusts M28 SoM to avoid breakage due to the move.
Signed-off-by: Marek Vasut marek.vasut@gmail.com Cc: Wolfgang Denk wd@denx.de Cc: Detlev Zundel dzu@denx.de Cc: Stefano Babic sbabic@denx.de --- arch/arm/cpu/arm926ejs/mx28/Makefile | 9 ++ .../arm/cpu/arm926ejs/mx28/mx28_init.h | 0 arch/arm/cpu/arm926ejs/mx28/spl_boot.c | 87 ++++++++++++++++++++ .../arm/cpu/arm926ejs/mx28/spl_mem_init.c | 2 +- .../arm/cpu/arm926ejs/mx28/spl_power_init.c | 2 +- .../m28evk => arch/arm/cpu/arm926ejs/mx28}/start.S | 0 .../arm/cpu/arm926ejs/mx28}/u-boot-spl.lds | 2 +- arch/arm/include/asm/arch-mx28/sys_proto.h | 6 ++ board/denx/m28evk/Makefile | 11 +-- board/denx/m28evk/{mmc_boot.c => spl_boot.c} | 61 +------------- include/configs/m28evk.h | 4 +- 11 files changed, 113 insertions(+), 71 deletions(-) rename board/denx/m28evk/m28_init.h => arch/arm/cpu/arm926ejs/mx28/mx28_init.h (100%) create mode 100644 arch/arm/cpu/arm926ejs/mx28/spl_boot.c rename board/denx/m28evk/mem_init.c => arch/arm/cpu/arm926ejs/mx28/spl_mem_init.c (99%) rename board/denx/m28evk/power_init.c => arch/arm/cpu/arm926ejs/mx28/spl_power_init.c (99%) rename {board/denx/m28evk => arch/arm/cpu/arm926ejs/mx28}/start.S (100%) rename {board/denx/m28evk => arch/arm/cpu/arm926ejs/mx28}/u-boot-spl.lds (97%) rename board/denx/m28evk/{mmc_boot.c => spl_boot.c} (87%)
diff --git a/arch/arm/cpu/arm926ejs/mx28/Makefile b/arch/arm/cpu/arm926ejs/mx28/Makefile index 7845310..372de8a 100644 --- a/arch/arm/cpu/arm926ejs/mx28/Makefile +++ b/arch/arm/cpu/arm926ejs/mx28/Makefile @@ -27,6 +27,10 @@ LIB = $(obj)lib$(SOC).o
COBJS = clock.o mx28.o iomux.o timer.o
+ifdef CONFIG_SPL_BUILD +COBJS += memsize.o spl_boot.o spl_mem_init.o spl_power_init.o +endif + SRCS := $(START:.o=.S) $(COBJS:.o=.c) OBJS := $(addprefix $(obj),$(COBJS)) START := $(addprefix $(obj),$(START)) @@ -36,6 +40,11 @@ all: $(obj).depend $(LIB) $(LIB): $(OBJS) $(call cmd_link_o_target, $(OBJS))
+ifdef CONFIG_SPL_BUILD +memsize.c: + ln -sf $(TOPDIR)/common/memsize.c $@ +endif + #########################################################################
# defines $(obj).depend target diff --git a/board/denx/m28evk/m28_init.h b/arch/arm/cpu/arm926ejs/mx28/mx28_init.h similarity index 100% rename from board/denx/m28evk/m28_init.h rename to arch/arm/cpu/arm926ejs/mx28/mx28_init.h diff --git a/arch/arm/cpu/arm926ejs/mx28/spl_boot.c b/arch/arm/cpu/arm926ejs/mx28/spl_boot.c new file mode 100644 index 0000000..3cd4c24 --- /dev/null +++ b/arch/arm/cpu/arm926ejs/mx28/spl_boot.c @@ -0,0 +1,87 @@ +/* + * Freescale i.MX28 Boot setup + * + * Copyright (C) 2011 Marek Vasut marek.vasut@gmail.com + * on behalf of DENX Software Engineering GmbH + * + * See file CREDITS for list of people who contributed to this + * project. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License as + * published by the Free Software Foundation; either version 2 of + * the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, + * MA 02111-1307 USA + */ + +#include <common.h> +#include <config.h> +#include <asm/io.h> +#include <asm/arch/iomux-mx28.h> +#include <asm/arch/imx-regs.h> + +#include "mx28_init.h" + +/* + * This delay function is intended to be used only in early stage of boot, where + * clock are not set up yet. The timer used here is reset on every boot and + * takes a few seconds to roll. The boot doesn't take that long, so to keep the + * code simple, it doesn't take rolling into consideration. + */ +#define HW_DIGCTRL_MICROSECONDS 0x8001c0c0 +void early_delay(int delay) +{ + uint32_t st = readl(HW_DIGCTRL_MICROSECONDS); + st += delay; + while (st > readl(HW_DIGCTRL_MICROSECONDS)) + ; +} + +void mx28_common_spl_init(const iomux_cfg_t *iomux_setup, + const unsigned int iomux_size) +{ + mxs_iomux_setup_multiple_pads(iomux_setup, iomux_size); + mx28_power_init(); + mx28_mem_init(); + mx28_power_wait_pswitch(); +} + +/* Support aparatus */ +inline void board_init_f(unsigned long bootflag) +{ + for (;;) + ; +} + +inline void board_init_r(gd_t *id, ulong dest_addr) +{ + for (;;) + ; +} + +inline int printf(const char *fmt, ...) +{ + return 0; +} + +inline void __coloured_LED_init(void) {} +inline void __red_LED_on(void) {} +void coloured_LED_init(void) + __attribute__((weak, alias("__coloured_LED_init"))); +void red_LED_on(void) + __attribute__((weak, alias("__red_LED_on"))); +void hang(void) __attribute__ ((noreturn)); +void hang(void) +{ + for (;;) + ; +} diff --git a/board/denx/m28evk/mem_init.c b/arch/arm/cpu/arm926ejs/mx28/spl_mem_init.c similarity index 99% rename from board/denx/m28evk/mem_init.c rename to arch/arm/cpu/arm926ejs/mx28/spl_mem_init.c index 17d1f9b..00493b8 100644 --- a/board/denx/m28evk/mem_init.c +++ b/arch/arm/cpu/arm926ejs/mx28/spl_mem_init.c @@ -29,7 +29,7 @@ #include <asm/arch/iomux-mx28.h> #include <asm/arch/imx-regs.h>
-#include "m28_init.h" +#include "mx28_init.h"
uint32_t dram_vals[] = { 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, diff --git a/board/denx/m28evk/power_init.c b/arch/arm/cpu/arm926ejs/mx28/spl_power_init.c similarity index 99% rename from board/denx/m28evk/power_init.c rename to arch/arm/cpu/arm926ejs/mx28/spl_power_init.c index 27322b4..a4dc2a3 100644 --- a/board/denx/m28evk/power_init.c +++ b/arch/arm/cpu/arm926ejs/mx28/spl_power_init.c @@ -28,7 +28,7 @@ #include <asm/io.h> #include <asm/arch/imx-regs.h>
-#include "m28_init.h" +#include "mx28_init.h"
void mx28_power_clock2xtal(void) { diff --git a/board/denx/m28evk/start.S b/arch/arm/cpu/arm926ejs/mx28/start.S similarity index 100% rename from board/denx/m28evk/start.S rename to arch/arm/cpu/arm926ejs/mx28/start.S diff --git a/board/denx/m28evk/u-boot-spl.lds b/arch/arm/cpu/arm926ejs/mx28/u-boot-spl.lds similarity index 97% rename from board/denx/m28evk/u-boot-spl.lds rename to arch/arm/cpu/arm926ejs/mx28/u-boot-spl.lds index e296a92..893320f 100644 --- a/board/denx/m28evk/u-boot-spl.lds +++ b/arch/arm/cpu/arm926ejs/mx28/u-boot-spl.lds @@ -37,7 +37,7 @@ SECTIONS . = ALIGN(4); .text : { - board/denx/m28evk/start.o (.text) + arch/arm/cpu/arm926ejs/mx28/start.o (.text) *(.text) }
diff --git a/arch/arm/include/asm/arch-mx28/sys_proto.h b/arch/arm/include/asm/arch-mx28/sys_proto.h index a226ea4..be1f7db 100644 --- a/arch/arm/include/asm/arch-mx28/sys_proto.h +++ b/arch/arm/include/asm/arch-mx28/sys_proto.h @@ -29,4 +29,10 @@ int mx28_wait_mask_clr(struct mx28_register *reg, uint32_t mask, int timeout);
int mxsmmc_initialize(bd_t *bis, int id, int (*wp)(int));
+#ifdef CONFIG_SPL_BUILD +#include <asm/arch/iomux-mx28.h> +void mx28_common_spl_init(const iomux_cfg_t *iomux_setup, + const unsigned int iomux_size); +#endif + #endif /* __MX28_H__ */ diff --git a/board/denx/m28evk/Makefile b/board/denx/m28evk/Makefile index b6f002f..aa16c7d 100644 --- a/board/denx/m28evk/Makefile +++ b/board/denx/m28evk/Makefile @@ -27,10 +27,8 @@ LIB = $(obj)lib$(BOARD).o
ifndef CONFIG_SPL_BUILD COBJS := m28evk.o -endif - -ifdef CONFIG_SPL_BUILD -COBJS := mem_init.o mmc_boot.o power_init.o memsize.o +else +COBJS := spl_boot.o endif
SRCS := $(COBJS:.o=.c) @@ -41,11 +39,6 @@ $(LIB): $(obj).depend $(OBJS)
all: $(ALL)
-ifdef CONFIG_SPL_BUILD -memsize.c: - ln -sf $(TOPDIR)/common/memsize.c $@ -endif - #########################################################################
# defines $(obj).depend target diff --git a/board/denx/m28evk/mmc_boot.c b/board/denx/m28evk/spl_boot.c similarity index 87% rename from board/denx/m28evk/mmc_boot.c rename to board/denx/m28evk/spl_boot.c index 86d3ab5..86d7d87 100644 --- a/board/denx/m28evk/mmc_boot.c +++ b/board/denx/m28evk/spl_boot.c @@ -1,5 +1,5 @@ /* - * Freescale i.MX28 Boot setup + * DENX M28 Boot setup * * Copyright (C) 2011 Marek Vasut marek.vasut@gmail.com * on behalf of DENX Software Engineering GmbH @@ -27,23 +27,8 @@ #include <config.h> #include <asm/io.h> #include <asm/arch/iomux-mx28.h> - -#include "m28_init.h" - -/* - * This delay function is intended to be used only in early stage of boot, where - * clock are not set up yet. The timer used here is reset on every boot and - * takes a few seconds to roll. The boot doesn't take that long, so to keep the - * code simple, it doesn't take rolling into consideration. - */ -#define HW_DIGCTRL_MICROSECONDS 0x8001c0c0 -void early_delay(int delay) -{ - uint32_t st = readl(HW_DIGCTRL_MICROSECONDS); - st += delay; - while (st > readl(HW_DIGCTRL_MICROSECONDS)) - ; -} +#include <asm/arch/imx-regs.h> +#include <asm/arch/sys_proto.h>
#define MUX_CONFIG_LED (MXS_PAD_3V3 | MXS_PAD_4MA | MXS_PAD_NOPULL) #define MUX_CONFIG_LCD (MXS_PAD_3V3 | MXS_PAD_4MA) @@ -109,10 +94,6 @@ const iomux_cfg_t iomux_setup[] = { MX28_PAD_GPMI_RDY2__CAN0_TX, MX28_PAD_GPMI_RDY3__CAN0_RX,
- /* I2C */ - MX28_PAD_I2C0_SCL__I2C0_SCL, - MX28_PAD_I2C0_SDA__I2C0_SDA, - /* TSC2007 */ MX28_PAD_SAIF0_MCLK__GPIO_3_20 | MUX_CONFIG_TSC,
@@ -235,39 +216,5 @@ const iomux_cfg_t iomux_setup[] = {
void board_init_ll(void) { - mxs_iomux_setup_multiple_pads(iomux_setup, ARRAY_SIZE(iomux_setup)); - mx28_power_init(); - mx28_mem_init(); - mx28_power_wait_pswitch(); -} - -/* Support aparatus */ -inline void board_init_f(unsigned long bootflag) -{ - for (;;) - ; -} - -inline void board_init_r(gd_t *id, ulong dest_addr) -{ - for (;;) - ; -} - -inline int printf(const char *fmt, ...) -{ - return 0; -} - -inline void __coloured_LED_init(void) {} -inline void __red_LED_on(void) {} -void coloured_LED_init(void) - __attribute__((weak, alias("__coloured_LED_init"))); -void red_LED_on(void) - __attribute__((weak, alias("__red_LED_on"))); -void hang(void) __attribute__ ((noreturn)); -void hang(void) -{ - for (;;) - ; + mx28_common_spl_init(iomux_setup, ARRAY_SIZE(iomux_setup)); } diff --git a/include/configs/m28evk.h b/include/configs/m28evk.h index d4bd207..cdf7636 100644 --- a/include/configs/m28evk.h +++ b/include/configs/m28evk.h @@ -48,8 +48,8 @@ */ #define CONFIG_SPL #define CONFIG_SPL_NO_CPU_SUPPORT_CODE -#define CONFIG_SPL_START_S_PATH "board/denx/m28evk" -#define CONFIG_SPL_LDSCRIPT "board/denx/m28evk/u-boot-spl.lds" +#define CONFIG_SPL_START_S_PATH "arch/arm/cpu/arm926ejs/mx28" +#define CONFIG_SPL_LDSCRIPT "arch/arm/cpu/arm926ejs/mx28/u-boot-spl.lds"
/* * U-Boot Commands

On 02/12/2011 14:47, Marek Vasut wrote:
This moves SPL to common location so it can be reused by multiple boards. Also, this commit adjusts M28 SoM to avoid breakage due to the move.
Signed-off-by: Marek Vasut marek.vasut@gmail.com Cc: Wolfgang Denk wd@denx.de Cc: Detlev Zundel dzu@denx.de Cc: Stefano Babic sbabic@denx.de
Applied to u-boot-imx, next branch.
Best regards, Stefano Babic

Hi Marek,
On Fri, Dec 2, 2011 at 11:47 AM, Marek Vasut marek.vasut@gmail.com wrote:
rename board/denx/m28evk/mem_init.c => arch/arm/cpu/arm926ejs/mx28/spl_mem_init.c (99%)
The RAM timings are specific to the board and RAM model (DDR2 or mDDR), memory clock, etc, so I don´t think we can use the same RAM settings for all MX28 based boards because not all of them will use the same RAM memory type.
The dram_vals array should be board specific.
Regards,
Fabio Estevam

Hi Marek,
On Fri, Dec 2, 2011 at 11:47 AM, Marek Vasut marek.vasut@gmail.com wrote:
rename board/denx/m28evk/mem_init.c => arch/arm/cpu/arm926ejs/mx28/spl_mem_init.c (99%)
The RAM timings are specific to the board and RAM model (DDR2 or mDDR), memory clock, etc, so I don´t think we can use the same RAM settings for all MX28 based boards because not all of them will use the same RAM memory type.
The dram_vals array should be board specific.
Patch is welcome :)
M

On 02/12/2011 14:47, Marek Vasut wrote:
Signed-off-by: Marek Vasut marek.vasut@gmail.com Cc: Stefano Babic sbabic@denx.de Cc: Wolfgang Denk wd@denx.de
Applied to u-boot-imx, next branch.
Best regards, Stefano Babic

On 02/12/2011 14:47, Marek Vasut wrote:
Signed-off-by: Marek Vasut marek.vasut@gmail.com Cc: Stefano Babic sbabic@denx.de Cc: Wolfgang Denk wd@denx.de
Applied to u-boot-imx, next branch.
Best regards, Stefano Babic
Thank you!
M
participants (3)
-
Fabio Estevam
-
Marek Vasut
-
Stefano Babic