[U-Boot] [PATCH v2 3/4] regmap: change regmap_init_mem() to take ofnode instead udevice
Masahiro Yamada
yamada.masahiro at socionext.com
Thu Apr 19 03:14:03 UTC 2018
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 <yamada.masahiro at socionext.com>
Acked-by: Neil Armstrong <narmstrong at baylibre.com>
---
Changes in v2: None
arch/arm/mach-aspeed/ast2500/sdram_ast2500.c | 2 +-
drivers/core/regmap.c | 11 +++++------
drivers/core/syscon-uclass.c | 2 +-
drivers/phy/meson-gxl-usb2.c | 2 +-
drivers/phy/meson-gxl-usb3.c | 2 +-
drivers/ram/rockchip/dmc-rk3368.c | 2 +-
drivers/ram/rockchip/sdram_rk3188.c | 2 +-
drivers/ram/rockchip/sdram_rk322x.c | 2 +-
drivers/ram/rockchip/sdram_rk3288.c | 2 +-
drivers/ram/rockchip/sdram_rk3399.c | 2 +-
drivers/ram/stm32mp1/stm32mp1_ram.c | 2 +-
drivers/reset/reset-meson.c | 2 +-
include/regmap.h | 4 ++--
13 files changed, 18 insertions(+), 19 deletions(-)
diff --git a/arch/arm/mach-aspeed/ast2500/sdram_ast2500.c b/arch/arm/mach-aspeed/ast2500/sdram_ast2500.c
index 6383f72..f267c58 100644
--- a/arch/arm/mach-aspeed/ast2500/sdram_ast2500.c
+++ b/arch/arm/mach-aspeed/ast2500/sdram_ast2500.c
@@ -392,7 +392,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 6c3dbe9..1185a44 100644
--- a/drivers/core/regmap.c
+++ b/drivers/core/regmap.c
@@ -51,7 +51,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;
@@ -59,14 +59,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);
@@ -87,7 +86,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 a69937e..c99409b 100644
--- a/drivers/core/syscon-uclass.c
+++ b/drivers/core/syscon-uclass.c
@@ -41,7 +41,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 15c9c89..7242bf6 100644
--- a/drivers/phy/meson-gxl-usb2.c
+++ b/drivers/phy/meson-gxl-usb2.c
@@ -195,7 +195,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 a385fbd..47a41fd 100644
--- a/drivers/phy/meson-gxl-usb3.c
+++ b/drivers/phy/meson-gxl-usb3.c
@@ -166,7 +166,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 bfcb1dd..9bf64bf 100644
--- a/drivers/ram/rockchip/dmc-rk3368.c
+++ b/drivers/ram/rockchip/dmc-rk3368.c
@@ -880,7 +880,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 365d00e..c0a2618 100644
--- a/drivers/ram/rockchip/sdram_rk3188.c
+++ b/drivers/ram/rockchip/sdram_rk3188.c
@@ -842,7 +842,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 cc3138b..dca07db 100644
--- a/drivers/ram/rockchip/sdram_rk322x.c
+++ b/drivers/ram/rockchip/sdram_rk322x.c
@@ -744,7 +744,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 95efb11..ffb663c 100644
--- a/drivers/ram/rockchip/sdram_rk3288.c
+++ b/drivers/ram/rockchip/sdram_rk3288.c
@@ -1003,7 +1003,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 5cb470c..6e2a39e 100644
--- a/drivers/ram/rockchip/sdram_rk3399.c
+++ b/drivers/ram/rockchip/sdram_rk3399.c
@@ -1100,7 +1100,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 9599444..a4d5906 100644
--- a/drivers/ram/stm32mp1/stm32mp1_ram.c
+++ b/drivers/ram/stm32mp1/stm32mp1_ram.c
@@ -149,7 +149,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 5324f86..c41d176 100644
--- a/drivers/reset/reset-meson.c
+++ b/drivers/reset/reset-meson.c
@@ -77,7 +77,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 0d1dc5a..a5a4646 100644
--- a/include/regmap.h
+++ b/include/regmap.h
@@ -48,10 +48,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
--
2.7.4
More information about the U-Boot
mailing list