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:
Masahiro Yamada 2018-04-19 12:14:03 +09:00 committed by Tom Rini
parent 5ccc2c2130
commit d35812368a
13 changed files with 18 additions and 19 deletions

View File

@ -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;

View File

@ -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;
}

View File

@ -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
}

View File

@ -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;

View File

@ -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;

View File

@ -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

View File

@ -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, &params->map);
ret = regmap_init_mem(dev_ofnode(dev), &params->map);
if (ret)
return ret;
#endif

View File

@ -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, &params->map);
ret = regmap_init_mem(dev_ofnode(dev), &params->map);
if (ret)
return ret;
#endif

View File

@ -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, &params->map);
ret = regmap_init_mem(dev_ofnode(dev), &params->map);
if (ret)
return ret;
#endif

View File

@ -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);

View File

@ -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;

View File

@ -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) = {

View File

@ -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