drm: Add the DC panel param feature
Add the DC panel param feature which will be controlled from the user-space Change-Id: Ia241893614f91ba209ce830db033033235da2dfc Signed-off-by: daiss1 <daiss1@lenovo.com> Reviewed-on: https://gerrit.mot.com/1946756 SME-Granted: SME Approvals Granted SLTApproved: Slta Waiver Tested-by: Jira Key Reviewed-by: Xiangpo Zhao <zhaoxp3@motorola.com> Submit-Approved: Jira Key Signed-off-by: tanhua1 <tanhua1@motorola.com> Reviewed-on: https://gerrit.mot.com/2160847 Reviewed-by: Yeqing Wang <wangyq13@motorola.com> Reviewed-by: Dezhen Hou <houdz1@motorola.com>
This commit is contained in:
1 parent
9e130d9052
commit
4bdf576411
7 files changed
+53
-1
No files matched your search
@@ -289,6 +289,8 @@ enum dsi_dyn_clk_feature_type {
|
||||
* @DSI_CMD_SET_CABC_UI: CABC UI mode
|
||||
* @DSI_CMD_SET_CABC_MV: CABC MV mode
|
||||
* @DSI_CMD_SET_CABC_DIS: CABC DIS mode
|
||||
* @DSI_CMD_SET_DC_ON: DC mode on
|
||||
* @DSI_CMD_SET_DC_OFF: DC mode off
|
||||
* @DSI_CMD_SET_MAX
|
||||
*/
|
||||
enum dsi_cmd_set_type {
|
||||
@@ -323,6 +325,8 @@ enum dsi_cmd_set_type {
|
||||
DSI_CMD_SET_CABC_UI,
|
||||
DSI_CMD_SET_CABC_MV,
|
||||
DSI_CMD_SET_CABC_DIS,
|
||||
DSI_CMD_SET_DC_ON,
|
||||
DSI_CMD_SET_DC_OFF,
|
||||
DSI_CMD_SET_MAX
|
||||
};
|
||||
|
||||
|
||||
+27
-1
@@ -135,6 +135,11 @@ static struct panel_param_val_map cabc_map[CABC_STATE_NUM] = {
|
||||
{CABC_DIS_STATE, DSI_CMD_SET_CABC_DIS, NULL},
|
||||
};
|
||||
|
||||
static struct panel_param_val_map dc_map[DC_STATE_NUM] = {
|
||||
{DC_OFF_STATE, DSI_CMD_SET_DC_OFF, NULL},
|
||||
{DC_ON_STATE, DSI_CMD_SET_DC_ON, NULL},
|
||||
};
|
||||
|
||||
static struct panel_param dsi_panel_param[PANEL_IDX_MAX][PARAM_ID_NUM] = {
|
||||
{
|
||||
{"HBM", hbm_map, HBM_STATE_NUM, HBM_OFF_STATE,
|
||||
@@ -142,7 +147,9 @@ static struct panel_param dsi_panel_param[PANEL_IDX_MAX][PARAM_ID_NUM] = {
|
||||
{"CABC", cabc_map, CABC_STATE_NUM, CABC_UI_STATE,
|
||||
CABC_UI_STATE, false},
|
||||
{"ACL", acl_map, ACL_STATE_NUM, ACL_OFF_STATE,
|
||||
ACL_OFF_STATE, false}
|
||||
ACL_OFF_STATE, false},
|
||||
{"DC", dc_map, DC_STATE_NUM, DC_OFF_STATE,
|
||||
DC_OFF_STATE, false}
|
||||
},
|
||||
};
|
||||
|
||||
@@ -1192,6 +1199,19 @@ static int dsi_panel_set_cabc(struct dsi_panel *panel,
|
||||
return rc;
|
||||
};
|
||||
|
||||
static int dsi_panel_set_dc(struct dsi_panel *panel,
|
||||
struct msm_param_info *param_info)
|
||||
{
|
||||
int rc = 0;
|
||||
|
||||
pr_info("Set DC to (%d)\n", param_info->value);
|
||||
rc = dsi_panel_send_param_cmd(panel, param_info);
|
||||
if (rc < 0)
|
||||
DSI_ERR("%s: failed to send param cmds. ret=%d\n", __func__, rc);
|
||||
|
||||
return rc;
|
||||
};
|
||||
|
||||
int dsi_panel_set_param(struct dsi_panel *panel,
|
||||
struct msm_param_info *param_info)
|
||||
{
|
||||
@@ -1213,6 +1233,8 @@ int dsi_panel_set_param(struct dsi_panel *panel,
|
||||
break;
|
||||
case PARAM_ACL_ID :
|
||||
dsi_panel_set_acl(panel, param_info);
|
||||
case PARAM_DC_ID :
|
||||
dsi_panel_set_dc(panel, param_info);
|
||||
break;
|
||||
default:
|
||||
DSI_ERR("%s: Invalid set_param type=%d\n",
|
||||
@@ -2316,6 +2338,8 @@ const char *cmd_set_prop_map[DSI_CMD_SET_MAX] = {
|
||||
"qcom,mdss-dsi-cabc-ui-command",
|
||||
"qcom,mdss-dsi-cabc-mv-command",
|
||||
"qcom,mdss-dsi-cabc-dis-command",
|
||||
"qcom,mdss-dsi-dc-on-command",
|
||||
"qcom,mdss-dsi-dc-off-command",
|
||||
};
|
||||
|
||||
const char *cmd_set_state_map[DSI_CMD_SET_MAX] = {
|
||||
@@ -2350,6 +2374,8 @@ const char *cmd_set_state_map[DSI_CMD_SET_MAX] = {
|
||||
"qcom,mdss-dsi-cabc-ui-command-state",
|
||||
"qcom,mdss-dsi-cabc-mv-command-state",
|
||||
"qcom,mdss-dsi-cabc-dis-command-state",
|
||||
"qcom,mdss-dsi-dc-on-command-state",
|
||||
"qcom,mdss-dsi-dc-off-command-state",
|
||||
};
|
||||
|
||||
static int dsi_panel_get_cmd_pkt_count(const char *data, u32 length, u32 *cnt)
|
||||
|
||||
@@ -249,6 +249,12 @@ enum cabc_state {
|
||||
CABC_STATE_NUM,
|
||||
};
|
||||
|
||||
enum dc_state {
|
||||
DC_OFF_STATE = 0,
|
||||
DC_ON_STATE,
|
||||
DC_STATE_NUM,
|
||||
};
|
||||
|
||||
struct panel_param_val_map {
|
||||
int state;
|
||||
enum dsi_cmd_set_type type;
|
||||
|
||||
@@ -207,6 +207,7 @@ enum msm_mdp_conn_property {
|
||||
CONNECTOR_PROP_HBM,
|
||||
CONNECTOR_PROP_CABC,
|
||||
CONNECTOR_PROP_ACL,
|
||||
CONNECTOR_PROP_DC,
|
||||
/* total # of properties */
|
||||
CONNECTOR_PROP_COUNT
|
||||
};
|
||||
@@ -327,6 +328,7 @@ enum msm_param_id {
|
||||
PARAM_HBM_ID = 0,
|
||||
PARAM_CABC_ID,
|
||||
PARAM_ACL_ID,
|
||||
PARAM_DC_ID,
|
||||
PARAM_ID_NUM
|
||||
};
|
||||
|
||||
|
||||
@@ -1517,6 +1517,14 @@ static int sde_connector_atomic_set_property(struct drm_connector *connector,
|
||||
if (rc)
|
||||
goto end;
|
||||
break;
|
||||
case CONNECTOR_PROP_DC:
|
||||
param_info.value = val;
|
||||
param_info.param_idx = PARAM_DC_ID;
|
||||
param_info.param_conn_idx = CONNECTOR_PROP_DC;
|
||||
rc = _sde_connector_update_param(c_conn, ¶m_info);
|
||||
if (rc)
|
||||
goto end;
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
@@ -2459,6 +2467,8 @@ static int sde_connector_install_panel_params(struct sde_connector *c_conn)
|
||||
prop_idx = CONNECTOR_PROP_CABC;
|
||||
else if (!strncmp(param_cmds->param_name, "ACL", 3))
|
||||
prop_idx = CONNECTOR_PROP_ACL;
|
||||
else if (!strncmp(param_cmds->param_name, "DC", 2))
|
||||
prop_idx = CONNECTOR_PROP_DC;
|
||||
else {
|
||||
SDE_ERROR("Invalid param_name =%s\n",
|
||||
param_cmds->param_name);
|
||||
|
||||
@@ -220,6 +220,9 @@ static int _sde_debugfs_motUtil_kms_prop_test(struct sde_kms *kms,
|
||||
case KMSPROPTEST_TYPE_CABC:
|
||||
conn_prop_idx = CONNECTOR_PROP_CABC;
|
||||
break;
|
||||
case KMSPROPTEST_TYPE_DC:
|
||||
conn_prop_idx = CONNECTOR_PROP_DC;
|
||||
break;
|
||||
default:
|
||||
DRM_ERROR(" Invalid KMSPROPTEST_PROP_INDEX = %d\n",
|
||||
input[KMSPROPTEST_PROP_INDEX]);
|
||||
|
||||
@@ -116,6 +116,7 @@ enum sde_motUtil_kmsPropTest_ConnPropType {
|
||||
KMSPROPTEST_TYPE_HBM,
|
||||
KMSPROPTEST_TYPE_ACL,
|
||||
KMSPROPTEST_TYPE_CABC,
|
||||
KMSPROPTEST_TYPE_DC,
|
||||
};
|
||||
|
||||
struct motUtil {
|
||||
|
||||
Reference in new issue
Block a user