From 83e6cc5af1946cbda81a25e8b0a9e0fc0ae8b8be Mon Sep 17 00:00:00 2001 From: Darren Hsu Date: Fri, 26 Jan 2024 17:41:23 +0800 Subject: [PATCH] powerstats: use display MRR state residency data provider Bug: 322457937 Test: vts-tradefed run vts -m VtsHalPowerStatsTargetTest Change-Id: I65f2f1d8818295ac76525c1ebf4bbdd36ce0b5ff Signed-off-by: Darren Hsu --- powerstats/service.cpp | 22 +++++++++++++++------- 1 file changed, 15 insertions(+), 7 deletions(-) diff --git a/powerstats/service.cpp b/powerstats/service.cpp index f23c6b6..7bac0fe 100644 --- a/powerstats/service.cpp +++ b/powerstats/service.cpp @@ -28,6 +28,7 @@ #include #include #include +#include using aidl::android::hardware::power::stats::DevfreqStateResidencyDataProvider; using aidl::android::hardware::power::stats::DisplayStateResidencyDataProvider; @@ -37,14 +38,21 @@ using aidl::android::hardware::power::stats::PowerStatsEnergyConsumer; void addDisplay(std::shared_ptr p) { // Add display residency stats - std::vector states = { - "Off", - "On: 1600x2560@60", - "HBM: 1600x2560@60"}; + struct stat buffer; + if (!stat("/sys/class/drm/card0/device/primary-panel/time_in_state", &buffer)) { + // time_in_state exists + addDisplayMrr(p); + } else { + // time_in_state doesn't exist + std::vector states = { + "Off", + "On: 1600x2560@60", + "HBM: 1600x2560@60"}; - p->addStateResidencyDataProvider(std::make_unique("Display", - "/sys/class/backlight/panel0-backlight/state", - states)); + p->addStateResidencyDataProvider(std::make_unique("Display", + "/sys/class/backlight/panel0-backlight/state", + states)); + } // Add display energy consumer p->addEnergyConsumer(PowerStatsEnergyConsumer::createMeterConsumer(