From 02271875b7fee9a29477346ad094edb2120b9be4 Mon Sep 17 00:00:00 2001 From: johnmart19 Date: Fri, 9 May 2025 15:08:11 +0300 Subject: [PATCH] sm8250-common: Import Xiaomi TouchFeature service --- Android.bp | 97 ++++++++++++++++++ ...r.xiaomi.hardware.touchfeature@1.0-service | Bin 0 -> 11680 bytes proprietary/vendor/bin/toucheventcheck | Bin 0 -> 70320 bytes ...iaomi.hardware.touchfeature@1.0-service.rc | 21 ++++ ...r.xiaomi.hardware.touchfeature@1.0-impl.so | Bin 0 -> 25272 bytes sm8250-common-vendor.mk | 4 + 6 files changed, 122 insertions(+) create mode 100755 proprietary/vendor/bin/hw/vendor.xiaomi.hardware.touchfeature@1.0-service create mode 100755 proprietary/vendor/bin/toucheventcheck create mode 100644 proprietary/vendor/etc/init/vendor.xiaomi.hardware.touchfeature@1.0-service.rc create mode 100644 proprietary/vendor/lib64/hw/vendor.xiaomi.hardware.touchfeature@1.0-impl.so diff --git a/Android.bp b/Android.bp index 39c4434..cbe010a 100644 --- a/Android.bp +++ b/Android.bp @@ -4260,6 +4260,40 @@ cc_prebuilt_library_shared { soc_specific: true, } +cc_prebuilt_library_shared { + name: "vendor.xiaomi.hardware.touchfeature@1.0-impl", + owner: "xiaomi", + strip: { + none: true, + }, + target: { + android_arm64: { + srcs: [ + "proprietary/vendor/lib64/hw/vendor.xiaomi.hardware.touchfeature@1.0-impl.so", + ], + shared_libs: [ + "libhidlbase", + "libhidltransport", + "libutils", + "liblog", + "libcutils", + "libhardware", + "libbase", + "libbinder", + "vendor.xiaomi.hardware.touchfeature@1.0", + "libc++", + "libc", + "libm", + "libdl", + ], + }, + }, + compile_multilib: "64", + relative_install_path: "hw", + prefer: true, + soc_specific: true, +} + cc_prebuilt_library_shared { name: "jcos_nq_client", owner: "xiaomi", @@ -13614,6 +13648,40 @@ cc_prebuilt_binary { soc_specific: true, } +cc_prebuilt_binary { + name: "vendor.xiaomi.hardware.touchfeature@1.0-service", + owner: "xiaomi", + target: { + android_arm64: { + srcs: [ + "proprietary/vendor/bin/hw/vendor.xiaomi.hardware.touchfeature@1.0-service", + ], + shared_libs: [ + "liblog", + "libcutils", + "libbase", + "libutils", + "libbinder", + "libhardware", + "libhidlbase", + "libhidltransport", + "vendor.xiaomi.hardware.touchfeature@1.0", + "libc++", + "libc", + "libm", + "libdl", + ], + }, + }, + compile_multilib: "64", + strip: { + none: true, + }, + prefer: true, + relative_install_path: "hw", + soc_specific: true, +} + cc_prebuilt_binary { name: "ims_rtp_daemon", owner: "xiaomi", @@ -14574,6 +14642,35 @@ cc_prebuilt_binary { soc_specific: true, } +cc_prebuilt_binary { + name: "toucheventcheck", + owner: "xiaomi", + target: { + android_arm64: { + srcs: [ + "proprietary/vendor/bin/toucheventcheck", + ], + shared_libs: [ + "libutils", + "libhardware", + "liblog", + "libcutils", + "libbinder", + "libc++", + "libc", + "libm", + "libdl", + ], + }, + }, + compile_multilib: "64", + strip: { + none: true, + }, + prefer: true, + soc_specific: true, +} + cc_prebuilt_binary { name: "vppservice", owner: "xiaomi", diff --git a/proprietary/vendor/bin/hw/vendor.xiaomi.hardware.touchfeature@1.0-service b/proprietary/vendor/bin/hw/vendor.xiaomi.hardware.touchfeature@1.0-service new file mode 100755 index 0000000000000000000000000000000000000000..076778b1d34c142ca15cc2e339092e7b3e56f5fd GIT binary patch literal 11680 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 literal 0 HcmV?d00001 diff --git a/proprietary/vendor/etc/init/vendor.xiaomi.hardware.touchfeature@1.0-service.rc b/proprietary/vendor/etc/init/vendor.xiaomi.hardware.touchfeature@1.0-service.rc new file mode 100644 index 0000000..9157f74 --- /dev/null +++ b/proprietary/vendor/etc/init/vendor.xiaomi.hardware.touchfeature@1.0-service.rc @@ -0,0 +1,21 @@ +# Copyright (c) 2017 Xiaomi, Inc. +# All Rights Reserved. +# Confidential and Proprietary - Xiaomi, Inc. +# +on boot + chown system system /dev/xiaomi-touch + chmod 0664 /dev/xiaomi-touch + chown system system /sys/class/touch/tp_dev/fod_status + chmod 0664 /sys/class/touch/tp_dev/fod_status + +service touchfeature-hal-1-0 /vendor/bin/hw/vendor.xiaomi.hardware.touchfeature@1.0-service + class hal + user system + group system system + onrestart restart touchfeature + +service toucheventcheck /vendor/bin/toucheventcheck + class main + user root + group system + oneshot diff --git a/proprietary/vendor/lib64/hw/vendor.xiaomi.hardware.touchfeature@1.0-impl.so b/proprietary/vendor/lib64/hw/vendor.xiaomi.hardware.touchfeature@1.0-impl.so new file mode 100644 index 0000000000000000000000000000000000000000..cb055a1964036097dda1ccab089d6478b27b4adf GIT binary patch literal 25272 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 literal 0 HcmV?d00001 diff --git a/sm8250-common-vendor.mk b/sm8250-common-vendor.mk index 9590732..a25039d 100644 --- a/sm8250-common-vendor.mk +++ b/sm8250-common-vendor.mk @@ -96,6 +96,7 @@ PRODUCT_COPY_FILES += \ vendor/xiaomi/sm8250-common/proprietary/vendor/etc/init/vendor.qti.rmt_storage.rc:$(TARGET_COPY_OUT_VENDOR)/etc/init/vendor.qti.rmt_storage.rc \ vendor/xiaomi/sm8250-common/proprietary/vendor/etc/init/vendor.qti.secure_element@1.2-service.rc:$(TARGET_COPY_OUT_VENDOR)/etc/init/vendor.qti.secure_element@1.2-service.rc \ vendor/xiaomi/sm8250-common/proprietary/vendor/etc/init/vendor.qti.tftp.rc:$(TARGET_COPY_OUT_VENDOR)/etc/init/vendor.qti.tftp.rc \ + vendor/xiaomi/sm8250-common/proprietary/vendor/etc/init/vendor.xiaomi.hardware.touchfeature@1.0-service.rc:$(TARGET_COPY_OUT_VENDOR)/etc/init/vendor.xiaomi.hardware.touchfeature@1.0-service.rc \ vendor/xiaomi/sm8250-common/proprietary/vendor/etc/init/vppservice.rc:$(TARGET_COPY_OUT_VENDOR)/etc/init/vppservice.rc \ vendor/xiaomi/sm8250-common/proprietary/vendor/etc/izat.conf:$(TARGET_COPY_OUT_VENDOR)/etc/izat.conf \ vendor/xiaomi/sm8250-common/proprietary/vendor/etc/lowi.conf:$(TARGET_COPY_OUT_VENDOR)/etc/lowi.conf \ @@ -258,6 +259,7 @@ PRODUCT_PACKAGES += \ vendor.qti.hardware.qseecom@1.0-impl \ vendor.qti.hardware.qteeconnector@1.0-impl \ vendor.qti.hardware.soter@1.0-impl \ + vendor.xiaomi.hardware.touchfeature@1.0-impl \ jcos_nq_client \ lib-imscmservice \ lib-imsdpl \ @@ -577,6 +579,7 @@ PRODUCT_PACKAGES += \ vendor.qti.hardware.tui_comm@1.0-service-qti \ vendor.qti.media.c2@1.0-service \ vendor.qti.secure_element@1.2-service \ + vendor.xiaomi.hardware.touchfeature@1.0-service \ ims_rtp_daemon \ imsdatadaemon \ imsqmidaemon \ @@ -609,6 +612,7 @@ PRODUCT_PACKAGES += \ tftp_server \ thermal-engine \ time_daemon \ + toucheventcheck \ vppservice \ wifidisplayhalservice \ xtra-daemon \