mirror of
https://github.com/openwrt/openwrt.git
synced 2024-12-29 01:59:02 +00:00
b5f32064ed
Qualcomm Atheros IPQ807x is a modern WiSoC featuring: * Quad Core ARMv8 Cortex A-53 * @ 2.2 GHz (IPQ8072A/4A/6A/8A) Codename Hawkeye * @ 1.4 GHz (IPQ8070A/1A) Codename Acorn * Dual Band simultaneaous IEEE 802.11ax * 5G: 8x8/80 or 4x4/160MHz (IPQ8074A/8A) * 5G: 4x4/80 or 2x2/160MHz (IPQ8071A/2A/6A) * 5G: 2x2/80MHz (IPQ8070A) * 2G: 4x4/40MHz (IPQ8072A/4A/6A/8A) * 2G: 2x2/40MHz (IPQ8070A/1A) * 1x PSGMII via QCA8072/5 (Max 5x 1GbE ports) * 2x SGMII/USXGMII (1/2.5/5/10 GbE) on Hawkeye * 2x SGMII/USXGMII (1/2.5/5 GbE) on Acorn * DDR3L/4 32/16 bit up to 2400MT/s * SDIO 3.0/SD card 3.0/eMMC 5.1 * Dual USB 3.0 * One PCIe Gen2.1 and one PCIe Gen3.0 port (Single lane) * Parallel NAND (ONFI)/LCD * 6x QUP BLSP SPI/I2C/UART * I2S, PCM, and TDMA * HW PWM * 1.8V configurable GPIO * Companion PMP8074 PMIC via SPMI (GPIOS, RTC etc) Note that only v2 SOC models aka the ones ending with A suffix are supported, v1 models do not comply to the final 802.11ax and have lower clocks, lack the Gen3 PCIe etc. SoC itself has two UBI32 cores for the NSS offloading system, however currently no offloading is supported. Signed-off-by: Robert Marko <robimarko@gmail.com>
102 lines
3.5 KiB
Diff
102 lines
3.5 KiB
Diff
From 7805365fee582056b32c69cf35aafbb94b14a8ca Mon Sep 17 00:00:00 2001
|
|
From: Robert Marko <robimarko@gmail.com>
|
|
Date: Fri, 19 Aug 2022 00:02:43 +0200
|
|
Subject: [PATCH] thermal/drivers/tsens: Allow configuring min and max trips
|
|
|
|
IPQ8074 and IPQ6018 dont support negative trip temperatures and support
|
|
up to 204 degrees C as the max trip temperature.
|
|
|
|
So, instead of always setting the -40 as min and 120 degrees C as max
|
|
allow it to be configured as part of the features.
|
|
|
|
Signed-off-by: Robert Marko <robimarko@gmail.com>
|
|
Reviewed-by: Bjorn Andersson <bjorn.andersson@linaro.org>
|
|
Link: https://lore.kernel.org/r/20220818220245.338396-3-robimarko@gmail.com
|
|
Signed-off-by: Daniel Lezcano <daniel.lezcano@linaro.org>
|
|
---
|
|
drivers/thermal/qcom/tsens-8960.c | 2 ++
|
|
drivers/thermal/qcom/tsens-v0_1.c | 2 ++
|
|
drivers/thermal/qcom/tsens-v1.c | 2 ++
|
|
drivers/thermal/qcom/tsens-v2.c | 2 ++
|
|
drivers/thermal/qcom/tsens.c | 4 ++--
|
|
drivers/thermal/qcom/tsens.h | 4 ++++
|
|
6 files changed, 14 insertions(+), 2 deletions(-)
|
|
|
|
--- a/drivers/thermal/qcom/tsens-8960.c
|
|
+++ b/drivers/thermal/qcom/tsens-8960.c
|
|
@@ -273,6 +273,8 @@ static struct tsens_features tsens_8960_
|
|
.adc = 1,
|
|
.srot_split = 0,
|
|
.max_sensors = 11,
|
|
+ .trip_min_temp = -40000,
|
|
+ .trip_max_temp = 120000,
|
|
};
|
|
|
|
struct tsens_plat_data data_8960 = {
|
|
--- a/drivers/thermal/qcom/tsens-v0_1.c
|
|
+++ b/drivers/thermal/qcom/tsens-v0_1.c
|
|
@@ -543,6 +543,8 @@ static struct tsens_features tsens_v0_1_
|
|
.adc = 1,
|
|
.srot_split = 1,
|
|
.max_sensors = 11,
|
|
+ .trip_min_temp = -40000,
|
|
+ .trip_max_temp = 120000,
|
|
};
|
|
|
|
static const struct reg_field tsens_v0_1_regfields[MAX_REGFIELDS] = {
|
|
--- a/drivers/thermal/qcom/tsens-v1.c
|
|
+++ b/drivers/thermal/qcom/tsens-v1.c
|
|
@@ -306,6 +306,8 @@ static struct tsens_features tsens_v1_fe
|
|
.adc = 1,
|
|
.srot_split = 1,
|
|
.max_sensors = 11,
|
|
+ .trip_min_temp = -40000,
|
|
+ .trip_max_temp = 120000,
|
|
};
|
|
|
|
static const struct reg_field tsens_v1_regfields[MAX_REGFIELDS] = {
|
|
--- a/drivers/thermal/qcom/tsens-v2.c
|
|
+++ b/drivers/thermal/qcom/tsens-v2.c
|
|
@@ -35,6 +35,8 @@ static struct tsens_features tsens_v2_fe
|
|
.adc = 0,
|
|
.srot_split = 1,
|
|
.max_sensors = 16,
|
|
+ .trip_min_temp = -40000,
|
|
+ .trip_max_temp = 120000,
|
|
};
|
|
|
|
static const struct reg_field tsens_v2_regfields[MAX_REGFIELDS] = {
|
|
--- a/drivers/thermal/qcom/tsens.c
|
|
+++ b/drivers/thermal/qcom/tsens.c
|
|
@@ -572,8 +572,8 @@ static int tsens_set_trips(void *_sensor
|
|
dev_dbg(dev, "[%u] %s: proposed thresholds: (%d:%d)\n",
|
|
hw_id, __func__, low, high);
|
|
|
|
- cl_high = clamp_val(high, -40000, 120000);
|
|
- cl_low = clamp_val(low, -40000, 120000);
|
|
+ cl_high = clamp_val(high, priv->feat->trip_min_temp, priv->feat->trip_max_temp);
|
|
+ cl_low = clamp_val(low, priv->feat->trip_min_temp, priv->feat->trip_max_temp);
|
|
|
|
high_val = tsens_mC_to_hw(s, cl_high);
|
|
low_val = tsens_mC_to_hw(s, cl_low);
|
|
--- a/drivers/thermal/qcom/tsens.h
|
|
+++ b/drivers/thermal/qcom/tsens.h
|
|
@@ -501,6 +501,8 @@ enum regfield_ids {
|
|
* with SROT only being available to secure boot firmware?
|
|
* @has_watchdog: does this IP support watchdog functionality?
|
|
* @max_sensors: maximum sensors supported by this version of the IP
|
|
+ * @trip_min_temp: minimum trip temperature supported by this version of the IP
|
|
+ * @trip_max_temp: maximum trip temperature supported by this version of the IP
|
|
*/
|
|
struct tsens_features {
|
|
unsigned int ver_major;
|
|
@@ -510,6 +512,8 @@ struct tsens_features {
|
|
unsigned int srot_split:1;
|
|
unsigned int has_watchdog:1;
|
|
unsigned int max_sensors;
|
|
+ int trip_min_temp;
|
|
+ int trip_max_temp;
|
|
};
|
|
|
|
/**
|