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