int32_t sprdfb_dsi_ready(struct sprdfb_device *dev) { struct info_mipi * mipi = dev->panel->info.mipi; if(SPRDFB_MIPI_MODE_CMD == mipi->work_mode){ mipi_dsih_cmd_mode(&(dsi_ctx.dsi_inst), 1); dsi_core_write_function(DSI_CTL_BEGIN, R_DSI_HOST_CMD_MODE_CFG, 0x1); dsi_core_write_function(DSI_CTL_BEGIN, R_DSI_HOST_PHY_IF_CTRL, 0x1); }else{ mipi_dsih_video_mode(&(dsi_ctx.dsi_inst), 1); dsi_core_write_function(DSI_CTL_BEGIN, R_DSI_HOST_PWR_UP, 0); udelay(100); dsi_core_write_function(DSI_CTL_BEGIN, R_DSI_HOST_PWR_UP, 1); udelay(10*1000); dsi_core_read_function(DSI_CTL_BEGIN, R_DSI_HOST_ERROR_ST0); dsi_core_read_function(DSI_CTL_BEGIN, R_DSI_HOST_ERROR_ST1); } return 0; }
int32_t sprdfb_dsi_ready(struct sprdfb_device *dev) { struct info_mipi * mipi = dev->panel->info.mipi; if(SPRDFB_MIPI_MODE_CMD == mipi->work_mode){ mipi_dsih_cmd_mode(&(dsi_ctx.dsi_inst), 1); #ifdef FB_DSIH_VERSION_1P21A mipi_dsih_dphy_enable_hs_clk(&(dsi_ctx.dsi_inst.phy_instance), true); dsi_core_write_function(SPRD_MIPI_DSIC_BASE, R_DSI_HOST_CMD_MODE_CFG, 0x0); #else dsi_core_write_function(SPRD_MIPI_DSIC_BASE, R_DSI_HOST_CMD_MODE_CFG, 0x1); dsi_core_write_function(SPRD_MIPI_DSIC_BASE, R_DSI_HOST_PHY_IF_CTRL, 0x1); #endif }else{ #ifdef FB_DSIH_VERSION_1P21A mipi_dsih_dphy_enable_hs_clk(&(dsi_ctx.dsi_inst.phy_instance), true); #else dsi_core_write_function(SPRD_MIPI_DSIC_BASE, R_DSI_HOST_PHY_IF_CTRL, 0x1); #endif mipi_dsih_video_mode(&(dsi_ctx.dsi_inst), 1); dsi_core_write_function(SPRD_MIPI_DSIC_BASE, R_DSI_HOST_PWR_UP, 0); udelay(100); dsi_core_write_function(SPRD_MIPI_DSIC_BASE, R_DSI_HOST_PWR_UP, 1); usleep_range(3000, 3500); #ifdef FB_DSIH_VERSION_1P21A dsi_core_read_function(SPRD_MIPI_DSIC_BASE, R_DSI_HOST_INT_ST0); dsi_core_read_function(SPRD_MIPI_DSIC_BASE, R_DSI_HOST_INT_ST1); #else dsi_core_read_function(SPRD_MIPI_DSIC_BASE, R_DSI_HOST_ERROR_ST0); dsi_core_read_function(SPRD_MIPI_DSIC_BASE, R_DSI_HOST_ERROR_ST1); #endif } #ifdef FB_DSIH_VERSION_1P21A dsi_core_write_function(SPRD_MIPI_DSIC_BASE, R_DSI_HOST_INT_MSK0, 0x0); dsi_core_write_function(SPRD_MIPI_DSIC_BASE, R_DSI_HOST_INT_MSK1, 0x800); #else dsi_core_write_function(SPRD_MIPI_DSIC_BASE, R_DSI_HOST_ERROR_MSK0, 0x0); dsi_core_write_function(SPRD_MIPI_DSIC_BASE, R_DSI_HOST_ERROR_MSK1, 0x800); #endif return 0; }
static int32_t dsi_ready(struct panel_spec *panel) { struct info_mipi * mipi = panel->info.mipi; if(SPRDFB_MIPI_MODE_CMD == mipi->work_mode){ mipi_dsih_cmd_mode(&(autotst_dsi_ctx.dsi_inst), 1); #ifdef FB_DSIH_VERSION_1P21A mipi_dsih_dphy_enable_hs_clk(&(autotst_dsi_ctx.dsi_inst.phy_instance), true); #else dsi_core_write_function(SPRD_MIPI_DSIC_BASE, R_DSI_HOST_CMD_MODE_CFG, 0x1); dsi_core_write_function(SPRD_MIPI_DSIC_BASE, R_DSI_HOST_PHY_IF_CTRL, 0x1); #endif }else{ #ifdef FB_DSIH_VERSION_1P21A mipi_dsih_dphy_enable_hs_clk(&(autotst_dsi_ctx.dsi_inst.phy_instance), true); #else dsi_core_write_function(SPRD_MIPI_DSIC_BASE, R_DSI_HOST_PHY_IF_CTRL, 0x1); #endif mipi_dsih_video_mode(&(autotst_dsi_ctx.dsi_inst), 1); dsi_core_write_function(SPRD_MIPI_DSIC_BASE, R_DSI_HOST_PWR_UP, 0); udelay(100); dsi_core_write_function(SPRD_MIPI_DSIC_BASE, R_DSI_HOST_PWR_UP, 1); mdelay(3); #ifdef FB_DSIH_VERSION_1P21A dsi_core_read_function(SPRD_MIPI_DSIC_BASE, R_DSI_HOST_INT_ST0); dsi_core_read_function(SPRD_MIPI_DSIC_BASE, R_DSI_HOST_INT_ST1); #else dsi_core_read_function(SPRD_MIPI_DSIC_BASE, R_DSI_HOST_ERROR_ST0); dsi_core_read_function(SPRD_MIPI_DSIC_BASE, R_DSI_HOST_ERROR_ST1); #endif } #ifdef FB_DSIH_VERSION_1P21A //dsi_core_write_function(SPRD_MIPI_DSIC_BASE, R_DSI_HOST_INT_MSK0, 0x0); //dsi_core_write_function(SPRD_MIPI_DSIC_BASE, R_DSI_HOST_INT_MSK1, 0x800); #else //dsi_core_write_function(SPRD_MIPI_DSIC_BASE, R_DSI_HOST_ERROR_MSK0, 0x0); //dsi_core_write_function(SPRD_MIPI_DSIC_BASE, R_DSI_HOST_ERROR_MSK1, 0x800); #endif return 0; }
int32_t sprdfb_dsi_ready(struct sprdfb_device *dev) { struct info_mipi * mipi = dev->panel->info.mipi; if(SPRDFB_MIPI_MODE_CMD == mipi->work_mode){ mipi_dsih_cmd_mode(&(dsi_ctx.dsi_inst), 1); dsi_core_write_function(SPRD_MIPI_DSIC_BASE, R_DSI_HOST_CMD_MODE_CFG, 0x1); dsi_core_write_function(SPRD_MIPI_DSIC_BASE, R_DSI_HOST_PHY_IF_CTRL, 0x1); }else{ dsi_core_write_function(SPRD_MIPI_DSIC_BASE, R_DSI_HOST_PHY_IF_CTRL, 0x1); mipi_dsih_video_mode(&(dsi_ctx.dsi_inst), 1); dsi_core_write_function(SPRD_MIPI_DSIC_BASE, R_DSI_HOST_PWR_UP, 0); udelay(100); dsi_core_write_function(SPRD_MIPI_DSIC_BASE, R_DSI_HOST_PWR_UP, 1); hr_msleep(3); dsi_core_read_function(SPRD_MIPI_DSIC_BASE, R_DSI_HOST_ERROR_ST0); dsi_core_read_function(SPRD_MIPI_DSIC_BASE, R_DSI_HOST_ERROR_ST1); } dsi_core_write_function(SPRD_MIPI_DSIC_BASE, R_DSI_HOST_ERROR_MSK0, 0x0); dsi_core_write_function(SPRD_MIPI_DSIC_BASE, R_DSI_HOST_ERROR_MSK1, 0x800); return 0; }
static int32_t sprdfb_dsi_set_video_mode(void) { mipi_dsih_video_mode(&(dsi_ctx.dsi_inst), 1); return 0; }