1*4882a593Smuzhiyun /* SPDX-License-Identifier: GPL-2.0 */ 2*4882a593Smuzhiyun /* 3*4882a593Smuzhiyun * Copyright (c) 2018 Fuzhou Rockchip Electronics Co., Ltd 4*4882a593Smuzhiyun */ 5*4882a593Smuzhiyun #ifndef __SOC_ROCKCHIP_IPA_H 6*4882a593Smuzhiyun #define __SOC_ROCKCHIP_IPA_H 7*4882a593Smuzhiyun 8*4882a593Smuzhiyun struct ipa_power_model_data { 9*4882a593Smuzhiyun u32 static_coefficient; 10*4882a593Smuzhiyun u32 dynamic_coefficient; 11*4882a593Smuzhiyun s32 ts[4]; /* temperature scaling factor */ 12*4882a593Smuzhiyun struct thermal_zone_device *tz; 13*4882a593Smuzhiyun u32 leakage; 14*4882a593Smuzhiyun u32 ref_leakage; 15*4882a593Smuzhiyun u32 lkg_range[2]; /* min leakage and max leakage */ 16*4882a593Smuzhiyun s32 ls[3]; /* leakage scaling factor */ 17*4882a593Smuzhiyun }; 18*4882a593Smuzhiyun 19*4882a593Smuzhiyun #if IS_ENABLED(CONFIG_ROCKCHIP_IPA) 20*4882a593Smuzhiyun struct ipa_power_model_data *rockchip_ipa_power_model_init(struct device *dev, 21*4882a593Smuzhiyun char *lkg_name); 22*4882a593Smuzhiyun unsigned long 23*4882a593Smuzhiyun rockchip_ipa_get_static_power(struct ipa_power_model_data *model_data, 24*4882a593Smuzhiyun unsigned long voltage_mv); 25*4882a593Smuzhiyun #else 26*4882a593Smuzhiyun static inline struct ipa_power_model_data * rockchip_ipa_power_model_init(struct device * dev,char * lkg_name)27*4882a593Smuzhiyunrockchip_ipa_power_model_init(struct device *dev, char *lkg_name) 28*4882a593Smuzhiyun { 29*4882a593Smuzhiyun return ERR_PTR(-ENOTSUPP); 30*4882a593Smuzhiyun }; 31*4882a593Smuzhiyun 32*4882a593Smuzhiyun static inline unsigned long rockchip_ipa_get_static_power(struct ipa_power_model_data * data,unsigned long voltage_mv)33*4882a593Smuzhiyunrockchip_ipa_get_static_power(struct ipa_power_model_data *data, 34*4882a593Smuzhiyun unsigned long voltage_mv) 35*4882a593Smuzhiyun { 36*4882a593Smuzhiyun return 0; 37*4882a593Smuzhiyun } 38*4882a593Smuzhiyun #endif /* CONFIG_ROCKCHIP_IPA */ 39*4882a593Smuzhiyun 40*4882a593Smuzhiyun #endif 41