aboutsummaryrefslogtreecommitdiffstats
path: root/tools/power
diff options
context:
space:
mode:
authorZhang Rui <rui.zhang@intel.com>2022-08-20 20:40:48 +0800
committerSrinivas Pandruvada <srinivas.pandruvada@linux.intel.com>2023-03-22 13:36:52 -0700
commit05aab5b8c1b78c028cd95701e788623de744d1cd (patch)
treedfb694437b0dd319e71a7ce0c307530ad49fc5e7 /tools/power
parent2b86ed225e657867b405b3e9412e9efefcbe6ffb (diff)
downloadlinux-05aab5b8c1b78c028cd95701e788623de744d1cd.tar.gz
tools/power/x86/intel-speed-select: Allow api_version based platform callbacks
Different api_version suggests different kernel driver used and different interface is used to communication with the hardware. Allow setting platform specific callbacks based on api_version. Currently, all platforms with api_version 1 uses Mbox/MMIO interfaces. No functional changes are expected. Signed-off-by: Zhang Rui <rui.zhang@intel.com> [srinivas.pandruvada@linux.intel.com: changelog edits] Signed-off-by: Srinivas Pandruvada <srinivas.pandruvada@linux.intel.com>
Diffstat (limited to 'tools/power')
-rw-r--r--tools/power/x86/intel-speed-select/isst-config.c6
-rw-r--r--tools/power/x86/intel-speed-select/isst-core.c13
-rw-r--r--tools/power/x86/intel-speed-select/isst.h8
3 files changed, 16 insertions, 11 deletions
diff --git a/tools/power/x86/intel-speed-select/isst-config.c b/tools/power/x86/intel-speed-select/isst-config.c
index 346f8271b00ff..fb83f74f15a40 100644
--- a/tools/power/x86/intel-speed-select/isst-config.c
+++ b/tools/power/x86/intel-speed-select/isst-config.c
@@ -803,8 +803,10 @@ static int isst_fill_platform_info(void)
const char *pathname = "/dev/isst_interface";
int fd;
- if (is_clx_n_platform())
+ if (is_clx_n_platform()) {
+ isst_platform_info.api_version = 1;
goto set_platform_ops;
+ }
fd = open(pathname, O_RDWR);
if (fd < 0)
@@ -824,7 +826,7 @@ static int isst_fill_platform_info(void)
}
set_platform_ops:
- if (isst_set_platform_ops()) {
+ if (isst_set_platform_ops(isst_platform_info.api_version)) {
fprintf(stderr, "Failed to set platform callbacks\n");
exit(0);
}
diff --git a/tools/power/x86/intel-speed-select/isst-core.c b/tools/power/x86/intel-speed-select/isst-core.c
index fcab70ef5704c..674097289ebf3 100644
--- a/tools/power/x86/intel-speed-select/isst-core.c
+++ b/tools/power/x86/intel-speed-select/isst-core.c
@@ -16,9 +16,16 @@ static struct isst_platform_ops *isst_ops;
} \
} while (0)
-int isst_set_platform_ops(void)
-{
- isst_ops = mbox_get_platform_ops();
+int isst_set_platform_ops(int api_version)
+{
+ switch (api_version) {
+ case 1:
+ isst_ops = mbox_get_platform_ops();
+ break;
+ default:
+ isst_ops = NULL;
+ break;
+ }
if (!isst_ops)
return -1;
diff --git a/tools/power/x86/intel-speed-select/isst.h b/tools/power/x86/intel-speed-select/isst.h
index 8192e683ac922..6839ad2d2b9d4 100644
--- a/tools/power/x86/intel-speed-select/isst.h
+++ b/tools/power/x86/intel-speed-select/isst.h
@@ -185,6 +185,7 @@ struct isst_platform_ops {
int (*get_disp_freq_multiplier)(void);
int (*get_trl_max_levels)(void);
char *(*get_trl_level_name)(int level);
+ void (*update_platform_param)(enum isst_platform_param param, int value);
int (*is_punit_valid)(struct isst_id *id);
int (*read_pm_config)(struct isst_id *id, int *cp_state, int *cp_cap);
int (*get_config_levels)(struct isst_id *id, struct isst_pkg_ctdp *pkg_ctdp);
@@ -226,15 +227,10 @@ extern void set_cpu_mask_from_punit_coremask(struct isst_id *id,
size_t core_cpumask_size,
cpu_set_t *core_cpumask,
int *cpu_cnt);
-extern int isst_send_mbox_command(unsigned int cpu, unsigned char command,
- unsigned char sub_command,
- unsigned int write,
- unsigned int req_data, unsigned int *resp);
-
extern int isst_send_msr_command(unsigned int cpu, unsigned int command,
int write, unsigned long long *req_resp);
-extern int isst_set_platform_ops(void);
+extern int isst_set_platform_ops(int api_version);
extern void isst_update_platform_param(enum isst_platform_param, int vale);
extern int isst_get_disp_freq_multiplier(void);
extern int isst_get_trl_max_levels(void);