Add common memory fixup function
PATCH 3/4 Add common memory fixup function
Add the function fdt_fixup_memory() to fixup the /memory node of the fdt
---
in git.kernel.org:/pub/scm/boot/u-boot/galak/u-boot.git libfdt_testing
common/fdt_support.c | 78 +++++++++++++++++++++++++++++++++++++++++++++++++ include/fdt_support.h | 1 + 2 files changed, 79 insertions(+), 0 deletions(-)
common/fdt_support.c +78 -0
@@ -438,6 +438,84 @@ void do_fixup_by_compat_u32(void *fdt, const char *compat,do_fixup_by_compat (fdt, compat, prop, &val,4 , create); } +int fdt_fixup_memory (void *blob,u64 start,u64 size) +{ +int err, nodeoffset, len =0 ; +u8 tmp[16 ]; +const u32 *addrcell, *sizecell; + + err =fdt_check_header (blob); +if (err <0 ) { +printf ("%s: %s\n" , __FUNCTION__,fdt_strerror (err)); +return err; + } + +/* 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 ) +printf ("WARNING: could not create /memory: %s.\n" , +fdt_strerror (nodeoffset)); +return nodeoffset; + } + err =fdt_setprop (blob, nodeoffset,"device_type" ,"memory" , +sizeof ("memory" )); +if (err <0 ) { +printf ("WARNING: could not set %s %s.\n" ,"device_type" , +fdt_strerror (err)); +return err; + } + + addrcell =fdt_getprop (blob,0 ,"#address-cells" ,NULL ); +/* use shifts and mask to ensure endianness */ +if ((addrcell) && (*addrcell ==2 )) { + tmp[0 ] = (start >>56 ) &0xff ; + tmp[1 ] = (start >>48 ) &0xff ; + tmp[2 ] = (start >>40 ) &0xff ; + tmp[3 ] = (start >>32 ) &0xff ; + tmp[4 ] = (start >>24 ) &0xff ; + tmp[5 ] = (start >>16 ) &0xff ; + tmp[6 ] = (start >>8 ) &0xff ; + tmp[7 ] = (start ) &0xff ; + len =8 ; + }else { + tmp[0 ] = (start >>24 ) &0xff ; + tmp[1 ] = (start >>16 ) &0xff ; + tmp[2 ] = (start >>8 ) &0xff ; + tmp[3 ] = (start ) &0xff ; + len =4 ; + } + + sizecell =fdt_getprop (blob,0 ,"#size-cells" ,NULL ); +/* use shifts and mask to ensure endianness */ +if ((sizecell) && (*sizecell ==2 )) { + tmp[0 +len] = (start >>56 ) &0xff ; + tmp[1 +len] = (start >>48 ) &0xff ; + tmp[2 +len] = (start >>40 ) &0xff ; + tmp[3 +len] = (start >>32 ) &0xff ; + tmp[4 +len] = (start >>24 ) &0xff ; + tmp[5 +len] = (start >>16 ) &0xff ; + tmp[6 +len] = (start >>8 ) &0xff ; + tmp[7 +len] = (start ) &0xff ; + len +=8 ; + }else { + tmp[0 +len] = (start >>24 ) &0xff ; + tmp[1 +len] = (start >>16 ) &0xff ; + tmp[2 +len] = (start >>8 ) &0xff ; + tmp[3 +len] = (start ) &0xff ; + len +=4 ; + } + + err =fdt_setprop (blob, nodeoffset,"reg" , tmp, len); +if (err <0 ) { +printf ("WARNING: could not set %s %s.\n" , +"reg" ,fdt_strerror (err)); +return err; + } +return 0 ; +} +void fdt_fixup_ethernet (void *fdt,bd_t *bd) {int node;
include/fdt_support.h +1 -0
@@ -44,6 +44,7 @@ void do_fixup_by_compat(void *fdt, const char *compat, const char *prop, const void *val, int len, int create);void do_fixup_by_compat_u32 (void *fdt,const char *compat,const char *prop,u32 val,int create); +int fdt_fixup_memory (void *blob,u64 start,u64 size);void fdt_fixup_ethernet (void *fdt,bd_t *bd);#ifdef CONFIG_OF_HAS_UBOOT_ENV
Signature · 1 line
1.5.3.4
PATCH 3/4 Add common memory fixup function
Quoted 10 lines · Kumar Gala
Add the function
fdt_fixup_memory()to fixup the /memory node of the fdtSigned-off-by Kumar Gala <[email protected]>---
in git.kernel.org:/pub/scm/boot/u-boot/galak/u-boot.git
libfdt_testingcommon/fdt_support.c | 78 +++++++++++++++++++++++++++++++++++++++++++++++++ include/fdt_support.h | 1 + 2 files changed, 79 insertions(+), 0 deletions(-)
Hi Kumar,
I pulled your changes locally. fdt_fixup_memory() is like a good function, but nobody calls it??? Am I missing something?
gvb
PATCH 3/4 Add common memory fixup function
Quoted 12 lines · gvb.uboot
Quoted 10 lines · Kumar Gala
Add the function
fdt_fixup_memory()to fixup the /memory node of the fdtSigned-off-by Kumar Gala <[email protected]>---
in git.kernel.org:/pub/scm/boot/u-boot/galak/u-boot.gitlibfdt_testingcommon/fdt_support.c| 78 +++++++++++++++++++++++++++++++++++++++
++++++++++include/fdt_support.h| 1 +2 files changed, 79 insertions(+), 0 deletions(-)
Quoted 4 lines
Hi Kumar,
I pulled your changes locally.
fdt_fixup_memory()is like a good function, but nobody calls it??? Am I missing something?
If you want to pull again you'll get the exist boards converted over to use fdt_fixup_memory().
- k
PATCH 3/4 Add common memory fixup function
Quoted 15 lines · Kumar Gala
Quoted 12 lines · gvb.uboot
Quoted 10 lines · Kumar Gala
Add the function
fdt_fixup_memory()to fixup the /memory node of the fdtSigned-off-by Kumar Gala <[email protected]>---
in git.kernel.org:/pub/scm/boot/u-boot/galak/u-boot.gitlibfdt_testingcommon/fdt_support.c| 78 +++++++++++++++++++++++++++++++++++++++
++++++++++include/fdt_support.h| 1 +2 files changed, 79 insertions(+), 0 deletions(-)
Quoted 8 lines
Quoted 4 lines
Hi Kumar,
I pulled your changes locally.
fdt_fixup_memory()is like a good function, but nobody calls it??? Am I missing something?If you want to pull again you'll get the exist boards converted over to use
fdt_fixup_memory().
Grr... This is what I get for not boot testing things.. had a copy/ paste error in this patch.
- k
PATCH 3/4 Add common memory fixup function
Quoted 11 lines · Kumar Gala
Quoted 6 lines
Quoted 3 lines
I pulled your changes locally.
fdt_fixup_memory()is like a good function, but nobody calls it??? Am I missing something?If you want to pull again you'll get the exist boards converted over to use
fdt_fixup_memory().Grr... This is what I get for not boot testing things.. had a copy/ paste error in this patch.
- k
Hey. I just pulled your tree too, for the 8641 board...
jdl
PATCH 3/4 Add common memory fixup function
Quoted 4 lines · Jon Loeliger
Quoted 3 lines · Kumar Gala
Quoted 3 lines
Quoted 3 lines
I pulled your changes locally.
fdt_fixup_memory()is like a good function, but nobody calls it??? Am I missing something?
Quoted 8 lines
Quoted 6 lines
Quoted 3 lines
If you want to pull again you'll get the exist boards converted over to use
fdt_fixup_memory().Grr... This is what I get for not boot testing things.. had a copy/ paste error in this patch.
- kHey. I just pulled your tree too, for the 8641 board...
We'll I suggest git-reset and give me 10/15 minutes :)
- k