Message ID | 20211119213953.31970-3-stephan@gerhold.net (mailing list archive) |
---|---|
State | Accepted |
Headers | show |
Series | Add RPM sleep stats for MSM8916 | expand |
On Fri 19 Nov 13:39 PST 2021, Stephan Gerhold wrote: > Not all RPM firmware versions have the dynamic sleep stats offset > available. Most older versions use a fixed offset of 0xdba0. > Add support for this using new SoC-specific compatibles for APQ8084, > MSM8226, MSM8916 and MSM8974. > > Even older SoCs seem to use a different offset and stats format. > If needed those could be supported in the future by adding separate > compatibles for those with a different stats_config. > > Cc: Maulik Shah <mkshah@codeaurora.org> > Signed-off-by: Stephan Gerhold <stephan@gerhold.net> Reviewed-by: Bjorn Andersson <bjorn.andersson@linaro.org> Regards, Bjorn > --- > Changes in v2: > - Use SoC-specific compatibles instead of qcom,rpm-legacy-stats > --- > drivers/soc/qcom/qcom_stats.c | 13 +++++++++++++ > 1 file changed, 13 insertions(+) > > diff --git a/drivers/soc/qcom/qcom_stats.c b/drivers/soc/qcom/qcom_stats.c > index 131d24caabf8..d6bfd1bbdc2a 100644 > --- a/drivers/soc/qcom/qcom_stats.c > +++ b/drivers/soc/qcom/qcom_stats.c > @@ -237,6 +237,15 @@ static const struct stats_config rpm_data = { > .subsystem_stats_in_smem = false, > }; > > +/* Older RPM firmwares have the stats at a fixed offset instead */ > +static const struct stats_config rpm_data_dba0 = { > + .stats_offset = 0xdba0, > + .num_records = 2, > + .appended_stats_avail = true, > + .dynamic_offset = false, > + .subsystem_stats_in_smem = false, > +}; > + > static const struct stats_config rpmh_data = { > .stats_offset = 0x48, > .num_records = 3, > @@ -246,6 +255,10 @@ static const struct stats_config rpmh_data = { > }; > > static const struct of_device_id qcom_stats_table[] = { > + { .compatible = "qcom,apq8084-rpm-stats", .data = &rpm_data_dba0 }, > + { .compatible = "qcom,msm8226-rpm-stats", .data = &rpm_data_dba0 }, > + { .compatible = "qcom,msm8916-rpm-stats", .data = &rpm_data_dba0 }, > + { .compatible = "qcom,msm8974-rpm-stats", .data = &rpm_data_dba0 }, > { .compatible = "qcom,rpm-stats", .data = &rpm_data }, > { .compatible = "qcom,rpmh-stats", .data = &rpmh_data }, > { } > -- > 2.34.0 >
diff --git a/drivers/soc/qcom/qcom_stats.c b/drivers/soc/qcom/qcom_stats.c index 131d24caabf8..d6bfd1bbdc2a 100644 --- a/drivers/soc/qcom/qcom_stats.c +++ b/drivers/soc/qcom/qcom_stats.c @@ -237,6 +237,15 @@ static const struct stats_config rpm_data = { .subsystem_stats_in_smem = false, }; +/* Older RPM firmwares have the stats at a fixed offset instead */ +static const struct stats_config rpm_data_dba0 = { + .stats_offset = 0xdba0, + .num_records = 2, + .appended_stats_avail = true, + .dynamic_offset = false, + .subsystem_stats_in_smem = false, +}; + static const struct stats_config rpmh_data = { .stats_offset = 0x48, .num_records = 3, @@ -246,6 +255,10 @@ static const struct stats_config rpmh_data = { }; static const struct of_device_id qcom_stats_table[] = { + { .compatible = "qcom,apq8084-rpm-stats", .data = &rpm_data_dba0 }, + { .compatible = "qcom,msm8226-rpm-stats", .data = &rpm_data_dba0 }, + { .compatible = "qcom,msm8916-rpm-stats", .data = &rpm_data_dba0 }, + { .compatible = "qcom,msm8974-rpm-stats", .data = &rpm_data_dba0 }, { .compatible = "qcom,rpm-stats", .data = &rpm_data }, { .compatible = "qcom,rpmh-stats", .data = &rpmh_data }, { }
Not all RPM firmware versions have the dynamic sleep stats offset available. Most older versions use a fixed offset of 0xdba0. Add support for this using new SoC-specific compatibles for APQ8084, MSM8226, MSM8916 and MSM8974. Even older SoCs seem to use a different offset and stats format. If needed those could be supported in the future by adding separate compatibles for those with a different stats_config. Cc: Maulik Shah <mkshah@codeaurora.org> Signed-off-by: Stephan Gerhold <stephan@gerhold.net> --- Changes in v2: - Use SoC-specific compatibles instead of qcom,rpm-legacy-stats --- drivers/soc/qcom/qcom_stats.c | 13 +++++++++++++ 1 file changed, 13 insertions(+)