diff options
author | Pratyush Yadav <p.yadav@ti.com> | 2020-09-24 07:34:15 +0300 |
---|---|---|
committer | Tom Rini <trini@konsulko.com> | 2020-09-30 18:55:22 +0300 |
commit | d8babb9598ce237ffb1feccb576c66a21c52e5f7 (patch) | |
tree | 24983e341b4a5303ef72f3f533bd7e746a4f32b0 /drivers | |
parent | 0e01a7c3f4b6a42f768a19f7fc1df92d3e3b5d37 (diff) | |
download | u-boot-d8babb9598ce237ffb1feccb576c66a21c52e5f7.tar.xz |
regmap: Allow devices to specify regmap range start and size in config
Some devices need to calculate the regmap base address at runtime. This
makes it impossible to use device tree to get the regmap base. Instead,
allow devices to specify it in the regmap config. This will create a
regmap with a single range that corresponds to the start and size given
by the driver.
Signed-off-by: Pratyush Yadav <p.yadav@ti.com>
Reviewed-by: Simon Glass <sjg@chromium.org>
Diffstat (limited to 'drivers')
-rw-r--r-- | drivers/core/regmap.c | 6 |
1 files changed, 5 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); |