static int gpu_validate_attrib_data(struct exynos_context *platform) { uintptr_t data; gpu_attribute *attrib = (gpu_attribute *)gpu_get_config_attributes(); platform->attrib = attrib; data = gpu_get_attrib_data(attrib, GPU_MAX_CLOCK); platform->gpu_max_clock = data == 0 ? 500 : (u32) data; data = gpu_get_attrib_data(attrib, GPU_MAX_CLOCK_LIMIT); platform->gpu_max_clock_limit = data == 0 ? 500 : (u32) data; data = gpu_get_attrib_data(attrib, GPU_MIN_CLOCK); platform->gpu_min_clock = data == 0 ? 160 : (u32) data; data = gpu_get_attrib_data(attrib, GPU_DVFS_BL_CONFIG_CLOCK); platform->gpu_dvfs_config_clock = data == 0 ? 266 : (u32) data; data = gpu_get_attrib_data(attrib, GPU_DVFS_START_CLOCK); platform->gpu_dvfs_start_clock = data == 0 ? 266 : (u32) data; data = gpu_get_attrib_data(attrib, GPU_DVFS_BL_CONFIG_CLOCK); platform->gpu_dvfs_config_clock = data == 0 ? 266 : (u32) data; #ifdef CONFIG_MALI_DVFS #ifdef CONFIG_CPU_THERMAL_IPA data = gpu_get_attrib_data(attrib, GPU_POWER_COEFF); platform->ipa_power_coeff_gpu = data == 0 ? 59 : (u32) data; data = gpu_get_attrib_data(attrib, GPU_DVFS_TIME_INTERVAL); platform->gpu_dvfs_time_interval = data == 0 ? 5 : (u32) data; #endif /* CONFIG_CPU_THERMAL_IPA */ data = gpu_get_attrib_data(attrib, GPU_DEFAULT_WAKEUP_LOCK); platform->wakeup_lock = data == 0 ? 0 : (u32) data; data = gpu_get_attrib_data(attrib, GPU_GOVERNOR_TYPE); platform->governor_type = data == 0 ? 0 : (u32) data; data = gpu_get_attrib_data(attrib, GPU_GOVERNOR_START_CLOCK_DEFAULT); gpu_dvfs_update_start_clk(G3D_DVFS_GOVERNOR_DEFAULT, data == 0 ? 266 : (u32) data); data = gpu_get_attrib_data(attrib, GPU_GOVERNOR_TABLE_DEFAULT); gpu_dvfs_update_table(G3D_DVFS_GOVERNOR_DEFAULT, (gpu_dvfs_info *) data); data = gpu_get_attrib_data(attrib, GPU_GOVERNOR_TABLE_SIZE_DEFAULT); gpu_dvfs_update_table_size(G3D_DVFS_GOVERNOR_DEFAULT, (u32) data); data = gpu_get_attrib_data(attrib, GPU_GOVERNOR_START_CLOCK_STATIC); gpu_dvfs_update_start_clk(G3D_DVFS_GOVERNOR_STATIC, data == 0 ? 266 : (u32) data); data = gpu_get_attrib_data(attrib, GPU_GOVERNOR_TABLE_STATIC); gpu_dvfs_update_table(G3D_DVFS_GOVERNOR_STATIC, (gpu_dvfs_info *) data); data = gpu_get_attrib_data(attrib, GPU_GOVERNOR_TABLE_SIZE_STATIC); gpu_dvfs_update_table_size(G3D_DVFS_GOVERNOR_STATIC, (u32) data); data = gpu_get_attrib_data(attrib, GPU_GOVERNOR_START_CLOCK_BOOSTER); gpu_dvfs_update_start_clk(G3D_DVFS_GOVERNOR_BOOSTER, data == 0 ? 266 : (u32) data); data = gpu_get_attrib_data(attrib, GPU_GOVERNOR_TABLE_BOOSTER); gpu_dvfs_update_table(G3D_DVFS_GOVERNOR_BOOSTER, (gpu_dvfs_info *) data); data = gpu_get_attrib_data(attrib, GPU_GOVERNOR_TABLE_SIZE_BOOSTER); gpu_dvfs_update_table_size(G3D_DVFS_GOVERNOR_BOOSTER, (u32) data); data = gpu_get_attrib_data(attrib, GPU_GOVERNOR_START_CLOCK_INTERACTIVE); gpu_dvfs_update_start_clk(G3D_DVFS_GOVERNOR_INTERACTIVE, data == 0 ? 266 : (u32) data); data = gpu_get_attrib_data(attrib, GPU_GOVERNOR_TABLE_INTERACTIVE); gpu_dvfs_update_table(G3D_DVFS_GOVERNOR_INTERACTIVE, (gpu_dvfs_info *) data); data = gpu_get_attrib_data(attrib, GPU_GOVERNOR_TABLE_SIZE_INTERACTIVE); gpu_dvfs_update_table_size(G3D_DVFS_GOVERNOR_INTERACTIVE, (u32) data); data = gpu_get_attrib_data(attrib, GPU_GOVERNOR_INTERACTIVE_HIGHSPEED_CLOCK); platform->interactive.highspeed_clock = data == 0 ? 500 : (u32) data; data = gpu_get_attrib_data(attrib, GPU_GOVERNOR_INTERACTIVE_HIGHSPEED_LOAD); platform->interactive.highspeed_load = data == 0 ? 100 : (u32) data; data = gpu_get_attrib_data(attrib, GPU_GOVERNOR_INTERACTIVE_HIGHSPEED_DELAY); platform->interactive.highspeed_delay = data == 0 ? 0 : (u32) data; data = gpu_get_attrib_data(attrib, GPU_DVFS_POLLING_TIME); platform->polling_speed = data == 0 ? 100 : (u32) data; data = gpu_get_attrib_data(attrib, GPU_PMQOS_INT_DISABLE); platform->pmqos_int_disable = data == 0 ? 0 : (u32) data; data = gpu_get_attrib_data(attrib, GPU_PMQOS_MIF_MAX_CLOCK); platform->pmqos_mif_max_clock = data == 0 ? 0 : (u32) data; data = gpu_get_attrib_data(attrib, GPU_PMQOS_MIF_MAX_CLOCK_BASE); platform->pmqos_mif_max_clock_base = data == 0 ? 0 : (u32) data; data = gpu_get_attrib_data(attrib, GPU_CL_DVFS_START_BASE); platform->cl_dvfs_start_base = data == 0 ? 0 : (u32) data; data = gpu_get_attrib_data(attrib, GPU_TEMP_THROTTLING1); platform->tmu_lock_clk[THROTTLING1] = data == 0 ? 266 : (u32) data; data = gpu_get_attrib_data(attrib, GPU_TEMP_THROTTLING2); platform->tmu_lock_clk[THROTTLING2] = data == 0 ? 266 : (u32) data; data = gpu_get_attrib_data(attrib, GPU_TEMP_THROTTLING3); platform->tmu_lock_clk[THROTTLING3] = data == 0 ? 266 : (u32) data; data = gpu_get_attrib_data(attrib, GPU_TEMP_THROTTLING4); platform->tmu_lock_clk[THROTTLING4] = data == 0 ? 266 : (u32) data; data = gpu_get_attrib_data(attrib, GPU_TEMP_THROTTLING5); platform->tmu_lock_clk[THROTTLING5] = data == 0 ? 266 : (u32) data; data = gpu_get_attrib_data(attrib, GPU_TEMP_TRIPPING); platform->tmu_lock_clk[TRIPPING] = data == 0 ? 266 : (u32) data; data = gpu_get_attrib_data(attrib, GPU_BOOST_MIN_LOCK); platform->boost_gpu_min_lock = data == 0 ? 0 : (u32) data; data = gpu_get_attrib_data(attrib, GPU_BOOST_EGL_MIN_LOCK); platform->boost_egl_min_lock = data == 0 ? 0 : (u32) data; #endif /* CONFIG_MALI_DVFS */ data = gpu_get_attrib_data(attrib, GPU_TMU_CONTROL); platform->tmu_status = data == 0 ? 0 : data; data = gpu_get_attrib_data(attrib, GPU_DEFAULT_VOLTAGE); platform->gpu_default_vol = data == 0 ? 0 : (u32) data; data = gpu_get_attrib_data(attrib, GPU_COLD_MINIMUM_VOL); platform->cold_min_vol = data == 0 ? 0 : (u32) data; data = gpu_get_attrib_data(attrib, GPU_VOLTAGE_OFFSET_MARGIN); platform->gpu_default_vol_margin = data == 0 ? 37500 : (u32) data; data = gpu_get_attrib_data(attrib, GPU_BUS_DEVFREQ); platform->devfreq_status = data == 0 ? 1 : data; data = gpu_get_attrib_data(attrib, GPU_DYNAMIC_ABB); platform->dynamic_abb_status = data == 0 ? 0 : data; data = gpu_get_attrib_data(attrib, GPU_EARLY_CLK_GATING); platform->early_clk_gating_status = data == 0 ? 0 : data; data = gpu_get_attrib_data(attrib, GPU_DVS); platform->dvs_status = data == 0 ? 0 : data; data = gpu_get_attrib_data(attrib, GPU_PERF_GATHERING); platform->perf_gathering_status = data == 0 ? 0 : data; #ifdef MALI_SEC_HWCNT data = gpu_get_attrib_data(attrib, GPU_HWCNT_GATHERING); platform->hwcnt_gathering_status = data == 0 ? 0 : data; data = gpu_get_attrib_data(attrib, GPU_HWCNT_GPR); platform->hwcnt_gpr_status = data == 0 ? 0 : data; data = gpu_get_attrib_data(attrib, GPU_HWCNT_POLLING_TIME); platform->hwcnt_polling_speed = data == 0 ? 0 : (u32) data; data = gpu_get_attrib_data(attrib, GPU_HWCNT_UP_STEP); platform->hwcnt_up_step = data == 0 ? 0 : (u32) data; data = gpu_get_attrib_data(attrib, GPU_HWCNT_DOWN_STEP); platform->hwcnt_down_step = data == 0 ? 0 : (u32) data; data = gpu_get_attrib_data(attrib, GPU_HWCNT_DUMP_PERIOD); platform->hwcnt_dump_period = data == 0 ? 0 : (u32) data; data = gpu_get_attrib_data(attrib, GPU_HWCNT_CHOOSE_JM); platform->hwcnt_choose_jm = data == 0 ? 0 : (u32) data; data = gpu_get_attrib_data(attrib, GPU_HWCNT_CHOOSE_SHADER); platform->hwcnt_choose_shader = data == 0 ? 0 : (u32) data; data = gpu_get_attrib_data(attrib, GPU_HWCNT_CHOOSE_TILER); platform->hwcnt_choose_tiler = data == 0 ? 0 : (u32) data; data = gpu_get_attrib_data(attrib, GPU_HWCNT_CHOOSE_L3_CACHE); platform->hwcnt_choose_l3_cache = data == 0 ? 0 : (u32) data; data = gpu_get_attrib_data(attrib, GPU_HWCNT_CHOOSE_MMU_L2); platform->hwcnt_choose_mmu_l2 = data == 0 ? 0 : (u32) data; #endif data = gpu_get_attrib_data(attrib, GPU_RUNTIME_PM_DELAY_TIME); platform->runtime_pm_delay_time = data == 0 ? 50 : (u32) data; data = gpu_get_attrib_data(attrib, GPU_DEBUG_LEVEL); gpu_debug_level = data == 0 ? DVFS_WARNING : (u32) data; #ifdef CONFIG_MALI_EXYNOS_TRACE data = gpu_get_attrib_data(attrib, GPU_TRACE_LEVEL); gpu_set_trace_level(data == 0 ? TRACE_ALL : (u32) data); #endif /* CONFIG_MALI_EXYNOS_TRACE */ #ifdef CONFIG_MALI_DVFS_USER data = gpu_get_attrib_data(attrib, GPU_UDVFS_ENABLE); platform->udvfs_enable = data == 0 ? 0 : (u32) data; #endif data = gpu_get_attrib_data(attrib, GPU_MO_MIN_CLOCK); platform->mo_min_clock = data == 0 ? 0 : (u32) data; data = gpu_get_attrib_data(attrib, GPU_SUSTAINABLE_GPU_CLOCK); platform->sustainable.sustainable_gpu_clock = data == 0 ? 0 : (u32) data; data = gpu_get_attrib_data(attrib, GPU_LOW_POWER_CPU_MAX_LOCK); platform->sustainable.low_power_cluster1_maxlock = data == 0 ? 0 : (u32) data; data = gpu_get_attrib_data(attrib, GPU_THRESHOLD_MAXLOCK); platform->sustainable.threshold = data == 0 ? 0 : (u32) data; return 0; }
static int gpu_validate_attrib_data(struct exynos_context *platform) { uintptr_t data; gpu_attribute *attrib = (gpu_attribute *)gpu_get_config_attributes(); platform->attrib = attrib; data = gpu_get_attrib_data(attrib, GPU_MAX_CLOCK); platform->gpu_max_clock = data == 0 ? 500 : (u32) data; data = gpu_get_attrib_data(attrib, GPU_MAX_CLOCK_LIMIT); platform->gpu_max_clock_limit = data == 0 ? 500 : (u32) data; data = gpu_get_attrib_data(attrib, GPU_MIN_CLOCK); platform->gpu_min_clock = data == 0 ? 160 : (u32) data; data = gpu_get_attrib_data(attrib, GPU_MIN_CLOCK_LIMIT); platform->gpu_min_clock_limit = data == 0 ? 160 : (u32) data; data = gpu_get_attrib_data(attrib, GPU_DVFS_BL_CONFIG_CLOCK); platform->gpu_dvfs_config_clock = data == 0 ? 266 : (u32) data; data = gpu_get_attrib_data(attrib, GPU_DVFS_START_CLOCK); platform->gpu_dvfs_start_clock = data == 0 ? 266 : (u32) data; data = gpu_get_attrib_data(attrib, GPU_DVFS_BL_CONFIG_CLOCK); platform->gpu_dvfs_config_clock = data == 0 ? 266 : (u32) data; #ifdef CONFIG_MALI_DVFS #ifdef CONFIG_CPU_THERMAL_IPA data = gpu_get_attrib_data(attrib, GPU_POWER_COEFF); platform->ipa_power_coeff_gpu = data == 0 ? 59 : (u32) data; data = gpu_get_attrib_data(attrib, GPU_DVFS_TIME_INTERVAL); platform->gpu_dvfs_time_interval = data == 0 ? 5 : (u32) data; #endif /* CONFIG_CPU_THERMAL_IPA */ data = gpu_get_attrib_data(attrib, GPU_DEFAULT_WAKEUP_LOCK); platform->wakeup_lock = data == 0 ? 0 : (u32) data; data = gpu_get_attrib_data(attrib, GPU_GOVERNOR_START_CLOCK_DEFAULT); gpu_dvfs_update_start_clk(G3D_DVFS_GOVERNOR_DEFAULT, data == 0 ? 266 : (u32) data); data = gpu_get_attrib_data(attrib, GPU_GOVERNOR_TABLE_DEFAULT); gpu_dvfs_update_table(G3D_DVFS_GOVERNOR_DEFAULT, (gpu_dvfs_info *) data); data = gpu_get_attrib_data(attrib, GPU_GOVERNOR_TABLE_SIZE_DEFAULT); gpu_dvfs_update_table_size(G3D_DVFS_GOVERNOR_DEFAULT, (u32) data); data = gpu_get_attrib_data(attrib, GPU_GOVERNOR_START_CLOCK_STATIC); gpu_dvfs_update_start_clk(G3D_DVFS_GOVERNOR_STATIC, data == 0 ? 266 : (u32) data); data = gpu_get_attrib_data(attrib, GPU_GOVERNOR_TABLE_STATIC); gpu_dvfs_update_table(G3D_DVFS_GOVERNOR_STATIC, (gpu_dvfs_info *) data); data = gpu_get_attrib_data(attrib, GPU_GOVERNOR_TABLE_SIZE_STATIC); gpu_dvfs_update_table_size(G3D_DVFS_GOVERNOR_STATIC, (u32) data); data = gpu_get_attrib_data(attrib, GPU_GOVERNOR_START_CLOCK_BOOSTER); gpu_dvfs_update_start_clk(G3D_DVFS_GOVERNOR_BOOSTER, data == 0 ? 266 : (u32) data); data = gpu_get_attrib_data(attrib, GPU_GOVERNOR_TABLE_BOOSTER); gpu_dvfs_update_table(G3D_DVFS_GOVERNOR_BOOSTER, (gpu_dvfs_info *) data); data = gpu_get_attrib_data(attrib, GPU_GOVERNOR_TABLE_SIZE_BOOSTER); gpu_dvfs_update_table_size(G3D_DVFS_GOVERNOR_BOOSTER, (u32) data); data = gpu_get_attrib_data(attrib, GPU_DVFS_POLLING_TIME); platform->polling_speed = data == 0 ? 100 : (u32) data; data = gpu_get_attrib_data(attrib, GPU_TEMP_THROTTLING1); platform->tmu_lock_clk[THROTTLING1] = data == 0 ? 266 : (u32) data; data = gpu_get_attrib_data(attrib, GPU_TEMP_THROTTLING2); platform->tmu_lock_clk[THROTTLING2] = data == 0 ? 266 : (u32) data; data = gpu_get_attrib_data(attrib, GPU_TEMP_THROTTLING3); platform->tmu_lock_clk[THROTTLING3] = data == 0 ? 266 : (u32) data; data = gpu_get_attrib_data(attrib, GPU_TEMP_THROTTLING4); platform->tmu_lock_clk[THROTTLING4] = data == 0 ? 266 : (u32) data; data = gpu_get_attrib_data(attrib, GPU_TEMP_TRIPPING); platform->tmu_lock_clk[TRIPPING] = data == 0 ? 266 : (u32) data; data = gpu_get_attrib_data(attrib, GPU_BOOST_MIN_LOCK); platform->boost_gpu_min_lock = data == 0 ? 0 : (u32) data; data = gpu_get_attrib_data(attrib, GPU_BOOST_EGL_MIN_LOCK); platform->boost_egl_min_lock = data == 0 ? 0 : (u32) data; #endif /* CONFIG_MALI_DVFS */ data = gpu_get_attrib_data(attrib, GPU_TMU_CONTROL); platform->tmu_status = data == 0 ? 0 : (bool) data; data = gpu_get_attrib_data(attrib, GPU_DEFAULT_VOLTAGE); platform->gpu_default_vol = data == 0 ? 0 : (u32) data; data = gpu_get_attrib_data(attrib, GPU_COLD_MINIMUM_VOL); platform->cold_min_vol = data == 0 ? 0 : (u32) data; data = gpu_get_attrib_data(attrib, GPU_VOLTAGE_OFFSET_MARGIN); platform->gpu_default_vol_margin = data == 0 ? 37500 : (u32) data; data = gpu_get_attrib_data(attrib, GPU_BUS_DEVFREQ); platform->devfreq_status = data == 0 ? 1 : (bool) data; data = gpu_get_attrib_data(attrib, GPU_DYNAMIC_ABB); platform->dynamic_abb_status = data == 0 ? 0 : (bool) data; data = gpu_get_attrib_data(attrib, GPU_EARLY_CLK_GATING); platform->early_clk_gating_status = data == 0 ? 0 : (bool) data; data = gpu_get_attrib_data(attrib, GPU_DVS); platform->dvs_status = data == 0 ? 0 : (bool) data; data = gpu_get_attrib_data(attrib, GPU_PERF_GATHERING); platform->perf_gathering_status = data == 0 ? 0 : (bool) data; data = gpu_get_attrib_data(attrib, GPU_HWCNT_GATHERING); platform->hwcnt_gathering_status = data == 0 ? 0 : (bool) data; data = gpu_get_attrib_data(attrib, GPU_HWCNT_GPR); platform->hwcnt_gpr_status = data == 0 ? 0 : (bool) data; data = gpu_get_attrib_data(attrib, GPU_RUNTIME_PM_DELAY_TIME); platform->runtime_pm_delay_time = data == 0 ? 50 : (u32) data; data = gpu_get_attrib_data(attrib, GPU_DEBUG_LEVEL); gpu_debug_level = data == 0 ? DVFS_WARNING : (u32) data; #ifdef CONFIG_MALI_EXYNOS_TRACE data = gpu_get_attrib_data(attrib, GPU_TRACE_LEVEL); gpu_set_trace_level(data == 0 ? TRACE_ALL : (u32) data); #endif /* CONFIG_MALI_EXYNOS_TRACE */ return 0; }