Message ID | 20230713052732.787853-6-quic_ipkumar@quicinc.com (mailing list archive) |
---|---|
State | New, archived |
Delegated to: | Daniel Lezcano |
Headers | show |
Series | Add IPQ5332 TSENS support | expand |
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@quicinc.com> > --- > [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__ */
On 7/15/2023 7:36 PM, Konrad Dybcio wrote: > 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@quicinc.com> >> --- >> [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? Yes, it is 204 degrees celcius as like ipq8074. > 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__ */
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, +}; + 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__ */
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@quicinc.com> --- [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(-)