From 795990cca6f0979ec9cd397e345bd87a247ff97f Mon Sep 17 00:00:00 2001 From: Michael Wright Date: Thu, 21 Jun 2018 02:42:31 +0100 Subject: Update power HAL to version 1.3. Adds new EXPENSIVE_RENDERING power hint. This adds a new library which does not affect any pre-existing targets unless they create and add a new binary which uses this. BUG: 110112323 Test: adb shell /data/nativetest/VtsHalPowerV1_3TargetTest/VtsHalPowerV1_3TargetTest Change-Id: I5fb33abbbe4c4958882a106dfa400ad74013e40d --- compatibility_matrices/compatibility_matrix.3.xml | 2 +- current.txt | 2 + power/1.3/Android.bp | 21 +++++++ power/1.3/IPower.hal | 33 +++++++++++ power/1.3/types.hal | 28 ++++++++++ power/1.3/vts/functional/Android.bp | 27 +++++++++ .../vts/functional/VtsHalPowerV1_3TargetTest.cpp | 64 ++++++++++++++++++++++ 7 files changed, 176 insertions(+), 1 deletion(-) create mode 100644 power/1.3/Android.bp create mode 100644 power/1.3/IPower.hal create mode 100644 power/1.3/types.hal create mode 100644 power/1.3/vts/functional/Android.bp create mode 100644 power/1.3/vts/functional/VtsHalPowerV1_3TargetTest.cpp diff --git a/compatibility_matrices/compatibility_matrix.3.xml b/compatibility_matrices/compatibility_matrix.3.xml index f271642fd1..9c6b12ad15 100644 --- a/compatibility_matrices/compatibility_matrix.3.xml +++ b/compatibility_matrices/compatibility_matrix.3.xml @@ -290,7 +290,7 @@ android.hardware.power - 1.0-2 + 1.0-3 IPower default diff --git a/current.txt b/current.txt index cc15322b83..8a45ca579b 100644 --- a/current.txt +++ b/current.txt @@ -348,6 +348,8 @@ e85f566698d2a2c28100e264fcf2c691a066756ddf8dd341d009ff50cfe10614 android.hardwar 5e278fcaa3287d397d8eebe1c22aaa28150f5caae1cf9381cd6dc32cb37899c5 android.hardware.nfc@1.1::types 163e115e833fc1d77cdd4a8cf0c833bb8b8d74fe35c880fe693101d17774926f android.hardware.power@1.2::IPower 7899b9305587b2d5cd74a3cc87e9090f58bf4ae74256ce3ee36e7ec011822840 android.hardware.power@1.2::types +5a464e6db53fad223986d655028a18185b73db8e2bfa9663f9042c9623eb0aa0 android.hardware.power@1.3::IPower +a54a28d39b892d27a3cb06829181c038edcdd9e8eef359543b01e4313ae59aa0 android.hardware.power@1.3::types ab132c990a62f0aca35871c092c22fb9c85d478e22124ef6a4d0a2302da76a9f android.hardware.radio@1.2::IRadio cda752aeabaabc20486a82ac57a3dd107785c006094a349bc5e224e8aa22a17c android.hardware.radio@1.2::IRadioIndication da8c6ae991c6a4b284cc6e445332e064e28ee8a09482ed5afff9d159ec6694b7 android.hardware.radio@1.2::IRadioResponse diff --git a/power/1.3/Android.bp b/power/1.3/Android.bp new file mode 100644 index 0000000000..65b75977f1 --- /dev/null +++ b/power/1.3/Android.bp @@ -0,0 +1,21 @@ +// This file is autogenerated by hidl-gen -Landroidbp. + +hidl_interface { + name: "android.hardware.power@1.3", + root: "android.hardware", + srcs: [ + "types.hal", + "IPower.hal", + ], + interfaces: [ + "android.hardware.power@1.0", + "android.hardware.power@1.1", + "android.hardware.power@1.2", + "android.hidl.base@1.0", + ], + types: [ + "PowerHint", + ], + gen_java: true, +} + diff --git a/power/1.3/IPower.hal b/power/1.3/IPower.hal new file mode 100644 index 0000000000..18b00a30c7 --- /dev/null +++ b/power/1.3/IPower.hal @@ -0,0 +1,33 @@ +/* + * Copyright (C) 2018 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package android.hardware.power@1.3; + +import @1.2::IPower; + +interface IPower extends @1.2::IPower { + /** + * Called to pass hints on power requirements which + * may result in adjustment of power/performance parameters of the + * cpufreq governor and other controls. + * + * A particular platform may choose to ignore any hint. + * + * @param hint PowerHint which is passed + * @param data contains additional information about the hint + * and is described along with the comments for each of the hints. + */ + oneway powerHintAsync_1_3(PowerHint hint, int32_t data); +}; diff --git a/power/1.3/types.hal b/power/1.3/types.hal new file mode 100644 index 0000000000..658495cf63 --- /dev/null +++ b/power/1.3/types.hal @@ -0,0 +1,28 @@ +/* + * Copyright (C) 2018 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package android.hardware.power@1.3; + +import @1.2::PowerHint; + +/** Power hint identifiers passed to powerHintAsync_1_3() */ +enum PowerHint : @1.2::PowerHint { + /** + * This hint indicates that the device is about to enter a period of expensive rendering, and + * the GPU should be configured accordingly. The data parameter is always 1 when entering this + * state and 0 when leaving it. + */ + EXPENSIVE_RENDERING, +}; diff --git a/power/1.3/vts/functional/Android.bp b/power/1.3/vts/functional/Android.bp new file mode 100644 index 0000000000..34cdb60794 --- /dev/null +++ b/power/1.3/vts/functional/Android.bp @@ -0,0 +1,27 @@ +// +// Copyright (C) 2018 The Android Open Source Project +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +cc_test { + name: "VtsHalPowerV1_3TargetTest", + defaults: ["VtsHalTargetTestDefaults"], + srcs: ["VtsHalPowerV1_3TargetTest.cpp"], + static_libs: [ + "android.hardware.power@1.0", + "android.hardware.power@1.1", + "android.hardware.power@1.2", + "android.hardware.power@1.3", + ], +} diff --git a/power/1.3/vts/functional/VtsHalPowerV1_3TargetTest.cpp b/power/1.3/vts/functional/VtsHalPowerV1_3TargetTest.cpp new file mode 100644 index 0000000000..af1a1d86ab --- /dev/null +++ b/power/1.3/vts/functional/VtsHalPowerV1_3TargetTest.cpp @@ -0,0 +1,64 @@ +/* + * Copyright (C) 2018 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#define LOG_TAG "power_hidl_hal_test" +#include +#include + +#include +#include + +using ::android::sp; +using ::android::hardware::hidl_vec; +using ::android::hardware::Return; +using ::android::hardware::power::V1_3::IPower; +using ::android::hardware::power::V1_3::PowerHint; + +// Test environment for Power HIDL HAL. +class PowerHidlEnvironment : public ::testing::VtsHalHidlTargetTestEnvBase { + public: + // get the test environment singleton + static PowerHidlEnvironment* Instance() { + static PowerHidlEnvironment* instance = new PowerHidlEnvironment; + return instance; + } + + virtual void registerTestServices() override { registerTestService(); } +}; + +class PowerHidlTest : public ::testing::VtsHalHidlTargetTestBase { + public: + virtual void SetUp() override { + power = ::testing::VtsHalHidlTargetTestBase::getService( + PowerHidlEnvironment::Instance()->getServiceName()); + ASSERT_NE(power, nullptr); + } + + sp power; +}; + +TEST_F(PowerHidlTest, PowerHintAsync_1_3) { + ASSERT_TRUE(power->powerHintAsync_1_3(PowerHint::EXPENSIVE_RENDERING, 0).isOk()); +} + +int main(int argc, char** argv) { + ::testing::AddGlobalTestEnvironment(PowerHidlEnvironment::Instance()); + ::testing::InitGoogleTest(&argc, argv); + PowerHidlEnvironment::Instance()->init(&argc, argv); + int status = RUN_ALL_TESTS(); + LOG(INFO) << "Test result = " << status; + return status; +} -- cgit v1.2.3