diff --git a/holi.mk b/holi.mk index 2f49d81..0e6856e 100644 --- a/holi.mk +++ b/holi.mk @@ -372,6 +372,7 @@ PRODUCT_PACKAGES += \ PRODUCT_PACKAGES += \ init.batterysecret.rc \ init.class_main.sh \ + init.goodix.events.sh \ init.mi.btmac.sh \ init.kernel.post_boot.sh \ init.kernel.post_boot-blair.sh \ diff --git a/rootdir/Android.mk b/rootdir/Android.mk index 1086a86..8dae2ba 100644 --- a/rootdir/Android.mk +++ b/rootdir/Android.mk @@ -17,6 +17,13 @@ LOCAL_SRC_FILES := bin/init.mi.btmac.sh LOCAL_MODULE_PATH := $(TARGET_OUT_VENDOR_EXECUTABLES) include $(BUILD_PREBUILT) +include $(CLEAR_VARS) +LOCAL_MODULE := init.goodix.events.sh +LOCAL_MODULE_TAGS := optional +LOCAL_MODULE_CLASS := ETC +LOCAL_SRC_FILES := bin/init.goodix.events.sh +LOCAL_MODULE_PATH := $(TARGET_OUT_VENDOR_EXECUTABLES) +include $(BUILD_PREBUILT) include $(CLEAR_VARS) LOCAL_MODULE := init.kernel.post_boot.sh diff --git a/rootdir/bin/init.goodix.events.sh b/rootdir/bin/init.goodix.events.sh new file mode 100644 index 0000000..1d9a0e6 --- /dev/null +++ b/rootdir/bin/init.goodix.events.sh @@ -0,0 +1,8 @@ +#! /vendor/bin/sh +EVENT_NAME=$(tr "\n" " " < /proc/bus/input/devices | \ +grep -o "uinput-goodix.*" | \ +grep -Eo "event[0-9]+" | \ +head -1) + +[ -z "$EVENT_NAME" ] && exit +rm /dev/input/$EVENT_NAME diff --git a/rootdir/etc/init.target.rc b/rootdir/etc/init.target.rc index 155687d..ae8071a 100644 --- a/rootdir/etc/init.target.rc +++ b/rootdir/etc/init.target.rc @@ -254,6 +254,16 @@ service checknv /system/bin/checknv oneshot seclabel u:r:checknv:s0 +service vendor.goodix-events /vendor/bin/init.goodix.events.sh + class late_start + user root + group root system input + disabled + oneshot + # Sync attribute value between system and vendor on property:persist.sys.mcc.mnc=* setprop persist.vendor.mcc.mnc ${persist.sys.mcc.mnc} + +on property:sys.boot_completed=1 + start vendor.goodix-events diff --git a/sepolicy/vendor/file_contexts b/sepolicy/vendor/file_contexts index 8ab1611..899e206 100644 --- a/sepolicy/vendor/file_contexts +++ b/sepolicy/vendor/file_contexts @@ -38,6 +38,9 @@ /vendor/bin/hw/android\.hardware\.biometrics\.fingerprint@2.3-service\.xiaomi u:object_r:hal_fingerprint_default_exec:s0 /vendor/bin/hw/vendor\.silead\.hardware\.fingerprintext@1\.0-service u:object_r:hal_fingerprint_default_exec:s0 +# Fix Goodix events +/vendor/bin/init.goodix.events.sh u:object_r:vendor_goodix_events_exec:s0 + # Health /sys/devices/platform/soc/soc:maxim_ds28e16/ds_page0_data u:object_r:vendor_sysfs_battery_supply:s0 diff --git a/sepolicy/vendor/vendor_goodix_events.te b/sepolicy/vendor/vendor_goodix_events.te new file mode 100644 index 0000000..346afa8 --- /dev/null +++ b/sepolicy/vendor/vendor_goodix_events.te @@ -0,0 +1,12 @@ +type vendor_goodix_events, domain; +type vendor_goodix_events_exec, exec_type, vendor_file_type, file_type; + +init_daemon_domain(vendor_goodix_events) + +allow vendor_goodix_events vendor_file:file rx_file_perms; +allow vendor_goodix_events proc:file r_file_perms; +allow vendor_goodix_events input_device:chr_file { rw_file_perms unlink }; +allow vendor_goodix_events input_device:dir create_dir_perms; +allow vendor_goodix_events vendor_toolbox_exec:file rx_file_perms; + +vndbinder_use(vendor_goodix_events)