summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--drivers/core/regmap.c6
-rw-r--r--include/regmap.h6
2 files changed, 11 insertions, 1 deletions
diff --git a/drivers/core/regmap.c b/drivers/core/regmap.c
index a9087df32b..a3da0cf7c3 100644
--- a/drivers/core/regmap.c
+++ b/drivers/core/regmap.c
@@ -283,7 +283,11 @@ struct regmap *devm_regmap_init(struct udevice *dev,
if (unlikely(!mapp))
return ERR_PTR(-ENOMEM);
- rc = regmap_init_mem(dev_ofnode(dev), mapp);
+ if (config && config->r_size != 0)
+ rc = regmap_init_mem_range(dev_ofnode(dev), config->r_start,
+ config->r_size, mapp);
+ else
+ rc = regmap_init_mem(dev_ofnode(dev), mapp);
if (rc)
return ERR_PTR(rc);
diff --git a/include/regmap.h b/include/regmap.h
index 7c8ad04759..7a6fcc7f53 100644
--- a/include/regmap.h
+++ b/include/regmap.h
@@ -84,10 +84,16 @@ struct regmap_bus;
* REGMAP_SIZE_32 if set to 0.
* @reg_offset_shift Left shift the register offset by this value before
* performing read or write.
+ * @r_start: If specified, the regmap is created with one range
+ * which starts at this address, instead of finding the
+ * start from device tree.
+ * @r_size: Same as above for the range size
*/
struct regmap_config {
enum regmap_size_t width;
u32 reg_offset_shift;
+ ulong r_start;
+ ulong r_size;
};
/**