void gcdb_display_init(uint32_t rev, void *base) { if (!oem_panel_select(&panelstruct, &(panel.panel_info), &dsi_video_mode_phy_db)) { dprintf(CRITICAL, "Target panel init not found!\n"); return; } init_platform_data(); if (dsi_panel_init(&(panel.panel_info), &panelstruct)) { dprintf(CRITICAL, "DSI panel init failed!\n"); return; } panel.panel_info.mipi.mdss_dsi_phy_db = &dsi_video_mode_phy_db; panel.pll_clk_func = mdss_dsi_panel_clock; panel.power_func = mdss_dsi_panel_power; panel.fb.base = base; panel.fb.width = panel.panel_info.xres; panel.fb.height = panel.panel_info.yres; panel.fb.stride = panel.panel_info.xres; panel.fb.bpp = panel.panel_info.bpp; panel.fb.format = panel.panel_info.mipi.dst_format; panel.mdp_rev = rev; if (msm_display_init(&panel)) { dprintf(CRITICAL, "Display init failed!\n"); return; } display_enable = 1; }
int gcdb_display_init(const char *panel_name, uint32_t rev, void *base) { int ret = NO_ERROR; int pan_type; dsi_video_mode_phy_db.pll_type = DSI_PLL_TYPE_28NM; pan_type = oem_panel_select(panel_name, &panelstruct, &(panel.panel_info), &dsi_video_mode_phy_db); if (pan_type == PANEL_TYPE_DSI) { target_dsi_phy_config(&dsi_video_mode_phy_db); mdss_dsi_set_pll_src(); if (dsi_panel_init(&(panel.panel_info), &panelstruct)) { dprintf(CRITICAL, "DSI panel init failed!\n"); ret = ERROR; goto error_gcdb_display_init; } panel.panel_info.mipi.mdss_dsi_phy_db = &dsi_video_mode_phy_db; panel.pll_clk_func = mdss_dsi_panel_clock; panel.dfps_func = mdss_dsi_mipi_dfps_config; panel.power_func = mdss_dsi_panel_power; panel.pre_init_func = mdss_dsi_panel_pre_init; panel.bl_func = mdss_dsi_bl_enable; panel.dsi2HDMI_config = mdss_dsi2HDMI_config; /* * If dfps enabled, reserve fb memory to store pll * codes and pass pll codes values to kernel. */ if (panel.panel_info.dfps.panel_dfps.enabled) { panel.panel_info.dfps.dfps_fb_base = base; base += DFPS_PLL_CODES_SIZE; dprintf(SPEW, "fb_base=0x%p!\n", base); } panel.fb.base = base; panel.fb.width = panel.panel_info.xres; panel.fb.height = panel.panel_info.yres; panel.fb.stride = panel.panel_info.xres; panel.fb.bpp = panel.panel_info.bpp; panel.fb.format = panel.panel_info.mipi.dst_format; } else if (pan_type == PANEL_TYPE_EDP) { mdss_edp_panel_init(&(panel.panel_info)); /* prepare func is set up at edp_panel_init */ panel.clk_func = mdss_edp_panel_clock; panel.power_func = mdss_edp_panel_power; panel.bl_func = mdss_edp_bl_enable; panel.fb.format = FB_FORMAT_RGB888; } else { dprintf(CRITICAL, "Target panel init not found!\n"); ret = ERR_NOT_SUPPORTED; goto error_gcdb_display_init; } panel.fb.base = base; panel.mdp_rev = rev; ret = msm_display_init(&panel); error_gcdb_display_init: display_enable = ret ? 0 : 1; return ret; }