Add a flattened device tree (fdt) command (2 of 2)
PATCH 6/6 Add a flattened device tree (fdt) command (2 of 2)
Modifications to the existing code to support the new fdt command.
Signed-off-by Gerald Van Baren <[email protected]>
--- README | 33 ++++++++++--- board/mpc8360emds/config.mk | 6 ++ board/mpc8360emds/mpc8360emds.c | 30 +++++++++-- board/mpc8360emds/pci.c | 20 ++++++++ common/Makefile | 2 +- common/cmd_bootm.c | 65 +++++++++++++++++++++---- cpu/mpc83xx/cpu.c | 102 ++++++++++++++++++++++++++++++++++++++- include/configs/MPC8360EMDS.h | 6 ++- 8 files changed, 237 insertions(+), 27 deletions(-)
README +25 -8
@@ -164,6 +164,7 @@ Directory Hierarchy: - lib_mips Files generic to MIPS architecture - lib_nios Files generic to NIOS architecture - lib_ppc Files generic to PowerPC architecture +- libfdt Library files to support flattened device trees - net Networking code - post Power On Self Test - rtc Real Time Clock drivers
@@ -430,12 +431,23 @@ The following options need to be configured: expect it to be in bytes, others in MB. Define CONFIG_MEMSIZE_IN_BYTES to make it in bytes. - CONFIG_OF_FLAT_TREE + CONFIG_OF_LIBFDT / CONFIG_OF_FLAT_TREE New kernel versions are expecting firmware settings to be - passed using flat open firmware trees. - The environment variable "disable_of", when set, disables this - functionality. + passed using flattened device trees (based on open firmware + concepts). + + CONFIG_OF_LIBFDT + * New libfdt-based support + * Adds the "fdt" command + * The bootm command does _not_ modify the fdt + + CONFIG_OF_FLAT_TREE + * Deprecated, see CONFIG_OF_LIBFDT + * Original ft_build.c-based support + * Automatically modifies the dft as part of the bootm command + * The environment variable "disable_of", when set, + disables this functionality. CONFIG_OF_FLAT_TREE_MAX_SIZE
@@ -448,13 +460,16 @@ The following options need to be configured: CONFIG_OF_HAS_BD_T - The resulting flat device tree will have a copy of the bd_t. - Space should be pre-allocated in the dts for the bd_t. + * CONFIG_OF_LIBFDT - enables the "fdt bd_t" command + * CONFIG_OF_FLAT_TREE - The resulting flat device tree + will have a copy of the bd_t. Space should be + pre-allocated in the dts for the bd_t. CONFIG_OF_HAS_UBOOT_ENV - The resulting flat device tree will have a copy of u-boot's - environment variables + * CONFIG_OF_LIBFDT - enables the "fdt bd_t" command + * CONFIG_OF_FLAT_TREE - The resulting flat device tree + will have a copy of u-boot's environment variables CONFIG_OF_BOARD_SETUP
@@ -721,6 +736,8 @@ The following options need to be configured: #define CONFIG_COMMANDS (CFG_CMD_ALL & ~CFG_CMD_NET) + Other Commands: + fdt (flattened device tree) command: CONFIG_OF_LIBFDT Note: Don't enable the "icache" and "dcache" commands (configuration option CFG_CMD_CACHE) unless you know
board/mpc8360emds/config.mk +6 -0
@@ -26,3 +26,9 @@ # TEXT_BASE = 0xFE000000 + +# +# Additional board-specific libraries +# +BOARDLIBS = libfdt/libfdt.a +
board/mpc8360emds/mpc8360emds.c +24 -6
@@ -31,6 +31,10 @@#if defined(CONFIG_OF_FLAT_TREE )#include <ft_build.h> #endif +#if defined(CONFIG_OF_LIBFDT ) +#include <libfdt.h> +#include <libfdt_env.h> +#endif const qe_iop_conf_t qe_iop_conf_tab[] = {/* GETH1 */
@@ -658,22 +662,36 @@ U_BOOT_CMD(ecc, 4, 0, do_ecc, " - disables injects\n" " - re-inits memory");#endif /* if defined(CONFIG_DDR_ECC) && defined(CONFIG_DDR_ECC_CMD) */ -#if defined(CONFIG_OF_FLAT_TREE ) && defined(CONFIG_OF_BOARD_SETUP ) +#if (defined(CONFIG_OF_FLAT_TREE ) || defined(CONFIG_OF_LIBFDT )) \ + && defined(CONFIG_OF_BOARD_SETUP )void ft_board_setup (void *blob,bd_t *bd) { +#if defined(CONFIG_OF_LIBFDT ) +int nodeoffset; +int err; +int tmp[2 ]; + + nodeoffset =fdt_path_offset (fdt,"/memory" ); +if (nodeoffset >=0 ) { + tmp[0 ] =cpu_to_be32 (bd->bi_memstart); + tmp[1 ] =cpu_to_be32 (bd->bi_memsize); + err =fdt_setprop (fdt, nodeoffset,"reg" , tmp,sizeof (tmp)); + } +#else u32 *p;int len; -#ifdef CONFIG_PCI -ft_pci_setup (blob, bd); -#endif -ft_cpu_setup (blob, bd); - p =ft_get_prop (blob,"/memory/reg" , &len);if (p !=NULL ) { *p++ =cpu_to_be32 (bd->bi_memstart); *p =cpu_to_be32 (bd->bi_memsize); } +#endif + +#ifdef CONFIG_PCI +ft_pci_setup (blob, bd); +#endif +ft_cpu_setup (blob, bd); }#endif
board/mpc8360emds/pci.c +20 -0
@@ -21,6 +21,10 @@#if defined(CONFIG_OF_FLAT_TREE )#include <ft_build.h> #endif +#if defined(CONFIG_OF_LIBFDT ) +#include <libfdt.h> +#include <libfdt_env.h> +#endif #include <asm/fsl_i2c.h>
@@ -299,6 +303,22 @@ void pci_init_board(void) }#endif /* CONFIG_PCISLAVE */ +#if defined(CONFIG_OF_LIBFDT ) +void +ft_pci_setup (void *blob,bd_t *bd) +{ +int nodeoffset; +int err; +int tmp[2 ]; + + nodeoffset =fdt_path_offset (fdt,"/" OF_SOC "/pci at 8500" ); +if (nodeoffset >=0 ) { + tmp[0 ] =cpu_to_be32 (hose[0 ].first_busno); + tmp[1 ] =cpu_to_be32 (hose[0 ].last_busno); + err =fdt_setprop (fdt, nodeoffset,"bus-range" , tmp,sizeof (tmp)); + } +} +#endif /* CONFIG_OF_LIBFDT */ #ifdef CONFIG_OF_FLAT_TREE void ft_pci_setup (void *blob,bd_t *bd)
common/Makefile +1 -1
@@ -32,7 +32,7 @@ COBJS = main.o ACEX1K.o altera.o bedbug.o circbuf.o cmd_autoscript.o \ cmd_cache.o cmd_console.o \ cmd_date.o cmd_dcr.o cmd_diag.o cmd_display.o cmd_doc.o cmd_dtt.o \ cmd_eeprom.o cmd_elf.o cmd_ext2.o \ - cmd_fat.o cmd_fdc.o cmd_fdos.o cmd_flash.o cmd_fpga.o \ + cmd_fat.o cmd_fdc.o cmd_fdt.o cmd_fdos.o cmd_flash.o cmd_fpga.o \ cmd_i2c.o cmd_ide.o cmd_immap.o cmd_itest.o cmd_jffs2.o \ cmd_load.o cmd_log.o \ cmd_mem.o cmd_mii.o cmd_misc.o cmd_mmc.o \
common/cmd_bootm.c +55 -10
142 lines not on this page · raw message
cpu/mpc83xx/cpu.c +101 -1
115 lines not on this page · raw message
include/configs/MPC8360EMDS.h +5 -1
@@ -342,8 +342,12 @@#endif /* pass open firmware flat tree */ -#define CONFIG_OF_FLAT_TREE 1 +#define CONFIG_OF_LIBFDT 1 +#undef CONFIG_OF_FLAT_TREE#define CONFIG_OF_BOARD_SETUP 1 +#define CONFIG_OF_HAS_BD_T 1 +#define CONFIG_OF_HAS_UBOOT_ENV 1 +/* maximum size of the flat tree (8K) */ #define OF_FLAT_TREE_MAX_SIZE 8192
Signature · 1 line
1.4.4.4
PATCH 6/6 Add a flattened device tree (fdt) - fix some whitespace
I found a couple of whitespace violations, the patch following this email applies on top of the fdt cmd patches 1-6 to fix them.
Sorry,
gvb