arm/km: define fdt_high env variable and allow backwards compatibility

Add set_fdthigh subcommand to "subbootcmds" (release) so to set "fdt_high"
This is necessary on Kirkwood so that the FDT does not get relocated
above the memory limit that the kernel cannot access
(that is the memory part reserved for the switch).
This was tested on NUSA1, where it is necessary, and on ETER1, where it
doesn't seem to hurt.

We want the scripts to also work with older versions of u-boot, where:
a) set_fdthigh is not defined (will be default env for newer u-boots)
b) the fdt will not be available

For this reason, we use "set_fdthigh" to tell whether we are running
a newer (FDT-aware) u-boot or not.
So if "set_fdthigh" runs successfully or arch != arm we try loading
the fdt; otherwise we proceed normally.

Notice how, contrary to release mode, set_fdthigh will _not_ be part of
subbootcmds for develop and ramfs, but will be executed as part of
"tftpfdt".

Since this is only needed for kirkwood cards, and it prevents the kernel
from booting on QorIQ (though it seemed to work on ETER1), we change
its definition in the default env for powerpc so that the value is only
set on ARM.

Signed-off-by: Valentin Longchamp <valentin.longchamp@keymile.com>
Signed-off-by: Gerlando Falauto <gerlando.falauto@keymile.com>
Signed-off-by: Holger Brunck <holger.brunck@keymile.com>
Acked-by: Valentin Longchamp <valentin.longchamp@keymile.com>
master
Gerlando Falauto 11 years ago committed by Albert ARIBAUD
parent 7b2268b88f
commit b1c2a7ae32
  1. 2
      board/keymile/scripts/develop-common.txt
  2. 2
      board/keymile/scripts/ramfs-common.txt
  3. 4
      include/configs/km/keymile-common.h
  4. 1
      include/configs/km/km-powerpc.h
  5. 1
      include/configs/km/km_arm.h
  6. 1
      include/configs/km/kmp204x-common.h

@ -3,7 +3,7 @@ bootcmd=run ${subbootcmds}
configure=run set_uimage; km_setboardid && saveenv && reset configure=run set_uimage; km_setboardid && saveenv && reset
subbootcmds=tftpfdt tftpkernel nfsargs add_default boot subbootcmds=tftpfdt tftpkernel nfsargs add_default boot
nfsargs=setenv bootargs root=/dev/nfs rw nfsroot=${serverip}:${toolchain}/${arch} nfsargs=setenv bootargs root=/dev/nfs rw nfsroot=${serverip}:${toolchain}/${arch}
tftpfdt=tftpboot ${fdt_addr_r} ${hostname}/${hostname}.dtb tftpfdt=if run set_fdthigh || test ${arch} != arm; then tftpboot ${fdt_addr_r} ${hostname}/${hostname}.dtb; else true; fi
tftpkernel=tftpboot ${load_addr_r} ${hostname}/${uimage} tftpkernel=tftpboot ${load_addr_r} ${hostname}/${uimage}
toolchain=/opt/eldk toolchain=/opt/eldk
rootfssize=0 rootfssize=0

@ -7,7 +7,7 @@ nfsargs=setenv bootargs root=/dev/nfs rw nfsroot=${serverip}:${rootpath}
configure=run set_uimage; km_setboardid && saveenv && reset configure=run set_uimage; km_setboardid && saveenv && reset
rootfsfile=${hostname}/rootfsImage rootfsfile=${hostname}/rootfsImage
setrootfsaddr=setexpr value ${pnvramaddr} - ${rootfssize} && setenv rootfsaddr 0x${value} setrootfsaddr=setexpr value ${pnvramaddr} - ${rootfssize} && setenv rootfsaddr 0x${value}
tftpfdt=tftpboot ${fdt_addr_r} ${hostname}/${hostname}.dtb tftpfdt=if run set_fdthigh || test ${arch} != arm; then tftpboot ${fdt_addr_r} ${hostname}/${hostname}.dtb; else true; fi
tftpkernel=tftpboot ${load_addr_r} ${hostname}/${uimage} tftpkernel=tftpboot ${load_addr_r} ${hostname}/${uimage}
tftpramfs=tftpboot ${rootfsaddr} ${hostname}/rootfsImage tftpramfs=tftpboot ${rootfsaddr} ${hostname}/rootfsImage
set_uimage=printenv uimage || setenv uimage uImage set_uimage=printenv uimage || setenv uimage uImage

@ -135,8 +135,8 @@
* - 'release': for a standalone system kernel/rootfs from flash * - 'release': for a standalone system kernel/rootfs from flash
*/ */
#define CONFIG_KM_DEF_ENV_BOOTTARGETS \ #define CONFIG_KM_DEF_ENV_BOOTTARGETS \
"subbootcmds=ubiattach ubicopy cramfsloadfdt cramfsloadkernel " \ "subbootcmds=ubiattach ubicopy cramfsloadfdt set_fdthigh " \
"flashargs add_default addpanic boot\0" \ "cramfsloadkernel flashargs add_default addpanic boot\0"\
"develop=" \ "develop=" \
"tftp 200000 scripts/develop-${arch}.txt && " \ "tftp 200000 scripts/develop-${arch}.txt && " \
"env import -t 200000 ${filesize} && " \ "env import -t 200000 ${filesize} && " \

@ -77,6 +77,7 @@
"cp.b ${load_addr_r} " __stringify(BOOTFLASH_START) \ "cp.b ${load_addr_r} " __stringify(BOOTFLASH_START) \
" ${filesize} && " \ " ${filesize} && " \
"protect on " __stringify(BOOTFLASH_START) " +${filesize}\0"\ "protect on " __stringify(BOOTFLASH_START) " +${filesize}\0"\
"set_fdthigh=true\0" \
"" ""
#endif /* __CONFIG_KEYMILE_POWERPC_H */ #endif /* __CONFIG_KEYMILE_POWERPC_H */

@ -81,6 +81,7 @@
#define CONFIG_KM_DEF_ENV_CPU \ #define CONFIG_KM_DEF_ENV_CPU \
"u-boot="__stringify(CONFIG_HOSTNAME) "/u-boot.kwb\0" \ "u-boot="__stringify(CONFIG_HOSTNAME) "/u-boot.kwb\0" \
CONFIG_KM_UPDATE_UBOOT \ CONFIG_KM_UPDATE_UBOOT \
"set_fdthigh=setenv fdt_high ${kernelmem}\0" \
"" ""
#define CONFIG_SKIP_LOWLEVEL_INIT /* disable board lowlevel_init */ #define CONFIG_SKIP_LOWLEVEL_INIT /* disable board lowlevel_init */

@ -420,6 +420,7 @@ unsigned long get_board_sys_clk(unsigned long dummy);
"update=" \ "update=" \
"sf probe 0;sf erase 0 +${filesize};" \ "sf probe 0;sf erase 0 +${filesize};" \
"sf write ${load_addr_r} 0 ${filesize};\0" \ "sf write ${load_addr_r} 0 ${filesize};\0" \
"set_fdthigh=true\0" \
"" ""
#define CONFIG_HW_ENV_SETTINGS \ #define CONFIG_HW_ENV_SETTINGS \

Loading…
Cancel
Save