All of lore.kernel.org
 help / color / mirror / Atom feed
* [U-Boot-Users] [FDT][PATCH 3/4] Add common memory fixup function
@ 2007-11-27 23:45 Kumar Gala
  2007-11-28  1:20 ` gvb.uboot
  0 siblings, 1 reply; 6+ messages in thread
From: Kumar Gala @ 2007-11-27 23:45 UTC (permalink / raw)
  To: u-boot

Add the function fdt_fixup_memory() to fixup the /memory node of the fdt

Signed-off-by: Kumar Gala <galak@kernel.crashing.org>
---

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(-)

diff --git a/common/fdt_support.c b/common/fdt_support.c
index 69f4dd5..70e63ec 100644
--- a/common/fdt_support.c
+++ b/common/fdt_support.c
@@ -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;
diff --git a/include/fdt_support.h b/include/fdt_support.h
index 8f781d4..3d6c1a8 100644
--- a/include/fdt_support.h
+++ b/include/fdt_support.h
@@ -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
-- 
1.5.3.4

^ permalink raw reply related	[flat|nested] 6+ messages in thread

* [U-Boot-Users] [FDT][PATCH 3/4] Add common memory fixup function
  2007-11-27 23:45 [U-Boot-Users] [FDT][PATCH 3/4] Add common memory fixup function Kumar Gala
@ 2007-11-28  1:20 ` gvb.uboot
  2007-11-28  4:03   ` Kumar Gala
  0 siblings, 1 reply; 6+ messages in thread
From: gvb.uboot @ 2007-11-28  1:20 UTC (permalink / raw)
  To: u-boot

Kumar Gala wrote:
> Add the function fdt_fixup_memory() to fixup the /memory node of the fdt
> 
> Signed-off-by: Kumar Gala <galak@kernel.crashing.org>
> ---
> 
> 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(-)

Hi Kumar,

I pulled your changes locally.  fdt_fixup_memory() is like a good 
function, but nobody calls it???  Am I missing something?

gvb

^ permalink raw reply	[flat|nested] 6+ messages in thread

* [U-Boot-Users] [FDT][PATCH 3/4] Add common memory fixup function
  2007-11-28  1:20 ` gvb.uboot
@ 2007-11-28  4:03   ` Kumar Gala
  2007-11-28 21:22     ` Kumar Gala
  0 siblings, 1 reply; 6+ messages in thread
From: Kumar Gala @ 2007-11-28  4:03 UTC (permalink / raw)
  To: u-boot


On Nov 27, 2007, at 7:20 PM, gvb.uboot wrote:

> Kumar Gala wrote:
>> Add the function fdt_fixup_memory() to fixup the /memory node of  
>> the fdt
>> Signed-off-by: Kumar Gala <galak@kernel.crashing.org>
>> ---
>> 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(-)
>
> 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

^ permalink raw reply	[flat|nested] 6+ messages in thread

* [U-Boot-Users] [FDT][PATCH 3/4] Add common memory fixup function
  2007-11-28  4:03   ` Kumar Gala
@ 2007-11-28 21:22     ` Kumar Gala
  2007-11-28 21:27       ` Jon Loeliger
  0 siblings, 1 reply; 6+ messages in thread
From: Kumar Gala @ 2007-11-28 21:22 UTC (permalink / raw)
  To: u-boot


On Nov 27, 2007, at 10:03 PM, Kumar Gala wrote:

>
> On Nov 27, 2007, at 7:20 PM, gvb.uboot wrote:
>
>> Kumar Gala wrote:
>>> Add the function fdt_fixup_memory() to fixup the /memory node of
>>> the fdt
>>> Signed-off-by: Kumar Gala <galak@kernel.crashing.org>
>>> ---
>>> 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(-)
>>
>> 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

^ permalink raw reply	[flat|nested] 6+ messages in thread

* [U-Boot-Users] [FDT][PATCH 3/4] Add common memory fixup function
  2007-11-28 21:22     ` Kumar Gala
@ 2007-11-28 21:27       ` Jon Loeliger
  2007-11-28 21:28         ` Kumar Gala
  0 siblings, 1 reply; 6+ messages in thread
From: Jon Loeliger @ 2007-11-28 21:27 UTC (permalink / raw)
  To: u-boot

Kumar Gala wrote:
>
>>> 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

^ permalink raw reply	[flat|nested] 6+ messages in thread

* [U-Boot-Users] [FDT][PATCH 3/4] Add common memory fixup function
  2007-11-28 21:27       ` Jon Loeliger
@ 2007-11-28 21:28         ` Kumar Gala
  0 siblings, 0 replies; 6+ messages in thread
From: Kumar Gala @ 2007-11-28 21:28 UTC (permalink / raw)
  To: u-boot


On Nov 28, 2007, at 3:27 PM, Jon Loeliger wrote:

> Kumar Gala wrote:
>>
>>>> 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...

We'll I suggest git-reset and give me 10/15 minutes :)

- k

^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2007-11-28 21:28 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2007-11-27 23:45 [U-Boot-Users] [FDT][PATCH 3/4] Add common memory fixup function Kumar Gala
2007-11-28  1:20 ` gvb.uboot
2007-11-28  4:03   ` Kumar Gala
2007-11-28 21:22     ` Kumar Gala
2007-11-28 21:27       ` Jon Loeliger
2007-11-28 21:28         ` Kumar Gala

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.