All of lore.kernel.org
 help / color / mirror / Atom feed
From: Simon Glass <sjg@chromium.org>
To: u-boot@lists.denx.de
Subject: [U-Boot] [RFC PATCH 0/4] Run-time configuration of U-Boot via a flat device tree (fdt)
Date: Thu,  1 Sep 2011 13:49:05 -0700	[thread overview]
Message-ID: <1314910149-9755-1-git-send-email-sjg@chromium.org> (raw)

At present in U-Boot configuration is mostly done using CONFIG options in the
board file. This patch set aims to make it possible for a single U-Boot
binary to support multiple boards, with the exact configuration of each board
controlled by a flat device tree (fdt). This is the approach recently taken
by the ARM Linux kernel and has been used by PowerPC for some time.

The fdt is a convenient vehicle for implementing run-time configuration for
three reasons. Firstly it is easy to use, being a simple text file. It is
extensible since it consists of nodes and properties in a nice hierarchical
format.

Finally, there is already excellent infrastructure for the fdt: a compiler
checks the text file and converts it to a compact binary format, and a library
is already available in U-Boot (libfdt) for handling this format.

To read about fdts, take a look at the specification here:

https://www.power.org/resources/downloads/Power_ePAPR_APPROVED_v1.0.pdf

You also might find this section of the Linux kernel documentation useful:
(access this in the Linux kernel source code)

Documentation/devicetree/booting-without-of.txt

To use this patch set you will need to get the device tree compiler here:

git://jdl.com/software/dtc.git

and add some defines to your board (only ARM is currently supported):

 #define CONFIG_OF_CONTROL       (to enable run-time config control via fdt)
 #define CONFIG_OF_EMBED or CONFIG_OF_SEPARATE
     (either build the fdt blob into U-Boot, or create a separate u-boot.dtb)
 #define CONFIG_DEFAULT_DEVICE_TREE	"<your name>"
     (to specify the name of the device tree file is
      board/<vendor>/<board>/<your name>.dts)

This patch set does not include any drivers which actually use the fdt. I have
some concerns about spreading fdt code around the U-Boot code base so am
thinking of having a support file which makes this easier. I can provide a
UART driver modified to use fdt if there is interest.

It is important to understand that the fdt only selects options available in
the platform / drivers. It cannot add new drivers (yet). So you must still
have the CONFIG option to enable the driver. For example, you need to define
CONFIG_SYS_NS16550 to bring in the NS16550 driver, but can use the fdt to
specific the UART clock, peripheral address, etc. In very broad terms, the
CONFIG options in general control *what* driver files are pulled in, and the
fdt controls *how* those files work.

While only ARM is supported in this patch series, it should be easy enough to
add support for other architectures.


Simon Glass (4):
  fdt: ARM: Add device tree control of U-Boot (CONFIG_OF_CONTROL)
  fdt: Add support for embedded device tree (CONFIG_OF_EMBED)
  fdt: Add support for a separate device tree (CONFIG_OF_SEPARATE)
  fdt: ARM: Implement embedded and separate device tree

 .gitignore                         |    1 +
 Makefile                           |    9 ++
 README                             |   25 ++++++
 arch/arm/include/asm/global_data.h |    1 +
 arch/arm/lib/board.c               |   22 +++++
 config.mk                          |    1 +
 doc/README.fdt-control             |  168 ++++++++++++++++++++++++++++++++++++
 dts/Makefile                       |  100 +++++++++++++++++++++
 include/common.h                   |    1 +
 9 files changed, 328 insertions(+), 0 deletions(-)
 create mode 100644 doc/README.fdt-control
 create mode 100644 dts/Makefile

-- 
1.7.3.1

             reply	other threads:[~2011-09-01 20:49 UTC|newest]

Thread overview: 11+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2011-09-01 20:49 Simon Glass [this message]
2011-09-01 20:49 ` [U-Boot] [RFC PATCH 1/4] fdt: ARM: Add device tree control of U-Boot (CONFIG_OF_CONTROL) Simon Glass
2011-09-02 16:32   ` Mike Frysinger
2011-09-02 17:18     ` Simon Glass
2011-09-01 20:49 ` [U-Boot] [RFC PATCH 2/4] fdt: Add support for embedded device tree (CONFIG_OF_EMBED) Simon Glass
2011-09-01 20:49 ` [U-Boot] [RFC PATCH 3/4] fdt: Add support for a separate device tree (CONFIG_OF_SEPARATE) Simon Glass
2011-09-01 20:49 ` [U-Boot] [RFC PATCH 4/4] fdt: ARM: Implement embedded and separate device tree Simon Glass
2011-09-02 11:42 ` [U-Boot] [RFC PATCH 0/4] Run-time configuration of U-Boot via a flat device tree (fdt) Jerry Van Baren
2011-09-02 17:14   ` Simon Glass
2011-09-02 16:33 ` Mike Frysinger
2011-09-02 17:06   ` Simon Glass

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1314910149-9755-1-git-send-email-sjg@chromium.org \
    --to=sjg@chromium.org \
    --cc=u-boot@lists.denx.de \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
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.