aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/video/omap2/dss
diff options
context:
space:
mode:
authorArchit Taneja <archit@ti.com>2012-06-06 06:55:52 -0400
committerTomi Valkeinen <tomi.valkeinen@ti.com>2012-06-29 03:15:52 -0400
commit8050cbe4cd9a96ff333df718f38830eabab690bd (patch)
treea7e032e93b8521d826755dbd2c6f5b8706e67bb8 /drivers/video/omap2/dss
parent23c8f88e8a140c8435658c369b26c7b60d8fe3c0 (diff)
OMAPDSS: DISPC/APPLY: Use interlace info in manager timings for dispc_ovl_setup()
Currently the interlace parameter passed to dispc_ovl_setup() is configured by checking the display type, and set to true if the display type is VENC. This isn't correct as other panels can take interlaced content too. The omap_video_timings struct in manager's private data contains the info whether the panel is in interlaced mode or not. Signed-off-by: Archit Taneja <archit@ti.com>
Diffstat (limited to 'drivers/video/omap2/dss')
-rw-r--r--drivers/video/omap2/dss/apply.c6
-rw-r--r--drivers/video/omap2/dss/dispc.c4
-rw-r--r--drivers/video/omap2/dss/dss.h3
3 files changed, 5 insertions, 8 deletions
diff --git a/drivers/video/omap2/dss/apply.c b/drivers/video/omap2/dss/apply.c
index ab22cc224f3e..3ce7a3ec6224 100644
--- a/drivers/video/omap2/dss/apply.c
+++ b/drivers/video/omap2/dss/apply.c
@@ -537,7 +537,7 @@ static void dss_ovl_write_regs(struct omap_overlay *ovl)
537{ 537{
538 struct ovl_priv_data *op = get_ovl_priv(ovl); 538 struct ovl_priv_data *op = get_ovl_priv(ovl);
539 struct omap_overlay_info *oi; 539 struct omap_overlay_info *oi;
540 bool ilace, replication; 540 bool replication;
541 struct mgr_priv_data *mp; 541 struct mgr_priv_data *mp;
542 int r; 542 int r;
543 543
@@ -552,9 +552,7 @@ static void dss_ovl_write_regs(struct omap_overlay *ovl)
552 552
553 replication = dss_use_replication(ovl->manager->device, oi->color_mode); 553 replication = dss_use_replication(ovl->manager->device, oi->color_mode);
554 554
555 ilace = ovl->manager->device->type == OMAP_DISPLAY_TYPE_VENC; 555 r = dispc_ovl_setup(ovl->id, oi, replication, &mp->timings);
556
557 r = dispc_ovl_setup(ovl->id, oi, ilace, replication, &mp->timings);
558 if (r) { 556 if (r) {
559 /* 557 /*
560 * We can't do much here, as this function can be called from 558 * We can't do much here, as this function can be called from
diff --git a/drivers/video/omap2/dss/dispc.c b/drivers/video/omap2/dss/dispc.c
index d200f446840f..d1a7a0c90289 100644
--- a/drivers/video/omap2/dss/dispc.c
+++ b/drivers/video/omap2/dss/dispc.c
@@ -2157,8 +2157,7 @@ static int dispc_ovl_calc_scaling(enum omap_plane plane,
2157} 2157}
2158 2158
2159int dispc_ovl_setup(enum omap_plane plane, struct omap_overlay_info *oi, 2159int dispc_ovl_setup(enum omap_plane plane, struct omap_overlay_info *oi,
2160 bool ilace, bool replication, 2160 bool replication, const struct omap_video_timings *mgr_timings)
2161 const struct omap_video_timings *mgr_timings)
2162{ 2161{
2163 struct omap_overlay *ovl = omap_dss_get_overlay(plane); 2162 struct omap_overlay *ovl = omap_dss_get_overlay(plane);
2164 bool five_taps = true; 2163 bool five_taps = true;
@@ -2174,6 +2173,7 @@ int dispc_ovl_setup(enum omap_plane plane, struct omap_overlay_info *oi,
2174 u16 out_width, out_height; 2173 u16 out_width, out_height;
2175 enum omap_channel channel; 2174 enum omap_channel channel;
2176 int x_predecim = 1, y_predecim = 1; 2175 int x_predecim = 1, y_predecim = 1;
2176 bool ilace = mgr_timings->interlace;
2177 2177
2178 channel = dispc_ovl_get_channel_out(plane); 2178 channel = dispc_ovl_get_channel_out(plane);
2179 2179
diff --git a/drivers/video/omap2/dss/dss.h b/drivers/video/omap2/dss/dss.h
index dc0c0a630861..6c5ecf02759e 100644
--- a/drivers/video/omap2/dss/dss.h
+++ b/drivers/video/omap2/dss/dss.h
@@ -403,8 +403,7 @@ void dispc_ovl_compute_fifo_thresholds(enum omap_plane plane,
403 u32 *fifo_low, u32 *fifo_high, bool use_fifomerge, 403 u32 *fifo_low, u32 *fifo_high, bool use_fifomerge,
404 bool manual_update); 404 bool manual_update);
405int dispc_ovl_setup(enum omap_plane plane, struct omap_overlay_info *oi, 405int dispc_ovl_setup(enum omap_plane plane, struct omap_overlay_info *oi,
406 bool ilace, bool replication, 406 bool replication, const struct omap_video_timings *mgr_timings);
407 const struct omap_video_timings *mgr_timings);
408int dispc_ovl_enable(enum omap_plane plane, bool enable); 407int dispc_ovl_enable(enum omap_plane plane, bool enable);
409void dispc_ovl_set_channel_out(enum omap_plane plane, 408void dispc_ovl_set_channel_out(enum omap_plane plane,
410 enum omap_channel channel); 409 enum omap_channel channel);