dtoc: Handle 'reg' properties with unusual sizes
authorSimon Glass <sjg@chromium.org>
Tue, 29 Aug 2017 20:15:51 +0000 (14:15 -0600)
committerSimon Glass <sjg@chromium.org>
Fri, 15 Sep 2017 11:27:47 +0000 (05:27 -0600)
At present dtoc assumes that all 'reg' properties have both an address and
a size. For I2C devices we do not have this. Adjust dtoc to cope.

Reported-by: Philipp Tomsich <philipp.tomsich@theobroma-systems.com>
Signed-off-by: Simon Glass <sjg@chromium.org>
Tested-by: Kever Yang <kever.yang@rock-chips.com>
tools/dtoc/dtoc_test_simple.dts
tools/dtoc/test_dtoc.py

index c7366862637a99b44a320e66dbc31cd53663d921..6afe674b1f571b69084527df2b2d9a3dd5873824 100644 (file)
@@ -9,6 +9,8 @@
  /dts-v1/;
 
 / {
+       #address-cells = <1>;
+       #size-cells = <1>;
        spl-test {
                u-boot,dm-pre-reloc;
                compatible = "sandbox,spl-test";
                compatible = "sandbox,spl-test.2";
        };
 
+       i2c@0 {
+               compatible = "sandbox,i2c-test";
+               u-boot,dm-pre-reloc;
+               #address-cells = <1>;
+               #size-cells = <0>;
+               pmic@9 {
+                       compatible = "sandbox,pmic-test";
+                       u-boot,dm-pre-reloc;
+                       reg = <9>;
+                       low-power;
+               };
+       };
 };
index 09cfddaaaa33aed810bcb1ec9e0d6352ae3d5e77..62460acb7c5c7acbbe3a26337a2516ddb2af7580 100644 (file)
@@ -121,6 +121,12 @@ class TestDtoc(unittest.TestCase):
             data = infile.read()
         self.assertEqual('''#include <stdbool.h>
 #include <libfdt.h>
+struct dtd_sandbox_i2c_test {
+};
+struct dtd_sandbox_pmic_test {
+\tbool\t\tlow_power;
+\tfdt64_t\t\treg[2];
+};
 struct dtd_sandbox_spl_test {
 \tbool\t\tboolval;
 \tunsigned char\tbytearray[3];
@@ -192,6 +198,24 @@ U_BOOT_DEVICE(spl_test4) = {
 \t.platdata_size\t= sizeof(dtv_spl_test4),
 };
 
+static struct dtd_sandbox_i2c_test dtv_i2c_at_0 = {
+};
+U_BOOT_DEVICE(i2c_at_0) = {
+\t.name\t\t= "sandbox_i2c_test",
+\t.platdata\t= &dtv_i2c_at_0,
+\t.platdata_size\t= sizeof(dtv_i2c_at_0),
+};
+
+static struct dtd_sandbox_pmic_test dtv_pmic_at_9 = {
+\t.low_power\t\t= true,
+\t.reg\t\t\t= {0x9, 0x0},
+};
+U_BOOT_DEVICE(pmic_at_9) = {
+\t.name\t\t= "sandbox_pmic_test",
+\t.platdata\t= &dtv_pmic_at_9,
+\t.platdata_size\t= sizeof(dtv_pmic_at_9),
+};
+
 ''', data)
 
     def test_phandle(self):