diff mbox

[U-Boot,12/19] powerpc: ppc4xx: Use CONFIG_OF_CONTROL for canyonlands boards

Message ID 1418653194-16873-13-git-send-email-sjg@chromium.org
State Superseded
Delegated to: Stefan Roese
Headers show

Commit Message

Simon Glass Dec. 15, 2014, 2:19 p.m. UTC
Enable CONFIG_OF_CONTROL so that U-Boot on these three boards uses a device
tree for its configuration.

Signed-off-by: Simon Glass <sjg@chromium.org>
---

 board/amcc/canyonlands/u-boot-ram.lds | 10 ++++++++--
 configs/arches_defconfig              |  3 +++
 configs/canyonlands_defconfig         |  3 +++
 configs/glacier_defconfig             |  3 +++
 configs/glacier_ramboot_defconfig     |  3 +++
 5 files changed, 20 insertions(+), 2 deletions(-)

Comments

Stefan Roese Jan. 26, 2015, 1:17 p.m. UTC | #1
On 15.12.2014 15:19, Simon Glass wrote:
> Enable CONFIG_OF_CONTROL so that U-Boot on these three boards uses a device
> tree for its configuration.
>
> Signed-off-by: Simon Glass <sjg@chromium.org>

This need further work on the ppc4xx platforms to get it booting from 
flash. As now the dtb is appended to the "normal" U-Boot image. And this 
image is fine-tuned to fit into currently 512KiB. With the last word 
(reset vector of the ppc4xx) located at 0xffff.fffc. So we need to 
include this dtb into the image this way:

0xfff8.0000	U-Boot code / text etc
...
		dtb
0xffff.fffc	reset vector

Looking for the current options shows that perhaps CONFIG_OF_EMBED seems 
to be exactly what we are need. I'll got it working on Canyonlands after 
a bit of debugging. I'll post the necessary small patches soon...

Thanks,
Stefan
Simon Glass Jan. 26, 2015, 1:31 p.m. UTC | #2
Hi Stefan,

On 26 January 2015 at 06:17, Stefan Roese <sr@denx.de> wrote:
> On 15.12.2014 15:19, Simon Glass wrote:
>>
>> Enable CONFIG_OF_CONTROL so that U-Boot on these three boards uses a
>> device
>> tree for its configuration.
>>
>> Signed-off-by: Simon Glass <sjg@chromium.org>
>
>
> This need further work on the ppc4xx platforms to get it booting from flash.
> As now the dtb is appended to the "normal" U-Boot image. And this image is
> fine-tuned to fit into currently 512KiB. With the last word (reset vector of
> the ppc4xx) located at 0xffff.fffc. So we need to include this dtb into the
> image this way:
>
> 0xfff8.0000     U-Boot code / text etc
> ...
>                 dtb
> 0xffff.fffc     reset vector
>
> Looking for the current options shows that perhaps CONFIG_OF_EMBED seems to
> be exactly what we are need. I'll got it working on Canyonlands after a bit
> of debugging. I'll post the necessary small patches soon...

Sounds good, thanks!

It almost feels like you should have a mkimage image for this, to
create a 512KB blob from u-boot.bin and u-boot.dtb. There must be
linker magic to make this all hold together. But yes the embed option
will build it in, so avoiding that.

Regards,
Simon
Bin Meng Jan. 26, 2015, 1:39 p.m. UTC | #3
Hi Simon,

On Mon, Jan 26, 2015 at 9:31 PM, Simon Glass <sjg@chromium.org> wrote:
> Hi Stefan,
>
> On 26 January 2015 at 06:17, Stefan Roese <sr@denx.de> wrote:
>> On 15.12.2014 15:19, Simon Glass wrote:
>>>
>>> Enable CONFIG_OF_CONTROL so that U-Boot on these three boards uses a
>>> device
>>> tree for its configuration.
>>>
>>> Signed-off-by: Simon Glass <sjg@chromium.org>
>>
>>
>> This need further work on the ppc4xx platforms to get it booting from flash.
>> As now the dtb is appended to the "normal" U-Boot image. And this image is
>> fine-tuned to fit into currently 512KiB. With the last word (reset vector of
>> the ppc4xx) located at 0xffff.fffc. So we need to include this dtb into the
>> image this way:
>>
>> 0xfff8.0000     U-Boot code / text etc
>> ...
>>                 dtb
>> 0xffff.fffc     reset vector
>>
>> Looking for the current options shows that perhaps CONFIG_OF_EMBED seems to
>> be exactly what we are need. I'll got it working on Canyonlands after a bit
>> of debugging. I'll post the necessary small patches soon...
>
> Sounds good, thanks!
>

We need do the same for Freescale BookE powerpc series too.

> It almost feels like you should have a mkimage image for this, to
> create a 512KB blob from u-boot.bin and u-boot.dtb. There must be
> linker magic to make this all hold together. But yes the embed option
> will build it in, so avoiding that.
>

Or maybe we can extend x86 solution (like ifdtool) to non-x86
architectures like BookE powerpc?

Regards,
Bin
diff mbox

Patch

diff --git a/board/amcc/canyonlands/u-boot-ram.lds b/board/amcc/canyonlands/u-boot-ram.lds
index 6765256..1750c74 100644
--- a/board/amcc/canyonlands/u-boot-ram.lds
+++ b/board/amcc/canyonlands/u-boot-ram.lds
@@ -12,6 +12,7 @@  SECTIONS
   . = + SIZEOF_HEADERS;
   .text      :
   {
+    _image_copy_start = .;
     arch/powerpc/cpu/ppc4xx/start.o	(.text*)
     board/amcc/canyonlands/init.o	(.text*)
 
@@ -61,9 +62,14 @@  SECTIONS
   . = ALIGN(256);
   __init_begin = .;
   .text.init : { *(.text.init) }
-  .data.init : { *(.data.init) }
-  . = ALIGN(256);
+  .data.init : {
+	*(.data.init)
+	. = ALIGN(256);
+	LONG(0) LONG(0)		/* Extend u-boot.bin to here */
+  }
   __init_end = .;
+  _end = .;
+  _image_binary_end = .;
 
   __bss_start = .;
   .bss (NOLOAD)       :
diff --git a/configs/arches_defconfig b/configs/arches_defconfig
index 60e6ef9..30c6932 100644
--- a/configs/arches_defconfig
+++ b/configs/arches_defconfig
@@ -2,3 +2,6 @@  CONFIG_PPC=y
 CONFIG_4xx=y
 CONFIG_TARGET_CANYONLANDS=y
 CONFIG_ARCHES=y
+CONFIG_DEFAULT_DEVICE_TREE="arches"
+CONFIG_OF_CONTROL=y
+CONFIG_OF_SEPARATE=y
diff --git a/configs/canyonlands_defconfig b/configs/canyonlands_defconfig
index 37a2b4d..6f6cf14 100644
--- a/configs/canyonlands_defconfig
+++ b/configs/canyonlands_defconfig
@@ -2,3 +2,6 @@  CONFIG_PPC=y
 CONFIG_4xx=y
 CONFIG_TARGET_CANYONLANDS=y
 CONFIG_CANYONLANDS=y
+CONFIG_DEFAULT_DEVICE_TREE="canyonlands"
+CONFIG_OF_CONTROL=y
+CONFIG_OF_SEPARATE=y
diff --git a/configs/glacier_defconfig b/configs/glacier_defconfig
index 436b9f8..e67fa32 100644
--- a/configs/glacier_defconfig
+++ b/configs/glacier_defconfig
@@ -2,3 +2,6 @@  CONFIG_PPC=y
 CONFIG_4xx=y
 CONFIG_TARGET_CANYONLANDS=y
 CONFIG_GLACIER=y
+CONFIG_DEFAULT_DEVICE_TREE="glacier"
+CONFIG_OF_CONTROL=y
+CONFIG_OF_SEPARATE=y
diff --git a/configs/glacier_ramboot_defconfig b/configs/glacier_ramboot_defconfig
index 4fc2303..e5b402e 100644
--- a/configs/glacier_ramboot_defconfig
+++ b/configs/glacier_ramboot_defconfig
@@ -3,3 +3,6 @@  CONFIG_PPC=y
 CONFIG_4xx=y
 CONFIG_TARGET_CANYONLANDS=y
 CONFIG_GLACIER=y
+CONFIG_DEFAULT_DEVICE_TREE="glacier"
+CONFIG_OF_CONTROL=y
+CONFIG_OF_SEPARATE=y