diff options
author | Alex Frid <afrid@nvidia.com> | 2014-02-04 18:54:30 -0800 |
---|---|---|
committer | Aleksandr Frid <afrid@nvidia.com> | 2014-02-07 11:18:38 -0800 |
commit | 24e84b589836a314f3e2a8676ead9819cf0865d5 (patch) | |
tree | 309a582271e8712c50f5c94e22d8a60b867ad028 /drivers/mfd/palmas.c | |
parent | 77c2db2ddf81946185eaf47db18a5b8b89efd536 (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.c | 19 |
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, |