MSM8992 is more or less a cut-down MSM8994, so it only makes sense that TSENS support only requires a few lines on top of the bigger brother's code. Signed-off-by: Konrad Dybcio <konrad.dybcio@xxxxxxxxxxxxxx> --- .../bindings/thermal/qcom-tsens.yaml | 1 + drivers/thermal/qcom/tsens-v1.c | 25 +++++++++++++++++++ drivers/thermal/qcom/tsens.c | 3 +++ drivers/thermal/qcom/tsens.h | 2 +- 4 files changed, 30 insertions(+), 1 deletion(-) diff --git a/Documentation/devicetree/bindings/thermal/qcom-tsens.yaml b/Documentation/devicetree/bindings/thermal/qcom-tsens.yaml index f194e914a62e..c69b8727a09c 100644 --- a/Documentation/devicetree/bindings/thermal/qcom-tsens.yaml +++ b/Documentation/devicetree/bindings/thermal/qcom-tsens.yaml @@ -31,6 +31,7 @@ properties: items: - enum: - qcom,msm8976-tsens + - qcom,msm8992-tsens - qcom,msm8994-tsens - qcom,qcs404-tsens - const: qcom,tsens-v1 diff --git a/drivers/thermal/qcom/tsens-v1.c b/drivers/thermal/qcom/tsens-v1.c index 2127b6edd1ae..a470b24ae720 100644 --- a/drivers/thermal/qcom/tsens-v1.c +++ b/drivers/thermal/qcom/tsens-v1.c @@ -541,6 +541,17 @@ static int calibrate_8994(struct tsens_priv *priv) base1[i] = base1[0]; } + /* 8992 features less sensors and remaps some */ + if (priv->num_sensors == 13) { + p[6] = p[7]; + p[7] = p[9]; + p[8] = p[10]; + p[9] = p[11]; + p[10] = p[12]; + p[11] = p[13]; + p[12] = p[14]; + } + compute_intercept_slope_8994(priv, base0, base1, p, mode); kfree(calib0); kfree(calib1); @@ -642,6 +653,20 @@ struct tsens_plat_data data_8976 = { .fields = tsens_v1_regfields, }; +static const struct tsens_ops ops_8992 = { + .init = init_common, + .calibrate = calibrate_8994, + .get_temp = get_temp_tsens_valid, +}; + +struct tsens_plat_data data_8992 = { + .num_sensors = 13, + .ops = &ops_8992, + .hw_ids = (unsigned int []){ 0, 1, 2, 3, 4, 5, 7, 9, 10, 11, 12, 13, 14 }, + .feat = &tsens_v1_feat, + .fields = tsens_v1_regfields, +}; + static const struct tsens_ops ops_8994 = { .init = init_common, .calibrate = calibrate_8994, diff --git a/drivers/thermal/qcom/tsens.c b/drivers/thermal/qcom/tsens.c index 96d17afe3460..1c2e9bebc7c0 100644 --- a/drivers/thermal/qcom/tsens.c +++ b/drivers/thermal/qcom/tsens.c @@ -903,6 +903,9 @@ static const struct of_device_id tsens_table[] = { }, { .compatible = "qcom,msm8974-tsens", .data = &data_8974, + }, { + .compatible = "qcom,msm8992-tsens", + .data = &data_8992, }, { .compatible = "qcom,msm8994-tsens", .data = &data_8994, diff --git a/drivers/thermal/qcom/tsens.h b/drivers/thermal/qcom/tsens.h index dfbff7f6442c..2548edaa36ec 100644 --- a/drivers/thermal/qcom/tsens.h +++ b/drivers/thermal/qcom/tsens.h @@ -588,7 +588,7 @@ extern struct tsens_plat_data data_8960; extern struct tsens_plat_data data_8916, data_8939, data_8974; /* TSENS v1 targets */ -extern struct tsens_plat_data data_tsens_v1, data_8976, data_8994; +extern struct tsens_plat_data data_tsens_v1, data_8976, data_8992, data_8994; /* TSENS v2 targets */ extern struct tsens_plat_data data_8996, data_tsens_v2; -- 2.30.0