display-drivers: local hbm: add suport for dc_hybird_threshold

For bangkok, there is a threshold that swith hybird mode to DC mode.
When backight is not large than this threshold, we must set the register(0x51)
to the threshold, let backlight enter DC mode.

Change-Id: I0aecbb42c9046a10bd1e907f9e6508d5687503dd
Signed-off-by: tinno64 <[email protected]>
Reviewed-on: https://gerrit.mot.com/2550939
SME-Granted: SME Approvals Granted
SLTApproved: Slta Waiver
Tested-by: Jira Key
Reviewed-by: Hua Tan <[email protected]>
Submit-Approved: Jira Key
This commit is contained in:
tinno64 2023-03-23 19:50:26 +08:00 • committed by tongkun1
commit 1b287a4b61
2 changed files with 28 additions and 13 deletions

View file

@ -1142,21 +1142,35 @@ static int dsi_panel_set_local_hbm_param(struct dsi_panel *panel,
for (i =0; i < count; i++) {
payload = (u8 *)cmds->msg.tx_buf;
if(param_info->value == HBM_FOD_ON_STATE &&
payload[0] == lhbm_config->alpha_reg) {
if(lhbm_config->dbv_level >lhbm_config->alpha_size) {
DSI_ERR("unsupport dbv level %d on local hbm\n", lhbm_config->dbv_level);
rc = -EINVAL;
goto end;
}
if(param_info->value == HBM_FOD_ON_STATE) {
if(payload[0] == lhbm_config->alpha_reg) {
if(lhbm_config->dbv_level >lhbm_config->alpha_size) {
DSI_ERR("unsupport dbv level %d on local hbm\n", lhbm_config->dbv_level);
rc = -EINVAL;
goto end;
}
alpha = lhbm_config->alpha[lhbm_config->dbv_level];
payload[1] = (alpha&0xff00)>>8;
payload[2] = alpha&0xff;
DSI_INFO("%s: alpha [%x]=%x%x\n",
__func__, payload[0], payload[1], payload[2]);
rc = 0;
goto end;
alpha = lhbm_config->alpha[lhbm_config->dbv_level];
payload[1] = (alpha&0xff00)>>8;
payload[2] = alpha&0xff;
DSI_INFO("%s: alpha [%x]=%x%x\n",
__func__, payload[0], payload[1], payload[2]);
rc = 0;
goto end;
} else if(payload[0] == 0X51 &&
lhbm_config->dc_hybird_threshold != 0) {
if(lhbm_config->dbv_level < lhbm_config->dc_hybird_threshold) {
payload[1] = (lhbm_config->dc_hybird_threshold & 0xff00) >> 8;
payload[2] = lhbm_config->dc_hybird_threshold & 0xff;
} else {
payload[1] = (lhbm_config->dbv_level & 0xff00) >> 8;
payload[2] = lhbm_config->dbv_level & 0xff;
}
DSI_INFO("%s: [%x]=%x%x\n",
__func__, payload[0], payload[1], payload[2]);
continue;
}
} else if(param_info->value == HBM_OFF_STATE &&
payload[0] == 0x51) {
payload[1] = (lhbm_config->dbv_level&0xff00)>>8;

View file

@ -234,6 +234,7 @@ struct dsi_panel_spr_info {
struct dsi_panel_lhbm_config {
bool enable;
u32 dc_hybird_threshold;
bool resend_lbhm_off;
u32 dbv_level;
u32 alpha_reg;