static int gpu_context_init(struct kbase_device *kbdev)
{
	struct exynos_context *platform;
	struct mali_base_gpu_core_props *core_props;

	platform = kmalloc(sizeof(struct exynos_context), GFP_KERNEL);

	if (platform == NULL)
		return -1;

	memset(platform, 0, sizeof(struct exynos_context));
	kbdev->platform_context = (void *) platform;
	pkbdev = kbdev;

	mutex_init(&platform->gpu_clock_lock);
	mutex_init(&platform->gpu_dvfs_handler_lock);
#ifdef CONFIG_MALI_DVFS_USER
	mutex_init(&platform->gpu_process_job_lock);
#endif
	spin_lock_init(&platform->gpu_dvfs_spinlock);

	gpu_validate_attrib_data(platform);

	core_props = &(kbdev->gpu_props.props.core_props);
	core_props->gpu_freq_khz_min = platform->gpu_min_clock * 1000;
	core_props->gpu_freq_khz_max = platform->gpu_max_clock * 1000;

	kbdev->vendor_callbacks = (struct kbase_vendor_callbacks *)gpu_get_callbacks();

#ifdef CONFIG_MALI_EXYNOS_TRACE
	if (gpu_trace_init(kbdev) != 0)
		return -1;
#endif
	return 0;
}
示例#2
0
static int gpu_context_init(struct kbase_device *kbdev)
{
	struct exynos_context *platform;

	platform = kmalloc(sizeof(struct exynos_context), GFP_KERNEL);

	if (platform == NULL)
		return -1;

	memset(platform, 0, sizeof(struct exynos_context));
	kbdev->platform_context = (void *) platform;
	pkbdev = kbdev;

	mutex_init(&platform->gpu_clock_lock);
	mutex_init(&platform->gpu_dvfs_handler_lock);
	spin_lock_init(&platform->gpu_dvfs_spinlock);

	gpu_validate_attrib_data(platform);

	return 0;
}