power: Make powerHAL compatible for passthrough HIDL design

Test: No
Bug: 31177288
Bug: 32158500
Change-Id: Ia65f6b50d091a02199565af1d8855ec7473e7323
Signed-off-by: Ruchi Kandoi <kandoiruchi@google.com>
diff --git a/device.mk b/device.mk
index c79726d..93b99de 100644
--- a/device.mk
+++ b/device.mk
@@ -145,7 +145,12 @@
 
 PRODUCT_PACKAGES += \
     power.dragon \
-    sensors.dragon
+    sensors.dragon \
+    android.hardware.power@1.0-impl \
+
+ifeq ($(ENABLE_TREBLE), true)
+PRODUCT_PACKAGES += android.hardware.power@1.0-service \
+endif
 
 # Light HAL
 PRODUCT_PACKAGES += \
diff --git a/power/power_dragon.cpp b/power/power_dragon.cpp
index ca496d2..6352549 100644
--- a/power/power_dragon.cpp
+++ b/power/power_dragon.cpp
@@ -232,7 +232,32 @@
 static int dragon_power_open(const hw_module_t *module, const char *name,
                             hw_device_t **device)
 {
-    return 0;
+    ALOGD("%s: enter; name=%s", __FUNCTION__, name);
+    int retval = 0; /* 0 is ok; -1 is error */
+
+    if (strcmp(name, POWER_HARDWARE_MODULE_ID) == 0) {
+        power_module_t *dev = (power_module_t *)calloc(1,
+                sizeof(power_module_t));
+
+        if (dev) {
+            /* Common hw_device_t fields */
+            dev->common.tag = HARDWARE_MODULE_TAG;
+            dev->common.module_api_version = POWER_MODULE_API_VERSION_0_2;
+            dev->common.module_api_version = HARDWARE_HAL_API_VERSION;
+
+            dev->init = power_init;
+            dev->powerHint = dragon_power_hint;
+            dev->setInteractive = power_set_interactive;
+
+            *device = (hw_device_t*)dev;
+        } else
+            retval = -ENOMEM;
+    } else {
+        retval = -EINVAL;
+    }
+
+    ALOGD("%s: exit %d", __FUNCTION__, retval);
+    return retval;
 }