Convert boards that set memory node to use fdt_fixup_memory()
PATCH 1/1 Convert boards that set memory node to use fdt_fixup_memory()
---
We needed a (u64) cast to make thing work properly. Again updated my libfdt_testing branch with this fix.
board/cm5200/cm5200.c | 15 ++------------- board/ids8247/ids8247.c | 17 +++-------------- cpu/mpc83xx/cpu.c | 18 ++---------------- 3 files changed, 7 insertions(+), 43 deletions(-)
board/cm5200/cm5200.c +2 -13
@@ -263,7 +263,6 @@ static void ft_blob_update(void *blob, bd_t *bd) {int len, ret, nodeoffset =0 ;char module_name[MODULE_NAME_MAXLEN ] = {0 }; -ulong memory_data[2 ] = {0 };compose_module_name (hw_id, module_name); len =strlen (module_name) +1 ;
@@ -273,22 +272,12 @@ static void ft_blob_update(void *blob, bd_t *bd)printf ("ft_blob_update(): cannot set /model property err:%s\n" ,fdt_strerror (ret)); - memory_data[0 ] =cpu_to_be32 (bd->bi_memstart); - memory_data[1 ] =cpu_to_be32 (bd->bi_memsize); + ret =fdt_fixup_memory (blob, (u64 )bd->bi_memstart, (u64 )bd->bi_memsize); - nodeoffset =fdt_path_offset (blob,"/memory" ); -if (nodeoffset >=0 ) { - ret =fdt_setprop (blob, nodeoffset,"reg" , memory_data, -sizeof (memory_data)); -if (ret <0 ) +if (ret <0 ) {printf ("ft_blob_update): cannot set /memory/reg " "property err:%s\n" ,fdt_strerror (ret)); } -else { -/* memory node is required in dts */ -printf ("ft_blob_update(): cannot find /memory node " -"err:%s\n" ,fdt_strerror (nodeoffset)); - } }#endif /* defined(CONFIG_OF_BOARD_SETUP) && defined(CONFIG_OF_LIBFDT) */
board/ids8247/ids8247.c +3 -14
@@ -329,25 +329,14 @@ nand_init (void)*/ void ft_blob_update (void *blob,bd_t *bd) { -int ret, nodeoffset =0 ; -ulong memory_data[2 ] = {0 }; +int ret; - memory_data[0 ] =cpu_to_be32 (bd->bi_memstart); - memory_data[1 ] =cpu_to_be32 (bd->bi_memsize); + ret =fdt_fixup_memory (blob, (u64 )bd->bi_memstart, (u64 )bd->bi_memsize); - nodeoffset =fdt_path_offset (blob,"/memory" ); -if (nodeoffset >=0 ) { - ret =fdt_setprop (blob, nodeoffset,"reg" , memory_data, -sizeof (memory_data)); -if (ret <0 ) +if (ret <0 ) {printf ("ft_blob_update): cannot set /memory/reg " "property err:%s\n" ,fdt_strerror (ret)); } -else { -/* memory node is required in dts */ -printf ("ft_blob_update(): cannot find /memory node " -"err:%s\n" ,fdt_strerror (nodeoffset)); - } }void ft_board_setup (void *blob,bd_t *bd)
cpu/mpc83xx/cpu.c +2 -16
@@ -35,6 +35,7 @@#include <ft_build.h> #elif defined(CONFIG_OF_LIBFDT )#include <libfdt.h> +#include <fdt_support.h> #endif DECLARE_GLOBAL_DATA_PTR ;
@@ -526,7 +527,6 @@ ft_cpu_setup(void *blob, bd_t *bd)int nodeoffset;int err;int j; -int tmp[2 ];for (j =0 ; j < (sizeof (fixup_props) /sizeof (fixup_props[0 ])); j++) { nodeoffset =fdt_path_offset (blob, fixup_props[j].node);
@@ -543,21 +543,7 @@ ft_cpu_setup(void *blob, bd_t *bd) } } -/* update, or add and update /memory node */ - nodeoffset =fdt_path_offset (blob,"/memory" ); -if (nodeoffset <0 ) { - nodeoffset =fdt_add_subnode (blob,0 ,"memory" ); -if (nodeoffset <0 ) -debug ("failed to add /memory node: %s\n" , -fdt_strerror (nodeoffset)); - } -if (nodeoffset >=0 ) { -fdt_setprop (blob, nodeoffset,"device_type" , -"memory" ,sizeof ("memory" )); - tmp[0 ] =cpu_to_be32 (bd->bi_memstart); - tmp[1 ] =cpu_to_be32 (bd->bi_memsize); -fdt_setprop (blob, nodeoffset,"reg" , tmp,sizeof (tmp)); - } +fdt_fixup_memory (blob, (u64 )bd->bi_memstart, (u64 )bd->bi_memsize); }#elif defined(CONFIG_OF_FLAT_TREE)void
Signature · 1 line
1.5.3.4
PATCH 1/1 Convert boards that set memory node to use fdt_fixup_memory()
Quoted 10 lines · Kumar Gala
Signed-off-by Kumar Gala <[email protected]>---
We needed a (u64) cast to make thing work properly. Again updated my
libfdt_testingbranch with this fix.board/cm5200/cm5200.c | 15 ++------------- board/ids8247/ids8247.c | 17 +++-------------- cpu/mpc83xx/cpu.c | 18 ++---------------- 3 files changed, 7 insertions(+), 43 deletions(-)
This and Kumar's previous fdt patches are working for me (mpc8360emds).
I've pushed them to the testing branch in u-boot-fdt. Thanks.
Machine format:git://www.denx.de/git/u-boot-fdt testing
Human format:
<http://www.denx.de/cgi-bin/gitweb.cgi?p=u-boot/u-boot-fdt.git;a=shortlog;h=testing>
I noticed that we have warnings on a couple of boards that don't have an ethernet defined. Patch coming in a couple minutes...
$ less LOG/cm5200.ERR fdt_support.c: In function 'fdt_fixup_ethernet': fdt_support.c:565: warning: unused variable 'path
$ ll LOG/*.ERR | grep "[0-9][0-9] 2007" | grep 100 -rw-r--r-- 1 vanbaren users 100 2007-11-27 20:35 LOG/cm5200.ERR -rw-r--r-- 1 vanbaren users 100 2007-11-27 20:37 LOG/fo300.ERR -rw-r--r-- 1 vanbaren users 100 2007-11-27 20:37 LOG/icecube_5100.ERR -rw-r--r-- 1 vanbaren users 100 2007-11-27 20:38 LOG/icecube_5200.ERR -rw-r--r-- 1 vanbaren users 100 2007-11-27 20:38 LOG/lite5200b.ERR -rw-r--r-- 1 vanbaren users 100 2007-11-27 20:39 LOG/motionpro.ERR -rw-r--r-- 1 vanbaren users 100 2007-11-27 20:44 LOG/TQM5200_B.ERR -rw-r--r-- 1 vanbaren users 100 2007-11-27 20:43 LOG/TQM5200.ERR -rw-r--r-- 1 vanbaren users 100 2007-11-27 20:45 LOG/TQM5200S.ERR
Best regards,
gvb