diff --git a/msm/sde/sde_core_perf.c b/msm/sde/sde_core_perf.c index 421343b2c6..afbd1c2275 100644 --- a/msm/sde/sde_core_perf.c +++ b/msm/sde/sde_core_perf.c @@ -327,7 +327,7 @@ static int _sde_core_perf_activate_llcc(struct sde_kms *kms, struct drm_device *drm_dev; struct device *dev; struct platform_device *pdev; - u32 llcc_id[SDE_SYS_CACHE_MAX] = {LLCC_ROTATOR, LLCC_DISP}; + u32 llcc_id[SDE_SYS_CACHE_MAX] = {LLCC_DISP}; int rc = 0; if (!kms || !kms->dev || !kms->dev->dev) { @@ -421,7 +421,7 @@ void sde_core_perf_crtc_update_llcc(struct drm_crtc *crtc) struct sde_kms *kms; struct sde_crtc *sde_crtc; struct sde_core_perf_params *old, *new; - int update_llcc[SDE_SYS_CACHE_MAX] = {0, 0}; + int update_llcc[SDE_SYS_CACHE_MAX] = {0}; int i; if (!crtc) { diff --git a/msm/sde/sde_hw_catalog.c b/msm/sde/sde_hw_catalog.c index eb2521cd60..0e58277e4d 100644 --- a/msm/sde/sde_hw_catalog.c +++ b/msm/sde/sde_hw_catalog.c @@ -1450,7 +1450,6 @@ static int _sde_sspp_setup_vigs(struct device_node *np, struct sde_dt_props *props[SSPP_SUBBLK_COUNT_MAX] = {NULL, NULL}; struct sde_dt_props *props_tmp = NULL; struct device_node *snp = NULL; - struct sde_sc_cfg *sc_cfg = sde_cfg->sc_cfg; int vig_count = 0, vcm_count = 0; const char *type; @@ -1616,14 +1615,6 @@ static int _sde_sspp_setup_vigs(struct device_node *np, MAX_DOWNSCALE_RATIO_INROT_NRT_DEFAULT; } - if (sc_cfg[SDE_SYS_CACHE_ROT].has_sys_cache) { - set_bit(SDE_PERF_SSPP_SYS_CACHE, &sspp->perf_features); - sblk->llcc_scid = - sc_cfg[SDE_SYS_CACHE_ROT].llcc_scid; - sblk->llcc_slice_size = - sc_cfg[SDE_SYS_CACHE_ROT].llcc_slice_size; - } - if (sde_cfg->inline_disable_const_clr) set_bit(SDE_SSPP_INLINE_CONST_CLR, &sspp->features); @@ -3477,11 +3468,8 @@ static int sde_cache_parse_dt(struct device_node *np, struct sde_mdss_cfg *sde_cfg) { struct llcc_slice_desc *slice; - struct platform_device *pdev; - struct of_phandle_args phargs; struct sde_sc_cfg *sc_cfg = sde_cfg->sc_cfg; struct device_node *llcc_node; - int rc = 0; if (!sde_cfg) { SDE_ERROR("invalid argument\n"); @@ -3499,67 +3487,19 @@ static int sde_cache_parse_dt(struct device_node *np, slice = llcc_slice_getd(LLCC_DISP); if (IS_ERR_OR_NULL(slice)) { - SDE_ERROR("failed to get system cache %ld\n", - PTR_ERR(slice)); - } else { - sc_cfg[SDE_SYS_CACHE_DISP].has_sys_cache = true; - sc_cfg[SDE_SYS_CACHE_DISP].llcc_scid = llcc_get_slice_id(slice); - sc_cfg[SDE_SYS_CACHE_DISP].llcc_slice_size = - llcc_get_slice_size(slice); - SDE_DEBUG("img cache scid:%d slice_size:%zu kb\n", - sc_cfg[SDE_SYS_CACHE_DISP].llcc_scid, - sc_cfg[SDE_SYS_CACHE_DISP].llcc_slice_size); - llcc_slice_putd(slice); + SDE_ERROR("failed to get system cache %ld\n", PTR_ERR(slice)); + return -EINVAL; } - /* Read inline rot node */ - rc = of_parse_phandle_with_args(np, - "qcom,sde-inline-rotator", "#list-cells", 0, &phargs); - if (rc) { - /* - * This is not a fatal error, system cache can be disabled - * in device tree - */ - SDE_DEBUG("sys cache will be disabled rc:%d\n", rc); - rc = 0; - goto end; - } - - if (!phargs.np || !phargs.args_count) { - SDE_ERROR("wrong phandle args %d %d\n", - !phargs.np, !phargs.args_count); - rc = -EINVAL; - goto end; - } - - pdev = of_find_device_by_node(phargs.np); - if (!pdev) { - SDE_ERROR("invalid sde rotator node\n"); - goto end; - } - - slice = llcc_slice_getd(LLCC_ROTATOR); - if (IS_ERR_OR_NULL(slice)) { - SDE_ERROR("failed to get rotator slice!\n"); - rc = -EINVAL; - goto cleanup; - } - - sc_cfg[SDE_SYS_CACHE_ROT].llcc_scid = llcc_get_slice_id(slice); - sc_cfg[SDE_SYS_CACHE_ROT].llcc_slice_size = - llcc_get_slice_size(slice); + sc_cfg[SDE_SYS_CACHE_DISP].has_sys_cache = true; + sc_cfg[SDE_SYS_CACHE_DISP].llcc_scid = llcc_get_slice_id(slice); + sc_cfg[SDE_SYS_CACHE_DISP].llcc_slice_size = llcc_get_slice_size(slice); + SDE_DEBUG("img cache scid:%d slice_size:%zu kb\n", + sc_cfg[SDE_SYS_CACHE_DISP].llcc_scid, + sc_cfg[SDE_SYS_CACHE_DISP].llcc_slice_size); llcc_slice_putd(slice); - sc_cfg[SDE_SYS_CACHE_ROT].has_sys_cache = true; - - SDE_DEBUG("rotator llcc scid:%d slice_size:%zukb\n", - sc_cfg[SDE_SYS_CACHE_ROT].llcc_scid, - sc_cfg[SDE_SYS_CACHE_ROT].llcc_slice_size); - -cleanup: - of_node_put(phargs.np); -end: - return rc; + return 0; } static int _sde_vbif_populate_ot_parsing(struct sde_vbif_cfg *vbif, diff --git a/msm/sde/sde_hw_catalog.h b/msm/sde/sde_hw_catalog.h index 298c83679e..1aecddd86c 100644 --- a/msm/sde/sde_hw_catalog.h +++ b/msm/sde/sde_hw_catalog.h @@ -165,14 +165,14 @@ enum { /** * sde_sys_cache_type: Types of system cache supported - * SDE_SYS_CACHE_ROT: Rotator system cache * SDE_SYS_CACHE_DISP: Static img system cache + * SDE_SYS_CACHE_MAX: Maximum number of sys cache users + * SDE_SYS_CACHE_NONE: Sys cache not used */ enum sde_sys_cache_type { - SDE_SYS_CACHE_ROT, SDE_SYS_CACHE_DISP, SDE_SYS_CACHE_MAX, - SDE_SYS_CACHE_NONE + SDE_SYS_CACHE_NONE = SDE_SYS_CACHE_MAX }; /** diff --git a/msm/sde/sde_plane.c b/msm/sde/sde_plane.c index ffe56cf9bf..8bf29ddd8b 100644 --- a/msm/sde/sde_plane.c +++ b/msm/sde/sde_plane.c @@ -2761,19 +2761,18 @@ void sde_plane_set_error(struct drm_plane *plane, bool error) } static void _sde_plane_sspp_setup_sys_cache(struct sde_plane *psde, - struct sde_plane_state *pstate, bool is_tp10) + struct sde_plane_state *pstate) { struct sde_sc_cfg *sc_cfg = psde->catalog->sc_cfg; bool prev_rd_en; - if (!psde->pipe_hw->ops.setup_sys_cache || - !(psde->perf_features & BIT(SDE_PERF_SSPP_SYS_CACHE))) + /* Only display system cache is currently supported */ + if (!sc_cfg[SDE_SYS_CACHE_DISP].has_sys_cache) return; prev_rd_en = pstate->sc_cfg.rd_en; - SDE_DEBUG("features:0x%x rotation:0x%x\n", - psde->features, pstate->rotation); + SDE_DEBUG_PLANE(psde, "features:0x%x\n", psde->features); pstate->sc_cfg.rd_en = false; pstate->sc_cfg.rd_scid = 0x0; @@ -2781,17 +2780,7 @@ static void _sde_plane_sspp_setup_sys_cache(struct sde_plane *psde, SSPP_SYS_CACHE_SCID; pstate->sc_cfg.type = SDE_SYS_CACHE_NONE; - if (pstate->rotation & DRM_MODE_ROTATE_90) { - if (is_tp10 && sc_cfg[SDE_SYS_CACHE_ROT].has_sys_cache) { - pstate->sc_cfg.rd_en = true; - pstate->sc_cfg.rd_scid = - sc_cfg[SDE_SYS_CACHE_ROT].llcc_scid; - pstate->sc_cfg.flags = SSPP_SYS_CACHE_EN_FLAG | - SSPP_SYS_CACHE_SCID; - pstate->sc_cfg.type = SDE_SYS_CACHE_ROT; - } - } else if (pstate->static_cache_state == CACHE_STATE_FRAME_WRITE && - sc_cfg[SDE_SYS_CACHE_DISP].has_sys_cache) { + if (pstate->static_cache_state == CACHE_STATE_FRAME_WRITE) { pstate->sc_cfg.rd_en = true; pstate->sc_cfg.rd_scid = sc_cfg[SDE_SYS_CACHE_DISP].llcc_scid; @@ -2799,8 +2788,7 @@ static void _sde_plane_sspp_setup_sys_cache(struct sde_plane *psde, pstate->sc_cfg.flags = SSPP_SYS_CACHE_EN_FLAG | SSPP_SYS_CACHE_SCID | SSPP_SYS_CACHE_NO_ALLOC; pstate->sc_cfg.type = SDE_SYS_CACHE_DISP; - } else if (pstate->static_cache_state == CACHE_STATE_FRAME_READ && - sc_cfg[SDE_SYS_CACHE_DISP].has_sys_cache) { + } else if (pstate->static_cache_state == CACHE_STATE_FRAME_READ) { pstate->sc_cfg.rd_en = true; pstate->sc_cfg.rd_scid = sc_cfg[SDE_SYS_CACHE_DISP].llcc_scid; @@ -2837,7 +2825,7 @@ void sde_plane_static_img_control(struct drm_plane *plane, pstate->static_cache_state = state; if (state == CACHE_STATE_FRAME_WRITE || state == CACHE_STATE_FRAME_READ) - _sde_plane_sspp_setup_sys_cache(psde, pstate, false); + _sde_plane_sspp_setup_sys_cache(psde, pstate); } static void _sde_plane_map_prop_to_dirty_bits(void) @@ -3121,8 +3109,7 @@ static void _sde_plane_update_format_and_rects(struct sde_plane *psde, pstate->multirect_index); } - _sde_plane_sspp_setup_sys_cache(psde, pstate, - sde_format_is_tp10_ubwc(fmt)); + _sde_plane_sspp_setup_sys_cache(psde, pstate); /* update csc */ if (SDE_FORMAT_IS_YUV(fmt))