public inbox for u-boot@lists.denx.de
 help / color / mirror / Atom feed
From: Stephen Warren <swarren@wwwdotorg.org>
To: u-boot@lists.denx.de
Subject: [U-Boot] [PATCH 0/2] Standardize on run-time board ID variables
Date: Wed, 24 Oct 2012 13:05:16 -0600	[thread overview]
Message-ID: <50883BEC.3040505@wwwdotorg.org> (raw)
In-Reply-To: <20121024184131.GB8148@bill-the-cat>

On 10/24/2012 12:41 PM, Tom Rini wrote:
> On Wed, Oct 24, 2012 at 11:50:38AM -0600, Stephen Warren wrote:
>> On 10/24/2012 11:28 AM, Tom Rini wrote:
>>> Hey all,
>>> 
>>> I've been thinking about one of the problems we need to solve
>>> over in TI AM335x land and that is given that we support a
>>> number of different boards with a single binary (and we have an
>>> i2c eeprom that tells us what board and revision we are on),
>>> the user needs to be able to easily determine what board we are
>>> on so they know what dtb file to load so they can boot.  To
>>> this end I've added CONFIG_ENV_VARS_UBOOT_RUNTIME_CONFIG to the
>>> README which says when set we have board_name and board_rev set
>>> at run-time.  Then for am335x[1]
>> 
>> With CONFIG_ENV_VARS_UBOOT_CONFIG set, there's a environment
>> variable named $board that indicates which board U-Boot is
>> running on (and other related variables). The idea is that the
>> user can:
>> 
>> fsload ${devtype} ${devnum}:${rootpart} ${fdt_addr_r}  \ 
>> /boot/${soc}-${board}.dtb
>> 
>> Now, CONFIG_ENV_VARS_UBOOT_CONFIG sets $board at compile-time,
>> since the config variable was created in the context on a U-Boot
>> that runs on a single board. However, I see no reason why we
>> can't maintain the user-visible results of this config option
>> even in other cases, so that everything is consistent to the
>> user
> 
> This works assuming that board maps to the device tree name.  A bit
> more below...

True. I've made sure of that for Tegra.

>> To that end, can we make CONFIG_ENV_VARS_UBOOT_RUNTIME_CONFIG set
>> $board instead of $board_name?
> 
> I had talked with Joe about this on IRC briefly and he seemed to
> be against overwriting "board"

Why is that? Perhaps alternatively, CONFIG_ENV_VARS_UBOOT_CONFIG
should set both board and a default value for board_name.

>> Adding $board_rev sounds like a very good idea; the filename in
>> the above command could be modified to:
>> 
>> ${soc}-${board}${boardrev}.dtb
> 
> Indeed, I know we'll need to do this in the future for one of the
> boards in this family.
> 
>> Or, do you think it'd be better for boot.scr to always reference 
>> $fdtfile, and so modify Tegra's default environment to derive
>> $fdtfile from $soc, $board, $boardrev?
> 
> Or uEnv.txt, but yes, fdtfile seems to be the standard variable
> name for the device tree to use.

Ah, I do see quite a few U-Boot config headers defining that.

> Doing something to derive this also means that custom development
> can be a bit easier too since you can just set fdtfile directly and
> work out the logic for auto-detection later.

Hmm. So I can't really put the following into Tegra's default environment:

"fdtfile=${soc}-${board}${boardrev}.dtb"

... since that would require any use of "${fdtfile}" in a command to
first expand fdtfile itself, then expand it a second time to pick up
the actual soc/board/... values, and that's not how the shell works.

That implies that e.g. Tegra's scriptboot (seed BOOTCMDS_COMMON in
include/configs/tegra-common-post.h) would need to do something like:

setenv fdtfile ${soc}-${board}${boardrev}.dtb

... before executing the loaded boot.scr. But then, how would it know
whether to do that, or whether the user wanted to override the fdtfile
value?

In theory, I could do the following in Tegra's default environment:

"fdtfile=" CONFIG_SYS_SOC "-" CONFIG_SYS_BOARD" ".dtb"

But then that wouldn't allow for the fdtfile value to vary at run-time
based on $boardrev.

> Also not hard-coding in the path makes it easier for whichever
> distro to fill in that logic.

By the path, do you mean "/boot", or the way the filename is
construced? "/boot" in my fsload example above was a quote from the
boot.scr I use, not something U-Boot provides, so I'd expect distros
could customize it to their needs. If you mean the filename - I'd
certainly advocate enforcing that U-Boot and the kernel board names
and DT filenames be in sync.

> 
>> (This general discussion might usefully happen on the
>> cross-distro mailing list too?)
> 
> Yes.  Where? :)

cross-distro at lists.linaro.org

  reply	other threads:[~2012-10-24 19:05 UTC|newest]

Thread overview: 16+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-10-24 17:28 [U-Boot] [PATCH 0/2] Standardize on run-time board ID variables Tom Rini
2012-10-24 17:28 ` [U-Boot] [PATCH 1/2] README: Document CONFIG_ENV_VARS_UBOOT_RUNTIME_CONFIG Tom Rini
2012-10-24 17:28 ` [U-Boot] [PATCH 2/2] am335x_evm: Add CONFIG_ENV_VARS_UBOOT_RUNTIME_CONFIG support Tom Rini
2012-10-24 19:21   ` Stephen Warren
2012-10-24 20:56     ` Tom Rini
2012-10-24 17:50 ` [U-Boot] [PATCH 0/2] Standardize on run-time board ID variables Stephen Warren
2012-10-24 18:41   ` Tom Rini
2012-10-24 19:05     ` Stephen Warren [this message]
2012-10-24 19:32       ` Tom Rini
2012-10-24 22:24         ` Stephen Warren
2012-10-26  7:45         ` Joe Hershberger
2012-10-29 15:15           ` Stephen Warren
2012-10-29 18:13             ` Tom Rini
2012-10-30  0:14               ` Joe Hershberger
2012-10-26  2:41       ` Simon Glass
2012-11-04 18:29 ` Tom Rini

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=50883BEC.3040505@wwwdotorg.org \
    --to=swarren@wwwdotorg.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox