/* * Copyright (c) Hisilicon Technologies Co., Ltd. 2019-2020. All rights reserved. * Description: header file of drv_dvfs */ #ifndef __DRV_DVFS_H__ #define __DRV_DVFS_H__ #include #ifndef CONFIG_SOCT_COMMON_KERNEL #include #endif #include "td_type.h" #ifdef __cplusplus #if __cplusplus extern "C" { #endif #endif #define CLOCK_24M (24 * 1000) /* 24 KHz */ #define MAX_DIFF_VALUE CLOCK_24M #define VOLT_UV_TO_MV 1000 #define VOLT_MV_TO_UV 1000 #define VOLT_DIFF_VALUE 10 struct hl_dvfs_info { struct cpumask cpus; struct device *cpu_dev; struct clk *cpu_clk; struct regulator *cpu_reg; struct mutex dvfs_lock; struct list_head list; }; struct hl_dvfs_info *dvfs_get_info(td_u32 cpu); struct hl_dvfs_info *dvfs_get_cluster(td_u32 cpu); td_s32 dvfs_init_volt_cal_info(td_void); td_s32 dvfs_round_freq(td_u32 cpu, td_u32 *rate); td_s32 dvfs_get_volt_for_new_freq(td_u32 *volt, td_u32 new_freq); td_s32 dvfs_enter_active_standby(td_u32 model); td_s32 dvfs_quit_active_standby(td_void); td_void dvfs_freq_volt_matching_check(td_void); #ifdef CONFIG_SOCT_CPU_DVFS_SUPPORT td_s32 dvfs_set_governor(const char *buf); #endif #ifndef CONFIG_SOCT_COMMON_KERNEL #define EFI_VARIABLE_BUTE (EFI_VARIABLE_NON_VOLATILE | EFI_VARIABLE_BOOTSERVICE_ACCESS | EFI_VARIABLE_RUNTIME_ACCESS) td_void dvfs_set_agint_test_volt(td_bool increase, td_u32 volt); td_void dvfs_get_agint_test_volt(td_void); #endif #ifdef __cplusplus #if __cplusplus } #endif #endif /* End of #ifdef __cplusplus */ #endif /* End of #ifndef __DRV_DVFS_H__ */