[U-Boot] [PATCH V3 0/5] ARM: OMAP4/5: Add support to boot with device tree as default

With the kernel moving all towards device tree, this series adds support to make the device tree boot as the default for OMAP4/5 platforms.
Nishanth Menon (1): omap5: Allow use of a plain text env file
Sricharan R (4): ARM: OMAP5: Rename omap5_evm to omap5_uevm ARM: OMAP5: Set fdt_high to enable booting with Device tree ARM: OMAP4/5: Change the default boot command to work with device tree ARM: OMAP4/5: Make bootz as the default boot command
board/ti/{omap5_evm => omap5_uevm}/Makefile | 0 board/ti/{omap5_evm => omap5_uevm}/evm.c | 0 board/ti/{omap5_evm => omap5_uevm}/mux_data.h | 0 boards.cfg | 2 +- include/configs/omap4_common.h | 17 ++++++++++---- include/configs/omap5_common.h | 30 ++++++++++++++++++++----- include/configs/{omap5_evm.h => omap5_uevm.h} | 0 7 files changed, 38 insertions(+), 11 deletions(-) rename board/ti/{omap5_evm => omap5_uevm}/Makefile (100%) rename board/ti/{omap5_evm => omap5_uevm}/evm.c (100%) rename board/ti/{omap5_evm => omap5_uevm}/mux_data.h (100%) rename include/configs/{omap5_evm.h => omap5_uevm.h} (100%)

The omap5-uevm is the reference board name for OMAP5 soc based platform. So rename it accordingly.
Acked-by: Nishanth Menon nm@ti.com Signed-off-by: Sricharan R r.sricharan@ti.com Tested-by: Nishanth Menon nm@ti.com --- [V2] Formatted the patch using -M option to detect renames and edited the subject [V3] No change
board/ti/{omap5_evm => omap5_uevm}/Makefile | 0 board/ti/{omap5_evm => omap5_uevm}/evm.c | 0 board/ti/{omap5_evm => omap5_uevm}/mux_data.h | 0 boards.cfg | 2 +- include/configs/{omap5_evm.h => omap5_uevm.h} | 0 5 files changed, 1 insertion(+), 1 deletion(-) rename board/ti/{omap5_evm => omap5_uevm}/Makefile (100%) rename board/ti/{omap5_evm => omap5_uevm}/evm.c (100%) rename board/ti/{omap5_evm => omap5_uevm}/mux_data.h (100%) rename include/configs/{omap5_evm.h => omap5_uevm.h} (100%)
diff --git a/board/ti/omap5_evm/Makefile b/board/ti/omap5_uevm/Makefile similarity index 100% rename from board/ti/omap5_evm/Makefile rename to board/ti/omap5_uevm/Makefile diff --git a/board/ti/omap5_evm/evm.c b/board/ti/omap5_uevm/evm.c similarity index 100% rename from board/ti/omap5_evm/evm.c rename to board/ti/omap5_uevm/evm.c diff --git a/board/ti/omap5_evm/mux_data.h b/board/ti/omap5_uevm/mux_data.h similarity index 100% rename from board/ti/omap5_evm/mux_data.h rename to board/ti/omap5_uevm/mux_data.h diff --git a/boards.cfg b/boards.cfg index ee68fdd..c9ad3ff 100644 --- a/boards.cfg +++ b/boards.cfg @@ -291,7 +291,7 @@ twister arm armv7 twister technex nokia_rx51 arm armv7 rx51 nokia omap3 omap4_panda arm armv7 panda ti omap4 omap4_sdp4430 arm armv7 sdp4430 ti omap4 -omap5_evm arm armv7 omap5_evm ti omap5 +omap5_uevm arm armv7 omap5_uevm ti omap5 dra7xx_evm arm armv7 dra7xx ti omap5 s5p_goni arm armv7 goni samsung s5pc1xx smdkc100 arm armv7 smdkc100 samsung s5pc1xx diff --git a/include/configs/omap5_evm.h b/include/configs/omap5_uevm.h similarity index 100% rename from include/configs/omap5_evm.h rename to include/configs/omap5_uevm.h

While booting with dt blob, if fdt_high is not set to 0xffffffff, the dt blob gets relocated to a high ram address, which the kernel is not able to use without HIGHMEM.
So set it to 0xffffffff to avoid the issue.
Acked-by: Nishanth Menon nm@ti.com Signed-off-by: Sricharan R r.sricharan@ti.com Tested-by: Nishanth Menon nm@ti.com --- include/configs/omap5_common.h | 1 + 1 file changed, 1 insertion(+)
diff --git a/include/configs/omap5_common.h b/include/configs/omap5_common.h index af97564..f0416df 100644 --- a/include/configs/omap5_common.h +++ b/include/configs/omap5_common.h @@ -143,6 +143,7 @@ #define CONFIG_EXTRA_ENV_SETTINGS \ "loadaddr=0x82000000\0" \ "console=ttyO2,115200n8\0" \ + "fdt_high=0xffffffff\0" \ "usbtty=cdc_acm\0" \ "vram=16M\0" \ "mmcdev=0\0" \

From: Nishanth Menon nm@ti.com
For production systems it is better to use script images since they are protected by checksums and carry valuable information like name and timestamp. Also, you can't validate the content passed to env import.
But for development, it is easier to use the env import command and plain text files instead of script-images.
Since both OMAP5evm/uevm boards are used primarily for development, we allow U-Boot to load env var from a text file in case that an boot.scr script-image is not present.
The variable uenvcmd (if existent) will be executed (using run) after uEnv.txt was loaded. If uenvcmd doesn't exist the default boot sequence will be started.
Inspired by commit: d70f54808dfa83b574e1239c3eccbcf3317343e1 (omap4: allow the use of a plain text env file instead boot scripts)
Signed-off-by: Sricharan R r.sricharan@ti.com Signed-off-by: Nishanth Menon nm@ti.com Tested-by: Sricharan R r.sricharan@ti.com --- include/configs/omap5_common.h | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-)
diff --git a/include/configs/omap5_common.h b/include/configs/omap5_common.h index f0416df..6d7aa7b 100644 --- a/include/configs/omap5_common.h +++ b/include/configs/omap5_common.h @@ -156,6 +156,9 @@ "loadbootscript=fatload mmc ${mmcdev} ${loadaddr} boot.scr\0" \ "bootscript=echo Running bootscript from mmc${mmcdev} ...; " \ "source ${loadaddr}\0" \ + "loadbootenv=fatload mmc ${mmcdev} ${loadaddr} uEnv.txt\0" \ + "importbootenv=echo Importing environment from mmc${mmcdev} ...; " \ + "env import -t ${loadaddr} ${filesize}\0" \ "loaduimage=fatload mmc ${mmcdev} ${loadaddr} uImage\0" \ "mmcboot=echo Booting from mmc${mmcdev} ...; " \ "run mmcargs; " \ @@ -166,9 +169,16 @@ "if run loadbootscript; then " \ "run bootscript; " \ "else " \ - "if run loaduimage; then " \ - "run mmcboot; " \ - "fi; " \ + "if run loadbootenv; then " \ + "run importbootenv; " \ + "fi;" \ + "if test -n ${uenvcmd}; then " \ + "echo Running uenvcmd ...;" \ + "run uenvcmd;" \ + "fi;" \ + "fi;" \ + "if run loaduimage; then " \ + "run mmcboot; " \ "fi; " \ "fi"

Now with kernel moving to all device tree, the default boot command is changed to pass the device tree blob. Also, adding the findfdt command to get the dt-blob based on the board.
Thanks to Tom Rini trini@ti.com for suggesting this.
Acked-by: Nishanth Menon nm@ti.com Signed-off-by: Sricharan R r.sricharan@ti.com Tested-by: Nishanth Menon nm@ti.com --- [V2] Corrected the board file name for omap4 boards in findfdt command [V3] Changed fdtaddr as per Tom Rini's comments
include/configs/omap4_common.h | 13 +++++++++++-- include/configs/omap5_common.h | 11 +++++++++-- 2 files changed, 20 insertions(+), 4 deletions(-)
diff --git a/include/configs/omap4_common.h b/include/configs/omap4_common.h index 6ae6a0f..f34c130 100644 --- a/include/configs/omap4_common.h +++ b/include/configs/omap4_common.h @@ -138,6 +138,7 @@ */
#define CONFIG_BOOTDELAY 3 +#define CONFIG_ENV_VARS_UBOOT_CONFIG
#define CONFIG_ENV_OVERWRITE
@@ -145,6 +146,7 @@ "loadaddr=0x82000000\0" \ "console=ttyO2,115200n8\0" \ "fdt_high=0xffffffff\0" \ + "fdtaddr=0x80f80000\0" \ "usbtty=cdc_acm\0" \ "vram=16M\0" \ "mmcdev=0\0" \ @@ -153,7 +155,9 @@ "mmcargs=setenv bootargs console=${console} " \ "vram=${vram} " \ "root=${mmcroot} " \ - "rootfstype=${mmcrootfstype}\0" \ + "rootfstype=${mmcrootfstype}; " \ + "run findfdt; " \ + "fatload mmc ${mmcdev} ${fdtaddr} ${fdtfile}\0" \ "loadbootscript=fatload mmc ${mmcdev} ${loadaddr} boot.scr\0" \ "bootscript=echo Running bootscript from mmc${mmcdev} ...; " \ "source ${loadaddr}\0" \ @@ -163,7 +167,12 @@ "loaduimage=fatload mmc ${mmcdev} ${loadaddr} uImage\0" \ "mmcboot=echo Booting from mmc${mmcdev} ...; " \ "run mmcargs; " \ - "bootm ${loadaddr}\0" \ + "bootm ${loadaddr} - ${fdtaddr}\0" \ + "findfdt="\ + "if test $board_name = sdp4430; then " \ + "setenv fdtfile omap4-sdp.dtb; fi; " \ + "if test $board_name = panda; then " \ + "setenv fdtfile omap4-panda-es.dtb; fi\0" \
#define CONFIG_BOOTCOMMAND \ "mmc dev ${mmcdev}; if mmc rescan; then " \ diff --git a/include/configs/omap5_common.h b/include/configs/omap5_common.h index 6d7aa7b..bcbf9cc 100644 --- a/include/configs/omap5_common.h +++ b/include/configs/omap5_common.h @@ -137,6 +137,7 @@ */
#define CONFIG_BOOTDELAY 3 +#define CONFIG_ENV_VARS_UBOOT_CONFIG
#define CONFIG_ENV_OVERWRITE
@@ -144,6 +145,7 @@ "loadaddr=0x82000000\0" \ "console=ttyO2,115200n8\0" \ "fdt_high=0xffffffff\0" \ + "fdtaddr=0x80f80000\0" \ "usbtty=cdc_acm\0" \ "vram=16M\0" \ "mmcdev=0\0" \ @@ -152,7 +154,9 @@ "mmcargs=setenv bootargs console=${console} " \ "vram=${vram} " \ "root=${mmcroot} " \ - "rootfstype=${mmcrootfstype}\0" \ + "rootfstype=${mmcrootfstype}; " \ + "run findfdt; " \ + "fatload mmc ${mmcdev} ${fdtaddr} ${fdtfile}\0" \ "loadbootscript=fatload mmc ${mmcdev} ${loadaddr} boot.scr\0" \ "bootscript=echo Running bootscript from mmc${mmcdev} ...; " \ "source ${loadaddr}\0" \ @@ -162,7 +166,10 @@ "loaduimage=fatload mmc ${mmcdev} ${loadaddr} uImage\0" \ "mmcboot=echo Booting from mmc${mmcdev} ...; " \ "run mmcargs; " \ - "bootm ${loadaddr}\0" \ + "bootm ${loadaddr} - ${fdtaddr}\0" \ + "findfdt="\ + "if test $board_name = omap5_uevm; then " \ + "setenv fdtfile omap5-uevm.dtb; fi;\0 " \
#define CONFIG_BOOTCOMMAND \ "mmc dev ${mmcdev}; if mmc rescan; then " \

On Tue, Mar 26, 2013 at 09:57:35AM +0530, Sricharan R wrote:
Now with kernel moving to all device tree, the default boot command is changed to pass the device tree blob. Also, adding the findfdt command to get the dt-blob based on the board.
[snip]
@@ -153,7 +155,9 @@ "mmcargs=setenv bootargs console=${console} " \ "vram=${vram} " \ "root=${mmcroot} " \
"rootfstype=${mmcrootfstype}\0" \
"rootfstype=${mmcrootfstype}; " \
"run findfdt; " \
"fatload mmc ${mmcdev} ${fdtaddr} ${fdtfile}\0" \
I missed this part before, sorry. What we do on am335x_evm to allow for easier overrides is: - bootcmd runs findfdt (since we'll need it in all cases). - Enable CONFIG_CMD_FS_GENERIC - Add a 'loadfdt' command that can be called out ala loaduimage - Use 'load' in loadfdt/loaduimage so that we don't care what the underlying filesystem type is. - Use bootdir to help with overrides as well: loaduimage=load mmc ${bootpart} ${loadaddr} ${bootdir}/${bootfile} loadfdt=load mmc ${bootpart} ${fdtaddr} ${bootdir}/${fdtfile}
So that we can easily grab from the first partition (FAT) or another partition (ext3/4/etc).

On Wednesday 27 March 2013 09:15 PM, Tom Rini wrote:
On Tue, Mar 26, 2013 at 09:57:35AM +0530, Sricharan R wrote:
Now with kernel moving to all device tree, the default boot command is changed to pass the device tree blob. Also, adding the findfdt command to get the dt-blob based on the board.
[snip]
@@ -153,7 +155,9 @@ "mmcargs=setenv bootargs console=${console} " \ "vram=${vram} " \ "root=${mmcroot} " \
"rootfstype=${mmcrootfstype}\0" \
"rootfstype=${mmcrootfstype}; " \
"run findfdt; " \
"fatload mmc ${mmcdev} ${fdtaddr} ${fdtfile}\0" \
I missed this part before, sorry. What we do on am335x_evm to allow for easier overrides is:
- bootcmd runs findfdt (since we'll need it in all cases).
- Enable CONFIG_CMD_FS_GENERIC
- Add a 'loadfdt' command that can be called out ala loaduimage
- Use 'load' in loadfdt/loaduimage so that we don't care what the underlying filesystem type is.
- Use bootdir to help with overrides as well:
loaduimage=load mmc ${bootpart} ${loadaddr} ${bootdir}/${bootfile} loadfdt=load mmc ${bootpart} ${fdtaddr} ${bootdir}/${fdtfile}
So that we can easily grab from the first partition (FAT) or another partition (ext3/4/etc).
Yeah, liked this. Thanks for detailed explanation. Will add this then for better.
Regards, Sricharan

So with OMAP added to multi platform kernel, the uImage no more contains a valid load address. With the uboot already supporting zImage, change the default boot command to bootz instead.
Acked-by: Nishanth Menon nm@ti.com Signed-off-by: Sricharan R r.sricharan@ti.com Tested-by: Nishanth Menon nm@ti.com --- include/configs/omap4_common.h | 6 +++--- include/configs/omap5_common.h | 6 +++--- 2 files changed, 6 insertions(+), 6 deletions(-)
diff --git a/include/configs/omap4_common.h b/include/configs/omap4_common.h index f34c130..ce32ecd 100644 --- a/include/configs/omap4_common.h +++ b/include/configs/omap4_common.h @@ -164,10 +164,10 @@ "loadbootenv=fatload mmc ${mmcdev} ${loadaddr} uEnv.txt\0" \ "importbootenv=echo Importing environment from mmc${mmcdev} ...; " \ "env import -t ${loadaddr} ${filesize}\0" \ - "loaduimage=fatload mmc ${mmcdev} ${loadaddr} uImage\0" \ + "loadzimage=fatload mmc ${mmcdev} ${loadaddr} zImage\0" \ "mmcboot=echo Booting from mmc${mmcdev} ...; " \ "run mmcargs; " \ - "bootm ${loadaddr} - ${fdtaddr}\0" \ + "bootz ${loadaddr} - ${fdtaddr}\0" \ "findfdt="\ "if test $board_name = sdp4430; then " \ "setenv fdtfile omap4-sdp.dtb; fi; " \ @@ -188,7 +188,7 @@ "run uenvcmd;" \ "fi;" \ "fi;" \ - "if run loaduimage; then " \ + "if run loadzimage; then " \ "run mmcboot; " \ "fi; " \ "fi" diff --git a/include/configs/omap5_common.h b/include/configs/omap5_common.h index bcbf9cc..535265a 100644 --- a/include/configs/omap5_common.h +++ b/include/configs/omap5_common.h @@ -163,10 +163,10 @@ "loadbootenv=fatload mmc ${mmcdev} ${loadaddr} uEnv.txt\0" \ "importbootenv=echo Importing environment from mmc${mmcdev} ...; " \ "env import -t ${loadaddr} ${filesize}\0" \ - "loaduimage=fatload mmc ${mmcdev} ${loadaddr} uImage\0" \ + "loadzimage=fatload mmc ${mmcdev} ${loadaddr} zImage\0" \ "mmcboot=echo Booting from mmc${mmcdev} ...; " \ "run mmcargs; " \ - "bootm ${loadaddr} - ${fdtaddr}\0" \ + "bootz ${loadaddr} - ${fdtaddr}\0" \ "findfdt="\ "if test $board_name = omap5_uevm; then " \ "setenv fdtfile omap5-uevm.dtb; fi;\0 " \ @@ -184,7 +184,7 @@ "run uenvcmd;" \ "fi;" \ "fi;" \ - "if run loaduimage; then " \ + "if run loadzimage; then " \ "run mmcboot; " \ "fi; " \ "fi"
participants (2)
-
Sricharan R
-
Tom Rini