regulator: tps51632: add register property for regmap
authorLaxman Dewangan <ldewangan@nvidia.com>
Tue, 25 Dec 2012 15:05:59 +0000 (20:35 +0530)
committerMark Brown <broonie@opensource.wolfsonmicro.com>
Thu, 27 Dec 2012 17:30:45 +0000 (17:30 +0000)
All TPS51632 registers are not readable/writable and
non-volatiles.

Add property of the registers whether it is readable/writable
or volatile for regmap framework.

Signed-off-by: Laxman Dewangan <ldewangan@nvidia.com>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
drivers/regulator/tps51632-regulator.c

index ab21133..b96fb0e 100644 (file)
@@ -205,18 +205,49 @@ skip_pwm_config:
        return ret;
 }
 
-static bool rd_wr_reg(struct device *dev, unsigned int reg)
+static bool is_volatile_reg(struct device *dev, unsigned int reg)
 {
-       if ((reg >= 0x8) && (reg <= 0x10))
+       switch (reg) {
+       case TPS51632_OFFSET_REG:
+       case TPS51632_FAULT_REG:
+       case TPS51632_IMON_REG:
+               return true;
+       default:
                return false;
-       return true;
+       }
+}
+
+static bool is_read_reg(struct device *dev, unsigned int reg)
+{
+       switch (reg) {
+       case 0x08 ... 0x0F:
+               return false;
+       default:
+               return true;
+       }
+}
+
+static bool is_write_reg(struct device *dev, unsigned int reg)
+{
+       switch (reg) {
+       case TPS51632_VOLTAGE_SELECT_REG:
+       case TPS51632_VOLTAGE_BASE_REG:
+       case TPS51632_VMAX_REG:
+       case TPS51632_DVFS_CONTROL_REG:
+       case TPS51632_POWER_STATE_REG:
+       case TPS51632_SLEW_REGS:
+               return true;
+       default:
+               return false;
+       }
 }
 
 static const struct regmap_config tps51632_regmap_config = {
        .reg_bits               = 8,
        .val_bits               = 8,
-       .writeable_reg          = rd_wr_reg,
-       .readable_reg           = rd_wr_reg,
+       .writeable_reg          = is_write_reg,
+       .readable_reg           = is_read_reg,
+       .volatile_reg           = is_volatile_reg,
        .max_register           = TPS51632_MAX_REG - 1,
        .cache_type             = REGCACHE_RBTREE,
 };