From 507cd590a5db735f0d09004479901fe6b720fe5e Mon Sep 17 00:00:00 2001 From: erwinabs Date: Mon, 27 Nov 2023 08:41:21 -0300 Subject: [PATCH] Revert "Revert "vayu: use blobs qti vibrator"" This reverts commit bdbbc32c68fea34e46277b53bbf6f851135555e4. --- device.mk | 9 ++------- recovery/root/init.recovery.qcom.rc | 9 ++++----- .../bin/hw/vendor.qti.hardware.vibrator.service | Bin 0 -> 15904 bytes .../root/vendor/lib64/libqtivibratoreffect.so | Bin 0 -> 10560 bytes .../lib64/vendor.qti.hardware.vibrator.impl.so | Bin 0 -> 28408 bytes 5 files changed, 6 insertions(+), 12 deletions(-) create mode 100644 recovery/root/vendor/bin/hw/vendor.qti.hardware.vibrator.service create mode 100644 recovery/root/vendor/lib64/libqtivibratoreffect.so create mode 100644 recovery/root/vendor/lib64/vendor.qti.hardware.vibrator.impl.so diff --git a/device.mk b/device.mk index 2655d03..45191d7 100644 --- a/device.mk +++ b/device.mk @@ -44,7 +44,7 @@ PLATFORM_VERSION_LAST_STABLE := $(PLATFORM_VERSION) # Recovery TARGET_RECOVERY_PIXEL_FORMAT := "RGBX_8888" TARGET_RECOVERY_FSTAB := $(DEVICE_PATH)/recovery/root/system/etc/recovery.fstab -TARGET_RECOVERY_DEVICE_MODULES += libion vendor.display.config@1.0 vendor.display.config@2.0 libdisplayconfig.qti vendor.qti.hardware.vibrator.service vendor.qti.hardware.vibrator.impl libqtivibratoreffect +TARGET_RECOVERY_DEVICE_MODULES += libion vendor.display.config@1.0 vendor.display.config@2.0 libdisplayconfig.qti # TWRP specific build flags TW_THEME := portrait_hdpi @@ -71,13 +71,8 @@ TW_INCLUDE_FASTBOOTD := true # Vibrator TW_SUPPORT_INPUT_AIDL_HAPTICS := true -RECOVERY_BINARY_SOURCE_FILES += \ - $(TARGET_OUT_VENDOR_EXECUTABLES)/hw/vendor.qti.hardware.vibrator.service - RECOVERY_LIBRARY_SOURCE_FILES += \ $(TARGET_OUT_SHARED_LIBRARIES)/libion.so \ $(TARGET_OUT_SYSTEM_EXT_SHARED_LIBRARIES)/vendor.display.config@1.0.so \ $(TARGET_OUT_SYSTEM_EXT_SHARED_LIBRARIES)/vendor.display.config@2.0.so \ - $(TARGET_OUT_SYSTEM_EXT_SHARED_LIBRARIES)/libdisplayconfig.qti.so \ - $(TARGET_OUT_VENDOR_SHARED_LIBRARIES)/vendor.qti.hardware.vibrator.impl.so \ - $(TARGET_OUT_VENDOR_SHARED_LIBRARIES)/libqtivibratoreffect.so + $(TARGET_OUT_SYSTEM_EXT_SHARED_LIBRARIES)/libdisplayconfig.qti.so diff --git a/recovery/root/init.recovery.qcom.rc b/recovery/root/init.recovery.qcom.rc index c8dfb79..c928acf 100755 --- a/recovery/root/init.recovery.qcom.rc +++ b/recovery/root/init.recovery.qcom.rc @@ -34,11 +34,10 @@ service overrideprops /system/bin/overrideprops.sh oneshot seclabel u:r:recovery:s0 -service vendor.qti.vibrator /system/bin/vendor.qti.hardware.vibrator.service - user root - group root - disabled - setenv LD_LIBRARY_PATH /vendor/lib64:/vendor/lib:/system/lib64:/system/lib:/sbin +service vendor.qti.vibrator /vendor/bin/hw/vendor.qti.hardware.vibrator.service + class hal + user system + group system input seclabel u:r:recovery:s0 on fs diff --git a/recovery/root/vendor/bin/hw/vendor.qti.hardware.vibrator.service b/recovery/root/vendor/bin/hw/vendor.qti.hardware.vibrator.service new file mode 100644 index 0000000000000000000000000000000000000000..6a0d2706116be68c3ad542ede26e26b7a98fb9a7 GIT binary patch literal 15904 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 literal 0 HcmV?d00001 diff --git a/recovery/root/vendor/lib64/libqtivibratoreffect.so b/recovery/root/vendor/lib64/libqtivibratoreffect.so new file mode 100644 index 0000000000000000000000000000000000000000..0becef2ae371044104766a5516227e5923c77453 GIT binary patch literal 10560 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