summaryrefslogtreecommitdiff
path: root/drivers/regulator
diff options
context:
space:
mode:
authorSumit Sharma <sumsharma@nvidia.com>2012-09-10 12:45:19 +0530
committerSimone Willett <swillett@nvidia.com>2012-09-14 12:00:36 -0700
commitdcd7f9e79afe30b3d402b1042bbebb76114798c4 (patch)
treecd397539c672cdde664759e083cabbf286d62483 /drivers/regulator
parent93e3d9edd03868972fdeedf08318725ff02a5138 (diff)
regulator: tps6591x: Added LDO4 tracking support
Bug 1043041 Included LDO4 tracking support in tps6591x regulator by adding config flag in LDO4 initialization Change-Id: Ia549d566e8fdb3192d509c1a175d3021b0aba3ad signed-off-by: Sumit Sharma <sumsharma@nvidia.com> Reviewed-on: http://git-master/r/131003 GVS: Gerrit_Virtual_Submit Reviewed-by: Laxman Dewangan <ldewangan@nvidia.com>
Diffstat (limited to 'drivers/regulator')
-rw-r--r--drivers/regulator/tps6591x-regulator.c16
1 files changed, 15 insertions, 1 deletions
diff --git a/drivers/regulator/tps6591x-regulator.c b/drivers/regulator/tps6591x-regulator.c
index 1b60b9ca8223..9602e8ac4e68 100644
--- a/drivers/regulator/tps6591x-regulator.c
+++ b/drivers/regulator/tps6591x-regulator.c
@@ -58,9 +58,11 @@
#define TPS6591X_EN1_SMPS_ADD 0x46
#define TPS6591X_EN2_LDO_ADD 0x47
#define TPS6591X_EN2_SMPS_ADD 0x48
+#define TPS6591X_DCDCCTRL_ADD 0x3E
#define TPS6591X_INVALID_ADD 0xFF
#define EN1_EN2_OFFSET 2
+#define LDO4_TRACK_VAL 0x40
struct tps6591x_register_info {
unsigned char addr;
@@ -718,6 +720,18 @@ static inline int tps6591x_regulator_preinit(struct device *parent,
if (!tps6591x_pdata->init_apply)
return 0;
+ if (ri->desc.id == TPS6591X_ID_LDO_4 &&
+ (tps6591x_pdata->flags & LDO4_TRACKING_EN)) {
+ ret = tps6591x_read(parent, TPS6591X_DCDCCTRL_ADD,
+ &reg_val);
+ if (ret < 0)
+ pr_err("Not able to configure tracking mode for"
+ " %d err %d\n", ri->desc.id, ret);
+ else
+ tps6591x_write(parent, TPS6591X_DCDCCTRL_ADD,
+ reg_val|LDO4_TRACK_VAL);
+ }
+
if (tps6591x_pdata->init_uV >= 0) {
switch (ri->desc.id) {
case TPS6591X_ID_VIO:
@@ -818,7 +832,7 @@ static int __devinit tps6591x_regulator_probe(struct platform_device *pdev)
int id = pdev->id;
int err;
- dev_dbg(&pdev->dev, "Probing reulator %d\n", id);
+ dev_dbg(&pdev->dev, "Probing regulator %d\n", id);
ri = find_regulator_info(id);
if (ri == NULL) {