diff --git a/arch/arm/mach-msm/board-8064-display.c b/arch/arm/mach-msm/board-8064-display.c index d0ab9ffdf72..ee934b4b50b 100644 --- a/arch/arm/mach-msm/board-8064-display.c +++ b/arch/arm/mach-msm/board-8064-display.c @@ -272,9 +272,9 @@ static struct msm_bus_scale_pdata mdp_bus_scale_pdata = { static struct msm_panel_common_pdata mdp_pdata = { .gpio = MDP_VSYNC_GPIO, .mdp_max_clk = 266667000, - .mdp_max_bw = 2000000000, - .mdp_bw_ab_factor = 115, - .mdp_bw_ib_factor = 150, + .mdp_max_bw = 4290000000u, + .mdp_bw_ab_factor = 230, + .mdp_bw_ib_factor = 250, .mdp_bus_scale_table = &mdp_bus_scale_pdata, .mdp_rev = MDP_REV_44, #ifdef CONFIG_MSM_MULTIMEDIA_USE_ION diff --git a/drivers/video/msm/mdp.c b/drivers/video/msm/mdp.c index 0eaa5d1ca5c..25e6542826d 100644 --- a/drivers/video/msm/mdp.c +++ b/drivers/video/msm/mdp.c @@ -72,7 +72,8 @@ int mdp_rev; int mdp_iommu_split_domain; u32 mdp_max_clk = 266667000; u64 mdp_max_bw = 3080000000UL; - +u32 mdp_bw_ab_factor = MDP4_BW_AB_DEFAULT_FACTOR; +u32 mdp_bw_ib_factor = MDP4_BW_IB_DEFAULT_FACTOR; static struct platform_device *mdp_init_pdev; static struct regulator *footswitch, *dsi_pll_vdda, *dsi_pll_vddio; static unsigned int mdp_footswitch_on; @@ -2860,6 +2861,13 @@ static int mdp_probe(struct platform_device *pdev) return -ENOMEM; } + if (mdp_pdata->mdp_max_bw) + mdp_max_bw = mdp_pdata->mdp_max_bw; + if (mdp_pdata->mdp_bw_ab_factor) + mdp_bw_ab_factor = mdp_pdata->mdp_bw_ab_factor; + if (mdp_pdata->mdp_bw_ib_factor) + mdp_bw_ib_factor = mdp_pdata->mdp_bw_ib_factor; + mdp_rev = mdp_pdata->mdp_rev; mdp_iommu_split_domain = mdp_pdata->mdp_iommu_split_domain; diff --git a/drivers/video/msm/mdp4.h b/drivers/video/msm/mdp4.h index e95b5a1c95c..d0419052a0e 100644 --- a/drivers/video/msm/mdp4.h +++ b/drivers/video/msm/mdp4.h @@ -34,8 +34,10 @@ extern u64 mdp_max_bw; extern u32 mdp_bw_ab_factor; extern u32 mdp_bw_ib_factor; extern u32 mdp_iommu_max_map_size; -#define MDP4_BW_AB_FACTOR (200) /* 2.00 */ -#define MDP4_BW_IB_FACTOR (210) /* 2.10 */ + +#define MDP4_BW_AB_DEFAULT_FACTOR (200) /* 2.00 */ +#define MDP4_BW_IB_DEFAULT_FACTOR (210) /* 2.10 */ + #define MDP_BUS_SCALE_AB_STEP (0x4000000) #define MDP4_OVERLAYPROC0_BASE 0x10000 diff --git a/drivers/video/msm/mdp4_overlay.c b/drivers/video/msm/mdp4_overlay.c index b3499c7bf4d..69089689d25 100644 --- a/drivers/video/msm/mdp4_overlay.c +++ b/drivers/video/msm/mdp4_overlay.c @@ -3107,10 +3107,12 @@ static int mdp4_calc_pipe_mdp_bw(struct msm_fb_data_type *mfd, quota = pipe->src_w * pipe->src_h * fps * pipe->bpp; quota >>= shift; - /* factor 1.15 for ab */ - pipe->bw_ab_quota = quota * MDP4_BW_AB_FACTOR / 100; - /* factor 1.25 for ib */ - pipe->bw_ib_quota = quota * MDP4_BW_IB_FACTOR / 100; + + pipe->bw_ab_quota = quota * mdp_bw_ab_factor / 100; + pipe->bw_ib_quota = quota * mdp_bw_ib_factor / 100; + pr_debug("%s max_bw=%llu ab_factor=%d ib_factor=%d\n", __func__, + mdp_max_bw, mdp_bw_ab_factor, mdp_bw_ib_factor); + /* down scaling factor for ib */ if ((pipe->dst_h) && (pipe->src_h) && (pipe->src_h > pipe->dst_h)) { @@ -3161,10 +3163,10 @@ int mdp4_calc_blt_mdp_bw(struct msm_fb_data_type *mfd, quota >>= shift; perf_req->mdp_ov_ab_bw[pipe->mixer_num] = - quota * MDP4_BW_AB_FACTOR / 100; + quota * mdp_bw_ab_factor / 100; perf_req->mdp_ov_ib_bw[pipe->mixer_num] = - quota * MDP4_BW_IB_FACTOR / 100; + quota * mdp_bw_ib_factor / 100; perf_req->mdp_ov_ab_bw[pipe->mixer_num] <<= shift; perf_req->mdp_ov_ib_bw[pipe->mixer_num] <<= shift; @@ -3360,9 +3362,9 @@ int mdp4_overlay_mdp_perf_req(struct msm_fb_data_type *mfd, if(minimum_ab == 0 ||minimum_ib == 0){ minimum_ab = (1920*1080*4*60)>>16; - minimum_ab = (minimum_ab*MDP4_BW_AB_FACTOR/100)<<16; + minimum_ab = (minimum_ab * (u64)(mdp_bw_ab_factor / 100)) << 16; minimum_ib = (1920*1080*4*60)>>16; - minimum_ib = (minimum_ib*MDP4_BW_IB_FACTOR/100)<<16; + minimum_ib = (minimum_ib * (u64)(mdp_bw_ib_factor / 100)) << 16; } /* diff --git a/drivers/video/msm/mipi_samsung_octa_video_full_hd_pt.c b/drivers/video/msm/mipi_samsung_octa_video_full_hd_pt.c index f68a0cd6cca..2fb21d2173f 100644 --- a/drivers/video/msm/mipi_samsung_octa_video_full_hd_pt.c +++ b/drivers/video/msm/mipi_samsung_octa_video_full_hd_pt.c @@ -2028,7 +2028,7 @@ static int __init mipi_video_samsung_octa_full_hd_pt_init(void) pinfo.lcdc.v_pulse_width = 2; pinfo.lcdc.border_clr = 0; /* blk */ - pinfo.lcdc.underflow_clr = 0x0; /* black */ + pinfo.lcdc.underflow_clr = 0xff1493; /* hot pink */ pinfo.lcdc.hsync_skew = 0; pinfo.bl_max = 255;