mirror of
https://github.com/AsahiLinux/u-boot
synced 2024-11-10 15:14:43 +00:00
dm: core: Add an implementation of regmap_init_mem_platdata()
Add an implementation of this function which mirrors the functions of the automatic device-tree implementation. This can be used with of-platdata to create regmaps. Signed-off-by: Simon Glass <sjg@chromium.org>
This commit is contained in:
parent
a951431e82
commit
1e6ca1a6ad
2 changed files with 30 additions and 3 deletions
|
@ -37,10 +37,24 @@ static struct regmap *regmap_alloc_count(int count)
|
|||
}
|
||||
|
||||
#if CONFIG_IS_ENABLED(OF_PLATDATA)
|
||||
int regmap_init_mem_platdata(struct udevice *dev, fdt32_t *reg, int size,
|
||||
int regmap_init_mem_platdata(struct udevice *dev, u32 *reg, int count,
|
||||
struct regmap **mapp)
|
||||
{
|
||||
/* TODO(sjg@chromium.org): Implement this when needed */
|
||||
struct regmap_range *range;
|
||||
struct regmap *map;
|
||||
|
||||
map = regmap_alloc_count(count);
|
||||
if (!map)
|
||||
return -ENOMEM;
|
||||
|
||||
map->base = *reg;
|
||||
for (range = map->range; count > 0; reg += 2, range++, count--) {
|
||||
range->start = *reg;
|
||||
range->size = reg[1];
|
||||
}
|
||||
|
||||
*mapp = map;
|
||||
|
||||
return 0;
|
||||
}
|
||||
#else
|
||||
|
|
|
@ -56,7 +56,20 @@ int regmap_read(struct regmap *map, uint offset, uint *valp);
|
|||
*/
|
||||
int regmap_init_mem(struct udevice *dev, struct regmap **mapp);
|
||||
|
||||
int regmap_init_mem_platdata(struct udevice *dev, fdt32_t *reg, int size,
|
||||
/**
|
||||
* regmap_init_mem_platdata() - Set up a new memory register map for of-platdata
|
||||
*
|
||||
* This creates a new regmap with a list of regions passed in, rather than
|
||||
* using the device tree. It only supports 32-bit machines.
|
||||
*
|
||||
* Use regmap_uninit() to free it.
|
||||
*
|
||||
* @dev: Device that uses this map
|
||||
* @reg: List of address, size pairs
|
||||
* @count: Number of pairs (e.g. 1 if the regmap has a single entry)
|
||||
* @mapp: Returns allocated map
|
||||
*/
|
||||
int regmap_init_mem_platdata(struct udevice *dev, u32 *reg, int count,
|
||||
struct regmap **mapp);
|
||||
|
||||
/**
|
||||
|
|
Loading…
Reference in a new issue