On 13.07.2023 07:27, Praveenkumar I wrote: > IPQ5332 uses tsens v2.3.3 IP and it is having combined interrupt. > It does not have RPM and kernel needs to take care of sensor > enablement, calibration. Hence introduced new feature_config, > ops and data for IPQ5332. > > Signed-off-by: Praveenkumar I <quic_ipkumar@xxxxxxxxxxx> > --- > [v3]: > No changes. > [v2]: > Added tsens_features for ipq5332 with VER_2_X_NO_RPM. Used > hw_ids to mention the available sensors. Dropped v2 in > ops_ipq5332. > > drivers/thermal/qcom/tsens-v2.c | 25 +++++++++++++++++++++++++ > drivers/thermal/qcom/tsens.c | 3 +++ > drivers/thermal/qcom/tsens.h | 2 +- > 3 files changed, 29 insertions(+), 1 deletion(-) > > diff --git a/drivers/thermal/qcom/tsens-v2.c b/drivers/thermal/qcom/tsens-v2.c > index 781595a9a622..e25d9d34e519 100644 > --- a/drivers/thermal/qcom/tsens-v2.c > +++ b/drivers/thermal/qcom/tsens-v2.c > @@ -62,6 +62,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, 204 degrees Celcius? Konrad > +}; > + > static const struct reg_field tsens_v2_regfields[MAX_REGFIELDS] = { > /* ----- SROT ------ */ > /* VERSION */ > @@ -262,6 +273,20 @@ 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, > +}; > + > /* 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 9dc0c2150948..af58a94628a8 100644 > --- a/drivers/thermal/qcom/tsens.c > +++ b/drivers/thermal/qcom/tsens.c > @@ -1106,6 +1106,9 @@ static const struct of_device_id tsens_table[] = { > }, { > .compatible = "qcom,ipq8074-tsens", > .data = &data_ipq8074, > + }, { > + .compatible = "qcom,ipq5332-tsens", > + .data = &data_ipq5332, > }, { > .compatible = "qcom,mdm9607-tsens", > .data = &data_9607, > diff --git a/drivers/thermal/qcom/tsens.h b/drivers/thermal/qcom/tsens.h > index b2e8f0f2b466..1dde363914cd 100644 > --- a/drivers/thermal/qcom/tsens.h > +++ b/drivers/thermal/qcom/tsens.h > @@ -648,6 +648,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_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_tsens_v2; > > #endif /* __QCOM_TSENS_H__ */