On Tue, 2012-06-26 at 15:06 +0530, Archit Taneja wrote:
> 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 <arc...@ti.com>
> ---
>  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

Attachment: signature.asc
Description: This is a digitally signed message part

Reply via email to