summaryrefslogtreecommitdiff
path: root/drivers/mfd/palmas.c
diff options
context:
space:
mode:
authorAlex Frid <afrid@nvidia.com>2014-02-04 18:54:30 -0800
committerAleksandr Frid <afrid@nvidia.com>2014-02-07 11:18:38 -0800
commit24e84b589836a314f3e2a8676ead9819cf0865d5 (patch)
tree309a582271e8712c50f5c94e22d8a60b867ad028 /drivers/mfd/palmas.c
parent77c2db2ddf81946185eaf47db18a5b8b89efd536 (diff)
mfd: palmas: Add SMPS VSEL volatile option
Currently all Palmas SMPS regulators voltage selection registers are always cached. Added a regulator configuration flag to mark volatile VSEL register. This flag can be set either in board platform data or in device tree node for the regulator that is controlled by hardware mechanism underneath s/w driver. Change-Id: I733de6e2e9d42bbcc2359f033bfb8ddccdaf7202 Signed-off-by: Alex Frid <afrid@nvidia.com> Reviewed-on: http://git-master/r/363635 Reviewed-by: Laxman Dewangan <ldewangan@nvidia.com> GVS: Gerrit_Virtual_Submit
Diffstat (limited to 'drivers/mfd/palmas.c')
-rw-r--r--drivers/mfd/palmas.c19
1 files changed, 14 insertions, 5 deletions
diff --git a/drivers/mfd/palmas.c b/drivers/mfd/palmas.c
index c409023940bb..32fd146dd9c4 100644
--- a/drivers/mfd/palmas.c
+++ b/drivers/mfd/palmas.c
@@ -182,11 +182,20 @@ static const struct mfd_cell palmas_children[] = {
},
};
-static bool is_volatile_palma_func_reg(struct device *dev, unsigned int reg)
+static bool is_volatile_palmas_func_reg(struct device *dev, unsigned int reg)
{
- if ((reg >= (PALMAS_SMPS12_CTRL + 0x20)) &&
- (reg <= (PALMAS_SMPS9_VOLTAGE + 0x20)))
- return false;
+ 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);
+ int volatile_reg = test_bit(
+ PALMAS_REG_TO_FN_ADDR(PALMAS_SMPS_BASE, reg),
+ palmas->volatile_smps_registers);
+
+ if (!volatile_reg)
+ return false;
+ }
return true;
}
@@ -218,7 +227,7 @@ static struct regmap_config palmas_regmap_config[PALMAS_NUM_CLIENTS] = {
.val_bits = 8,
.max_register = PALMAS_BASE_TO_REG(PALMAS_PU_PD_OD_BASE,
PALMAS_PRIMARY_SECONDARY_PAD4),
- .volatile_reg = is_volatile_palma_func_reg,
+ .volatile_reg = is_volatile_palmas_func_reg,
.lock = palmas_regmap_config0_lock,
.unlock = palmas_regmap_config0_unlock,
.cache_type = REGCACHE_RBTREE,