From e9101cc010a14a2f78f4e82529e30cb55e19d211 Mon Sep 17 00:00:00 2001 From: Zouberou Sayibou Date: Tue, 5 Nov 2024 03:14:22 +0000 Subject: [PATCH 01/19] Felix HAL: Added IVibrator event logs in dumpsys. Ported the changes made in legacyHAL to Felix HAL which involves adding the IVibrator event to the HwApi to produce a friendly debugging logs. Bug: 376330571 Flag: EXEMPT log only update Test: Flash to device and verified dumpsys Change-Id: I54262b7451b1ab07669eb9b7e5ad3c4cd3477016 Signed-off-by: Zouberou Sayibou --- vibrator/common/HardwareBase.cpp | 7 ++++++ vibrator/common/HardwareBase.h | 28 ++++++++++++++++++------ vibrator/cs40l26/Hardware.h | 4 ++++ vibrator/cs40l26/Vibrator.cpp | 16 ++++++++++++++ vibrator/cs40l26/Vibrator.h | 5 +++++ vibrator/cs40l26/tests/mocks.h | 1 + vibrator/cs40l26/tests/test-vibrator.cpp | 10 ++++++++- 7 files changed, 63 insertions(+), 8 deletions(-) diff --git a/vibrator/common/HardwareBase.cpp b/vibrator/common/HardwareBase.cpp index 583caaa..1059b90 100644 --- a/vibrator/common/HardwareBase.cpp +++ b/vibrator/common/HardwareBase.cpp @@ -29,6 +29,13 @@ namespace android { namespace hardware { namespace vibrator { +void HwApiBase::recordEvent(const char *func, const std::string &value) { + std::lock_guard lock(mRecordsMutex); + mRecords.emplace_back(std::make_unique> + (HwApiBase::RecordType::EVENT, func, value, nullptr)); + mRecords.pop_front(); +} + HwApiBase::HwApiBase() { mPathPrefix = std::getenv("HWAPI_PATH_PREFIX") ?: ""; if (mPathPrefix.empty()) { diff --git a/vibrator/common/HardwareBase.h b/vibrator/common/HardwareBase.h index 0296390..d2102cb 100644 --- a/vibrator/common/HardwareBase.h +++ b/vibrator/common/HardwareBase.h @@ -39,6 +39,7 @@ using ::android::base::unique_fd; class HwApiBase { private: using NamesMap = std::map; + enum class RecordType { EVENT, HWAPI }; class RecordInterface { public: @@ -48,12 +49,16 @@ class HwApiBase { template class Record : public RecordInterface { public: - Record(const char *func, const T &value, const std::ios *stream) - : mFunc(func), mValue(value), mStream(stream), + Record(const RecordType &type, const char *func, const T &value, const std::ios *stream) + : mType(type), + mFunc(func), + mValue(value), + mStream(stream), mTp(std::chrono::system_clock::system_clock::now()) {} std::string toString(const NamesMap &names) override; private: + const RecordType mType; const char *mFunc; const T mValue; const std::ios *mStream; @@ -66,6 +71,7 @@ class HwApiBase { public: HwApiBase(); void debug(int fd); + void recordEvent(const char *func, const std::string &value); protected: void saveName(const std::string &name, const std::ios *stream); @@ -176,7 +182,7 @@ bool HwApiBase::poll(const T &value, std::istream *stream, const int32_t timeout template void HwApiBase::record(const char *func, const T &value, const std::ios *stream) { std::lock_guard lock(mRecordsMutex); - mRecords.emplace_back(std::make_unique>(func, value, stream)); + mRecords.emplace_back(std::make_unique>(RecordType::HWAPI, func, value, stream)); mRecords.pop_front(); } @@ -188,10 +194,18 @@ std::string HwApiBase::Record::toString(const NamesMap &names) { struct tm buf; auto lTime = localtime_r(&lTp, &buf); - ret << std::put_time(lTime, "%Y-%m-%d %H:%M:%S.") << std::setfill('0') << std::setw(3) - << (std::chrono::duration_cast(mTp.time_since_epoch()) % 1000) - .count() - << " " << mFunc << " '" << names.at(mStream) << "' = '" << mValue << "'"; + if (mType == RecordType::EVENT) { + ret << std::put_time(lTime, "%Y-%m-%d %H:%M:%S.") << std::setfill('0') << std::setw(3) + << (std::chrono::duration_cast(mTp.time_since_epoch()) % + 1000).count() + << " | " << "IVibrator::" << mFunc << " | " << mValue; + } else { + ret << " \t" << std::put_time(lTime, "%Y-%m-%d %H:%M:%S.") << std::setfill('0') + << std::setw(3) + << (std::chrono::duration_cast(mTp.time_since_epoch()) % + 1000).count() + << " " << mFunc << " '" << names.at(mStream) << "' = '" << mValue << "'"; + } return ret.str(); } diff --git a/vibrator/cs40l26/Hardware.h b/vibrator/cs40l26/Hardware.h index e4dd344..acd0c6c 100644 --- a/vibrator/cs40l26/Hardware.h +++ b/vibrator/cs40l26/Hardware.h @@ -287,6 +287,10 @@ class HwApi : public Vibrator::HwApi, private HwApiBase { return true; } + void recordEvent(const char *func, const std::string &value) override { + HwApiBase::recordEvent(func, value); + } + void debug(int fd) override { HwApiBase::debug(fd); } private: diff --git a/vibrator/cs40l26/Vibrator.cpp b/vibrator/cs40l26/Vibrator.cpp index 36d8e8c..bd88ed4 100644 --- a/vibrator/cs40l26/Vibrator.cpp +++ b/vibrator/cs40l26/Vibrator.cpp @@ -45,6 +45,14 @@ namespace aidl { namespace android { namespace hardware { namespace vibrator { + +#define RECORD(fmt, ...) { \ + this->mHwApiDef->recordEvent(__func__, StringPrintf(fmt, ##__VA_ARGS__)); \ + if (this->mIsDual) { \ + this->mHwApiDual->recordEvent(__func__, StringPrintf(fmt, ##__VA_ARGS__)); \ + } \ +} + static constexpr uint16_t FF_CUSTOM_DATA_LEN_MAX_COMP = 2044; // (COMPOSE_SIZE_MAX + 1) * 8 + 4 static constexpr uint16_t FF_CUSTOM_DATA_LEN_MAX_PWLE = 2302; @@ -461,6 +469,7 @@ Vibrator::Vibrator(std::unique_ptr hwApiDefault, std::unique_ptr h if ((mHwApiDual != nullptr) && (mHwCalDual != nullptr)) mIsDual = true; + RECORD("mIsDual = %d", mIsDual); // ==================INPUT Devices== Base ================= const char *inputEventName = std::getenv("INPUT_EVENT_NAME"); const char *inputEventPathName = std::getenv("INPUT_EVENT_PATH"); @@ -816,6 +825,8 @@ ndk::ScopedAStatus Vibrator::off() { bool ret{true}; const std::scoped_lock lock(mActiveId_mutex); + RECORD("mActiveId = %d", mActiveId); + if (mActiveId >= 0) { ALOGD("Off: Stop the active effect: %d", mActiveId); /* Stop the active effect. */ @@ -858,6 +869,7 @@ ndk::ScopedAStatus Vibrator::on(int32_t timeoutMs, const std::shared_ptr &callback) { ATRACE_NAME("Vibrator::on"); ALOGD("Vibrator::on"); + RECORD("timeoutMs = %d", timeoutMs); if (timeoutMs > MAX_TIME_MS) { return ndk::ScopedAStatus::fromExceptionCode(EX_ILLEGAL_ARGUMENT); @@ -883,6 +895,8 @@ ndk::ScopedAStatus Vibrator::perform(Effect effect, EffectStrength strength, int32_t *_aidl_return) { ATRACE_NAME("Vibrator::perform"); ALOGD("Vibrator::perform"); + RECORD("effect = %s, strength = %s", + toString(effect).c_str(), toString(strength).c_str()); return performEffect(effect, strength, callback, _aidl_return); } @@ -964,6 +978,8 @@ ndk::ScopedAStatus Vibrator::compose(const std::vector &composi const std::shared_ptr &callback) { ATRACE_NAME("Vibrator::compose"); ALOGD("Vibrator::compose"); + RECORD("composite.size = %zu", composite.size()); + uint16_t size; uint16_t nextEffectDelay; diff --git a/vibrator/cs40l26/Vibrator.h b/vibrator/cs40l26/Vibrator.h index 6fc3a3d..b576501 100644 --- a/vibrator/cs40l26/Vibrator.h +++ b/vibrator/cs40l26/Vibrator.h @@ -16,6 +16,7 @@ #pragma once #include +#include #include #include #include @@ -29,6 +30,8 @@ namespace android { namespace hardware { namespace vibrator { +using ::android::base::StringPrintf; + class Vibrator : public BnVibrator { public: // APIs for interfacing with the GPIO pin. @@ -103,6 +106,8 @@ class Vibrator : public BnVibrator { int *status) = 0; // Erase OWT waveform virtual bool eraseOwtEffect(int fd, int8_t effectIndex, std::vector *effect) = 0; + // Records IVibrator Event. + virtual void recordEvent(const char *func, const std::string &value) = 0; // Emit diagnostic information to the given file. virtual void debug(int fd) = 0; }; diff --git a/vibrator/cs40l26/tests/mocks.h b/vibrator/cs40l26/tests/mocks.h index c521b02..a8bd753 100644 --- a/vibrator/cs40l26/tests/mocks.h +++ b/vibrator/cs40l26/tests/mocks.h @@ -58,6 +58,7 @@ class MockApi : public ::aidl::android::hardware::vibrator::Vibrator::HwApi { bool(int fd, const uint8_t *owtData, const uint32_t numBytes, struct ff_effect *effect, uint32_t *outEffectIndex, int *status)); MOCK_METHOD3(eraseOwtEffect, bool(int fd, int8_t effectIndex, std::vector *effect)); + MOCK_METHOD2(recordEvent, void(const char *func, const std::string &value)); MOCK_METHOD1(debug, void(int fd)); ~MockApi() override { destructor(); }; diff --git a/vibrator/cs40l26/tests/test-vibrator.cpp b/vibrator/cs40l26/tests/test-vibrator.cpp index b9b5b3c..7c68c86 100644 --- a/vibrator/cs40l26/tests/test-vibrator.cpp +++ b/vibrator/cs40l26/tests/test-vibrator.cpp @@ -295,7 +295,7 @@ class VibratorTest : public Test { EXPECT_CALL(*mMockApi, setMinOnOffInterval(_)).Times(times); EXPECT_CALL(*mMockApi, getHapticAlsaDevice(_, _)).Times(times); EXPECT_CALL(*mMockApi, setHapticPcmAmp(_, _, _, _)).Times(times); - + EXPECT_CALL(*mMockApi, recordEvent(_, _)).Times(times); EXPECT_CALL(*mMockApi, debug(_)).Times(times); EXPECT_CALL(*mMockCal, destructor()).Times(times); @@ -340,6 +340,7 @@ TEST_F(VibratorTest, Constructor) { createMock(&mockapi, &mockcal, &mockgpio); + EXPECT_CALL(*mMockApi, recordEvent(_, _)).WillRepeatedly(DoDefault()); EXPECT_CALL(*mMockCal, getF0(_)) .InSequence(f0Seq) .WillOnce(DoAll(SetArgReferee<0>(f0Val), Return(true))); @@ -387,6 +388,9 @@ TEST_F(VibratorTest, on) { Sequence s1, s2; uint16_t duration = std::rand() + 1; + EXPECT_CALL(*mMockApi, recordEvent(_, _)) + .InSequence(s1) + .WillRepeatedly(DoDefault()); EXPECT_CALL(*mMockApi, setFFGain(_, ON_GLOBAL_SCALE)).InSequence(s1).WillOnce(DoDefault()); EXPECT_CALL(*mMockApi, setFFEffect(_, _, duration + MAX_COLD_START_LATENCY_MS)) .InSequence(s2) @@ -399,6 +403,7 @@ TEST_F(VibratorTest, on) { TEST_F(VibratorTest, off) { Sequence s1; + EXPECT_CALL(*mMockApi, recordEvent(_, _)).InSequence(s1).WillRepeatedly(DoDefault()); EXPECT_CALL(*mMockApi, setFFGain(_, ON_GLOBAL_SCALE)).InSequence(s1).WillOnce(DoDefault()); EXPECT_TRUE(mVibrator->off().isOk()); } @@ -528,6 +533,8 @@ TEST_P(EffectsTest, perform) { ExpectationSet eSetup; Expectation eActivate, ePollHaptics, ePollStop, eEraseDone; + eSetup += EXPECT_CALL(*mMockApi, recordEvent(_, _)).WillRepeatedly(DoDefault()); + if (scale != EFFECT_SCALE.end()) { EffectIndex index = EFFECT_INDEX.at(effect); duration = EFFECT_DURATIONS[index]; @@ -664,6 +671,7 @@ TEST_P(ComposeTest, compose) { return ndk::ScopedAStatus::ok(); }; + eSetup += EXPECT_CALL(*mMockApi, recordEvent(_, _)).WillRepeatedly(DoDefault()); eSetup += EXPECT_CALL(*mMockApi, setFFGain(_, ON_GLOBAL_SCALE)) .After(eSetup) .WillOnce(DoDefault()); From 4be8bf0c04649353c0f3b46b4c93da4c277963e4 Mon Sep 17 00:00:00 2001 From: Hung-Yeh Lee Date: Wed, 4 Dec 2024 14:45:02 +0800 Subject: [PATCH 02/19] display-dump: make display dump project-specific Bug: 376426334 Test: adb bugreport Test: adb shell /vendor/bin/dump/dump_*_display Test: adb shell /vendor/bin/dump/dump_*_second_display Flag: EXEMPT bugfix Change-Id: Ie478ed909f02df4cca8648a415f8b629c2c454b3 --- device-felix.mk | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/device-felix.mk b/device-felix.mk index 8508546..cf3a7da 100644 --- a/device-felix.mk +++ b/device-felix.mk @@ -40,7 +40,7 @@ include device/google/gs201/device-shipping-common.mk $(call soong_config_set,fp_hal_feature,pixel_product, product_a) include device/google/felix/vibrator/cs40l26/device.mk include device/google/gs-common/bcmbt/bluetooth.mk -include device/google/gs-common/display/dump_second_display.mk +include device/google/gs-common/display/dump_exynos_second_display.mk include device/google/gs-common/touch/gti/predump_gti_dual.mk include device/google/gs-common/touch/stm/predump_stm6.mk ifeq ($(filter factory_felix, $(TARGET_PRODUCT)),) From c0cc1cd8f151dbb1a5df6ab1c4b1e076354b5536 Mon Sep 17 00:00:00 2001 From: Chungkai Mei Date: Fri, 29 Nov 2024 03:44:24 +0000 Subject: [PATCH 03/19] backport launch powerhint to felix As we already migrate kernel to 6.1, let's use new hint to enhance launch performance Bug: 380188383 Flag: EXEMPT add powerhint config Change-Id: I8cd8fed9a65909fe6ad1b693008bd9c7b7558365 Signed-off-by: Chungkai Mei --- powerhint.json | 257 ++++++++++++++++++++++++++++++++++++++++++++++--- 1 file changed, 242 insertions(+), 15 deletions(-) diff --git a/powerhint.json b/powerhint.json index 2074a8e..7ec4dc2 100644 --- a/powerhint.json +++ b/powerhint.json @@ -62,6 +62,18 @@ ], "ResetOnInit": true }, + { + "Name": "CPULittleClusterDownRateLimitUs", + "Path": "/sys/devices/system/cpu/cpu0/cpufreq/sched_pixel/down_rate_limit_us", + "Values": [ + "5000", + "2000", + "1000", + "500" + ], + "DefaultIndex": 0, + "ResetOnInit": true + }, { "Name": "CPUMidClusterMaxFreq", "Path": "/sys/devices/system/cpu/cpu4/cpufreq/scaling_max_freq", @@ -94,6 +106,19 @@ ], "ResetOnInit": true }, + { + "Name": "CPUMidClusterDownRateLimitUs", + "Path": "/sys/devices/system/cpu/cpu4/cpufreq/sched_pixel/down_rate_limit_us", + "Values": [ + "20000", + "5000", + "3000", + "2000", + "500" + ], + "DefaultIndex": 0, + "ResetOnInit": true + }, { "Name": "CPUBigClusterMaxFreq", "Path": "/sys/devices/system/cpu/cpu6/cpufreq/scaling_max_freq", @@ -128,6 +153,18 @@ ], "ResetOnInit": true }, + { + "Name": "CPUBigClusterDownRateLimitUs", + "Path": "/sys/devices/system/cpu/cpu6/cpufreq/sched_pixel/down_rate_limit_us", + "Values": [ + "20000", + "3000", + "2000", + "500" + ], + "DefaultIndex": 0, + "ResetOnInit": true + }, { "Name": "GPUDvfsPeriod", "Path": "/sys/devices/platform/28000000.mali/dvfs_period", @@ -146,6 +183,15 @@ ], "ResetOnInit": true }, + { + "Name": "AutoPreferIdle", + "Path": "/proc/vendor_sched/auto_prefer_idle", + "Values": [ + "0", + "1" + ], + "ResetOnInit": true + }, { "Name": "CPUUtilThreshold", "Path": "/proc/vendor_sched/util_threshold", @@ -166,6 +212,16 @@ "DefaultIndex": 0, "ResetOnInit": true }, + { + "Name": "CPUTaperedDVFSHeadroomEnable", + "Path": "/proc/vendor_sched/tapered_dvfs_headroom_enable", + "Values": [ + "0", + "1" + ], + "DefaultIndex": 0, + "ResetOnInit": true + }, { "Name": "MIFTargetLoad", "Path": "/sys/class/devfreq/17000010.devfreq_mif/interactive/target_load", @@ -194,6 +250,54 @@ ], "ResetOnInit": true }, + { + "Name": "TAUclampMinOnNiceEnable", + "Path": "/proc/vendor_sched/groups/ta/uclamp_min_on_nice_enable", + "Values": [ + "1", + "0" + ], + "ResetOnInit": true + }, + { + "Name": "TAUclampMinOnNiceHighValue", + "Path": "/proc/vendor_sched/groups/ta/uclamp_min_on_nice_high_value", + "Values": [ + "765", + "0" + ], + "ResetOnInit": true + }, + { + "Name": "TAUclampMinOnNiceMidValue", + "Path": "/proc/vendor_sched/groups/ta/uclamp_min_on_nice_mid_value", + "Values": [ + "600", + "590", + "0" + ], + "ResetOnInit": true + }, + { + "Name": "TAUclampMinOnNiceHighPrio", + "Path": "/proc/vendor_sched/groups/ta/uclamp_min_on_nice_high_prio", + "Values": [ + "110", + "119", + "120" + ], + "ResetOnInit": true + }, + { + "Name": "TAUclampMinOnNiceMidPrio", + "Path": "/proc/vendor_sched/groups/ta/uclamp_min_on_nice_mid_prio", + "Values": [ + "128", + "139", + "130" + ], + "ResetOnInit": true + }, { "Name": "FGUClampBoost", "Path": "/proc/vendor_sched/groups/fg/uclamp_min", @@ -286,6 +390,25 @@ ], "ResetOnInit": true }, + { + "Name": "TAAutoPreferFit", + "Path": "/proc/vendor_sched/groups/ta/auto_prefer_fit", + "Values": [ + "1", + "0" + ], + "ResetOnInit": true + }, + { + "Name": "TAPreferredIdleMaskHigh", + "Path": "/proc/vendor_sched/groups/ta/preferred_idle_mask_high", + "Values": [ + "0xff", + "0xf0", + "0x7f" + ], + "ResetOnInit": true + }, { "Name": "FGPreferIdle", "Path": "/proc/vendor_sched/groups/fg/prefer_idle", @@ -688,6 +811,26 @@ ], "DefaultIndex": 0, "ResetOnInit": true + }, + { + "Name": "CPUUClampMaxFilterEnable", + "Path": "/proc/vendor_sched/uclamp_max_filter_enable", + "Values": [ + "1", + "0" + ], + "DefaultIndex": 0, + "ResetOnInit": true + }, + { + "Name": "BGUClampMaxBoost", + "Path": "/proc/vendor_sched/groups/bg/uclamp_max", + "Values": [ + "130", + "512" + ], + "DefaultIndex": 0, + "ResetOnInit": true } ], "Actions": [ @@ -721,18 +864,18 @@ "Duration": 5000, "Value": "0" }, + { + "PowerHint": "LAUNCH", + "Node": "AutoPreferIdle", + "Duration": 5000, + "Value": "0" + }, { "PowerHint": "LAUNCH_GPU", "Node": "GPUDvfsPeriod", "Duration": 1000, "Value": "10" }, - { - "PowerHint": "LAUNCH", - "Node": "FGPreferIdle", - "Duration": 5000, - "Value": "1" - }, { "PowerHint": "LAUNCH", "Type": "DoHint", @@ -758,9 +901,15 @@ }, { "PowerHint": "LAUNCH", - "Node": "TAUClampBoost", + "Node": "CPUUClampMaxFilterEnable", "Duration": 5000, - "Value": "764" + "Value": "0" + }, + { + "PowerHint": "LAUNCH", + "Node": "BGUClampMaxBoost", + "Duration": 5000, + "Value": "512" }, { "PowerHint": "LAUNCH", @@ -776,8 +925,13 @@ }, { "PowerHint": "LAUNCH", - "Node": "NPITaskPacking", - "Duration": 5000, + "Type": "DoHint", + "Value": "LAUNCH_PMU" + }, + { + "PowerHint": "LAUNCH_PMU", + "Node": "PMU_POLL", + "Duration": 3000, "Value": "0" }, { @@ -787,15 +941,88 @@ }, { "PowerHint": "LAUNCH", - "Type": "DoHint", - "Value": "LAUNCH_PMU" + "Node": "CPUDVFSHeadroom", + "Duration": 5000, + "Value": "1280" }, { - "PowerHint": "LAUNCH_PMU", - "Node": "PMU_POLL", - "Duration": 3000, + "PowerHint": "LAUNCH", + "Node": "CPUTaperedDVFSHeadroomEnable", + "Duration": 5000, "Value": "0" }, + { + "PowerHint": "LAUNCH", + "Node": "CPULittleClusterDownRateLimitUs", + "Duration": 5000, + "Value": "5000" + }, + { + "PowerHint": "LAUNCH", + "Node": "CPUMidClusterDownRateLimitUs", + "Duration": 5000, + "Value": "20000" + }, + { + "PowerHint": "LAUNCH", + "Node": "CPUBigClusterDownRateLimitUs", + "Duration": 5000, + "Value": "20000" + }, + { + "PowerHint": "LAUNCH", + "Node": "TAPreferIdle", + "Duration": 5000, + "Value": "1" + }, + { + "PowerHint": "LAUNCH", + "Node": "TAAutoPreferFit", + "Duration": 5000, + "Value": "1" + }, + { + "PowerHint": "LAUNCH", + "Node": "TAPreferredIdleMaskHigh", + "Duration": 5000, + "Value": "0xff" + }, + { + "PowerHint": "LAUNCH", + "Node": "TAUclampMinOnNiceEnable", + "Duration": 5000, + "Value": "1" + }, + { + "PowerHint": "LAUNCH", + "Node": "TAUclampMinOnNiceHighValue", + "Duration": 5000, + "Value": "765" + }, + { + "PowerHint": "LAUNCH", + "Node": "TAUclampMinOnNiceHighPrio", + "Duration": 5000, + "Value": "110" + }, + { + "PowerHint": "LAUNCH", + "Node": "TAUclampMinOnNiceMidValue", + "Duration": 5000, + "Value": "590" + }, + { + "PowerHint": "LAUNCH", + "Node": "TAUclampMinOnNiceMidPrio", + "Duration": 5000, + "Value": "139" + }, + { + "PowerHint": "LAUNCH", + "Node": "FGPreferIdle", + "Duration": 5000, + "Value": "1" + }, { "PowerHint": "LAUNCH_EXTEND", "Node": "CPUBigClusterMaxFreq", From 8a2d7fdd7c54f4153066b1c41f9f5095cdbe75ee Mon Sep 17 00:00:00 2001 From: Zouberou Sayibou Date: Mon, 18 Nov 2024 20:03:23 +0000 Subject: [PATCH 04/19] Felix HAL: Add Destructor to the vibrator HAL. Bug: 379618185 Flag: EXEMPT test only Test: VibratorHalCs40l26TestSuitePrivate Change-Id: If9519ae3aa6b3bd66bfd0a0c9bac844dddfb2f28 Signed-off-by: Zouberou Sayibou --- vibrator/cs40l26/Vibrator.cpp | 11 +++++++++++ vibrator/cs40l26/Vibrator.h | 1 + vibrator/cs40l26/tests/test-vibrator.cpp | 4 +++- 3 files changed, 15 insertions(+), 1 deletion(-) diff --git a/vibrator/cs40l26/Vibrator.cpp b/vibrator/cs40l26/Vibrator.cpp index bd88ed4..06eba39 100644 --- a/vibrator/cs40l26/Vibrator.cpp +++ b/vibrator/cs40l26/Vibrator.cpp @@ -1335,6 +1335,17 @@ static void incrementIndex(int *index) { *index += 1; } +Vibrator::~Vibrator() { + if (isUnderExternalControl()) { + ALOGD("Disabling external control"); + setExternalControl(false); + } + ALOGD("Turning off the vibrator"); + off(); + ALOGD("Waiting for mAsyncHandle to complete"); + mAsyncHandle.wait(); +} + ndk::ScopedAStatus Vibrator::composePwle(const std::vector &composite, const std::shared_ptr &callback) { ATRACE_NAME("Vibrator::composePwle"); diff --git a/vibrator/cs40l26/Vibrator.h b/vibrator/cs40l26/Vibrator.h index b576501..eab9461 100644 --- a/vibrator/cs40l26/Vibrator.h +++ b/vibrator/cs40l26/Vibrator.h @@ -153,6 +153,7 @@ class Vibrator : public BnVibrator { Vibrator(std::unique_ptr hwApiDefault, std::unique_ptr hwCalDefault, std::unique_ptr hwApiDual, std::unique_ptr hwCalDual, std::unique_ptr hwgpio); + virtual ~Vibrator(); // BnVibrator APIs ndk::ScopedAStatus getCapabilities(int32_t *_aidl_return) override; diff --git a/vibrator/cs40l26/tests/test-vibrator.cpp b/vibrator/cs40l26/tests/test-vibrator.cpp index 7c68c86..dbce7c5 100644 --- a/vibrator/cs40l26/tests/test-vibrator.cpp +++ b/vibrator/cs40l26/tests/test-vibrator.cpp @@ -335,7 +335,9 @@ TEST_F(VibratorTest, Constructor) { EXPECT_CALL(*mMockApi, destructor()).WillOnce(DoDefault()); EXPECT_CALL(*mMockCal, destructor()).WillOnce(DoDefault()); EXPECT_CALL(*mMockGpio, destructor()).WillOnce(DoDefault()); - + // Mock calls for the VIbrator destructor. + EXPECT_CALL(*mMockApi, recordEvent(_, _)).WillRepeatedly(DoDefault()); + EXPECT_CALL(*mMockApi, setFFGain(_, ON_GLOBAL_SCALE)).WillOnce(DoDefault()); deleteVibrator(false); createMock(&mockapi, &mockcal, &mockgpio); From 0c5fb7e7545040b2540a83ed71120112bd6a6b6a Mon Sep 17 00:00:00 2001 From: Zouberou Sayibou Date: Wed, 11 Dec 2024 07:55:29 +0000 Subject: [PATCH 05/19] Felix HAL: Move mActiveId_mutex as a private member. Bug: 379619627 Flag: EXEMPT test only Test: VibratorHalCs40l26TestSuite Change-Id: I59298139e68777e37f9f45de9661de59ba34cb83 Signed-off-by: Zouberou Sayibou --- vibrator/cs40l26/Vibrator.cpp | 1 - vibrator/cs40l26/Vibrator.h | 1 + 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/vibrator/cs40l26/Vibrator.cpp b/vibrator/cs40l26/Vibrator.cpp index 06eba39..787700d 100644 --- a/vibrator/cs40l26/Vibrator.cpp +++ b/vibrator/cs40l26/Vibrator.cpp @@ -203,7 +203,6 @@ enum vibe_state { VIBE_STATE_ASP, }; -std::mutex mActiveId_mutex; // protects mActiveId class DspMemChunk { private: diff --git a/vibrator/cs40l26/Vibrator.h b/vibrator/cs40l26/Vibrator.h index eab9461..b8e31de 100644 --- a/vibrator/cs40l26/Vibrator.h +++ b/vibrator/cs40l26/Vibrator.h @@ -256,6 +256,7 @@ class Vibrator : public BnVibrator { bool mConfigHapticAlsaDeviceDone{false}; bool mGPIOStatus; bool mIsDual{false}; + std::mutex mActiveId_mutex; // protects mActiveId }; } // namespace vibrator From 4d81a12b4e60a884d6edc9acbba9ff54eefb5abb Mon Sep 17 00:00:00 2001 From: Chungkai Mei Date: Tue, 17 Dec 2024 07:55:51 +0000 Subject: [PATCH 06/19] remove unused hint As we already migrated kernel to 6.1, NewlyIdleBalancer is not used anymore. Flag: NONE just remove unused hint Bug: 379810138 Change-Id: I320983d36c2cc8edae99e5c132ca63f4d2237046 Signed-off-by: Chungkai Mei --- powerhint.json | 32 -------------------------------- 1 file changed, 32 deletions(-) diff --git a/powerhint.json b/powerhint.json index 7ec4dc2..af2ef5f 100644 --- a/powerhint.json +++ b/powerhint.json @@ -437,14 +437,6 @@ ], "ResetOnInit": true }, - { - "Name": "NewlyIdleBalancer", - "Path": "/proc/vendor_sched/idle_balancer", - "Values": [ - "0", - "1" - ] - }, { "Name": "DisplayWakeup", "Path": "/sys/devices/platform/1c240000.drmdecon/early_wakeup", @@ -1610,12 +1602,6 @@ "Duration": 0, "Value": "0" }, - { - "PowerHint": "CAMERA_STREAMING_EXTREME", - "Node": "NewlyIdleBalancer", - "Duration": 0, - "Value": "0" - }, { "PowerHint": "CAMERA_STREAMING_HIGH", "Node": "PMU_POLL", @@ -1730,12 +1716,6 @@ "Duration": 0, "Value": "0" }, - { - "PowerHint": "CAMERA_STREAMING_HIGH", - "Node": "NewlyIdleBalancer", - "Duration": 0, - "Value": "0" - }, { "PowerHint": "CAMERA_STREAMING_STANDARD", "Node": "PowerHALCameraRunning", @@ -1832,12 +1812,6 @@ "Duration": 0, "Value": "0" }, - { - "PowerHint": "CAMERA_STREAMING_STANDARD", - "Node": "NewlyIdleBalancer", - "Duration": 0, - "Value": "0" - }, { "PowerHint": "CAMERA_STREAMING_LOW", "Node": "PowerHALCameraRunning", @@ -1898,12 +1872,6 @@ "Duration": 0, "Value": "0" }, - { - "PowerHint": "CAMERA_STREAMING_LOW", - "Node": "NewlyIdleBalancer", - "Duration": 0, - "Value": "0" - }, { "PowerHint": "CAMERA_MULTI_CAM_STREAMING", "Node": "CPUBigClusterMaxFreq", From b8b980862def5dabda94f79b194b2020ae3316ab Mon Sep 17 00:00:00 2001 From: Zouberou Sayibou Date: Wed, 18 Dec 2024 21:51:53 +0000 Subject: [PATCH 07/19] Felix HAL: Added RECORD_COMPOSE macro for composite effects. Added the composite vector effects to HAL dumpsys instead of the size. Bug: 376330571 Flag: EXEMPT log only update Test: Flash to device and verified dumpsys Test: atest VibratorHalCs40l26TestSuitePrivate Change-Id: I59efffdbe78bc865ca60a30d8c6a9bdc855def6b Signed-off-by: Zouberou Sayibou --- vibrator/cs40l26/Vibrator.cpp | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/vibrator/cs40l26/Vibrator.cpp b/vibrator/cs40l26/Vibrator.cpp index 787700d..cabaf71 100644 --- a/vibrator/cs40l26/Vibrator.cpp +++ b/vibrator/cs40l26/Vibrator.cpp @@ -53,6 +53,16 @@ namespace vibrator { } \ } +#define RECORD_COMPOSE(...) \ + std::string effectString = ""; \ + for (auto &effect : composite) { \ + effectString += effect.toString() + ", "; \ + } \ + this->mHwApiDef->recordEvent(__func__, effectString.c_str()); \ + if (this->mIsDual) { \ + this->mHwApiDual->recordEvent(__func__, effectString.c_str()); \ + } \ + static constexpr uint16_t FF_CUSTOM_DATA_LEN_MAX_COMP = 2044; // (COMPOSE_SIZE_MAX + 1) * 8 + 4 static constexpr uint16_t FF_CUSTOM_DATA_LEN_MAX_PWLE = 2302; @@ -977,7 +987,7 @@ ndk::ScopedAStatus Vibrator::compose(const std::vector &composi const std::shared_ptr &callback) { ATRACE_NAME("Vibrator::compose"); ALOGD("Vibrator::compose"); - RECORD("composite.size = %zu", composite.size()); + RECORD_COMPOSE(composite); uint16_t size; uint16_t nextEffectDelay; From fcc7ac974c0d771e988e49a6da1c06ab0b2fa991 Mon Sep 17 00:00:00 2001 From: Chris Lu Date: Fri, 20 Dec 2024 08:09:26 +0000 Subject: [PATCH 08/19] Update IDisplay to V13-V14 V14 is not frozen yet. We should still allow V13 for 'next' build. Bug: 381463038 Bug: 378407278 Test: build pass Flag: EXEMPT bugfix Change-Id: I6d084f0ca137528b1fa8b312beed72aef1b368a5 --- device_framework_matrix_product_felix.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/device_framework_matrix_product_felix.xml b/device_framework_matrix_product_felix.xml index 492724d..3ac3995 100644 --- a/device_framework_matrix_product_felix.xml +++ b/device_framework_matrix_product_felix.xml @@ -1,7 +1,7 @@ com.google.hardware.pixel.display - 13 + 13-14 IDisplay secondary From 0f4f93aec642b4c56212c0ee29714965458b85f8 Mon Sep 17 00:00:00 2001 From: "Chung-Kai (Michael) Mei" Date: Tue, 24 Dec 2024 00:36:08 -0800 Subject: [PATCH 09/19] Revert "backport launch powerhint to felix" This reverts commit c0cc1cd8f151dbb1a5df6ab1c4b1e076354b5536. Reason for revert: camera has regression Change-Id: Ica39fe7d25325510689d1835cffdb34a558891af --- powerhint.json | 257 +++---------------------------------------------- 1 file changed, 15 insertions(+), 242 deletions(-) diff --git a/powerhint.json b/powerhint.json index af2ef5f..9c9e8a3 100644 --- a/powerhint.json +++ b/powerhint.json @@ -62,18 +62,6 @@ ], "ResetOnInit": true }, - { - "Name": "CPULittleClusterDownRateLimitUs", - "Path": "/sys/devices/system/cpu/cpu0/cpufreq/sched_pixel/down_rate_limit_us", - "Values": [ - "5000", - "2000", - "1000", - "500" - ], - "DefaultIndex": 0, - "ResetOnInit": true - }, { "Name": "CPUMidClusterMaxFreq", "Path": "/sys/devices/system/cpu/cpu4/cpufreq/scaling_max_freq", @@ -106,19 +94,6 @@ ], "ResetOnInit": true }, - { - "Name": "CPUMidClusterDownRateLimitUs", - "Path": "/sys/devices/system/cpu/cpu4/cpufreq/sched_pixel/down_rate_limit_us", - "Values": [ - "20000", - "5000", - "3000", - "2000", - "500" - ], - "DefaultIndex": 0, - "ResetOnInit": true - }, { "Name": "CPUBigClusterMaxFreq", "Path": "/sys/devices/system/cpu/cpu6/cpufreq/scaling_max_freq", @@ -153,18 +128,6 @@ ], "ResetOnInit": true }, - { - "Name": "CPUBigClusterDownRateLimitUs", - "Path": "/sys/devices/system/cpu/cpu6/cpufreq/sched_pixel/down_rate_limit_us", - "Values": [ - "20000", - "3000", - "2000", - "500" - ], - "DefaultIndex": 0, - "ResetOnInit": true - }, { "Name": "GPUDvfsPeriod", "Path": "/sys/devices/platform/28000000.mali/dvfs_period", @@ -183,15 +146,6 @@ ], "ResetOnInit": true }, - { - "Name": "AutoPreferIdle", - "Path": "/proc/vendor_sched/auto_prefer_idle", - "Values": [ - "0", - "1" - ], - "ResetOnInit": true - }, { "Name": "CPUUtilThreshold", "Path": "/proc/vendor_sched/util_threshold", @@ -212,16 +166,6 @@ "DefaultIndex": 0, "ResetOnInit": true }, - { - "Name": "CPUTaperedDVFSHeadroomEnable", - "Path": "/proc/vendor_sched/tapered_dvfs_headroom_enable", - "Values": [ - "0", - "1" - ], - "DefaultIndex": 0, - "ResetOnInit": true - }, { "Name": "MIFTargetLoad", "Path": "/sys/class/devfreq/17000010.devfreq_mif/interactive/target_load", @@ -250,54 +194,6 @@ ], "ResetOnInit": true }, - { - "Name": "TAUclampMinOnNiceEnable", - "Path": "/proc/vendor_sched/groups/ta/uclamp_min_on_nice_enable", - "Values": [ - "1", - "0" - ], - "ResetOnInit": true - }, - { - "Name": "TAUclampMinOnNiceHighValue", - "Path": "/proc/vendor_sched/groups/ta/uclamp_min_on_nice_high_value", - "Values": [ - "765", - "0" - ], - "ResetOnInit": true - }, - { - "Name": "TAUclampMinOnNiceMidValue", - "Path": "/proc/vendor_sched/groups/ta/uclamp_min_on_nice_mid_value", - "Values": [ - "600", - "590", - "0" - ], - "ResetOnInit": true - }, - { - "Name": "TAUclampMinOnNiceHighPrio", - "Path": "/proc/vendor_sched/groups/ta/uclamp_min_on_nice_high_prio", - "Values": [ - "110", - "119", - "120" - ], - "ResetOnInit": true - }, - { - "Name": "TAUclampMinOnNiceMidPrio", - "Path": "/proc/vendor_sched/groups/ta/uclamp_min_on_nice_mid_prio", - "Values": [ - "128", - "139", - "130" - ], - "ResetOnInit": true - }, { "Name": "FGUClampBoost", "Path": "/proc/vendor_sched/groups/fg/uclamp_min", @@ -390,25 +286,6 @@ ], "ResetOnInit": true }, - { - "Name": "TAAutoPreferFit", - "Path": "/proc/vendor_sched/groups/ta/auto_prefer_fit", - "Values": [ - "1", - "0" - ], - "ResetOnInit": true - }, - { - "Name": "TAPreferredIdleMaskHigh", - "Path": "/proc/vendor_sched/groups/ta/preferred_idle_mask_high", - "Values": [ - "0xff", - "0xf0", - "0x7f" - ], - "ResetOnInit": true - }, { "Name": "FGPreferIdle", "Path": "/proc/vendor_sched/groups/fg/prefer_idle", @@ -803,26 +680,6 @@ ], "DefaultIndex": 0, "ResetOnInit": true - }, - { - "Name": "CPUUClampMaxFilterEnable", - "Path": "/proc/vendor_sched/uclamp_max_filter_enable", - "Values": [ - "1", - "0" - ], - "DefaultIndex": 0, - "ResetOnInit": true - }, - { - "Name": "BGUClampMaxBoost", - "Path": "/proc/vendor_sched/groups/bg/uclamp_max", - "Values": [ - "130", - "512" - ], - "DefaultIndex": 0, - "ResetOnInit": true } ], "Actions": [ @@ -856,18 +713,18 @@ "Duration": 5000, "Value": "0" }, - { - "PowerHint": "LAUNCH", - "Node": "AutoPreferIdle", - "Duration": 5000, - "Value": "0" - }, { "PowerHint": "LAUNCH_GPU", "Node": "GPUDvfsPeriod", "Duration": 1000, "Value": "10" }, + { + "PowerHint": "LAUNCH", + "Node": "FGPreferIdle", + "Duration": 5000, + "Value": "1" + }, { "PowerHint": "LAUNCH", "Type": "DoHint", @@ -893,15 +750,9 @@ }, { "PowerHint": "LAUNCH", - "Node": "CPUUClampMaxFilterEnable", + "Node": "TAUClampBoost", "Duration": 5000, - "Value": "0" - }, - { - "PowerHint": "LAUNCH", - "Node": "BGUClampMaxBoost", - "Duration": 5000, - "Value": "512" + "Value": "764" }, { "PowerHint": "LAUNCH", @@ -917,13 +768,8 @@ }, { "PowerHint": "LAUNCH", - "Type": "DoHint", - "Value": "LAUNCH_PMU" - }, - { - "PowerHint": "LAUNCH_PMU", - "Node": "PMU_POLL", - "Duration": 3000, + "Node": "NPITaskPacking", + "Duration": 5000, "Value": "0" }, { @@ -933,88 +779,15 @@ }, { "PowerHint": "LAUNCH", - "Node": "CPUDVFSHeadroom", - "Duration": 5000, - "Value": "1280" + "Type": "DoHint", + "Value": "LAUNCH_PMU" }, { - "PowerHint": "LAUNCH", - "Node": "CPUTaperedDVFSHeadroomEnable", - "Duration": 5000, + "PowerHint": "LAUNCH_PMU", + "Node": "PMU_POLL", + "Duration": 3000, "Value": "0" }, - { - "PowerHint": "LAUNCH", - "Node": "CPULittleClusterDownRateLimitUs", - "Duration": 5000, - "Value": "5000" - }, - { - "PowerHint": "LAUNCH", - "Node": "CPUMidClusterDownRateLimitUs", - "Duration": 5000, - "Value": "20000" - }, - { - "PowerHint": "LAUNCH", - "Node": "CPUBigClusterDownRateLimitUs", - "Duration": 5000, - "Value": "20000" - }, - { - "PowerHint": "LAUNCH", - "Node": "TAPreferIdle", - "Duration": 5000, - "Value": "1" - }, - { - "PowerHint": "LAUNCH", - "Node": "TAAutoPreferFit", - "Duration": 5000, - "Value": "1" - }, - { - "PowerHint": "LAUNCH", - "Node": "TAPreferredIdleMaskHigh", - "Duration": 5000, - "Value": "0xff" - }, - { - "PowerHint": "LAUNCH", - "Node": "TAUclampMinOnNiceEnable", - "Duration": 5000, - "Value": "1" - }, - { - "PowerHint": "LAUNCH", - "Node": "TAUclampMinOnNiceHighValue", - "Duration": 5000, - "Value": "765" - }, - { - "PowerHint": "LAUNCH", - "Node": "TAUclampMinOnNiceHighPrio", - "Duration": 5000, - "Value": "110" - }, - { - "PowerHint": "LAUNCH", - "Node": "TAUclampMinOnNiceMidValue", - "Duration": 5000, - "Value": "590" - }, - { - "PowerHint": "LAUNCH", - "Node": "TAUclampMinOnNiceMidPrio", - "Duration": 5000, - "Value": "139" - }, - { - "PowerHint": "LAUNCH", - "Node": "FGPreferIdle", - "Duration": 5000, - "Value": "1" - }, { "PowerHint": "LAUNCH_EXTEND", "Node": "CPUBigClusterMaxFreq", From 5d7d292cd1ea60d010a3f99ae02e3173604893b4 Mon Sep 17 00:00:00 2001 From: Chungkai Mei Date: Tue, 24 Dec 2024 08:40:32 +0000 Subject: [PATCH 10/19] Backport autopreferfit for launch Bug: 379810138 Flag: EXEMPT add powerhint config Change-Id: I984252d8cd38cdd8f0e1837f991923fc93574cba Signed-off-by: Chungkai Mei --- powerhint.json | 93 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 93 insertions(+) diff --git a/powerhint.json b/powerhint.json index 9c9e8a3..1fbdf9e 100644 --- a/powerhint.json +++ b/powerhint.json @@ -194,6 +194,54 @@ ], "ResetOnInit": true }, + { + "Name": "TAUclampMinOnNiceEnable", + "Path": "/proc/vendor_sched/groups/ta/uclamp_min_on_nice_enable", + "Values": [ + "1", + "0" + ], + "ResetOnInit": true + }, + { + "Name": "TAUclampMinOnNiceHighValue", + "Path": "/proc/vendor_sched/groups/ta/uclamp_min_on_nice_high_value", + "Values": [ + "765", + "0" + ], + "ResetOnInit": true + }, + { + "Name": "TAUclampMinOnNiceMidValue", + "Path": "/proc/vendor_sched/groups/ta/uclamp_min_on_nice_mid_value", + "Values": [ + "600", + "590", + "0" + ], + "ResetOnInit": true + }, + { + "Name": "TAUclampMinOnNiceHighPrio", + "Path": "/proc/vendor_sched/groups/ta/uclamp_min_on_nice_high_prio", + "Values": [ + "110", + "119", + "120" + ], + "ResetOnInit": true + }, + { + "Name": "TAUclampMinOnNiceMidPrio", + "Path": "/proc/vendor_sched/groups/ta/uclamp_min_on_nice_mid_prio", + "Values": [ + "128", + "139", + "130" + ], + "ResetOnInit": true + }, { "Name": "FGUClampBoost", "Path": "/proc/vendor_sched/groups/fg/uclamp_min", @@ -286,6 +334,15 @@ ], "ResetOnInit": true }, + { + "Name": "TAAutoPreferFit", + "Path": "/proc/vendor_sched/groups/ta/auto_prefer_fit", + "Values": [ + "1", + "0" + ], + "ResetOnInit": true + }, { "Name": "FGPreferIdle", "Path": "/proc/vendor_sched/groups/fg/prefer_idle", @@ -772,6 +829,42 @@ "Duration": 5000, "Value": "0" }, + { + "PowerHint": "LAUNCH", + "Node": "TAAutoPreferFit", + "Duration": 5000, + "Value": "1" + }, + { + "PowerHint": "LAUNCH", + "Node": "TAUclampMinOnNiceEnable", + "Duration": 5000, + "Value": "1" + }, + { + "PowerHint": "LAUNCH", + "Node": "TAUclampMinOnNiceHighValue", + "Duration": 5000, + "Value": "765" + }, + { + "PowerHint": "LAUNCH", + "Node": "TAUclampMinOnNiceHighPrio", + "Duration": 5000, + "Value": "110" + }, + { + "PowerHint": "LAUNCH", + "Node": "TAUclampMinOnNiceMidValue", + "Duration": 5000, + "Value": "590" + }, + { + "PowerHint": "LAUNCH", + "Node": "TAUclampMinOnNiceMidPrio", + "Duration": 5000, + "Value": "139" + }, { "PowerHint": "LAUNCH", "Type": "DoHint", From 6e1fd03c381705e318822bc63bd08bb3fdfb6756 Mon Sep 17 00:00:00 2001 From: Chungkai Mei Date: Tue, 24 Dec 2024 09:14:52 +0000 Subject: [PATCH 11/19] Change set preferred idle mask to top-app Set value to 0x3f exclude big core for all low/mid priority when app launch. Bug: 379810138 Flag: EXEMPT add powerhint config Change-Id: Iaeb21216459a150107f44838aec5e410cb278a30 Signed-off-by: Chungkai Mei --- powerhint.json | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) diff --git a/powerhint.json b/powerhint.json index 1fbdf9e..a827cdb 100644 --- a/powerhint.json +++ b/powerhint.json @@ -343,6 +343,26 @@ ], "ResetOnInit": true }, + { + "Name": "TAPreferredIdleMaskMid", + "Path": "/proc/vendor_sched/groups/ta/preferred_idle_mask_mid", + "Values": [ + "0x3f", + "0xf0", + "0xff" + ], + "ResetOnInit": true + }, + { + "Name": "TAPreferredIdleMaskLow", + "Path": "/proc/vendor_sched/groups/ta/preferred_idle_mask_low", + "Values": [ + "0x3f", + "0xf0", + "0xff" + ], + "ResetOnInit": true + }, { "Name": "FGPreferIdle", "Path": "/proc/vendor_sched/groups/fg/prefer_idle", @@ -835,6 +855,18 @@ "Duration": 5000, "Value": "1" }, + { + "PowerHint": "LAUNCH", + "Node": "TAPreferredIdleMaskMid", + "Duration": 5000, + "Value": "0x3f" + }, + { + "PowerHint": "LAUNCH", + "Node": "TAPreferredIdleMaskLow", + "Duration": 5000, + "Value": "0x3f" + }, { "PowerHint": "LAUNCH", "Node": "TAUclampMinOnNiceEnable", From 4d7babd833aed61e4d287f276e61138bdd3ece5f Mon Sep 17 00:00:00 2001 From: Isaac Chiou Date: Thu, 14 Nov 2024 06:11:20 +0000 Subject: [PATCH 12/19] Enable open source multi akm for specific Broadcom project For cross akm roaming function, we have two ways in supplicant : 1. Open source way. 2. Broadcom specific way. Originally, Broadcom projects follow way 2 due to the limitation of the driver. For now, we plan to move all Broadcom projects to follow way 1 to make supplicant code clean and downsteam without conflict. For those projects which is ready for way 1, we control it to follow way 1 with WIFI_BRCM_OPEN_SOURCE_MULTI_AKM config. For the rest of Broadcom projects, we still follow way 2 until the multiple AKMs is fully supported by driver and verified. For ongoing Broadcom project, we also need to exercise the open source path in supplicant to do multiple AKM configuration to comply with WFA Wifi 7 AKM24 specification (b/331896542 ). Bug: 246871098 Test: AU drop test Test: Cross AKM roaming test Flag: EXEMPT enable control flag for aosp akms Change-Id: I70165b0af3271ef4835119d1c7cd5a906cf4cb59 --- wifi/BoardConfig-wifi.mk | 1 + 1 file changed, 1 insertion(+) diff --git a/wifi/BoardConfig-wifi.mk b/wifi/BoardConfig-wifi.mk index dcec4ca..a1dc3e2 100644 --- a/wifi/BoardConfig-wifi.mk +++ b/wifi/BoardConfig-wifi.mk @@ -31,6 +31,7 @@ WIFI_AVOID_IFACE_RESET_MAC_CHANGE := true WIFI_FEATURE_HOSTAPD_11AX := true BOARD_HOSTAPD_CONFIG_80211W_MFP_OPTIONAL := true WIFI_HIDL_UNIFIED_SUPPLICANT_SERVICE_RC_ENTRY := true +WIFI_BRCM_OPEN_SOURCE_MULTI_AKM := enabled PRODUCT_COPY_FILES += \ device/google/felix/wifi/p2p_supplicant_overlay.conf:$(TARGET_COPY_OUT_VENDOR)/etc/wifi/p2p_supplicant_overlay.conf \ From 5d6cd935728d261324458249ffb774ea35a40e23 Mon Sep 17 00:00:00 2001 From: Tommy Chang Date: Fri, 27 Dec 2024 10:25:28 +0000 Subject: [PATCH 13/19] Disable Bluetooth Hearing Access Profile default enable for F10 Set bluetooth.profile.hap.enabled_by_default to false bug: 386323913 Test: m Flag: EXEMPT, properties change only for feature config Change-Id: I53dde6578fb079dd0fa4780e083cd052b19c3770 --- device-felix.mk | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/device-felix.mk b/device-felix.mk index 8d6c3b4..cf835b5 100644 --- a/device-felix.mk +++ b/device-felix.mk @@ -439,6 +439,10 @@ PRODUCT_PRODUCT_PROPERTIES += \ PRODUCT_PACKAGES_DEBUG += \ ewp_tool +# Disable Bluetooth HAP by default +PRODUCT_PRODUCT_PROPERTIES += \ + bluetooth.profile.hap.enabled_by_default=false + # Enable DeviceAsWebcam support PRODUCT_VENDOR_PROPERTIES += \ ro.usb.uvc.enabled=true From 6cc7a91ca5657fe2c83050ef721e764127e4771f Mon Sep 17 00:00:00 2001 From: Paulsu Su Date: Wed, 15 Jan 2025 00:47:33 -0800 Subject: [PATCH 14/19] powerhint: Mask hints in AA and DISPLAY_IDLE This CL adds a powerhint for AA mode to mask storming hint. DISPLAY_IDLE masks DISPLAY_UPDATE_IMMINENT and CPU_LOAD_RESET when Android Auto property is set. When navigation in Android Auto, the two hint with action to boost memlat is costly. Bug: 380188115 Change-Id: I825a56ac32a0ecdc8b441af9cb64e81b1d04f9a6 Test: Local test with desktop_head_unit_internal Flag: EXEMPT powerhint change --- powerhint.json | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/powerhint.json b/powerhint.json index a827cdb..eab4c54 100644 --- a/powerhint.json +++ b/powerhint.json @@ -757,6 +757,16 @@ ], "DefaultIndex": 0, "ResetOnInit": true + }, + { + "Name": "AAModeProperty", + "Path": "vendor.powerhal.mode.aa", + "Values": [ + "1", + "0" + ], + "ResetOnInit": true, + "Type": "Property" } ], "Actions": [ @@ -2054,6 +2064,12 @@ "Duration": 0, "Value": "1" }, + { + "PowerHint": "AUTOMOTIVE_PROJECTION", + "Node": "AAModeProperty", + "Duration": 0, + "Value": "1" + }, { "PowerHint": "DISPLAY_IDLE", "Node": "FGPreferIdle", @@ -2071,6 +2087,18 @@ "Type": "EndHint", "Value": "DISPLAY_UPDATE_IMMINENT" }, + { + "PowerHint": "DISPLAY_IDLE", + "Type": "MaskHint", + "Value":"DISPLAY_UPDATE_IMMINENT", + "EnableProperty": "vendor.powerhal.mode.aa" + }, + { + "PowerHint": "DISPLAY_IDLE", + "Type": "MaskHint", + "Value":"CPU_LOAD_RESET", + "EnableProperty": "vendor.powerhal.mode.aa" + }, { "PowerHint": "DISPLAY_UPDATE_IMMINENT", "Node": "DisplayWakeup", From 20604eeb21b2a2ffe4741d0ab11860164866141a Mon Sep 17 00:00:00 2001 From: Angela Wang Date: Wed, 15 Jan 2025 09:14:13 +0000 Subject: [PATCH 15/19] Hide LE audio toggle for ASHA device on F10 Set bluetooth.leaudio.toggle_for_asha to false Flag: EXEMPT properties change only Bug: 390070780 Test: m Change-Id: Ia1d5ef7734f3a7664fd7e01e9188873de5df1a44 --- device-felix.mk | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/device-felix.mk b/device-felix.mk index 502a614..5941eac 100644 --- a/device-felix.mk +++ b/device-felix.mk @@ -443,6 +443,10 @@ PRODUCT_PACKAGES_DEBUG += \ PRODUCT_PRODUCT_PROPERTIES += \ bluetooth.profile.hap.enabled_by_default=false +# Disable Bluetooth LE Audio toggle for ASHA device +PRODUCT_PRODUCT_PROPERTIES += \ + bluetooth.leaudio.toggle_visible_for_asha=false + # Enable DeviceAsWebcam support PRODUCT_VENDOR_PROPERTIES += \ ro.usb.uvc.enabled=true From 4995c6b3c20d6be744b0e8c1a14315ec785322b2 Mon Sep 17 00:00:00 2001 From: guibing Date: Mon, 3 Feb 2025 19:22:02 +0000 Subject: [PATCH 16/19] ADPF:felix: remove unused adpf profiles. Bug: 393196667 Test: adb shell dumpsys android.hardware.power.IPower/default Flag: NONE powerhal doesn't have a flag yet Change-Id: I3e1fe7eb31b34118aa520b1d7afa817cac7c3d4a --- powerhint.json | 72 -------------------------------------------------- 1 file changed, 72 deletions(-) diff --git a/powerhint.json b/powerhint.json index eab4c54..72e8330 100644 --- a/powerhint.json +++ b/powerhint.json @@ -2424,78 +2424,6 @@ "JankCheckTimeFactor": 1.2, "LowFrameRateThreshold": 25, "MaxRecordsNum": 300 - }, - { - "Name": "UiHighBoostWithoutPid", - "PID_On": false, - "PID_Po": 0, - "PID_Pu": 0, - "PID_I": 0, - "PID_I_Init": 0, - "PID_I_High": 0, - "PID_I_Low": 0, - "PID_Do": 0, - "PID_Du": 0, - "SamplingWindow_P": 1, - "SamplingWindow_I": 1, - "SamplingWindow_D": 1, - "UclampMin_On": true, - "UclampMin_Init": 250, - "UclampMin_High": 197, - "UclampMin_Low": 197, - "UclampMax_EfficientBase": 500, - "UclampMax_EfficientOffset": 200, - "ReportingRateLimitNs": 1, - "TargetTimeFactor": 1.0, - "StaleTimeFactor": 5.0 - }, - { - "Name": "UiLowBoostWithoutPid", - "PID_On": false, - "PID_Po": 0, - "PID_Pu": 0, - "PID_I": 0, - "PID_I_Init": 0, - "PID_I_High": 0, - "PID_I_Low": 0, - "PID_Do": 0, - "PID_Du": 0, - "SamplingWindow_P": 1, - "SamplingWindow_I": 1, - "SamplingWindow_D": 1, - "UclampMin_On": true, - "UclampMin_Init": 250, - "UclampMin_High": 53, - "UclampMin_Low": 53, - "UclampMax_EfficientBase": 500, - "UclampMax_EfficientOffset": 200, - "ReportingRateLimitNs": 1, - "TargetTimeFactor": 1.0, - "StaleTimeFactor": 5.0 - }, - { - "Name": "UiLowNoneBoost", - "PID_On": false, - "PID_Po": 0, - "PID_Pu": 0, - "PID_I": 0, - "PID_I_Init": 0, - "PID_I_High": 0, - "PID_I_Low": 0, - "PID_Do": 0, - "PID_Du": 0, - "SamplingWindow_P": 1, - "SamplingWindow_I": 1, - "SamplingWindow_D": 1, - "UclampMin_On": true, - "UclampMin_Init": 250, - "UclampMin_High": 0, - "UclampMin_Low": 0, - "UclampMax_EfficientBase": 500, - "UclampMax_EfficientOffset": 200, - "ReportingRateLimitNs": 1, - "TargetTimeFactor": 1.0, - "StaleTimeFactor": 5.0 } ] } From 6285144b08deeabeb52726bb8a72e2996c8335b5 Mon Sep 17 00:00:00 2001 From: guibing Date: Mon, 3 Feb 2025 19:24:06 +0000 Subject: [PATCH 17/19] ADPF:felix: use tagged ADPF profile for SYSTEM_UI. - Add a event node for SYSTEM_UI; - Add a separate SYSTEM_UI profile. Bug: 393196667 Test: adb shell dumpsys android.hardware.power.IPower/default Flag: NONE powerhal doesn't have a flag yet Change-Id: I92c5457480680d4a91058dd19bb12ae1fde8542e --- powerhint.json | 46 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 46 insertions(+) diff --git a/powerhint.json b/powerhint.json index 72e8330..0088169 100644 --- a/powerhint.json +++ b/powerhint.json @@ -767,6 +767,16 @@ ], "ResetOnInit": true, "Type": "Property" + }, + { + "Name": "SYSTEM_UI_ADPF_PROFILES", + "Path": ":SYSTEM_UI", + "Values": [ + "SYSTEM_UI_PROFILE" + ], + "DefaultIndex": 0, + "ResetOnInit": true, + "Type": "Event" } ], "Actions": [ @@ -2424,6 +2434,42 @@ "JankCheckTimeFactor": 1.2, "LowFrameRateThreshold": 25, "MaxRecordsNum": 300 + }, + { + "Name": "SYSTEM_UI_PROFILE", + "PID_On": true, + "PID_Po": 2.0, + "PID_Pu": 1.0, + "PID_I": 0.0, + "PID_I_Init": 200, + "PID_I_High": 512, + "PID_I_Low": -30, + "PID_Do": 500.0, + "PID_Du": 0.0, + "UclampMin_On": true, + "UclampMin_Init": 232, + "UclampMin_LoadUp": 730, + "UclampMin_LoadReset": 730, + "UclampMin_High": 480, + "UclampMin_Low": 2, + "UclampMax_EfficientBase": 500, + "UclampMax_EfficientOffset": 200, + "SamplingWindow_P": 1, + "SamplingWindow_I": 0, + "SamplingWindow_D": 1, + "ReportingRateLimitNs": 166666660, + "TargetTimeFactor": 1.0, + "StaleTimeFactor": 15.0, + "HeuristicBoost_On": true, + "HBoostModerateJankThreshold": 2, + "HBoostOffMaxAvgDurRatio": 4.0, + "HBoostSevereJankPidPu": 0.5, + "HBoostSevereJankThreshold": 8, + "HBoostUclampMinCeilingRange": [480, 722], + "HBoostUclampMinFloorRange": [230, 410], + "JankCheckTimeFactor": 1.2, + "LowFrameRateThreshold": 25, + "MaxRecordsNum": 300 } ] } From 6fad9b98e284316c6852145a57ccc809ef004a96 Mon Sep 17 00:00:00 2001 From: Barry Date: Fri, 31 Jan 2025 06:25:10 +0000 Subject: [PATCH 18/19] Enable BQR vendor snoop log Enable BQR vendor snoop log and enable enable Vendor Specific Quality event(s) Bug: 393491668 Test: Manual Test Flag: EXEMPT system prop update Change-Id: I353f2d1369da2c9e55afecfc306ea17cf66001e3 --- bluetooth/bt_vendor_overlay.conf | 2 +- device-felix.mk | 10 ++++++++-- 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/bluetooth/bt_vendor_overlay.conf b/bluetooth/bt_vendor_overlay.conf index b7b419b..aab8da2 100644 --- a/bluetooth/bt_vendor_overlay.conf +++ b/bluetooth/bt_vendor_overlay.conf @@ -4,6 +4,6 @@ UartPort = /dev/ttySAC18 # Update BQR Event Mask property value -BqrEventMaskValueUpdate = 262238 +BqrEventMaskValueUpdate = 295006 BtOpusEnabled = true diff --git a/device-felix.mk b/device-felix.mk index 8d6c3b4..2f5a550 100644 --- a/device-felix.mk +++ b/device-felix.mk @@ -411,10 +411,16 @@ PRODUCT_PRODUCT_PROPERTIES += \ # Override BQR mask to enable LE Audio Choppy report ifneq (,$(filter userdebug eng, $(TARGET_BUILD_VARIANT))) PRODUCT_PRODUCT_PROPERTIES += \ - persist.bluetooth.bqr.event_mask=262238 + persist.bluetooth.bqr.event_mask=295006 \ + persist.bluetooth.bqr.vnd_quality_mask=29 \ + persist.bluetooth.bqr.vnd_trace_mask=0 \ + persist.bluetooth.vendor.btsnoop=true else PRODUCT_PRODUCT_PROPERTIES += \ - persist.bluetooth.bqr.event_mask=94 + persist.bluetooth.bqr.event_mask=295006 \ + persist.bluetooth.bqr.vnd_quality_mask=16 \ + persist.bluetooth.bqr.vnd_trace_mask=0 \ + persist.bluetooth.vendor.btsnoop=false endif # Bluetooth LE Audio CIS handover to SCO From 6c8adcff9aab31fba4d2527f31919e4c24f7dbf8 Mon Sep 17 00:00:00 2001 From: Devin Moore Date: Wed, 5 Feb 2025 21:38:20 +0000 Subject: [PATCH 19/19] Remove old unused VINTF manifest file This file is out of date and unused, so remove it. It's targeting Android R FCM and declaring old HIDL versions of HALs that these devices do not use. Test: m Bug: 388074589 Change-Id: I516dd5bc80c44f0e44db3d93c5c0fa64f521ef6d --- aosp_felix.mk | 3 -- manifest.xml | 124 -------------------------------------------------- 2 files changed, 127 deletions(-) delete mode 100644 manifest.xml diff --git a/aosp_felix.mk b/aosp_felix.mk index 949a93a..7ed36e9 100644 --- a/aosp_felix.mk +++ b/aosp_felix.mk @@ -27,6 +27,3 @@ PRODUCT_DEVICE := felix PRODUCT_MODEL := AOSP on Felix PRODUCT_BRAND := Android PRODUCT_MANUFACTURER := Google - -DEVICE_MANIFEST_FILE := \ - device/google/felix/manifest.xml diff --git a/manifest.xml b/manifest.xml deleted file mode 100644 index a287416..0000000 --- a/manifest.xml +++ /dev/null @@ -1,124 +0,0 @@ - - - android.hardware.audio - hwbinder - 7.1 - - IDevicesFactory - default - - - - android.hardware.audio.effect - hwbinder - 7.0 - - IEffectsFactory - default - - - - android.hardware.soundtrigger - hwbinder - 2.3 - - ISoundTriggerHw - default - - - - android.hardware.media.omx - hwbinder - 1.0 - - IOmx - default - - - IOmxStore - default - - - - android.hardware.graphics.allocator - hwbinder - 4.0 - - IAllocator - default - - - - android.hardware.graphics.composer - hwbinder - 2.4 - - IComposer - default - - - - android.hardware.renderscript - passthrough - 1.0 - - IDevice - default - - - - android.hardware.dumpstate - hwbinder - 1.1 - - IDumpstateDevice - default - - - - android.hardware.bluetooth.audio - hwbinder - 2.1 - - IBluetoothAudioProvidersFactory - default - - - - android.hardware.boot - hwbinder - @1.2::IBootControl/default - - - android.hardware.neuralnetworks - hwbinder - @1.3::IDevice/google-edgetpu - - - android.hardware.health - hwbinder - 2.1 - - IHealth - default - - - - vendor.google.google_battery - 3 - - IGoogleBattery - default - - - - vendor.google.whitechapel.audio.audioext - hwbinder - 4.0 - - IAudioExt - default - - - -