Skip to content

Commit

Permalink
OMAP4: DSS2: HDMI: Use specific HDMI timings structure
Browse files Browse the repository at this point in the history
As hdmi has few additional parameters such as vsync and hsync
polarity which is missing in DSS timing structure, define HDMI timings
structure for hdmi to use instead of OMAP DSS timing structure.

Signed-off-by: Mythri P K <mythripk@ti.com>
Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
  • Loading branch information
Mythri P K authored and Tomi Valkeinen committed Sep 30, 2011
1 parent 7b27da5 commit 38863b7
Show file tree
Hide file tree
Showing 2 changed files with 34 additions and 4 deletions.
23 changes: 20 additions & 3 deletions drivers/video/omap2/dss/hdmi.c
Original file line number Diff line number Diff line change
Expand Up @@ -534,6 +534,21 @@ static int read_edid(struct hdmi_ip_data *ip_data, u8 *pedid, u16 max_length)
return 0;
}

static void copy_hdmi_to_dss_timings(
const struct hdmi_video_timings *hdmi_timings,
struct omap_video_timings *timings)
{
timings->x_res = hdmi_timings->x_res;
timings->y_res = hdmi_timings->y_res;
timings->pixel_clock = hdmi_timings->pixel_clock;
timings->hbp = hdmi_timings->hbp;
timings->hfp = hdmi_timings->hfp;
timings->hsw = hdmi_timings->hsw;
timings->vbp = hdmi_timings->vbp;
timings->vfp = hdmi_timings->vfp;
timings->vsw = hdmi_timings->vsw;
}

static int get_timings_index(void)
{
int code;
Expand All @@ -558,7 +573,7 @@ static struct hdmi_cm hdmi_get_code(struct omap_video_timings *timing)
{
int i = 0, code = -1, temp_vsync = 0, temp_hsync = 0;
int timing_vsync = 0, timing_hsync = 0;
struct omap_video_timings temp;
struct hdmi_video_timings temp;
struct hdmi_cm cm = {-1};
DSSDBG("hdmi_get_code\n");

Expand Down Expand Up @@ -716,7 +731,8 @@ static void hdmi_read_edid(struct omap_video_timings *dp)

code = get_timings_index();

*dp = cea_vesa_timings[code].timings;
copy_hdmi_to_dss_timings(&cea_vesa_timings[code].timings, dp);

}

static void hdmi_core_init(struct hdmi_core_video_config *video_cfg,
Expand Down Expand Up @@ -1178,7 +1194,8 @@ static int hdmi_power_on(struct omap_dss_device *dssdev)
hdmi_read_edid(p);
}
code = get_timings_index();
dssdev->panel.timings = cea_vesa_timings[code].timings;
copy_hdmi_to_dss_timings(&cea_vesa_timings[code].timings,
&dssdev->panel.timings);
update_hdmi_timings(&hdmi.ip_data.cfg, p, code);

phy = p->pixel_clock;
Expand Down
15 changes: 14 additions & 1 deletion drivers/video/omap2/dss/hdmi.h
Original file line number Diff line number Diff line change
Expand Up @@ -198,9 +198,22 @@ struct hdmi_reg { u16 idx; };
#define REG_GET(base, idx, start, end) \
FLD_GET(hdmi_read_reg(base, idx), start, end)

struct hdmi_video_timings {
u16 x_res;
u16 y_res;
/* Unit: KHz */
u32 pixel_clock;
u16 hsw;
u16 hfp;
u16 hbp;
u16 vsw;
u16 vfp;
u16 vbp;
};

/* HDMI timing structure */
struct hdmi_timings {
struct omap_video_timings timings;
struct hdmi_video_timings timings;
int vsync_pol;
int hsync_pol;
};
Expand Down

0 comments on commit 38863b7

Please sign in to comment.