devicetree-spec.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Sascha Hauer <s.hauer@pengutronix.de>
To: Krzysztof Kozlowski <krzk@kernel.org>
Cc: Ahmad Fatoum <a.fatoum@pengutronix.de>,
	"devicetree@vger.kernel.org" <devicetree@vger.kernel.org>,
	Rob Herring <robh@kernel.org>,
	Krzysztof Kozlowski <krzk+dt@kernel.org>,
	Conor Dooley <conor+dt@kernel.org>,
	devicetree-spec@vger.kernel.org,
	"kernel@pengutronix.de" <kernel@pengutronix.de>,
	quentin.schulz@cherry.de
Subject: Re: SoC-specific device tree aliases?
Date: Mon, 17 Nov 2025 11:34:12 +0100	[thread overview]
Message-ID: <aRr6JLMplFVeHcjj@pengutronix.de> (raw)
In-Reply-To: <8ce701c9-6c8d-4b3e-8706-760b8aba89fc@kernel.org>

On Mon, Nov 17, 2025 at 10:52:49AM +0100, Krzysztof Kozlowski wrote:
> On 17/11/2025 09:26, Sascha Hauer wrote:
> > On Mon, Nov 17, 2025 at 08:38:48AM +0100, Krzysztof Kozlowski wrote:
> >> On 13/11/2025 09:28, Ahmad Fatoum wrote:
> >>> Hello,
> >>>
> >>> With /chosen/bootsource now part of dt-schema, I would like to raise a
> >>> related point: The need for SoC-specific device tree aliases.
> >>>
> >>> For many SoCs, there is a canonical numbering for peripherals; it's used
> >>> in the datasheet and BootROMs often makes use of it at runtime to report
> >>> the bootsource as a pair:
> >>>
> >>>   - One value to enumerate type of boot medium (e.g. mmc, spi-nor..)
> >>>   - Another value that describes which instance (e.g. SDHC1, SPI3, ...)
> >>>
> >>> Some examples, where this is the case, are AT91, STM32MP or i.MX.
> >>>
> >>> barebox has traditionally used /aliases to translate BootROM information
> >>> to a device tree node to fixup /chosen/bootsource.
> >>>
> >>> This doesn't work out for many newer SoC support, because of different
> >>> expectations: For upstream, aliases are relevant to a board, while
> >>> barebox traditionally expected them to be SoC-specific (because they
> >>> used to be on i.MX, probably).
> >>
> >> Please state exactly the problem - you have aliases in DTS but
> >> bootsource in DTSI? Then that's clearly mixup - you need to define them
> >> in the same place. Aliases are in DTS (I see here other thread on that),
> >> so stdout-path is also in DTS.
> >>
> >> Or you don't have bootsource in DTSI at all because barebox invents it
> >> regardless of actual aliases? Then shouldn't this be an obvious issue?
> >> You cannot have barebox as second source of aliases.
> >>
> >>>
> >>> To accommodate this, barebox nowadays extends upstream device trees with
> >>> /chosen/barebox,bootsource-${alias} properties, which can be used as
> >>> translation table instead of aliases.
> >>>
> >>> This solves the issue, but there is occasional breakage when upstream
> >>> decides to remove aliases from the SoC DTSI and move them into the
> >>> boards until barebox is made to add the /chosen/barebox, overrides.
> >>>
> >>> As described above, I think the data sheet numbering is pretty much an
> >>> aspect of the hardware and it has a place in the upstream SoC DTSI.
> >>>
> >>>
> >>> So what are the thoughts on adding /soc/aliases or some other top-level
> >>> node to hold this information?
> >>> Or would a h"ardware-label" property or similar be more tenable?
> >>
> >> So you want to map full node path to some alias, so later you can map
> >> that alias back to full node path, right? This sounds like quite
> >> redundant information in DTS just to avoid impact of node reshuffling
> >> (like unit address changes). In DTS-source-code realm, we solved it with
> >> phandles. Maybe this would help here?
> > 
> > We want aliases that map from the hardware numbers of a device as used
> > in the reference manuals to the actual device nodes. One reason why we
> > need it is to get the device node a SoC has booted from. Many SoCs have
> > registers which describe <bootsource> <instance number>. We want to get
> > the device node from that information.
> 
> Ah, so you don't map from full node path but from some value in register
> and you want to store these values as alias.

Not sure if we mean the same when you say "store these values as alias".

What we want to do is a SoC dtsi providing something like:

/soc-aliases {
	mmc0 = &sdhci1;
	mmc1 = &sdhci2;
	mmc2 = &sdhci3;
};

With the mmc<X> numbers being the instance numbers from the reference
manual. We can then read the instance number from the SoC registers and
get the device node from that number by looking it up in the aliases.

We use this for example to load the kernel from the device barebox
itself has booted from.

> I see i.MX gives here such
> information but that might be the only user. Samsung AFAIK only gives
> the order of boot device choices, not which one was chosen, for Qcom I
> could not find at all.

Other examples include TI Omap/K3, AT91, Rockchip SoCs, STM32MP1.

Sascha

-- 
Pengutronix e.K.                           |                             |
Steuerwalder Str. 21                       | http://www.pengutronix.de/  |
31137 Hildesheim, Germany                  | Phone: +49-5121-206917-0    |
Amtsgericht Hildesheim, HRA 2686           | Fax:   +49-5121-206917-5555 |

  reply	other threads:[~2025-11-17 10:34 UTC|newest]

Thread overview: 18+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2025-11-13  8:28 SoC-specific device tree aliases? Ahmad Fatoum
2025-11-13 18:04 ` Rob Herring
2025-11-13 19:17   ` Doug Anderson
2025-11-13 20:24     ` Heiko Stübner
2025-11-14  9:13   ` Ahmad Fatoum
2025-11-17  7:38 ` Krzysztof Kozlowski
2025-11-17  8:26   ` Sascha Hauer
2025-11-17  9:52     ` Krzysztof Kozlowski
2025-11-17 10:34       ` Sascha Hauer [this message]
2025-11-17 10:41         ` Krzysztof Kozlowski
2025-11-17 12:56           ` Marc Kleine-Budde
2025-11-17 13:18             ` Krzysztof Kozlowski
2025-11-17 14:52               ` Sascha Hauer
2025-11-17 14:57                 ` Krzysztof Kozlowski
2025-11-17 15:23                   ` Sascha Hauer
2025-11-17 15:44                     ` Krzysztof Kozlowski
2025-11-17 16:06                       ` Rob Herring
2025-11-17 16:29                         ` Krzysztof Kozlowski

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=aRr6JLMplFVeHcjj@pengutronix.de \
    --to=s.hauer@pengutronix.de \
    --cc=a.fatoum@pengutronix.de \
    --cc=conor+dt@kernel.org \
    --cc=devicetree-spec@vger.kernel.org \
    --cc=devicetree@vger.kernel.org \
    --cc=kernel@pengutronix.de \
    --cc=krzk+dt@kernel.org \
    --cc=krzk@kernel.org \
    --cc=quentin.schulz@cherry.de \
    --cc=robh@kernel.org \
    /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;
as well as URLs for NNTP newsgroup(s).