Hi, On Fri, Jan 17, 2020 at 3:50 PM Douglas Anderson <dianders@xxxxxxxxxxxx> wrote: > > On many arm64 qcom device trees, running `make dtbs_check` yells: > > timer@17c20000: #size-cells:0:0: 1 was expected > > It appears that someone was trying to assert the fact that sub-nodes > describing frames would never have a size that's more than 32-bits > big. That does indeed appear to be true for all cases I could find. > > Currently many arm64 qcom device tree files have a #address-cells and > about in commit bede7d2dc8f3 ("arm64: dts: qcom: sdm845: Increase > address and size cells for soc"). That means the only way we can > shrink them down is to use a non-empty ranges. > > Since forever it has said in "writing-bindings.txt" to "DO use > non-empty 'ranges' to limit the size of child buses/devices". I guess > we should start listening to it. > > I believe (but am not certain) that this also means that we should use > "ranges" to simplify the "reg" of our sub devices by specifying an > offset. Let's update the example in the bindings to make this > obvious. > > Signed-off-by: Douglas Anderson <dianders@xxxxxxxxxxxx> > --- > See: > https://lore.kernel.org/r/20191212113540.7.Ia9bd3fca24ad34a5faaf1c3e58095c74b38abca1@changeid > > ...for the patch that sparked this change. > > Changes in v2: > - Fixed my typo 0xf0000000 => 0xf0001000 > > .../devicetree/bindings/timer/arm,arch_timer_mmio.yaml | 10 +++++----- > 1 file changed, 5 insertions(+), 5 deletions(-) > > diff --git a/Documentation/devicetree/bindings/timer/arm,arch_timer_mmio.yaml b/Documentation/devicetree/bindings/timer/arm,arch_timer_mmio.yaml > index b3f0fe96ff0d..b92d958d7541 100644 > --- a/Documentation/devicetree/bindings/timer/arm,arch_timer_mmio.yaml > +++ b/Documentation/devicetree/bindings/timer/arm,arch_timer_mmio.yaml > @@ -99,22 +99,22 @@ examples: > compatible = "arm,armv7-timer-mem"; > #address-cells = <1>; > #size-cells = <1>; > - ranges; > + ranges = <0 0xf0001000 0x1000>; > reg = <0xf0000000 0x1000>; > clock-frequency = <50000000>; > > - frame@f0001000 { > + frame@0 { > frame-number = <0>; > interrupts = <0 13 0x8>, > <0 14 0x8>; > - reg = <0xf0001000 0x1000>, > - <0xf0002000 0x1000>; > + reg = <0x0000 0x1000>, > + <0x1000 0x1000>; > }; > > frame@f0003000 { > frame-number = <1>; > interrupts = <0 15 0x8>; > - reg = <0xf0003000 0x1000>; > + reg = <0x2000 0x1000>; Wow, how many stupid mistakes can I make in one small change? :( I forgot to change the node name. v3 is now at: https://lore.kernel.org/r/20200117155303.v3.1.I7dbd712cfe0bdf7b53d9ef9791072b7e9c6d3c33@changeid -Doug