Commit db13c04002e0d896f89657f9b2837a8ecfbb19b6

Authored by Haojian Zhuang
Committed by Samuel Ortiz
1 parent 2402ca5e30

regulator: Enable max8925 i2c sequence for control

Force to enable i2c as power up/down sequence. Otherwise, SD/LDO can't
be enabled or disabled via accessing i2c bus.

Signed-off-by: Haojian Zhuang <haojian.zhuang@marvell.com>
Cc: Liam Girdwood <lrg@slimlogic.co.uk>
Acked-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Signed-off-by: Samuel Ortiz <sameo@linux.intel.com>

Showing 1 changed file with 8 additions and 3 deletions Side-by-side Diff

drivers/regulator/max8925-regulator.c
... ... @@ -23,6 +23,10 @@
23 23 #define SD1_DVM_SHIFT 5 /* SDCTL1 bit5 */
24 24 #define SD1_DVM_EN 6 /* SDV1 bit 6 */
25 25  
  26 +/* bit definitions in SD & LDO control registers */
  27 +#define OUT_ENABLE 0x1f /* Power U/D sequence as I2C */
  28 +#define OUT_DISABLE 0x1e /* Power U/D sequence as I2C */
  29 +
26 30 struct max8925_regulator_info {
27 31 struct regulator_desc desc;
28 32 struct regulator_dev *regulator;
... ... @@ -93,8 +97,8 @@
93 97 struct max8925_regulator_info *info = rdev_get_drvdata(rdev);
94 98  
95 99 return max8925_set_bits(info->i2c, info->enable_reg,
96   - 1 << info->enable_bit,
97   - 1 << info->enable_bit);
  100 + OUT_ENABLE << info->enable_bit,
  101 + OUT_ENABLE << info->enable_bit);
98 102 }
99 103  
100 104 static int max8925_disable(struct regulator_dev *rdev)
... ... @@ -102,7 +106,8 @@
102 106 struct max8925_regulator_info *info = rdev_get_drvdata(rdev);
103 107  
104 108 return max8925_set_bits(info->i2c, info->enable_reg,
105   - 1 << info->enable_bit, 0);
  109 + OUT_ENABLE << info->enable_bit,
  110 + OUT_DISABLE << info->enable_bit);
106 111 }
107 112  
108 113 static int max8925_is_enabled(struct regulator_dev *rdev)