static int gpu_tmu_notifier(struct notifier_block *notifier, unsigned long event, void *v) { struct exynos_context *platform = (struct exynos_context *)pkbdev->platform_context; if (!platform) return -ENODEV; if (!platform->tmu_status) return NOTIFY_OK; platform->voltage_margin = 0; if (event == GPU_COLD) { platform->voltage_margin = VOLTAGE_OFFSET_MARGIN; } else if (event == GPU_NORMAL) { gpu_tmu_normal_work(pkbdev); } else if (event >= GPU_THROTTLING1 && event <= GPU_TRIPPING) { if (gpu_tmu_hot_check_and_work(pkbdev, event)) GPU_LOG(DVFS_ERROR, "failed to open device"); } KBASE_TRACE_ADD_EXYNOS(pkbdev, LSI_TMU_VALUE, NULL, NULL, 0u, event); gpu_control_state_set(pkbdev, GPU_CONTROL_SET_MARGIN, 0); return NOTIFY_OK; }
static int gpu_tmu_notifier(struct notifier_block *notifier, unsigned long event, void *v) { unsigned long index; struct exynos_context *platform = (struct exynos_context *)pkbdev->platform_context; if (!platform) return -ENODEV; if (!platform->tmu_status) return NOTIFY_OK; platform->voltage_margin = 0; index = *(unsigned long*)v; if (event == GPU_COLD) { platform->voltage_margin = platform->gpu_default_vol_margin; } else if (event == GPU_NORMAL) { gpu_tmu_normal_work(pkbdev); } else if (event == GPU_THROTTLING || event == GPU_TRIPPING) { if (gpu_tmu_hot_check_and_work(pkbdev, event, index)) GPU_LOG(DVFS_ERROR, DUMMY, 0u, 0u, "%s: failed to open device", __func__); } GPU_LOG(DVFS_DEBUG, LSI_TMU_VALUE, 0u, event, "tmu event %ld\n", event); gpu_set_target_clk_vol(platform->cur_clock, false); return NOTIFY_OK; }
static int gpu_tmu_notifier(struct notifier_block *notifier, unsigned long event, void *v) { struct exynos_context *platform = (struct exynos_context *)pkbdev->platform_context; if (!platform) return -ENODEV; if (!platform->tmu_status) return NOTIFY_OK; platform->voltage_margin = 0; if (event == GPU_COLD) { platform->voltage_margin = platform->gpu_default_vol_margin; } else if (event == GPU_NORMAL) { gpu_tmu_normal_work(pkbdev); } else if (event >= GPU_THROTTLING1 && event <= GPU_TRIPPING) { if (gpu_tmu_hot_check_and_work(pkbdev, event)) GPU_LOG(DVFS_ERROR, DUMMY, 0u, 0u, "%s: failed to open device", __func__); } GPU_LOG(DVFS_DEBUG, LSI_TMU_VALUE, 0u, event, "tmu event %ld\n", event); gpu_control_set_voltage_locked(pkbdev, MAX(gpu_dvfs_get_voltage(platform->cur_clock) + platform->voltage_margin, platform->cold_min_vol)); return NOTIFY_OK; }