aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/base
diff options
context:
space:
mode:
authorNenghua Cao <nhcao@marvell.com>2014-02-19 05:44:13 -0500
committerMark Brown <broonie@linaro.org>2014-03-06 04:40:54 -0500
commit13ff50c85846338bb9820abd3933227b678dc086 (patch)
treee4efb4701572fc0ada5b0e9d8501115e47329d15 /drivers/base
parent38dbfb59d1175ef458d006556061adeaa8751b72 (diff)
regmap: add regmap_parse_val api
In some cases, we need regmap's format parse_val function to do be/le translation according to the bus configuration. For example, snd_soc_bytes_put() uses regmap to write/read values, and use cpu_to_be() directly to covert MASK into big endian. This is a defect, and should use regmap's format function to do it according to bus configuration. Signed-off-by: Nenghua Cao <nhcao@marvell.com> Signed-off-by: Mark Brown <broonie@linaro.org>
Diffstat (limited to 'drivers/base')
-rw-r--r--drivers/base/regmap/regmap.c12
1 files changed, 12 insertions, 0 deletions
diff --git a/drivers/base/regmap/regmap.c b/drivers/base/regmap/regmap.c
index 6a19515f8a45..4b2ed0c9e80d 100644
--- a/drivers/base/regmap/regmap.c
+++ b/drivers/base/regmap/regmap.c
@@ -2240,6 +2240,18 @@ int regmap_get_val_bytes(struct regmap *map)
2240} 2240}
2241EXPORT_SYMBOL_GPL(regmap_get_val_bytes); 2241EXPORT_SYMBOL_GPL(regmap_get_val_bytes);
2242 2242
2243int regmap_parse_val(struct regmap *map, const void *buf,
2244 unsigned int *val)
2245{
2246 if (!map->format.parse_val)
2247 return -EINVAL;
2248
2249 *val = map->format.parse_val(buf);
2250
2251 return 0;
2252}
2253EXPORT_SYMBOL_GPL(regmap_parse_val);
2254
2243static int __init regmap_initcall(void) 2255static int __init regmap_initcall(void)
2244{ 2256{
2245 regmap_debugfs_initcall(); 2257 regmap_debugfs_initcall();