Merge "Revert "powerstats: Add PixelStateResidencyDataProvider"" into sc-dev

This commit is contained in:
Benjamin Schwartz 2021-03-09 00:58:56 +00:00 committed by Android (Google) Code Review
commit 3cde50fe34
2 changed files with 21 additions and 45 deletions

View file

@ -81,7 +81,6 @@ 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",

View file

@ -24,7 +24,6 @@
#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>
@ -38,7 +37,6 @@ 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;
@ -56,8 +54,7 @@ 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(std::make_shared<AocStateResidencyDataProvider>(coreIds, p->addStateResidencyDataProvider(new AocStateResidencyDataProvider(coreIds, coreStates));
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 = {
@ -68,7 +65,7 @@ void addAoC(std::shared_ptr<PowerStats> p) {
{"UUD", "ultra_underdrive"}, {"UUD", "ultra_underdrive"},
{"UD", "underdrive"}}; {"UD", "underdrive"}};
p->addStateResidencyDataProvider( p->addStateResidencyDataProvider(
std::make_shared<AocStateResidencyDataProvider>(voltageIds, voltageStates)); new 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 = {
@ -78,7 +75,7 @@ void addAoC(std::shared_ptr<PowerStats> p) {
{"MON", "mode"}, {"MON", "mode"},
}; };
p->addStateResidencyDataProvider( p->addStateResidencyDataProvider(
std::make_shared<AocStateResidencyDataProvider>(monitorIds, monitorStates)); new AocStateResidencyDataProvider(monitorIds, monitorStates));
} }
void addDvfsStats(std::shared_ptr<PowerStats> p) { void addDvfsStats(std::shared_ptr<PowerStats> p) {
@ -170,7 +167,7 @@ void addDvfsStats(std::shared_ptr<PowerStats> p) {
std::make_pair("1066MHz", "1066000000"), std::make_pair("1066MHz", "1066000000"),
}}); }});
p->addStateResidencyDataProvider(std::make_shared<DvfsStateResidencyDataProvider>( p->addStateResidencyDataProvider(new 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));
} }
@ -238,7 +235,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:");
auto socSdp = std::make_shared<GenericStateResidencyDataProvider>( android::sp<GenericStateResidencyDataProvider> socSdp = new 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);
@ -251,32 +248,25 @@ 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",
"/sys/class/backlight/panel0-backlight/state",
/* /*
* TODO(b/167216667): Add complete set of display states here. Must account * TODO(b/167216667): Add complete set of display states here. Must account
* for ALL devices built using this source * 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",
"Off", "HBM: 1440x3040@90"});
"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",
states);
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.
*/ */
auto displayConsumer = PowerStatsEnergyConsumer::createMeterAndEntityConsumer(p, 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},
@ -297,6 +287,7 @@ 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);
@ -324,7 +315,7 @@ void addGPU(std::shared_ptr<PowerStats> p) {
{"670000", 50}}; {"670000", 50}};
} }
auto gpuConsumer = PowerStatsEnergyConsumer::createMeterAndAttrConsumer(p, 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);
@ -358,8 +349,10 @@ void addMobileRadio(std::shared_ptr<PowerStats> p)
cfgs.emplace_back(generateGenericStateResidencyConfigs(powerStateConfig, powerStateHeaders), cfgs.emplace_back(generateGenericStateResidencyConfigs(powerStateConfig, powerStateHeaders),
"MODEM", ""); "MODEM", "");
p->addStateResidencyDataProvider(std::make_shared<GenericStateResidencyDataProvider>( android::sp<GenericStateResidencyDataProvider> modemSdp = new 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"}));
@ -370,21 +363,6 @@ 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.";
@ -396,7 +374,6 @@ int main() {
setEnergyMeter(p); setEnergyMeter(p);
addPixelStateResidencyDataProvider(p);
addAoC(p); addAoC(p);
addDisplay(p); addDisplay(p);
addDvfsStats(p); addDvfsStats(p);