diff options
-rw-r--r-- | drivers/media/platform/msm/sde/rotator/sde_rotator_r3.c | 9 | ||||
-rw-r--r-- | drivers/video/fbdev/msm/mdss_mdp_intf_writeback.c | 18 | ||||
-rw-r--r-- | drivers/video/fbdev/msm/mdss_mdp_layer.c | 7 |
3 files changed, 23 insertions, 11 deletions
diff --git a/drivers/media/platform/msm/sde/rotator/sde_rotator_r3.c b/drivers/media/platform/msm/sde/rotator/sde_rotator_r3.c index 2c79ad7e45be..c3a0cfb390c4 100644 --- a/drivers/media/platform/msm/sde/rotator/sde_rotator_r3.c +++ b/drivers/media/platform/msm/sde/rotator/sde_rotator_r3.c @@ -1600,6 +1600,7 @@ static int sde_hw_rotator_config(struct sde_rot_hw_resource *hw, u32 safe_lut = 0; /* applicable for realtime client only */ u32 flags = 0; u32 rststs = 0; + u32 reg = 0; struct sde_rotation_item *item; if (!hw || !entry) { @@ -1836,10 +1837,10 @@ static int sde_hw_rotator_config(struct sde_rot_hw_resource *hw, /* Enable write gather for writeback to remove write gaps, which * may hang AXI/BIMC/SDE. */ - if (!((mdata->mdss_version == MDSS_MDP_HW_REV_320) || - (mdata->mdss_version == MDSS_MDP_HW_REV_330))) - SDE_VBIF_WRITE(mdata, MMSS_VBIF_NRT_VBIF_WRITE_GATHTER_EN, - BIT(mdata->vbif_xin_id[XIN_WRITEBACK])); + + reg = SDE_VBIF_READ(mdata, MMSS_VBIF_NRT_VBIF_WRITE_GATHTER_EN); + SDE_VBIF_WRITE(mdata, MMSS_VBIF_NRT_VBIF_WRITE_GATHTER_EN, + reg | BIT(mdata->vbif_xin_id[XIN_WRITEBACK])); if (mdata->vbif_reg_unlock) mdata->vbif_reg_unlock(); diff --git a/drivers/video/fbdev/msm/mdss_mdp_intf_writeback.c b/drivers/video/fbdev/msm/mdss_mdp_intf_writeback.c index 5b284e624c7f..87ed56028edd 100644 --- a/drivers/video/fbdev/msm/mdss_mdp_intf_writeback.c +++ b/drivers/video/fbdev/msm/mdss_mdp_intf_writeback.c @@ -602,9 +602,14 @@ int mdss_mdp_writeback_prepare_cwb(struct mdss_mdp_ctl *ctl, mdss_mdp_irq_enable(MDSS_MDP_IRQ_TYPE_CWB_OVERFLOW, CWB_PPB_1); } - if (test_bit(MDSS_QOS_WB2_WRITE_GATHER_EN, ctl->mdata->mdss_qos_map)) + if (test_bit(MDSS_QOS_WB2_WRITE_GATHER_EN, ctl->mdata->mdss_qos_map)) { + u32 reg = 0; + + reg = MDSS_VBIF_READ(ctl->mdata, + MDSS_VBIF_WRITE_GATHER_EN, false); MDSS_VBIF_WRITE(ctl->mdata, MDSS_VBIF_WRITE_GATHER_EN, - BIT(6), false); + reg | BIT(6), false); + } if (ctl->mdata->default_ot_wr_limit || ctl->mdata->default_ot_rd_limit) mdss_mdp_set_ot_limit_wb(ctx, false); @@ -1030,9 +1035,14 @@ static int mdss_mdp_writeback_display(struct mdss_mdp_ctl *ctl, void *arg) return ret; } - if (test_bit(MDSS_QOS_WB2_WRITE_GATHER_EN, ctl->mdata->mdss_qos_map)) + if (test_bit(MDSS_QOS_WB2_WRITE_GATHER_EN, ctl->mdata->mdss_qos_map)) { + u32 reg = 0; + + reg = MDSS_VBIF_READ(ctl->mdata, + MDSS_VBIF_WRITE_GATHER_EN, false); MDSS_VBIF_WRITE(ctl->mdata, MDSS_VBIF_WRITE_GATHER_EN, - BIT(6), false); + reg | BIT(6), false); + } mdss_mdp_set_intr_callback(ctx->intr_type, ctx->intf_num, mdss_mdp_writeback_intr_done, ctl); diff --git a/drivers/video/fbdev/msm/mdss_mdp_layer.c b/drivers/video/fbdev/msm/mdss_mdp_layer.c index 7c6938d40e0b..09a34223c2a5 100644 --- a/drivers/video/fbdev/msm/mdss_mdp_layer.c +++ b/drivers/video/fbdev/msm/mdss_mdp_layer.c @@ -2604,9 +2604,10 @@ static int __validate_layers(struct msm_fb_data_type *mfd, } ds_data = commit->dest_scaler; - if (test_bit(MDSS_CAPS_DEST_SCALER, mdata->mdss_caps_map) && - ds_data && (ds_data->flags & MDP_DESTSCALER_ENABLE) && - commit->dest_scaler_cnt) { + + if (test_bit(MDSS_CAPS_DEST_SCALER, mdata->mdss_caps_map) + && ds_data && commit->dest_scaler_cnt + && (ds_data->flags & MDP_DESTSCALER_ENABLE)) { /* * Find out which DS block to use based on DS commit info |