devicetree-compiler.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Frederik Lotter <frederik.lotter-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
To: Frank Rowand
	<frowand.list-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>,
	david-xT8FGy+AXnRB3Ne2BGzF6laj5H9X9Tb+@public.gmane.org,
	devicetree-compiler-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
Subject: Re: DTB file appears to have corrupted node property according to fdtdump and kernel?
Date: Fri, 3 Feb 2017 10:35:34 +0200	[thread overview]
Message-ID: <CAPBAm7TACVa0des8fBKMdAvGAPjbeQ-KB7V33XceNxYDTmRBoQ@mail.gmail.com> (raw)
In-Reply-To: <5893EABE.10009-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>

On 3 February 2017 at 04:28, Frank Rowand <frowand.list-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> wrote:
> On 02/02/17 09:53, Frederik Lotter wrote:
>> Hi,
>>
>> I have a particular device tree node property which refuses to reach
>> the Linux kernel without corruption:
>>
>>  interrupts = <0xc 0x1>;
>>
>>>From the extract below from the preprocessed file:
>>
>>    i2c1: i2c@f0018000 {
>>     compatible = "atmel,at91sam9x5-i2c";
>>     reg = <0xf0018000 0x4000>;
>>     interrupts = <0x13 0x4 0x6>;
>>     dmas = <0x2 0x2 0x9 0x2 0x2 0xa>;
>>     dma-names = "tx", "rx";
>>     pinctrl-names = "default";
>>     pinctrl-0 = <0x12>;
>>     #address-cells = <0x1>;
>>     #size-cells = <0x0>;
>>     clocks = <0x13>;
>>     status = "okay";
>>     clock-frequency = <0x61a80>;
>>     atmel,recover-scl = <0x14 0x1b 0x0>;
>>     atmel,recover-sda = <0x14 0x1a 0x0>;
>>
>>     lsm6ds3@6b {
>>      compatible = "st,lsm6ds3";
>>      reg = <0x6b>;
>>      pinctrl-names = "default";
>>      pinctrl-0 = <0x15>;
>>      interrupt-parent = <0x16>;
>>      interrupts = <0xc 0x1>;
>>      interrupt-names = "lsm6ds_int1";
>>      st,drdy-int-pin = <0x1>;
>>     };
>>    };
>>
>> Version: DTC 1.4.0 (ubuntu package) for manual testing.
>>
>> (1)  fdtdump mix6000.dtb | grep interrupts
>>
>> Thsi returns the interrupt line as:
>>
>> interrupts = <0x0000000c 0x000001d0>;
>>
>> (2) In the linux kernel the of_platform_populate() reads the same property as:
>>
>> 0x0000000c 0x00000000 with lenth=8
>>
>> (3) If I take the DTS file and manually compile the DTB with the dtc
>> compiler, and convert it back to the DTS the correct values are shown
>>
>> (4) If I change the interrupt value:
>>
>> interrupts = <0xc 0x0>;
>>
>> and I do:
>>
>> cat <file-old.dtb> | od -t x1 > file1.txt
>> cat <file-mod.dtb> | od -t x1 > file2.txt
>> kdiff3 file1.txt file2.txt
>>
>> I actually see a single hex byte change from 0x1 to 0x0.
>>
>> If it was not for the faulty fdtdump output (in conjuection with the
>> Linux kernel zero at the same place) I would have said its definately
>> a kernel issue.
>>
>> Any ideas?
>
> You can see what the dtb looked like when given to the kernel. Take
> /sys/firmware/fdt and decompile that with dtc.
>
> If it already looks bad at this point, does your bootloader have any
> way to look at the dtb?
>
> -Frank

Thank you for the hint - this made me discover a very embarrassing
mistake on my behalf.

Our system is complex and has two boot paths (one from eMMC and one
from SDCARD), each with their own DT file. I was testing on the SDCARD
environment and modifying the eMMC DT file. The SDCARD DT file
happened to have the second property on the "interrupts" field hard
coded as zero from a legacy device we had there.

Thank you for your time to answer me. Much appreciated.

      parent reply	other threads:[~2017-02-03  8:35 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-02-02 17:53 DTB file appears to have corrupted node property according to fdtdump and kernel? Frederik Lotter
     [not found] ` <CAPBAm7QSB_-LrAwouztLYLaC0mWF2V4QQ_Yz98p6jVw07SfT6Q-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2017-02-02 22:56   ` David Gibson
2017-02-03  2:28   ` Frank Rowand
     [not found]     ` <5893EABE.10009-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
2017-02-03  8:35       ` Frederik Lotter [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=CAPBAm7TACVa0des8fBKMdAvGAPjbeQ-KB7V33XceNxYDTmRBoQ@mail.gmail.com \
    --to=frederik.lotter-re5jqeeqqe8avxtiumwx3w@public.gmane.org \
    --cc=david-xT8FGy+AXnRB3Ne2BGzF6laj5H9X9Tb+@public.gmane.org \
    --cc=devicetree-compiler-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
    --cc=frowand.list-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.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).