diff --git a/msm/sde/sde_hw_catalog.c b/msm/sde/sde_hw_catalog.c index 7d537e8b4d..16678bdfaf 100644 --- a/msm/sde/sde_hw_catalog.c +++ b/msm/sde/sde_hw_catalog.c @@ -5506,6 +5506,44 @@ static int _sde_hardware_pre_caps(struct sde_mdss_cfg *sde_cfg, uint32_t hw_rev) sde_cfg->demura_supported[SSPP_DMA3][0] = BIT(DEMURA_0) | BIT(DEMURA_2); sde_cfg->demura_supported[SSPP_DMA3][1] = BIT(DEMURA_1); sde_cfg->has_line_insertion = true; + } else if (IS_VOLCANO_TARGET(hw_rev)) { + set_bit(SDE_FEATURE_DEDICATED_CWB, sde_cfg->features); + set_bit(SDE_FEATURE_CWB_DITHER, sde_cfg->features); + set_bit(SDE_FEATURE_CWB_CROP, sde_cfg->features); + set_bit(SDE_FEATURE_QSYNC, sde_cfg->features); + set_bit(SDE_FEATURE_3D_MERGE_RESET, sde_cfg->features); + set_bit(SDE_FEATURE_HDR_PLUS, sde_cfg->features); + set_bit(SDE_FEATURE_INLINE_SKIP_THRESHOLD, sde_cfg->features); + set_bit(SDE_MDP_DHDR_MEMPOOL_4K, &sde_cfg->mdp[0].features); + set_bit(SDE_FEATURE_VIG_P010, sde_cfg->features); + set_bit(SDE_FEATURE_VBIF_DISABLE_SHAREABLE, sde_cfg->features); + set_bit(SDE_FEATURE_DITHER_LUMA_MODE, sde_cfg->features); + set_bit(SDE_FEATURE_MULTIRECT_ERROR, sde_cfg->features); + set_bit(SDE_FEATURE_FP16, sde_cfg->features); + set_bit(SDE_MDP_PERIPH_TOP_0_REMOVED, &sde_cfg->mdp[0].features); + set_bit(SDE_FEATURE_DEMURA, sde_cfg->features); + set_bit(SDE_FEATURE_UBWC_STATS, sde_cfg->features); + set_bit(SDE_FEATURE_HW_VSYNC_TS, sde_cfg->features); + set_bit(SDE_FEATURE_AVR_STEP, sde_cfg->features); + set_bit(SDE_FEATURE_VBIF_CLK_SPLIT, sde_cfg->features); + set_bit(SDE_FEATURE_TRUSTED_VM, sde_cfg->features); + set_bit(SDE_FEATURE_CTL_DONE, sde_cfg->features); + set_bit(SDE_FEATURE_WB_ROTATION, sde_cfg->features); + set_bit(SDE_FEATURE_EPT, sde_cfg->features); + sde_cfg->allowed_dsc_reservation_switch = SDE_DP_DSC_RESERVATION_SWITCH; + sde_cfg->autorefresh_disable_seq = AUTOREFRESH_DISABLE_SEQ2; + /* if pingpong block supports it this should not be set on top block */ + sde_cfg->ppb_sz_program = SDE_PPB_SIZE_THRU_TOP; + sde_cfg->perf.min_prefill_lines = 40; + sde_cfg->vbif_qos_nlvl = 8; + sde_cfg->qos_target_time_ns = 18600; + sde_cfg->ts_prefill_rev = 2; + sde_cfg->ctl_rev = SDE_CTL_CFG_VERSION_1_0_0; + sde_cfg->true_inline_rot_rev = SDE_INLINE_ROT_VERSION_2_0_1; + sde_cfg->sid_rev = SDE_SID_VERSION_2_0_0; + sde_cfg->mdss_hw_block_size = 0x158; + sde_cfg->demura_supported[SSPP_DMA1][0] = BIT(DEMURA_0); + sde_cfg->has_line_insertion = true; } else if (IS_PITTI_TARGET(hw_rev)) { set_bit(SDE_FEATURE_QSYNC, sde_cfg->features); sde_cfg->perf.min_prefill_lines = 40; diff --git a/msm/sde/sde_hw_catalog.h b/msm/sde/sde_hw_catalog.h index 49d2911a30..0c80be59ed 100644 --- a/msm/sde/sde_hw_catalog.h +++ b/msm/sde/sde_hw_catalog.h @@ -58,6 +58,7 @@ #define SDE_HW_VER_900 SDE_HW_VER(9, 0, 0) /* kalama */ #define SDE_HW_VER_A00 SDE_HW_VER(10, 0, 0) /* pineapple */ #define SDE_HW_VER_A10 SDE_HW_VER(10, 1, 0) /* cliffs */ +#define SDE_HW_VER_A20 SDE_HW_VER(10, 2, 0) /* volcano */ /* Avoid using below IS_XXX macros outside catalog, use feature bit instead */ @@ -91,6 +92,7 @@ #define IS_KALAMA_TARGET(rev) IS_SDE_MAJOR_MINOR_SAME((rev), SDE_HW_VER_900) #define IS_PINEAPPLE_TARGET(rev) IS_SDE_MAJOR_MINOR_SAME((rev), SDE_HW_VER_A00) #define IS_CLIFFS_TARGET(rev) IS_SDE_MAJOR_MINOR_SAME((rev), SDE_HW_VER_A10) +#define IS_VOLCANO_TARGET(rev) IS_SDE_MAJOR_MINOR_SAME((rev), SDE_HW_VER_A20) #define SDE_HW_BLK_NAME_LEN 16