From 032a78d43fa2eefecab299e9c393239017e35865 Mon Sep 17 00:00:00 2001 From: Marc Bourgoin Date: Wed, 7 Sep 2022 22:22:01 -0600 Subject: [PATCH] sm7325-common: Import stock charge_only_mode Change-Id: I3542bac25ac2a161a165c55cbabe93ec75c04ce8 --- proprietary-files.txt | 3 + rootdir/etc/init/hw/init.mmi.charge_only.rc | 10 ++- rootdir/etc/init/hw/init.mmi.rc | 33 ++++++++ sepolicy/vendor/charge_only.te | 94 +++++++++++++++++++++ sepolicy/vendor/file.te | 4 + sepolicy/vendor/file_contexts | 5 ++ 6 files changed, 148 insertions(+), 1 deletion(-) create mode 100644 sepolicy/vendor/charge_only.te diff --git a/proprietary-files.txt b/proprietary-files.txt index 836eaf2..af48074 100644 --- a/proprietary-files.txt +++ b/proprietary-files.txt @@ -129,8 +129,11 @@ vendor/lib64/libcdsp_default_listener.so vendor/lib64/libcdsprpc.so # Charger +vendor/bin/charge_only_mode vendor/bin/hvdcp_opti vendor/etc/init/vendor.qti.hardware.charger_monitor@1.0-service.rc +vendor/etc/charger_fstab.qti +vendor/etc/charger_fw_fstab.qti # CNE -vendor/app/CneApp/CneApp.apk diff --git a/rootdir/etc/init/hw/init.mmi.charge_only.rc b/rootdir/etc/init/hw/init.mmi.charge_only.rc index 26dd6cc..57d0706 100644 --- a/rootdir/etc/init/hw/init.mmi.charge_only.rc +++ b/rootdir/etc/init/hw/init.mmi.charge_only.rc @@ -1,6 +1,14 @@ -on charger +# Wait for the USB init shell script to finish, to prevent enumeration issues +on property:init.svc.vendor.mmi-usb-sh=stopped && property:ro.boot.mode=charger + setprop sys.usb.configfs 1 + setprop sys.usb.config charging + +on moto-charger stop vendor.sensors + trigger firmware_mounts_complete wait /sys/class/power_supply/battery + start vendor.charge_only_mode + start vendor.batt_health start vendor.thermal-com start system_suspend diff --git a/rootdir/etc/init/hw/init.mmi.rc b/rootdir/etc/init/hw/init.mmi.rc index 40a35c6..a274f9e 100644 --- a/rootdir/etc/init/hw/init.mmi.rc +++ b/rootdir/etc/init/hw/init.mmi.rc @@ -226,6 +226,9 @@ on post-fs-data # Setup folder for aplogd mkdir /data/vendor/aplogd 0770 log log + # Create directory used by chargeonlymode + mkdir /data/vendor/chargeonly 0750 root log + # Subsystem RAM-dumps mkdir /data/vendor/ss-ram-dumps 0750 system log mkdir /data/vendor/ss-ram-dumps/bp-dumps 0750 system log @@ -296,6 +299,12 @@ on boot chown audio audio /sys/kernel/aov/register chown audio audio /sys/kernel/aov/event + # Clear cooldown state + mkdir /mnt/vendor/persist/chargeonly 0770 system system + write /mnt/vendor/persist/chargeonly/cooldown n + chown system system /mnt/vendor/persist/chargeonly/cooldown + chmod 0660 /mnt/vendor/persist/chargeonly/cooldown + # Quiet binder logs write /sys/module/binder/parameters/debug_mask 0x5 @@ -307,6 +316,24 @@ on boot chown system system /sys/class/capsense/reset chown system system /sys/class/capsense/int_state +on late-fs-charger + class_start early_hal + wait_for_prop hwservicemanager.ready true + exec_start wait_for_keymaster + mount_all /vendor/etc/fstab.qcom --late + # Boot time fs tune + write /sys/block/dm-9/queue/read_ahead_kb 2048 + +on charger + trigger early-fs + trigger fs + trigger post-fs + trigger late-fs-charger + trigger post-fs-data + trigger moto-charger + class_stop main + class_stop late_start + on property:sys.boot_completed=1 && property:ro.vendor.zram.product_swapon="" write /proc/sys/vm/page-cluster 0 swapon_all /vendor/etc/fstab.qcom @@ -376,6 +403,12 @@ on property:vendor.hw.touch.status="dead" on property:vendor.hw.touch.status="ready" start vendor.touch-ready-sh +service vendor.charge_only_mode /vendor/bin/charge_only_mode + user root + group graphics system input + capabilities SYS_BOOT + disabled + # bugreport is triggered by holding down volume down, volume up and power service bugreport /system/bin/dumpstate -d -p -B -z \ -o /data/user_de/0/com.android.shell/files/bugreports/bugreport diff --git a/sepolicy/vendor/charge_only.te b/sepolicy/vendor/charge_only.te new file mode 100644 index 0000000..b01664d --- /dev/null +++ b/sepolicy/vendor/charge_only.te @@ -0,0 +1,94 @@ +type charge_only, domain; +type charge_only_exec, exec_type, vendor_file_type, file_type; +init_daemon_domain(charge_only) + +# Read chargeonly_data_file +allow charge_only chargeonly_data_file:dir rw_dir_perms; +allow charge_only chargeonly_data_file:file create_file_perms; + +# Write to /dev/kmsg +allow charge_only kmsg_device:chr_file rw_file_perms; + +# Read access to pseudo filesystems. +r_dir_file(charge_only, sysfs_type) +r_dir_file(charge_only, rootfs) +r_dir_file(charge_only, cgroup) + +# Self permissions +allow charge_only self:netlink_kobject_uevent_socket create_socket_perms_no_ioctl; + +# Wakelock +wakelock_use(charge_only) + +# Allow access to sysfs +allow charge_only sysfs:dir { read open }; +allow charge_only sysfs:file rw_file_perms; + +# Allow access to wakelock sysfs +allow charge_only sysfs_wake_lock:file rw_file_perms; + +# Allow access to battery info sysfs +allow charge_only sysfs_batteryinfo:file r_file_perms; + +# Allow access to battery supply sysfs +allow charge_only sysfs_battery_supply:dir r_dir_perms; +allow charge_only sysfs_battery_supply:file r_file_perms; +allow charge_only sysfs_battery_supply:lnk_file r_file_perms; + +# Allow access to usb supply sysfs +allow charge_only sysfs_usb_supply:dir r_dir_perms; +allow charge_only sysfs_usb_supply:file r_file_perms; + +# Allow access to thermal sysfs +allow charge_only sysfs_thermal:dir r_dir_perms; +allow charge_only sysfs_thermal:file r_file_perms; +allow charge_only sysfs_thermal:lnk_file r_file_perms; + +# Allow access to power sysfs +allow charge_only sysfs_power:file rw_file_perms; + +# Allow access to graphics sysfs +allow charge_only sysfs_graphics:dir r_dir_perms; +allow charge_only sysfs_graphics:file rw_file_perms; + +# Read /sys/fs/pstore/console-ramoops +# Don't worry about overly broad permissions for now, as there's +# only one file in /sys/fs/pstore +allow charge_only pstorefs:dir r_dir_perms; +allow charge_only pstorefs:file r_file_perms; + +# Allow access to graphics dev +allow charge_only graphics_device:dir r_dir_perms; +allow charge_only graphics_device:chr_file rw_file_perms; + +# Allow access to input dev +allow charge_only input_device:dir r_dir_perms; +allow charge_only input_device:chr_file r_file_perms; + +# Allow access to tty dev +allow charge_only tty_device:chr_file rw_file_perms; + +# Allow access to rtc dev +allow charge_only rtc_device:chr_file rw_file_perms; + +# Allow access to proc_sysrq +allow charge_only proc_sysrq:file rw_file_perms; + +# Allow access to persist dir +allow charge_only persist_chargeonly_file:dir r_dir_perms; +allow charge_only persist_chargeonly_file:file r_file_perms; + +# Allow access to vendor dir +allow charge_only mnt_vendor_file:dir r_dir_perms; + +# Exec shell scripts +allow charge_only vendor_shell_exec:file rx_file_perms; + +# Socks +allow charge_only property_socket:sock_file write; +allow charge_only init:unix_stream_socket connectto; + +# Props +get_prop(charge_only, powerctl_prop) +set_prop(charge_only, powerctl_prop) +get_prop(charge_only, vendor_display_prop) diff --git a/sepolicy/vendor/file.te b/sepolicy/vendor/file.te index 0e3d4f2..8e72855 100644 --- a/sepolicy/vendor/file.te +++ b/sepolicy/vendor/file.te @@ -1,6 +1,10 @@ # Camera type vendor_persist_camera_file, file_type, vendor_persist_type; +# charge_only_mode +type chargeonly_data_file, file_type, data_file_type; +type persist_chargeonly_file, file_type, data_file_type; + # Cutback type cutback_data_file, file_type, data_file_type; type cutback_socket, file_type; diff --git a/sepolicy/vendor/file_contexts b/sepolicy/vendor/file_contexts index 508a61d..090aefa 100644 --- a/sepolicy/vendor/file_contexts +++ b/sepolicy/vendor/file_contexts @@ -34,6 +34,11 @@ /sys/devices/virtual/input/input[0-9]+/offset u:object_r:vendor_sysfs_laser:s0 /sys/devices/virtual/input/input[0-9]+/xtalk u:object_r:vendor_sysfs_laser:s0 +# Charger +/data/vendor/chargeonly(/.*)? u:object_r:chargeonly_data_file:s0 +/(mnt/vendor/persist|persist)/chargeonly(/.*)? u:object_r:persist_chargeonly_file:s0 +/(vendor|system/vendor)/bin/charge_only_mode u:object_r:charge_only_exec:s0 + # Fingerprint /(mnt/vendor/persist|persist)/fps(/.*)? u:object_r:vendor_persist_fps_file:s0 /(vendor|system/vendor)/bin/fpc_ident u:object_r:hal_fingerprint_default_exec:s0