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
|
@ -37,10 +37,24 @@ static struct regmap *regmap_alloc_count(int count)
|
||||||
}
|
}
|
||||||
|
|
||||||
#if CONFIG_IS_ENABLED(OF_PLATDATA)
|
#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)
|
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;
|
return 0;
|
||||||
}
|
}
|
||||||
#else
|
#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(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);
|
struct regmap **mapp);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
Loading…
Reference in New Issue