summaryrefslogtreecommitdiff
path: root/drivers/mfd/palmas.c
diff options
context:
space:
mode:
authorAlex Frid <afrid@nvidia.com>2014-02-10 20:02:32 -0800
committerAleksandr Frid <afrid@nvidia.com>2014-02-14 11:19:28 -0800
commit8385a936f4234e9419ef361f881f36273a76141b (patch)
treef9a2a4b33e4dd09078e6c02652db9874cb24457d /drivers/mfd/palmas.c
parent3a070d8897b223e6bfe8837fd88529fb323ea861 (diff)
mfd: palmas: Add callback to set access attribute
Added callback to set SMPS voltage selector registers access attribute as volatile or cached. Bug 1454969 Change-Id: I9e98d2822a247d4009d4664b77b7f296a79414ea Signed-off-by: Alex Frid <afrid@nvidia.com> Reviewed-on: http://git-master/r/365779 Reviewed-by: Laxman Dewangan <ldewangan@nvidia.com>
Diffstat (limited to 'drivers/mfd/palmas.c')
-rw-r--r--drivers/mfd/palmas.c19
1 files changed, 19 insertions, 0 deletions
diff --git a/drivers/mfd/palmas.c b/drivers/mfd/palmas.c
index 32fd146dd9c4..244b21cbbb80 100644
--- a/drivers/mfd/palmas.c
+++ b/drivers/mfd/palmas.c
@@ -199,6 +199,24 @@ static bool is_volatile_palmas_func_reg(struct device *dev, unsigned int reg)
return true;
}
+static int palmas_reg_volatile_set(struct device *dev, unsigned int reg,
+ bool is_volatile)
+{
+ if ((reg >= PALMAS_BASE_TO_REG(PALMAS_SMPS_BASE,
+ PALMAS_SMPS12_CTRL)) &&
+ (reg <= PALMAS_BASE_TO_REG(PALMAS_SMPS_BASE,
+ PALMAS_SMPS9_VOLTAGE))) {
+ struct palmas *palmas = dev_get_drvdata(dev);
+ unsigned int bit = PALMAS_REG_TO_FN_ADDR(PALMAS_SMPS_BASE, reg);
+ if (is_volatile)
+ set_bit(bit, palmas->volatile_smps_registers);
+ else
+ clear_bit(bit, palmas->volatile_smps_registers);
+ return 0;
+ }
+ return -EINVAL;
+}
+
static void palmas_regmap_config0_lock(void *lock)
{
struct palmas *palmas = lock;
@@ -228,6 +246,7 @@ static struct regmap_config palmas_regmap_config[PALMAS_NUM_CLIENTS] = {
.max_register = PALMAS_BASE_TO_REG(PALMAS_PU_PD_OD_BASE,
PALMAS_PRIMARY_SECONDARY_PAD4),
.volatile_reg = is_volatile_palmas_func_reg,
+ .reg_volatile_set = palmas_reg_volatile_set,
.lock = palmas_regmap_config0_lock,
.unlock = palmas_regmap_config0_unlock,
.cache_type = REGCACHE_RBTREE,