* [PATCH v9 0/7] Add TSENS support for IPQ5332, IPQ5424
@ 2024-11-25 5:07 Manikanta Mylavarapu
2024-11-25 5:07 ` [PATCH v9 1/7] dt-bindings: thermal: tsens: Add ipq5332, ipq5424 compatible Manikanta Mylavarapu
` (6 more replies)
0 siblings, 7 replies; 15+ messages in thread
From: Manikanta Mylavarapu @ 2024-11-25 5:07 UTC (permalink / raw)
To: srinivas.kandagatla, robh, krzk+dt, conor+dt, amitk,
thara.gopinath, rafael, daniel.lezcano, rui.zhang, lukasz.luba,
andersson, konradybcio, linux-arm-msm, devicetree, linux-kernel,
linux-pm
Cc: quic_srichara, quic_varada
IPQ5332 uses tsens v2.3.3 IP with combined interrupt for
upper/lower and critical. IPQ5332 does not have RPM and
kernel has to take care of TSENS enablement and calibration.
IPQ5424 also uses same tsens v2.3.3 IP and it's similar to IPQ5332
(no RPM) hence add IPQ5424 support in this series itself.
This patch series adds the temperature sensor enablement,
calibration support for IPQ5332 and IPQ5424.
Changes in V9:
- Fixed all review comments from Konrad Dybico
- Detailed change logs are added to the respective patches
V8 can be found at:
https://lore.kernel.org/linux-arm-msm/20241115103957.1157495-1-quic_mmanikan@quicinc.com/
V7 can be found at:
https://lore.kernel.org/linux-arm-msm/20241107140550.3260859-1-quic_mmanikan@quicinc.com/
V6 can be found at:
https://lore.kernel.org/linux-arm-msm/20241104124413.2012794-1-quic_mmanikan@quicinc.com/
V5 can be found at:
https://lore.kernel.org/linux-arm-msm/20230721054619.2366510-1-quic_ipkumar@quicinc.com/
V4 can be found at:
https://lore.kernel.org/linux-arm-msm/20230719104041.126718-1-quic_ipkumar@quicinc.com/
V3 can be found at:
https://lore.kernel.org/linux-arm-msm/20230713052732.787853-1-quic_ipkumar@quicinc.com/
V2 can be found at:
https://lore.kernel.org/linux-arm-msm/20230712113539.4029941-1-quic_ipkumar@quicinc.com/
Manikanta Mylavarapu (3):
dt-bindings: nvmem: Add compatible for IPQ5424
arm64: dts: qcom: ipq5424: Add tsens node
arm64: dts: qcom: ipq5424: Add thermal zone nodes
Praveenkumar I (4):
dt-bindings: thermal: tsens: Add ipq5332, ipq5424 compatible
thermal/drivers/tsens: Add TSENS enable and calibration support for V2
arm64: dts: qcom: ipq5332: Add tsens node
arm64: dts: qcom: ipq5332: Add thermal zone nodes
.../bindings/nvmem/qcom,qfprom.yaml | 1 +
.../bindings/thermal/qcom-tsens.yaml | 18 ++
arch/arm64/boot/dts/qcom/ipq5332.dtsi | 135 ++++++++++++
arch/arm64/boot/dts/qcom/ipq5424.dtsi | 201 ++++++++++++++++++
drivers/thermal/qcom/tsens-v2.c | 178 ++++++++++++++++
drivers/thermal/qcom/tsens.c | 8 +-
drivers/thermal/qcom/tsens.h | 4 +-
7 files changed, 543 insertions(+), 2 deletions(-)
--
2.34.1
^ permalink raw reply [flat|nested] 15+ messages in thread
* [PATCH v9 1/7] dt-bindings: thermal: tsens: Add ipq5332, ipq5424 compatible
2024-11-25 5:07 [PATCH v9 0/7] Add TSENS support for IPQ5332, IPQ5424 Manikanta Mylavarapu
@ 2024-11-25 5:07 ` Manikanta Mylavarapu
2024-11-25 5:07 ` [PATCH v9 2/7] dt-bindings: nvmem: Add compatible for IPQ5424 Manikanta Mylavarapu
` (5 subsequent siblings)
6 siblings, 0 replies; 15+ messages in thread
From: Manikanta Mylavarapu @ 2024-11-25 5:07 UTC (permalink / raw)
To: srinivas.kandagatla, robh, krzk+dt, conor+dt, amitk,
thara.gopinath, rafael, daniel.lezcano, rui.zhang, lukasz.luba,
andersson, konradybcio, linux-arm-msm, devicetree, linux-kernel,
linux-pm
Cc: quic_srichara, quic_varada
From: Praveenkumar I <quic_ipkumar@quicinc.com>
The IPQ5332 and IPQ5424 use TSENS v2.3.3 IP with combined interrupt.
RPM is not available in these SoCs, hence adding new compatible
to have the sensor enablement and calibration function. Also add
nvmem-cell-names.
Reviewed-by: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
Signed-off-by: Praveenkumar I <quic_ipkumar@quicinc.com>
Signed-off-by: Manikanta Mylavarapu <quic_mmanikan@quicinc.com>
---
Changes in V9:
- No change
.../bindings/thermal/qcom-tsens.yaml | 18 ++++++++++++++++++
1 file changed, 18 insertions(+)
diff --git a/Documentation/devicetree/bindings/thermal/qcom-tsens.yaml b/Documentation/devicetree/bindings/thermal/qcom-tsens.yaml
index ed5de0f92a9e..81bcdb586c36 100644
--- a/Documentation/devicetree/bindings/thermal/qcom-tsens.yaml
+++ b/Documentation/devicetree/bindings/thermal/qcom-tsens.yaml
@@ -75,6 +75,8 @@ properties:
- description: v2 of TSENS with combined interrupt
enum:
+ - qcom,ipq5332-tsens
+ - qcom,ipq5424-tsens
- qcom,ipq8074-tsens
- description: v2 of TSENS with combined interrupt
@@ -211,6 +213,18 @@ properties:
- const: s9_p2_backup
- const: s10_p1_backup
- const: s10_p2_backup
+ - minItems: 8
+ items:
+ - const: mode
+ - const: base0
+ - const: base1
+ - pattern: '^tsens_sens[0-9]+_off$'
+ - pattern: '^tsens_sens[0-9]+_off$'
+ - pattern: '^tsens_sens[0-9]+_off$'
+ - pattern: '^tsens_sens[0-9]+_off$'
+ - pattern: '^tsens_sens[0-9]+_off$'
+ - pattern: '^tsens_sens[0-9]+_off$'
+ - pattern: '^tsens_sens[0-9]+_off$'
"#qcom,sensors":
description:
@@ -270,6 +284,8 @@ allOf:
compatible:
contains:
enum:
+ - qcom,ipq5332-tsens
+ - qcom,ipq5424-tsens
- qcom,ipq8074-tsens
then:
properties:
@@ -285,6 +301,8 @@ allOf:
compatible:
contains:
enum:
+ - qcom,ipq5332-tsens
+ - qcom,ipq5424-tsens
- qcom,ipq8074-tsens
- qcom,tsens-v0_1
- qcom,tsens-v1
--
2.34.1
^ permalink raw reply related [flat|nested] 15+ messages in thread
* [PATCH v9 2/7] dt-bindings: nvmem: Add compatible for IPQ5424
2024-11-25 5:07 [PATCH v9 0/7] Add TSENS support for IPQ5332, IPQ5424 Manikanta Mylavarapu
2024-11-25 5:07 ` [PATCH v9 1/7] dt-bindings: thermal: tsens: Add ipq5332, ipq5424 compatible Manikanta Mylavarapu
@ 2024-11-25 5:07 ` Manikanta Mylavarapu
2024-11-25 5:07 ` [PATCH v9 3/7] thermal/drivers/tsens: Add TSENS enable and calibration support for V2 Manikanta Mylavarapu
` (4 subsequent siblings)
6 siblings, 0 replies; 15+ messages in thread
From: Manikanta Mylavarapu @ 2024-11-25 5:07 UTC (permalink / raw)
To: srinivas.kandagatla, robh, krzk+dt, conor+dt, amitk,
thara.gopinath, rafael, daniel.lezcano, rui.zhang, lukasz.luba,
andersson, konradybcio, linux-arm-msm, devicetree, linux-kernel,
linux-pm
Cc: quic_srichara, quic_varada
Document the QFPROM block found on IPQ5424
Acked-by: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
Signed-off-by: Manikanta Mylavarapu <quic_mmanikan@quicinc.com>
---
Changes in V9:
- No change
Documentation/devicetree/bindings/nvmem/qcom,qfprom.yaml | 1 +
1 file changed, 1 insertion(+)
diff --git a/Documentation/devicetree/bindings/nvmem/qcom,qfprom.yaml b/Documentation/devicetree/bindings/nvmem/qcom,qfprom.yaml
index 80845c722ae4..507671a75cb7 100644
--- a/Documentation/devicetree/bindings/nvmem/qcom,qfprom.yaml
+++ b/Documentation/devicetree/bindings/nvmem/qcom,qfprom.yaml
@@ -20,6 +20,7 @@ properties:
- qcom,apq8064-qfprom
- qcom,apq8084-qfprom
- qcom,ipq5332-qfprom
+ - qcom,ipq5424-qfprom
- qcom,ipq6018-qfprom
- qcom,ipq8064-qfprom
- qcom,ipq8074-qfprom
--
2.34.1
^ permalink raw reply related [flat|nested] 15+ messages in thread
* [PATCH v9 3/7] thermal/drivers/tsens: Add TSENS enable and calibration support for V2
2024-11-25 5:07 [PATCH v9 0/7] Add TSENS support for IPQ5332, IPQ5424 Manikanta Mylavarapu
2024-11-25 5:07 ` [PATCH v9 1/7] dt-bindings: thermal: tsens: Add ipq5332, ipq5424 compatible Manikanta Mylavarapu
2024-11-25 5:07 ` [PATCH v9 2/7] dt-bindings: nvmem: Add compatible for IPQ5424 Manikanta Mylavarapu
@ 2024-11-25 5:07 ` Manikanta Mylavarapu
2024-11-26 12:06 ` Dmitry Baryshkov
2024-12-13 19:02 ` Christophe JAILLET
2024-11-25 5:07 ` [PATCH v9 4/7] arm64: dts: qcom: ipq5332: Add tsens node Manikanta Mylavarapu
` (3 subsequent siblings)
6 siblings, 2 replies; 15+ messages in thread
From: Manikanta Mylavarapu @ 2024-11-25 5:07 UTC (permalink / raw)
To: srinivas.kandagatla, robh, krzk+dt, conor+dt, amitk,
thara.gopinath, rafael, daniel.lezcano, rui.zhang, lukasz.luba,
andersson, konradybcio, linux-arm-msm, devicetree, linux-kernel,
linux-pm
Cc: quic_srichara, quic_varada
From: Praveenkumar I <quic_ipkumar@quicinc.com>
SoCs without RPM need to enable sensors and calibrate them from the kernel.
The IPQ5332 and IPQ5424 use the tsens v2.3.3 IP and do not have RPM.
Therefore, add a new calibration function for V2, as the tsens.c calib
function only supports V1. Also add new feature_config, ops and data for
IPQ5332, IPQ5424.
Although the TSENS IP supports 16 sensors, not all are used. The hw_id
is used to enable the relevant sensors.
Signed-off-by: Praveenkumar I <quic_ipkumar@quicinc.com>
Signed-off-by: Manikanta Mylavarapu <quic_mmanikan@quicinc.com>
---
Changes in V9:
- Update variable declaration order in tsens_v2_calibrate_sensor()
- Replace tab with space during the 'val' computation in the
tsens_v2_calibrate_sensor()
- Update 'RSEULT_FORMAT_TEMP' to 'RESULT_FORMAT_TEMP'
drivers/thermal/qcom/tsens-v2.c | 178 ++++++++++++++++++++++++++++++++
drivers/thermal/qcom/tsens.c | 8 +-
drivers/thermal/qcom/tsens.h | 4 +-
3 files changed, 188 insertions(+), 2 deletions(-)
diff --git a/drivers/thermal/qcom/tsens-v2.c b/drivers/thermal/qcom/tsens-v2.c
index 0cb7301eca6e..836155fa9ab2 100644
--- a/drivers/thermal/qcom/tsens-v2.c
+++ b/drivers/thermal/qcom/tsens-v2.c
@@ -4,13 +4,32 @@
* Copyright (c) 2018, Linaro Limited
*/
+#include <linux/bitfield.h>
#include <linux/bitops.h>
#include <linux/regmap.h>
+#include <linux/nvmem-consumer.h>
#include "tsens.h"
/* ----- SROT ------ */
#define SROT_HW_VER_OFF 0x0000
#define SROT_CTRL_OFF 0x0004
+#define SROT_MEASURE_PERIOD 0x0008
+#define SROT_Sn_CONVERSION 0x0060
+#define V2_SHIFT_DEFAULT 0x0003
+#define V2_SLOPE_DEFAULT 0x0cd0
+#define V2_CZERO_DEFAULT 0x016a
+#define ONE_PT_SLOPE 0x0cd0
+#define TWO_PT_SHIFTED_GAIN 921600
+#define ONE_PT_CZERO_CONST 94
+#define SW_RST_DEASSERT 0x0
+#define SW_RST_ASSERT 0x1
+#define MEASURE_PERIOD_2mSEC 0x1
+#define RESULT_FORMAT_TEMP 0x1
+#define TSENS_ENABLE 0x1
+#define SENSOR_CONVERSION(n) (((n) * 4) + SROT_Sn_CONVERSION)
+#define CONVERSION_SHIFT_MASK GENMASK(24, 23)
+#define CONVERSION_SLOPE_MASK GENMASK(22, 10)
+#define CONVERSION_CZERO_MASK GENMASK(9, 0)
/* ----- TM ------ */
#define TM_INT_EN_OFF 0x0004
@@ -50,6 +69,17 @@ static struct tsens_features ipq8074_feat = {
.trip_max_temp = 204000,
};
+static struct tsens_features ipq5332_feat = {
+ .ver_major = VER_2_X_NO_RPM,
+ .crit_int = 1,
+ .combo_int = 1,
+ .adc = 0,
+ .srot_split = 1,
+ .max_sensors = 16,
+ .trip_min_temp = 0,
+ .trip_max_temp = 204000,
+};
+
static const struct reg_field tsens_v2_regfields[MAX_REGFIELDS] = {
/* ----- SROT ------ */
/* VERSION */
@@ -59,6 +89,10 @@ static const struct reg_field tsens_v2_regfields[MAX_REGFIELDS] = {
/* CTRL_OFF */
[TSENS_EN] = REG_FIELD(SROT_CTRL_OFF, 0, 0),
[TSENS_SW_RST] = REG_FIELD(SROT_CTRL_OFF, 1, 1),
+ [SENSOR_EN] = REG_FIELD(SROT_CTRL_OFF, 3, 18),
+ [CODE_OR_TEMP] = REG_FIELD(SROT_CTRL_OFF, 21, 21),
+
+ [MAIN_MEASURE_PERIOD] = REG_FIELD(SROT_MEASURE_PERIOD, 0, 7),
/* ----- TM ------ */
/* INTERRUPT ENABLE */
@@ -104,6 +138,128 @@ static const struct reg_field tsens_v2_regfields[MAX_REGFIELDS] = {
[TRDY] = REG_FIELD(TM_TRDY_OFF, 0, 0),
};
+static int tsens_v2_calibrate_sensor(struct device *dev, struct tsens_sensor *sensor,
+ struct regmap *map, u32 mode, u32 base0, u32 base1)
+{
+ u32 shift = V2_SHIFT_DEFAULT;
+ u32 slope = V2_SLOPE_DEFAULT;
+ u32 czero = V2_CZERO_DEFAULT;
+ char name[20];
+ u32 val;
+ int ret;
+
+ /* Read offset value */
+ ret = snprintf(name, sizeof(name), "tsens_sens%d_off", sensor->hw_id);
+ if (ret < 0)
+ return ret;
+
+ ret = nvmem_cell_read_variable_le_u32(dev, name, &sensor->offset);
+ if (ret)
+ return ret;
+
+ /* Based on calib mode, program SHIFT, SLOPE and CZERO */
+ switch (mode) {
+ case TWO_PT_CALIB:
+ slope = (TWO_PT_SHIFTED_GAIN / (base1 - base0));
+
+ czero = (base0 + sensor->offset - ((base1 - base0) / 3));
+
+ break;
+ case ONE_PT_CALIB2:
+ czero = base0 + sensor->offset - ONE_PT_CZERO_CONST;
+
+ slope = ONE_PT_SLOPE;
+
+ break;
+ default:
+ dev_dbg(dev, "calibrationless mode\n");
+ }
+
+ val = FIELD_PREP(CONVERSION_SHIFT_MASK, shift) |
+ FIELD_PREP(CONVERSION_SLOPE_MASK, slope) |
+ FIELD_PREP(CONVERSION_CZERO_MASK, czero);
+
+ regmap_write(map, SENSOR_CONVERSION(sensor->hw_id), val);
+
+ return 0;
+}
+
+static int tsens_v2_calibration(struct tsens_priv *priv)
+{
+ struct device *dev = priv->dev;
+ u32 mode, base0, base1;
+ int i, ret;
+
+ if (priv->num_sensors > MAX_SENSORS)
+ return -EINVAL;
+
+ ret = nvmem_cell_read_variable_le_u32(priv->dev, "mode", &mode);
+ if (ret == -ENOENT)
+ dev_warn(priv->dev, "Calibration data not present in DT\n");
+ if (ret < 0)
+ return ret;
+
+ dev_dbg(priv->dev, "calibration mode is %d\n", mode);
+
+ ret = nvmem_cell_read_variable_le_u32(priv->dev, "base0", &base0);
+ if (ret < 0)
+ return ret;
+
+ ret = nvmem_cell_read_variable_le_u32(priv->dev, "base1", &base1);
+ if (ret < 0)
+ return ret;
+
+ /* Calibrate each sensor */
+ for (i = 0; i < priv->num_sensors; i++) {
+ ret = tsens_v2_calibrate_sensor(dev, &priv->sensor[i], priv->srot_map,
+ mode, base0, base1);
+ if (ret < 0)
+ return ret;
+ }
+
+ return 0;
+}
+
+static int __init init_tsens_v2_no_rpm(struct tsens_priv *priv)
+{
+ struct device *dev = priv->dev;
+ int i, ret;
+ u32 val = 0;
+
+ ret = init_common(priv);
+ if (ret < 0)
+ return ret;
+
+ priv->rf[CODE_OR_TEMP] = devm_regmap_field_alloc(dev, priv->srot_map,
+ priv->fields[CODE_OR_TEMP]);
+ if (IS_ERR(priv->rf[CODE_OR_TEMP]))
+ return PTR_ERR(priv->rf[CODE_OR_TEMP]);
+
+ priv->rf[MAIN_MEASURE_PERIOD] = devm_regmap_field_alloc(dev, priv->srot_map,
+ priv->fields[MAIN_MEASURE_PERIOD]);
+ if (IS_ERR(priv->rf[MAIN_MEASURE_PERIOD]))
+ return PTR_ERR(priv->rf[MAIN_MEASURE_PERIOD]);
+
+ regmap_field_write(priv->rf[TSENS_SW_RST], SW_RST_ASSERT);
+
+ regmap_field_write(priv->rf[MAIN_MEASURE_PERIOD], MEASURE_PERIOD_2mSEC);
+
+ /* Enable available sensors */
+ for (i = 0; i < priv->num_sensors; i++)
+ val |= 1 << priv->sensor[i].hw_id;
+
+ regmap_field_write(priv->rf[SENSOR_EN], val);
+
+ /* Select temperature format, unit is deci-Celsius */
+ regmap_field_write(priv->rf[CODE_OR_TEMP], RESULT_FORMAT_TEMP);
+
+ regmap_field_write(priv->rf[TSENS_SW_RST], SW_RST_DEASSERT);
+
+ regmap_field_write(priv->rf[TSENS_EN], TSENS_ENABLE);
+
+ return 0;
+}
+
static const struct tsens_ops ops_generic_v2 = {
.init = init_common,
.get_temp = get_temp_tsens_valid,
@@ -122,6 +278,28 @@ struct tsens_plat_data data_ipq8074 = {
.fields = tsens_v2_regfields,
};
+static const struct tsens_ops ops_ipq5332 = {
+ .init = init_tsens_v2_no_rpm,
+ .get_temp = get_temp_tsens_valid,
+ .calibrate = tsens_v2_calibration,
+};
+
+struct tsens_plat_data data_ipq5332 = {
+ .num_sensors = 5,
+ .ops = &ops_ipq5332,
+ .hw_ids = (unsigned int []){11, 12, 13, 14, 15},
+ .feat = &ipq5332_feat,
+ .fields = tsens_v2_regfields,
+};
+
+struct tsens_plat_data data_ipq5424 = {
+ .num_sensors = 7,
+ .ops = &ops_ipq5332,
+ .hw_ids = (unsigned int []){9, 10, 11, 12, 13, 14, 15},
+ .feat = &ipq5332_feat,
+ .fields = tsens_v2_regfields,
+};
+
/* Kept around for backward compatibility with old msm8996.dtsi */
struct tsens_plat_data data_8996 = {
.num_sensors = 13,
diff --git a/drivers/thermal/qcom/tsens.c b/drivers/thermal/qcom/tsens.c
index 3aa3736181aa..1f5d4de017d9 100644
--- a/drivers/thermal/qcom/tsens.c
+++ b/drivers/thermal/qcom/tsens.c
@@ -975,7 +975,7 @@ int __init init_common(struct tsens_priv *priv)
ret = regmap_field_read(priv->rf[TSENS_EN], &enabled);
if (ret)
goto err_put_device;
- if (!enabled) {
+ if (!enabled && (tsens_version(priv) != VER_2_X_NO_RPM)) {
dev_err(dev, "%s: device not enabled\n", __func__);
ret = -ENODEV;
goto err_put_device;
@@ -1102,6 +1102,12 @@ static SIMPLE_DEV_PM_OPS(tsens_pm_ops, tsens_suspend, tsens_resume);
static const struct of_device_id tsens_table[] = {
{
+ .compatible = "qcom,ipq5332-tsens",
+ .data = &data_ipq5332,
+ }, {
+ .compatible = "qcom,ipq5424-tsens",
+ .data = &data_ipq5424,
+ }, {
.compatible = "qcom,ipq8064-tsens",
.data = &data_8960,
}, {
diff --git a/drivers/thermal/qcom/tsens.h b/drivers/thermal/qcom/tsens.h
index 7b36a0318fa6..dcc3100cd449 100644
--- a/drivers/thermal/qcom/tsens.h
+++ b/drivers/thermal/qcom/tsens.h
@@ -35,6 +35,7 @@ enum tsens_ver {
VER_0_1,
VER_1_X,
VER_2_X,
+ VER_2_X_NO_RPM,
};
enum tsens_irq_type {
@@ -168,6 +169,7 @@ enum regfield_ids {
TSENS_SW_RST,
SENSOR_EN,
CODE_OR_TEMP,
+ MAIN_MEASURE_PERIOD,
/* ----- TM ------ */
/* TRDY */
@@ -650,6 +652,6 @@ extern struct tsens_plat_data data_8226, data_8909, data_8916, data_8939, data_8
extern struct tsens_plat_data data_tsens_v1, data_8937, data_8976, data_8956;
/* TSENS v2 targets */
-extern struct tsens_plat_data data_8996, data_ipq8074, data_tsens_v2;
+extern struct tsens_plat_data data_8996, data_ipq8074, data_ipq5332, data_ipq5424, data_tsens_v2;
#endif /* __QCOM_TSENS_H__ */
--
2.34.1
^ permalink raw reply related [flat|nested] 15+ messages in thread
* [PATCH v9 4/7] arm64: dts: qcom: ipq5332: Add tsens node
2024-11-25 5:07 [PATCH v9 0/7] Add TSENS support for IPQ5332, IPQ5424 Manikanta Mylavarapu
` (2 preceding siblings ...)
2024-11-25 5:07 ` [PATCH v9 3/7] thermal/drivers/tsens: Add TSENS enable and calibration support for V2 Manikanta Mylavarapu
@ 2024-11-25 5:07 ` Manikanta Mylavarapu
2024-12-13 12:59 ` Konrad Dybcio
2024-11-25 5:07 ` [PATCH v9 5/7] arm64: dts: qcom: ipq5332: Add thermal zone nodes Manikanta Mylavarapu
` (2 subsequent siblings)
6 siblings, 1 reply; 15+ messages in thread
From: Manikanta Mylavarapu @ 2024-11-25 5:07 UTC (permalink / raw)
To: srinivas.kandagatla, robh, krzk+dt, conor+dt, amitk,
thara.gopinath, rafael, daniel.lezcano, rui.zhang, lukasz.luba,
andersson, konradybcio, linux-arm-msm, devicetree, linux-kernel,
linux-pm
Cc: quic_srichara, quic_varada
From: Praveenkumar I <quic_ipkumar@quicinc.com>
IPQ5332 has tsens v2.3.3 peripheral. This patch adds the tsens
node with nvmem cells for calibration data.
Signed-off-by: Praveenkumar I <quic_ipkumar@quicinc.com>
Signed-off-by: Manikanta Mylavarapu <quic_mmanikan@quicinc.com>
---
Changes in V9:
- No change
arch/arm64/boot/dts/qcom/ipq5332.dtsi | 66 +++++++++++++++++++++++++++
1 file changed, 66 insertions(+)
diff --git a/arch/arm64/boot/dts/qcom/ipq5332.dtsi b/arch/arm64/boot/dts/qcom/ipq5332.dtsi
index d3c3e215a15c..d643dafe5846 100644
--- a/arch/arm64/boot/dts/qcom/ipq5332.dtsi
+++ b/arch/arm64/boot/dts/qcom/ipq5332.dtsi
@@ -177,6 +177,46 @@ cpu_speed_bin: cpu-speed-bin@1d {
reg = <0x1d 0x2>;
bits = <7 2>;
};
+
+ tsens_sens11_off: s11@3a5 {
+ reg = <0x3a5 0x1>;
+ bits = <4 4>;
+ };
+
+ tsens_sens12_off: s12@3a6 {
+ reg = <0x3a6 0x1>;
+ bits = <0 4>;
+ };
+
+ tsens_sens13_off: s13@3a6 {
+ reg = <0x3a6 0x1>;
+ bits = <4 4>;
+ };
+
+ tsens_sens14_off: s14@3ad {
+ reg = <0x3ad 0x2>;
+ bits = <7 4>;
+ };
+
+ tsens_sens15_off: s15@3ae {
+ reg = <0x3ae 0x1>;
+ bits = <3 4>;
+ };
+
+ tsens_mode: mode@3e1 {
+ reg = <0x3e1 0x1>;
+ bits = <0 3>;
+ };
+
+ tsens_base0: base0@3e1 {
+ reg = <0x3e1 0x2>;
+ bits = <3 10>;
+ };
+
+ tsens_base1: base1@3e2 {
+ reg = <0x3e2 0x2>;
+ bits = <5 10>;
+ };
};
rng: rng@e3000 {
@@ -186,6 +226,32 @@ rng: rng@e3000 {
clock-names = "core";
};
+ tsens: thermal-sensor@4a9000 {
+ compatible = "qcom,ipq5332-tsens";
+ reg = <0x004a9000 0x1000>,
+ <0x004a8000 0x1000>;
+ nvmem-cells = <&tsens_mode>,
+ <&tsens_base0>,
+ <&tsens_base1>,
+ <&tsens_sens11_off>,
+ <&tsens_sens12_off>,
+ <&tsens_sens13_off>,
+ <&tsens_sens14_off>,
+ <&tsens_sens15_off>;
+ nvmem-cell-names = "mode",
+ "base0",
+ "base1",
+ "tsens_sens11_off",
+ "tsens_sens12_off",
+ "tsens_sens13_off",
+ "tsens_sens14_off",
+ "tsens_sens15_off";
+ interrupts = <GIC_SPI 320 IRQ_TYPE_LEVEL_HIGH>;
+ interrupt-names = "combined";
+ #qcom,sensors = <5>;
+ #thermal-sensor-cells = <1>;
+ };
+
tlmm: pinctrl@1000000 {
compatible = "qcom,ipq5332-tlmm";
reg = <0x01000000 0x300000>;
--
2.34.1
^ permalink raw reply related [flat|nested] 15+ messages in thread
* [PATCH v9 5/7] arm64: dts: qcom: ipq5332: Add thermal zone nodes
2024-11-25 5:07 [PATCH v9 0/7] Add TSENS support for IPQ5332, IPQ5424 Manikanta Mylavarapu
` (3 preceding siblings ...)
2024-11-25 5:07 ` [PATCH v9 4/7] arm64: dts: qcom: ipq5332: Add tsens node Manikanta Mylavarapu
@ 2024-11-25 5:07 ` Manikanta Mylavarapu
2024-11-25 5:07 ` [PATCH v9 6/7] arm64: dts: qcom: ipq5424: Add tsens node Manikanta Mylavarapu
2024-11-25 5:07 ` [PATCH v9 7/7] arm64: dts: qcom: ipq5424: Add thermal zone nodes Manikanta Mylavarapu
6 siblings, 0 replies; 15+ messages in thread
From: Manikanta Mylavarapu @ 2024-11-25 5:07 UTC (permalink / raw)
To: srinivas.kandagatla, robh, krzk+dt, conor+dt, amitk,
thara.gopinath, rafael, daniel.lezcano, rui.zhang, lukasz.luba,
andersson, konradybcio, linux-arm-msm, devicetree, linux-kernel,
linux-pm
Cc: quic_srichara, quic_varada
From: Praveenkumar I <quic_ipkumar@quicinc.com>
This patch adds thermal zone nodes for sensors present in
IPQ5332.
Reviewed-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
Signed-off-by: Praveenkumar I <quic_ipkumar@quicinc.com>
Signed-off-by: Manikanta Mylavarapu <quic_mmanikan@quicinc.com>
---
Changes in V9:
- No change
arch/arm64/boot/dts/qcom/ipq5332.dtsi | 69 +++++++++++++++++++++++++++
1 file changed, 69 insertions(+)
diff --git a/arch/arm64/boot/dts/qcom/ipq5332.dtsi b/arch/arm64/boot/dts/qcom/ipq5332.dtsi
index d643dafe5846..4f37781de86a 100644
--- a/arch/arm64/boot/dts/qcom/ipq5332.dtsi
+++ b/arch/arm64/boot/dts/qcom/ipq5332.dtsi
@@ -554,4 +554,73 @@ timer {
<GIC_PPI 4 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>,
<GIC_PPI 1 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>;
};
+
+ thermal-zones {
+ rfa-0-thermal {
+ thermal-sensors = <&tsens 11>;
+
+ trips {
+ rfa-0-critical {
+ temperature = <125000>;
+ hysteresis = <1000>;
+ type = "critical";
+ };
+ };
+ };
+
+ rfa-1-thermal {
+ thermal-sensors = <&tsens 12>;
+
+ trips {
+ rfa-1-critical {
+ temperature = <125000>;
+ hysteresis = <1000>;
+ type = "critical";
+ };
+ };
+ };
+
+ misc-thermal {
+ thermal-sensors = <&tsens 13>;
+
+ trips {
+ misc-critical {
+ temperature = <125000>;
+ hysteresis = <1000>;
+ type = "critical";
+ };
+ };
+ };
+
+ cpu-top-thermal {
+ polling-delay-passive = <100>;
+ thermal-sensors = <&tsens 14>;
+
+ trips {
+ cpu-top-critical {
+ temperature = <115000>;
+ hysteresis = <1000>;
+ type = "critical";
+ };
+
+ cpu-passive {
+ temperature = <105000>;
+ hysteresis = <1000>;
+ type = "passive";
+ };
+ };
+ };
+
+ top-glue-thermal {
+ thermal-sensors = <&tsens 15>;
+
+ trips {
+ top-glue-critical {
+ temperature = <125000>;
+ hysteresis = <1000>;
+ type = "critical";
+ };
+ };
+ };
+ };
};
--
2.34.1
^ permalink raw reply related [flat|nested] 15+ messages in thread
* [PATCH v9 6/7] arm64: dts: qcom: ipq5424: Add tsens node
2024-11-25 5:07 [PATCH v9 0/7] Add TSENS support for IPQ5332, IPQ5424 Manikanta Mylavarapu
` (4 preceding siblings ...)
2024-11-25 5:07 ` [PATCH v9 5/7] arm64: dts: qcom: ipq5332: Add thermal zone nodes Manikanta Mylavarapu
@ 2024-11-25 5:07 ` Manikanta Mylavarapu
2024-12-13 13:00 ` Konrad Dybcio
2024-11-25 5:07 ` [PATCH v9 7/7] arm64: dts: qcom: ipq5424: Add thermal zone nodes Manikanta Mylavarapu
6 siblings, 1 reply; 15+ messages in thread
From: Manikanta Mylavarapu @ 2024-11-25 5:07 UTC (permalink / raw)
To: srinivas.kandagatla, robh, krzk+dt, conor+dt, amitk,
thara.gopinath, rafael, daniel.lezcano, rui.zhang, lukasz.luba,
andersson, konradybcio, linux-arm-msm, devicetree, linux-kernel,
linux-pm
Cc: quic_srichara, quic_varada
IPQ5424 has tsens v2.3.3 peripheral. This patch adds the tsens
node with nvmem cells for calibration data.
Signed-off-by: Manikanta Mylavarapu <quic_mmanikan@quicinc.com>
---
Changes in V9:
- No change
arch/arm64/boot/dts/qcom/ipq5424.dtsi | 87 +++++++++++++++++++++++++++
1 file changed, 87 insertions(+)
diff --git a/arch/arm64/boot/dts/qcom/ipq5424.dtsi b/arch/arm64/boot/dts/qcom/ipq5424.dtsi
index 5e219f900412..4f2e103d48a4 100644
--- a/arch/arm64/boot/dts/qcom/ipq5424.dtsi
+++ b/arch/arm64/boot/dts/qcom/ipq5424.dtsi
@@ -145,6 +145,93 @@ soc@0 {
#size-cells = <2>;
ranges = <0 0 0 0 0x10 0>;
+ efuse@a4000 {
+ compatible = "qcom,ipq5424-qfprom", "qcom,qfprom";
+ reg = <0 0x000a4000 0 0x741>;
+ #address-cells = <1>;
+ #size-cells = <1>;
+
+ tsens_sens9_off: s9@3dc {
+ reg = <0x3dc 0x1>;
+ bits = <4 4>;
+ };
+
+ tsens_sens10_off: s10@3dd {
+ reg = <0x3dd 0x1>;
+ bits = <0 4>;
+ };
+
+ tsens_sens11_off: s11@3dd {
+ reg = <0x3dd 0x1>;
+ bits = <4 4>;
+ };
+
+ tsens_sens12_off: s12@3de {
+ reg = <0x3de 0x1>;
+ bits = <0 4>;
+ };
+
+ tsens_sens13_off: s13@3de {
+ reg = <0x3de 0x1>;
+ bits = <4 4>;
+ };
+
+ tsens_sens14_off: s14@3e5 {
+ reg = <0x3e5 0x2>;
+ bits = <7 4>;
+ };
+
+ tsens_sens15_off: s15@3e6 {
+ reg = <0x3e6 0x1>;
+ bits = <3 4>;
+ };
+
+ tsens_mode: mode@419 {
+ reg = <0x419 0x1>;
+ bits = <0 3>;
+ };
+
+ tsens_base0: base0@419 {
+ reg = <0x419 0x2>;
+ bits = <3 10>;
+ };
+
+ tsens_base1: base1@41a {
+ reg = <0x41a 0x2>;
+ bits = <5 10>;
+ };
+ };
+
+ tsens: thermal-sensor@4a9000 {
+ compatible = "qcom,ipq5424-tsens";
+ reg = <0 0x004a9000 0 0x1000>,
+ <0 0x004a8000 0 0x1000>;
+ nvmem-cells = <&tsens_mode>,
+ <&tsens_base0>,
+ <&tsens_base1>,
+ <&tsens_sens9_off>,
+ <&tsens_sens10_off>,
+ <&tsens_sens11_off>,
+ <&tsens_sens12_off>,
+ <&tsens_sens13_off>,
+ <&tsens_sens14_off>,
+ <&tsens_sens15_off>;
+ nvmem-cell-names = "mode",
+ "base0",
+ "base1",
+ "tsens_sens9_off",
+ "tsens_sens10_off",
+ "tsens_sens11_off",
+ "tsens_sens12_off",
+ "tsens_sens13_off",
+ "tsens_sens14_off",
+ "tsens_sens15_off";
+ interrupts = <GIC_SPI 105 IRQ_TYPE_EDGE_RISING>;
+ interrupt-names = "combined";
+ #qcom,sensors = <7>;
+ #thermal-sensor-cells = <1>;
+ };
+
tlmm: pinctrl@1000000 {
compatible = "qcom,ipq5424-tlmm";
reg = <0 0x01000000 0 0x300000>;
--
2.34.1
^ permalink raw reply related [flat|nested] 15+ messages in thread
* [PATCH v9 7/7] arm64: dts: qcom: ipq5424: Add thermal zone nodes
2024-11-25 5:07 [PATCH v9 0/7] Add TSENS support for IPQ5332, IPQ5424 Manikanta Mylavarapu
` (5 preceding siblings ...)
2024-11-25 5:07 ` [PATCH v9 6/7] arm64: dts: qcom: ipq5424: Add tsens node Manikanta Mylavarapu
@ 2024-11-25 5:07 ` Manikanta Mylavarapu
6 siblings, 0 replies; 15+ messages in thread
From: Manikanta Mylavarapu @ 2024-11-25 5:07 UTC (permalink / raw)
To: srinivas.kandagatla, robh, krzk+dt, conor+dt, amitk,
thara.gopinath, rafael, daniel.lezcano, rui.zhang, lukasz.luba,
andersson, konradybcio, linux-arm-msm, devicetree, linux-kernel,
linux-pm
Cc: quic_srichara, quic_varada
Add thermal zone nodes for sensors present in IPQ5424.
Signed-off-by: Manikanta Mylavarapu <quic_mmanikan@quicinc.com>
---
Changes in V9:
- No change
arch/arm64/boot/dts/qcom/ipq5424.dtsi | 114 ++++++++++++++++++++++++++
1 file changed, 114 insertions(+)
diff --git a/arch/arm64/boot/dts/qcom/ipq5424.dtsi b/arch/arm64/boot/dts/qcom/ipq5424.dtsi
index 4f2e103d48a4..fd9d22754107 100644
--- a/arch/arm64/boot/dts/qcom/ipq5424.dtsi
+++ b/arch/arm64/boot/dts/qcom/ipq5424.dtsi
@@ -389,4 +389,118 @@ timer {
<GIC_PPI 10 IRQ_TYPE_LEVEL_LOW>,
<GIC_PPI 12 IRQ_TYPE_LEVEL_LOW>;
};
+
+ thermal_zones: thermal-zones {
+ cpu0-thermal {
+ polling-delay-passive = <100>;
+ thermal-sensors = <&tsens 14>;
+
+ trips {
+ cpu-critical {
+ temperature = <120000>;
+ hysteresis = <9000>;
+ type = "critical";
+ };
+
+ cpu-passive {
+ temperature = <110000>;
+ hysteresis = <9000>;
+ type = "passive";
+ };
+ };
+ };
+
+ cpu1-thermal {
+ polling-delay-passive = <100>;
+ thermal-sensors = <&tsens 12>;
+
+ trips {
+ cpu-critical {
+ temperature = <120000>;
+ hysteresis = <9000>;
+ type = "critical";
+ };
+
+ cpu-passive {
+ temperature = <110000>;
+ hysteresis = <9000>;
+ type = "passive";
+ };
+ };
+ };
+
+ cpu2-thermal {
+ polling-delay-passive = <100>;
+ thermal-sensors = <&tsens 11>;
+
+ trips {
+ cpu-critical {
+ temperature = <120000>;
+ hysteresis = <9000>;
+ type = "critical";
+ };
+
+ cpu-passive {
+ temperature = <110000>;
+ hysteresis = <9000>;
+ type = "passive";
+ };
+ };
+ };
+
+ cpu3-thermal {
+ polling-delay-passive = <100>;
+ thermal-sensors = <&tsens 13>;
+
+ trips {
+ cpu-critical {
+ temperature = <120000>;
+ hysteresis = <9000>;
+ type = "critical";
+ };
+
+ cpu-passive {
+ temperature = <110000>;
+ hysteresis = <9000>;
+ type = "passive";
+ };
+ };
+ };
+
+ wcss-tile2-thermal {
+ thermal-sensors = <&tsens 9>;
+
+ trips {
+ wcss-tile2-critical {
+ temperature = <125000>;
+ hysteresis = <9000>;
+ type = "critical";
+ };
+ };
+ };
+
+ wcss-tile3-thermal {
+ thermal-sensors = <&tsens 10>;
+
+ trips {
+ wcss-tile3-critical {
+ temperature = <125000>;
+ hysteresis = <9000>;
+ type = "critical";
+ };
+ };
+ };
+
+ top-glue-thermal {
+ thermal-sensors = <&tsens 15>;
+
+ trips {
+ top-glue-critical {
+ temperature = <125000>;
+ hysteresis = <9000>;
+ type = "critical";
+ };
+ };
+ };
+ };
};
--
2.34.1
^ permalink raw reply related [flat|nested] 15+ messages in thread
* Re: [PATCH v9 3/7] thermal/drivers/tsens: Add TSENS enable and calibration support for V2
2024-11-25 5:07 ` [PATCH v9 3/7] thermal/drivers/tsens: Add TSENS enable and calibration support for V2 Manikanta Mylavarapu
@ 2024-11-26 12:06 ` Dmitry Baryshkov
2024-12-13 19:02 ` Christophe JAILLET
1 sibling, 0 replies; 15+ messages in thread
From: Dmitry Baryshkov @ 2024-11-26 12:06 UTC (permalink / raw)
To: Manikanta Mylavarapu
Cc: srinivas.kandagatla, robh, krzk+dt, conor+dt, amitk,
thara.gopinath, rafael, daniel.lezcano, rui.zhang, lukasz.luba,
andersson, konradybcio, linux-arm-msm, devicetree, linux-kernel,
linux-pm, quic_srichara, quic_varada
On Mon, Nov 25, 2024 at 10:37:24AM +0530, Manikanta Mylavarapu wrote:
> From: Praveenkumar I <quic_ipkumar@quicinc.com>
>
> SoCs without RPM need to enable sensors and calibrate them from the kernel.
> The IPQ5332 and IPQ5424 use the tsens v2.3.3 IP and do not have RPM.
> Therefore, add a new calibration function for V2, as the tsens.c calib
> function only supports V1. Also add new feature_config, ops and data for
> IPQ5332, IPQ5424.
>
> Although the TSENS IP supports 16 sensors, not all are used. The hw_id
> is used to enable the relevant sensors.
>
> Signed-off-by: Praveenkumar I <quic_ipkumar@quicinc.com>
> Signed-off-by: Manikanta Mylavarapu <quic_mmanikan@quicinc.com>
> ---
> Changes in V9:
> - Update variable declaration order in tsens_v2_calibrate_sensor()
> - Replace tab with space during the 'val' computation in the
> tsens_v2_calibrate_sensor()
> - Update 'RSEULT_FORMAT_TEMP' to 'RESULT_FORMAT_TEMP'
>
> drivers/thermal/qcom/tsens-v2.c | 178 ++++++++++++++++++++++++++++++++
> drivers/thermal/qcom/tsens.c | 8 +-
> drivers/thermal/qcom/tsens.h | 4 +-
> 3 files changed, 188 insertions(+), 2 deletions(-)
Reviewed-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
--
With best wishes
Dmitry
^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: [PATCH v9 4/7] arm64: dts: qcom: ipq5332: Add tsens node
2024-11-25 5:07 ` [PATCH v9 4/7] arm64: dts: qcom: ipq5332: Add tsens node Manikanta Mylavarapu
@ 2024-12-13 12:59 ` Konrad Dybcio
2024-12-18 11:15 ` Manikanta Mylavarapu
0 siblings, 1 reply; 15+ messages in thread
From: Konrad Dybcio @ 2024-12-13 12:59 UTC (permalink / raw)
To: Manikanta Mylavarapu, srinivas.kandagatla, robh, krzk+dt,
conor+dt, amitk, thara.gopinath, rafael, daniel.lezcano,
rui.zhang, lukasz.luba, andersson, konradybcio, linux-arm-msm,
devicetree, linux-kernel, linux-pm
Cc: quic_srichara, quic_varada
On 25.11.2024 6:07 AM, Manikanta Mylavarapu wrote:
> From: Praveenkumar I <quic_ipkumar@quicinc.com>
>
> IPQ5332 has tsens v2.3.3 peripheral. This patch adds the tsens
> node with nvmem cells for calibration data.
>
> Signed-off-by: Praveenkumar I <quic_ipkumar@quicinc.com>
> Signed-off-by: Manikanta Mylavarapu <quic_mmanikan@quicinc.com>
> ---
[...]
>
> + tsens: thermal-sensor@4a9000 {
> + compatible = "qcom,ipq5332-tsens";
> + reg = <0x004a9000 0x1000>,
> + <0x004a8000 0x1000>;
> + nvmem-cells = <&tsens_mode>,
> + <&tsens_base0>,
> + <&tsens_base1>,
> + <&tsens_sens11_off>,
> + <&tsens_sens12_off>,
> + <&tsens_sens13_off>,
> + <&tsens_sens14_off>,
> + <&tsens_sens15_off>;
> + nvmem-cell-names = "mode",
> + "base0",
> + "base1",
> + "tsens_sens11_off",
> + "tsens_sens12_off",
> + "tsens_sens13_off",
> + "tsens_sens14_off",
> + "tsens_sens15_off";
> + interrupts = <GIC_SPI 320 IRQ_TYPE_LEVEL_HIGH>;
> + interrupt-names = "combined";
Please move interrupts properties above nvmem
with that:
Reviewed-by: Konrad Dybcio <konrad.dybcio@oss.qualcomm.com>
Konrad
^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: [PATCH v9 6/7] arm64: dts: qcom: ipq5424: Add tsens node
2024-11-25 5:07 ` [PATCH v9 6/7] arm64: dts: qcom: ipq5424: Add tsens node Manikanta Mylavarapu
@ 2024-12-13 13:00 ` Konrad Dybcio
2024-12-18 11:17 ` Manikanta Mylavarapu
0 siblings, 1 reply; 15+ messages in thread
From: Konrad Dybcio @ 2024-12-13 13:00 UTC (permalink / raw)
To: Manikanta Mylavarapu, srinivas.kandagatla, robh, krzk+dt,
conor+dt, amitk, thara.gopinath, rafael, daniel.lezcano,
rui.zhang, lukasz.luba, andersson, konradybcio, linux-arm-msm,
devicetree, linux-kernel, linux-pm
Cc: quic_srichara, quic_varada
On 25.11.2024 6:07 AM, Manikanta Mylavarapu wrote:
> IPQ5424 has tsens v2.3.3 peripheral. This patch adds the tsens
> node with nvmem cells for calibration data.
>
> Signed-off-by: Manikanta Mylavarapu <quic_mmanikan@quicinc.com>
> ---
[...]
> + tsens: thermal-sensor@4a9000 {
> + compatible = "qcom,ipq5424-tsens";
> + reg = <0 0x004a9000 0 0x1000>,
> + <0 0x004a8000 0 0x1000>;
> + nvmem-cells = <&tsens_mode>,
> + <&tsens_base0>,
> + <&tsens_base1>,
> + <&tsens_sens9_off>,
> + <&tsens_sens10_off>,
> + <&tsens_sens11_off>,
> + <&tsens_sens12_off>,
> + <&tsens_sens13_off>,
> + <&tsens_sens14_off>,
> + <&tsens_sens15_off>;
> + nvmem-cell-names = "mode",
> + "base0",
> + "base1",
> + "tsens_sens9_off",
> + "tsens_sens10_off",
> + "tsens_sens11_off",
> + "tsens_sens12_off",
> + "tsens_sens13_off",
> + "tsens_sens14_off",
> + "tsens_sens15_off";
> + interrupts = <GIC_SPI 105 IRQ_TYPE_EDGE_RISING>;
> + interrupt-names = "combined";
> + #qcom,sensors = <7>;
> + #thermal-sensor-cells = <1>;
> + };
Please move interrupts properties above nvmem
with that:
Reviewed-by: Konrad Dybcio <konrad.dybcio@oss.qualcomm.com>
Konrad
^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: [PATCH v9 3/7] thermal/drivers/tsens: Add TSENS enable and calibration support for V2
2024-11-25 5:07 ` [PATCH v9 3/7] thermal/drivers/tsens: Add TSENS enable and calibration support for V2 Manikanta Mylavarapu
2024-11-26 12:06 ` Dmitry Baryshkov
@ 2024-12-13 19:02 ` Christophe JAILLET
2024-12-18 11:22 ` Manikanta Mylavarapu
1 sibling, 1 reply; 15+ messages in thread
From: Christophe JAILLET @ 2024-12-13 19:02 UTC (permalink / raw)
To: Manikanta Mylavarapu
Cc: quic_srichara, quic_varada, srinivas.kandagatla, robh, krzk+dt,
conor+dt, amitk, thara.gopinath, rafael, daniel.lezcano,
rui.zhang, lukasz.luba, andersson, konradybcio, linux-arm-msm,
devicetree, linux-kernel, linux-pm
Le 25/11/2024 à 06:07, Manikanta Mylavarapu a écrit :
> From: Praveenkumar I <quic_ipkumar-jfJNa2p1gH1BDgjK7y7TUQ@public.gmane.org>
>
> SoCs without RPM need to enable sensors and calibrate them from the kernel.
> The IPQ5332 and IPQ5424 use the tsens v2.3.3 IP and do not have RPM.
> Therefore, add a new calibration function for V2, as the tsens.c calib
> function only supports V1. Also add new feature_config, ops and data for
> IPQ5332, IPQ5424.
>
> Although the TSENS IP supports 16 sensors, not all are used. The hw_id
> is used to enable the relevant sensors.
...
> diff --git a/drivers/thermal/qcom/tsens-v2.c b/drivers/thermal/qcom/tsens-v2.c
> index 0cb7301eca6e..836155fa9ab2 100644
> --- a/drivers/thermal/qcom/tsens-v2.c
> +++ b/drivers/thermal/qcom/tsens-v2.c
> @@ -4,13 +4,32 @@
> * Copyright (c) 2018, Linaro Limited
> */
>
> +#include <linux/bitfield.h>
> #include <linux/bitops.h>
> #include <linux/regmap.h>
> +#include <linux/nvmem-consumer.h>
If moved one line above, alphabetical order would be kept.
> #include "tsens.h"
>
> /* ----- SROT ------ */
> #define SROT_HW_VER_OFF 0x0000
...
> +static const struct tsens_ops ops_ipq5332 = {
> + .init = init_tsens_v2_no_rpm,
> + .get_temp = get_temp_tsens_valid,
> + .calibrate = tsens_v2_calibration,
> +};
> +
> +struct tsens_plat_data data_ipq5332 = {
This could easily be made as const.
> + .num_sensors = 5,
> + .ops = &ops_ipq5332,
> + .hw_ids = (unsigned int []){11, 12, 13, 14, 15},
> + .feat = &ipq5332_feat,
> + .fields = tsens_v2_regfields,
> +};
> +
> +struct tsens_plat_data data_ipq5424 = {
This could easily be made as const.
> + .num_sensors = 7,
> + .ops = &ops_ipq5332,
> + .hw_ids = (unsigned int []){9, 10, 11, 12, 13, 14, 15},
> + .feat = &ipq5332_feat,
> + .fields = tsens_v2_regfields,
> +};
...
CJ
^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: [PATCH v9 4/7] arm64: dts: qcom: ipq5332: Add tsens node
2024-12-13 12:59 ` Konrad Dybcio
@ 2024-12-18 11:15 ` Manikanta Mylavarapu
0 siblings, 0 replies; 15+ messages in thread
From: Manikanta Mylavarapu @ 2024-12-18 11:15 UTC (permalink / raw)
To: Konrad Dybcio, srinivas.kandagatla, robh, krzk+dt, conor+dt,
amitk, thara.gopinath, rafael, daniel.lezcano, rui.zhang,
lukasz.luba, andersson, konradybcio, linux-arm-msm, devicetree,
linux-kernel, linux-pm
Cc: quic_srichara, quic_varada
On 12/13/2024 6:29 PM, Konrad Dybcio wrote:
> On 25.11.2024 6:07 AM, Manikanta Mylavarapu wrote:
>> From: Praveenkumar I <quic_ipkumar@quicinc.com>
>>
>> IPQ5332 has tsens v2.3.3 peripheral. This patch adds the tsens
>> node with nvmem cells for calibration data.
>>
>> Signed-off-by: Praveenkumar I <quic_ipkumar@quicinc.com>
>> Signed-off-by: Manikanta Mylavarapu <quic_mmanikan@quicinc.com>
>> ---
>
> [...]
>
>>
>> + tsens: thermal-sensor@4a9000 {
>> + compatible = "qcom,ipq5332-tsens";
>> + reg = <0x004a9000 0x1000>,
>> + <0x004a8000 0x1000>;
>> + nvmem-cells = <&tsens_mode>,
>> + <&tsens_base0>,
>> + <&tsens_base1>,
>> + <&tsens_sens11_off>,
>> + <&tsens_sens12_off>,
>> + <&tsens_sens13_off>,
>> + <&tsens_sens14_off>,
>> + <&tsens_sens15_off>;
>> + nvmem-cell-names = "mode",
>> + "base0",
>> + "base1",
>> + "tsens_sens11_off",
>> + "tsens_sens12_off",
>> + "tsens_sens13_off",
>> + "tsens_sens14_off",
>> + "tsens_sens15_off";
>> + interrupts = <GIC_SPI 320 IRQ_TYPE_LEVEL_HIGH>;
>> + interrupt-names = "combined";
>
> Please move interrupts properties above nvmem
>
Sure, i will move in next version.
Thanks & Regards,
Manikanta.
> with that:
>
> Reviewed-by: Konrad Dybcio <konrad.dybcio@oss.qualcomm.com>
>
> Konrad
^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: [PATCH v9 6/7] arm64: dts: qcom: ipq5424: Add tsens node
2024-12-13 13:00 ` Konrad Dybcio
@ 2024-12-18 11:17 ` Manikanta Mylavarapu
0 siblings, 0 replies; 15+ messages in thread
From: Manikanta Mylavarapu @ 2024-12-18 11:17 UTC (permalink / raw)
To: Konrad Dybcio, srinivas.kandagatla, robh, krzk+dt, conor+dt,
amitk, thara.gopinath, rafael, daniel.lezcano, rui.zhang,
lukasz.luba, andersson, konradybcio, linux-arm-msm, devicetree,
linux-kernel, linux-pm
Cc: quic_srichara, quic_varada
On 12/13/2024 6:30 PM, Konrad Dybcio wrote:
> On 25.11.2024 6:07 AM, Manikanta Mylavarapu wrote:
>> IPQ5424 has tsens v2.3.3 peripheral. This patch adds the tsens
>> node with nvmem cells for calibration data.
>>
>> Signed-off-by: Manikanta Mylavarapu <quic_mmanikan@quicinc.com>
>> ---
>
> [...]
>
>> + tsens: thermal-sensor@4a9000 {
>> + compatible = "qcom,ipq5424-tsens";
>> + reg = <0 0x004a9000 0 0x1000>,
>> + <0 0x004a8000 0 0x1000>;
>> + nvmem-cells = <&tsens_mode>,
>> + <&tsens_base0>,
>> + <&tsens_base1>,
>> + <&tsens_sens9_off>,
>> + <&tsens_sens10_off>,
>> + <&tsens_sens11_off>,
>> + <&tsens_sens12_off>,
>> + <&tsens_sens13_off>,
>> + <&tsens_sens14_off>,
>> + <&tsens_sens15_off>;
>> + nvmem-cell-names = "mode",
>> + "base0",
>> + "base1",
>> + "tsens_sens9_off",
>> + "tsens_sens10_off",
>> + "tsens_sens11_off",
>> + "tsens_sens12_off",
>> + "tsens_sens13_off",
>> + "tsens_sens14_off",
>> + "tsens_sens15_off";
>> + interrupts = <GIC_SPI 105 IRQ_TYPE_EDGE_RISING>;
>> + interrupt-names = "combined";
>> + #qcom,sensors = <7>;
>> + #thermal-sensor-cells = <1>;
>> + };
>
> Please move interrupts properties above nvmem
>
Sure, i will update in the next version.
Thanks & Regards,
Manikanta.
> with that:
>
> Reviewed-by: Konrad Dybcio <konrad.dybcio@oss.qualcomm.com>
>
> Konrad
^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: [PATCH v9 3/7] thermal/drivers/tsens: Add TSENS enable and calibration support for V2
2024-12-13 19:02 ` Christophe JAILLET
@ 2024-12-18 11:22 ` Manikanta Mylavarapu
0 siblings, 0 replies; 15+ messages in thread
From: Manikanta Mylavarapu @ 2024-12-18 11:22 UTC (permalink / raw)
To: Christophe JAILLET
Cc: quic_srichara, quic_varada, srinivas.kandagatla, robh, krzk+dt,
conor+dt, amitk, thara.gopinath, rafael, daniel.lezcano,
rui.zhang, lukasz.luba, andersson, konradybcio, linux-arm-msm,
devicetree, linux-kernel, linux-pm
On 12/14/2024 12:32 AM, Christophe JAILLET wrote:
> Le 25/11/2024 à 06:07, Manikanta Mylavarapu a écrit :
>> From: Praveenkumar I <quic_ipkumar-jfJNa2p1gH1BDgjK7y7TUQ@public.gmane.org>
>>
>> SoCs without RPM need to enable sensors and calibrate them from the kernel.
>> The IPQ5332 and IPQ5424 use the tsens v2.3.3 IP and do not have RPM.
>> Therefore, add a new calibration function for V2, as the tsens.c calib
>> function only supports V1. Also add new feature_config, ops and data for
>> IPQ5332, IPQ5424.
>>
>> Although the TSENS IP supports 16 sensors, not all are used. The hw_id
>> is used to enable the relevant sensors.
>
> ...
>
>> diff --git a/drivers/thermal/qcom/tsens-v2.c b/drivers/thermal/qcom/tsens-v2.c
>> index 0cb7301eca6e..836155fa9ab2 100644
>> --- a/drivers/thermal/qcom/tsens-v2.c
>> +++ b/drivers/thermal/qcom/tsens-v2.c
>> @@ -4,13 +4,32 @@
>> * Copyright (c) 2018, Linaro Limited
>> */
>> +#include <linux/bitfield.h>
>> #include <linux/bitops.h>
>> #include <linux/regmap.h>
>> +#include <linux/nvmem-consumer.h>
>
> If moved one line above, alphabetical order would be kept.
>
Sure, i will update in the next version.
>> #include "tsens.h"
>> /* ----- SROT ------ */
>> #define SROT_HW_VER_OFF 0x0000
>
> ...
>
>> +static const struct tsens_ops ops_ipq5332 = {
>> + .init = init_tsens_v2_no_rpm,
>> + .get_temp = get_temp_tsens_valid,
>> + .calibrate = tsens_v2_calibration,
>> +};
>> +
>> +struct tsens_plat_data data_ipq5332 = {
>
> This could easily be made as const.
>
Sure, i will update in the next version.
>> + .num_sensors = 5,
>> + .ops = &ops_ipq5332,
>> + .hw_ids = (unsigned int []){11, 12, 13, 14, 15},
>> + .feat = &ipq5332_feat,
>> + .fields = tsens_v2_regfields,
>> +};
>> +
>> +struct tsens_plat_data data_ipq5424 = {
>
> This could easily be made as const.
>
Sure, i will update in the next version.
Thanks & Regards,
Manikanta.
>> + .num_sensors = 7,
>> + .ops = &ops_ipq5332,
>> + .hw_ids = (unsigned int []){9, 10, 11, 12, 13, 14, 15},
>> + .feat = &ipq5332_feat,
>> + .fields = tsens_v2_regfields,
>> +};
>
> ...
>
> CJ
^ permalink raw reply [flat|nested] 15+ messages in thread
end of thread, other threads:[~2024-12-18 11:22 UTC | newest]
Thread overview: 15+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-11-25 5:07 [PATCH v9 0/7] Add TSENS support for IPQ5332, IPQ5424 Manikanta Mylavarapu
2024-11-25 5:07 ` [PATCH v9 1/7] dt-bindings: thermal: tsens: Add ipq5332, ipq5424 compatible Manikanta Mylavarapu
2024-11-25 5:07 ` [PATCH v9 2/7] dt-bindings: nvmem: Add compatible for IPQ5424 Manikanta Mylavarapu
2024-11-25 5:07 ` [PATCH v9 3/7] thermal/drivers/tsens: Add TSENS enable and calibration support for V2 Manikanta Mylavarapu
2024-11-26 12:06 ` Dmitry Baryshkov
2024-12-13 19:02 ` Christophe JAILLET
2024-12-18 11:22 ` Manikanta Mylavarapu
2024-11-25 5:07 ` [PATCH v9 4/7] arm64: dts: qcom: ipq5332: Add tsens node Manikanta Mylavarapu
2024-12-13 12:59 ` Konrad Dybcio
2024-12-18 11:15 ` Manikanta Mylavarapu
2024-11-25 5:07 ` [PATCH v9 5/7] arm64: dts: qcom: ipq5332: Add thermal zone nodes Manikanta Mylavarapu
2024-11-25 5:07 ` [PATCH v9 6/7] arm64: dts: qcom: ipq5424: Add tsens node Manikanta Mylavarapu
2024-12-13 13:00 ` Konrad Dybcio
2024-12-18 11:17 ` Manikanta Mylavarapu
2024-11-25 5:07 ` [PATCH v9 7/7] arm64: dts: qcom: ipq5424: Add thermal zone nodes Manikanta Mylavarapu
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).