regulator: tps6586x: add SMx slew rate setting
Add output vlotage slew rate setting for SM0/SM1 Signed-off-by: Xin Xie <xxie@nvidia.com> Signed-off-by: Danny Huang <dahuang@nvidia.com> Acked-by: Mark Brown <broonie@opensource.wolfsonmicro.com> Signed-off-by: Liam Girdwood <lrg@slimlogic.co.uk>
This commit is contained in:
@@ -332,6 +332,36 @@ static inline int tps6586x_regulator_preinit(struct device *parent,
|
||||
1 << ri->enable_bit[1]);
|
||||
}
|
||||
|
||||
static 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;
|
||||
|
||||
if (!(setting->slew_rate & TPS6586X_SLEW_RATE_SET))
|
||||
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:
|
||||
dev_warn(&pdev->dev, "Only SM0/SM1 can set slew rate\n");
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
return tps6586x_write(parent, reg,
|
||||
setting->slew_rate & TPS6586X_SLEW_RATE_MASK);
|
||||
}
|
||||
|
||||
static inline struct tps6586x_regulator *find_regulator_info(int id)
|
||||
{
|
||||
struct tps6586x_regulator *ri;
|
||||
@@ -374,7 +404,7 @@ static int __devinit tps6586x_regulator_probe(struct platform_device *pdev)
|
||||
|
||||
platform_set_drvdata(pdev, rdev);
|
||||
|
||||
return 0;
|
||||
return tps6586x_regulator_set_slew_rate(pdev);
|
||||
}
|
||||
|
||||
static int __devexit tps6586x_regulator_remove(struct platform_device *pdev)
|
||||
|
Reference in New Issue
Block a user