mirror of
https://github.com/torvalds/linux.git
synced 2024-11-22 20:22:09 +00:00
OMAP: DSS2: move wait_vsync()
Move wait_vsync() from omap_dss_device to overlay manager. This is part of a larger patch-set, which moves the control from omapdss driver to the display driver. Signed-off-by: Tomi Valkeinen <tomi.valkeinen@nokia.com>
This commit is contained in:
parent
87424e1bff
commit
3f71cbe736
@ -370,6 +370,7 @@ struct omap_overlay_manager {
|
||||
|
||||
int (*apply)(struct omap_overlay_manager *mgr);
|
||||
int (*wait_for_go)(struct omap_overlay_manager *mgr);
|
||||
int (*wait_for_vsync)(struct omap_overlay_manager *mgr);
|
||||
};
|
||||
|
||||
struct omap_dss_device {
|
||||
@ -479,7 +480,6 @@ struct omap_dss_device {
|
||||
int (*update)(struct omap_dss_device *dssdev,
|
||||
u16 x, u16 y, u16 w, u16 h);
|
||||
int (*sync)(struct omap_dss_device *dssdev);
|
||||
int (*wait_vsync)(struct omap_dss_device *dssdev);
|
||||
|
||||
int (*set_update_mode)(struct omap_dss_device *dssdev,
|
||||
enum omap_dss_update_mode);
|
||||
|
@ -323,19 +323,6 @@ void default_get_overlay_fifo_thresholds(enum omap_plane plane,
|
||||
*fifo_low = fifo_size - burst_size_bytes;
|
||||
}
|
||||
|
||||
static int default_wait_vsync(struct omap_dss_device *dssdev)
|
||||
{
|
||||
unsigned long timeout = msecs_to_jiffies(500);
|
||||
u32 irq;
|
||||
|
||||
if (dssdev->type == OMAP_DISPLAY_TYPE_VENC)
|
||||
irq = DISPC_IRQ_EVSYNC_ODD;
|
||||
else
|
||||
irq = DISPC_IRQ_VSYNC;
|
||||
|
||||
return omap_dispc_wait_for_irq_interruptible_timeout(irq, timeout);
|
||||
}
|
||||
|
||||
static int default_get_recommended_bpp(struct omap_dss_device *dssdev)
|
||||
{
|
||||
if (dssdev->panel.recommended_bpp)
|
||||
@ -427,7 +414,6 @@ void dss_init_device(struct platform_device *pdev,
|
||||
|
||||
dssdev->get_resolution = default_get_resolution;
|
||||
dssdev->get_recommended_bpp = default_get_recommended_bpp;
|
||||
dssdev->wait_vsync = default_wait_vsync;
|
||||
|
||||
switch (dssdev->type) {
|
||||
case OMAP_DISPLAY_TYPE_DPI:
|
||||
|
@ -501,6 +501,19 @@ static int omap_dss_unset_device(struct omap_overlay_manager *mgr)
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int dss_mgr_wait_for_vsync(struct omap_overlay_manager *mgr)
|
||||
{
|
||||
unsigned long timeout = msecs_to_jiffies(500);
|
||||
u32 irq;
|
||||
|
||||
if (mgr->device->type == OMAP_DISPLAY_TYPE_VENC)
|
||||
irq = DISPC_IRQ_EVSYNC_ODD;
|
||||
else
|
||||
irq = DISPC_IRQ_VSYNC;
|
||||
|
||||
return omap_dispc_wait_for_irq_interruptible_timeout(irq, timeout);
|
||||
}
|
||||
|
||||
static int dss_mgr_wait_for_go(struct omap_overlay_manager *mgr)
|
||||
{
|
||||
unsigned long timeout = msecs_to_jiffies(500);
|
||||
@ -1394,6 +1407,7 @@ int dss_init_overlay_managers(struct platform_device *pdev)
|
||||
mgr->set_manager_info = &omap_dss_mgr_set_info;
|
||||
mgr->get_manager_info = &omap_dss_mgr_get_info;
|
||||
mgr->wait_for_go = &dss_mgr_wait_for_go;
|
||||
mgr->wait_for_vsync = &dss_mgr_wait_for_vsync;
|
||||
|
||||
mgr->caps = OMAP_DSS_OVL_MGR_CAP_DISPC;
|
||||
|
||||
|
@ -649,7 +649,7 @@ int omapfb_ioctl(struct fb_info *fbi, unsigned int cmd, unsigned long arg)
|
||||
break;
|
||||
}
|
||||
|
||||
r = display->wait_vsync(display);
|
||||
r = display->manager->wait_for_vsync(display->manager);
|
||||
break;
|
||||
|
||||
case OMAPFB_WAITFORGO:
|
||||
|
Loading…
Reference in New Issue
Block a user