diff mbox series

[v2,2/3] soc: qcom: stats: Add fixed sleep stats offset for older RPM firmwares

Message ID 20211119213953.31970-3-stephan@gerhold.net (mailing list archive)
State Accepted
Headers show
Series Add RPM sleep stats for MSM8916 | expand

Commit Message

Stephan Gerhold Nov. 19, 2021, 9:39 p.m. UTC
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(+)

Comments

Bjorn Andersson Nov. 21, 2021, 12:39 a.m. UTC | #1
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 mbox series

Patch

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 },
 	{ }