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;
}