From f31af5a3a47825f9950814989f4dec4079255485 Mon Sep 17 00:00:00 2001 From: Darren Hsu Date: Wed, 17 Apr 2024 15:58:24 +0800 Subject: [PATCH] powerstats: merge two callback data providers to single Bluetooth HAL and Display HWC will register callback with PowerStats HAL. Single PixelStateResidencyDataProvider supports multiple callback registerings. Bug: 335379104 Test: dumpsys android.hardware.power.stats.IPowerStats/default Change-Id: I24da89fbcd26e6472f047a504e2603186925cdc8 Signed-off-by: Darren Hsu --- powerstats/ZumaProCommonDataProviders.cpp | 17 ++++++++--------- powerstats/include/ZumaProCommonDataProviders.h | 3 +-- 2 files changed, 9 insertions(+), 11 deletions(-) diff --git a/powerstats/ZumaProCommonDataProviders.cpp b/powerstats/ZumaProCommonDataProviders.cpp index a6518e0..8b14a6d 100644 --- a/powerstats/ZumaProCommonDataProviders.cpp +++ b/powerstats/ZumaProCommonDataProviders.cpp @@ -636,12 +636,19 @@ void addTPU(std::shared_ptr p) { * that live in user space. Entities are defined here and user space clients of this provider's * vendor service register callbacks to provide state residency data for their given pwoer entity. */ -void addPixelStateResidencyDataProvider(std::shared_ptr p) { +void addPixelStateResidencyDataProvider(std::shared_ptr p, std::string displayName) { auto pixelSdp = std::make_unique(); + // Bluetooth power stats are provided by BT HAL callback pixelSdp->addEntity("Bluetooth", {{0, "Idle"}, {1, "Active"}, {2, "Tx"}, {3, "Rx"}}); + // Display VRR power stats are provided by HWC callback. If display entity + // name is empty, the device doesn't support VRR power stats. + if (!displayName.empty()) { + pixelSdp->addEntity(displayName, {}); + } + pixelSdp->start(); p->addStateResidencyDataProvider(std::move(pixelSdp)); @@ -656,18 +663,10 @@ void addDisplayMrr(std::shared_ptr p) { addDisplayMrrByEntity(p, "Display", "/sys/class/drm/card0/device/primary-panel/"); } -void addDisplayVrr(std::shared_ptr p, std::string name) { - auto provider = std::make_unique(); - provider->addEntity(name, {}); - provider->start(); - p->addStateResidencyDataProvider(std::move(provider)); -} - void addZumaProCommonDataProviders(std::shared_ptr p) { setEnergyMeter(p); addAoC(p); - addPixelStateResidencyDataProvider(p); addCPUclusters(p); addSoC(p); addGNSS(p); diff --git a/powerstats/include/ZumaProCommonDataProviders.h b/powerstats/include/ZumaProCommonDataProviders.h index 0356be4..4f1696f 100644 --- a/powerstats/include/ZumaProCommonDataProviders.h +++ b/powerstats/include/ZumaProCommonDataProviders.h @@ -25,14 +25,13 @@ void addCPUclusters(std::shared_ptr p); void addDevfreq(std::shared_ptr p); void addDisplayMrr(std::shared_ptr p); void addDisplayMrrByEntity(std::shared_ptr p, std::string name, std::string path); -void addDisplayVrr(std::shared_ptr p, std::string name); void addDvfsStats(std::shared_ptr p); void addGNSS(std::shared_ptr p); void addGPU(std::shared_ptr p); void addMobileRadio(std::shared_ptr p); void addNFC(std::shared_ptr p); void addPCIe(std::shared_ptr p); -void addPixelStateResidencyDataProvider(std::shared_ptr p); +void addPixelStateResidencyDataProvider(std::shared_ptr p, std::string displayName); void addPowerDomains(std::shared_ptr p); void addSoC(std::shared_ptr p); void addTPU(std::shared_ptr p);