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;
|
struct regmap *map;
|
||||||
int ret;
|
int ret;
|
||||||
|
|
||||||
ret = regmap_init_mem(dev, &map);
|
ret = regmap_init_mem(dev_ofnode(dev), &map);
|
||||||
if (ret)
|
if (ret)
|
||||||
return ret;
|
return ret;
|
||||||
|
|
||||||
|
@ -50,7 +50,7 @@ int regmap_init_mem_platdata(struct udevice *dev, fdt_val_t *reg, int count,
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
#else
|
#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_range *range;
|
||||||
struct regmap *map;
|
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 addr_len, size_len, both_len;
|
||||||
int len;
|
int len;
|
||||||
int index;
|
int index;
|
||||||
ofnode node = dev_ofnode(dev);
|
|
||||||
struct resource r;
|
struct resource r;
|
||||||
|
|
||||||
addr_len = dev_read_simple_addr_cells(dev->parent);
|
addr_len = ofnode_read_simple_addr_cells(ofnode_get_parent(node));
|
||||||
size_len = dev_read_simple_size_cells(dev->parent);
|
size_len = ofnode_read_simple_size_cells(ofnode_get_parent(node));
|
||||||
both_len = addr_len + size_len;
|
both_len = addr_len + size_len;
|
||||||
|
|
||||||
len = dev_read_size(dev, "reg");
|
len = ofnode_read_size(node, "reg");
|
||||||
if (len < 0)
|
if (len < 0)
|
||||||
return len;
|
return len;
|
||||||
len /= sizeof(fdt32_t);
|
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;
|
range->size = r.end - r.start + 1;
|
||||||
} else {
|
} else {
|
||||||
range->start = fdtdec_get_addr_size_fixed(gd->fdt_blob,
|
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);
|
addr_len, size_len, &sz, true);
|
||||||
range->size = sz;
|
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),
|
return regmap_init_mem_platdata(dev, plat->reg, ARRAY_SIZE(plat->reg),
|
||||||
&priv->regmap);
|
&priv->regmap);
|
||||||
#else
|
#else
|
||||||
return regmap_init_mem(dev, &priv->regmap);
|
return regmap_init_mem(dev_ofnode(dev), &priv->regmap);
|
||||||
#endif
|
#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);
|
struct phy_meson_gxl_usb2_priv *priv = dev_get_priv(dev);
|
||||||
int ret;
|
int ret;
|
||||||
|
|
||||||
ret = regmap_init_mem(dev, &priv->regmap);
|
ret = regmap_init_mem(dev_ofnode(dev), &priv->regmap);
|
||||||
if (ret)
|
if (ret)
|
||||||
return 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);
|
struct phy_meson_gxl_usb3_priv *priv = dev_get_priv(dev);
|
||||||
int ret;
|
int ret;
|
||||||
|
|
||||||
ret = regmap_init_mem(dev, &priv->regmap);
|
ret = regmap_init_mem(dev_ofnode(dev), &priv->regmap);
|
||||||
if (ret)
|
if (ret)
|
||||||
return ret;
|
return ret;
|
||||||
|
|
||||||
|
@ -877,7 +877,7 @@ static int rk3368_dmc_ofdata_to_platdata(struct udevice *dev)
|
|||||||
#if !CONFIG_IS_ENABLED(OF_PLATDATA)
|
#if !CONFIG_IS_ENABLED(OF_PLATDATA)
|
||||||
struct rk3368_sdram_params *plat = dev_get_platdata(dev);
|
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)
|
if (ret)
|
||||||
return ret;
|
return ret;
|
||||||
#endif
|
#endif
|
||||||
|
@ -839,7 +839,7 @@ static int rk3188_dmc_ofdata_to_platdata(struct udevice *dev)
|
|||||||
printf("%s: Cannot read rockchip,sdram-params\n", __func__);
|
printf("%s: Cannot read rockchip,sdram-params\n", __func__);
|
||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
}
|
}
|
||||||
ret = regmap_init_mem(dev, ¶ms->map);
|
ret = regmap_init_mem(dev_ofnode(dev), ¶ms->map);
|
||||||
if (ret)
|
if (ret)
|
||||||
return ret;
|
return ret;
|
||||||
#endif
|
#endif
|
||||||
|
@ -743,7 +743,7 @@ static int rk322x_dmc_ofdata_to_platdata(struct udevice *dev)
|
|||||||
printf("%s: Cannot read rockchip,sdram-params\n", __func__);
|
printf("%s: Cannot read rockchip,sdram-params\n", __func__);
|
||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
}
|
}
|
||||||
ret = regmap_init_mem(dev, ¶ms->map);
|
ret = regmap_init_mem(dev_ofnode(dev), ¶ms->map);
|
||||||
if (ret)
|
if (ret)
|
||||||
return ret;
|
return ret;
|
||||||
#endif
|
#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");
|
priv->is_veyron = !fdt_node_check_compatible(blob, 0, "google,veyron");
|
||||||
#endif
|
#endif
|
||||||
ret = regmap_init_mem(dev, ¶ms->map);
|
ret = regmap_init_mem(dev_ofnode(dev), ¶ms->map);
|
||||||
if (ret)
|
if (ret)
|
||||||
return ret;
|
return ret;
|
||||||
#endif
|
#endif
|
||||||
|
@ -1098,7 +1098,7 @@ static int rk3399_dmc_ofdata_to_platdata(struct udevice *dev)
|
|||||||
__func__, ret);
|
__func__, ret);
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
ret = regmap_init_mem(dev, &plat->map);
|
ret = regmap_init_mem(dev_ofnode(dev), &plat->map);
|
||||||
if (ret)
|
if (ret)
|
||||||
printf("%s: regmap failed %d\n", __func__, 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");
|
debug("STM32MP1 DDR probe\n");
|
||||||
priv->dev = dev;
|
priv->dev = dev;
|
||||||
|
|
||||||
ret = regmap_init_mem(dev, &map);
|
ret = regmap_init_mem(dev_ofnode(dev), &map);
|
||||||
if (ret)
|
if (ret)
|
||||||
return ret;
|
return ret;
|
||||||
|
|
||||||
|
@ -76,7 +76,7 @@ static int meson_reset_probe(struct udevice *dev)
|
|||||||
{
|
{
|
||||||
struct meson_reset_priv *priv = dev_get_priv(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) = {
|
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.
|
* Use regmap_uninit() to free it.
|
||||||
*
|
*
|
||||||
* @dev: Device that uses this map
|
* @node: Device node that uses this map
|
||||||
* @mapp: Returns allocated 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
|
* regmap_init_mem_platdata() - Set up a new memory register map for of-platdata
|
||||||
|
Loading…
Reference in New Issue
Block a user