regulator: Implement enable_time() for WM835x ISINKs
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
This commit is contained in:
parent
31aae2beeb
commit
75c8ac22e4
|
@ -290,6 +290,51 @@ static int wm8350_isink_is_enabled(struct regulator_dev *rdev)
|
|||
return -EINVAL;
|
||||
}
|
||||
|
||||
static int wm8350_isink_enable_time(struct regulator_dev *rdev)
|
||||
{
|
||||
struct wm8350 *wm8350 = rdev_get_drvdata(rdev);
|
||||
int isink = rdev_get_id(rdev);
|
||||
int reg;
|
||||
|
||||
switch (isink) {
|
||||
case WM8350_ISINK_A:
|
||||
reg = wm8350_reg_read(wm8350, WM8350_CSA_FLASH_CONTROL);
|
||||
break;
|
||||
case WM8350_ISINK_B:
|
||||
reg = wm8350_reg_read(wm8350, WM8350_CSB_FLASH_CONTROL);
|
||||
break;
|
||||
default:
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
if (reg & WM8350_CS1_FLASH_MODE) {
|
||||
switch (reg & WM8350_CS1_ON_RAMP_MASK) {
|
||||
case 0:
|
||||
return 0;
|
||||
case 1:
|
||||
return 1950;
|
||||
case 2:
|
||||
return 3910;
|
||||
case 3:
|
||||
return 7800;
|
||||
}
|
||||
} else {
|
||||
switch (reg & WM8350_CS1_ON_RAMP_MASK) {
|
||||
case 0:
|
||||
return 0;
|
||||
case 1:
|
||||
return 250000;
|
||||
case 2:
|
||||
return 500000;
|
||||
case 3:
|
||||
return 1000000;
|
||||
}
|
||||
}
|
||||
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
|
||||
int wm8350_isink_set_flash(struct wm8350 *wm8350, int isink, u16 mode,
|
||||
u16 trigger, u16 duration, u16 on_ramp, u16 off_ramp,
|
||||
u16 drive)
|
||||
|
@ -1221,6 +1266,7 @@ static struct regulator_ops wm8350_isink_ops = {
|
|||
.enable = wm8350_isink_enable,
|
||||
.disable = wm8350_isink_disable,
|
||||
.is_enabled = wm8350_isink_is_enabled,
|
||||
.enable_time = wm8350_isink_enable_time,
|
||||
};
|
||||
|
||||
static struct regulator_desc wm8350_reg[NUM_WM8350_REGULATORS] = {
|
||||
|
|
Loading…
Reference in New Issue