Merge tag 'LA.VENDOR.1.0.r1-23800-WAIPIO.QSSI14.0' of https://git.codelinaro.org/clo/la/platform/vendor/qcom-opensource/power into lineage-21.0

"LA.VENDOR.1.0.r1-23800-WAIPIO.QSSI14.0"

* tag 'LA.VENDOR.1.0.r1-23800-WAIPIO.QSSI14.0' of https://git.codelinaro.org/clo/la/platform/vendor/qcom-opensource/power:
  power: Replace library name with ndk from ndk_platform for upgrade sdk version
  Power: Modifying powerhint.xml for Halliday target
  power: adjust powerhint for halliday
  power: added power hint for sHDR case to support parrot and ravelin
  power: modify tunings for camera close hint
  Power : Add power tuning  for sHDR encode use case
  Power: Modifying powerhint.xml for Halliday Target
  Powerhint file for Ravelin
  Power: tuning of 30fps use case
  power: modified powerhint file for ravelin
  Power : Set minCpu freq for preview to meet FPS
  Power: Adding powerhint.xml for Halliday target
  power: updated power for ravelin
  power: improve silver capped freq for taro
  Power: tuning of snapshot, 30fps and ZSL use cases
  power : revised tunings for parrot
  power: update power hint for ukee.
  power: add powerhint for video decode 30 fps secure/non-secure tunning
  power: Add support for EXPENSIVE_RENDERING
  Power : Modify powerhint file for tofino target
  power: tuning of camera open and close
  Power : Modify powerhint file for parrot target
  power : Modify powerhint file for parrot target
  power : Modify powerhint file for parrot target
  power: added powerhint.xml for neo target
  Revert "Power:Replace library name from ndk_platform to ndk"
  power : add powerhint file for parrot target
  Revert "Power : Add tunings for 240FPS decode cases."
  Power : Add tunings for 240FPS decode cases.
  Revert "Power: Update powerhint with CPU,Bus DCVS settings"
  Revert "[Waipio] Update CPU and DDR settimgs for camera cases"
  [Waipio] Update CPU and DDR settimgs for camera cases
  Power: Update powerhint with CPU,Bus DCVS settings
  Power: Add powerhint.xml for waipio
  Specify stable AIDL version number.

 Conflicts:
	Android.mk
	Power.cpp
	power-common.c
	power-common.h
	power-vendor-product.mk

Change-Id: Ide4d0b357670adaec4ce47b13dee0e393b8c08b4
diff --git a/.gitupstream b/.gitupstream
new file mode 100644
index 0000000..d9d65c5
--- /dev/null
+++ b/.gitupstream
@@ -0,0 +1 @@
+https://git.codelinaro.org/clo/la/platform/vendor/qcom-opensource/power
diff --git a/Android.mk b/Android.mk
index af78f3e..c92cde7 100644
--- a/Android.mk
+++ b/Android.mk
@@ -8,17 +8,11 @@
 
 LOCAL_MODULE_RELATIVE_PATH := hw
 # KEYSTONE(I1132378f14428bf511f3cea4f419e90a6e89f823,b/181709127)
-LOCAL_SHARED_LIBRARIES := liblog libcutils libdl libxml2 libbase libutils libbinder_ndk
-
-ifeq ($(call math_gt_or_eq, $(PLATFORM_SDK_VERSION), 34), true)
-LOCAL_SHARED_LIBRARIES += android.hardware.power-V1-ndk
-else
-LOCAL_SHARED_LIBRARIES += android.hardware.power-V1-ndk_platform
-endif
+LOCAL_SHARED_LIBRARIES := liblog libcutils libdl libxml2 libbase libutils libbinder_ndk android.hardware.power-V3-ndk
 
 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
 
@@ -79,12 +73,6 @@
 LOCAL_SRC_FILES += power-710.c
 endif
 
-ifeq ($(call is-board-platform-in-list,trinket), true)
-LOCAL_SHARED_LIBRARIES := liblog libcutils libdl libxml2
-LOCAL_SRC_FILES := power.c metadata-parser.c utils.c list.c hint-data.c powerhintparser.c
-LOCAL_SRC_FILES += power-6125.c
-endif
-
 ifeq ($(call is-board-platform-in-list,msmnile), true)
 LOCAL_SRC_FILES += power-msmnile.c
 endif
@@ -93,13 +81,6 @@
     LOCAL_CFLAGS += -DINTERACTION_BOOST
 endif
 
-ifeq ($(call is-board-platform-in-list,trinket), true)
-LOCAL_MODULE := power.qcom
-LOCAL_MODULE_TAGS := optional
-LOCAL_CFLAGS += -Wno-unused-parameter -Wno-unused-variable
-LOCAL_VENDOR_MODULE := true
-include $(BUILD_SHARED_LIBRARY)
-else
 LOCAL_MODULE := android.hardware.power-service
 LOCAL_INIT_RC := android.hardware.power-service.rc
 LOCAL_MODULE_TAGS := optional
@@ -108,6 +89,3 @@
 LOCAL_VINTF_FRAGMENTS := power.xml
 include $(BUILD_EXECUTABLE)
 endif
-
-
-endif
diff --git a/Power.cpp b/Power.cpp
index 4ab9e83..0820013 100644
--- a/Power.cpp
+++ b/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>
 
@@ -96,6 +101,12 @@
 
     switch(type){
         case Mode::EXPENSIVE_RENDERING:
+            if (is_expensive_rendering_supported()) {
+                *_aidl_return = true;
+            } else {
+                *_aidl_return = false;
+            }
+            break;
         case Mode::INTERACTIVE:
         case Mode::SUSTAINED_PERFORMANCE:
         case Mode::FIXED_PERFORMANCE:
@@ -119,6 +130,23 @@
     *_aidl_return = false;
     return ndk::ScopedAStatus::ok();
 }
+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) {
+    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) {
+    LOG(INFO) << "Power getHintSessionPreferredRate";
+    *outNanoseconds = getSessionPreferredRate();
+    return ndk::ScopedAStatus::ok();
+}
 
 }  // namespace impl
 }  // namespace power
diff --git a/Power.h b/Power.h
index c7c42b0..a66f4a2 100644
--- a/Power.h
+++ b/Power.h
@@ -48,6 +48,11 @@
         ndk::ScopedAStatus isModeSupported(Mode type, bool* _aidl_return) override;
         ndk::ScopedAStatus setBoost(Boost type, int32_t durationMs) override;
         ndk::ScopedAStatus isBoostSupported(Boost type, bool* _aidl_return) override;
+        ndk::ScopedAStatus createHintSession(int32_t tgid, int32_t uid,
+                                             const std::vector<int32_t>& threadIds,
+                                             int64_t durationNanos,
+                                             std::shared_ptr<IPowerHintSession>* _aidl_return) override;
+        ndk::ScopedAStatus getHintSessionPreferredRate(int64_t* outNanoseconds) override;
 };
 
 }  // namespace impl
diff --git a/PowerHintSession.cpp b/PowerHintSession.cpp
new file mode 100644
index 0000000..c466947
--- /dev/null
+++ b/PowerHintSession.cpp
@@ -0,0 +1,33 @@
+/*
+* 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();
+}
diff --git a/PowerHintSession.h b/PowerHintSession.h
new file mode 100644
index 0000000..3491b26
--- /dev/null
+++ b/PowerHintSession.h
@@ -0,0 +1,24 @@
+/*
+* 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/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;
+};
+#endif /* __POWERHINTSESSION__ */
diff --git a/config/crow/powerhint.xml b/config/crow/powerhint.xml
new file mode 100644
index 0000000..8e3dcab
--- /dev/null
+++ b/config/crow/powerhint.xml
@@ -0,0 +1,399 @@
+<?xml version="1.0" encoding="utf-8" ?>
+
+<!--
+/*Copyright (c) 2020-2021, The Linux Foundation. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are
+ * met:
+ *     * Redistributions of source code must retain the above copyright
+ *       notice, this list of conditions and the following disclaimer.
+ *     * Redistributions in binary form must reproduce the above
+ *       copyright notice, this list of conditions and the following
+ *       disclaimer in the documentation and/or other materials provided
+ *       with the distribution.
+ *     * Neither the name of The Linux Foundation nor the names of its
+ *       contributors may be used to endorse or promote products derived
+ *       from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT
+ * ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS
+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
+ * 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) 2022-2023 Qualcomm Innovation Center, Inc. All rights reserved.
+ * SPDX-License-Identifier: BSD-3-Clause-Clear
+ */
+-->
+<HintConfigs>
+    <Powerhint>
+        <!-- video decode 30 fps non secure content tunings-->
+        <!-- MPCTLV3_MIN_FREQ_CLUSTER_BIG_CORE_0, 0XA -->
+        <Config
+            Id="0X00001502" Enable="true" Timeout="0" Target="crow"
+            Resources="0x40800000, 0XA"/>
+
+        <!-- video decode 30 fps secure content tunings-->
+        <!-- MPCTLV3_MIN_FREQ_CLUSTER_BIG_CORE_0, 0XA -->
+        <Config
+            Id="0X00001504" Enable="true" Timeout="0" Target="crow"
+            Resources="0x40800000, 0XA"/>
+
+        <!--camera ZSLPreview-->
+        <!--CPU-LLC BWMON - Set sample_ms 33-->
+        <!--CPU-LLC BWMON - Set io_percent 100 -->
+        <!--CPU-LLC BWMON - Set hyst_length hist memory 0 -->
+        <!--CPU-LLC BWMON - Set max freq 933mhz -->
+        <!--CPU-LLC-DDR BWMON - Set sample_ms 33 -->
+        <!--CPU-LLC-DDR BWMON - Set io_percent 100 -->
+        <!--CPU-LLC-DDR BWMON - Set hyst_length hist memory 0 -->
+        <!--L CPU - Disable schedutil PL -->
+        <!--L CPU - Set hispeed load 99 -->
+        <!--L CPU - max freq 9020000 -->
+        <!--B CPU - Disable Core Control -->
+        <!--GROUP UPMIGRATE - 35 -->
+        <!--GROUP DOWNMIGRATE - 30 -->
+        <!--UPMIGRATE - 35 85-->
+        <!--DOWNMIGRATE - 30 80-->
+        <!--AB_SCALE - 50-->
+        <Config
+            Id="0x00001330" Enable="true" Timeout="0" Target="crow"
+            Resources="0x4183C000, 0x21, 0x41834000, 0x64, 0x41838000, 0, 0x41848000, 0xE3C88, 0x43034000, 0x21,
+            0x43020000, 0x64, 0x43024000, 0, 0x41444100, 0, 0x41440100, 0x63, 0x40804100, 0x386, 0x41008000, 0, 0x40CF4000, 0x0023001E, 0x40CE0000, 0x0023001E, 0x40CE0200, 0x00550050, 0x43048000, 0x32"/>
+
+        <!--camera 30fps-->
+        <!--CPU-LLC BWMON - Set sample_ms 33 -->
+        <!--CPU-LLC BWMON - Set io_percent 100 -->
+        <!--CPU-LLC BWMON - Set hyst_length hist memory 0 -->
+        <!--CPU-LLC BWMON - Set max freq 933mhz -->
+        <!--CPU-LLC-DDR BWMON - Set sample_ms 33 -->
+        <!--CPU-LLC-DDR BWMON - Set io_percent 100 -->
+        <!--CPU-LLC-DDR BWMON - Set hyst_length hist memory 0 -->
+        <!--CPU-LLC-DDR BWMON - Set min_freq 547 -->
+        <!--L CPU max freq 9020000 -->
+        <!--L CPU - Disable schedutil PL -->
+        <!--B CPU - Disable schedutil PL -->
+        <!--B CPU - Set hispeed load 99 -->
+        <!--UPMIGRATE - 35 85 -->
+        <!--DOWNMIGRATE - 30 85 -->
+        <!--B CPU - Disable Core Control -->
+        <!--AB_SCALE - 50-->
+        <Config
+            Id="0x00001331" Enable="true" Timeout="0" Target="crow"
+            Resources="0x4183C000, 0x21, 0x41834000, 0x64, 0x41838000, 0, 0x41848000, 0xE3C88, 0x43034000, 0x21,
+            0x43020000, 0x64, 0x43024000, 0, 0x4303C000, 0x858B8 ,0x40804100, 0x386, 0x41444100, 0, 0x41444000, 0, 0x41440000, 0x63,
+            0x40CE0000, 0x0023001E, 0x40CE0200, 0x00550055, 0x41008000, 0, 0x43048000, 0x32"/>
+
+        <!--camera 60fps-->
+        <!--CPU-LLC BWMON - Set sample_ms 16 -->
+        <!--CPU-LLC BWMON - Set io_percent 100 -->
+        <!--CPU-LLC BWMON - Set hyst_length hist memory 0 -->
+        <!--CPU-LLC BWMON - Set max freq 933mhz -->
+        <!--CPU-LLC-DDR BWMON - Set sample_ms 16 -->
+        <!--CPU-LLC-DDR BWMON - Set io_percent 100 -->
+        <!--CPU-LLC-DDR BWMON - Set hyst_length hist memory 0 -->
+        <!--CPU-LLC-DDR BWMON - Set min_freq 1555 -->
+        <!--L CPU max freq 1075000 -->
+        <!--L CPU - Disable schedutil PL -->
+        <!--B CPU - Disable schedutil PL -->
+        <!--B CPU - Set hispeed load 99 -->
+        <!--UPMIGRATE - 35 85-->
+        <!--DOWNMIGRATE - 30 85-->
+        <!--B CPU - Disable Core Control -->
+        <!--AB_SCALE - 50-->
+        <Config
+            Id="0x00001332" Enable="true" Timeout="0" Target="crow"
+            Resources="0x4183C000, 0x10, 0x41834000, 0x64, 0x41838000, 0, 0x41848000, 0xE3C88, 0x43034000, 0x10,
+            0x43020000, 0x64, 0x43024000, 0, 0x4303C000, 0x17BA38,  0x40804100, 0x433, 0x41444100, 0, 0x41444000, 0, 0x41440000, 0x63,
+            0x40CE0000, 0x0023001E, 0x40CE0200, 0x00550055, 0x41008000, 0, 0x43048000, 0x32"/>
+
+        <!-- camera HFR -->
+        <!--CPU-LLC BWMON - Set sample_ms 16 -->
+        <!--CPU-LLC BWMON - Set io_percent 100 -->
+        <!--CPU-LLC BWMON - Set hyst_length hist memory 0 -->
+        <!--CPU-LLC BWMON - Set max freq 933mhz -->
+        <!--CPU-LLC-DDR BWMON - Set sample_ms 16 -->
+        <!--CPU-LLC-DDR BWMON - Set io_percent 100 -->
+        <!--CPU-LLC-DDR BWMON - Set hyst_length hist memory 0 -->
+        <!--CPU-LLC-DDR BWMON - Set min_freq 1555 -->
+        <!--L CPU max freq 1075000 -->
+        <!--L CPU - Disable schedutil PL -->
+        <!--B CPU - Disable schedutil PL -->
+        <!--B CPU - Set hispeed load 99 -->
+        <!--UPMIGRATE - 35 85-->
+        <!--DOWNMIGRATE - 30 85-->
+        <!--B CPU - Disable Core Control -->
+        <Config
+            Id="0x00001333" Enable="true" Timeout="0" Target="crow"
+            Resources="0x4183C000, 0x10, 0x41834000, 0x64, 0x41838000, 0, 0x41848000, 0xE3C88, 0x43034000, 0x10,
+            0x43020000, 0x64, 0x43024000, 0, 0x4303C000, 0x17BA38,  0x40804100, 0x433, 0x41444100, 0, 0x41444000, 0, 0x41440000, 0x63,
+            0x40CE0000, 0x0023001E, 0x40CE0200, 0x00550055, 0x41008000, 0"/>
+
+        <!--video encode HFR 480 fps-->
+        <!-- MPCTLV3_ALL_CPUS_PWR_CLPS_DIS, 0x1 -->
+        <!-- MPCTLV3_SCHED_BOOST, 0x1 -->
+        <!-- MPCTLV3_MAX_FREQ_CLUSTER_BIG_CORE_0, 0xFFF -->
+        <!-- MPCTLV3_MIN_FREQ_CLUSTER_BIG_CORE_0, 0xFFF -->
+        <!-- MPCTLV3_MAX_FREQ_CLUSTER_LITTLE_CORE_0, 0xFFF -->
+        <!-- MPCTLV3_MIN_FREQ_CLUSTER_LITTLE_CORE_0, 0xFFF -->
+        <!-- MPCTLV3_MIN_FREQ_CLUSTER_PLUS_CORE_0, 0xFFF -->
+        <!-- MPCTLV3_MAX_FREQ_CLUSTER_PLUS_CORE_0, 0xFFF -->
+        <Config
+            Id="0x00001334" Enable="true" Timeout="0" Target="crow"
+            Resources="0x40400000, 0x1, 0x40800100, 0x40C, 0x40800000, 0x4CC, 0x40C20000, 0x14,
+            0x40C1C000, 0x1E, 0x41820000, 0x0A, 0x41808000, 0x50, 0x4180C000, 0"/>
+
+        <!-- same settings for all the qvr power levels intentionally -->
+        <!-- qvr level cpu1 gpu1 -->
+        <!-- Prime CPU - Cluster min freq ~.768 Ghz -->
+        <!-- Prime CPU - Cluster max freq ~.2.4 Ghz -->
+        <!-- B CPU - Cluster min freq ~.652 Ghz -->
+        <!-- B CPU - Cluster max freq ~.2.208 Ghz -->
+        <!-- L CPU - Cluster min freq ~.614 Ghz -->
+        <!-- L CPU - Cluster max freq ~1.075 Ghz -->
+        <!-- GPU - min pwrlevel 4 (freq 285 Mhz) -->
+        <!-- GPU - max pwrlevel 0 (freq 540 Mhz) -->
+        <!-- Min Big CPUs 2 -->
+        <!-- Idefinite Duration -->
+        <Config
+            Id="0x0000130A" Enable="true" Target="crow" Timeout="0"
+            Resources="0x40800200, 0x300, 0x40804200, 0x960, 0x40800000, 0x28C,
+            0x40804000, 0x8A0, 0x40800100, 0x266, 0x40804100, 0x433,
+            0x42804000, 0x4, 0x42808000, 0x0, 0x41000000, 0x2"/>
+
+        <!-- qvr level cpu1 gpu2 -->
+        <!-- Prime CPU - Cluster min freq ~.768 Ghz -->
+        <!-- Prime CPU - Cluster max freq ~.2.4 Ghz -->
+        <!-- B CPU - Cluster min freq ~.652 Ghz -->
+        <!-- B CPU - Cluster max freq ~.2.208 Ghz -->
+        <!-- L CPU - Cluster min freq ~.614 Ghz -->
+        <!-- L CPU - Cluster max freq ~1.075 Ghz -->
+        <!-- GPU - min pwrlevel 4 (freq 285 Mhz) -->
+        <!-- GPU - max pwrlevel 0 (freq 540 Mhz) -->
+        <!-- Min Big CPUs 2 -->
+        <!-- Idefinite Duration -->
+        <Config
+            Id="0x0000130B" Enable="true" Target="crow" Timeout="0"
+            Resources="0x40800200, 0x300, 0x40804200, 0x960, 0x40800000, 0x28C,
+            0x40804000, 0x8A0, 0x40800100, 0x266, 0x40804100, 0x433,
+            0x42804000, 0x4, 0x42808000, 0x0, 0x41000000, 0x2"/>
+
+        <!-- qvr level cpu1 gpu3 -->
+        <!-- Prime CPU - Cluster min freq ~.768 Ghz -->
+        <!-- Prime CPU - Cluster max freq ~.2.4 Ghz -->
+        <!-- B CPU - Cluster min freq ~.652 Ghz -->
+        <!-- B CPU - Cluster max freq ~2.208 Ghz -->
+        <!-- L CPU - Cluster min freq ~.614 Ghz -->
+        <!-- L CPU - Cluster max freq ~1.075 Ghz -->
+        <!-- GPU - min pwrlevel 4 (freq 285 Mhz) -->
+        <!-- GPU - max pwrlevel 0 (freq 540 Mhz) -->
+        <!-- Min Big CPUs 2 -->
+        <!-- Idefinite Duration -->
+        <Config
+            Id="0x0000130C" Enable="true" Target="crow" Timeout="0"
+            Resources="0x40800200, 0x300, 0x40804200, 0x960, 0x40800000, 0x28C,
+            0x40804000, 0x8A0, 0x40800100, 0x266, 0x40804100, 0x433,
+            0x42804000, 0x4, 0x42808000, 0x0, 0x41000000, 0x2"/>
+
+        <!-- qvr level cpu2 gpu1 -->
+        <!-- Prime CPU - Cluster min freq ~.768 Ghz -->
+        <!-- Prime CPU - Cluster max freq ~.2.4 Ghz -->
+        <!-- B CPU - Cluster min freq ~.652 Ghz -->
+        <!-- B CPU - Cluster max freq ~.2.208 Ghz -->
+        <!-- L CPU - Cluster min freq ~.614 Ghz -->
+        <!-- L CPU - Cluster max freq ~1.075 Ghz -->
+        <!-- GPU - min pwrlevel 4 (freq 285 Mhz) -->
+        <!-- GPU - max pwrlevel 0 (freq 540 Mhz) -->
+        <!-- Min Big CPUs 2 -->
+        <!-- Idefinite Duration -->
+        <Config
+            Id="0x0000130D" Enable="true" Target="crow" Timeout="0"
+            Resources="0x40800200, 0x300, 0x40804200, 0x960, 0x40800000, 0x28C,
+            0x40804000, 0x8A0, 0x40800100, 0x266, 0x40804100, 0x433,
+            0x42804000, 0x4, 0x42808000, 0x0, 0x41000000, 0x2"/>
+
+        <!-- qvr level cpu2 gpu2 -->
+        <!-- Prime CPU - Cluster min freq ~.768 Ghz -->
+        <!-- Prime CPU - Cluster max freq ~.2.4 Ghz -->
+        <!-- B CPU - Cluster min freq ~.652 Ghz -->
+        <!-- B CPU - Cluster max freq ~.2.208 Ghz -->
+        <!-- L CPU - Cluster min freq ~.614 Ghz -->
+        <!-- L CPU - Cluster max freq ~1.075 Ghz -->
+        <!-- GPU - min pwrlevel 4 (freq 285 Mhz) -->
+        <!-- GPU - max pwrlevel 0 (freq 540 Mhz) -->
+        <!-- Min Big CPUs 2 -->
+        <!-- Idefinite Duration -->
+        <Config
+            Id="0x0000130E" Enable="true" Target="crow" Timeout="0"
+            Resources="0x40800200, 0x300, 0x40804200, 0x960, 0x40800000, 0x28C,
+            0x40804000, 0x8A0, 0x40800100, 0x266, 0x40804100, 0x433,
+            0x42804000, 0x4, 0x42808000, 0x0, 0x41000000, 0x2"/>
+
+        <!-- qvr level cpu2 gpu3 -->
+        <!-- Prime CPU - Cluster min freq ~.768 Ghz -->
+        <!-- Prime CPU - Cluster max freq ~.2.4 Ghz -->
+        <!-- B CPU - Cluster min freq ~.652 Ghz -->
+        <!-- B CPU - Cluster max freq ~.2.208 Ghz -->
+        <!-- L CPU - Cluster min freq ~.614 Ghz -->
+        <!-- L CPU - Cluster max freq ~1.075 Ghz -->
+        <!-- GPU - min pwrlevel 4 (freq 285 Mhz) -->
+        <!-- GPU - max pwrlevel 0 (freq 540 Mhz) -->
+        <!-- Min Big CPUs 2 -->
+        <!-- Idefinite Duration -->
+        <Config
+            Id="0x0000130F" Enable="true" Target="crow" Timeout="0"
+            Resources="0x40800200, 0x300, 0x40804200, 0x960, 0x40800000, 0x28C,
+            0x40804000, 0x8A0, 0x40800100, 0x266, 0x40804100, 0x433,
+            0x42804000, 0x4, 0x42808000, 0x0, 0x41000000, 0x2"/>
+
+        <!-- qvr level cpu3 gpu1 -->
+        <!-- Prime CPU - Cluster min freq ~.768 Ghz -->
+        <!-- Prime CPU - Cluster max freq ~.2.4 Ghz -->
+        <!-- B CPU - Cluster min freq ~.652 Ghz -->
+        <!-- B CPU - Cluster max freq ~.2.208 Ghz -->
+        <!-- L CPU - Cluster min freq ~.614 Ghz -->
+        <!-- L CPU - Cluster max freq ~1.075 Ghz -->
+        <!-- GPU - min pwrlevel 4 (freq 285 Mhz) -->
+        <!-- GPU - max pwrlevel 0 (freq 540 Mhz) -->
+        <!-- Min Big CPUs 2 -->
+        <!-- Idefinite Duration -->
+        <Config
+            Id="0x00001310" Enable="true" Target="crow" Timeout="0"
+            Resources="0x40800200, 0x300, 0x40804200, 0x960, 0x40800000, 0x28C,
+            0x40804000, 0x8A0, 0x40800100, 0x266, 0x40804100, 0x433,
+            0x42804000, 0x4, 0x42808000, 0x0, 0x41000000, 0x2"/>
+
+        <!-- qvr level cpu3 gpu2 -->
+        <!-- Prime CPU - Cluster min freq ~.768 Ghz -->
+        <!-- Prime CPU - Cluster max freq ~.2.4 Ghz -->
+        <!-- B CPU - Cluster min freq ~.652 Ghz -->
+        <!-- B CPU - Cluster max freq ~.2.208 Ghz -->
+        <!-- L CPU - Cluster min freq ~.614 Ghz -->
+        <!-- L CPU - Cluster max freq ~1.075 Ghz -->
+        <!-- GPU - min pwrlevel 4 (freq 285 Mhz) -->
+        <!-- GPU - max pwrlevel 0 (freq 540 Mhz) -->
+        <!-- Min Big CPUs 2 -->
+        <!-- Idefinite Duration -->
+        <Config
+            Id="0x00001311" Enable="true" Target="crow" Timeout="0"
+            Resources="0x40800200, 0x300, 0x40804200, 0x960, 0x40800000, 0x28C,
+            0x40804000, 0x8A0, 0x40800100, 0x266, 0x40804100, 0x433,
+            0x42804000, 0x4, 0x42808000, 0x0, 0x41000000, 0x2"/>
+
+        <!-- qvr level cpu3 gpu3 -->
+        <!-- Prime CPU - Cluster min freq ~.768 Ghz -->
+        <!-- Prime CPU - Cluster max freq ~.2.4 Ghz -->
+        <!-- B CPU - Cluster min freq ~.652 Ghz -->
+        <!-- B CPU - Cluster max freq ~.2.208 Ghz -->
+        <!-- L CPU - Cluster min freq ~.614 Ghz -->
+        <!-- L CPU - Cluster max freq ~1.075 Ghz -->
+        <!-- GPU - min pwrlevel 4 (freq 285 Mhz) -->
+        <!-- GPU - max pwrlevel 0 (freq 540 Mhz) -->
+        <!-- Min Big CPUs 2 -->
+        <!-- Idefinite Duration -->
+        <Config
+            Id="0x00001312" Enable="true" Target="crow" Timeout="0"
+            Resources="0x40800200, 0x300, 0x40804200, 0x960, 0x40800000, 0x28C,
+            0x40804000, 0x8A0, 0x40800100, 0x266, 0x40804100, 0x433,
+            0x42804000, 0x4, 0x42808000, 0x0, 0x41000000, 0x2"/>
+
+        <!-- sustained performance -->
+        <!-- Prime CPU - Cluster min freq uncapped -->
+        <!-- B CPU - Cluster min freq uncapped -->
+        <!-- L CPU - Cluster min freq uncapped -->
+        <!-- Prime CPU - Cluster max freq ~940Mhz -->
+        <!-- B CPU - Cluster max freq ~1.382 GHz -->
+        <!-- L CPU - Cluster max freq ~1.075 Ghz -->
+        <!-- GPU - min freq 285Mhz -->
+        <!-- GPU - max freq 443Mhz -->
+        <!-- GPUBW freq uncapped -->
+        <Config
+            Id="0x00001206" Enable="true" Timeout="0" Target="crow"
+            Resources="0x40800200, 0x0, 0x40800000, 0x0, 0x40800100, 0x0, 0x40804200, 0x3AC,
+            0x40804000, 0x566, 0x40804100, 0x433, 0X4280C000, 0x11D, 0X42810000, 0x1BB,
+            0x42814000, 0x0"/>
+
+        <!-- vr mode -->
+        <!-- Prime CPU - Cluster min freq ~940 Mhz -->
+        <!-- B CPU - Cluster min freq ~1.132 Ghz -->
+        <!-- L CPU - Cluster min freq ~0.902 Ghz -->
+        <!-- Prime CPU - Cluster max freq ~2.169 Ghz -->
+        <!-- B CPU - Cluster max freq ~1.804 Ghz -->
+        <!-- L CPU - Cluster max freq ~1.651 Ghz -->
+        <!-- GPU - min freq 285Mhz -->
+        <!-- GPU - max freq 540Mhz -->
+        <!-- GPUBW uncapped -->
+        <Config
+            Id="0x00001207" Enable="true" Timeout="0" Target="crow"
+            Resources="0x40800200, 0x3AC, 0x40800000, 0x46C, 0x40800100, 0x386, 0x40804200, 0x879,
+            0x40804000, 0x70C, 0x40804100, 0x673, 0X4280C000, 0x11D, 0X4280C000, 0x21C,
+            0x42814000, 0x0"/>
+
+        <!-- vr mode sustained performance -->
+        <!-- Prime CPU - Cluster min freq ~940 Mhz -->
+        <!-- B CPU - Cluster min freq ~1.132 Ghz -->
+        <!-- L CPU - Cluster min freq ~1.075 Ghz -->
+        <!-- Prime CPU - Cluster max freq ~940 Mhz -->
+        <!-- B CPU - Cluster max freq ~1.132 Ghz -->
+        <!-- L CPU - Cluster max freq ~1.075 Ghz -->
+        <!-- GPU - min freq 443Mhz -->
+        <!-- GPU - max freq 443Mhz -->
+        <!-- GPUBW uncapped  -->
+        <Config
+            Id="0x00001301" Enable="true" Timeout="0" Target="crow"
+            Resources="0x40800200, 0x3AC, 0x40800000, 0x46C, 0x40800100, 0x433, 0x40804200, 0x3AC,
+            0x40804000, 0x46C, 0x40804100, 0x433, 0X4280C000, 0x1BB, 0X42810000, 0x1BB,
+            0x42814000, 0x0"/>
+
+        <!-- camera open tunings-->
+        <!-- MPCTLV3_ALL_CPUS_PWR_CLPS_DIS, 0x1 -->
+        <!-- MPCTLV3_SCHED_BOOST, 0x1 -->
+        <!-- MPCTLV3_MAX_FREQ_CLUSTER_BIG_CORE_0, ~1.804 Ghz -->
+        <!-- MPCTLV3_MIN_FREQ_CLUSTER_BIG_CORE_0, ~1.804 Ghz -->
+        <!-- MPCTLV3_MAX_FREQ_CLUSTER_LITTLE_CORE_0, ~1.651 Ghz -->
+        <!-- MPCTLV3_MIN_FREQ_CLUSTER_LITTLE_CORE_0, ~1.651 Ghz -->
+        <!-- MPCTLV3_MIN_FREQ_CLUSTER_PLUS_CORE_0, ~2.169 Ghz -->
+        <!-- MPCTLV3_MAX_FREQ_CLUSTER_PLUS_CORE_0, ~2.169 Ghz-->
+        <!-- CPU-LLC BWMON - Set max freq 933mhz -->
+        <Config
+            Id="0x00001337" Enable="true" Timeout="0" Target="crow"
+            Resources="0x40400000, 0x1, 0x40C00000, 0x1, 0x40804000, 0X70C, 0x40800000, 0X70C,
+            0x40804100, 0X673, 0x40800100, 0X673, 0x40800200, 0X879, 0x40804200, 0X879,
+            0x41848000, 0xE3C88"/>
+
+        <!-- camera close tunings-->
+        <!-- MPCTLV3_ALL_CPUS_PWR_CLPS_DIS, 0x1 -->
+        <!-- MPCTLV3_MAX_FREQ_CLUSTER_BIG_CORE_0,  ~1.804 Ghz -->
+        <!-- MPCTLV3_MIN_FREQ_CLUSTER_BIG_CORE_0, ~1.804 Ghz -->
+        <!-- MPCTLV3_MAX_FREQ_CLUSTER_LITTLE_CORE_0, ~1.651 Ghz -->
+        <!-- MPCTLV3_MIN_FREQ_CLUSTER_LITTLE_CORE_0, ~1.651 Ghz -->
+        <!-- MPCTLV3_MIN_FREQ_CLUSTER_PLUS_CORE_0, ~2.169 Ghz -->
+        <!-- MPCTLV3_MAX_FREQ_CLUSTER_PLUS_CORE_0, ~2.169 Ghz -->
+        <!-- CPU-LLC BWMON - Set max freq 933mhz -->
+         <Config
+            Id="0x00001338" Enable="true" Timeout="0" Target="crow"
+            Resources="0x40400000, 0x1, 0x40804000, 0X70C, 0x40800000, 0X70C,
+            0x40804100, 0X673, 0x40800100, 0X673, 0x40800200, 0X879, 0x40804200, 0X879,
+            0x41848000, 0xE3C88"/>
+
+         <!-- camera snapshot tunings-->
+         <!-- MPCTLV3_ALL_CPUS_PWR_CLPS_DIS, 0x1 -->
+         <!-- Silver cluster min freq to ~1.075 GHz -->
+         <!-- Gold cluster min freq to 1.113 GHz -->
+         <!-- MPCTLV3_SCHED_DOWNMIGRATE, 0x14 -->
+         <!-- MPCTLV3_SCHED_UPMIGRATE, 0x1E -->
+         <!-- CPU-LLC BWMON - Set max freq 933mhz -->
+         <Config
+            Id="0x00001339" Enable="true" Timeout="0" Target="crow"
+            Resources="0x40400000, 0x1, 0x40800100, 0x433, 0x40800000, 0x459, 0x40CE0000, 0x001E0014,
+            0x41848000, 0xE3C88"/>
+    </Powerhint>
+</HintConfigs>
diff --git a/config/kalama/powerhint.xml b/config/kalama/powerhint.xml
old mode 100755
new mode 100644
index c571150..0d7aec7
--- a/config/kalama/powerhint.xml
+++ b/config/kalama/powerhint.xml
@@ -258,7 +258,7 @@
         <Config
             Id="0x00001330" Enable="true" Timeout="0" Target="kalama"
             Resources="0x4183C000, 0x21, 0x41834000, 0x64, 0x41838000, 0, 0x43034000, 0x21,
-            0x43020000, 0x64, 0x43024000, 0, 0x41444100, 0, 0x41440100, 0x63, 0x40804100, 0x2D9, 0x41008000, 0, 0x41008100, 0, 0x41008200, 0"/>
+            0x43020000, 0x64, 0x43024000, 0, 0x41444100, 0, 0x41440100, 0x63, 0x40804100, 0x339, 0x41008000, 0, 0x41008100, 0, 0x41008200, 0"/>
 
         <!--camera 30fps-->
         <!--CPU-LLC BWMON - Set sample_ms 33 -->
@@ -277,11 +277,13 @@
         <!--B CPU - Disable Core Control -->
         <!--L CPU - Disable Core Control -->
         <!--P CPU - Disable Core Control -->
+        <!--SCHED_IDLE_ENOUGH Set 0 -->
+        <!--L CPU - Set hispeed freq 556800 -->
         <Config
             Id="0x00001331" Enable="true" Timeout="0" Target="kalama"
             Resources="0x4183C000, 0x21, 0x41834000, 0x64, 0x41838000, 0, 0x43034000, 0x21,
             0x43020000, 0x64, 0x43024000, 0, 0x4303C000, 0x858B8 ,0x40804100, 0x459, 0x41444100, 0, 0x41444000, 0, 0x41440000, 0x63,
-            0x40CE0000, 0x0032000A, 0x40CE0200, 0x00550055, 0x41008000, 0, 0x41008100, 0, 0x41008200, 0"/>
+            0x40CE0000, 0x0032000A, 0x40CE0200, 0x00550055, 0x41008000, 0, 0x41008100, 0, 0x41008200, 0, 0x43C0C000, 0, 0x4143C100, 0x22C"/>
 
         <!--camera 60fps-->
         <!--CPU-LLC BWMON - Set sample_ms 16 -->
@@ -300,10 +302,35 @@
         <!--B CPU - Disable Core Control -->
         <!--L CPU - Disable Core Control -->
         <!--P CPU - Disable Core Control -->
+        <!--SCHED_IDLE_ENOUGH Set 0 -->
+        <!--L CPU - Set hispeed freq 556800 -->
         <Config
             Id="0x00001332" Enable="true" Timeout="0" Target="kalama"
             Resources="0x4183C000, 0x10, 0x41834000, 0x64, 0x41838000, 0, 0x43034000, 0x10,
             0x43020000, 0x64, 0x43024000, 0, 0x4303C000, 0x17BA38,  0x40804100, 0x459, 0x41444100, 0, 0x41444000, 0, 0x41440000, 0x63,
+            0x40CE0000, 0x0032000A, 0x40CE0200, 0x00550055, 0x41008000, 0, 0x41008100, 0, 0x41008200, 0, 0x43C0C000, 0, 0x4143C100, 0x22C"/>
+
+        <!--camera HFR 120/240 fps-->
+        <!--CPU-LLC BWMON - Set sample_ms 16 -->
+        <!--CPU-LLC BWMON - Set io_percent 100 -->
+        <!--CPU-LLC BWMON - Set hyst_length hist memory 0 -->
+        <!--CPU-LLC-DDR BWMON - Set sample_ms 16 -->
+        <!--CPU-LLC-DDR BWMON - Set io_percent 100 -->
+        <!--CPU-LLC-DDR BWMON - Set hyst_length hist memory 0 -->
+        <!--CPU-LLC-DDR BWMON - Set min_freq 1555 -->
+        <!--L CPU max freq 1113600 -->
+        <!--L CPU - Disable schedutil PL -->
+        <!--B CPU - Disable schedutil PL -->
+        <!--B CPU - Set hispeed load 99 -->
+        <!--UPMIGRATE - 50 85-->
+        <!--DOWNMIGRATE - 10 85-->
+        <!--B CPU - Disable Core Control -->
+        <!--L CPU - Disable Core Control -->
+        <!--P CPU - Disable Core Control -->
+        <Config
+            Id="0x00001333" Enable="true" Timeout="0" Target="kalama"
+            Resources="0x4183C000, 0x10, 0x41834000, 0x64, 0x41838000, 0, 0x43034000, 0x10,
+            0x43020000, 0x64, 0x43024000, 0, 0x4303C000, 0x17BA38,  0x40804100, 0x459, 0x41444100, 0, 0x41444000, 0, 0x41440000, 0x63,
             0x40CE0000, 0x0032000A, 0x40CE0200, 0x00550055, 0x41008000, 0, 0x41008100, 0, 0x41008200, 0"/>
 
         <!--camera 8k30-->
@@ -322,11 +349,13 @@
         <!--B CPU - Disable Core Control -->
         <!--L CPU - Disable Core Control -->
         <!--P CPU - Disable Core Control -->
+        <!--SCHED_IDLE_ENOUGH Set 0 -->
+        <!--L CPU - Set hispeed freq 556800 -->
         <Config
             Id="0x00001335" Enable="true" Timeout="0" Target="kalama"
             Resources="0x4183C000, 0x21, 0x41834000, 0x64, 0x41838000, 0, 0x43034000, 0x21,
             0x43020000, 0x64, 0x43024000, 0, 0x40804100, 0x459, 0x41444100, 0, 0x41444000, 0, 0x41440000, 0x63,
-            0x40CE0000, 0x0028000A, 0x40CE0200, 0x00550055, 0x41008000, 0, 0x41008100, 0, 0x41008200, 0"/>
+            0x40CE0000, 0x0028000A, 0x40CE0200, 0x00550055, 0x41008000, 0, 0x41008100, 0, 0x41008200, 0, 0x43C0C000, 0, 0x4143C100, 0x22C"/>
 
         <!--video encode HFR 480 fps-->
         <!-- MPCTLV3_ALL_CPUS_PWR_CLPS_DIS, 0x1 -->
@@ -354,7 +383,7 @@
         <Config
             Id="0x00001337" Enable="true" Timeout="0" Target="kalama"
             Resources="0x40400000, 0x1, 0x40C00000, 0x1, 0x40804000, 0X687, 0x40800000, 0X687,
-            0x40804100, 0X660, 0x40800100, 0X660, 0x40800200, 0X7E0, 0x40804200, 0X7E0"/>
+            0x40804100, 0X660, 0x40800100, 0X660, 0x40800200, 0X8C6, 0x40804200, 0X8C6"/>
 
         <!-- camera close tunings-->
         <!-- MPCTLV3_ALL_CPUS_PWR_CLPS_DIS, 0x1 -->
@@ -368,7 +397,7 @@
         <Config
             Id="0x00001338" Enable="true" Timeout="0" Target="kalama"
             Resources="0x40400000, 0x1, 0x40C00000, 0x1, 0x40804000, 0X687, 0x40800000, 0X687,
-            0x40804100, 0X660, 0x40800100, 0X660, 0x40800200, 0X7E0, 0x40804200, 0X7E0"/>
+            0x40804100, 0X660, 0x40800100, 0X660, 0x40800200, 0X8C6, 0x40804200, 0X8C6"/>
 
         <!-- camera snapshot tunings-->
         <!-- MPCTLV3_ALL_CPUS_PWR_CLPS_DIS, 0x1 -->
diff --git a/config/pineapple/powerhint.xml b/config/pineapple/powerhint.xml
new file mode 100644
index 0000000..a4d8fe7
--- /dev/null
+++ b/config/pineapple/powerhint.xml
@@ -0,0 +1,403 @@
+<?xml version="1.0" encoding="utf-8" ?>
+
+<!--
+/* Copyright (c) 2023 Qualcomm Innovation Center, Inc. All rights reserved.
+ * SPDX-License-Identifier: BSD-3-Clause-Clear
+ */
+-->
+<HintConfigs>
+    <Powerhint>
+        <!--video encode 30 fps-->
+        <Config
+            Id="0x00001203" Enable="true" Target="pineapple"
+            Resources="" />
+
+        <!--sustained performance-->
+        <Config
+            Id="0x00001206" Enable="true" Target="pineapple"
+            Resources=""/>
+
+        <!--vr mode-->
+        <Config
+            Id="0x00001207" Enable="true" Target="pineapple"
+            Resources=""/>
+
+        <!--vr mode sustained performance-->
+        <Config
+            Id="0x00001301" Enable="true" Target="pineapple"
+            Resources=""/>
+
+        <!-- qvr level cpu1 gpu1 -->
+        <!-- B CPU - Cluster min freq ~.902 Ghz -->
+        <!-- B CPU - Cluster max freq ~.2.092 Ghz -->
+        <!-- L CPU - Cluster min freq ~. 595 Ghz -->
+        <!-- L CPU - Cluster max freq ~1.286 Ghz -->
+        <!-- P CPU - PRIME CPU min freq ~.921 Ghz-->
+        <!-- P CPU - PRIME CPU max freq ~2.112 Ghz -->
+        <!-- GPU - min pwrlevel 9 (freq 315 Mhz) -->
+        <!-- GPU - max pwrlevel 5 (freq 540 Mhz) -->
+        <!-- Min Big CPUs 3 -->
+        <!-- Min Prime CPUs 1 -->
+        <!-- Indefinite Duration -->
+        <Config
+            Id="0x0000130A" Enable="true" Target="pineapple" Timeout="0"
+            Resources="0x40800000, 0x386, 0x40804000, 0x82C, 0x40800100, 0x253, 0x40804100, 0x506,
+            0x40800200, 0x399, 0x40804200, 0x840, 0x42804000, 0x9, 0x42808000, 0x5, 0x41000000, 0x3,
+            0x41000200, 0x1"/>
+
+        <!-- qvr level cpu1 gpu2 -->
+        <!-- B CPU - Cluster min freq ~.902 Ghz -->
+        <!-- B CPU - Cluster max freq ~.2.092 Ghz -->
+        <!-- L CPU - Cluster min freq ~. 595 Ghz -->
+        <!-- L CPU - Cluster max freq ~1.286 Ghz -->
+        <!-- P CPU - PRIME CPU min freq ~.921 Ghz-->
+        <!-- P CPU - PRIME CPU max freq ~2.112 Ghz -->
+        <!-- GPU - min pwrlevel 9 (freq 315 Mhz) -->
+        <!-- GPU - max pwrlevel 5 (freq 540 Mhz) -->
+        <!-- Min Big CPUs 3 -->
+        <!-- Min Prime CPUs 1 -->
+        <!-- Indefinite Duration -->
+        <Config
+            Id="0x0000130B" Enable="true" Target="pineapple" Timeout="0"
+            Resources="0x40800000, 0x386, 0x40804000, 0x82C, 0x40800100, 0x253, 0x40804100, 0x506,
+            0x40800200, 0x399, 0x40804200, 0x840, 0x42804000, 0x9, 0x42808000, 0x5, 0x41000000, 0x3,
+            0x41000200, 0x1"/>
+
+        <!-- qvr level cpu1 gpu3 -->
+        <!-- B CPU - Cluster min freq ~.902 Ghz -->
+        <!-- B CPU - Cluster max freq ~.2.092 Ghz -->
+        <!-- L CPU - Cluster min freq ~. 595 Ghz -->
+        <!-- L CPU - Cluster max freq ~1.286 Ghz -->
+        <!-- P CPU - PRIME CPU min freq ~.921 Ghz-->
+        <!-- P CPU - PRIME CPU max freq ~2.112 Ghz -->
+        <!-- GPU - min pwrlevel 9 (freq 315 Mhz) -->
+        <!-- GPU - max pwrlevel 5 (freq 540 Mhz) -->
+        <!-- Min Big CPUs 3 -->
+        <!-- Min Prime CPUs 1 -->
+        <!-- Indefinite Duration -->
+        <Config
+            Id="0x0000130C" Enable="true" Target="pineapple" Timeout="0"
+            Resources="0x40800000, 0x386, 0x40804000, 0x82C, 0x40800100, 0x253, 0x40804100, 0x506,
+            0x40800200, 0x399, 0x40804200, 0x840, 0x42804000, 0x9, 0x42808000, 0x5, 0x41000000, 0x3,
+            0x41000200, 0x1"/>
+
+        <!-- qvr level cpu2 gpu1 -->
+        <!-- B CPU - Cluster min freq ~.902 Ghz -->
+        <!-- B CPU - Cluster max freq ~.2.092 Ghz -->
+        <!-- L CPU - Cluster min freq ~. 595 Ghz -->
+        <!-- L CPU - Cluster max freq ~1.286 Ghz -->
+        <!-- P CPU - PRIME CPU min freq ~.921 Ghz-->
+        <!-- P CPU - PRIME CPU max freq ~2.112 Ghz -->
+        <!-- GPU - min pwrlevel 9 (freq 315 Mhz) -->
+        <!-- GPU - max pwrlevel 5 (freq 540 Mhz) -->
+        <!-- Min Big CPUs 3 -->
+        <!-- Min Prime CPUs 1 -->
+        <!-- Indefinite Duration -->
+        <Config
+            Id="0x0000130D" Enable="true" Target="pineapple" Timeout="0"
+            Resources="0x40800000, 0x386, 0x40804000, 0x82C, 0x40800100, 0x253, 0x40804100, 0x506,
+            0x40800200, 0x399, 0x40804200, 0x840, 0x42804000, 0x9, 0x42808000, 0x5, 0x41000000, 0x3,
+            0x41000200, 0x1"/>
+
+        <!-- qvr level cpu2 gpu2 -->
+        <!-- B CPU - Cluster min freq ~.902 Ghz -->
+        <!-- B CPU - Cluster max freq ~.2.092 Ghz -->
+        <!-- L CPU - Cluster min freq ~. 595 Ghz -->
+        <!-- L CPU - Cluster max freq ~1.286 Ghz -->
+        <!-- P CPU - PRIME CPU min freq ~.921 Ghz-->
+        <!-- P CPU - PRIME CPU max freq ~2.112 Ghz -->
+        <!-- GPU - min pwrlevel 9 (freq 315 Mhz) -->
+        <!-- GPU - max pwrlevel 5 (freq 540 Mhz) -->
+        <!-- Min Big CPUs 3 -->
+        <!-- Min Prime CPUs 1 -->
+        <!-- Indefinite Duration -->
+        <Config
+            Id="0x0000130E" Enable="true" Target="pineapple" Timeout="0"
+            Resources="0x40800000, 0x386, 0x40804000, 0x82C, 0x40800100, 0x253, 0x40804100, 0x506,
+            0x40800200, 0x399, 0x40804200, 0x840, 0x42804000, 0x9, 0x42808000, 0x5, 0x41000000, 0x3,
+            0x41000200, 0x1"/>
+
+        <!-- qvr level cpu2 gpu3 -->
+        <!-- B CPU - Cluster min freq ~.902 Ghz -->
+        <!-- B CPU - Cluster max freq ~.2.092 Ghz -->
+        <!-- L CPU - Cluster min freq ~. 595 Ghz -->
+        <!-- L CPU - Cluster max freq ~1.286 Ghz -->
+        <!-- P CPU - PRIME CPU min freq ~.921 Ghz-->
+        <!-- P CPU - PRIME CPU max freq ~2.112 Ghz -->
+        <!-- GPU - min pwrlevel 9 (freq 315 Mhz) -->
+        <!-- GPU - max pwrlevel 5 (freq 540 Mhz) -->
+        <!-- Min Big CPUs 3 -->
+        <!-- Min Prime CPUs 1 -->
+        <!-- Indefinite Duration -->
+        <Config
+            Id="0x0000130F" Enable="true" Target="pineapple" Timeout="0"
+            Resources="0x40800000, 0x386, 0x40804000, 0x82C, 0x40800100, 0x253, 0x40804100, 0x506,
+            0x40800200, 0x399, 0x40804200, 0x840, 0x42804000, 0x9, 0x42808000, 0x5, 0x41000000, 0x3,
+            0x41000200, 0x1"/>
+
+        <!-- qvr level cpu3 gpu1 -->
+        <!-- B CPU - Cluster min freq ~.902 Ghz -->
+        <!-- B CPU - Cluster max freq ~.2.092 Ghz -->
+        <!-- L CPU - Cluster min freq ~. 595 Ghz -->
+        <!-- L CPU - Cluster max freq ~1.286 Ghz -->
+        <!-- P CPU - PRIME CPU min freq ~.921 Ghz-->
+        <!-- P CPU - PRIME CPU max freq ~2.112 Ghz -->
+        <!-- GPU - min pwrlevel 9 (freq 315 Mhz) -->
+        <!-- GPU - max pwrlevel 5 (freq 540 Mhz) -->
+        <!-- Min Big CPUs 3 -->
+        <!-- Min Prime CPUs 1 -->
+        <!-- Indefinite Duration -->
+        <Config
+            Id="0x00001310" Enable="true" Target="pineapple" Timeout="0"
+            Resources="0x40800000, 0x386, 0x40804000, 0x82C, 0x40800100, 0x253, 0x40804100, 0x506,
+            0x40800200, 0x399, 0x40804200, 0x840, 0x42804000, 0x9, 0x42808000, 0x5, 0x41000000, 0x3,
+            0x41000200, 0x1"/>
+
+        <!-- qvr level cpu3 gpu2 -->
+        <!-- B CPU - Cluster min freq ~.902 Ghz -->
+        <!-- B CPU - Cluster max freq ~.2.092 Ghz -->
+        <!-- L CPU - Cluster min freq ~. 595 Ghz -->
+        <!-- L CPU - Cluster max freq ~1.286 Ghz -->
+        <!-- P CPU - PRIME CPU min freq ~.921 Ghz-->
+        <!-- P CPU - PRIME CPU max freq ~2.112 Ghz -->
+        <!-- GPU - min pwrlevel 9 (freq 315 Mhz) -->
+        <!-- GPU - max pwrlevel 5 (freq 540 Mhz) -->
+        <!-- Min Big CPUs 3 -->
+        <!-- Min Prime CPUs 1 -->
+        <!-- Indefinite Duration -->
+        <Config
+            Id="0x00001311" Enable="true" Target="pineapple" Timeout="0"
+            Resources="0x40800000, 0x386, 0x40804000, 0x82C, 0x40800100, 0x253, 0x40804100, 0x506,
+            0x40800200, 0x399, 0x40804200, 0x840, 0x42804000, 0x9, 0x42808000, 0x5, 0x41000000, 0x3,
+            0x41000200, 0x1"/>
+
+        <!-- qvr level cpu3 gpu3 -->
+        <!-- B CPU - Cluster min freq ~.902 Ghz -->
+        <!-- B CPU - Cluster max freq ~.2.092 Ghz -->
+        <!-- L CPU - Cluster min freq ~. 595 Ghz -->
+        <!-- L CPU - Cluster max freq ~1.286 Ghz -->
+        <!-- P CPU - PRIME CPU min freq ~.921 Ghz-->
+        <!-- P CPU - PRIME CPU max freq ~2.112 Ghz -->
+        <!-- GPU - min pwrlevel 9 (freq 315 Mhz) -->
+        <!-- GPU - max pwrlevel 5 (freq 540 Mhz) -->
+        <!-- Min Big CPUs 3 -->
+        <!-- Min Prime CPUs 1 -->
+        <!-- Indefinite Duration -->
+        <Config
+            Id="0x00001312" Enable="true" Target="pineapple" Timeout="0"
+            Resources="0x40800000, 0x386, 0x40804000, 0x82C, 0x40800100, 0x253, 0x40804100, 0x506,
+            0x40800200, 0x399, 0x40804200, 0x840, 0x42804000, 0x9, 0x42808000, 0x5, 0x41000000, 0x3,
+            0x41000200, 0x1"/>
+
+        <!--camera ZSLPreview-->
+        <!--CPU-LLC BWMON - Set sample_ms 33-->
+        <!--CPU-LLC BWMON - Set io_percent 100 -->
+        <!--CPU-LLC BWMON - Set hyst_length hist memory 0 -->
+        <!--CPU-LLC-DDR BWMON - Set sample_ms 33 -->
+        <!--CPU-LLC-DDR BWMON - Set io_percent 100 -->
+        <!--CPU-LLC-DDR BWMON - Set hyst_length hist memory 0 -->
+        <!--L CPU - Disable schedutil PL -->
+        <!--L CPU - Set hispeed load 99 -->
+        <!--L CPU - max freq 729000 -->
+        <!--B CPU - Disable Core Control -->
+        <!--L CPU - Disable Core Control -->
+        <!--P CPU - Disable Core Control -->
+        <Config
+            Id="0x00001330" Enable="true" Timeout="0" Target="pineapple"
+            Resources="0x4183C000, 0x21, 0x41834000, 0x64, 0x41838000, 0, 0x43034000, 0x21,
+            0x43020000, 0x64, 0x43024000, 0, 0x41444100, 0, 0x41440100, 0x63, 0x40804100, 0x339, 0x41008000, 0, 0x41008100, 0, 0x41008200, 0"/>
+
+        <!--camera 30fps-->
+        <!--CPU-LLC BWMON - Set sample_ms 33 -->
+        <!--CPU-LLC BWMON - Set io_percent 100 -->
+        <!--CPU-LLC BWMON - Set hyst_length hist memory 0 -->
+        <!--CPU-LLC-DDR BWMON - Set sample_ms 33 -->
+        <!--CPU-LLC-DDR BWMON - Set io_percent 100 -->
+        <!--CPU-LLC-DDR BWMON - Set hyst_length hist memory 0 -->
+        <!--CPU-LLC-DDR BWMON - Set min_freq 547 -->
+        <!--L CPU max freq 1113600 -->
+        <!--L CPU - Disable schedutil PL -->
+        <!--B CPU - Disable schedutil PL -->
+        <!--B CPU - Set hispeed load 99 -->
+        <!--UPMIGRATE - 50 85 -->
+        <!--DOWNMIGRATE - 10 85 -->
+        <!--B CPU - Disable Core Control -->
+        <!--L CPU - Disable Core Control -->
+        <!--P CPU - Disable Core Control -->
+        <!--SCHED_IDLE_ENOUGH Set 0 -->
+        <!--L CPU - Set hispeed freq 556800 -->
+        <Config
+            Id="0x00001331" Enable="true" Timeout="0" Target="pineapple"
+            Resources="0x4183C000, 0x21, 0x41834000, 0x64, 0x41838000, 0, 0x43034000, 0x21,
+            0x43020000, 0x64, 0x43024000, 0, 0x4303C000, 0x858B8 ,0x40804100, 0x459, 0x41444100, 0, 0x41444000, 0, 0x41440000, 0x63,
+            0x40CE0000, 0x0032000A, 0x40CE0200, 0x00550055, 0x41008000, 0, 0x41008100, 0, 0x41008200, 0, 0x43C0C000, 0, 0x4143C100, 0x22C"/>
+
+        <!--camera 60fps-->
+        <!--CPU-LLC BWMON - Set sample_ms 16 -->
+        <!--CPU-LLC BWMON - Set io_percent 100 -->
+        <!--CPU-LLC BWMON - Set hyst_length hist memory 0 -->
+        <!--CPU-LLC-DDR BWMON - Set sample_ms 16 -->
+        <!--CPU-LLC-DDR BWMON - Set io_percent 100 -->
+        <!--CPU-LLC-DDR BWMON - Set hyst_length hist memory 0 -->
+        <!--CPU-LLC-DDR BWMON - Set min_freq 1555 -->
+        <!--L CPU max freq 1113600 -->
+        <!--L CPU - Disable schedutil PL -->
+        <!--B CPU - Disable schedutil PL -->
+        <!--B CPU - Set hispeed load 99 -->
+        <!--UPMIGRATE - 50 85-->
+        <!--DOWNMIGRATE - 10 85-->
+        <!--B CPU - Disable Core Control -->
+        <!--L CPU - Disable Core Control -->
+        <!--P CPU - Disable Core Control -->
+        <!--SCHED_IDLE_ENOUGH Set 0 -->
+        <!--L CPU - Set hispeed freq 556800 -->
+        <Config
+            Id="0x00001332" Enable="true" Timeout="0" Target="pineapple"
+            Resources="0x4183C000, 0x10, 0x41834000, 0x64, 0x41838000, 0, 0x43034000, 0x10,
+            0x43020000, 0x64, 0x43024000, 0, 0x4303C000, 0x17BA38,  0x40804100, 0x459, 0x41444100, 0, 0x41444000, 0, 0x41440000, 0x63,
+            0x40CE0000, 0x0032000A, 0x40CE0200, 0x00550055, 0x41008000, 0, 0x41008100, 0, 0x41008200, 0, 0x43C0C000, 0, 0x4143C100, 0x22C"/>
+
+        <!--camera HFR 120/240 fps-->
+        <!--CPU-LLC BWMON - Set sample_ms 16 -->
+        <!--CPU-LLC BWMON - Set io_percent 100 -->
+        <!--CPU-LLC BWMON - Set hyst_length hist memory 0 -->
+        <!--CPU-LLC-DDR BWMON - Set sample_ms 16 -->
+        <!--CPU-LLC-DDR BWMON - Set io_percent 100 -->
+        <!--CPU-LLC-DDR BWMON - Set hyst_length hist memory 0 -->
+        <!--CPU-LLC-DDR BWMON - Set min_freq 1555 -->
+        <!--L CPU max freq 1113600 -->
+        <!--L CPU - Disable schedutil PL -->
+        <!--B CPU - Disable schedutil PL -->
+        <!--B CPU - Set hispeed load 99 -->
+        <!--UPMIGRATE - 50 85-->
+        <!--DOWNMIGRATE - 10 85-->
+        <!--B CPU - Disable Core Control -->
+        <!--L CPU - Disable Core Control -->
+        <!--P CPU - Disable Core Control -->
+        <Config
+            Id="0x00001333" Enable="true" Timeout="0" Target="pineapple"
+            Resources="0x4183C000, 0x10, 0x41834000, 0x64, 0x41838000, 0, 0x43034000, 0x10,
+            0x43020000, 0x64, 0x43024000, 0, 0x4303C000, 0x17BA38,  0x40804100, 0x459, 0x41444100, 0, 0x41444000, 0, 0x41440000, 0x63,
+            0x40CE0000, 0x0032000A, 0x40CE0200, 0x00550055, 0x41008000, 0, 0x41008100, 0, 0x41008200, 0"/>
+
+        <!--camera 8k30-->
+        <!--CPU-LLC BWMON - Set sample_ms 33 -->
+        <!--CPU-LLC BWMON - Set io_percent 100 -->
+        <!--CPU-LLC BWMON - Set hyst_length hist memory 0 -->
+        <!--CPU-LLC-DDR BWMON - Set sample_ms 33 -->
+        <!--CPU-LLC-DDR BWMON - Set io_percent 100 -->
+        <!--CPU-LLC-DDR BWMON - Set hyst_length hist memory 0 -->
+        <!--L CPU max freq 1113600 -->
+        <!--L CPU - Disable schedutil PL -->
+        <!--B CPU - Disable schedutil PL -->
+        <!--B CPU - Set hispeed load 99 -->
+        <!--UPMIGRATE - 40 85-->
+        <!--DOWNMIGRATE - 10 85-->
+        <!--B CPU - Disable Core Control -->
+        <!--L CPU - Disable Core Control -->
+        <!--P CPU - Disable Core Control -->
+        <!--SCHED_IDLE_ENOUGH Set 0 -->
+        <!--L CPU - Set hispeed freq 556800 -->
+        <Config
+            Id="0x00001335" Enable="true" Timeout="0" Target="pineapple"
+            Resources="0x4183C000, 0x21, 0x41834000, 0x64, 0x41838000, 0, 0x43034000, 0x21,
+            0x43020000, 0x64, 0x43024000, 0, 0x40804100, 0x459, 0x41444100, 0, 0x41444000, 0, 0x41440000, 0x63,
+            0x40CE0000, 0x0028000A, 0x40CE0200, 0x00550055, 0x41008000, 0, 0x41008100, 0, 0x41008200, 0, 0x43C0C000, 0, 0x4143C100, 0x22C"/>
+
+        <!--video encode HFR 480 fps-->
+        <!-- MPCTLV3_ALL_CPUS_PWR_CLPS_DIS, 0x1 -->
+        <!-- MPCTLV3_MIN_FREQ_CLUSTER_LITTLE_CORE_0, 0x40C -->
+        <!-- MPCTLV3_MIN_FREQ_CLUSTER_BIG_CORE_0, 0x4CC -->
+        <!-- MPCTLV3_SCHED_DOWNMIGRATE, 0x14 -->
+        <!-- MPCTLV3_SCHED_UPMIGRATE, 0x1E -->
+        <!-- MPCTLV3_CPUBW_HWMON_SAMPLE_MS , 0x0A -->
+        <!-- MPCTLV3_CPUBW_HWMON_IO_PERCENT, 0x50 -->
+        <!-- MPCTLV3_CPUBW_HWMON_HYST_OPT, 0 -->
+        <Config
+            Id="0x00001334" Enable="true" Timeout="0" Target="pineapple"
+            Resources="0x40400000, 0x1, 0x40800100, 0x40C, 0x40800000, 0x4CC, 0x40C20000, 0x14,
+            0x40C1C000, 0x1E, 0x41820000, 0x0A, 0x41808000, 0x50, 0x4180C000, 0"/>
+
+        <!-- camera open tunings-->
+        <!-- MPCTLV3_ALL_CPUS_PWR_CLPS_DIS, 0x1 -->
+        <!-- MPCTLV3_SCHED_BOOST, 0x1 -->
+        <!-- MPCTLV3_MAX_FREQ_CLUSTER_BIG_CORE_0, 1671000 -->
+        <!-- MPCTLV3_MIN_FREQ_CLUSTER_BIG_CORE_0, 1671000 -->
+        <!-- MPCTLV3_MAX_FREQ_CLUSTER_LITTLE_CORE_0, 1632000 -->
+        <!-- MPCTLV3_MIN_FREQ_CLUSTER_LITTLE_CORE_0, 1632000 -->
+        <!-- MPCTLV3_MIN_FREQ_CLUSTER_PLUS_CORE_0, 2016000 -->
+        <!-- MPCTLV3_MAX_FREQ_CLUSTER_PLUS_CORE_0, 2016000 -->
+        <Config
+            Id="0x00001337" Enable="true" Timeout="0" Target="pineapple"
+            Resources="0x40400000, 0x1, 0x40C00000, 0x1, 0x40804000, 0X687, 0x40800000, 0X687,
+            0x40804100, 0X660, 0x40800100, 0X660, 0x40800200, 0X8C6, 0x40804200, 0X8C6"/>
+
+        <!-- camera close tunings-->
+        <!-- MPCTLV3_ALL_CPUS_PWR_CLPS_DIS, 0x1 -->
+        <!-- MPCTLV3_SCHED_BOOST, 0x1 -->
+        <!-- MPCTLV3_MAX_FREQ_CLUSTER_BIG_CORE_0, 1632000 -->
+        <!-- MPCTLV3_MIN_FREQ_CLUSTER_BIG_CORE_0, 1632000 -->
+        <!-- MPCTLV3_MAX_FREQ_CLUSTER_LITTLE_CORE_0, 1671000 -->
+        <!-- MPCTLV3_MIN_FREQ_CLUSTER_LITTLE_CORE_0, 1671000 -->
+        <!-- MPCTLV3_MIN_FREQ_CLUSTER_PLUS_CORE_0, 2016000 -->
+        <!-- MPCTLV3_MAX_FREQ_CLUSTER_PLUS_CORE_0, 2016000 -->
+        <Config
+            Id="0x00001338" Enable="true" Timeout="0" Target="pineapple"
+            Resources="0x40400000, 0x1, 0x40C00000, 0x1, 0x40804000, 0X687, 0x40800000, 0X687,
+            0x40804100, 0X660, 0x40800100, 0X660, 0x40800200, 0X8C6, 0x40804200, 0X8C6"/>
+
+        <!-- camera snapshot tunings-->
+        <!-- MPCTLV3_ALL_CPUS_PWR_CLPS_DIS, 0x1 -->
+        <!-- Silver cluster min freq to 1.132GHz -->
+        <!-- Gold cluster min freq to 1.363GHz -->
+        <!-- MPCTLV3_SCHED_DOWNMIGRATE, 0x14 -->
+        <!-- MPCTLV3_SCHED_UPMIGRATE, 0x1E -->
+        <Config
+            Id="0x00001339" Enable="true" Timeout="0" Target="pineapple"
+            Resources="0x40400000, 0x1, 0x40800100, 0x46C, 0x40800000, 0x553, 0x40C20000, 0X14,
+            0x40C1C000, 0X1E"/>
+
+        <!-- decode 240 fps tunings-->
+        <!--L CPU - max freq 700000 -->
+         <Config
+            Id="0X00001505" Enable="true" Timeout="0" Target="pineapple"
+            Resources="0x40804100, 0x2BC"/>
+
+        <!-- video decode 30 fps non secure content tunings-->
+        <!-- MPCTLV3_MIN_FREQ_CLUSTER_BIG_CORE_0, 0XA -->
+        <Config
+            Id="0X00001502" Enable="true" Timeout="0" Target="pineapple"
+            Resources="0x40800000, 0XA"/>
+
+        <!-- video decode 30 fps secure content tunings-->
+        <!-- MPCTLV3_MIN_FREQ_CLUSTER_BIG_CORE_0, 0XA -->
+        <Config
+            Id="0X00001504" Enable="true" Timeout="0" Target="pineapple"
+            Resources="0x40800000, 0XA"/>
+
+        <!-- psm light mode power hint-->
+        <!-- MPCTLV3_MIN_FREQ_CLUSTER_BIG_CORE_0, 0XA -->
+        <Config
+            Id="0x000015E0" Type="0x81" Enable="true" Timeout="0" Taget="pineapple"
+            Resources="0x40800000, 0XA"/>
+
+        <!-- psm medium mode power hint-->
+        <!-- MPCTLV3_MIN_FREQ_CLUSTER_BIG_CORE_0, 0XA -->
+        <Config
+            Id="0x000015E0" Type="0x82" Enable="true" Timeout="0" Taget="pineapple"
+            Resources="0x40800000, 0XA"/>
+
+        <!-- psm deep mode power hint-->
+        <!-- MPCTLV3_MIN_FREQ_CLUSTER_BIG_CORE_0, 0XA -->
+        <Config
+            Id="0x000015E0" Type="0x83" Enable="true" Timeout="0" Taget="pineapple"
+            Resources="0x40800000, 0XA"/>
+
+        <!-- psm release mode power hint-->
+        <!-- MPCTLV3_MIN_FREQ_CLUSTER_BIG_CORE_0, 0XA -->
+        <Config
+            Id="0x000015E0" Type="0x80" Enable="true" Timeout="0" Taget="pineapple"
+            Resources="0x40800000, 0XA"/>
+
+    </Powerhint>
+</HintConfigs>
diff --git a/config/trinket/powerhint.xml b/config/trinket/powerhint.xml
new file mode 100644
index 0000000..a669dd9
--- /dev/null
+++ b/config/trinket/powerhint.xml
@@ -0,0 +1,63 @@
+<?xml version="1.0" encoding="utf-8" ?>
+
+<!--
+/* Copyright (c) 2016-2018,2020. The Linux Foundation. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are
+ * met:
+ *     * Redistributions of source code must retain the above copyright
+ *       notice, this list of conditions and the following disclaimer.
+ *     * Redistributions in binary form must reproduce the above
+ *       copyright notice, this list of conditions and the following
+ *       disclaimer in the documentation and/or other materials provided
+ *       with the distribution.
+ *     * Neither the name of The Linux Foundation nor the names of its
+ *       contributors may be used to endorse or promote products derived
+ *       from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT
+ * ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS
+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
+ * 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.
+ */
+-->
+<HintConfigs>
+    <Powerhint>
+
+ <!-- camera 30fps and camera preview -->
+        <!--L CPU CORE 0 SCHED LOAD BOOST -->
+        <!--L CPU CORE 1 SCHED LOAD BOOST -->
+        <!--L CPU CORE 2 SCHED LOAD BOOST -->
+        <!--L CPU CORE 3 SCHED LOAD BOOST -->
+        <!--L CPU CORE 4 SCHED LOAD BOOST -->
+        <!--L CPU CORE 5 SCHED LOAD BOOST -->
+        <!--L CPU CORE 6 SCHED LOAD BOOST -->
+        <!--L CPU CORE 7 SCHED LOAD BOOST -->
+        <!--L CPU - Set hispeed load 95 -->
+        <!--BWMON - Set sample_ms 20 -->
+        <!--L CPU - Set hispeed load 95 -->
+        <!-- Silver Max frequency -->
+        <Config
+            Id="0x00001331" Enable="true" Timeout="0" Target="trinket"
+            Resources="0x40C68100, 0xFFFFFFF1, 0x40C68110, 0xFFFFFFF1, 0x40C68120, 0xFFFFFFF1,
+            0x40C68130, 0xFFFFFFF1, 0x40C68000, 0xFFFFFFF1, 0x40C68010, 0xFFFFFFF1, 0x40C68020, 0xFFFFFFF1, 0x40C68030, 0xFFFFFFF1,
+            0x41440100, 0x5F, 0x41820000, 0x14, 0x41440000, 0x5F, 0x40804100, 0x64C"/>
+
+        <!-- camera HFR -->
+        <!--BWMON - Set sample_ms 20 -->
+        <!--L CPU - Set hispeed load 95 -->
+        <!--L CPU - Set hispeed frequency -->
+        <Config
+            Id="0x00001333" Enable="true" Timeout="0" Target="trinket"
+            Resources="0x41820000, 0x14, 0x41440100, 0x5F, 0x4143C100, 0x3F9"/>
+
+    </Powerhint>
+</HintConfigs>
diff --git a/power-common.c b/power-common.c
index a7a32e5..21a6d69 100644
--- a/power-common.c
+++ b/power-common.c
@@ -116,6 +116,13 @@
     }
 }
 
+bool is_expensive_rendering_supported() {
+    char property[PROPERTY_VALUE_MAX];
+    strlcpy(property, perf_get_property("vendor.perf.expensive_rendering", "0").value,
+            PROPERTY_VALUE_MAX);
+    return atoi(property) == 1 ? true : false;
+}
+
 void set_expensive_rendering(bool enabled)
 {
     if (enabled) {
diff --git a/power-common.h b/power-common.h
index b95ea22..688fb81 100644
--- a/power-common.h
+++ b/power-common.h
@@ -62,6 +62,7 @@
 
 void power_init(void);
 void power_hint(power_hint_t hint, void *data);
+bool is_expensive_rendering_supported();
 void set_expensive_rendering(bool enabled);
 void set_interactive(int on);
 
diff --git a/power-vendor-board.mk b/power-vendor-board.mk
index 17ad8b9..23d97aa 100644
--- a/power-vendor-board.mk
+++ b/power-vendor-board.mk
@@ -1,5 +1 @@
-ifeq ($(TARGET_BOARD_PLATFORM),trinket)
-TARGET_USES_NON_LEGACY_POWERHAL := false
-else
 TARGET_USES_NON_LEGACY_POWERHAL := true
-endif
diff --git a/power-vendor-product.mk b/power-vendor-product.mk
index e6959ab..578ada2 100644
--- a/power-vendor-product.mk
+++ b/power-vendor-product.mk
@@ -25,4 +25,10 @@
 PRODUCT_COPY_FILES += vendor/qcom/opensource/power/config/neo/powerhint.xml:$(TARGET_COPY_OUT_VENDOR)/etc/powerhint.xml
 else ifeq ($(TARGET_BOARD_PLATFORM),anorak)
 PRODUCT_COPY_FILES += vendor/qcom/opensource/power/config/anorak/powerhint.xml:$(TARGET_COPY_OUT_VENDOR)/etc/powerhint.xml
+else ifeq ($(TARGET_BOARD_PLATFORM),pineapple)
+PRODUCT_COPY_FILES += vendor/qcom/opensource/power/config/pineapple/powerhint.xml:$(TARGET_COPY_OUT_VENDOR)/etc/powerhint.xml
+else ifeq ($(TARGET_BOARD_PLATFORM),crow)
+PRODUCT_COPY_FILES += vendor/qcom/opensource/power/config/crow/powerhint.xml:$(TARGET_COPY_OUT_VENDOR)/etc/powerhint.xml
+else ifeq ($(TARGET_BOARD_PLATFORM),trinket)
+PRODUCT_COPY_FILES += vendor/qcom/opensource/power/config/trinket/powerhint.xml:$(TARGET_COPY_OUT_VENDOR)/etc/powerhint.xml
 endif
diff --git a/power.xml b/power.xml
index 016665e..b8c6cba 100644
--- a/power.xml
+++ b/power.xml
@@ -24,10 +24,15 @@
 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>
         <fqname>IPower/default</fqname>
     </hal>
 </manifest>
\ No newline at end of file
diff --git a/utils.c b/utils.c
index d586df8..d9ecb84 100644
--- a/utils.c
+++ b/utils.c
@@ -56,6 +56,7 @@
     int list[], int numArgs);
 static int (*perf_lock_rel)(int handle);
 static int (*perf_hint)(int, const char *, int, int);
+static PropVal (*perf_get_prop)(const char *prop , const char *def_val);
 static struct list_node active_hint_list_head;
 const char *pkg = "QTI PowerHAL";
 
@@ -102,6 +103,11 @@
         if (!perf_hint) {
             ALOGE("Unable to get perf_hint function handle.\n");
         }
+
+        perf_get_prop = dlsym(qcopt_handle, "perf_get_prop");
+        if (!perf_get_prop) {
+            ALOGE("Unable to get perf_get_prop function handle.\n");
+        }
     }
 }
 
@@ -210,6 +216,16 @@
    return 0;
 }
 
+PropVal perf_get_property(const char *prop , const char *def_val) {
+    PropVal retVal;
+    if (qcopt_handle && perf_get_prop) {
+        retVal = perf_get_prop(prop, def_val);
+    } else {
+        strlcpy(retVal.value, def_val, PROPERTY_VALUE_MAX);
+    }
+    return retVal;
+}
+
 void interaction(int duration, int num_args, int opt_list[])
 {
 #ifdef INTERACTION_BOOST
diff --git a/utils.h b/utils.h
index 4c3dc7f..8a36c70 100644
--- a/utils.h
+++ b/utils.h
@@ -29,6 +29,10 @@
 
 #include <cutils/properties.h>
 
+typedef struct {
+    char value[PROP_VALUE_MAX];
+} PropVal;
+
 int sysfs_read(char *path, char *s, int num_bytes);
 int sysfs_write(char *path, char *s);
 int get_scaling_governor(char governor[], int size);
@@ -45,3 +49,4 @@
 void release_request(int lock_handle);
 int interaction_with_handle(int lock_handle, int duration, int num_args, int opt_list[]);
 int perf_hint_enable(int hint_id, int duration);
+PropVal perf_get_property(const char *prop , const char *def_val);