static int mipi_dsi_cmd_trigger(struct msm_panel_info *pinfo, struct fbcon_config *fb) { unsigned short display_wd = pinfo->xres; unsigned short display_ht = pinfo->yres; unsigned short image_wd = pinfo->xres; unsigned short image_ht = pinfo->yres; unsigned short dst_format = 0; unsigned short traffic_mode = 0; unsigned short num_of_lanes = pinfo->mipi.num_of_lanes; mdp_dsi_cmd_config(pinfo, fb); mdelay(50); config_dsi_cmd_mode(display_wd, display_ht, image_wd, image_ht, dst_format, traffic_mode, num_of_lanes, /* num_of_lanes */ pinfo->mipi.rgb_swap); mdelay(34); // set fbcon update callback fb->update_start = trigger_mdp_dsi; return 0; }
int msm_display_config(void) { int ret = NO_ERROR; struct msm_panel_info *pinfo; if (!panel) return ERR_INVALID_ARGS; pinfo = &(panel->panel_info); /* Set MDP revision */ mdp_set_revision(panel->mdp_rev); switch (pinfo->type) { case LVDS_PANEL: dprintf(INFO, "Config LVDS_PANEL.\n"); ret = mdp_lcdc_config(pinfo, &(panel->fb)); if (ret) goto msm_display_config_out; break; case MIPI_VIDEO_PANEL: dprintf(INFO, "Config MIPI_VIDEO_PANEL.\n"); ret = mipi_config(panel); if (ret) goto msm_display_config_out; if (pinfo->early_config) ret = pinfo->early_config((void *)pinfo); ret = mdp_dsi_video_config(pinfo, &(panel->fb)); if (ret) goto msm_display_config_out; break; case MIPI_CMD_PANEL: dprintf(INFO, "Config MIPI_CMD_PANEL.\n"); ret = mipi_config(panel); if (ret) goto msm_display_config_out; ret = mdp_dsi_cmd_config(pinfo, &(panel->fb)); if (ret) goto msm_display_config_out; break; case LCDC_PANEL: dprintf(INFO, "Config LCDC PANEL.\n"); ret = mdp_lcdc_config(pinfo, &(panel->fb)); if (ret) goto msm_display_config_out; break; case HDMI_PANEL: dprintf(INFO, "Config HDMI PANEL.\n"); ret = hdmi_dtv_init(); if (ret) goto msm_display_config_out; break; default: return ERR_INVALID_ARGS; }; if (pinfo->config) ret = pinfo->config((void *)pinfo); msm_display_config_out: return ret; }