static void OMAPLFBEarlyResumeHandler(struct early_suspend *h) { unsigned uiMaxFBDevIDPlusOne = OMAPLFBMaxFBDevIDPlusOne(); unsigned i; for (i=0; i < uiMaxFBDevIDPlusOne; i++) { OMAPLFB_DEVINFO *psDevInfo = OMAPLFBGetDevInfoPtr(i); if (psDevInfo != NULL) { OMAPLFBUnblankDisplay(psDevInfo); OMAPLFBAtomicBoolSet(&psDevInfo->sEarlySuspendFlag, OMAPLFB_FALSE); } } }
OMAPLFB_ERROR OMAPLFBDeInit(void) { unsigned uiMaxFBDevIDPlusOne = OMAPLFBMaxFBDevIDPlusOne(); unsigned i; OMAPLFB_BOOL bError = OMAPLFB_FALSE; for(i = 0; i < uiMaxFBDevIDPlusOne; i++) { OMAPLFB_DEVINFO *psDevInfo = OMAPLFBGetDevInfoPtr(i); if (psDevInfo != NULL) { bError |= !OMAPLFBDeInitDev(psDevInfo); } } return (bError) ? OMAPLFB_ERROR_INIT_FAILURE : OMAPLFB_OK; }
/* Linux Framebuffer event notification handler */ static int OMAPLFBFrameBufferEvents(struct notifier_block *psNotif, unsigned long event, void *data) { OMAPLFB_DEVINFO *psDevInfo; struct fb_event *psFBEvent = (struct fb_event *)data; struct fb_info *psFBInfo = psFBEvent->info; OMAPLFB_BOOL bBlanked; /* Only interested in blanking events */ if (event != FB_EVENT_BLANK) { return 0; } bBlanked = (*(IMG_INT *)psFBEvent->data != 0) ? OMAPLFB_TRUE: OMAPLFB_FALSE; psDevInfo = OMAPLFBGetDevInfoPtr(psFBInfo->node); #if 0 if (psDevInfo != NULL) { if (bBlanked) { DEBUG_PRINTK((KERN_INFO DRIVER_PREFIX ": %s: Device %u: Blank event received\n", __FUNCTION__, psDevInfo->uiFBDevID)); } else { DEBUG_PRINTK((KERN_INFO DRIVER_PREFIX ": %s: Device %u: Unblank event received\n", __FUNCTION__, psDevInfo->uiFBDevID)); } } else { DEBUG_PRINTK((KERN_INFO DRIVER_PREFIX ": %s: Device %u: Blank/Unblank event for unknown framebuffer\n", __FUNCTION__, psFBInfo->node)); } #endif if (psDevInfo != NULL) { OMAPLFBAtomicBoolSet(&psDevInfo->sBlanked, bBlanked); OMAPLFBAtomicIntInc(&psDevInfo->sBlankEvents); } return 0; }
static OMAPLFB_DEVINFO *OMAPLFBPVRDevIDToDevInfo(unsigned uiPVRDevID) { unsigned uiMaxFBDevIDPlusOne = OMAPLFBMaxFBDevIDPlusOne(); unsigned i; for (i=0; i < uiMaxFBDevIDPlusOne; i++) { OMAPLFB_DEVINFO *psDevInfo = OMAPLFBGetDevInfoPtr(i); if (psDevInfo->uiPVRDevID == uiPVRDevID) { return psDevInfo; } } printk(KERN_ERR DRIVER_PREFIX ": %s: PVR Device %u: Couldn't find device\n", __FUNCTION__, uiPVRDevID); return NULL; }
static PVRSRV_ERROR OpenDCDevice(IMG_UINT32 uiPVRDevID, IMG_HANDLE *phDevice, PVRSRV_SYNC_DATA* psSystemBufferSyncData) { OMAPLFB_DEVINFO *psDevInfo; OMAPLFB_ERROR eError; unsigned uiMaxFBDevIDPlusOne = OMAPLFBMaxFBDevIDPlusOne(); unsigned i; for (i = 0; i < uiMaxFBDevIDPlusOne; i++) { psDevInfo = OMAPLFBGetDevInfoPtr(i); if (psDevInfo != NULL && psDevInfo->uiPVRDevID == uiPVRDevID) { break; } } if (i == uiMaxFBDevIDPlusOne) { DEBUG_PRINTK((KERN_WARNING DRIVER_PREFIX ": %s: PVR Device %u not found\n", __FUNCTION__, uiPVRDevID)); return PVRSRV_ERROR_INVALID_DEVICE; } psDevInfo->sSystemBuffer.psSyncData = psSystemBufferSyncData; eError = OMAPLFBUnblankDisplay(psDevInfo); if (eError != OMAPLFB_OK) { DEBUG_PRINTK((KERN_WARNING DRIVER_PREFIX ": %s: Device %u: OMAPLFBUnblankDisplay failed (%d)\n", __FUNCTION__, psDevInfo->uiFBDevID, eError)); return PVRSRV_ERROR_UNBLANK_DISPLAY_FAILED; } *phDevice = (IMG_HANDLE)psDevInfo; return PVRSRV_OK; }