static void MTKLFBEarlySuspendHandler(struct early_suspend *h) { unsigned uiMaxFBDevIDPlusOne = MTKLFBMaxFBDevIDPlusOne(); unsigned i; for (i=0; i < uiMaxFBDevIDPlusOne; i++) { MTKLFB_DEVINFO *psDevInfo = MTKLFBGetDevInfoPtr(i); if (psDevInfo != NULL) { MTKLFBAtomicBoolSet(&psDevInfo->sEarlySuspendFlag, MTKLFB_TRUE); MTKLFBBlankDisplay(psDevInfo); } } }
MTKLFB_ERROR MTKLFBDeInit(void) { unsigned uiMaxFBDevIDPlusOne = MTKLFBMaxFBDevIDPlusOne(); unsigned i; MTKLFB_BOOL bError = MTKLFB_FALSE; for(i = 0; i < uiMaxFBDevIDPlusOne; i++) { MTKLFB_DEVINFO *psDevInfo = MTKLFBGetDevInfoPtr(i); if (psDevInfo != NULL) { bError |= !MTKLFBDeInitDev(psDevInfo); } } return (bError) ? MTKLFB_ERROR_INIT_FAILURE : MTKLFB_OK; }
static int MTKLFBFrameBufferEvents(struct notifier_block *psNotif, unsigned long event, void *data) { MTKLFB_DEVINFO *psDevInfo; struct fb_event *psFBEvent = (struct fb_event *)data; struct fb_info *psFBInfo = psFBEvent->info; MTKLFB_BOOL bBlanked; if (event != FB_EVENT_BLANK) { return 0; } bBlanked = (*(IMG_INT *)psFBEvent->data != 0) ? MTKLFB_TRUE: MTKLFB_FALSE; psDevInfo = MTKLFBGetDevInfoPtr(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) { MTKLFBAtomicBoolSet(&psDevInfo->sBlanked, bBlanked); MTKLFBAtomicIntInc(&psDevInfo->sBlankEvents); } return 0; }
static MTKLFB_DEVINFO *MTKLFBPVRDevIDToDevInfo(unsigned uiPVRDevID) { unsigned uiMaxFBDevIDPlusOne = MTKLFBMaxFBDevIDPlusOne(); unsigned i; for (i=0; i < uiMaxFBDevIDPlusOne; i++) { MTKLFB_DEVINFO *psDevInfo = MTKLFBGetDevInfoPtr(i); if (psDevInfo->uiPVRDevID == uiPVRDevID) { return psDevInfo; } } printk(KERN_WARNING 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) { MTKLFB_DEVINFO *psDevInfo; MTKLFB_ERROR eError; unsigned uiMaxFBDevIDPlusOne = MTKLFBMaxFBDevIDPlusOne(); unsigned i; for (i = 0; i < uiMaxFBDevIDPlusOne; i++) { psDevInfo = MTKLFBGetDevInfoPtr(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 = MTKLFBUnblankDisplay(psDevInfo); if (eError != MTKLFB_OK) { DEBUG_PRINTK((KERN_WARNING DRIVER_PREFIX ": %s: Device %u: MTKLFBUnblankDisplay failed (%d)\n", __FUNCTION__, psDevInfo->uiFBDevID, eError)); return PVRSRV_ERROR_UNBLANK_DISPLAY_FAILED; } *phDevice = (IMG_HANDLE)psDevInfo; return PVRSRV_OK; }