mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git
synced 2025-01-01 10:42:11 +00:00
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: Sumeet Pawnikar <sumeet.r.pawnikar@intel.com> Signed-off-by: Zhang Rui <rui.zhang@intel.com> Signed-off-by: Daniel Lezcano <daniel.lezcano@linaro.org> Link: https://lore.kernel.org/r/1583489952-29612-1-git-send-email-sumeet.r.pawnikar@intel.com
This commit is contained in:
parent
afa58b49ac
commit
671aa926a9
@ -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[] = {
|
|||||||
{ 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);
|
|||||||
|
|
||||||
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()
|
|||||||
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()
|
|||||||
|
|
||||||
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)
|
|||||||
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)
|
|||||||
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)
|
|||||||
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)
|
|||||||
|
|
||||||
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)
|
|||||||
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[] = {
|
|||||||
{ 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)
|
|||||||
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)
|
|||||||
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)
|
|||||||
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()
|
|||||||
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);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user