mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-09 13:49:24 -04:00
Merge "backlight: qcom-spmi-wled: Add support to configure slew ramp time"
This commit is contained in:
commit
3af6ed8815
1 changed files with 51 additions and 0 deletions
|
|
@ -183,6 +183,7 @@
|
|||
#define WLED5_SINK_BRIGHTNESS_SLEW_RATE_CTL_REG 0xb8
|
||||
#define WLED5_EN_SLEW_CTL BIT(7)
|
||||
#define WLED5_EN_EXP_LUT BIT(6)
|
||||
#define WLED5_SLEW_RAMP_TIME_SEL GENMASK(3, 0)
|
||||
|
||||
#define WLED5_SINK_DIMMING_EXP_LUT0_LSB_REG 0xc0
|
||||
#define WLED5_SINK_DIMMING_EXP_LUT0_MSB_REG 0xc1
|
||||
|
|
@ -223,6 +224,7 @@ struct wled_config {
|
|||
int string_cfg;
|
||||
int mod_sel;
|
||||
int cabc_sel;
|
||||
int slew_ramp_time;
|
||||
bool en_cabc;
|
||||
bool ext_pfet_sc_pro_en;
|
||||
bool auto_calib_enabled;
|
||||
|
|
@ -558,6 +560,17 @@ static int wled_update_status(struct backlight_device *bl)
|
|||
pr_err("wled enable failed rc:%d\n", rc);
|
||||
goto unlock_mutex;
|
||||
}
|
||||
|
||||
if (*wled->version == WLED_PM7325B) {
|
||||
rc = regmap_update_bits(wled->regmap,
|
||||
wled->sink_addr + WLED5_SINK_BRIGHTNESS_SLEW_RATE_CTL_REG,
|
||||
WLED5_SLEW_RAMP_TIME_SEL,
|
||||
wled->cfg.slew_ramp_time);
|
||||
if (rc < 0) {
|
||||
pr_err("Failed to write to SLEW_RATE_REGISTER rc:%d\n", rc);
|
||||
goto unlock_mutex;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (is_wled5(wled)) {
|
||||
|
|
@ -569,6 +582,16 @@ static int wled_update_status(struct backlight_device *bl)
|
|||
}
|
||||
}
|
||||
} else {
|
||||
if (*wled->version == WLED_PM7325B) {
|
||||
rc = regmap_update_bits(wled->regmap,
|
||||
wled->sink_addr + WLED5_SINK_BRIGHTNESS_SLEW_RATE_CTL_REG,
|
||||
WLED5_SLEW_RAMP_TIME_SEL, 0);
|
||||
if (rc < 0) {
|
||||
pr_err("Failed to write to SLEW_RATE_REGISTER rc:%d\n", rc);
|
||||
goto unlock_mutex;
|
||||
}
|
||||
}
|
||||
|
||||
rc = wled_module_enable(wled, brightness);
|
||||
if (rc < 0) {
|
||||
pr_err("wled disable failed rc:%d\n", rc);
|
||||
|
|
@ -1305,6 +1328,16 @@ static int wled5_setup(struct wled *wled)
|
|||
if (rc < 0)
|
||||
return rc;
|
||||
|
||||
if (*wled->version == WLED_PM7325B) {
|
||||
val = WLED5_EN_SLEW_CTL | wled->cfg.slew_ramp_time;
|
||||
rc = regmap_update_bits(wled->regmap,
|
||||
wled->sink_addr + WLED5_SINK_BRIGHTNESS_SLEW_RATE_CTL_REG,
|
||||
WLED5_EN_SLEW_CTL | WLED5_SLEW_RAMP_TIME_SEL,
|
||||
val);
|
||||
if (rc < 0)
|
||||
return rc;
|
||||
}
|
||||
|
||||
if (wled->cfg.use_exp_dimming) {
|
||||
rc = wled_program_exp_dimming(wled);
|
||||
if (rc < 0) {
|
||||
|
|
@ -1485,6 +1518,7 @@ static const struct wled_config wled4_config_defaults = {
|
|||
.string_cfg = 0xf,
|
||||
.mod_sel = -EINVAL,
|
||||
.cabc_sel = -EINVAL,
|
||||
.slew_ramp_time = -EINVAL,
|
||||
.en_cabc = 0,
|
||||
.ext_pfet_sc_pro_en = 0,
|
||||
.auto_calib_enabled = 0,
|
||||
|
|
@ -1499,6 +1533,7 @@ static const struct wled_config wled5_config_defaults = {
|
|||
.string_cfg = 0xf,
|
||||
.mod_sel = 0,
|
||||
.cabc_sel = 0,
|
||||
.slew_ramp_time = 6, /* 256 ms */
|
||||
.en_cabc = 0,
|
||||
.ext_pfet_sc_pro_en = 0,
|
||||
.auto_calib_enabled = 0,
|
||||
|
|
@ -1586,6 +1621,17 @@ static const struct wled_var_cfg wled5_cabc_sel_cfg = {
|
|||
.size = 4,
|
||||
};
|
||||
|
||||
/* Applicable only for PM7325B */
|
||||
static const u32 wled5_slew_ramp_time_values[] = {
|
||||
2, 4, 8, 64, 128, 192, 256, 320, 384, 448, 512, 704,
|
||||
896, 1024, 2048, 4096,
|
||||
};
|
||||
|
||||
static const struct wled_var_cfg wled5_slew_ramp_time_cfg = {
|
||||
.values = wled5_slew_ramp_time_values,
|
||||
.size = ARRAY_SIZE(wled5_slew_ramp_time_values),
|
||||
};
|
||||
|
||||
static u32 wled_values(const struct wled_var_cfg *cfg, u32 idx)
|
||||
{
|
||||
if (!cfg)
|
||||
|
|
@ -2359,6 +2405,11 @@ static int wled_configure(struct wled *wled, struct device *dev)
|
|||
.val_ptr = &cfg->cabc_sel,
|
||||
.cfg = &wled5_cabc_sel_cfg,
|
||||
},
|
||||
{
|
||||
.name = "qcom,slew-ramp-time",
|
||||
.val_ptr = &cfg->slew_ramp_time,
|
||||
.cfg = &wled5_slew_ramp_time_cfg,
|
||||
},
|
||||
};
|
||||
|
||||
const struct {
|
||||
|
|
|
|||
Loading…
Reference in a new issue