From 07855f70a37761e7f1d812e3fc780aaefcb1e550 Mon Sep 17 00:00:00 2001 From: Jin Li Date: Tue, 22 Nov 2016 15:39:35 -0500 Subject: [PATCH] drm/msm: add default value for plane enum property Add default value support for plane enum property which caller is able to pass in different default value when initialize the enum property list. Change-Id: I57595bf7c42b0e528a18ab0951655a169b00d611 Signed-off-by: Jin Li Signed-off-by: Yunyun Cao --- drivers/gpu/drm/msm/msm_prop.c | 4 ++-- drivers/gpu/drm/msm/msm_prop.h | 4 +++- drivers/gpu/drm/msm/sde/sde_connector.c | 4 ++-- drivers/gpu/drm/msm/sde/sde_crtc.c | 2 +- drivers/gpu/drm/msm/sde/sde_plane.c | 8 +++++--- 5 files changed, 13 insertions(+), 9 deletions(-) diff --git a/drivers/gpu/drm/msm/msm_prop.c b/drivers/gpu/drm/msm/msm_prop.c index 5f3d1b6356aa..10f89de25831 100644 --- a/drivers/gpu/drm/msm/msm_prop.c +++ b/drivers/gpu/drm/msm/msm_prop.c @@ -304,7 +304,7 @@ void msm_property_install_rotation(struct msm_property_info *info, void msm_property_install_enum(struct msm_property_info *info, const char *name, int flags, int is_bitmask, const struct drm_prop_enum_list *values, int num_values, - uint32_t property_idx) + uint32_t property_idx, uint64_t default_value) { struct drm_property **prop; @@ -337,7 +337,7 @@ void msm_property_install_enum(struct msm_property_info *info, } /* save init value for later */ - info->property_data[property_idx].default_value = 0; + info->property_data[property_idx].default_value = default_value; info->property_data[property_idx].force_dirty = false; /* always attach property, if created */ diff --git a/drivers/gpu/drm/msm/msm_prop.h b/drivers/gpu/drm/msm/msm_prop.h index 1430551700c7..6e600c4fd02f 100644 --- a/drivers/gpu/drm/msm/msm_prop.h +++ b/drivers/gpu/drm/msm/msm_prop.h @@ -267,6 +267,7 @@ void msm_property_install_rotation(struct msm_property_info *info, * @values: Array of allowable enumeration/bitmask values * @num_values: Size of values array * @property_idx: Property index + * @default_value: Default value of current property */ void msm_property_install_enum(struct msm_property_info *info, const char *name, @@ -274,7 +275,8 @@ void msm_property_install_enum(struct msm_property_info *info, int is_bitmask, const struct drm_prop_enum_list *values, int num_values, - uint32_t property_idx); + uint32_t property_idx, + uint64_t default_value); /** * msm_property_install_blob - install standard drm blob property diff --git a/drivers/gpu/drm/msm/sde/sde_connector.c b/drivers/gpu/drm/msm/sde/sde_connector.c index 0bb8298c1013..76e6e4ef6e7d 100644 --- a/drivers/gpu/drm/msm/sde/sde_connector.c +++ b/drivers/gpu/drm/msm/sde/sde_connector.c @@ -736,11 +736,11 @@ struct drm_connector *sde_connector_init(struct drm_device *dev, msm_property_install_enum(&c_conn->property_info, "topology_name", DRM_MODE_PROP_IMMUTABLE, 0, e_topology_name, ARRAY_SIZE(e_topology_name), - CONNECTOR_PROP_TOPOLOGY_NAME); + CONNECTOR_PROP_TOPOLOGY_NAME, 0); msm_property_install_enum(&c_conn->property_info, "topology_control", 0, 1, e_topology_control, ARRAY_SIZE(e_topology_control), - CONNECTOR_PROP_TOPOLOGY_CONTROL); + CONNECTOR_PROP_TOPOLOGY_CONTROL, 0); rc = msm_property_install_get_status(&c_conn->property_info); if (rc) { diff --git a/drivers/gpu/drm/msm/sde/sde_crtc.c b/drivers/gpu/drm/msm/sde/sde_crtc.c index 238d34419bf6..78767f44d295 100644 --- a/drivers/gpu/drm/msm/sde/sde_crtc.c +++ b/drivers/gpu/drm/msm/sde/sde_crtc.c @@ -1361,7 +1361,7 @@ static void sde_crtc_install_properties(struct drm_crtc *crtc, msm_property_install_enum(&sde_crtc->property_info, "security_level", 0x0, 0, e_secure_level, ARRAY_SIZE(e_secure_level), - CRTC_PROP_SECURITY_LEVEL); + CRTC_PROP_SECURITY_LEVEL, SDE_DRM_SEC_NON_SEC); sde_kms_info_reset(info); diff --git a/drivers/gpu/drm/msm/sde/sde_plane.c b/drivers/gpu/drm/msm/sde/sde_plane.c index 85ebff08761b..6fe1d1629d22 100644 --- a/drivers/gpu/drm/msm/sde/sde_plane.c +++ b/drivers/gpu/drm/msm/sde/sde_plane.c @@ -1907,10 +1907,12 @@ static void _sde_plane_install_properties(struct drm_plane *plane, BIT(DRM_REFLECT_X) | BIT(DRM_REFLECT_Y), PLANE_PROP_ROTATION); msm_property_install_enum(&psde->property_info, "blend_op", 0x0, 0, - e_blend_op, ARRAY_SIZE(e_blend_op), PLANE_PROP_BLEND_OP); + e_blend_op, ARRAY_SIZE(e_blend_op), PLANE_PROP_BLEND_OP, + SDE_DRM_BLEND_OP_PREMULTIPLIED); msm_property_install_enum(&psde->property_info, "src_config", 0x0, 1, - e_src_config, ARRAY_SIZE(e_src_config), PLANE_PROP_SRC_CONFIG); + e_src_config, ARRAY_SIZE(e_src_config), PLANE_PROP_SRC_CONFIG, + 0); list_for_each_entry(pp, &psde->phy_plane_head, phy_plane_list) { if (pp->pipe_hw->ops.setup_solidfill) @@ -1973,7 +1975,7 @@ static void _sde_plane_install_properties(struct drm_plane *plane, 0x0, 0, e_fb_translation_mode, ARRAY_SIZE(e_fb_translation_mode), - PLANE_PROP_FB_TRANSLATION_MODE); + PLANE_PROP_FB_TRANSLATION_MODE, SDE_DRM_FB_NON_SEC); } static inline void _sde_plane_set_csc_v1(struct sde_phy_plane *pp,