/* Wait for VSync */ OMAPLFB_BOOL OMAPLFBWaitForVSync(OMAPLFB_DEVINFO *psDevInfo) { #if defined(PVR_OMAPLFB_DRM_FB) struct drm_connector *psConnector; for (psConnector = NULL; (psConnector = omap_fbdev_get_next_connector(psDevInfo->psLINFBInfo, psConnector)) != NULL;) { (void) omap_encoder_wait_for_vsync(psConnector->encoder); } return OMAPLFB_TRUE; #else /* defined(PVR_OMAPLFB_DRM_FB) */ #if FBDEV_PRESENT struct omap_dss_device *psDSSDev = fb2display(psDevInfo->psLINFBInfo); OMAP_DSS_MANAGER(psDSSMan, psDSSDev); if (psDSSMan != NULL && WAIT_FOR_VSYNC(psDSSMan) != NULL) { int res = WAIT_FOR_VSYNC(psDSSMan)(psDSSMan); if (res != 0) { DEBUG_PRINTK((KERN_WARNING DRIVER_PREFIX ": %s: Device %u: Wait for vsync failed (%d)\n", __FUNCTION__, psDevInfo->uiFBDevID, res)); return OMAPLFB_FALSE; } } #endif return OMAPLFB_TRUE; #endif /* defined(PVR_OMAPLFB_DRM_FB) */ }
OMAPLFB_BOOL OMAPLFBWaitForVSync(OMAPLFB_DEVINFO *psDevInfo) { #if 0 struct omap_dss_device *psDSSDev = fb2display(psDevInfo->psLINFBInfo); OMAP_DSS_MANAGER(psDSSMan, psDSSDev); if (psDSSMan != NULL && WAIT_FOR_VSYNC(psDSSMan) != NULL) { int res = WAIT_FOR_VSYNC(psDSSMan)(psDSSMan); if (res != 0) { DEBUG_PRINTK((KERN_INFO DRIVER_PREFIX ": %s: Device %u: Wait for vsync failed (%d)\n", __FUNCTION__, psDevInfo->uiFBDevID, res)); return OMAPLFB_FALSE; } } #endif #if 0 struct vps_grpx_ctrl *gctrl; int r; gctrl = vps_grpx_get_ctrl(psDevInfo->uiFBDevID); printk (" BVSYNC \n"); r = gctrl->wait_for_vsync(gctrl); printk (" AVSYNC: %d\n", vsync_num++); return OMAPLFB_TRUE; #endif // unsigned long timeout = msecs_to_jiffies(500); #if FBDEV_PRESENT int r; void grpx_irq_wait_handler(void *data) { complete((struct completion *)data); }