mirror of https://gitee.com/openkylin/linux.git
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;
|
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,
|
int wm8350_isink_set_flash(struct wm8350 *wm8350, int isink, u16 mode,
|
||||||
u16 trigger, u16 duration, u16 on_ramp, u16 off_ramp,
|
u16 trigger, u16 duration, u16 on_ramp, u16 off_ramp,
|
||||||
u16 drive)
|
u16 drive)
|
||||||
|
@ -1221,6 +1266,7 @@ static struct regulator_ops wm8350_isink_ops = {
|
||||||
.enable = wm8350_isink_enable,
|
.enable = wm8350_isink_enable,
|
||||||
.disable = wm8350_isink_disable,
|
.disable = wm8350_isink_disable,
|
||||||
.is_enabled = wm8350_isink_is_enabled,
|
.is_enabled = wm8350_isink_is_enabled,
|
||||||
|
.enable_time = wm8350_isink_enable_time,
|
||||||
};
|
};
|
||||||
|
|
||||||
static struct regulator_desc wm8350_reg[NUM_WM8350_REGULATORS] = {
|
static struct regulator_desc wm8350_reg[NUM_WM8350_REGULATORS] = {
|
||||||
|
|
Loading…
Reference in New Issue