From: Masahiro Yamada Date: Thu, 19 Apr 2018 03:14:03 +0000 (+0900) Subject: regmap: change regmap_init_mem() to take ofnode instead udevice X-Git-Tag: v2018.07-rc1~241 X-Git-Url: https://git.sur5r.net/?a=commitdiff_plain;h=d35812368a59;p=u-boot regmap: change regmap_init_mem() to take ofnode instead udevice Currently, regmap_init_mem() takes a udevice. This requires the node has already been associated with a device. It prevents syscon/regmap from behaving like those in Linux. Change the first argumenet to take a device node. Signed-off-by: Masahiro Yamada Acked-by: Neil Armstrong Reviewed-by: Simon Glass --- diff --git a/arch/arm/mach-aspeed/ast2500/sdram_ast2500.c b/arch/arm/mach-aspeed/ast2500/sdram_ast2500.c index 63df5f2e86..9498cbc92d 100644 --- a/arch/arm/mach-aspeed/ast2500/sdram_ast2500.c +++ b/arch/arm/mach-aspeed/ast2500/sdram_ast2500.c @@ -391,7 +391,7 @@ static int ast2500_sdrammc_ofdata_to_platdata(struct udevice *dev) struct regmap *map; int ret; - ret = regmap_init_mem(dev, &map); + ret = regmap_init_mem(dev_ofnode(dev), &map); if (ret) return ret; diff --git a/drivers/core/regmap.c b/drivers/core/regmap.c index 0f787ab4e1..fabcc5f53a 100644 --- a/drivers/core/regmap.c +++ b/drivers/core/regmap.c @@ -50,7 +50,7 @@ int regmap_init_mem_platdata(struct udevice *dev, fdt_val_t *reg, int count, return 0; } #else -int regmap_init_mem(struct udevice *dev, struct regmap **mapp) +int regmap_init_mem(ofnode node, struct regmap **mapp) { struct regmap_range *range; struct regmap *map; @@ -58,14 +58,13 @@ int regmap_init_mem(struct udevice *dev, struct regmap **mapp) int addr_len, size_len, both_len; int len; int index; - ofnode node = dev_ofnode(dev); struct resource r; - addr_len = dev_read_simple_addr_cells(dev->parent); - size_len = dev_read_simple_size_cells(dev->parent); + addr_len = ofnode_read_simple_addr_cells(ofnode_get_parent(node)); + size_len = ofnode_read_simple_size_cells(ofnode_get_parent(node)); both_len = addr_len + size_len; - len = dev_read_size(dev, "reg"); + len = ofnode_read_size(node, "reg"); if (len < 0) return len; len /= sizeof(fdt32_t); @@ -86,7 +85,7 @@ int regmap_init_mem(struct udevice *dev, struct regmap **mapp) range->size = r.end - r.start + 1; } else { range->start = fdtdec_get_addr_size_fixed(gd->fdt_blob, - dev_of_offset(dev), "reg", index, + ofnode_to_offset(node), "reg", index, addr_len, size_len, &sz, true); range->size = sz; } diff --git a/drivers/core/syscon-uclass.c b/drivers/core/syscon-uclass.c index 96408dea7e..62ba462158 100644 --- a/drivers/core/syscon-uclass.c +++ b/drivers/core/syscon-uclass.c @@ -40,7 +40,7 @@ static int syscon_pre_probe(struct udevice *dev) return regmap_init_mem_platdata(dev, plat->reg, ARRAY_SIZE(plat->reg), &priv->regmap); #else - return regmap_init_mem(dev, &priv->regmap); + return regmap_init_mem(dev_ofnode(dev), &priv->regmap); #endif } diff --git a/drivers/phy/meson-gxl-usb2.c b/drivers/phy/meson-gxl-usb2.c index 7ea4fe797e..86e69c73ba 100644 --- a/drivers/phy/meson-gxl-usb2.c +++ b/drivers/phy/meson-gxl-usb2.c @@ -192,7 +192,7 @@ int meson_gxl_usb2_phy_probe(struct udevice *dev) struct phy_meson_gxl_usb2_priv *priv = dev_get_priv(dev); int ret; - ret = regmap_init_mem(dev, &priv->regmap); + ret = regmap_init_mem(dev_ofnode(dev), &priv->regmap); if (ret) return ret; diff --git a/drivers/phy/meson-gxl-usb3.c b/drivers/phy/meson-gxl-usb3.c index 22824de517..5cbbd4d8f7 100644 --- a/drivers/phy/meson-gxl-usb3.c +++ b/drivers/phy/meson-gxl-usb3.c @@ -163,7 +163,7 @@ int meson_gxl_usb3_phy_probe(struct udevice *dev) struct phy_meson_gxl_usb3_priv *priv = dev_get_priv(dev); int ret; - ret = regmap_init_mem(dev, &priv->regmap); + ret = regmap_init_mem(dev_ofnode(dev), &priv->regmap); if (ret) return ret; diff --git a/drivers/ram/rockchip/dmc-rk3368.c b/drivers/ram/rockchip/dmc-rk3368.c index 75e2e9969b..8d1b9faacc 100644 --- a/drivers/ram/rockchip/dmc-rk3368.c +++ b/drivers/ram/rockchip/dmc-rk3368.c @@ -877,7 +877,7 @@ static int rk3368_dmc_ofdata_to_platdata(struct udevice *dev) #if !CONFIG_IS_ENABLED(OF_PLATDATA) struct rk3368_sdram_params *plat = dev_get_platdata(dev); - ret = regmap_init_mem(dev, &plat->map); + ret = regmap_init_mem(dev_ofnode(dev), &plat->map); if (ret) return ret; #endif diff --git a/drivers/ram/rockchip/sdram_rk3188.c b/drivers/ram/rockchip/sdram_rk3188.c index 91edc5a661..3774abfa98 100644 --- a/drivers/ram/rockchip/sdram_rk3188.c +++ b/drivers/ram/rockchip/sdram_rk3188.c @@ -839,7 +839,7 @@ static int rk3188_dmc_ofdata_to_platdata(struct udevice *dev) printf("%s: Cannot read rockchip,sdram-params\n", __func__); return -EINVAL; } - ret = regmap_init_mem(dev, ¶ms->map); + ret = regmap_init_mem(dev_ofnode(dev), ¶ms->map); if (ret) return ret; #endif diff --git a/drivers/ram/rockchip/sdram_rk322x.c b/drivers/ram/rockchip/sdram_rk322x.c index 16cf557af4..8bafd17f8f 100644 --- a/drivers/ram/rockchip/sdram_rk322x.c +++ b/drivers/ram/rockchip/sdram_rk322x.c @@ -743,7 +743,7 @@ static int rk322x_dmc_ofdata_to_platdata(struct udevice *dev) printf("%s: Cannot read rockchip,sdram-params\n", __func__); return -EINVAL; } - ret = regmap_init_mem(dev, ¶ms->map); + ret = regmap_init_mem(dev_ofnode(dev), ¶ms->map); if (ret) return ret; #endif diff --git a/drivers/ram/rockchip/sdram_rk3288.c b/drivers/ram/rockchip/sdram_rk3288.c index 14c30c9080..bb3cf48788 100644 --- a/drivers/ram/rockchip/sdram_rk3288.c +++ b/drivers/ram/rockchip/sdram_rk3288.c @@ -1000,7 +1000,7 @@ static int rk3288_dmc_ofdata_to_platdata(struct udevice *dev) priv->is_veyron = !fdt_node_check_compatible(blob, 0, "google,veyron"); #endif - ret = regmap_init_mem(dev, ¶ms->map); + ret = regmap_init_mem(dev_ofnode(dev), ¶ms->map); if (ret) return ret; #endif diff --git a/drivers/ram/rockchip/sdram_rk3399.c b/drivers/ram/rockchip/sdram_rk3399.c index d16ff0d427..49ebd8809f 100644 --- a/drivers/ram/rockchip/sdram_rk3399.c +++ b/drivers/ram/rockchip/sdram_rk3399.c @@ -1098,7 +1098,7 @@ static int rk3399_dmc_ofdata_to_platdata(struct udevice *dev) __func__, ret); return ret; } - ret = regmap_init_mem(dev, &plat->map); + ret = regmap_init_mem(dev_ofnode(dev), &plat->map); if (ret) printf("%s: regmap failed %d\n", __func__, ret); diff --git a/drivers/ram/stm32mp1/stm32mp1_ram.c b/drivers/ram/stm32mp1/stm32mp1_ram.c index a40f992f1a..bd497a3021 100644 --- a/drivers/ram/stm32mp1/stm32mp1_ram.c +++ b/drivers/ram/stm32mp1/stm32mp1_ram.c @@ -146,7 +146,7 @@ static int stm32mp1_ddr_probe(struct udevice *dev) debug("STM32MP1 DDR probe\n"); priv->dev = dev; - ret = regmap_init_mem(dev, &map); + ret = regmap_init_mem(dev_ofnode(dev), &map); if (ret) return ret; diff --git a/drivers/reset/reset-meson.c b/drivers/reset/reset-meson.c index ef0d043afb..92f04695ec 100644 --- a/drivers/reset/reset-meson.c +++ b/drivers/reset/reset-meson.c @@ -76,7 +76,7 @@ static int meson_reset_probe(struct udevice *dev) { struct meson_reset_priv *priv = dev_get_priv(dev); - return regmap_init_mem(dev, &priv->regmap); + return regmap_init_mem(dev_ofnode(dev), &priv->regmap); } U_BOOT_DRIVER(meson_reset) = { diff --git a/include/regmap.h b/include/regmap.h index d827a0bd52..e96c79dd26 100644 --- a/include/regmap.h +++ b/include/regmap.h @@ -47,10 +47,10 @@ int regmap_read(struct regmap *map, uint offset, uint *valp); * * Use regmap_uninit() to free it. * - * @dev: Device that uses this map + * @node: Device node that uses this map * @mapp: Returns allocated map */ -int regmap_init_mem(struct udevice *dev, struct regmap **mapp); +int regmap_init_mem(ofnode node, struct regmap **mapp); /** * regmap_init_mem_platdata() - Set up a new memory register map for of-platdata