public inbox for devicetree-compiler@vger.kernel.org
 help / color / mirror / Atom feed
From: David Gibson <david-xT8FGy+AXnRB3Ne2BGzF6laj5H9X9Tb+@public.gmane.org>
To: Chan Kim <ckim-mINagvnPBMnWF1p7bDn8Kw@public.gmane.org>
Cc: devicetree-compiler-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
Subject: Re: A question about generated phandle during dtb=>dts conversion
Date: Wed, 3 Nov 2021 13:34:07 +1100	[thread overview]
Message-ID: <YYH1H1bPHWS+NAte@yekko> (raw)
In-Reply-To: <005e01d7cfc8$8034c5f0$809e51d0$@etri.re.kr>

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

On Tue, Nov 02, 2021 at 06:03:27PM +0900, Chan Kim wrote:
> Hello, all
> I extracted a dtb file from qemu execution (arm virt machine) and converted
> the dtb file to dts file using dtc.
> But for some node that is referenced by other nodes, the phandle is
> generated like “phandle = <0x8000>” as shown below.

Note that the value is generated by qemu and is in the dtb.  It's not
generated by dtc during decompilation.

> apb-pclk {
>         phandle = <0x8000>;
>         clock-output-names = "clk24mhz";
>         clock-frequency = <0x16e3600>;
>         #clock-cells = <0x00>;
>         compatible = "fixed-clock";
>     };
> 
> And another node is using this phandle like this. (the clocks is the phandle
> for the apb-pclk above.)
> 
> pl061@9030000 {
>         phandle = <0x8003>;
>         clock-names = "apb_pclk";
>         clocks = <0x8000>;
>         interrupts = <0x00 0x07 0x04>;
>         gpio-controller;
>         #gpio-cells = <0x02>;
>         compatible = "arm,pl061\0arm,primecell";
>         reg = <0x00 0x9030000 0x00 0x1000>;
>     };
> 
> When I convert the dts back to the dtb, dtc doesn’t understand the phandle
> and complains that it is not a phandle referenece.
> 
> dts.dts:276.3-21: Warning (clocks_property): /pl061@9030000:clocks: cell 0
> is not a phandle reference
> 
> I’ve checked event with this warning, the phandle reference is being
> preserved through out the procedure.
> So, if I want to extract a dtb and convert it to dts, edit some and convert
> it back to dtb, how can I prevent this kind of phandle warning? 
> And why doesn't dtc add labels to the referenced nodes and let other nodes
> use that label as phandle?

The short answer is because dtc doesn't know it's a phandle.  dtb is
not a self-describing format - the properties are just bytestrings,
and you need to know what you're expecting in there in order to decode
them (that's what dt bindings give you).

So the only way that dtc could know that those 4 bytes in the 'clocks'
property are actually a phandle is by specifically knowing about the
"clocks" property.  dtc has *some* knowledge of specific properties in
the checks, but it's far from complete (and complete knowledge of the
bindings is pretty much out of scope for dtc).

But.. for the normal case of writing a dts file directly, it's useful
to get a warning if you don't use a reference somewhere you probably
should (anywhere that's a phandle), so dtc does check that.

So, I think basically in just the same way that you might expect
generated or decompiled code to be rather messy and generate compiler
warnings, so a decompiled dts might have messy things and generate
warnings.  You can switch off the warnings explicitly if you need
(-Wno-clocks_property in this case).

-- 
David Gibson			| 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 --]

  reply	other threads:[~2021-11-03  2:34 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-11-02  9:03 A question about generated phandle during dtb=>dts conversion Chan Kim
2021-11-03  2:34 ` David Gibson [this message]
2021-11-03  9:06   ` Chan Kim
2021-11-05  3:57     ` 'David Gibson'

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=YYH1H1bPHWS+NAte@yekko \
    --to=david-xt8fgy+axnrb3ne2bgzf6laj5h9x9tb+@public.gmane.org \
    --cc=ckim-mINagvnPBMnWF1p7bDn8Kw@public.gmane.org \
    --cc=devicetree-compiler-u79uwXL29TY76Z2rM5mHXA@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