drm/omap: Call dispc timings check operation directly
Instead of call the dispc timings check function dispc_mgr_timings_ok() from the internal encoders .check_timings() operation, expose it through the dispc ops (after renaming it to check_timings) and call it directly from omapdrm. This allows removal of now empty omap_dss_device .check_timings() operations. Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com> Reviewed-by: Sebastian Reichel <sebastian.reichel@collabora.co.uk> Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
This commit is contained in:

committed by
Tomi Valkeinen

parent
3fbda31e81
commit
7c27fa57ef
@@ -3113,28 +3113,29 @@ static bool _dispc_mgr_pclk_ok(struct dispc_device *dispc,
|
||||
return pclk <= dispc->feat->max_tv_pclk;
|
||||
}
|
||||
|
||||
bool dispc_mgr_timings_ok(struct dispc_device *dispc, enum omap_channel channel,
|
||||
const struct videomode *vm)
|
||||
static int dispc_mgr_check_timings(struct dispc_device *dispc,
|
||||
enum omap_channel channel,
|
||||
const struct videomode *vm)
|
||||
{
|
||||
if (!_dispc_mgr_size_ok(dispc, vm->hactive, vm->vactive))
|
||||
return false;
|
||||
return MODE_BAD;
|
||||
|
||||
if (!_dispc_mgr_pclk_ok(dispc, channel, vm->pixelclock))
|
||||
return false;
|
||||
return MODE_BAD;
|
||||
|
||||
if (dss_mgr_is_lcd(channel)) {
|
||||
/* TODO: OMAP4+ supports interlace for LCD outputs */
|
||||
if (vm->flags & DISPLAY_FLAGS_INTERLACED)
|
||||
return false;
|
||||
return MODE_BAD;
|
||||
|
||||
if (!_dispc_lcd_timings_ok(dispc, vm->hsync_len,
|
||||
vm->hfront_porch, vm->hback_porch,
|
||||
vm->vsync_len, vm->vfront_porch,
|
||||
vm->vback_porch))
|
||||
return false;
|
||||
return MODE_BAD;
|
||||
}
|
||||
|
||||
return true;
|
||||
return MODE_OK;
|
||||
}
|
||||
|
||||
static void _dispc_mgr_set_lcd_timings(struct dispc_device *dispc,
|
||||
@@ -3236,7 +3237,7 @@ static void dispc_mgr_set_timings(struct dispc_device *dispc,
|
||||
|
||||
DSSDBG("channel %d xres %u yres %u\n", channel, t.hactive, t.vactive);
|
||||
|
||||
if (!dispc_mgr_timings_ok(dispc, channel, &t)) {
|
||||
if (dispc_mgr_check_timings(dispc, channel, &t)) {
|
||||
BUG();
|
||||
return;
|
||||
}
|
||||
@@ -4733,6 +4734,7 @@ static const struct dispc_ops dispc_ops = {
|
||||
.mgr_go_busy = dispc_mgr_go_busy,
|
||||
.mgr_go = dispc_mgr_go,
|
||||
.mgr_set_lcd_config = dispc_mgr_set_lcd_config,
|
||||
.mgr_check_timings = dispc_mgr_check_timings,
|
||||
.mgr_set_timings = dispc_mgr_set_timings,
|
||||
.mgr_setup = dispc_mgr_setup,
|
||||
.mgr_gamma_size = dispc_mgr_gamma_size,
|
||||
|
Reference in New Issue
Block a user