diff --git a/audio/felix/config/audio_policy_configuration.xml b/audio/felix/config/audio_policy_configuration.xml index 1b44390..94e9d3f 100644 --- a/audio/felix/config/audio_policy_configuration.xml +++ b/audio/felix/config/audio_policy_configuration.xml @@ -93,7 +93,7 @@ samplingRates="8000 11025 12000 16000 22050 24000 32000 44100 48000" channelMasks="AUDIO_CHANNEL_IN_MONO AUDIO_CHANNEL_IN_STEREO"/> - + diff --git a/audio/felix/config/audio_policy_configuration_a2dp_offload_disabled.xml b/audio/felix/config/audio_policy_configuration_a2dp_offload_disabled.xml index eb8560c..da6c7a7 100644 --- a/audio/felix/config/audio_policy_configuration_a2dp_offload_disabled.xml +++ b/audio/felix/config/audio_policy_configuration_a2dp_offload_disabled.xml @@ -92,7 +92,7 @@ samplingRates="8000 11025 12000 16000 22050 24000 32000 44100 48000" channelMasks="AUDIO_CHANNEL_IN_MONO AUDIO_CHANNEL_IN_STEREO"/> - + diff --git a/audio/felix/config/audio_policy_configuration_bluetooth_legacy_hal.xml b/audio/felix/config/audio_policy_configuration_bluetooth_legacy_hal.xml index 1863d5a..416d4ab 100644 --- a/audio/felix/config/audio_policy_configuration_bluetooth_legacy_hal.xml +++ b/audio/felix/config/audio_policy_configuration_bluetooth_legacy_hal.xml @@ -88,7 +88,7 @@ samplingRates="8000 11025 12000 16000 22050 24000 32000 44100 48000" channelMasks="AUDIO_CHANNEL_IN_MONO AUDIO_CHANNEL_IN_STEREO"/> - + diff --git a/audio/felix/config/audio_policy_configuration_le_offload_disabled.xml b/audio/felix/config/audio_policy_configuration_le_offload_disabled.xml index bf54670..0745b2f 100644 --- a/audio/felix/config/audio_policy_configuration_le_offload_disabled.xml +++ b/audio/felix/config/audio_policy_configuration_le_offload_disabled.xml @@ -93,7 +93,7 @@ samplingRates="8000 11025 12000 16000 22050 24000 32000 44100 48000" channelMasks="AUDIO_CHANNEL_IN_MONO AUDIO_CHANNEL_IN_STEREO"/> - + diff --git a/conf/init.felix.rc b/conf/init.felix.rc index ed12a3c..47475e3 100644 --- a/conf/init.felix.rc +++ b/conf/init.felix.rc @@ -18,6 +18,7 @@ on fs chown system system /sys/class/backlight/panel1-backlight/dimming_on chown system system /sys/class/backlight/panel1-backlight/hbm_mode chown system system /sys/class/backlight/panel1-backlight/local_hbm_mode + chown system system /sys/class/backlight/panel1-backlight/allow_wakeup_by_state_change chown system system /sys/devices/platform/exynos-drm/secondary-panel/gamma chown system system /sys/devices/platform/exynos-drm/secondary-panel/min_vrefresh chown system system /sys/devices/platform/exynos-drm/secondary-panel/idle_delay_ms diff --git a/device-felix.mk b/device-felix.mk index b1a0caa..1166a1f 100644 --- a/device-felix.mk +++ b/device-felix.mk @@ -21,6 +21,15 @@ TARGET_KERNEL_DIR ?= device/google/felix-kernel TARGET_BOARD_KERNEL_HEADERS := device/google/felix-kernel/kernel-headers TARGET_RECOVERY_DEFAULT_ROTATION := ROTATION_RIGHT +ifdef RELEASE_GOOGLE_FELIX_KERNEL_VERSION +TARGET_LINUX_KERNEL_VERSION := $(RELEASE_GOOGLE_FELIX_KERNEL_VERSION) +endif + +ifdef RELEASE_GOOGLE_FELIX_KERNEL_DIR +TARGET_KERNEL_DIR := $(RELEASE_GOOGLE_FELIX_KERNEL_DIR) +TARGET_BOARD_KERNEL_HEADERS := $(RELEASE_GOOGLE_FELIX_KERNEL_DIR)/kernel-headers +endif + $(call inherit-product-if-exists, vendor/google_devices/felix/prebuilts/device-vendor-felix.mk) $(call inherit-product-if-exists, vendor/google_devices/gs201/prebuilts/device-vendor.mk) $(call inherit-product-if-exists, vendor/google_devices/gs201/proprietary/device-vendor.mk) @@ -211,7 +220,7 @@ PRODUCT_SOONG_NAMESPACES += \ # Increment the SVN for any official public releases PRODUCT_VENDOR_PROPERTIES += \ - ro.vendor.build.svn=37 + ro.vendor.build.svn=43 # Vibrator HAL PRODUCT_VENDOR_PROPERTIES +=\ @@ -257,7 +266,7 @@ PRODUCT_PACKAGES += \ PRODUCT_SOONG_NAMESPACES += vendor/google_devices/felix/prebuilts ifneq (,$(filter AP1%,$(RELEASE_PLATFORM_VERSION))) PRODUCT_SOONG_NAMESPACES += vendor/google_devices/felix/prebuilts/trusty/24Q1 -else ifneq (,$(filter AP2%,$(RELEASE_PLATFORM_VERSION))) +else ifneq (,$(filter AP2% AP3%,$(RELEASE_PLATFORM_VERSION))) PRODUCT_SOONG_NAMESPACES += vendor/google_devices/felix/prebuilts/trusty/24Q2 else PRODUCT_SOONG_NAMESPACES += vendor/google_devices/felix/prebuilts/trusty/trunk @@ -395,3 +404,12 @@ PRODUCT_VENDOR_PROPERTIES += \ PRODUCT_PRODUCT_PROPERTIES += \ ro.quick_start.oem_id=00e0 \ ro.quick_start.device_id=felix + +# Set support hide display cutout feature +PRODUCT_PRODUCT_PROPERTIES += \ + ro.support_hide_display_cutout=true + +PRODUCT_PACKAGES += \ + NoCutoutOverlay \ + AvoidAppsInCutoutOverlay + diff --git a/felix/BoardConfig.mk b/felix/BoardConfig.mk index 1aaac33..a1ed5db 100644 --- a/felix/BoardConfig.mk +++ b/felix/BoardConfig.mk @@ -23,7 +23,7 @@ BOARD_KERNEL_CMDLINE += swiotlb=noforce RELEASE_GOOGLE_PRODUCT_RADIO_DIR := $(RELEASE_GOOGLE_FELIX_RADIO_DIR) ifneq (,$(filter AP1%,$(RELEASE_PLATFORM_VERSION))) RELEASE_GOOGLE_PRODUCT_BOOTLOADER_DIR := bootloader/24Q1 -else ifneq (,$(filter AP2%,$(RELEASE_PLATFORM_VERSION))) +else ifneq (,$(filter AP2% AP3%,$(RELEASE_PLATFORM_VERSION))) RELEASE_GOOGLE_PRODUCT_BOOTLOADER_DIR := bootloader/24Q2 else RELEASE_GOOGLE_PRODUCT_BOOTLOADER_DIR := bootloader/trunk diff --git a/felix/overlay/frameworks/base/packages/SystemUI/res/values/config.xml b/felix/overlay/frameworks/base/packages/SystemUI/res/values/config.xml index 16d2bb7..9d91e32 100644 --- a/felix/overlay/frameworks/base/packages/SystemUI/res/values/config.xml +++ b/felix/overlay/frameworks/base/packages/SystemUI/res/values/config.xml @@ -78,8 +78,17 @@ m 589.2,66.53 a 49.5,49.5 0 0 1 -49.5,49.5 49.5,49.5 0 0 1 -49.5,-49.5 49.5,49.5 0 0 1 49.5,-49.5 49.5,49.5 0 0 1 49.5,49.5 z - + 1 + + 5 + + + + 540 + 66 + 50 + diff --git a/location/gps.xml.f10 b/location/gps.xml.f10 index e2cd884..a47afb2 100644 --- a/location/gps.xml.f10 +++ b/location/gps.xml.f10 @@ -60,7 +60,7 @@ CpLppeUseAgnssLocForEmptyDbh="true" CpLppHighAccuracyShapeMode="1" ReAidingOnHotStart="false" - ReAidingIntervalSec="1200" + ReAidingIntervalSec="3600" RuntimeSwLteFilterEnable="true" PpsDevice="/sys/class/pps/pps0/assert_elapsed" SensorsMask="0x244" @@ -93,6 +93,8 @@ MinGpsWeekNumber="2216" OnChipAccMask="50" EnableB1C="false" + + RTICacheTimeoutSec="3600" /> p) { // Add display residency stats for inner display - std::vector inner_states = { - "Off", - "LP: 1840x2208@1", - "LP: 1840x2208@30", - "On: 1840x2208@1", - "On: 1840x2208@10", - "On: 1840x2208@60", - "On: 1840x2208@120", - "HBM: 1840x2208@60", - "HBM: 1840x2208@120"}; + struct stat primaryBuffer; + if (!stat("/sys/class/drm/card0/device/primary-panel/time_in_state", &primaryBuffer)) { + // time_in_state exists + addDisplayMrrByEntity(p, "Inner Display", "/sys/class/drm/card0/device/primary-panel/"); + } else { + // time_in_state doesn't exist + std::vector inner_states = { + "Off", + "LP: 1840x2208@1", + "LP: 1840x2208@30", + "On: 1840x2208@1", + "On: 1840x2208@10", + "On: 1840x2208@60", + "On: 1840x2208@120", + "HBM: 1840x2208@60", + "HBM: 1840x2208@120"}; - p->addStateResidencyDataProvider(std::make_unique( - "Inner Display", - "/sys/class/backlight/panel0-backlight/state", - inner_states)); + p->addStateResidencyDataProvider(std::make_unique( + "Inner Display", + "/sys/class/backlight/panel0-backlight/state", + inner_states)); + } // Add display residency stats for outer display - std::vector outer_states = { - "Off", - "LP: 1080x2092@30", - "On: 1080x2092@10", - "On: 1080x2092@60", - "On: 1080x2092@120", - "HBM: 1080x2092@60", - "HBM: 1080x2092@120"}; + struct stat secondaryBuffer; + if (!stat("/sys/class/drm/card0/device/secondary-panel/time_in_state", &secondaryBuffer)) { + // time_in_state exists + addDisplayMrrByEntity(p, "Outer Display", "/sys/class/drm/card0/device/secondary-panel/"); + } else { + // time_in_state doesn't exist + std::vector outer_states = { + "Off", + "LP: 1080x2092@30", + "On: 1080x2092@10", + "On: 1080x2092@60", + "On: 1080x2092@120", + "HBM: 1080x2092@60", + "HBM: 1080x2092@120"}; - p->addStateResidencyDataProvider(std::make_unique( - "Outer Display", - "/sys/class/backlight/panel1-backlight/state", - outer_states)); + p->addStateResidencyDataProvider(std::make_unique( + "Outer Display", + "/sys/class/backlight/panel1-backlight/state", + outer_states)); + } // Add display energy consumer p->addEnergyConsumer(PowerStatsEnergyConsumer::createMeterConsumer( @@ -142,15 +156,7 @@ void addGPU(std::shared_ptr p) { } std::string getNfcPath() { - struct stat buffer; - int size = 128; - char path[size]; - for (int i = 0; i < 10; i++) { - std::snprintf(path, size, - "/sys/devices/platform/10970000.hsi2c/i2c-%d/i2c-st21nfc/power_stats", i); - if (!stat(path, &buffer)) break; - } - return std::string(path); + return std::string("/sys/devices/platform/10970000.hsi2c/i2c-8/8-0008/power_stats"); } int main() { diff --git a/rro_overlays/NfcOverlay/res/values/config.xml b/rro_overlays/NfcOverlay/res/values/config.xml index 5e89b28..135ed8a 100644 --- a/rro_overlays/NfcOverlay/res/values/config.xml +++ b/rro_overlays/NfcOverlay/res/values/config.xml @@ -32,4 +32,5 @@ 103 103 + true diff --git a/rro_overlays/WifiOverlay/res/values/config.xml b/rro_overlays/WifiOverlay/res/values/config.xml index 94f377b..8079614 100644 --- a/rro_overlays/WifiOverlay/res/values/config.xml +++ b/rro_overlays/WifiOverlay/res/values/config.xml @@ -167,4 +167,12 @@ regulatory approval (for example, FCC pre-approval is required according to "594280 D01 Software Configuration Control v02r01").--> true + + + true + + + 3 + diff --git a/self-extractors/extract-lists.txt b/self-extractors/extract-lists.txt index 9fc0800..c783a92 100644 --- a/self-extractors/extract-lists.txt +++ b/self-extractors/extract-lists.txt @@ -11,7 +11,6 @@ system_ext/lib64/libmediaadaptor.so \ system_ext/priv-app/ShannonRcs/ShannonRcs.apk \ system_ext/priv-app/ShannonIms/ShannonIms.apk \ - system_ext/priv-app/PixelQualifiedNetworksService/PixelQualifiedNetworksService.apk \ system_ext/priv-app/UwbVendorService/UwbVendorService.apk \ " ;; diff --git a/self-extractors/google_devices/staging/Android.mk.template b/self-extractors/google_devices/staging/Android.mk.template index 01369bf..f1eb6b1 100644 --- a/self-extractors/google_devices/staging/Android.mk.template +++ b/self-extractors/google_devices/staging/Android.mk.template @@ -22,22 +22,6 @@ ifneq ($(filter felix,$(TARGET_DEVICE)),) endif ifneq ($(filter felix,$(TARGET_DEVICE)),) -include $(CLEAR_VARS) -LOCAL_MODULE_SUFFIX := $(COMMON_ANDROID_PACKAGE_SUFFIX) -LOCAL_MODULE := PixelQualifiedNetworksService -LOCAL_MODULE_TAGS := optional -LOCAL_BUILT_MODULE_STEM := package.apk -LOCAL_SYSTEM_EXT_MODULE := true -LOCAL_PRIVILEGED_MODULE := true -LOCAL_MODULE_OWNER := samsung -LOCAL_MODULE_CLASS := APPS -LOCAL_SRC_FILES := $(LOCAL_MODULE).apk -LOCAL_CERTIFICATE := platform -LOCAL_LICENSE_KINDS := SPDX-license-identifier-Apache-2.0 -LOCAL_LICENSE_CONDITIONS := notice -LOCAL_NOTICE_FILE := $(LOCAL_PATH)/../COPYRIGHT $(LOCAL_PATH)/../LICENSE -include $(BUILD_PREBUILT) - include $(CLEAR_VARS) LOCAL_MODULE_SUFFIX := $(COMMON_ANDROID_PACKAGE_SUFFIX) LOCAL_MODULE := ShannonIms diff --git a/self-extractors/google_devices/staging/device-partial.mk b/self-extractors/google_devices/staging/device-partial.mk index 9c4717f..42c43e7 100644 --- a/self-extractors/google_devices/staging/device-partial.mk +++ b/self-extractors/google_devices/staging/device-partial.mk @@ -17,7 +17,6 @@ PRODUCT_SOONG_NAMESPACES += \ # AOSP packages required by the blobs PRODUCT_PACKAGES := \ - PixelQualifiedNetworksService \ ShannonIms \ ShannonRcs \ UwbVendorService \ diff --git a/vibrator/cs40l26/Hardware.h b/vibrator/cs40l26/Hardware.h index 7ad4017..22667c9 100644 --- a/vibrator/cs40l26/Hardware.h +++ b/vibrator/cs40l26/Hardware.h @@ -110,7 +110,7 @@ class HwApi : public Vibrator::HwApi, private HwApiBase { return true; } bool setFFEffect(int fd, struct ff_effect *effect, uint16_t timeoutMs) override { - if (((*effect).replay.length != timeoutMs) || (ioctl(fd, EVIOCSFF, effect) < 0)) { + if (ioctl(fd, EVIOCSFF, effect) < 0) { ALOGE("setFFEffect fail"); return false; } else { diff --git a/vibrator/cs40l26/Vibrator.cpp b/vibrator/cs40l26/Vibrator.cpp index 7d5227e..bfb7cf1 100644 --- a/vibrator/cs40l26/Vibrator.cpp +++ b/vibrator/cs40l26/Vibrator.cpp @@ -363,7 +363,8 @@ Vibrator::Vibrator(std::unique_ptr hwApiDefault, std::unique_ptr h mFfEffects[effectIndex] = { .type = FF_PERIODIC, .id = -1, - .replay.length = static_cast(mEffectDurations[effectIndex]), + // Length == 0 to allow firmware control of the duration + .replay.length = 0, .u.periodic.waveform = FF_CUSTOM, .u.periodic.custom_data = new int16_t[2]{RAM_WVFRM_BANK, effectIndex}, .u.periodic.custom_len = FF_CUSTOM_DATA_LEN, @@ -371,9 +372,11 @@ Vibrator::Vibrator(std::unique_ptr hwApiDefault, std::unique_ptr h // Bypass the waveform update due to different input name if ((strstr(inputEventName, "cs40l26") != nullptr) || (strstr(inputEventName, "cs40l26_dual_input") != nullptr)) { + // Let the firmware control the playback duration to avoid + // cutting any effect that is played short if (!mHwApiDef->setFFEffect( mInputFd, &mFfEffects[effectIndex], - static_cast(mFfEffects[effectIndex].replay.length))) { + mEffectDurations[effectIndex])) { ALOGE("Failed upload effect %d (%d): %s", effectIndex, errno, strerror(errno)); } } @@ -403,7 +406,8 @@ Vibrator::Vibrator(std::unique_ptr hwApiDefault, std::unique_ptr h mFfEffectsDual[effectIndex] = { .type = FF_PERIODIC, .id = -1, - .replay.length = static_cast(mEffectDurations[effectIndex]), + // Length == 0 to allow firmware control of the duration + .replay.length = 0, .u.periodic.waveform = FF_CUSTOM, .u.periodic.custom_data = new int16_t[2]{RAM_WVFRM_BANK, effectIndex}, .u.periodic.custom_len = FF_CUSTOM_DATA_LEN, @@ -411,9 +415,11 @@ Vibrator::Vibrator(std::unique_ptr hwApiDefault, std::unique_ptr h // Bypass the waveform update due to different input name if ((strstr(inputEventName, "cs40l26") != nullptr) || (strstr(inputEventName, "cs40l26_dual_input") != nullptr)) { + // Let the firmware control the playback duration to avoid + // cutting any effect that is played short if (!mHwApiDual->setFFEffect( mInputFdDual, &mFfEffectsDual[effectIndex], - static_cast(mFfEffectsDual[effectIndex].replay.length))) { + mEffectDurations[effectIndex])) { ALOGE("Failed upload flip's effect %d (%d): %s", effectIndex, errno, strerror(errno)); } @@ -795,9 +801,10 @@ ndk::ScopedAStatus Vibrator::compose(const std::vector &composi if (header_count == dspmem_chunk_bytes(ch)) { return ndk::ScopedAStatus::fromExceptionCode(EX_ILLEGAL_ARGUMENT); } else { - mFfEffects[WAVEFORM_COMPOSE].replay.length = totalDuration; + // Composition duration should be 0 to allow firmware to play the whole effect + mFfEffects[WAVEFORM_COMPOSE].replay.length = 0; if (mIsDual) { - mFfEffectsDual[WAVEFORM_COMPOSE].replay.length = totalDuration; + mFfEffectsDual[WAVEFORM_COMPOSE].replay.length = 0; } return performEffect(WAVEFORM_MAX_INDEX /*ignored*/, VOLTAGE_SCALE_MAX /*ignored*/, ch, callback); @@ -1501,9 +1508,10 @@ ndk::ScopedAStatus Vibrator::getCompoundDetails(Effect effect, EffectStrength st } *outTimeMs = timeMs; - mFfEffects[WAVEFORM_COMPOSE].replay.length = static_cast(timeMs); + // Compositions should have 0 duration + mFfEffects[WAVEFORM_COMPOSE].replay.length = 0; if (mIsDual) { - mFfEffectsDual[WAVEFORM_COMPOSE].replay.length = static_cast(timeMs); + mFfEffectsDual[WAVEFORM_COMPOSE].replay.length = 0; } return ndk::ScopedAStatus::ok(); diff --git a/vibrator/cs40l26/android.hardware.vibrator-service.cs40l26-private.rc b/vibrator/cs40l26/android.hardware.vibrator-service.cs40l26-private.rc index 2799cdc..e45356e 100644 --- a/vibrator/cs40l26/android.hardware.vibrator-service.cs40l26-private.rc +++ b/vibrator/cs40l26/android.hardware.vibrator-service.cs40l26-private.rc @@ -1,5 +1,5 @@ on property:vendor.all.modules.ready=1 - wait /sys/bus/i2c/devices/i2c-cs40l26a/calibration/redc_cal_time_ms + wait /sys/bus/i2c/devices/15-0043/calibration/redc_cal_time_ms mkdir /mnt/vendor/persist/haptics 0770 system system chmod 770 /mnt/vendor/persist/haptics @@ -9,26 +9,28 @@ on property:vendor.all.modules.ready=1 chown system system /mnt/vendor/persist/haptics/cs40l26.cal chown system system /mnt/vendor/persist/haptics/cs40l26_dual.cal - chown system system /sys/bus/i2c/devices/i2c-cs40l26a/calibration/f0_stored - chown system system /sys/bus/i2c/devices/i2c-cs40l26a-dual/calibration/f0_stored - chown system system /sys/bus/i2c/devices/i2c-cs40l26a/calibration/q_stored - chown system system /sys/bus/i2c/devices/i2c-cs40l26a-dual/calibration/q_stored - chown system system /sys/bus/i2c/devices/i2c-cs40l26a/calibration/redc_stored - chown system system /sys/bus/i2c/devices/i2c-cs40l26a-dual/calibration/redc_stored - chown system system /sys/bus/i2c/devices/i2c-cs40l26a/default/vibe_state - chown system system /sys/bus/i2c/devices/i2c-cs40l26a-dual/default/vibe_state - chown system system /sys/bus/i2c/devices/i2c-cs40l26a/default/num_waves - chown system system /sys/bus/i2c/devices/i2c-cs40l26a-dual/default/num_waves - chown system system /sys/bus/i2c/devices/i2c-cs40l26a/default/f0_offset - chown system system /sys/bus/i2c/devices/i2c-cs40l26a-dual/default/f0_offset - chown system system /sys/bus/i2c/devices/i2c-cs40l26a/default/owt_free_space - chown system system /sys/bus/i2c/devices/i2c-cs40l26a-dual/default/owt_free_space - chown system system /sys/bus/i2c/devices/i2c-cs40l26a/default/f0_comp_enable - chown system system /sys/bus/i2c/devices/i2c-cs40l26a-dual/default/f0_comp_enable - chown system system /sys/bus/i2c/devices/i2c-cs40l26a/default/redc_comp_enable - chown system system /sys/bus/i2c/devices/i2c-cs40l26a-dual/default/redc_comp_enable - chown system system /sys/bus/i2c/devices/i2c-cs40l26a/default/delay_before_stop_playback_us - chown system system /sys/bus/i2c/devices/i2c-cs40l26a-dual/default/delay_before_stop_playback_us + chown system system /sys/bus/i2c/devices/15-0043/calibration/f0_stored + chown system system /sys/bus/i2c/devices/15-0043/calibration/q_stored + chown system system /sys/bus/i2c/devices/15-0043/calibration/redc_stored + chown system system /sys/bus/i2c/devices/15-0043/default/vibe_state + chown system system /sys/bus/i2c/devices/15-0043/default/num_waves + chown system system /sys/bus/i2c/devices/15-0043/default/f0_offset + chown system system /sys/bus/i2c/devices/15-0043/default/owt_free_space + chown system system /sys/bus/i2c/devices/15-0043/default/f0_comp_enable + chown system system /sys/bus/i2c/devices/15-0043/default/redc_comp_enable + chown system system /sys/bus/i2c/devices/15-0043/default/delay_before_stop_playback_us + + chown system system /sys/bus/i2c/devices/15-0042/calibration/f0_stored + chown system system /sys/bus/i2c/devices/15-0042/calibration/q_stored + chown system system /sys/bus/i2c/devices/15-0042/calibration/redc_stored + chown system system /sys/bus/i2c/devices/15-0042/default/vibe_state + chown system system /sys/bus/i2c/devices/15-0042/default/num_waves + chown system system /sys/bus/i2c/devices/15-0042/default/f0_offset + chown system system /sys/bus/i2c/devices/15-0042/default/owt_free_space + chown system system /sys/bus/i2c/devices/15-0042/default/f0_comp_enable + chown system system /sys/bus/i2c/devices/15-0042/default/redc_comp_enable + chown system system /sys/bus/i2c/devices/15-0042/default/delay_before_stop_playback_us + chown system system /dev/gpiochip44 enable vendor.vibrator.cs40l26 @@ -46,8 +48,8 @@ service vendor.vibrator.cs40l26 /vendor/bin/hw/android.hardware.vibrator-service setenv CALIBRATION_FILEPATH /mnt/vendor/persist/haptics/cs40l26.cal setenv CALIBRATION_FILEPATH_DUAL /mnt/vendor/persist/haptics/cs40l26_dual.cal - setenv HWAPI_PATH_PREFIX /sys/bus/i2c/devices/i2c-cs40l26a/ - setenv HWAPI_PATH_PREFIX_DUAL /sys/bus/i2c/devices/i2c-cs40l26a-dual/ + setenv HWAPI_PATH_PREFIX /sys/bus/i2c/devices/15-0043/ + setenv HWAPI_PATH_PREFIX_DUAL /sys/bus/i2c/devices/15-0042/ setenv HWAPI_DEBUG_PATHS " calibration/f0_stored calibration/redc_stored