From f4ae45e8d5db27f66f1db7ba2a9578e002acb9ac Mon Sep 17 00:00:00 2001 From: Guchun Chen Date: Thu, 6 Jul 2017 11:16:40 +0800 Subject: [PATCH] msm: sde: fix kernel booting failure in sde driver This issue is caused by change 1974734. With that change, kernel booting will fail in sde driver. [drm:sde_wb_drm_init:601] [sde error]invalid params [drm:_sde_kms_setup_displays:691] [sde error]wb bridge 0 init failed, -22 [drm:_sde_init_phy_plane:2663] [sde error][5]no valid formats for plane [drm:sde_plane_init:2746] [sde error]_sde_init_phy_plane error vp=0 [drm:_sde_kms_drm_obj_init:861] [sde error]sde_plane_init failed [drm:sde_kms_hw_init:1288] [sde error]modeset init failed: -22 msm_drm 900000.qcom,mdss_mdp: kms hw init failed: -22 sblk->format_list should be put back to _sde_sspp_setup_vig, _sde_sspp_setup_rgb, _sde_sspp_setup_cursor,_sde_sspp_setup_dma and sde_wb_parse_dt, otherwise, it will fail when populating the pixel format which pipe supported in sde_plane_init. Change-Id: I479886d7d7e676a10f8a26bd372aad847dd03163 Signed-off-by: Guchun Chen --- drivers/gpu/drm/msm/sde/sde_hw_catalog.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/drivers/gpu/drm/msm/sde/sde_hw_catalog.c b/drivers/gpu/drm/msm/sde/sde_hw_catalog.c index eb398fbee816..d308e06b0a50 100644 --- a/drivers/gpu/drm/msm/sde/sde_hw_catalog.c +++ b/drivers/gpu/drm/msm/sde/sde_hw_catalog.c @@ -689,6 +689,7 @@ static void _sde_sspp_setup_vig(struct sde_mdss_cfg *sde_cfg, { sblk->maxupscale = MAX_SSPP_UPSCALE; sblk->maxdwnscale = MAX_SSPP_DOWNSCALE; + sblk->format_list = plane_formats_yuv; sspp->id = SSPP_VIG0 + *vig_count; sspp->clk_ctrl = SDE_CLK_CTRL_VIG0 + *vig_count; sspp->type = SSPP_TYPE_VIG; @@ -759,6 +760,7 @@ static void _sde_sspp_setup_rgb(struct sde_mdss_cfg *sde_cfg, { sblk->maxupscale = MAX_SSPP_UPSCALE; sblk->maxdwnscale = MAX_SSPP_DOWNSCALE; + sblk->format_list = plane_formats; sspp->id = SSPP_RGB0 + *rgb_count; sspp->clk_ctrl = SDE_CLK_CTRL_RGB0 + *rgb_count; sspp->type = SSPP_TYPE_RGB; @@ -799,6 +801,7 @@ static void _sde_sspp_setup_cursor(struct sde_mdss_cfg *sde_cfg, set_bit(SDE_SSPP_CURSOR, &sspp->features); sblk->maxupscale = SSPP_UNITY_SCALE; sblk->maxdwnscale = SSPP_UNITY_SCALE; + sblk->format_list = cursor_formats; sspp->id = SSPP_CURSOR0 + *cursor_count; sspp->clk_ctrl = SDE_CLK_CTRL_CURSOR0 + *cursor_count; sspp->type = SSPP_TYPE_CURSOR; @@ -812,6 +815,7 @@ static void _sde_sspp_setup_dma(struct sde_mdss_cfg *sde_cfg, { sblk->maxupscale = SSPP_UNITY_SCALE; sblk->maxdwnscale = SSPP_UNITY_SCALE; + sblk->format_list = plane_formats; sspp->id = SSPP_DMA0 + *dma_count; sspp->clk_ctrl = SDE_CLK_CTRL_DMA0 + *dma_count; sspp->type = SSPP_TYPE_DMA; @@ -1291,6 +1295,7 @@ static int sde_wb_parse_dt(struct device_node *np, wb->xin_id = PROP_VALUE_ACCESS(prop_value, WB_XIN_ID, i); wb->vbif_idx = VBIF_NRT; wb->len = PROP_VALUE_ACCESS(prop_value, WB_LEN, 0); + wb->format_list = wb2_formats; if (!prop_exists[WB_LEN]) wb->len = DEFAULT_SDE_HW_BLOCK_LEN; sblk->maxlinewidth = sde_cfg->max_wb_linewidth;