DTS question

David Gibson david at gibson.dropbear.id.au
Wed Sep 3 09:42:07 EST 2008


On Tue, Sep 02, 2008 at 03:56:30PM -0600, Gary Thomas wrote:
> Following on with my RTC problem, I cut&pasted this from
> the TQM5200 dts file:
>                 i2c at 3d40 {
>                         #address-cells = <1>;
>                         #size-cells = <0>;
>                         compatible = "fsl,mpc5200-i2c","fsl-i2c";
>                         reg = <0x3d40 0x40>;
>                         interrupts = <2 16 0>;
>                         interrupt-parent = <&mpc5200_pic>;
>                         fsl5200-clocking;
>
>                          rtc at 68 {
>                                 device_type = "rtc";
>                                 compatible = "dallas,ds1307";
>                                 reg = <0x68>;
>                         };
>                 };
>
> However, the dts file I started with had this (*mine*):
> 		i2c at 3d40 {
> 			#address-cells = <1>;
> 			#size-cells = <0>;
> 			compatible = "fsl,mpc5200-i2c","fsl-i2c";
> 			cell-index = <1>;
> 			reg = <3d40 40>;
> 			interrupts = <2 10 0>;
> 			interrupt-parent = <&mpc5200_pic>;
> 			fsl5200-clocking;
> 		};
>
> Notice the different mix of hex (0xNNN) and implied hex values.
> This is really confusing to me.  Even more so when I added the
> RTC snippet cut directly from the TQM5200 file:
>
>                          rtc at 68 {
>                                 device_type = "rtc";
>                                 compatible = "dallas,ds1307";
>                                 reg = <0x68>;
>                         };
>
> This yielded a syntax error when merged with my platform dts.
> When I changed the 'reg=<0x68>' to 'reg=<68>', the syntax error
> went away & it worked perfectly.
>
> What gives?  Why is explicit hex sometimes an error and sometimes not?

Because we changed the format at one point.  Originally (the "dts-v0"
format) it was implicitly hex everywhere, which turned out to be a
mistake.  So we introduced the new dts-v1 format which uses C-style
literals.  New-style files are marked with a /dts-v1/; token at the
top of the file.

> Is the format of this file documented anywhere (I've not found it)?

It's in Documentation/dts-format.txt in the dtc tree.  I don't think
that's been included in the version of dtc in the kernel tree, though,
so you'll need to download the standalone dtc.

-- 
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



More information about the Linuxppc-dev mailing list