diff options
Diffstat (limited to 'common/cmd_fdt.c')
| -rw-r--r-- | common/cmd_fdt.c | 31 | 
1 files changed, 21 insertions, 10 deletions
| diff --git a/common/cmd_fdt.c b/common/cmd_fdt.c index 7669676f2..824088c91 100644 --- a/common/cmd_fdt.c +++ b/common/cmd_fdt.c @@ -37,7 +37,7 @@  #include <fdt_support.h>  #define MAX_LEVEL	32		/* how deeply nested we will go */ -#define SCRATCHPAD	1024	/* bytes of scratchpad memory */ +#define SCRATCHPAD	1024		/* bytes of scratchpad memory */  /*   * Global data (for the gd->bd) @@ -47,6 +47,10 @@ DECLARE_GLOBAL_DATA_PTR;  /*   * Function prototypes/declarations.   */ +#ifdef CONFIG_OF_BOARD_SETUP +void ft_board_setup(void *blob, bd_t *bd); +#endif +  static int fdt_valid(void);  static int fdt_parse_prop(char *pathp, char *prop, char *newval,  	char *data, int *len); @@ -297,6 +301,13 @@ int do_fdt (cmd_tbl_t * cmdtp, int flag, int argc, char *argv[])  			}  		} +#ifdef CONFIG_OF_BOARD_SETUP +	/******************************************************************** +	 * Call the board-specific fixup routine +	 ********************************************************************/ +	} else if (argv[1][0] == 'b') { +		ft_board_setup(fdt, gd->bd); +#endif  	/********************************************************************  	 * Create a chosen node  	 ********************************************************************/ @@ -429,7 +440,7 @@ static int fdt_parse_prop(char *pathp, char *prop, char *newval,  		while ((*newval != ']') && (*newval != '\0')) {  			tmp = simple_strtoul(newval, &newval, 16);  			*data++ = tmp & 0xFF; -			*len++; +			*len    = *len + 1;  			while (*newval == ' ')  				newval++;  		} @@ -673,25 +684,25 @@ U_BOOT_CMD(  	fdt,	5,	0,	do_fdt,  	"fdt     - flattened device tree utility commands\n",  	    "addr   <addr> [<length>]        - Set the fdt location to <addr>\n" +#ifdef CONFIG_OF_BOARD_SETUP +	"fdt boardsetup                      - Do board-specific set up\n" +#endif  	"fdt move   <fdt> <newaddr> <length> - Copy the fdt to <addr>\n"  	"fdt print  <path> [<prop>]          - Recursive print starting at <path>\n"  	"fdt list   <path> [<prop>]          - Print one level starting at <path>\n"  	"fdt set    <path> <prop> [<val>]    - Set <property> [to <val>]\n"  	"fdt mknode <path> <node>            - Create a new node after <path>\n"  	"fdt rm     <path> [<prop>]          - Delete the node or <property>\n" -	"fdt chosen - Add/update the \"/chosen\" branch in the tree\n" +	"fdt chosen - Add/update the /chosen branch in the tree\n"  #ifdef CONFIG_OF_HAS_UBOOT_ENV -	"fdt env    - Add/replace the \"/u-boot-env\" branch in the tree\n" +	"fdt env    - Add/replace the /u-boot-env branch in the tree\n"  #endif  #ifdef CONFIG_OF_HAS_BD_T -	"fdt bd_t   - Add/replace the \"/bd_t\" branch in the tree\n" +	"fdt bd_t   - Add/replace the /bd_t branch in the tree\n"  #endif  	"Hints:\n" -	" * If the property you are setting/printing has a '#' character,\n" -	"     you MUST escape it with a \\ character or quote it with \" or\n" -	"     it will be ignored as a comment.\n" -	" * If the value has spaces in it, you MUST escape the spaces with\n" -	"     \\ characters or quote it with \"\"\n" +	" If the property you are setting/printing has a '#' character or spaces,\n" +	"     you MUST escape it with a \\ character or quote it with \".\n"  	"Examples: fdt print /               # print the whole tree\n"  	"          fdt print /cpus \"#address-cells\"\n"  	"          fdt set   /cpus \"#address-cells\" \"[00 00 00 01]\"\n" |