diff --git a/powerstats/raven/service.cpp b/powerstats/raven/service.cpp
index d7c7599..8ccc616 100644
--- a/powerstats/raven/service.cpp
+++ b/powerstats/raven/service.cpp
@@ -16,8 +16,10 @@
 
 #define LOG_TAG "android.hardware.power.stats-service.pixel"
 
-#include <PowerStatsAidl.h>
+#include <dataproviders/DisplayStateResidencyDataProvider.h>
+#include <dataproviders/PowerStatsEnergyConsumer.h>
 #include <Gs101CommonDataProviders.h>
+#include <PowerStatsAidl.h>
 
 #include <android-base/logging.h>
 #include <android-base/properties.h>
@@ -25,6 +27,45 @@
 #include <android/binder_process.h>
 #include <log/log.h>
 
+using aidl::android::hardware::power::stats::DisplayStateResidencyDataProvider;
+using aidl::android::hardware::power::stats::EnergyConsumerType;
+using aidl::android::hardware::power::stats::PowerStatsEnergyConsumer;
+
+void addDisplay(std::shared_ptr<PowerStats> p) {
+    // Add display residency stats
+    std::vector<std::string> states = {
+        "Off",
+        "LP: 1440x3120@10",
+        "LP: 1440x3120@30",
+        "On: 1440x3120@10",
+        "On: 1440x3120@30",
+        "On: 1440x3120@60",
+        "On: 1440x3120@90",
+        "On: 1440x3120@120",
+        "HBM: 1440x3120@60",
+    };
+
+    p->addStateResidencyDataProvider(std::make_unique<DisplayStateResidencyDataProvider>("Display",
+            "/sys/class/backlight/panel0-backlight/state",
+            states));
+
+    // 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",
+            {{"LP: 1440x3120@10", 1},
+             {"LP: 1440x3120@30", 2},
+             {"On: 1440x3120@10", 3},
+             {"On: 1440x3120@30", 4},
+             {"On: 1440x3120@60", 5},
+             {"On: 1440x3120@90", 6},
+             {"On: 1440x3120@120", 7},
+             {"HBM: 1440x3120@60", 8}}));
+}
+
 int main() {
     LOG(INFO) << "Pixel PowerStats HAL AIDL Service is starting.";
 
@@ -34,6 +75,7 @@
     std::shared_ptr<PowerStats> p = ndk::SharedRefBase::make<PowerStats>();
 
     addGs101CommonDataProviders(p);
+    addDisplay(p);
 
     const std::string instance = std::string() + PowerStats::descriptor + "/default";
     binder_status_t status = AServiceManager_addService(p->asBinder().get(), instance.c_str());
