summaryrefslogtreecommitdiff
path: root/drivers/core
diff options
context:
space:
mode:
authorMasahiro Yamada <yamada.masahiro@socionext.com>2018-04-19 12:14:03 +0900
committerTom Rini <trini@konsulko.com>2018-05-07 15:49:51 -0400
commitd35812368a590ebe1a5c92199a1a57ce3e80722e (patch)
treec1ff594293463470564010fd57e7cbbd03bb35a0 /drivers/core
parent5ccc2c21307e186722ca9966bad0e03189c237c5 (diff)
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>
Diffstat (limited to 'drivers/core')
-rw-r--r--drivers/core/regmap.c11
-rw-r--r--drivers/core/syscon-uclass.c2
2 files changed, 6 insertions, 7 deletions
diff --git a/drivers/core/regmap.c b/drivers/core/regmap.c
index 0f787ab4e13..fabcc5f53a8 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 96408dea7e6..62ba462158d 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
}