* [U-Boot] FDT howto
@ 2013-02-21 17:03 Jagan Teki
2013-02-24 5:21 ` Jagan Teki
2013-02-24 15:54 ` Simon Glass
0 siblings, 2 replies; 22+ messages in thread
From: Jagan Teki @ 2013-02-21 17:03 UTC (permalink / raw)
To: u-boot
Hi All,
I am planning to use devicetree on u-boot.
I have an experience to work with devicetree on Linux.
For u-boot, I have read doc from doc/README.fdt-control.
I see some dts usages on tegra boards.
I have lot of confusions with the concept itself.
Is Linux and u-boot devicetree concept and build system are same?
Suppose I have 4 boards J1, J2, J3 & J4 on my soc "emb".of vendor "vast"
For this requirement I have
board/vast/dts/J1.dts
board/vast/dts/J2.dts
board/vast/dts/J3.dts
board/vast/dts/J4.dts
include/configs/emb_common.h ==> single configuration of all SOC
needed definitions
like defconfig in Linux.
do I need any more files?
In emb_common.h i am defining
CONFIG_OF_SEPARATE is it sufficient?
My plan is to build u-boot and then build the dtb with specific
board and then combine.
I saw that all tegra boards config files are defining
CONFIG_DEFAULT_DEVICE_TREE if ie. the case dts is a compile time
option right.
am i correct?
Please let me know your inputs.
--
Thanks,
Jagan.
^ permalink raw reply [flat|nested] 22+ messages in thread
* [U-Boot] FDT howto
2013-02-21 17:03 [U-Boot] FDT howto Jagan Teki
@ 2013-02-24 5:21 ` Jagan Teki
2013-02-24 15:54 ` Simon Glass
1 sibling, 0 replies; 22+ messages in thread
From: Jagan Teki @ 2013-02-24 5:21 UTC (permalink / raw)
To: u-boot
Hi Simon/all,
Can anyone help me out.
Thanks,
Jagan.
On Thu, Feb 21, 2013 at 10:33 PM, Jagan Teki <jagannadh.teki@gmail.com> wrote:
> Hi All,
>
> I am planning to use devicetree on u-boot.
> I have an experience to work with devicetree on Linux.
>
> For u-boot, I have read doc from doc/README.fdt-control.
> I see some dts usages on tegra boards.
>
> I have lot of confusions with the concept itself.
>
> Is Linux and u-boot devicetree concept and build system are same?
>
> Suppose I have 4 boards J1, J2, J3 & J4 on my soc "emb".of vendor "vast"
> For this requirement I have
> board/vast/dts/J1.dts
> board/vast/dts/J2.dts
> board/vast/dts/J3.dts
> board/vast/dts/J4.dts
>
> include/configs/emb_common.h ==> single configuration of all SOC
> needed definitions
> like defconfig in Linux.
>
> do I need any more files?
>
> In emb_common.h i am defining
> CONFIG_OF_SEPARATE is it sufficient?
>
> My plan is to build u-boot and then build the dtb with specific
> board and then combine.
>
> I saw that all tegra boards config files are defining
> CONFIG_DEFAULT_DEVICE_TREE if ie. the case dts is a compile time
> option right.
> am i correct?
>
> Please let me know your inputs.
>
> --
> Thanks,
> Jagan.
^ permalink raw reply [flat|nested] 22+ messages in thread
* [U-Boot] FDT howto
2013-02-21 17:03 [U-Boot] FDT howto Jagan Teki
2013-02-24 5:21 ` Jagan Teki
@ 2013-02-24 15:54 ` Simon Glass
2013-02-24 16:19 ` Jagan Teki
1 sibling, 1 reply; 22+ messages in thread
From: Simon Glass @ 2013-02-24 15:54 UTC (permalink / raw)
To: u-boot
Hi Jagan,
On Thu, Feb 21, 2013 at 9:03 AM, Jagan Teki <jagannadh.teki@gmail.com> wrote:
> Hi All,
>
> I am planning to use devicetree on u-boot.
> I have an experience to work with devicetree on Linux.
>
> For u-boot, I have read doc from doc/README.fdt-control.
> I see some dts usages on tegra boards.
>
> I have lot of confusions with the concept itself.
>
> Is Linux and u-boot devicetree concept and build system are same?
I don't really understand this question sorry. U-Boot and Linux use
the device tree mainly for run-time configuration of drivers, so that
the same driver code can operate on different boards.
>
> Suppose I have 4 boards J1, J2, J3 & J4 on my soc "emb".of vendor "vast"
> For this requirement I have
> board/vast/dts/J1.dts
> board/vast/dts/J2.dts
> board/vast/dts/J3.dts
> board/vast/dts/J4.dts
>
> include/configs/emb_common.h ==> single configuration of all SOC
> needed definitions
> like defconfig in Linux.
>
> do I need any more files?
That's enough for the basics I think.
>
> In emb_common.h i am defining
> CONFIG_OF_SEPARATE is it sufficient?
And CONFIG_OF_CONTROL
>
> My plan is to build u-boot and then build the dtb with specific
> board and then combine.
That's fine, and is how we do things on Chromium also. U-Boot tries to
build an FDT even with CONFIG_OF_SEPARATE, so you need to put a
default device tree file in your emb_common.h file that it can find.
But you can ignore it, and for flashing your boards just use
u-boot.bin plus whatever .dtb you want to select.
>
> I saw that all tegra boards config files are defining
> CONFIG_DEFAULT_DEVICE_TREE if ie. the case dts is a compile time
> option right.
> am i correct?
Yes - see above. This is convenient for testing and development.
>
> Please let me know your inputs.
Regards,
Simon
>
> --
> Thanks,
> Jagan.
^ permalink raw reply [flat|nested] 22+ messages in thread
* [U-Boot] FDT howto
2013-02-24 15:54 ` Simon Glass
@ 2013-02-24 16:19 ` Jagan Teki
2013-02-24 17:38 ` Simon Glass
0 siblings, 1 reply; 22+ messages in thread
From: Jagan Teki @ 2013-02-24 16:19 UTC (permalink / raw)
To: u-boot
Hi Simon,
Thanks for your response, please find my below comments.
On Sun, Feb 24, 2013 at 9:24 PM, Simon Glass <sjg@chromium.org> wrote:
> Hi Jagan,
>
> On Thu, Feb 21, 2013 at 9:03 AM, Jagan Teki <jagannadh.teki@gmail.com> wrote:
>> Hi All,
>>
>> I am planning to use devicetree on u-boot.
>> I have an experience to work with devicetree on Linux.
>>
>> For u-boot, I have read doc from doc/README.fdt-control.
>> I see some dts usages on tegra boards.
>>
>> I have lot of confusions with the concept itself.
>>
>> Is Linux and u-boot devicetree concept and build system are same?
>
> I don't really understand this question sorry. U-Boot and Linux use
> the device tree mainly for run-time configuration of drivers, so that
> the same driver code can operate on different boards.
I am some how confusing the fdt usage in u-boot.
Because when compared to Linux, u-boot fdt setup mandatory to require
the CONFIG_DEFAULT_DEVICE_TREE
on the config file [from your previous comments].
is this the only difference when compared to Linux i guess..is it?
Linux defconfig file does need to hot-code
the dts.
>
>>
>> Suppose I have 4 boards J1, J2, J3 & J4 on my soc "emb".of vendor "vast"
>> For this requirement I have
>> board/vast/dts/J1.dts
>> board/vast/dts/J2.dts
>> board/vast/dts/J3.dts
>> board/vast/dts/J4.dts
>>
>> include/configs/emb_common.h ==> single configuration of all SOC
>> needed definitions
>> like defconfig in Linux.
>>
>> do I need any more files?
>
> That's enough for the basics I think.
Is dtsi file require to add it on arch folder along with above.
>
>>
>> In emb_common.h i am defining
>> CONFIG_OF_SEPARATE is it sufficient?
>
> And CONFIG_OF_CONTROL
>
>>
>> My plan is to build u-boot and then build the dtb with specific
>> board and then combine.
>
> That's fine, and is how we do things on Chromium also. U-Boot tries to
> build an FDT even with CONFIG_OF_SEPARATE, so you need to put a
> default device tree file in your emb_common.h file that it can find.
> But you can ignore it, and for flashing your boards just use
> u-boot.bin plus whatever .dtb you want to select.
So I will add the fdt support and then build the u-boot.
Is there any separate u-boot build command to build dts file.
My plan is to combine both u-boot and dtb.
Thanks,
Jagan.
>
>>
>> I saw that all tegra boards config files are defining
>> CONFIG_DEFAULT_DEVICE_TREE if ie. the case dts is a compile time
>> option right.
>> am i correct?
>
> Yes - see above. This is convenient for testing and development.
>
>>
>> Please let me know your inputs.
>
> Regards,
> Simon
>
>>
>> --
>> Thanks,
>> Jagan.
^ permalink raw reply [flat|nested] 22+ messages in thread
* [U-Boot] FDT howto
2013-02-24 16:19 ` Jagan Teki
@ 2013-02-24 17:38 ` Simon Glass
2013-02-24 17:45 ` Jagan Teki
0 siblings, 1 reply; 22+ messages in thread
From: Simon Glass @ 2013-02-24 17:38 UTC (permalink / raw)
To: u-boot
Hi Jagan,
On Sun, Feb 24, 2013 at 8:19 AM, Jagan Teki <jagannadh.teki@gmail.com> wrote:
> Hi Simon,
>
> Thanks for your response, please find my below comments.
>
> On Sun, Feb 24, 2013 at 9:24 PM, Simon Glass <sjg@chromium.org> wrote:
>> Hi Jagan,
>>
>> On Thu, Feb 21, 2013 at 9:03 AM, Jagan Teki <jagannadh.teki@gmail.com> wrote:
>>> Hi All,
>>>
>>> I am planning to use devicetree on u-boot.
>>> I have an experience to work with devicetree on Linux.
>>>
>>> For u-boot, I have read doc from doc/README.fdt-control.
>>> I see some dts usages on tegra boards.
>>>
>>> I have lot of confusions with the concept itself.
>>>
>>> Is Linux and u-boot devicetree concept and build system are same?
>>
>> I don't really understand this question sorry. U-Boot and Linux use
>> the device tree mainly for run-time configuration of drivers, so that
>> the same driver code can operate on different boards.
>
> I am some how confusing the fdt usage in u-boot.
> Because when compared to Linux, u-boot fdt setup mandatory to require
> the CONFIG_DEFAULT_DEVICE_TREE
> on the config file [from your previous comments].
>
> is this the only difference when compared to Linux i guess..is it?
> Linux defconfig file does need to hot-code
> the dts.
Yes - that is a difference. Linux provides a way to build .dts files
but it is not mandatory. At present it is mandatory with U-Boot, and
only one file is built. It can easily be ignored though.
>
>>
>>>
>>> Suppose I have 4 boards J1, J2, J3 & J4 on my soc "emb".of vendor "vast"
>>> For this requirement I have
>>> board/vast/dts/J1.dts
>>> board/vast/dts/J2.dts
>>> board/vast/dts/J3.dts
>>> board/vast/dts/J4.dts
>>>
>>> include/configs/emb_common.h ==> single configuration of all SOC
>>> needed definitions
>>> like defconfig in Linux.
>>>
>>> do I need any more files?
>>
>> That's enough for the basics I think.
>
> Is dtsi file require to add it on arch folder along with above.
If your architecture is not one of those already supported (like arm
tegra/exynos and x86) then yes you need to add this file in
arch/<arch>/dts. What architecture are you using?
>
>>
>>>
>>> In emb_common.h i am defining
>>> CONFIG_OF_SEPARATE is it sufficient?
>>
>> And CONFIG_OF_CONTROL
>>
>>>
>>> My plan is to build u-boot and then build the dtb with specific
>>> board and then combine.
>>
>> That's fine, and is how we do things on Chromium also. U-Boot tries to
>> build an FDT even with CONFIG_OF_SEPARATE, so you need to put a
>> default device tree file in your emb_common.h file that it can find.
>> But you can ignore it, and for flashing your boards just use
>> u-boot.bin plus whatever .dtb you want to select.
>
> So I will add the fdt support and then build the u-boot.
> Is there any separate u-boot build command to build dts file.
> My plan is to combine both u-boot and dtb.
You can run dtc yourself if you like - see Makefile/dts for how it is
done there. Once you have the .dtb binary, the easiest thing is to add
it to the end of u-boot.bin, as described in README.fdt-control.
>
> Thanks,
> Jagan.
>
>>
>>>
>>> I saw that all tegra boards config files are defining
>>> CONFIG_DEFAULT_DEVICE_TREE if ie. the case dts is a compile time
>>> option right.
>>> am i correct?
>>
>> Yes - see above. This is convenient for testing and development.
>>
>>>
>>> Please let me know your inputs.
>>
>> Regards,
>> Simon
>>
>>>
>>> --
>>> Thanks,
>>> Jagan.
^ permalink raw reply [flat|nested] 22+ messages in thread
* [U-Boot] FDT howto
2013-02-24 17:38 ` Simon Glass
@ 2013-02-24 17:45 ` Jagan Teki
2013-02-24 17:48 ` Simon Glass
0 siblings, 1 reply; 22+ messages in thread
From: Jagan Teki @ 2013-02-24 17:45 UTC (permalink / raw)
To: u-boot
Hi Simon,
On Sun, Feb 24, 2013 at 11:08 PM, Simon Glass <sjg@chromium.org> wrote:
> Hi Jagan,
>
> On Sun, Feb 24, 2013 at 8:19 AM, Jagan Teki <jagannadh.teki@gmail.com> wrote:
>> Hi Simon,
>>
>> Thanks for your response, please find my below comments.
>>
>> On Sun, Feb 24, 2013 at 9:24 PM, Simon Glass <sjg@chromium.org> wrote:
>>> Hi Jagan,
>>>
>>> On Thu, Feb 21, 2013 at 9:03 AM, Jagan Teki <jagannadh.teki@gmail.com> wrote:
>>>> Hi All,
>>>>
>>>> I am planning to use devicetree on u-boot.
>>>> I have an experience to work with devicetree on Linux.
>>>>
>>>> For u-boot, I have read doc from doc/README.fdt-control.
>>>> I see some dts usages on tegra boards.
>>>>
>>>> I have lot of confusions with the concept itself.
>>>>
>>>> Is Linux and u-boot devicetree concept and build system are same?
>>>
>>> I don't really understand this question sorry. U-Boot and Linux use
>>> the device tree mainly for run-time configuration of drivers, so that
>>> the same driver code can operate on different boards.
>>
>> I am some how confusing the fdt usage in u-boot.
>> Because when compared to Linux, u-boot fdt setup mandatory to require
>> the CONFIG_DEFAULT_DEVICE_TREE
>> on the config file [from your previous comments].
>>
>> is this the only difference when compared to Linux i guess..is it?
>> Linux defconfig file does need to hot-code
>> the dts.
>
> Yes - that is a difference. Linux provides a way to build .dts files
> but it is not mandatory. At present it is mandatory with U-Boot, and
> only one file is built. It can easily be ignored though.
Ok.
>
>>
>>>
>>>>
>>>> Suppose I have 4 boards J1, J2, J3 & J4 on my soc "emb".of vendor "vast"
>>>> For this requirement I have
>>>> board/vast/dts/J1.dts
>>>> board/vast/dts/J2.dts
>>>> board/vast/dts/J3.dts
>>>> board/vast/dts/J4.dts
>>>>
>>>> include/configs/emb_common.h ==> single configuration of all SOC
>>>> needed definitions
>>>> like defconfig in Linux.
>>>>
>>>> do I need any more files?
>>>
>>> That's enough for the basics I think.
>>
>> Is dtsi file require to add it on arch folder along with above.
>
> If your architecture is not one of those already supported (like arm
> tegra/exynos and x86) then yes you need to add this file in
> arch/<arch>/dts. What architecture are you using?
My architecture is armv7, may be for me dtsi not required as arm is
existing architecture
to support fdt on u-boot.. is it?
>
>>
>>>
>>>>
>>>> In emb_common.h i am defining
>>>> CONFIG_OF_SEPARATE is it sufficient?
>>>
>>> And CONFIG_OF_CONTROL
>>>
>>>>
>>>> My plan is to build u-boot and then build the dtb with specific
>>>> board and then combine.
>>>
>>> That's fine, and is how we do things on Chromium also. U-Boot tries to
>>> build an FDT even with CONFIG_OF_SEPARATE, so you need to put a
>>> default device tree file in your emb_common.h file that it can find.
>>> But you can ignore it, and for flashing your boards just use
>>> u-boot.bin plus whatever .dtb you want to select.
>>
>> So I will add the fdt support and then build the u-boot.
>> Is there any separate u-boot build command to build dts file.
>> My plan is to combine both u-boot and dtb.
>
> You can run dtc yourself if you like - see Makefile/dts for how it is
> done there. Once you have the .dtb binary, the easiest thing is to add
> it to the end of u-boot.bin, as described in README.fdt-control.
Thanks, I tried with above setup for adding dts.
I have added simple dts file on my board.
I got the below build error
/proj/mypc/u-boot/include/asm/gpio.h:1:27: fatal error:
asm/arch/gpio.h: No such file or directory
compilation terminated.
make[1]: *** No rule to make target `.depend.fdtdec', needed by
`.depend'. Stop.
is gpio.h is mandatory for fdt build?
Thanks,
Jagan.
>
>>
>> Thanks,
>> Jagan.
>>
>>>
>>>>
>>>> I saw that all tegra boards config files are defining
>>>> CONFIG_DEFAULT_DEVICE_TREE if ie. the case dts is a compile time
>>>> option right.
>>>> am i correct?
>>>
>>> Yes - see above. This is convenient for testing and development.
>>>
>>>>
>>>> Please let me know your inputs.
>>>
>>> Regards,
>>> Simon
>>>
>>>>
>>>> --
>>>> Thanks,
>>>> Jagan.
^ permalink raw reply [flat|nested] 22+ messages in thread
* [U-Boot] FDT howto
2013-02-24 17:45 ` Jagan Teki
@ 2013-02-24 17:48 ` Simon Glass
2013-02-24 17:55 ` Jagan Teki
0 siblings, 1 reply; 22+ messages in thread
From: Simon Glass @ 2013-02-24 17:48 UTC (permalink / raw)
To: u-boot
Hi Jegan,
On Sun, Feb 24, 2013 at 9:45 AM, Jagan Teki <jagannadh.teki@gmail.com> wrote:
> Hi Simon,
>
> On Sun, Feb 24, 2013 at 11:08 PM, Simon Glass <sjg@chromium.org> wrote:
>> Hi Jagan,
>>
>> On Sun, Feb 24, 2013 at 8:19 AM, Jagan Teki <jagannadh.teki@gmail.com> wrote:
>>> Hi Simon,
>>>
>>> Thanks for your response, please find my below comments.
>>>
>>> On Sun, Feb 24, 2013 at 9:24 PM, Simon Glass <sjg@chromium.org> wrote:
>>>> Hi Jagan,
>>>>
>>>> On Thu, Feb 21, 2013 at 9:03 AM, Jagan Teki <jagannadh.teki@gmail.com> wrote:
>>>>> Hi All,
>>>>>
>>>>> I am planning to use devicetree on u-boot.
>>>>> I have an experience to work with devicetree on Linux.
>>>>>
>>>>> For u-boot, I have read doc from doc/README.fdt-control.
>>>>> I see some dts usages on tegra boards.
>>>>>
>>>>> I have lot of confusions with the concept itself.
>>>>>
>>>>> Is Linux and u-boot devicetree concept and build system are same?
>>>>
>>>> I don't really understand this question sorry. U-Boot and Linux use
>>>> the device tree mainly for run-time configuration of drivers, so that
>>>> the same driver code can operate on different boards.
>>>
>>> I am some how confusing the fdt usage in u-boot.
>>> Because when compared to Linux, u-boot fdt setup mandatory to require
>>> the CONFIG_DEFAULT_DEVICE_TREE
>>> on the config file [from your previous comments].
>>>
>>> is this the only difference when compared to Linux i guess..is it?
>>> Linux defconfig file does need to hot-code
>>> the dts.
>>
>> Yes - that is a difference. Linux provides a way to build .dts files
>> but it is not mandatory. At present it is mandatory with U-Boot, and
>> only one file is built. It can easily be ignored though.
>
> Ok.
>
>>
>>>
>>>>
>>>>>
>>>>> Suppose I have 4 boards J1, J2, J3 & J4 on my soc "emb".of vendor "vast"
>>>>> For this requirement I have
>>>>> board/vast/dts/J1.dts
>>>>> board/vast/dts/J2.dts
>>>>> board/vast/dts/J3.dts
>>>>> board/vast/dts/J4.dts
>>>>>
>>>>> include/configs/emb_common.h ==> single configuration of all SOC
>>>>> needed definitions
>>>>> like defconfig in Linux.
>>>>>
>>>>> do I need any more files?
>>>>
>>>> That's enough for the basics I think.
>>>
>>> Is dtsi file require to add it on arch folder along with above.
>>
>> If your architecture is not one of those already supported (like arm
>> tegra/exynos and x86) then yes you need to add this file in
>> arch/<arch>/dts. What architecture are you using?
>
> My architecture is armv7, may be for me dtsi not required as arm is
> existing architecture
> to support fdt on u-boot.. is it?
Which sub-arch? If it is tegra/exynos5250 then you might be OK. For
something else, you should get the kernel's .dtsi file for that chip.
>
>>
>>>
>>>>
>>>>>
>>>>> In emb_common.h i am defining
>>>>> CONFIG_OF_SEPARATE is it sufficient?
>>>>
>>>> And CONFIG_OF_CONTROL
>>>>
>>>>>
>>>>> My plan is to build u-boot and then build the dtb with specific
>>>>> board and then combine.
>>>>
>>>> That's fine, and is how we do things on Chromium also. U-Boot tries to
>>>> build an FDT even with CONFIG_OF_SEPARATE, so you need to put a
>>>> default device tree file in your emb_common.h file that it can find.
>>>> But you can ignore it, and for flashing your boards just use
>>>> u-boot.bin plus whatever .dtb you want to select.
>>>
>>> So I will add the fdt support and then build the u-boot.
>>> Is there any separate u-boot build command to build dts file.
>>> My plan is to combine both u-boot and dtb.
>>
>> You can run dtc yourself if you like - see Makefile/dts for how it is
>> done there. Once you have the .dtb binary, the easiest thing is to add
>> it to the end of u-boot.bin, as described in README.fdt-control.
>
> Thanks, I tried with above setup for adding dts.
> I have added simple dts file on my board.
>
> I got the below build error
> /proj/mypc/u-boot/include/asm/gpio.h:1:27: fatal error:
> asm/arch/gpio.h: No such file or directory
> compilation terminated.
> make[1]: *** No rule to make target `.depend.fdtdec', needed by
> `.depend'. Stop.
>
> is gpio.h is mandatory for fdt build?
Yes because basic GPIO support is included. You can create one for
your sub-arch and make it #include <asm-generic/gpio.h> as a starting
point.
Regards,
Simon
>
> Thanks,
> Jagan.
>
>>
>>>
>>> Thanks,
>>> Jagan.
>>>
>>>>
>>>>>
>>>>> I saw that all tegra boards config files are defining
>>>>> CONFIG_DEFAULT_DEVICE_TREE if ie. the case dts is a compile time
>>>>> option right.
>>>>> am i correct?
>>>>
>>>> Yes - see above. This is convenient for testing and development.
>>>>
>>>>>
>>>>> Please let me know your inputs.
>>>>
>>>> Regards,
>>>> Simon
>>>>
>>>>>
>>>>> --
>>>>> Thanks,
>>>>> Jagan.
^ permalink raw reply [flat|nested] 22+ messages in thread
* [U-Boot] FDT howto
2013-02-24 17:48 ` Simon Glass
@ 2013-02-24 17:55 ` Jagan Teki
2013-02-24 18:20 ` Simon Glass
0 siblings, 1 reply; 22+ messages in thread
From: Jagan Teki @ 2013-02-24 17:55 UTC (permalink / raw)
To: u-boot
Hi Simon,
On Sun, Feb 24, 2013 at 11:18 PM, Simon Glass <sjg@chromium.org> wrote:
> Hi Jegan,
>
> On Sun, Feb 24, 2013 at 9:45 AM, Jagan Teki <jagannadh.teki@gmail.com> wrote:
>> Hi Simon,
>>
>> On Sun, Feb 24, 2013 at 11:08 PM, Simon Glass <sjg@chromium.org> wrote:
>>> Hi Jagan,
>>>
>>> On Sun, Feb 24, 2013 at 8:19 AM, Jagan Teki <jagannadh.teki@gmail.com> wrote:
>>>> Hi Simon,
>>>>
>>>> Thanks for your response, please find my below comments.
>>>>
>>>> On Sun, Feb 24, 2013 at 9:24 PM, Simon Glass <sjg@chromium.org> wrote:
>>>>> Hi Jagan,
>>>>>
>>>>> On Thu, Feb 21, 2013 at 9:03 AM, Jagan Teki <jagannadh.teki@gmail.com> wrote:
>>>>>> Hi All,
>>>>>>
>>>>>> I am planning to use devicetree on u-boot.
>>>>>> I have an experience to work with devicetree on Linux.
>>>>>>
>>>>>> For u-boot, I have read doc from doc/README.fdt-control.
>>>>>> I see some dts usages on tegra boards.
>>>>>>
>>>>>> I have lot of confusions with the concept itself.
>>>>>>
>>>>>> Is Linux and u-boot devicetree concept and build system are same?
>>>>>
>>>>> I don't really understand this question sorry. U-Boot and Linux use
>>>>> the device tree mainly for run-time configuration of drivers, so that
>>>>> the same driver code can operate on different boards.
>>>>
>>>> I am some how confusing the fdt usage in u-boot.
>>>> Because when compared to Linux, u-boot fdt setup mandatory to require
>>>> the CONFIG_DEFAULT_DEVICE_TREE
>>>> on the config file [from your previous comments].
>>>>
>>>> is this the only difference when compared to Linux i guess..is it?
>>>> Linux defconfig file does need to hot-code
>>>> the dts.
>>>
>>> Yes - that is a difference. Linux provides a way to build .dts files
>>> but it is not mandatory. At present it is mandatory with U-Boot, and
>>> only one file is built. It can easily be ignored though.
>>
>> Ok.
>>
>>>
>>>>
>>>>>
>>>>>>
>>>>>> Suppose I have 4 boards J1, J2, J3 & J4 on my soc "emb".of vendor "vast"
>>>>>> For this requirement I have
>>>>>> board/vast/dts/J1.dts
>>>>>> board/vast/dts/J2.dts
>>>>>> board/vast/dts/J3.dts
>>>>>> board/vast/dts/J4.dts
>>>>>>
>>>>>> include/configs/emb_common.h ==> single configuration of all SOC
>>>>>> needed definitions
>>>>>> like defconfig in Linux.
>>>>>>
>>>>>> do I need any more files?
>>>>>
>>>>> That's enough for the basics I think.
>>>>
>>>> Is dtsi file require to add it on arch folder along with above.
>>>
>>> If your architecture is not one of those already supported (like arm
>>> tegra/exynos and x86) then yes you need to add this file in
>>> arch/<arch>/dts. What architecture are you using?
>>
>> My architecture is armv7, may be for me dtsi not required as arm is
>> existing architecture
>> to support fdt on u-boot.. is it?
>
> Which sub-arch? If it is tegra/exynos5250 then you might be OK. For
> something else, you should get the kernel's .dtsi file for that chip.
I am having armv7, xilinx zynq soc..but i coun't get any .dtsi on kernel source.
may be I will create new one.
>
>>
>>>
>>>>
>>>>>
>>>>>>
>>>>>> In emb_common.h i am defining
>>>>>> CONFIG_OF_SEPARATE is it sufficient?
>>>>>
>>>>> And CONFIG_OF_CONTROL
>>>>>
>>>>>>
>>>>>> My plan is to build u-boot and then build the dtb with specific
>>>>>> board and then combine.
>>>>>
>>>>> That's fine, and is how we do things on Chromium also. U-Boot tries to
>>>>> build an FDT even with CONFIG_OF_SEPARATE, so you need to put a
>>>>> default device tree file in your emb_common.h file that it can find.
>>>>> But you can ignore it, and for flashing your boards just use
>>>>> u-boot.bin plus whatever .dtb you want to select.
>>>>
>>>> So I will add the fdt support and then build the u-boot.
>>>> Is there any separate u-boot build command to build dts file.
>>>> My plan is to combine both u-boot and dtb.
>>>
>>> You can run dtc yourself if you like - see Makefile/dts for how it is
>>> done there. Once you have the .dtb binary, the easiest thing is to add
>>> it to the end of u-boot.bin, as described in README.fdt-control.
>>
>> Thanks, I tried with above setup for adding dts.
>> I have added simple dts file on my board.
>>
>> I got the below build error
>> /proj/mypc/u-boot/include/asm/gpio.h:1:27: fatal error:
>> asm/arch/gpio.h: No such file or directory
>> compilation terminated.
>> make[1]: *** No rule to make target `.depend.fdtdec', needed by
>> `.depend'. Stop.
>>
>> is gpio.h is mandatory for fdt build?
>
> Yes because basic GPIO support is included. You can create one for
> your sub-arch and make it #include <asm-generic/gpio.h> as a starting
> point.
>
Should I create an empty gpio.h file..it still asking some gpio
definitions right..
Thanks,
Jagan.
> Regards,
> Simon
>
>>
>> Thanks,
>> Jagan.
>>
>>>
>>>>
>>>> Thanks,
>>>> Jagan.
>>>>
>>>>>
>>>>>>
>>>>>> I saw that all tegra boards config files are defining
>>>>>> CONFIG_DEFAULT_DEVICE_TREE if ie. the case dts is a compile time
>>>>>> option right.
>>>>>> am i correct?
>>>>>
>>>>> Yes - see above. This is convenient for testing and development.
>>>>>
>>>>>>
>>>>>> Please let me know your inputs.
>>>>>
>>>>> Regards,
>>>>> Simon
>>>>>
>>>>>>
>>>>>> --
>>>>>> Thanks,
>>>>>> Jagan.
^ permalink raw reply [flat|nested] 22+ messages in thread
* [U-Boot] FDT howto
2013-02-24 17:55 ` Jagan Teki
@ 2013-02-24 18:20 ` Simon Glass
2013-02-24 18:25 ` Jagan Teki
0 siblings, 1 reply; 22+ messages in thread
From: Simon Glass @ 2013-02-24 18:20 UTC (permalink / raw)
To: u-boot
Hi,
On Sun, Feb 24, 2013 at 9:55 AM, Jagan Teki <jagannadh.teki@gmail.com> wrote:
> Hi Simon,
>
> On Sun, Feb 24, 2013 at 11:18 PM, Simon Glass <sjg@chromium.org> wrote:
>> Hi Jegan,
>>
>> On Sun, Feb 24, 2013 at 9:45 AM, Jagan Teki <jagannadh.teki@gmail.com> wrote:
>>> Hi Simon,
>>>
>>> On Sun, Feb 24, 2013 at 11:08 PM, Simon Glass <sjg@chromium.org> wrote:
>>>> Hi Jagan,
>>>>
>>>> On Sun, Feb 24, 2013 at 8:19 AM, Jagan Teki <jagannadh.teki@gmail.com> wrote:
>>>>> Hi Simon,
>>>>>
>>>>> Thanks for your response, please find my below comments.
>>>>>
>>>>> On Sun, Feb 24, 2013 at 9:24 PM, Simon Glass <sjg@chromium.org> wrote:
>>>>>> Hi Jagan,
>>>>>>
>>>>>> On Thu, Feb 21, 2013 at 9:03 AM, Jagan Teki <jagannadh.teki@gmail.com> wrote:
>>>>>>> Hi All,
>>>>>>>
>>>>>>> I am planning to use devicetree on u-boot.
>>>>>>> I have an experience to work with devicetree on Linux.
>>>>>>>
>>>>>>> For u-boot, I have read doc from doc/README.fdt-control.
>>>>>>> I see some dts usages on tegra boards.
>>>>>>>
>>>>>>> I have lot of confusions with the concept itself.
>>>>>>>
>>>>>>> Is Linux and u-boot devicetree concept and build system are same?
>>>>>>
>>>>>> I don't really understand this question sorry. U-Boot and Linux use
>>>>>> the device tree mainly for run-time configuration of drivers, so that
>>>>>> the same driver code can operate on different boards.
>>>>>
>>>>> I am some how confusing the fdt usage in u-boot.
>>>>> Because when compared to Linux, u-boot fdt setup mandatory to require
>>>>> the CONFIG_DEFAULT_DEVICE_TREE
>>>>> on the config file [from your previous comments].
>>>>>
>>>>> is this the only difference when compared to Linux i guess..is it?
>>>>> Linux defconfig file does need to hot-code
>>>>> the dts.
>>>>
>>>> Yes - that is a difference. Linux provides a way to build .dts files
>>>> but it is not mandatory. At present it is mandatory with U-Boot, and
>>>> only one file is built. It can easily be ignored though.
>>>
>>> Ok.
>>>
>>>>
>>>>>
>>>>>>
>>>>>>>
>>>>>>> Suppose I have 4 boards J1, J2, J3 & J4 on my soc "emb".of vendor "vast"
>>>>>>> For this requirement I have
>>>>>>> board/vast/dts/J1.dts
>>>>>>> board/vast/dts/J2.dts
>>>>>>> board/vast/dts/J3.dts
>>>>>>> board/vast/dts/J4.dts
>>>>>>>
>>>>>>> include/configs/emb_common.h ==> single configuration of all SOC
>>>>>>> needed definitions
>>>>>>> like defconfig in Linux.
>>>>>>>
>>>>>>> do I need any more files?
>>>>>>
>>>>>> That's enough for the basics I think.
>>>>>
>>>>> Is dtsi file require to add it on arch folder along with above.
>>>>
>>>> If your architecture is not one of those already supported (like arm
>>>> tegra/exynos and x86) then yes you need to add this file in
>>>> arch/<arch>/dts. What architecture are you using?
>>>
>>> My architecture is armv7, may be for me dtsi not required as arm is
>>> existing architecture
>>> to support fdt on u-boot.. is it?
>>
>> Which sub-arch? If it is tegra/exynos5250 then you might be OK. For
>> something else, you should get the kernel's .dtsi file for that chip.
>
> I am having armv7, xilinx zynq soc..but i coun't get any .dtsi on kernel source.
> may be I will create new one.
OK, well if the kernel doesn't have FDT support yet then yes you will
need to create a new one.
>
>>
>>>
>>>>
>>>>>
>>>>>>
>>>>>>>
>>>>>>> In emb_common.h i am defining
>>>>>>> CONFIG_OF_SEPARATE is it sufficient?
>>>>>>
>>>>>> And CONFIG_OF_CONTROL
>>>>>>
>>>>>>>
>>>>>>> My plan is to build u-boot and then build the dtb with specific
>>>>>>> board and then combine.
>>>>>>
>>>>>> That's fine, and is how we do things on Chromium also. U-Boot tries to
>>>>>> build an FDT even with CONFIG_OF_SEPARATE, so you need to put a
>>>>>> default device tree file in your emb_common.h file that it can find.
>>>>>> But you can ignore it, and for flashing your boards just use
>>>>>> u-boot.bin plus whatever .dtb you want to select.
>>>>>
>>>>> So I will add the fdt support and then build the u-boot.
>>>>> Is there any separate u-boot build command to build dts file.
>>>>> My plan is to combine both u-boot and dtb.
>>>>
>>>> You can run dtc yourself if you like - see Makefile/dts for how it is
>>>> done there. Once you have the .dtb binary, the easiest thing is to add
>>>> it to the end of u-boot.bin, as described in README.fdt-control.
>>>
>>> Thanks, I tried with above setup for adding dts.
>>> I have added simple dts file on my board.
>>>
>>> I got the below build error
>>> /proj/mypc/u-boot/include/asm/gpio.h:1:27: fatal error:
>>> asm/arch/gpio.h: No such file or directory
>>> compilation terminated.
>>> make[1]: *** No rule to make target `.depend.fdtdec', needed by
>>> `.depend'. Stop.
>>>
>>> is gpio.h is mandatory for fdt build?
>>
>> Yes because basic GPIO support is included. You can create one for
>> your sub-arch and make it #include <asm-generic/gpio.h> as a starting
>> point.
>>
>
> Should I create an empty gpio.h file..it still asking some gpio
> definitions right..
It might be OK if you just have "#include <asm-generic/gpio.h>" in that file.
Regads,
Simon
[snip]
^ permalink raw reply [flat|nested] 22+ messages in thread
* [U-Boot] FDT howto
2013-02-24 18:20 ` Simon Glass
@ 2013-02-24 18:25 ` Jagan Teki
2013-02-24 18:58 ` Jagan Teki
0 siblings, 1 reply; 22+ messages in thread
From: Jagan Teki @ 2013-02-24 18:25 UTC (permalink / raw)
To: u-boot
Hi Simon,
On Sun, Feb 24, 2013 at 11:50 PM, Simon Glass <sjg@chromium.org> wrote:
> Hi,
>
> On Sun, Feb 24, 2013 at 9:55 AM, Jagan Teki <jagannadh.teki@gmail.com> wrote:
>> Hi Simon,
>>
>> On Sun, Feb 24, 2013 at 11:18 PM, Simon Glass <sjg@chromium.org> wrote:
>>> Hi Jegan,
>>>
>>> On Sun, Feb 24, 2013 at 9:45 AM, Jagan Teki <jagannadh.teki@gmail.com> wrote:
>>>> Hi Simon,
>>>>
>>>> On Sun, Feb 24, 2013 at 11:08 PM, Simon Glass <sjg@chromium.org> wrote:
>>>>> Hi Jagan,
>>>>>
>>>>> On Sun, Feb 24, 2013 at 8:19 AM, Jagan Teki <jagannadh.teki@gmail.com> wrote:
>>>>>> Hi Simon,
>>>>>>
>>>>>> Thanks for your response, please find my below comments.
>>>>>>
>>>>>> On Sun, Feb 24, 2013 at 9:24 PM, Simon Glass <sjg@chromium.org> wrote:
>>>>>>> Hi Jagan,
>>>>>>>
>>>>>>> On Thu, Feb 21, 2013 at 9:03 AM, Jagan Teki <jagannadh.teki@gmail.com> wrote:
>>>>>>>> Hi All,
>>>>>>>>
>>>>>>>> I am planning to use devicetree on u-boot.
>>>>>>>> I have an experience to work with devicetree on Linux.
>>>>>>>>
>>>>>>>> For u-boot, I have read doc from doc/README.fdt-control.
>>>>>>>> I see some dts usages on tegra boards.
>>>>>>>>
>>>>>>>> I have lot of confusions with the concept itself.
>>>>>>>>
>>>>>>>> Is Linux and u-boot devicetree concept and build system are same?
>>>>>>>
>>>>>>> I don't really understand this question sorry. U-Boot and Linux use
>>>>>>> the device tree mainly for run-time configuration of drivers, so that
>>>>>>> the same driver code can operate on different boards.
>>>>>>
>>>>>> I am some how confusing the fdt usage in u-boot.
>>>>>> Because when compared to Linux, u-boot fdt setup mandatory to require
>>>>>> the CONFIG_DEFAULT_DEVICE_TREE
>>>>>> on the config file [from your previous comments].
>>>>>>
>>>>>> is this the only difference when compared to Linux i guess..is it?
>>>>>> Linux defconfig file does need to hot-code
>>>>>> the dts.
>>>>>
>>>>> Yes - that is a difference. Linux provides a way to build .dts files
>>>>> but it is not mandatory. At present it is mandatory with U-Boot, and
>>>>> only one file is built. It can easily be ignored though.
>>>>
>>>> Ok.
>>>>
>>>>>
>>>>>>
>>>>>>>
>>>>>>>>
>>>>>>>> Suppose I have 4 boards J1, J2, J3 & J4 on my soc "emb".of vendor "vast"
>>>>>>>> For this requirement I have
>>>>>>>> board/vast/dts/J1.dts
>>>>>>>> board/vast/dts/J2.dts
>>>>>>>> board/vast/dts/J3.dts
>>>>>>>> board/vast/dts/J4.dts
>>>>>>>>
>>>>>>>> include/configs/emb_common.h ==> single configuration of all SOC
>>>>>>>> needed definitions
>>>>>>>> like defconfig in Linux.
>>>>>>>>
>>>>>>>> do I need any more files?
>>>>>>>
>>>>>>> That's enough for the basics I think.
>>>>>>
>>>>>> Is dtsi file require to add it on arch folder along with above.
>>>>>
>>>>> If your architecture is not one of those already supported (like arm
>>>>> tegra/exynos and x86) then yes you need to add this file in
>>>>> arch/<arch>/dts. What architecture are you using?
>>>>
>>>> My architecture is armv7, may be for me dtsi not required as arm is
>>>> existing architecture
>>>> to support fdt on u-boot.. is it?
>>>
>>> Which sub-arch? If it is tegra/exynos5250 then you might be OK. For
>>> something else, you should get the kernel's .dtsi file for that chip.
>>
>> I am having armv7, xilinx zynq soc..but i coun't get any .dtsi on kernel source.
>> may be I will create new one.
>
> OK, well if the kernel doesn't have FDT support yet then yes you will
> need to create a new one.
>
>>
>>>
>>>>
>>>>>
>>>>>>
>>>>>>>
>>>>>>>>
>>>>>>>> In emb_common.h i am defining
>>>>>>>> CONFIG_OF_SEPARATE is it sufficient?
>>>>>>>
>>>>>>> And CONFIG_OF_CONTROL
>>>>>>>
>>>>>>>>
>>>>>>>> My plan is to build u-boot and then build the dtb with specific
>>>>>>>> board and then combine.
>>>>>>>
>>>>>>> That's fine, and is how we do things on Chromium also. U-Boot tries to
>>>>>>> build an FDT even with CONFIG_OF_SEPARATE, so you need to put a
>>>>>>> default device tree file in your emb_common.h file that it can find.
>>>>>>> But you can ignore it, and for flashing your boards just use
>>>>>>> u-boot.bin plus whatever .dtb you want to select.
>>>>>>
>>>>>> So I will add the fdt support and then build the u-boot.
>>>>>> Is there any separate u-boot build command to build dts file.
>>>>>> My plan is to combine both u-boot and dtb.
>>>>>
>>>>> You can run dtc yourself if you like - see Makefile/dts for how it is
>>>>> done there. Once you have the .dtb binary, the easiest thing is to add
>>>>> it to the end of u-boot.bin, as described in README.fdt-control.
>>>>
>>>> Thanks, I tried with above setup for adding dts.
>>>> I have added simple dts file on my board.
>>>>
>>>> I got the below build error
>>>> /proj/mypc/u-boot/include/asm/gpio.h:1:27: fatal error:
>>>> asm/arch/gpio.h: No such file or directory
>>>> compilation terminated.
>>>> make[1]: *** No rule to make target `.depend.fdtdec', needed by
>>>> `.depend'. Stop.
>>>>
>>>> is gpio.h is mandatory for fdt build?
>>>
>>> Yes because basic GPIO support is included. You can create one for
>>> your sub-arch and make it #include <asm-generic/gpio.h> as a starting
>>> point.
>>>
>>
>> Should I create an empty gpio.h file..it still asking some gpio
>> definitions right..
>
> It might be OK if you just have "#include <asm-generic/gpio.h>" in that file.
Thanks.
Finally I have created u-boot-dtb.bin.
for building dtb separately I have used
$ make DEVICE_TREE=zynq .. it creates a u-boot.dtb
is there any option for building separate name, for example I need to
create zynq.dtb
Thanks,
Jagan.
^ permalink raw reply [flat|nested] 22+ messages in thread
* [U-Boot] FDT howto
2013-02-24 18:25 ` Jagan Teki
@ 2013-02-24 18:58 ` Jagan Teki
2013-02-24 23:10 ` Simon Glass
0 siblings, 1 reply; 22+ messages in thread
From: Jagan Teki @ 2013-02-24 18:58 UTC (permalink / raw)
To: u-boot
Hi Simon,
On Sun, Feb 24, 2013 at 11:55 PM, Jagan Teki <jagannadh.teki@gmail.com> wrote:
> Hi Simon,
>
> On Sun, Feb 24, 2013 at 11:50 PM, Simon Glass <sjg@chromium.org> wrote:
>> Hi,
>>
>> On Sun, Feb 24, 2013 at 9:55 AM, Jagan Teki <jagannadh.teki@gmail.com> wrote:
>>> Hi Simon,
>>>
>>> On Sun, Feb 24, 2013 at 11:18 PM, Simon Glass <sjg@chromium.org> wrote:
>>>> Hi Jegan,
>>>>
>>>> On Sun, Feb 24, 2013 at 9:45 AM, Jagan Teki <jagannadh.teki@gmail.com> wrote:
>>>>> Hi Simon,
>>>>>
>>>>> On Sun, Feb 24, 2013 at 11:08 PM, Simon Glass <sjg@chromium.org> wrote:
>>>>>> Hi Jagan,
>>>>>>
>>>>>> On Sun, Feb 24, 2013 at 8:19 AM, Jagan Teki <jagannadh.teki@gmail.com> wrote:
>>>>>>> Hi Simon,
>>>>>>>
>>>>>>> Thanks for your response, please find my below comments.
>>>>>>>
>>>>>>> On Sun, Feb 24, 2013 at 9:24 PM, Simon Glass <sjg@chromium.org> wrote:
>>>>>>>> Hi Jagan,
>>>>>>>>
>>>>>>>> On Thu, Feb 21, 2013 at 9:03 AM, Jagan Teki <jagannadh.teki@gmail.com> wrote:
>>>>>>>>> Hi All,
>>>>>>>>>
>>>>>>>>> I am planning to use devicetree on u-boot.
>>>>>>>>> I have an experience to work with devicetree on Linux.
>>>>>>>>>
>>>>>>>>> For u-boot, I have read doc from doc/README.fdt-control.
>>>>>>>>> I see some dts usages on tegra boards.
>>>>>>>>>
>>>>>>>>> I have lot of confusions with the concept itself.
>>>>>>>>>
>>>>>>>>> Is Linux and u-boot devicetree concept and build system are same?
>>>>>>>>
>>>>>>>> I don't really understand this question sorry. U-Boot and Linux use
>>>>>>>> the device tree mainly for run-time configuration of drivers, so that
>>>>>>>> the same driver code can operate on different boards.
>>>>>>>
>>>>>>> I am some how confusing the fdt usage in u-boot.
>>>>>>> Because when compared to Linux, u-boot fdt setup mandatory to require
>>>>>>> the CONFIG_DEFAULT_DEVICE_TREE
>>>>>>> on the config file [from your previous comments].
>>>>>>>
>>>>>>> is this the only difference when compared to Linux i guess..is it?
>>>>>>> Linux defconfig file does need to hot-code
>>>>>>> the dts.
>>>>>>
>>>>>> Yes - that is a difference. Linux provides a way to build .dts files
>>>>>> but it is not mandatory. At present it is mandatory with U-Boot, and
>>>>>> only one file is built. It can easily be ignored though.
>>>>>
>>>>> Ok.
>>>>>
>>>>>>
>>>>>>>
>>>>>>>>
>>>>>>>>>
>>>>>>>>> Suppose I have 4 boards J1, J2, J3 & J4 on my soc "emb".of vendor "vast"
>>>>>>>>> For this requirement I have
>>>>>>>>> board/vast/dts/J1.dts
>>>>>>>>> board/vast/dts/J2.dts
>>>>>>>>> board/vast/dts/J3.dts
>>>>>>>>> board/vast/dts/J4.dts
>>>>>>>>>
>>>>>>>>> include/configs/emb_common.h ==> single configuration of all SOC
>>>>>>>>> needed definitions
>>>>>>>>> like defconfig in Linux.
>>>>>>>>>
>>>>>>>>> do I need any more files?
>>>>>>>>
>>>>>>>> That's enough for the basics I think.
>>>>>>>
>>>>>>> Is dtsi file require to add it on arch folder along with above.
>>>>>>
>>>>>> If your architecture is not one of those already supported (like arm
>>>>>> tegra/exynos and x86) then yes you need to add this file in
>>>>>> arch/<arch>/dts. What architecture are you using?
>>>>>
>>>>> My architecture is armv7, may be for me dtsi not required as arm is
>>>>> existing architecture
>>>>> to support fdt on u-boot.. is it?
>>>>
>>>> Which sub-arch? If it is tegra/exynos5250 then you might be OK. For
>>>> something else, you should get the kernel's .dtsi file for that chip.
>>>
>>> I am having armv7, xilinx zynq soc..but i coun't get any .dtsi on kernel source.
>>> may be I will create new one.
>>
>> OK, well if the kernel doesn't have FDT support yet then yes you will
>> need to create a new one.
>>
>>>
>>>>
>>>>>
>>>>>>
>>>>>>>
>>>>>>>>
>>>>>>>>>
>>>>>>>>> In emb_common.h i am defining
>>>>>>>>> CONFIG_OF_SEPARATE is it sufficient?
>>>>>>>>
>>>>>>>> And CONFIG_OF_CONTROL
>>>>>>>>
>>>>>>>>>
>>>>>>>>> My plan is to build u-boot and then build the dtb with specific
>>>>>>>>> board and then combine.
>>>>>>>>
>>>>>>>> That's fine, and is how we do things on Chromium also. U-Boot tries to
>>>>>>>> build an FDT even with CONFIG_OF_SEPARATE, so you need to put a
>>>>>>>> default device tree file in your emb_common.h file that it can find.
>>>>>>>> But you can ignore it, and for flashing your boards just use
>>>>>>>> u-boot.bin plus whatever .dtb you want to select.
>>>>>>>
>>>>>>> So I will add the fdt support and then build the u-boot.
>>>>>>> Is there any separate u-boot build command to build dts file.
>>>>>>> My plan is to combine both u-boot and dtb.
>>>>>>
>>>>>> You can run dtc yourself if you like - see Makefile/dts for how it is
>>>>>> done there. Once you have the .dtb binary, the easiest thing is to add
>>>>>> it to the end of u-boot.bin, as described in README.fdt-control.
>>>>>
>>>>> Thanks, I tried with above setup for adding dts.
>>>>> I have added simple dts file on my board.
>>>>>
>>>>> I got the below build error
>>>>> /proj/mypc/u-boot/include/asm/gpio.h:1:27: fatal error:
>>>>> asm/arch/gpio.h: No such file or directory
>>>>> compilation terminated.
>>>>> make[1]: *** No rule to make target `.depend.fdtdec', needed by
>>>>> `.depend'. Stop.
>>>>>
>>>>> is gpio.h is mandatory for fdt build?
>>>>
>>>> Yes because basic GPIO support is included. You can create one for
>>>> your sub-arch and make it #include <asm-generic/gpio.h> as a starting
>>>> point.
>>>>
>>>
>>> Should I create an empty gpio.h file..it still asking some gpio
>>> definitions right..
>>
>> It might be OK if you just have "#include <asm-generic/gpio.h>" in that file.
>
> Thanks.
>
> Finally I have created u-boot-dtb.bin.
> for building dtb separately I have used
> $ make DEVICE_TREE=zynq .. it creates a u-boot.dtb
>
> is there any option for building separate name, for example I need to
> create zynq.dtb
Some how I am able to create a fdt build on my target.
But what is this gpio mandatory, because currently my target currently
need a GPIO setup.
Add ing gpio.h/ with equivalent definitions is an extra overhead is
it? please explain.
Thanks,
Jagan.
^ permalink raw reply [flat|nested] 22+ messages in thread
* [U-Boot] FDT howto
2013-02-24 18:58 ` Jagan Teki
@ 2013-02-24 23:10 ` Simon Glass
2013-02-28 11:14 ` Jagan Teki
0 siblings, 1 reply; 22+ messages in thread
From: Simon Glass @ 2013-02-24 23:10 UTC (permalink / raw)
To: u-boot
Hi Jagan,
On Sun, Feb 24, 2013 at 10:58 AM, Jagan Teki <jagannadh.teki@gmail.com> wrote:
> Hi Simon,
>
> On Sun, Feb 24, 2013 at 11:55 PM, Jagan Teki <jagannadh.teki@gmail.com> wrote:
>> Hi Simon,
>>
>> On Sun, Feb 24, 2013 at 11:50 PM, Simon Glass <sjg@chromium.org> wrote:
>>> Hi,
>>>
>>> On Sun, Feb 24, 2013 at 9:55 AM, Jagan Teki <jagannadh.teki@gmail.com> wrote:
>>>> Hi Simon,
>>>>
>>>> On Sun, Feb 24, 2013 at 11:18 PM, Simon Glass <sjg@chromium.org> wrote:
>>>>> Hi Jegan,
>>>>>
>>>>> On Sun, Feb 24, 2013 at 9:45 AM, Jagan Teki <jagannadh.teki@gmail.com> wrote:
>>>>>> Hi Simon,
>>>>>>
>>>>>> On Sun, Feb 24, 2013 at 11:08 PM, Simon Glass <sjg@chromium.org> wrote:
>>>>>>> Hi Jagan,
>>>>>>>
>>>>>>> On Sun, Feb 24, 2013 at 8:19 AM, Jagan Teki <jagannadh.teki@gmail.com> wrote:
>>>>>>>> Hi Simon,
>>>>>>>>
>>>>>>>> Thanks for your response, please find my below comments.
>>>>>>>>
>>>>>>>> On Sun, Feb 24, 2013 at 9:24 PM, Simon Glass <sjg@chromium.org> wrote:
>>>>>>>>> Hi Jagan,
>>>>>>>>>
>>>>>>>>> On Thu, Feb 21, 2013 at 9:03 AM, Jagan Teki <jagannadh.teki@gmail.com> wrote:
>>>>>>>>>> Hi All,
>>>>>>>>>>
>>>>>>>>>> I am planning to use devicetree on u-boot.
>>>>>>>>>> I have an experience to work with devicetree on Linux.
>>>>>>>>>>
>>>>>>>>>> For u-boot, I have read doc from doc/README.fdt-control.
>>>>>>>>>> I see some dts usages on tegra boards.
>>>>>>>>>>
>>>>>>>>>> I have lot of confusions with the concept itself.
>>>>>>>>>>
>>>>>>>>>> Is Linux and u-boot devicetree concept and build system are same?
>>>>>>>>>
>>>>>>>>> I don't really understand this question sorry. U-Boot and Linux use
>>>>>>>>> the device tree mainly for run-time configuration of drivers, so that
>>>>>>>>> the same driver code can operate on different boards.
>>>>>>>>
>>>>>>>> I am some how confusing the fdt usage in u-boot.
>>>>>>>> Because when compared to Linux, u-boot fdt setup mandatory to require
>>>>>>>> the CONFIG_DEFAULT_DEVICE_TREE
>>>>>>>> on the config file [from your previous comments].
>>>>>>>>
>>>>>>>> is this the only difference when compared to Linux i guess..is it?
>>>>>>>> Linux defconfig file does need to hot-code
>>>>>>>> the dts.
>>>>>>>
>>>>>>> Yes - that is a difference. Linux provides a way to build .dts files
>>>>>>> but it is not mandatory. At present it is mandatory with U-Boot, and
>>>>>>> only one file is built. It can easily be ignored though.
>>>>>>
>>>>>> Ok.
>>>>>>
>>>>>>>
>>>>>>>>
>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> Suppose I have 4 boards J1, J2, J3 & J4 on my soc "emb".of vendor "vast"
>>>>>>>>>> For this requirement I have
>>>>>>>>>> board/vast/dts/J1.dts
>>>>>>>>>> board/vast/dts/J2.dts
>>>>>>>>>> board/vast/dts/J3.dts
>>>>>>>>>> board/vast/dts/J4.dts
>>>>>>>>>>
>>>>>>>>>> include/configs/emb_common.h ==> single configuration of all SOC
>>>>>>>>>> needed definitions
>>>>>>>>>> like defconfig in Linux.
>>>>>>>>>>
>>>>>>>>>> do I need any more files?
>>>>>>>>>
>>>>>>>>> That's enough for the basics I think.
>>>>>>>>
>>>>>>>> Is dtsi file require to add it on arch folder along with above.
>>>>>>>
>>>>>>> If your architecture is not one of those already supported (like arm
>>>>>>> tegra/exynos and x86) then yes you need to add this file in
>>>>>>> arch/<arch>/dts. What architecture are you using?
>>>>>>
>>>>>> My architecture is armv7, may be for me dtsi not required as arm is
>>>>>> existing architecture
>>>>>> to support fdt on u-boot.. is it?
>>>>>
>>>>> Which sub-arch? If it is tegra/exynos5250 then you might be OK. For
>>>>> something else, you should get the kernel's .dtsi file for that chip.
>>>>
>>>> I am having armv7, xilinx zynq soc..but i coun't get any .dtsi on kernel source.
>>>> may be I will create new one.
>>>
>>> OK, well if the kernel doesn't have FDT support yet then yes you will
>>> need to create a new one.
>>>
>>>>
>>>>>
>>>>>>
>>>>>>>
>>>>>>>>
>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> In emb_common.h i am defining
>>>>>>>>>> CONFIG_OF_SEPARATE is it sufficient?
>>>>>>>>>
>>>>>>>>> And CONFIG_OF_CONTROL
>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> My plan is to build u-boot and then build the dtb with specific
>>>>>>>>>> board and then combine.
>>>>>>>>>
>>>>>>>>> That's fine, and is how we do things on Chromium also. U-Boot tries to
>>>>>>>>> build an FDT even with CONFIG_OF_SEPARATE, so you need to put a
>>>>>>>>> default device tree file in your emb_common.h file that it can find.
>>>>>>>>> But you can ignore it, and for flashing your boards just use
>>>>>>>>> u-boot.bin plus whatever .dtb you want to select.
>>>>>>>>
>>>>>>>> So I will add the fdt support and then build the u-boot.
>>>>>>>> Is there any separate u-boot build command to build dts file.
>>>>>>>> My plan is to combine both u-boot and dtb.
>>>>>>>
>>>>>>> You can run dtc yourself if you like - see Makefile/dts for how it is
>>>>>>> done there. Once you have the .dtb binary, the easiest thing is to add
>>>>>>> it to the end of u-boot.bin, as described in README.fdt-control.
>>>>>>
>>>>>> Thanks, I tried with above setup for adding dts.
>>>>>> I have added simple dts file on my board.
>>>>>>
>>>>>> I got the below build error
>>>>>> /proj/mypc/u-boot/include/asm/gpio.h:1:27: fatal error:
>>>>>> asm/arch/gpio.h: No such file or directory
>>>>>> compilation terminated.
>>>>>> make[1]: *** No rule to make target `.depend.fdtdec', needed by
>>>>>> `.depend'. Stop.
>>>>>>
>>>>>> is gpio.h is mandatory for fdt build?
>>>>>
>>>>> Yes because basic GPIO support is included. You can create one for
>>>>> your sub-arch and make it #include <asm-generic/gpio.h> as a starting
>>>>> point.
>>>>>
>>>>
>>>> Should I create an empty gpio.h file..it still asking some gpio
>>>> definitions right..
>>>
>>> It might be OK if you just have "#include <asm-generic/gpio.h>" in that file.
>>
>> Thanks.
>>
>> Finally I have created u-boot-dtb.bin.
>> for building dtb separately I have used
>> $ make DEVICE_TREE=zynq .. it creates a u-boot.dtb
>>
>> is there any option for building separate name, for example I need to
>> create zynq.dtb
No - but you can just use 'mv' in a script external to the U-Boot build system.
>
> Some how I am able to create a fdt build on my target.
> But what is this gpio mandatory, because currently my target currently
> need a GPIO setup.
> Add ing gpio.h/ with equivalent definitions is an extra overhead is
> it? please explain.
It is just a header file - unless you actually use the GPIO functions,
you can compile with -ffunction-sections and you won't get the GPIO
code included. Anyway, the overhead is small, if any.
Regards,
Simon
>
> Thanks,
> Jagan.
^ permalink raw reply [flat|nested] 22+ messages in thread
* [U-Boot] FDT howto
2013-02-24 23:10 ` Simon Glass
@ 2013-02-28 11:14 ` Jagan Teki
2013-02-28 13:52 ` Simon Glass
0 siblings, 1 reply; 22+ messages in thread
From: Jagan Teki @ 2013-02-28 11:14 UTC (permalink / raw)
To: u-boot
Hi Simon,
On Mon, Feb 25, 2013 at 4:40 AM, Simon Glass <sjg@chromium.org> wrote:
> Hi Jagan,
>
> On Sun, Feb 24, 2013 at 10:58 AM, Jagan Teki <jagannadh.teki@gmail.com> wrote:
>> Hi Simon,
>>
>> On Sun, Feb 24, 2013 at 11:55 PM, Jagan Teki <jagannadh.teki@gmail.com> wrote:
>>> Hi Simon,
>>>
>>> On Sun, Feb 24, 2013 at 11:50 PM, Simon Glass <sjg@chromium.org> wrote:
>>>> Hi,
>>>>
>>>> On Sun, Feb 24, 2013 at 9:55 AM, Jagan Teki <jagannadh.teki@gmail.com> wrote:
>>>>> Hi Simon,
>>>>>
>>>>> On Sun, Feb 24, 2013 at 11:18 PM, Simon Glass <sjg@chromium.org> wrote:
>>>>>> Hi Jegan,
>>>>>>
>>>>>> On Sun, Feb 24, 2013 at 9:45 AM, Jagan Teki <jagannadh.teki@gmail.com> wrote:
>>>>>>> Hi Simon,
>>>>>>>
>>>>>>> On Sun, Feb 24, 2013 at 11:08 PM, Simon Glass <sjg@chromium.org> wrote:
>>>>>>>> Hi Jagan,
>>>>>>>>
>>>>>>>> On Sun, Feb 24, 2013 at 8:19 AM, Jagan Teki <jagannadh.teki@gmail.com> wrote:
>>>>>>>>> Hi Simon,
>>>>>>>>>
>>>>>>>>> Thanks for your response, please find my below comments.
>>>>>>>>>
>>>>>>>>> On Sun, Feb 24, 2013 at 9:24 PM, Simon Glass <sjg@chromium.org> wrote:
>>>>>>>>>> Hi Jagan,
>>>>>>>>>>
>>>>>>>>>> On Thu, Feb 21, 2013 at 9:03 AM, Jagan Teki <jagannadh.teki@gmail.com> wrote:
>>>>>>>>>>> Hi All,
>>>>>>>>>>>
>>>>>>>>>>> I am planning to use devicetree on u-boot.
>>>>>>>>>>> I have an experience to work with devicetree on Linux.
>>>>>>>>>>>
>>>>>>>>>>> For u-boot, I have read doc from doc/README.fdt-control.
>>>>>>>>>>> I see some dts usages on tegra boards.
>>>>>>>>>>>
>>>>>>>>>>> I have lot of confusions with the concept itself.
>>>>>>>>>>>
>>>>>>>>>>> Is Linux and u-boot devicetree concept and build system are same?
>>>>>>>>>>
>>>>>>>>>> I don't really understand this question sorry. U-Boot and Linux use
>>>>>>>>>> the device tree mainly for run-time configuration of drivers, so that
>>>>>>>>>> the same driver code can operate on different boards.
>>>>>>>>>
>>>>>>>>> I am some how confusing the fdt usage in u-boot.
>>>>>>>>> Because when compared to Linux, u-boot fdt setup mandatory to require
>>>>>>>>> the CONFIG_DEFAULT_DEVICE_TREE
>>>>>>>>> on the config file [from your previous comments].
>>>>>>>>>
>>>>>>>>> is this the only difference when compared to Linux i guess..is it?
>>>>>>>>> Linux defconfig file does need to hot-code
>>>>>>>>> the dts.
>>>>>>>>
>>>>>>>> Yes - that is a difference. Linux provides a way to build .dts files
>>>>>>>> but it is not mandatory. At present it is mandatory with U-Boot, and
>>>>>>>> only one file is built. It can easily be ignored though.
>>>>>>>
>>>>>>> Ok.
>>>>>>>
>>>>>>>>
>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>> Suppose I have 4 boards J1, J2, J3 & J4 on my soc "emb".of vendor "vast"
>>>>>>>>>>> For this requirement I have
>>>>>>>>>>> board/vast/dts/J1.dts
>>>>>>>>>>> board/vast/dts/J2.dts
>>>>>>>>>>> board/vast/dts/J3.dts
>>>>>>>>>>> board/vast/dts/J4.dts
>>>>>>>>>>>
>>>>>>>>>>> include/configs/emb_common.h ==> single configuration of all SOC
>>>>>>>>>>> needed definitions
>>>>>>>>>>> like defconfig in Linux.
>>>>>>>>>>>
>>>>>>>>>>> do I need any more files?
>>>>>>>>>>
>>>>>>>>>> That's enough for the basics I think.
>>>>>>>>>
>>>>>>>>> Is dtsi file require to add it on arch folder along with above.
>>>>>>>>
>>>>>>>> If your architecture is not one of those already supported (like arm
>>>>>>>> tegra/exynos and x86) then yes you need to add this file in
>>>>>>>> arch/<arch>/dts. What architecture are you using?
>>>>>>>
>>>>>>> My architecture is armv7, may be for me dtsi not required as arm is
>>>>>>> existing architecture
>>>>>>> to support fdt on u-boot.. is it?
>>>>>>
>>>>>> Which sub-arch? If it is tegra/exynos5250 then you might be OK. For
>>>>>> something else, you should get the kernel's .dtsi file for that chip.
>>>>>
>>>>> I am having armv7, xilinx zynq soc..but i coun't get any .dtsi on kernel source.
>>>>> may be I will create new one.
>>>>
>>>> OK, well if the kernel doesn't have FDT support yet then yes you will
>>>> need to create a new one.
>>>>
>>>>>
>>>>>>
>>>>>>>
>>>>>>>>
>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>> In emb_common.h i am defining
>>>>>>>>>>> CONFIG_OF_SEPARATE is it sufficient?
>>>>>>>>>>
>>>>>>>>>> And CONFIG_OF_CONTROL
>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>> My plan is to build u-boot and then build the dtb with specific
>>>>>>>>>>> board and then combine.
>>>>>>>>>>
>>>>>>>>>> That's fine, and is how we do things on Chromium also. U-Boot tries to
>>>>>>>>>> build an FDT even with CONFIG_OF_SEPARATE, so you need to put a
>>>>>>>>>> default device tree file in your emb_common.h file that it can find.
>>>>>>>>>> But you can ignore it, and for flashing your boards just use
>>>>>>>>>> u-boot.bin plus whatever .dtb you want to select.
>>>>>>>>>
>>>>>>>>> So I will add the fdt support and then build the u-boot.
>>>>>>>>> Is there any separate u-boot build command to build dts file.
>>>>>>>>> My plan is to combine both u-boot and dtb.
>>>>>>>>
>>>>>>>> You can run dtc yourself if you like - see Makefile/dts for how it is
>>>>>>>> done there. Once you have the .dtb binary, the easiest thing is to add
>>>>>>>> it to the end of u-boot.bin, as described in README.fdt-control.
>>>>>>>
>>>>>>> Thanks, I tried with above setup for adding dts.
>>>>>>> I have added simple dts file on my board.
>>>>>>>
>>>>>>> I got the below build error
>>>>>>> /proj/mypc/u-boot/include/asm/gpio.h:1:27: fatal error:
>>>>>>> asm/arch/gpio.h: No such file or directory
>>>>>>> compilation terminated.
>>>>>>> make[1]: *** No rule to make target `.depend.fdtdec', needed by
>>>>>>> `.depend'. Stop.
>>>>>>>
>>>>>>> is gpio.h is mandatory for fdt build?
>>>>>>
>>>>>> Yes because basic GPIO support is included. You can create one for
>>>>>> your sub-arch and make it #include <asm-generic/gpio.h> as a starting
>>>>>> point.
>>>>>>
>>>>>
>>>>> Should I create an empty gpio.h file..it still asking some gpio
>>>>> definitions right..
>>>>
>>>> It might be OK if you just have "#include <asm-generic/gpio.h>" in that file.
>>>
>>> Thanks.
>>>
>>> Finally I have created u-boot-dtb.bin.
>>> for building dtb separately I have used
>>> $ make DEVICE_TREE=zynq .. it creates a u-boot.dtb
>>>
>>> is there any option for building separate name, for example I need to
>>> create zynq.dtb
>
> No - but you can just use 'mv' in a script external to the U-Boot build system.
>
>>
>> Some how I am able to create a fdt build on my target.
>> But what is this gpio mandatory, because currently my target currently
>> need a GPIO setup.
>> Add ing gpio.h/ with equivalent definitions is an extra overhead is
>> it? please explain.
>
> It is just a header file - unless you actually use the GPIO functions,
> you can compile with -ffunction-sections and you won't get the GPIO
> code included. Anyway, the overhead is small, if any.
OK, Thanks for your information.
I have few quires regarding getting details from devicetree nodes.
1) In case of drivers, I think we need add the MACROS on
// lib/fdtdec.c
static const char * const compat_names[COMPAT_COUNT] = {
is it?
2) What is the procedure for DDR base and size information getting
memory {
reg = <0x00000000 0x40000000>;
};
I need to get the above details from memory node of dts and
updated while doing
dram_init()
is it possible in u-boot right now?
3) and same case for chosen also..are these implemented currently.
Request your inputs.
Thanks,
Jagan.
^ permalink raw reply [flat|nested] 22+ messages in thread
* [U-Boot] FDT howto
2013-02-28 11:14 ` Jagan Teki
@ 2013-02-28 13:52 ` Simon Glass
2013-02-28 20:29 ` Jagan Teki
0 siblings, 1 reply; 22+ messages in thread
From: Simon Glass @ 2013-02-28 13:52 UTC (permalink / raw)
To: u-boot
Hi Jagan,
On Thu, Feb 28, 2013 at 3:14 AM, Jagan Teki <jagannadh.teki@gmail.com> wrote:
> Hi Simon,
>
> On Mon, Feb 25, 2013 at 4:40 AM, Simon Glass <sjg@chromium.org> wrote:
>> Hi Jagan,
>>
>> On Sun, Feb 24, 2013 at 10:58 AM, Jagan Teki <jagannadh.teki@gmail.com> wrote:
>>> Hi Simon,
>>>
>>> On Sun, Feb 24, 2013 at 11:55 PM, Jagan Teki <jagannadh.teki@gmail.com> wrote:
>>>> Hi Simon,
>>>>
>>>> On Sun, Feb 24, 2013 at 11:50 PM, Simon Glass <sjg@chromium.org> wrote:
>>>>> Hi,
>>>>>
>>>>> On Sun, Feb 24, 2013 at 9:55 AM, Jagan Teki <jagannadh.teki@gmail.com> wrote:
>>>>>> Hi Simon,
>>>>>>
>>>>>> On Sun, Feb 24, 2013 at 11:18 PM, Simon Glass <sjg@chromium.org> wrote:
>>>>>>> Hi Jegan,
>>>>>>>
>>>>>>> On Sun, Feb 24, 2013 at 9:45 AM, Jagan Teki <jagannadh.teki@gmail.com> wrote:
>>>>>>>> Hi Simon,
>>>>>>>>
>>>>>>>> On Sun, Feb 24, 2013 at 11:08 PM, Simon Glass <sjg@chromium.org> wrote:
>>>>>>>>> Hi Jagan,
>>>>>>>>>
>>>>>>>>> On Sun, Feb 24, 2013 at 8:19 AM, Jagan Teki <jagannadh.teki@gmail.com> wrote:
>>>>>>>>>> Hi Simon,
>>>>>>>>>>
>>>>>>>>>> Thanks for your response, please find my below comments.
>>>>>>>>>>
>>>>>>>>>> On Sun, Feb 24, 2013 at 9:24 PM, Simon Glass <sjg@chromium.org> wrote:
>>>>>>>>>>> Hi Jagan,
>>>>>>>>>>>
>>>>>>>>>>> On Thu, Feb 21, 2013 at 9:03 AM, Jagan Teki <jagannadh.teki@gmail.com> wrote:
>>>>>>>>>>>> Hi All,
>>>>>>>>>>>>
>>>>>>>>>>>> I am planning to use devicetree on u-boot.
>>>>>>>>>>>> I have an experience to work with devicetree on Linux.
>>>>>>>>>>>>
>>>>>>>>>>>> For u-boot, I have read doc from doc/README.fdt-control.
>>>>>>>>>>>> I see some dts usages on tegra boards.
>>>>>>>>>>>>
>>>>>>>>>>>> I have lot of confusions with the concept itself.
>>>>>>>>>>>>
>>>>>>>>>>>> Is Linux and u-boot devicetree concept and build system are same?
>>>>>>>>>>>
>>>>>>>>>>> I don't really understand this question sorry. U-Boot and Linux use
>>>>>>>>>>> the device tree mainly for run-time configuration of drivers, so that
>>>>>>>>>>> the same driver code can operate on different boards.
>>>>>>>>>>
>>>>>>>>>> I am some how confusing the fdt usage in u-boot.
>>>>>>>>>> Because when compared to Linux, u-boot fdt setup mandatory to require
>>>>>>>>>> the CONFIG_DEFAULT_DEVICE_TREE
>>>>>>>>>> on the config file [from your previous comments].
>>>>>>>>>>
>>>>>>>>>> is this the only difference when compared to Linux i guess..is it?
>>>>>>>>>> Linux defconfig file does need to hot-code
>>>>>>>>>> the dts.
>>>>>>>>>
>>>>>>>>> Yes - that is a difference. Linux provides a way to build .dts files
>>>>>>>>> but it is not mandatory. At present it is mandatory with U-Boot, and
>>>>>>>>> only one file is built. It can easily be ignored though.
>>>>>>>>
>>>>>>>> Ok.
>>>>>>>>
>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>> Suppose I have 4 boards J1, J2, J3 & J4 on my soc "emb".of vendor "vast"
>>>>>>>>>>>> For this requirement I have
>>>>>>>>>>>> board/vast/dts/J1.dts
>>>>>>>>>>>> board/vast/dts/J2.dts
>>>>>>>>>>>> board/vast/dts/J3.dts
>>>>>>>>>>>> board/vast/dts/J4.dts
>>>>>>>>>>>>
>>>>>>>>>>>> include/configs/emb_common.h ==> single configuration of all SOC
>>>>>>>>>>>> needed definitions
>>>>>>>>>>>> like defconfig in Linux.
>>>>>>>>>>>>
>>>>>>>>>>>> do I need any more files?
>>>>>>>>>>>
>>>>>>>>>>> That's enough for the basics I think.
>>>>>>>>>>
>>>>>>>>>> Is dtsi file require to add it on arch folder along with above.
>>>>>>>>>
>>>>>>>>> If your architecture is not one of those already supported (like arm
>>>>>>>>> tegra/exynos and x86) then yes you need to add this file in
>>>>>>>>> arch/<arch>/dts. What architecture are you using?
>>>>>>>>
>>>>>>>> My architecture is armv7, may be for me dtsi not required as arm is
>>>>>>>> existing architecture
>>>>>>>> to support fdt on u-boot.. is it?
>>>>>>>
>>>>>>> Which sub-arch? If it is tegra/exynos5250 then you might be OK. For
>>>>>>> something else, you should get the kernel's .dtsi file for that chip.
>>>>>>
>>>>>> I am having armv7, xilinx zynq soc..but i coun't get any .dtsi on kernel source.
>>>>>> may be I will create new one.
>>>>>
>>>>> OK, well if the kernel doesn't have FDT support yet then yes you will
>>>>> need to create a new one.
>>>>>
>>>>>>
>>>>>>>
>>>>>>>>
>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>> In emb_common.h i am defining
>>>>>>>>>>>> CONFIG_OF_SEPARATE is it sufficient?
>>>>>>>>>>>
>>>>>>>>>>> And CONFIG_OF_CONTROL
>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>> My plan is to build u-boot and then build the dtb with specific
>>>>>>>>>>>> board and then combine.
>>>>>>>>>>>
>>>>>>>>>>> That's fine, and is how we do things on Chromium also. U-Boot tries to
>>>>>>>>>>> build an FDT even with CONFIG_OF_SEPARATE, so you need to put a
>>>>>>>>>>> default device tree file in your emb_common.h file that it can find.
>>>>>>>>>>> But you can ignore it, and for flashing your boards just use
>>>>>>>>>>> u-boot.bin plus whatever .dtb you want to select.
>>>>>>>>>>
>>>>>>>>>> So I will add the fdt support and then build the u-boot.
>>>>>>>>>> Is there any separate u-boot build command to build dts file.
>>>>>>>>>> My plan is to combine both u-boot and dtb.
>>>>>>>>>
>>>>>>>>> You can run dtc yourself if you like - see Makefile/dts for how it is
>>>>>>>>> done there. Once you have the .dtb binary, the easiest thing is to add
>>>>>>>>> it to the end of u-boot.bin, as described in README.fdt-control.
>>>>>>>>
>>>>>>>> Thanks, I tried with above setup for adding dts.
>>>>>>>> I have added simple dts file on my board.
>>>>>>>>
>>>>>>>> I got the below build error
>>>>>>>> /proj/mypc/u-boot/include/asm/gpio.h:1:27: fatal error:
>>>>>>>> asm/arch/gpio.h: No such file or directory
>>>>>>>> compilation terminated.
>>>>>>>> make[1]: *** No rule to make target `.depend.fdtdec', needed by
>>>>>>>> `.depend'. Stop.
>>>>>>>>
>>>>>>>> is gpio.h is mandatory for fdt build?
>>>>>>>
>>>>>>> Yes because basic GPIO support is included. You can create one for
>>>>>>> your sub-arch and make it #include <asm-generic/gpio.h> as a starting
>>>>>>> point.
>>>>>>>
>>>>>>
>>>>>> Should I create an empty gpio.h file..it still asking some gpio
>>>>>> definitions right..
>>>>>
>>>>> It might be OK if you just have "#include <asm-generic/gpio.h>" in that file.
>>>>
>>>> Thanks.
>>>>
>>>> Finally I have created u-boot-dtb.bin.
>>>> for building dtb separately I have used
>>>> $ make DEVICE_TREE=zynq .. it creates a u-boot.dtb
>>>>
>>>> is there any option for building separate name, for example I need to
>>>> create zynq.dtb
>>
>> No - but you can just use 'mv' in a script external to the U-Boot build system.
>>
>>>
>>> Some how I am able to create a fdt build on my target.
>>> But what is this gpio mandatory, because currently my target currently
>>> need a GPIO setup.
>>> Add ing gpio.h/ with equivalent definitions is an extra overhead is
>>> it? please explain.
>>
>> It is just a header file - unless you actually use the GPIO functions,
>> you can compile with -ffunction-sections and you won't get the GPIO
>> code included. Anyway, the overhead is small, if any.
>
> OK, Thanks for your information.
>
> I have few quires regarding getting details from devicetree nodes.
> 1) In case of drivers, I think we need add the MACROS on
> // lib/fdtdec.c
> static const char * const compat_names[COMPAT_COUNT] = {
> is it?
Yes that's what is normally done. At present it mostly just provides a
way to register existing FDT use in U-Boot.
> 2) What is the procedure for DDR base and size information getting
> memory {
> reg = <0x00000000 0x40000000>;
> };
> I need to get the above details from memory node of dts and
> updated while doing
> dram_init()
> is it possible in u-boot right now?
There is no particular support for dram_init(). You could call
fdtdec_decode_region() to get the information.
> 3) and same case for chosen also..are these implemented currently.
The bootargs environment variable is placed in the kernel FDT when
booting the kernel. But 'chosen' is not used in the U-Boot FDT. This
is support instead for a '/config' node - see e.g.
fdtdec_get_config_int().
>
> Request your inputs.
>
> Thanks,
> Jagan.
Regards,
Simon
^ permalink raw reply [flat|nested] 22+ messages in thread
* [U-Boot] FDT howto
2013-02-28 13:52 ` Simon Glass
@ 2013-02-28 20:29 ` Jagan Teki
2013-03-01 4:37 ` Simon Glass
0 siblings, 1 reply; 22+ messages in thread
From: Jagan Teki @ 2013-02-28 20:29 UTC (permalink / raw)
To: u-boot
Hi Simon,
On Thu, Feb 28, 2013 at 7:22 PM, Simon Glass <sjg@chromium.org> wrote:
> Hi Jagan,
>
> On Thu, Feb 28, 2013 at 3:14 AM, Jagan Teki <jagannadh.teki@gmail.com> wrote:
>> Hi Simon,
>>
>> On Mon, Feb 25, 2013 at 4:40 AM, Simon Glass <sjg@chromium.org> wrote:
>>> Hi Jagan,
>>>
>>> On Sun, Feb 24, 2013 at 10:58 AM, Jagan Teki <jagannadh.teki@gmail.com> wrote:
>>>> Hi Simon,
>>>>
>>>> On Sun, Feb 24, 2013 at 11:55 PM, Jagan Teki <jagannadh.teki@gmail.com> wrote:
>>>>> Hi Simon,
>>>>>
>>>>> On Sun, Feb 24, 2013 at 11:50 PM, Simon Glass <sjg@chromium.org> wrote:
>>>>>> Hi,
>>>>>>
>>>>>> On Sun, Feb 24, 2013 at 9:55 AM, Jagan Teki <jagannadh.teki@gmail.com> wrote:
>>>>>>> Hi Simon,
>>>>>>>
>>>>>>> On Sun, Feb 24, 2013 at 11:18 PM, Simon Glass <sjg@chromium.org> wrote:
>>>>>>>> Hi Jegan,
>>>>>>>>
>>>>>>>> On Sun, Feb 24, 2013 at 9:45 AM, Jagan Teki <jagannadh.teki@gmail.com> wrote:
>>>>>>>>> Hi Simon,
>>>>>>>>>
>>>>>>>>> On Sun, Feb 24, 2013 at 11:08 PM, Simon Glass <sjg@chromium.org> wrote:
>>>>>>>>>> Hi Jagan,
>>>>>>>>>>
>>>>>>>>>> On Sun, Feb 24, 2013 at 8:19 AM, Jagan Teki <jagannadh.teki@gmail.com> wrote:
>>>>>>>>>>> Hi Simon,
>>>>>>>>>>>
>>>>>>>>>>> Thanks for your response, please find my below comments.
>>>>>>>>>>>
>>>>>>>>>>> On Sun, Feb 24, 2013 at 9:24 PM, Simon Glass <sjg@chromium.org> wrote:
>>>>>>>>>>>> Hi Jagan,
>>>>>>>>>>>>
>>>>>>>>>>>> On Thu, Feb 21, 2013 at 9:03 AM, Jagan Teki <jagannadh.teki@gmail.com> wrote:
>>>>>>>>>>>>> Hi All,
>>>>>>>>>>>>>
>>>>>>>>>>>>> I am planning to use devicetree on u-boot.
>>>>>>>>>>>>> I have an experience to work with devicetree on Linux.
>>>>>>>>>>>>>
>>>>>>>>>>>>> For u-boot, I have read doc from doc/README.fdt-control.
>>>>>>>>>>>>> I see some dts usages on tegra boards.
>>>>>>>>>>>>>
>>>>>>>>>>>>> I have lot of confusions with the concept itself.
>>>>>>>>>>>>>
>>>>>>>>>>>>> Is Linux and u-boot devicetree concept and build system are same?
>>>>>>>>>>>>
>>>>>>>>>>>> I don't really understand this question sorry. U-Boot and Linux use
>>>>>>>>>>>> the device tree mainly for run-time configuration of drivers, so that
>>>>>>>>>>>> the same driver code can operate on different boards.
>>>>>>>>>>>
>>>>>>>>>>> I am some how confusing the fdt usage in u-boot.
>>>>>>>>>>> Because when compared to Linux, u-boot fdt setup mandatory to require
>>>>>>>>>>> the CONFIG_DEFAULT_DEVICE_TREE
>>>>>>>>>>> on the config file [from your previous comments].
>>>>>>>>>>>
>>>>>>>>>>> is this the only difference when compared to Linux i guess..is it?
>>>>>>>>>>> Linux defconfig file does need to hot-code
>>>>>>>>>>> the dts.
>>>>>>>>>>
>>>>>>>>>> Yes - that is a difference. Linux provides a way to build .dts files
>>>>>>>>>> but it is not mandatory. At present it is mandatory with U-Boot, and
>>>>>>>>>> only one file is built. It can easily be ignored though.
>>>>>>>>>
>>>>>>>>> Ok.
>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>>>
>>>>>>>>>>>>> Suppose I have 4 boards J1, J2, J3 & J4 on my soc "emb".of vendor "vast"
>>>>>>>>>>>>> For this requirement I have
>>>>>>>>>>>>> board/vast/dts/J1.dts
>>>>>>>>>>>>> board/vast/dts/J2.dts
>>>>>>>>>>>>> board/vast/dts/J3.dts
>>>>>>>>>>>>> board/vast/dts/J4.dts
>>>>>>>>>>>>>
>>>>>>>>>>>>> include/configs/emb_common.h ==> single configuration of all SOC
>>>>>>>>>>>>> needed definitions
>>>>>>>>>>>>> like defconfig in Linux.
>>>>>>>>>>>>>
>>>>>>>>>>>>> do I need any more files?
>>>>>>>>>>>>
>>>>>>>>>>>> That's enough for the basics I think.
>>>>>>>>>>>
>>>>>>>>>>> Is dtsi file require to add it on arch folder along with above.
>>>>>>>>>>
>>>>>>>>>> If your architecture is not one of those already supported (like arm
>>>>>>>>>> tegra/exynos and x86) then yes you need to add this file in
>>>>>>>>>> arch/<arch>/dts. What architecture are you using?
>>>>>>>>>
>>>>>>>>> My architecture is armv7, may be for me dtsi not required as arm is
>>>>>>>>> existing architecture
>>>>>>>>> to support fdt on u-boot.. is it?
>>>>>>>>
>>>>>>>> Which sub-arch? If it is tegra/exynos5250 then you might be OK. For
>>>>>>>> something else, you should get the kernel's .dtsi file for that chip.
>>>>>>>
>>>>>>> I am having armv7, xilinx zynq soc..but i coun't get any .dtsi on kernel source.
>>>>>>> may be I will create new one.
>>>>>>
>>>>>> OK, well if the kernel doesn't have FDT support yet then yes you will
>>>>>> need to create a new one.
>>>>>>
>>>>>>>
>>>>>>>>
>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>>>
>>>>>>>>>>>>> In emb_common.h i am defining
>>>>>>>>>>>>> CONFIG_OF_SEPARATE is it sufficient?
>>>>>>>>>>>>
>>>>>>>>>>>> And CONFIG_OF_CONTROL
>>>>>>>>>>>>
>>>>>>>>>>>>>
>>>>>>>>>>>>> My plan is to build u-boot and then build the dtb with specific
>>>>>>>>>>>>> board and then combine.
>>>>>>>>>>>>
>>>>>>>>>>>> That's fine, and is how we do things on Chromium also. U-Boot tries to
>>>>>>>>>>>> build an FDT even with CONFIG_OF_SEPARATE, so you need to put a
>>>>>>>>>>>> default device tree file in your emb_common.h file that it can find.
>>>>>>>>>>>> But you can ignore it, and for flashing your boards just use
>>>>>>>>>>>> u-boot.bin plus whatever .dtb you want to select.
>>>>>>>>>>>
>>>>>>>>>>> So I will add the fdt support and then build the u-boot.
>>>>>>>>>>> Is there any separate u-boot build command to build dts file.
>>>>>>>>>>> My plan is to combine both u-boot and dtb.
>>>>>>>>>>
>>>>>>>>>> You can run dtc yourself if you like - see Makefile/dts for how it is
>>>>>>>>>> done there. Once you have the .dtb binary, the easiest thing is to add
>>>>>>>>>> it to the end of u-boot.bin, as described in README.fdt-control.
>>>>>>>>>
>>>>>>>>> Thanks, I tried with above setup for adding dts.
>>>>>>>>> I have added simple dts file on my board.
>>>>>>>>>
>>>>>>>>> I got the below build error
>>>>>>>>> /proj/mypc/u-boot/include/asm/gpio.h:1:27: fatal error:
>>>>>>>>> asm/arch/gpio.h: No such file or directory
>>>>>>>>> compilation terminated.
>>>>>>>>> make[1]: *** No rule to make target `.depend.fdtdec', needed by
>>>>>>>>> `.depend'. Stop.
>>>>>>>>>
>>>>>>>>> is gpio.h is mandatory for fdt build?
>>>>>>>>
>>>>>>>> Yes because basic GPIO support is included. You can create one for
>>>>>>>> your sub-arch and make it #include <asm-generic/gpio.h> as a starting
>>>>>>>> point.
>>>>>>>>
>>>>>>>
>>>>>>> Should I create an empty gpio.h file..it still asking some gpio
>>>>>>> definitions right..
>>>>>>
>>>>>> It might be OK if you just have "#include <asm-generic/gpio.h>" in that file.
>>>>>
>>>>> Thanks.
>>>>>
>>>>> Finally I have created u-boot-dtb.bin.
>>>>> for building dtb separately I have used
>>>>> $ make DEVICE_TREE=zynq .. it creates a u-boot.dtb
>>>>>
>>>>> is there any option for building separate name, for example I need to
>>>>> create zynq.dtb
>>>
>>> No - but you can just use 'mv' in a script external to the U-Boot build system.
>>>
>>>>
>>>> Some how I am able to create a fdt build on my target.
>>>> But what is this gpio mandatory, because currently my target currently
>>>> need a GPIO setup.
>>>> Add ing gpio.h/ with equivalent definitions is an extra overhead is
>>>> it? please explain.
>>>
>>> It is just a header file - unless you actually use the GPIO functions,
>>> you can compile with -ffunction-sections and you won't get the GPIO
>>> code included. Anyway, the overhead is small, if any.
>>
>> OK, Thanks for your information.
>>
>> I have few quires regarding getting details from devicetree nodes.
>> 1) In case of drivers, I think we need add the MACROS on
>> // lib/fdtdec.c
>> static const char * const compat_names[COMPAT_COUNT] = {
>> is it?
>
> Yes that's what is normally done. At present it mostly just provides a
> way to register existing FDT use in U-Boot.
OK.
>
>> 2) What is the procedure for DDR base and size information getting
>> memory {
>> reg = <0x00000000 0x40000000>;
>> };
>> I need to get the above details from memory node of dts and
>> updated while doing
>> dram_init()
>> is it possible in u-boot right now?
>
> There is no particular support for dram_init(). You could call
> fdtdec_decode_region() to get the information.
Actually we may get the info through memory node using
fdtdec_decode_region() for
dram_init(), but the problem seems like other than this the SDRAM base
and SDSIZE are using in
CONFIG_SYS_MEMTEST_START and CONFIG_SYS_MEMTEST_END.
As these are part of configuration macros, I don't clear how we can
get the base,sizes from dts and assign these
areas..any suggestions..?
>
>> 3) and same case for chosen also..are these implemented currently.
>
> The bootargs environment variable is placed in the kernel FDT when
> booting the kernel. But 'chosen' is not used in the U-Boot FDT. This
> is support instead for a '/config' node - see e.g.
> fdtdec_get_config_int().
OK, thank you.
Thanks,
Jagan.
^ permalink raw reply [flat|nested] 22+ messages in thread
* [U-Boot] FDT howto
2013-02-28 20:29 ` Jagan Teki
@ 2013-03-01 4:37 ` Simon Glass
2013-03-01 19:14 ` Jagan Teki
0 siblings, 1 reply; 22+ messages in thread
From: Simon Glass @ 2013-03-01 4:37 UTC (permalink / raw)
To: u-boot
Hi Jagan,
On Thu, Feb 28, 2013 at 12:29 PM, Jagan Teki <jagannadh.teki@gmail.com> wrote:
> Hi Simon,
>
> On Thu, Feb 28, 2013 at 7:22 PM, Simon Glass <sjg@chromium.org> wrote:
>> Hi Jagan,
>>
>> On Thu, Feb 28, 2013 at 3:14 AM, Jagan Teki <jagannadh.teki@gmail.com> wrote:
>>> Hi Simon,
>>>
>>> On Mon, Feb 25, 2013 at 4:40 AM, Simon Glass <sjg@chromium.org> wrote:
>>>> Hi Jagan,
>>>>
>>>> On Sun, Feb 24, 2013 at 10:58 AM, Jagan Teki <jagannadh.teki@gmail.com> wrote:
>>>>> Hi Simon,
>>>>>
>>>>> On Sun, Feb 24, 2013 at 11:55 PM, Jagan Teki <jagannadh.teki@gmail.com> wrote:
>>>>>> Hi Simon,
>>>>>>
>>>>>> On Sun, Feb 24, 2013 at 11:50 PM, Simon Glass <sjg@chromium.org> wrote:
>>>>>>> Hi,
>>>>>>>
>>>>>>> On Sun, Feb 24, 2013 at 9:55 AM, Jagan Teki <jagannadh.teki@gmail.com> wrote:
>>>>>>>> Hi Simon,
>>>>>>>>
>>>>>>>> On Sun, Feb 24, 2013 at 11:18 PM, Simon Glass <sjg@chromium.org> wrote:
>>>>>>>>> Hi Jegan,
>>>>>>>>>
>>>>>>>>> On Sun, Feb 24, 2013 at 9:45 AM, Jagan Teki <jagannadh.teki@gmail.com> wrote:
>>>>>>>>>> Hi Simon,
>>>>>>>>>>
>>>>>>>>>> On Sun, Feb 24, 2013 at 11:08 PM, Simon Glass <sjg@chromium.org> wrote:
>>>>>>>>>>> Hi Jagan,
>>>>>>>>>>>
>>>>>>>>>>> On Sun, Feb 24, 2013 at 8:19 AM, Jagan Teki <jagannadh.teki@gmail.com> wrote:
>>>>>>>>>>>> Hi Simon,
>>>>>>>>>>>>
>>>>>>>>>>>> Thanks for your response, please find my below comments.
>>>>>>>>>>>>
>>>>>>>>>>>> On Sun, Feb 24, 2013 at 9:24 PM, Simon Glass <sjg@chromium.org> wrote:
>>>>>>>>>>>>> Hi Jagan,
>>>>>>>>>>>>>
>>>>>>>>>>>>> On Thu, Feb 21, 2013 at 9:03 AM, Jagan Teki <jagannadh.teki@gmail.com> wrote:
>>>>>>>>>>>>>> Hi All,
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> I am planning to use devicetree on u-boot.
>>>>>>>>>>>>>> I have an experience to work with devicetree on Linux.
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> For u-boot, I have read doc from doc/README.fdt-control.
>>>>>>>>>>>>>> I see some dts usages on tegra boards.
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> I have lot of confusions with the concept itself.
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> Is Linux and u-boot devicetree concept and build system are same?
>>>>>>>>>>>>>
>>>>>>>>>>>>> I don't really understand this question sorry. U-Boot and Linux use
>>>>>>>>>>>>> the device tree mainly for run-time configuration of drivers, so that
>>>>>>>>>>>>> the same driver code can operate on different boards.
>>>>>>>>>>>>
>>>>>>>>>>>> I am some how confusing the fdt usage in u-boot.
>>>>>>>>>>>> Because when compared to Linux, u-boot fdt setup mandatory to require
>>>>>>>>>>>> the CONFIG_DEFAULT_DEVICE_TREE
>>>>>>>>>>>> on the config file [from your previous comments].
>>>>>>>>>>>>
>>>>>>>>>>>> is this the only difference when compared to Linux i guess..is it?
>>>>>>>>>>>> Linux defconfig file does need to hot-code
>>>>>>>>>>>> the dts.
>>>>>>>>>>>
>>>>>>>>>>> Yes - that is a difference. Linux provides a way to build .dts files
>>>>>>>>>>> but it is not mandatory. At present it is mandatory with U-Boot, and
>>>>>>>>>>> only one file is built. It can easily be ignored though.
>>>>>>>>>>
>>>>>>>>>> Ok.
>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>>>
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> Suppose I have 4 boards J1, J2, J3 & J4 on my soc "emb".of vendor "vast"
>>>>>>>>>>>>>> For this requirement I have
>>>>>>>>>>>>>> board/vast/dts/J1.dts
>>>>>>>>>>>>>> board/vast/dts/J2.dts
>>>>>>>>>>>>>> board/vast/dts/J3.dts
>>>>>>>>>>>>>> board/vast/dts/J4.dts
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> include/configs/emb_common.h ==> single configuration of all SOC
>>>>>>>>>>>>>> needed definitions
>>>>>>>>>>>>>> like defconfig in Linux.
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> do I need any more files?
>>>>>>>>>>>>>
>>>>>>>>>>>>> That's enough for the basics I think.
>>>>>>>>>>>>
>>>>>>>>>>>> Is dtsi file require to add it on arch folder along with above.
>>>>>>>>>>>
>>>>>>>>>>> If your architecture is not one of those already supported (like arm
>>>>>>>>>>> tegra/exynos and x86) then yes you need to add this file in
>>>>>>>>>>> arch/<arch>/dts. What architecture are you using?
>>>>>>>>>>
>>>>>>>>>> My architecture is armv7, may be for me dtsi not required as arm is
>>>>>>>>>> existing architecture
>>>>>>>>>> to support fdt on u-boot.. is it?
>>>>>>>>>
>>>>>>>>> Which sub-arch? If it is tegra/exynos5250 then you might be OK. For
>>>>>>>>> something else, you should get the kernel's .dtsi file for that chip.
>>>>>>>>
>>>>>>>> I am having armv7, xilinx zynq soc..but i coun't get any .dtsi on kernel source.
>>>>>>>> may be I will create new one.
>>>>>>>
>>>>>>> OK, well if the kernel doesn't have FDT support yet then yes you will
>>>>>>> need to create a new one.
>>>>>>>
>>>>>>>>
>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>>>
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> In emb_common.h i am defining
>>>>>>>>>>>>>> CONFIG_OF_SEPARATE is it sufficient?
>>>>>>>>>>>>>
>>>>>>>>>>>>> And CONFIG_OF_CONTROL
>>>>>>>>>>>>>
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> My plan is to build u-boot and then build the dtb with specific
>>>>>>>>>>>>>> board and then combine.
>>>>>>>>>>>>>
>>>>>>>>>>>>> That's fine, and is how we do things on Chromium also. U-Boot tries to
>>>>>>>>>>>>> build an FDT even with CONFIG_OF_SEPARATE, so you need to put a
>>>>>>>>>>>>> default device tree file in your emb_common.h file that it can find.
>>>>>>>>>>>>> But you can ignore it, and for flashing your boards just use
>>>>>>>>>>>>> u-boot.bin plus whatever .dtb you want to select.
>>>>>>>>>>>>
>>>>>>>>>>>> So I will add the fdt support and then build the u-boot.
>>>>>>>>>>>> Is there any separate u-boot build command to build dts file.
>>>>>>>>>>>> My plan is to combine both u-boot and dtb.
>>>>>>>>>>>
>>>>>>>>>>> You can run dtc yourself if you like - see Makefile/dts for how it is
>>>>>>>>>>> done there. Once you have the .dtb binary, the easiest thing is to add
>>>>>>>>>>> it to the end of u-boot.bin, as described in README.fdt-control.
>>>>>>>>>>
>>>>>>>>>> Thanks, I tried with above setup for adding dts.
>>>>>>>>>> I have added simple dts file on my board.
>>>>>>>>>>
>>>>>>>>>> I got the below build error
>>>>>>>>>> /proj/mypc/u-boot/include/asm/gpio.h:1:27: fatal error:
>>>>>>>>>> asm/arch/gpio.h: No such file or directory
>>>>>>>>>> compilation terminated.
>>>>>>>>>> make[1]: *** No rule to make target `.depend.fdtdec', needed by
>>>>>>>>>> `.depend'. Stop.
>>>>>>>>>>
>>>>>>>>>> is gpio.h is mandatory for fdt build?
>>>>>>>>>
>>>>>>>>> Yes because basic GPIO support is included. You can create one for
>>>>>>>>> your sub-arch and make it #include <asm-generic/gpio.h> as a starting
>>>>>>>>> point.
>>>>>>>>>
>>>>>>>>
>>>>>>>> Should I create an empty gpio.h file..it still asking some gpio
>>>>>>>> definitions right..
>>>>>>>
>>>>>>> It might be OK if you just have "#include <asm-generic/gpio.h>" in that file.
>>>>>>
>>>>>> Thanks.
>>>>>>
>>>>>> Finally I have created u-boot-dtb.bin.
>>>>>> for building dtb separately I have used
>>>>>> $ make DEVICE_TREE=zynq .. it creates a u-boot.dtb
>>>>>>
>>>>>> is there any option for building separate name, for example I need to
>>>>>> create zynq.dtb
>>>>
>>>> No - but you can just use 'mv' in a script external to the U-Boot build system.
>>>>
>>>>>
>>>>> Some how I am able to create a fdt build on my target.
>>>>> But what is this gpio mandatory, because currently my target currently
>>>>> need a GPIO setup.
>>>>> Add ing gpio.h/ with equivalent definitions is an extra overhead is
>>>>> it? please explain.
>>>>
>>>> It is just a header file - unless you actually use the GPIO functions,
>>>> you can compile with -ffunction-sections and you won't get the GPIO
>>>> code included. Anyway, the overhead is small, if any.
>>>
>>> OK, Thanks for your information.
>>>
>>> I have few quires regarding getting details from devicetree nodes.
>>> 1) In case of drivers, I think we need add the MACROS on
>>> // lib/fdtdec.c
>>> static const char * const compat_names[COMPAT_COUNT] = {
>>> is it?
>>
>> Yes that's what is normally done. At present it mostly just provides a
>> way to register existing FDT use in U-Boot.
>
> OK.
>
>>
>>> 2) What is the procedure for DDR base and size information getting
>>> memory {
>>> reg = <0x00000000 0x40000000>;
>>> };
>>> I need to get the above details from memory node of dts and
>>> updated while doing
>>> dram_init()
>>> is it possible in u-boot right now?
>>
>> There is no particular support for dram_init(). You could call
>> fdtdec_decode_region() to get the information.
>
> Actually we may get the info through memory node using
> fdtdec_decode_region() for
> dram_init(), but the problem seems like other than this the SDRAM base
> and SDSIZE are using in
> CONFIG_SYS_MEMTEST_START and CONFIG_SYS_MEMTEST_END.
>
> As these are part of configuration macros, I don't clear how we can
> get the base,sizes from dts and assign these
> areas..any suggestions..?
Well this is because configuration has traditionally been done with
CONFIG defines instead of device tree. CONFIG_OF_CONTROL is a
relatively new feature in U-Boot.
If you are wanting to control the memtest area from device tree, you
might consider adding something to the '/config' node, since this is
where we tend to put general configuration. You probably can't test
all of memory, so you need to select the region.
>
>>
>>> 3) and same case for chosen also..are these implemented currently.
>>
>> The bootargs environment variable is placed in the kernel FDT when
>> booting the kernel. But 'chosen' is not used in the U-Boot FDT. This
>> is support instead for a '/config' node - see e.g.
>> fdtdec_get_config_int().
>
> OK, thank you.
>
> Thanks,
> Jagan.
Regards,
Simon
^ permalink raw reply [flat|nested] 22+ messages in thread
* [U-Boot] FDT howto
2013-03-01 4:37 ` Simon Glass
@ 2013-03-01 19:14 ` Jagan Teki
2013-03-01 20:24 ` Simon Glass
0 siblings, 1 reply; 22+ messages in thread
From: Jagan Teki @ 2013-03-01 19:14 UTC (permalink / raw)
To: u-boot
Hi Simon,
On Fri, Mar 1, 2013 at 10:07 AM, Simon Glass <sjg@chromium.org> wrote:
> Hi Jagan,
>
> On Thu, Feb 28, 2013 at 12:29 PM, Jagan Teki <jagannadh.teki@gmail.com> wrote:
>> Hi Simon,
>>
>> On Thu, Feb 28, 2013 at 7:22 PM, Simon Glass <sjg@chromium.org> wrote:
>>> Hi Jagan,
>>>
>>> On Thu, Feb 28, 2013 at 3:14 AM, Jagan Teki <jagannadh.teki@gmail.com> wrote:
>>>> Hi Simon,
>>>>
>>>> On Mon, Feb 25, 2013 at 4:40 AM, Simon Glass <sjg@chromium.org> wrote:
>>>>> Hi Jagan,
>>>>>
>>>>> On Sun, Feb 24, 2013 at 10:58 AM, Jagan Teki <jagannadh.teki@gmail.com> wrote:
>>>>>> Hi Simon,
>>>>>>
>>>>>> On Sun, Feb 24, 2013 at 11:55 PM, Jagan Teki <jagannadh.teki@gmail.com> wrote:
>>>>>>> Hi Simon,
>>>>>>>
>>>>>>> On Sun, Feb 24, 2013 at 11:50 PM, Simon Glass <sjg@chromium.org> wrote:
>>>>>>>> Hi,
>>>>>>>>
>>>>>>>> On Sun, Feb 24, 2013 at 9:55 AM, Jagan Teki <jagannadh.teki@gmail.com> wrote:
>>>>>>>>> Hi Simon,
>>>>>>>>>
>>>>>>>>> On Sun, Feb 24, 2013 at 11:18 PM, Simon Glass <sjg@chromium.org> wrote:
>>>>>>>>>> Hi Jegan,
>>>>>>>>>>
>>>>>>>>>> On Sun, Feb 24, 2013 at 9:45 AM, Jagan Teki <jagannadh.teki@gmail.com> wrote:
>>>>>>>>>>> Hi Simon,
>>>>>>>>>>>
>>>>>>>>>>> On Sun, Feb 24, 2013 at 11:08 PM, Simon Glass <sjg@chromium.org> wrote:
>>>>>>>>>>>> Hi Jagan,
>>>>>>>>>>>>
>>>>>>>>>>>> On Sun, Feb 24, 2013 at 8:19 AM, Jagan Teki <jagannadh.teki@gmail.com> wrote:
>>>>>>>>>>>>> Hi Simon,
>>>>>>>>>>>>>
>>>>>>>>>>>>> Thanks for your response, please find my below comments.
>>>>>>>>>>>>>
>>>>>>>>>>>>> On Sun, Feb 24, 2013 at 9:24 PM, Simon Glass <sjg@chromium.org> wrote:
>>>>>>>>>>>>>> Hi Jagan,
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> On Thu, Feb 21, 2013 at 9:03 AM, Jagan Teki <jagannadh.teki@gmail.com> wrote:
>>>>>>>>>>>>>>> Hi All,
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> I am planning to use devicetree on u-boot.
>>>>>>>>>>>>>>> I have an experience to work with devicetree on Linux.
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> For u-boot, I have read doc from doc/README.fdt-control.
>>>>>>>>>>>>>>> I see some dts usages on tegra boards.
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> I have lot of confusions with the concept itself.
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> Is Linux and u-boot devicetree concept and build system are same?
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> I don't really understand this question sorry. U-Boot and Linux use
>>>>>>>>>>>>>> the device tree mainly for run-time configuration of drivers, so that
>>>>>>>>>>>>>> the same driver code can operate on different boards.
>>>>>>>>>>>>>
>>>>>>>>>>>>> I am some how confusing the fdt usage in u-boot.
>>>>>>>>>>>>> Because when compared to Linux, u-boot fdt setup mandatory to require
>>>>>>>>>>>>> the CONFIG_DEFAULT_DEVICE_TREE
>>>>>>>>>>>>> on the config file [from your previous comments].
>>>>>>>>>>>>>
>>>>>>>>>>>>> is this the only difference when compared to Linux i guess..is it?
>>>>>>>>>>>>> Linux defconfig file does need to hot-code
>>>>>>>>>>>>> the dts.
>>>>>>>>>>>>
>>>>>>>>>>>> Yes - that is a difference. Linux provides a way to build .dts files
>>>>>>>>>>>> but it is not mandatory. At present it is mandatory with U-Boot, and
>>>>>>>>>>>> only one file is built. It can easily be ignored though.
>>>>>>>>>>>
>>>>>>>>>>> Ok.
>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>>>
>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> Suppose I have 4 boards J1, J2, J3 & J4 on my soc "emb".of vendor "vast"
>>>>>>>>>>>>>>> For this requirement I have
>>>>>>>>>>>>>>> board/vast/dts/J1.dts
>>>>>>>>>>>>>>> board/vast/dts/J2.dts
>>>>>>>>>>>>>>> board/vast/dts/J3.dts
>>>>>>>>>>>>>>> board/vast/dts/J4.dts
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> include/configs/emb_common.h ==> single configuration of all SOC
>>>>>>>>>>>>>>> needed definitions
>>>>>>>>>>>>>>> like defconfig in Linux.
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> do I need any more files?
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> That's enough for the basics I think.
>>>>>>>>>>>>>
>>>>>>>>>>>>> Is dtsi file require to add it on arch folder along with above.
>>>>>>>>>>>>
>>>>>>>>>>>> If your architecture is not one of those already supported (like arm
>>>>>>>>>>>> tegra/exynos and x86) then yes you need to add this file in
>>>>>>>>>>>> arch/<arch>/dts. What architecture are you using?
>>>>>>>>>>>
>>>>>>>>>>> My architecture is armv7, may be for me dtsi not required as arm is
>>>>>>>>>>> existing architecture
>>>>>>>>>>> to support fdt on u-boot.. is it?
>>>>>>>>>>
>>>>>>>>>> Which sub-arch? If it is tegra/exynos5250 then you might be OK. For
>>>>>>>>>> something else, you should get the kernel's .dtsi file for that chip.
>>>>>>>>>
>>>>>>>>> I am having armv7, xilinx zynq soc..but i coun't get any .dtsi on kernel source.
>>>>>>>>> may be I will create new one.
>>>>>>>>
>>>>>>>> OK, well if the kernel doesn't have FDT support yet then yes you will
>>>>>>>> need to create a new one.
>>>>>>>>
>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>>>
>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> In emb_common.h i am defining
>>>>>>>>>>>>>>> CONFIG_OF_SEPARATE is it sufficient?
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> And CONFIG_OF_CONTROL
>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> My plan is to build u-boot and then build the dtb with specific
>>>>>>>>>>>>>>> board and then combine.
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> That's fine, and is how we do things on Chromium also. U-Boot tries to
>>>>>>>>>>>>>> build an FDT even with CONFIG_OF_SEPARATE, so you need to put a
>>>>>>>>>>>>>> default device tree file in your emb_common.h file that it can find.
>>>>>>>>>>>>>> But you can ignore it, and for flashing your boards just use
>>>>>>>>>>>>>> u-boot.bin plus whatever .dtb you want to select.
>>>>>>>>>>>>>
>>>>>>>>>>>>> So I will add the fdt support and then build the u-boot.
>>>>>>>>>>>>> Is there any separate u-boot build command to build dts file.
>>>>>>>>>>>>> My plan is to combine both u-boot and dtb.
>>>>>>>>>>>>
>>>>>>>>>>>> You can run dtc yourself if you like - see Makefile/dts for how it is
>>>>>>>>>>>> done there. Once you have the .dtb binary, the easiest thing is to add
>>>>>>>>>>>> it to the end of u-boot.bin, as described in README.fdt-control.
>>>>>>>>>>>
>>>>>>>>>>> Thanks, I tried with above setup for adding dts.
>>>>>>>>>>> I have added simple dts file on my board.
>>>>>>>>>>>
>>>>>>>>>>> I got the below build error
>>>>>>>>>>> /proj/mypc/u-boot/include/asm/gpio.h:1:27: fatal error:
>>>>>>>>>>> asm/arch/gpio.h: No such file or directory
>>>>>>>>>>> compilation terminated.
>>>>>>>>>>> make[1]: *** No rule to make target `.depend.fdtdec', needed by
>>>>>>>>>>> `.depend'. Stop.
>>>>>>>>>>>
>>>>>>>>>>> is gpio.h is mandatory for fdt build?
>>>>>>>>>>
>>>>>>>>>> Yes because basic GPIO support is included. You can create one for
>>>>>>>>>> your sub-arch and make it #include <asm-generic/gpio.h> as a starting
>>>>>>>>>> point.
>>>>>>>>>>
>>>>>>>>>
>>>>>>>>> Should I create an empty gpio.h file..it still asking some gpio
>>>>>>>>> definitions right..
>>>>>>>>
>>>>>>>> It might be OK if you just have "#include <asm-generic/gpio.h>" in that file.
>>>>>>>
>>>>>>> Thanks.
>>>>>>>
>>>>>>> Finally I have created u-boot-dtb.bin.
>>>>>>> for building dtb separately I have used
>>>>>>> $ make DEVICE_TREE=zynq .. it creates a u-boot.dtb
>>>>>>>
>>>>>>> is there any option for building separate name, for example I need to
>>>>>>> create zynq.dtb
>>>>>
>>>>> No - but you can just use 'mv' in a script external to the U-Boot build system.
>>>>>
>>>>>>
>>>>>> Some how I am able to create a fdt build on my target.
>>>>>> But what is this gpio mandatory, because currently my target currently
>>>>>> need a GPIO setup.
>>>>>> Add ing gpio.h/ with equivalent definitions is an extra overhead is
>>>>>> it? please explain.
>>>>>
>>>>> It is just a header file - unless you actually use the GPIO functions,
>>>>> you can compile with -ffunction-sections and you won't get the GPIO
>>>>> code included. Anyway, the overhead is small, if any.
>>>>
>>>> OK, Thanks for your information.
>>>>
>>>> I have few quires regarding getting details from devicetree nodes.
>>>> 1) In case of drivers, I think we need add the MACROS on
>>>> // lib/fdtdec.c
>>>> static const char * const compat_names[COMPAT_COUNT] = {
>>>> is it?
>>>
>>> Yes that's what is normally done. At present it mostly just provides a
>>> way to register existing FDT use in U-Boot.
>>
>> OK.
>>
>>>
>>>> 2) What is the procedure for DDR base and size information getting
>>>> memory {
>>>> reg = <0x00000000 0x40000000>;
>>>> };
>>>> I need to get the above details from memory node of dts and
>>>> updated while doing
>>>> dram_init()
>>>> is it possible in u-boot right now?
>>>
>>> There is no particular support for dram_init(). You could call
>>> fdtdec_decode_region() to get the information.
>>
>> Actually we may get the info through memory node using
>> fdtdec_decode_region() for
>> dram_init(), but the problem seems like other than this the SDRAM base
>> and SDSIZE are using in
>> CONFIG_SYS_MEMTEST_START and CONFIG_SYS_MEMTEST_END.
>>
>> As these are part of configuration macros, I don't clear how we can
>> get the base,sizes from dts and assign these
>> areas..any suggestions..?
>
> Well this is because configuration has traditionally been done with
> CONFIG defines instead of device tree. CONFIG_OF_CONTROL is a
> relatively new feature in U-Boot.
>
> If you are wanting to control the memtest area from device tree, you
> might consider adding something to the '/config' node, since this is
> where we tend to put general configuration. You probably can't test
> all of memory, so you need to select the region.
Thanks for your information.
I am able to get the memory information using fdtdec_decode_region().
So my CONFIG_SYS_SDRAM_BASE and CONFIG_SYS_SDRAM_SIZE dependencies
on board file got resolved. but there is a dependency for
CONFIG_SYS_SDRAM_BASE on
arch/arm/lib/board.c.
I have some thinking about this dependency to remove can we declare
ram_base like ram_size
so-that in ddr_init we can assign this value.. is my thinking valid..???
Any suggestions..
Thanks,
Jagan.
>
>>
>>>
>>>> 3) and same case for chosen also..are these implemented currently.
>>>
>>> The bootargs environment variable is placed in the kernel FDT when
>>> booting the kernel. But 'chosen' is not used in the U-Boot FDT. This
>>> is support instead for a '/config' node - see e.g.
>>> fdtdec_get_config_int().
>>
>> OK, thank you.
>>
>> Thanks,
>> Jagan.
>
> Regards,
> Simon
^ permalink raw reply [flat|nested] 22+ messages in thread
* [U-Boot] FDT howto
2013-03-01 19:14 ` Jagan Teki
@ 2013-03-01 20:24 ` Simon Glass
2013-03-01 21:21 ` Jagan Teki
0 siblings, 1 reply; 22+ messages in thread
From: Simon Glass @ 2013-03-01 20:24 UTC (permalink / raw)
To: u-boot
Hi Jagan,
On Fri, Mar 1, 2013 at 11:14 AM, Jagan Teki <jagannadh.teki@gmail.com> wrote:
> Hi Simon,
>
> On Fri, Mar 1, 2013 at 10:07 AM, Simon Glass <sjg@chromium.org> wrote:
>> Hi Jagan,
>>
>> On Thu, Feb 28, 2013 at 12:29 PM, Jagan Teki <jagannadh.teki@gmail.com> wrote:
>>> Hi Simon,
>>>
>>> On Thu, Feb 28, 2013 at 7:22 PM, Simon Glass <sjg@chromium.org> wrote:
>>>> Hi Jagan,
>>>>
>>>> On Thu, Feb 28, 2013 at 3:14 AM, Jagan Teki <jagannadh.teki@gmail.com> wrote:
>>>>> Hi Simon,
>>>>>
>>>>> On Mon, Feb 25, 2013 at 4:40 AM, Simon Glass <sjg@chromium.org> wrote:
>>>>>> Hi Jagan,
>>>>>>
>>>>>> On Sun, Feb 24, 2013 at 10:58 AM, Jagan Teki <jagannadh.teki@gmail.com> wrote:
>>>>>>> Hi Simon,
>>>>>>>
>>>>>>> On Sun, Feb 24, 2013 at 11:55 PM, Jagan Teki <jagannadh.teki@gmail.com> wrote:
>>>>>>>> Hi Simon,
>>>>>>>>
>>>>>>>> On Sun, Feb 24, 2013 at 11:50 PM, Simon Glass <sjg@chromium.org> wrote:
>>>>>>>>> Hi,
>>>>>>>>>
>>>>>>>>> On Sun, Feb 24, 2013 at 9:55 AM, Jagan Teki <jagannadh.teki@gmail.com> wrote:
>>>>>>>>>> Hi Simon,
>>>>>>>>>>
>>>>>>>>>> On Sun, Feb 24, 2013 at 11:18 PM, Simon Glass <sjg@chromium.org> wrote:
>>>>>>>>>>> Hi Jegan,
>>>>>>>>>>>
>>>>>>>>>>> On Sun, Feb 24, 2013 at 9:45 AM, Jagan Teki <jagannadh.teki@gmail.com> wrote:
>>>>>>>>>>>> Hi Simon,
>>>>>>>>>>>>
>>>>>>>>>>>> On Sun, Feb 24, 2013 at 11:08 PM, Simon Glass <sjg@chromium.org> wrote:
>>>>>>>>>>>>> Hi Jagan,
>>>>>>>>>>>>>
>>>>>>>>>>>>> On Sun, Feb 24, 2013 at 8:19 AM, Jagan Teki <jagannadh.teki@gmail.com> wrote:
>>>>>>>>>>>>>> Hi Simon,
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> Thanks for your response, please find my below comments.
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> On Sun, Feb 24, 2013 at 9:24 PM, Simon Glass <sjg@chromium.org> wrote:
>>>>>>>>>>>>>>> Hi Jagan,
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> On Thu, Feb 21, 2013 at 9:03 AM, Jagan Teki <jagannadh.teki@gmail.com> wrote:
>>>>>>>>>>>>>>>> Hi All,
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> I am planning to use devicetree on u-boot.
>>>>>>>>>>>>>>>> I have an experience to work with devicetree on Linux.
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> For u-boot, I have read doc from doc/README.fdt-control.
>>>>>>>>>>>>>>>> I see some dts usages on tegra boards.
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> I have lot of confusions with the concept itself.
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> Is Linux and u-boot devicetree concept and build system are same?
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> I don't really understand this question sorry. U-Boot and Linux use
>>>>>>>>>>>>>>> the device tree mainly for run-time configuration of drivers, so that
>>>>>>>>>>>>>>> the same driver code can operate on different boards.
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> I am some how confusing the fdt usage in u-boot.
>>>>>>>>>>>>>> Because when compared to Linux, u-boot fdt setup mandatory to require
>>>>>>>>>>>>>> the CONFIG_DEFAULT_DEVICE_TREE
>>>>>>>>>>>>>> on the config file [from your previous comments].
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> is this the only difference when compared to Linux i guess..is it?
>>>>>>>>>>>>>> Linux defconfig file does need to hot-code
>>>>>>>>>>>>>> the dts.
>>>>>>>>>>>>>
>>>>>>>>>>>>> Yes - that is a difference. Linux provides a way to build .dts files
>>>>>>>>>>>>> but it is not mandatory. At present it is mandatory with U-Boot, and
>>>>>>>>>>>>> only one file is built. It can easily be ignored though.
>>>>>>>>>>>>
>>>>>>>>>>>> Ok.
>>>>>>>>>>>>
>>>>>>>>>>>>>
>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> Suppose I have 4 boards J1, J2, J3 & J4 on my soc "emb".of vendor "vast"
>>>>>>>>>>>>>>>> For this requirement I have
>>>>>>>>>>>>>>>> board/vast/dts/J1.dts
>>>>>>>>>>>>>>>> board/vast/dts/J2.dts
>>>>>>>>>>>>>>>> board/vast/dts/J3.dts
>>>>>>>>>>>>>>>> board/vast/dts/J4.dts
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> include/configs/emb_common.h ==> single configuration of all SOC
>>>>>>>>>>>>>>>> needed definitions
>>>>>>>>>>>>>>>> like defconfig in Linux.
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> do I need any more files?
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> That's enough for the basics I think.
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> Is dtsi file require to add it on arch folder along with above.
>>>>>>>>>>>>>
>>>>>>>>>>>>> If your architecture is not one of those already supported (like arm
>>>>>>>>>>>>> tegra/exynos and x86) then yes you need to add this file in
>>>>>>>>>>>>> arch/<arch>/dts. What architecture are you using?
>>>>>>>>>>>>
>>>>>>>>>>>> My architecture is armv7, may be for me dtsi not required as arm is
>>>>>>>>>>>> existing architecture
>>>>>>>>>>>> to support fdt on u-boot.. is it?
>>>>>>>>>>>
>>>>>>>>>>> Which sub-arch? If it is tegra/exynos5250 then you might be OK. For
>>>>>>>>>>> something else, you should get the kernel's .dtsi file for that chip.
>>>>>>>>>>
>>>>>>>>>> I am having armv7, xilinx zynq soc..but i coun't get any .dtsi on kernel source.
>>>>>>>>>> may be I will create new one.
>>>>>>>>>
>>>>>>>>> OK, well if the kernel doesn't have FDT support yet then yes you will
>>>>>>>>> need to create a new one.
>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>>>
>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> In emb_common.h i am defining
>>>>>>>>>>>>>>>> CONFIG_OF_SEPARATE is it sufficient?
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> And CONFIG_OF_CONTROL
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> My plan is to build u-boot and then build the dtb with specific
>>>>>>>>>>>>>>>> board and then combine.
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> That's fine, and is how we do things on Chromium also. U-Boot tries to
>>>>>>>>>>>>>>> build an FDT even with CONFIG_OF_SEPARATE, so you need to put a
>>>>>>>>>>>>>>> default device tree file in your emb_common.h file that it can find.
>>>>>>>>>>>>>>> But you can ignore it, and for flashing your boards just use
>>>>>>>>>>>>>>> u-boot.bin plus whatever .dtb you want to select.
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> So I will add the fdt support and then build the u-boot.
>>>>>>>>>>>>>> Is there any separate u-boot build command to build dts file.
>>>>>>>>>>>>>> My plan is to combine both u-boot and dtb.
>>>>>>>>>>>>>
>>>>>>>>>>>>> You can run dtc yourself if you like - see Makefile/dts for how it is
>>>>>>>>>>>>> done there. Once you have the .dtb binary, the easiest thing is to add
>>>>>>>>>>>>> it to the end of u-boot.bin, as described in README.fdt-control.
>>>>>>>>>>>>
>>>>>>>>>>>> Thanks, I tried with above setup for adding dts.
>>>>>>>>>>>> I have added simple dts file on my board.
>>>>>>>>>>>>
>>>>>>>>>>>> I got the below build error
>>>>>>>>>>>> /proj/mypc/u-boot/include/asm/gpio.h:1:27: fatal error:
>>>>>>>>>>>> asm/arch/gpio.h: No such file or directory
>>>>>>>>>>>> compilation terminated.
>>>>>>>>>>>> make[1]: *** No rule to make target `.depend.fdtdec', needed by
>>>>>>>>>>>> `.depend'. Stop.
>>>>>>>>>>>>
>>>>>>>>>>>> is gpio.h is mandatory for fdt build?
>>>>>>>>>>>
>>>>>>>>>>> Yes because basic GPIO support is included. You can create one for
>>>>>>>>>>> your sub-arch and make it #include <asm-generic/gpio.h> as a starting
>>>>>>>>>>> point.
>>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> Should I create an empty gpio.h file..it still asking some gpio
>>>>>>>>>> definitions right..
>>>>>>>>>
>>>>>>>>> It might be OK if you just have "#include <asm-generic/gpio.h>" in that file.
>>>>>>>>
>>>>>>>> Thanks.
>>>>>>>>
>>>>>>>> Finally I have created u-boot-dtb.bin.
>>>>>>>> for building dtb separately I have used
>>>>>>>> $ make DEVICE_TREE=zynq .. it creates a u-boot.dtb
>>>>>>>>
>>>>>>>> is there any option for building separate name, for example I need to
>>>>>>>> create zynq.dtb
>>>>>>
>>>>>> No - but you can just use 'mv' in a script external to the U-Boot build system.
>>>>>>
>>>>>>>
>>>>>>> Some how I am able to create a fdt build on my target.
>>>>>>> But what is this gpio mandatory, because currently my target currently
>>>>>>> need a GPIO setup.
>>>>>>> Add ing gpio.h/ with equivalent definitions is an extra overhead is
>>>>>>> it? please explain.
>>>>>>
>>>>>> It is just a header file - unless you actually use the GPIO functions,
>>>>>> you can compile with -ffunction-sections and you won't get the GPIO
>>>>>> code included. Anyway, the overhead is small, if any.
>>>>>
>>>>> OK, Thanks for your information.
>>>>>
>>>>> I have few quires regarding getting details from devicetree nodes.
>>>>> 1) In case of drivers, I think we need add the MACROS on
>>>>> // lib/fdtdec.c
>>>>> static const char * const compat_names[COMPAT_COUNT] = {
>>>>> is it?
>>>>
>>>> Yes that's what is normally done. At present it mostly just provides a
>>>> way to register existing FDT use in U-Boot.
>>>
>>> OK.
>>>
>>>>
>>>>> 2) What is the procedure for DDR base and size information getting
>>>>> memory {
>>>>> reg = <0x00000000 0x40000000>;
>>>>> };
>>>>> I need to get the above details from memory node of dts and
>>>>> updated while doing
>>>>> dram_init()
>>>>> is it possible in u-boot right now?
>>>>
>>>> There is no particular support for dram_init(). You could call
>>>> fdtdec_decode_region() to get the information.
>>>
>>> Actually we may get the info through memory node using
>>> fdtdec_decode_region() for
>>> dram_init(), but the problem seems like other than this the SDRAM base
>>> and SDSIZE are using in
>>> CONFIG_SYS_MEMTEST_START and CONFIG_SYS_MEMTEST_END.
>>>
>>> As these are part of configuration macros, I don't clear how we can
>>> get the base,sizes from dts and assign these
>>> areas..any suggestions..?
>>
>> Well this is because configuration has traditionally been done with
>> CONFIG defines instead of device tree. CONFIG_OF_CONTROL is a
>> relatively new feature in U-Boot.
>>
>> If you are wanting to control the memtest area from device tree, you
>> might consider adding something to the '/config' node, since this is
>> where we tend to put general configuration. You probably can't test
>> all of memory, so you need to select the region.
>
> Thanks for your information.
>
> I am able to get the memory information using fdtdec_decode_region().
>
> So my CONFIG_SYS_SDRAM_BASE and CONFIG_SYS_SDRAM_SIZE dependencies
> on board file got resolved. but there is a dependency for
> CONFIG_SYS_SDRAM_BASE on
> arch/arm/lib/board.c.
>
> I have some thinking about this dependency to remove can we declare
> ram_base like ram_size
> so-that in ddr_init we can assign this value.. is my thinking valid..???'
Yes that sounds reasonable. For that you could perhaps use the memory
{} node, like:
memory {
reg = <0x40000000 0x80000000>;
};
Regards,
Simon
>
> Any suggestions..
>
> Thanks,
> Jagan.
>
>>
>>>
>>>>
>>>>> 3) and same case for chosen also..are these implemented currently.
>>>>
>>>> The bootargs environment variable is placed in the kernel FDT when
>>>> booting the kernel. But 'chosen' is not used in the U-Boot FDT. This
>>>> is support instead for a '/config' node - see e.g.
>>>> fdtdec_get_config_int().
>>>
>>> OK, thank you.
>>>
>>> Thanks,
>>> Jagan.
>>
>> Regards,
>> Simon
^ permalink raw reply [flat|nested] 22+ messages in thread
* [U-Boot] FDT howto
2013-03-01 20:24 ` Simon Glass
@ 2013-03-01 21:21 ` Jagan Teki
2013-03-02 1:00 ` Simon Glass
0 siblings, 1 reply; 22+ messages in thread
From: Jagan Teki @ 2013-03-01 21:21 UTC (permalink / raw)
To: u-boot
Hi Simon,
On Sat, Mar 2, 2013 at 1:54 AM, Simon Glass <sjg@chromium.org> wrote:
> Hi Jagan,
>
> On Fri, Mar 1, 2013 at 11:14 AM, Jagan Teki <jagannadh.teki@gmail.com> wrote:
>> Hi Simon,
>>
>> On Fri, Mar 1, 2013 at 10:07 AM, Simon Glass <sjg@chromium.org> wrote:
>>> Hi Jagan,
>>>
>>> On Thu, Feb 28, 2013 at 12:29 PM, Jagan Teki <jagannadh.teki@gmail.com> wrote:
>>>> Hi Simon,
>>>>
>>>> On Thu, Feb 28, 2013 at 7:22 PM, Simon Glass <sjg@chromium.org> wrote:
>>>>> Hi Jagan,
>>>>>
>>>>> On Thu, Feb 28, 2013 at 3:14 AM, Jagan Teki <jagannadh.teki@gmail.com> wrote:
>>>>>> Hi Simon,
>>>>>>
>>>>>> On Mon, Feb 25, 2013 at 4:40 AM, Simon Glass <sjg@chromium.org> wrote:
>>>>>>> Hi Jagan,
>>>>>>>
>>>>>>> On Sun, Feb 24, 2013 at 10:58 AM, Jagan Teki <jagannadh.teki@gmail.com> wrote:
>>>>>>>> Hi Simon,
>>>>>>>>
>>>>>>>> On Sun, Feb 24, 2013 at 11:55 PM, Jagan Teki <jagannadh.teki@gmail.com> wrote:
>>>>>>>>> Hi Simon,
>>>>>>>>>
>>>>>>>>> On Sun, Feb 24, 2013 at 11:50 PM, Simon Glass <sjg@chromium.org> wrote:
>>>>>>>>>> Hi,
>>>>>>>>>>
>>>>>>>>>> On Sun, Feb 24, 2013 at 9:55 AM, Jagan Teki <jagannadh.teki@gmail.com> wrote:
>>>>>>>>>>> Hi Simon,
>>>>>>>>>>>
>>>>>>>>>>> On Sun, Feb 24, 2013 at 11:18 PM, Simon Glass <sjg@chromium.org> wrote:
>>>>>>>>>>>> Hi Jegan,
>>>>>>>>>>>>
>>>>>>>>>>>> On Sun, Feb 24, 2013 at 9:45 AM, Jagan Teki <jagannadh.teki@gmail.com> wrote:
>>>>>>>>>>>>> Hi Simon,
>>>>>>>>>>>>>
>>>>>>>>>>>>> On Sun, Feb 24, 2013 at 11:08 PM, Simon Glass <sjg@chromium.org> wrote:
>>>>>>>>>>>>>> Hi Jagan,
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> On Sun, Feb 24, 2013 at 8:19 AM, Jagan Teki <jagannadh.teki@gmail.com> wrote:
>>>>>>>>>>>>>>> Hi Simon,
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> Thanks for your response, please find my below comments.
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> On Sun, Feb 24, 2013 at 9:24 PM, Simon Glass <sjg@chromium.org> wrote:
>>>>>>>>>>>>>>>> Hi Jagan,
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> On Thu, Feb 21, 2013 at 9:03 AM, Jagan Teki <jagannadh.teki@gmail.com> wrote:
>>>>>>>>>>>>>>>>> Hi All,
>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>> I am planning to use devicetree on u-boot.
>>>>>>>>>>>>>>>>> I have an experience to work with devicetree on Linux.
>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>> For u-boot, I have read doc from doc/README.fdt-control.
>>>>>>>>>>>>>>>>> I see some dts usages on tegra boards.
>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>> I have lot of confusions with the concept itself.
>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>> Is Linux and u-boot devicetree concept and build system are same?
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> I don't really understand this question sorry. U-Boot and Linux use
>>>>>>>>>>>>>>>> the device tree mainly for run-time configuration of drivers, so that
>>>>>>>>>>>>>>>> the same driver code can operate on different boards.
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> I am some how confusing the fdt usage in u-boot.
>>>>>>>>>>>>>>> Because when compared to Linux, u-boot fdt setup mandatory to require
>>>>>>>>>>>>>>> the CONFIG_DEFAULT_DEVICE_TREE
>>>>>>>>>>>>>>> on the config file [from your previous comments].
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> is this the only difference when compared to Linux i guess..is it?
>>>>>>>>>>>>>>> Linux defconfig file does need to hot-code
>>>>>>>>>>>>>>> the dts.
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> Yes - that is a difference. Linux provides a way to build .dts files
>>>>>>>>>>>>>> but it is not mandatory. At present it is mandatory with U-Boot, and
>>>>>>>>>>>>>> only one file is built. It can easily be ignored though.
>>>>>>>>>>>>>
>>>>>>>>>>>>> Ok.
>>>>>>>>>>>>>
>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>> Suppose I have 4 boards J1, J2, J3 & J4 on my soc "emb".of vendor "vast"
>>>>>>>>>>>>>>>>> For this requirement I have
>>>>>>>>>>>>>>>>> board/vast/dts/J1.dts
>>>>>>>>>>>>>>>>> board/vast/dts/J2.dts
>>>>>>>>>>>>>>>>> board/vast/dts/J3.dts
>>>>>>>>>>>>>>>>> board/vast/dts/J4.dts
>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>> include/configs/emb_common.h ==> single configuration of all SOC
>>>>>>>>>>>>>>>>> needed definitions
>>>>>>>>>>>>>>>>> like defconfig in Linux.
>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>> do I need any more files?
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> That's enough for the basics I think.
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> Is dtsi file require to add it on arch folder along with above.
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> If your architecture is not one of those already supported (like arm
>>>>>>>>>>>>>> tegra/exynos and x86) then yes you need to add this file in
>>>>>>>>>>>>>> arch/<arch>/dts. What architecture are you using?
>>>>>>>>>>>>>
>>>>>>>>>>>>> My architecture is armv7, may be for me dtsi not required as arm is
>>>>>>>>>>>>> existing architecture
>>>>>>>>>>>>> to support fdt on u-boot.. is it?
>>>>>>>>>>>>
>>>>>>>>>>>> Which sub-arch? If it is tegra/exynos5250 then you might be OK. For
>>>>>>>>>>>> something else, you should get the kernel's .dtsi file for that chip.
>>>>>>>>>>>
>>>>>>>>>>> I am having armv7, xilinx zynq soc..but i coun't get any .dtsi on kernel source.
>>>>>>>>>>> may be I will create new one.
>>>>>>>>>>
>>>>>>>>>> OK, well if the kernel doesn't have FDT support yet then yes you will
>>>>>>>>>> need to create a new one.
>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>>>
>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>> In emb_common.h i am defining
>>>>>>>>>>>>>>>>> CONFIG_OF_SEPARATE is it sufficient?
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> And CONFIG_OF_CONTROL
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>> My plan is to build u-boot and then build the dtb with specific
>>>>>>>>>>>>>>>>> board and then combine.
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> That's fine, and is how we do things on Chromium also. U-Boot tries to
>>>>>>>>>>>>>>>> build an FDT even with CONFIG_OF_SEPARATE, so you need to put a
>>>>>>>>>>>>>>>> default device tree file in your emb_common.h file that it can find.
>>>>>>>>>>>>>>>> But you can ignore it, and for flashing your boards just use
>>>>>>>>>>>>>>>> u-boot.bin plus whatever .dtb you want to select.
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> So I will add the fdt support and then build the u-boot.
>>>>>>>>>>>>>>> Is there any separate u-boot build command to build dts file.
>>>>>>>>>>>>>>> My plan is to combine both u-boot and dtb.
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> You can run dtc yourself if you like - see Makefile/dts for how it is
>>>>>>>>>>>>>> done there. Once you have the .dtb binary, the easiest thing is to add
>>>>>>>>>>>>>> it to the end of u-boot.bin, as described in README.fdt-control.
>>>>>>>>>>>>>
>>>>>>>>>>>>> Thanks, I tried with above setup for adding dts.
>>>>>>>>>>>>> I have added simple dts file on my board.
>>>>>>>>>>>>>
>>>>>>>>>>>>> I got the below build error
>>>>>>>>>>>>> /proj/mypc/u-boot/include/asm/gpio.h:1:27: fatal error:
>>>>>>>>>>>>> asm/arch/gpio.h: No such file or directory
>>>>>>>>>>>>> compilation terminated.
>>>>>>>>>>>>> make[1]: *** No rule to make target `.depend.fdtdec', needed by
>>>>>>>>>>>>> `.depend'. Stop.
>>>>>>>>>>>>>
>>>>>>>>>>>>> is gpio.h is mandatory for fdt build?
>>>>>>>>>>>>
>>>>>>>>>>>> Yes because basic GPIO support is included. You can create one for
>>>>>>>>>>>> your sub-arch and make it #include <asm-generic/gpio.h> as a starting
>>>>>>>>>>>> point.
>>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>> Should I create an empty gpio.h file..it still asking some gpio
>>>>>>>>>>> definitions right..
>>>>>>>>>>
>>>>>>>>>> It might be OK if you just have "#include <asm-generic/gpio.h>" in that file.
>>>>>>>>>
>>>>>>>>> Thanks.
>>>>>>>>>
>>>>>>>>> Finally I have created u-boot-dtb.bin.
>>>>>>>>> for building dtb separately I have used
>>>>>>>>> $ make DEVICE_TREE=zynq .. it creates a u-boot.dtb
>>>>>>>>>
>>>>>>>>> is there any option for building separate name, for example I need to
>>>>>>>>> create zynq.dtb
>>>>>>>
>>>>>>> No - but you can just use 'mv' in a script external to the U-Boot build system.
>>>>>>>
>>>>>>>>
>>>>>>>> Some how I am able to create a fdt build on my target.
>>>>>>>> But what is this gpio mandatory, because currently my target currently
>>>>>>>> need a GPIO setup.
>>>>>>>> Add ing gpio.h/ with equivalent definitions is an extra overhead is
>>>>>>>> it? please explain.
>>>>>>>
>>>>>>> It is just a header file - unless you actually use the GPIO functions,
>>>>>>> you can compile with -ffunction-sections and you won't get the GPIO
>>>>>>> code included. Anyway, the overhead is small, if any.
>>>>>>
>>>>>> OK, Thanks for your information.
>>>>>>
>>>>>> I have few quires regarding getting details from devicetree nodes.
>>>>>> 1) In case of drivers, I think we need add the MACROS on
>>>>>> // lib/fdtdec.c
>>>>>> static const char * const compat_names[COMPAT_COUNT] = {
>>>>>> is it?
>>>>>
>>>>> Yes that's what is normally done. At present it mostly just provides a
>>>>> way to register existing FDT use in U-Boot.
>>>>
>>>> OK.
>>>>
>>>>>
>>>>>> 2) What is the procedure for DDR base and size information getting
>>>>>> memory {
>>>>>> reg = <0x00000000 0x40000000>;
>>>>>> };
>>>>>> I need to get the above details from memory node of dts and
>>>>>> updated while doing
>>>>>> dram_init()
>>>>>> is it possible in u-boot right now?
>>>>>
>>>>> There is no particular support for dram_init(). You could call
>>>>> fdtdec_decode_region() to get the information.
>>>>
>>>> Actually we may get the info through memory node using
>>>> fdtdec_decode_region() for
>>>> dram_init(), but the problem seems like other than this the SDRAM base
>>>> and SDSIZE are using in
>>>> CONFIG_SYS_MEMTEST_START and CONFIG_SYS_MEMTEST_END.
>>>>
>>>> As these are part of configuration macros, I don't clear how we can
>>>> get the base,sizes from dts and assign these
>>>> areas..any suggestions..?
>>>
>>> Well this is because configuration has traditionally been done with
>>> CONFIG defines instead of device tree. CONFIG_OF_CONTROL is a
>>> relatively new feature in U-Boot.
>>>
>>> If you are wanting to control the memtest area from device tree, you
>>> might consider adding something to the '/config' node, since this is
>>> where we tend to put general configuration. You probably can't test
>>> all of memory, so you need to select the region.
>>
>> Thanks for your information.
>>
>> I am able to get the memory information using fdtdec_decode_region().
>>
>> So my CONFIG_SYS_SDRAM_BASE and CONFIG_SYS_SDRAM_SIZE dependencies
>> on board file got resolved. but there is a dependency for
>> CONFIG_SYS_SDRAM_BASE on
>> arch/arm/lib/board.c.
>>
>> I have some thinking about this dependency to remove can we declare
>> ram_base like ram_size
>> so-that in ddr_init we can assign this value.. is my thinking valid..???'
>
> Yes that sounds reasonable. For that you could perhaps use the memory
> {} node, like:
>
> memory {
> reg = <0x40000000 0x80000000>;
> };
I will confirm my logic here for better clarification.
typedef struct global_data {
phys_size_t ram_size; /* RAM size */
+ phys_size_t ram_base; /* RAM base */
} gd_t;
in boards files:
---
int ddr_init() {
//
get the memory info from dts store it on start and size
//
gd->ram_start = start;
gd->ram_size = size;
gd->bd->bi_dram[0].start = start;
gd->bd->bi_dram[0].size = size;
}
Please comment.
Thanks,
Jagan.
>
> Regards,
> Simon
>
>>
>> Any suggestions..
>>
>> Thanks,
>> Jagan.
>>
>>>
>>>>
>>>>>
>>>>>> 3) and same case for chosen also..are these implemented currently.
>>>>>
>>>>> The bootargs environment variable is placed in the kernel FDT when
>>>>> booting the kernel. But 'chosen' is not used in the U-Boot FDT. This
>>>>> is support instead for a '/config' node - see e.g.
>>>>> fdtdec_get_config_int().
>>>>
>>>> OK, thank you.
>>>>
>>>> Thanks,
>>>> Jagan.
>>>
>>> Regards,
>>> Simon
^ permalink raw reply [flat|nested] 22+ messages in thread
* [U-Boot] FDT howto
2013-03-01 21:21 ` Jagan Teki
@ 2013-03-02 1:00 ` Simon Glass
2013-03-02 7:44 ` Jagan Teki
0 siblings, 1 reply; 22+ messages in thread
From: Simon Glass @ 2013-03-02 1:00 UTC (permalink / raw)
To: u-boot
Hi Jagan,
On Fri, Mar 1, 2013 at 1:21 PM, Jagan Teki <jagannadh.teki@gmail.com> wrote:
> Hi Simon,
>
> On Sat, Mar 2, 2013 at 1:54 AM, Simon Glass <sjg@chromium.org> wrote:
>> Hi Jagan,
>>
>> On Fri, Mar 1, 2013 at 11:14 AM, Jagan Teki <jagannadh.teki@gmail.com> wrote:
>>> Hi Simon,
>>>
>>> On Fri, Mar 1, 2013 at 10:07 AM, Simon Glass <sjg@chromium.org> wrote:
>>>> Hi Jagan,
>>>>
>>>> On Thu, Feb 28, 2013 at 12:29 PM, Jagan Teki <jagannadh.teki@gmail.com> wrote:
>>>>> Hi Simon,
>>>>>
>>>>> On Thu, Feb 28, 2013 at 7:22 PM, Simon Glass <sjg@chromium.org> wrote:
>>>>>> Hi Jagan,
>>>>>>
>>>>>> On Thu, Feb 28, 2013 at 3:14 AM, Jagan Teki <jagannadh.teki@gmail.com> wrote:
>>>>>>> Hi Simon,
>>>>>>>
>>>>>>> On Mon, Feb 25, 2013 at 4:40 AM, Simon Glass <sjg@chromium.org> wrote:
>>>>>>>> Hi Jagan,
>>>>>>>>
>>>>>>>> On Sun, Feb 24, 2013 at 10:58 AM, Jagan Teki <jagannadh.teki@gmail.com> wrote:
>>>>>>>>> Hi Simon,
>>>>>>>>>
>>>>>>>>> On Sun, Feb 24, 2013 at 11:55 PM, Jagan Teki <jagannadh.teki@gmail.com> wrote:
>>>>>>>>>> Hi Simon,
>>>>>>>>>>
>>>>>>>>>> On Sun, Feb 24, 2013 at 11:50 PM, Simon Glass <sjg@chromium.org> wrote:
>>>>>>>>>>> Hi,
>>>>>>>>>>>
>>>>>>>>>>> On Sun, Feb 24, 2013 at 9:55 AM, Jagan Teki <jagannadh.teki@gmail.com> wrote:
>>>>>>>>>>>> Hi Simon,
>>>>>>>>>>>>
>>>>>>>>>>>> On Sun, Feb 24, 2013 at 11:18 PM, Simon Glass <sjg@chromium.org> wrote:
>>>>>>>>>>>>> Hi Jegan,
>>>>>>>>>>>>>
>>>>>>>>>>>>> On Sun, Feb 24, 2013 at 9:45 AM, Jagan Teki <jagannadh.teki@gmail.com> wrote:
>>>>>>>>>>>>>> Hi Simon,
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> On Sun, Feb 24, 2013 at 11:08 PM, Simon Glass <sjg@chromium.org> wrote:
>>>>>>>>>>>>>>> Hi Jagan,
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> On Sun, Feb 24, 2013 at 8:19 AM, Jagan Teki <jagannadh.teki@gmail.com> wrote:
>>>>>>>>>>>>>>>> Hi Simon,
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> Thanks for your response, please find my below comments.
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> On Sun, Feb 24, 2013 at 9:24 PM, Simon Glass <sjg@chromium.org> wrote:
>>>>>>>>>>>>>>>>> Hi Jagan,
>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>> On Thu, Feb 21, 2013 at 9:03 AM, Jagan Teki <jagannadh.teki@gmail.com> wrote:
>>>>>>>>>>>>>>>>>> Hi All,
>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>> I am planning to use devicetree on u-boot.
>>>>>>>>>>>>>>>>>> I have an experience to work with devicetree on Linux.
>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>> For u-boot, I have read doc from doc/README.fdt-control.
>>>>>>>>>>>>>>>>>> I see some dts usages on tegra boards.
>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>> I have lot of confusions with the concept itself.
>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>> Is Linux and u-boot devicetree concept and build system are same?
>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>> I don't really understand this question sorry. U-Boot and Linux use
>>>>>>>>>>>>>>>>> the device tree mainly for run-time configuration of drivers, so that
>>>>>>>>>>>>>>>>> the same driver code can operate on different boards.
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> I am some how confusing the fdt usage in u-boot.
>>>>>>>>>>>>>>>> Because when compared to Linux, u-boot fdt setup mandatory to require
>>>>>>>>>>>>>>>> the CONFIG_DEFAULT_DEVICE_TREE
>>>>>>>>>>>>>>>> on the config file [from your previous comments].
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> is this the only difference when compared to Linux i guess..is it?
>>>>>>>>>>>>>>>> Linux defconfig file does need to hot-code
>>>>>>>>>>>>>>>> the dts.
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> Yes - that is a difference. Linux provides a way to build .dts files
>>>>>>>>>>>>>>> but it is not mandatory. At present it is mandatory with U-Boot, and
>>>>>>>>>>>>>>> only one file is built. It can easily be ignored though.
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> Ok.
>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>> Suppose I have 4 boards J1, J2, J3 & J4 on my soc "emb".of vendor "vast"
>>>>>>>>>>>>>>>>>> For this requirement I have
>>>>>>>>>>>>>>>>>> board/vast/dts/J1.dts
>>>>>>>>>>>>>>>>>> board/vast/dts/J2.dts
>>>>>>>>>>>>>>>>>> board/vast/dts/J3.dts
>>>>>>>>>>>>>>>>>> board/vast/dts/J4.dts
>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>> include/configs/emb_common.h ==> single configuration of all SOC
>>>>>>>>>>>>>>>>>> needed definitions
>>>>>>>>>>>>>>>>>> like defconfig in Linux.
>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>> do I need any more files?
>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>> That's enough for the basics I think.
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> Is dtsi file require to add it on arch folder along with above.
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> If your architecture is not one of those already supported (like arm
>>>>>>>>>>>>>>> tegra/exynos and x86) then yes you need to add this file in
>>>>>>>>>>>>>>> arch/<arch>/dts. What architecture are you using?
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> My architecture is armv7, may be for me dtsi not required as arm is
>>>>>>>>>>>>>> existing architecture
>>>>>>>>>>>>>> to support fdt on u-boot.. is it?
>>>>>>>>>>>>>
>>>>>>>>>>>>> Which sub-arch? If it is tegra/exynos5250 then you might be OK. For
>>>>>>>>>>>>> something else, you should get the kernel's .dtsi file for that chip.
>>>>>>>>>>>>
>>>>>>>>>>>> I am having armv7, xilinx zynq soc..but i coun't get any .dtsi on kernel source.
>>>>>>>>>>>> may be I will create new one.
>>>>>>>>>>>
>>>>>>>>>>> OK, well if the kernel doesn't have FDT support yet then yes you will
>>>>>>>>>>> need to create a new one.
>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>>>
>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>> In emb_common.h i am defining
>>>>>>>>>>>>>>>>>> CONFIG_OF_SEPARATE is it sufficient?
>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>> And CONFIG_OF_CONTROL
>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>> My plan is to build u-boot and then build the dtb with specific
>>>>>>>>>>>>>>>>>> board and then combine.
>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>> That's fine, and is how we do things on Chromium also. U-Boot tries to
>>>>>>>>>>>>>>>>> build an FDT even with CONFIG_OF_SEPARATE, so you need to put a
>>>>>>>>>>>>>>>>> default device tree file in your emb_common.h file that it can find.
>>>>>>>>>>>>>>>>> But you can ignore it, and for flashing your boards just use
>>>>>>>>>>>>>>>>> u-boot.bin plus whatever .dtb you want to select.
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> So I will add the fdt support and then build the u-boot.
>>>>>>>>>>>>>>>> Is there any separate u-boot build command to build dts file.
>>>>>>>>>>>>>>>> My plan is to combine both u-boot and dtb.
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> You can run dtc yourself if you like - see Makefile/dts for how it is
>>>>>>>>>>>>>>> done there. Once you have the .dtb binary, the easiest thing is to add
>>>>>>>>>>>>>>> it to the end of u-boot.bin, as described in README.fdt-control.
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> Thanks, I tried with above setup for adding dts.
>>>>>>>>>>>>>> I have added simple dts file on my board.
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> I got the below build error
>>>>>>>>>>>>>> /proj/mypc/u-boot/include/asm/gpio.h:1:27: fatal error:
>>>>>>>>>>>>>> asm/arch/gpio.h: No such file or directory
>>>>>>>>>>>>>> compilation terminated.
>>>>>>>>>>>>>> make[1]: *** No rule to make target `.depend.fdtdec', needed by
>>>>>>>>>>>>>> `.depend'. Stop.
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> is gpio.h is mandatory for fdt build?
>>>>>>>>>>>>>
>>>>>>>>>>>>> Yes because basic GPIO support is included. You can create one for
>>>>>>>>>>>>> your sub-arch and make it #include <asm-generic/gpio.h> as a starting
>>>>>>>>>>>>> point.
>>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>> Should I create an empty gpio.h file..it still asking some gpio
>>>>>>>>>>>> definitions right..
>>>>>>>>>>>
>>>>>>>>>>> It might be OK if you just have "#include <asm-generic/gpio.h>" in that file.
>>>>>>>>>>
>>>>>>>>>> Thanks.
>>>>>>>>>>
>>>>>>>>>> Finally I have created u-boot-dtb.bin.
>>>>>>>>>> for building dtb separately I have used
>>>>>>>>>> $ make DEVICE_TREE=zynq .. it creates a u-boot.dtb
>>>>>>>>>>
>>>>>>>>>> is there any option for building separate name, for example I need to
>>>>>>>>>> create zynq.dtb
>>>>>>>>
>>>>>>>> No - but you can just use 'mv' in a script external to the U-Boot build system.
>>>>>>>>
>>>>>>>>>
>>>>>>>>> Some how I am able to create a fdt build on my target.
>>>>>>>>> But what is this gpio mandatory, because currently my target currently
>>>>>>>>> need a GPIO setup.
>>>>>>>>> Add ing gpio.h/ with equivalent definitions is an extra overhead is
>>>>>>>>> it? please explain.
>>>>>>>>
>>>>>>>> It is just a header file - unless you actually use the GPIO functions,
>>>>>>>> you can compile with -ffunction-sections and you won't get the GPIO
>>>>>>>> code included. Anyway, the overhead is small, if any.
>>>>>>>
>>>>>>> OK, Thanks for your information.
>>>>>>>
>>>>>>> I have few quires regarding getting details from devicetree nodes.
>>>>>>> 1) In case of drivers, I think we need add the MACROS on
>>>>>>> // lib/fdtdec.c
>>>>>>> static const char * const compat_names[COMPAT_COUNT] = {
>>>>>>> is it?
>>>>>>
>>>>>> Yes that's what is normally done. At present it mostly just provides a
>>>>>> way to register existing FDT use in U-Boot.
>>>>>
>>>>> OK.
>>>>>
>>>>>>
>>>>>>> 2) What is the procedure for DDR base and size information getting
>>>>>>> memory {
>>>>>>> reg = <0x00000000 0x40000000>;
>>>>>>> };
>>>>>>> I need to get the above details from memory node of dts and
>>>>>>> updated while doing
>>>>>>> dram_init()
>>>>>>> is it possible in u-boot right now?
>>>>>>
>>>>>> There is no particular support for dram_init(). You could call
>>>>>> fdtdec_decode_region() to get the information.
>>>>>
>>>>> Actually we may get the info through memory node using
>>>>> fdtdec_decode_region() for
>>>>> dram_init(), but the problem seems like other than this the SDRAM base
>>>>> and SDSIZE are using in
>>>>> CONFIG_SYS_MEMTEST_START and CONFIG_SYS_MEMTEST_END.
>>>>>
>>>>> As these are part of configuration macros, I don't clear how we can
>>>>> get the base,sizes from dts and assign these
>>>>> areas..any suggestions..?
>>>>
>>>> Well this is because configuration has traditionally been done with
>>>> CONFIG defines instead of device tree. CONFIG_OF_CONTROL is a
>>>> relatively new feature in U-Boot.
>>>>
>>>> If you are wanting to control the memtest area from device tree, you
>>>> might consider adding something to the '/config' node, since this is
>>>> where we tend to put general configuration. You probably can't test
>>>> all of memory, so you need to select the region.
>>>
>>> Thanks for your information.
>>>
>>> I am able to get the memory information using fdtdec_decode_region().
>>>
>>> So my CONFIG_SYS_SDRAM_BASE and CONFIG_SYS_SDRAM_SIZE dependencies
>>> on board file got resolved. but there is a dependency for
>>> CONFIG_SYS_SDRAM_BASE on
>>> arch/arm/lib/board.c.
>>>
>>> I have some thinking about this dependency to remove can we declare
>>> ram_base like ram_size
>>> so-that in ddr_init we can assign this value.. is my thinking valid..???'
>>
>> Yes that sounds reasonable. For that you could perhaps use the memory
>> {} node, like:
>>
>> memory {
>> reg = <0x40000000 0x80000000>;
>> };
>
> I will confirm my logic here for better clarification.
>
> typedef struct global_data {
> phys_size_t ram_size; /* RAM size */
> + phys_size_t ram_base; /* RAM base */
> } gd_t;
>
> in boards files:
> ---
>
> int ddr_init() {
> //
> get the memory info from dts store it on start and size
> //
> gd->ram_start = start;
> gd->ram_size = size;
>
> gd->bd->bi_dram[0].start = start;
> gd->bd->bi_dram[0].size = size;
> }
>
> Please comment.
That sounds reasonable. I suppose you could cope with multiple memory
regions also - I'm not sure what the device tree syntax is for that.
Regards,
Simon
>
> Thanks,
> Jagan.
>
>>
>> Regards,
>> Simon
>>
>>>
>>> Any suggestions..
>>>
>>> Thanks,
>>> Jagan.
>>>
>>>>
>>>>>
>>>>>>
>>>>>>> 3) and same case for chosen also..are these implemented currently.
>>>>>>
>>>>>> The bootargs environment variable is placed in the kernel FDT when
>>>>>> booting the kernel. But 'chosen' is not used in the U-Boot FDT. This
>>>>>> is support instead for a '/config' node - see e.g.
>>>>>> fdtdec_get_config_int().
>>>>>
>>>>> OK, thank you.
>>>>>
>>>>> Thanks,
>>>>> Jagan.
>>>>
>>>> Regards,
>>>> Simon
^ permalink raw reply [flat|nested] 22+ messages in thread
* [U-Boot] FDT howto
2013-03-02 1:00 ` Simon Glass
@ 2013-03-02 7:44 ` Jagan Teki
2013-03-02 14:59 ` Simon Glass
0 siblings, 1 reply; 22+ messages in thread
From: Jagan Teki @ 2013-03-02 7:44 UTC (permalink / raw)
To: u-boot
Hi Simon,
On Sat, Mar 2, 2013 at 6:30 AM, Simon Glass <sjg@chromium.org> wrote:
> Hi Jagan,
>
> On Fri, Mar 1, 2013 at 1:21 PM, Jagan Teki <jagannadh.teki@gmail.com> wrote:
>> Hi Simon,
>>
>> On Sat, Mar 2, 2013 at 1:54 AM, Simon Glass <sjg@chromium.org> wrote:
>>> Hi Jagan,
>>>
>>> On Fri, Mar 1, 2013 at 11:14 AM, Jagan Teki <jagannadh.teki@gmail.com> wrote:
>>>> Hi Simon,
>>>>
>>>> On Fri, Mar 1, 2013 at 10:07 AM, Simon Glass <sjg@chromium.org> wrote:
>>>>> Hi Jagan,
>>>>>
>>>>> On Thu, Feb 28, 2013 at 12:29 PM, Jagan Teki <jagannadh.teki@gmail.com> wrote:
>>>>>> Hi Simon,
>>>>>>
>>>>>> On Thu, Feb 28, 2013 at 7:22 PM, Simon Glass <sjg@chromium.org> wrote:
>>>>>>> Hi Jagan,
>>>>>>>
>>>>>>> On Thu, Feb 28, 2013 at 3:14 AM, Jagan Teki <jagannadh.teki@gmail.com> wrote:
>>>>>>>> Hi Simon,
>>>>>>>>
>>>>>>>> On Mon, Feb 25, 2013 at 4:40 AM, Simon Glass <sjg@chromium.org> wrote:
>>>>>>>>> Hi Jagan,
>>>>>>>>>
>>>>>>>>> On Sun, Feb 24, 2013 at 10:58 AM, Jagan Teki <jagannadh.teki@gmail.com> wrote:
>>>>>>>>>> Hi Simon,
>>>>>>>>>>
>>>>>>>>>> On Sun, Feb 24, 2013 at 11:55 PM, Jagan Teki <jagannadh.teki@gmail.com> wrote:
>>>>>>>>>>> Hi Simon,
>>>>>>>>>>>
>>>>>>>>>>> On Sun, Feb 24, 2013 at 11:50 PM, Simon Glass <sjg@chromium.org> wrote:
>>>>>>>>>>>> Hi,
>>>>>>>>>>>>
>>>>>>>>>>>> On Sun, Feb 24, 2013 at 9:55 AM, Jagan Teki <jagannadh.teki@gmail.com> wrote:
>>>>>>>>>>>>> Hi Simon,
>>>>>>>>>>>>>
>>>>>>>>>>>>> On Sun, Feb 24, 2013 at 11:18 PM, Simon Glass <sjg@chromium.org> wrote:
>>>>>>>>>>>>>> Hi Jegan,
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> On Sun, Feb 24, 2013 at 9:45 AM, Jagan Teki <jagannadh.teki@gmail.com> wrote:
>>>>>>>>>>>>>>> Hi Simon,
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> On Sun, Feb 24, 2013 at 11:08 PM, Simon Glass <sjg@chromium.org> wrote:
>>>>>>>>>>>>>>>> Hi Jagan,
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> On Sun, Feb 24, 2013 at 8:19 AM, Jagan Teki <jagannadh.teki@gmail.com> wrote:
>>>>>>>>>>>>>>>>> Hi Simon,
>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>> Thanks for your response, please find my below comments.
>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>> On Sun, Feb 24, 2013 at 9:24 PM, Simon Glass <sjg@chromium.org> wrote:
>>>>>>>>>>>>>>>>>> Hi Jagan,
>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>> On Thu, Feb 21, 2013 at 9:03 AM, Jagan Teki <jagannadh.teki@gmail.com> wrote:
>>>>>>>>>>>>>>>>>>> Hi All,
>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>> I am planning to use devicetree on u-boot.
>>>>>>>>>>>>>>>>>>> I have an experience to work with devicetree on Linux.
>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>> For u-boot, I have read doc from doc/README.fdt-control.
>>>>>>>>>>>>>>>>>>> I see some dts usages on tegra boards.
>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>> I have lot of confusions with the concept itself.
>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>> Is Linux and u-boot devicetree concept and build system are same?
>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>> I don't really understand this question sorry. U-Boot and Linux use
>>>>>>>>>>>>>>>>>> the device tree mainly for run-time configuration of drivers, so that
>>>>>>>>>>>>>>>>>> the same driver code can operate on different boards.
>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>> I am some how confusing the fdt usage in u-boot.
>>>>>>>>>>>>>>>>> Because when compared to Linux, u-boot fdt setup mandatory to require
>>>>>>>>>>>>>>>>> the CONFIG_DEFAULT_DEVICE_TREE
>>>>>>>>>>>>>>>>> on the config file [from your previous comments].
>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>> is this the only difference when compared to Linux i guess..is it?
>>>>>>>>>>>>>>>>> Linux defconfig file does need to hot-code
>>>>>>>>>>>>>>>>> the dts.
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> Yes - that is a difference. Linux provides a way to build .dts files
>>>>>>>>>>>>>>>> but it is not mandatory. At present it is mandatory with U-Boot, and
>>>>>>>>>>>>>>>> only one file is built. It can easily be ignored though.
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> Ok.
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>> Suppose I have 4 boards J1, J2, J3 & J4 on my soc "emb".of vendor "vast"
>>>>>>>>>>>>>>>>>>> For this requirement I have
>>>>>>>>>>>>>>>>>>> board/vast/dts/J1.dts
>>>>>>>>>>>>>>>>>>> board/vast/dts/J2.dts
>>>>>>>>>>>>>>>>>>> board/vast/dts/J3.dts
>>>>>>>>>>>>>>>>>>> board/vast/dts/J4.dts
>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>> include/configs/emb_common.h ==> single configuration of all SOC
>>>>>>>>>>>>>>>>>>> needed definitions
>>>>>>>>>>>>>>>>>>> like defconfig in Linux.
>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>> do I need any more files?
>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>> That's enough for the basics I think.
>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>> Is dtsi file require to add it on arch folder along with above.
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> If your architecture is not one of those already supported (like arm
>>>>>>>>>>>>>>>> tegra/exynos and x86) then yes you need to add this file in
>>>>>>>>>>>>>>>> arch/<arch>/dts. What architecture are you using?
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> My architecture is armv7, may be for me dtsi not required as arm is
>>>>>>>>>>>>>>> existing architecture
>>>>>>>>>>>>>>> to support fdt on u-boot.. is it?
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> Which sub-arch? If it is tegra/exynos5250 then you might be OK. For
>>>>>>>>>>>>>> something else, you should get the kernel's .dtsi file for that chip.
>>>>>>>>>>>>>
>>>>>>>>>>>>> I am having armv7, xilinx zynq soc..but i coun't get any .dtsi on kernel source.
>>>>>>>>>>>>> may be I will create new one.
>>>>>>>>>>>>
>>>>>>>>>>>> OK, well if the kernel doesn't have FDT support yet then yes you will
>>>>>>>>>>>> need to create a new one.
>>>>>>>>>>>>
>>>>>>>>>>>>>
>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>> In emb_common.h i am defining
>>>>>>>>>>>>>>>>>>> CONFIG_OF_SEPARATE is it sufficient?
>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>> And CONFIG_OF_CONTROL
>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>> My plan is to build u-boot and then build the dtb with specific
>>>>>>>>>>>>>>>>>>> board and then combine.
>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>> That's fine, and is how we do things on Chromium also. U-Boot tries to
>>>>>>>>>>>>>>>>>> build an FDT even with CONFIG_OF_SEPARATE, so you need to put a
>>>>>>>>>>>>>>>>>> default device tree file in your emb_common.h file that it can find.
>>>>>>>>>>>>>>>>>> But you can ignore it, and for flashing your boards just use
>>>>>>>>>>>>>>>>>> u-boot.bin plus whatever .dtb you want to select.
>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>> So I will add the fdt support and then build the u-boot.
>>>>>>>>>>>>>>>>> Is there any separate u-boot build command to build dts file.
>>>>>>>>>>>>>>>>> My plan is to combine both u-boot and dtb.
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> You can run dtc yourself if you like - see Makefile/dts for how it is
>>>>>>>>>>>>>>>> done there. Once you have the .dtb binary, the easiest thing is to add
>>>>>>>>>>>>>>>> it to the end of u-boot.bin, as described in README.fdt-control.
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> Thanks, I tried with above setup for adding dts.
>>>>>>>>>>>>>>> I have added simple dts file on my board.
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> I got the below build error
>>>>>>>>>>>>>>> /proj/mypc/u-boot/include/asm/gpio.h:1:27: fatal error:
>>>>>>>>>>>>>>> asm/arch/gpio.h: No such file or directory
>>>>>>>>>>>>>>> compilation terminated.
>>>>>>>>>>>>>>> make[1]: *** No rule to make target `.depend.fdtdec', needed by
>>>>>>>>>>>>>>> `.depend'. Stop.
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> is gpio.h is mandatory for fdt build?
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> Yes because basic GPIO support is included. You can create one for
>>>>>>>>>>>>>> your sub-arch and make it #include <asm-generic/gpio.h> as a starting
>>>>>>>>>>>>>> point.
>>>>>>>>>>>>>>
>>>>>>>>>>>>>
>>>>>>>>>>>>> Should I create an empty gpio.h file..it still asking some gpio
>>>>>>>>>>>>> definitions right..
>>>>>>>>>>>>
>>>>>>>>>>>> It might be OK if you just have "#include <asm-generic/gpio.h>" in that file.
>>>>>>>>>>>
>>>>>>>>>>> Thanks.
>>>>>>>>>>>
>>>>>>>>>>> Finally I have created u-boot-dtb.bin.
>>>>>>>>>>> for building dtb separately I have used
>>>>>>>>>>> $ make DEVICE_TREE=zynq .. it creates a u-boot.dtb
>>>>>>>>>>>
>>>>>>>>>>> is there any option for building separate name, for example I need to
>>>>>>>>>>> create zynq.dtb
>>>>>>>>>
>>>>>>>>> No - but you can just use 'mv' in a script external to the U-Boot build system.
>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> Some how I am able to create a fdt build on my target.
>>>>>>>>>> But what is this gpio mandatory, because currently my target currently
>>>>>>>>>> need a GPIO setup.
>>>>>>>>>> Add ing gpio.h/ with equivalent definitions is an extra overhead is
>>>>>>>>>> it? please explain.
>>>>>>>>>
>>>>>>>>> It is just a header file - unless you actually use the GPIO functions,
>>>>>>>>> you can compile with -ffunction-sections and you won't get the GPIO
>>>>>>>>> code included. Anyway, the overhead is small, if any.
>>>>>>>>
>>>>>>>> OK, Thanks for your information.
>>>>>>>>
>>>>>>>> I have few quires regarding getting details from devicetree nodes.
>>>>>>>> 1) In case of drivers, I think we need add the MACROS on
>>>>>>>> // lib/fdtdec.c
>>>>>>>> static const char * const compat_names[COMPAT_COUNT] = {
>>>>>>>> is it?
>>>>>>>
>>>>>>> Yes that's what is normally done. At present it mostly just provides a
>>>>>>> way to register existing FDT use in U-Boot.
>>>>>>
>>>>>> OK.
>>>>>>
>>>>>>>
>>>>>>>> 2) What is the procedure for DDR base and size information getting
>>>>>>>> memory {
>>>>>>>> reg = <0x00000000 0x40000000>;
>>>>>>>> };
>>>>>>>> I need to get the above details from memory node of dts and
>>>>>>>> updated while doing
>>>>>>>> dram_init()
>>>>>>>> is it possible in u-boot right now?
>>>>>>>
>>>>>>> There is no particular support for dram_init(). You could call
>>>>>>> fdtdec_decode_region() to get the information.
>>>>>>
>>>>>> Actually we may get the info through memory node using
>>>>>> fdtdec_decode_region() for
>>>>>> dram_init(), but the problem seems like other than this the SDRAM base
>>>>>> and SDSIZE are using in
>>>>>> CONFIG_SYS_MEMTEST_START and CONFIG_SYS_MEMTEST_END.
>>>>>>
>>>>>> As these are part of configuration macros, I don't clear how we can
>>>>>> get the base,sizes from dts and assign these
>>>>>> areas..any suggestions..?
>>>>>
>>>>> Well this is because configuration has traditionally been done with
>>>>> CONFIG defines instead of device tree. CONFIG_OF_CONTROL is a
>>>>> relatively new feature in U-Boot.
>>>>>
>>>>> If you are wanting to control the memtest area from device tree, you
>>>>> might consider adding something to the '/config' node, since this is
>>>>> where we tend to put general configuration. You probably can't test
>>>>> all of memory, so you need to select the region.
>>>>
>>>> Thanks for your information.
>>>>
>>>> I am able to get the memory information using fdtdec_decode_region().
>>>>
>>>> So my CONFIG_SYS_SDRAM_BASE and CONFIG_SYS_SDRAM_SIZE dependencies
>>>> on board file got resolved. but there is a dependency for
>>>> CONFIG_SYS_SDRAM_BASE on
>>>> arch/arm/lib/board.c.
>>>>
>>>> I have some thinking about this dependency to remove can we declare
>>>> ram_base like ram_size
>>>> so-that in ddr_init we can assign this value.. is my thinking valid..???'
>>>
>>> Yes that sounds reasonable. For that you could perhaps use the memory
>>> {} node, like:
>>>
>>> memory {
>>> reg = <0x40000000 0x80000000>;
>>> };
>>
>> I will confirm my logic here for better clarification.
>>
>> typedef struct global_data {
>> phys_size_t ram_size; /* RAM size */
>> + phys_size_t ram_base; /* RAM base */
>> } gd_t;
>>
>> in boards files:
>> ---
>>
>> int ddr_init() {
>> //
>> get the memory info from dts store it on start and size
>> //
>> gd->ram_start = start;
>> gd->ram_size = size;
>>
>> gd->bd->bi_dram[0].start = start;
>> gd->bd->bi_dram[0].size = size;
>> }
>>
>> Please comment.
>
> That sounds reasonable. I suppose you could cope with multiple memory
> regions also - I'm not sure what the device tree syntax is for that.
This is the syntax for above example:
memory {
reg = <0x0 0x40000000>;
};
Any side effect in my previous code [snip] w.r.t multiple bank supports.
Moving CONFIG_SYS_SDRAM_BASE: to ram_start is that a good idea?, as lot
of boards were using it..
I am planning code fdtdec_get_memory_region() to move the these memory detection
code, so-that it should be a generic for u-boot if the use is using
fdt. any comments.
Thanks,
Jagan.
>
> Regards,
> Simon
>
>>
>> Thanks,
>> Jagan.
>>
>>>
>>> Regards,
>>> Simon
>>>
>>>>
>>>> Any suggestions..
>>>>
>>>> Thanks,
>>>> Jagan.
>>>>
>>>>>
>>>>>>
>>>>>>>
>>>>>>>> 3) and same case for chosen also..are these implemented currently.
>>>>>>>
>>>>>>> The bootargs environment variable is placed in the kernel FDT when
>>>>>>> booting the kernel. But 'chosen' is not used in the U-Boot FDT. This
>>>>>>> is support instead for a '/config' node - see e.g.
>>>>>>> fdtdec_get_config_int().
>>>>>>
>>>>>> OK, thank you.
>>>>>>
>>>>>> Thanks,
>>>>>> Jagan.
>>>>>
>>>>> Regards,
>>>>> Simon
^ permalink raw reply [flat|nested] 22+ messages in thread
* [U-Boot] FDT howto
2013-03-02 7:44 ` Jagan Teki
@ 2013-03-02 14:59 ` Simon Glass
0 siblings, 0 replies; 22+ messages in thread
From: Simon Glass @ 2013-03-02 14:59 UTC (permalink / raw)
To: u-boot
Hi Jagan,
On Fri, Mar 1, 2013 at 11:44 PM, Jagan Teki <jagannadh.teki@gmail.com> wrote:
> Hi Simon,
>
> On Sat, Mar 2, 2013 at 6:30 AM, Simon Glass <sjg@chromium.org> wrote:
>> Hi Jagan,
>>
>> On Fri, Mar 1, 2013 at 1:21 PM, Jagan Teki <jagannadh.teki@gmail.com> wrote:
>>> Hi Simon,
>>>
>>> On Sat, Mar 2, 2013 at 1:54 AM, Simon Glass <sjg@chromium.org> wrote:
>>>> Hi Jagan,
>>>>
>>>> On Fri, Mar 1, 2013 at 11:14 AM, Jagan Teki <jagannadh.teki@gmail.com> wrote:
>>>>> Hi Simon,
>>>>>
>>>>> On Fri, Mar 1, 2013 at 10:07 AM, Simon Glass <sjg@chromium.org> wrote:
>>>>>> Hi Jagan,
>>>>>>
>>>>>> On Thu, Feb 28, 2013 at 12:29 PM, Jagan Teki <jagannadh.teki@gmail.com> wrote:
>>>>>>> Hi Simon,
>>>>>>>
>>>>>>> On Thu, Feb 28, 2013 at 7:22 PM, Simon Glass <sjg@chromium.org> wrote:
>>>>>>>> Hi Jagan,
>>>>>>>>
>>>>>>>> On Thu, Feb 28, 2013 at 3:14 AM, Jagan Teki <jagannadh.teki@gmail.com> wrote:
>>>>>>>>> Hi Simon,
>>>>>>>>>
>>>>>>>>> On Mon, Feb 25, 2013 at 4:40 AM, Simon Glass <sjg@chromium.org> wrote:
>>>>>>>>>> Hi Jagan,
>>>>>>>>>>
>>>>>>>>>> On Sun, Feb 24, 2013 at 10:58 AM, Jagan Teki <jagannadh.teki@gmail.com> wrote:
>>>>>>>>>>> Hi Simon,
>>>>>>>>>>>
>>>>>>>>>>> On Sun, Feb 24, 2013 at 11:55 PM, Jagan Teki <jagannadh.teki@gmail.com> wrote:
>>>>>>>>>>>> Hi Simon,
>>>>>>>>>>>>
>>>>>>>>>>>> On Sun, Feb 24, 2013 at 11:50 PM, Simon Glass <sjg@chromium.org> wrote:
>>>>>>>>>>>>> Hi,
>>>>>>>>>>>>>
>>>>>>>>>>>>> On Sun, Feb 24, 2013 at 9:55 AM, Jagan Teki <jagannadh.teki@gmail.com> wrote:
>>>>>>>>>>>>>> Hi Simon,
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> On Sun, Feb 24, 2013 at 11:18 PM, Simon Glass <sjg@chromium.org> wrote:
>>>>>>>>>>>>>>> Hi Jegan,
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> On Sun, Feb 24, 2013 at 9:45 AM, Jagan Teki <jagannadh.teki@gmail.com> wrote:
>>>>>>>>>>>>>>>> Hi Simon,
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> On Sun, Feb 24, 2013 at 11:08 PM, Simon Glass <sjg@chromium.org> wrote:
>>>>>>>>>>>>>>>>> Hi Jagan,
>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>> On Sun, Feb 24, 2013 at 8:19 AM, Jagan Teki <jagannadh.teki@gmail.com> wrote:
>>>>>>>>>>>>>>>>>> Hi Simon,
>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>> Thanks for your response, please find my below comments.
>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>> On Sun, Feb 24, 2013 at 9:24 PM, Simon Glass <sjg@chromium.org> wrote:
>>>>>>>>>>>>>>>>>>> Hi Jagan,
>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>> On Thu, Feb 21, 2013 at 9:03 AM, Jagan Teki <jagannadh.teki@gmail.com> wrote:
>>>>>>>>>>>>>>>>>>>> Hi All,
>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>> I am planning to use devicetree on u-boot.
>>>>>>>>>>>>>>>>>>>> I have an experience to work with devicetree on Linux.
>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>> For u-boot, I have read doc from doc/README.fdt-control.
>>>>>>>>>>>>>>>>>>>> I see some dts usages on tegra boards.
>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>> I have lot of confusions with the concept itself.
>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>> Is Linux and u-boot devicetree concept and build system are same?
>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>> I don't really understand this question sorry. U-Boot and Linux use
>>>>>>>>>>>>>>>>>>> the device tree mainly for run-time configuration of drivers, so that
>>>>>>>>>>>>>>>>>>> the same driver code can operate on different boards.
>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>> I am some how confusing the fdt usage in u-boot.
>>>>>>>>>>>>>>>>>> Because when compared to Linux, u-boot fdt setup mandatory to require
>>>>>>>>>>>>>>>>>> the CONFIG_DEFAULT_DEVICE_TREE
>>>>>>>>>>>>>>>>>> on the config file [from your previous comments].
>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>> is this the only difference when compared to Linux i guess..is it?
>>>>>>>>>>>>>>>>>> Linux defconfig file does need to hot-code
>>>>>>>>>>>>>>>>>> the dts.
>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>> Yes - that is a difference. Linux provides a way to build .dts files
>>>>>>>>>>>>>>>>> but it is not mandatory. At present it is mandatory with U-Boot, and
>>>>>>>>>>>>>>>>> only one file is built. It can easily be ignored though.
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> Ok.
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>> Suppose I have 4 boards J1, J2, J3 & J4 on my soc "emb".of vendor "vast"
>>>>>>>>>>>>>>>>>>>> For this requirement I have
>>>>>>>>>>>>>>>>>>>> board/vast/dts/J1.dts
>>>>>>>>>>>>>>>>>>>> board/vast/dts/J2.dts
>>>>>>>>>>>>>>>>>>>> board/vast/dts/J3.dts
>>>>>>>>>>>>>>>>>>>> board/vast/dts/J4.dts
>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>> include/configs/emb_common.h ==> single configuration of all SOC
>>>>>>>>>>>>>>>>>>>> needed definitions
>>>>>>>>>>>>>>>>>>>> like defconfig in Linux.
>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>> do I need any more files?
>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>> That's enough for the basics I think.
>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>> Is dtsi file require to add it on arch folder along with above.
>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>> If your architecture is not one of those already supported (like arm
>>>>>>>>>>>>>>>>> tegra/exynos and x86) then yes you need to add this file in
>>>>>>>>>>>>>>>>> arch/<arch>/dts. What architecture are you using?
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> My architecture is armv7, may be for me dtsi not required as arm is
>>>>>>>>>>>>>>>> existing architecture
>>>>>>>>>>>>>>>> to support fdt on u-boot.. is it?
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> Which sub-arch? If it is tegra/exynos5250 then you might be OK. For
>>>>>>>>>>>>>>> something else, you should get the kernel's .dtsi file for that chip.
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> I am having armv7, xilinx zynq soc..but i coun't get any .dtsi on kernel source.
>>>>>>>>>>>>>> may be I will create new one.
>>>>>>>>>>>>>
>>>>>>>>>>>>> OK, well if the kernel doesn't have FDT support yet then yes you will
>>>>>>>>>>>>> need to create a new one.
>>>>>>>>>>>>>
>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>> In emb_common.h i am defining
>>>>>>>>>>>>>>>>>>>> CONFIG_OF_SEPARATE is it sufficient?
>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>> And CONFIG_OF_CONTROL
>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>> My plan is to build u-boot and then build the dtb with specific
>>>>>>>>>>>>>>>>>>>> board and then combine.
>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>> That's fine, and is how we do things on Chromium also. U-Boot tries to
>>>>>>>>>>>>>>>>>>> build an FDT even with CONFIG_OF_SEPARATE, so you need to put a
>>>>>>>>>>>>>>>>>>> default device tree file in your emb_common.h file that it can find.
>>>>>>>>>>>>>>>>>>> But you can ignore it, and for flashing your boards just use
>>>>>>>>>>>>>>>>>>> u-boot.bin plus whatever .dtb you want to select.
>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>> So I will add the fdt support and then build the u-boot.
>>>>>>>>>>>>>>>>>> Is there any separate u-boot build command to build dts file.
>>>>>>>>>>>>>>>>>> My plan is to combine both u-boot and dtb.
>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>> You can run dtc yourself if you like - see Makefile/dts for how it is
>>>>>>>>>>>>>>>>> done there. Once you have the .dtb binary, the easiest thing is to add
>>>>>>>>>>>>>>>>> it to the end of u-boot.bin, as described in README.fdt-control.
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> Thanks, I tried with above setup for adding dts.
>>>>>>>>>>>>>>>> I have added simple dts file on my board.
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> I got the below build error
>>>>>>>>>>>>>>>> /proj/mypc/u-boot/include/asm/gpio.h:1:27: fatal error:
>>>>>>>>>>>>>>>> asm/arch/gpio.h: No such file or directory
>>>>>>>>>>>>>>>> compilation terminated.
>>>>>>>>>>>>>>>> make[1]: *** No rule to make target `.depend.fdtdec', needed by
>>>>>>>>>>>>>>>> `.depend'. Stop.
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> is gpio.h is mandatory for fdt build?
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> Yes because basic GPIO support is included. You can create one for
>>>>>>>>>>>>>>> your sub-arch and make it #include <asm-generic/gpio.h> as a starting
>>>>>>>>>>>>>>> point.
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> Should I create an empty gpio.h file..it still asking some gpio
>>>>>>>>>>>>>> definitions right..
>>>>>>>>>>>>>
>>>>>>>>>>>>> It might be OK if you just have "#include <asm-generic/gpio.h>" in that file.
>>>>>>>>>>>>
>>>>>>>>>>>> Thanks.
>>>>>>>>>>>>
>>>>>>>>>>>> Finally I have created u-boot-dtb.bin.
>>>>>>>>>>>> for building dtb separately I have used
>>>>>>>>>>>> $ make DEVICE_TREE=zynq .. it creates a u-boot.dtb
>>>>>>>>>>>>
>>>>>>>>>>>> is there any option for building separate name, for example I need to
>>>>>>>>>>>> create zynq.dtb
>>>>>>>>>>
>>>>>>>>>> No - but you can just use 'mv' in a script external to the U-Boot build system.
>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>> Some how I am able to create a fdt build on my target.
>>>>>>>>>>> But what is this gpio mandatory, because currently my target currently
>>>>>>>>>>> need a GPIO setup.
>>>>>>>>>>> Add ing gpio.h/ with equivalent definitions is an extra overhead is
>>>>>>>>>>> it? please explain.
>>>>>>>>>>
>>>>>>>>>> It is just a header file - unless you actually use the GPIO functions,
>>>>>>>>>> you can compile with -ffunction-sections and you won't get the GPIO
>>>>>>>>>> code included. Anyway, the overhead is small, if any.
>>>>>>>>>
>>>>>>>>> OK, Thanks for your information.
>>>>>>>>>
>>>>>>>>> I have few quires regarding getting details from devicetree nodes.
>>>>>>>>> 1) In case of drivers, I think we need add the MACROS on
>>>>>>>>> // lib/fdtdec.c
>>>>>>>>> static const char * const compat_names[COMPAT_COUNT] = {
>>>>>>>>> is it?
>>>>>>>>
>>>>>>>> Yes that's what is normally done. At present it mostly just provides a
>>>>>>>> way to register existing FDT use in U-Boot.
>>>>>>>
>>>>>>> OK.
>>>>>>>
>>>>>>>>
>>>>>>>>> 2) What is the procedure for DDR base and size information getting
>>>>>>>>> memory {
>>>>>>>>> reg = <0x00000000 0x40000000>;
>>>>>>>>> };
>>>>>>>>> I need to get the above details from memory node of dts and
>>>>>>>>> updated while doing
>>>>>>>>> dram_init()
>>>>>>>>> is it possible in u-boot right now?
>>>>>>>>
>>>>>>>> There is no particular support for dram_init(). You could call
>>>>>>>> fdtdec_decode_region() to get the information.
>>>>>>>
>>>>>>> Actually we may get the info through memory node using
>>>>>>> fdtdec_decode_region() for
>>>>>>> dram_init(), but the problem seems like other than this the SDRAM base
>>>>>>> and SDSIZE are using in
>>>>>>> CONFIG_SYS_MEMTEST_START and CONFIG_SYS_MEMTEST_END.
>>>>>>>
>>>>>>> As these are part of configuration macros, I don't clear how we can
>>>>>>> get the base,sizes from dts and assign these
>>>>>>> areas..any suggestions..?
>>>>>>
>>>>>> Well this is because configuration has traditionally been done with
>>>>>> CONFIG defines instead of device tree. CONFIG_OF_CONTROL is a
>>>>>> relatively new feature in U-Boot.
>>>>>>
>>>>>> If you are wanting to control the memtest area from device tree, you
>>>>>> might consider adding something to the '/config' node, since this is
>>>>>> where we tend to put general configuration. You probably can't test
>>>>>> all of memory, so you need to select the region.
>>>>>
>>>>> Thanks for your information.
>>>>>
>>>>> I am able to get the memory information using fdtdec_decode_region().
>>>>>
>>>>> So my CONFIG_SYS_SDRAM_BASE and CONFIG_SYS_SDRAM_SIZE dependencies
>>>>> on board file got resolved. but there is a dependency for
>>>>> CONFIG_SYS_SDRAM_BASE on
>>>>> arch/arm/lib/board.c.
>>>>>
>>>>> I have some thinking about this dependency to remove can we declare
>>>>> ram_base like ram_size
>>>>> so-that in ddr_init we can assign this value.. is my thinking valid..???'
>>>>
>>>> Yes that sounds reasonable. For that you could perhaps use the memory
>>>> {} node, like:
>>>>
>>>> memory {
>>>> reg = <0x40000000 0x80000000>;
>>>> };
>>>
>>> I will confirm my logic here for better clarification.
>>>
>>> typedef struct global_data {
>>> phys_size_t ram_size; /* RAM size */
>>> + phys_size_t ram_base; /* RAM base */
>>> } gd_t;
>>>
>>> in boards files:
>>> ---
>>>
>>> int ddr_init() {
>>> //
>>> get the memory info from dts store it on start and size
>>> //
>>> gd->ram_start = start;
>>> gd->ram_size = size;
>>>
>>> gd->bd->bi_dram[0].start = start;
>>> gd->bd->bi_dram[0].size = size;
>>> }
>>>
>>> Please comment.
>>
>> That sounds reasonable. I suppose you could cope with multiple memory
>> regions also - I'm not sure what the device tree syntax is for that.
>
> This is the syntax for above example:
> memory {
> reg = <0x0 0x40000000>;
> };
My question was how can you handle multiple regions in device tree. Is it:
memory {
/* 256MB at 0, 256MB at 512MB */
reg = <0x0 0x10000000 0x20000000 0x10000000>;
};
or something else. If you can't find out you could ask on devicetree-discuss.
>
> Any side effect in my previous code [snip] w.r.t multiple bank supports.
>
> Moving CONFIG_SYS_SDRAM_BASE: to ram_start is that a good idea?, as lot
> of boards were using it..
Actually I don't see this symbol being used anywhere, although I agree
it appears in board config files.
board/emk/top860/top860.c
98: memctl->memc_br2 = CONFIG_SYS_DRAM_BASE | BR_MS_UPMA | BR_V;
include/configs/trizepsiv.h
194:#define CONFIG_SYS_DRAM_BASE 0xa0000000
include/configs/pxa255_idp.h
273:#define CONFIG_SYS_DRAM_BASE 0xa0000000
include/configs/lubbock.h
127:#define CONFIG_SYS_LOAD_ADDR (CONFIG_SYS_DRAM_BASE + 0x8000) /*
default load address */
158:#define CONFIG_SYS_DRAM_BASE 0xa0000000
include/configs/TOP860.h
76:#define CONFIG_SYS_DRAM_BASE 0x00000000 /* DRAM in final mapping */
include/configs/colibri_pxa270.h
127:#define CONFIG_SYS_DRAM_BASE 0xa0000000 /* CS0 */
include/configs/palmtc.h
145:#define CONFIG_SYS_DRAM_BASE 0xa0000000 /* CS0 */
151:#define CONFIG_SYS_LOAD_ADDR CONFIG_SYS_DRAM_BASE
include/configs/balloon3.h
116:#define CONFIG_SYS_DRAM_BASE 0xa0000000 /* CS0 */
include/configs/vpac270.h
182:#define CONFIG_SYS_DRAM_BASE 0xa0000000 /* CS0 */
include/configs/xaeniax.h
157:#define CONFIG_SYS_DRAM_BASE 0xa0000000
include/configs/palmld.h
143:#define CONFIG_SYS_DRAM_BASE 0xa0000000 /* CS0 */
149:#define CONFIG_SYS_LOAD_ADDR CONFIG_SYS_DRAM_BASE
include/configs/zipitz2.h
172:#define CONFIG_SYS_DRAM_BASE 0xa0000000 /* CS0 */
178:#define CONFIG_SYS_LOAD_ADDR CONFIG_SYS_DRAM_BASE
>
> I am planning code fdtdec_get_memory_region() to move the these memory detection
> code, so-that it should be a generic for u-boot if the use is using
> fdt. any comments.
Sounds good. Then you probably want to try to fit this into the
generic board support, patches are here:
http://patchwork.ozlabs.org/patch/219174/
Regards,
Simon
>
> Thanks,
> Jagan.
>
>>
>> Regards,
>> Simon
>>
>>>
>>> Thanks,
>>> Jagan.
>>>
>>>>
>>>> Regards,
>>>> Simon
>>>>
>>>>>
>>>>> Any suggestions..
>>>>>
>>>>> Thanks,
>>>>> Jagan.
>>>>>
>>>>>>
>>>>>>>
>>>>>>>>
>>>>>>>>> 3) and same case for chosen also..are these implemented currently.
>>>>>>>>
>>>>>>>> The bootargs environment variable is placed in the kernel FDT when
>>>>>>>> booting the kernel. But 'chosen' is not used in the U-Boot FDT. This
>>>>>>>> is support instead for a '/config' node - see e.g.
>>>>>>>> fdtdec_get_config_int().
>>>>>>>
>>>>>>> OK, thank you.
>>>>>>>
>>>>>>> Thanks,
>>>>>>> Jagan.
>>>>>>
>>>>>> Regards,
>>>>>> Simon
^ permalink raw reply [flat|nested] 22+ messages in thread
end of thread, other threads:[~2013-03-02 14:59 UTC | newest]
Thread overview: 22+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2013-02-21 17:03 [U-Boot] FDT howto Jagan Teki
2013-02-24 5:21 ` Jagan Teki
2013-02-24 15:54 ` Simon Glass
2013-02-24 16:19 ` Jagan Teki
2013-02-24 17:38 ` Simon Glass
2013-02-24 17:45 ` Jagan Teki
2013-02-24 17:48 ` Simon Glass
2013-02-24 17:55 ` Jagan Teki
2013-02-24 18:20 ` Simon Glass
2013-02-24 18:25 ` Jagan Teki
2013-02-24 18:58 ` Jagan Teki
2013-02-24 23:10 ` Simon Glass
2013-02-28 11:14 ` Jagan Teki
2013-02-28 13:52 ` Simon Glass
2013-02-28 20:29 ` Jagan Teki
2013-03-01 4:37 ` Simon Glass
2013-03-01 19:14 ` Jagan Teki
2013-03-01 20:24 ` Simon Glass
2013-03-01 21:21 ` Jagan Teki
2013-03-02 1:00 ` Simon Glass
2013-03-02 7:44 ` Jagan Teki
2013-03-02 14:59 ` Simon Glass
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.