diff options
author | Xin Xie <xxie@nvidia.com> | 2011-04-25 17:36:15 -0700 |
---|---|---|
committer | Dan Willemsen <dwillemsen@nvidia.com> | 2011-11-30 21:47:47 -0800 |
commit | f90bd02b51681d4343236f819d1716f8c3c5d9ed (patch) | |
tree | 6b436f44bd4d5a3ab59f2f45935c81bb613ac7d5 /drivers/regulator | |
parent | 9912c17107e458d514eae715605031b6881ecb51 (diff) |
regulator: tps6586x: add SMx slew rate setting
bug 815933
Original-Change-Id: I3b8f8910b12ff4f8a5f9588615bd0bb6452bdc3b
Reviewed-on: http://git-master/r/40263
Reviewed-by: Xin Xie <xxie@nvidia.com>
Tested-by: Xin Xie <xxie@nvidia.com>
Reviewed-by: Jonathan Mayo <jmayo@nvidia.com>
Reviewed-by: Scott Williams <scwilliams@nvidia.com>
Reviewed-by: Bharat Nihalani <bnihalani@nvidia.com>
Rebase-Id: R18292e6e68c95b9f67d24281a9f2b80439452ba8
Diffstat (limited to 'drivers/regulator')
-rw-r--r-- | drivers/regulator/tps6586x-regulator.c | 28 |
1 files changed, 28 insertions, 0 deletions
diff --git a/drivers/regulator/tps6586x-regulator.c b/drivers/regulator/tps6586x-regulator.c index 3fd75e6c0cc4..9ab8f3fb68ef 100644 --- a/drivers/regulator/tps6586x-regulator.c +++ b/drivers/regulator/tps6586x-regulator.c @@ -375,6 +375,30 @@ static inline int tps6586x_regulator_set_pwm_mode(struct platform_device *pdev) return ret; } +static inline int tps6586x_regulator_set_slew_rate(struct platform_device *pdev) +{ + struct device *parent = pdev->dev.parent; + struct regulator_init_data *p = pdev->dev.platform_data; + struct tps6586x_settings *setting = p->driver_data; + uint8_t reg; + + if (setting == NULL) + return 0; + + /* only SM0 and SM1 can have the slew rate settings */ + switch (pdev->id) { + case TPS6586X_ID_SM_0: + reg = TPS6586X_SM0SL; + break; + case TPS6586X_ID_SM_1: + reg = TPS6586X_SM1SL; + break; + default: + return 0; + } + return tps6586x_write(parent, reg, setting->slew_rate); +} + static inline struct tps6586x_regulator *find_regulator_info(int id) { struct tps6586x_regulator *ri; @@ -417,6 +441,10 @@ static int __devinit tps6586x_regulator_probe(struct platform_device *pdev) platform_set_drvdata(pdev, rdev); + err = tps6586x_regulator_set_slew_rate(pdev); + if (err) + return err; + return tps6586x_regulator_set_pwm_mode(pdev); } |