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 <yamada.masahiro@socionext.com> Acked-by: Neil Armstrong <narmstrong@baylibre.com> Reviewed-by: Simon Glass <sjg@chromium.org>
This commit is contained in:
parent
5ccc2c2130
commit
d35812368a
@ -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;
|
||||
|
||||
|
@ -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;
|
||||
}
|
||||
|
@ -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
|
||||
}
|
||||
|
||||
|
@ -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;
|
||||
|
||||
|
@ -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;
|
||||
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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);
|
||||
|
||||
|
@ -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;
|
||||
|
||||
|
@ -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) = {
|
||||
|
@ -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
|
||||
|
Loading…
Reference in New Issue
Block a user