Thread (13 messages) 13 messages, 4 authors, 2015-11-13

[PATCH 1/3] devicetree: bindings: Document qcom board compatible format

From: robh@kernel.org (Rob Herring)
Date: 2015-11-13 01:38:48
Also in: linux-arm-msm, linux-devicetree, lkml

On Thu, Nov 12, 2015 at 6:11 PM, Stephen Boyd [off-list ref] wrote:
On 11/12, Rob Herring wrote:
quoted
On Thu, Nov 12, 2015 at 1:44 PM, Stephen Boyd [off-list ref] wrote:
quoted
On 11/12, Rob Herring wrote:
quoted
On Mon, Oct 26, 2015 at 02:25:10PM -0700, Stephen Boyd wrote:
quoted
quoted
quoted
+Some qcom based bootloaders identify the dtb blob based on a set of
+device properties like SoC, platform, PMIC, and revisions of those components.
+To support this scheme, we encode this information into the board compatible
+string.
Why does all this need to be a single property?
Because the different vendor properties were rejected by arm-soc
maintainers and the board compatible string was suggested as the
place to put such information.
I'm surprised an 80+ character compatible stream is okay. The parts
giving me heartburn here are not mentioned in the previous discussion
nor the QCDT format.

As presented previously I agree with the push back. However, we could
do standard properties for SOC and board versions rather than
something vendor specific. Then the existing kernel support for
versions could use it. We could also just make this compatible string
formatting standard for more than just QC boards.
Some standard properties for these things sounds good to me.
What's the existing kernel support for versions though? Is that
just compatible string matching, or something else?
The soc_device stuff (and arm32 cpuinfo has a h/w version). Today I
think users are pulling version info from h/w registers, but if you
don't have h/w registers, then getting it from DT would make sense.

quoted
For mb, can't the tool just parse the memory node to get ram size
rather than parsing the compatible.
Sure. Right now the bootloader injects the memory information
during boot. I think it should work if we already have the memory
information there. I don't have any usage of mb at the moment
though, so if you want we can drop this field until a time that
we need it.
If the bootloader injects it, then how do you know what to put into
the compatible string?
quoted
quoted
quoted
quoted
+The 'panel' element must be one of the following strings:
+
+   720p
+   fWVGA
+   hd
+   qHD
How is this used?
I believe this was added so that we could have different dtbs for
devices that have different panels on them. I'm not sure this is
still used though. It could be legacy.
Dealing with multiple panels is fairly common. I think you could use
an alias to the panel node and match using its compatible or
resolution.
So dtbtool will need to resolve the alias and then figure out
which type of panel it is from compatible? Ok. I'd rather not
write that code unless it's needed, so I hope this field is not
used either.
Certainly better to figure out if it is needed first.
quoted
quoted
quoted
quoted
+The 'boot' element must be one of the following strings:
+
+   emmc_sdc1
+   ufs
+
Again, perhaps an alias would work here.
quoted
quoted
quoted
+The 'pmic' element must be one of the following strings:
+
+   pm8841
+   pm8019
+   pm8110
+   pma8084
+   pmi8962
+   pmd9635
+   pm8994
+   pmi8994
+   pm8916
+   pm8004
+   pm8909
+
+The 'pmic' element is specified in order of ascending USID. The PMIC in USID0
+goes first, and then USID2, USID4, and finally USID6. Up to four PMICs may be
+specified and no holes in the USID number space are allowed.
What is USID?
USID is Unique Slave IDentifier. It's an SPMI concept.
Okay, then please say "SPMI USID" or something.
Ok.

In attempts to shorten the compatible string, we could use
aliases for the USIDs too. Then it should be possible to pull out
the information from the compatible fields of the PMIC nodes to
construct the PMIC part of the string. I'd like to avoid having
to go down the path of / -> soc -> spmi controller -> usidx,y,z
and just go straight to the usid node from a phandle.
Yes. I was willing to draw the line after the PMIC, but seems Olof is less so.
With that in mind, right now I'm using fdtget from python to grab
the compatible string and parse it with a regex. If things need
to become more complicated to start following phandles, etc. are
there some python bindings to libfdt somewhere?
Not that I'm aware of. C is the only language you need. ;)

Rob
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help