power: Add support for ADPF implementation.
ADPF provided the API for power/performance tuning. Add API support in power HAL. Change-Id: Ie00f97650b209a890da222e5911371a270efb131
This commit is contained in:
@@ -12,13 +12,16 @@ LOCAL_SHARED_LIBRARIES := liblog libcutils libdl libxml2 libbase libutils libbin
|
||||
|
||||
ifeq ($(call math_gt_or_eq, 33, $(PLATFORM_SDK_VERSION)), true)
|
||||
LOCAL_SHARED_LIBRARIES += android.hardware.power-V3-ndk
|
||||
endif
|
||||
ifeq ($(call math_gt_or_eq, 34, $(PLATFORM_SDK_VERSION)), true)
|
||||
LOCAL_SHARED_LIBRARIES += android.hardware.power-V4-ndk
|
||||
else
|
||||
LOCAL_SHARED_LIBRARIES += android.hardware.power-V1-ndk_platform
|
||||
endif
|
||||
|
||||
LOCAL_HEADER_LIBRARIES += libutils_headers
|
||||
LOCAL_HEADER_LIBRARIES += libhardware_headers
|
||||
LOCAL_SRC_FILES := power-common.c metadata-parser.c utils.c list.c hint-data.c powerhintparser.c Power.cpp main.cpp
|
||||
LOCAL_SRC_FILES := power-common.c metadata-parser.c utils.c list.c hint-data.c powerhintparser.c Power.cpp main.cpp PowerHintSession.cpp
|
||||
LOCAL_C_INCLUDES := external/libxml2/include \
|
||||
external/icu/icu4c/source/common
|
||||
|
||||
|
||||
22
Power.cpp
22
Power.cpp
@@ -25,11 +25,16 @@
|
||||
* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
|
||||
* OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
|
||||
* IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*
|
||||
* Changes from Qualcomm Innovation Center are provided under the following license:
|
||||
* Copyright (c) 2023 Qualcomm Innovation Center, Inc. All rights reserved.
|
||||
* SPDX-License-Identifier: BSD-3-Clause-Clear
|
||||
*/
|
||||
|
||||
#define LOG_TAG "QTI PowerHAL"
|
||||
|
||||
#include "Power.h"
|
||||
#include "PowerHintSession.h"
|
||||
|
||||
#include <android-base/logging.h>
|
||||
|
||||
@@ -125,15 +130,22 @@ ndk::ScopedAStatus Power::isBoostSupported(Boost type, bool* _aidl_return) {
|
||||
*_aidl_return = false;
|
||||
return ndk::ScopedAStatus::ok();
|
||||
}
|
||||
ndk::ScopedAStatus Power::createHintSession(int32_t, int32_t, const std::vector<int32_t>&, int64_t,
|
||||
ndk::ScopedAStatus Power::createHintSession(int32_t tgid, int32_t uid, const std::vector<int32_t>& threadIds, int64_t durationNanos,
|
||||
std::shared_ptr<IPowerHintSession>* _aidl_return) {
|
||||
*_aidl_return = nullptr;
|
||||
return ndk::ScopedAStatus::fromExceptionCode(EX_UNSUPPORTED_OPERATION);
|
||||
LOG(INFO) << "Power createHintSession";
|
||||
if (threadIds.size() == 0) {
|
||||
LOG(ERROR) << "Error: threadIds.size() shouldn't be " << threadIds.size();
|
||||
*_aidl_return = nullptr;
|
||||
return ndk::ScopedAStatus::fromExceptionCode(EX_ILLEGAL_ARGUMENT);
|
||||
}
|
||||
*_aidl_return = setPowerHintSession();
|
||||
return ndk::ScopedAStatus::ok();
|
||||
}
|
||||
|
||||
ndk::ScopedAStatus Power::getHintSessionPreferredRate(int64_t* outNanoseconds) {
|
||||
*outNanoseconds = -1;
|
||||
return ndk::ScopedAStatus::fromExceptionCode(EX_UNSUPPORTED_OPERATION);
|
||||
LOG(INFO) << "Power getHintSessionPreferredRate";
|
||||
*outNanoseconds = getSessionPreferredRate();
|
||||
return ndk::ScopedAStatus::ok();
|
||||
}
|
||||
|
||||
} // namespace impl
|
||||
|
||||
43
PowerHintSession.cpp
Normal file
43
PowerHintSession.cpp
Normal file
@@ -0,0 +1,43 @@
|
||||
/*
|
||||
* Copyright (c) 2023 Qualcomm Innovation Center, Inc. All rights reserved.
|
||||
* SPDX-License-Identifier: BSD-3-Clause-Clear
|
||||
*/
|
||||
|
||||
#include "PowerHintSession.h"
|
||||
#include <android-base/logging.h>
|
||||
#define LOG_TAG "QTI PowerHAL"
|
||||
|
||||
std::shared_ptr<aidl::android::hardware::power::IPowerHintSession> setPowerHintSession(){
|
||||
std::shared_ptr<aidl::android::hardware::power::IPowerHintSession> mPowerSession = ndk::SharedRefBase::make<PowerHintSessionImpl>();
|
||||
return mPowerSession;
|
||||
}
|
||||
|
||||
int64_t getSessionPreferredRate(){
|
||||
return 16666666L;
|
||||
}
|
||||
|
||||
ndk::ScopedAStatus PowerHintSessionImpl::updateTargetWorkDuration(int64_t in_targetDurationNanos){
|
||||
return ndk::ScopedAStatus::ok();
|
||||
}
|
||||
ndk::ScopedAStatus PowerHintSessionImpl::reportActualWorkDuration(const std::vector<::aidl::android::hardware::power::WorkDuration>& in_durations){
|
||||
return ndk::ScopedAStatus::ok();
|
||||
}
|
||||
ndk::ScopedAStatus PowerHintSessionImpl::pause(){
|
||||
return ndk::ScopedAStatus::ok();
|
||||
}
|
||||
ndk::ScopedAStatus PowerHintSessionImpl::resume(){
|
||||
return ndk::ScopedAStatus::ok();
|
||||
}
|
||||
ndk::ScopedAStatus PowerHintSessionImpl::close(){
|
||||
return ndk::ScopedAStatus::ok();
|
||||
}
|
||||
ndk::ScopedAStatus PowerHintSessionImpl::sendHint(aidl::android::hardware::power::SessionHint hint){
|
||||
return ndk::ScopedAStatus::ok();
|
||||
}
|
||||
ndk::ScopedAStatus PowerHintSessionImpl::setThreads(const std::vector<int32_t>& threadIds){
|
||||
if (threadIds.size() == 0) {
|
||||
LOG(ERROR) << "Error: threadIds.size() shouldn't be " << threadIds.size();
|
||||
return ndk::ScopedAStatus::fromExceptionCode(EX_ILLEGAL_ARGUMENT);
|
||||
}
|
||||
return ndk::ScopedAStatus::ok();
|
||||
}
|
||||
27
PowerHintSession.h
Normal file
27
PowerHintSession.h
Normal file
@@ -0,0 +1,27 @@
|
||||
/*
|
||||
* Copyright (c) 2023 Qualcomm Innovation Center, Inc. All rights reserved.
|
||||
* SPDX-License-Identifier: BSD-3-Clause-Clear
|
||||
*/
|
||||
|
||||
#ifndef __POWERHINTSESSION__
|
||||
#define __POWERHINTSESSION__
|
||||
|
||||
#include <aidl/android/hardware/power/WorkDuration.h>
|
||||
#include <aidl/android/hardware/power/SessionHint.h>
|
||||
#include <aidl/android/hardware/power/BnPowerHintSession.h>
|
||||
|
||||
std::shared_ptr<aidl::android::hardware::power::IPowerHintSession> setPowerHintSession();
|
||||
int64_t getSessionPreferredRate();
|
||||
|
||||
class PowerHintSessionImpl : public aidl::android::hardware::power::BnPowerHintSession{
|
||||
public:
|
||||
ndk::ScopedAStatus updateTargetWorkDuration(int64_t targetDurationNanos) override;
|
||||
ndk::ScopedAStatus reportActualWorkDuration(
|
||||
const std::vector<aidl::android::hardware::power::WorkDuration>& durations) override;
|
||||
ndk::ScopedAStatus pause() override;
|
||||
ndk::ScopedAStatus resume() override;
|
||||
ndk::ScopedAStatus close() override;
|
||||
ndk::ScopedAStatus sendHint(aidl::android::hardware::power::SessionHint hint) override;
|
||||
ndk::ScopedAStatus setThreads(const std::vector<int32_t>& threadIds) override;
|
||||
};
|
||||
#endif /* __POWERHINTSESSION__ */
|
||||
@@ -24,11 +24,15 @@ BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
|
||||
WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
|
||||
OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
|
||||
IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
|
||||
Changes from Qualcomm Innovation Center are provided under the following license:
|
||||
Copyright (c) 2023 Qualcomm Innovation Center, Inc. All rights reserved.
|
||||
SPDX-License-Identifier: BSD-3-Clause-Clear
|
||||
-->
|
||||
<manifest version="1.0" type="device">
|
||||
<hal format="aidl">
|
||||
<name>android.hardware.power</name>
|
||||
<version>3</version>
|
||||
<version>4</version>
|
||||
<fqname>IPower/default</fqname>
|
||||
</hal>
|
||||
</manifest>
|
||||
Reference in New Issue
Block a user