/*! ****************************************************************************** @Function SYSDEVU_VDECRegisterDriver ******************************************************************************/ IMG_RESULT SYSDEVU_VDECRegisterDriver( SYSDEVU_sInfo * psInfo ) { IMG_UINT32 ui32Result = IMG_ERROR_GENERIC_FAILURE; if(IMG_FALSE == gbDevDetected) { printk(KERN_INFO "SYSDEVU1_Initialise\n"); psSysDev = psInfo; ui32Result = platform_driver_register(&local_driver); if (ui32Result != 0) { return IMG_ERROR_DEVICE_NOT_FOUND; } if (request_irq(module_irq, IsrCb, 0, "goldfish_device", psSysDev)) { printk(KERN_ERR "Goldfish: Failed to get IRQ\n"); return IMG_ERROR_GENERIC_FAILURE; } gbDevDetected = IMG_TRUE; SYSDEVU_SetDevMap(psInfo, 0, 0, 0, 0, 0, 0, 0); SYSDEVU_SetDeviceOps(psInfo, &device_ops); ui32Result = SYSMEMKM_AddSystemMemory(psInfo, &psInfo->sMemPool); } return ui32Result; }
IMG_RESULT SYSDEVU_RegisterDriver(SYSDEVU_sInfo *sysdev) { IMG_RESULT ret = 0; gpsInfo = sysdev; ret = platform_driver_register(&local_driver); if (ret != IMG_SUCCESS) { ret = IMG_ERROR_DEVICE_NOT_FOUND; goto failure_register; } if (device_detected != IMG_TRUE) { ret = IMG_ERROR_DEVICE_NOT_FOUND; goto failure_detect; } reg_base_addr = ioremap(module_reg_base, module_reg_size); if (!reg_base_addr) { printk(KERN_ERR "goldfish_device: Failed to remap registers\n"); ret = IMG_ERROR_GENERIC_FAILURE; goto failure_map_reg; } if (request_irq(module_irq, handle_interrupt, 0, DEVICE_NAME, gpsInfo)) { printk(KERN_ERR "goldfish_device: Failed to get IRQ\n"); ret = IMG_ERROR_GENERIC_FAILURE; goto failure_request_irq; } SYSDEVU_SetDevMap(sysdev, module_reg_base, ((IMG_UINT32 *)reg_base_addr), module_reg_size, 0, IMG_NULL, 0, 0); SYSDEVU_SetDeviceOps(sysdev, &device_ops); ret = SYSMEMKM_AddSystemMemory(&sysdev->sMemPool); if(IMG_SUCCESS != ret) { goto failure_add_sys_mem; } /* Return success...*/ return IMG_SUCCESS; failure_add_sys_mem: failure_request_irq: iounmap(reg_base_addr); failure_map_reg: failure_detect: platform_driver_unregister(&local_driver); failure_register: gpsInfo = IMG_NULL; return ret; }