Skip to contentSkip to conversation

omap-common: Common boot code OMAP3 support and cleanup

RFC PATCH New Paul Kocialkowski 4 participants 30 messages Jun 3, 2015 – Jun 12, 2015

Subsystems (2)
lore
Share & tools
lore
#0 lore raw

RFC PATCH 1/1 omap-common: Common boot code OMAP3 support and cleanup

This patch introduces some changes to the omap common boot code, to allow the omap3 to benefit from it, but also to clean it up drastically.
It was tested on an OMAP3 device booting from MMC.

Since this also affects OMAP4, OMAP5 and AM33xx devices, I'm looking forward to having this tested on boards using those platforms. Since I do not own any such device, I cannot do the testing on them myself.

While writing this patch, I came to learn about the boot device descriptor, as mentioned in the "Device Initialization by ROM Code" part of the OMAP36xx TRM. The booting parameter structure (for which the address is given in r0 by the bootrom when starting the U-Boot SPL) holds the address of that device descriptor, but I could not find any description of what its contents are.

However, it was apparently being used on != OMAP3 devices, so I just adapted the same logic blindly and used the traditional switch/case for omap3. That said, the OMAP3 also has this descriptor, so I tried to read it when booting the U-Boot SPL from MMC. I got the following:

boot device descriptor at 0x4020fbc0
boot device descriptor device data at 0x4020f524
boot mode ends up being 4

Now I would be interested in precise documentation about the fields of that descriptor (and that device data too) where the mmc boot mode is supposed to be stored. The value on omap3 is not usable as-is, so it's either a wrong offset or the mmc boot mode is not part of the structure on omap3.

If there is no reason to use a static switch/case for omap3, I'd much rather do away with it. If not, I'd like to have certainty about that fact.

In order to list the various values held there, here is a diff that I applied. I would be happy to get feedback from other omap platforms. It goes on top of this patch:

arch/arm/cpu/armv7/omap-common/boot-common.c +8 -3
index 3bd3f49..0ca3646 100644
@@ -67,6 +67,7 @@ void save_omap_boot_params(void)
 
 	if ((boot_device >= MMC_BOOT_DEVICES_START) &&
 	    (boot_device <= MMC_BOOT_DEVICES_END)) {
+/*
 #ifdef CONFIG_OMAP34XX
 		switch (boot_device) {
 		case BOOT_DEVICE_MMC1:
@@ -77,18 +78,21 @@ void save_omap_boot_params(void)
 			break;
 		}
 #else
+*/
 		boot_params = omap_boot_params->boot_device_descriptor;
+printf("boot device descriptor at 0x%x\n", boot_params);
 		if ((boot_params < NON_SECURE_SRAM_START) ||
 		    (boot_params > NON_SECURE_SRAM_END))
 			return;
 
 		boot_params = *((u32 *)(boot_params + DEVICE_DATA_OFFSET));
+printf("boot device descriptor device data at 0x%x\n", boot_params);
 		if ((boot_params < NON_SECURE_SRAM_START) ||
 		    (boot_params > NON_SECURE_SRAM_END))
 			return;
 
 		boot_mode = *((u32 *)(boot_params + BOOT_MODE_OFFSET));
-
+printf("boot mode ends up being %d\n", boot_mode);
 		if (boot_mode != MMCSD_MODE_FS &&
 		    boot_mode != MMCSD_MODE_RAW)
 #ifdef CONFIG_SUPPORT_EMMC_BOOT
@@ -96,7 +100,7 @@ void save_omap_boot_params(void)
 #else
 			boot_mode = MMCSD_MODE_UNDEFINED;
 #endif
-#endif
+//#endif
 	}
 
 	gd->arch.omap_boot_mode = boot_mode;
@@ -124,11 +128,12 @@ void spl_board_init(void)
 	 * We cannot delay the saving further than this,
 	 * to prevent overwrites.
 	 */
-	save_omap_boot_params();
 
 	/* Prepare console output */
 	preloader_console_init();
 
+	save_omap_boot_params();
+
 #if defined(CONFIG_SPL_NAND_SUPPORT) || defined(CONFIG_SPL_ONENAND_SUPPORT)
 	gpmc_init();
 #endif
#1 lore raw

PATCH 1/1 omap-common: Common boot code OMAP3 support and cleanup

This introduces OMAP3 support for the common omap boot code, as well as a major cleanup of the common omap boot code.

First, the omap_boot_parameters structure becomes platform-specific, since its definition differs a bit across omap platforms. The offsets are removed as well since it is U-Boot's coding style to use structures for mapping such kind of data (in the sense that it is similar to registers). It is correct to assume that romcode structure encoding is the same as U-Boot, given the description of these structures in the TRMs.

The original address provided by the bootrom is passed to the U-Boot binary instead of a duplicate of the structure stored in global data. This allows to have only the relevant (boot device and mode) information stored in global data. It is also expected that the address where the bootrom stores that information is not overridden by the U-Boot SPL or U-Boot.

The save_omap_boot_params is expected to handle all special cases where the data provided by the bootrom cannot be used as-is, so that spl_boot_device and spl_boot_mode only return the data from global data.

---
 arch/arm/cpu/armv7/omap-common/Makefile        |   2 -
 arch/arm/cpu/armv7/omap-common/boot-common.c   | 118 ++++++++++++++-----------
 arch/arm/cpu/armv7/omap-common/lowlevel_init.S |   2 -
 arch/arm/cpu/armv7/omap3/board.c               |  56 ------------
 arch/arm/cpu/armv7/omap3/lowlevel_init.S       |  10 ---
 arch/arm/include/asm/arch-am33xx/omap.h        |  11 +++
 arch/arm/include/asm/arch-omap3/omap.h         |  13 +++
 arch/arm/include/asm/arch-omap3/sys_proto.h    |   2 +
 arch/arm/include/asm/arch-omap4/omap.h         |  11 +++
 arch/arm/include/asm/arch-omap5/omap.h         |  12 +++
 arch/arm/include/asm/global_data.h             |  10 +--
 arch/arm/include/asm/omap_boot.h               |  34 -------
 arch/arm/include/asm/omap_common.h             |   9 ++
 arch/arm/include/asm/ti-common/sys_proto.h     |   2 +-
 14 files changed, 130 insertions(+), 162 deletions(-)
 delete mode 100644 arch/arm/include/asm/omap_boot.h
arch/arm/cpu/armv7/omap-common/Makefile +0 -2
index f3725b2..464a5d1 100644
@@ -26,9 +26,7 @@ ifeq ($(CONFIG_SYS_DCACHE_OFF),)
 obj-y	+= omap-cache.o
 endif
 
-ifeq ($(CONFIG_OMAP34XX),)
 obj-y	+= boot-common.o
-endif
 obj-y	+= lowlevel_init.o
 
 obj-y	+= mem-common.o
arch/arm/cpu/armv7/omap-common/boot-common.c +67 -51

168 lines not on this page · raw message

arch/arm/cpu/armv7/omap-common/lowlevel_init.S +0 -2
index 746df92..80619b0 100644
@@ -16,13 +16,11 @@
 #include <asm/arch/spl.h>
 #include <linux/linkage.h>
 
-#ifndef CONFIG_OMAP34XX
 ENTRY(save_boot_params)
 	ldr	r1, =OMAP_SRAM_SCRATCH_BOOT_PARAMS
 	str	r0, [r1]
 	b	save_boot_params_ret
 ENDPROC(save_boot_params)
-#endif
 
 ENTRY(omap_smc1)
 	PUSH	{r4-r12, lr}	@ save registers - ROM code may pollute
arch/arm/cpu/armv7/omap3/board.c +0 -56

62 lines not on this page · raw message

arch/arm/cpu/armv7/omap3/lowlevel_init.S +0 -10
index 2497613..1e58772 100644
@@ -16,16 +16,6 @@
 #include <asm/arch/clocks_omap3.h>
 #include <linux/linkage.h>
 
-#ifdef CONFIG_SPL_BUILD
-ENTRY(save_boot_params)
-	ldr	r4, =omap3_boot_device
-	ldr	r5, [r0, #0x4]
-	and	r5, r5, #0xff
-	str	r5, [r4]
-	b	save_boot_params_ret
-ENDPROC(save_boot_params)
-#endif
-
 /*
  * Funtion for making PPA HAL API calls in secure devices
  * Input:
arch/arm/include/asm/arch-am33xx/omap.h +11 -0
index e5c0b0d..47962da 100644
@@ -33,4 +33,15 @@
 #define AM4372_BOARD_VERSION_END	SRAM_SCRATCH_SPACE_ADDR + 0x14
 #define QSPI_BASE              0x47900000
 #endif
+
+/* Boot parameters */
+#ifndef __ASSEMBLY__
+struct omap_boot_parameters {
+	unsigned int reserved;
+	unsigned int boot_device_descriptor;
+	unsigned char boot_device;
+	unsigned char reset_reason;
+};
+#endif
+
 #endif
arch/arm/include/asm/arch-omap3/omap.h +13 -0
index 194b93b..537d13b 100644
@@ -142,6 +142,7 @@ struct gpio {
 
 #define NON_SECURE_SRAM_START		0x40208000 /* Works for GP & EMU */
 #define NON_SECURE_SRAM_END		0x40210000
+#define SRAM_SCRATCH_SPACE_ADDR		0x4020E000
 
 #define LOW_LEVEL_SRAM_STACK		0x4020FFFC
 
@@ -245,4 +246,16 @@ struct gpio {
 /* ABB tranxdone mask */
 #define OMAP_ABB_MPU_TXDONE_MASK	(0x1 << 26)
 
+/* Boot parameters */
+#ifndef __ASSEMBLY__
+struct omap_boot_parameters {
+	unsigned int boot_message;
+	unsigned char boot_device;
+	unsigned char reserved;
+	unsigned char reset_reason;
+	unsigned char ch_flags;
+	unsigned int boot_device_descriptor;
+};
+#endif
+
 #endif
arch/arm/include/asm/arch-omap3/sys_proto.h +2 -0
index 3e45ce1..cfa4d58 100644
@@ -75,4 +75,6 @@ void get_dieid(u32 *id);
 void do_omap3_emu_romcode_call(u32 service_id, u32 parameters);
 void omap3_set_aux_cr_secure(u32 acr);
 u32 warm_reset(void);
+
+void save_omap_boot_params(void);
 #endif
arch/arm/include/asm/arch-omap4/omap.h +11 -0
index d43dc26..12b1a09 100644
@@ -124,4 +124,15 @@ struct s32ktimer {
 /* ABB tranxdone mask */
 #define OMAP_ABB_MPU_TXDONE_MASK	(0x1 << 7)
 
+/* Boot parameters */
+#ifndef __ASSEMBLY__
+struct omap_boot_parameters {
+	unsigned int boot_message;
+	unsigned int boot_device_descriptor;
+	unsigned char boot_device;
+	unsigned char reset_reason;
+	unsigned char ch_flags;
+};
+#endif
+
 #endif
arch/arm/include/asm/arch-omap5/omap.h +12 -0
index e844bfb..4ba87b9 100644
@@ -260,4 +260,16 @@ struct io_delay {
 	u32 dly;
 };
 #endif /* __ASSEMBLY__ */
+
+/* Boot parameters */
+#ifndef __ASSEMBLY__
+struct omap_boot_parameters {
+	unsigned int boot_message;
+	unsigned int boot_device_descriptor;
+	unsigned char boot_device;
+	unsigned char reset_reason;
+	unsigned char ch_flags;
+};
+#endif
+
 #endif
arch/arm/include/asm/global_data.h +4 -6
index bb24f33..4e3ea55 100644
@@ -8,10 +8,6 @@
 #ifndef	__ASM_GBL_DATA_H
 #define __ASM_GBL_DATA_H
 
-#ifdef CONFIG_OMAP
-#include <asm/omap_boot.h>
-#endif
-
 /* Architecture-specific global data */
 struct arch_global_data {
 #if defined(CONFIG_FSL_ESDHC)
@@ -45,8 +41,10 @@ struct arch_global_data {
 	unsigned long tlb_size;
 #endif
 
-#ifdef CONFIG_OMAP
-	struct omap_boot_parameters omap_boot_params;
+#ifdef CONFIG_OMAP_COMMON
+	u32 omap_boot_device;
+	u32 omap_boot_mode;
+	u8 omap_ch_flags;
 #endif
 #ifdef CONFIG_FSL_LSCH3
 	unsigned long mem2_clk;
arch/arm/include/asm/omap_boot.h deleted +0 -34
deleted file mode 100644
index f77f9d6..0000000
@@ -1,34 +0,0 @@
-/*
- * (C) Copyright 2013
- * Texas Instruments, <www.ti.com>
- *
- * Sricharan R <[email protected]>
- *
- * SPDX-License-Identifier:	GPL-2.0+
- */
-
-/* ROM code defines */
-/* Boot device */
-#define BOOT_DEVICE_MASK	0xFF
-#define BOOT_DEVICE_OFFSET	0x8
-#define DEV_DESC_PTR_OFFSET	0x4
-#define DEV_DATA_PTR_OFFSET	0x18
-#define BOOT_MODE_OFFSET	0x8
-#define RESET_REASON_OFFSET	0x9
-#define CH_FLAGS_OFFSET		0xA
-
-#define CH_FLAGS_CHSETTINGS	(0x1 << 0)
-#define CH_FLAGS_CHRAM		(0x1 << 1)
-#define CH_FLAGS_CHFLASH	(0x1 << 2)
-#define CH_FLAGS_CHMMCSD	(0x1 << 3)
-
-#ifndef __ASSEMBLY__
-struct omap_boot_parameters {
-	char *boot_message;
-	unsigned int mem_boot_descriptor;
-	unsigned char omap_bootdevice;
-	unsigned char reset_reason;
-	unsigned char ch_flags;
-	unsigned long omap_bootmode;
-};
-#endif
arch/arm/include/asm/omap_common.h +9 -0
index b0296fb..e8c502c 100644
@@ -673,4 +673,13 @@ static inline u8 is_dra7xx(void)
 #define OMAP_SRAM_SCRATCH_BOOT_PARAMS	(SRAM_SCRATCH_SPACE_ADDR + 0x24)
 #define OMAP5_SRAM_SCRATCH_SPACE_END	(SRAM_SCRATCH_SPACE_ADDR + 0x28)
 
+/* Boot parameters */
+#define DEVICE_DATA_OFFSET	0x18
+#define BOOT_MODE_OFFSET	0x8
+
+#define CH_FLAGS_CHSETTINGS	(1 << 0)
+#define CH_FLAGS_CHRAM		(1 << 1)
+#define CH_FLAGS_CHFLASH	(1 << 2)
+#define CH_FLAGS_CHMMCSD	(1 << 3)
+
 #endif /* _OMAP_COMMON_H_ */
arch/arm/include/asm/ti-common/sys_proto.h +1 -1
index d3ab75f..2bdb71c 100644
@@ -36,7 +36,7 @@ static inline u8 uboot_loaded_by_spl(void)
 	 * variable by both SPL and u-boot.Check out for CHSETTINGS, which is a
 	 * mandatory section if CH is present.
 	 */
-	if ((gd->arch.omap_boot_params.ch_flags) & (CH_FLAGS_CHSETTINGS))
+	if (gd->arch.omap_ch_flags & CH_FLAGS_CHSETTINGS)
 		return 0;
 	else
 		return running_from_sdram();
Signature · 1 line
1.9.1
#2 lore raw

v2 cover omap-common: Common boot code OMAP3 support and SYS_BOOT-based fallback boot device

The first part of this changeset introduces OMAP3 support for the common omap boot code, as well as a major cleanup of the common omap boot code.

First, the omap_boot_parameters structure becomes platform-specific, since its definition differs a bit across omap platforms. The offsets are removed as well since it is U-Boot's coding style to use structures for mapping such kind of data (in the sense that it is similar to registers). It is correct to assume that romcode structure encoding is the same as U-Boot, given the description of these structures in the TRMs.

The original address provided by the bootrom is passed to the U-Boot binary instead of a duplicate of the structure stored in global data. This allows to have only the relevant (boot device and mode) information stored in global data. It is also expected that the address where the bootrom stores that information is not overridden by the U-Boot SPL or U-Boot.

The save_omap_boot_params is expected to handle all special cases where the data provided by the bootrom cannot be used as-is, so that spl_boot_device and spl_boot_mode only return the data from global data.

The second part of this changeset adds support for reading the SYS_BOOT pins on omap devices (no am33xx support yet) in order to fallback to the memory-preferred boot device described by the pins when peripheral booting is used. In particular, this allows loading the U-Boot SPL through either UART or USB and still having it to load U-Boot from memory when UART or USB are not valid boot devices.

This whole changeset was build-tested on all omap boards (omap3, omap4, omap5, am33xx) and tested at run-time on a single omap3 device only. I would be very glad to see board maintainers give a go at the changeset before it gets merged, especially on devices like the Nokia RX-51 (N900) where some specific adaptation was needed.

#3 lore raw

PATCH v2 1/8 omap-common: Common boot code OMAP3 support and cleanup

This introduces OMAP3 support for the common omap boot code, as well as a major cleanup of the common omap boot code.

First, the omap_boot_parameters structure becomes platform-specific, since its definition differs a bit across omap platforms. The offsets are removed as well since it is U-Boot's coding style to use structures for mapping such kind of data (in the sense that it is similar to registers). It is correct to assume that romcode structure encoding is the same as U-Boot, given the description of these structures in the TRMs.

The original address provided by the bootrom is passed to the U-Boot binary instead of a duplicate of the structure stored in global data. This allows to have only the relevant (boot device and mode) information stored in global data. It is also expected that the address where the bootrom stores that information is not overridden by the U-Boot SPL or U-Boot.

The save_omap_boot_params is expected to handle all special cases where the data provided by the bootrom cannot be used as-is, so that spl_boot_device and spl_boot_mode only return the data from global data.

---
 arch/arm/cpu/armv7/omap-common/Makefile        |   2 -
 arch/arm/cpu/armv7/omap-common/boot-common.c   | 124 ++++++++++++++-----------
 arch/arm/cpu/armv7/omap-common/lowlevel_init.S |   2 -
 arch/arm/cpu/armv7/omap3/board.c               |  59 ------------
 arch/arm/cpu/armv7/omap3/lowlevel_init.S       |  10 --
 arch/arm/include/asm/arch-am33xx/omap.h        |  11 +++
 arch/arm/include/asm/arch-am33xx/sys_proto.h   |   1 -
 arch/arm/include/asm/arch-omap3/omap.h         |  13 +++
 arch/arm/include/asm/arch-omap3/sys_proto.h    |   2 +
 arch/arm/include/asm/arch-omap4/omap.h         |  11 +++
 arch/arm/include/asm/arch-omap5/omap.h         |  12 +++
 arch/arm/include/asm/global_data.h             |  10 +-
 arch/arm/include/asm/omap_boot.h               |  34 -------
 arch/arm/include/asm/omap_common.h             |   9 ++
 arch/arm/include/asm/ti-common/sys_proto.h     |   2 +-
 board/compulab/cm_t54/cm_t54.c                 |   2 +-
 board/nokia/rx51/lowlevel_init.S               |  12 ---
 include/configs/ti_omap4_common.h              |   1 +
 18 files changed, 137 insertions(+), 180 deletions(-)
 delete mode 100644 arch/arm/include/asm/omap_boot.h
arch/arm/cpu/armv7/omap-common/Makefile +0 -2
index f3725b2..464a5d1 100644
@@ -26,9 +26,7 @@ ifeq ($(CONFIG_SYS_DCACHE_OFF),)
 obj-y	+= omap-cache.o
 endif
 
-ifeq ($(CONFIG_OMAP34XX),)
 obj-y	+= boot-common.o
-endif
 obj-y	+= lowlevel_init.o
 
 obj-y	+= mem-common.o
arch/arm/cpu/armv7/omap-common/boot-common.c +72 -52

175 lines not on this page · raw message

arch/arm/cpu/armv7/omap-common/lowlevel_init.S +0 -2
index 746df92..80619b0 100644
@@ -16,13 +16,11 @@
 #include <asm/arch/spl.h>
 #include <linux/linkage.h>
 
-#ifndef CONFIG_OMAP34XX
 ENTRY(save_boot_params)
 	ldr	r1, =OMAP_SRAM_SCRATCH_BOOT_PARAMS
 	str	r0, [r1]
 	b	save_boot_params_ret
 ENDPROC(save_boot_params)
-#endif
 
 ENTRY(omap_smc1)
 	PUSH	{r4-r12, lr}	@ save registers - ROM code may pollute
arch/arm/cpu/armv7/omap3/board.c +0 -59

77 lines not on this page · raw message

arch/arm/cpu/armv7/omap3/lowlevel_init.S +0 -10
index 2497613..1e58772 100644
@@ -16,16 +16,6 @@
 #include <asm/arch/clocks_omap3.h>
 #include <linux/linkage.h>
 
-#ifdef CONFIG_SPL_BUILD
-ENTRY(save_boot_params)
-	ldr	r4, =omap3_boot_device
-	ldr	r5, [r0, #0x4]
-	and	r5, r5, #0xff
-	str	r5, [r4]
-	b	save_boot_params_ret
-ENDPROC(save_boot_params)
-#endif
-
 /*
  * Funtion for making PPA HAL API calls in secure devices
  * Input:
arch/arm/include/asm/arch-am33xx/omap.h +11 -0
index e5c0b0d..47962da 100644
@@ -33,4 +33,15 @@
 #define AM4372_BOARD_VERSION_END	SRAM_SCRATCH_SPACE_ADDR + 0x14
 #define QSPI_BASE              0x47900000
 #endif
+
+/* Boot parameters */
+#ifndef __ASSEMBLY__
+struct omap_boot_parameters {
+	unsigned int reserved;
+	unsigned int boot_device_descriptor;
+	unsigned char boot_device;
+	unsigned char reset_reason;
+};
+#endif
+
 #endif
arch/arm/include/asm/arch-am33xx/sys_proto.h +0 -1
index 7eacf27..91b614a 100644
@@ -11,7 +11,6 @@
 #ifndef _SYS_PROTO_H_
 #define _SYS_PROTO_H_
 #include <linux/mtd/omap_gpmc.h>
-#include <asm/ti-common/sys_proto.h>
 #include <asm/arch/cpu.h>
 
 u32 get_cpu_rev(void);
arch/arm/include/asm/arch-omap3/omap.h +13 -0
index 194b93b..537d13b 100644
@@ -142,6 +142,7 @@ struct gpio {
 
 #define NON_SECURE_SRAM_START		0x40208000 /* Works for GP & EMU */
 #define NON_SECURE_SRAM_END		0x40210000
+#define SRAM_SCRATCH_SPACE_ADDR		0x4020E000
 
 #define LOW_LEVEL_SRAM_STACK		0x4020FFFC
 
@@ -245,4 +246,16 @@ struct gpio {
 /* ABB tranxdone mask */
 #define OMAP_ABB_MPU_TXDONE_MASK	(0x1 << 26)
 
+/* Boot parameters */
+#ifndef __ASSEMBLY__
+struct omap_boot_parameters {
+	unsigned int boot_message;
+	unsigned char boot_device;
+	unsigned char reserved;
+	unsigned char reset_reason;
+	unsigned char ch_flags;
+	unsigned int boot_device_descriptor;
+};
+#endif
+
 #endif
arch/arm/include/asm/arch-omap3/sys_proto.h +2 -0
index 3e45ce1..cfa4d58 100644
@@ -75,4 +75,6 @@ void get_dieid(u32 *id);
 void do_omap3_emu_romcode_call(u32 service_id, u32 parameters);
 void omap3_set_aux_cr_secure(u32 acr);
 u32 warm_reset(void);
+
+void save_omap_boot_params(void);
 #endif
arch/arm/include/asm/arch-omap4/omap.h +11 -0
index d43dc26..12b1a09 100644
@@ -124,4 +124,15 @@ struct s32ktimer {
 /* ABB tranxdone mask */
 #define OMAP_ABB_MPU_TXDONE_MASK	(0x1 << 7)
 
+/* Boot parameters */
+#ifndef __ASSEMBLY__
+struct omap_boot_parameters {
+	unsigned int boot_message;
+	unsigned int boot_device_descriptor;
+	unsigned char boot_device;
+	unsigned char reset_reason;
+	unsigned char ch_flags;
+};
+#endif
+
 #endif
arch/arm/include/asm/arch-omap5/omap.h +12 -0
index e844bfb..4ba87b9 100644
@@ -260,4 +260,16 @@ struct io_delay {
 	u32 dly;
 };
 #endif /* __ASSEMBLY__ */
+
+/* Boot parameters */
+#ifndef __ASSEMBLY__
+struct omap_boot_parameters {
+	unsigned int boot_message;
+	unsigned int boot_device_descriptor;
+	unsigned char boot_device;
+	unsigned char reset_reason;
+	unsigned char ch_flags;
+};
+#endif
+
 #endif
arch/arm/include/asm/global_data.h +4 -6
index bb24f33..4e3ea55 100644
@@ -8,10 +8,6 @@
 #ifndef	__ASM_GBL_DATA_H
 #define __ASM_GBL_DATA_H
 
-#ifdef CONFIG_OMAP
-#include <asm/omap_boot.h>
-#endif
-
 /* Architecture-specific global data */
 struct arch_global_data {
 #if defined(CONFIG_FSL_ESDHC)
@@ -45,8 +41,10 @@ struct arch_global_data {
 	unsigned long tlb_size;
 #endif
 
-#ifdef CONFIG_OMAP
-	struct omap_boot_parameters omap_boot_params;
+#ifdef CONFIG_OMAP_COMMON
+	u32 omap_boot_device;
+	u32 omap_boot_mode;
+	u8 omap_ch_flags;
 #endif
 #ifdef CONFIG_FSL_LSCH3
 	unsigned long mem2_clk;
arch/arm/include/asm/omap_boot.h deleted +0 -34
deleted file mode 100644
index f77f9d6..0000000
@@ -1,34 +0,0 @@
-/*
- * (C) Copyright 2013
- * Texas Instruments, <www.ti.com>
- *
- * Sricharan R <[email protected]>
- *
- * SPDX-License-Identifier:	GPL-2.0+
- */
-
-/* ROM code defines */
-/* Boot device */
-#define BOOT_DEVICE_MASK	0xFF
-#define BOOT_DEVICE_OFFSET	0x8
-#define DEV_DESC_PTR_OFFSET	0x4
-#define DEV_DATA_PTR_OFFSET	0x18
-#define BOOT_MODE_OFFSET	0x8
-#define RESET_REASON_OFFSET	0x9
-#define CH_FLAGS_OFFSET		0xA
-
-#define CH_FLAGS_CHSETTINGS	(0x1 << 0)
-#define CH_FLAGS_CHRAM		(0x1 << 1)
-#define CH_FLAGS_CHFLASH	(0x1 << 2)
-#define CH_FLAGS_CHMMCSD	(0x1 << 3)
-
-#ifndef __ASSEMBLY__
-struct omap_boot_parameters {
-	char *boot_message;
-	unsigned int mem_boot_descriptor;
-	unsigned char omap_bootdevice;
-	unsigned char reset_reason;
-	unsigned char ch_flags;
-	unsigned long omap_bootmode;
-};
-#endif
arch/arm/include/asm/omap_common.h +9 -0
index b0296fb..e8c502c 100644
@@ -673,4 +673,13 @@ static inline u8 is_dra7xx(void)
 #define OMAP_SRAM_SCRATCH_BOOT_PARAMS	(SRAM_SCRATCH_SPACE_ADDR + 0x24)
 #define OMAP5_SRAM_SCRATCH_SPACE_END	(SRAM_SCRATCH_SPACE_ADDR + 0x28)
 
+/* Boot parameters */
+#define DEVICE_DATA_OFFSET	0x18
+#define BOOT_MODE_OFFSET	0x8
+
+#define CH_FLAGS_CHSETTINGS	(1 << 0)
+#define CH_FLAGS_CHRAM		(1 << 1)
+#define CH_FLAGS_CHFLASH	(1 << 2)
+#define CH_FLAGS_CHMMCSD	(1 << 3)
+
 #endif /* _OMAP_COMMON_H_ */
arch/arm/include/asm/ti-common/sys_proto.h +1 -1
index d3ab75f..2bdb71c 100644
@@ -36,7 +36,7 @@ static inline u8 uboot_loaded_by_spl(void)
 	 * variable by both SPL and u-boot.Check out for CHSETTINGS, which is a
 	 * mandatory section if CH is present.
 	 */
-	if ((gd->arch.omap_boot_params.ch_flags) & (CH_FLAGS_CHSETTINGS))
+	if (gd->arch.omap_ch_flags & CH_FLAGS_CHSETTINGS)
 		return 0;
 	else
 		return running_from_sdram();
board/compulab/cm_t54/cm_t54.c +1 -1
index fad0551..6d3b18a 100644
@@ -82,7 +82,7 @@ static int cm_t54_palmas_regulator_set(u8 vreg, u8 vval, u8 creg, u8 cval)
 #ifdef CONFIG_SYS_MMC_ENV_PART
 uint mmc_get_env_part(struct mmc *mmc)
 {
-	u32 bootmode = gd->arch.omap_boot_params.omap_bootmode;
+	u32 bootmode = gd->arch.omap_boot_mode;
 	uint bootpart = CONFIG_SYS_MMC_ENV_PART;
 
 	/*
board/nokia/rx51/lowlevel_init.S +0 -12
index 9d4ea1b..9048f31 100644
@@ -28,18 +28,6 @@ imagesize:		/* maximal size of image */
 ih_magic:		/* IH_MAGIC in big endian from include/image.h */
 	.word 0x56190527
 
-/*
- * Routine: save_boot_params (called after reset from start.S)
- * Description: Copy attached kernel to address KERNEL_ADDRESS
- *              Copy u-boot to address CONFIG_SYS_TEXT_BASE
- *              Return to copied u-boot address
- */
-
-.global save_boot_params
-save_boot_params:
-	/* Get return address */
-	ldr	lr, =save_boot_params_ret
-
 /* Copy valid attached kernel to address KERNEL_ADDRESS */
 
 copy_kernel_start:
include/configs/ti_omap4_common.h +1 -0
index 6c33804..bee8863 100644
@@ -177,6 +177,7 @@
 /* No need for i2c in SPL mode as we will use SRI2C for PMIC access on OMAP4 */
 #undef CONFIG_SYS_I2C
 #undef CONFIG_SYS_I2C_OMAP24XX
+#undef CONFIG_SPL_I2C_SUPPORT
 #endif
 
 #endif /* __CONFIG_TI_OMAP4_COMMON_H */
Signature · 1 line
1.9.1
#4 lore raw

PATCH v2 1/8 omap-common: Common boot code OMAP3 support and cleanup

Quoted 13 lines · On Monday 08 June 2015 23:24:19 Paul Kocialkowski wrote:
board/nokia/rx51/lowlevel_init.S +0 -5
index 9d4ea1b..9048f31 100644
@@ -28,18 +28,6 @@ imagesize:		/* maximal size of image */
 ih_magic:		/* IH_MAGIC in big endian from include/image.h */
 	.word 0x56190527
 
-/*
- * Routine: save_boot_params (called after reset from start.S)
- * Description: Copy attached kernel to address KERNEL_ADDRESS
- *              Copy u-boot to address CONFIG_SYS_TEXT_BASE
- *              Return to copied u-boot address

board/nokia/rx51/lowlevel_init.S imagesize: /* maximal size of image */ · line 33

Quoted 10 lines
board/nokia/rx51/lowlevel_init.S +0 -7
- */
-
-.global save_boot_params
-save_boot_params:
-	/* Get return address */
-	ldr	lr, =save_boot_params_ret
-
 /* Copy valid attached kernel to address KERNEL_ADDRESS */
 
 copy_kernel_start:

Hi, I did not tested this code yet, but quick look at it I think effectively means to totally break support for Nokia N900 (RX-51).

Routine save_boot_params() was called directly from start.S before U-Boot did any HW setup and configuration. It stored needed data to make U-Boot working and more important it calculated and stored linux kernel image to safe place in RAM (which U-Boot do not touch) to make it able to boot.

Nokia N900 setup is special. Nokia internal bootloader (which was not possible to replace) boot arm image stored in MTD nand.

That arm image is compiled U-Boot binary with Linux kernel and Nokia bootloader load this image to random address into RAM. To make sure that U-Boot will be able to boot that kernel image we need to do some magic before U-Boot relocates itself.

In next weekend (or later) I will try to find some time to test patches on real N900 device. But I think with your changes it will not work...

Signature · 2 lines
Pali Roh?r
pali.rohar at gmail.com
#5 lore raw

PATCH v2 2/8 omap: SPL boot devices cleanup and completion

In reply to Paul Kocialkowski

This cleans up the SPL boot devices for omap platforms and introduces support for missing boot devices.

---
 arch/arm/include/asm/arch-am33xx/spl.h | 94 +++++++++++++++++++---------------
 arch/arm/include/asm/arch-omap3/spl.h  | 18 ++++---
 arch/arm/include/asm/arch-omap4/spl.h  | 20 ++++----
 arch/arm/include/asm/arch-omap5/spl.h  | 23 +++++----
 4 files changed, 88 insertions(+), 67 deletions(-)
arch/arm/include/asm/arch-am33xx/spl.h +54 -40
index e756418..4ed8597 100644
@@ -7,51 +7,65 @@
 #ifndef	_ASM_ARCH_SPL_H_
 #define	_ASM_ARCH_SPL_H_
 
-#if defined(CONFIG_TI816X)
-#define BOOT_DEVICE_XIP		2
-#define BOOT_DEVICE_NAND	3
-#define BOOT_DEVICE_MMC1	6
-#define BOOT_DEVICE_MMC2	5
+#define BOOT_DEVICE_NONE	0x00
+#define BOOT_DEVICE_MMC2_2	0xFF
+
+#if defined(CONFIG_TI814X)
+#define BOOT_DEVICE_XIP		0x01
+#define BOOT_DEVICE_XIPWAIT	0x02
+#define BOOT_DEVICE_NAND	0x05
+#define BOOT_DEVICE_NAND_I2C	0x06
+#define BOOT_DEVICE_MMC2	0x08 /* ROM only supports 2nd instance. */
+#define BOOT_DEVICE_MMC1	0x09
+#define BOOT_DEVICE_SPI		0x15
+#define BOOT_DEVICE_UART	0x41
+#define BOOT_DEVICE_USBETH	0x44
+#define BOOT_DEVICE_CPGMAC	0x46
+
+#define MMC_BOOT_DEVICES_START	BOOT_DEVICE_MMC2
+#define MMC_BOOT_DEVICES_END	BOOT_DEVICE_MMC1
+#elif defined(CONFIG_TI816X)
+#define BOOT_DEVICE_XIP		0x01
+#define BOOT_DEVICE_XIPWAIT	0x02
+#define BOOT_DEVICE_NAND	0x03
+#define BOOT_DEVICE_ONENAD	0x04
+#define BOOT_DEVICE_MMC2	0x05 /* ROM only supports 2nd instance. */
+#define BOOT_DEVICE_MMC1	0x06
 #define BOOT_DEVICE_UART	0x43
-#elif defined(CONFIG_AM43XX)
-#define BOOT_DEVICE_NOR		1
-#define BOOT_DEVICE_NAND	5
-#define BOOT_DEVICE_MMC1	7
-#define BOOT_DEVICE_MMC2	8
-#define BOOT_DEVICE_SPI		10
-#define BOOT_DEVICE_USB     13
-#define BOOT_DEVICE_UART	65
-#define BOOT_DEVICE_CPGMAC	71
-#else
-#define BOOT_DEVICE_XIP       	2
-#define BOOT_DEVICE_NAND	5
-#define BOOT_DEVICE_NAND_I2C	6
-#if defined(CONFIG_AM33XX)
-#define BOOT_DEVICE_MMC1	8
-#define BOOT_DEVICE_MMC2	9	/* eMMC or daughter card */
-#elif defined(CONFIG_TI814X)
-#define BOOT_DEVICE_MMC1	9
-#define BOOT_DEVICE_MMC2	8	/* ROM only supports 2nd instance */
-#endif
-#define BOOT_DEVICE_SPI		11
-#define BOOT_DEVICE_UART	65
-#define BOOT_DEVICE_USBETH	68
-#define BOOT_DEVICE_CPGMAC	70
-#endif
-#define BOOT_DEVICE_MMC2_2      0xFF
+#define BOOT_DEVICE_USB		0x45
 
-#if defined(CONFIG_AM33XX)
-#define MMC_BOOT_DEVICES_START BOOT_DEVICE_MMC1
-#define MMC_BOOT_DEVICES_END   BOOT_DEVICE_MMC2
+#define MMC_BOOT_DEVICES_START	BOOT_DEVICE_MMC2
+#define MMC_BOOT_DEVICES_END	BOOT_DEVICE_MMC1
+#elif defined(CONFIG_AM33XX)
+#define BOOT_DEVICE_XIP		0x01
+#define BOOT_DEVICE_XIPWAIT	0x02
+#define BOOT_DEVICE_NAND	0x05
+#define BOOT_DEVICE_NAND_I2C	0x06
+#define BOOT_DEVICE_MMC1	0x08
+#define BOOT_DEVICE_MMC2	0x09
+#define BOOT_DEVICE_SPI		0x15
+#define BOOT_DEVICE_UART	0x41
+#define BOOT_DEVICE_USBETH	0x44
+#define BOOT_DEVICE_CPGMAC	0x46
+
+#define MMC_BOOT_DEVICES_START	BOOT_DEVICE_MMC1
+#define MMC_BOOT_DEVICES_END	BOOT_DEVICE_MMC2
 #elif defined(CONFIG_AM43XX)
-#define MMC_BOOT_DEVICES_START BOOT_DEVICE_MMC1
+#define BOOT_DEVICE_NOR		0x01
+#define BOOT_DEVICE_NAND	0x05
+#define BOOT_DEVICE_MMC1	0x07
+#define BOOT_DEVICE_MMC2	0x08
+#define BOOT_DEVICE_SPI		0x0A
+#define BOOT_DEVICE_UART	0x41
+#define BOOT_DEVICE_USB		0x45
+#define BOOT_DEVICE_CPGMAC	0x47
+
+#define MMC_BOOT_DEVICES_START	BOOT_DEVICE_MMC1
 #ifdef CONFIG_SPL_USB_SUPPORT
-#define MMC_BOOT_DEVICES_END   BOOT_DEVICE_USB
+#define MMC_BOOT_DEVICES_END	BOOT_DEVICE_USB
 #else
-#define MMC_BOOT_DEVICES_END   BOOT_DEVICE_MMC2
+#define MMC_BOOT_DEVICES_END	BOOT_DEVICE_MMC2
 #endif
-#elif defined(CONFIG_TI81XX)
-#define MMC_BOOT_DEVICES_START	BOOT_DEVICE_MMC2
-#define MMC_BOOT_DEVICES_END	BOOT_DEVICE_MMC1
 #endif
+
 #endif
arch/arm/include/asm/arch-omap3/spl.h +10 -8
index 8350532..a31b4ea 100644
@@ -7,14 +7,16 @@
 #ifndef	_ASM_ARCH_SPL_H_
 #define	_ASM_ARCH_SPL_H_
 
-#define BOOT_DEVICE_NONE	0
-#define BOOT_DEVICE_XIP		1
-#define BOOT_DEVICE_NAND	2
-#define BOOT_DEVICE_ONENAND	3
-#define BOOT_DEVICE_MMC2	5 /*emmc*/
-#define BOOT_DEVICE_MMC1	6
-#define BOOT_DEVICE_XIPWAIT	7
-#define BOOT_DEVICE_MMC2_2      0xFF
+#define BOOT_DEVICE_NONE	0x00
+#define BOOT_DEVICE_XIP		0x01
+#define BOOT_DEVICE_NAND	0x02
+#define BOOT_DEVICE_ONENAND	0x03
+#define BOOT_DEVICE_MMC2	0x05
+#define BOOT_DEVICE_MMC1	0x06
+#define BOOT_DEVICE_XIPWAIT	0x07
+#define BOOT_DEVICE_MMC2_2      0x08
+#define BOOT_DEVICE_UART	0x10
+#define BOOT_DEVICE_USB		0x11
 
 #define MMC_BOOT_DEVICES_START	BOOT_DEVICE_MMC2
 #define MMC_BOOT_DEVICES_END	BOOT_DEVICE_MMC1
arch/arm/include/asm/arch-omap4/spl.h +11 -9
index fb842a2..bace92d 100644
@@ -7,15 +7,17 @@
 #ifndef	_ASM_ARCH_SPL_H_
 #define	_ASM_ARCH_SPL_H_
 
-#define BOOT_DEVICE_NONE	0
-#define BOOT_DEVICE_XIP		1
-#define BOOT_DEVICE_XIPWAIT	2
-#define BOOT_DEVICE_NAND	3
-#define BOOT_DEVICE_ONENAND	4
-#define BOOT_DEVICE_MMC1	5
-#define BOOT_DEVICE_MMC2	6
-#define BOOT_DEVICE_MMC2_2	0xFF
+#define BOOT_DEVICE_NONE	0x00
+#define BOOT_DEVICE_XIP		0x01
+#define BOOT_DEVICE_XIPWAIT	0x02
+#define BOOT_DEVICE_NAND	0x03
+#define BOOT_DEVICE_ONENAND	0x04
+#define BOOT_DEVICE_MMC1	0x05
+#define BOOT_DEVICE_MMC2	0x06
+#define BOOT_DEVICE_MMC2_2	0x07
+#define BOOT_DEVICE_UART	0x43
+#define BOOT_DEVICE_USB		0x45
 
 #define MMC_BOOT_DEVICES_START	BOOT_DEVICE_MMC1
-#define MMC_BOOT_DEVICES_END	BOOT_DEVICE_MMC2
+#define MMC_BOOT_DEVICES_END	BOOT_DEVICE_MMC2_2
 #endif
arch/arm/include/asm/arch-omap5/spl.h +13 -10
index f707998..468ff5a 100644
@@ -7,17 +7,20 @@
 #ifndef	_ASM_ARCH_SPL_H_
 #define	_ASM_ARCH_SPL_H_
 
-#define BOOT_DEVICE_NONE        0
-#define BOOT_DEVICE_XIP         1
-#define BOOT_DEVICE_XIPWAIT     2
-#define BOOT_DEVICE_NAND        3
-#define BOOT_DEVICE_ONENAND    4
-#define BOOT_DEVICE_MMC1        5
-#define BOOT_DEVICE_MMC2        6
-#define BOOT_DEVICE_MMC2_2	7
-#define BOOT_DEVICE_SATA	9
-#define BOOT_DEVICE_SPI		10
+#define BOOT_DEVICE_NONE	0x00
+#define BOOT_DEVICE_XIP		0x01
+#define BOOT_DEVICE_XIPWAIT	0x02
+#define BOOT_DEVICE_NAND	0x03
+#define BOOT_DEVICE_ONENAND	0x04
+#define BOOT_DEVICE_MMC1	0x05
+#define BOOT_DEVICE_MMC2	0x06
+#define BOOT_DEVICE_MMC2_2	0x07
+#define BOOT_DEVICE_SATA	0x09
+#define BOOT_DEVICE_SPI		0x0A
+#define BOOT_DEVICE_QSPI_1	0x0A
+#define BOOT_DEVICE_QSPI_4	0x0B
 #define BOOT_DEVICE_UART	0x43
+#define BOOT_DEVICE_USB		0x45
 
 #define MMC_BOOT_DEVICES_START	BOOT_DEVICE_MMC1
 #define MMC_BOOT_DEVICES_END	BOOT_DEVICE_MMC2_2
Signature · 1 line
1.9.1
#6 lore raw

PATCH v2 3/8 omap-common: Boot device define instead of hardcoded value

In reply to Paul Kocialkowski

Now that SPL boot devices are clearly defined, we can use BOOT_DEVICE_QSPI_4 instead of a hardcoded value.

---
 arch/arm/cpu/armv7/omap-common/boot-common.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)
arch/arm/cpu/armv7/omap-common/boot-common.c +2 -2
index 10714d7..944b6e4 100644
@@ -48,14 +48,14 @@ void save_omap_boot_params(void)
 	if (boot_device == BOOT_DEVICE_NAND_I2C)
 		boot_device = BOOT_DEVICE_NAND;
 #endif
-#if defined(CONFIG_DRA7XX) || defined(CONFIG_AM57XX)
+#ifdef BOOT_DEVICE_QSPI_4
 	/*
 	 * We get different values for QSPI_1 and QSPI_4 being used, but
 	 * don't actually care about this difference.  Rather than
 	 * mangle the later code, if we're coming in as QSPI_4 just
 	 * change to the QSPI_1 value.
 	 */
-	if (boot_device == 11)
+	if (boot_device == BOOT_DEVICE_QSPI_4)
 		boot_device = BOOT_DEVICE_SPI;
 #endif
 
Signature · 1 line
1.9.1
#7 lore raw

PATCH v2 4/8 siemens-am33x-common: Hardcoded value instead of non-included define

In reply to Paul Kocialkowski

The config file for the siemens-am33x-common was using OMAP_I2C_STANDARD, which is defined in a header that is not included in the config header. In most cases, it was being included by the code using CONFIG_SYS_OMAP24_I2C_SPEED, but it might not always be the case.

In particular, when introducing I2C SPL support in omap-common's boot-common.c, the header is missing and including it breaks other devices.

---
 include/configs/siemens-am33x-common.h | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
include/configs/siemens-am33x-common.h +1 -1
index f086e73..f1b9120 100644
@@ -134,7 +134,7 @@
 #define CONFIG_I2C
 #define CONFIG_CMD_I2C
 #define CONFIG_SYS_I2C
-#define CONFIG_SYS_OMAP24_I2C_SPEED	OMAP_I2C_STANDARD
+#define CONFIG_SYS_OMAP24_I2C_SPEED	100000
 #define CONFIG_SYS_OMAP24_I2C_SLAVE	1
 #define CONFIG_SYS_I2C_OMAP24XX
 
Signature · 1 line
1.9.1
#8 lore raw

PATCH v2 5/8 omap-common: SYS_BOOT-based fallback boot device selection for peripheral boot

In reply to Paul Kocialkowski

OMAP devices might boot from peripheral devices, such as UART or USB. When that happens, the U-Boot SPL tries to boot the next stage (complete U-Boot) from that peripheral device, but in most cases, this is not a valid boot device.

This introduces a fallback option that reads the SYS_BOOT pins, that are used by the bootrom to determine which device to boot from. It is intended for the SYS_BOOT value to be interpreted in the memory-preferred scheme, so that the U-Boot SPL can load the next stage from a valid location.

Practically, this options allows loading the U-Boot SPL through USB and have it load the next stage according to the memory device selected by SYS_BOOT instead of stalling.

---
 arch/arm/cpu/armv7/omap-common/boot-common.c | 51 ++++++++++++++++++++++++----
 arch/arm/include/asm/omap_common.h           |  4 +++
 2 files changed, 48 insertions(+), 7 deletions(-)
arch/arm/cpu/armv7/omap-common/boot-common.c +44 -7
index 944b6e4..8a7df89 100644
@@ -21,6 +21,11 @@
 
 DECLARE_GLOBAL_DATA_PTR;
 
+__weak u32 omap_sys_boot_device(void)
+{
+	return BOOT_DEVICE_NONE;
+}
+
 void save_omap_boot_params(void)
 {
 	u32 boot_params = *((u32 *)OMAP_SRAM_SCRATCH_BOOT_PARAMS);
@@ -34,9 +39,10 @@ void save_omap_boot_params(void)
 
 	omap_boot_params = (struct omap_boot_parameters *)boot_params;
 
-	/* Boot device */
-
 	boot_device = omap_boot_params->boot_device;
+	boot_mode = MMCSD_MODE_UNDEFINED;
+
+	/* Boot device */
 
 #ifdef BOOT_DEVICE_NAND_I2C
 	/*
@@ -58,16 +64,38 @@ void save_omap_boot_params(void)
 	if (boot_device == BOOT_DEVICE_QSPI_4)
 		boot_device = BOOT_DEVICE_SPI;
 #endif
+#if (defined(BOOT_DEVICE_UART) && !defined(CONFIG_SPL_YMODEM_SUPPORT)) || \
+    (defined(BOOT_DEVICE_USB) && !defined(CONFIG_SPL_USB_SUPPORT))
+	/*
+	 * When booting from peripheral booting, the boot device is not usable
+	 * as-is (unless there is support for it), so the boot device is instead
+	 * figured out using the SYS_BOOT pins.
+	 */
+	switch (boot_device) {
+#ifdef BOOT_DEVICE_UART
+	case BOOT_DEVICE_UART:
+#endif
+#ifdef BOOT_DEVICE_USB
+	case BOOT_DEVICE_USB:
+#endif
+		boot_device = omap_sys_boot_device();
+
+		/* MMC raw mode will fallback to FS mode. */
+		if ((boot_device >= MMC_BOOT_DEVICES_START) &&
+		    (boot_device <= MMC_BOOT_DEVICES_END))
+			boot_mode = MMCSD_MODE_RAW;
+
+		break;
+	}
+#endif
 
 	gd->arch.omap_boot_device = boot_device;
 
 	/* Boot mode */
 
-	boot_mode = MMCSD_MODE_UNDEFINED;
-
+#ifdef CONFIG_OMAP34XX
 	if ((boot_device >= MMC_BOOT_DEVICES_START) &&
 	    (boot_device <= MMC_BOOT_DEVICES_END)) {
-#ifdef CONFIG_OMAP34XX
 		switch (boot_device) {
 		case BOOT_DEVICE_MMC1:
 			boot_mode = MMCSD_MODE_FS;
@@ -76,7 +104,16 @@ void save_omap_boot_params(void)
 			boot_mode = MMCSD_MODE_RAW;
 			break;
 		}
+	}
 #else
+	/*
+	 * If the boot device was dynamically changed and doesn't match what
+	 * the bootrom initially booted, we cannot use the boot device
+	 * descriptor to figure out te boot mode.
+	 */
+	if ((boot_device == omap_boot_params->boot_device) &&
+	    (boot_device >= MMC_BOOT_DEVICES_START) &&
+	    (boot_device <= MMC_BOOT_DEVICES_END)) {
 		boot_params = omap_boot_params->boot_device_descriptor;
 		if ((boot_params < NON_SECURE_SRAM_START) ||
 		    (boot_params > NON_SECURE_SRAM_END))
@@ -92,12 +129,12 @@ void save_omap_boot_params(void)
 		if (boot_mode != MMCSD_MODE_FS &&
 		    boot_mode != MMCSD_MODE_RAW)
 #ifdef CONFIG_SUPPORT_EMMC_BOOT
-			boot_mode = MMCSD_MODE_EMMCBOOT
+			boot_mode = MMCSD_MODE_EMMCBOOT;
 #else
 			boot_mode = MMCSD_MODE_UNDEFINED;
 #endif
-#endif
 	}
+#endif
 
 	gd->arch.omap_boot_mode = boot_mode;
 
arch/arm/include/asm/omap_common.h +4 -0
index e8c502c..7733311 100644
@@ -682,4 +682,8 @@ static inline u8 is_dra7xx(void)
 #define CH_FLAGS_CHFLASH	(1 << 2)
 #define CH_FLAGS_CHMMCSD	(1 << 3)
 
+#ifndef __ASSEMBLY__
+u32 omap_sys_boot_device(void);
+#endif
+
 #endif /* _OMAP_COMMON_H_ */
Signature · 1 line
1.9.1
#9 lore raw

PATCH v2 6/8 omap3: Definitions for SYS_BOOT-based fallback boot device selection

In reply to Paul Kocialkowski

This introduces code to read the value of the SYS_BOOT pins on the OMAP3, as well as the memory-preferred scheme for the interpretation of each value.

---
 arch/arm/cpu/armv7/omap3/Makefile |  1 +
 arch/arm/cpu/armv7/omap3/boot.c   | 58 +++++++++++++++++++++++++++++++++++++++
 2 files changed, 59 insertions(+)
 create mode 100644 arch/arm/cpu/armv7/omap3/boot.c
arch/arm/cpu/armv7/omap3/Makefile +1 -0
index cf86046..b2fce96 100644
@@ -8,6 +8,7 @@
 obj-y	:= lowlevel_init.o
 
 obj-y	+= board.o
+obj-y	+= boot.o
 obj-y	+= clock.o
 obj-y	+= sys_info.o
 ifdef CONFIG_SPL_BUILD
arch/arm/cpu/armv7/omap3/boot.c new file +58 -0

58 lines not on this page · raw message

Signature · 1 line
1.9.1
#10 lore raw

PATCH v2 7/8 omap4: Definitions for SYS_BOOT-based fallback boot device selection

In reply to Paul Kocialkowski

This introduces code to read the value of the SYS_BOOT pins on the OMAP4, as well as the memory-preferred scheme for the interpretation of each value.

---
 arch/arm/cpu/armv7/omap4/Makefile    |  1 +
 arch/arm/cpu/armv7/omap4/boot.c      | 60 ++++++++++++++++++++++++++++++++++++
 arch/arm/cpu/armv7/omap4/prcm-regs.c |  1 +
 3 files changed, 62 insertions(+)
 create mode 100644 arch/arm/cpu/armv7/omap4/boot.c
arch/arm/cpu/armv7/omap4/Makefile +1 -0
index 76a032a..564f1f6 100644
@@ -5,6 +5,7 @@
 # SPDX-License-Identifier:	GPL-2.0+
 #
 
+obj-y	+= boot.o
 obj-y	+= sdram_elpida.o
 obj-y	+= hwinit.o
 obj-y	+= emif.o
arch/arm/cpu/armv7/omap4/boot.c new file +60 -0

60 lines not on this page · raw message

arch/arm/cpu/armv7/omap4/prcm-regs.c +1 -0
index 1ed146b..8698ec7 100644
@@ -279,6 +279,7 @@ struct prcm_regs const omap4_prcm = {
 };
 
 struct omap_sys_ctrl_regs const omap4_ctrl = {
+	.control_status				= 0x4A0022C4,
 	.control_id_code			= 0x4A002204,
 	.control_std_fuse_opp_bgap		= 0x4a002260,
 	.control_status				= 0x4a0022c4,
Signature · 1 line
1.9.1
#11 lore raw

PATCH v2 8/8 omap5: Definitions for SYS_BOOT-based fallback boot device selection

In reply to Paul Kocialkowski

This introduces code to read the value of the SYS_BOOT pins on the OMAP5, as well as the memory-preferred scheme for the interpretation of each value.

---
 arch/arm/cpu/armv7/omap5/Makefile |  1 +
 arch/arm/cpu/armv7/omap5/boot.c   | 45 +++++++++++++++++++++++++++++++++++++++
 2 files changed, 46 insertions(+)
 create mode 100644 arch/arm/cpu/armv7/omap5/boot.c
arch/arm/cpu/armv7/omap5/Makefile +1 -0
index 64c6879..6b8c683 100644
@@ -5,6 +5,7 @@
 # SPDX-License-Identifier:	GPL-2.0+
 #
 
+obj-y	+= boot.o
 obj-y	+= hwinit.o
 obj-y	+= emif.o
 obj-y	+= sdram.o
arch/arm/cpu/armv7/omap5/boot.c new file +45 -0

45 lines not on this page · raw message

Signature · 1 line
1.9.1
#12 lore raw

v2 cover omap-common: Common boot code OMAP3 support and SYS_BOOT-based fallback boot device

In reply to Paul Kocialkowski
Quoted 3 lines · On Monday 08 June 2015 23:24:18 Paul Kocialkowski wrote:

I would be very glad to see board maintainers give a go at the changeset before it gets merged, especially on devices like the Nokia RX-51 (N900) where some specific adaptation was needed.

So U-Boot is broken since e11c6c279d823dc0d2f470c5c2e3c0a9854a640f (see other email thread). Until somebody fix that broken commit, I cannot test your new patches in qemu or on (real) Nokia N900.

Signature · 9 lines
Pali Roh?r
pali.rohar at gmail.com
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 198 bytes
Desc: This is a digitally signed message part.
URL: <http://lists.denx.de/pipermail/u-boot/attachments/20150609/c970c948/attachment.sig>
#13 lore raw

v2 cover omap-common: Common boot code OMAP3 support and SYS_BOOT-based fallback boot device

Quoted 8 lines · On Tuesday 09 June 2015 18:28:29 Pali Roh?r wrote:
Quoted 3 lines · On Monday 08 June 2015 23:24:18 Paul Kocialkowski wrote:

I would be very glad to see board maintainers give a go at the changeset before it gets merged, especially on devices like the Nokia RX-51 (N900) where some specific adaptation was needed.

So U-Boot is broken since e11c6c279d823dc0d2f470c5c2e3c0a9854a640f (see other email thread). Until somebody fix that broken commit, I cannot test your new patches in qemu or on (real) Nokia N900.

Now I tested this patch series on top of u-boot master with applied my patch "Nokia RX-51: Fix calculating return address in save_boot_params".

And it really as I thought broke booting U-Boot on Nokia N900 in qemu.

So this patch series is NAK from my side.

Signature · 9 lines
Pali Roh?r
pali.rohar at gmail.com
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 198 bytes
Desc: This is a digitally signed message part.
URL: <http://lists.denx.de/pipermail/u-boot/attachments/20150609/6fb04dd9/attachment.sig>
#14 lore raw

v2 cover omap-common: Common boot code OMAP3 support and SYS_BOOT-based fallback boot device

Le mardi 09 juin 2015 ? 20:34 +0200, Pali Roh?r a ?crit :

Quoted 6 lines · On Tuesday 09 June 2015 18:28:29 Pali Roh?r wrote:
Quoted 5 lines · On Monday 08 June 2015 23:24:18 Paul Kocialkowski wrote:
Quoted 3 lines

I would be very glad to see board maintainers give a go at the changeset before it gets merged, especially on devices like the Nokia RX-51 (N900) where some specific adaptation was needed.

Quoted 8 lines
Quoted 3 lines

So U-Boot is broken since e11c6c279d823dc0d2f470c5c2e3c0a9854a640f (see other email thread). Until somebody fix that broken commit, I cannot test your new patches in qemu or on (real) Nokia N900.

Now I tested this patch series on top of u-boot master with applied my patch "Nokia RX-51: Fix calculating return address in save_boot_params".

And it really as I thought broke booting U-Boot on Nokia N900 in qemu.

I'm confused here -- did you try booting on the actual device or in qemu?

Quoted 1 line

So this patch series is NAK from my side.

Thanks for testing. Of course, the point is to make another version of the patch set that fits the N900 too, since we really need to integrate the omap3 to the common omap boot mechanism anyways.

I may be able to get my hands on a N900 in a short while. If you're interested, you're welcome to look at the issue and suggest what changes should be made to make the set compatible with the N900!

Signature · 16 lines
Paul Kocialkowski, Replicant developer

Replicant is a fully free Android distribution running on several
devices, a free software mobile operating system putting the emphasis on
freedom and privacy/security.

Website: http://www.replicant.us/
Blog: http://blog.replicant.us/
Wiki/tracker/forums: http://redmine.replicant.us/
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 819 bytes
Desc: This is a digitally signed message part
URL: <http://lists.denx.de/pipermail/u-boot/attachments/20150610/0ac7103a/attachment.sig>
#15 lore raw

v2 cover omap-common: Common boot code OMAP3 support and SYS_BOOT-based fallback boot device

Quoted 11 lines · On Wednesday 10 June 2015 11:54:00 Paul Kocialkowski wrote:

Le mardi 09 juin 2015 ? 20:34 +0200, Pali Roh?r a ?crit :

Quoted 10 lines · On Tuesday 09 June 2015 18:28:29 Pali Roh?r wrote:
Quoted 8 lines · On Monday 08 June 2015 23:24:18 Paul Kocialkowski wrote:
Quoted 3 lines

I would be very glad to see board maintainers give a go at the changeset before it gets merged, especially on devices like the Nokia RX-51 (N900) where some specific adaptation was needed.

So U-Boot is broken since e11c6c279d823dc0d2f470c5c2e3c0a9854a640f (see other email thread). Until somebody fix that broken commit, I cannot test your new patches in qemu or on (real) Nokia N900.

Quoted 8 lines
Quoted 4 lines

Now I tested this patch series on top of u-boot master with applied my patch "Nokia RX-51: Fix calculating return address in save_boot_params".

And it really as I thought broke booting U-Boot on Nokia N900 in qemu.

I'm confused here -- did you try booting on the actual device or in qemu?

I tested your changes only in qemu. But because you removed (or better masked) required lowlevel asm code, it will not work on real n900 too.

Quoted 6 lines
Quoted 1 line

So this patch series is NAK from my side.

Thanks for testing. Of course, the point is to make another version of the patch set that fits the N900 too, since we really need to integrate the omap3 to the common omap boot mechanism anyways.

Make sure that asm function in rx51 lowlevel asm file is called immediately from start.S. It is required. Basically no modification to that function should be needed (maybe just fixing return address in lr).

Quoted 1 line

I may be able to get my hands on a N900 in a short while.

Do you have n900 device? Or are you going to use qemu?

Really, for development u-boot for n900 is easier to use qemu as you can easier debug code...

Quoted 3 lines

If you're interested, you're welcome to look at the issue and suggest what changes should be made to make the set compatible with the N900!

Do not hide/mask/remove that required asm function. That should be all.

Signature · 2 lines
Pali Roh?r
pali.rohar at gmail.com
#16 lore raw

v2 cover omap-common: Common boot code OMAP3 support and SYS_BOOT-based fallback boot device

Quoted 39 lines · On Wednesday 10 June 2015 12:34:39 Pali Roh?r wrote:
Quoted 11 lines · On Wednesday 10 June 2015 11:54:00 Paul Kocialkowski wrote:

Le mardi 09 juin 2015 ? 20:34 +0200, Pali Roh?r a ?crit :

Quoted 10 lines · On Tuesday 09 June 2015 18:28:29 Pali Roh?r wrote:
Quoted 8 lines · On Monday 08 June 2015 23:24:18 Paul Kocialkowski wrote:
Quoted 3 lines

I would be very glad to see board maintainers give a go at the changeset before it gets merged, especially on devices like the Nokia RX-51 (N900) where some specific adaptation was needed.

So U-Boot is broken since e11c6c279d823dc0d2f470c5c2e3c0a9854a640f (see other email thread). Until somebody fix that broken commit, I cannot test your new patches in qemu or on (real) Nokia N900.

Quoted 8 lines
Quoted 4 lines

Now I tested this patch series on top of u-boot master with applied my patch "Nokia RX-51: Fix calculating return address in save_boot_params".

And it really as I thought broke booting U-Boot on Nokia N900 in qemu.

I'm confused here -- did you try booting on the actual device or in qemu?

I tested your changes only in qemu. But because you removed (or better masked) required lowlevel asm code, it will not work on real n900 too.

Quoted 6 lines
Quoted 1 line

So this patch series is NAK from my side.

Thanks for testing. Of course, the point is to make another version of the patch set that fits the N900 too, since we really need to integrate the omap3 to the common omap boot mechanism anyways.

Make sure that asm function in rx51 lowlevel asm file is called immediately from start.S. It is required. Basically no modification to that function should be needed (maybe just fixing return address in lr).

Quoted 1 line

I may be able to get my hands on a N900 in a short while.

Do you have n900 device? Or are you going to use qemu?

Quoted 9 lines

Really, for development u-boot for n900 is easier to use qemu as you can easier debug code...

Quoted 3 lines

If you're interested, you're welcome to look at the issue and suggest what changes should be made to make the set compatible with the N900!

Do not hide/mask/remove that required asm function. That should be all.

And why is change to file board/nokia/rx51/lowlevel_init.S required?

Signature · 2 lines
Pali Roh?r
pali.rohar at gmail.com
#17 lore raw

v2 cover omap-common: Common boot code OMAP3 support and SYS_BOOT-based fallback boot device

Le mercredi 10 juin 2015 ? 12:42 +0200, Pali Roh?r a ?crit :

Quoted 27 lines · On Wednesday 10 June 2015 12:34:39 Pali Roh?r wrote:
Quoted 26 lines · On Wednesday 10 June 2015 11:54:00 Paul Kocialkowski wrote:
Quoted 11 lines

Le mardi 09 juin 2015 ? 20:34 +0200, Pali Roh?r a ?crit :

Quoted 10 lines · On Tuesday 09 June 2015 18:28:29 Pali Roh?r wrote:
Quoted 8 lines · On Monday 08 June 2015 23:24:18 Paul Kocialkowski wrote:
Quoted 3 lines

I would be very glad to see board maintainers give a go at the changeset before it gets merged, especially on devices like the Nokia RX-51 (N900) where some specific adaptation was needed.

So U-Boot is broken since e11c6c279d823dc0d2f470c5c2e3c0a9854a640f (see other email thread). Until somebody fix that broken commit, I cannot test your new patches in qemu or on (real) Nokia N900.

Quoted 8 lines
Quoted 4 lines

Now I tested this patch series on top of u-boot master with applied my patch "Nokia RX-51: Fix calculating return address in save_boot_params".

And it really as I thought broke booting U-Boot on Nokia N900 in qemu.

I'm confused here -- did you try booting on the actual device or in qemu?

I tested your changes only in qemu. But because you removed (or better masked) required lowlevel asm code, it will not work on real n900 too.

Quoted 2 lines
Quoted 1 line

So this patch series is NAK from my side.

Quoted 8 lines
Quoted 8 lines
Quoted 4 lines

Thanks for testing. Of course, the point is to make another version of the patch set that fits the N900 too, since we really need to integrate the omap3 to the common omap boot mechanism anyways.

Make sure that asm function in rx51 lowlevel asm file is called immediately from start.S. It is required. Basically no modification to that function should be needed (maybe just fixing return address in lr).

The problem is that this declaration conflicts with the one from omap-common's lowlevel_init.S. I understand that it is not needed for the RX-51 since it is not loaded by the U-Boot SPL or by the bootrom.

Perhaps the best way to do things here would be to have a config option clearly stating that it should not expect the booting device information structure in r0. This situation is not specific to the RX-51 anyways.

Quoted 6 lines
Quoted 6 lines
Quoted 1 line

I may be able to get my hands on a N900 in a short while.

Do you have n900 device? Or are you going to use qemu?

Really, for development u-boot for n900 is easier to use qemu as you can easier debug code...

I didin't know it was possible, perhaps I'll try it. I have a friend who owns a N900, I could certainly borrow it for a while to ensure that this patch set goes smoothly on it.

Quoted 7 lines
Quoted 5 lines
Quoted 3 lines

If you're interested, you're welcome to look at the issue and suggest what changes should be made to make the set compatible with the N900!

Do not hide/mask/remove that required asm function. That should be all.

And why is change to file board/nokia/rx51/lowlevel_init.S required?

See my comment above.

Signature · 16 lines
Paul Kocialkowski, Replicant developer

Replicant is a fully free Android distribution running on several
devices, a free software mobile operating system putting the emphasis on
freedom and privacy/security.

Website: http://www.replicant.us/
Blog: http://blog.replicant.us/
Wiki/tracker/forums: http://redmine.replicant.us/
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 819 bytes
Desc: This is a digitally signed message part
URL: <http://lists.denx.de/pipermail/u-boot/attachments/20150610/393f9238/attachment.sig>
#18 lore raw

v2 cover omap-common: Common boot code OMAP3 support and SYS_BOOT-based fallback boot device

Quoted 33 lines · On Wednesday 10 June 2015 12:58:11 Paul Kocialkowski wrote:

Le mercredi 10 juin 2015 ? 12:42 +0200, Pali Roh?r a ?crit :

Quoted 32 lines · On Wednesday 10 June 2015 12:34:39 Pali Roh?r wrote:
Quoted 31 lines · On Wednesday 10 June 2015 11:54:00 Paul Kocialkowski wrote:
Quoted 11 lines

Le mardi 09 juin 2015 ? 20:34 +0200, Pali Roh?r a ?crit :

Quoted 10 lines · On Tuesday 09 June 2015 18:28:29 Pali Roh?r wrote:
Quoted 8 lines · On Monday 08 June 2015 23:24:18 Paul Kocialkowski wrote:
Quoted 3 lines

I would be very glad to see board maintainers give a go at the changeset before it gets merged, especially on devices like the Nokia RX-51 (N900) where some specific adaptation was needed.

So U-Boot is broken since e11c6c279d823dc0d2f470c5c2e3c0a9854a640f (see other email thread). Until somebody fix that broken commit, I cannot test your new patches in qemu or on (real) Nokia N900.

Quoted 8 lines
Quoted 4 lines

Now I tested this patch series on top of u-boot master with applied my patch "Nokia RX-51: Fix calculating return address in save_boot_params".

And it really as I thought broke booting U-Boot on Nokia N900 in qemu.

I'm confused here -- did you try booting on the actual device or in qemu?

I tested your changes only in qemu. But because you removed (or better masked) required lowlevel asm code, it will not work on real n900 too.

Quoted 6 lines
Quoted 1 line

So this patch series is NAK from my side.

Thanks for testing. Of course, the point is to make another version of the patch set that fits the N900 too, since we really need to integrate the omap3 to the common omap boot mechanism anyways.

Quoted 8 lines
Quoted 3 lines
Quoted 3 lines

Make sure that asm function in rx51 lowlevel asm file is called immediately from start.S. It is required. Basically no modification to that function should be needed (maybe just fixing return address in lr).

The problem is that this declaration conflicts with the one from omap-common's lowlevel_init.S. I understand that it is not needed for the RX-51 since it is not loaded by the U-Boot SPL or by the bootrom.

Yes.

Quoted 4 lines

Perhaps the best way to do things here would be to have a config option clearly stating that it should not expect the booting device information structure in r0. This situation is not specific to the RX-51 anyways.

Sounds good.

Quoted 11 lines
Quoted 6 lines
Quoted 6 lines
Quoted 1 line

I may be able to get my hands on a N900 in a short while.

Do you have n900 device? Or are you going to use qemu?

Really, for development u-boot for n900 is easier to use qemu as you can easier debug code...

I didin't know it was possible, perhaps I'll try it. I have a friend who owns a N900, I could certainly borrow it for a while to ensure that this patch set goes smoothly on it.

Look at this email with information how to build u-boot and run in qemu:
http://lists.denx.de/pipermail/u-boot/2015-January/200171.html

Quoted 10 lines
Quoted 7 lines
Quoted 5 lines
Quoted 3 lines

If you're interested, you're welcome to look at the issue and suggest what changes should be made to make the set compatible with the N900!

Do not hide/mask/remove that required asm function. That should be all.

And why is change to file board/nokia/rx51/lowlevel_init.S required?

See my comment above.

Signature · 2 lines
Pali Roh?r
pali.rohar at gmail.com
#19 lore raw

v2 cover omap-common: Common boot code OMAP3 support and SYS_BOOT-based fallback boot device

Le mercredi 10 juin 2015 ? 13:35 +0200, Pali Roh?r a ?crit :

Quoted 43 lines · On Wednesday 10 June 2015 12:58:11 Paul Kocialkowski wrote:
Quoted 33 lines

Le mercredi 10 juin 2015 ? 12:42 +0200, Pali Roh?r a ?crit :

Quoted 32 lines · On Wednesday 10 June 2015 12:34:39 Pali Roh?r wrote:
Quoted 31 lines · On Wednesday 10 June 2015 11:54:00 Paul Kocialkowski wrote:
Quoted 11 lines

Le mardi 09 juin 2015 ? 20:34 +0200, Pali Roh?r a ?crit :

Quoted 10 lines · On Tuesday 09 June 2015 18:28:29 Pali Roh?r wrote:
Quoted 8 lines · On Monday 08 June 2015 23:24:18 Paul Kocialkowski wrote:
Quoted 3 lines

I would be very glad to see board maintainers give a go at the changeset before it gets merged, especially on devices like the Nokia RX-51 (N900) where some specific adaptation was needed.

So U-Boot is broken since e11c6c279d823dc0d2f470c5c2e3c0a9854a640f (see other email thread). Until somebody fix that broken commit, I cannot test your new patches in qemu or on (real) Nokia N900.

Quoted 8 lines
Quoted 4 lines

Now I tested this patch series on top of u-boot master with applied my patch "Nokia RX-51: Fix calculating return address in save_boot_params".

And it really as I thought broke booting U-Boot on Nokia N900 in qemu.

I'm confused here -- did you try booting on the actual device or in qemu?

I tested your changes only in qemu. But because you removed (or better masked) required lowlevel asm code, it will not work on real n900 too.

Quoted 6 lines
Quoted 1 line

So this patch series is NAK from my side.

Thanks for testing. Of course, the point is to make another version of the patch set that fits the N900 too, since we really need to integrate the omap3 to the common omap boot mechanism anyways.

Quoted 8 lines
Quoted 3 lines
Quoted 3 lines

Make sure that asm function in rx51 lowlevel asm file is called immediately from start.S. It is required. Basically no modification to that function should be needed (maybe just fixing return address in lr).

The problem is that this declaration conflicts with the one from omap-common's lowlevel_init.S. I understand that it is not needed for the RX-51 since it is not loaded by the U-Boot SPL or by the bootrom.

Quoted 7 lines

Yes.

Quoted 3 lines

Perhaps the best way to do things here would be to have a config option clearly stating that it should not expect the booting device information structure in r0. This situation is not specific to the RX-51 anyways.

Sounds good.

I just sent out v3 that fixes n900 support the way I suggested. I was able to get my hands on the device and along with the patch you sent out earlier this week, everything seems to work fine.

Signature · 16 lines
Paul Kocialkowski, Replicant developer

Replicant is a fully free Android distribution running on several
devices, a free software mobile operating system putting the emphasis on
freedom and privacy/security.

Website: http://www.replicant.us/
Blog: http://blog.replicant.us/
Wiki/tracker/forums: http://redmine.replicant.us/
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 819 bytes
Desc: This is a digitally signed message part
URL: <http://lists.denx.de/pipermail/u-boot/attachments/20150612/335af96f/attachment.sig>
#20 lore raw

v2 cover omap-common: Common boot code OMAP3 support and SYS_BOOT-based fallback boot device

Quoted 50 lines · On Friday 12 June 2015 13:32:56 Paul Kocialkowski wrote:

Le mercredi 10 juin 2015 ? 13:35 +0200, Pali Roh?r a ?crit :

Quoted 49 lines · On Wednesday 10 June 2015 12:58:11 Paul Kocialkowski wrote:
Quoted 33 lines

Le mercredi 10 juin 2015 ? 12:42 +0200, Pali Roh?r a ?crit :

Quoted 32 lines · On Wednesday 10 June 2015 12:34:39 Pali Roh?r wrote:
Quoted 31 lines · On Wednesday 10 June 2015 11:54:00 Paul Kocialkowski wrote:
Quoted 11 lines

Le mardi 09 juin 2015 ? 20:34 +0200, Pali Roh?r a ?crit :

Quoted 10 lines · On Tuesday 09 June 2015 18:28:29 Pali Roh?r wrote:
Quoted 8 lines · On Monday 08 June 2015 23:24:18 Paul Kocialkowski wrote:
Quoted 3 lines

I would be very glad to see board maintainers give a go at the changeset before it gets merged, especially on devices like the Nokia RX-51 (N900) where some specific adaptation was needed.

So U-Boot is broken since e11c6c279d823dc0d2f470c5c2e3c0a9854a640f (see other email thread). Until somebody fix that broken commit, I cannot test your new patches in qemu or on (real) Nokia N900.

Quoted 8 lines
Quoted 4 lines

Now I tested this patch series on top of u-boot master with applied my patch "Nokia RX-51: Fix calculating return address in save_boot_params".

And it really as I thought broke booting U-Boot on Nokia N900 in qemu.

I'm confused here -- did you try booting on the actual device or in qemu?

I tested your changes only in qemu. But because you removed (or better masked) required lowlevel asm code, it will not work on real n900 too.

Quoted 6 lines
Quoted 1 line

So this patch series is NAK from my side.

Thanks for testing. Of course, the point is to make another version of the patch set that fits the N900 too, since we really need to integrate the omap3 to the common omap boot mechanism anyways.

Quoted 8 lines
Quoted 3 lines
Quoted 3 lines

Make sure that asm function in rx51 lowlevel asm file is called immediately from start.S. It is required. Basically no modification to that function should be needed (maybe just fixing return address in lr).

The problem is that this declaration conflicts with the one from omap-common's lowlevel_init.S. I understand that it is not needed for the RX-51 since it is not loaded by the U-Boot SPL or by the bootrom.

Yes.

Quoted 3 lines

Perhaps the best way to do things here would be to have a config option clearly stating that it should not expect the booting device information structure in r0. This situation is not specific to the RX-51 anyways.

Quoted 6 lines
Quoted 1 line

Sounds good.

I just sent out v3 that fixes n900 support the way I suggested. I was able to get my hands on the device and along with the patch you sent out earlier this week, everything seems to work fine.

Hello,

have you also tested that "combined" image of u-boot and linux kernel (in uImage format) is working fine? That u-boot can boot that "attached" kernel image without problem.

Script for generating "combined" image from u-boot.bin and uImage kernel:
https://gitorious.org/u-boot-shr/u-boot/source/maemo:debian/u-boot-gen-combined

You can boot "attached" kernel via u-boot command "run attachboot".

Signature · 2 lines
Pali Roh?r
pali.rohar at gmail.com
#21 lore raw

v2 cover omap-common: Common boot code OMAP3 support and SYS_BOOT-based fallback boot device

Le vendredi 12 juin 2015 ? 13:56 +0200, Pali Roh?r a ?crit :

Quoted 60 lines · On Friday 12 June 2015 13:32:56 Paul Kocialkowski wrote:
Quoted 50 lines

Le mercredi 10 juin 2015 ? 13:35 +0200, Pali Roh?r a ?crit :

Quoted 49 lines · On Wednesday 10 June 2015 12:58:11 Paul Kocialkowski wrote:
Quoted 33 lines

Le mercredi 10 juin 2015 ? 12:42 +0200, Pali Roh?r a ?crit :

Quoted 32 lines · On Wednesday 10 June 2015 12:34:39 Pali Roh?r wrote:
Quoted 31 lines · On Wednesday 10 June 2015 11:54:00 Paul Kocialkowski wrote:
Quoted 11 lines

Le mardi 09 juin 2015 ? 20:34 +0200, Pali Roh?r a ?crit :

Quoted 10 lines · On Tuesday 09 June 2015 18:28:29 Pali Roh?r wrote:
Quoted 8 lines · On Monday 08 June 2015 23:24:18 Paul Kocialkowski wrote:
Quoted 3 lines

I would be very glad to see board maintainers give a go at the changeset before it gets merged, especially on devices like the Nokia RX-51 (N900) where some specific adaptation was needed.

So U-Boot is broken since e11c6c279d823dc0d2f470c5c2e3c0a9854a640f (see other email thread). Until somebody fix that broken commit, I cannot test your new patches in qemu or on (real) Nokia N900.

Quoted 8 lines
Quoted 4 lines

Now I tested this patch series on top of u-boot master with applied my patch "Nokia RX-51: Fix calculating return address in save_boot_params".

And it really as I thought broke booting U-Boot on Nokia N900 in qemu.

I'm confused here -- did you try booting on the actual device or in qemu?

I tested your changes only in qemu. But because you removed (or better masked) required lowlevel asm code, it will not work on real n900 too.

Quoted 6 lines
Quoted 1 line

So this patch series is NAK from my side.

Thanks for testing. Of course, the point is to make another version of the patch set that fits the N900 too, since we really need to integrate the omap3 to the common omap boot mechanism anyways.

Quoted 8 lines
Quoted 3 lines
Quoted 3 lines

Make sure that asm function in rx51 lowlevel asm file is called immediately from start.S. It is required. Basically no modification to that function should be needed (maybe just fixing return address in lr).

The problem is that this declaration conflicts with the one from omap-common's lowlevel_init.S. I understand that it is not needed for the RX-51 since it is not loaded by the U-Boot SPL or by the bootrom.

Yes.

Quoted 3 lines

Perhaps the best way to do things here would be to have a config option clearly stating that it should not expect the booting device information structure in r0. This situation is not specific to the RX-51 anyways.

Quoted 6 lines
Quoted 1 line

Sounds good.

I just sent out v3 that fixes n900 support the way I suggested. I was able to get my hands on the device and along with the patch you sent out earlier this week, everything seems to work fine.

Hello,

Quoted 8 lines

have you also tested that "combined" image of u-boot and linux kernel (in uImage format) is working fine? That u-boot can boot that "attached" kernel image without problem.

Script for generating "combined" image from u-boot.bin and uImage kernel:
https://gitorious.org/u-boot-shr/u-boot/source/maemo:debian/u-boot-gen-combined

You can boot "attached" kernel via u-boot command "run attachboot".

I haven't tried that, but since I have removed the changes I added to the rx51-specific lowlevel_init.S, I expect that nothing should have changed on this side.

I do not have serial on the device, so it's harder for me to figure out whether a kernel will run fine (I would need a graphical indication on the screen).

You're welcome to test that it still works, though.

Signature · 16 lines
Paul Kocialkowski, Replicant developer

Replicant is a fully free Android distribution running on several
devices, a free software mobile operating system putting the emphasis on
freedom and privacy/security.

Website: http://www.replicant.us/
Blog: http://blog.replicant.us/
Wiki/tracker/forums: http://redmine.replicant.us/
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 819 bytes
Desc: This is a digitally signed message part
URL: <http://lists.denx.de/pipermail/u-boot/attachments/20150612/e096f676/attachment.sig>
#22 lore raw

v2 cover omap-common: Common boot code OMAP3 support and SYS_BOOT-based fallback boot device

Quoted 74 lines · On Friday 12 June 2015 15:01:47 Paul Kocialkowski wrote:

Le vendredi 12 juin 2015 ? 13:56 +0200, Pali Roh?r a ?crit :

Quoted 60 lines · On Friday 12 June 2015 13:32:56 Paul Kocialkowski wrote:
Quoted 50 lines

Le mercredi 10 juin 2015 ? 13:35 +0200, Pali Roh?r a ?crit :

Quoted 49 lines · On Wednesday 10 June 2015 12:58:11 Paul Kocialkowski wrote:
Quoted 33 lines

Le mercredi 10 juin 2015 ? 12:42 +0200, Pali Roh?r a ?crit :

Quoted 32 lines · On Wednesday 10 June 2015 12:34:39 Pali Roh?r wrote:
Quoted 31 lines · On Wednesday 10 June 2015 11:54:00 Paul Kocialkowski wrote:
Quoted 11 lines

Le mardi 09 juin 2015 ? 20:34 +0200, Pali Roh?r a ?crit :

Quoted 10 lines · On Tuesday 09 June 2015 18:28:29 Pali Roh?r wrote:
Quoted 8 lines · On Monday 08 June 2015 23:24:18 Paul Kocialkowski wrote:
Quoted 3 lines

I would be very glad to see board maintainers give a go at the changeset before it gets merged, especially on devices like the Nokia RX-51 (N900) where some specific adaptation was needed.

So U-Boot is broken since e11c6c279d823dc0d2f470c5c2e3c0a9854a640f (see other email thread). Until somebody fix that broken commit, I cannot test your new patches in qemu or on (real) Nokia N900.

Quoted 8 lines
Quoted 4 lines

Now I tested this patch series on top of u-boot master with applied my patch "Nokia RX-51: Fix calculating return address in save_boot_params".

And it really as I thought broke booting U-Boot on Nokia N900 in qemu.

I'm confused here -- did you try booting on the actual device or in qemu?

I tested your changes only in qemu. But because you removed (or better masked) required lowlevel asm code, it will not work on real n900 too.

Quoted 6 lines
Quoted 1 line

So this patch series is NAK from my side.

Thanks for testing. Of course, the point is to make another version of the patch set that fits the N900 too, since we really need to integrate the omap3 to the common omap boot mechanism anyways.

Quoted 8 lines
Quoted 3 lines
Quoted 3 lines

Make sure that asm function in rx51 lowlevel asm file is called immediately from start.S. It is required. Basically no modification to that function should be needed (maybe just fixing return address in lr).

The problem is that this declaration conflicts with the one from omap-common's lowlevel_init.S. I understand that it is not needed for the RX-51 since it is not loaded by the U-Boot SPL or by the bootrom.

Yes.

Quoted 3 lines

Perhaps the best way to do things here would be to have a config option clearly stating that it should not expect the booting device information structure in r0. This situation is not specific to the RX-51 anyways.

Quoted 6 lines
Quoted 1 line

Sounds good.

I just sent out v3 that fixes n900 support the way I suggested. I was able to get my hands on the device and along with the patch you sent out earlier this week, everything seems to work fine.

Hello,

Quoted 8 lines

have you also tested that "combined" image of u-boot and linux kernel (in uImage format) is working fine? That u-boot can boot that "attached" kernel image without problem.

Script for generating "combined" image from u-boot.bin and uImage kernel:
https://gitorious.org/u-boot-shr/u-boot/source/maemo:debian/u-boot-gen-combined

You can boot "attached" kernel via u-boot command "run attachboot".

I haven't tried that, but since I have removed the changes I added to the rx51-specific lowlevel_init.S, I expect that nothing should have changed on this side.

Quoted 6 lines

I do not have serial on the device, so it's harder for me to figure out whether a kernel will run fine (I would need a graphical indication on the screen).

You're welcome to test that it still works, though.

If you compile fbdev into kernel image then you should see something on screen... But I will try to test new patch series at the weekend.

Signature · 2 lines
Pali Roh?r
pali.rohar at gmail.com
#23 lore raw

v2 cover omap-common: Common boot code OMAP3 support and SYS_BOOT-based fallback boot device

Le vendredi 12 juin 2015 ? 15:10 +0200, Pali Roh?r a ?crit :

Quoted 79 lines · On Friday 12 June 2015 15:01:47 Paul Kocialkowski wrote:
Quoted 78 lines

Le vendredi 12 juin 2015 ? 13:56 +0200, Pali Roh?r a ?crit :

Quoted 60 lines · On Friday 12 June 2015 13:32:56 Paul Kocialkowski wrote:
Quoted 50 lines

Le mercredi 10 juin 2015 ? 13:35 +0200, Pali Roh?r a ?crit :

Quoted 49 lines · On Wednesday 10 June 2015 12:58:11 Paul Kocialkowski wrote:
Quoted 33 lines

Le mercredi 10 juin 2015 ? 12:42 +0200, Pali Roh?r a ?crit :

Quoted 32 lines · On Wednesday 10 June 2015 12:34:39 Pali Roh?r wrote:
Quoted 31 lines · On Wednesday 10 June 2015 11:54:00 Paul Kocialkowski wrote:
Quoted 11 lines

Le mardi 09 juin 2015 ? 20:34 +0200, Pali Roh?r a ?crit :

Quoted 10 lines · On Tuesday 09 June 2015 18:28:29 Pali Roh?r wrote:
Quoted 8 lines · On Monday 08 June 2015 23:24:18 Paul Kocialkowski wrote:
Quoted 3 lines

I would be very glad to see board maintainers give a go at the changeset before it gets merged, especially on devices like the Nokia RX-51 (N900) where some specific adaptation was needed.

So U-Boot is broken since e11c6c279d823dc0d2f470c5c2e3c0a9854a640f (see other email thread). Until somebody fix that broken commit, I cannot test your new patches in qemu or on (real) Nokia N900.

Quoted 8 lines
Quoted 4 lines

Now I tested this patch series on top of u-boot master with applied my patch "Nokia RX-51: Fix calculating return address in save_boot_params".

And it really as I thought broke booting U-Boot on Nokia N900 in qemu.

I'm confused here -- did you try booting on the actual device or in qemu?

I tested your changes only in qemu. But because you removed (or better masked) required lowlevel asm code, it will not work on real n900 too.

Quoted 6 lines
Quoted 1 line

So this patch series is NAK from my side.

Thanks for testing. Of course, the point is to make another version of the patch set that fits the N900 too, since we really need to integrate the omap3 to the common omap boot mechanism anyways.

Quoted 8 lines
Quoted 3 lines
Quoted 3 lines

Make sure that asm function in rx51 lowlevel asm file is called immediately from start.S. It is required. Basically no modification to that function should be needed (maybe just fixing return address in lr).

The problem is that this declaration conflicts with the one from omap-common's lowlevel_init.S. I understand that it is not needed for the RX-51 since it is not loaded by the U-Boot SPL or by the bootrom.

Yes.

Quoted 3 lines

Perhaps the best way to do things here would be to have a config option clearly stating that it should not expect the booting device information structure in r0. This situation is not specific to the RX-51 anyways.

Quoted 6 lines
Quoted 1 line

Sounds good.

I just sent out v3 that fixes n900 support the way I suggested. I was able to get my hands on the device and along with the patch you sent out earlier this week, everything seems to work fine.

Hello,

Quoted 8 lines

have you also tested that "combined" image of u-boot and linux kernel (in uImage format) is working fine? That u-boot can boot that "attached" kernel image without problem.

Script for generating "combined" image from u-boot.bin and uImage kernel:
https://gitorious.org/u-boot-shr/u-boot/source/maemo:debian/u-boot-gen-combined

You can boot "attached" kernel via u-boot command "run attachboot".

I haven't tried that, but since I have removed the changes I added to the rx51-specific lowlevel_init.S, I expect that nothing should have changed on this side.

I do not have serial on the device, so it's harder for me to figure out whether a kernel will run fine (I would need a graphical indication on the screen).

Quoted 5 lines
Quoted 2 lines

You're welcome to test that it still works, though.

If you compile fbdev into kernel image then you should see something on screen... But I will try to test new patch series at the weekend.

Of course, I could always do that, but as far as I'm concerned, this patch set works as expected on the n900 and any further testing, while being greatly appreciated, should not be necessary.

Signature · 16 lines
Paul Kocialkowski, Replicant developer

Replicant is a fully free Android distribution running on several
devices, a free software mobile operating system putting the emphasis on
freedom and privacy/security.

Website: http://www.replicant.us/
Blog: http://blog.replicant.us/
Wiki/tracker/forums: http://redmine.replicant.us/
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 819 bytes
Desc: This is a digitally signed message part
URL: <http://lists.denx.de/pipermail/u-boot/attachments/20150612/2bdc8647/attachment.sig>
#24 lore raw

v2 cover omap-common: Common boot code OMAP3 support and SYS_BOOT-based fallback boot device

In reply to Pali Rohár
Quoted 7 lines · Pali Roh?r
Quoted 3 lines · On Monday 08 June 2015 23:24:18 Paul Kocialkowski wrote:

I would be very glad to see board maintainers give a go at the changeset before it gets merged, especially on devices like the Nokia RX-51 (N900) where some specific adaptation was needed.

So U-Boot is broken since e11c6c279d823dc0d2f470c5c2e3c0a9854a640f (see other email thread

Would be nice if you added a link to the thread in some mail archive ...

Quoted 2 lines

). Until somebody fix that broken commit, I cannot test your new patches in qemu or on (real) Nokia N900.

What about you fixing it ? ;-)

Best regards,
Marek Vasut

#25 lore raw

v2 cover omap-common: Common boot code OMAP3 support and SYS_BOOT-based fallback boot device

Quoted 13 lines · On Wednesday 10 June 2015 06:27:37 Marek Vasut wrote:
Quoted 8 lines · Pali Roh?r
Quoted 4 lines · On Monday 08 June 2015 23:24:18 Paul Kocialkowski wrote:

I would be very glad to see board maintainers give a go at the changeset before it gets merged, especially on devices like the Nokia RX-51 (N900) where some specific adaptation was needed.

So U-Boot is broken since e11c6c279d823dc0d2f470c5c2e3c0a9854a640f (see other email thread

Would be nice if you added a link to the thread in some mail archive
...

Quoted 7 lines
Quoted 2 lines

). Until somebody fix that broken commit, I cannot test your new patches in qemu or on (real) Nokia N900.

What about you fixing it ? ;-)

Best regards,
Marek Vasut

Yesterday I sent patch which fixing that problem.

Signature · 9 lines
Pali Roh?r
pali.rohar at gmail.com
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 198 bytes
Desc: This is a digitally signed message part.
URL: <http://lists.denx.de/pipermail/u-boot/attachments/20150610/460a9546/attachment.sig>
#26 lore raw

v2 cover omap-common: Common boot code OMAP3 support and SYS_BOOT-based fallback boot device

In reply to Marek Vasut
Quoted 9 lines · Marek Vasut
Quoted 7 lines · Pali Roh?r
Quoted 3 lines · On Monday 08 June 2015 23:24:18 Paul Kocialkowski wrote:

I would be very glad to see board maintainers give a go at the changeset before it gets merged, especially on devices like the Nokia RX-51 (N900) where some specific adaptation was needed.

So U-Boot is broken since e11c6c279d823dc0d2f470c5c2e3c0a9854a640f (see other email thread

Quoted 6 lines

Would be nice if you added a link to the thread in some mail archive ...

Quoted 2 lines

). Until somebody fix that broken commit, I cannot test your new patches in qemu or on (real) Nokia N900.

What about you fixing it ? ;-)

Traditionally, regressions are fixed by whoever caused then, not whoever was patient enough to bisect them...

But in this case, fix is already available, so that is moot.

Pavel

Signature · 2 lines
(english) http://www.livejournal.com/~pavelmachek
(cesky, pictures) http://atrey.karlin.mff.cuni.cz/~pavel/picture/horses/blog.html
#27 lore raw

v2 cover omap-common: Common boot code OMAP3 support and SYS_BOOT-based fallback boot device

Quoted 6 lines · On Wednesday 10 June 2015 08:48:38 Pavel Machek wrote:
Quoted 1 line · Marek Vasut

What about you fixing it ? ;-)

Traditionally, regressions are fixed by whoever caused then, not whoever was patient enough to bisect them...

I agree. Who broke something should also fix it. Or revert commits which broke it.

Signature · 2 lines
Pali Roh?r
pali.rohar at gmail.com
#28 lore raw

v2 cover omap-common: Common boot code OMAP3 support and SYS_BOOT-based fallback boot device

In reply to Marek Vasut
Quoted 11 lines · On Wednesday 10 June 2015 06:27:37 Marek Vasut wrote:
Quoted 7 lines · Pali Roh?r
Quoted 3 lines · On Monday 08 June 2015 23:24:18 Paul Kocialkowski wrote:

I would be very glad to see board maintainers give a go at the changeset before it gets merged, especially on devices like the Nokia RX-51 (N900) where some specific adaptation was needed.

So U-Boot is broken since e11c6c279d823dc0d2f470c5c2e3c0a9854a640f (see other email thread

Would be nice if you added a link to the thread in some mail archive ...

What about searching for last emails ;-) It took me less then minute:
http://lists.denx.de/pipermail/u-boot/2015-June/216237.html

Patch with my fix there:
http://lists.denx.de/pipermail/u-boot/2015-June/216241.html

Signature · 2 lines
Pali Roh?r
pali.rohar at gmail.com
#29 lore raw

v2 cover omap-common: Common boot code OMAP3 support and SYS_BOOT-based fallback boot device

Quoted 7 lines · Pali Roh?r
Quoted 6 lines · On Wednesday 10 June 2015 06:27:37 Marek Vasut wrote:
Quoted 5 lines · Pali Roh?r
Quoted 3 lines · On Monday 08 June 2015 23:24:18 Paul Kocialkowski wrote:

I would be very glad to see board maintainers give a go at the changeset before it gets merged, especially on devices like the Nokia RX-51 (N900) where some specific adaptation was needed.

Quoted 6 lines
Quoted 4 lines
Quoted 2 lines

So U-Boot is broken since e11c6c279d823dc0d2f470c5c2e3c0a9854a640f (see other email thread

Would be nice if you added a link to the thread in some mail archive ...

What about searching for last emails ;-)

"See other email thread" is making my search very easy indeed ...

Quoted 5 lines

It took me less then minute:
http://lists.denx.de/pipermail/u-boot/2015-June/216237.html

Patch with my fix there:
http://lists.denx.de/pipermail/u-boot/2015-June/216241.html

Best regards,
Marek Vasut