thermal/qcom/tsens: Add support for MSM8952 tsens

Add support for tsens v1 block that exists on MSM8952 with
11 tsens sensors. Sensor Offsets are taken from downstream.

Signed-off-by: Muzaffer Kadir <muzafferkadir@mainlining.org>
Signed-off-by: Daniel Lezcano <daniel.lezcano@kernel.org>
Reviewed-by: Dmitry Baryshkov <dmitry.baryshkov@oss.qualcomm.com>
Link: https://android.googlesource.com/kernel/msm.git/+/refs/tags/android-wear-7.0.0_r0.3/drivers/thermal/msm-tsens.c#1621
Link: https://patch.msgid.link/20261011-msm8952-initial-support-v5-4-1857074992ec@mainlining.org
This commit is contained in:
Muzaffer Kadir 2026-10-11 19:51:26 +03:00 committed by Daniel Lezcano
parent 200265cfa8
commit 8951eb8a78
3 changed files with 45 additions and 1 deletions

View File

@ -145,6 +145,34 @@ static const struct reg_field tsens_v1_regfields[MAX_REGFIELDS] = {
[TRDY] = REG_FIELD(TM_TRDY_OFF, 0, 0),
};
static int __init init_8952(struct tsens_priv *priv)
{
priv->sensor[0].p1_calib_offset = 2;
priv->sensor[0].p2_calib_offset = -1;
priv->sensor[1].p1_calib_offset = -4;
priv->sensor[1].p2_calib_offset = -4;
priv->sensor[2].p1_calib_offset = 4;
priv->sensor[2].p2_calib_offset = 5;
priv->sensor[3].p1_calib_offset = 1;
priv->sensor[3].p2_calib_offset = 1;
priv->sensor[4].p1_calib_offset = 2;
priv->sensor[4].p2_calib_offset = 3;
priv->sensor[5].p1_calib_offset = -1;
priv->sensor[5].p2_calib_offset = -1;
priv->sensor[6].p1_calib_offset = 0;
priv->sensor[6].p2_calib_offset = -1;
priv->sensor[7].p1_calib_offset = 3;
priv->sensor[7].p2_calib_offset = 4;
priv->sensor[8].p1_calib_offset = 2;
priv->sensor[8].p2_calib_offset = 4;
priv->sensor[9].p1_calib_offset = 0;
priv->sensor[9].p2_calib_offset = 0;
priv->sensor[10].p1_calib_offset = -3;
priv->sensor[10].p2_calib_offset = -2;
return init_common(priv);
}
static int __init init_8956(struct tsens_priv *priv) {
priv->sensor[0].slope = 3313;
priv->sensor[1].slope = 3275;
@ -223,6 +251,19 @@ struct tsens_plat_data data_8937 = {
.fields = tsens_v1_regfields,
};
static const struct tsens_ops ops_8952 = {
.init = init_8952,
.calibrate = tsens_calibrate_common,
.get_temp = get_temp_tsens_valid,
};
struct tsens_plat_data data_8952 = {
.num_sensors = 11,
.ops = &ops_8952,
.feat = &tsens_v1_feat,
.fields = tsens_v1_regfields,
};
static const struct tsens_ops ops_8956 = {
.init = init_8956,
.calibrate = tsens_calibrate_common,

View File

@ -1191,6 +1191,9 @@ static const struct of_device_id tsens_table[] = {
}, {
.compatible = "qcom,msm8939-tsens",
.data = &data_8939,
}, {
.compatible = "qcom,msm8952-tsens",
.data = &data_8952,
}, {
.compatible = "qcom,msm8956-tsens",
.data = &data_8956,

View File

@ -669,7 +669,7 @@ extern struct tsens_plat_data data_8960;
extern struct tsens_plat_data data_8226, data_8909, data_8916, data_8939, data_8974, data_9607;
/* TSENS v1 targets */
extern struct tsens_plat_data data_tsens_v1, data_8937, data_8976, data_8956;
extern struct tsens_plat_data data_tsens_v1, data_8937, data_8952, data_8976, data_8956;
/* TSENS v1 with no RPM targets */
extern const struct tsens_plat_data data_ipq5018;