/*!
******************************************************************************

@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;
}