|
@@ -40,7 +40,7 @@
|
|
|
|
|
|
#define HISI_TEMP_BASE (-60000)
|
|
|
#define HISI_TEMP_RESET (100000)
|
|
|
-#define HISI_TEMP_STEP (784)
|
|
|
+#define HISI_TEMP_STEP (785)
|
|
|
#define HISI_TEMP_LAG (3500)
|
|
|
|
|
|
#define HISI_MAX_SENSORS 4
|
|
@@ -63,19 +63,19 @@ struct hisi_thermal_data {
|
|
|
/*
|
|
|
* The temperature computation on the tsensor is as follow:
|
|
|
* Unit: millidegree Celsius
|
|
|
- * Step: 255/200 (0.7843)
|
|
|
+ * Step: 200/255 (0.7843)
|
|
|
* Temperature base: -60°C
|
|
|
*
|
|
|
- * The register is programmed in temperature steps, every step is 784
|
|
|
+ * The register is programmed in temperature steps, every step is 785
|
|
|
* millidegree and begins at -60 000 m°C
|
|
|
*
|
|
|
* The temperature from the steps:
|
|
|
*
|
|
|
- * Temp = TempBase + (steps x 784)
|
|
|
+ * Temp = TempBase + (steps x 785)
|
|
|
*
|
|
|
* and the steps from the temperature:
|
|
|
*
|
|
|
- * steps = (Temp - TempBase) / 784
|
|
|
+ * steps = (Temp - TempBase) / 785
|
|
|
*
|
|
|
*/
|
|
|
static inline int hisi_thermal_step_to_temp(int step)
|
|
@@ -85,13 +85,7 @@ static inline int hisi_thermal_step_to_temp(int step)
|
|
|
|
|
|
static inline int hisi_thermal_temp_to_step(int temp)
|
|
|
{
|
|
|
- return (temp - HISI_TEMP_BASE) / HISI_TEMP_STEP;
|
|
|
-}
|
|
|
-
|
|
|
-static inline int hisi_thermal_round_temp(int temp)
|
|
|
-{
|
|
|
- return hisi_thermal_step_to_temp(
|
|
|
- hisi_thermal_temp_to_step(temp));
|
|
|
+ return DIV_ROUND_UP(temp - HISI_TEMP_BASE, HISI_TEMP_STEP);
|
|
|
}
|
|
|
|
|
|
/*
|
|
@@ -127,7 +121,7 @@ static inline int hisi_thermal_round_temp(int temp)
|
|
|
*/
|
|
|
static inline void hisi_thermal_set_lag(void __iomem *addr, int value)
|
|
|
{
|
|
|
- writel((value / HISI_TEMP_STEP) & 0x1F, addr + TEMP0_LAG);
|
|
|
+ writel(DIV_ROUND_UP(value, HISI_TEMP_STEP) & 0x1F, addr + TEMP0_LAG);
|
|
|
}
|
|
|
|
|
|
static inline void hisi_thermal_alarm_clear(void __iomem *addr, int value)
|
|
@@ -274,7 +268,7 @@ static int hisi_thermal_register_sensor(struct platform_device *pdev,
|
|
|
|
|
|
for (i = 0; i < of_thermal_get_ntrips(sensor->tzd); i++) {
|
|
|
if (trip[i].type == THERMAL_TRIP_PASSIVE) {
|
|
|
- sensor->thres_temp = hisi_thermal_round_temp(trip[i].temperature);
|
|
|
+ sensor->thres_temp = trip[i].temperature;
|
|
|
break;
|
|
|
}
|
|
|
}
|