diff --git a/powerstats/oriole/service.cpp b/powerstats/oriole/service.cpp
index ee9d57e..8331997 100644
--- a/powerstats/oriole/service.cpp
+++ b/powerstats/oriole/service.cpp
@@ -31,6 +31,13 @@
 using aidl::android::hardware::power::stats::EnergyConsumerType;
 using aidl::android::hardware::power::stats::PowerStatsEnergyConsumer;
 
+const char kBootRevision[] = "ro.boot.revision";
+std::map<std::string, std::string> displayChannelNames = {
+    {"PROTO1.0", "PPVAR_VSYS_PWR_DISP"},
+    {"EVT1.0", "PPVAR_VSYS_PWR_DISP"},
+    {"EVT1.1", "VSYS_PWR_DISPLAY"},
+};
+
 void addDisplay(std::shared_ptr<PowerStats> p) {
     // Add display residency stats
     std::vector<std::string> states = {
@@ -45,13 +52,22 @@
             "/sys/class/backlight/panel0-backlight/state",
             states));
 
+    std::string rev = android::base::GetProperty(kBootRevision, "");
+
+    std::string channelName;
+    if (displayChannelNames.find(rev) == displayChannelNames.end()) {
+        channelName = displayChannelNames["EVT1.1"];
+    } else {
+        channelName = displayChannelNames[rev];
+    }
+
     // Add display energy consumer
     /*
      * TODO(b/167216667): Add correct display power model here. Must read from display rail
      * and include proper coefficients for display states.
      */
     p->addEnergyConsumer(PowerStatsEnergyConsumer::createMeterAndEntityConsumer(p,
-            EnergyConsumerType::DISPLAY, "display", {"PPVAR_VSYS_PWR_DISP"}, "Display",
+            EnergyConsumerType::DISPLAY, "display", {channelName}, "Display",
             {{"LP: 1080x2400@30", 1},
              {"On: 1080x2400@60", 2},
              {"On: 1080x2400@90", 3},
diff --git a/powerstats/raven/service.cpp b/powerstats/raven/service.cpp
index 6ee27d8..579efa1 100644
--- a/powerstats/raven/service.cpp
+++ b/powerstats/raven/service.cpp
@@ -33,6 +33,13 @@
 using aidl::android::hardware::power::stats::GenericStateResidencyDataProvider;
 using aidl::android::hardware::power::stats::PowerStatsEnergyConsumer;
 
+const char kBootRevision[] = "ro.boot.revision";
+std::map<std::string, std::string> displayChannelNames = {
+    {"PROTO1.0", "PPVAR_VSYS_PWR_DISP"},
+    {"EVT1.0", "PPVAR_VSYS_PWR_DISP"},
+    {"EVT1.1", "VSYS_PWR_DISPLAY"},
+};
+
 void addDisplay(std::shared_ptr<PowerStats> p) {
     // Add display residency stats
     std::vector<std::string> states = {
@@ -51,13 +58,22 @@
             "/sys/class/backlight/panel0-backlight/state",
             states));
 
+    std::string rev = android::base::GetProperty(kBootRevision, "");
+
+    std::string channelName;
+    if (displayChannelNames.find(rev) == displayChannelNames.end()) {
+        channelName = displayChannelNames["EVT1.1"];
+    } else {
+        channelName = displayChannelNames[rev];
+    }
+
     // Add display energy consumer
     /*
      * TODO(b/167216667): Add correct display power model here. Must read from display rail
      * and include proper coefficients for display states.
      */
     p->addEnergyConsumer(PowerStatsEnergyConsumer::createMeterAndEntityConsumer(p,
-            EnergyConsumerType::DISPLAY, "display", {"PPVAR_VSYS_PWR_DISP"}, "Display",
+            EnergyConsumerType::DISPLAY, "display", {channelName}, "Display",
             {{"LP: 1440x3120@10", 1},
              {"LP: 1440x3120@30", 2},
              {"On: 1440x3120@10", 3},
