Re: [PATCH 17/17] OMAPDSS: DSI: Remove redundant fields in omap_dss_dsi_videomode_data
From: Tomi Valkeinen <hidden>
Date: 2012-06-27 12:05:46
Also in:
linux-omap
On Tue, 2012-06-26 at 15:06 +0530, Archit Taneja wrote:
quoted hunk ↗ jump to hunk
The struct omap_dss_dsi_videomode_data holds polaritiy/logic level information of the DISPC video port signals DE, HSYNC and VSYNC. This information already exists in the omap_video_timings struct. Use the fields in omap_video_timings to program VP_DE_POL, VP_HSYNC_POL and VP_VSYNC_POL in DSI_CTRL. Remove the redundant fields in omap_dss_dsi_videomode_data. Signed-off-by: Archit Taneja <redacted> --- drivers/video/omap2/dss/dsi.c | 11 ++++++++--- include/video/omapdss.h | 3 --- 2 files changed, 8 insertions(+), 6 deletions(-)diff --git a/drivers/video/omap2/dss/dsi.c b/drivers/video/omap2/dss/dsi.c index 061bf53..3844430 100644 --- a/drivers/video/omap2/dss/dsi.c +++ b/drivers/video/omap2/dss/dsi.c@@ -3628,13 +3628,18 @@ static void dsi_config_vp_num_line_buffers(struct omap_dss_device *dssdev) static void dsi_config_vp_sync_events(struct omap_dss_device *dssdev) { struct platform_device *dsidev = dsi_get_dsidev_from_dssdev(dssdev); - int de_pol = dssdev->panel.dsi_vm_data.vp_de_pol; - int hsync_pol = dssdev->panel.dsi_vm_data.vp_hsync_pol; - int vsync_pol = dssdev->panel.dsi_vm_data.vp_vsync_pol; + int de_pol, hsync_pol, vsync_pol; + int de_level = dssdev->panel.timings.de_level; + int hsync_level = dssdev->panel.timings.hsync_level; + int vsync_level = dssdev->panel.timings.vsync_level; bool vsync_end = dssdev->panel.dsi_vm_data.vp_vsync_end; bool hsync_end = dssdev->panel.dsi_vm_data.vp_hsync_end; u32 r; + de_pol = de_level == OMAPDSS_SIG_ACTIVE_HIGH ? 1 : 0; + hsync_pol = hsync_level == OMAPDSS_SIG_ACTIVE_HIGH ? 1 : 0; + vsync_pol = vsync_level == OMAPDSS_SIG_ACTIVE_HIGH ? 1 : 0; + r = dsi_read_reg(dsidev, DSI_CTRL); r = FLD_MOD(r, de_pol, 9, 9); /* VP_DE_POL */ r = FLD_MOD(r, hsync_pol, 10, 10); /* VP_HSYNC_POL */
This patch makes the code cleaner, but I find this DSI sync code a bit strange. The sync polarities between DISPC and DSI do not matter elsewhere, they do not affect the DSI output, so why do we have them in the panel data? Why doesn't dsi.c just use some hardcoded values for these. Tomi
Attachments
- signature.asc [application/pgp-signature] 836 bytes