Commit 671aa926 authored by Sumeet Pawnikar's avatar Sumeet Pawnikar Committed by Daniel Lezcano

thermal: int340x: processor_thermal: Add Tiger Lake support

Added new PCI id for Tiger Lake processor thermal device along with
MMIO RAPL support.
Signed-off-by: default avatarSumeet Pawnikar <sumeet.r.pawnikar@intel.com>
Signed-off-by: default avatarZhang Rui <rui.zhang@intel.com>
Signed-off-by: default avatarDaniel Lezcano <daniel.lezcano@linaro.org>
Link: https://lore.kernel.org/r/1583489952-29612-1-git-send-email-sumeet.r.pawnikar@intel.com
parent afa58b49
...@@ -45,6 +45,9 @@ ...@@ -45,6 +45,9 @@
/* JasperLake thermal reporting device */ /* JasperLake thermal reporting device */
#define PCI_DEVICE_ID_PROC_JSL_THERMAL 0x4503 #define PCI_DEVICE_ID_PROC_JSL_THERMAL 0x4503
/* TigerLake thermal reporting device */
#define PCI_DEVICE_ID_PROC_TGL_THERMAL 0x9A03
#define DRV_NAME "proc_thermal" #define DRV_NAME "proc_thermal"
struct power_config { struct power_config {
...@@ -728,6 +731,8 @@ static const struct pci_device_id proc_thermal_pci_ids[] = { ...@@ -728,6 +731,8 @@ static const struct pci_device_id proc_thermal_pci_ids[] = {
{ PCI_DEVICE(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_PROC_ICL_THERMAL), { PCI_DEVICE(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_PROC_ICL_THERMAL),
.driver_data = (kernel_ulong_t)&rapl_mmio_hsw, }, .driver_data = (kernel_ulong_t)&rapl_mmio_hsw, },
{ PCI_DEVICE(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_PROC_JSL_THERMAL)}, { PCI_DEVICE(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_PROC_JSL_THERMAL)},
{ PCI_DEVICE(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_PROC_TGL_THERMAL),
.driver_data = (kernel_ulong_t)&rapl_mmio_hsw, },
{ 0, }, { 0, },
}; };
......
...@@ -46,7 +46,7 @@ static void start_daemon_mode(void); ...@@ -46,7 +46,7 @@ static void start_daemon_mode(void);
pthread_t event_tid; pthread_t event_tid;
pthread_mutex_t input_lock; pthread_mutex_t input_lock;
void usage() void usage(void)
{ {
printf("Usage: tmon [OPTION...]\n"); printf("Usage: tmon [OPTION...]\n");
printf(" -c, --control cooling device in control\n"); printf(" -c, --control cooling device in control\n");
...@@ -62,7 +62,7 @@ void usage() ...@@ -62,7 +62,7 @@ void usage()
exit(0); exit(0);
} }
void version() void version(void)
{ {
printf("TMON version %s\n", VERSION); printf("TMON version %s\n", VERSION);
exit(EXIT_SUCCESS); exit(EXIT_SUCCESS);
...@@ -70,7 +70,6 @@ void version() ...@@ -70,7 +70,6 @@ void version()
static void tmon_cleanup(void) static void tmon_cleanup(void)
{ {
syslog(LOG_INFO, "TMON exit cleanup\n"); syslog(LOG_INFO, "TMON exit cleanup\n");
fflush(stdout); fflush(stdout);
refresh(); refresh();
...@@ -96,7 +95,6 @@ static void tmon_cleanup(void) ...@@ -96,7 +95,6 @@ static void tmon_cleanup(void)
exit(1); exit(1);
} }
static void tmon_sig_handler(int sig) static void tmon_sig_handler(int sig)
{ {
syslog(LOG_INFO, "TMON caught signal %d\n", sig); syslog(LOG_INFO, "TMON caught signal %d\n", sig);
...@@ -120,7 +118,6 @@ static void tmon_sig_handler(int sig) ...@@ -120,7 +118,6 @@ static void tmon_sig_handler(int sig)
tmon_exit = true; tmon_exit = true;
} }
static void start_syslog(void) static void start_syslog(void)
{ {
if (debug_on) if (debug_on)
...@@ -167,7 +164,6 @@ static void prepare_logging(void) ...@@ -167,7 +164,6 @@ static void prepare_logging(void)
return; return;
} }
fprintf(tmon_log, "#----------- THERMAL SYSTEM CONFIG -------------\n"); fprintf(tmon_log, "#----------- THERMAL SYSTEM CONFIG -------------\n");
for (i = 0; i < ptdata.nr_tz_sensor; i++) { for (i = 0; i < ptdata.nr_tz_sensor; i++) {
char binding_str[33]; /* size of long + 1 */ char binding_str[33]; /* size of long + 1 */
...@@ -175,7 +171,7 @@ static void prepare_logging(void) ...@@ -175,7 +171,7 @@ static void prepare_logging(void)
memset(binding_str, 0, sizeof(binding_str)); memset(binding_str, 0, sizeof(binding_str));
for (j = 0; j < 32; j++) for (j = 0; j < 32; j++)
binding_str[j] = (ptdata.tzi[i].cdev_binding & 1<<j) ? binding_str[j] = (ptdata.tzi[i].cdev_binding & (1 << j)) ?
'1' : '0'; '1' : '0';
fprintf(tmon_log, "#thermal zone %s%02d cdevs binding: %32s\n", fprintf(tmon_log, "#thermal zone %s%02d cdevs binding: %32s\n",
...@@ -187,7 +183,6 @@ static void prepare_logging(void) ...@@ -187,7 +183,6 @@ static void prepare_logging(void)
trip_type_name[ptdata.tzi[i].tp[j].type], trip_type_name[ptdata.tzi[i].tp[j].type],
ptdata.tzi[i].tp[j].temp); ptdata.tzi[i].tp[j].temp);
} }
} }
for (i = 0; i < ptdata.nr_cooling_dev; i++) for (i = 0; i < ptdata.nr_cooling_dev; i++)
...@@ -219,7 +214,6 @@ static struct option opts[] = { ...@@ -219,7 +214,6 @@ static struct option opts[] = {
{ 0, 0, NULL, 0 } { 0, 0, NULL, 0 }
}; };
int main(int argc, char **argv) int main(int argc, char **argv)
{ {
int err = 0; int err = 0;
...@@ -283,7 +277,7 @@ int main(int argc, char **argv) ...@@ -283,7 +277,7 @@ int main(int argc, char **argv)
if (signal(SIGINT, tmon_sig_handler) == SIG_ERR) if (signal(SIGINT, tmon_sig_handler) == SIG_ERR)
syslog(LOG_DEBUG, "Cannot handle SIGINT\n"); syslog(LOG_DEBUG, "Cannot handle SIGINT\n");
if (signal(SIGTERM, tmon_sig_handler) == SIG_ERR) if (signal(SIGTERM, tmon_sig_handler) == SIG_ERR)
syslog(LOG_DEBUG, "Cannot handle SIGINT\n"); syslog(LOG_DEBUG, "Cannot handle SIGTERM\n");
if (probe_thermal_sysfs()) { if (probe_thermal_sysfs()) {
pthread_mutex_destroy(&input_lock); pthread_mutex_destroy(&input_lock);
...@@ -328,8 +322,7 @@ int main(int argc, char **argv) ...@@ -328,8 +322,7 @@ int main(int argc, char **argv)
show_cooling_device(); show_cooling_device();
} }
time_elapsed += ticktime; time_elapsed += ticktime;
controller_handler(trec[0].temp[target_tz_index] / 1000, controller_handler(trec[0].temp[target_tz_index] / 1000, &yk);
&yk);
trec[0].pid_out_pct = yk; trec[0].pid_out_pct = yk;
if (!dialogue_on) if (!dialogue_on)
show_control_w(); show_control_w();
...@@ -340,14 +333,15 @@ int main(int argc, char **argv) ...@@ -340,14 +333,15 @@ int main(int argc, char **argv)
return 0; return 0;
} }
static void start_daemon_mode() static void start_daemon_mode(void)
{ {
daemon_mode = 1; daemon_mode = 1;
/* fork */ /* fork */
pid_t sid, pid = fork(); pid_t sid, pid = fork();
if (pid < 0) {
if (pid < 0)
exit(EXIT_FAILURE); exit(EXIT_FAILURE);
} else if (pid > 0) else if (pid > 0)
/* kill parent */ /* kill parent */
exit(EXIT_SUCCESS); exit(EXIT_SUCCESS);
...@@ -366,11 +360,9 @@ static void start_daemon_mode() ...@@ -366,11 +360,9 @@ static void start_daemon_mode()
if ((chdir("/")) < 0) if ((chdir("/")) < 0)
exit(EXIT_FAILURE); exit(EXIT_FAILURE);
sleep(10); sleep(10);
close(STDIN_FILENO); close(STDIN_FILENO);
close(STDOUT_FILENO); close(STDOUT_FILENO);
close(STDERR_FILENO); close(STDERR_FILENO);
} }
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment