From 98a6a1131c2b924da403f9515a0730be9510abfb Mon Sep 17 00:00:00 2001 From: Jeykumar Sankaran Date: Thu, 18 Jun 2020 10:41:01 -0700 Subject: [PATCH 1/2] disp: msm: sde: add capability flag for trusted VM support Add a new hw catalog flag to indicate target support for trusted VM. Currently, the flags is set for Lahaina target. Change-Id: Idb56492758ef580673b2ebf44fecd577a2876f1b Signed-off-by: Jeykumar Sankaran --- msm/sde/sde_hw_catalog.c | 1 + msm/sde/sde_hw_catalog.h | 2 ++ 2 files changed, 3 insertions(+) diff --git a/msm/sde/sde_hw_catalog.c b/msm/sde/sde_hw_catalog.c index 953fb3d1d7..1481b5adc6 100644 --- a/msm/sde/sde_hw_catalog.c +++ b/msm/sde/sde_hw_catalog.c @@ -4712,6 +4712,7 @@ static int _sde_hardware_pre_caps(struct sde_mdss_cfg *sde_cfg, uint32_t hw_rev) sde_cfg->vbif_disable_inner_outer_shareable = true; sde_cfg->dither_luma_mode_support = true; sde_cfg->mdss_hw_block_size = 0x158; + sde_cfg->has_trusted_vm_support = true; } else { SDE_ERROR("unsupported chipset id:%X\n", hw_rev); sde_cfg->perf.min_prefill_lines = 0xffff; diff --git a/msm/sde/sde_hw_catalog.h b/msm/sde/sde_hw_catalog.h index 89309359aa..525d42b343 100644 --- a/msm/sde/sde_hw_catalog.h +++ b/msm/sde/sde_hw_catalog.h @@ -1404,6 +1404,7 @@ struct sde_perf_cfg { * @has_qsync Supports qsync feature * @has_3d_merge_reset Supports 3D merge reset * @has_decimation Supports decimation + * @has_trusted_vm_support Supported HW sharing with trusted VM * @has_mixer_combined_alpha Mixer has single register for FG & BG alpha * @vbif_disable_inner_outer_shareable VBIF requires disabling shareables * @inline_disable_const_clr Disable constant color during inline rotate @@ -1478,6 +1479,7 @@ struct sde_mdss_cfg { bool dither_luma_mode_support; bool has_base_layer; bool has_demura; + bool has_trusted_vm_support; u32 demura_supported[SSPP_MAX][2]; u32 qseed_sw_lib_rev; u32 qseed_hw_version; From 8b032e5e466beec93f790dd075d13b833b3a0cdc Mon Sep 17 00:00:00 2001 From: Jeykumar Sankaran Date: Wed, 11 Mar 2020 16:10:18 -0700 Subject: [PATCH 2/2] disp: sde: add CRTC property for VM requests Add a CRTC property to request the VM to acquire/release HW resources. Display driver in trusted VM boots up without HW ownership. Set the default value of the property as RELEASED to handle resource assignments. Change-Id: Iea651a2fea902d95d4b954052af4ef016af15a91 Signed-off-by: Jeykumar Sankaran --- msm/msm_drv.h | 1 + msm/sde/sde_crtc.c | 15 +++++++++++++++ msm/sde/sde_crtc.h | 12 ++++++++++++ 3 files changed, 28 insertions(+) diff --git a/msm/msm_drv.h b/msm/msm_drv.h index f34697628a..55ea0f1c42 100644 --- a/msm/msm_drv.h +++ b/msm/msm_drv.h @@ -172,6 +172,7 @@ enum msm_mdp_crtc_property { CRTC_PROP_IDLE_PC_STATE, CRTC_PROP_CACHE_STATE, + CRTC_PROP_VM_REQ_STATE, /* total # of properties */ CRTC_PROP_COUNT diff --git a/msm/sde/sde_crtc.c b/msm/sde/sde_crtc.c index c3cdeed477..5d7fc785f0 100644 --- a/msm/sde/sde_crtc.c +++ b/msm/sde/sde_crtc.c @@ -5236,6 +5236,12 @@ static void sde_crtc_install_properties(struct drm_crtc *crtc, {CACHE_STATE_ENABLED, "cache_state_enabled"}, }; + static const struct drm_prop_enum_list e_vm_req_state[] = { + {VM_REQ_NONE, "vm_req_none"}, + {VM_REQ_RELEASE, "vm_req_release"}, + {VM_REQ_ACQUIRE, "vm_req_acquire"}, + }; + SDE_DEBUG("\n"); if (!crtc || !catalog) { @@ -5274,6 +5280,15 @@ static void sde_crtc_install_properties(struct drm_crtc *crtc, "idle_time", 0, 0, U64_MAX, 0, CRTC_PROP_IDLE_TIMEOUT); + if (catalog->has_trusted_vm_support) { + int init_idx = sde_in_trusted_vm(sde_kms) ? 1 : 0; + + msm_property_install_enum(&sde_crtc->property_info, + "vm_request_state", 0x0, 0, e_vm_req_state, + ARRAY_SIZE(e_vm_req_state), init_idx, + CRTC_PROP_VM_REQ_STATE); + } + if (catalog->has_idle_pc) msm_property_install_enum(&sde_crtc->property_info, "idle_pc_state", 0x0, 0, e_idle_pc_state, diff --git a/msm/sde/sde_crtc.h b/msm/sde/sde_crtc.h index 44e93377e2..339900deb5 100644 --- a/msm/sde/sde_crtc.h +++ b/msm/sde/sde_crtc.h @@ -88,6 +88,18 @@ enum sde_crtc_cache_state { CACHE_STATE_FRAME_READ }; +/** + * enum sde_crtc_vm_req: request for VM operations + * @VM_REQ_NONE: no request. Normal VM operations. + * @VM_REQ_RELEASE: request to release the HW resources from the current VM + * @VM_REQ_ACQUIRE: request to acquire the HW resources in the current VM + */ +enum sde_crtc_vm_req { + VM_REQ_NONE, + VM_REQ_RELEASE, + VM_REQ_ACQUIRE, +}; + /** * @connectors : Currently associated drm connectors for retire event * @num_connectors: Number of associated drm connectors for retire event