[U-Boot] Regression: gpio: pca953x_gpio: Make live-tree compatible

Martin Fuzzey mfuzzey at parkeon.com
Wed Feb 28 18:27:21 UTC 2018


Hi,

since this commit:

commit f62ca2cd2ab8171f603960da9203ceb6ee8a1efd
Author: Mario Six <mario.six at gdsys.cc>
Date:   Mon Jan 15 11:07:45 2018 +0100

     gpio: pca953x_gpio: Make live-tree compatible


I am getting the error message "__of_translate_address: Bad cell count 
for pcal6524 at 1"

I don't think the patch

-       addr = fdtdec_get_int(gd->fdt_blob, dev_of_offset(dev), "reg", 0);
+       addr = dev_read_addr(dev);

is correct since it replaces a simple lookup of the value "reg" property 
with an attempted translation to a CPU address (which fails for I2C)

This does not cause the driver probe to fail since dev_read_addr() 
returns FDT_ADDR_T_NONE (== -1)  and is followed by

     if (addr == 0)
         return -ENODEV;

     info->addr = addr;

Although addr is stored in the driver data the only thing it is used for 
is to build the bank name

     snprintf(name, sizeof(name), "gpio@%x_", info->addr);

I'm not even sure that using the value of the "reg" property as before 
is really a good idea - what happens if we have multiple chips with same 
address on seperate busses?

Maybe it would be better to use the DT node name? But would that break 
existing configurations by renaming the device?


Regards,

Martin



More information about the U-Boot mailing list