mirror of
https://xff.cz/git/u-boot/
synced 2025-09-27 13:31:16 +02:00
gpio: s5p: call: dev_get_addr() instead of fdtdec_get_addr()
After rework in lib/fdtdec.c, the function fdtdec_get_addr() doesn't work for nodes with #size-cells property set to 0. To get GPIO's 'reg' property, the code should use one of: fdtdec_get_addr_size_auto_no/parent() function. Fortunately dm core provides a function to get the property. This commit reworks function gpio_exynos_bind(), to properly use dev_get_addr() for GPIO device. This prevents setting a wrong base register for Exynos GPIOs. Tested on: Odroid U3/X2, Trats, Trats2, Odroid XU3, Snow (by Simon). Signed-off-by: Przemyslaw Marczak <p.marczak@samsung.com> Acked-by: Stephen Warren <swarren@nvidia.com> Acked-by: Simon Glass <sjg@chromium.org> Tested-by: Simon Glass <sjg@chromium.org>
This commit is contained in:
committed by
Simon Glass
parent
ff0a6358b6
commit
6f183e869e
@@ -341,18 +341,22 @@ static int gpio_exynos_bind(struct udevice *parent)
|
|||||||
plat = calloc(1, sizeof(*plat));
|
plat = calloc(1, sizeof(*plat));
|
||||||
if (!plat)
|
if (!plat)
|
||||||
return -ENOMEM;
|
return -ENOMEM;
|
||||||
reg = fdtdec_get_addr(blob, node, "reg");
|
|
||||||
if (reg != FDT_ADDR_T_NONE)
|
|
||||||
bank = (struct s5p_gpio_bank *)((ulong)base + reg);
|
|
||||||
plat->bank = bank;
|
|
||||||
plat->bank_name = fdt_get_name(blob, node, NULL);
|
|
||||||
debug("dev at %p: %s\n", bank, plat->bank_name);
|
|
||||||
|
|
||||||
|
plat->bank_name = fdt_get_name(blob, node, NULL);
|
||||||
ret = device_bind(parent, parent->driver,
|
ret = device_bind(parent, parent->driver,
|
||||||
plat->bank_name, plat, -1, &dev);
|
plat->bank_name, plat, -1, &dev);
|
||||||
if (ret)
|
if (ret)
|
||||||
return ret;
|
return ret;
|
||||||
|
|
||||||
dev->of_offset = node;
|
dev->of_offset = node;
|
||||||
|
|
||||||
|
reg = dev_get_addr(dev);
|
||||||
|
if (reg != FDT_ADDR_T_NONE)
|
||||||
|
bank = (struct s5p_gpio_bank *)((ulong)base + reg);
|
||||||
|
|
||||||
|
plat->bank = bank;
|
||||||
|
|
||||||
|
debug("dev at %p: %s\n", bank, plat->bank_name);
|
||||||
}
|
}
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
|
Reference in New Issue
Block a user