diff options
-rw-r--r-- | drivers/video/omap2/dss/dsi.c | 44 | ||||
-rw-r--r-- | include/video/omapdss.h | 3 |
2 files changed, 26 insertions, 21 deletions
diff --git a/drivers/video/omap2/dss/dsi.c b/drivers/video/omap2/dss/dsi.c index 06b578036497..e0d43b275e3e 100644 --- a/drivers/video/omap2/dss/dsi.c +++ b/drivers/video/omap2/dss/dsi.c | |||
@@ -3631,17 +3631,14 @@ static void dsi_config_vp_num_line_buffers(struct omap_dss_device *dssdev) | |||
3631 | static void dsi_config_vp_sync_events(struct omap_dss_device *dssdev) | 3631 | static void dsi_config_vp_sync_events(struct omap_dss_device *dssdev) |
3632 | { | 3632 | { |
3633 | struct platform_device *dsidev = dsi_get_dsidev_from_dssdev(dssdev); | 3633 | struct platform_device *dsidev = dsi_get_dsidev_from_dssdev(dssdev); |
3634 | int de_pol = dssdev->panel.dsi_vm_data.vp_de_pol; | ||
3635 | int hsync_pol = dssdev->panel.dsi_vm_data.vp_hsync_pol; | ||
3636 | int vsync_pol = dssdev->panel.dsi_vm_data.vp_vsync_pol; | ||
3637 | bool vsync_end = dssdev->panel.dsi_vm_data.vp_vsync_end; | 3634 | bool vsync_end = dssdev->panel.dsi_vm_data.vp_vsync_end; |
3638 | bool hsync_end = dssdev->panel.dsi_vm_data.vp_hsync_end; | 3635 | bool hsync_end = dssdev->panel.dsi_vm_data.vp_hsync_end; |
3639 | u32 r; | 3636 | u32 r; |
3640 | 3637 | ||
3641 | r = dsi_read_reg(dsidev, DSI_CTRL); | 3638 | r = dsi_read_reg(dsidev, DSI_CTRL); |
3642 | r = FLD_MOD(r, de_pol, 9, 9); /* VP_DE_POL */ | 3639 | r = FLD_MOD(r, 1, 9, 9); /* VP_DE_POL */ |
3643 | r = FLD_MOD(r, hsync_pol, 10, 10); /* VP_HSYNC_POL */ | 3640 | r = FLD_MOD(r, 1, 10, 10); /* VP_HSYNC_POL */ |
3644 | r = FLD_MOD(r, vsync_pol, 11, 11); /* VP_VSYNC_POL */ | 3641 | r = FLD_MOD(r, 1, 11, 11); /* VP_VSYNC_POL */ |
3645 | r = FLD_MOD(r, 1, 15, 15); /* VP_VSYNC_START */ | 3642 | r = FLD_MOD(r, 1, 15, 15); /* VP_VSYNC_START */ |
3646 | r = FLD_MOD(r, vsync_end, 16, 16); /* VP_VSYNC_END */ | 3643 | r = FLD_MOD(r, vsync_end, 16, 16); /* VP_VSYNC_END */ |
3647 | r = FLD_MOD(r, 1, 17, 17); /* VP_HSYNC_START */ | 3644 | r = FLD_MOD(r, 1, 17, 17); /* VP_HSYNC_START */ |
@@ -4343,22 +4340,22 @@ EXPORT_SYMBOL(omap_dsi_update); | |||
4343 | static int dsi_display_init_dispc(struct omap_dss_device *dssdev) | 4340 | static int dsi_display_init_dispc(struct omap_dss_device *dssdev) |
4344 | { | 4341 | { |
4345 | int r; | 4342 | int r; |
4343 | struct omap_video_timings timings; | ||
4346 | 4344 | ||
4347 | if (dssdev->panel.dsi_mode == OMAP_DSS_DSI_CMD_MODE) { | 4345 | if (dssdev->panel.dsi_mode == OMAP_DSS_DSI_CMD_MODE) { |
4348 | u16 dw, dh; | 4346 | u16 dw, dh; |
4349 | u32 irq; | 4347 | u32 irq; |
4350 | struct omap_video_timings timings = { | ||
4351 | .hsw = 1, | ||
4352 | .hfp = 1, | ||
4353 | .hbp = 1, | ||
4354 | .vsw = 1, | ||
4355 | .vfp = 0, | ||
4356 | .vbp = 0, | ||
4357 | }; | ||
4358 | 4348 | ||
4359 | dssdev->driver->get_resolution(dssdev, &dw, &dh); | 4349 | dssdev->driver->get_resolution(dssdev, &dw, &dh); |
4350 | |||
4360 | timings.x_res = dw; | 4351 | timings.x_res = dw; |
4361 | timings.y_res = dh; | 4352 | timings.y_res = dh; |
4353 | timings.hsw = 1; | ||
4354 | timings.hfp = 1; | ||
4355 | timings.hbp = 1; | ||
4356 | timings.vsw = 1; | ||
4357 | timings.vfp = 0; | ||
4358 | timings.vbp = 0; | ||
4362 | 4359 | ||
4363 | irq = dispc_mgr_get_framedone_irq(dssdev->manager->id); | 4360 | irq = dispc_mgr_get_framedone_irq(dssdev->manager->id); |
4364 | 4361 | ||
@@ -4371,15 +4368,26 @@ static int dsi_display_init_dispc(struct omap_dss_device *dssdev) | |||
4371 | 4368 | ||
4372 | dispc_mgr_enable_stallmode(dssdev->manager->id, true); | 4369 | dispc_mgr_enable_stallmode(dssdev->manager->id, true); |
4373 | dispc_mgr_enable_fifohandcheck(dssdev->manager->id, 1); | 4370 | dispc_mgr_enable_fifohandcheck(dssdev->manager->id, 1); |
4374 | |||
4375 | dss_mgr_set_timings(dssdev->manager, &timings); | ||
4376 | } else { | 4371 | } else { |
4372 | timings = dssdev->panel.timings; | ||
4373 | |||
4377 | dispc_mgr_enable_stallmode(dssdev->manager->id, false); | 4374 | dispc_mgr_enable_stallmode(dssdev->manager->id, false); |
4378 | dispc_mgr_enable_fifohandcheck(dssdev->manager->id, 0); | 4375 | dispc_mgr_enable_fifohandcheck(dssdev->manager->id, 0); |
4379 | |||
4380 | dss_mgr_set_timings(dssdev->manager, &dssdev->panel.timings); | ||
4381 | } | 4376 | } |
4382 | 4377 | ||
4378 | /* | ||
4379 | * override interlace, logic level and edge related parameters in | ||
4380 | * omap_video_timings with default values | ||
4381 | */ | ||
4382 | timings.interlace = false; | ||
4383 | timings.hsync_level = OMAPDSS_SIG_ACTIVE_HIGH; | ||
4384 | timings.vsync_level = OMAPDSS_SIG_ACTIVE_HIGH; | ||
4385 | timings.data_pclk_edge = OMAPDSS_DRIVE_SIG_RISING_EDGE; | ||
4386 | timings.de_level = OMAPDSS_SIG_ACTIVE_HIGH; | ||
4387 | timings.sync_pclk_edge = OMAPDSS_DRIVE_SIG_OPPOSITE_EDGES; | ||
4388 | |||
4389 | dss_mgr_set_timings(dssdev->manager, &timings); | ||
4390 | |||
4383 | dispc_mgr_set_lcd_type_tft(dssdev->manager->id); | 4391 | dispc_mgr_set_lcd_type_tft(dssdev->manager->id); |
4384 | 4392 | ||
4385 | dispc_mgr_set_tft_data_lines(dssdev->manager->id, | 4393 | dispc_mgr_set_tft_data_lines(dssdev->manager->id, |
diff --git a/include/video/omapdss.h b/include/video/omapdss.h index d8ab94485c97..a6267a2d292b 100644 --- a/include/video/omapdss.h +++ b/include/video/omapdss.h | |||
@@ -261,9 +261,6 @@ struct omap_dss_dsi_videomode_data { | |||
261 | int hfp_blanking_mode; | 261 | int hfp_blanking_mode; |
262 | 262 | ||
263 | /* Video port sync events */ | 263 | /* Video port sync events */ |
264 | int vp_de_pol; | ||
265 | int vp_hsync_pol; | ||
266 | int vp_vsync_pol; | ||
267 | bool vp_vsync_end; | 264 | bool vp_vsync_end; |
268 | bool vp_hsync_end; | 265 | bool vp_hsync_end; |
269 | 266 | ||