Revert^2 "powerstats: Add PixelStateResidencyDataProvider"
05a79631f7
Change-Id: If088251400b80a8f47b09d6f2806a3f386ea3161
This commit is contained in:
parent
05a79631f7
commit
5b34563d88
2 changed files with 45 additions and 21 deletions
|
@ -81,6 +81,7 @@ cc_binary {
|
||||||
"liblog",
|
"liblog",
|
||||||
"libutils",
|
"libutils",
|
||||||
"libbinder_ndk",
|
"libbinder_ndk",
|
||||||
|
"pixel_stateresidency_provider_aidl_interface-ndk_platform",
|
||||||
"android.hardware.power.stats-V1-ndk_platform",
|
"android.hardware.power.stats-V1-ndk_platform",
|
||||||
],
|
],
|
||||||
relative_install_path: "hw",
|
relative_install_path: "hw",
|
||||||
|
|
|
@ -24,6 +24,7 @@
|
||||||
#include <dataproviders/IioEnergyMeterDataProvider.h>
|
#include <dataproviders/IioEnergyMeterDataProvider.h>
|
||||||
#include <dataproviders/PowerStatsEnergyConsumer.h>
|
#include <dataproviders/PowerStatsEnergyConsumer.h>
|
||||||
#include <dataproviders/PowerStatsEnergyAttribution.h>
|
#include <dataproviders/PowerStatsEnergyAttribution.h>
|
||||||
|
#include <dataproviders/PixelStateResidencyDataProvider.h>
|
||||||
|
|
||||||
#include <android-base/logging.h>
|
#include <android-base/logging.h>
|
||||||
#include <android-base/properties.h>
|
#include <android-base/properties.h>
|
||||||
|
@ -37,6 +38,7 @@ using aidl::android::hardware::power::stats::DvfsStateResidencyDataProvider;
|
||||||
using aidl::android::hardware::power::stats::EnergyConsumerType;
|
using aidl::android::hardware::power::stats::EnergyConsumerType;
|
||||||
using aidl::android::hardware::power::stats::GenericStateResidencyDataProvider;
|
using aidl::android::hardware::power::stats::GenericStateResidencyDataProvider;
|
||||||
using aidl::android::hardware::power::stats::IioEnergyMeterDataProvider;
|
using aidl::android::hardware::power::stats::IioEnergyMeterDataProvider;
|
||||||
|
using aidl::android::hardware::power::stats::PixelStateResidencyDataProvider;
|
||||||
using aidl::android::hardware::power::stats::PowerStats;
|
using aidl::android::hardware::power::stats::PowerStats;
|
||||||
using aidl::android::hardware::power::stats::PowerStatsEnergyConsumer;
|
using aidl::android::hardware::power::stats::PowerStatsEnergyConsumer;
|
||||||
|
|
||||||
|
@ -54,7 +56,8 @@ void addAoC(std::shared_ptr<PowerStats> p) {
|
||||||
};
|
};
|
||||||
std::vector<std::pair<std::string, std::string>> coreStates = {
|
std::vector<std::pair<std::string, std::string>> coreStates = {
|
||||||
{"DWN", "off"}, {"RET", "retention"}, {"WFI", "wfi"}};
|
{"DWN", "off"}, {"RET", "retention"}, {"WFI", "wfi"}};
|
||||||
p->addStateResidencyDataProvider(new AocStateResidencyDataProvider(coreIds, coreStates));
|
p->addStateResidencyDataProvider(std::make_shared<AocStateResidencyDataProvider>(coreIds,
|
||||||
|
coreStates));
|
||||||
|
|
||||||
// Add AoC voltage stats
|
// Add AoC voltage stats
|
||||||
std::vector<std::pair<std::string, std::string>> voltageIds = {
|
std::vector<std::pair<std::string, std::string>> voltageIds = {
|
||||||
|
@ -65,7 +68,7 @@ void addAoC(std::shared_ptr<PowerStats> p) {
|
||||||
{"UUD", "ultra_underdrive"},
|
{"UUD", "ultra_underdrive"},
|
||||||
{"UD", "underdrive"}};
|
{"UD", "underdrive"}};
|
||||||
p->addStateResidencyDataProvider(
|
p->addStateResidencyDataProvider(
|
||||||
new AocStateResidencyDataProvider(voltageIds, voltageStates));
|
std::make_shared<AocStateResidencyDataProvider>(voltageIds, voltageStates));
|
||||||
|
|
||||||
// Add AoC monitor mode
|
// Add AoC monitor mode
|
||||||
std::vector<std::pair<std::string, std::string>> monitorIds = {
|
std::vector<std::pair<std::string, std::string>> monitorIds = {
|
||||||
|
@ -75,7 +78,7 @@ void addAoC(std::shared_ptr<PowerStats> p) {
|
||||||
{"MON", "mode"},
|
{"MON", "mode"},
|
||||||
};
|
};
|
||||||
p->addStateResidencyDataProvider(
|
p->addStateResidencyDataProvider(
|
||||||
new AocStateResidencyDataProvider(monitorIds, monitorStates));
|
std::make_shared<AocStateResidencyDataProvider>(monitorIds, monitorStates));
|
||||||
}
|
}
|
||||||
|
|
||||||
void addDvfsStats(std::shared_ptr<PowerStats> p) {
|
void addDvfsStats(std::shared_ptr<PowerStats> p) {
|
||||||
|
@ -167,7 +170,7 @@ void addDvfsStats(std::shared_ptr<PowerStats> p) {
|
||||||
std::make_pair("1066MHz", "1066000000"),
|
std::make_pair("1066MHz", "1066000000"),
|
||||||
}});
|
}});
|
||||||
|
|
||||||
p->addStateResidencyDataProvider(new DvfsStateResidencyDataProvider(
|
p->addStateResidencyDataProvider(std::make_shared<DvfsStateResidencyDataProvider>(
|
||||||
"/sys/devices/platform/1742048c.acpm_stats/fvp_stats", NS_TO_MS, cfgs));
|
"/sys/devices/platform/1742048c.acpm_stats/fvp_stats", NS_TO_MS, cfgs));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -235,7 +238,7 @@ void addSoC(std::shared_ptr<PowerStats> p) {
|
||||||
cfgs.emplace_back(generateGenericStateResidencyConfigs(reqStateConfig, slcReqStateHeaders),
|
cfgs.emplace_back(generateGenericStateResidencyConfigs(reqStateConfig, slcReqStateHeaders),
|
||||||
"SLC-REQ", "SLC_REQ:");
|
"SLC-REQ", "SLC_REQ:");
|
||||||
|
|
||||||
android::sp<GenericStateResidencyDataProvider> socSdp = new GenericStateResidencyDataProvider(
|
auto socSdp = std::make_shared<GenericStateResidencyDataProvider>(
|
||||||
"/sys/devices/platform/1742048c.acpm_stats/soc_stats", cfgs);
|
"/sys/devices/platform/1742048c.acpm_stats/soc_stats", cfgs);
|
||||||
|
|
||||||
p->addStateResidencyDataProvider(socSdp);
|
p->addStateResidencyDataProvider(socSdp);
|
||||||
|
@ -248,25 +251,32 @@ void setEnergyMeter(std::shared_ptr<PowerStats> p) {
|
||||||
|
|
||||||
void addDisplay(std::shared_ptr<PowerStats> p) {
|
void addDisplay(std::shared_ptr<PowerStats> p) {
|
||||||
// Add display residency stats
|
// Add display residency stats
|
||||||
android::sp<DisplayStateResidencyDataProvider> displaySdp =
|
|
||||||
new DisplayStateResidencyDataProvider("Display",
|
/*
|
||||||
|
* TODO(b/167216667): Add complete set of display states here. Must account
|
||||||
|
* for ALL devices built using this source
|
||||||
|
*/
|
||||||
|
std::vector<std::string> states = {
|
||||||
|
"Off",
|
||||||
|
"LP: 1440x3040@30",
|
||||||
|
"On: 1440x3040@60",
|
||||||
|
"On: 1440x3040@90",
|
||||||
|
"HBM: 1440x3040@60",
|
||||||
|
"HBM: 1440x3040@90"};
|
||||||
|
|
||||||
|
auto displaySdp =
|
||||||
|
std::make_shared<DisplayStateResidencyDataProvider>("Display",
|
||||||
"/sys/class/backlight/panel0-backlight/state",
|
"/sys/class/backlight/panel0-backlight/state",
|
||||||
/*
|
states);
|
||||||
* TODO(b/167216667): Add complete set of display states here. Must account
|
|
||||||
* for ALL devices built using this source
|
|
||||||
*/
|
|
||||||
{"Off", "LP: 1440x3040@30", "On: 1440x3040@60", "On: 1440x3040@90", "HBM: 1440x3040@60",
|
|
||||||
"HBM: 1440x3040@90"});
|
|
||||||
p->addStateResidencyDataProvider(displaySdp);
|
p->addStateResidencyDataProvider(displaySdp);
|
||||||
|
|
||||||
// Add display energy consumer
|
// Add display energy consumer
|
||||||
android::sp<PowerStatsEnergyConsumer> displayConsumer;
|
|
||||||
/*
|
/*
|
||||||
* TODO(b/167216667): Add correct display power model here. Must read from display rail
|
* TODO(b/167216667): Add correct display power model here. Must read from display rail
|
||||||
* and include proper coefficients for display states. Must account for ALL devices built
|
* and include proper coefficients for display states. Must account for ALL devices built
|
||||||
* using this source.
|
* using this source.
|
||||||
*/
|
*/
|
||||||
displayConsumer = PowerStatsEnergyConsumer::createMeterAndEntityConsumer(p,
|
auto displayConsumer = PowerStatsEnergyConsumer::createMeterAndEntityConsumer(p,
|
||||||
EnergyConsumerType::DISPLAY, "display", {"PPVAR_VSYS_PWR_DISP"}, "Display",
|
EnergyConsumerType::DISPLAY, "display", {"PPVAR_VSYS_PWR_DISP"}, "Display",
|
||||||
{{"LP: 1440x3040@30", 1},
|
{{"LP: 1440x3040@30", 1},
|
||||||
{"On: 1440x3040@60", 2},
|
{"On: 1440x3040@60", 2},
|
||||||
|
@ -287,7 +297,6 @@ void addCPUclusters(std::shared_ptr<PowerStats> p)
|
||||||
|
|
||||||
void addGPU(std::shared_ptr<PowerStats> p) {
|
void addGPU(std::shared_ptr<PowerStats> p) {
|
||||||
// Add gpu energy consumer
|
// Add gpu energy consumer
|
||||||
android::sp<PowerStatsEnergyConsumer> gpuConsumer;
|
|
||||||
std::map<std::string, int32_t> stateCoeffs;
|
std::map<std::string, int32_t> stateCoeffs;
|
||||||
const int socRev = android::base::GetIntProperty(kBootHwSoCRev, 0);
|
const int socRev = android::base::GetIntProperty(kBootHwSoCRev, 0);
|
||||||
|
|
||||||
|
@ -315,7 +324,7 @@ void addGPU(std::shared_ptr<PowerStats> p) {
|
||||||
{"670000", 50}};
|
{"670000", 50}};
|
||||||
}
|
}
|
||||||
|
|
||||||
gpuConsumer = PowerStatsEnergyConsumer::createMeterAndAttrConsumer(p,
|
auto gpuConsumer = PowerStatsEnergyConsumer::createMeterAndAttrConsumer(p,
|
||||||
EnergyConsumerType::OTHER, "GPU", {"S2S_VDD_G3D"},
|
EnergyConsumerType::OTHER, "GPU", {"S2S_VDD_G3D"},
|
||||||
{{UID_TIME_IN_STATE, "/sys/devices/platform/1c500000.mali/uid_time_in_state"}},
|
{{UID_TIME_IN_STATE, "/sys/devices/platform/1c500000.mali/uid_time_in_state"}},
|
||||||
stateCoeffs);
|
stateCoeffs);
|
||||||
|
@ -349,10 +358,8 @@ void addMobileRadio(std::shared_ptr<PowerStats> p)
|
||||||
cfgs.emplace_back(generateGenericStateResidencyConfigs(powerStateConfig, powerStateHeaders),
|
cfgs.emplace_back(generateGenericStateResidencyConfigs(powerStateConfig, powerStateHeaders),
|
||||||
"MODEM", "");
|
"MODEM", "");
|
||||||
|
|
||||||
android::sp<GenericStateResidencyDataProvider> modemSdp = new GenericStateResidencyDataProvider(
|
p->addStateResidencyDataProvider(std::make_shared<GenericStateResidencyDataProvider>(
|
||||||
"/sys/devices/platform/cpif/modem/power_stats", cfgs);
|
"/sys/devices/platform/cpif/modem/power_stats", cfgs));
|
||||||
|
|
||||||
p->addStateResidencyDataProvider(modemSdp);
|
|
||||||
|
|
||||||
p->addEnergyConsumer(PowerStatsEnergyConsumer::createMeterConsumer(p,
|
p->addEnergyConsumer(PowerStatsEnergyConsumer::createMeterConsumer(p,
|
||||||
EnergyConsumerType::MOBILE_RADIO, "MODEM", {"VSYS_PWR_MODEM", "VSYS_PWR_RFFE"}));
|
EnergyConsumerType::MOBILE_RADIO, "MODEM", {"VSYS_PWR_MODEM", "VSYS_PWR_RFFE"}));
|
||||||
|
@ -363,6 +370,21 @@ void addGNSS(std::shared_ptr<PowerStats> p)
|
||||||
p->addEnergyConsumer(PowerStatsEnergyConsumer::createMeterConsumer(p,
|
p->addEnergyConsumer(PowerStatsEnergyConsumer::createMeterConsumer(p,
|
||||||
EnergyConsumerType::GNSS, "GPS", {"L9S_GNSS_CORE"}));
|
EnergyConsumerType::GNSS, "GPS", {"L9S_GNSS_CORE"}));
|
||||||
}
|
}
|
||||||
|
/**
|
||||||
|
* Unlike other data providers, which source power entity state residency data from the kernel,
|
||||||
|
* this data provider acts as a general-purpose channel for state residency data providers
|
||||||
|
* 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<PowerStats> p) {
|
||||||
|
std::shared_ptr<PixelStateResidencyDataProvider> pixelSdp =
|
||||||
|
ndk::SharedRefBase::make<PixelStateResidencyDataProvider>();
|
||||||
|
|
||||||
|
pixelSdp->addEntity("Bluetooth", {{0, "Idle"}, {1, "Active"}, {2, "Tx"}, {3, "Rx"}});
|
||||||
|
|
||||||
|
pixelSdp->start();
|
||||||
|
p->addStateResidencyDataProvider(pixelSdp);
|
||||||
|
}
|
||||||
|
|
||||||
int main() {
|
int main() {
|
||||||
LOG(INFO) << "Pixel PowerStats HAL AIDL Service is starting.";
|
LOG(INFO) << "Pixel PowerStats HAL AIDL Service is starting.";
|
||||||
|
@ -374,6 +396,7 @@ int main() {
|
||||||
|
|
||||||
setEnergyMeter(p);
|
setEnergyMeter(p);
|
||||||
|
|
||||||
|
addPixelStateResidencyDataProvider(p);
|
||||||
addAoC(p);
|
addAoC(p);
|
||||||
addDisplay(p);
|
addDisplay(p);
|
||||||
addDvfsStats(p);
|
addDvfsStats(p);
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue