Hello,
I already finished my module with command mode(board_omap4panda.c dsi.c panel_taal.c).
But I am still not working for video mode.
I find out my problem.
I can send command and data with Low Power mode and High speed mode.
But when I send "dsi_video_enable(dssdev,0x3E)"
CLK lane enter high speed mode.
But Data lane keep high(1.2V).
Do you have some advice to trouble shoot for me ?
source code as below
in board_omap4panda.c
static struct omap_dss_device sdp4430_lcd_device = {
.name = "lcd",
.driver_name = "taal",
.type = OMAP_DISPLAY_TYPE_DSI,
.data = &dsi1_panel,
.phy.dsi = {
.type = OMAP_DSS_DSI_TYPE_VIDEO_MODE,
.clk_lane = 1,
.clk_pol = 0,
.data1_lane = 2,
.data1_pol = 0,
.module = 0,
},
.clocks = {
.dispc = {
.channel = {
/* Logic Clock = 144M Hz*/ //144000000
.lck_div = 1,
/* Pixel Clock = 34.56 MHz */
// .pck_div = 16,
.pck_div= 16 ,
.lcd_clk_src = OMAP_DSS_CLK_SRC_DSI_PLL_HSDIV_DISPC,
},
// .dispc_fclk_src = OMAP_DSS_CLK_SRC_FCK,
.dispc_fclk_src = OMAP_DSS_CLK_SRC_DSI_PLL_HSDIV_DISPC,
},
.dsi = {
.regn = 25, /* Fint = 38.4 / 16 = 2.4 MHz */
.regm = 111, /* DDR Clock = 2.4 M * 2 * regm = 960 MHz */
.regm_dispc = 2, /* PLL1_CLK1 = 144 MHz */
.regm_dsi = 2, /* PLL1_CLK2 = 144 MHz */
.lp_clk_div = 9, /* LP Clock = 10.29 MHz */
.offset_ddr_clk = 0,
.dsi_fclk_src = OMAP_DSS_CLK_SRC_DSI_PLL_HSDIV_DSI, //170.7M Hz
},
},
.channel = OMAP_DSS_CHANNEL_LCD,
.skip_init = false ,
.platform_enable = NULL ,
.platform_disable = NULL ,
};
in panel_taal.c
static struct panel_config panel_configs[] = {
{
.name = "taal",
// .type = PANEL_TAAL,
.type = 0,
.timings = {
.x_res = 320,
.y_res = 480,
.pixel_clock = 10656,
.hsw= 4,
.hfp=10,
.hbp= 3,
.vsw= 2,
.vfp=43,
.vbp= 2,
},
.sleep = {
.sleep_in = 5,
.sleep_out = 5,
.hw_reset = 100,
.enable_te = 100, /* possible panel bug */
},
.reset_sequence = {
.high = 10,
.low = 10,
},
},
};
static int taal_power_on(struct omap_dss_device *dssdev)
{
struct taal_data *td = dev_get_drvdata(&dssdev->dev);
u8 id1, id2, id3;
int r;
r = omapdss_dsi_display_enable(dssdev);
if (r) {
dev_err(&dssdev->dev, "failed to enable DSI\n");
goto err0;
}
taal_hw_reset(dssdev);
omapdss_dsi_vc_enable_hs(dssdev, td->channel, false);
r = taal_dcs_write_1(td, 0x3A, 0x66);
if (r)
goto err;
r = taal_dcs_write_0(td, DCS_DISPLAY_ON);
if (r)
goto err;
td->enabled = 1;
if (!td->intro_printed) {
dev_info(&dssdev->dev, "%s panel revision %02x.%02x.%02x\n",
td->panel_config->name, id1, id2, id3);
if (td->cabc_broken)
dev_info(&dssdev->dev,
"old Taal version, CABC disabled\n");
td->intro_printed = true;
}
// dsi_video_mode_enable(dssdev,0x1e);
omapdss_dsi_vc_enable_hs(dssdev, td->channel, true);
dsi_video_mode_enable(dssdev,0x3E);
return 0;
err:
dev_err(&dssdev->dev, "error while enabling panel, issuing HW reset\n");
taal_hw_reset(dssdev);
omapdss_dsi_display_disable(dssdev, true, false);
err0:
return r;
}