diff options
Diffstat (limited to 'drivers/video/omap2/dss')
-rw-r--r-- | drivers/video/omap2/dss/dispc.c | 43 | ||||
-rw-r--r-- | drivers/video/omap2/dss/dpi.c | 2 | ||||
-rw-r--r-- | drivers/video/omap2/dss/dsi.c | 4 | ||||
-rw-r--r-- | drivers/video/omap2/dss/dss.h | 3 | ||||
-rw-r--r-- | drivers/video/omap2/dss/hdmi.c | 3 | ||||
-rw-r--r-- | drivers/video/omap2/dss/rfbi.c | 4 | ||||
-rw-r--r-- | drivers/video/omap2/dss/sdi.c | 2 | ||||
-rw-r--r-- | drivers/video/omap2/dss/venc.c | 7 |
8 files changed, 37 insertions, 31 deletions
diff --git a/drivers/video/omap2/dss/dispc.c b/drivers/video/omap2/dss/dispc.c index ac9bf750e77..d6a4b31fa0b 100644 --- a/drivers/video/omap2/dss/dispc.c +++ b/drivers/video/omap2/dss/dispc.c | |||
@@ -992,7 +992,7 @@ static void dispc_mgr_set_lcd_size(enum omap_channel channel, u16 width, | |||
992 | dispc_write_reg(DISPC_SIZE_MGR(channel), val); | 992 | dispc_write_reg(DISPC_SIZE_MGR(channel), val); |
993 | } | 993 | } |
994 | 994 | ||
995 | void dispc_set_digit_size(u16 width, u16 height) | 995 | static void dispc_mgr_set_digit_size(u16 width, u16 height) |
996 | { | 996 | { |
997 | u32 val; | 997 | u32 val; |
998 | BUG_ON((width > (1 << 11)) || (height > (1 << 11))); | 998 | BUG_ON((width > (1 << 11)) || (height > (1 << 11))); |
@@ -2341,37 +2341,42 @@ static void _dispc_mgr_set_lcd_timings(enum omap_channel channel, int hsw, | |||
2341 | } | 2341 | } |
2342 | 2342 | ||
2343 | /* change name to mode? */ | 2343 | /* change name to mode? */ |
2344 | void dispc_mgr_set_lcd_timings(enum omap_channel channel, | 2344 | void dispc_mgr_set_timings(enum omap_channel channel, |
2345 | struct omap_video_timings *timings) | 2345 | struct omap_video_timings *timings) |
2346 | { | 2346 | { |
2347 | unsigned xtot, ytot; | 2347 | unsigned xtot, ytot; |
2348 | unsigned long ht, vt; | 2348 | unsigned long ht, vt; |
2349 | 2349 | ||
2350 | if (!_dispc_lcd_timings_ok(timings->hsw, timings->hfp, | 2350 | DSSDBG("channel %d xres %u yres %u\n", channel, timings->x_res, |
2351 | timings->hbp, timings->vsw, | 2351 | timings->y_res); |
2352 | timings->vfp, timings->vbp)) | 2352 | |
2353 | BUG(); | 2353 | if (dispc_mgr_is_lcd(channel)) { |
2354 | if (!dispc_lcd_timings_ok(timings)) | ||
2355 | BUG(); | ||
2354 | 2356 | ||
2355 | _dispc_mgr_set_lcd_timings(channel, timings->hsw, timings->hfp, | 2357 | _dispc_mgr_set_lcd_timings(channel, timings->hsw, timings->hfp, |
2356 | timings->hbp, timings->vsw, timings->vfp, | 2358 | timings->hbp, timings->vsw, timings->vfp, |
2357 | timings->vbp); | 2359 | timings->vbp); |
2358 | 2360 | ||
2359 | dispc_mgr_set_lcd_size(channel, timings->x_res, timings->y_res); | 2361 | dispc_mgr_set_lcd_size(channel, timings->x_res, timings->y_res); |
2360 | 2362 | ||
2361 | xtot = timings->x_res + timings->hfp + timings->hsw + timings->hbp; | 2363 | xtot = timings->x_res + timings->hfp + timings->hsw + |
2362 | ytot = timings->y_res + timings->vfp + timings->vsw + timings->vbp; | 2364 | timings->hbp; |
2365 | ytot = timings->y_res + timings->vfp + timings->vsw + | ||
2366 | timings->vbp; | ||
2363 | 2367 | ||
2364 | ht = (timings->pixel_clock * 1000) / xtot; | 2368 | ht = (timings->pixel_clock * 1000) / xtot; |
2365 | vt = (timings->pixel_clock * 1000) / xtot / ytot; | 2369 | vt = (timings->pixel_clock * 1000) / xtot / ytot; |
2366 | 2370 | ||
2367 | DSSDBG("channel %d xres %u yres %u\n", channel, timings->x_res, | 2371 | DSSDBG("pck %u\n", timings->pixel_clock); |
2368 | timings->y_res); | 2372 | DSSDBG("hsw %d hfp %d hbp %d vsw %d vfp %d vbp %d\n", |
2369 | DSSDBG("pck %u\n", timings->pixel_clock); | ||
2370 | DSSDBG("hsw %d hfp %d hbp %d vsw %d vfp %d vbp %d\n", | ||
2371 | timings->hsw, timings->hfp, timings->hbp, | 2373 | timings->hsw, timings->hfp, timings->hbp, |
2372 | timings->vsw, timings->vfp, timings->vbp); | 2374 | timings->vsw, timings->vfp, timings->vbp); |
2373 | 2375 | ||
2374 | DSSDBG("hsync %luHz, vsync %luHz\n", ht, vt); | 2376 | DSSDBG("hsync %luHz, vsync %luHz\n", ht, vt); |
2377 | } else { | ||
2378 | dispc_mgr_set_digit_size(timings->x_res, timings->y_res); | ||
2379 | } | ||
2375 | } | 2380 | } |
2376 | 2381 | ||
2377 | static void dispc_mgr_set_lcd_divisor(enum omap_channel channel, u16 lck_div, | 2382 | static void dispc_mgr_set_lcd_divisor(enum omap_channel channel, u16 lck_div, |
diff --git a/drivers/video/omap2/dss/dpi.c b/drivers/video/omap2/dss/dpi.c index faaf305fda2..7dd7f9d2590 100644 --- a/drivers/video/omap2/dss/dpi.c +++ b/drivers/video/omap2/dss/dpi.c | |||
@@ -156,7 +156,7 @@ static int dpi_set_mode(struct omap_dss_device *dssdev) | |||
156 | t->pixel_clock = pck; | 156 | t->pixel_clock = pck; |
157 | } | 157 | } |
158 | 158 | ||
159 | dispc_mgr_set_lcd_timings(dssdev->manager->id, t); | 159 | dispc_mgr_set_timings(dssdev->manager->id, t); |
160 | 160 | ||
161 | return 0; | 161 | return 0; |
162 | } | 162 | } |
diff --git a/drivers/video/omap2/dss/dsi.c b/drivers/video/omap2/dss/dsi.c index 0d2c53f4271..b6cf03cc922 100644 --- a/drivers/video/omap2/dss/dsi.c +++ b/drivers/video/omap2/dss/dsi.c | |||
@@ -4219,12 +4219,12 @@ static int dsi_display_init_dispc(struct omap_dss_device *dssdev) | |||
4219 | dispc_mgr_enable_stallmode(dssdev->manager->id, true); | 4219 | dispc_mgr_enable_stallmode(dssdev->manager->id, true); |
4220 | dispc_mgr_enable_fifohandcheck(dssdev->manager->id, 1); | 4220 | dispc_mgr_enable_fifohandcheck(dssdev->manager->id, 1); |
4221 | 4221 | ||
4222 | dispc_mgr_set_lcd_timings(dssdev->manager->id, &timings); | 4222 | dispc_mgr_set_timings(dssdev->manager->id, &timings); |
4223 | } else { | 4223 | } else { |
4224 | dispc_mgr_enable_stallmode(dssdev->manager->id, false); | 4224 | dispc_mgr_enable_stallmode(dssdev->manager->id, false); |
4225 | dispc_mgr_enable_fifohandcheck(dssdev->manager->id, 0); | 4225 | dispc_mgr_enable_fifohandcheck(dssdev->manager->id, 0); |
4226 | 4226 | ||
4227 | dispc_mgr_set_lcd_timings(dssdev->manager->id, | 4227 | dispc_mgr_set_timings(dssdev->manager->id, |
4228 | &dssdev->panel.timings); | 4228 | &dssdev->panel.timings); |
4229 | } | 4229 | } |
4230 | 4230 | ||
diff --git a/drivers/video/omap2/dss/dss.h b/drivers/video/omap2/dss/dss.h index e8dea7485f7..da91822b596 100644 --- a/drivers/video/omap2/dss/dss.h +++ b/drivers/video/omap2/dss/dss.h | |||
@@ -407,7 +407,6 @@ void dispc_disable_sidle(void); | |||
407 | void dispc_lcd_enable_signal_polarity(bool act_high); | 407 | void dispc_lcd_enable_signal_polarity(bool act_high); |
408 | void dispc_lcd_enable_signal(bool enable); | 408 | void dispc_lcd_enable_signal(bool enable); |
409 | void dispc_pck_free_enable(bool enable); | 409 | void dispc_pck_free_enable(bool enable); |
410 | void dispc_set_digit_size(u16 width, u16 height); | ||
411 | void dispc_enable_fifomerge(bool enable); | 410 | void dispc_enable_fifomerge(bool enable); |
412 | void dispc_enable_gamma_table(bool enable); | 411 | void dispc_enable_gamma_table(bool enable); |
413 | void dispc_set_loadmode(enum omap_dss_load_mode mode); | 412 | void dispc_set_loadmode(enum omap_dss_load_mode mode); |
@@ -442,7 +441,7 @@ void dispc_mgr_enable_stallmode(enum omap_channel channel, bool enable); | |||
442 | void dispc_mgr_set_tft_data_lines(enum omap_channel channel, u8 data_lines); | 441 | void dispc_mgr_set_tft_data_lines(enum omap_channel channel, u8 data_lines); |
443 | void dispc_mgr_set_lcd_display_type(enum omap_channel channel, | 442 | void dispc_mgr_set_lcd_display_type(enum omap_channel channel, |
444 | enum omap_lcd_display_type type); | 443 | enum omap_lcd_display_type type); |
445 | void dispc_mgr_set_lcd_timings(enum omap_channel channel, | 444 | void dispc_mgr_set_timings(enum omap_channel channel, |
446 | struct omap_video_timings *timings); | 445 | struct omap_video_timings *timings); |
447 | void dispc_mgr_set_pol_freq(enum omap_channel channel, | 446 | void dispc_mgr_set_pol_freq(enum omap_channel channel, |
448 | enum omap_panel_config config, u8 acbi, u8 acb); | 447 | enum omap_panel_config config, u8 acbi, u8 acb); |
diff --git a/drivers/video/omap2/dss/hdmi.c b/drivers/video/omap2/dss/hdmi.c index c4b4f6950a9..56f6e9ce126 100644 --- a/drivers/video/omap2/dss/hdmi.c +++ b/drivers/video/omap2/dss/hdmi.c | |||
@@ -376,8 +376,7 @@ static int hdmi_power_on(struct omap_dss_device *dssdev) | |||
376 | dispc_enable_gamma_table(0); | 376 | dispc_enable_gamma_table(0); |
377 | 377 | ||
378 | /* tv size */ | 378 | /* tv size */ |
379 | dispc_set_digit_size(dssdev->panel.timings.x_res, | 379 | dispc_mgr_set_timings(dssdev->manager->id, &dssdev->panel.timings); |
380 | dssdev->panel.timings.y_res); | ||
381 | 380 | ||
382 | hdmi.ip_data.ops->video_enable(&hdmi.ip_data, 1); | 381 | hdmi.ip_data.ops->video_enable(&hdmi.ip_data, 1); |
383 | 382 | ||
diff --git a/drivers/video/omap2/dss/rfbi.c b/drivers/video/omap2/dss/rfbi.c index 97b6c4a2bce..a81ffcbfa68 100644 --- a/drivers/video/omap2/dss/rfbi.c +++ b/drivers/video/omap2/dss/rfbi.c | |||
@@ -320,7 +320,7 @@ static void rfbi_transfer_area(struct omap_dss_device *dssdev, u16 width, | |||
320 | 320 | ||
321 | DSSDBG("rfbi_transfer_area %dx%d\n", width, height); | 321 | DSSDBG("rfbi_transfer_area %dx%d\n", width, height); |
322 | 322 | ||
323 | dispc_mgr_set_lcd_timings(dssdev->manager->id, &timings); | 323 | dispc_mgr_set_timings(dssdev->manager->id, &timings); |
324 | 324 | ||
325 | dispc_mgr_enable(dssdev->manager->id, true); | 325 | dispc_mgr_enable(dssdev->manager->id, true); |
326 | 326 | ||
@@ -804,7 +804,7 @@ int omap_rfbi_prepare_update(struct omap_dss_device *dssdev, | |||
804 | if (*w == 0 || *h == 0) | 804 | if (*w == 0 || *h == 0) |
805 | return -EINVAL; | 805 | return -EINVAL; |
806 | 806 | ||
807 | dispc_mgr_set_lcd_timings(dssdev->manager->id, &timings); | 807 | dispc_mgr_set_timings(dssdev->manager->id, &timings); |
808 | 808 | ||
809 | return 0; | 809 | return 0; |
810 | } | 810 | } |
diff --git a/drivers/video/omap2/dss/sdi.c b/drivers/video/omap2/dss/sdi.c index 8266ca0d666..741b8341439 100644 --- a/drivers/video/omap2/dss/sdi.c +++ b/drivers/video/omap2/dss/sdi.c | |||
@@ -107,7 +107,7 @@ int omapdss_sdi_display_enable(struct omap_dss_device *dssdev) | |||
107 | } | 107 | } |
108 | 108 | ||
109 | 109 | ||
110 | dispc_mgr_set_lcd_timings(dssdev->manager->id, t); | 110 | dispc_mgr_set_timings(dssdev->manager->id, t); |
111 | 111 | ||
112 | r = dss_set_clock_div(&dss_cinfo); | 112 | r = dss_set_clock_div(&dss_cinfo); |
113 | if (r) | 113 | if (r) |
diff --git a/drivers/video/omap2/dss/venc.c b/drivers/video/omap2/dss/venc.c index 13a20da8ea9..30bbb63421b 100644 --- a/drivers/video/omap2/dss/venc.c +++ b/drivers/video/omap2/dss/venc.c | |||
@@ -421,6 +421,7 @@ static int venc_power_on(struct omap_dss_device *dssdev) | |||
421 | { | 421 | { |
422 | u32 l; | 422 | u32 l; |
423 | int r; | 423 | int r; |
424 | struct omap_video_timings timings; | ||
424 | 425 | ||
425 | venc_reset(); | 426 | venc_reset(); |
426 | venc_write_config(venc_timings_to_config(&dssdev->panel.timings)); | 427 | venc_write_config(venc_timings_to_config(&dssdev->panel.timings)); |
@@ -440,8 +441,10 @@ static int venc_power_on(struct omap_dss_device *dssdev) | |||
440 | 441 | ||
441 | venc_write_reg(VENC_OUTPUT_CONTROL, l); | 442 | venc_write_reg(VENC_OUTPUT_CONTROL, l); |
442 | 443 | ||
443 | dispc_set_digit_size(dssdev->panel.timings.x_res, | 444 | timings = dssdev->panel.timings; |
444 | dssdev->panel.timings.y_res/2); | 445 | timings.y_res /= 2; |
446 | |||
447 | dispc_mgr_set_timings(dssdev->manager->id, &timings); | ||
445 | 448 | ||
446 | r = regulator_enable(venc.vdda_dac_reg); | 449 | r = regulator_enable(venc.vdda_dac_reg); |
447 | if (r) | 450 | if (r) |