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

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
Loading
Loading
Loading
Loading
+5 −0
Original line number Diff line number Diff line
@@ -45,6 +45,9 @@
/* JasperLake thermal reporting device */
#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"

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),
		.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_TGL_THERMAL),
		.driver_data = (kernel_ulong_t)&rapl_mmio_hsw, },
	{ 0, },
};

+9 −17
Original line number Diff line number Diff line
@@ -46,7 +46,7 @@ static void start_daemon_mode(void);

pthread_t event_tid;
pthread_mutex_t input_lock;
void usage()
void usage(void)
{
	printf("Usage: tmon [OPTION...]\n");
	printf("  -c, --control         cooling device in control\n");
@@ -62,7 +62,7 @@ void usage()
	exit(0);
}

void version()
void version(void)
{
	printf("TMON version %s\n", VERSION);
	exit(EXIT_SUCCESS);
@@ -70,7 +70,6 @@ void version()

static void tmon_cleanup(void)
{

	syslog(LOG_INFO, "TMON exit cleanup\n");
	fflush(stdout);
	refresh();
@@ -96,7 +95,6 @@ static void tmon_cleanup(void)
	exit(1);
}


static void tmon_sig_handler(int sig)
{
	syslog(LOG_INFO, "TMON caught signal %d\n", sig);
@@ -120,7 +118,6 @@ static void tmon_sig_handler(int sig)
	tmon_exit = true;
}


static void start_syslog(void)
{
	if (debug_on)
@@ -167,7 +164,6 @@ static void prepare_logging(void)
		return;
	}


	fprintf(tmon_log, "#----------- THERMAL SYSTEM CONFIG -------------\n");
	for (i = 0; i < ptdata.nr_tz_sensor; i++) {
		char binding_str[33]; /* size of long + 1 */
@@ -175,7 +171,7 @@ static void prepare_logging(void)

		memset(binding_str, 0, sizeof(binding_str));
		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';

		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],
				ptdata.tzi[i].tp[j].temp);
		}

	}

	for (i = 0; i <	ptdata.nr_cooling_dev; i++)
@@ -219,7 +214,6 @@ static struct option opts[] = {
	{ 0, 0, NULL, 0 }
};


int main(int argc, char **argv)
{
	int err = 0;
@@ -283,7 +277,7 @@ int main(int argc, char **argv)
	if (signal(SIGINT, tmon_sig_handler) == SIG_ERR)
		syslog(LOG_DEBUG, "Cannot handle SIGINT\n");
	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()) {
		pthread_mutex_destroy(&input_lock);
@@ -328,8 +322,7 @@ int main(int argc, char **argv)
			show_cooling_device();
		}
		time_elapsed += ticktime;
		controller_handler(trec[0].temp[target_tz_index] / 1000,
				&yk);
		controller_handler(trec[0].temp[target_tz_index] / 1000, &yk);
		trec[0].pid_out_pct = yk;
		if (!dialogue_on)
			show_control_w();
@@ -340,14 +333,15 @@ int main(int argc, char **argv)
	return 0;
}

static void start_daemon_mode()
static void start_daemon_mode(void)
{
	daemon_mode = 1;
	/* fork */
	pid_t	sid, pid = fork();
	if (pid < 0) {

	if (pid < 0)
		exit(EXIT_FAILURE);
	} else if (pid > 0)
	else if (pid > 0)
		/* kill parent */
		exit(EXIT_SUCCESS);

@@ -366,11 +360,9 @@ static void start_daemon_mode()
	if ((chdir("/")) < 0)
		exit(EXIT_FAILURE);


	sleep(10);

	close(STDIN_FILENO);
	close(STDOUT_FILENO);
	close(STDERR_FILENO);

}