Loading drivers/regulator/wm8350-regulator.c +46 −0 Original line number Diff line number Diff line Loading @@ -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) Loading Loading @@ -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 Loading
drivers/regulator/wm8350-regulator.c +46 −0 Original line number Diff line number Diff line Loading @@ -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) Loading Loading @@ -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