mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-05 19:31:57 -04:00
disp: msm: support for HBM_FOD mode
FOD: Fingerprint of display. For tianma panel, there are two hbm mode. 1. hbm 2. hbm for FOD(hbm_fod); But for SMD panel ,there is only one HBM mode. Port from 9701d728f Change-Id: Icc09d39502a9549bfba7cd47efca2993a2716110 Signed-off-by: houdz1 <houdz1@motorola.com> Reviewed-on: https://gerrit.mot.com/1697595 SLTApproved: Slta Waiver SME-Granted: SME Approvals Granted Tested-by: Jira Key Reviewed-by: Guobin Zhang <zhanggb@motorola.com> Submit-Approved: Jira Key
This commit is contained in:
parent
3c7f510343
commit
84265334e2
3 changed files with 22 additions and 1 deletions
|
|
@ -262,6 +262,7 @@ enum dsi_dyn_clk_feature_type {
|
|||
* @DSI_CMD_SET_POST_TIMING_SWITCH: Post timing switch
|
||||
* @DSI_CMD_SET_QSYNC_ON Enable qsync mode
|
||||
* @DSI_CMD_SET_QSYNC_OFF Disable qsync mode
|
||||
* @DSI_CMD_SET_HBM_FOD_ON: Turning HBM_FOD on
|
||||
* @DSI_CMD_SET_HBM_ON: Turning HBM on
|
||||
* @DSI_CMD_SET_HBM_OFF: Turning HBM off
|
||||
* @DSI_CMD_SET_ACL_ON: Turning ACL on
|
||||
|
|
@ -292,6 +293,7 @@ enum dsi_cmd_set_type {
|
|||
DSI_CMD_SET_POST_TIMING_SWITCH,
|
||||
DSI_CMD_SET_QSYNC_ON,
|
||||
DSI_CMD_SET_QSYNC_OFF,
|
||||
DSI_CMD_SET_HBM_FOD_ON,
|
||||
DSI_CMD_SET_HBM_ON,
|
||||
DSI_CMD_SET_HBM_OFF,
|
||||
DSI_CMD_SET_ACL_ON,
|
||||
|
|
|
|||
|
|
@ -45,6 +45,7 @@
|
|||
static struct panel_param_val_map hbm_map[HBM_STATE_NUM] = {
|
||||
{HBM_OFF_STATE, DSI_CMD_SET_HBM_OFF, NULL},
|
||||
{HBM_ON_STATE, DSI_CMD_SET_HBM_ON, NULL},
|
||||
{HBM_FOD_ON_STATE, DSI_CMD_SET_HBM_FOD_ON, NULL},
|
||||
};
|
||||
|
||||
static struct panel_param_val_map acl_map[ACL_STATE_NUM] = {
|
||||
|
|
@ -755,6 +756,10 @@ static int dsi_panel_send_param_cmd(struct dsi_panel *panel,
|
|||
panel_param->default_value, panel_param->value);
|
||||
|
||||
mutex_lock(&panel->panel_lock);
|
||||
|
||||
if (param_info->value >= panel_param->val_max)
|
||||
param_info->value = panel_param->val_max - 1;
|
||||
|
||||
if (panel_param->value == param_info->value)
|
||||
{
|
||||
DSI_INFO("(mode=%d): requested value=%d is same. Do nothing\n",
|
||||
|
|
@ -1952,6 +1957,7 @@ const char *cmd_set_prop_map[DSI_CMD_SET_MAX] = {
|
|||
"qcom,mdss-dsi-post-mode-switch-on-command",
|
||||
"qcom,mdss-dsi-qsync-on-commands",
|
||||
"qcom,mdss-dsi-qsync-off-commands",
|
||||
"qcom,mdss-dsi-hbm-fod-on-command",
|
||||
"qcom,mdss-dsi-hbm-on-command",
|
||||
"qcom,mdss-dsi-hbm-off-command",
|
||||
"qcom,mdss-dsi-acl-on-command",
|
||||
|
|
@ -1982,6 +1988,7 @@ const char *cmd_set_state_map[DSI_CMD_SET_MAX] = {
|
|||
"qcom,mdss-dsi-post-mode-switch-on-command-state",
|
||||
"qcom,mdss-dsi-qsync-on-commands-state",
|
||||
"qcom,mdss-dsi-qsync-off-commands-state",
|
||||
"qcom,mdss-dsi-hbm-fod-on-command-state",
|
||||
"qcom,mdss-dsi-hbm-on-command-state",
|
||||
"qcom,mdss-dsi-hbm-off-command-state",
|
||||
"qcom,mdss-dsi-acl-on-command-state",
|
||||
|
|
@ -3716,6 +3723,12 @@ static int dsi_panel_parse_param_prop(struct dsi_panel *panel,
|
|||
if (!prop)
|
||||
continue;
|
||||
|
||||
if ((type == DSI_CMD_SET_HBM_FOD_ON) &&
|
||||
(!panel->panel_hbm_fod)) {
|
||||
param->val_max -= 1;
|
||||
continue;
|
||||
}
|
||||
|
||||
rc = dsi_panel_parse_cmd_sets_sub(param_map->cmds,
|
||||
type, utils);
|
||||
if (rc) {
|
||||
|
|
@ -3732,6 +3745,9 @@ static int dsi_panel_parse_param_prop(struct dsi_panel *panel,
|
|||
}
|
||||
}
|
||||
|
||||
panel->panel_hbm_fod = of_property_read_bool(of_node,
|
||||
"qcom,mdss-dsi-hbm-fod");
|
||||
|
||||
return rc;
|
||||
|
||||
parse_err:
|
||||
|
|
|
|||
|
|
@ -201,6 +201,7 @@ enum acl_state {
|
|||
enum hbm_state {
|
||||
HBM_OFF_STATE = 0,
|
||||
HBM_ON_STATE,
|
||||
HBM_FOD_ON_STATE,
|
||||
HBM_STATE_NUM
|
||||
};
|
||||
|
||||
|
|
@ -213,7 +214,7 @@ struct panel_param_val_map {
|
|||
struct panel_param {
|
||||
const char *param_name;
|
||||
struct panel_param_val_map *val_map;
|
||||
const u16 val_max;
|
||||
u16 val_max;
|
||||
const u16 default_value;
|
||||
u16 value;
|
||||
bool is_supported;
|
||||
|
|
@ -312,6 +313,8 @@ struct dsi_panel {
|
|||
u32 disp_on_chk_val;
|
||||
bool no_panel_on_read_support;
|
||||
|
||||
bool panel_hbm_fod;
|
||||
|
||||
struct panel_param *param_cmds;
|
||||
};
|
||||
|
||||
|
|
|
|||
Loading…
Reference in a new issue