void mali_driver_exit(void) { MALI_DEBUG_PRINT(2, ("\n")); MALI_DEBUG_PRINT(2, ("Unloading Mali v%d device driver.\n",_MALI_API_VERSION)); #if MALI_LICENSE_IS_GPL && defined(CONFIG_MALI_UMP_R3P1_DEBUG_MEM_USAGE_FOR_OOM) unregister_oom_notifier(&mali_oom_notifier); #endif /* No need to terminate sysfs, this will be done automatically along with device termination */ #if MALI_INTERNAL_TIMELINE_PROFILING_ENABLED _mali_internal_profiling_term(); #endif mali_terminate_subsystems(); mali_osk_low_level_mem_term(); mali_platform_deinit(); terminate_kernel_device(); _mali_dev_platform_unregister(); #if MALI_LICENSE_IS_GPL /* @@@@ clean up the work queues! This should not be terminated here, since it isn't inited in the function above! */ flush_workqueue(mali_wq); destroy_workqueue(mali_wq); mali_wq = NULL; #endif MALI_PRINT(("Mali device driver unloaded\n")); }
static int mali_probe(struct platform_device *pdev) { int err; MALI_DEBUG_PRINT(2, ("mali_probe(): Called for platform device %s\n", pdev->name)); if (NULL != mali_platform_device) { /* Already connected to a device, return error */ MALI_PRINT_ERROR(("mali_probe(): The Mali driver is already connected with a Mali device.")); return -EEXIST; } mali_platform_device = pdev; if (mali_platform_init() != _MALI_OSK_ERR_OK) { /* Platform-specific initialization failed, return error */ MALI_PRINT_ERROR(("mali_probe(): mali_platform_init() failed.")); return -EFAULT; } if (_MALI_OSK_ERR_OK == _mali_osk_wq_init()) { /* Initialize the Mali GPU HW specified by pdev */ if (_MALI_OSK_ERR_OK == mali_initialize_subsystems()) { /* Register a misc device (so we are accessible from user space) */ err = mali_miscdevice_register(pdev); if (0 == err) { /* Setup sysfs entries */ err = mali_sysfs_register(mali_dev_name); if (0 == err) { MALI_DEBUG_PRINT(2, ("mali_probe(): Successfully initialized driver for platform device %s\n", pdev->name)); return 0; } else { MALI_PRINT_ERROR(("mali_probe(): failed to register sysfs entries")); } mali_miscdevice_unregister(); } else { MALI_PRINT_ERROR(("mali_probe(): failed to register Mali misc device.")); } mali_terminate_subsystems(); } else { MALI_PRINT_ERROR(("mali_probe(): Failed to initialize Mali device driver.")); } _mali_osk_wq_term(); } mali_platform_device = NULL; return -EFAULT; }
void mali_driver_exit(void) { MALI_DEBUG_PRINT(2, ("\n")); MALI_DEBUG_PRINT(2, ("Unloading Mali v%d device driver.\n",_MALI_API_VERSION)); /* No need to terminate sysfs, this will be done automatically along with device termination */ mali_terminate_subsystems(); mali_osk_low_level_mem_term(); mali_platform_deinit(); terminate_kernel_device(); _mali_dev_platform_unregister(); #if MALI_LICENSE_IS_GPL /* @@@@ clean up the work queues! This should not be terminated here, since it isn't inited in the function above! */ flush_workqueue(mali_wq); destroy_workqueue(mali_wq); mali_wq = NULL; #endif MALI_PRINT(("Mali device driver unloaded\n")); }
int init_mali(void) { int ret = 0; ret = map_errcode(initialize_kernel_device()); if (0 != ret) goto initialize_kernel_device_failed; ret = map_errcode(mali_platform_init()); if (0 != ret) goto platform_init_failed; mali_osk_low_level_mem_init(); ret = map_errcode(mali_initialize_subsystems()); if (0 != ret) goto initialize_subsystems_failed; ret = initialize_sysfs(); if (0 != ret) goto initialize_sysfs_failed; MALI_PRINT(("Mali device driver loaded\n")); return 0; /* Success */ /* Error handling */ initialize_sysfs_failed: mali_terminate_subsystems(); initialize_subsystems_failed: mali_osk_low_level_mem_term(); mali_platform_deinit(); platform_init_failed: terminate_kernel_device(); initialize_kernel_device_failed: _mali_dev_platform_unregister(); platform_register_failed: return ret; }
static int mali_remove(struct platform_device *pdev) { MALI_DEBUG_PRINT(2, ("mali_remove() called for platform device %s\n", pdev->name)); mali_sysfs_unregister(); mali_miscdevice_unregister(); mali_terminate_subsystems(); _mali_osk_wq_term(); mali_platform_device = NULL; return 0; }
int mali_driver_init(void) { int ret = 0; MALI_DEBUG_PRINT(2, ("\n")); MALI_DEBUG_PRINT(2, ("Inserting Mali v%d device driver. \n",_MALI_API_VERSION)); MALI_DEBUG_PRINT(2, ("Compiled: %s, time: %s.\n", __DATE__, __TIME__)); MALI_DEBUG_PRINT(2, ("Driver revision: %s\n", SVN_REV_STRING)); ret = _mali_dev_platform_register(); if (0 != ret) goto platform_register_failed; ret = map_errcode(initialize_kernel_device()); if (0 != ret) goto initialize_kernel_device_failed; ret = map_errcode(mali_platform_init()); if (0 != ret) goto platform_init_failed; mali_osk_low_level_mem_init(); ret = map_errcode(mali_initialize_subsystems()); if (0 != ret) goto initialize_subsystems_failed; #if MALI_INTERNAL_TIMELINE_PROFILING_ENABLED ret = _mali_internal_profiling_init(mali_boot_profiling ? MALI_TRUE : MALI_FALSE); if (0 != ret) { /* No biggie if we wheren't able to initialize the profiling */ MALI_PRINT_ERROR(("Failed to initialize profiling, feature will be unavailable\n")); } #endif ret = initialize_sysfs(); if (0 != ret) goto initialize_sysfs_failed; MALI_PRINT(("Mali device driver loaded\n")); return 0; /* Success */ /* Error handling */ initialize_sysfs_failed: #if MALI_INTERNAL_TIMELINE_PROFILING_ENABLED _mali_internal_profiling_term(); #endif mali_terminate_subsystems(); initialize_subsystems_failed: mali_osk_low_level_mem_term(); mali_platform_deinit(); platform_init_failed: terminate_kernel_device(); initialize_kernel_device_failed: _mali_dev_platform_unregister(); platform_register_failed: return ret; }
int mali_driver_init(void) { int ret = 0; MALI_DEBUG_PRINT(2, ("\n")); MALI_DEBUG_PRINT(2, ("Inserting Mali v%d device driver. \n",_MALI_API_VERSION)); MALI_DEBUG_PRINT(2, ("Compiled: %s, time: %s.\n", __DATE__, __TIME__)); MALI_DEBUG_PRINT(2, ("Driver revision: %s\n", SVN_REV_STRING)); ret = _mali_dev_platform_register(); if (0 != ret) goto platform_register_failed; ret = map_errcode(initialize_kernel_device()); if (0 != ret) goto initialize_kernel_device_failed; ret = map_errcode(mali_platform_init()); if (0 != ret) goto platform_init_failed; mali_osk_low_level_mem_init(); ret = map_errcode(mali_initialize_subsystems()); if (0 != ret) goto initialize_subsystems_failed; ret = initialize_sysfs(); if (0 != ret) goto initialize_sysfs_failed; MALI_PRINT(("Mali device driver loaded\n")); return 0; /* Success */ /* Error handling */ initialize_sysfs_failed: mali_terminate_subsystems(); initialize_subsystems_failed: mali_osk_low_level_mem_term(); mali_platform_deinit(); platform_init_failed: terminate_kernel_device(); initialize_kernel_device_failed: _mali_dev_platform_unregister(); platform_register_failed: return ret; }
int mali_driver_init(void) { int ret = 0; MALI_DEBUG_PRINT(2, ("\n")); MALI_DEBUG_PRINT(2, ("Inserting Mali v%d device driver. \n",_MALI_API_VERSION)); MALI_DEBUG_PRINT(2, ("Compiled: %s, time: %s.\n", __DATE__, __TIME__)); MALI_DEBUG_PRINT(2, ("Driver revision: %s\n", SVN_REV_STRING)); ret = _mali_dev_platform_register(); if (0 != ret) goto platform_register_failed; ret = map_errcode(initialize_kernel_device()); if (0 != ret) goto initialize_kernel_device_failed; ret = map_errcode(mali_platform_init()); if (0 != ret) goto platform_init_failed; mali_osk_low_level_mem_init(); ret = map_errcode(mali_initialize_subsystems()); if (0 != ret) goto initialize_subsystems_failed; #if MALI_INTERNAL_TIMELINE_PROFILING_ENABLED ret = _mali_internal_profiling_init(mali_boot_profiling ? MALI_TRUE : MALI_FALSE); if (0 != ret) { /* No biggie if we wheren't able to initialize the profiling */ MALI_PRINT_ERROR(("Failed to initialize profiling, feature will be unavailable\n")); } #endif ret = initialize_sysfs(); if (0 != ret) goto initialize_sysfs_failed; #if MALI_LICENSE_IS_GPL && defined(CONFIG_MALI_UMP_R3P1_DEBUG_MEM_USAGE_FOR_OOM) ret = register_oom_notifier(&mali_oom_notifier); if (0 != ret) goto initialize_oom_nofifier_failed; #endif MALI_PRINT(("Mali device driver loaded\n")); return 0; /* Success */ /* Error handling */ #if MALI_LICENSE_IS_GPL && defined(CONFIG_MALI_UMP_R3P1_DEBUG_MEM_USAGE_FOR_OOM) initialize_oom_nofifier_failed: /* No need to terminate sysfs, this will be done automatically * along with device termination */ #endif initialize_sysfs_failed: #if MALI_INTERNAL_TIMELINE_PROFILING_ENABLED _mali_internal_profiling_term(); #endif mali_terminate_subsystems(); initialize_subsystems_failed: mali_osk_low_level_mem_term(); mali_platform_deinit(); platform_init_failed: terminate_kernel_device(); initialize_kernel_device_failed: _mali_dev_platform_unregister(); platform_register_failed: return ret; }