]> git.dujemihanovic.xyz Git - u-boot.git/commitdiff
dm: Fix error handling for dev_read_addr_ptr
authorSean Anderson <seanga2@gmail.com>
Wed, 24 Jun 2020 10:41:13 +0000 (06:41 -0400)
committerAndes <uboot@andestech.com>
Wed, 1 Jul 2020 07:01:21 +0000 (15:01 +0800)
dev_read_addr_ptr had different semantics depending on whether OF_LIVE was
enabled. This patch converts both implementations to return NULL on error,
and converts all call sites which check for FDT_ADDR_T_NONE to check for
NULL instead. This patch also removes the call to map_physmem, since we
have dev_remap_addr* for those semantics.

Signed-off-by: Sean Anderson <seanga2@gmail.com>
Reviewed-by: Bin Meng <bmeng.cn@gmail.com>
Reviewed-by: Simon Glass <sjg@chromium.org>
drivers/clk/imx/clk-imx8mp.c
drivers/core/read.c
drivers/pinctrl/broadcom/pinctrl-bcm283x.c
drivers/pinctrl/mediatek/pinctrl-mtk-common.c
include/dm/read.h

index 3d7aebb8e56f02e1ad59a28a90569c9a8f1071cb..124138cf5129dd016b00f9bd600541877a4ac777 100644 (file)
@@ -282,7 +282,7 @@ static int imx8mp_clk_probe(struct udevice *dev)
        clk_dm(IMX8MP_SYS_PLL2_1000M, imx_clk_fixed_factor("sys_pll2_1000m", "sys_pll2_out", 1, 1));
 
        base = dev_read_addr_ptr(dev);
-       if (base == (void *)FDT_ADDR_T_NONE)
+       if (!base)
                return -EINVAL;
 
        clk_dm(IMX8MP_CLK_A53_SRC, imx_clk_mux2("arm_a53_src", base + 0x8000, 24, 3, imx8mp_a53_sels, ARRAY_SIZE(imx8mp_a53_sels)));
index 85b3b7a5adb7b0bb13b98a2d6772b71babebaa29..8bb456bc3f01254ac7de66bc6824e291b02854cd 100644 (file)
@@ -167,7 +167,7 @@ void *dev_read_addr_ptr(const struct udevice *dev)
 {
        fdt_addr_t addr = dev_read_addr(dev);
 
-       return (addr == FDT_ADDR_T_NONE) ? NULL : map_sysmem(addr, 0);
+       return (addr == FDT_ADDR_T_NONE) ? NULL : (void *)(uintptr_t)addr;
 }
 
 void *dev_remap_addr(const struct udevice *dev)
index f44af6cf9ad66de4c916fe671550221cb4ee07eb..c22d534da9ad6cd0d4ecd7a3ab7187d28b84edc0 100644 (file)
@@ -117,7 +117,7 @@ int bcm283x_pinctl_probe(struct udevice *dev)
        }
 
        priv->base_reg = dev_read_addr_ptr(dev);
-       if (priv->base_reg == (void *)FDT_ADDR_T_NONE) {
+       if (!priv->base_reg) {
                debug("%s: Failed to get base address\n", __func__);
                return -EINVAL;
        }
index 5fdc150295e459e210747235e4369190ccc10c34..e8187a3780889677052007702deef2b6f5005d65 100644 (file)
@@ -631,7 +631,7 @@ int mtk_pinctrl_common_probe(struct udevice *dev,
        int ret;
 
        priv->base = dev_read_addr_ptr(dev);
-       if (priv->base == (void *)FDT_ADDR_T_NONE)
+       if (!priv->base)
                return -EINVAL;
 
        priv->soc = soc;
index 3711386f5136e277a557552e6abf11eca0c1537a..f02ec9595413556654641a240c133872baa940ac 100644 (file)
@@ -799,7 +799,9 @@ static inline fdt_addr_t dev_read_addr(const struct udevice *dev)
 
 static inline void *dev_read_addr_ptr(const struct udevice *dev)
 {
-       return devfdt_get_addr_ptr(dev);
+       void *addr = devfdt_get_addr_ptr(dev);
+
+       return ((fdt_addr_t)(uintptr_t)addr == FDT_ADDR_T_NONE) ? NULL : addr;
 }
 
 static inline fdt_addr_t dev_read_addr_pci(const struct udevice *dev)