public inbox for devicetree-spec@vger.kernel.org
 help / color / mirror / Atom feed
From: David Gibson <david@gibson.dropbear.id.au>
To: Kyle Bonnici <kylebonnici@hotmail.com>
Cc: "devicetree-spec@vger.kernel.org" <devicetree-spec@vger.kernel.org>
Subject: Re: Ranges - Intended use case
Date: Fri, 13 Feb 2026 16:13:47 +1100	[thread overview]
Message-ID: <aY6zC7IHuLTjqIEj@zatzit> (raw)
In-Reply-To: <7CB259ED-7AFC-4EE1-A926-54A5F6DCD97B@hotmail.com>

[-- Attachment #1: Type: text/plain, Size: 3322 bytes --]

On Thu, Feb 12, 2026 at 01:14:33PM +0000, Kyle Bonnici wrote:
> Hi 
> 
> I have been trying to understand how ranges should/should not be used.
> 
> Looking at the spec 
> 
> > The ranges property provides a means of defining a mapping or translation between the address space of the
> bus (the child address space) and the address space of the bus node’s parent (the parent address space).
> 
> This to me the spec leave some space for interpretation on if ranges should be used on just buses or not. Below are some examples to try to get a better understanding.
> 
> ```
> / {
> 	foo { // not a bus
> 		#address-cells = <1>;
> 		#size-cells = <1>;
> 		ranges; // does this ranges have any meaning?

An empty ranges property is a special case, which means there is an
identity mapping between parent and child.  In this case, this is
invalid - / has no #address-cells or #size-cells properties, meaning
the parent bus has the default values of 2 and 1 respectively.  Since
#address-cells is different from the child bus, you can't use an empty
ranges property here.

> 		bar@10 {
> 			reg<0x10 …> 
> 		};
> 	};
> };
> ```
> 
> ```
> / {
> 	foo { // not a bus

I'm not sure that there's really any hard distinction between a "bus"
and "not a bus".

> 		#address-cells = <1>;
> 		#size-cells = <1>;
> 		reg = <0x100 0x50>;
> 		ranges = <0x0 0x100 0x50>; // is this an intended use case?

It's a perfectly valid use case.  In this case again, the format is
invalid since the parent's #address-cells defaults to 2.  It should be:
	ranges = <0x0 0x0 0x100 0x50>;

> 		bar@10 {
> 			reg<0x10 …> // hence abs address is 0x110. 
> 		};
> 	};
> };
> ```
> 
> ```
> / {
> 	foo { // bus
> 		compatible = <simple-bus>;
> 		#address-cells = <1>;
> 		#size-cells = <1>;
> 		ranges; // this I understand to declare that children will have direct mapping
> 
> 		bar {
> 			ranges; // is this needed? Or is it implied that the foobar is in the same address space of bar?

It is needed.  If there is no ranges property, the child registers are
not directly accessible from the parent address space (they might be
indirectly accessible via registers in the bus bridge).

This is again technically invalid: bar has no #address-cells so it
defaults to 2, which differs from the parent.

> 			foobar@10 {
> 				reg<0x10 …>  // hence abs address is 0x10. 
> 			};
> 		};
> 	};
> };
> ```
> 
> ```
> / {
> 	soc { // bus
> 		compatible = <simple-bus>;
> 		#address-cells = <1>;
> 		#size-cells = <1>;
> 		ranges; // this I understand to declare that children will have direct mapping
> 
> 		flash@1000 {
> 			reg<0x1000 …> 
> 			ranges = <0x0 0x1000 …>;
> 		
> 			partitions {
> 				ranges;  // is this needed? Or is it implied that the partition1 is in the same address space of partitions?
> 
> 				partition1@10 {
> 					reg<0x10 …>   // hence abs address is 0x1010. 
> 				};
> 			};
> 		};
> 	};
> };
> ```
> 
> Looking forward to explanations on this topic to extend my understanding of devicetree
> 
> Regards
> Kyle

-- 
David Gibson (he or they)	| I'll have my music baroque, and my code
david AT gibson.dropbear.id.au	| minimalist, thank you, not the other way
				| around.
http://www.ozlabs.org/~dgibson

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 833 bytes --]

      parent reply	other threads:[~2026-02-13  6:14 UTC|newest]

Thread overview: 7+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-02-12 13:14 Ranges - Intended use case Kyle Bonnici
2026-02-12 15:33 ` Yao Zi
2026-02-12 19:24   ` Rob Herring
2026-02-13  5:16     ` David Gibson
2026-02-13  9:04     ` McCrae, Jamie
2026-02-14  2:02       ` David Gibson
2026-02-13  5:13 ` David Gibson [this message]

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=aY6zC7IHuLTjqIEj@zatzit \
    --to=david@gibson.dropbear.id.au \
    --cc=devicetree-spec@vger.kernel.org \
    --cc=kylebonnici@hotmail.com \
    /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