summaryrefslogtreecommitdiff
path: root/target/linux/imx6/patches-4.3/045-imx-thermal-use-cpu-temperature-grade-info-for-thresholds
diff options
context:
space:
mode:
Diffstat (limited to 'target/linux/imx6/patches-4.3/045-imx-thermal-use-cpu-temperature-grade-info-for-thresholds')
-rw-r--r--target/linux/imx6/patches-4.3/045-imx-thermal-use-cpu-temperature-grade-info-for-thresholds112
1 files changed, 0 insertions, 112 deletions
diff --git a/target/linux/imx6/patches-4.3/045-imx-thermal-use-cpu-temperature-grade-info-for-thresholds b/target/linux/imx6/patches-4.3/045-imx-thermal-use-cpu-temperature-grade-info-for-thresholds
deleted file mode 100644
index 6baf7dd..0000000
--- a/target/linux/imx6/patches-4.3/045-imx-thermal-use-cpu-temperature-grade-info-for-thresholds
+++ /dev/null
@@ -1,112 +0,0 @@
---- a/drivers/thermal/imx_thermal.c
-+++ b/drivers/thermal/imx_thermal.c
-@@ -55,6 +55,7 @@
- #define TEMPSENSE2_PANIC_VALUE_SHIFT 16
- #define TEMPSENSE2_PANIC_VALUE_MASK 0xfff0000
-
-+#define OCOTP_MEM0 0x0480
- #define OCOTP_ANA1 0x04e0
-
- /* The driver supports 1 passive trip point and 1 critical trip point */
-@@ -64,12 +65,6 @@ enum imx_thermal_trip {
- IMX_TRIP_NUM,
- };
-
--/*
-- * It defines the temperature in millicelsius for passive trip point
-- * that will trigger cooling action when crossed.
-- */
--#define IMX_TEMP_PASSIVE 85000
--
- #define IMX_POLLING_DELAY 2000 /* millisecond */
- #define IMX_PASSIVE_DELAY 1000
-
-@@ -100,12 +95,14 @@ struct imx_thermal_data {
- u32 c1, c2; /* See formula in imx_get_sensor_data() */
- int temp_passive;
- int temp_critical;
-+ unsigned long temp_max;
- int alarm_temp;
- int last_temp;
- bool irq_enabled;
- int irq;
- struct clk *thermal_clk;
- const struct thermal_soc_data *socdata;
-+ const char *temp_grade;
- };
-
- static void imx_set_panic_temp(struct imx_thermal_data *data,
-@@ -285,10 +282,12 @@ static int imx_set_trip_temp(struct ther
- {
- struct imx_thermal_data *data = tz->devdata;
-
-+ /* do not allow changing critical threshold */
- if (trip == IMX_TRIP_CRITICAL)
- return -EPERM;
-
-- if (temp > IMX_TEMP_PASSIVE)
-+ /* do not allow passive to be set higher than critical */
-+ if (temp < 0 || temp > data->temp_critical)
- return -EINVAL;
-
- data->temp_passive = temp;
-@@ -404,17 +403,39 @@ static int imx_get_sensor_data(struct pl
- data->c1 = temp64;
- data->c2 = n1 * data->c1 + 1000 * t1;
-
-- /*
-- * Set the default passive cooling trip point,
-- * can be changed from userspace.
-- */
-- data->temp_passive = IMX_TEMP_PASSIVE;
-+ /* use OTP for thermal grade */
-+ ret = regmap_read(map, OCOTP_MEM0, &val);
-+ if (ret) {
-+ dev_err(&pdev->dev, "failed to read temp grade: %d\n", ret);
-+ return ret;
-+ }
-+
-+ /* The maximum die temp is specified by the Temperature Grade */
-+ switch ((val >> 6) & 0x3) {
-+ case 0: /* Commercial (0 to 95C) */
-+ data->temp_grade = "Commercial";
-+ data->temp_max = 95000;
-+ break;
-+ case 1: /* Extended Commercial (-20 to 105C) */
-+ data->temp_grade = "Extended Commercial";
-+ data->temp_max = 105000;
-+ break;
-+ case 2: /* Industrial (-40 to 105C) */
-+ data->temp_grade = "Industrial";
-+ data->temp_max = 105000;
-+ break;
-+ case 3: /* Automotive (-40 to 125C) */
-+ data->temp_grade = "Automotive";
-+ data->temp_max = 125000;
-+ break;
-+ }
-
- /*
-- * The maximum die temperature set to 20 C higher than
-- * IMX_TEMP_PASSIVE.
-+ * Set the critical trip point at 5C under max
-+ * Set the passive trip point at 10C under max (can change via sysfs)
- */
-- data->temp_critical = 1000 * 20 + data->temp_passive;
-+ data->temp_critical = data->temp_max - (1000 * 5);
-+ data->temp_passive = data->temp_max - (1000 * 10);
-
- return 0;
- }
-@@ -559,6 +580,11 @@ static int imx_thermal_probe(struct plat
- return ret;
- }
-
-+ dev_info(&pdev->dev, "%s CPU temperature grade - max:%ldC"
-+ " critical:%ldC passive:%ldC\n", data->temp_grade,
-+ data->temp_max / 1000, data->temp_critical / 1000,
-+ data->temp_passive / 1000);
-+
- /* Enable measurements at ~ 10 Hz */
- regmap_write(map, TEMPSENSE1 + REG_CLR, TEMPSENSE1_MEASURE_FREQ);
- measure_freq = DIV_ROUND_UP(32768, 10); /* 10 Hz */