Repository: EssentialOpenSource/device_essential_mata
Branch: master
Commit: 7343aaa1ce95
Files: 452
Total size: 25.3 MB
Directory structure:
gitextract_rnbf7k_u/
├── AndroidBoard.mk
├── AndroidProducts.mk
├── BoardConfig.mk
├── Image.gz-dtb
├── README.md
├── Vendor_2e17_Product_a001.kl
├── WCNSS_qcom_cfg.ini
├── android.sofware.nfc.beam.xml
├── audio/
│ ├── acdbdata/
│ │ ├── Bluetooth_cal.acdb
│ │ ├── General_cal.acdb
│ │ ├── Global_cal.acdb
│ │ ├── Handset_cal.acdb
│ │ ├── Hdmi_cal.acdb
│ │ ├── Headset_cal.acdb
│ │ ├── Speaker_cal.acdb
│ │ └── workspaceFile.qwsp
│ ├── audio_platform_info_mata.xml
│ ├── audio_policy_configuration.xml
│ ├── audio_policy_volumes.xml
│ ├── default_volume_tables.xml
│ ├── mixer_paths_tasha_mata.xml
│ ├── msm8998.mk
│ ├── smartamp/
│ │ ├── T9891_mu.drc
│ │ ├── T9891_mu.vstep
│ │ ├── T9891_rt.drc
│ │ ├── T9891_rt.vstep
│ │ ├── T9891_vo.drc
│ │ ├── T9891_vo.vstep
│ │ ├── TFA9891.cnt
│ │ ├── TFA9891.cnt_preformat.ini
│ │ ├── TFA9891.ini
│ │ ├── TFA9891.speaker
│ │ ├── TFA9891N1A_Dec2015.config
│ │ └── TFA9891_N1A_11_1_31_NL3_HQ.patch
│ └── sound_trigger_mixer_paths.xml
├── audio_effects.xml
├── base.mk
├── bdroid_buildcfg.h
├── compatibility_matrix.xml
├── config.fs
├── device-vendor.mk
├── dumpstate/
│ ├── Android.mk
│ ├── DumpstateDevice.cpp
│ ├── DumpstateDevice.h
│ ├── android.hardware.dumpstate@1.0-service.mata.rc
│ └── service.cpp
├── egl.cfg
├── essential-hiddenapi-package-whitelist.xml
├── etc/
│ ├── apns-conf.xml
│ └── spn-conf.xml
├── excluded-input-devices.xml
├── fstab.mata
├── gpio-keys-mata.kl
├── healthd/
│ ├── Android.bp
│ ├── HealthService.cpp
│ ├── android.hardware.health@2.0-service.mata.rc
│ └── images/
│ └── animation.txt
├── hostapd.accept
├── hostapd.conf
├── hostapd.deny
├── init.hardware.diag.rc.user
├── init.hardware.diag.rc.userdebug
├── init.recovery.mata.rc
├── manifest.xml
├── mata-disabled-until-used-preinstalled-carrier-app.xml
├── mata.mk
├── media/
│ ├── media_codecs.xml
│ ├── media_codecs_performance.xml
│ └── media_profiles_V1_0.xml
├── msm_irqbalance.conf
├── nfc/
│ ├── libnfc-brcm-mata.conf
│ └── libnfc-nxp.conf
├── overlay/
│ ├── frameworks/
│ │ └── base/
│ │ ├── core/
│ │ │ └── res/
│ │ │ └── res/
│ │ │ ├── values/
│ │ │ │ ├── config.xml
│ │ │ │ ├── dimens.xml
│ │ │ │ └── strings.xml
│ │ │ ├── values-mcc234-mnc15/
│ │ │ │ └── config.xml
│ │ │ ├── values-mcc234-mnc15-en-rGB/
│ │ │ │ └── config.xml
│ │ │ ├── values-mcc234-mnc15-en-rIN/
│ │ │ │ └── config.xml
│ │ │ ├── values-mcc262-mnc02/
│ │ │ │ └── config.xml
│ │ │ ├── values-mcc262-mnc02-en-rGB/
│ │ │ │ └── config.xml
│ │ │ ├── values-mcc262-mnc02-en-rIN/
│ │ │ │ └── config.xml
│ │ │ ├── values-mcc262-mnc04/
│ │ │ │ └── config.xml
│ │ │ ├── values-mcc262-mnc04-en-rGB/
│ │ │ │ └── config.xml
│ │ │ ├── values-mcc262-mnc04-en-rIN/
│ │ │ │ └── config.xml
│ │ │ ├── values-mcc262-mnc09/
│ │ │ │ └── config.xml
│ │ │ ├── values-mcc262-mnc09-en-rGB/
│ │ │ │ └── config.xml
│ │ │ ├── values-mcc262-mnc09-en-rIN/
│ │ │ │ └── config.xml
│ │ │ ├── values-mcc310-mnc004/
│ │ │ │ └── config.xml
│ │ │ ├── values-mcc310-mnc120/
│ │ │ │ └── config.xml
│ │ │ ├── values-mcc310-mnc260/
│ │ │ │ └── config.xml
│ │ │ ├── values-mcc310-mnc410/
│ │ │ │ └── config.xml
│ │ │ ├── values-mcc311-mnc480/
│ │ │ │ └── config.xml
│ │ │ ├── values-mcc311-mnc490/
│ │ │ │ └── config.xml
│ │ │ ├── values-mcc311-mnc870/
│ │ │ │ └── config.xml
│ │ │ ├── values-mcc312-mnc530/
│ │ │ │ └── config.xml
│ │ │ ├── values-mcc440-mnc20/
│ │ │ │ └── config.xml
│ │ │ ├── values-mcc460-mnc03/
│ │ │ │ └── config.xml
│ │ │ ├── values-mcc460-mnc11/
│ │ │ │ └── config.xml
│ │ │ └── xml/
│ │ │ └── power_profile.xml
│ │ └── packages/
│ │ ├── Keyguard/
│ │ │ └── res/
│ │ │ └── values/
│ │ │ └── config.xml
│ │ ├── SettingsLib/
│ │ │ └── res/
│ │ │ └── values/
│ │ │ └── arrays.xml
│ │ ├── SettingsProvider/
│ │ │ └── res/
│ │ │ └── values/
│ │ │ └── defaults.xml
│ │ └── SystemUI/
│ │ └── res/
│ │ ├── values/
│ │ │ ├── config.xml
│ │ │ └── dimens.xml
│ │ ├── values-mcc208-mnc01/
│ │ │ └── config.xml
│ │ ├── values-mcc302-mnc220/
│ │ │ └── config.xml
│ │ ├── values-mcc310-mnc120/
│ │ │ └── config.xml
│ │ ├── values-mcc311-mnc490/
│ │ │ └── config.xml
│ │ ├── values-mcc311-mnc870/
│ │ │ └── config.xml
│ │ ├── values-mcc312-mnc530/
│ │ │ └── config.xml
│ │ └── values-mcc440-mnc20/
│ │ └── config.xml
│ └── packages/
│ ├── apps/
│ │ ├── Bluetooth/
│ │ │ └── res/
│ │ │ └── values/
│ │ │ └── config.xml
│ │ ├── CellBroadcastReceiver/
│ │ │ └── res/
│ │ │ └── values/
│ │ │ └── config.xml
│ │ ├── Dialer/
│ │ │ └── InCallUI/
│ │ │ └── res/
│ │ │ └── values/
│ │ │ └── config.xml
│ │ ├── Phone/
│ │ │ └── res/
│ │ │ └── values/
│ │ │ └── config.xml
│ │ └── Settings/
│ │ └── res/
│ │ ├── values/
│ │ │ ├── arrays.xml
│ │ │ ├── bools.xml
│ │ │ ├── config.xml
│ │ │ ├── dimens.xml
│ │ │ └── strings.xml
│ │ ├── values-af/
│ │ │ └── strings.xml
│ │ ├── values-am/
│ │ │ └── strings.xml
│ │ ├── values-ar/
│ │ │ └── strings.xml
│ │ ├── values-as/
│ │ │ └── strings.xml
│ │ ├── values-az/
│ │ │ └── strings.xml
│ │ ├── values-b+sr+Latn/
│ │ │ └── strings.xml
│ │ ├── values-be/
│ │ │ └── strings.xml
│ │ ├── values-bg/
│ │ │ └── strings.xml
│ │ ├── values-bn/
│ │ │ └── strings.xml
│ │ ├── values-bs/
│ │ │ └── strings.xml
│ │ ├── values-ca/
│ │ │ └── strings.xml
│ │ ├── values-cs/
│ │ │ └── strings.xml
│ │ ├── values-da/
│ │ │ └── strings.xml
│ │ ├── values-de/
│ │ │ └── strings.xml
│ │ ├── values-el/
│ │ │ └── strings.xml
│ │ ├── values-en-rAU/
│ │ │ └── strings.xml
│ │ ├── values-en-rCA/
│ │ │ └── strings.xml
│ │ ├── values-en-rGB/
│ │ │ └── strings.xml
│ │ ├── values-en-rIN/
│ │ │ └── strings.xml
│ │ ├── values-en-rXC/
│ │ │ └── strings.xml
│ │ ├── values-es/
│ │ │ └── strings.xml
│ │ ├── values-es-rUS/
│ │ │ └── strings.xml
│ │ ├── values-et/
│ │ │ └── strings.xml
│ │ ├── values-eu/
│ │ │ └── strings.xml
│ │ ├── values-fa/
│ │ │ └── strings.xml
│ │ ├── values-fi/
│ │ │ └── strings.xml
│ │ ├── values-fr/
│ │ │ └── strings.xml
│ │ ├── values-fr-rCA/
│ │ │ └── strings.xml
│ │ ├── values-gl/
│ │ │ └── strings.xml
│ │ ├── values-gu/
│ │ │ └── strings.xml
│ │ ├── values-hi/
│ │ │ └── strings.xml
│ │ ├── values-hr/
│ │ │ └── strings.xml
│ │ ├── values-hu/
│ │ │ └── strings.xml
│ │ ├── values-hy/
│ │ │ └── strings.xml
│ │ ├── values-in/
│ │ │ └── strings.xml
│ │ ├── values-is/
│ │ │ └── strings.xml
│ │ ├── values-it/
│ │ │ └── strings.xml
│ │ ├── values-iw/
│ │ │ └── strings.xml
│ │ ├── values-ja/
│ │ │ └── strings.xml
│ │ ├── values-ka/
│ │ │ └── strings.xml
│ │ ├── values-kk/
│ │ │ └── strings.xml
│ │ ├── values-km/
│ │ │ └── strings.xml
│ │ ├── values-kn/
│ │ │ └── strings.xml
│ │ ├── values-ko/
│ │ │ └── strings.xml
│ │ ├── values-ky/
│ │ │ └── strings.xml
│ │ ├── values-lo/
│ │ │ └── strings.xml
│ │ ├── values-lt/
│ │ │ └── strings.xml
│ │ ├── values-lv/
│ │ │ └── strings.xml
│ │ ├── values-mcc310-mnc120/
│ │ │ └── arrays.xml
│ │ ├── values-mcc311-mnc490/
│ │ │ └── arrays.xml
│ │ ├── values-mcc311-mnc870/
│ │ │ └── arrays.xml
│ │ ├── values-mcc312-mnc530/
│ │ │ └── arrays.xml
│ │ ├── values-mcc440-mnc20/
│ │ │ └── arrays.xml
│ │ ├── values-mk/
│ │ │ └── strings.xml
│ │ ├── values-ml/
│ │ │ └── strings.xml
│ │ ├── values-mn/
│ │ │ └── strings.xml
│ │ ├── values-mr/
│ │ │ └── strings.xml
│ │ ├── values-ms/
│ │ │ └── strings.xml
│ │ ├── values-my/
│ │ │ └── strings.xml
│ │ ├── values-nb/
│ │ │ └── strings.xml
│ │ ├── values-ne/
│ │ │ └── strings.xml
│ │ ├── values-nl/
│ │ │ └── strings.xml
│ │ ├── values-or/
│ │ │ └── strings.xml
│ │ ├── values-pa/
│ │ │ └── strings.xml
│ │ ├── values-pl/
│ │ │ └── strings.xml
│ │ ├── values-pt/
│ │ │ └── strings.xml
│ │ ├── values-pt-rBR/
│ │ │ └── strings.xml
│ │ ├── values-pt-rPT/
│ │ │ └── strings.xml
│ │ ├── values-ro/
│ │ │ └── strings.xml
│ │ ├── values-ru/
│ │ │ └── strings.xml
│ │ ├── values-si/
│ │ │ └── strings.xml
│ │ ├── values-sk/
│ │ │ └── strings.xml
│ │ ├── values-sl/
│ │ │ └── strings.xml
│ │ ├── values-sq/
│ │ │ └── strings.xml
│ │ ├── values-sr/
│ │ │ └── strings.xml
│ │ ├── values-sv/
│ │ │ └── strings.xml
│ │ ├── values-sw/
│ │ │ └── strings.xml
│ │ ├── values-ta/
│ │ │ └── strings.xml
│ │ ├── values-te/
│ │ │ └── strings.xml
│ │ ├── values-th/
│ │ │ └── strings.xml
│ │ ├── values-tl/
│ │ │ └── strings.xml
│ │ ├── values-tr/
│ │ │ └── strings.xml
│ │ ├── values-uk/
│ │ │ └── strings.xml
│ │ ├── values-ur/
│ │ │ └── strings.xml
│ │ ├── values-uz/
│ │ │ └── strings.xml
│ │ ├── values-vi/
│ │ │ └── strings.xml
│ │ ├── values-zh-rCN/
│ │ │ └── strings.xml
│ │ ├── values-zh-rHK/
│ │ │ └── strings.xml
│ │ ├── values-zh-rTW/
│ │ │ └── strings.xml
│ │ └── values-zu/
│ │ └── strings.xml
│ └── services/
│ ├── Telecomm/
│ │ └── res/
│ │ └── values/
│ │ └── config.xml
│ └── Telephony/
│ └── res/
│ ├── values/
│ │ └── config.xml
│ ├── values-mcc234-mnc15/
│ │ └── strings.xml
│ ├── values-mcc234-mnc15-en-rGB/
│ │ └── strings.xml
│ ├── values-mcc234-mnc15-en-rIN/
│ │ └── strings.xml
│ ├── values-mcc262-mnc02/
│ │ └── strings.xml
│ ├── values-mcc262-mnc02-en-rGB/
│ │ └── strings.xml
│ ├── values-mcc262-mnc02-en-rIN/
│ │ └── strings.xml
│ ├── values-mcc262-mnc04/
│ │ └── strings.xml
│ ├── values-mcc262-mnc04-en-rGB/
│ │ └── strings.xml
│ ├── values-mcc262-mnc04-en-rIN/
│ │ └── strings.xml
│ ├── values-mcc262-mnc09/
│ │ └── strings.xml
│ ├── values-mcc262-mnc09-en-rGB/
│ │ └── strings.xml
│ └── values-mcc262-mnc09-en-rIN/
│ └── strings.xml
├── p2p_supplicant_overlay.conf
├── power/
│ ├── AudioStreaming.h
│ ├── CameraMode.h
│ ├── InteractionHandler.cpp
│ ├── InteractionHandler.h
│ ├── Power.cpp
│ ├── Power.h
│ ├── android.hardware.power@1.3-service.mata-libperfmgr.rc
│ ├── android.hardware.power@1.3-service.mata.xml
│ ├── display-helper.cpp
│ ├── display-helper.h
│ └── service.cpp
├── powerhint.json
├── powerhint.xml
├── privapp-permissions-mata.xml
├── qca_cld3_wlan.ko
├── qti_whitelist.xml
├── radio/
│ └── filesmap
├── rootdir/
│ ├── Android.mk
│ └── etc/
│ ├── hbtp_cmd.sh
│ ├── init.crda.sh
│ ├── init.mata.diag.rc
│ ├── init.mata.rc
│ ├── init.msm.usb.configfs.rc
│ ├── init.qcom.early_boot.sh
│ ├── init.qcom.post_boot.sh
│ ├── init.qcom.ssr.sh
│ ├── init.qcom.usb.rc
│ ├── init.radio.sh
│ ├── init.recovery.mata.rc
│ └── ueventd.vendor.rc
├── sdllvm-lto-defs.mk
├── sec_config
├── seccomp/
│ ├── mediacodec-seccomp.policy
│ └── mediaextractor-seccomp.policy
├── sensors/
│ └── hals.conf
├── sepolicy/
│ ├── private/
│ │ ├── app_zygote.te
│ │ ├── dataservice_app.te
│ │ ├── device.te
│ │ ├── file_contexts
│ │ ├── folio_daemon.te
│ │ ├── genfs_contexts
│ │ ├── init_elabel.te
│ │ ├── migrate_legacy_obb_data.te
│ │ ├── priv_app.te
│ │ ├── property.te
│ │ ├── property_contexts
│ │ ├── radio.te
│ │ ├── ramoops.te
│ │ ├── seapp_contexts
│ │ ├── service.te
│ │ ├── service_contexts
│ │ ├── system_server.te
│ │ ├── system_suspend.te
│ │ ├── untrusted_app_all.te
│ │ └── wfdservice.te
│ ├── public/
│ │ ├── dataservice_app.te
│ │ ├── file.te
│ │ ├── hwservice.te
│ │ └── init_elabel.te
│ └── vendor/
│ ├── adsprpcd.te
│ ├── app.te
│ ├── atfwd.te
│ ├── attributes
│ ├── audioserver.te
│ ├── bluetooth.te
│ ├── bootanim.te
│ ├── btaddr_extract.te
│ ├── cameraserver.te
│ ├── certs/
│ │ └── Essential-platform.x509.pem
│ ├── charger.te
│ ├── chre.te
│ ├── cnd.te
│ ├── dataservice_app.te
│ ├── device.te
│ ├── domain.te
│ ├── dumpstate.te
│ ├── ephemeral_app.te
│ ├── esed.te
│ ├── essential_camera_app.te
│ ├── file.te
│ ├── file_contexts
│ ├── fsck.te
│ ├── gatekeeperd.te
│ ├── genfs_contexts
│ ├── gpuservice.te
│ ├── hal_audio_default.te
│ ├── hal_bluetooth_default.te
│ ├── hal_bootctl.te
│ ├── hal_bootctl_default.te
│ ├── hal_camera.te
│ ├── hal_camera_default.te
│ ├── hal_cas_default.te
│ ├── hal_contexthub.te
│ ├── hal_drm_clearkey.te
│ ├── hal_drm_default.te
│ ├── hal_drm_widevine.te
│ ├── hal_dumpstate_impl.te
│ ├── hal_fingerprint.te
│ ├── hal_fingerprint_default.te
│ ├── hal_gatekeeper.te
│ ├── hal_gnss_qti.te
│ ├── hal_graphics_composer_default.te
│ ├── hal_health_default.te
│ ├── hal_imsrtp.te
│ ├── hal_keymaster.te
│ ├── hal_keymaster_qti.te
│ ├── hal_light.te
│ ├── hal_light_default.te
│ ├── hal_memtrack_default.te
│ ├── hal_neuralnetworks_hvx.te
│ ├── hal_nfc_default.te
│ ├── hal_oemlock_default.te
│ ├── hal_power_default.te
│ ├── hal_rcsservice.te
│ ├── hal_sensors_default.te
│ ├── hal_sidecar_essential_default.te
│ ├── hal_tetheroffload_default.te
│ ├── hal_thermal_default.te
│ ├── hal_usb_default.te
│ ├── hal_vibrator_default.te
│ ├── hal_vr.te
│ ├── hal_wifi_default.te
│ ├── hal_wifi_supplicant_default.te
│ ├── hbtp.te
│ ├── hbtp_cmd.te
│ ├── healthd.te
│ ├── hvdcp.te
│ ├── hwservice.te
│ ├── hwservice_contexts
│ ├── idmap.te
│ ├── ims.te
│ ├── incidentd.te
│ ├── init-devstart-sh.te
│ ├── init-insmod-sh.te
│ ├── init-ipastart-sh.te
│ ├── init.te
│ ├── init_elabel.te
│ ├── init_ese.te
│ ├── init_power.te
│ ├── init_radio.te
│ ├── init_shell.te
│ ├── installd.te
│ ├── ioctl_defines
│ ├── ioctl_macros
│ ├── irqbalance.te
│ ├── irsc_util.te
│ ├── kernel.te
│ ├── keys.conf
│ ├── location.te
│ ├── mac_permissions.xml
│ ├── mediacodec.te
│ ├── mediaextractor.te
│ ├── move-widevine-data-sh.te
│ ├── netd.te
│ ├── netmgrd.te
│ ├── netutils_wrapper.te
│ ├── pd_services.te
│ ├── per_mgr.te
│ ├── per_proxy.te
│ ├── perfd.te
│ ├── platform_app.te
│ ├── port-bridge.te
│ ├── priv_app.te
│ ├── property.te
│ ├── property_contexts
│ ├── qlogd.te
│ ├── qmuxd.te
│ ├── qtelephony.te
│ ├── qti.te
│ ├── qti_audio_app.te
│ ├── radio.te
│ ├── ramdump.te
│ ├── recovery.te
│ ├── rfs_access.te
│ ├── rild.te
│ ├── rmt_storage.te
│ ├── seapp_contexts
│ ├── sensors.te
│ ├── service_contexts
│ ├── shell.te
│ ├── smlog_dump.te
│ ├── ssr_diag.te
│ ├── ssr_setup.te
│ ├── surfaceflinger.te
│ ├── system_app.te
│ ├── system_server.te
│ ├── tee.te
│ ├── thermal-engine.te
│ ├── time_daemon.te
│ ├── timeservice_app.te
│ ├── ueventd.te
│ ├── update_engine_common.te
│ ├── vendor_init.te
│ ├── vndservice.te
│ ├── vndservice_contexts
│ ├── vold.te
│ ├── wcnss_filter.te
│ ├── wcnss_service.te
│ ├── wifidisplayhalservice.te
│ └── zygote.te
├── sound_trigger_platform_info.xml
├── sprint_whitelist.xml
├── system.prop
├── thermal/
│ ├── Android.mk
│ ├── Thermal.cpp
│ ├── Thermal.h
│ ├── android.hardware.thermal@1.0-service.mata.rc
│ ├── service.cpp
│ ├── thermal-helper.cpp
│ └── thermal-helper.h
├── uinput-fpc.kl
├── usb/
│ ├── Android.mk
│ ├── Usb.cpp
│ ├── Usb.h
│ ├── android.hardware.usb@1.0-service.mata.rc
│ └── service.cpp
├── utils.mk
├── vibrator/
│ ├── Android.bp
│ ├── Vibrator.cpp
│ ├── Vibrator.h
│ ├── android.hardware.vibrator@1.2-service.mata.rc
│ └── service.cpp
├── vold.fstab
├── whitelistedapps.xml
├── wifi_concurrency_cfg.txt
├── wpa_supplicant_overlay.conf
└── wpa_supplicant_wcn.conf
================================================
FILE CONTENTS
================================================
================================================
FILE: AndroidBoard.mk
================================================
LOCAL_PATH := $(call my-dir)
#----------------------------------------------------------------------
# Copy additional target-specific files
#----------------------------------------------------------------------
include $(CLEAR_VARS)
LOCAL_MODULE := vold.fstab
LOCAL_MODULE_TAGS := optional
LOCAL_MODULE_CLASS := ETC
LOCAL_SRC_FILES := $(LOCAL_MODULE)
include $(BUILD_PREBUILT)
include $(CLEAR_VARS)
LOCAL_MODULE := fstab.mata
LOCAL_MODULE_TAGS := optional
LOCAL_MODULE_CLASS := ETC
LOCAL_SRC_FILES := $(LOCAL_MODULE)
LOCAL_MODULE_PATH := $(TARGET_OUT_VENDOR_ETC)
include $(BUILD_PREBUILT)
include $(CLEAR_VARS)
LOCAL_MODULE := wpa_supplicant_overlay.conf
LOCAL_MODULE_TAGS := optional
LOCAL_MODULE_CLASS := ETC
LOCAL_SRC_FILES := $(LOCAL_MODULE)
LOCAL_MODULE_PATH := $(TARGET_OUT_VENDOR)/etc/wifi
include $(BUILD_PREBUILT)
include $(CLEAR_VARS)
LOCAL_MODULE := p2p_supplicant_overlay.conf
LOCAL_MODULE_TAGS := optional
LOCAL_MODULE_CLASS := ETC
LOCAL_SRC_FILES := $(LOCAL_MODULE)
LOCAL_MODULE_PATH := $(TARGET_OUT_VENDOR)/etc/wifi
include $(BUILD_PREBUILT)
include $(CLEAR_VARS)
LOCAL_MODULE := hostapd_default.conf
LOCAL_MODULE_TAGS := optional
LOCAL_MODULE_CLASS := ETC
LOCAL_MODULE_PATH := $(TARGET_OUT_ETC)/hostapd
LOCAL_SRC_FILES := hostapd.conf
include $(BUILD_PREBUILT)
include $(CLEAR_VARS)
LOCAL_MODULE := hostapd.accept
LOCAL_MODULE_TAGS := optional
LOCAL_MODULE_CLASS := ETC
LOCAL_MODULE_PATH := $(TARGET_OUT_ETC)/hostapd
LOCAL_SRC_FILES := hostapd.accept
include $(BUILD_PREBUILT)
include $(CLEAR_VARS)
LOCAL_MODULE := hostapd.deny
LOCAL_MODULE_TAGS := optional
LOCAL_MODULE_CLASS := ETC
LOCAL_MODULE_PATH := $(TARGET_OUT_ETC)/hostapd
LOCAL_SRC_FILES := hostapd.deny
include $(BUILD_PREBUILT)
include $(CLEAR_VARS)
LOCAL_MODULE := wifi_concurrency_cfg.txt
LOCAL_MODULE_TAGS := optional
LOCAL_MODULE_CLASS := ETC
LOCAL_SRC_FILES := $(LOCAL_MODULE)
LOCAL_MODULE_PATH := $(TARGET_OUT_ETC)/wifi
include $(BUILD_PREBUILT)
# Create symbolic links for WLAN
$(shell mkdir -p $(TARGET_OUT_VENDOR)/firmware/wlan/qca_cld; \
ln -sf /vendor/etc/wifi/WCNSS_qcom_cfg.ini \
$(TARGET_OUT_VENDOR)/firmware/wlan/qca_cld/WCNSS_qcom_cfg.ini)
#Create dsp directory
$(shell mkdir -p $(TARGET_OUT_VENDOR)/lib/dsp)
$(shell mkdir -p $(TARGET_OUT_VENDOR)/firmware_mnt)
# Create symbolic links for msadp
$(shell mkdir -p $(TARGET_OUT_VENDOR)/firmware; \
ln -sf /dev/block/bootdevice/by-name/msadp \
$(TARGET_OUT_VENDOR)/firmware/msadp)
# Create symbolic links for wlan MAC address
$(shell mkdir -p $(TARGET_OUT_VENDOR)/firmware/wlan/qca_cld; \
ln -sf /mnt/vendor/persist/wlan_mac.bin \
$(TARGET_OUT_VENDOR)/firmware/wlan/qca_cld/wlan_mac.bin)
#----------------------------------------------------------------------
# Radio image
#----------------------------------------------------------------------
radio_dir := $(LOCAL_PATH)/radio
RADIO_FILES := $(shell cd $(radio_dir) ; ls)
$(foreach f, $(RADIO_FILES), \
$(call add-radio-file,radio/$(f)))
================================================
FILE: AndroidProducts.mk
================================================
COMMON_LUNCH_CHOICES := mata-userdebug
PRODUCT_MAKEFILES := \
$(LOCAL_DIR)/mata.mk
================================================
FILE: BoardConfig.mk
================================================
# config.mk
#
# Product-specific compile-time definitions.
#
TARGET_BOARD_PLATFORM := msm8998
TARGET_ARCH := arm64
TARGET_ARCH_VARIANT := armv8-a
TARGET_CPU_ABI := arm64-v8a
TARGET_CPU_ABI2 :=
TARGET_CPU_VARIANT := cortex-a73
TARGET_2ND_ARCH := arm
TARGET_2ND_ARCH_VARIANT := armv8-a
TARGET_2ND_CPU_ABI := armeabi-v7a
TARGET_2ND_CPU_ABI2 := armeabi
TARGET_2ND_CPU_VARIANT := cortex-a73
TARGET_NO_BOOTLOADER := true
TARGET_USES_UEFI := true
TARGET_NO_KERNEL := false
-include $(QCPATH)/common/msm8998/BoardConfigVendor.mk
TARGET_ENABLE_PROPRIETARY_SMARTCARD_SERVICE := false
CONFIG_EAP_PROXY_DUAL_SIM := false
BOARD_HAVE_QCOM_FM := false
BOARD_ANT_WIRELESS_DEVICE :=
# Some framework code requires this to enable BT
BOARD_HAVE_BLUETOOTH := true
USE_OPENGL_RENDERER := true
BOARD_USE_LEGACY_UI := true
TARGET_USERIMAGES_USE_EXT4 := true
BOARD_BOOTIMAGE_PARTITION_SIZE := 0x04000000
#A/B related defines
AB_OTA_UPDATER := true
BOARD_BUILD_SYSTEM_ROOT_IMAGE := true
TARGET_NO_RECOVERY := true
BOARD_USES_RECOVERY_AS_BOOT := true
BOARD_SYSTEMIMAGE_PARTITION_SIZE := 4294967296
BOARD_SYSTEMIMAGE_JOURNAL_SIZE := 0
BOARD_SYSTEMIMAGE_EXTFS_INODE_COUNT := 5120
BOARD_USERDATAIMAGE_PARTITION_SIZE := 10737418240
BOARD_PERSISTIMAGE_PARTITION_SIZE := 33554432
BOARD_PERSISTIMAGE_FILE_SYSTEM_TYPE := ext4
BOARD_FLASH_BLOCK_SIZE := 131072 # (BOARD_KERNEL_PAGESIZE * 64)
BOARD_VENDORIMAGE_PARTITION_SIZE := 1073741824
BOARD_VENDORIMAGE_FILE_SYSTEM_TYPE := ext4
TARGET_COPY_OUT_VENDOR := vendor
BOARD_PROPERTY_OVERRIDES_SPLIT_ENABLED := true
TARGET_USES_ION := true
TARGET_USES_NEW_ION_API :=true
TARGET_USES_HWC2 := true
TARGET_USES_GRALLOC1 := true
TARGET_USES_QCOM_DISPLAY_BSP := true
TARGET_USES_COLOR_METADATA := true
CAMERA_DAEMON_NOT_PRESENT := true
BOARD_KERNEL_CMDLINE += quiet
BOARD_KERNEL_CMDLINE += androidboot.hardware=mata user_debug=31 msm_rtb.filter=0x37 ehci-hcd.park=3 lpm_levels.sleep_disabled=1 sched_enable_hmp=1 sched_enable_power_aware=1 service_locator.enable=1 swiotlb=2048 androidboot.configfs=true androidboot.usbcontroller=a800000.dwc3
BOARD_KERNEL_CMDLINE += loop.max_part=7
BOARD_KERNEL_CMDLINE += androidboot.selinux=permissive
BOARD_KERNEL_CMDLINE += firmware_class.path=/vendor/firmware_mnt/image
BOARD_SECCOMP_POLICY := device/essential/mata/seccomp
BOARD_EGL_CFG := device/essential/mata/egl.cfg
BOARD_KERNEL_BASE := 0x00000000
BOARD_KERNEL_PAGESIZE := 4096
BOARD_KERNEL_OFFSET := 0x80000
BOARD_KERNEL_TAGS_OFFSET := 0x02500000
BOARD_RAMDISK_OFFSET := 0x02700000
BOARD_MKBOOTIMG_ARGS := --kernel_offset $(BOARD_KERNEL_OFFSET) --ramdisk_offset $(BOARD_RAMDISK_OFFSET) --tags_offset $(BOARD_KERNEL_TAGS_OFFSET)
TARGET_KERNEL_ARCH := arm64
TARGET_KERNEL_HEADER_ARCH := arm64
TARGET_KERNEL_CROSS_COMPILE_PREFIX := aarch64-linux-android-
TARGET_USES_UNCOMPRESSED_KERNEL := false
MAX_EGL_CACHE_KEY_SIZE := 12*1024
MAX_EGL_CACHE_SIZE := 2048*1024
TARGET_FORCE_HWC_FOR_VIRTUAL_DISPLAYS := true
MAX_VIRTUAL_DISPLAY_DIMENSION := 4096
BOARD_USES_GENERIC_AUDIO := true
BOARD_QTI_CAMERA_32BIT_ONLY := true
TARGET_NO_RPC := true
TARGET_PLATFORM_DEVICE_BASE := /devices/soc.0/
TARGET_INIT_VENDOR_LIB := libinit_msm
TARGET_INIT_COLDBOOT_TIMEOUT := 8
NUM_FRAMEBUFFER_SURFACE_BUFFERS := 3
TARGET_KERNEL_APPEND_DTB := true
TARGET_COMPILE_WITH_MSM_KERNEL := false
BOARD_USES_EASEL := true
#Enable PD locater/notifier
TARGET_PD_SERVICE_ENABLED := true
#Enable peripheral manager
TARGET_PER_MGR_ENABLED := true
#Enable SSC Feature
TARGET_USES_SSC := true
# Disable DLKM
TARGET_KERNEL_DLKM_DISABLE := true
#Add NON-HLOS files for ota upgrade
ADD_RADIO_FILES := true
#Enable CPUSets
ENABLE_CPUSETS := true
# We are not using WiPower
BOARD_USES_WIPOWER := false
BOARD_BLUETOOTH_BDROID_BUILDCFG_INCLUDE_DIR := device/essential/mata
TARGET_RECOVERY_FSTAB := device/essential/mata/fstab.mata
BOARD_SEPOLICY_DIRS := device/essential/mata/sepolicy
# Override
TARGET_BOOTLOADER_BOARD_NAME := Mata
# List of partitions to be updated during A/B
AB_OTA_PARTITIONS := boot system vendor
# Install odex files into the other system image
BOARD_USES_SYSTEM_OTHER_ODEX := true
BOARD_ROOT_EXTRA_SYMLINKS := /vendor/lib/dsp:/dsp
BOARD_ROOT_EXTRA_SYMLINKS += /vendor/firmware_mnt:/firmware
BOARD_ROOT_EXTRA_SYMLINKS += /mnt/vendor/persist:/persist
BOARD_SEPOLICY_DIRS += device/essential/mata/sepolicy/vendor
BOARD_PLAT_PUBLIC_SEPOLICY_DIR := device/essential/mata/sepolicy/public
BOARD_PLAT_PRIVATE_SEPOLICY_DIR := device/essential/mata/sepolicy/private
INTERNAL_LOCAL_CLANG_EXCEPTION_PROJECTS := vendor/qcom/proprietary/
BOARD_VENDOR_QCOM_GPS_LOC_API_HARDWARE := default
BOARD_VENDOR_QCOM_LOC_PDK_FEATURE_SET := true
# RenderScript
OVERRIDE_RS_DRIVER := libRSDriver_adreno.so
# Use MKE2FS
TARGET_USES_MKE2FS := true
# Audio
BOARD_USES_ALSA_AUDIO := true
USE_XML_AUDIO_POLICY_CONF := 1
AUDIO_FEATURE_ENABLED_MULTI_VOICE_SESSIONS := true
AUDIO_FEATURE_ENABLED_SND_MONITOR := true
AUDIO_FEATURE_ENABLED_USB_TUNNEL := true
BOARD_VNDK_VERSION := current
# Recovery margin
TARGET_RECOVERY_UI_MARGIN_HEIGHT := 120
TARGET_RECOVERY_UI_MARGIN_WIDTH := 64
# Charger marging
TARGET_HEALTHD_DRAW_SPLIT_OFFSET := 80
# Add dual interface support
WIFI_HIDL_FEATURE_DUAL_INTERFACE := true
# Use 64 bits version for DRM service
TARGET_ENABLE_MEDIADRM_64 := true
BOARD_PREBUILT_VENDORIMAGE := device/essential/mata/vendor-QQ1A.200105.088.img
BUILD_BROKEN_USES_BUILD_COPY_HEADERS := true
================================================
FILE: Image.gz-dtb
================================================
[File too large to display: 13.5 MB]
================================================
FILE: README.md
================================================
# Build AOSP code
The provided vendor images was tested with 11.0.0_r3
## Getting the sources
### To build latest Android 11 AOSP tag
* Clone the latest AOSP code (For example android-11.0.0_r3 tag)
```
repo init -u https://android.googlesource.com/platform/manifest -b android-11.0.0_r3
```
* Add Essential mata repo (master branch)
```
mkdir -p device/essential
cd device/essential
git clone https://github.com/EssentialOpenSource/device_essential_mata.git mata
```
* Revert
https://android.googlesource.com/platform/system/sepolicy/+/61178550157fce18861ddd59fa9a6a29cf06c583%5E%21/#F2
BOARD_SEPOLICY_VERS := 29.0 doesn't build and without it the wrong mapping (1000) is created and 29.0 one
is empty. For now, reverting this patch for the AOSP build (OK with GSI)
## Building
* Download prebuilt [vendor-QQ1A.200105.088.img](https://storage.googleapis.com/essential-static/vendor-QQ1A.200105.088.zip)
* Extract in device/essential/mata
* Start a build
```
source build/envsetup.sh
lunch mata-userdebug
make -j16
```
* Flash boot, system and vendor (unlock device only)
# To flash GSI
* Get the latest [GSI for Android 11/Android 10](https://developer.android.com/topic/generic-system-image/releases)
* Tested with QJR1.191112.001 and RPP1.200123.016.A1
* Flash the userdebug open source build (see above)
* Disable verity (GSI image don't have any verity metadata)
```
adb root
adb disable-verity
```
* Flash GSI system image
```
fastboot flash system_a system.img
```
* Erase userdata
```
fastboot format userdata
```
* Reboot
================================================
FILE: Vendor_2e17_Product_a001.kl
================================================
# Function A
key 164 MEDIA_PLAY_PAUSE
# Function B
key 115 VOLUME_UP
# Function C
key 114 VOLUME_DOWN
# Function D
key 582 VOICE_ASSIST
================================================
FILE: WCNSS_qcom_cfg.ini
================================================
# This file allows user to override the factory
# defaults for the WLAN Driver
# Enable IMPS or not
gEnableImps=1
# Enable BMPS or not
gEnableBmps=1
# Phy Mode (auto, b, g, n, etc)
# Valid values are 0-9, with 0 = Auto, 4 = 11n, 9 = 11ac
# 1 = 11abg, 2 = 11b, 3 = 11g, 5 = 11g only, 6 = 11n only
# 7 = 11b only 8 = 11ac only.
gDot11Mode=0
# Assigned MAC Addresses - This will be used until NV items are in place
# Each byte of MAC address is represented in Hex format as XX
Intf0MacAddress=000AF58989FF
Intf1MacAddress=000AF58989FE
Intf2MacAddress=000AF58989FD
Intf3MacAddress=000AF58989FC
# UAPSD service interval for VO,VI, BE, BK traffic
InfraUapsdVoSrvIntv=0
InfraUapsdViSrvIntv=0
InfraUapsdBeSrvIntv=0
InfraUapsdBkSrvIntv=0
# Flag to allow STA send AddTspec even when ACM is Off
gAddTSWhenACMIsOff=1
#Flag to enable HostARPOffload feature or not
hostArpOffload=1
#Flag to enable HostNSOffload feature or not
hostNSOffload=1
# 802.11n Protection flag
gEnableApProt=1
#Enable OBSS protection
gEnableApOBSSProt=1
#Enable/Disable UAPSD for SoftAP
gEnableApUapsd=1
# Fixed Rate
gFixedRate=0
# Maximum Tx power
# gTxPowerCap=30
# Fragmentation Threshold
# gFragmentationThreshold=2346
# RTS threshold
RTSThreshold=1048576
# Intra-BSS forward
gDisableIntraBssFwd=0
# WMM Enable/Disable
WmmIsEnabled=0
# 802.11d support
g11dSupportEnabled=0
# 802.11h support
g11hSupportEnabled=1
# DFS Master Capability
gEnableDFSMasterCap=1
# ESE Support and fast transition
EseEnabled=0
ImplicitQosIsEnabled=0
gNeighborScanTimerPeriod=200
gNeighborLookupThreshold=76
gNeighborScanChannelMinTime=20
gNeighborScanChannelMaxTime=30
gMaxNeighborReqTries=3
# Legacy (non-ESE, non-802.11r) Fast Roaming Support
# To enable, set FastRoamEnabled=1
# To disable, set FastRoamEnabled=0
FastRoamEnabled=1
# Check if the AP to which we are roaming is better than current AP in
# terms of RSSI. Checking is disabled if set to Zero.Otherwise it will
# use this value as to how better the RSSI of the new/roamable AP should
# be for roaming
RoamRssiDiff=3
# To enable, set gRoamIntraBand=1 (Roaming within band)
# To disable, set gRoamIntraBand=0 (Roaming across band)
gRoamIntraBand=0
#Short Guard Interval Enable/disable
gShortGI20Mhz=1
gShortGI40Mhz=1
#Auto Shutdown Value in seconds. A value of 0 means Auto shutoff is disabled
gAPAutoShutOff=0
#Auto Shutdown wlan : Value in Seconds. 0 means disabled. Max 1 day = 86400 sec
gWlanAutoShutdown = 0
# Not used.
gApAutoChannelSelection=0
#Preferred band (both or 2.4 only or 5 only)
BandCapability=0
#Channel Bonding
gChannelBondingMode5GHz=1
#Say gGoKeepAlivePeriod(5 seconds) and gGoLinkMonitorPeriod(10 seconds).
#For every 10 seconds DUT send Qos Null frame(i.e., Keep Alive frame if link
#is idle for last 10 seconds.) For both active and power save clients.
#Power save clients: DUT set TIM bit from 10th second onwards and till client
#honors TIM bit. If doesn't honor for 5 seconds then DUT remove client.
#Active clients: DUT send Qos Null frame for 10th seconds onwards if it is not
#success still we try on 11th second if not tries on 12th and so on till 15th
#second. Hence before disconnection DUT will send 5 NULL frames. Hence in any
#case DUT will detect client got removed in (10+5) seconds.
#i.e., (gGoKeepAlivePeriod + gGoLinkMonitorPeriod)..
#gGoLinkMonitorPeriod/ gApLinkMonitorPeriod is period where link is idle and
#it is period where we send NULL frame.
#gApLinkMonitorPeriod = 10
#gGoLinkMonitorPeriod = 10
#gGoKeepAlivePeriod/gApKeepAlivePeriod is time to spend to check whether frame
#are succeed to send or not. Hence total effective detection time is
# (gGoLinkMonitorPeriod + gGoKeepAlivePeriod) /
# (gApLinkMonitorPeriod + gApKeepAlivePeriod)
gGoKeepAlivePeriod = 20
gApKeepAlivePeriod = 20
#If set will start with active scan after driver load, otherwise will start with
#passive scan to find out the domain
gEnableBypass11d=1
#If set to 0, will not scan DFS channels
gEnableDFSChnlScan=1
# Enable DFS channel roam
# 0: DISABLE, 1: ENABLED_NORMAL, 2: ENABLED_ACTIVE
gAllowDFSChannelRoam=1
gVhtChannelWidth=2
#Data Inactivity Timeout when in powersave (in ms)
gDataInactivityTimeout=200
# Set txchainmask and rxchainmask
# These parameters are used only if gEnable2x2 is 0
# Valid values are 1,2
# Set gSetTxChainmask1x1=1 or gSetRxChainmask1x1=1 to select chain0.
# Set gSetTxChainmask1x1=2 or gSetRxChainmask1x1=2 to select chain1.
gSetTxChainmask1x1=1
gSetRxChainmask1x1=1
# Scan Timing Parameters
# gPassiveMaxChannelTime=110
# gPassiveMinChannelTime=60
gActiveMaxChannelTime=40
gActiveMinChannelTime=20
#If set to 0, MCC is not allowed.
gEnableMCCMode=1
# MCC to SCC Switch mode:
# 0-Disable
# 1-Enable
# 2-Force SCC if same band, with SAP restart
# 3-Force SCC if same band, without SAP restart by sending (E)CSA
# 4-Force SCC if same band (or) use SAP mandatory channel for DBS,
# without SAP restart by sending (E)CSA
gWlanMccToSccSwitchMode = 0
# 1=enable STBC; 0=disable STBC
gEnableRXSTBC=1
# 1=enable tx STBC; 0=disable
gEnableTXSTBC=1
# 1=enable rx LDPC; 0=disable
gEnableRXLDPC=1
#Enable/Disable Tx beamforming
gTxBFEnable=1
#Enable/Disable Tx beamformee in SAP mode
gEnableTxBFeeSAP=1
# Enable Tx beamforming in VHT20MHz
# Valid values are 0,1. If commented out, the default value is 0.
# 0=disable, 1=enable
gEnableTxBFin20MHz=1
#Enable/Disable SU Tx beamformer support.
gEnableTxSUBeamformer=1
gEnableFastRoamInConcurrency=1
#Enable/Disable PER based roaming
gper_roam_enabled=0
#Maxium Channel time in msec
gMaxMediumTime = 6000
# 802.11K support
gRrmEnable=1
#Enable Power Save offload
gEnablePowerSaveOffload=2
#Enable firmware uart print
gEnablefwprint=0
# Firmware log mode
# Valid values are 0,1,2
# 0=Disable, 1=WMI, 2=DIAG
gEnablefwlog=1
# Maximum Receive AMPDU size (VHT only. Valid values:
# 0->8k 1->16k 2->32k 3->64k 4->128k)
gVhtAmpduLenExponent=7
# Maximum MPDU length (VHT only. Valid values:
# 0->3895 octets, 1->7991 octets, 2->11454 octets)
gVhtMpduLen=2
# Maximum number of wow filters required
#gMaxWoWFilters=22
# WOW Enable/Disable.
# 0 - Disable both magic pattern match and pattern byte match.
# 1 - Enable magic pattern match on all interfaces.
# 2 - Enable pattern byte match on all interfaces.
# 3 - Enable both magic pattern and pattern byte match on all interfaces.
# Default value of gEnableWoW is 3.
# gEnableWoW=0
# Enable or Disable MCC Adaptive Scheduler at the FW
# 1=Enable (default), 0=Disable
gEnableMCCAdaptiveScheduler=1
#Enable or Disable p2p device address administered
isP2pDeviceAddrAdministrated=0
# Set Thermal Power limit
TxPower2g=10
TxPower5g=10
# Remove Overlap channel restriction
gEnableOverLapCh=0
#Enable VHT on 2.4Ghz
gEnableVhtFor24GHzBand=1
#Maximum number of offload peers supported
# gMaxOffloadPeers=2
# controlling the following offload patterns
# through ini parameter. Default value is 1
# to disable set it to zero. ssdp = 0
# Setup multicast pattern for mDNS 224.0.0.251,
# SSDP 239.255.255.250 and LLMNR 224.0.0.252
ssdp=0
#Enable Memory Deep Sleep
gEnableMemDeepSleep=1
# Regulatory Setting; 0=STRICT; 1=CUSTOM
gRegulatoryChangeCountry=1
# RA filtering rate limit param, the current value would not
# help if the lifetime in RA is less than 3*60=3min. Then
# we need to change it, though it is uncommon.
# gRAFilterEnable=0
gRArateLimitInterval=600
# Maximum number of concurrent connections
gMaxConcurrentActiveSessions=3
# Disable/Enable GreenAP
# 0 to disable, 1 to enable, default: 1
gEnableGreenAp=0
# Radar PRI multiplier
gDFSradarMappingPriMultiplier=4
gPNOScanSupport=1
#Enable/Disable LPASS support
# 0 to disable, 1 to enable
gEnableLpassSupport=1
# Whether userspace country code setting shld have priority
gCountryCodePriority=1
# Enable(1)/Disable(0) SIFS burst
gEnableSifsBurst=1
# Enable or Disable Multi-user MIMO
# 1=Enable (default), 0=Disable
gEnableMuBformee=1
# Enable/Disable channel avoidance for SAP in SCC scenario
# 0 - disable
# 1 - enable
gSapSccChanAvoidance=0
# Inactivity time (in ms) to end TX Service Period while in IBSS power save mode
gIbssTxSpEndInactivityTime=10
# Enable support for TDLS
# 0 - disable
# 1 - enable
gEnableTDLSSupport=1
# Enable support for Implicit Trigger of TDLS. That is, wlan driver shall
# initiate TDLS Discovery towards a peer whenever setup criteria (throughput
# and RSSI) is met and then will initiate teardown when teardown criteria
# (idle packet count and RSSI) is met.
# 0 - disable
# 1 - enable
gEnableTDLSImplicitTrigger=1
# Enable TDLS External Control. That is, user space application has to
# first configure a peer MAC in wlan driver towards which TDLS is desired.
# Device will establish TDLS only towards those configured peers whenever
# TDLS criteria (throughput and RSSI threshold) is met and teardown TDLS
# when teardown criteria (idle packet count and RSSI) is met. However,
# device will accept TDLS connection if it is initiated from any other peer,
# even if that peer is not configured.
# 0 - disable
# 1 - enable
# For TDLS External Control, Implicit Trigger must also be enabled.
gTDLSExternalControl=1
# Enable support for TDLS off-channel operation
# 0 - disable
# 1 - enable
# TDLS off-channel operation will be invoked when there is only one
# TDLS connection.
gEnableTDLSOffChannel=1
# Enable or Disable Random MAC (Spoofing)
# 1=Enable, 0=Disable (default)
gEnableMacAddrSpoof=1
################ Datapath feature set Begin ################
# Bus bandwidth threshold values in terms of number of packets
gBusBandwidthHighThreshold=2000
gBusBandwidthMediumThreshold=500
gBusBandwidthLowThreshold=150
# Bus bandwidth compute timeout value in ms
gBusBandwidthComputeInterval=100
# VHT Tx/Rx MCS values
# Valid values are 0,1,2. If commented out, the default value is 0.
# 0=MCS0-7, 1=MCS0-8, 2=MCS0-9
gVhtRxMCS=2
gVhtTxMCS=2
# VHT Tx/Rx MCS values for 2x2
# Valid values are 0,1,2. If commented out, the default value is 0.
# 0=MCS0-7, 1=MCS0-8, 2=MCS0-9
gEnable2x2=1
gVhtRxMCS2x2=2
gVhtTxMCS2x2=2
#IPA config is a bit mask and following are the configurations.
#bit0 IPA Enable
#bit1 IPA PRE Filter enable
#bit2 IPv6 enable
#bit3 IPA Resource Manager (RM) enable
#bit4 IPA Clock scaling enable
#bit5 IPA uC ENABLE
#bit6 IPA uC STA ENABLE
#bit8 IPA Real Time Debugging
gIPAConfig=0x7d
gIPADescSize=800
# Enable/Disable RX full reorder offload
gReorderOffloadSupported=1
# Enable CE classification
# 1 - enable(default) 0 - disable
gCEClassifyEnable=1
# Enable Rx handling options
# Rx_thread=1 RPS=2(default for ROME) NAPI=4(default for ihelium)
rx_mode=4
# Enable(Tx) fastpath for data traffic.
# 1 - enable(default) 0 - disable
gEnableFastPath=1
# This flag enables IP, TCP and UDP checksum offload
# 1 - enable(default) 0 - disable
gEnableIpTcpUdpChecksumOffload=1
# Enable TCP Segmentation Offload
# 1 - enable 0 - disable
TSOEnable=1
# Enable Large Recieve Offload
# 1 - enable(default) 0 - disable
LROEnable=1
# Enable HT MPDU Density
# 4 for 2 micro sec
ght_mpdu_density=4
# Enable flow steering to enable multiple CEs for Rx flows.
# Multiple Rx CEs<==>Multiple Rx IRQs<==>probably different CPUs.
# Parallel Rx paths.
# 1 - enable 0 - disable(default)
gEnableFlowSteering=1
################ Datapath feature set End ################
################ NAN feature set start ###################
# Enable NAN discovery (NAN 1.0)
# 1 - enable 0 - disable(default)
gEnableNanSupport=1
################ NAN feature set end #####################
# Turn on STA + AP/STA
gEnableConcurrentSTA=wlan1
adaptive_dwell_mode_enabled=1
hostscan_adaptive_dwell_mode=1
adapt_dwell_lpf_weight=80
adapt_dwell_wifi_act_threshold=10
# Enable/Disable DTIM Synth
# 1- Enable DTIM Synth
# 0- Disable DTIM Synth
gEnableLPRx=0
################ CR for roam reduction ###################
groam_dense_rssi_thresh_offset=0
################ CR for roam reduction ###################
END
# Note: Configuration parser would not read anything past the END marker
================================================
FILE: android.sofware.nfc.beam.xml
================================================
================================================
FILE: audio/acdbdata/workspaceFile.qwsp
================================================
Z0ABAB+LCAAAAAAABADtXdlu20qavh9g3sHwA4y5yJYFOA1QZDEiIopqkpJ95oZQ25puT3zswHG6p99+SEmWyaq/9qIj2XUuDhKF/Fj1r7X8y9X10/P34sfqdl1Fq5fVyXWxXD//TKIvp4PTv/znf5ycXAVhNI7vH9bVfPXyj5+b34hfT37U//9ymtYI1fjh1/rl6enlH9Xt6uG/Vrd3fzs9OeO/9nX9uH5ePUi+9PD0N9l3JqvHu5/rF8mX7v68l3xjvZL/TPFjvfq+fiZeujoDuHAVRMX8JF3979Nzev/49Pzl1K2c0/1HchRU06Qodz/sfjp5+feP9ZfT8ub05HH1Z/2nYBElWRVm83lV/7h/uH68zObZNPv6R+fBWTZDm6dPTxohcf7PcRzX8V3vtIX8z1qE7p8ev5x6bcAacvzwdPu9gzdJvk6qchJVOSqCdD5FeQd46I7eCLeBOHsdFneo5U2VZrMMGu254mjTJKy+BsmsAxf6Ndz943j18/52eb/+15fTl+df6+6wQTQUzIou0iAQeK2eV5Lk2Iuu2hBqrMk8JvH8SA0vHUd52IVyLgTekxUD2mSC5Cv24oWO/BQlyhEoQRdWgqwE0SVomSUh2kjQ/ePfH9bp/S26ffzZAY6HrrQM1YBbZJzcCA1PT+7+XT91f5s+3f16WAsQfI8WE2gjDTScgrHjiL2IMx7FPmUYcoK1/8Aym2IfGChjFSkKMeVDyFGGqxna2AYXG586IGhoUDxUBqy1vMtW19VRjOjX6qFWi7heLT7erjHNkF9NWM04GM0wLso7QA8DlHZYv1E3qIyFrAh/YpI+KK3i6QLNQrQ8xxTNBxXt3CraMShavDxvpKfmLzbZUYuXl20OW08EeSK6egxA9fCtehyDelg/JO6HXk1JhJuSoCX3I5opkdhUbw6a0nASdCc9pBzJuPwN9WJaJg0eoXG+G/ewb5SaazqvUQsUVRGKg3qgXeiLMWXO3Q8y7NZyTiwf4kv5owkFo6Xqsqwds3asRzuWZtFiikC90DvH+et+kVDN82zpYTo3tDpnde5ddW4H6GPM8HUBBxigxvaEri/usKUlF7I7lGPaUFTjPAuiIonQCWYyLq3JsCbjXU1GI5dticRk/rJzAvQxdHJ/rbPddzR3S8uuyfTPlXce9ipP4Cqvwug9csZHfJuXVpttMrH+G9kLi+O13NurPIKpzfFB68zPHqOCukHG2mxMWYeartN8oE3B2fpfwd3d+m43XnVTu2eQ04LvwNWAUVAG1TJB19g/1P+UzEqUx0GITpLq/q6FTcQcNPSAga7ONiMWsfC4kI06QrafwzgrJyZmMSBsLevxkUdot/akaf6pL74NPJkZhwNf7vFBHwSiOt3ehBtJzdonzlHZRDIvRZSgoP4UxxlKTdm5ND5lkRVQa6Fhdv4j8rzNhKCDq7GehHzoSrFw6GqxUNNVVriz9Kyz/JzO0voCu6Iw4SzBbfeh+MuRE8o9HtkVhf6Uj3lFoedfXcy7+ta7QoeNh+JawwFgHqxrta7Vulbu49a18h+3rpXjWq/OmlTRt7+2EkdzKHE0N5E4mh9M4mhOTxz1wdHy7wrn4+5ta+iJXO7lzb1lhMAFh/S5/xaSsO/NUcPfV/eP1d36x/rxbvX48uX0j/VPo8l7IP7vjMzMWamdA5DHrKBvy+PD5PEcBd9SVDMaYvPQsvmDsHmnys2NK8HnofMR1LmaohgLHnfODTK7+URe8wj/Bo3hH1yg3s4PthFDHkaWyK4CuJzGaTY+TFa3lgEUZqMPYD8ssyFHQWF4/AEY/mEcxpFIVhpOmpA0aJ05PrwNbpEXVZkvUJWiKAmq12c6+NHIoQy8+1XqB4rCj2DooacBHRUujOr7NEoLoIqn6sljz6eLopqgIJpPslnXRFyOYO/CX0osk7xcBNPkvzGxuAzORYwOWqJ8jL0oYq3GQVFU4ywrSuxl9dDBDXmKZquGT2UEW+KDJQ7XAUhQJSprmZnfAAZlAG9cOVmjLWdDDYSHd0p2Wcs9/D84jxQVXhUuijJLCVvp+qStxK5AT1b/vP1ZrZ7Xqx0eVwJqoxxg++7hefsLXGKEkzS5wSjgD9zOUbkZkkoBgqItMS1QIt/eVxMcyk66PTE1YI5KSsy7yOKyWW7Pm1XRIu0ScRwjOhs0t28t/XQ3d/2OY1TSe2GorpSZ45txBaIbTSlx1Tq/IWXCtTLx2WSibSk2PxbzSf3LXjAcx7tkG4t3p5O6EYXguvPd3RxfWG9mzP3E7Vl4+EWipDBxSG2Cqp/aBMUhpgmeqSVJNpv+0cbfWhbvQkMYwNHKxtPgRNGJsaynmQdFd4a+zgzDOOxWnhr5PjTF3ETc2cgHIsNYjxOnBuzHzcdrxklelYtZMvta/3FaYuI/8sAYPTO08qRi9EaeVIzeyLMxegKPa8XoKXm0YpKhcXaD2bChqobP8yx8rc2URDj6Tm0ue+TQyCcKBrAfJ06w2I/LpQ75cvz3Af6zHpcKOx5BYcd9RQ/ibSfmUm0n5vhZaHgBF9HhH1n2ebnyUm8d/6yi9f+sfj28dNfsSL6gqLHxSgR1zqWCOllskTxJ/u1skbzy7X+88/Xq+5/rl/Vz93LuEg5ENX+rCG8MXuPqsHfx6zDp2TbXqM2MifIe0SV8AWdepN5pws2tF3bFBF+KvtcMs/rFoqjQX8GLs7H6TdY8R2ly83YB2nX7EaIFU/GuszZriiyOp1kQVSiOUVi2dyROXP9n9JjvwM93RFgoseVm3qG++8UO7U5WYiCsq2sJGN1DEZzpVTIryqCpk4gnuztSJxJCq65t4R+BZl/7ilczPGQhHjqUNRdTYW1DnNZEP3AVLYxstiGObYjz6TXj8CuDHk4Bb9sQxyqabYhzOPWrMfWwDXGOWD2sHzqohji2kYvVP6t/tJHYRi5W5z6FztlGLkexELaNXKzJOBST8QkbudgWHB9a52wLDmHdEIrjaV30seN4tg/m7Is+mZv5PSAUaRMP4eTVC4aW5ntNWIZVvkSYbhEBpPDL+LUtQuxU4P2LxfxbDjF9JMv0PSIYEY/iQBmQjPVH6ELe5OR0qSRigOEXSTt6aST/Nqeb1kA+OySnmVbUBIyYHC5pgs3kI+d0E2ymyMf+A9dLjN6CkhATdzhjDYG8XpKegZ1iXr9KqFiMV+yXWHi82TNy4RFIh+IJje6ASasnG8evdmbNUO9Ws3croeWZjbtDZVev7Pd2KSeYHnm09Xa/yw5Fq4adP1Hibfu0aiQBB9awWcPG+IA1bJ/csDH2wtuslLa12/zCtYnbTITW4Jr/2rmoA5G9ajHNrstg+g3jF5EcSZGcMo1r8SlRWCYZRihE5I7BRwtoFlbhDDs7ctkDeDuOKWtCptU0SRM86SF2z3XY0soAixEv9SvehyCDJd9cLx6Dh36YglJwKZDwOSIzDaPGy9OuafbwlFCxjIntyOLxVk3meVbuh4mroXceKo20A770qnJSLZPmb9gELjhFvAAodEOBitVpkQZRVStTrb3XKAd55iFXjWeT6wa9O1SfvV5pXiuyxSyqwmlQFEmchAGho54X6c13k2nCnLBC3mPvIw+C2uSApRm9c1hPeeNtELtALq7aqnmOjcpyjU/ONj6hyvnoDjeOhVRcoTxkjFrIjUvBMVWVMRc2TAr1sQ2MWsjrTIuUxfX6n+ksr/WOJsdMljegb8TabjGCb2gxx2bphY68njTgbEwVle4MeTGddz7xit9UBQgcp5MPxMiyw0jPmQc2CUci1E4sFWruNzOs1zhFKZQJJR00zoqKrb+OrX+1gpqkI3ZZ+3iVsXVIvv3LhrKvv+xlqfUjYGXekspZnYLoM+naFIXsWGhq4CBLeo+gc6Vx0vsK8rZFJBbc3o/zEq35m/znWb325NEolaw4b0ln5oPTABtWq0lLQe03JBDma+Xls8jLm7vRy5M1GehiMsxFMcil5xAXcwEurPAWjFz8OBTDYS2Gg1qUQlpkVEA3I9bqwCHpgGGxVQ6qPAQtoDJTJftVyqtoZb5ahTokhdLLdv3svkUrx9UqwiEpgvUs4sZCJZ9VeJu7rYMdToLuZIeUIxGXt8VdTMukQSM0y3fx4+B3O/gR7xRFPyLuIxNY1ySpuSBrpayVMmilhLN+ZVy9fsav1S2rWxq6pZzhy4STz++lyJludu8hGBTVpb9WVq81C9YsaJgFE1m8R6J7+wsSRvdJxT2CvQajEIbaBuPobsI0Mr7tQc0h2WOtLO/PeWBJ9jTEDkLgRgA8s8lvVUy+o9ewFwA01q5XPAqA31Tw3Q6SclZMiEBDCsvVA+XqvlkExFi4/oFl7DEwdqeujcshODt0jltlqymKsZNsRzGZjvKBvOYL/gUaiz+oAGF9ibF10NARiJs/YBHq1zjgtBofGnMLvBU5wV44meNYLIRlb9v4U1gcHzWLP4QTOHhJapqc1XtqaHUoUHTh/YZa5EVV5ot6U4yiJIAz+6IRXCSsk19Ohy8KP4KBh54ycFS4MKbv0+jLxWzatb21MOugXo4EkvQArjEbbPGUn9IOi/MaqwWWgoBsiFI02x18CiPYDh4gSTimV5gWUVnLx/wGUOoBvOVjBoS0TDz1vBzeb9jFIvXc+4C8gEY723e0/5qNbN99pBq9Uvu5BxFqGyo7S70eqccwUbXeqD3NTKYvqvgM9XuiGu7YaL6Ma4eYchWV4Fe55Y/g1zQKDoF4ymWdYDjV4q0wGrfSE/yasUpdMLxaWTGKAJkqskbhrqkSazC8sYplMDyvch2FPUoVRWkj4Jbdw1/kFQ0UjhXQLNIqO64DJaeOJBy3cpk0Mz1bxJ7tgIaXNezeFJ22oh/TqFdodvGgZLMUSrAatFlq5Vet2bJmy5qtT2e25KqkUgYpVCOVwm6JCqlwaJ5QfVRKGKNwdVSRAwEjRU6NlzjtHoXwC5yKz9RccVNijKqlTblAYoVNxWlgqqgpMXCRkqbES7JlQeXmaaSY6TuOWbOMKTFSXhFTwZHp1yLtvRIpySTxip7iVDBXg7Tn8RqoJdpvJdHO/CXriIpfjBZeFS6KMksJOrg+eSmP1Q9lH85HhRtgYZjD8zYa53A/nKTJDebB/cG+uto4KydGbggl4MD7WeEJgRerwm9TYiglRs+5KRYeSZHFZRNx1dSdnS7SLknGMaINSiter7UBd93tilZZMvUYoScEpphgWLLpF/P6vMQCa0lOupaTB81JU/WmRb0b5too1aXFRLDZFlRZHE+zerWL4rjekxatITtxHMfK4meYdaqGVfVuXFhEmaFf7+rQaYFkwoNgRdm9k+HA2Vwls6IMmioP3UXtyHVMu9LNj8V8Uv/S1tvL3+dN9Zc1RrXmMI16l2M74biAh6O8yorbbPDwNMejEomP6djjEJMAz4R5yGbTP9rYW3vgXSgzHxznfo/bNWktpBorCsqg9jXoukuKs803lCaXB0V3Xr7GvKgLK7nJdX6u/yGZ1VoYByE6Sar7u5bMYz2qWA+PHKLxGOvhCH/46gwaHk55kCxxklflYpbMvtZ/nOJH7iPPhejT7e6jQJ2R50lM2CM6q7EeJjsIqlMnjMNuTceR7/dDEJ8YNuthojch6+ELNYIoeKJikqFxdoPZoqGazm6W/ruidUmEY+/mdtmT+o78kQyJiXZurIfHMg/LGAafMAysh5HMw3HPMtRu+bKpFdQ5InU7xwwSW9M9OFgyh5ScUlePh66E2R82tzPGbJXIeqWdlmVOV/D6k1rToCwff7+TDh2T3KLX1upBKkNVH0BTJ2otrV4GL2GpQtJSMR4ekA0ptcgCFivrgyQDieVTOJBYPoUDk8snwpBvrEXclzYPZDwr0Dy9f5dW4U7NU3ZqH8nc222Z9YLWC3IGb72g9YJCYz90L+hiPtC3PtD6QOsDrQ/kD976wCP2gRhBgkNwgOGAMG+KDvDth05z7vE0C79hnbnx0NimeFdTpL7Eqwt4Dnb3dkYHAXMIQIljocAB1aQP5cCIRZC343KFYGkR+NJA3GBk8IqHhSiTHiHNFZmUCTnwrQdi9wKjaCkbkxotpIRGr58nxyherTwFNFpdPAUoRqUXJapJ3XuwoTRW2jRgbn4sTEFO1h4UYbQZcDFNsHB2T5WurTZ106BEsxArr3eBlNjfgk0XZdcTDIeOEmaEpgE2uiE4bT4SnA9AMp2PtCvnNs+KsjYSGKaa6uwxN8V/MMhQCZIVakg6HC4cMwhTAY8WSimphcLRpqqmUWZfy9FjmcBLpS/IxD4xkWgRfwp85sdHqnpUMsZPlcfCm3SOFEJxfypjkttRc/SMHU6oMDzpXTMXTny3yYaS2qXRoLCONB08hBzIQjEGxm3fLrX2Z9bCkGKlQKa9Gh61ToOUp2UXW1AbGaWamhQYu02UlMiy63KojQpsOKU2KrDyiBrhwaJXUq5EuLaDMjMpjaKkaCfQDFCNF2CRGbWpgv3A1GYJ9v5SmyBYO0Zqgjtr0cRcfkUzlCf4NGX3jQJtv9Tmyqi/oqZe9PI2ihYcqpikJm1g0zopsnV6PzcNWukGIHZkFUygC68WHtCGV3FVI3P/yvcSy/NNr70ixcbXFsFLmfm+IkY4YlsIRzKIYHc8NYUDCy+pyTO1MJCamPCKBSkaLHajdDVQzU7QtDWxbpdb2uoYLDGn4FDeDE+9rsWXtbELHgUIcV692yU+Zbisn8YSGSw2prBP3J1yNOETbTzXjQRvhdoo2wwNDMcXwinSLCsnr0BhNivz7nLDdTvOV/xsYx4sCtQcKTfADHwPPxWkoKbjSdh9sbPbGQgM7LpWoy0v64HEXffr+kOFo43mugm43PM2PatE2BglFIQAvuJjDoefrC+1oRaqbCOl4uPxNUR73wlAg86c7LIoXi1QuLmHBYTLd0fgvocNPA7KRjGTMsu7YJHSFReW65Qi7BzSN4E6xVE9pYM6zbwsMZv3eiPZIa53rnqwq5rlyLmwEc8O3ANdnRERAW+xCZtfd49endU+fb7949dFUkWrl9Xmn67Orp+evxc/VrfrzY9/+X9ObEsvZ0ABAA==
================================================
FILE: audio/audio_platform_info_mata.xml
================================================
================================================
FILE: audio/audio_policy_configuration.xml
================================================
SpeakerEarpieceTelephony TxBuilt-In MicBuilt-In Back MicTelephony RxSpeaker
================================================
FILE: audio/audio_policy_volumes.xml
================================================
0,-180020,-120060,-600100,00,-280040,-200070,-1500100,00,-180020,-120060,-600100,00,-180020,-120060,-600100,01,-495033,-335066,-1700100,01,-240033,-180066,-1200100,-6001,-495033,-335066,-1700100,01,-495033,-335066,-1700100,01,-495033,-335066,-1700100,01,-420040,-270060,-1700100,01,-495033,-335066,-1700100,01,-495033,-335066,-1700100,01,-500020,-400060,-2000100,01,-650030,-450091,-1500100,01,-500020,-400060,-2000100,01,-600020,-500060,-3000100,-10001,-495033,-335066,-1700100,01,-420040,-270060,-1700100,01,-495033,-335066,-1700100,01,-495033,-335066,-1700100,01,-495033,-335066,-1700100,01,-420040,-270060,-1700100,01,-495033,-335066,-1700100,01,-495033,-335066,-1700100,00,-420033,-280066,-1400100,00,-240033,-160066,-800100,00,-420033,-280066,-1400100,01,-495033,-335066,-1700100,01,-320033,-260066,-2000100,-12001,-495033,-335066,-1700100,01,-300033,-260066,-2200100,-18001,-495033,-335066,-1700100,01,-300033,-260066,-2200100,-1800
================================================
FILE: audio/default_volume_tables.xml
================================================
0,0100,00,-9600100,-96001,-240033,-180066,-1200100,-6001,-780040,-400091,-1000100,01,-500020,-400060,-2000100,01,-780040,-400091,-1000100,01,-500020,-400060,-2000100,01,-780040,-400091,-1000100,0
================================================
FILE: audio/mixer_paths_tasha_mata.xml
================================================
================================================
FILE: audio/msm8998.mk
================================================
BOARD_USES_ALSA_AUDIO := true
# Default AOSP build
USE_XML_AUDIO_POLICY_CONF := 1
AUDIO_FEATURE_ENABLED_COMPRESS_VOIP := true
BOARD_SUPPORTS_SOUND_TRIGGER := true
AUDIO_USE_LL_AS_PRIMARY_OUTPUT := true
AUDIO_FEATURE_ENABLED_VBAT_MONITOR := true
AUDIO_FEATURE_ENABLED_ANC_HEADSET := true
AUDIO_FEATURE_ENABLED_CUSTOMSTEREO := true
AUDIO_FEATURE_ENABLED_FLUENCE := true
AUDIO_FEATURE_ENABLED_HDMI_EDID := true
AUDIO_FEATURE_ENABLED_HDMI_PASSTHROUGH := true
AUDIO_FEATURE_ENABLED_DISPLAY_PORT := true
AUDIO_FEATURE_ENABLED_DS2_DOLBY_DAP := false
AUDIO_FEATURE_ENABLED_HFP := true
AUDIO_FEATURE_ENABLED_INCALL_MUSIC := false
AUDIO_FEATURE_ENABLED_MULTI_VOICE_SESSIONS := true
AUDIO_FEATURE_ENABLED_KPI_OPTIMIZE := true
AUDIO_FEATURE_ENABLED_ACDB_LICENSE := true
AUDIO_FEATURE_ENABLED_DEV_ARBI := false
MM_AUDIO_ENABLED_FTM := true
TARGET_USES_QCOM_MM_AUDIO := true
AUDIO_FEATURE_ENABLED_SOURCE_TRACKING := true
AUDIO_FEATURE_ENABLED_GEF_SUPPORT := true
BOARD_SUPPORTS_QAHW := true
AUDIO_FEATURE_ENABLED_RAS := true
AUDIO_FEATURE_ENABLED_DYNAMIC_LOG := true
AUDIO_FEATURE_ENABLED_SND_MONITOR := true
AUDIO_FEATURE_ENABLED_PROXY_DEVICE := true
AUDIO_FEATURE_ENABLED_USB_TUNNEL_AUDIO := true
##AUDIO_FEATURE_FLAGS
#XML Audio configuration files
ifeq ($(USE_XML_AUDIO_POLICY_CONF), 1)
PRODUCT_COPY_FILES += \
$(TOPDIR)frameworks/av/services/audiopolicy/config/a2dp_audio_policy_configuration.xml:$(TARGET_COPY_OUT_VENDOR)/etc/a2dp_audio_policy_configuration.xml \
$(TOPDIR)frameworks/av/services/audiopolicy/config/r_submix_audio_policy_configuration.xml:$(TARGET_COPY_OUT_VENDOR)/etc/r_submix_audio_policy_configuration.xml \
$(TOPDIR)frameworks/av/services/audiopolicy/config/usb_audio_policy_configuration.xml:$(TARGET_COPY_OUT_VENDOR)/etc/usb_audio_policy_configuration.xml
endif
# Reduce client buffer size for fast audio output tracks
PRODUCT_PROPERTY_OVERRIDES += \
af.fast_track_multiplier=1
# Set ADM buffering for low latency usecase
PRODUCT_PROPERTY_OVERRIDES += \
vendor.audio.adm.buffering.ms=3
# Low latency audio buffer size in frames
PRODUCT_PROPERTY_OVERRIDES += \
vendor.audio_hal.period_size=192
##fluencetype can be "fluence" or "fluencepro" or "none"
PRODUCT_PROPERTY_OVERRIDES += \
ro.qc.sdk.audio.fluencetype=fluencepro \
persist.audio.fluence.voicecall=true \
persist.audio.fluence.voicecomm=true \
persist.audio.fluence.voicerec=false \
persist.audio.fluence.speaker=true \
#disable tunnel encoding
PRODUCT_PROPERTY_OVERRIDES += \
vendor.audio.tunnel.encode=false
#Disable RAS Feature by default
PRODUCT_PROPERTY_OVERRIDES += \
persist.vendor.audio.ras.enabled=false
#Buffer size in kbytes for compress offload playback
PRODUCT_PROPERTY_OVERRIDES += \
vendor.audio.offload.buffer.size.kb=32
#Enable audio track offload by default
PRODUCT_PROPERTY_OVERRIDES += \
vendor.audio.offload.track.enable=true
#Enable music through deep buffer
PRODUCT_PROPERTY_OVERRIDES += \
audio.deep_buffer.media=true
#enable voice path for PCM VoIP by default
PRODUCT_PROPERTY_OVERRIDES += \
vendor.voice.path.for.pcm.voip=true
#Enable multi channel aac through offload
PRODUCT_PROPERTY_OVERRIDES += \
vendor.audio.offload.multiaac.enable=true
#Enable DS2, Hardbypass feature for Dolby
PRODUCT_PROPERTY_OVERRIDES += \
vendor.audio.dolby.ds2.enabled=false\
vendor.audio.dolby.ds2.hardbypass=false
#Disable Multiple offload sesison
PRODUCT_PROPERTY_OVERRIDES += \
vendor.audio.offload.multiple.enabled=false
#Disable Compress passthrough playback
PRODUCT_PROPERTY_OVERRIDES += \
vendor.audio.offload.passthrough=false
#Disable surround sound recording
PRODUCT_PROPERTY_OVERRIDES += \
ro.vendor.audio.sdk.ssr=false
#enable dsp gapless mode by default
PRODUCT_PROPERTY_OVERRIDES += \
vendor.audio.offload.gapless.enabled=true
#enable pbe effects
PRODUCT_PROPERTY_OVERRIDES += \
vendor.audio.safx.pbe.enabled=true
#parser input buffer size(256kb) in byte stream mode
PRODUCT_PROPERTY_OVERRIDES += \
vendor.audio.parser.ip.buffer.size=262144
#flac sw decoder 24 bit decode capability
PRODUCT_PROPERTY_OVERRIDES += \
vendor.audio.flac.sw.decoder.24bit=true
#split a2dp DSP supported encoder list
PRODUCT_PROPERTY_OVERRIDES += \
persist.vendor.bt.a2dp_offload_cap=sbc-aptx-aptxhd-aac
#enable software decoders for ALAC and APE
PRODUCT_PROPERTY_OVERRIDES += \
vendor.audio.use.sw.alac.decoder=true
PRODUCT_PROPERTY_OVERRIDES += \
vendor.audio.use.sw.ape.decoder=true
#enable hw aac encoder by default
PRODUCT_PROPERTY_OVERRIDES += \
vendor.audio.hw.aac.encoder=true
#Disable FM a2dp concurrency
PRODUCT_PROPERTY_OVERRIDES += \
vendor.fm.a2dp.conc.disabled=true
#audio becoming noisy intent broadcast delay
PRODUCT_PROPERTY_OVERRIDES += \
vendor.audio.noisy.broadcast.delay=600
#offload pausetime out duration to 3 secs to inline with other outputs
PRODUCT_PROPERTY_OVERRIDES += \
vendor.audio.offload.pstimeout.secs=3
# for HIDL related packages
PRODUCT_PACKAGES += \
android.hardware.audio@2.0-service \
android.hardware.audio@2.0-impl \
android.hardware.audio.effect@2.0-impl \
android.hardware.soundtrigger@2.0-impl
================================================
FILE: audio/smartamp/TFA9891.cnt_preformat.ini
================================================
[system]
customer=FIH
application=speaker
type=mono
device=left
[left]
bus=0
dev=0x34
_000DCCV=1
_001CHS12=3
patch=TFA9891_N1A_11_1_31_NL3_HQ.patch
config=TFA9891N1A_Dec2015.config
speaker=TFA9891.speaker
&002profile=music
&003profile=voice
&004profile=ringtone
&005profile=bypass
[music]
_006I2SDOE=0
_007DOLS=3
_008CHSA=2
_009BSSBY=0
vstep=T9891_mu.vstep
drc=T9891_mu.drc
filter[10]=lowpass,1400.0,0.8,1.3
filter[11]=peak,900.0,1.0,-5.0
filter[12]=lowshelf,500.0,0.7,-1.8
[voice]
_010I2SDOE=1
_011DOLS=2
_012CHSA=2
_013BSSBY=0
vstep=T9891_vo.vstep
drc=T9891_vo.drc
filter[10]=lowpass,1400.0,0.8,1.3
filter[11]=peak,900.0,1.0,-5.0
filter[12]=lowshelf,500.0,0.7,-1.8
[ringtone]
_014I2SDOE=0
_015DOLS=3
_016CHSA=2
_017BSSBY=0
vstep=T9891_rt.vstep
drc=T9891_rt.drc
filter[10]=lowpass,1400.0,0.8,1.3
filter[11]=peak,900.0,1.0,-5.0
filter[12]=lowshelf,500.0,0.7,-1.8
[bypass]
_018CHSA=0
_019BSSBY=1
================================================
FILE: audio/smartamp/TFA9891.ini
================================================
[system]
customer=FIH
application=speaker
type=mono
device=left
[left]
bus=0
dev=0x34
DCCV=1
CHS12=3
patch=TFA9891_N1A_11_1_31_NL3_HQ.patch
config=TFA9891N1A_Dec2015.config
speaker=TFA9891.speaker
profile=music
profile=voice
profile=ringtone
profile=bypass
[music]
I2SDOE=0
DOLS=3
CHSA=2
BSSBY=0
vstep=T9891_mu.vstep
drc=T9891_mu.drc
filter[10]=lowpass,1400.0,0.8,1.3
filter[11]=peak,900.0,1.0,-5.0
filter[12]=lowshelf,500.0,0.7,-1.8
[voice]
I2SDOE=1
DOLS=2
CHSA=2
BSSBY=0
vstep=T9891_vo.vstep
drc=T9891_vo.drc
filter[10]=lowpass,1400.0,0.8,1.3
filter[11]=peak,900.0,1.0,-5.0
filter[12]=lowshelf,500.0,0.7,-1.8
[ringtone]
I2SDOE=0
DOLS=3
CHSA=2
BSSBY=0
vstep=T9891_rt.vstep
drc=T9891_rt.drc
filter[10]=lowpass,1400.0,0.8,1.3
filter[11]=peak,900.0,1.0,-5.0
filter[12]=lowshelf,500.0,0.7,-1.8
[bypass]
CHSA=0
BSSBY=1
================================================
FILE: audio/sound_trigger_mixer_paths.xml
================================================
================================================
FILE: audio_effects.xml
================================================
================================================
FILE: base.mk
================================================
# Board platforms lists to be used for
# TARGET_BOARD_PLATFORM specific featurization
QCOM_BOARD_PLATFORMS := msm8998
TARGET_USE_VENDOR_CAMERA_EXT := true
#List of targets that use video hw
MSM_VIDC_TARGET_LIST := msm8998
#List of targets that use master side content protection
MASTER_SIDE_CP_TARGET_LIST := msm8998
# Below projects/packages with LOCAL_MODULEs will be used by
# PRODUCT_PACKAGES to build LOCAL_MODULEs that are tagged with
# optional tag, which will not be available on target unless
# explicitly list here. Where project corresponds to the vars here
# in CAPs.
#ALSA
ALSA_HARDWARE := alsa.msm8974
AUDIO_HARDWARE := audio.a2dp.default
AUDIO_HARDWARE += audio.usb.default
AUDIO_HARDWARE += audio.r_submix.default
AUDIO_HARDWARE += audio.primary.msm8998
#AMPLOADER
AMPLOADER := amploader
#BRCTL
BRCTL := brctl
BRTCL += libbridge
#BSON
BSON := libbson
#BT
BT := javax.btobex
BT += libattrib_static
BT += libbt-vendor
BT += libbt-hidlclient
BT += btaddr_extract
#C2DColorConvert
C2DCC := libc2dcolorconvert
CHROMIUM := libwebviewchromium
CHROMIUM += libwebviewchromium_loader
CHROMIUM += libwebviewchromium_plat_support
#CIMAX
CIMAX := libcimax_spi
#CONNECTIVITY
CONNECTIVITY := libcnefeatureconfig
CONNECTIVITY += services-ext
#CURL
CURL := libcurl
CURL += curl
#DATA_OS
DATA_OS := librmnetctl
#E2FSPROGS
E2FSPROGS := e2fsck
#EBTABLES
EBTABLES := ebtables
EBTABLES += ethertypes
EBTABLES += libebtc
#FASTPOWERON
FASTPOWERON := FastBoot
#HDMID
HDMID := hdmid
#HOSTAPD
HOSTAPD := hostapd
HOSTAPD += hostapd_cli
HOSTAPD += nt_password_hash
HOSTAPD += hlr_auc_gw
HOSTAPD += hostapd.conf
HOSTAPD += hostapd_default.conf
HOSTAPD += hostapd.deny
HOSTAPD += hostapd.accept
#I420COLORCONVERT
I420CC := libI420colorconvert
#INIT
INIT += init.qcom.sensor.sh
INIT += init.mata.rc
INIT += init.recovery.mata.rc
INIT += init.qcom.sh
INIT += vold.fstab
INIT += init.qcom.usb.rc
INIT += init.msm.usb.configfs.rc
INIT += ssr_setup
INIT += fstab.mata
INIT += init.qcom.vendor.rc
INIT += init.target.vendor.rc
#IPROUTE2
IPROUTE2 := ip
IPROUTE2 += libiprouteutil
#IPACM
IPACM += ipacm
IPACM += IPACM_cfg.xml
IPACM += ipacm-diag
#IPTABLES
IPTABLES := libiptc
IPTABLES += libext
IPTABLES += iptables
#KEYPADS
KEYPAD := gpio-keys.kl
KEYPAD += qpnp_pon.kl
#KS
KS := ks
KS += qcks
KS += efsks
#LIB_NL
LIB_NL := libnl_2
#LIB_XML2
LIB_XML2 := libxml2
#LIBCAMERA
LIBCAMERA := camera.msm8998
LIBCAMERA += libcamera
LIBCAMERA += libmmcamera_interface
LIBCAMERA += libmmcamera_interface2
LIBCAMERA += libmmjpeg_interface
LIBCAMERA += libmmlib2d_interface
LIBCAMERA += libqomx_core
LIBCAMERA += org.codeaurora.camera
#LIBCOPYBIT
LIBCOPYBIT := copybit.msm8998
#LIBGESTURES
LIBGESTURES := libgestures
LIBGESTURES += gestures.msm8960
#LIBGRALLOC
LIBGRALLOC := gralloc.msm8998
LIBGRALLOC += libmemalloc
#memtrack
LIBMEMTRACK := memtrack.msm8998
#LIBLIGHTS
LIBLIGHTS := lights.msm8998
#LIBHWCOMPOSER
LIBHWCOMPOSER := hwcomposer.msm8998
#LIBAUDIOPARAM -- Exposing AudioParameter as dynamic library for SRS TruMedia to work
LIBAUDIOPARAM := libaudioparameter
#LIBAUDIORESAMPLER -- High-quality audio resampler
LIBAUDIORESAMPLER := libaudio-resampler
#LIBOPENCOREHW
LIBOPENCOREHW := libopencorehw
#LIBOVERLAY
LIBOVERLAY := liboverlay
LIBOVERLAY += overlay.default
#LIBGENLOCK
LIBGENLOCK := libgenlock
#LIBPERFLOCK
LIBPERFLOCK := org.codeaurora.Performance
#LIBQCOMUI
LIBQCOMUI := libQcomUI
#LIBQDUTILS
LIBQDUTILS := libqdutils
LIBQDUTILS := libqdutils.system
#LIBQDMETADATA
LIBQDMETADATA := libqdMetaData
LIBQDMETADATA += libqdMetaData.system
#LIBPOWER -- Add HIDL Packages
LIBPOWER := android.hardware.power@1.3-service.mata-libperfmgr
LIBPOWER += libqti-perfd-client
#LLVM for RenderScript
#use qcom LLVM
$(call inherit-product-if-exists, external/llvm/llvm-select.mk)
#LOC_API
LOC_API := libloc_api-rpc-qc
#MM_AUDIO
MM_AUDIO := libOmxAacDec
MM_AUDIO += libOmxAacEnc
MM_AUDIO += libOmxAmrEnc
MM_AUDIO += libOmxEvrcEnc
MM_AUDIO += libOmxMp3Dec
MM_AUDIO += libOmxQcelp13Enc
MM_AUDIO += libOmxAc3HwDec
MM_AUDIO += libstagefright_soft_flacdec
#MM_CORE
MM_CORE := libmm-omxcore
MM_CORE += libOmxCore
#MM_VIDEO
MM_VIDEO := beat
MM_VIDEO += liblasic
MM_VIDEO += libOmxVdec
MM_VIDEO += libOmxVdecHevc
MM_VIDEO += libOmxVenc
MM_VIDEO += libOmxVidEnc
MM_VIDEO += libOmxSwVdec
MM_VIDEO += libOmxSwVencMpeg4
MM_VIDEO += libstagefrighthw
MM_VIDEO += mm-vdec-omx-property-mgr
#OPENCORE
OPENCORE := libomx_aacdec_sharedlibrary
OPENCORE += libomx_avcdec_sharedlibrary
OPENCORE += libomx_m4vdec_sharedlibrary
OPENCORE += libomx_mp3dec_sharedlibrary
OPENCORE += libopencore_author
OPENCORE += libopencore_common
OPENCORE += libopencore_download
OPENCORE += libopencore_downloadreg
OPENCORE += libopencore_mp4local
OPENCORE += libopencore_mp4localreg
OPENCORE += libopencore_net_support
OPENCORE += libopencore_player
OPENCORE += libopencore_rtsp
OPENCORE += libopencore_rtspreg
OPENCORE += libpvplayer_engine
OPENCORE += libpvauthorengine
OPENCORE += pvplayer
OPENCORE += pvplayer_engine_test
#PPP
PPP := ip-up-vpn
PROTOBUF := libprotobuf-cpp-full
#PVOMX
PVOMX := libqcomm_omx
PVOMX += 01_qcomm_omx
#RF4CE
RF4CE := RemoTI_RNP.cfg
RF4CE += rf4ce
#STK
STK := Stk
#STM LOG
STMLOG := libstm-log
#THERMAL_HAL
THERMAL_HAL := thermal.msm8998
#VR_HAL
VR_HAL := vr.msm8998
#QRGND
QRGND := qrngd
QRGND += qrngp
#WPA
WPA := wpa_supplicant.conf
WPA += wpa_supplicant_wcn.conf
WPA += wpa_supplicant_ath6kl.conf
WPA += wpa_supplicant
WPA += hs20-osu-client
#ZLIB
ZLIB := gzip
ZLIB += libunz
#Charger
CHARGER := charger
CHARGER += charger_res_images
CHARGER += essential_charger_res_animation
#VT_JNI
VT_JNI := libvt_jni
VT_JNI += libimscamera_jni
# VT QTI Permissions
VT_QTI_PERMISSIONS := qti_permissions.xml
#RCS
RCS := rcs_service_aidl
RCS += rcs_service_aidl.xml
RCS += rcs_service_aidl_static
RCS += rcs_service_api
RCS += rcs_service_api.xml
#IMS SETTINGS
IMS_SETTINGS := imssettings
#IMS Extension module for Android Telephony
IMS_EXT := ims-ext-common
IMS_EXT += ConfURIDialer
#CRDA
CRDA := crda
CRDA += regdbdump
CRDA += regulatory.bin
CRDA += linville.key.pub.pem
CRDA += init.crda.sh
#FSTMAN
FSTMAN := fstman
FSTMAN += fstman.ini
PRODUCT_PACKAGES := \
AccountAndSyncSettings \
AlarmProvider \
Bluetooth \
CellBroadcastReceiver \
CertInstaller \
DrmProvider \
Email \
LatinIME \
netutils-wrapper-1.0 \
Phone \
Provision \
Settings \
Sync \
SystemUI \
Updater \
CalendarProvider \
SyncProvider \
IM \
VoiceDialer
#GNSS HAL
PRODUCT_PACKAGES += \
gps.conf \
libgps.utils \
libgnss \
liblocation_api \
android.hardware.gnss@1.0-impl-qti \
android.hardware.gnss@1.0-service-qti
PRODUCT_PACKAGES_DEBUG := \
CellBroadcastReceiverTests \
SnapdragonCamera \
WfdClient \
QSensorTest
PRODUCT_PACKAGES += $(ALSA_HARDWARE)
PRODUCT_PACKAGES += $(AUDIO_HARDWARE)
PRODUCT_PACKAGES += $(AMPLOADER)
PRODUCT_PACKAGES += $(BRCTL)
PRODUCT_PACKAGES += $(BSON)
PRODUCT_PACKAGES += $(BT)
PRODUCT_PACKAGES += $(C2DCC)
PRODUCT_PACKAGES += $(CHROMIUM)
PRODUCT_PACKAGES += $(CIMAX)
PRODUCT_PACKAGES += $(RCS)
PRODUCT_PACKAGES += $(CONNECTIVITY)
PRODUCT_PACKAGES += $(CHARGER)
PRODUCT_PACKAGES += $(CURL)
PRODUCT_PACKAGES += $(DATA_OS)
PRODUCT_PACKAGES += $(E2FSPROGS)
PRODUCT_PACKAGES += $(EBTABLES)
PRODUCT_PACKAGES += $(FASTPOWERON)
PRODUCT_PACKAGES += $(GPS_HARDWARE)
PRODUCT_PACKAGES += $(HDMID)
PRODUCT_PACKAGES += $(HOSTAPD)
PRODUCT_PACKAGES += $(I420CC)
PRODUCT_PACKAGES += $(INIT)
PRODUCT_PACKAGES += $(IPROUTE2)
PRODUCT_PACKAGES += $(IPTABLES)
PRODUCT_PACKAGES += $(KERNEL_TESTS)
PRODUCT_PACKAGES += $(KEYPAD)
PRODUCT_PACKAGES += $(KS)
PRODUCT_PACKAGES += $(LIB_NL)
PRODUCT_PACKAGES += $(LIB_XML2)
PRODUCT_PACKAGES += $(LIBCAMERA)
PRODUCT_PACKAGES += $(LIBGESTURES)
PRODUCT_PACKAGES += $(LIBCOPYBIT)
PRODUCT_PACKAGES += $(LIBGRALLOC)
PRODUCT_PACKAGES += $(LIBMEMTRACK)
PRODUCT_PACKAGES += $(LIBLIGHTS)
PRODUCT_PACKAGES += $(LIBAUDIOPARAM)
PRODUCT_PACKAGES += $(LIBAUDIORESAMPLER)
PRODUCT_PACKAGES += $(LIBOPENCOREHW)
PRODUCT_PACKAGES += $(LIBOVERLAY)
PRODUCT_PACKAGES += $(LIBHWCOMPOSER)
PRODUCT_PACKAGES += $(LIBGENLOCK)
PRODUCT_PACKAGES += $(LIBPERFLOCK)
PRODUCT_PACKAGES += $(LIBQCOMUI)
PRODUCT_PACKAGES += $(LIBQDUTILS)
PRODUCT_PACKAGES += $(LIBQDMETADATA)
PRODUCT_PACKAGES += $(LIBPOWER)
PRODUCT_PACKAGES += $(LOC_API)
PRODUCT_PACKAGES += $(MEDIA_PROFILES)
PRODUCT_PACKAGES += $(MM_AUDIO)
PRODUCT_PACKAGES += $(MM_CORE)
PRODUCT_PACKAGES += $(MM_VIDEO)
PRODUCT_PACKAGES += $(OPENCORE)
PRODUCT_PACKAGES += $(PPP)
PRODUCT_PACKAGES += $(PROTOBUF)
PRODUCT_PACKAGES += $(PVOMX)
PRODUCT_PACKAGES += $(RF4CE)
PRODUCT_PACKAGES += $(SENSORS_HARDWARE)
PRODUCT_PACKAGES += $(STK)
PRODUCT_PACKAGES += $(STMLOG)
PRODUCT_PACKAGES += $(THERMAL_HAL)
PRODUCT_PACKAGES += $(TSLIB_EXTERNAL)
PRODUCT_PACKAGES += $(VR_HAL)
PRODUCT_PACKAGES += $(QRGND)
PRODUCT_PACKAGES += $(UPDATER)
PRODUCT_PACKAGES += $(WPA)
PRODUCT_PACKAGES += $(ZLIB)
PRODUCT_PACKAGES += $(VT_JNI)
PRODUCT_PACKAGES += $(VT_QTI_PERMISSIONS)
PRODUCT_PACKAGES += $(IMS_SETTINGS)
PRODUCT_PACKAGES += $(CRDA)
PRODUCT_PACKAGES += $(IPACM)
PRODUCT_PACKAGES += $(FSTMAN)
PRODUCT_PACKAGES += $(IMS_EXT)
# Temp workarround for b/36603742
PRODUCT_PACKAGES += android.hidl.manager@1.0-java
PRODUCT_PACKAGES += android.hardware.drm@1.0-impl
PRODUCT_PACKAGES += android.hardware.drm@1.0-service
# Live Wallpapers
PRODUCT_PACKAGES += \
LiveWallpapers \
WallpaperPicker \
VisualizationWallpapers \
librs_jni
# Filesystem management tools
PRODUCT_PACKAGES += \
make_ext4fs \
setup_fs
# Qcril configuration file
PRODUCT_PACKAGES += qcril.db
# GPT utils library
PRODUCT_PACKAGES += libgptutils
# vcard jar
PRODUCT_PACKAGES += vcard
PRODUCT_COPY_FILES += \
frameworks/native/data/etc/android.hardware.camera.flash-autofocus.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.camera.flash-autofocus.xml \
frameworks/native/data/etc/android.hardware.camera.front.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.camera.front.xml \
frameworks/native/data/etc/android.hardware.camera.full.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.camera.full.xml\
frameworks/native/data/etc/android.hardware.camera.raw.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.camera.raw.xml\
frameworks/native/data/etc/android.hardware.telephony.gsm.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.telephony.gsm.xml \
frameworks/native/data/etc/android.hardware.telephony.cdma.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.telephony.cdma.xml \
frameworks/native/data/etc/android.hardware.telephony.ims.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.telephony.ims.xml \
frameworks/native/data/etc/android.hardware.location.gps.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.location.gps.xml \
frameworks/native/data/etc/android.hardware.touchscreen.multitouch.jazzhand.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.touchscreen.multitouch.jazzhand.xml \
frameworks/native/data/etc/android.hardware.wifi.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.wifi.xml \
frameworks/native/data/etc/android.hardware.wifi.direct.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.wifi.direct.xml \
frameworks/native/data/etc/android.software.sip.voip.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.software.sip.voip.xml \
frameworks/native/data/etc/handheld_core_hardware.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/handheld_core_hardware.xml \
frameworks/native/data/etc/android.hardware.sensor.proximity.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.sensor.proximity.xml \
frameworks/native/data/etc/android.hardware.sensor.light.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.sensor.light.xml \
frameworks/native/data/etc/android.hardware.usb.accessory.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.usb.accessory.xml \
frameworks/native/data/etc/android.hardware.usb.host.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.usb.host.xml \
frameworks/native/data/etc/android.hardware.bluetooth.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.bluetooth.xml \
frameworks/native/data/etc/android.hardware.bluetooth_le.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.bluetooth_le.xml
# Bluetooth configuration files
#PRODUCT_COPY_FILES += \
system/bluetooth/data/audio.conf:system/etc/bluetooth/audio.conf \
system/bluetooth/data/auto_pairing.conf:system/etc/bluetooth/auto_pairing.conf \
system/bluetooth/data/blacklist.conf:system/etc/bluetooth/blacklist.conf \
system/bluetooth/data/input.conf:system/etc/bluetooth/input.conf \
system/bluetooth/data/network.conf:system/etc/bluetooth/network.conf \
#ifeq ($(BOARD_HAVE_BLUETOOTH_BLUEZ),true)
#PRODUCT_COPY_FILES += \
system/bluetooth/data/stack.conf:system/etc/bluetooth/stack.conf
#endif # BOARD_HAVE_BLUETOOTH_BLUEZ
# gps/location secuity configuration file
PRODUCT_COPY_FILES += \
device/essential/mata/sec_config:$(TARGET_COPY_OUT_VENDOR)/etc/sec_config
#copy codecs_xxx.xml to (TARGET_COPY_OUT_VENDOR)/etc/
PRODUCT_COPY_FILES += \
frameworks/av/media/libstagefright/data/media_codecs_google_audio.xml:$(TARGET_COPY_OUT_VENDOR)/etc/media_codecs_google_audio.xml \
frameworks/av/media/libstagefright/data/media_codecs_google_telephony.xml:$(TARGET_COPY_OUT_VENDOR)/etc/media_codecs_google_telephony.xml \
frameworks/av/media/libstagefright/data/media_codecs_google_video.xml:$(TARGET_COPY_OUT_VENDOR)/etc/media_codecs_google_video.xml \
device/essential/mata/media/media_profiles_V1_0.xml:$(TARGET_COPY_OUT_VENDOR)/etc/media_profiles_V1_0.xml
PRODUCT_COPY_FILES += \
frameworks/native/data/etc/com.nxp.mifare.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/com.nxp.mifare.xml \
frameworks/native/data/etc/com.android.nfc_extras.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/com.android.nfc_extras.xml \
frameworks/native/data/etc/android.hardware.nfc.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.nfc.xml \
frameworks/native/data/etc/android.hardware.nfc.hce.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.nfc.hce.xml
PRODUCT_COPY_FILES += \
frameworks/native/data/etc/android.hardware.vulkan.level-0.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.vulkan.level.xml \
frameworks/native/data/etc/android.hardware.vulkan.version-1_1.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.vulkan.version.xml \
frameworks/native/data/etc/android.hardware.vulkan.compute-0.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.vulkan.compute.xml
# include additional build utilities
-include device/essential/mata/utils.mk
#skip boot jars check
SKIP_BOOT_JARS_CHECK := true
ifeq ($(TARGET_BUILD_VARIANT),user)
PRODUCT_DEFAULT_PROPERTY_OVERRIDES+= \
ro.adb.secure=1
endif
# Add Sprint flags is present
$(call inherit-product-if-exists, vendor/harman/sprint.mk)
$(call inherit-product-if-exists, vendor/harman/sprint-flags.mk)
# OEM Unlock reporting
PRODUCT_DEFAULT_PROPERTY_OVERRIDES += \
ro.oem_unlock_supported=1
PRODUCT_CHARACTERISTICS := nosdcard
TARGET_USES_QCOM_BSP_ATEL := false
# VNDK-SP:
PRODUCT_PACKAGES += \
vndk-sp \
TARGET_FS_CONFIG_GEN := device/essential/mata/config.fs
================================================
FILE: bdroid_buildcfg.h
================================================
/*
*
* Copyright (c) 2013, The Linux Foundation. All rights reserved.
* Not a Contribution, Apache license notifications and license are retained
* for attribution purposes only.
*
* Copyright (C) 2012 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
#ifndef _BDROID_BUILDCFG_H
#define _BDROID_BUILDCFG_H
#define BTM_DEF_LOCAL_NAME "Essential Phone"
// Wide-band speech support
#define BTIF_HF_WBS_PREFERRED TRUE
// Google VSC spec support
#define BLE_VND_INCLUDED TRUE
#endif
================================================
FILE: compatibility_matrix.xml
================================================
android.frameworks.schedulerservice1.0ISchedulingPolicyServicedefaultandroid.frameworks.sensorservice1.0ISensorManagerdefaultandroid.hidl.allocator1.0IAllocatorashmemandroid.hidl.manager1.0IServiceManagerdefaultandroid.hidl.memory1.0IMapperashmemandroid.hidl.token1.0ITokenManagerdefaultandroid.system.wifi.keystore1.0IKeystoredefault
================================================
FILE: config.fs
================================================
[vendor/bin/wcnss_filter]
mode: 0755
user: AID_BLUETOOTH
group: AID_BLUETOOTH
caps: BLOCK_SUSPEND
[system/bin/cnss-daemon]
mode: 0755
user: AID_BLUETOOTH
group: AID_BLUETOOTH
caps: NET_BIND_SERVICE
[vendor/bin/pm-service]
mode: 0755
user: AID_SYSTEM
group: AID_SYSTEM
caps: NET_BIND_SERVICE
[system/bin/pm-service]
mode: 0755
user: AID_SYSTEM
group: AID_SYSTEM
caps: NET_BIND_SERVICE
[vendor/bin/pd-mapper]
mode: 0755
user: AID_SYSTEM
group: AID_SYSTEM
caps: NET_BIND_SERVICE
[system/bin/pd-mapper]
mode: 0755
user: AID_SYSTEM
group: AID_SYSTEM
caps: NET_BIND_SERVICE
[vendor/bin/imsdatadaemon]
mode: 0755
user: AID_SYSTEM
group: AID_SYSTEM
caps: NET_BIND_SERVICE
[vendor/bin/ims_rtp_daemon]
mode: 0755
user: AID_SYSTEM
group: AID_RADIO
caps: NET_BIND_SERVICE
[vendor/bin/cnd]
mode: 0755
user: AID_SYSTEM
group: AID_SYSTEM
caps: NET_BIND_SERVICE BLOCK_SUSPEND NET_ADMIN
[vendor/bin/slim_daemon]
mode: 0755
user: AID_GPS
group: AID_GPS
caps: NET_BIND_SERVICE
[vendor/bin/xtwifi-client]
mode: 0755
user: AID_GPS
group: AID_GPS
caps: NET_BIND_SERVICE BLOCK_SUSPEND
[firmware/]
mode: 0771
user: AID_SYSTEM
group: AID_SYSTEM
caps: 0
[persist/]
mode: 0771
user: AID_SYSTEM
group: AID_SYSTEM
caps: 0
[dsp/]
mode: 0771
user: AID_MEDIA
group: AID_MEDIA
caps: 0
================================================
FILE: device-vendor.mk
================================================
# This file lists all qcom products and defines the QC_PROP flag which
# is used to enable projects inside $(QC_PROP_ROOT) directory.
# Also, This file intended for use by device/product makefiles
# to pick and choose the optional proprietary modules
# Root of Qualcomm Proprietary component tree
QC_PROP_ROOT := vendor/qcom/proprietary
SDCLANG_LTO_DEFS := device/essential/mata/sdllvm-lto-defs.mk
PRODUCT_LIST := mata
PRODUCT_LIST += msm8998
ifneq ($(strip $(TARGET_VENDOR)),)
PRODUCT_LIST += $(TARGET_PRODUCT)
endif
XML_CONF_PATH := vendor/qcom/proprietary/telephony-apps/etc
ifneq ($(wildcard $(XML_CONF_PATH)),)
PRODUCT_COPY_FILES := $(XML_CONF_PATH)/cdma_call_conf.xml:system/etc/cdma_call_conf.xml $(PRODUCT_COPY_FILES)
endif
TARGET_BOARD_PLATFORM := msm8998
$(call inherit-product-if-exists, $(QC_PROP_ROOT)/android-perf/profiles.mk)
#Include other rules if any
$(call inherit-product-if-exists, $(QC_PROP_ROOT)/common-noship/build/generate_extra_images_prop.mk)
#prebuilt javalib
ifneq ($(wildcard $(QC_PROP_ROOT)/common/build/prebuilt_javalib.mk),)
BUILD_PREBUILT_JAVALIB := $(QC_PROP_ROOT)/common/build/prebuilt_javalib.mk
else
BUILD_PREBUILT_JAVALIB := $(BUILD_PREBUILT)
endif
# Each line here corresponds to an optional LOCAL_MODULE built by
# Android.mk(s) in the proprietary projects. Where project
# corresponds to the vars here in CAPs.
# These modules are tagged with optional as their LOCAL_MODULE_TAGS
# wouldn't be present in your on target images, unless listed here
# explicitly.
#ADSPRPC
ADSPRPC := libadsprpc
ADSPRPC += libadsp_default_listener
ADSPRPC += libssc_default_listener
ADSPRPC += adsprpcd
#BT
BT := btnvtool
BT += dun-server
BT += hci_qcomm_init
BT += liboi_sbc_decoder
BT += sapd
BT += wcnss_filter
BT += android.hardware.bluetooth@1.0-service
BT += android.hardware.bluetooth@1.0-impl
BT += android.hardware.bluetooth@1.0-service.rc
#CNE
CNE := andsfCne.xml
CNE += cnd
CNE += cneapiclient
CNE += cneapiclient.xml
CNE += CNEService
CNE += com.quicinc.cne
CNE += com.quicinc.cne.xml
CNE += com.quicinc.cneapiclient
CNE += libcne
CNE += libcneapiclient
CNE += libcneqmiutils
CNE += libcneoplookup
CNE += libmasc
CNE += libvendorconn
CNE += libwms
CNE += libwqe
CNE += libxml
CNE += ROW_profile1.xml
CNE += ROW_profile2.xml
CNE += ROW_profile3.xml
CNE += ROW_profile4.xml
CNE += ROW_profile5.xml
CNE += ROW_profile6.xml
CNE += ROW_profile7.xml
CNE += ATT_profile1.xml
CNE += ATT_profile2.xml
CNE += ATT_profile3.xml
CNE += ATT_profile4.xml
CNE += ATT_profile5.xml
CNE += ATT_profile6.xml
CNE += VZW_profile1.xml
CNE += VZW_profile2.xml
CNE += VZW_profile3.xml
CNE += VZW_profile4.xml
CNE += VZW_profile5.xml
CNE += VZW_profile6.xml
CNE += SwimConfig.xml
CNE += com.quicinc.cne.api@1.0
CNE += com.quicinc.cne.server@1.0
CNE += com.quicinc.cne.server@2.0
CNE += com.quicinc.cne.constants@1.0
CNE += com.quicinc.cne.constants@2.0
CNE += com.quicinc.cne.api-V1.0-java
# CNE rely on Latency HIDL
LATENCY := vendor.qti.hardware.data.latency@1.0
LATENCY += vendor.qti.hardware.data.latency@1.0_vendor
LATENCY += vendor.qti.hardware.data.latency-V1.0-java
LATENCY += vendor.qti.hardware.data.latency.xml
#DATA
DATA := ATFWD-daemon
DATA += dsdnsutil
DATA += dsi_config.xml
DATA += libconfigdb
DATA += libdsnet
DATA += libdsnetutil
DATA += libdsprofile
DATA += libdss
DATA += libdssock
DATA += libdsutils
DATA += libnetmgr
DATA += libqcmaputils
DATA += netmgrd
DATA += netmgr_config.xml
DATA += port-bridge
DATA += qti
#DISPLAY
DISPLAY := libsdmextension
DISPLAY += libqseed3
DISPLAY += libsdm-disp-apis
DISPLAY += libsdm-color
DISPLAY += libsdm-diag
DISPLAY += vendor.display.config@1.0_vendor
#DIAG
DIAG := diag_klog
DIAG += diag_mdlog
DIAG += diag_socket_log
DIAG += diag_qshrink4_daemon
DIAG += diag_uart_log
DIAG += libdiag_system
DIAG += libdiagjni
#hvdcp 3.0 daemon
HVDCP_OPTI := hvdcp_opti
# To create XTRA daemon (linked to libizat_core)
AOSP_GPS := xtra-daemon
AOSP_GPS += libizat_core
# Support library from vendor/qcom/opensource/location/
# Those are the implementation of the API, definied on the HAL
AOSP_GPS += libloc_api_v02
AOSP_GPS += libloc_ds_api
AOSP_GPS += liblbs_core
AOSP_GPS += libgeofence
AOSP_GPS += libflp
AOSP_GPS += libloc_pla
# loc_launcher will start the right daemons, per izat.conf
AOSP_GPS += loc_launcher
AOSP_GPS += izat.conf
# LOWI is needed for Free-WiFi Scan information
AOSP_GPS += lowi-server
AOSP_GPS += liblowi_client
AOSP_GPS += liblowi_wifihal
AOSP_GPS += liblowi_wifihal_nl
# sap.conf provide the sensor information for the GPS
AOSP_GPS += sap.conf
AOSP_GPS += flp.conf
#GsmaNfcService
GSMA_NFC := GsmaNfcService
GSMA_NFC += com.gsma.services.nfc
GSMA_NFC += com.gsma.services.nfc.xml
GSMA_NFC += com.gsma.services.utils
GSMA_NFC += com.gsma.services.utils.xml
#HBTP
HBTP := hbtp_daemon
HBTP += hbtpcfg_qtc800s.dat
HBTP += hbtpcfg_rohm.dat
HBTP += qtc800s_dsp.bin
HBTP += libhbtpdsp
HBTP += libhbtpclient
HBTP += libhbtpfrmwk
HBTP += libfastrpc_utf_stub
HBTP += libFastRPC_UTF_Forward_skel
HBTP += libFastRPC_UTF_Forward_Qtc2_skel
HBTP += libhbtpjni
HBTP += vendor.qti.hardware.improvetouch.touchcompanion@1.0
HBTP += vendor.qti.hardware.improvetouch.touchcompanion@1.0_vendor
HBTP += vendor.qti.hardware.improvetouch.touchcompanion@1.0-service
HBTP += vendor.qti.hardware.improvetouch.gesturemanager@1.0
HBTP += vendor.qti.hardware.improvetouch.gesturemanager@1.0_vendor
HBTP += vendor.qti.hardware.improvetouch.gesturemanager@1.0-service
HBTP += vendor.qti.hardware.improvetouch.blobmanager@1.0
HBTP += vendor.qti.hardware.improvetouch.blobmanager@1.0_vendor
HBTP += vendor.qti.hardware.improvetouch.blobmanager@1.0-service
HBTP += loader.cfg
#HY11_HY22 diff
HY11_HY22_diff += libacdb-fts
HY11_HY22_diff += libdatactrl
HY11_HY22_diff += libevent_observer
HY11_HY22_diff += libimsmedia_jni
HY11_HY22_diff += libsettings
HY11_HY22_diff += libwfdavenhancements
HY11_HY22_diff += libacdb-fts
HY11_HY22_diff += libacdbrtac
HY11_HY22_diff += libadiertac
HY11_HY22_diff += libdatactrl
HY11_HY22_diff += libdiag
HY11_HY22_diff += libevent_observer
HY11_HY22_diff += libimsmedia_jni
HY11_HY22_diff += libwbc_jni
HY11_HY22_diff += libmmcamera2_c2d_module
HY11_HY22_diff += libmmcamera2_cpp_module
HY11_HY22_diff += libmmcamera2_iface_modules
HY11_HY22_diff += libmmcamera2_imglib_modules
HY11_HY22_diff += libmmcamera2_isp_modules
HY11_HY22_diff += libmmcamera2_pp_buf_mgr
HY11_HY22_diff += libmmcamera2_pproc_modules
HY11_HY22_diff += libmmcamera2_sensor_modules
HY11_HY22_diff += libmmcamera2_stats_lib
HY11_HY22_diff += libmmcamera_eztune_module
HY11_HY22_diff += libmmcamera_ppbase_module
HY11_HY22_diff += libmmcamera_sw2d_lib
HY11_HY22_diff += libmmcamera_thread_services
HY11_HY22_diff += libmmcamera_tuning_lookup
HY11_HY22_diff += libomx-dts
HY11_HY22_diff += libqdi
HY11_HY22_diff += libqdp
HY11_HY22_diff += libqmi_client_qmux
HY11_HY22_diff += libremosaic_daemon
HY11_HY22_diff += libsensor_reg
HY11_HY22_diff += libsettings
HY11_HY22_diff += libtime_genoff
HY11_HY22_diff += libwfdavenhancements
HY11_HY22_diff += libwfdmmsink
HY11_HY22_diff += libwfduibcsinkinterface
HY11_HY22_diff += libwfduibcsink
HY11_HY22_diff += libpdnotifier
HY11_HY22_diff += libperfgluelayer
HY11_HY22_diff += libqti-gt-prop
HY11_HY22_diff += vendor.qti.hardware.radio.atcmdfwd@1.0_vendor
HY11_HY22_diff += radioconfig
HY11_HY22_diff += LteDirectDiscovery.xml
HY11_HY22_diff += radioconfig.xml
HY11_HY22_diff += radioconfiginterface.xml
HY11_HY22_diff += cdma_call_conf.xml
HY11_HY22_diff += spn-conf.xml
HY11_HY22_diff += libsns_low_lat_stream_skel_system
HY11_HY22_diff += libqti-util_system
# IMS Telephony Libs
# Defined as the ims provider in the overlay
IMS_TEL := ims.xml
IMS_TEL += imslibrary
IMS_TEL += ims
#IMS_VT
IMS_VT := lib-imsvt
IMS_VT += lib-imscamera
IMS_VT += lib-imsvtextutils
IMS_VT += lib-imsvtutils
IMS_VT += lib-imsvideocodec
IMS_VT += librcc
# Vzw Specific RCS APIs (Android Telephony)
IMS_TEL_RCS := qti-vzw-ims-internal
IMS_TEL_RCS += qti-vzw-ims-internal.xml
IMS_TEL_RCS += qti-vzw-ims-common
IMS_TEL_RCS += qti-vzw-ims-common.xml
#IMS_RCS
IMS_RCS := imsrcsd
IMS_RCS += lib-uceservice
IMS_RCS += lib-imsrcs-v2
IMS_RCS += lib-imsxml
IMS_RCS += lib-imscmservice
IMS_RCS += uceShimService
IMS_RCS += whitelist_com.qualcomm.qti.uceShimService
IMS_RCS += com.qualcomm.qti.imscmservice@1.0
IMS_RCS += com.qualcomm.qti.imscmservice@1.0_vendor
#IMS_NEWARCH
IMS_NEWARCH := imsdatadaemon
IMS_NEWARCH += imsqmidaemon
IMS_NEWARCH += ims_rtp_daemon
IMS_NEWARCH += lib-dplmedia
IMS_NEWARCH += lib-imsdpl
IMS_NEWARCH += lib-imsqimf
IMS_NEWARCH += lib-imsSDP
IMS_NEWARCH += lib-rtpcommon
IMS_NEWARCH += lib-rtpcore
IMS_NEWARCH += lib-rtpdaemoninterface
IMS_NEWARCH += lib-rtpsl
IMS_NEWARCH += vendor.qti.imsrtpservice@1.0-service-Impl
IMS_NEWARCH += vendor.qti.imsrtpservice@1.0
IMS_NEWARCH += vendor.qti.imsrtpservice@1.0_vendor
#IMS_REGMGR
IMS_REGMGR := RegmanagerApi
#MDM_HELPER
MDM_HELPER := mdm_helper
#MDM_HELPER_PROXY
MDM_HELPER_PROXY := mdm_helper_proxy
#MM_AUDIO
MM_AUDIO := audiod
MM_AUDIO += AudioFilter
MM_AUDIO += libacdbloader
MM_AUDIO += libacdbmapper
MM_AUDIO += libalsautils
MM_AUDIO += libatu
MM_AUDIO += libaudcal
MM_AUDIO += libaudioalsa
MM_AUDIO += libaudioeq
MM_AUDIO += libaudioparsers
MM_AUDIO += libcsd-client
MM_AUDIO += lib_iec_60958_61937
MM_AUDIO += libmm-audio-resampler
MM_AUDIO += libstagefright_soft_qtiflacdec
MM_AUDIO += libOmxAacDec
MM_AUDIO += libOmxAacEnc
MM_AUDIO += libOmxAdpcmDec
MM_AUDIO += libOmxAmrDec
MM_AUDIO += libOmxAmrEnc
MM_AUDIO += libOmxAmrRtpDec
MM_AUDIO += libOmxAmrwbDec
MM_AUDIO += libOmxAmrwbplusDec
MM_AUDIO += libOmxEvrcDec
MM_AUDIO += libOmxEvrcEnc
MM_AUDIO += libOmxEvrcHwDec
MM_AUDIO += libOmxMp3Dec
MM_AUDIO += libOmxQcelp13Dec
MM_AUDIO += libOmxQcelp13Enc
MM_AUDIO += libOmxQcelpHwDec
MM_AUDIO += libOmxVp8Dec
MM_AUDIO += libOmxWmaDec
MM_AUDIO += libOmxAlacDec
MM_AUDIO += libOmxApeDec
MM_AUDIO += libOmxAlacDecSw
MM_AUDIO += libOmxApeDecSw
MM_AUDIO += libOmxDsdDec
MM_AUDIO += libvoem-jni
MM_AUDIO += mm-omx-devmgr
MM_AUDIO += QCAudioManager
MM_AUDIO += liblistensoundmodel
MM_AUDIO += liblistensoundmodel2
MM_AUDIO += liblistenjni
MM_AUDIO += liblisten
MM_AUDIO += liblistenhardware
MM_AUDIO += STApp
MM_AUDIO += libqtigef
MM_AUDIO += libqcbassboost
MM_AUDIO += libqcvirt
MM_AUDIO += libqcreverb
MM_AUDIO += libasphere
MM_AUDIO += audiosphere
MM_AUDIO += audiosphere.xml
MM_AUDIO += audio_effects.conf
MM_AUDIO += libFlacSwDec
MM_AUDIO += libAlacSwDec
MM_AUDIO += libApeSwDec
MM_AUDIO += libdsd2pcm
MM_AUDIO += audioflacapp
MM_AUDIO += libqct_resampler
MM_AUDIO += libaudiodevarb
MM_AUDIO += audiod
MM_AUDIO += libsmwrapper
MM_AUDIO += libadpcmdec
MM_AUDIO += libmulawdec
MM_AUDIO += sound_trigger.primary.msm8998
MM_AUDIO += libnative_audio_latency_jni
MM_AUDIO += libhwdaphal
MM_AUDIO += libqcomvisualizer
MM_AUDIO += libqcomvoiceprocessing
MM_AUDIO += libqcompostprocbundle
MM_AUDIO += libadm
MM_AUDIO += libsurround_3mic_proc
MM_AUDIO += surround_sound_rec_AZ.cfg
MM_AUDIO += surround_sound_rec_5.1.cfg
MM_AUDIO += libdrc
MM_AUDIO += drc_cfg_AZ.txt
MM_AUDIO += drc_cfg_5.1.txt
MM_AUDIO += libgcs-osal
MM_AUDIO += libgcs-calwrapper
MM_AUDIO += libgcs-ipc
MM_AUDIO += libgcs
MM_AUDIO += cmudict.bin
MM_AUDIO += poc_64_hmm.gmm
MM_AUDIO += noisesample.bin
MM_AUDIO += antispoofing.bin
MM_AUDIO += libshoebox
MM_AUDIO += libvr_amb_engine
MM_AUDIO += libvr_object_engine
MM_AUDIO += libvr_sam_wrapper
MM_AUDIO += libvraudio
MM_AUDIO += libvraudio_client
#MM_CAMERA
MM_CAMERA := cpp_firmware_v1_1_1.fw
MM_CAMERA += cpp_firmware_v1_1_6.fw
MM_CAMERA += cpp_firmware_v1_2_0.fw
MM_CAMERA += cpp_firmware_v1_2_A.fw
MM_CAMERA += cpp_firmware_v1_6_0.fw
MM_CAMERA += cpp_firmware_v1_4_0.fw
MM_CAMERA += cpp_firmware_v1_5_0.fw
MM_CAMERA += cpp_firmware_v1_5_1.fw
MM_CAMERA += cpp_firmware_v1_5_2.fw
MM_CAMERA += cpp_firmware_v1_8_0.fw
MM_CAMERA += cpp_firmware_v1_10_0.fw
MM_CAMERA += cpp_firmware_v1_12_0.fw
MM_CAMERA += libflash_pmic
MM_CAMERA += libactuator_ak7371
MM_CAMERA += libactuator_ak7371_mono
MM_CAMERA += libois_lc898122
MM_CAMERA += libadsp_denoise_skel
MM_CAMERA += libadsp_hvx_add_constant
MM_CAMERA += libadsp_hvx_add_constant.so
MM_CAMERA += libadsp_hvx_stats
MM_CAMERA += libadsp_hvx_stats.so
MM_CAMERA += libadsp_hvx_callback_skel
MM_CAMERA += libadsp_hvx_stub
MM_CAMERA += libadsp_hvx_skel
MM_CAMERA += libadsp_hvx_skel.so
MM_CAMERA += libadsp_fd_skel
MM_CAMERA += libadsp_hvx_zzhdr_BGGR
MM_CAMERA += libadsp_hvx_zzhdr_BGGR.so
MM_CAMERA += libadsp_hvx_zzhdr_RGGB
MM_CAMERA += libadsp_hvx_zzhdr_RGGB.so
MM_CAMERA += libchromatix_imx258_common
MM_CAMERA += libchromatix_imx258_cpp_hfr_60
MM_CAMERA += libchromatix_imx258_cpp_hfr_90
MM_CAMERA += libchromatix_imx258_cpp_hfr_120
MM_CAMERA += libchromatix_imx258_cpp_liveshot
MM_CAMERA += libchromatix_imx258_cpp_preview
MM_CAMERA += libchromatix_imx258_cpp_snapshot
MM_CAMERA += libchromatix_imx258_cpp_video
MM_CAMERA += libchromatix_imx258_cpp_video_4k
MM_CAMERA += libchromatix_imx258_default_video
MM_CAMERA += libchromatix_imx258_hfr_60
MM_CAMERA += libchromatix_imx258_hfr_90
MM_CAMERA += libchromatix_imx258_hfr_120
MM_CAMERA += libchromatix_imx258_liveshot
MM_CAMERA += libchromatix_imx258_postproc
MM_CAMERA += libchromatix_imx258_preview
MM_CAMERA += libchromatix_imx258_snapshot
MM_CAMERA += libchromatix_imx258_video_4k
MM_CAMERA += libchromatix_imx258_4k_preview_3a
MM_CAMERA += libchromatix_imx258_4k_video_3a
MM_CAMERA += libchromatix_imx258_default_preview_3a
MM_CAMERA += libchromatix_imx258_default_video_3a
MM_CAMERA += libchromatix_imx258_hfr_60_3a
MM_CAMERA += libchromatix_imx258_hfr_90_3a
MM_CAMERA += libchromatix_imx258_hfr_120_3a
MM_CAMERA += libchromatix_imx258_zsl_preview_3a
MM_CAMERA += libchromatix_imx258_zsl_video_3a
MM_CAMERA += libchromatix_imx258_mono_common
MM_CAMERA += libchromatix_imx258_mono_cpp_hfr_60
MM_CAMERA += libchromatix_imx258_mono_cpp_hfr_90
MM_CAMERA += libchromatix_imx258_mono_cpp_hfr_120
MM_CAMERA += libchromatix_imx258_mono_cpp_liveshot
MM_CAMERA += libchromatix_imx258_mono_cpp_preview
MM_CAMERA += libchromatix_imx258_mono_cpp_snapshot
MM_CAMERA += libchromatix_imx258_mono_cpp_video
MM_CAMERA += libchromatix_imx258_mono_cpp_video_4k
MM_CAMERA += libchromatix_imx258_mono_default_video
MM_CAMERA += libchromatix_imx258_mono_hfr_60
MM_CAMERA += libchromatix_imx258_mono_hfr_90
MM_CAMERA += libchromatix_imx258_mono_hfr_120
MM_CAMERA += libchromatix_imx258_mono_liveshot
MM_CAMERA += libchromatix_imx258_mono_postproc
MM_CAMERA += libchromatix_imx258_mono_preview
MM_CAMERA += libchromatix_imx258_mono_snapshot
MM_CAMERA += libchromatix_imx258_mono_video_4k
MM_CAMERA += libchromatix_imx258_mono_4k_preview_3a
MM_CAMERA += libchromatix_imx258_mono_4k_video_3a
MM_CAMERA += libchromatix_imx258_mono_default_preview_3a
MM_CAMERA += libchromatix_imx258_mono_default_video_3a
MM_CAMERA += libchromatix_imx258_mono_hfr_60_3a
MM_CAMERA += libchromatix_imx258_mono_hfr_90_3a
MM_CAMERA += libchromatix_imx258_mono_hfr_120_3a
MM_CAMERA += libchromatix_imx258_mono_zsl_preview_3a
MM_CAMERA += libchromatix_imx258_mono_zsl_video_3a
MM_CAMERA += libedgesmooth
MM_CAMERA += libedge_smooth_hvx_stub
MM_CAMERA += libedge_smooth_skel
MM_CAMERA += libmmcamera_hvx_add_constant
MM_CAMERA += libmmcamera_hvx_grid_sum
MM_CAMERA += libmmcamera_hvx_zzHDR
MM_CAMERA += libmmcamera
MM_CAMERA += libmmcamera_dbg
MM_CAMERA += libmmcamera_cac_lib
MM_CAMERA += libmmcamera_cac2_lib
MM_CAMERA += libmmcamera_chromaflash_lib
MM_CAMERA += libmmcamera_edgesmooth_lib
MM_CAMERA += libmmcamera_quadracfa
MM_CAMERA += libremosaiclib
MM_CAMERA += libmmcamera_eeprom_util
MM_CAMERA += libmmcamera_facedetection_lib
MM_CAMERA += libmmcamera_faceproc
MM_CAMERA += libmmcamera_faceproc2
MM_CAMERA += libswregistrationalgo
MM_CAMERA += libmmcamera_faceproc_system
MM_CAMERA += libmmcamera_faceproc2_system
MM_CAMERA += libswregistrationalgo_system
MM_CAMERA += libmmcamera_frameproc
MM_CAMERA += libmmcamera_hdr_gb_lib
MM_CAMERA += libmmcamera_hdr_lib
MM_CAMERA += libmmcamera_hi256
MM_CAMERA += libmmcamera_imglib
MM_CAMERA += libmmcamera_paaf_lib
MM_CAMERA += libmmcamera_depth_map
MM_CAMERA += libdepthmapwrapper
MM_CAMERA += libdualcameraddm_system
MM_CAMERA += libmmcamera_imx258
MM_CAMERA += libmmcamera_imx258_gt24c32_eeprom
MM_CAMERA += libmmcamera_imx258_mono
MM_CAMERA += libmmcamera_imx258_mono_gt24c32_eeprom
MM_CAMERA += libmmcamera_imx268
MM_CAMERA += libmmcamera_dcrf_lib
MM_CAMERA += libmmcamera_llvd
#MM_CAMERA += libmmcamera_bokeh
MM_CAMERA += libmmcamera_sw_tnr
MM_CAMERA += libmmcamera_s5k3m2xm
MM_CAMERA += libmmcamera_isp_abf44
MM_CAMERA += libmmcamera_isp_abf46
MM_CAMERA += libmmcamera_isp_abf47
MM_CAMERA += libmmcamera_isp_abf48
MM_CAMERA += libmmcamera_isp_aec_bg_stats47
MM_CAMERA += libmmcamera_isp_abcc44
MM_CAMERA += libmmcamera_isp_bcc44
MM_CAMERA += libmmcamera_isp_black_level47
MM_CAMERA += libmmcamera_isp_bpc40
MM_CAMERA += libmmcamera_isp_bcc40
MM_CAMERA += libmmcamera_isp_bpc44
MM_CAMERA += libmmcamera_isp_bpc47
MM_CAMERA += libmmcamera_isp_bpc48
MM_CAMERA += libmmcamera_isp_be_stats44
MM_CAMERA += libmmcamera_isp_bf_scale_stats44
MM_CAMERA += libmmcamera_isp_bf_scale_stats46
MM_CAMERA += libmmcamera_isp_bf_stats44
MM_CAMERA += libmmcamera_isp_bf_stats47
MM_CAMERA += libmmcamera_isp_bhist_stats44
MM_CAMERA += libmmcamera_isp_bg_stats44
MM_CAMERA += libmmcamera_isp_bg_stats46
MM_CAMERA += libmmcamera_isp_black_level48
MM_CAMERA += libmmcamera_isp_cac47
MM_CAMERA += libmmcamera_isp_cs_stats44
MM_CAMERA += libmmcamera_isp_cs_stats46
MM_CAMERA += libmmcamera_isp_chroma_enhan40
MM_CAMERA += libmmcamera_isp_chroma_suppress40
MM_CAMERA += libmmcamera_isp_clamp_encoder40
MM_CAMERA += libmmcamera_isp_clamp_viewfinder40
MM_CAMERA += libmmcamera_isp_clamp_video40
MM_CAMERA += libmmcamera_isp_clf44
MM_CAMERA += libmmcamera_isp_clf46
MM_CAMERA += libmmcamera_isp_color_correct40
MM_CAMERA += libmmcamera_isp_color_correct46
MM_CAMERA += libmmcamera_isp_color_xform_encoder40
MM_CAMERA += libmmcamera_isp_color_xform_viewfinder40
MM_CAMERA += libmmcamera_isp_color_xform_encoder46
MM_CAMERA += libmmcamera_isp_color_xform_viewfinder46
MM_CAMERA += libmmcamera_isp_color_xform_video46
MM_CAMERA += libmmcamera_isp_demosaic40
MM_CAMERA += libmmcamera_isp_demosaic44
MM_CAMERA += libmmcamera_isp_demosaic47
MM_CAMERA += libmmcamera_isp_demosaic48
MM_CAMERA += libmmcamera_isp_demux40
MM_CAMERA += libmmcamera_isp_demux48
MM_CAMERA += libmmcamera_isp_fovcrop_encoder40
MM_CAMERA += libmmcamera_isp_fovcrop_viewfinder40
MM_CAMERA += libmmcamera_isp_fovcrop_encoder46
MM_CAMERA += libmmcamera_isp_fovcrop_viewfinder46
MM_CAMERA += libmmcamera_isp_fovcrop_video46
MM_CAMERA += libmmcamera_isp_gamma40
MM_CAMERA += libmmcamera_isp_gamma44
MM_CAMERA += libmmcamera_isp_gamma46
MM_CAMERA += libmmcamera_isp_gic46
MM_CAMERA += libmmcamera_isp_gic48
MM_CAMERA += libmmcamera_isp_gtm46
MM_CAMERA += libmmcamera_isp_hdr_be_stats46
MM_CAMERA += libmmcamera_isp_hdr46
MM_CAMERA += libmmcamera_isp_hdr48
MM_CAMERA += libmmcamera_isp_hdr_bhist_stats44
MM_CAMERA += libmmcamera_isp_ihist_stats44
MM_CAMERA += libmmcamera_isp_ihist_stats46
MM_CAMERA += libmmcamera_isp_linearization40
MM_CAMERA += libmmcamera_isp_luma_adaptation40
MM_CAMERA += libmmcamera_isp_ltm44
MM_CAMERA += libmmcamera_isp_ltm47
MM_CAMERA += libmmcamera_isp_mce40
MM_CAMERA += libmmcamera_isp_mesh_rolloff40
MM_CAMERA += libmmcamera_isp_mesh_rolloff44
MM_CAMERA += libmmcamera_isp_pedestal_correct46
MM_CAMERA += libmmcamera_isp_pdaf48
MM_CAMERA += libmmcamera_isp_rs_stats44
MM_CAMERA += libmmcamera_isp_scaler_encoder40
MM_CAMERA += libmmcamera_isp_scaler_viewfinder40
MM_CAMERA += libmmcamera_isp_snr47
MM_CAMERA += libmmcamera_isp_rs_stats46
MM_CAMERA += libmmcamera_isp_scaler_encoder44
MM_CAMERA += libmmcamera_isp_scaler_viewfinder44
MM_CAMERA += libmmcamera_isp_scaler_encoder46
MM_CAMERA += libmmcamera_isp_scaler_viewfinder46
MM_CAMERA += libmmcamera_isp_scaler_video46
MM_CAMERA += libmmcamera_isp_sce40
MM_CAMERA += libmmcamera_isp_sub_module
MM_CAMERA += libmmcamera_isp_wb40
MM_CAMERA += libmmcamera_isp_wb46
MM_CAMERA += libmmcamera_mt9m114
MM_CAMERA += libmmcamera_optizoom_lib
MM_CAMERA += libmmcamera_pdaf
MM_CAMERA += libmmcamera_pdafcamif
MM_CAMERA += libmmcamera_plugin
MM_CAMERA += libmmcamera_sp1628
MM_CAMERA += libmmcamera_statsproc31
MM_CAMERA += libmmcamera_stillmore_lib
MM_CAMERA += libmmcamera_target
MM_CAMERA += libmmcamera_trueportrait_lib
MM_CAMERA += libmmcamera_ubifocus_lib
MM_CAMERA += libmmcamera_wavelet_lib
MM_CAMERA += libmmcamera2_dcrf
MM_CAMERA += libmmcamera2_frame_algorithm
MM_CAMERA += libmmcamera2_q3a_core
MM_CAMERA += libmmcamera2_q3a_release
MM_CAMERA += libmmcamera2_is
MM_CAMERA += libmmcamera2_stats_algorithm
MM_CAMERA += libmmcamera2_stats_release
MM_CAMERA += libmmcamera-core
MM_CAMERA += libmm-qcamera
MM_CAMERA += liboemcamera
MM_CAMERA += libmmcamera2_mct
MM_CAMERA += libqcamera
MM_CAMERA += libseemore_hexagon_skel
MM_CAMERA += libtm_interface
MM_CAMERA += v4l2-qcamera-app
MM_CAMERA += libmmcamera_tintless_algo
MM_CAMERA += libmmcamera_tintless_bg_pca_algo
MM_CAMERA += libmmcamera2_mct_shimlayer
MM_CAMERA += libmmcamera_csidtg
MM_CAMERA += libmmcamera_eebinparse
MM_CAMERA += libmmcamera_imglib_faceproc_adspstub
MM_CAMERA += libmmcamera_isp_abf40
MM_CAMERA += libmmcamera_isp_template
MM_CAMERA += libmmcamera_dummyalgo
MM_CAMERA += libactuator_bu64297
MM_CAMERA += libactuator_dw9761b
MM_CAMERA += libactuator_dw9763
MM_CAMERA += libchromatix_csidtg_common
MM_CAMERA += libchromatix_csidtg_cpp_preview
MM_CAMERA += libchromatix_csidtg_postproc
MM_CAMERA += libchromatix_csidtg_preview
MM_CAMERA += libchromatix_csidtg_zsl_preview
MM_CAMERA += camera_config.xml
MM_CAMERA += imx258_chromatix.xml
MM_CAMERA += imx258_mono_chromatix.xml
MM_CAMERA += sensors.hal.tof
MM_CAMERA += libchromaflash
MM_CAMERA += liboptizoom
MM_CAMERA += libseemore
MM_CAMERA += libblurbuster
MM_CAMERA += libclearsight
MM_CAMERA += libts_face_beautify_hal_system
MM_CAMERA += libubifocus_system
MM_CAMERA += libdualcameraddm_system
MM_CAMERA += libchromaflash_system
MM_CAMERA += liboptizoom_system
MM_CAMERA += libseemore_system
ifneq ($(TARGET_SCVE_DISABLED),true)
MM_CAMERA += libjni_trackingfocus
MM_CAMERA += libjni_panorama
endif
MM_CAMERA += libjni_makeupV2
MM_CAMERA += libjni_sharpshooter
MM_CAMERA += libjni_stillmore
MM_CAMERA += libjni_optizoom
MM_CAMERA += libjni_chromaflash
MM_CAMERA += libjni_ubifocus
MM_CAMERA += libjni_blurbuster
MM_CAMERA += libllvd_smore
MM_CAMERA += libllvd_sw_tnr
MM_CAMERA += libdualcameraddm
MM_CAMERA += libvideobokeh
MM_CAMERA += libubifocus
MM_CAMERA += libjni_dualcamera
MM_CAMERA += libts_detected_face_hal
MM_CAMERA += libts_detected_face_jni
MM_CAMERA += libts_face_beautify_hal
MM_CAMERA += libts_face_beautify_jni
MM_CAMERA += libjni_clearsight
MM_CAMERA += imx268_chromatix.xml
MM_CAMERA += libchromatix_imx268_common
MM_CAMERA += libchromatix_imx268_cpp_hfr_60
MM_CAMERA += libchromatix_imx268_cpp_hfr_90
MM_CAMERA += libchromatix_imx268_cpp_hfr_120
MM_CAMERA += libchromatix_imx268_cpp_liveshot
MM_CAMERA += libchromatix_imx268_cpp_preview
MM_CAMERA += libchromatix_imx268_cpp_snapshot
MM_CAMERA += libchromatix_imx268_cpp_video
MM_CAMERA += libchromatix_imx268_cpp_video_4k
MM_CAMERA += libchromatix_imx268_default_video
MM_CAMERA += libchromatix_imx268_hfr_60
MM_CAMERA += libchromatix_imx268_hfr_90
MM_CAMERA += libchromatix_imx268_hfr_120
MM_CAMERA += libchromatix_imx268_liveshot
MM_CAMERA += libchromatix_imx268_postproc
MM_CAMERA += libchromatix_imx268_preview
MM_CAMERA += libchromatix_imx268_snapshot
MM_CAMERA += libchromatix_imx268_video_4k
MM_CAMERA += libchromatix_imx268_4k_preview_3a
MM_CAMERA += libchromatix_imx268_4k_video_3a
MM_CAMERA += libchromatix_imx268_default_preview_3a
MM_CAMERA += libchromatix_imx268_default_video_3a
MM_CAMERA += libchromatix_imx268_hfr_60_3a
MM_CAMERA += libchromatix_imx268_hfr_90_3a
MM_CAMERA += libchromatix_imx268_hfr_120_3a
MM_CAMERA += libchromatix_imx268_zsl_preview_3a
MM_CAMERA += libchromatix_imx268_zsl_video_3a
#Gallery
MM_CAMERA += libfiltergenerator
MM_CAMERA += libhazebuster
MM_CAMERA += libtrueportrait
MM_CAMERA += libseestraight
MM_CAMERA += libtruescanner
MM_CAMERA += libjni_filtergenerator
MM_CAMERA += libjni_hazebuster
MM_CAMERA += libjni_trueportrait
MM_CAMERA += libjni_seestraight
MM_CAMERA += libjni_truescanner_v2
#CamX
MM_CAMERA += CAMERA_ICP.elf
MM_CAMERA += camera.qcom
MM_CAMERA += com.qti.chi.override
MM_CAMERA += com.qti.node.memcpy
MM_CAMERA += com.qti.node.swregistration
MM_CAMERA += com.qti.sensormodule.liteon_imx318.bin
MM_CAMERA += com.qti.sensormodule.semco_imx258.bin
MM_CAMERA += imx318tuned.bin
MM_CAMERA += libcamxosutils
#to be removed after source code merges
MM_CAMERA += libcamxstaticaecalgo
MM_CAMERA += libcamxstaticafalgo
MM_CAMERA += libcamxstaticafdalgo
MM_CAMERA += libcamxstaticasdalgo
MM_CAMERA += libcamxstaticawbalgo
MM_CAMERA += libcom.qti.stats.aec
MM_CAMERA += libcom.qti.stats.af
MM_CAMERA += libcom.qti.stats.awb
#end of can be removed after source code merges
MM_CAMERA += libcom.qti.stats.asd
MM_CAMERA += libcom.qti.stats.pdlib
MM_CAMERA += libcom.qtistatic.stats.asd
MM_CAMERA += com.qtistatic.stats.aec
MM_CAMERA += com.qtistatic.stats.af
MM_CAMERA += com.qtistatic.stats.awb
MM_CAMERA += com.qti.stats.aec
MM_CAMERA += com.qti.stats.af
MM_CAMERA += com.qti.stats.awb
MM_CAMERA += libcamxstatscore
MM_CAMERA += libcamxstatsparser
MM_CAMERA += libcamxutils
MM_CAMERA += libsync
MM_CAMERA += stripinglib
MM_CAMERA += systemdefault.bin
MM_CAMERA += titan17x_usecases.bin
#MM_CORE
MM_CORE := libdisp-aba
MM_CORE += libmm-abl
MM_CORE += libmm-abl-oem
MM_CORE += libscale
MM_CORE += mm-pp-daemon
MM_CORE += libmm-hdcpmgr
MM_CORE += libvpu
MM_CORE += libvfmclientutils
MM_CORE += libmm-qdcm
MM_CORE += libmm-disp-apis
MM_CORE += libmm-als
#MM_COLOR_CONVERSION
MM_COLOR_CONVERSION := libtile2linear
#MM_COLOR_CONVERTOR
MM_COLOR_CONVERTOR := libmm-color-convertor
MM_COLOR_CONVERTOR += libI420colorconvert
#MM_GESTURES
MM_GESTURES := gesture_mouse.idc
MM_GESTURES += GestureOverlayService
MM_GESTURES += GestureTouchInjectionConfig
MM_GESTURES += GestureTouchInjectionService
MM_GESTURES += libgesture-core
MM_GESTURES += libmmgesture-activity-trigger
MM_GESTURES += libmmgesture-bus
MM_GESTURES += libmmgesture-camera
MM_GESTURES += libmmgesture-camera-factory
MM_GESTURES += libmmgesture-client
MM_GESTURES += libmmgesture-jni
MM_GESTURES += libmmgesture-linux
MM_GESTURES += libmmgesture-service
MM_GESTURES += mm-gesture-daemon
#MM_GRAPHICS
MM_GRAPHICS := a225_pfp.fw
MM_GRAPHICS += a225_pm4.fw
MM_GRAPHICS += a225p5_pm4.fw
MM_GRAPHICS += a300_pfp.fw
MM_GRAPHICS += a300_pm4.fw
MM_GRAPHICS += a330_pfp.fw
MM_GRAPHICS += a330_pm4.fw
MM_GRAPHICS += a420_pfp.fw
MM_GRAPHICS += a420_pm4.fw
MM_GRAPHICS += a530_pfp.fw
MM_GRAPHICS += a530_pm4.fw
MM_GRAPHICS += a530v1_pfp.fw
MM_GRAPHICS += a530v1_pm4.fw
MM_GRAPHICS += a530_gpmu.fw2
MM_GRAPHICS += a530v2_seq.fw2
MM_GRAPHICS += a530v3_gpmu.fw2
MM_GRAPHICS += a530v3_seq.fw2
MM_GRAPHICS += a530_zap.b00
MM_GRAPHICS += a530_zap.b01
MM_GRAPHICS += a530_zap.b02
MM_GRAPHICS += a530_zap.mdt
MM_GRAPHICS += a530_zap.elf
MM_GRAPHICS += a512_zap.b00
MM_GRAPHICS += a512_zap.b01
MM_GRAPHICS += a512_zap.b02
MM_GRAPHICS += a512_zap.mdt
MM_GRAPHICS += a512_zap.elf
MM_GRAPHICS += a508_zap.b00
MM_GRAPHICS += a508_zap.b01
MM_GRAPHICS += a508_zap.b02
MM_GRAPHICS += a508_zap.mdt
MM_GRAPHICS += a508_zap.elf
MM_GRAPHICS += a506_zap.b00
MM_GRAPHICS += a506_zap.b01
MM_GRAPHICS += a506_zap.b02
MM_GRAPHICS += a506_zap.mdt
MM_GRAPHICS += a506_zap.elf
MM_GRAPHICS += a540_gpmu.fw2
MM_GRAPHICS += a630_sqe.fw
MM_GRAPHICS += a630_gmu.bin
MM_GRAPHICS += a630_zap.b00
MM_GRAPHICS += a630_zap.b01
MM_GRAPHICS += a630_zap.b02
MM_GRAPHICS += a630_zap.elf
MM_GRAPHICS += a630_zap.mdt
MM_GRAPHICS += a615_zap.b00
MM_GRAPHICS += a615_zap.b01
MM_GRAPHICS += a615_zap.b02
MM_GRAPHICS += a615_zap.elf
MM_GRAPHICS += a615_zap.mdt
MM_GRAPHICS += eglsubAndroid
MM_GRAPHICS += eglSubDriverAndroid
MM_GRAPHICS += gpu_dcvsd
MM_GRAPHICS += leia_pfp_470.fw
MM_GRAPHICS += leia_pm4_470.fw
MM_GRAPHICS += libadreno_utils
MM_GRAPHICS += libC2D2
MM_GRAPHICS += libCB
MM_GRAPHICS += libc2d2_z180
MM_GRAPHICS += libc2d2_a3xx
MM_GRAPHICS += libEGL_adreno
MM_GRAPHICS += libc2d30-a3xx
MM_GRAPHICS += libc2d30-a4xx
MM_GRAPHICS += libc2d30-a5xx
MM_GRAPHICS += libc2d30_bltlib
MM_GRAPHICS += libc2d30
MM_GRAPHICS += libgsl
MM_GRAPHICS += libGLESv2_adreno
MM_GRAPHICS += libGLESv2S3D_adreno
MM_GRAPHICS += libGLESv1_CM_adreno
MM_GRAPHICS += libllvm-a3xx
MM_GRAPHICS += libllvm-arm
MM_GRAPHICS += libllvm-glnext
MM_GRAPHICS += libllvm-qcom
MM_GRAPHICS += libOpenVG
MM_GRAPHICS += libOpenCL
MM_GRAPHICS += libplayback_adreno
MM_GRAPHICS += libq3dtools_adreno
MM_GRAPHICS += libq3dtools_esx
MM_GRAPHICS += libQTapGLES
MM_GRAPHICS += libsc-a2xx
MM_GRAPHICS += libsc-a3xx
MM_GRAPHICS += libsc-adreno.a
MM_GRAPHICS += ProfilerPlaybackTools
MM_GRAPHICS += yamato_pfp.fw
MM_GRAPHICS += yamato_pm4.fw
MM_GRAPHICS += librs_adreno
MM_GRAPHICS += libRSDriver_adreno
MM_GRAPHICS += libbccQTI
MM_GRAPHICS += android.hardware.renderscript@1.0-impl
MM_GRAPHICS += libintrinsics_skel
MM_GRAPHICS += librs_adreno_sha1
MM_GRAPHICS += libESXEGL_adreno
MM_GRAPHICS += libESXGLESv1_CM_adreno
MM_GRAPHICS += libESXGLESv2_adreno
MM_GRAPHICS += libRBEGL_adreno
MM_GRAPHICS += libRBGLESv1_CM_adreno
MM_GRAPHICS += libRBGLESv2_adreno
MM_GRAPHICS += vulkan.msm8998
MM_GRAPHICS += libllvm-qgl
#MM_HTTP
MM_HTTP := libmmipstreamaal
MM_HTTP += libmmipstreamnetwork
MM_HTTP += libmmipstreamutils
MM_HTTP += libmmiipstreammmihttp
MM_HTTP += libmmhttpstack
MM_HTTP += libmmipstreamsourcehttp
MM_HTTP += libmmqcmediaplayer
MM_HTTP += libmmipstreamdeal
#MM_DRMPLAY
MM_DRMPLAY := drmclientlib
MM_DRMPLAY += libDrmPlay
#MM_MUX
MM_MUX := libFileMux
#MM_OSAL
MM_OSAL := libmmosal
MM_OSAL += libmmosal_proprietary
#MM_PARSER
MM_PARSER := libmmparser_lite
#MM_QSM
MM_QSM := libmmQSM
#MM_RTP
MM_RTP := libmmrtpdecoder
MM_RTP += libmmrtpencoder
#MM_STEREOLIB
MM_STEREOLIB := libmmstereo
#MM_STILL
MM_STILL := libadsp_jpege_skel
MM_STILL += libgemini
MM_STILL += libimage-jpeg-dec-omx-comp
MM_STILL += libimage-jpeg-enc-omx-comp
MM_STILL += libimage-omx-common
MM_STILL += libjpegdhw
MM_STILL += libjpegehw
MM_STILL += libmmipl
MM_STILL += libmmjpeg
MM_STILL += libmmjps
MM_STILL += libmmmpo
MM_STILL += libmmmpod
MM_STILL += libmmqjpeg_codec
MM_STILL += libmmstillomx
MM_STILL += libqomx_jpegenc
MM_STILL += libqomx_jpegdec
MM_STILL += test_gemini
MM_STILL += libjpegdmahw
MM_STILL += libmmqjpegdma
MM_STILL += libqomx_jpegenc_pipe
#MM_VIDEO
ifneq ($(call is-board-platform,sdm845),true)
MM_VIDEO := ast-mm-vdec-omx-test7k
MM_VIDEO += iv_h264_dec_lib
MM_VIDEO += iv_mpeg4_dec_lib
MM_VIDEO += libh264decoder
MM_VIDEO += libHevcSwDecoder
MM_VIDEO += liblasic
MM_VIDEO += libmm-adspsvc
MM_VIDEO += libmp4decoder
MM_VIDEO += libmp4decodervlddsp
MM_VIDEO += libOmxH264Dec
MM_VIDEO += libOmxIttiamVdec
MM_VIDEO += libOmxIttiamVenc
MM_VIDEO += libOmxMpeg4Dec
MM_VIDEO += libOmxOn2Dec
MM_VIDEO += libOmxrv9Dec
MM_VIDEO += libon2decoder
MM_VIDEO += librv9decoder
MM_VIDEO += libVenusMbiConv
MM_VIDEO += venc-device-android
MM_VIDEO += venus-v1.b00
MM_VIDEO += venus-v1.b01
MM_VIDEO += venus-v1.b02
MM_VIDEO += venus-v1.b03
MM_VIDEO += venus-v1.b04
MM_VIDEO += venus-v1.mdt
MM_VIDEO += venus-v1.mbn
MM_VIDEO += venus.b00
MM_VIDEO += venus.b01
MM_VIDEO += venus.b02
MM_VIDEO += venus.b03
MM_VIDEO += venus.b04
MM_VIDEO += venus.mbn
MM_VIDEO += venus.mdt
MM_VIDEO += vidc_1080p.fw
MM_VIDEO += vidc.b00
MM_VIDEO += vidc.b01
MM_VIDEO += vidc.b02
MM_VIDEO += vidc.b03
MM_VIDEO += vidcfw.elf
MM_VIDEO += vidc.mdt
MM_VIDEO += vidc_720p_command_control.fw
MM_VIDEO += vidc_720p_h263_dec_mc.fw
MM_VIDEO += vidc_720p_h264_dec_mc.fw
MM_VIDEO += vidc_720p_h264_enc_mc.fw
MM_VIDEO += vidc_720p_mp4_dec_mc.fw
MM_VIDEO += vidc_720p_mp4_enc_mc.fw
MM_VIDEO += vidc_720p_vc1_dec_mc.fw
MM_VIDEO += vt-sim-test
MM_VIDEO += libgpustats
MM_VIDEO += libvqzip
endif
MM_VIDEO += libOmxVidEnc
MM_VIDEO += libOmxWmvDec
MM_VIDEO += libMpeg4SwEncoder
MM_VIDEO += libswvdec
MM_VIDEO += libVC1DecDsp_skel
MM_VIDEO += libVC1DecDsp_skel.so
MM_VIDEO += libVC1Dec
MM_VIDEO += libVC1Dec.so
MM_VIDEO += libavenhancements
MM_VIDEO += libfastcrc
MM_VIDEO += libstreamparser
MM_VIDEO += libvideoutils
MM_VIDEO += libUBWC
#MM_VPU
MM_VPU := vpu.b00
MM_VPU += vpu.b01
MM_VPU += vpu.b02
MM_VPU += vpu.b03
MM_VPU += vpu.b04
MM_VPU += vpu.b05
MM_VPU += vpu.b06
MM_VPU += vpu.b07
MM_VPU += vpu.b08
MM_VPU += vpu.b09
MM_VPU += vpu.b10
MM_VPU += vpu.b11
MM_VPU += vpu.b12
MM_VPU += vpu.mbn
MM_VPU += vpu.mdt
#MODEM_APIS
MODEM_APIS := libadc
MODEM_APIS += libauth
MODEM_APIS += libcm
MODEM_APIS += libdsucsd
MODEM_APIS += libfm_wan_api
MODEM_APIS += libgsdi_exp
MODEM_APIS += libgstk_exp
MODEM_APIS += libisense
MODEM_APIS += libloc_api
MODEM_APIS += libmmgsdilib
MODEM_APIS += libmmgsdisessionlib
MODEM_APIS += libmvs
MODEM_APIS += libnv
MODEM_APIS += liboem_rapi
MODEM_APIS += libpbmlib
MODEM_APIS += libpdapi
MODEM_APIS += libpdsm_atl
MODEM_APIS += libping_mdm
MODEM_APIS += libplayready
MODEM_APIS += librfm_sar
MODEM_APIS += libsnd
MODEM_APIS += libtime_remote_atom
MODEM_APIS += libvoem_if
MODEM_APIS += libwidevine
MODEM_APIS += libwms
MODEM_APIS += libcommondefs
MODEM_APIS += libcm_fusion
MODEM_APIS += libcm_mm_fusion
MODEM_APIS += libdsucsdappif_apis_fusion
MODEM_APIS += liboem_rapi_fusion
MODEM_APIS += libpbmlib_fusion
MODEM_APIS += libping_lte_rpc
MODEM_APIS += libwms_fusion
#MSM_IRQBALANCE
MSM_IRQBALANCE := msm_irqbalance
#PD_LOCATER - Service locater binary/libs
PD_LOCATER := pd-mapper
PD_LOCATER += libpdmapper
PD_LOCATER += libjson # 3rd party support library
#PERIPHERAL MANAGER:
PERMGR := pm-service
PERMGR += libperipheral_client
PERMGR += pm-proxy
#PROFILER
PROFILER := profiler_tester
PROFILER += profiler_daemon
PROFILER += libprofiler_msmadc
#QCRIL
QCRIL := libril-qc-1
QCRIL += libril-qc-qmi-1
QCRIL += libril-qc-hal-qmi
QCRIL += libril-qcril-hook-oem
QCRIL += qcrilhook
QCRIL += qcrilmsgtunnel
QCRIL += qcrilhook.xml
QCRIL += libwmsts
QCRIL += libril-qc-radioconfig
QCRIL += libril-qc-ltedirectdisc
QCRIL += librilqmiservices
QCRIL += libsettings
QCRIL += liblqe
QCRIL += lib_remote_simlock
QCRIL += vendor.qti.hardware.radio.am@1.0_vendor
QCRIL += vendor.qti.hardware.radio.ims@1.0_vendor
QCRIL += vendor.qti.hardware.radio.lpa@1.0_vendor
QCRIL += vendor.qti.hardware.radio.qcrilhook@1.0_vendor
QCRIL += vendor.qti.hardware.radio.qtiradio@1.0_vendor
#QMI
QMI := check_system_health
QMI := irsc_util
QMI += libidl
QMI += libqcci_legacy
QMI += libqmi
QMI += libqmi_cci
QMI += libqmi_client_helper
QMI += libqmi_common_so
QMI += libqmi_csi
QMI += libqmi_encdec
QMI += libsmemlog
QMI += libmdmdetect
QMI += libqmiservices
QMI += qmiproxy
QMI += qmi_config.xml
QMI += libqmi_cci_system
#QOSMGR
QOSMGR := qosmgr
QOSMGR += qosmgr_rules.xml
#QVR
QVR := qvrservice_6dof_config.xml
QVR += qvrservice_6dof_config_stereo.xml
QVR += qvrservice_config.txt
QVR += ov7251_640x480_cam_config.xml
QVR += ov9282_stereo_1280x400_cam_config.xml
QVR += ov9282_stereo_2560x800_cam_config.xml
QVR += libqvrservice_ov7251_hvx_tuning
QVR += libqvrservice_ov9282_hvx_tuning
QVR += qvrservice
QVR += qvrcameratseq
QVR += qvrcameratseq64
QVR += libqvr_adsp_driver_stub
QVR += libqvr_adsp_driver_skel
QVR += libqvrservice
QVR += libqvrservice_client
QVR += libqvrcamera_client
QVR += libqvrservice_hvxcameraclient
#REMOTEFS
REMOTEFS := rmt_storage
RFS_ACCESS := rfs_access
#RNGD
RNGD := rngd
#SCVE
SCVE := _conf_eng_num_sym_font40_4transd_zscore_morph_.trn2876.trn
SCVE += _conf_eng_num_sym_font40_conc2_meshrn__de__1_1__zscore_morph.trn10158.trn
SCVE += _conf_eng_num_sym_font40_rbp_data5100_patch500_5x5_24x24_dim727.trn31585.trn
SCVE += _eng_font40_4transmeshrnorm6x6_leaflda85_ligature_ext14_c70_sp1lI_newxml3.trn31299.trn
SCVE += _numpunc_font40_4transmeshrnorm_leafnum1.trn9614.trn
SCVE += _numpunc_font40_conc2_DEFn__BGTouchy6x6n__1_1__morph.trn32025.trn
SCVE += _numpunc_parteng_font40_4transmeshr_morph.trn400.trn
SCVE += character.cost
SCVE += CharType.dat
SCVE += chinese.lm
SCVE += chinese_address_20150304.bin
SCVE += ChinesePunctuation.rst
SCVE += cnn_small5_synthrev_sw_sampled2_bin
SCVE += dcnConfigForEngCNN.txt
SCVE += dcnConfigForMultiCNN.txt
SCVE += english_address_20150213.bin
SCVE += english_dictionary_20150213.bin
SCVE += forestData.bin
SCVE += glvq_kor_2197classes_576_100dim_i42_centroidNorm.dat
SCVE += glvq_kor_consonant_19classes_64_16dim_i0_linearNorm.dat
SCVE += GLVQDecoder_fixed.ohie
SCVE += gModel.dat
SCVE += gModel_system.dat
SCVE += gModel.dat_system
SCVE += hGLVQ_kor_RLF80_float.hie
SCVE += korean.lm
SCVE += korean_address_20150129.bin
SCVE += korean_dictionary_20150414.bin
SCVE += LDA_kor_2197classes_576dim_centroidNorm.dat
SCVE += LDA_kor_consonant_19classes_64dim_linearNorm.dat
SCVE += libhvxMathVIO
SCVE += libhvxMathVIO.so
SCVE += libobjectMattingApp_skel
SCVE += libobjectMattingApp_skel.so
SCVE += libscveBlobDescriptor
SCVE += libscveBlobDescriptor_skel
SCVE += libscveBlobDescriptor_skel.so
SCVE += libscveBlobDescriptor_stub
SCVE += libscveCleverCapture
SCVE += libscveCleverCapture_skel
SCVE += libscveCleverCapture_skel.so
SCVE += libscveCleverCapture_stub
SCVE += libscveCommon
SCVE += libscveCommon_stub
SCVE += libscveFaceLandmark_skel
SCVE += libscveFaceLandmark_skel.so
SCVE += libscveFaceLandmarks
SCVE += libscveFaceLandmarks_stub
SCVE += libscveFaceRecognition
SCVE += libscveFaceRecognition_skel
SCVE += libscveFaceRecognition_skel.so
SCVE += libscveFaceRecognition_stub
SCVE += libscveImageCloning
SCVE += libscveImageCorrection
SCVE += libscveImageRemoval
SCVE += libscveMotionVector
SCVE += libscveObjectMatting
SCVE += libscveObjectMatting_stub
SCVE += libscveObjectSegmentation
SCVE += libscveObjectSegmentation_skel
SCVE += libscveObjectSegmentation_skel.so
SCVE += libscveObjectSegmentation_stub
SCVE += libscveObjectTracker
SCVE += libscveObjectTracker_stub
SCVE += libscvePanorama
SCVE += libscvePanorama_lite
SCVE += libscveScan3D
SCVE += libscveT2T_skel
SCVE += libscveT2T_skel.so
SCVE += libscveTextReco
SCVE += libscveTextReco_skel
SCVE += libscveTextReco_skel.so
SCVE += libscveTextReco_stub
SCVE += libscveTextRecoPostProcessing
SCVE += libscveVideoSummary
SCVE += libscveVideoSummary_skel
SCVE += libscveVideoSummary_skel.so
SCVE += libscveVideoSummary_stub
SCVE += libobjectMattingApp_skel_system
SCVE += libobjectMattingApp_skel_system.so
SCVE += libscveBlobDescriptor_system
SCVE += libscveBlobDescriptor_skel_system
SCVE += libscveBlobDescriptor_skel_system.so
SCVE += libscveBlobDescriptor_stub_system
SCVE += libscveCleverCapture_system
SCVE += libscveCleverCapture_skel_system
SCVE += libscveCleverCapture_skel_system.so
SCVE += libscveCleverCapture_stub_system
SCVE += libscveCommon_system
SCVE += libscveCommon_stub_system
SCVE += libscveFaceLandmark_skel_system
SCVE += libscveFaceLandmark_skel_system.so
SCVE += libscveFaceLandmarks_system
SCVE += libscveFaceLandmarks_stub_system
SCVE += libscveFaceRecognition_system
SCVE += libscveFaceRecognition_skel_system
SCVE += libscveFaceRecognition_skel_system.so
SCVE += libscveFaceRecognition_stub_system
SCVE += libscveImageCloning_system
SCVE += libscveImageCorrection_system
SCVE += libscveImageRemoval_system
SCVE += libscveMotionVector_system
SCVE += libscveObjectMatting_system
SCVE += libscveObjectMatting_stub_system
SCVE += libscveObjectSegmentation_system
SCVE += libscveObjectSegmentation_skel_system
SCVE += libscveObjectSegmentation_skel_system.so
SCVE += libscveObjectSegmentation_stub_system
SCVE += libscveObjectTracker_system
SCVE += libscveObjectTracker_stub_system
SCVE += libscvePanorama_system
SCVE += libscvePanorama_lite_system
SCVE += libscveScan3D_system
SCVE += libhvxMathVIO_system
SCVE += libhvxMathVIO_system.so
SCVE += libscveT2T_skel_system
SCVE += libscveT2T_skel_system.so
SCVE += libscveTextReco_system
SCVE += libscveTextReco_skel_system
SCVE += libscveTextReco_skel_system.so
SCVE += libscveTextReco_stub_system
SCVE += libscveTextRecoPostProcessing_system
SCVE += libscveVideoSummary_system
SCVE += libscveVideoSummary_skel_system
SCVE += libscveVideoSummary_skel_system.so
SCVE += libscveVideoSummary_stub_system
SCVE += nontextremoval_eng.model
SCVE += nontextremoval_multilang.model
SCVE += punRangeData.rst
#SECUREMSM
SECUREMSM :=
SECUREMSM += aostlmd
SECUREMSM += chamomile_provision
SECUREMSM += dbAccess
SECUREMSM += default_qti_regular_37.bin
SECUREMSM += default_qti_regular_43.bin
SECUREMSM += default_qti_regular_90.bin
SECUREMSM += e2image_blocks
SECUREMSM += filefrag_blocks
SECUREMSM += gatekeeper.msm8998
SECUREMSM += keystore.msm8998
SECUREMSM += libChamomilePA
SECUREMSM += libcppf
SECUREMSM += libdrmprplugin
SECUREMSM += libdrmprplugin_customer
SECUREMSM += libFidoCrypto_system
SECUREMSM += libFidoCrypto_vendor
SECUREMSM += libFidoCryptoJNI
SECUREMSM += libFIDOKeyProvisioning
SECUREMSM += libFidoSuiJNI
SECUREMSM += libprdrmdecrypt
SECUREMSM += libprdrmdecrypt_customer
SECUREMSM += libprmediadrmdecrypt
SECUREMSM += libprmediadrmdecrypt_customer
SECUREMSM += libprmediadrmplugin
SECUREMSM += libprmediadrmplugin_customer
SECUREMSM += libdrmfs
SECUREMSM += libdrmMinimalfs
SECUREMSM += libdrmMinimalfsHelper
SECUREMSM += libdrmtime
SECUREMSM += libgoogletest
SECUREMSM += libGPreqcancel
SECUREMSM += libGPreqcancel_svc
SECUREMSM += libGPTEE_system
SECUREMSM += libGPTEE_vendor
SECUREMSM += libtzplayready
SECUREMSM += libbase64
SECUREMSM += libtzplayready_customer
SECUREMSM += libprpk3
SECUREMSM += libprdrmengine
SECUREMSM += libtzdrmgenprov
SECUREMSM += liboemcrypto
SECUREMSM += liboemcrypto.a
SECUREMSM += libQSEEComAPI
SECUREMSM += libQSEEComAPIStatic
SECUREMSM += libMcClient
SECUREMSM += libMcCommon
SECUREMSM += libMcDriverDevice
SECUREMSM += libMcRegistry
SECUREMSM += libmdtp
SECUREMSM += libmdtp_crypto
SECUREMSM += libmdtpdemojni
SECUREMSM += libPaApi
SECUREMSM += libqmp_sphinx_jni
SECUREMSM += libqmp_sphinxlog
SECUREMSM += libqmpart
SECUREMSM += librmp
SECUREMSM += libpvr
SECUREMSM += librpmb
SECUREMSM += librpmbStatic
SECUREMSM += librpmbStaticHelper
SECUREMSM += libSampleAuthJNI
SECUREMSM += libSampleExtAuthJNI
SECUREMSM += libsecotacommon
SECUREMSM += libsecotanservice
SECUREMSM += libSecureSampleAuthJNI
SECUREMSM += libSecureExtAuthJNI
SECUREMSM += lib-sec-disp
SECUREMSM += libsi
SECUREMSM += libsmcinvokecred
SECUREMSM += libspcom
SECUREMSM += libspiris
SECUREMSM += libspl
SECUREMSM += spdaemon
SECUREMSM += sec_nvm
SECUREMSM += libssd
SECUREMSM += libssdStatic
SECUREMSM += libssdStaticHelper
SECUREMSM += libqsappsver
SECUREMSM += libTLV
SECUREMSM += libtzcom
SECUREMSM += libqisl
#SECUREMSM += seccamd
SECUREMSM += mcDriverDaemon
SECUREMSM += qfipsverify
SECUREMSM += qfipsverify.hmac
SECUREMSM += bootimg.hmac
SECUREMSM += libDevHealth
SECUREMSM += libHealthAuthClient
SECUREMSM += libHealthAuthJNI
SECUREMSM += liblmclient
SECUREMSM += HealthAuthService
SECUREMSM += qseecomd
SECUREMSM += SampleAuthenticatorService
SECUREMSM += SampleExtAuthService
SECUREMSM += SecotaAPI
SECUREMSM += secotad
SECUREMSM += SecotaService
SECUREMSM += SecureExtAuthService
SECUREMSM += smcinvoked
SECUREMSM += smcinvokepkgmgr
SECUREMSM += soter_client
SECUREMSM += StoreKeybox
SECUREMSM += sphinxproxy
SECUREMSM += TelemetryService
SECUREMSM += tbaseLoader
SECUREMSM += hdcp1prov
SECUREMSM += libhdcp1prov
SECUREMSM += hdcp2p2prov
SECUREMSM += libhdcp2p2prov
SECUREMSM += tloc_daemon
SECUREMSM += kb_parser
SECUREMSM += libhdcpsrm
SECUREMSM += libcpion
#SENSORS
SENSORS := activity_recognition.msm8998
SENSORS += sensor_def_qcomdev.conf
SENSORS += sensors_settings
SENSORS += libsnsdiaglog
SENSORS += sensors.mata
SENSORS += sensors.qcom
SENSORS += libssc
SENSORS += libsensorslog
SENSORS += libsensor1
SENSORS += libcalmodule_common
SENSORS += calmodule.cfg
SENSORS += sensor_calibrate
SENSORS += android.hardware.sensors@1.0-service
SENSORS += android.hardware.sensors@1.0-impl
SENSORS += libsns_low_lat_stream_stub
SENSORS += libsns_low_lat_stream_skel
SENSORS += libssc_system
SENSORS += libsensorslog_system
SENSORS += libsnsdiaglog_system
SENSORS += sensors_config_module
#SS_RESTART
SS_RESTART := ssr_diag
#SVGT
SVGT := libsvgecmascriptBindings
SVGT += libsvgutils
SVGT += libsvgabstraction
SVGT += libsvgscriptEngBindings
SVGT += libsvgnativeandroid
SVGT += libsvgt
SVGT += libsvgcore
#SWDEC2DTO3D
SW2DTO3D := libswdec_2dto3d
#SYSTEM HEALTH MONITOR
SYSTEM_HEALTH_MONITOR := libsystem_health_mon
#TELEPHONY_APPS
TELEPHONY_APPS := datastatusnotification
TELEPHONY_APPS += QtiTelephonyService
TELEPHONY_APPS += QtiAudioService
TELEPHONY_APPS += telephonyservice.xml
TELEPHONY_APPS += embms
TELEPHONY_APPS += embms.xml
TELEPHONY_APPS += libimscamera_jni
TELEPHONY_APPS += libimsmedia_jni
#TFTP
TFTP := tftp_server
#THERMAL-ENGINE
THERMAL-ENGINE := thermal-engine
THERMAL-ENGINE += libthermalclient
THERMAL-ENGINE += thermal-engine.conf
#TIME_SERVICES
TIME_SERVICES := time_daemon TimeService libTimeService
#TINY xml
TINYXML := libtinyxml
#TINYXML2
TINYXML2 := libtinyxml2
#VERIZON
VERIZON_PREINSTALL := DMService
VERIZON_PREINSTALL += ConnMO
VERIZON_PREINSTALL += VzwOmaTrigger
#VPP
VPP := DE.o.msm8937
VPP += DE.o.msm8953
VPP += DE.o.sdm660
VPP += libhcp_rpc_skel
VPP += libhcp_rpc_skel.so
VPP += libmmsw_detail_enhancement
VPP += libmmsw_math
VPP += libmmsw_opencl
VPP += libmmsw_platform
VPP += libOmxVpp
VPP += libvpplibrary
VPP += libvpphcp
VPP += libvpphvx
VPP += libvpp_frc
VPP += libvpp_frc.so
VPP += libvpp_svc_skel
VPP += libvpp_svc_skel.so
VPP += libvppclient
VPP += vendor.qti.hardware.vpp@1.1
#WFD
WFD := capability.xml
WFD += libwfdmminterface
WFD += libmmwfdsinkinterface
WFD += libmmwfdsrcinterface
WFD += libwfdmmservice
WFD += libwfduibcinterface
WFD += libwfduibcsrcinterface
WFD += libwfduibcsrc
WFD += libOmxMux
WFD += libwfdcommonutils
WFD += libwfdhdcpcp
WFD += libwfdlinkstub
WFD += libwfdmmsrc
WFD += libwfdmmutils
WFD += libwfdnative
WFD += libwfdsm
WFD += libwfdservice
WFD += libwfdrtsp
WFD += libextendedremotedisplay
WFD += libOmxVideoDSMode
WFD += WfdCommon
WFD += WfdService
WFD += wfdconfig.xml
WFD += wfdconfigsink.xml
WFD += WfdP2pCommon
WFD += WfdP2pService
WFD += com.qualcomm.wfd.permissions.xml
WFD += wfdservice
WFD += libqti-wl
WFD += com.qualcomm.qti.wifidisplayhal@1.0-halimpl
WFD += com.qualcomm.qti.wifidisplayhal@1.0
WFD += com.qualcomm.qti.wifidisplayhal@1.0_system
WFD += wifidisplayhalservice
WFD += libwfdhaldsmanager
WFD += libwfdmodulehdcpsession
WFD += libwfdavenhancements
WFD += libwfdcodecv4l2
WFD += libwfdcommonutils_proprietary
WFD += wfdservice.rc
WFD += com.qualcomm.qti.wifidisplayhal@1.0-service.rc
WFD += libwfdconfigutils
WFD += libtinyalsa
WFD += libstagefright_soft_aacenc
WFD += libaacwrapper
WFD += libion
WFD += libdisplayconfig
#WLAN
WLAN := libAniAsf
WLAN += cfg.dat
ifneq ($(BOARD_HAS_ATH_WLAN_AR6320), true)
WLAN += ptt_socket_app
BUILD_PTT_SOCKET_APP:=1
endif
WLAN += qcom_cfg_default.ini
WLAN += qcom_cfg.ini
WLAN += qcom_fw.bin
WLAN += qcom_wapi_fw.bin
WLAN += qcom_wlan_nv.bin
WLAN += WCNSS_cfg.dat
WLAN += WCNSS_qcom_cfg.ini
WLAN += WCNSS_qcom_wlan_nv.bin
WLAN += pktlogconf
WLAN += athdiag
WLAN += cld-fwlog-record
WLAN += cld-fwlog-netlink
WLAN += cld-fwlog-parser
WLAN += cnss-daemon
WLAN += libwifi-hal-qcom
WLAN += libwpa_client
WLAN += libqsap_sdk
WLAN += hal_proxy_daemon
WLAN += e_loop
WLAN += myftm
WLAN += vendor_cmd_tool
WLAN += icm
WLAN += libwpa_drv_oem
WLAN += android.hardware.wifi@1.0-service
#SPRINT
SPRINT_PREINSTALL := MobileInstaller
SPRINT_PREINSTALL += SMF
SPRINT_PREINSTALL += libsmf
REDBEND_PREINSTALL += OMADMDIL
REDBEND_PREINSTALL += libsmm
SPRINT_PREINSTALL += Dialer
SPRINT_OEM := sprint-telephony-common
SPRINT_OEM += sprint-services
SPRINT_OEM += SprintHiddenMenu
SPRINT_OEM += ChameleonProvider
SPRINT_OEM += DataDispatcher
SPRINT_OEM += PhoneDataHandler
SPRINT_OEM += SystemDataHandler
SPRINT_OEM += ChameleonProvider
SPRINT_OEM += com.ts.android.chameleon.chameleonshare
SPRINT_OEM += com.ts.android.chameleon.chameleonshare.xml
SPRINT_OEM += com.ts.android.chameleon.dataservice
SPRINT_OEM += com.ts.android.chameleon.dataservice.xml
SPRINT_OEM += OemTelephonyApp
PRODUCT_PACKAGES += $(ADSPRPC)
PRODUCT_PACKAGES += $(BT)
PRODUCT_PACKAGES += $(CNE)
PRODUCT_PACKAGES += $(DATA)
PRODUCT_PACKAGES += $(DIAG)
PRODUCT_PACKAGES += $(DISPLAY)
PRODUCT_PACKAGES += $(AOSP_GPS)
PRODUCT_PACKAGES += $(GSMA_NFC)
PRODUCT_PACKAGES += $(HBTP)
PRODUCT_PACKAGES += $(HVDCP_OPTI)
PRODUCT_PACKAGES += $(HY11_HY22_diff)
#PRODUCT_PACKAGES += $(IMS_VT)
PRODUCT_PACKAGES += $(IMS_TEL)
PRODUCT_PACKAGES += $(IMS_TEL_RCS)
PRODUCT_PACKAGES += $(IMS_RCS)
PRODUCT_PACKAGES += $(IMS_NEWARCH)
PRODUCT_PACKAGES += $(IMS_REGMGR)
PRODUCT_PACKAGES += $(LATENCY)
PRODUCT_PACKAGES += $(MDM_HELPER)
PRODUCT_PACKAGES += $(MDM_HELPER_PROXY)
PRODUCT_PACKAGES += $(MM_AUDIO)
PRODUCT_PACKAGES += $(MM_CAMERA)
PRODUCT_PACKAGES += $(MM_CORE)
PRODUCT_PACKAGES += $(MM_COLOR_CONVERSION)
PRODUCT_PACKAGES += $(MM_COLOR_CONVERTOR)
PRODUCT_PACKAGES += $(MM_DRMPLAY)
PRODUCT_PACKAGES += $(MM_GESTURES)
PRODUCT_PACKAGES += $(MM_GRAPHICS)
PRODUCT_PACKAGES += $(MM_HTTP)
PRODUCT_PACKAGES += $(MM_STA)
PRODUCT_PACKAGES += $(MM_MUX)
PRODUCT_PACKAGES += $(MM_OSAL)
PRODUCT_PACKAGES += $(MM_PARSER)
PRODUCT_PACKAGES += $(MM_QSM)
PRODUCT_PACKAGES += $(MM_RTP)
PRODUCT_PACKAGES += $(MM_STEREOLIB)
PRODUCT_PACKAGES += $(MM_STILL)
PRODUCT_PACKAGES += $(MM_VIDEO)
PRODUCT_PACKAGES += $(MM_VPU)
PRODUCT_PACKAGES += $(MODEM_APIS)
PRODUCT_PACKAGES += $(MSM_IRQBALANCE)
PRODUCT_PACKAGES += $(PD_LOCATER)
PRODUCT_PACKAGES += $(PERMGR)
PRODUCT_PACKAGES += $(PERF)
PRODUCT_PACKAGES += $(PROFILER)
PRODUCT_PACKAGES += $(QCRIL)
PRODUCT_PACKAGES += $(QMI)
PRODUCT_PACKAGES += $(QOSMGR)
PRODUCT_PACKAGES += $(QVR)
PRODUCT_PACKAGES += $(REMOTEFS)
PRODUCT_PACKAGES += $(RFS_ACCESS)
PRODUCT_PACKAGES += $(RIDL_BINS)
PRODUCT_PACKAGES += $(RNGD)
PRODUCT_PACKAGES += $(SCVE)
PRODUCT_PACKAGES += $(SECUREMSM)
PRODUCT_PACKAGES += $(SENSORS)
PRODUCT_PACKAGES += $(SCS_PROP)
PRODUCT_PACKAGES += $(SS_RESTART)
PRODUCT_PACKAGES += $(SVGT)
PRODUCT_PACKAGES += $(SW2DTO3D)
PRODUCT_PACKAGES += $(SYSTEM_HEALTH_MONITOR)
PRODUCT_PACKAGES += $(TELEPHONY_APPS)
PRODUCT_PACKAGES += $(TFTP)
PRODUCT_PACKAGES += $(THERMAL)
PRODUCT_PACKAGES += $(THERMAL-ENGINE)
PRODUCT_PACKAGES += $(TIME_SERVICES)
PRODUCT_PACKAGES += $(TINYXML)
PRODUCT_PACKAGES += $(TINYXML2)
PRODUCT_PACKAGES += $(VPP)
PRODUCT_PACKAGES += $(WFD)
PRODUCT_PACKAGES += $(WLAN)
PRODUCT_PACKAGES += $(VERIZON_PREINSTALL)
PRODUCT_PACKAGES += $(SPRINT_PREINSTALL)
PRODUCT_PACKAGES += $(SPRINT_OEM)
PRODUCT_PACKAGES += $(REDBEND_PREINSTALL)
================================================
FILE: dumpstate/Android.mk
================================================
#
# Copyright 2016 The Android Open Source Project
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#
LOCAL_PATH:= $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := android.hardware.dumpstate@1.0-service.mata
LOCAL_INIT_RC := android.hardware.dumpstate@1.0-service.mata.rc
LOCAL_MODULE_RELATIVE_PATH := hw
LOCAL_SRC_FILES := \
DumpstateDevice.cpp \
service.cpp
LOCAL_SHARED_LIBRARIES := \
android.hardware.dumpstate@1.0 \
libbase \
libcutils \
libdumpstateutil \
libhidlbase \
libhidltransport \
libhwbinder \
liblog \
libutils
LOCAL_MODULE_TAGS := optional
LOCAL_PROPRIETARY_MODULE := true
include $(BUILD_EXECUTABLE)
================================================
FILE: dumpstate/DumpstateDevice.cpp
================================================
/*
* Copyright 2016 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
#define LOG_TAG "dumpstate"
#include "DumpstateDevice.h"
#include
#include
#include
#include
#include
#include
#include
#include
#include "DumpstateUtil.h"
#include "DumpstateInternal.h"
using android::os::dumpstate::CommandOptions;
using android::os::dumpstate::DumpFileToFd;
using android::os::dumpstate::PropertiesHelper;
using android::os::dumpstate::RunCommandToFd;
namespace android {
namespace hardware {
namespace dumpstate {
namespace V1_0 {
namespace implementation {
#define COMMAND_DEV "/dev/ttyACM0"
#define ATTACHED_FILE "/sys/class/sidecar/attached"
#define POWER_CONTROL_FILE "/sys/class/sidecar/power_control"
void DumpstateDevice::dumpAccessory(int fdFile) {
char buffer[5];
ssize_t amt;
std::string cmd = "bugreport";
bool isPowerSet = false;
/* If attached, power the accessory */
int fd = open(ATTACHED_FILE, O_RDONLY);
if (fd >= 0) {
memset(buffer,0,5);
amt = read(fd, buffer, sizeof(buffer));
close(fd);
if (atoi(buffer) == 1) {
fd = open(POWER_CONTROL_FILE, O_RDWR);
if (fd >= 0) {
memset(buffer,0,5);
amt = read(fd, buffer, sizeof(buffer));
if (atoi(buffer) == 0) {
memset(buffer,0,5);
int bytes = sprintf(buffer, "1\n");
amt = write(fd, buffer, (size_t)bytes);
close(fd);
isPowerSet = true;
/* Sleep to allow the accessory to boot properly */
RunCommandToFd(fdFile, "", {"sleep", "10"});
}
} else {
ALOGI("Cannot open POWER CONTROL - %d", fd);
}
} else
return;
}
/* Open command channel */
struct termios cnf;
fd = open(COMMAND_DEV, O_RDWR | O_NOCTTY);
if (fd < 0) {
ALOGE(" No accessory currently connected\n");
return;
}
tcgetattr(fd, &cnf);
cfmakeraw(&cnf);
cnf.c_lflag |= ICANON;
cnf.c_cc[VEOF] = 0xff;
tcsetattr(fd, TCSANOW, &cnf);
int len;
ssize_t len_written;
char byte;
int ret = 0;
len = strlen(cmd.c_str()) + 1;
len_written = write(fd, cmd.c_str(), len);
if (len_written != len) {
ALOGE("!!!! Sending the request failed\n");
close(fd);
return;
}
DumpFileFromFdToFd("Accessory", COMMAND_DEV, fd, fdFile, PropertiesHelper::IsDryRun());
close(fd);
if (isPowerSet) {
/* Turn off the power after use */
fd = open(POWER_CONTROL_FILE, O_RDWR);
if (fd >= 0) {
memset(buffer,0,5);
int bytes = sprintf(buffer, "0\n");
amt = write(fd, buffer, (size_t)bytes);
close(fd);
} else {
ALOGI("Cannot open POWER CONTROL - %d", fd);
}
}
}
// Methods from ::android::hardware::dumpstate::V1_0::IDumpstateDevice follow.
Return DumpstateDevice::dumpstateBoard(const hidl_handle& handle) {
if (handle == nullptr || handle->numFds < 1) {
ALOGE("no FDs\n");
return Void();
}
int fd = handle->data[0];
if (fd < 0) {
ALOGE("invalid FD: %d\n", handle->data[0]);
return Void();
}
DumpFileToFd(fd, "CPU present", "/sys/devices/system/cpu/present");
DumpFileToFd(fd, "CPU online", "/sys/devices/system/cpu/online");
DumpFileToFd(fd, "INTERRUPTS", "/proc/interrupts");
DumpFileToFd(fd, "RPM Stats", "/d/rpm_stats");
DumpFileToFd(fd, "Power Management Stats", "/d/rpm_master_stats");
DumpFileToFd(fd, "CNSS Pre-Alloc", "/d/cnss-prealloc/status");
DumpFileToFd(fd, "SMD Log", "/d/ipc_logging/smd/log");
DumpFileToFd(fd, "BT Logs", "/d/ipc_logging/c171000.uart_pwr/log");
RunCommandToFd(fd, "ION HEAPS", {"/vendor/bin/sh", "-c", "for d in $(ls -d /d/ion/*); do for f in $(ls $d); do echo --- $d/$f; cat $d/$f; done; done"});
RunCommandToFd(fd, "Temperatures", {"/vendor/bin/sh", "-c", "for f in `ls /sys/class/thermal` ; do type=`cat /sys/class/thermal/$f/type` ; temp=`cat /sys/class/thermal/$f/temp` ; echo \"$type: $temp\" ; done"});
DumpFileToFd(fd, "cpu0-3 time-in-state", "/sys/devices/system/cpu/cpu0/cpufreq/stats/time_in_state");
RunCommandToFd(fd, "cpu0-3 cpuidle", {"/vendor/bin/sh", "-c", "for d in $(ls -d /sys/devices/system/cpu/cpu0/cpuidle/state*); do echo \"$d: `cat $d/name` `cat $d/desc` `cat $d/time` `cat $d/usage`\"; done"});
DumpFileToFd(fd, "cpu4-8 time-in-state", "/sys/devices/system/cpu/cpu4/cpufreq/stats/time_in_state");
RunCommandToFd(fd, "cpu4-8 cpuidle", {"/vendor/bin/sh", "-c", "for d in $(ls -d /sys/devices/system/cpu/cpu4/cpuidle/state*); do echo \"$d: `cat $d/name` `cat $d/desc` `cat $d/time` `cat $d/usage`\"; done"});
dumpAccessory(fd);
return Void();
};
} // namespace implementation
} // namespace V1_0
} // namespace dumpstate
} // namespace hardware
} // namespace android
================================================
FILE: dumpstate/DumpstateDevice.h
================================================
/*
* Copyright (C) 2016 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
#ifndef ANDROID_HARDWARE_DUMPSTATE_V1_0_DUMPSTATEDEVICE_H
#define ANDROID_HARDWARE_DUMPSTATE_V1_0_DUMPSTATEDEVICE_H
#include
#include
#include
namespace android {
namespace hardware {
namespace dumpstate {
namespace V1_0 {
namespace implementation {
using ::android::hardware::dumpstate::V1_0::IDumpstateDevice;
using ::android::hardware::hidl_array;
using ::android::hardware::hidl_handle;
using ::android::hardware::hidl_string;
using ::android::hardware::hidl_vec;
using ::android::hardware::Return;
using ::android::hardware::Void;
using ::android::sp;
struct DumpstateDevice : public IDumpstateDevice {
// Methods from ::android::hardware::dumpstate::V1_0::IDumpstateDevice follow.
Return dumpstateBoard(const hidl_handle& h) override;
void dumpAccessory(int fd);
};
} // namespace implementation
} // namespace V1_0
} // namespace dumpstate
} // namespace hardware
} // namespace android
#endif // ANDROID_HARDWARE_DUMPSTATE_V1_0_DUMPSTATEDEVICE_H
================================================
FILE: dumpstate/android.hardware.dumpstate@1.0-service.mata.rc
================================================
service dumpstate-1-0 /vendor/bin/hw/android.hardware.dumpstate@1.0-service.mata
class hal
user system
group system
================================================
FILE: dumpstate/service.cpp
================================================
/*
* Copyright (C) 2016 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
#define LOG_TAG "android.hardware.dumpstate@1.0-service.mata"
#include
#include
#include "DumpstateDevice.h"
using ::android::hardware::configureRpcThreadpool;
using ::android::hardware::dumpstate::V1_0::IDumpstateDevice;
using ::android::hardware::dumpstate::V1_0::implementation::DumpstateDevice;
using ::android::hardware::joinRpcThreadpool;
using ::android::OK;
using ::android::sp;
int main(int /* argc */, char* /* argv */ []) {
sp dumpstate = new DumpstateDevice;
configureRpcThreadpool(1, true /* will join */);
if (dumpstate->registerAsService() != OK) {
ALOGE("Could not register service.");
return 1;
}
joinRpcThreadpool();
ALOGE("Service exited!");
return 1;
}
================================================
FILE: egl.cfg
================================================
0 0 android
0 1 adreno
================================================
FILE: essential-hiddenapi-package-whitelist.xml
================================================
================================================
FILE: etc/apns-conf.xml
================================================
================================================
FILE: etc/spn-conf.xml
================================================
================================================
FILE: excluded-input-devices.xml
================================================
================================================
FILE: fstab.mata
================================================
# Android fstab file.
#
/dev/block/platform/soc/1da4000.ufshc/by-name/system / ext4 ro,barrier=1 wait,slotselect,verify
/dev/block/platform/soc/1da4000.ufshc/by-name/userdata /data ext4 noatime,nosuid,nodev,barrier=1,noauto_da_alloc wait,check,formattable,fileencryption=ice,quota
/dev/block/platform/soc/1da4000.ufshc/by-name/misc /misc emmc defaults defaults
/dev/block/platform/soc/1da4000.ufshc/by-name/modem /vendor/firmware_mnt vfat ro,shortname=lower,uid=1000,gid=1000,dmask=222,fmask=333,context=u:object_r:firmware_file:s0 wait,slotselect
/dev/block/platform/soc/1da4000.ufshc/by-name/dsp /vendor/lib/dsp ext4 ro,nosuid,nodev,barrier=1,context=u:object_r:adsprpcd_file:s0 wait,slotselect
/devices/*/xhci-hcd.0.auto* auto auto defaults voldmanaged=usb:auto
/devices/*/0000:01:00.0* auto auto defaults voldmanaged=usb:auto
/dev/block/platform/soc/1da4000.ufshc/by-name/persist /mnt/vendor/persist ext4 noatime,nosuid,nodev,barrier=1 wait
/dev/block/zram0 none swap defaults zramsize=536870912,max_comp_streams=8
================================================
FILE: gpio-keys-mata.kl
================================================
# Copyright (c) 2013, The Linux Foundation. All rights reserved.
#
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions are
# met:
# * Redistributions of source code must retain the above copyright
# notice, this list of conditions and the following disclaimer.
# * Redistributions in binary form must reproduce the above
# copyright notice, this list of conditions and the following
# disclaimer in the documentation and/or other materials provided
# with the distribution.
# * Neither the name of The Linux Foundation nor the names of its
# contributors may be used to endorse or promote products derived
# from this software without specific prior written permission.
#
# THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED
# WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT
# ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS
# BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
# BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
# OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
key 115 VOLUME_UP
key 114 VOLUME_DOWN
key 116 POWER
================================================
FILE: healthd/Android.bp
================================================
/*
* Copyright (C) 2018 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
cc_binary {
name: "android.hardware.health@2.0-service.mata",
init_rc: ["android.hardware.health@2.0-service.mata.rc"],
proprietary: true,
relative_install_path: "hw",
srcs: [
"HealthService.cpp",
],
cflags: [
"-Wall",
"-Werror",
],
static_libs: [
"android.hardware.health@2.0-impl",
"android.hardware.health@1.0-convert",
"libhealthservice",
"libbatterymonitor",
],
shared_libs: [
"libbase",
"libcutils",
"libbinder_ndk",
"libutils",
"android.hardware.health@2.0",
],
header_libs: ["libhealthd_headers"],
}
================================================
FILE: healthd/HealthService.cpp
================================================
/*
* Copyright (C) 2018 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
#define LOG_TAG "android.hardware.health@2.0-service.mata"
#include
#include
#include
#include
#include
#include
#include
#include
#include
using android::hardware::health::V2_0::StorageInfo;
using android::hardware::health::V2_0::DiskStats;
void healthd_board_init(struct healthd_config*) {
}
int healthd_board_battery_update(struct android::BatteryProperties*) {
return 1;
}
const char kUFSHealthFile[] = "/sys/kernel/debug/ufshcd0/dump_health_desc";
const char kUFSHealthVersionFile[] = "/sys/kernel/debug/ufshcd0/show_hba";
const char kDiskStatsFile[] = "/sys/block/sda/stat";
const char kUFSName[] = "UFS0";
/*
* Implementation based on system/core/storaged/storaged_info.cc
*/
void get_storage_info(std::vector& vec_storage_info) {
StorageInfo storage_info = {};
std::string buffer, version;
storage_info.attr.isInternal = true;
storage_info.attr.isBootDevice = true;
storage_info.attr.name = std::string(kUFSName);
if (!android::base::ReadFileToString(std::string(kUFSHealthVersionFile), &version)) {
return;
}
std::vector lines = android::base::Split(version, "\n");
if (lines.empty()) {
return;
}
char rev[8];
if (sscanf(lines[6].c_str(), "hba->ufs_version = 0x%7s\n", rev) < 1) {
return;
}
storage_info.version = "ufs " + std::string(rev);
if (!android::base::ReadFileToString(std::string(kUFSHealthFile), &buffer)) {
return;
}
lines = android::base::Split(buffer, "\n");
if (lines.empty()) {
return;
}
for (size_t i = 1; i < lines.size(); i++) {
char token[32];
uint16_t val;
int ret;
if ((ret = sscanf(lines[i].c_str(),
"Health Descriptor[Byte offset 0x%*d]: %31s = 0x%hx",
token, &val)) < 2) {
continue;
}
if (std::string(token) == "bPreEOLInfo") {
storage_info.eol = val;
} else if (std::string(token) == "bDeviceLifeTimeEstA") {
storage_info.lifetimeA = val;
} else if (std::string(token) == "bDeviceLifeTimeEstB") {
storage_info.lifetimeB = val;
}
}
vec_storage_info.resize(1);
vec_storage_info[0] = storage_info;
return;
}
/*
* Implementation based on parse_disk_stats() in system/core/storaged_diskstats.cpp
*/
void get_disk_stats(std::vector& vec_stats) {
const size_t kDiskStatsSize = 11;
struct DiskStats stats = {};
stats.attr.isInternal = true;
stats.attr.isBootDevice = true;
stats.attr.name = std::string(kUFSName);
std::string buffer;
if (!android::base::ReadFileToString(std::string(kDiskStatsFile), &buffer)) {
LOG(ERROR) << kDiskStatsFile << ": ReadFileToString failed.";
return;
}
// Regular diskstats entries
std::stringstream ss(buffer);
for (uint i = 0; i < kDiskStatsSize; ++i) {
ss >> *(reinterpret_cast(&stats) + i);
}
vec_stats.resize(1);
vec_stats[0] = stats;
return;
}
int main(void) {
return health_service_main();
}
================================================
FILE: healthd/android.hardware.health@2.0-service.mata.rc
================================================
service vendor.health-hal-2-0 /vendor/bin/hw/android.hardware.health@2.0-service.mata
class hal
user system
group system
================================================
FILE: healthd/images/animation.txt
================================================
animation: 2 1 charger/battery_scale
frame: 1000 0 10
frame: 1000 0 20
frame: 1000 0 30
frame: 1000 0 40
frame: 1000 0 50
frame: 1000 0 60
frame: 1000 0 70
frame: 1000 0 80
frame: 1000 0 90
frame: 1000 0 100
frame: 1000 0 100
================================================
FILE: hostapd.accept
================================================
# List of MAC addresses that are allowed to authenticate (IEEE 802.11)
# with the AP. Optional VLAN ID can be assigned for clients based on the
# MAC address if dynamic VLANs (hostapd.conf dynamic_vlan option) are used.
================================================
FILE: hostapd.conf
================================================
##### hostapd configuration file ##############################################
# Empty lines and lines starting with # are ignored
# AP netdevice name (without 'ap' postfix, i.e., wlan0 uses wlan0ap for
# management frames); ath0 for madwifi
interface=wlan0
# In case of madwifi and nl80211 driver interfaces, an additional configuration
# parameter, bridge, must be used to notify hostapd if the interface is
# included in a bridge. This parameter is not used with Host AP driver.
#bridge=br0
# Driver interface type (hostap/wired/madwifi/prism54/test/none/nl80211/bsd);
# default: hostap). nl80211 is used with all Linux mac80211 drivers.
# Use driver=none if building hostapd as a standalone RADIUS server that does
# not control any wireless/wired driver.
driver=nl80211
# hostapd event logger configuration
#
# Two output method: syslog and stdout (only usable if not forking to
# background).
#
# Module bitfield (ORed bitfield of modules that will be logged; -1 = all
# modules):
# bit 0 (1) = IEEE 802.11
# bit 1 (2) = IEEE 802.1X
# bit 2 (4) = RADIUS
# bit 3 (8) = WPA
# bit 4 (16) = driver interface
# bit 5 (32) = IAPP
# bit 6 (64) = MLME
#
# Levels (minimum value for logged events):
# 0 = verbose debugging
# 1 = debugging
# 2 = informational messages
# 3 = notification
# 4 = warning
#
logger_syslog=-1
logger_syslog_level=2
logger_stdout=-1
logger_stdout_level=2
# Dump file for state information (on SIGUSR1)
dump_file=/tmp/hostapd.dump
# Interface for separate control program. If this is specified, hostapd
# will create this directory and a UNIX domain socket for listening to requests
# from external programs (CLI/GUI, etc.) for status information and
# configuration. The socket file will be named based on the interface name, so
# multiple hostapd processes/interfaces can be run at the same time if more
# than one interface is used.
# /var/run/hostapd is the recommended directory for sockets and by default,
# hostapd_cli will use it when trying to connect with hostapd.
ctrl_interface=/data/vendor/wifi/hostapd/ctrl
# Access control for the control interface can be configured by setting the
# directory to allow only members of a group to use sockets. This way, it is
# possible to run hostapd as root (since it needs to change network
# configuration and open raw sockets) and still allow GUI/CLI components to be
# run as non-root users. However, since the control interface can be used to
# change the network configuration, this access needs to be protected in many
# cases. By default, hostapd is configured to use gid 0 (root). If you
# want to allow non-root users to use the contron interface, add a new group
# and change this value to match with that group. Add users that should have
# control interface access to this group.
#
# This variable can be a group name or gid.
#ctrl_interface_group=wheel
#ctrl_interface_group=0
##### IEEE 802.11 related configuration #######################################
# SSID to be used in IEEE 802.11 management frames
ssid=QualcommSoftAP
# Country code (ISO/IEC 3166-1). Used to set regulatory domain.
# Set as needed to indicate country in which device is operating.
# This can limit available channels and transmit power.
#country_code=US
# Enable IEEE 802.11d. This advertises the country_code and the set of allowed
# channels and transmit power levels based on the regulatory limits. The
# country_code setting must be configured with the correct country for
# IEEE 802.11d functions.
# (default: 0 = disabled)
#ieee80211d=1
# Operation mode (a = IEEE 802.11a, b = IEEE 802.11b, g = IEEE 802.11g,
# n = IEEE 802.11n, g_only = IEEE 802.11g_only, n_only = IEEE 802.11n_only,
# Default: IEEE 802.11n
hw_mode=g
# Channel number (IEEE 802.11)
# (default: 0, i.e., not set)
# Please note that some drivers (e.g., madwifi) do not use this value from
# hostapd and the channel will need to be configuration separately with
# iwconfig.
channel=0
# Beacon interval in kus (1.024 ms) (default: 100; range 15..65535)
beacon_int=100
# DTIM (delivery trafic information message) period (range 1..255):
# number of beacons between DTIMs (1 = every beacon includes DTIM element)
# (default: 2)
dtim_period=2
# Maximum number of stations allowed in station table. New stations will be
# rejected after the station table is full. IEEE 802.11 has a limit of 2007
# different association IDs, so this number should not be larger than that.
# (default: 2007)
max_num_sta=10
# RTS/CTS threshold; 2347 = disabled (default); range 0..2347
# If this field is not included in hostapd.conf, hostapd will not control
# RTS threshold and 'iwconfig wlan# rts ' can be used to set it.
#rts_threshold=2347
# Fragmentation threshold; 2346 = disabled (default); range 256..2346
# If this field is not included in hostapd.conf, hostapd will not control
# fragmentation threshold and 'iwconfig wlan# frag ' can be used to set
# it.
#fragm_threshold=2346
# Rate configuration
# Default is to enable all rates supported by the hardware. This configuration
# item allows this list be filtered so that only the listed rates will be left
# in the list. If the list is empty, all rates are used. This list can have
# entries that are not in the list of rates the hardware supports (such entries
# are ignored). The entries in this list are in 100 kbps, i.e., 11 Mbps = 110.
# If this item is present, at least one rate have to be matching with the rates
# hardware supports.
# default: use the most common supported rate setting for the selected
# hw_mode (i.e., this line can be removed from configuration file in most
# cases)
#supported_rates=10 20 55 110 60 90 120 180 240 360 480 540
# Basic rate set configuration
# List of rates (in 100 kbps) that are included in the basic rate set.
# If this item is not included, usually reasonable default set is used.
# This basic rates set is currently used for g-only profile
#basic_rates=60
# Short Preamble
# This parameter can be used to enable optional use of short preamble for
# frames sent at 2 Mbps, 5.5 Mbps, and 11 Mbps to improve network performance.
# This applies only to IEEE 802.11b-compatible networks and this should only be
# enabled if the local hardware supports use of short preamble. If any of the
# associated STAs do not support short preamble, use of short preamble will be
# disabled (and enabled when such STAs disassociate) dynamically.
# 0 = do not allow use of short preamble (default)
# 1 = allow use of short preamble
#preamble=1
# Station MAC address -based authentication
# Please note that this kind of access control requires a driver that uses
# hostapd to take care of management frame processing and as such, this can be
# used with driver=hostap or driver=nl80211, but not with driver=madwifi.
# 0 = accept unless in deny list
# 1 = deny unless in accept list
# 2 = use external RADIUS server (accept/deny lists are searched first)
macaddr_acl=0
# Accept/deny lists are read from separate files (containing list of
# MAC addresses, one per line). Use absolute path name to make sure that the
# files can be read on SIGHUP configuration reloads.
accept_mac_file=/data/hostapd/hostapd.accept
deny_mac_file=/data/hostapd/hostapd.deny
# IEEE 802.11 specifies two authentication algorithms. hostapd can be
# configured to allow both of these or only one. Open system authentication
# should be used with IEEE 802.1X.
# Bit fields of allowed authentication algorithms:
# bit 0 = Open System Authentication
# bit 1 = Shared Key Authentication (requires WEP)
auth_algs=3
# Send empty SSID in beacons and ignore probe request frames that do not
# specify full SSID, i.e., require stations to know SSID.
# default: disabled (0)
# 1 = send empty (length=0) SSID in beacon and ignore probe request for
# broadcast SSID
# 2 = clear SSID (ASCII 0), but keep the original length (this may be required
# with some clients that do not support empty SSID) and ignore probe
# requests for broadcast SSID
ignore_broadcast_ssid=0
# TX queue parameters (EDCF / bursting)
# default for all these fields: not set, use hardware defaults
# tx_queue__
# queues: data0, data1, data2, data3, after_beacon, beacon
# (data0 is the highest priority queue)
# parameters:
# aifs: AIFS (default 2)
# cwmin: cwMin (1, 3, 7, 15, 31, 63, 127, 255, 511, 1023)
# cwmax: cwMax (1, 3, 7, 15, 31, 63, 127, 255, 511, 1023); cwMax >= cwMin
# burst: maximum length (in milliseconds with precision of up to 0.1 ms) for
# bursting
#
# Default WMM parameters (IEEE 802.11 draft; 11-03-0504-03-000e):
# These parameters are used by the access point when transmitting frames
# to the clients.
#
# Low priority / AC_BK = background
#tx_queue_data3_aifs=7
#tx_queue_data3_cwmin=15
#tx_queue_data3_cwmax=1023
#tx_queue_data3_burst=0
# Note: for IEEE 802.11b mode: cWmin=31 cWmax=1023 burst=0
#
# Normal priority / AC_BE = best effort
#tx_queue_data2_aifs=3
#tx_queue_data2_cwmin=15
#tx_queue_data2_cwmax=63
#tx_queue_data2_burst=0
# Note: for IEEE 802.11b mode: cWmin=31 cWmax=127 burst=0
#
# High priority / AC_VI = video
#tx_queue_data1_aifs=1
#tx_queue_data1_cwmin=7
#tx_queue_data1_cwmax=15
#tx_queue_data1_burst=3.0
# Note: for IEEE 802.11b mode: cWmin=15 cWmax=31 burst=6.0
#
# Highest priority / AC_VO = voice
#tx_queue_data0_aifs=1
#tx_queue_data0_cwmin=3
#tx_queue_data0_cwmax=7
#tx_queue_data0_burst=1.5
# Note: for IEEE 802.11b mode: cWmin=7 cWmax=15 burst=3.3
#
# Special queues; normally not user configurable
#
#tx_queue_after_beacon_aifs=2
#tx_queue_after_beacon_cwmin=15
#tx_queue_after_beacon_cwmax=1023
#tx_queue_after_beacon_burst=0
#
#tx_queue_beacon_aifs=2
#tx_queue_beacon_cwmin=3
#tx_queue_beacon_cwmax=7
#tx_queue_beacon_burst=1.5
# 802.1D Tag (= UP) to AC mappings
# WMM specifies following mapping of data frames to different ACs. This mapping
# can be configured using Linux QoS/tc and sch_pktpri.o module.
# 802.1D Tag 802.1D Designation Access Category WMM Designation
# 1 BK AC_BK Background
# 2 - AC_BK Background
# 0 BE AC_BE Best Effort
# 3 EE AC_BE Best Effort
# 4 CL AC_VI Video
# 5 VI AC_VI Video
# 6 VO AC_VO Voice
# 7 NC AC_VO Voice
# Data frames with no priority information: AC_BE
# Management frames: AC_VO
# PS-Poll frames: AC_BE
# Default WMM parameters (IEEE 802.11 draft; 11-03-0504-03-000e):
# for 802.11a or 802.11g networks
# These parameters are sent to WMM clients when they associate.
# The parameters will be used by WMM clients for frames transmitted to the
# access point.
#
# note - txop_limit is in units of 32microseconds
# note - acm is admission control mandatory flag. 0 = admission control not
# required, 1 = mandatory
# note - here cwMin and cmMax are in exponent form. the actual cw value used
# will be (2^n)-1 where n is the value given here
#
wmm_enabled=1
#
# Low priority / AC_BK = background
wmm_ac_bk_cwmin=4
wmm_ac_bk_cwmax=10
wmm_ac_bk_aifs=7
wmm_ac_bk_txop_limit=0
wmm_ac_bk_acm=0
# Note: for IEEE 802.11b mode: cWmin=5 cWmax=10
#
# Normal priority / AC_BE = best effort
wmm_ac_be_aifs=3
wmm_ac_be_cwmin=4
wmm_ac_be_cwmax=10
wmm_ac_be_txop_limit=0
wmm_ac_be_acm=0
# Note: for IEEE 802.11b mode: cWmin=5 cWmax=7
#
# High priority / AC_VI = video
wmm_ac_vi_aifs=2
wmm_ac_vi_cwmin=3
wmm_ac_vi_cwmax=4
wmm_ac_vi_txop_limit=94
wmm_ac_vi_acm=0
# Note: for IEEE 802.11b mode: cWmin=4 cWmax=5 txop_limit=188
#
# Highest priority / AC_VO = voice
wmm_ac_vo_aifs=2
wmm_ac_vo_cwmin=2
wmm_ac_vo_cwmax=3
wmm_ac_vo_txop_limit=47
wmm_ac_vo_acm=0
# Note: for IEEE 802.11b mode: cWmin=3 cWmax=4 burst=102
# Static WEP key configuration
#
# The key number to use when transmitting.
# It must be between 0 and 3, and the corresponding key must be set.
# default: not set
#wep_default_key=0
# The WEP keys to use.
# A key may be a quoted string or unquoted hexadecimal digits.
# The key length should be 5, 13, or 16 characters, or 10, 26, or 32
# digits, depending on whether 40-bit (64-bit), 104-bit (128-bit), or
# 128-bit (152-bit) WEP is used.
# Only the default key must be supplied; the others are optional.
# default: not set
#wep_key0=1234567890
#wep_key1=1234567890
#wep_key2=1234567890
#wep_key3=1234567890
# Station inactivity limit
#
# If a station does not send anything in ap_max_inactivity seconds, an
# empty data frame is sent to it in order to verify whether it is
# still in range. If this frame is not ACKed, the station will be
# disassociated and then deauthenticated. This feature is used to
# clear station table of old entries when the STAs move out of the
# range.
#
# The station can associate again with the AP if it is still in range;
# this inactivity poll is just used as a nicer way of verifying
# inactivity; i.e., client will not report broken connection because
# disassociation frame is not sent immediately without first polling
# the STA with a data frame.
# default: 300 (i.e., 5 minutes)
#ap_max_inactivity=300
# Enable/disable internal bridge for packets between associated stations.
#
# When IEEE 802.11 is used in managed mode, packets are usually send through
# the AP even if they are from a wireless station to another wireless station.
# This functionality requires that the AP has a bridge functionality that sends
# frames back to the same interface if their destination is another associated
# station. In addition, broadcast/multicast frames from wireless stations will
# be sent both to the host system net stack (e.g., to eventually wired network)
# and back to the wireless interface.
#
# The internal bridge is implemented within the wireless kernel module and it
# bypasses kernel filtering (netfilter/iptables/ebtables). If direct
# communication between the stations needs to be prevented, the internal
# bridge can be disabled by setting bridge_packets=0.
#
# Note: If this variable is not included in hostapd.conf, hostapd does not
# change the configuration and iwpriv can be used to set the value with
# 'iwpriv wlan# param 10 0' command. If the variable is in hostapd.conf,
# hostapd will override possible iwpriv configuration whenever configuration
# file is reloaded.
#
# default: do not control from hostapd (80211.o defaults to 1=enabled)
#bridge_packets=1
# Maximum allowed Listen Interval (how many Beacon periods STAs are allowed to
# remain asleep). Default: 65535 (no limit apart from field size)
#max_listen_interval=100
# Client isolation can be used to prevent low-level bridging of frames between
# associated stations in the BSS. By default, this bridging is allowed.
#ap_isolate=1
##### IEEE 802.11n related configuration ######################################
# ieee80211n: Whether IEEE 802.11n (HT) is enabled
# 0 = disabled (default)
# 1 = enabled
# Note: You will also need to enable WMM for full HT functionality.
ieee80211n=1
#require_ht=1
# ht_capab: HT capabilities (list of flags)
# LDPC coding capability: [LDPC] = supported
# Supported channel width set: [HT40-] = both 20 MHz and 40 MHz with secondary
# channel below the primary channel; [HT40+] = both 20 MHz and 40 MHz
# with secondary channel below the primary channel
# (20 MHz only if neither is set)
# Note: There are limits on which channels can be used with HT40- and
# HT40+. Following table shows the channels that may be available for
# HT40- and HT40+ use per IEEE 802.11n Annex J:
# freq HT40- HT40+
# 2.4 GHz 5-13 1-7 (1-9 in Europe/Japan)
# 5 GHz 40,48,56,64 36,44,52,60
# (depending on the location, not all of these channels may be available
# for use)
# Spatial Multiplexing (SM) Power Save: [SMPS-STATIC] or [SMPS-DYNAMIC]
# (SMPS disabled if neither is set)
# HT-greenfield: [GF] (disabled if not set)
# Short GI for 20 MHz: [SHORT-GI-20] (disabled if not set)
# Short GI for 40 MHz: [SHORT-GI-40] (disabled if not set)
# Tx STBC: [TX-STBC] (disabled if not set)
# Rx STBC: [RX-STBC1] (one spatial stream), [RX-STBC12] (one or two spatial
# streams), or [RX-STBC123] (one, two, or three spatial streams); Rx STBC
# disabled if none of these set
# HT-delayed Block Ack: [DELAYED-BA] (disabled if not set)
# Maximum A-MSDU length: [MAX-AMSDU-7935] for 7935 octets (3839 octets if not
# set)
# DSSS/CCK Mode in 40 MHz: [DSSS_CCK-40] = allowed (not allowed if not set)
# PSMP support: [PSMP] (disabled if not set)
# L-SIG TXOP protection support: [LSIG-TXOP-PROT] (disabled if not set)
# QcHostapd:
# LOWER byte for associated stations
# UPPER byte for overlapping stations
# each byte will have the following info
# bit15 bit14 bit13 bit12 bit11 bit10 bit9 bit8
# OBSS RIFS LSIG_TXOP NON_GF HT20 FROM_11G FROM_11B FROM_11A
# bit7 bit6 bit5 bit4 bit3 bit2 bit1 bit0
# OBSS RIFS LSIG_TXOP NON_GF HT_20 FROM_11G FROM_11B FROM_11A
#ht_capab=[HT40-] [SHORT-GI-20] [SHORT-GI-40]
ht_capab=[SHORT-GI-20] [HT40-] [HT40+] [GF] [DSSS_CCK-40] [LSIG-TXOP-PROT]
#ht_capab=[LDPC] [HT40-] [HT40+] [SMPS-STATIC] [SMPS-DYNAMIC] [GF] [SHORT-GI-20] [SHORT-GI-40] [TX-STBC] [RX-STBC1] [RX-STBC12] [RX-STBC123] [DELAYED-BA] [MAX-AMSDU-7935] [DSSS_CCK-40] [PSMP] [LSIG-TXOP-PROT]
##### IEEE 802.1X-2004 related configuration ##################################
# Require IEEE 802.1X authorization
#ieee8021x=1
# IEEE 802.1X/EAPOL version
# hostapd is implemented based on IEEE Std 802.1X-2004 which defines EAPOL
# version 2. However, there are many client implementations that do not handle
# the new version number correctly (they seem to drop the frames completely).
# In order to make hostapd interoperate with these clients, the version number
# can be set to the older version (1) with this configuration value.
#eapol_version=2
# Optional displayable message sent with EAP Request-Identity. The first \0
# in this string will be converted to ASCII-0 (nul). This can be used to
# separate network info (comma separated list of attribute=value pairs); see,
# e.g., RFC 4284.
#eap_message=hello
#eap_message=hello\0networkid=netw,nasid=foo,portid=0,NAIRealms=example.com
# WEP rekeying (disabled if key lengths are not set or are set to 0)
# Key lengths for default/broadcast and individual/unicast keys:
# 5 = 40-bit WEP (also known as 64-bit WEP with 40 secret bits)
# 13 = 104-bit WEP (also known as 128-bit WEP with 104 secret bits)
#wep_key_len_broadcast=5
#wep_key_len_unicast=5
# Rekeying period in seconds. 0 = do not rekey (i.e., set keys only once)
#wep_rekey_period=300
# EAPOL-Key index workaround (set bit7) for WinXP Supplicant (needed only if
# only broadcast keys are used)
eapol_key_index_workaround=0
# EAP reauthentication period in seconds (default: 3600 seconds; 0 = disable
# reauthentication).
#eap_reauth_period=3600
# Use PAE group address (01:80:c2:00:00:03) instead of individual target
# address when sending EAPOL frames with driver=wired. This is the most common
# mechanism used in wired authentication, but it also requires that the port
# is only used by one station.
#use_pae_group_addr=1
##### Integrated EAP server ###################################################
# Optionally, hostapd can be configured to use an integrated EAP server
# to process EAP authentication locally without need for an external RADIUS
# server. This functionality can be used both as a local authentication server
# for IEEE 802.1X/EAPOL and as a RADIUS server for other devices.
# Use integrated EAP server instead of external RADIUS authentication
# server. This is also needed if hostapd is configured to act as a RADIUS
# authentication server.
eap_server=1
# Path for EAP server user database
#eap_user_file=/etc/hostapd.eap_user
# CA certificate (PEM or DER file) for EAP-TLS/PEAP/TTLS
#ca_cert=/etc/hostapd.ca.pem
# Server certificate (PEM or DER file) for EAP-TLS/PEAP/TTLS
#server_cert=/etc/hostapd.server.pem
# Private key matching with the server certificate for EAP-TLS/PEAP/TTLS
# This may point to the same file as server_cert if both certificate and key
# are included in a single file. PKCS#12 (PFX) file (.p12/.pfx) can also be
# used by commenting out server_cert and specifying the PFX file as the
# private_key.
#private_key=/etc/hostapd.server.prv
# Passphrase for private key
#private_key_passwd=secret passphrase
# Enable CRL verification.
# Note: hostapd does not yet support CRL downloading based on CDP. Thus, a
# valid CRL signed by the CA is required to be included in the ca_cert file.
# This can be done by using PEM format for CA certificate and CRL and
# concatenating these into one file. Whenever CRL changes, hostapd needs to be
# restarted to take the new CRL into use.
# 0 = do not verify CRLs (default)
# 1 = check the CRL of the user certificate
# 2 = check all CRLs in the certificate path
#check_crl=1
# dh_file: File path to DH/DSA parameters file (in PEM format)
# This is an optional configuration file for setting parameters for an
# ephemeral DH key exchange. In most cases, the default RSA authentication does
# not use this configuration. However, it is possible setup RSA to use
# ephemeral DH key exchange. In addition, ciphers with DSA keys always use
# ephemeral DH keys. This can be used to achieve forward secrecy. If the file
# is in DSA parameters format, it will be automatically converted into DH
# params. This parameter is required if anonymous EAP-FAST is used.
# You can generate DH parameters file with OpenSSL, e.g.,
# "openssl dhparam -out /etc/hostapd.dh.pem 1024"
#dh_file=/etc/hostapd.dh.pem
# Configuration data for EAP-SIM database/authentication gateway interface.
# This is a text string in implementation specific format. The example
# implementation in eap_sim_db.c uses this as the UNIX domain socket name for
# the HLR/AuC gateway (e.g., hlr_auc_gw). In this case, the path uses "unix:"
# prefix.
#eap_sim_db=unix:/tmp/hlr_auc_gw.sock
# Encryption key for EAP-FAST PAC-Opaque values. This key must be a secret,
# random value. It is configured as a 16-octet value in hex format. It can be
# generated, e.g., with the following command:
# od -tx1 -v -N16 /dev/random | colrm 1 8 | tr -d ' '
#pac_opaque_encr_key=000102030405060708090a0b0c0d0e0f
# EAP-FAST authority identity (A-ID)
# A-ID indicates the identity of the authority that issues PACs. The A-ID
# should be unique across all issuing servers. In theory, this is a variable
# length field, but due to some existing implementations required A-ID to be
# 16 octets in length, it is strongly recommended to use that length for the
# field to provided interoperability with deployed peer implementation. This
# field is configured in hex format.
#eap_fast_a_id=101112131415161718191a1b1c1d1e1f
# EAP-FAST authority identifier information (A-ID-Info)
# This is a user-friendly name for the A-ID. For example, the enterprise name
# and server name in a human-readable format. This field is encoded as UTF-8.
#eap_fast_a_id_info=test server
# Enable/disable different EAP-FAST provisioning modes:
#0 = provisioning disabled
#1 = only anonymous provisioning allowed
#2 = only authenticated provisioning allowed
#3 = both provisioning modes allowed (default)
#eap_fast_prov=3
# EAP-FAST PAC-Key lifetime in seconds (hard limit)
#pac_key_lifetime=604800
# EAP-FAST PAC-Key refresh time in seconds (soft limit on remaining hard
# limit). The server will generate a new PAC-Key when this number of seconds
# (or fewer) of the lifetime remains.
#pac_key_refresh_time=86400
# EAP-SIM and EAP-AKA protected success/failure indication using AT_RESULT_IND
# (default: 0 = disabled).
#eap_sim_aka_result_ind=1
# Trusted Network Connect (TNC)
# If enabled, TNC validation will be required before the peer is allowed to
# connect. Note: This is only used with EAP-TTLS and EAP-FAST. If any other
# EAP method is enabled, the peer will be allowed to connect without TNC.
#tnc=1
##### IEEE 802.11f - Inter-Access Point Protocol (IAPP) #######################
# Interface to be used for IAPP broadcast packets
#iapp_interface=eth0
##### RADIUS client configuration #############################################
# for IEEE 802.1X with external Authentication Server, IEEE 802.11
# authentication with external ACL for MAC addresses, and accounting
# The own IP address of the access point (used as NAS-IP-Address)
own_ip_addr=127.0.0.1
# Optional NAS-Identifier string for RADIUS messages. When used, this should be
# a unique to the NAS within the scope of the RADIUS server. For example, a
# fully qualified domain name can be used here.
# When using IEEE 802.11r, nas_identifier must be set and must be between 1 and
# 48 octets long.
#nas_identifier=ap.example.com
# RADIUS authentication server
#auth_server_addr=127.0.0.1
#auth_server_port=1812
#auth_server_shared_secret=secret
# RADIUS accounting server
#acct_server_addr=127.0.0.1
#acct_server_port=1813
#acct_server_shared_secret=secret
# Secondary RADIUS servers; to be used if primary one does not reply to
# RADIUS packets. These are optional and there can be more than one secondary
# server listed.
#auth_server_addr=127.0.0.2
#auth_server_port=1812
#auth_server_shared_secret=secret2
#
#acct_server_addr=127.0.0.2
#acct_server_port=1813
#acct_server_shared_secret=secret2
# Retry interval for trying to return to the primary RADIUS server (in
# seconds). RADIUS client code will automatically try to use the next server
# when the current server is not replying to requests. If this interval is set,
# primary server will be retried after configured amount of time even if the
# currently used secondary server is still working.
#radius_retry_primary_interval=600
# Interim accounting update interval
# If this is set (larger than 0) and acct_server is configured, hostapd will
# send interim accounting updates every N seconds. Note: if set, this overrides
# possible Acct-Interim-Interval attribute in Access-Accept message. Thus, this
# value should not be configured in hostapd.conf, if RADIUS server is used to
# control the interim interval.
# This value should not be less 600 (10 minutes) and must not be less than
# 60 (1 minute).
#radius_acct_interim_interval=600
# Dynamic VLAN mode; allow RADIUS authentication server to decide which VLAN
# is used for the stations. This information is parsed from following RADIUS
# attributes based on RFC 3580 and RFC 2868: Tunnel-Type (value 13 = VLAN),
# Tunnel-Medium-Type (value 6 = IEEE 802), Tunnel-Private-Group-ID (value
# VLANID as a string). vlan_file option below must be configured if dynamic
# VLANs are used. Optionally, the local MAC ACL list (accept_mac_file) can be
# used to set static client MAC address to VLAN ID mapping.
# 0 = disabled (default)
# 1 = option; use default interface if RADIUS server does not include VLAN ID
# 2 = required; reject authentication if RADIUS server does not include VLAN ID
#dynamic_vlan=0
# VLAN interface list for dynamic VLAN mode is read from a separate text file.
# This list is used to map VLAN ID from the RADIUS server to a network
# interface. Each station is bound to one interface in the same way as with
# multiple BSSIDs or SSIDs. Each line in this text file is defining a new
# interface and the line must include VLAN ID and interface name separated by
# white space (space or tab).
#vlan_file=/etc/hostapd.vlan
# Interface where 802.1q tagged packets should appear when a RADIUS server is
# used to determine which VLAN a station is on. hostapd creates a bridge for
# each VLAN. Then hostapd adds a VLAN interface (associated with the interface
# indicated by 'vlan_tagged_interface') and the appropriate wireless interface
# to the bridge.
#vlan_tagged_interface=eth0
##### RADIUS authentication server configuration ##############################
# hostapd can be used as a RADIUS authentication server for other hosts. This
# requires that the integrated EAP server is also enabled and both
# authentication services are sharing the same configuration.
# File name of the RADIUS clients configuration for the RADIUS server. If this
# commented out, RADIUS server is disabled.
#radius_server_clients=/etc/hostapd.radius_clients
# The UDP port number for the RADIUS authentication server
#radius_server_auth_port=1812
# Use IPv6 with RADIUS server (IPv4 will also be supported using IPv6 API)
#radius_server_ipv6=1
##### WPA/IEEE 802.11i configuration ##########################################
# Enable WPA. Setting this variable configures the AP to require WPA (either
# WPA-PSK or WPA-RADIUS/EAP based on other configuration). For WPA-PSK, either
# wpa_psk or wpa_passphrase must be set and wpa_key_mgmt must include WPA-PSK.
# For WPA-RADIUS/EAP, ieee8021x must be set (but without dynamic WEP keys),
# RADIUS authentication server must be configured, and WPA-EAP must be included
# in wpa_key_mgmt.
# This field is a bit field that can be used to enable WPA (IEEE 802.11i/D3.0)
# and/or WPA2 (full IEEE 802.11i/RSN):
# bit0 = WPA
# bit1 = IEEE 802.11i/RSN (WPA2) (dot11RSNAEnabled)
#wpa=1
# WPA pre-shared keys for WPA-PSK. This can be either entered as a 256-bit
# secret in hex format (64 hex digits), wpa_psk, or as an ASCII passphrase
# (8..63 characters) that will be converted to PSK. This conversion uses SSID
# so the PSK changes when ASCII passphrase is used and the SSID is changed.
# wpa_psk (dot11RSNAConfigPSKValue)
# wpa_passphrase (dot11RSNAConfigPSKPassPhrase)
#wpa_psk=0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef
#wpa_passphrase=qualcomm
# Optionally, WPA PSKs can be read from a separate text file (containing list
# of (PSK,MAC address) pairs. This allows more than one PSK to be configured.
# Use absolute path name to make sure that the files can be read on SIGHUP
# configuration reloads.
#wpa_psk_file=/etc/hostapd.wpa_psk
# Set of accepted key management algorithms (WPA-PSK, WPA-EAP, or both). The
# entries are separated with a space. WPA-PSK-SHA256 and WPA-EAP-SHA256 can be
# added to enable SHA256-based stronger algorithms.
# (dot11RSNAConfigAuthenticationSuitesTable)
#wpa_key_mgmt=WPA-PSK
#wpa_key_mgmt=WPA-EAP
# Set of accepted cipher suites (encryption algorithms) for pairwise keys
# (unicast packets). This is a space separated list of algorithms:
# CCMP = AES in Counter mode with CBC-MAC [RFC 3610, IEEE 802.11i/D7.0]
# TKIP = Temporal Key Integrity Protocol [IEEE 802.11i/D7.0]
# Group cipher suite (encryption algorithm for broadcast and multicast frames)
# is automatically selected based on this configuration. If only CCMP is
# allowed as the pairwise cipher, group cipher will also be CCMP. Otherwise,
# TKIP will be used as the group cipher.
# (dot11RSNAConfigPairwiseCiphersTable)
# Pairwise cipher for WPA (v1) (default: TKIP)
#wpa_pairwise=TKIP CCMP
# Pairwise cipher for RSN/WPA2 (default: use wpa_pairwise value)
#rsn_pairwise=CCMP
# Time interval for rekeying GTK (broadcast/multicast encryption keys) in
# seconds. (dot11RSNAConfigGroupRekeyTime)
wpa_group_rekey=86400
# Rekey GTK when any STA that possesses the current GTK is leaving the BSS.
# (dot11RSNAConfigGroupRekeyStrict)
#wpa_strict_rekey=1
# Time interval for rekeying GMK (master key used internally to generate GTKs
# (in seconds).
#wpa_gmk_rekey=86400
# Maximum lifetime for PTK in seconds. This can be used to enforce rekeying of
# PTK to mitigate some attacks against TKIP deficiencies.
#wpa_ptk_rekey=600
# Enable IEEE 802.11i/RSN/WPA2 pre-authentication. This is used to speed up
# roaming be pre-authenticating IEEE 802.1X/EAP part of the full RSN
# authentication and key handshake before actually associating with a new AP.
# (dot11RSNAPreauthenticationEnabled)
#rsn_preauth=1
#
# Space separated list of interfaces from which pre-authentication frames are
# accepted (e.g., 'eth0' or 'eth0 wlan0wds0'. This list should include all
# interface that are used for connections to other APs. This could include
# wired interfaces and WDS links. The normal wireless data interface towards
# associated stations (e.g., wlan0) should not be added, since
# pre-authentication is only used with APs other than the currently associated
# one.
#rsn_preauth_interfaces=eth0
# peerkey: Whether PeerKey negotiation for direct links (IEEE 802.11e) is
# allowed. This is only used with RSN/WPA2.
# 0 = disabled (default)
# 1 = enabled
#peerkey=1
# ieee80211w: Whether management frame protection (MFP) is enabled
# 0 = disabled (default)
# 1 = optional
# 2 = required
#ieee80211w=0
# Association SA Query maximum timeout (in TU = 1.024 ms; for MFP)
# (maximum time to wait for a SA Query response)
# dot11AssociationSAQueryMaximumTimeout, 1...4294967295
#assoc_sa_query_max_timeout=1000
# Association SA Query retry timeout (in TU = 1.024 ms; for MFP)
# (time between two subsequent SA Query requests)
# dot11AssociationSAQueryRetryTimeout, 1...4294967295
#assoc_sa_query_retry_timeout=201
# okc: Opportunistic Key Caching (aka Proactive Key Caching)
# Allow PMK cache to be shared opportunistically among configured interfaces
# and BSSes (i.e., all configurations within a single hostapd process).
# 0 = disabled (default)
# 1 = enabled
#okc=1
##### IEEE 802.11r configuration ##############################################
# Mobility Domain identifier (dot11FTMobilityDomainID, MDID)
# MDID is used to indicate a group of APs (within an ESS, i.e., sharing the
# same SSID) between which a STA can use Fast BSS Transition.
# 2-octet identifier as a hex string.
#mobility_domain=a1b2
# PMK-R0 Key Holder identifier (dot11FTR0KeyHolderID)
# 1 to 48 octet identifier.
# This is configured with nas_identifier (see RADIUS client section above).
# Default lifetime of the PMK-RO in minutes; range 1..65535
# (dot11FTR0KeyLifetime)
#r0_key_lifetime=10000
# PMK-R1 Key Holder identifier (dot11FTR1KeyHolderID)
# 6-octet identifier as a hex string.
#r1_key_holder=000102030405
# Reassociation deadline in time units (TUs / 1.024 ms; range 1000..65535)
# (dot11FTReassociationDeadline)
#reassociation_deadline=1000
# List of R0KHs in the same Mobility Domain
# format: <128-bit key as hex string>
# This list is used to map R0KH-ID (NAS Identifier) to a destination MAC
# address when requesting PMK-R1 key from the R0KH that the STA used during the
# Initial Mobility Domain Association.
#r0kh=02:01:02:03:04:05 r0kh-1.example.com 000102030405060708090a0b0c0d0e0f
#r0kh=02:01:02:03:04:06 r0kh-2.example.com 00112233445566778899aabbccddeeff
# And so on.. One line per R0KH.
# List of R1KHs in the same Mobility Domain
# format: <128-bit key as hex string>
# This list is used to map R1KH-ID to a destination MAC address when sending
# PMK-R1 key from the R0KH. This is also the list of authorized R1KHs in the MD
# that can request PMK-R1 keys.
#r1kh=02:01:02:03:04:05 02:11:22:33:44:55 000102030405060708090a0b0c0d0e0f
#r1kh=02:01:02:03:04:06 02:11:22:33:44:66 00112233445566778899aabbccddeeff
# And so on.. One line per R1KH.
# Whether PMK-R1 push is enabled at R0KH
# 0 = do not push PMK-R1 to all configured R1KHs (default)
# 1 = push PMK-R1 to all configured R1KHs whenever a new PMK-R0 is derived
#pmk_r1_push=1
##### Passive scanning ########################################################
# Scan different channels every N seconds. 0 = disable passive scanning.
#passive_scan_interval=60
# Listen N usecs on each channel when doing passive scanning.
# This value plus the time needed for changing channels should be less than
# 32 milliseconds (i.e. 32000 usec) to avoid interruptions to normal
# operations. Time needed for channel changing varies based on the used wlan
# hardware.
# default: disabled (0)
#passive_scan_listen=10000
# Passive scanning mode:
# 0 = scan all supported modes (802.11a/b/g/Turbo) (default)
# 1 = scan only the mode that is currently used for normal operations
#passive_scan_mode=1
# Maximum number of entries kept in AP table (either for passive scanning or
# for detecting Overlapping Legacy BSS Condition). The oldest entry will be
# removed when adding a new entry that would make the list grow over this
# limit. Note! Wi-Fi certification for IEEE 802.11g requires that OLBC is
# enabled, so this field should not be set to 0 when using IEEE 802.11g.
# default: 255
#ap_table_max_size=255
# Number of seconds of no frames received after which entries may be deleted
# from the AP table. Since passive scanning is not usually performed frequently
# this should not be set to very small value. In addition, there is no
# guarantee that every scan cycle will receive beacon frames from the
# neighboring APs.
# default: 60
#ap_table_expiration_time=3600
##### Wi-Fi Protected Setup (WPS) #############################################
# WPS state
# 0 = WPS disabled (default)
# 1 = WPS enabled, not configured
# 2 = WPS enabled, configured
#wps_state=2
# AP can be configured into a locked state where new WPS Registrar are not
# accepted, but previously authorized Registrars (including the internal one)
# can continue to add new Enrollees.
ap_setup_locked=1
# Universally Unique IDentifier (UUID; see RFC 4122) of the device
# This value is used as the UUID for the internal WPS Registrar. If the AP
# is also using UPnP, this value should be set to the device's UPnP UUID.
# If not configured, UUID will be generated based on the local MAC address.
#uuid=12345678-9abc-def0-1234-56789abcdef0
# Note: If wpa_psk_file is set, WPS is used to generate random, per-device PSKs
# that will be appended to the wpa_psk_file. If wpa_psk_file is not set, the
# default PSK (wpa_psk/wpa_passphrase) will be delivered to Enrollees. Use of
# per-device PSKs is recommended as the more secure option (i.e., make sure to
# set wpa_psk_file when using WPS with WPA-PSK).
# When an Enrollee requests access to the network with PIN method, the Enrollee
# PIN will need to be entered for the Registrar. PIN request notifications are
# sent to hostapd ctrl_iface monitor. In addition, they can be written to a
# text file that could be used, e.g., to populate the AP administration UI with
# pending PIN requests. If the following variable is set, the PIN requests will
# be written to the configured file.
#wps_pin_requests=/var/run/hostapd_wps_pin_requests
# Device Name
# User-friendly description of device; up to 32 octets encoded in UTF-8
#device_name=Wireless AP
# Manufacturer
# The manufacturer of the device (up to 64 ASCII characters)
#manufacturer=Qualcomm
# Model Name
# Model of the device (up to 32 ASCII characters)
#model_name=QualcommSoftAP
# Model Number
# Additional device description (up to 32 ASCII characters)
#model_number=123
# Serial Number
# Serial number of the device (up to 32 characters)
#serial_number=12345
# Primary Device Type
# Used format: --
# categ = Category as an integer value
# OUI = OUI and type octet as a 4-octet hex-encoded value; 0050F204 for
# default WPS OUI
# subcateg = OUI-specific Sub Category as an integer value
# Examples:
# 1-0050F204-1 (Computer / PC)
# 1-0050F204-2 (Computer / Server)
# 5-0050F204-1 (Storage / NAS)
# 6-0050F204-1 (Network Infrastructure / AP)
#device_type=6-0050F204-1
# OS Version
# 4-octet operating system version number (hex string)
#os_version=01020300
# Config Methods
# List of the supported configuration methods
config_methods=label display push_button keypad
# Access point PIN for initial configuration and adding Registrars
# If not set, hostapd will not allow external WPS Registrars to control the
# access point.
#ap_pin=12345670
# Skip building of automatic WPS credential
# This can be used to allow the automatically generated Credential attribute to
# be replaced with pre-configured Credential(s).
#skip_cred_build=1
# Additional Credential attribute(s)
# This option can be used to add pre-configured Credential attributes into M8
# message when acting as a Registrar. If skip_cred_build=1, this data will also
# be able to override the Credential attribute that would have otherwise been
# automatically generated based on network configuration. This configuration
# option points to an external file that much contain the WPS Credential
# attribute(s) as binary data.
#extra_cred=hostapd.cred
# Credential processing
# 0 = process received credentials internally (default)
# 1 = do not process received credentials; just pass them over ctrl_iface to
# external program(s)
# 2 = process received credentials internally and pass them over ctrl_iface
# to external program(s)
# Note: With wps_cred_processing=1, skip_cred_build should be set to 1 and
# extra_cred be used to provide the Credential data for Enrollees.
#
# wps_cred_processing=1 will disabled automatic updates of hostapd.conf file
# both for Credential processing and for marking AP Setup Locked based on
# validation failures of AP PIN. An external program is responsible on updating
# the configuration appropriately in this case.
#wps_cred_processing=0
# AP Settings Attributes for M7
# By default, hostapd generates the AP Settings Attributes for M7 based on the
# current configuration. It is possible to override this by providing a file
# with pre-configured attributes. This is similar to extra_cred file format,
# but the AP Settings attributes are not encapsulated in a Credential
# attribute.
#ap_settings=hostapd.ap_settings
# WPS UPnP interface
# If set, support for external Registrars is enabled.
#upnp_iface=br0
# Friendly Name (required for UPnP)
# Short description for end use. Should be less than 64 characters.
#friendly_name=Qualcomm Access Point
# Manufacturer URL (optional for UPnP)
#manufacturer_url=http://www.qualcomm.com/
# Model Description (recommended for UPnP)
# Long description for end user. Should be less than 128 characters.
#model_description=Wireless Access Point
# Model URL (optional for UPnP)
#model_url=http://www.qualcomm.com/
# Universal Product Code (optional for UPnP)
# 12-digit, all-numeric code that identifies the consumer package.
#upc=123456789012
##### Multiple BSSID support ##################################################
#
# Above configuration is using the default interface (wlan#, or multi-SSID VLAN
# interfaces). Other BSSIDs can be added by using separator 'bss' with
# default interface name to be allocated for the data packets of the new BSS.
#
# hostapd will generate BSSID mask based on the BSSIDs that are
# configured. hostapd will verify that dev_addr & MASK == dev_addr. If this is
# not the case, the MAC address of the radio must be changed before starting
# hostapd (ifconfig wlan0 hw ether ).
#
# BSSIDs are assigned in order to each BSS, unless an explicit BSSID is
# specified using the 'bssid' parameter.
# If an explicit BSSID is specified, it must be chosen such that it:
# - results in a valid MASK that covers it and the dev_addr
# - is not the same as the MAC address of the radio
# - is not the same as any other explicitly specified BSSID
#
# Please note that hostapd uses some of the values configured for the first BSS
# as the defaults for the following BSSes. However, it is recommended that all
# BSSes include explicit configuration of all relevant configuration items.
#
#bss=wlan0_0
#ssid=test2
# most of the above items can be used here (apart from radio interface specific
# items, like channel)
#bss=wlan0_1
#bssid=00:13:10:95:fe:0b
# ...
wowlan_triggers=any
================================================
FILE: hostapd.deny
================================================
# List of MAC addresses that are not allowed to authenticate (IEEE 802.11)
# with the AP.
================================================
FILE: init.hardware.diag.rc.user
================================================
#
# Copyright (C) 2016 The Android Open-Source Project
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#
on post-fs-data
# Modem logging collection
mkdir /data/vendor/radio 0777 radio radio
mkdir /data/vendor/radio/diag_logs 0777 system system
# Contain user rules for DIAG access
# For release-keys build, only works on Sprint SKU per requirements
on property:debug.sys.logging=*
setprop persist.sys.logging ${debug.sys.logging}
on property:persist.sys.logging=2
setprop sys.usb.config diag,serial_cdev,rmnet,adb
on property:ro.boot.diagclean=true && property:sys.boot_completed=1
rm /dev/diag
================================================
FILE: init.hardware.diag.rc.userdebug
================================================
#
# Copyright (C) 2016 The Android Open-Source Project
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#
on post-fs-data
# Modem logging collection
mkdir /data/vendor/radio 0777 radio radio
mkdir /data/vendor/radio/diag_logs 0777 system system
# Allow to use ##DIAG## in userdebug also
on property:debug.sys.logging=*
setprop persist.sys.logging ${debug.sys.logging}
on property:persist.sys.logging=2
setprop sys.usb.config diag,serial_cdev,rmnet,adb
service cnss_diag /vendor/bin/cnss_diag -q -f
class main
user system
group system wifi inet net_admin sdcard_rw media_rw diag
oneshot
on property:vold.decrypt=trigger_restart_framework
start cnss_diag
================================================
FILE: init.recovery.mata.rc
================================================
on fs
wait /dev/block/platform/soc/${ro.boot.bootdevice}
symlink /dev/block/platform/soc/${ro.boot.bootdevice} /dev/block/bootdevice
on init
mount configfs none /config
mkdir /config/usb_gadget/g1 0770 shell shell
write /config/usb_gadget/g1/idVendor 0x2e17
write /config/usb_gadget/g1/idProduct 0xc032
mkdir /config/usb_gadget/g1/strings/0x409 0770
write /config/usb_gadget/g1/strings/0x409/serialnumber ${ro.serialno}
write /config/usb_gadget/g1/strings/0x409/manufacturer ${ro.product.manufacturer}
write /config/usb_gadget/g1/strings/0x409/product ${ro.product.model}
mkdir /config/usb_gadget/g1/functions/ffs.adb
write /config/usb_gadget/g1/os_desc/use 1
setprop sys.usb.configfs 1
on property:sys.usb.ffs.ready=1
mkdir /config/usb_gadget/g1/configs/b.1 0777 shell shell
symlink /config/usb_gadget/g1/configs/b.1 /config/usb_gadget/g1/os_desc/b.1
mkdir /config/usb_gadget/g1/configs/b.1/strings/0x409 0770 shell shell
write /config/usb_gadget/g1/configs/b.1/strings/0x409/configuration "adb"
symlink /config/usb_gadget/g1/functions/ffs.adb /config/usb_gadget/g1/configs/b.1/f1
write /config/usb_gadget/g1/UDC "a800000.dwc3"
================================================
FILE: manifest.xml
================================================
android.hardware.audiohwbinder2.0IDevicesFactorydefaultandroid.hardware.audio.effecthwbinder2.0IEffectsFactorydefaultandroid.hardware.soundtriggerhwbinder2.0ISoundTriggerHwdefaultandroid.hardware.media.omxhwbinder1.0IOmxdefaultIOmxStoredefaultandroid.hardware.renderscriptpassthrough1.0IDevicedefaultandroid.hardware.graphics.allocatorhwbinder2.0IAllocatordefaultandroid.hardware.graphics.mapperpassthrough2.1IMapperdefaultandroid.hardware.graphics.composerhwbinder2.1IComposerdefaultandroid.hardware.configstorehwbinder1.0ISurfaceFlingerConfigsdefaultandroid.hardware.lighthwbinder2.0ILightdefaultandroid.hardware.memtrackhwbinder1.0IMemtrackdefaultandroid.hardware.sensorshwbinder1.0ISensorsdefaultandroid.hardware.camera.providerhwbinder2.4ICameraProviderlegacy/0android.hardware.biometrics.fingerprinthwbinder2.1IBiometricsFingerprintdefaultandroid.hardware.bluetoothhwbinder1.0IBluetoothHcidefaultandroid.hardware.boothwbinder1.0IBootControldefaultandroid.hardware.healthhwbinder2.0IHealthdefaultandroid.hardware.radiohwbinder1.0IRadioslot1ISapslot1android.hardware.secure_elementhwbinder1.0ISecureElementSIM1android.hardware.radio.deprecatedhwbinder1.0IOemHookslot1vendor.qti.hardware.radio.amhwbinder1.0IQcRilAudioslot1android.hardware.gnsshwbinder1.0IGnssdefaultvendor.qti.hardware.radio.atcmdfwdhwbinder1.0IAtCmdFwdAtCmdFwdServiceandroid.hardware.vibratorhwbinder1.2IVibratordefaultvendor.qti.imsrtpservicehwbinder1.0IRTPServiceimsrtpservicecom.qualcomm.qti.uceservicehwbinder1.0IUceServicecom.qualcomm.qti.uceservicevendor.qti.hardware.radio.qtiradiohwbinder1.0IQtiRadioslot1vendor.qti.hardware.improvetouch.touchcompanionhwbinder1.0ITouchCompanionTouchCompanionServicevendor.qti.hardware.improvetouch.gesturemanagerhwbinder1.0IGestureManagerGestureManagerServicevendor.qti.hardware.improvetouch.blobmanagerhwbinder1.0IBlobManagerBlobManagerServiceandroid.hardware.keymasterhwbinder3.0IKeymasterDevicedefaultandroid.hardware.gatekeeperhwbinder1.0IGatekeeperdefaultandroid.hardware.wifi.hostapdhwbinder1.1IHostapddefaultandroid.hardware.wifi.supplicanthwbinder1.2ISupplicantdefaultandroid.hardware.wifihwbinder1.2IWifidefaultvendor.qti.hardware.radio.imshwbinder1.0IImsRadioimsradio0vendor.qti.hardware.radio.qcrilhookhwbinder1.0IQtiOemHookoemhook0vendor.qti.hardware.radio.confighwbinder1.0IConfigradioconfig0android.hardware.usbhwbinder1.0IUsbdefaultandroid.hardware.drmhwbinder1.0ICryptoFactorydefaultIDrmFactorydefault@1.2::ICryptoFactory/clearkey@1.2::IDrmFactory/clearkey@1.2::ICryptoFactory/widevine@1.2::IDrmFactory/widevineandroid.hardware.dumpstatehwbinder1.0IDumpstateDevicedefaultandroid.hardware.nfchwbinder1.1INfcdefaultcom.quicinc.cne.serverhwbinder1.0IServercndcom.quicinc.cne.apihwbinder1.0IApiServicecndcom.quicinc.cne.serverhwbinder2.0IServercndcom.qualcomm.qti.wifidisplayhalhwbinder1.0IHDCPSessionwifidisplayhdcphalIDSManagerwifidisplaydshalandroid.hardware.thermalhwbinder1.0IThermaldefaultvendor.essential.hardware.sidecarhwbinder1.0ISidecardefault
================================================
FILE: mata-disabled-until-used-preinstalled-carrier-app.xml
================================================
================================================
FILE: mata.mk
================================================
LOCAL_KERNEL := device/essential/mata/Image.gz-dtb
$(call inherit-product, $(SRC_TARGET_DIR)/product/gsi_release.mk)
# Legacy GSI relax the compatible property checking
PRODUCT_COMPATIBLE_PROPERTY_OVERRIDE := false
# Support addtional Q VNDK packages
PRODUCT_EXTRA_VNDK_VERSIONS := 29
# Include Essential audio assets
$(call inherit-product-if-exists, vendor/essential/apps/assets/sounds/audio.mk)
# Sounds properties
PRODUCT_PROPERTY_OVERRIDES += \
ro.config.ringtone=Sikkim.ogg \
ro.config.notification_sound=Sherwood.ogg \
ro.config.alarm_alert=Gallatin.ogg
PRODUCT_COPY_FILES += \
$(LOCAL_KERNEL):kernel \
$(LOCAL_PATH)/init.recovery.mata.rc:root/init.recovery.mata.rc
BOARD_VENDOR_KERNEL_MODULES := device/essential/mata/qca_cld3_wlan.ko
TARGET_USES_QCOM_BSP := false
DEVICE_PACKAGE_OVERLAYS += device/essential/mata/overlay
PRODUCT_PROPERTY_OVERRIDES += \
ro.vendor.vndk.version=27.1.0 \
# Include vndk/vndk-sp/ll-ndk modules
PRODUCT_PACKAGES += vndk_package
TARGET_USES_AOSP_FOR_AUDIO := true
TARGET_ENABLE_QC_AV_ENHANCEMENTS := false
TARGET_DISABLE_DASH := true
ENABLE_VENDOR_IMAGE := true
ENABLE_AB := true
TARGET_KERNEL_VERSION := 4.4
# Use AOSP configuration
TARGET_USES_AOSP := true
BOARD_FRP_PARTITION_NAME :=frp
# Video codec configuration files
PRODUCT_COPY_FILES += \
device/essential/mata/media/media_codecs.xml:$(TARGET_COPY_OUT_VENDOR)/etc/media_codecs.xml \
device/essential/mata/media/media_codecs_performance.xml:$(TARGET_COPY_OUT_VENDOR)/etc/media_codecs_performance.xml
# video seccomp policy files
PRODUCT_COPY_FILES += \
device/essential/mata/seccomp/mediacodec-seccomp.policy:$(TARGET_COPY_OUT_VENDOR)/etc/seccomp_policy/mediacodec.policy \
device/essential/mata/seccomp/mediaextractor-seccomp.policy:$(TARGET_COPY_OUT_VENDOR)/etc/seccomp_policy/mediaextractor.policy
PRODUCT_PACKAGES += \
android.hardware.usb@1.0-service.mata
# Exclude TOF sensor from InputManager
PRODUCT_COPY_FILES += \
device/essential/mata/excluded-input-devices.xml:system/etc/excluded-input-devices.xml
# Android_net
PRODUCT_PACKAGES += \
libandroid_net \
libandroid_net_32
# Add support for whitelisted apps
PRODUCT_COPY_FILES += device/essential/mata/whitelistedapps.xml:system/etc/whitelistedapps.xml
TARGET_USES_QTIC := false
#QTIC flag
-include $(QCPATH)/common/config/qtic-config.mk
# Add soft home, back and multitask keys
PRODUCT_PROPERTY_OVERRIDES += \
qemu.hw.mainkeys=0
# Override heap growth limit due to high display density on device
PRODUCT_PROPERTY_OVERRIDES += \
dalvik.vm.heapgrowthlimit=256m
# Disable Data roaming by default
PRODUCT_PROPERTY_OVERRIDES += \
ro.com.android.dataroaming=false
# whitelisted Sprint app
PRODUCT_COPY_FILES += \
device/essential/mata/sprint_whitelist.xml:system/etc/sysconfig/sprint_whitelist.xml
# APN file
PRODUCT_COPY_FILES += \
device/essential/mata/etc/apns-conf.xml:system/etc/apns-conf.xml
$(call inherit-product, frameworks/native/build/phone-xhdpi-2048-dalvik-heap.mk)
$(call inherit-product, device/essential/mata/base.mk)
$(call inherit-product, device/essential/mata/device-vendor.mk)
$(call inherit-product, $(SRC_TARGET_DIR)/product/core_64_bit.mk)
$(call inherit-product, $(SRC_TARGET_DIR)/product/aosp_base_telephony.mk)
PRODUCT_AAPT_CONFIG := normal
PRODUCT_AAPT_PREF_CONFIG := 480dpi
PRODUCT_AAPT_PREBUILT_DPI := xxxhdpi xxhdpi xhdpi hdpi
PRODUCT_PROPERTY_OVERRIDES += \
ro.vendor.extension_library=libqti-perfd-client.so \
persist.radio.apm_sim_not_pwdn=1 \
persist.vendor.radio.sib16_support=1 \
persist.vendor.radio.custom_ecc=1 \
persist.vendor.radio.rat_on=other \
sys.vendor.shutdown.waittime=500
# whitelisted app
PRODUCT_COPY_FILES += \
device/essential/mata/qti_whitelist.xml:system/etc/sysconfig/qti_whitelist.xml
# system prop for opengles version
#
# 196608 is decimal for 0x30000 to report version 3
# 196609 is decimal for 0x30001 to report version 3.1
# 196610 is decimal for 0x30002 to report version 3.2
PRODUCT_PROPERTY_OVERRIDES += \
ro.opengles.version=196610
PRODUCT_NAME := mata
# End-user-visible name for the overall product. Appears in the Settings > About screen.
PRODUCT_DEVICE := mata
# End-user-visible name for the end product
PRODUCT_MODEL := PH-1
# The brand (e.g., carrier) the software is customized for, if any
# This is the first part of the fingerprint
# [BRAND/TARGET_PRODUCT/DEVICE:7.1.1/NMF26V/7:user/test-keys]
PRODUCT_BRAND := essential
# Name of the manufacturer
PRODUCT_MANUFACTURER := Essential Products
# Enable features in video HAL that can compile only on this platform
TARGET_USES_MEDIA_EXTENSIONS := true
# WLAN chipset
WLAN_CHIPSET := qca_cld3
#Android EGL implementation
PRODUCT_PACKAGES += libGLES_android
PRODUCT_PACKAGES += telephony-ext
PRODUCT_PACKAGES += libqmiextservices
# system prop for Bluetooth SOC type
PRODUCT_PROPERTY_OVERRIDES += \
qcom.bluetooth.soc=cherokee
# FW for BT
PRODUCT_PACKAGES += \
crbtfw11.tlv \
crnv11.bin \
crbtfw20.tlv \
crnv20.bin \
crbtfw21.tlv \
crnv21.bin
DEVICE_MANIFEST_FILE := device/essential/mata/manifest.xml
DEVICE_MATRIX_FILE := device/essential/mata/compatibility_matrix.xml
# Audio, SmartAmp
PRODUCT_PACKAGES += libtfa98xx climax
PRODUCT_COPY_FILES += \
device/essential/mata/audio/mixer_paths_tasha_mata.xml:$(TARGET_COPY_OUT_VENDOR)/etc/mixer_paths_tasha.xml \
device/essential/mata/audio/audio_platform_info_mata.xml:$(TARGET_COPY_OUT_VENDOR)/etc/audio_platform_info.xml \
device/essential/mata/audio/smartamp/TFA9891.ini:$(TARGET_COPY_OUT_VENDOR)/etc/firmware/TFA9891.ini \
device/essential/mata/audio/smartamp/TFA9891.cnt_preformat.ini:$(TARGET_COPY_OUT_VENDOR)/etc/firmware/TFA9891.cnt_preformat.ini \
device/essential/mata/audio/smartamp/TFA9891.cnt:$(TARGET_COPY_OUT_VENDOR)/firmware/TFA9891.cnt \
device/essential/mata/audio/smartamp/TFA9891_N1A_11_1_31_NL3_HQ.patch:$(TARGET_COPY_OUT_VENDOR)/etc/firmware/TFA9891_N1A_11_1_31_NL3_HQ.patch \
device/essential/mata/audio/smartamp/TFA9891N1A_Dec2015.config:$(TARGET_COPY_OUT_VENDOR)/etc/firmware/TFA9891N1A_Dec2015.config \
device/essential/mata/audio/smartamp/TFA9891.speaker:$(TARGET_COPY_OUT_VENDOR)/etc/firmware/TFA9891.speaker \
device/essential/mata/audio/smartamp/T9891_mu.drc:$(TARGET_COPY_OUT_VENDOR)/etc/firmware/T9891_mu.drc \
device/essential/mata/audio/smartamp/T9891_mu.vstep:$(TARGET_COPY_OUT_VENDOR)/etc/firmware/T9891_mu.vstep \
device/essential/mata/audio/smartamp/T9891_rt.drc:$(TARGET_COPY_OUT_VENDOR)/etc/firmware/T9891_rt.drc \
device/essential/mata/audio/smartamp/T9891_rt.vstep:$(TARGET_COPY_OUT_VENDOR)/etc/firmware/T9891_rt.vstep \
device/essential/mata/audio/smartamp/T9891_vo.drc:$(TARGET_COPY_OUT_VENDOR)/etc/firmware/T9891_vo.drc \
device/essential/mata/audio/smartamp/T9891_vo.vstep:$(TARGET_COPY_OUT_VENDOR)/etc/firmware/T9891_vo.vstep \
device/essential/mata/audio/acdbdata/Bluetooth_cal.acdb:$(TARGET_COPY_OUT_VENDOR)/etc/acdbdata/Mata/Mata_Bluetooth_cal.acdb \
device/essential/mata/audio/acdbdata/General_cal.acdb:$(TARGET_COPY_OUT_VENDOR)/etc/acdbdata/Mata/Mata_General_cal.acdb \
device/essential/mata/audio/acdbdata/Global_cal.acdb:$(TARGET_COPY_OUT_VENDOR)/etc/acdbdata/Mata/Mata_Global_cal.acdb \
device/essential/mata/audio/acdbdata/Handset_cal.acdb:$(TARGET_COPY_OUT_VENDOR)/etc/acdbdata/Mata/Mata_Handset_cal.acdb \
device/essential/mata/audio/acdbdata/Hdmi_cal.acdb:$(TARGET_COPY_OUT_VENDOR)/etc/acdbdata/Mata/Mata_Hdmi_cal.acdb \
device/essential/mata/audio/acdbdata/Headset_cal.acdb:$(TARGET_COPY_OUT_VENDOR)/etc/acdbdata/Mata/Mata_Headset_cal.acdb \
device/essential/mata/audio/acdbdata/Speaker_cal.acdb:$(TARGET_COPY_OUT_VENDOR)/etc/acdbdata/Mata/Mata_Speaker_cal.acdb \
device/essential/mata/audio/acdbdata/workspaceFile.qwsp:$(TARGET_COPY_OUT_VENDOR)/etc/acdbdata/Mata/Mata_workspaceFile.qwsp \
device/essential/mata/audio/sound_trigger_mixer_paths.xml:$(TARGET_COPY_OUT_VENDOR)/etc/sound_trigger_mixer_paths.xml
# Audio volume control
PRODUCT_COPY_FILES += \
device/essential/mata/audio/default_volume_tables.xml:$(TARGET_COPY_OUT_VENDOR)/etc/default_volume_tables.xml \
device/essential/mata/audio/audio_policy_volumes.xml:$(TARGET_COPY_OUT_VENDOR)/etc/audio_policy_volumes.xml
# Essential audio policy
PRODUCT_COPY_FILES += \
device/essential/mata/audio/audio_policy_configuration.xml:$(TARGET_COPY_OUT_VENDOR)/etc/audio_policy_configuration.xml \
device/essential/mata/sound_trigger_platform_info.xml:$(TARGET_COPY_OUT_VENDOR)/etc/sound_trigger_platform_info.xml
# Audio configuration file
-include device/essential/mata/audio/msm8998.mk
PRODUCT_PACKAGES += android.hardware.media.omx@1.0-impl
# Sensor HAL conf file
PRODUCT_COPY_FILES += \
device/essential/mata/sensors/hals.conf:$(TARGET_COPY_OUT_VENDOR)/etc/sensors/hals.conf
# WLAN host driver
PRODUCT_PACKAGES += $(WLAN_CHIPSET)_wlan.ko
# WLAN driver configuration file
PRODUCT_COPY_FILES += \
device/essential/mata/WCNSS_qcom_cfg.ini:$(TARGET_COPY_OUT_VENDOR)/etc/wifi/WCNSS_qcom_cfg.ini \
device/essential/mata/wifi_concurrency_cfg.txt:$(TARGET_COPY_OUT_VENDOR)/etc/wifi/wifi_concurrency_cfg.txt
# MIDI feature
PRODUCT_COPY_FILES += \
frameworks/native/data/etc/android.software.midi.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.software.midi.xml
PRODUCT_PACKAGES += \
wpa_supplicant_overlay.conf \
p2p_supplicant_overlay.conf
# Display/Graphics
PRODUCT_PACKAGES += \
android.hardware.graphics.allocator@2.0-impl \
android.hardware.graphics.allocator@2.0-service \
android.hardware.graphics.mapper@2.0-impl-2.1 \
android.hardware.graphics.composer@2.1-impl \
android.hardware.graphics.composer@2.1-service \
android.hardware.memtrack@1.0-impl \
android.hardware.memtrack@1.0-service \
android.hardware.light@2.0-impl \
android.hardware.light@2.0-service \
android.hardware.configstore@1.0-service
# Vibrator
PRODUCT_PACKAGES += \
android.hardware.vibrator@1.2-service.mata \
# NFC packages
PRODUCT_PACKAGES += \
NfcNci \
Tag \
com.android.nfc_extras \
android.hardware.nfc@1.1-service \
PRODUCT_PROPERTY_OVERRIDES += \
persist.vendor.nfc.uicc_enabled=true \
persist.vendor.radio.uicc_se_enabled=true
PRODUCT_PACKAGES += \
SecureElement
# NXP chip (NQ2xxx)
PRODUCT_COPY_FILES += \
device/essential/mata/nfc/libnfc-nxp.conf:$(TARGET_COPY_OUT_VENDOR)/etc/libnfc-nxp.conf \
device/essential/mata/nfc/libnfc-brcm-mata.conf:$(TARGET_COPY_OUT_VENDOR)/etc/libnfc-nci.conf
PRODUCT_PACKAGES += libpn548ad_fw.so
# Camera configuration file. Shared by passthrough/binderized camera HAL
PRODUCT_PACKAGES += camera.device@3.2-impl
PRODUCT_PACKAGES += android.hardware.camera.provider@2.4-impl
# Enable binderized camera HAL
PRODUCT_PACKAGES += android.hardware.camera.provider@2.4-service
# Sensor features
PRODUCT_COPY_FILES += \
frameworks/native/data/etc/android.hardware.sensor.accelerometer.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.sensor.accelerometer.xml \
frameworks/native/data/etc/android.hardware.sensor.compass.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.sensor.compass.xml \
frameworks/native/data/etc/android.hardware.sensor.gyroscope.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.sensor.gyroscope.xml \
frameworks/native/data/etc/android.hardware.sensor.light.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.sensor.light.xml \
frameworks/native/data/etc/android.hardware.sensor.proximity.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.sensor.proximity.xml \
frameworks/native/data/etc/android.hardware.sensor.barometer.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.sensor.barometer.xml \
frameworks/native/data/etc/android.hardware.sensor.stepcounter.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.sensor.stepcounter.xml \
frameworks/native/data/etc/android.hardware.sensor.stepdetector.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.sensor.stepdetector.xml \
frameworks/native/data/etc/android.hardware.sensor.ambient_temperature.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.sensor.ambient_temperature.xml \
frameworks/native/data/etc/android.hardware.sensor.relative_humidity.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.sensor.relative_humidity.xml \
frameworks/native/data/etc/android.hardware.sensor.hifi_sensors.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.sensor.hifi_sensors.xml \
frameworks/native/data/etc/android.hardware.fingerprint.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.fingerprint.xml
PRODUCT_PACKAGES += libdiag_system
# MSM IRQ Balancer configuration file
PRODUCT_COPY_FILES += device/essential/mata/msm_irqbalance.conf:$(TARGET_COPY_OUT_VENDOR)/etc/msm_irqbalance.conf
# Powerhint configuration file
PRODUCT_COPY_FILES += device/essential/mata/powerhint.xml:$(TARGET_COPY_OUT_VENDOR)/etc/powerhint.xml
# dm-verity configuration
PRODUCT_SYSTEM_VERITY_PARTITION := /dev/block/bootdevice/by-name/system
PRODUCT_VENDOR_VERITY_PARTITION := /dev/block/bootdevice/by-name/vendor
$(call inherit-product, build/target/product/verity.mk)
PRODUCT_FULL_TREBLE_OVERRIDE := true
PRODUCT_VENDOR_MOVE_ENABLED := true
#for wlan
PRODUCT_PACKAGES += \
wificond \
wifilogd
#A/B related packages
PRODUCT_PACKAGES += update_engine \
update_engine_client \
update_verifier \
bootctrl.msm8998 \
bootctrl.msm8998.recovery \
android.hardware.boot@1.0-impl \
android.hardware.boot@1.0-impl.recovery \
android.hardware.boot@1.0-service
PRODUCT_PACKAGES += \
update_engine_sideload
# A/B OTA dexopt package
PRODUCT_PACKAGES += otapreopt_script
# A/B OTA dexopt update_engine hookup
AB_OTA_POSTINSTALL_CONFIG += \
RUN_POSTINSTALL_system=true \
POSTINSTALL_PATH_system=system/bin/otapreopt_script \
FILESYSTEM_TYPE_system=ext4 \
POSTINSTALL_OPTIONAL_system=true
#FEATURE_OPENGLES_EXTENSION_PACK support string config file
PRODUCT_COPY_FILES += \
frameworks/native/data/etc/android.hardware.opengles.aep.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.opengles.aep.xml
#inherit product from qcom
$(call inherit-product-if-exists, vendor/qcom/proprietary/prebuilt_HY11/target/product/msm8998/prebuilt.mk)
# Tell the system to enable copying odexes from other partition.
PRODUCT_PACKAGES += \
cppreopts.sh
PRODUCT_PROPERTY_OVERRIDES += \
ro.cp_system_other_odex=1
#Health packages
PRODUCT_PACKAGES += android.hardware.health@2.0-service.mata
PRODUCT_COPY_FILES += \
device/essential/mata/healthd/images/animation.txt:root/res/values/charger/animation.txt
#Disable QTI KEYMASTER and GATEKEEPER HIDLs
#We cannot use those during an OTA from N => O
KMGK_USE_QTI_SERVICE := false
#Enable AOSP KEYMASTER and GATEKEEPER HIDLs
PRODUCT_PACKAGES += android.hardware.gatekeeper@1.0-impl \
android.hardware.gatekeeper@1.0-service \
android.hardware.keymaster@3.0-impl \
android.hardware.keymaster@3.0-service
# Kernel modules install path
# Change to dlkm when dlkm feature is fully enabled
KERNEL_MODULES_INSTALL := system
# Audio post-processing
PRODUCT_PACKAGES += libvolumelistener
#Thermal
PRODUCT_PACKAGES += android.hardware.thermal@1.0-service.mata
PRODUCT_COPY_FILES += \
device/essential/mata/rootdir/etc/init.qcom.post_boot.sh:$(TARGET_COPY_OUT_VENDOR)/bin/init.qcom.post_boot.sh \
device/essential/mata/rootdir/etc/init.qcom.early_boot.sh:$(TARGET_COPY_OUT_VENDOR)/bin/init.qcom.early_boot.sh \
device/essential/mata/rootdir/etc/ueventd.vendor.rc:$(TARGET_COPY_OUT_VENDOR)/ueventd.rc
# NFC features
PRODUCT_COPY_FILES += \
device/essential/mata/android.sofware.nfc.beam.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.sofware.nfc.beam.xml \
frameworks/native/data/etc/android.hardware.nfc.uicc.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.nfc.uicc.xml
# Touch command handling script
PRODUCT_COPY_FILES += \
device/essential/mata/rootdir/etc/hbtp_cmd.sh:$(TARGET_COPY_OUT_VENDOR)/bin/hbtp_cmd.sh
# Essential legal page
PRODUCT_PACKAGES += \
EssentialLegal
# Essential FactoryProvisioning app
PRODUCT_PACKAGES += \
FactoryProvisioning
# Essential EssentialSUWOverlay
PRODUCT_PACKAGES += \
EssentialSUWOverlay
# Essential EssentialSuwWelcome
PRODUCT_PACKAGES += \
EssentialSuwWelcome
# Add spn-conf file
PRODUCT_COPY_FILES += \
device/essential/mata/etc/spn-conf.xml:system/etc/spn-conf.xml
# USB-C => Jack keylayout
PRODUCT_COPY_FILES += \
device/essential/mata/Vendor_2e17_Product_a001.kl:system/usr/keylayout/Vendor_2e17_Product_a001.kl \
device/essential/mata/uinput-fpc.kl:system/usr/keylayout/uinput-fpc.kl
# Hidden API Whitelist
PRODUCT_COPY_FILES += \
device/essential/mata/essential-hiddenapi-package-whitelist.xml:system/etc/sysconfig/essential-hiddenapi-package-whitelist.xml
# Carrier Apps list that are disabled until used
PRODUCT_COPY_FILES += \
device/essential/mata/mata-disabled-until-used-preinstalled-carrier-app.xml:system/etc/sysconfig/mata-disabled-until-used-preinstalled-carrier-app.xml
# Essential Camera & Gallery
PRODUCT_PACKAGES += \
Klik
# Essential Sidecar Service
PRODUCT_PACKAGES += \
vendor.essential.hardware.sidecar@1.0_vendor \
vendor.essential.hardware.sidecar-V1.0-java \
vendor.essential.hardware.sidecar@1.0-service \
vendor.essential.hardware.sidecar@1.0-impl \
vendor-essential-hardware-sidecar.xml \
Score \
fastboot_target
# Essential whitelist resource app
PRODUCT_PACKAGES += \
EssentialResources
# Essential Core Services
PRODUCT_PACKAGES += \
Ecore
# Prebuilt text classifier
PRODUCT_PACKAGES += \
textclassifier.smartselection.bundle1
# APTx codecs
$(call inherit-product-if-exists, vendor/essential/apps/aptX_codecs/aptx_codecs.mk)
# Essential priv-app permission
PRODUCT_COPY_FILES += \
device/essential/mata/privapp-permissions-mata.xml:system/etc/permissions/privapp-permissions-mata.xml \
# This needs to be set before including GMS packages
# Cannot be set in the system.prop, the inclusion
# is happening too late
PRODUCT_SHIPPING_API_LEVEL := 25
# Custom bootanimation
PRODUCT_COPY_FILES += \
device/essential/mata/bootanimation.zip:system/media/bootanimation.zip
$(call inherit-product-if-exists, vendor/essential/mata/fpc_fingerprints/device/device.mk)
# Silenced verbose logs
PRODUCT_PROPERTY_OVERRIDES += \
persist.log.tag.improveTouch=INFO \
persist.log.tag.QCNEJ=WARNING \
persist.log.tag.ThermalEngine=WARNING
PRODUCT_PROPERTY_OVERRIDES += \
persist.sys.logging=0 \
persist.sys.crash_dumps=0 \
persist.sys.pstore_dumps=0 \
dalvik.vm.thread-trace-file=/data/anr/threads.txt
# Dumpstate HAL
PRODUCT_PACKAGES += \
android.hardware.dumpstate@1.0-service.mata
# Build DRM HAL
PRODUCT_PACKAGES += \
move_widevine_data.sh \
android.hardware.drm@1.2-service.widevine \
android.hardware.drm@1.2-service.clearkey
# Add host packages
PRODUCT_HOST_PACKAGES += \
brillo_update_payload \
delta_generator \
shflags \
simg2img
# Add override for vendor build.prop
# RIL info
PRODUCT_PROPERTY_OVERRIDES += \
persist.cne.feature=1 \
persist.radio.VT_ENABLE=1 \
persist.radio.VT_HYBRID_ENABLE=1 \
persist.radio.data_con_rprt=true \
persist.rcs.supported=1 \
rild.libpath=/vendor/lib64/libril-qc-qmi-1.so \
persist.data.mode=concurrent \
persist.data.iwlan.enable=true \
ro.telephony.default_network=22 \
telephony.lteOnCdmaDevice=1
# Enable CameraHAL perfd usage
PRODUCT_PROPERTY_OVERRIDES += \
persist.camera.perfd.enable=true
# Get kernel-headers
$(call inherit-product, hardware/qcom/msm8998/msm8998.mk)
# Set the path for HAL headers
SRC_CAMERA_HAL_DIR := hardware/qcom/camera/msm8998
SRC_DISPLAY_HAL_DIR := hardware/qcom/display/msm8998
SRC_MEDIA_HAL_DIR := hardware/qcom/media/msm8998
PRODUCT_COPY_FILES += \
device/essential/mata/audio_effects.xml:$(TARGET_COPY_OUT_VENDOR)/etc/audio_effects.xml
ifneq (,$(filter userdebug eng, $(TARGET_BUILD_VARIANT)))
PRODUCT_COPY_FILES += \
device/essential/mata/init.hardware.diag.rc.userdebug:$(TARGET_COPY_OUT_VENDOR)/etc/init/init.mata.diag.rc
else
PRODUCT_COPY_FILES += \
device/essential/mata/init.hardware.diag.rc.user:$(TARGET_COPY_OUT_VENDOR)/etc/init/init.mata.diag.rc
endif
# Enforce privapp-permissions whitelist
PRODUCT_PROPERTY_OVERRIDES += \
ro.control_privapp_permissions=enforce
# Subsystem silent restart
PRODUCT_PROPERTY_OVERRIDES += \
persist.sys.ssr.restart_level=modem,slpi,adsp
# Disable BT HAL v2 for now
PRODUCT_PROPERTY_OVERRIDES += \
persist.bluetooth.bluetooth_audio_hal.disabled=true
# Reset default locale
PRODUCT_LOCALES :=
# MQA
PRODUCT_PACKAGES += \
libhdaudio
# Set lmkd options
PRODUCT_SYSTEM_DEFAULT_PROPERTIES += \
ro.lmk.low=1001 \
ro.lmk.medium=800 \
ro.lmk.critical=0 \
ro.lmk.critical_upgrade=false \
ro.lmk.upgrade_pressure=100 \
ro.lmk.downgrade_pressure=100 \
ro.lmk.kill_heaviest_task=true \
ro.lmk.kill_timeout_ms=100 \
ro.lmk.use_minfree_levels=true \
PRODUCT_PROPERTY_OVERRIDES += \
ro.build.shutdown_timeout=1
# Set density
PRODUCT_PROPERTY_OVERRIDES += \
ro.sf.lcd_density=480
# GPIO mapping
PRODUCT_COPY_FILES += \
device/essential/mata/gpio-keys-mata.kl:system/usr/keylayout/gpio-keys.kl
# PowerHint values
PRODUCT_COPY_FILES += \
device/essential/mata/powerhint.json:$(TARGET_COPY_OUT_VENDOR)/etc/powerhint.json
# Installs gsi keys into ramdisk, to boot a GSI with verified boot.
$(call inherit-product, $(SRC_TARGET_DIR)/product/gsi_keys.mk)
================================================
FILE: media/media_codecs.xml
================================================
================================================
FILE: media/media_codecs_performance.xml
================================================
================================================
FILE: media/media_profiles_V1_0.xml
================================================
================================================
FILE: msm_irqbalance.conf
================================================
PRIO=1,1,1,1,0,0,0,0
#arch_timer, arm-pmu, arch_mem_timer, smem-rpm, mpm
IGNORED_IRQ=19,22,39,200,203
#WLAN irqs
BLACKLIST_IRQ=446,455,456
================================================
FILE: nfc/libnfc-brcm-mata.conf
================================================
###############################################################################
# Application options
NFC_DEBUG_ENABLED=1
###############################################################################
# File used for NFA storage
NFA_STORAGE="/data/nfc"
###############################################################################
# Force UICC to only listen to the following technology(s).
# The bits are defined as tNFA_TECHNOLOGY_MASK in nfa_api.h.
# Default is NFA_TECHNOLOGY_MASK_A | NFA_TECHNOLOGY_MASK_B | NFA_TECHNOLOGY_MASK_F
UICC_LISTEN_TECH_MASK=0x07
###############################################################################
# AID for Empty Select command
# If specified, this AID will be substituted when an Empty SELECT command is
# detected. The first byte is the length of the AID. Maximum length is 16.
AID_FOR_EMPTY_SELECT={08:A0:00:00:01:51:00:00:00}
###############################################################################
# When screen is turned off, specify the desired power state of the controller.
# 0: power-off-sleep state; DEFAULT
# 1: full-power state
# 2: screen-off card-emulation (CE4/CE3/CE1 modes are used)
SCREEN_OFF_POWER_STATE=1
###############################################################################
# Force tag polling for the following technology(s).
# The bits are defined as tNFA_TECHNOLOGY_MASK in nfa_api.h.
# Default is NFA_TECHNOLOGY_MASK_A | NFA_TECHNOLOGY_MASK_B |
# NFA_TECHNOLOGY_MASK_F | NFA_TECHNOLOGY_MASK_ISO15693 |
# NFA_TECHNOLOGY_MASK_B_PRIME | NFA_TECHNOLOGY_MASK_KOVIO |
# NFA_TECHNOLOGY_MASK_ACTIVE
#
# Notable bits:
# NFA_TECHNOLOGY_MASK_A 0x01 /* NFC Technology A */
# NFA_TECHNOLOGY_MASK_B 0x02 /* NFC Technology B */
# NFA_TECHNOLOGY_MASK_F 0x04 /* NFC Technology F */
# NFA_TECHNOLOGY_MASK_ISO15693 0x08 /* Proprietary Technology */
# NFA_TECHNOLOGY_MASK_KOVIO 0x20 /* Proprietary Technology */
# NFA_TECHNOLOGY_MASK_ACTIVE 0x40 /* NFC Technology Active */
POLLING_TECH_MASK=0x6F
###############################################################################
# Force P2P to only listen for the following technology(s).
# The bits are defined as tNFA_TECHNOLOGY_MASK in nfa_api.h.
# Default is NFA_TECHNOLOGY_MASK_A | NFA_TECHNOLOGY_MASK_F |
# NFA_TECHNOLOGY_MASK_ACTIVE
#
# Notable bits:
# NFA_TECHNOLOGY_MASK_A 0x01 /* NFC Technology A */
# NFA_TECHNOLOGY_MASK_F 0x04 /* NFC Technology F */
# NFA_TECHNOLOGY_MASK_ACTIVE 0x40 /* NFC Technology Active */
P2P_LISTEN_TECH_MASK=0x45
PRESERVE_STORAGE=0x01
###############################################################################
# Override the stack default for NFA_EE_MAX_EE_SUPPORTED set in nfc_target.h.
# The value is set to 3 by default as it assumes we will discover 0xF2,
# 0xF3, and 0xF4. If a platform will exclude and SE, this value can be reduced
# so that the stack will not wait any longer than necessary.
# Maximum EE supported number
# NXP PN547C2 0x02
# NXP PN65T 0x03
# NXP PN548C2 0x02
# NXP PN66T 0x03
NFA_MAX_EE_SUPPORTED=0x02
###############################################################################
# AID_MATCHING constants
# AID_MATCHING_EXACT_ONLY 0x00
# AID_MATCHING_EXACT_OR_PREFIX 0x01
# AID_MATCHING_PREFIX_ONLY 0x02
# AID_MATCHING_EXACT_OR_SUBSET_OR_PREFIX 0x03
AID_MATCHING_MODE=0x03
================================================
FILE: nfc/libnfc-nxp.conf
================================================
## This file is used by NFC NXP NCI HAL(external/libnfc-nci/halimpl/pn547)
## and NFC Service Java Native Interface Extensions (packages/apps/Nfc/nci/jni/extns/pn547)
###############################################################################
# Application options
# Logging Levels
# NXPLOG_DEFAULT_LOGLEVEL 0x01
# ANDROID_LOG_DEBUG 0x03
# ANDROID_LOG_WARN 0x02
# ANDROID_LOG_ERROR 0x01
# ANDROID_LOG_SILENT 0x00
NXPLOG_EXTNS_LOGLEVEL=0x03
NXPLOG_NCIHAL_LOGLEVEL=0x03
NXPLOG_NCIX_LOGLEVEL=0x03
NXPLOG_NCIR_LOGLEVEL=0x03
NXPLOG_FWDNLD_LOGLEVEL=0x03
NXPLOG_TML_LOGLEVEL=0x03
NFC_DEBUG_ENABLED=0
###############################################################################
# Nfc Device Node name
NXP_NFC_DEV_NODE="/dev/nq-nci"
###############################################################################
# Extension for Mifare reader enable
MIFARE_READER_ENABLE=0x01
###############################################################################
# Firmware file type
#.so file 0x01
#.bin file 0x02
NXP_FW_TYPE=0x01
###############################################################################
# System clock source selection configuration
#define CLK_SRC_XTAL 1
#define CLK_SRC_PLL 2
NXP_SYS_CLK_SRC_SEL=0x01
###############################################################################
# System clock frequency selection configuration
#define CLK_FREQ_13MHZ 1
#define CLK_FREQ_19_2MHZ 2
#define CLK_FREQ_24MHZ 3
#define CLK_FREQ_26MHZ 4
#define CLK_FREQ_38_4MHZ 5
#define CLK_FREQ_52MHZ 6
NXP_SYS_CLK_FREQ_SEL=0x00
###############################################################################
# The timeout value to be used for clock request acknowledgment
# min value = 0x01 to max = 0x06
NXP_SYS_CLOCK_TO_CFG=0x06
###############################################################################
# NXP proprietary settings
NXP_ACT_PROP_EXTN={2F, 02, 00}
###############################################################################
# NFC forum profile settings
NXP_NFC_PROFILE_EXTN={20, 02, 05, 01, A0, 44, 01, 00}
###############################################################################
# NXP TVDD configurations settings
# Allow NFCC to configure External TVDD, two configurations (1 and 2) supported,
# out of them only one can be configured at a time.
NXP_EXT_TVDD_CFG=0x02
###############################################################################
#config1:SLALM, 3.3V for both RM and CM
NXP_EXT_TVDD_CFG_1={20, 02, 0B, 02, A0, 66, 01, 00, A0, 0E, 03, 02, 09, 00}
################################################################################
#config2: use DCDC in CE, use Tx_Pwr_Req, set CFG2 mode, SLALM,
###############################################################################
# NXP RF ALMSL configuration settings for FW VERSION = 10.01.22
#
# A0, 0D, 03, 00, 40, 01 RF_CLIF_CFG_BOOT CLIF_ANA_NFCLD_REG
# A0, 0D, 06, 00, FF, 05, 04, 06, 00 RF_CLIF_CFG_BOOT SMU_PMU_REG (0x40024010)
# A0, 0D, 06, 00, 35, FF, 01, FF, 02 RF_CLIF_CFG_BOOT CLIF_AGC_INPUT_REG
# A0, 0D, 06, 00, 33, 07, 40, 00, 00 RF_CLIF_CFG_BOOT CLIF_AGC_CONFIG0_REG
# A0, 0D, 03, 02, 40, 00 RF_CLIF_CFG_IDLE CLIF_ANA_NFCLD_REG
# A0, 0D, 03, 04, 47, 02 RF_CLIF_CFG_INITIATOR CLIF_ANA_AGC_REG
# A0, 0D, 06, 04, 35, F4, 01, F4, 01 RF_CLIF_CFG_INITIATOR CLIF_AGC_INPUT_REG
# A0, 0D, 06, 05, 45, 80, 40, 00, 00 RF_CLIF_CFG_INITIATOR CLIF_ANA_CM_CONFIG_REG
# A0, 0D, 06, 05, 35, FF, 01, FF, 02 RF_CLIF_CFG_INITIATOR CLIF_AGC_INPUT_REG
# A0, 0D, 06, 05, 33, 07, 40, 00, 00 RF_CLIF_CFG_INITIATOR CLIF_AGC_CONFIG0_REG
# A0, 0D, 06, 06, 44, A3, 90, 03, 00 RF_CLIF_CFG_TARGET CLIF_ANA_RX_REG
# A0, 0D, 03, 06, 47, 02 RF_CLIF_CFG_TARGET CLIF_ANA_AGC_REG
# A0, 0D, 06, 06, 35, FF, 03, FF, 03 RF_CLIF_CFG_TARGET CLIF_AGC_INPUT_REG
# A0, 0D, 06, 06, 34, F7, 7F, 00, 10 RF_CLIF_CFG_TARGET CLIF_AGC_CONFIG1_REG
# A0, 0D, 06, 06, 33, 03, 40, 00, 00 RF_CLIF_CFG_TARGET CLIF_AGC_CONFIG0_REG
# A0, 0D, 06, 06, 30, C8, 00, 64, 00 RF_CLIF_CFG_TARGET CLIF_SIGPRO_ADCBCM_THRESHOLD_REG
# A0, 0D, 06, 06, 2F, AF, 05, 80, 17 RF_CLIF_CFG_TARGET CLIF_SIGPRO_ADCBCM_CONFIG_REG
# A0, 0D, 06, 06, 03, 00, 6D, 00, 20 RF_CLIF_CFG_TARGET CLIF_TRANSCEIVE_CONTROL_REG
# A0, 0D, 06, 06, 45, 80, 40, 00, 00 RF_CLIF_CFG_TARGET CLIF_ANA_CM_CONFIG_REG
# A0, 0D, 03, 06, 43, 20 RF_CLIF_CFG_TARGET CLIF_ANA_PBF_CONTROL_REG
# A0, 0D, 06, 06, 42, 00, 02, FF, FF RF_CLIF_CFG_TARGET CLIF_ANA_TX_AMPLITUDE_REG
# A0, 0D, 03, 06, 41, 40 RF_CLIF_CFG_TARGET CLIF_ANA_TX_CLK_CONTROL_REG
# A0, 0D, 03, 06, 37, 08 RF_CLIF_CFG_TARGET CLIF_TX_CONTROL_REG
# A0, 0D, 03, 06, 16, 00 RF_CLIF_CFG_TARGET CLIF_TX_UNDERSHOOT_CONFIG_REG
# A0, 0D, 03, 06, 15, 00 RF_CLIF_CFG_TARGET CLIF_TX_OVERSHOOT_CONFIG_REG
# A0, 0D, 03, 06, 17, 08 RF_CLIF_CFG_TARGET CLIF_RX_CONFIG_REG
# A0, 0D, 03, 06, 3F, 04 RF_CLIF_CFG_TARGET CLIF_TEST_CONTROL_REG
# A0, 0D, 03, 06, 80, 03 RF_CLIF_CFG_TARGET CLIF_SPARE_REG
# A0, 0D, 03, 07, 3F, 00 RF_CLIF_CFG_TARGET CLIF_TEST_CONTROL_REG
# A0, 0D, 06, 07, 35, FF, 01, FF, 02 RF_CLIF_CFG_TARGET CLIF_AGC_INPUT_REG
# A0, 0D, 03, 16, 41, 8E RF_CLIF_CFG_TECHNO_I_TXB CLIF_ANA_TX_CLK_CONTROL_REG
# A0, 0D, 06, 18, 34, 00, 00, E1, 03 RF_CLIF_CFG_TECHNO_I_RXB CLIF_AGC_CONFIG1_REG
# A0, 0D, 06, 18, 33, 0F, 83, 00, 00 RF_CLIF_CFG_TECHNO_I_RXB CLIF_AGC_CONFIG0_REG
# A0, 0D, 03, 1A, 41, 8E RF_CLIF_CFG_TECHNO_I_TXF CLIF_ANA_TX_CLK_CONTROL_REG
# A0, 0D, 06, 1C, 34, 00, 00, E1, 03 RF_CLIF_CFG_TECHNO_I_RXF_P CLIF_AGC_CONFIG1_REG
# A0, 0D, 06, 1C, 33, 0F, 83, 00, 00 RF_CLIF_CFG_TECHNO_I_RXF_P CLIF_AGC_CONFIG0_REG
# A0, 0D, 06, 20, 4A, 00, 00, 00, 00 RF_CLIF_CFG_TECHNO_I_TX15693CLIF_ANA_TX_SHAPE_CONTROL_REG
# A0, 0D, 06, 20, 42, 88, 10, FF, FF RF_CLIF_CFG_TECHNO_I_TX15693CLIF_ANA_TX_AMPLITUDE_REG
# A0, 0D, 03, 20, 41, 82 RF_CLIF_CFG_TECHNO_I_TX15693CLIF_ANA_TX_CLK_CONTROL_REG
# A0, 0D, 06, 32, 42, F8, 10, FF, FF RF_CLIF_CFG_BR_106_I_TXA CLIF_ANA_TX_AMPLITUDE_REG
# A0, 0D, 06, 32, 41, 82, 07, 00, 00 RF_CLIF_CFG_BR_106_I_TXA CLIF_ANA_TX_CLK_CONTROL_REG
# A0, 0D, 03, 32, 16, 00 RF_CLIF_CFG_BR_106_I_TXA CLIF_TX_UNDERSHOOT_CONFIG_REG
# A0, 0D, 03, 32, 15, 01 RF_CLIF_CFG_BR_106_I_TXA CLIF_TX_OVERSHOOT_CONFIG_REG
# A0, 0D, 06, 32, 4A, 33, 07, 00, 08 RF_CLIF_CFG_BR_106_I_TXA CLIF_ANA_TX_SHAPE_CONTROL_REG
# A0, 0D, 06, 34, 2D, 24, 47, 0C, 00 RF_CLIF_CFG_BR_106_I_RXA_P CLIF_SIGPRO_RM_CONFIG1_REG
# A0, 0D, 06, 34, 34, 00, 00, EC, 03 RF_CLIF_CFG_BR_106_I_RXA_P CLIF_AGC_CONFIG1_REG
# A0, 0D, 06, 34, 33, 0F, 01, 01, 70 RF_CLIF_CFG_BR_106_I_RXA_P CLIF_AGC_CONFIG0_REG
# A0, 0D, 04, 34, 44, 21, 00 RF_CLIF_CFG_BR_106_I_RXA_P CLIF_ANA_RX_REG
# A0, 0D, 06, 38, 4A, 33, 07, 00, 08 RF_CLIF_CFG_BR_212_I_TXA CLIF_ANA_TX_SHAPE_CONTROL_REG
# A0, 0D, 06, 38, 42, 68, 10, FF, FF RF_CLIF_CFG_BR_212_I_TXA CLIF_ANA_TX_AMPLITUDE_REG
# A0, 0D, 04, 3A, 44, 26, 00 RF_CLIF_CFG_BR_212_I_RXA CLIF_ANA_RX_REG
# A0, 0D, 06, 3A, 2D, 15, 47, 0D, 00 RF_CLIF_CFG_BR_212_I_RXA CLIF_SIGPRO_RM_CONFIG1_REG
# A0, 0D, 06, 3A, 34, 00, 00, E1, 03 RF_CLIF_CFG_BR_212_I_RXA CLIF_AGC_CONFIG1_REG
# A0, 0D, 06, 3A, 33, 0B, 83, 00, 00 RF_CLIF_CFG_BR_212_I_RXA CLIF_AGC_CONFIG0_REG
# A0, 0D, 06, 3C, 4A, 52, 07, 00, 1B RF_CLIF_CFG_BR_424_I_TXA CLIF_ANA_TX_SHAPE_CONTROL_REG
# A0, 0D, 06, 3C, 42, 68, 10, FF, FF RF_CLIF_CFG_BR_424_I_TXA CLIF_ANA_TX_AMPLITUDE_REG
# A0, 0D, 04, 3E, 44, 26, 00 RF_CLIF_CFG_BR_424_I_RXA CLIF_ANA_RX_REG
# A0, 0D, 06, 3E, 2D, 15, 47, 0D, 00 RF_CLIF_CFG_BR_424_I_RXA CLIF_SIGPRO_RM_CONFIG1_REG
# A0, 0D, 06, 3E, 34, 00, 00, E1, 03 RF_CLIF_CFG_BR_424_I_RXA CLIF_AGC_CONFIG1_REG
# A0, 0D, 06, 3E, 33, 0B, 83, 00, 00 RF_CLIF_CFG_BR_424_I_RXA CLIF_AGC_CONFIG0_REG
# A0, 0D, 03, 40, 41, 8E RF_CLIF_CFG_BR_848_I_TXA CLIF_ANA_TX_CLK_CONTROL_REG
# A0, 0D, 06, 40, 42, F0, 10, FF, FF RF_CLIF_CFG_BR_848_I_TXA CLIF_ANA_TX_AMPLITUDE_REG
# A0, 0D, 06, 40, 4A, 12, 07, 00, 00 RF_CLIF_CFG_BR_848_I_TXA CLIF_ANA_TX_SHAPE_CONTROL_REG
# A0, 0D, 04, 42, 44, 26, 00 RF_CLIF_CFG_BR_848_I_RXA CLIF_ANA_RX_REG
# A0, 0D, 06, 42, 2D, 15, 47, 0D, 00 RF_CLIF_CFG_BR_848_I_RXA CLIF_SIGPRO_RM_CONFIG1_REG
# A0, 0D, 06, 42, 34, 00, 00, E1, 03 RF_CLIF_CFG_BR_848_I_RXA CLIF_AGC_CONFIG1_REG
# A0, 0D, 06, 42, 33, 0B, 83, 00, 00 RF_CLIF_CFG_BR_848_I_RXA CLIF_AGC_CONFIG0_REG
# A0, 0D, 04, 46, 44, 26, 00 RF_CLIF_CFG_BR_106_I_RXB CLIF_ANA_RX_REG
# A0, 0D, 06, 46, 2D, 15, 25, 0D, 00 RF_CLIF_CFG_BR_106_I_RXB CLIF_SIGPRO_RM_CONFIG1_REG
# A0, 0D, 06, 44, 4A, 21, 07, 00, 07 RF_CLIF_CFG_BR_106_I_TXB CLIF_ANA_TX_SHAPE_CONTROL_REG
# A0, 0D, 06, 44, 42, 88, 10, FF, FF RF_CLIF_CFG_BR_106_I_TXB CLIF_ANA_TX_AMPLITUDE_REG
# A0, 0D, 04, 4A, 44, 21, 00 RF_CLIF_CFG_BR_212_I_RXB CLIF_ANA_RX_REG
# A0, 0D, 06, 4A, 2D, 15, 9D, 0D, 00 RF_CLIF_CFG_BR_212_I_RXB CLIF_SIGPRO_RM_CONFIG1_REG
# A0, 0D, 06, 48, 4A, 21, 07, 00, 07 RF_CLIF_CFG_BR_212_I_TXB CLIF_ANA_TX_SHAPE_CONTROL_REG
# A0, 0D, 06, 48, 42, 88, 10, FF, FF RF_CLIF_CFG_BR_212_I_TXB CLIF_ANA_TX_AMPLITUDE_REG
# A0, 0D, 04, 4E, 44, 26, 00 RF_CLIF_CFG_BR_424_I_RXB CLIF_ANA_RX_REG
# A0, 0D, 06, 4E, 2D, 15, 25, 0D, 00 RF_CLIF_CFG_BR_424_I_RXB CLIF_SIGPRO_RM_CONFIG1_REG
# A0, 0D, 06, 4C, 4A, 21, 07, 00, 07 RF_CLIF_CFG_BR_424_I_TXB CLIF_ANA_TX_SHAPE_CONTROL_REG
# A0, 0D, 06, 4C, 42, 88, 10, FF, FF RF_CLIF_CFG_BR_424_I_TXB CLIF_ANA_TX_AMPLITUDE_REG
# A0, 0D, 04, 52, 44, 26, 00 RF_CLIF_CFG_BR_848_I_RXB CLIF_ANA_RX_REG
# A0, 0D, 06, 52, 2D, 15, 25, 0D, 00 RF_CLIF_CFG_BR_848_I_RXB CLIF_SIGPRO_RM_CONFIG1_REG
# A0, 0D, 06, 50, 42, 90, 10, FF, FF RF_CLIF_CFG_BR_848_I_TXB CLIF_ANA_TX_AMPLITUDE_REG
# A0, 0D, 06, 50, 4A, 21, 07, 00, 07 RF_CLIF_CFG_BR_848_I_TXB CLIF_ANA_TX_SHAPE_CONTROL_REG
# A0, 0D, 06, 56, 2D, 05, 9E, 0C, 00 RF_CLIF_CFG_BR_212_I_RXF_P CLIF_SIGPRO_RM_CONFIG1_REG
# A0, 0D, 04, 56, 44, 22, 00 RF_CLIF_CFG_BR_212_I_RXF_P CLIF_ANA_RX_REG
# A0, 0D, 06, 5C, 2D, 05, 9E, 0C, 00 RF_CLIF_CFG_BR_424_I_RXF_P CLIF_SIGPRO_RM_CONFIG1_REG
# A0, 0D, 04, 5C, 44, 26, 00 RF_CLIF_CFG_BR_424_I_RXF_P CLIF_ANA_RX_REG
# A0, 0D, 06, 54, 42, 88, 10, FF, FF RF_CLIF_CFG_BR_212_I_TXF CLIF_ANA_TX_AMPLITUDE_REG
# A0, 0D, 06, 5A, 42, 90, 10, FF, FF RF_CLIF_CFG_BR_424_I_TXF CLIF_ANA_TX_AMPLITUDE_REG
# A0, 0D, 06, 98, 2F, CF, 05, 80, 17 RF_CLIF_CFG_GTM_B CLIF_SIGPRO_ADCBCM_CONFIG_REG
# A0, 0D, 06, 98, 42, 00, 02, FF, FF RF_CLIF_CFG_GTM_B CLIF_ANA_TX_AMPLITUDE_REG
# A0, 0D, 06, 9A, 42, 00, 02, FF, FF RF_CLIF_CFG_GTM_FELICA CLIF_ANA_TX_AMPLITUDE_REG
# A0, 0D, 06, 30, 44, 12, 90, 03, 00 RF_CLIF_CFG_TECHNO_T_RXF CLIF_ANA_RX_REG
# A0, 0D, 06, 6C, 44, A3, 90, 03, 00 RF_CLIF_CFG_BR_106_T_RXA CLIF_ANA_RX_REG
# A0, 0D, 03, 70, 2E, 40 RF_CLIF_CFG_BR_212_T_RXA CLIF_SIGPRO_CM_CONFIG_REG
# A0, 0D, 03, 70, 45, 30 RF_CLIF_CFG_BR_212_T_RXA CLIF_ANA_CM_CONFIG_REG
# A0, 0D, 06, 70, 44, A3, 90, 03, 00 RF_CLIF_CFG_BR_212_T_RXA CLIF_ANA_RX_REG
# A0, 0D, 06, 74, 2F, 6F, 05, 80, 12 RF_CLIF_CFG_BR_424_T_RXA CLIF_SIGPRO_ADCBCM_CONFIG_REG
# A0, 0D, 06, 74, 30, D5, 00, 40, 00 RF_CLIF_CFG_BR_424_T_RXA CLIF_SIGPRO_ADCBCM_THRESHOLD_REG
# A0, 0D, 06, 74, 44, A3, 90, 03, 00 RF_CLIF_CFG_BR_424_T_RXA CLIF_ANA_RX_REG
# A0, 0D, 06, 78, 2F, 3F, 07, 80, C1 RF_CLIF_CFG_BR_848_T_RXA CLIF_SIGPRO_ADCBCM_CONFIG_REG
# A0, 0D, 06, 78, 30, 50, 00, 10, 00 RF_CLIF_CFG_BR_848_T_RXA CLIF_SIGPRO_ADCBCM_THRESHOLD_REG
# A0, 0D, 06, 78, 44, A3, 90, 03, 00 RF_CLIF_CFG_BR_848_T_RXA CLIF_ANA_RX_REG
# A0, 0D, 06, 7C, 2F, CF, 05, 80, 17 RF_CLIF_CFG_BR_106_T_RXB CLIF_SIGPRO_ADCBCM_CONFIG_REG
# A0, 0D, 06, 7C, 30, C8, 00, 64, 00 RF_CLIF_CFG_BR_106_T_RXB CLIF_SIGPRO_ADCBCM_THRESHOLD_REG
# A0, 0D, 06, 7C, 44, A3, 90, 03, 00 RF_CLIF_CFG_BR_106_T_RXB CLIF_ANA_RX_REG
# A0, 0D, 06, 80, 2F, CF, 05, 80, 17 RF_CLIF_CFG_BR_212_T_RXB CLIF_SIGPRO_ADCBCM_CONFIG_REG
# A0, 0D, 06, 80, 30, C8, 00, 64, 00 RF_CLIF_CFG_BR_212_T_RXB CLIF_SIGPRO_ADCBCM_THRESHOLD_REG
# A0, 0D, 06, 80, 44, A3, 90, 03, 00 RF_CLIF_CFG_BR_212_T_RXB CLIF_ANA_RX_REG
# A0, 0D, 06, 84, 2F, CF, 05, 80, 17 RF_CLIF_CFG_BR_424_T_RXB CLIF_SIGPRO_ADCBCM_CONFIG_REG
# A0, 0D, 06, 84, 30, C8, 00, 64, 00 RF_CLIF_CFG_BR_424_T_RXB CLIF_SIGPRO_ADCBCM_THRESHOLD_REG
# A0, 0D, 06, 84, 44, A3, 90, 03, 00 RF_CLIF_CFG_BR_424_T_RXB CLIF_ANA_RX_REG
# A0, 0D, 06, 88, 2F, B1, 05, 80, 17 RF_CLIF_CFG_BR_848_T_RXB CLIF_SIGPRO_ADCBCM_CONFIG_REG
# A0, 0D, 06, 88, 30, A8, 00, 64, 00 RF_CLIF_CFG_BR_848_T_RXB CLIF_SIGPRO_ADCBCM_THRESHOLD_REG
# A0, 0D, 06, 88, 44, A3, 90, 03, 00 RF_CLIF_CFG_BR_848_T_RXB CLIF_ANA_RX_REG
# A0, 0D, 06, 8E, 44, 12, 90, 03, 00 RF_CLIF_CFG_BR_212_T_RXF CLIF_ANA_RX_REG
# A0, 0D, 06, 94, 44, 12, 90, 03, 00 RF_CLIF_CFG_BR_424_T_RXF CLIF_ANA_RX_REG
# A0, 0D, 06, 10, 35, FF, 01, FF, 02 RF_CLIF_CFG_T_ACTIVE CLIF_AGC_INPUT_REG
# A0, 0D, 06, 10, 34, F7, 7F, 00, 00 RF_CLIF_CFG_T_ACTIVE CLIF_AGC_CONFIG1_REG
# A0, 0D, 06, 6A, 42, F8, 10, FF, FF RF_CLIF_CFG_BR_106_T_TXA_A CLIF_ANA_TX_AMPLITUDE_REG
# A0, 0D, 06, 8C, 42, 88, 10, FF, FF RF_CLIF_CFG_BR_212_T_TXF_A CLIF_ANA_TX_AMPLITUDE_REG
# A0, 0D, 06, 92, 42, 90, 10, FF, FF RF_CLIF_CFG_BR_424_T_TXF_A CLIF_ANA_TX_AMPLITUDE_REG
# A0, 0D, 03, 24, 41, 40 RF_CLIF_CFG_TECHNO_T_TXA_P CLIF_ANA_TX_CLK_CONTROL_REG
# A0, 0D, 06, 24, 42, 00, 02, FF, FF RF_CLIF_CFG_TECHNO_T_TXA_P CLIF_ANA_TX_AMPLITUDE_REG
# A0, 0D, 03, 28, 41, 40 RF_CLIF_CFG_TECHNO_T_TXB CLIF_ANA_TX_CLK_CONTROL_REG
# A0, 0D, 03, 8A, 41, 40 RF_CLIF_CFG_BR_212_T_TXF_P CLIF_ANA_TX_CLK_CONTROL_REG
# A0, 0D, 03, 90, 41, 40 RF_CLIF_CFG_BR_424_T_TXF_P CLIF_ANA_TX_CLK_CONTROL_REG
# A0, 0D, 03, 08, 40, 10 RF_CLIF_CFG_I_PASSIVE CLIF_ANA_NFCLD_REG
# A0, 0D, 06, 08, 45, C0, 82, 00, 00 RF_CLIF_CFG_I_PASSIVE CLIF_ANA_CM_CONFIG_REG
# A0, 0D, 06, 0A, 45, 80, 40, 00, 00 RF_CLIF_CFG_I_ACTIVE CLIF_ANA_CM_CONFIG_REG
# A0, 0D, 06, 0A, 30, C8, 00, 64, 00 RF_CLIF_CFG_I_ACTIVE CLIF_SIGPRO_ADCBCM_THRESHOLD_REG
# A0, 0D, 06, 0A, 2F, AF, 05, 80, 17 RF_CLIF_CFG_I_ACTIVE CLIF_SIGPRO_ADCBCM_CONFIG_REG
# A0, 0D, 06, 0A, 34, 26, 65, E5, 03 RF_CLIF_CFG_I_ACTIVE CLIF_AGC_CONFIG1_REG
# A0, 0D, 06, 0A, 33, 0F, 01, 00, 70 RF_CLIF_CFG_I_ACTIVE CLIF_AGC_CONFIG0_REG
# A0, 0D, 03, 0A, 40, 00 RF_CLIF_CFG_I_ACTIVE CLIF_ANA_NFCLD_REG
#
# *** ALMSL FW VERSION = 10.01.22 ***
NXP_RF_CONF_BLK_1={
20, 02, F7, 20,
A0, 0D, 03, 00, 40, 03,
A0, 0D, 06, 00, FF, 05, 04, 06, 00,
A0, 0D, 06, 00, 35, FF, 01, FF, 02,
A0, 0D, 06, 00, 33, 07, 40, 00, 00,
A0, 0D, 03, 02, 40, 00,
A0, 0D, 03, 04, 47, 02,
A0, 0D, 06, 04, 35, F4, 01, F4, 01,
A0, 0D, 06, 05, 45, 80, 40, 00, 00,
A0, 0D, 06, 05, 35, FF, 01, FF, 02,
A0, 0D, 06, 05, 33, 07, 40, 00, 00,
A0, 0D, 06, 06, 44, A3, 90, 03, 00,
A0, 0D, 03, 06, 47, 02,
A0, 0D, 06, 06, 35, FF, 03, FF, 03,
A0, 0D, 06, 06, 34, F7, 7F, 00, 10,
A0, 0D, 06, 06, 33, 03, 40, 00, 00,
A0, 0D, 06, 06, 30, B0, 00, 10, 00,
A0, 0D, 06, 06, 2F, AF, 05, 80, 17,
A0, 0D, 06, 06, 03, 00, 72, 00, 20,
A0, 0D, 06, 06, 45, 80, 40, 00, 00,
A0, 0D, 03, 06, 43, 20,
A0, 0D, 06, 06, 42, 00, 00, F1, F1,
A0, 0D, 03, 06, 41, 40,
A0, 0D, 03, 06, 37, 08,
A0, 0D, 03, 06, 16, 00,
A0, 0D, 03, 06, 15, 00,
A0, 0D, 03, 06, 17, 08,
A0, 0D, 03, 06, 3F, 04,
A0, 0D, 03, 06, 80, 03,
A0, 0D, 03, 07, 3F, 00,
A0, 0D, 06, 07, 35, FF, 01, FF, 02,
A0, 0D, 03, 16, 41, 8E,
A0, 0D, 06, 18, 34, 00, 00, E1, 03
}
NXP_RF_CONF_BLK_2={
20, 02, FA, 1E,
A0, 0D, 06, 18, 33, 0F, 83, 00, 00,
A0, 0D, 03, 1A, 41, 8E,
A0, 0D, 06, 1C, 34, 00, 00, E1, 03,
A0, 0D, 06, 1C, 33, 0F, 83, 00, 00,
A0, 0D, 06, 20, 4A, 00, 00, 00, 00,
A0, 0D, 06, 20, 42, 88, 10, FF, FF,
A0, 0D, 03, 20, 41, 82,
A0, 0D, 06, 32, 42, F8, 10, FF, FF,
A0, 0D, 06, 32, 41, 82, 07, 00, 00,
A0, 0D, 03, 32, 16, 00,
A0, 0D, 03, 32, 15, 01,
A0, 0D, 06, 32, 4A, 33, 07, 00, 08,
A0, 0D, 06, 34, 2D, 24, 27, 0C, 00,
A0, 0D, 06, 34, 34, 00, 00, EC, 03,
A0, 0D, 06, 34, 33, 0F, 01, 01, 70,
A0, 0D, 04, 34, 44, 21, 00,
A0, 0D, 06, 38, 4A, 33, 07, 00, 08,
A0, 0D, 06, 38, 42, 68, 10, FF, FF,
A0, 0D, 04, 3A, 44, 26, 00,
A0, 0D, 06, 3A, 2D, 15, 47, 0D, 00,
A0, 0D, 06, 3A, 34, 00, 00, E1, 03,
A0, 0D, 06, 3A, 33, 0B, 83, 00, 00,
A0, 0D, 06, 3C, 4A, 52, 07, 00, 1B,
A0, 0D, 06, 3C, 42, 68, 10, FF, FF,
A0, 0D, 04, 3E, 44, 26, 00,
A0, 0D, 06, 3E, 2D, 15, 47, 0D, 00,
A0, 0D, 06, 3E, 34, 00, 00, E1, 03,
A0, 0D, 06, 3E, 33, 0B, 83, 00, 00,
A0, 0D, 03, 40, 41, 8E,
A0, 0D, 06, 40, 42, F0, 10, FF, FF
}
NXP_RF_CONF_BLK_3={
20, 02, F8, 1D,
A0, 0D, 06, 40, 4A, 12, 07, 00, 00,
A0, 0D, 04, 42, 44, 26, 00,
A0, 0D, 06, 42, 2D, 15, 47, 0D, 00,
A0, 0D, 06, 42, 34, 00, 00, E1, 03,
A0, 0D, 06, 42, 33, 0B, 83, 00, 00,
A0, 0D, 04, 46, 44, 26, 00,
A0, 0D, 06, 46, 2D, 15, 25, 0D, 00,
A0, 0D, 06, 44, 4A, 21, 07, 00, 07,
A0, 0D, 06, 44, 42, 88, 10, FF, FF,
A0, 0D, 04, 4A, 44, 21, 00,
A0, 0D, 06, 4A, 2D, 15, 9D, 0D, 00,
A0, 0D, 06, 48, 4A, 21, 07, 00, 07,
A0, 0D, 06, 48, 42, 88, 10, FF, FF,
A0, 0D, 04, 4E, 44, 26, 00,
A0, 0D, 06, 4E, 2D, 15, 25, 0D, 00,
A0, 0D, 06, 4C, 4A, 21, 07, 00, 07,
A0, 0D, 06, 4C, 42, 88, 10, FF, FF,
A0, 0D, 04, 52, 44, 26, 00,
A0, 0D, 06, 52, 2D, 15, 25, 0D, 00,
A0, 0D, 06, 50, 42, 90, 10, FF, FF,
A0, 0D, 06, 50, 4A, 21, 07, 00, 07,
A0, 0D, 06, 56, 2D, 05, 9E, 0C, 00,
A0, 0D, 04, 56, 44, 22, 00,
A0, 0D, 06, 5C, 2D, 05, 9E, 0C, 00,
A0, 0D, 04, 5C, 44, 26, 00,
A0, 0D, 06, 54, 42, 88, 10, FF, FF,
A0, 0D, 06, 5A, 42, 90, 10, FF, FF,
A0, 0D, 06, 98, 2F, CF, 05, 80, 17,
A0, 0D, 06, 98, 42, 00, 00, F1, F1
}
NXP_RF_CONF_BLK_4={
20, 02, F7, 1C,
A0, 0D, 06, 9A, 42, 00, 02, F1, F1,
A0, 0D, 06, 30, 44, 12, 90, 03, 00,
A0, 0D, 06, 6C, 44, A3, 90, 03, 00,
A0, 0D, 03, 70, 2E, 40,
A0, 0D, 03, 70, 45, 30,
A0, 0D, 06, 70, 44, A3, 90, 03, 00,
A0, 0D, 06, 74, 2F, 6F, 05, 80, 12,
A0, 0D, 06, 74, 30, D5, 00, 40, 00,
A0, 0D, 06, 74, 44, A3, 90, 03, 00,
A0, 0D, 06, 78, 2F, 3F, 07, 80, C1,
A0, 0D, 06, 78, 30, 50, 00, 10, 00,
A0, 0D, 06, 78, 44, A3, 90, 03, 00,
A0, 0D, 06, 7C, 2F, CF, 05, 80, 17,
A0, 0D, 06, 7C, 30, C8, 00, 64, 00,
A0, 0D, 06, 7C, 44, A3, 90, 03, 00,
A0, 0D, 06, 80, 2F, CF, 05, 80, 17,
A0, 0D, 06, 80, 30, C8, 00, 64, 00,
A0, 0D, 06, 80, 44, A3, 90, 03, 00,
A0, 0D, 06, 84, 2F, CF, 05, 80, 17,
A0, 0D, 06, 84, 30, C8, 00, 64, 00,
A0, 0D, 06, 84, 44, A3, 90, 03, 00,
A0, 0D, 06, 88, 2F, B1, 05, 80, 17,
A0, 0D, 06, 88, 30, A8, 00, 64, 00,
A0, 0D, 06, 88, 44, A3, 90, 03, 00,
A0, 0D, 06, 8E, 44, 12, 90, 03, 00,
A0, 0D, 06, 94, 44, 12, 90, 03, 00,
A0, 0D, 06, 10, 35, FF, 01, FF, 02,
A0, 0D, 06, 10, 34, F7, 7F, 00, 00
}
NXP_RF_CONF_BLK_5={
20, 02, 7F, 10,
A0, 0D, 06, 6A, 42, F8, 10, FF, FF,
A0, 0D, 06, 8C, 42, 88, 10, FF, FF,
A0, 0D, 06, 92, 42, 90, 10, FF, FF,
A0, 0D, 03, 24, 41, 40,
A0, 0D, 06, 24, 42, 00, 00, F1, F1,
A0, 0D, 03, 28, 41, 40,
A0, 0D, 03, 8A, 41, 40,
A0, 0D, 03, 90, 41, 40,
A0, 0D, 03, 08, 40, 10,
A0, 0D, 06, 08, 45, C0, 82, 00, 00,
A0, 0D, 06, 0A, 45, 80, 40, 00, 00,
A0, 0D, 06, 0A, 30, C8, 00, 64, 00,
A0, 0D, 06, 0A, 2F, AF, 05, 80, 17,
A0, 0D, 06, 0A, 34, 26, 65, E5, 03,
A0, 0D, 06, 0A, 33, 0F, 01, 00, 70,
A0, 0D, 03, 0A, 40, 00
}
NXP_RF_CONF_BLK_6={
}
###############################################################################
# NXP RF configuration ALM/PLM settings
# This section needs to be updated with the correct values based on the platform
#NXP_RF_CONF_BLK_1={
#}
###############################################################################
# NXP RF configuration ALM/PLM settings
# This section needs to be updated with the correct values based on the platform
#NXP_RF_CONF_BLK_2={
#}
###############################################################################
# NXP RF configuration ALM/PLM settings
# This section needs to be updated with the correct values based on the platform
#NXP_RF_CONF_BLK_3={
#}
###############################################################################
# NXP RF configuration ALM/PLM settings
# This section needs to be updated with the correct values based on the platform
#NXP_RF_CONF_BLK_4={
#}
###############################################################################
# NXP RF configuration ALM/PLM settings
# This section needs to be updated with the correct values based on the platform
#NXP_RF_CONF_BLK_5={
#}
###############################################################################
# NXP RF configuration ALM/PLM settings
# This section needs to be updated with the correct values based on the platform
#NXP_RF_CONF_BLK_6={
#}
###############################################################################
# Core configuration extensions
# It includes
# Wired mode settings A0ED, A0EE
# Tag Detector A040, A041, A043
# Low Power mode A007
# Clock settings A002, A003
# PbF settings A008
NXP_CORE_CONF_EXTN={20, 02, 66, 11,
A0, 02, 01, 01,
A0, 09, 02, E8, 03,
A0, 12, 01, 02,
A0, 40, 01, 01,
A0, 41, 01, 04,
A0, 42, 01, 0F,
A0, 43, 01, 03,
A0, 5E, 01, 01,
A0, 61, 01, 53,
A0, 96, 01, 01,
A0, DD, 01, 2D,
A0, EC, 01, 01,
A0, ED, 01, 00,
A0, F2, 01, 01,
A0, 07, 01, 03,
A0, 1D, 11, 57, 33, 14, 17, 00, AA, 85, 00, 80, 55, 2A, 04, 00, 63, 00, 00, 00,
A0, 1E, 11, 1F, 13, 14, 14, 00, 6F, 97, 00, 00, 00, 10, 04, 00, 63, 02, 00, 00
}
###############################################################################
# Core configuration rf field filter settings to enable set to 01 to disable set to 00 last bit
NXP_CORE_RF_FIELD={ 20, 02, 05, 01, A0, 62, 01, 01
}
###############################################################################
# To enable i2c fragmentation set i2c fragmentation enable 0x01 to disable set
# to 0x00
NXP_I2C_FRAGMENTATION_ENABLED=0x00
###############################################################################
# Core configuration settings
NXP_CORE_CONF={ 20, 02, 2A, 0E,
28, 01, 00,
21, 01, 00,
30, 01, 08,
31, 01, 03,
32, 01, 60,
38, 01, 01,
33, 00,
54, 01, 06,
50, 01, 02,
5B, 01, 00,
80, 01, 01,
81, 01, 01,
82, 01, 0E,
18, 01, 01
}
###############################################################################
#Enable SWP full power mode when phone is power off
NXP_SWP_FULL_PWR_ON=0x00
###############################################################################
#Set the default Felica T3T System Code OffHost route Location :
# host 0x00
# eSE 0x01
# UICC 0x02
# UICC2 0x03
DEFAULT_SYS_CODE_ROUTE=0x00
###############################################################################
#Set the default Felica T3T System Code :
DEFAULT_SYS_CODE={FE,FF}
###############################################################################
# AID Matching platform options
# AID_MATCHING_L 0x01
# AID_MATCHING_K 0x02
AID_MATCHING_PLATFORM=0x01
###############################################################################
#CHINA_TIANJIN_RF_SETTING
#Enable 0x01
#Disable 0x00
NXP_CHINA_TIANJIN_RF_ENABLED=0x01
###############################################################################
#SWP_SWITCH_TIMEOUT_SETTING
# Allowed range of swp timeout setting is 0x00 to 0x3C [0 - 60].
# Timeout in milliseconds, for example
# No Timeout 0x00
# 10 millisecond timeout 0x0A
NXP_SWP_SWITCH_TIMEOUT=0x0A
##############################################################################
# Extended APDU length for ISO_DEP
ISO_DEP_MAX_TRANSCEIVE=0xFEFF
###############################################################################
# Vendor Specific Proprietary Protocol & Discovery Configuration
# Set to 0xFF if unsupported
# byte[0] NCI_PROTOCOL_18092_ACTIVE
# byte[1] NCI_PROTOCOL_B_PRIME
# byte[2] NCI_PROTOCOL_DUAL
# byte[3] NCI_PROTOCOL_15693
# byte[4] NCI_PROTOCOL_KOVIO
# byte[5] NCI_PROTOCOL_MIFARE
# byte[6] NCI_DISCOVERY_TYPE_POLL_KOVIO
# byte[7] NCI_DISCOVERY_TYPE_POLL_B_PRIME
# byte[8] NCI_DISCOVERY_TYPE_LISTEN_B_PRIME
NFA_PROPRIETARY_CFG={05, FF, FF, 06, 81, 80, 70, FF, FF}
###############################################################################
# Choose the presence-check algorithm for type-4 tag. If not defined, the default value is 1.
# 0 NFA_RW_PRES_CHK_DEFAULT; Let stack selects an algorithm
# 1 NFA_RW_PRES_CHK_I_BLOCK; ISO-DEP protocol's empty I-block
# 2 NFA_RW_PRES_CHK_ISO_DEP_NAK; Type - 4 tag protocol iso-dep nak presence check
# command is sent waiting for rsp and ntf.
PRESENCE_CHECK_ALGORITHM=2
###############################################################################
DEFAULT_OFFHOST_ROUTE=0x02
OFF_HOST_SIM_PIPE_ID=0x0A
================================================
FILE: overlay/frameworks/base/core/res/res/values/config.xml
================================================
true"usb\\d""rndis\\d"192.168.42.2192.168.42.254192.168.43.2192.168.43.254192.168.44.2192.168.44.254192.168.45.2192.168.45.254192.168.46.2192.168.46.254192.168.47.2192.168.47.254192.168.48.2192.168.48.254192.168.49.2192.168.49.254192.168.50.2192.168.50.254192.168.51.2192.168.51.254"wifi,1,1,1,-1,true""mobile,0,0,0,-1,true""mobile_mms,2,0,4,60000,true""mobile_supl,3,0,2,60000,true""mobile_dun,4,0,2,60000,true""mobile_hipri,5,0,3,60000,true""mobile_fota,10,0,2,60000,true""mobile_ims,11,0,2,60000,true""mobile_cbs,12,0,2,60000,true""bluetooth,7,7,2,-1,true""mobile_emergency,15,0,5,-1,true""1,1""0,1""7,1""bnep\\d""bt-pan"0157truetruetruetruetruetruetruetruetrue2albba11https://storage.googleapis.com/essential-static/2albba11.xmltruefalsetruetrue"lte:2097152,4194304,8388608,262144,524288,1048576""lte_ca:2097152,4194304,8388608,4096,1048576,2097152""umts:4094,87380,1220608,4096,16384,1220608""hspa:4094,87380,1220608,4096,16384,1220608""hsupa:4094,87380,1220608,4096,16384,1220608""hsdpa:4094,87380,1220608,4096,16384,1220608""hspap:4094,87380,1220608,4096,16384,1220608""edge:4093,26280,35040,4096,16384,35040""gprs:4092,8760,11680,4096,8760,11680""evdo:4094,87380,524288,4096,16384,262144"4truefalseseemp.service"wlan0""softap.*"truefalsefalsecom.qualcomm.locationcom.qualcomm.locationcom.android.systemui/com.android.systemui.doze.DozeServicetrue17truetruefalsefalsetruetruetruetrue0726false05262620004000200%123816501000350050001020303560100140200260300020304463719010513023625503068105154173218244301500600600true#ff0000ff6901"/system/framework/arm64/boot-framework.oat""/system/framework/boot-framework.vdex""/system/framework/oat/arm64/services.odex""/system/framework/oat/arm64/services.vdex""/system/framework/arm64/boot.oat""/system/framework/boot.vdex""/system/framework/arm64/boot-core-libart.oat""/system/framework/boot-core-libart.vdex"true3300truetruetrue8truecom.essential.retail/.DemoPlayertruecom.android.launcher3trueorg.codeaurora.imstrue"hwepoem:mtp:diag,serial_cdev,rmnet,adb""hwepoem:mtp,adb:diag,serial_cdev,rmnet,adb""hwepoem:ptp:diag,serial_cdev,rmnet,adb""hwepoem:ptp,adb:diag,serial_cdev,rmnet,adb""hwepoem:rndis:diag,serial_cdev,rmnet,adb""hwepoem:rndis,adb:diag,serial_cdev,rmnet,adb""hwepoem:adb:diag,serial_cdev,rmnet,adb"
com.android.wallpaperpicker
false
M -70, 0
L -70, 137
L 70, 137
L 70, 0
Z
falsecom.android.launcher3/com.android.quickstep.RecentsActivitytruetrue33truetrue1"M50 0A50 50,0,1,1,50 100A50 50,0,1,1,50 0"true
================================================
FILE: overlay/frameworks/base/core/res/res/values/dimens.xml
================================================
144px28dp144px16px
================================================
FILE: overlay/frameworks/base/core/res/res/values/strings.xml
================================================
PH-1
================================================
FILE: overlay/frameworks/base/core/res/res/values-mcc234-mnc15/config.xml
================================================
1234567891011121312345678910111213
================================================
FILE: overlay/frameworks/base/core/res/res/values-mcc234-mnc15-en-rGB/config.xml
================================================
1234567891011121312345678910111213
================================================
FILE: overlay/frameworks/base/core/res/res/values-mcc234-mnc15-en-rIN/config.xml
================================================
1234567891011121312345678910111213
================================================
FILE: overlay/frameworks/base/core/res/res/values-mcc262-mnc02/config.xml
================================================
1234567891011121312345678910111213
================================================
FILE: overlay/frameworks/base/core/res/res/values-mcc262-mnc02-en-rGB/config.xml
================================================
1234567891011121312345678910111213
================================================
FILE: overlay/frameworks/base/core/res/res/values-mcc262-mnc02-en-rIN/config.xml
================================================
1234567891011121312345678910111213
================================================
FILE: overlay/frameworks/base/core/res/res/values-mcc262-mnc04/config.xml
================================================
1234567891011121312345678910111213
================================================
FILE: overlay/frameworks/base/core/res/res/values-mcc262-mnc04-en-rGB/config.xml
================================================
1234567891011121312345678910111213
================================================
FILE: overlay/frameworks/base/core/res/res/values-mcc262-mnc04-en-rIN/config.xml
================================================
1234567891011121312345678910111213
================================================
FILE: overlay/frameworks/base/core/res/res/values-mcc262-mnc09/config.xml
================================================
1234567891011121312345678910111213
================================================
FILE: overlay/frameworks/base/core/res/res/values-mcc262-mnc09-en-rGB/config.xml
================================================
1234567891011121312345678910111213
================================================
FILE: overlay/frameworks/base/core/res/res/values-mcc262-mnc09-en-rIN/config.xml
================================================
1234567891011121312345678910111213
================================================
FILE: overlay/frameworks/base/core/res/res/values-mcc310-mnc004/config.xml
================================================
6estph1http://uaprof.vtext.com/essential/estph1/estph1.xml
================================================
FILE: overlay/frameworks/base/core/res/res/values-mcc310-mnc120/config.xml
================================================
62ALBB-A11 SPRINTtrue174124125126157158159193194195196197198228229230231232233234235
================================================
FILE: overlay/frameworks/base/core/res/res/values-mcc310-mnc260/config.xml
================================================
1479
================================================
FILE: overlay/frameworks/base/core/res/res/values-mcc310-mnc410/config.xml
================================================
3
================================================
FILE: overlay/frameworks/base/core/res/res/values-mcc311-mnc480/config.xml
================================================
true6estph1http://uaprof.vtext.com/essential/estph1/estph1.xml
================================================
FILE: overlay/frameworks/base/core/res/res/values-mcc311-mnc490/config.xml
================================================
62ALBB-A11 VIRGINtrue174124125126157158159193194195196197198228229230231232233234235
================================================
FILE: overlay/frameworks/base/core/res/res/values-mcc311-mnc870/config.xml
================================================
62ALBB-A11 BOOSTtrue174124125126157158159193194195196197198228229230231232233234235
================================================
FILE: overlay/frameworks/base/core/res/res/values-mcc312-mnc530/config.xml
================================================
62ALBB-A11 SPRPREtrue174124125126157158159193194195196197198228229230231232233234235
================================================
FILE: overlay/frameworks/base/core/res/res/values-mcc440-mnc20/config.xml
================================================
SUPL_HOST=supl.google.comSUPL_PORT=7275NTP_SERVER=time.izatcloud.netSUPL_VER=0x20000SUPL_MODE=1XTRA_VERSION_CHECK=0ERR_ESTIMATE=0XTRA_CA_PATH=/system/etc/security/cacertsDEBUG_LEVEL=2INTERMEDIATE_POS=0SUPL_ES=1USE_EMERGENCY_PDN_FOR_EMERGENCY_SUPL=0CAPABILITIES=0x37LPP_PROFILE=0NMEA_PROVIDER=0SGLTE_TARGET=0A_GLONASS_POS_PROTOCOL_SELECT=0x2LPPE_CP_TECHNOLOGY=0LPPE_UP_TECHNOLOGY=0AGPS_CONFIG_INJECT=1AP_TIMESTAMP_UNCERTAINTY=10DR_SYNC_ENABLED=0PPS_DEVICENAME=/dev/pps0AP_CLOCK_PPM=100MISSING_PULSE_TIME_DELTA=900PROPAGATION_TIME_UNCERTAINTY=1
================================================
FILE: overlay/frameworks/base/core/res/res/values-mcc460-mnc03/config.xml
================================================
6
================================================
FILE: overlay/frameworks/base/core/res/res/values-mcc460-mnc11/config.xml
================================================
6
================================================
FILE: overlay/frameworks/base/core/res/res/xml/power_profile.xml
================================================
060.0248.261.460.48220024200588452009032.5443000003648004416005184005952006720007488008256008832009600001036800109440011712001248000132480014016001478400155520016704001747200182400019008003000003456004224004992005760006528007296008064009024009792001056000113280011904001267200134400014208001497600157440016512001728000180480018816001958400203520021120002208000226560023232002342400236160024576004.73601023.425.327.128.630.532.834.737.240.042.945.448.852.857.661.465.170.079.987.896.4103.01548.855.962.769.976.382.889.897.3105.1112.2118.6129.9141.9154.9171.9187.6207.0228.2248.7263.6304.4334.9371.4411.2474.3496.1511.5524.3536.1542.430400.00020.0020.020.22
================================================
FILE: overlay/frameworks/base/packages/Keyguard/res/values/config.xml
================================================
false
================================================
FILE: overlay/frameworks/base/packages/SettingsLib/res/values/arrays.xml
================================================
0-1
================================================
FILE: overlay/frameworks/base/packages/SettingsProvider/res/values/defaults.xml
================================================
true8230000true
================================================
FILE: overlay/frameworks/base/packages/SystemUI/res/values/config.xml
================================================
405840405854405855405856405857405858405859405860405861405862405863405864405865405866405867405868405869405870405871405872405873405874-128-120-115-110-105-44truefalse
wifi,cell,battery,dnd,flashlight,rotation,bt,airplane
truefalsefalsefalse
================================================
FILE: overlay/frameworks/base/packages/SystemUI/res/values/dimens.xml
================================================
438dp
================================================
FILE: overlay/frameworks/base/packages/SystemUI/res/values-mcc208-mnc01/config.xml
================================================
truetruetrue
================================================
FILE: overlay/frameworks/base/packages/SystemUI/res/values-mcc302-mnc220/config.xml
================================================
truefalsetrue
================================================
FILE: overlay/frameworks/base/packages/SystemUI/res/values-mcc310-mnc120/config.xml
================================================
wifi,cell,wfc,battery,dnd,flashlight,rotation,bt,airplane
wifi,cell,battery,dnd,flashlight,rotation,bt,airplane,wfc,location,hotspot,inversion,saver,work,cast,night
true
================================================
FILE: overlay/frameworks/base/packages/SystemUI/res/values-mcc311-mnc490/config.xml
================================================
wifi,cell,wfc,battery,dnd,flashlight,rotation,bt,airplane
wifi,cell,battery,dnd,flashlight,rotation,bt,airplane,wfc,location,hotspot,inversion,saver,work,cast,night
true
================================================
FILE: overlay/frameworks/base/packages/SystemUI/res/values-mcc311-mnc870/config.xml
================================================
wifi,cell,wfc,battery,dnd,flashlight,rotation,bt,airplane
wifi,cell,battery,dnd,flashlight,rotation,bt,airplane,wfc,location,hotspot,inversion,saver,work,cast,night
true
================================================
FILE: overlay/frameworks/base/packages/SystemUI/res/values-mcc312-mnc530/config.xml
================================================
wifi,cell,wfc,battery,dnd,flashlight,rotation,bt,airplane
wifi,cell,battery,dnd,flashlight,rotation,bt,airplane,wfc,location,hotspot,inversion,saver,work,cast,night
true
================================================
FILE: overlay/frameworks/base/packages/SystemUI/res/values-mcc440-mnc20/config.xml
================================================
falsetruetruetrue
================================================
FILE: overlay/packages/apps/Bluetooth/res/values/config.xml
================================================
falsetruefalsetrue
================================================
FILE: overlay/packages/apps/CellBroadcastReceiver/res/values/config.xml
================================================
truetruetrue
================================================
FILE: overlay/packages/apps/Dialer/InCallUI/res/values/config.xml
================================================
6
================================================
FILE: overlay/packages/apps/Phone/res/values/config.xml
================================================
truetruetruetrue1true
================================================
FILE: overlay/packages/apps/Settings/res/values/arrays.xml
================================================
@string/preferred_network_mode_td_scdma_lte_gsm_wcdma_cdma_evdo_choice @string/preferred_network_mode_cdma_lte_evdo_choice@string/preferred_network_mode_cdma_evdo_auto_choice@string/preferred_network_mode_gsm_wcdma_auto_choice"22""8""4""3"
================================================
FILE: overlay/packages/apps/Settings/res/values/bools.xml
================================================
falsetrue
================================================
FILE: overlay/packages/apps/Settings/res/values/config.xml
================================================
truefalse
================================================
FILE: overlay/packages/apps/Settings/res/values/dimens.xml
================================================
50.35%35%
================================================
FILE: overlay/packages/apps/Settings/res/values/strings.xml
================================================
https://support.essential.comTurn on Adaptive BatteryAdaptive BatteryTo extend battery life, Adaptive Battery limits battery for infrequently used apps. Your tablet will learn how you use apps over time.\n\nNotifications may be delayed for these apps.To extend battery life, Adaptive Battery limits battery for infrequently used apps. Your device will learn how you use apps over time.\n\nNotifications may be delayed for these apps.Use Adaptive BatteryTurn on Adaptive BatteryPreferred network mode: GSM/WCDMA/LTEPreferred network mode: LTE/WCDMAPreferred network mode: WCDMA preferredPreferred network mode: WCDMA onlyGSM/WCDMA/LTELTE/WCDMAGSM/WCDMA preferredWCDMA onlyPreferred network mode: AutomaticPreferred network mode: LTE/CDMAPreferred network mode: CDMAPreferred network mode: CDMAPreferred network mode: GSM/UMTSAutomaticLTE/CDMACDMAGSM/UMTS
================================================
FILE: overlay/packages/apps/Settings/res/values-af/strings.xml
================================================
"Skakel Aanpasbare Battery aan""Aanpasbare Battery""Om die batterylewe te verleng, beperk Aanpasbare Battery die batterygebruik van programme wat selde gebruik word. Jou tablet sal mettertyd leer hoe jy programme gebruik.\n\nKennisgewings sal dalk vir hierdie programme vertraag word.""Om die batterylewe te verleng, beperk Aanpasbare Battery die batterygebruik van programme wat selde gebruik word. Jou toestel sal mettertyd leer hoe jy programme gebruik.\n\nKennisgewings sal dalk vir hierdie programme vertraag word.""Gebruik Aanpasbare Battery""Skakel Aanpasbare Battery aan"
================================================
FILE: overlay/packages/apps/Settings/res/values-am/strings.xml
================================================
"ተለማማጅ ባትሪን ያብሩ""ተለማማጅ ባትሪ""የባትሪ ዕድሜን ለማራዘም ተለማማጅ ባትሪ በተደጋጋሚ ጥቅም ላይ ለማይውሉ መተግበሪያዎች ባትሪን ይገድባል። የእርስዎ ጡባዊ መተግበሪያዎችዎን እንዴት እንደሚጠቀሙ በጊዜ ሂደት ላይ ይማራል።\n\nማሳወቂያዎች ለእነዚህ መተግበሪያዎች ሊዘገዩ ይችካሉ።""የባትሪ ዕድሜን ለማራዘም ተለማማጅ ባትሪ በተደጋጋሚ ጥቅም ላይ ለማይውሉ መተግበሪያዎች ባትሪን ይገድባል። የእርስዎ መሣሪያ መተግበሪያዎችዎን እንዴት እንደሚጠቀሙ በጊዜ ሂደት ላይ ይማራል።\n\nማሳወቂያዎች ለእነዚህ መተግበሪያዎች ሊዘገዩ ይችካሉ።""ተለማማጅ ባትሪን ይጠቀሙ""ተለማማጅ ባትሪን ያብሩ"
================================================
FILE: overlay/packages/apps/Settings/res/values-ar/strings.xml
================================================
"تفعيل البطارية التكيُّفية""البطارية التكيُّفية""لإطالة عمر البطارية، يعمل خيار \"البطارية التكيُّفية\" على تقييد استخدام البطارية للتطبيقات التي لا تستخدمها إلا نادرًا. وسيتعلم جهازك اللوحي كيفية استخدام التطبيقات مع مرور الوقت.\n\nقد تتأخر إشعارات هذه التطبيقات.""لإطالة عمر البطارية، يعمل خيار \"البطارية التكيُّفية\" على تقييد استخدام البطارية للتطبيقات التي لا تستخدمها إلا نادرًا. وسيتعلم جهازك كيفية استخدام التطبيقات مع مرور الوقت.\n\nقد تتأخر إشعارات هذه التطبيقات.""استخدام البطارية التكيُّفية""تفعيل البطارية التكيُّفية"
================================================
FILE: overlay/packages/apps/Settings/res/values-as/strings.xml
================================================
"অভিযোজিত বেটাৰি অন কৰক""অভিযোজিত বেটাৰি""বেটাৰিৰ অৱস্থা উন্নত কৰিবলৈ অভিযোজিত বেটাৰিয়ে সঘনাই ব্য়ৱহাৰ নোহোৱা এপসমূহৰ বেটাৰিৰ ব্য়ৱহাৰ সীমিত কৰে। সময়ৰ লগত সংগতি ৰাখি আপোনাৰ টেবলেটে আপুনি কেনেকৈ এপসমূহ ব্য়ৱহাৰ কৰে সেয়া অনুমান কৰিব।\n\nএই এপসমূহৰ বাবে জাননীসমূহ পলম হ\'ব পাৰে।""বেটাৰিৰ অৱস্থা উন্নত কৰিবলৈ অভিযোজিত বেটাৰিয়ে সঘনাই ব্য়ৱহাৰ নোহোৱা এপসমূহৰ বেটাৰিৰ ব্য়ৱহাৰ সীমিত কৰে। সময়ৰ লগত সংগতি ৰাখি আপোনাৰ ডিভাইচে আপুনি কেনেকৈ এপসমূহ ব্য়ৱহাৰ কৰে সেয়া অনুমান কৰিব।\n\nএই এপসমূহৰ বাবে জাননীসমূহ পলম হ\'ব পাৰে।""অভিযোজিত বেটাৰি ব্যৱহাৰ কৰক""অভিযোজিত বেটাৰি অন কৰক"
================================================
FILE: overlay/packages/apps/Settings/res/values-az/strings.xml
================================================
"Adaptiv Batareyanı aktiv edin""Adaptiv Batareya""Batareya ömrünü uzatmaq üçün Adaptiv Batareya Meneceri, daima istifadə edilən tətbiqlərin batareyadan istifadəsini məhdudlaşdırır. Planşet vaxt keçdikcə tətbiqlərdən istifadə etməyi öyrənəcək.\n\nHəmin tətbiqlərin bildirişləri gecikə bilər.""Batareya ömrünü uzatmaq üçün Adaptiv Batareya, daima istifadə edilən tətbiqlərin batareyadan istifadəsini məhdudlaşdırır. Cihaz vaxt keçdikcə tətbiqlərdən istifadə etməyi öyrənəcək.\n\nHəmin tətbiqlərin bildirişləri gecikə bilər.""Adaptiv Batareyadan istifadə edin""Adaptiv Batareyanı aktiv edin"
================================================
FILE: overlay/packages/apps/Settings/res/values-b+sr+Latn/strings.xml
================================================
"Uključite prilagodljivu bateriju""Prilagodljiva baterija""Da biste produžili trajanje baterije, prilagodljiva baterija ograničava potrošnju baterije za aplikacije koje se ne koriste često. Tablet će vremenom naučiti kako da koristi aplikacije.\n\nObaveštenja o ovim aplikacijama mogu da kasne.""Da biste produžili trajanje baterije, prilagodljiva baterija ograničava potrošnju baterije za aplikacije koje se ne koriste često. Uređaj će vremenom naučiti kako da koristi aplikacije.\n\nObaveštenja o ovim aplikacijama mogu da kasne.""Koristi prilagodljivu bateriju""Uključite prilagodljivu bateriju"
================================================
FILE: overlay/packages/apps/Settings/res/values-be/strings.xml
================================================
"Уключыць адаптацыю акумулятара""Адаптацыя акумулятара""Каб падоўжыць тэрмін службы акумулятара, адаптацыя акумулятара абмяжоўвае яго выкарыстанне праграмамі, якія запускаюцца рэдка. Ваш планшэт з часам прыстасуецца да таго, як вы карыстаецеся праграмамі.\n\nАпавяшчэнні для гэтых праграм могуць прыходзіць з затрымкай.""Каб падоўжыць тэрмін службы акумулятара, адаптацыя акумулятара абмяжоўвае яго выкарыстанне праграмамі, якія запускаюцца рэдка. Ваша прылада з часам прыстасуецца да таго, як вы карыстаецеся праграмамі.\n\nАпавяшчэнні для гэтых праграм могуць прыходзіць з затрымкай.""Выкарыстоўваць адаптацыю акумулятара""Уключыць адаптацыю акумулятара"
================================================
FILE: overlay/packages/apps/Settings/res/values-bg/strings.xml
================================================
"Включете режима за адаптивна батерия""Адаптивна батерия""За да удължи живота на батерията, режимът за адаптивна батерия ограничава изразходването й от рядко използваните приложения. С течение на времето таблетът ви ще научи как използвате приложенията.\n\nМоже да има забавяне на известията от тези приложения.""За да удължи живота на батерията, режимът за адаптивна батерия ограничава изразходването й от рядко използваните приложения. С течение на времето устройството ви ще научи как използвате приложенията.\n\nМоже да има забавяне на известията от тези приложения.""Използване на режима за адаптивна батерия""Включете режима за адаптивна батерия"
================================================
FILE: overlay/packages/apps/Settings/res/values-bn/strings.xml
================================================
"অ্যাডাপটিভ ব্যাটারি চালু করুন""অ্যাডাপটিভ ব্যাটারি""ব্যাটারি যাতে আরও বেশিক্ষণ চলে তার জন্য অ্যাডাপটিভ ব্যাটারি বৈশিষ্ট্যটি অনিয়মিত ব্যবহৃত অ্যাপের ব্যাটারির ব্যবহারে সীমা নির্দিষ্ট করে। আপনি কোন অ্যাপ কত নিয়মিত ব্যবহার করেন তা আপনার ট্যাবলেট ধীরে ধীরে শিখে নেবে।\n\nএই অ্যাপগুলির বিজ্ঞপ্তি আসতে দেরি হতে পারে।""ব্যাটারি যাতে আরও বেশিক্ষণ চলে তার জন্য অ্যাডাপটিভ ব্যাটারি বৈশিষ্ট্যটি অনিয়মিত ব্যবহৃত অ্যাপের ব্যাটারি ব্যবহারে সীমা নির্দিষ্ট করে। আপনি কোন অ্যাপ কত নিয়মিত ব্যবহার করেন তা আপনার ডিভাইস ধীরে ধীরে শিখে নেবে।\n\nএই অ্যাপগুলির বিজ্ঞপ্তি আসতে দেরি হতে পারে।""অ্যাডাপটিভ ব্যাটারি ব্যবহার করুন""অ্যাডাপটিভ ব্যাটারি চালু করুন"
================================================
FILE: overlay/packages/apps/Settings/res/values-bs/strings.xml
================================================
"Uključite prilagodljivu bateriju""Prilagodljiva baterija""Da bi se produžio vijek trajanja baterije, prilagodljiva baterija ograničava upotrebu baterije za aplikacije koje se ne koriste često. Tablet će vremenom učiti na koji način koristite aplikacije.\n\nMoguće je da će obavještenja za te aplikacije kasniti.""Da bi se produžio vijek trajanja baterije, prilagodljiva baterija ograničava upotrebu baterije za aplikacije koje se ne koriste često. Uređaj će vremenom učiti na koji način koristite aplikacije.\n\nMoguće je da će obavještenja za te aplikacije kasniti.""Koristi prilagodljivu bateriju""Uključite prilagodljivu bateriju"
================================================
FILE: overlay/packages/apps/Settings/res/values-ca/strings.xml
================================================
"Activa la bateria intel·ligent""Bateria intel·ligent""Per augmentar la durada de la bateria, la bateria intel·ligent en limita l\'ús a les aplicacions que no utilitzes habitualment. La teva tauleta aprendrà com fas servir les aplicacions al llarg del temps.\n\nÉs possible que rebis les notificacions d\'aquestes aplicacions amb retard.""Per augmentar la durada de la bateria, la bateria intel·ligent en limita l\'ús a les aplicacions que no utilitzes habitualment. El teu dispositiu aprendrà com fas servir les aplicacions al llarg del temps.\n\nÉs possible que rebis les notificacions d\'aquestes aplicacions amb retard.""Fes servir la bateria intel·ligent""Activa la bateria intel·ligent"
================================================
FILE: overlay/packages/apps/Settings/res/values-cs/strings.xml
================================================
"Zapněte adaptivní baterii""Adaptivní baterie""Adaptivní baterie prodlužuje výdrž baterie tím, že omezuje využití baterie aplikacemi, které nepoužíváte tak často. Tablet postupem času sám zjistí, jak aplikace využíváte.\n\nOznámení z těchto aplikací se mohou zobrazovat se zpožděním.""Adaptivní baterie prodlužuje výdrž baterie tím, že omezuje využití baterie aplikacemi, které nepoužíváte tak často. Zařízení postupem času samo zjistí, jak aplikace využíváte.\n\nOznámení z těchto aplikací se mohou zobrazovat se zpožděním.""Použít adaptivní baterii""Zapněte adaptivní baterii"
================================================
FILE: overlay/packages/apps/Settings/res/values-da/strings.xml
================================================
"Aktivér Selvjusterende batteri""Selvjusterende batteri""Selvjusterende batteri begrænser batteriforbruget for sjældent brugte app, så batteritiden forlænges. Din tablet lærer løbende, hvordan du bruger apps.\n\nUnderretninger fra disse apps kan være forsinkede.""Selvjusterende batteri begrænser batteriforbruget for sjældent brugte app, så batteritiden forlænges. Din enhed lærer løbende, hvordan du bruger apps.\n\nUnderretninger fra disse apps kan være forsinkede.""Brug Selvjusterende batteri""Aktivér Selvjusterende batteri"
================================================
FILE: overlay/packages/apps/Settings/res/values-de/strings.xml
================================================
"Funktion \"Intelligenter Akku\" aktivieren""Intelligenter Akku""Um die Akkulaufzeit zu verlängern, schränkt die Funktion \"Intelligenter Akku\" die Akkunutzung für selten verwendete Apps ein. Dein Tablet lernt mit der Zeit, wie du deine Apps nutzt.\n\nBenachrichtigungen werden für die entsprechenden Apps eventuell verzögert angezeigt.""Um die Akkulaufzeit zu verlängern, schränkt die Funktion \"Intelligenter Akku\" die Akkunutzung für selten verwendete Apps ein. Dein Gerät lernt mit der Zeit, wie du deine Apps nutzt.\n\nBenachrichtigungen werden für die entsprechenden Apps eventuell verzögert angezeigt.""Funktion \"Intelligenter Akku\" verwenden""Funktion \"Intelligenter Akku\" aktivieren"
================================================
FILE: overlay/packages/apps/Settings/res/values-el/strings.xml
================================================
"Ενεργοποίηση της λειτουργίας \"Προσαρμοστική μπαταρία\"""Προσαρμοστική μπαταρία""Για να επεκτείνει τη διάρκεια ζωής της μπαταρίας, η λειτουργία \"Προσαρμοστική μπαταρία\" περιορίζει την μπαταρία για εφαρμογές που δεν χρησιμοποιούνται συχνά. Το tablet θα μάθει πώς χρησιμοποιείτε τις εφαρμογές με την πάροδο του χρόνου.\n\nΟι ειδοποιήσεις για αυτές τις εφαρμογές ενδέχεται να εμφανίζονται με καθυστέρηση.""Για να επεκτείνει τη διάρκεια ζωής της μπαταρίας, η λειτουργία \"Προσαρμοστική μπαταρία\" περιορίζει την μπαταρία για εφαρμογές που δεν χρησιμοποιούνται συχνά. Η συσκευή σας θα μάθει πώς χρησιμοποιείτε τις εφαρμογές με την πάροδο του χρόνου.\n\nΟι ειδοποιήσεις για αυτές τις εφαρμογές ενδέχεται να εμφανίζονται με καθυστέρηση.""Χρήση της λειτουργίας \"Προσαρμοστική μπαταρία\"""Ενεργοποίηση της λειτουργίας \"Προσαρμοστική μπαταρία\""
================================================
FILE: overlay/packages/apps/Settings/res/values-en-rAU/strings.xml
================================================
"Turn on Adaptive Battery""Adaptive Battery""To extend battery life, Adaptive Battery limits battery for infrequently used apps. Your tablet will learn how you use apps over time.\n\nNotifications may be delayed for these apps.""To extend battery life, Adaptive Battery limits battery for infrequently used apps. Your device will learn how you use apps over time.\n\nNotifications may be delayed for these apps.""Use Adaptive Battery""Turn on Adaptive Battery"
================================================
FILE: overlay/packages/apps/Settings/res/values-en-rCA/strings.xml
================================================
"Turn on Adaptive Battery""Adaptive Battery""To extend battery life, Adaptive Battery limits battery for infrequently used apps. Your tablet will learn how you use apps over time.\n\nNotifications may be delayed for these apps.""To extend battery life, Adaptive Battery limits battery for infrequently used apps. Your device will learn how you use apps over time.\n\nNotifications may be delayed for these apps.""Use Adaptive Battery""Turn on Adaptive Battery"
================================================
FILE: overlay/packages/apps/Settings/res/values-en-rGB/strings.xml
================================================
"Turn on Adaptive Battery""Adaptive Battery""To extend battery life, Adaptive Battery limits battery for infrequently used apps. Your tablet will learn how you use apps over time.\n\nNotifications may be delayed for these apps.""To extend battery life, Adaptive Battery limits battery for infrequently used apps. Your device will learn how you use apps over time.\n\nNotifications may be delayed for these apps.""Use Adaptive Battery""Turn on Adaptive Battery"
================================================
FILE: overlay/packages/apps/Settings/res/values-en-rIN/strings.xml
================================================
"Turn on Adaptive Battery""Adaptive Battery""To extend battery life, Adaptive Battery limits battery for infrequently used apps. Your tablet will learn how you use apps over time.\n\nNotifications may be delayed for these apps.""To extend battery life, Adaptive Battery limits battery for infrequently used apps. Your device will learn how you use apps over time.\n\nNotifications may be delayed for these apps.""Use Adaptive Battery""Turn on Adaptive Battery"
================================================
FILE: overlay/packages/apps/Settings/res/values-en-rXC/strings.xml
================================================
"Turn on Adaptive Battery""Adaptive Battery""To extend battery life, Adaptive Battery limits battery for infrequently used apps. Your tablet will learn how you use apps over time.\n\nNotifications may be delayed for these apps.""To extend battery life, Adaptive Battery limits battery for infrequently used apps. Your device will learn how you use apps over time.\n\nNotifications may be delayed for these apps.""Use Adaptive Battery""Turn on Adaptive Battery"
================================================
FILE: overlay/packages/apps/Settings/res/values-es/strings.xml
================================================
"Activar batería inteligente""Batería inteligente""Para aumentar la duración de la batería, el gestor de batería inteligente limita el consumo por parte de aplicaciones que se utilizan con poca frecuencia. Con el tiempo, el tablet sabrá cómo utilizas las aplicaciones.\n\nEs posible que las notificaciones de estas aplicaciones te lleguen con retraso.""Para aumentar la duración de la batería, el gestor de batería inteligente limita el consumo por parte de aplicaciones que se utilizan con poca frecuencia. Con el tiempo, el dispositivo sabrá cómo utilizas las aplicaciones.\n\nEs posible que las notificaciones de estas aplicaciones te lleguen con retraso.""Usar batería inteligente""Activar batería inteligente"
================================================
FILE: overlay/packages/apps/Settings/res/values-es-rUS/strings.xml
================================================
"Activar Batería automática""Batería automática""Para extender la duración de la batería, la función Batería automática limita el consumo por parte de las apps que no se usan con frecuencia. Con el tiempo, la tablet reconocerá cómo usas las apps.\n\nEs posible que se retrasen las notificaciones de esas apps.""Para extender la duración de la batería, la función Batería automática limita el consumo por parte de las apps que no se usan con frecuencia. Con el tiempo, tu dispositivo reconocerá cómo usas las apps.\n\nEs posible que se retrasen las notificaciones de esas apps.""Usar Batería automática""Activar Batería automática"
================================================
FILE: overlay/packages/apps/Settings/res/values-et/strings.xml
================================================
"Kohanduva akuhalduri sisselülitamine""Kohanduv akuhaldur""Aku tööea pikendamiseks piirab kohanduv akuhaldur akukasutust harva kasutatavate rakenduste jaoks. Teie tahvelarvuti õpib aja jooksul, kuidas rakendusi kasutada.\n\nNende rakenduste märguanded võivad viibida.""Aku tööea pikendamiseks piirab kohanduv akuhaldur akukasutust harva kasutatavate rakenduste jaoks. Teie seade õpib aja jooksul, kuidas rakendusi kasutada.\n\nNende rakenduste märguanded võivad viibida.""Kohanduva akuhalduri kasutamine""Kohanduva akuhalduri sisselülitamine"
================================================
FILE: overlay/packages/apps/Settings/res/values-eu/strings.xml
================================================
"Aktibatu bateria doigarria""Bateria doigarria""Bateriak gehiago iraun dezan, bateria doigarriak mugatu egiten du gutxitan erabiltzen dituzun aplikazioek erabiltzen duten bateria. Denborarekin, aplikazioak nola erabiltzen dituzun ikasiko du tabletak.\n\nBaliteke aplikazio horietan jakinarazpenak atzeratzea.""Bateriak gehiago iraun dezan, bateria doigarriak mugatu egiten du gutxitan erabiltzen dituzun aplikazioek erabiltzen duten bateria. Denborarekin, aplikazioak nola erabiltzen dituzun ikasiko du gailuak.\n\nBaliteke aplikazio horietan jakinarazpenak atzeratzea.""Erabili bateria doigarria""Aktibatu bateria doigarria"
================================================
FILE: overlay/packages/apps/Settings/res/values-fa/strings.xml
================================================
"روشن کردن «باتری وفقپذیر»""باتری وفقپذیر""برای افزایش ماندگاری شارژ باتری، «باتری وفقپذیر» مصرف باتری برنامههایی را که زیاد استفاده نمیشود محدود میکند. رایانه لوحیتان با گذشت زمان نحوه استفاده شما از برنامهها را یاد میگیرد.\n\nممکن است اعلانهای این برنامهها با تأخیر همراه باشد.""برای افزایش ماندگاری شارژ باتری، «باتری وفقپذیر» مصرف باتری برنامههایی را که زیاد استفاده نمیشود محدود میکند. دستگاهتان با گذشت زمان نحوه استفاده شما از برنامهها را یاد میگیرد.\n\nممکن است اعلانهای این برنامهها با تأخیر همراه باشد.""استفاده از باتری وفقپذیر""«باتری وفقپذیر» را روشن کنید"
================================================
FILE: overlay/packages/apps/Settings/res/values-fi/strings.xml
================================================
"Ota käyttöön mukautuva virta""Mukautuva virta""Mukautuva virta pidentää akun kestoa rajoittamalla harvoin käytettyjen sovellusten akunkäyttöä. Tabletti oppii, miten käytät sovelluksia.\n\nRajoitettujen sovellusten ilmoitukset voidaan näyttää viiveellä.""Mukautuva virta pidentää akun kestoa rajoittamalla harvoin käytettyjen sovellusten akunkäyttöä. Laite oppii, miten käytät sovelluksia.\n\nRajoitettujen sovellusten ilmoitukset voidaan näyttää viiveellä.""Käytä mukautuvaa virtaa""Ota käyttöön mukautuva virta"
================================================
FILE: overlay/packages/apps/Settings/res/values-fr/strings.xml
================================================
"Activer la batterie adaptative""Batterie adaptative""Afin de prolonger l\'autonomie de la batterie, la batterie adaptative limite l\'utilisation de la batterie pour les applications peu utilisées. Votre tablette apprendra comment vous utilisez les applications au fil du temps.\n\nLes notifications peuvent être retardées pour ces applications.""Afin de prolonger l\'autonomie de la batterie, la batterie adaptative limite l\'utilisation de la batterie pour les applications peu utilisées. Votre appareil apprendra comment vous utilisez les applications au fil du temps.\n\nLes notifications peuvent être retardées pour ces applications.""Utiliser la batterie adaptative""Activer la batterie adaptative"
================================================
FILE: overlay/packages/apps/Settings/res/values-fr-rCA/strings.xml
================================================
"Activer le gestionnaire de pile adaptatif""Gestionnaire de pile adaptatif""Pour prolonger l’autonomie de la pile, le gestionnaire de pile adaptatif limite son utilisation pour les applications peu utilisées. Votre tablette apprendra comment vous utilisez les applications au fil du temps.\n\nIl se peut que les notifications soient retardées pour ces applications.""Pour prolonger l’autonomie de la pile, le gestionnaire de pile adaptatif limite son utilisation pour les applications peu utilisées. Votre appareil apprendra comment vous utilisez les applications au fil du temps.\n\nIl se peut que les notifications soient retardées pour ces applications.""Utiliser le gestionnaire de pile adaptatif""Activer le gestionnaire de pile adaptatif"
================================================
FILE: overlay/packages/apps/Settings/res/values-gl/strings.xml
================================================
"Activa a batería automática""Batería automática""Para aumentar a duración da batería, a batería automática limita o consumo das aplicacións que se utilizan con pouca frecuencia. Co paso do tempo, a tableta saberá como utilizas as aplicacións.\n\nÉ posible que as notificacións destas aplicacións se atrasen.""Para aumentar a duración da batería, a batería automática limita o consumo das aplicacións que se utilizan con pouca frecuencia. Co paso do tempo, o dispositivo saberá como utilizas as aplicacións.\n\nÉ posible que as notificacións destas aplicacións se atrasen.""Usar batería automática""Activa a batería automática"
================================================
FILE: overlay/packages/apps/Settings/res/values-gu/strings.xml
================================================
"સુવિધાજનક બૅટરી ચાલુ કરો""સુવિધાજનક બૅટરી""બૅટરી આવરદાને વધારવા માટે, સુવિધાજનક બૅટરી વારંવાર ઉપયોગમાં ન લેવાતી ઍપ માટે બૅટરી મર્યાદિત કરે છે. સમય જતાં તમારું ટૅબ્લેટ જાણી લેશે કે તમે ઍપનો કેવી રીતે ઉપયોગ કરો છો.\n\nઆ ઍપ માટે નોટિફિકેશન વિલંબિત થઈ શકે છે.""બૅટરી આવરદાને વધારવા માટે, સુવિધાજનક બૅટરી વારંવાર ઉપયોગમાં ન લેવાતી ઍપ માટે બૅટરી મર્યાદિત કરે છે. સમય જતાં તમારું ઉપકરણ જાણી લેશે કે તમે ઍપનો કેવી રીતે ઉપયોગ કરો છો.\n\nઆ ઍપ માટે નોટિફિકેશન વિલંબિત થઈ શકે છે.""સુવિધાજનક બૅટરીનો ઉપયોગ કરો""સુવિધાજનક બૅટરી ચાલુ કરો"
================================================
FILE: overlay/packages/apps/Settings/res/values-hi/strings.xml
================================================
"ज़रूरत के हिसाब से बैटरी के इस्तेमाल की सुविधा चालू करें""ज़रूरत के हिसाब से बैटरी का इस्तेमाल""बैटरी लाइफ़ बढ़ाने के लिए, ज़रूरत के हिसाब से बैटरी का इस्तेमाल करने की सुविधा, कभी-कभार इस्तेमाल होने वाले ऐप्लिकेशन पर बैटरी के इस्तेमाल से जुड़ी रोक लगाती है. समय के साथ आपके टैबलेट को यह पता चल जाएगा कि आप किस तरह से ऐप्लिकेशन इस्तेमाल करते हैं.\n\nइन ऐप्लिकेशन से जुड़ी सूचनाएं दिखने में देर हो सकती है.""बैटरी लाइफ़ बढ़ाने के लिए, ज़रूरत के हिसाब से बैटरी का इस्तेमाल करने की सुविधा, कभी-कभार इस्तेमाल होने वाले ऐप्लिकेशन पर बैटरी के इस्तेमाल से जुड़ी रोक लगाती है. समय के साथ आपके डिवाइस को यह पता चल जाएगा कि आप किस तरह से ऐप्लिकेशन इस्तेमाल करते हैं.\n\nइन ऐप्लिकेशन से जुड़ी सूचनाएं दिखने में देर हो सकती है.""ज़रूरत के हिसाब से बैटरी का इस्तेमाल करने की सुविधा आज़माएं""ज़रूरत के हिसाब से बैटरी के इस्तेमाल की सुविधा चालू करें"
================================================
FILE: overlay/packages/apps/Settings/res/values-hr/strings.xml
================================================
"Uključite Adaptive Battery""Adaptive Battery""Da bi se produljilo trajanje baterije, Adaptive Battery ograničava potrošnju baterije za aplikacije koje se upotrebljavaju rjeđe. Tablet će s vremenom saznati kako upotrebljavate aplikacije.\n\nObavijesti za te aplikacije mogu kasniti.""Da bi se produljilo trajanje baterije, Adaptive Battery ograničava potrošnju baterije za aplikacije koje se upotrebljavaju rjeđe. Uređaj će s vremenom saznati kako upotrebljavate aplikacije.\n\nObavijesti za te aplikacije mogu kasniti.""Koristi Adaptive Battery""Uključite Adaptive Battery"
================================================
FILE: overlay/packages/apps/Settings/res/values-hu/strings.xml
================================================
"Az Alkalmazkodó akkumulátor bekapcsolása""Alkalmazkodó akkumulátor""Az akkumulátor üzemidejének növelése érdekében az Alkalmazkodó akkumulátor korlátozza a ritkán használt alkalmazások akkumulátorhasználatát. A táblagép idővel megtanulja, hogy Ön hogyan használja az alkalmazásokat.\n\nElőfordulhat, hogy az érintett alkalmazások értesítései késnek majd.""Az akkumulátor üzemidejének növelése érdekében az Alkalmazkodó akkumulátor korlátozza a ritkán használt alkalmazások akkumulátorhasználatát. Az eszköz idővel megtanulja, hogy Ön hogyan használja az alkalmazásokat.\n\nElőfordulhat, hogy az érintett alkalmazások értesítései késnek majd.""Alkalmazkodó akkumulátor használata""Az Alkalmazkodó akkumulátor bekapcsolása"
================================================
FILE: overlay/packages/apps/Settings/res/values-hy/strings.xml
================================================
"Միացրեք Adaptive Battery-ն""Adaptive Battery""Մարտկոցի աշխատաժամանակը երկարացնելու համար Adaptive Battery-ն սահմանափակում է հազվադեպ օգտագործվող հավելվածների ֆոնային աշխատանքը: Ժամանակի ընթացքում ձեր պլանշետը հիշում է, թե որ հավելվածներն եք հաճախ օգտագործում, որոնք՝ ոչ:\n\nՍահմանափակված հավելվածների ծանուցումները կարող են ուշացումով ստացվել:""Մարտկոցի աշխատաժամանակը երկարացնելու համար Adaptive Battery-ն սահմանափակում է հազվադեպ օգտագործվող հավելվածների ֆոնային աշխատանքը: Ժամանակի ընթացքում ձեր սարքը հիշում է, թե որ հավելվածներն եք հաճախ օգտագործում, որոնք՝ ոչ:\n\nՍահմանափակված հավելվածների ծանուցումները կարող են ուշացումով ստացվել:""Միացնել Adaptive Battery-ն""Միացրեք Adaptive Battery-ն"
================================================
FILE: overlay/packages/apps/Settings/res/values-in/strings.xml
================================================
"Aktifkan Baterai Adaptif""Baterai Adaptif""Untuk memperpanjang masa pakai baterai, Baterai Adaptif membatasi baterai untuk aplikasi yang jarang dipakai. Tablet akan mempelajari cara Anda menggunakan aplikasi seiring waktu.\n\nNotifikasi dapat tertunda untuk aplikasi ini.""Untuk memperpanjang masa pakai baterai, Baterai Adaptif membatasi baterai untuk aplikasi yang jarang dipakai. Perangkat akan mempelajari cara Anda menggunakan aplikasi seiring waktu.\n\nNotifikasi dapat tertunda untuk aplikasi ini.""Gunakan Baterai Adaptif""Aktifkan Baterai Adaptif"
================================================
FILE: overlay/packages/apps/Settings/res/values-is/strings.xml
================================================
"Kveikja á breytilegri rafhlöðustjórnun""Breytileg rafhlöðustjórnun""Til að lengja rafhlöðuendingu takmarkar breytileg rafhlöðustjórnun rafhlöðunotkun forrita sem eru notuð sjaldan. Spjaldtölvan lærir inn á forritanotkun þína með tímanum.\n\nTafir geta orðið á tilkynningum frá þessum forritum.""Til að lengja endingu rafhlöðunnar takmarkar breytileg rafhlöðustjórnun rafhlöðunotkun forrita sem eru notuð sjaldan. Tækið lærir inn á forritanotkun þína með tímanum.\n\nTafir geta orðið á tilkynningum frá þessum forritum.""Nota breytilega rafhlöðustjórnun""Kveikja á breytilegri rafhlöðustjórnun"
================================================
FILE: overlay/packages/apps/Settings/res/values-it/strings.xml
================================================
"Attiva Batteria adattiva""Batteria adattiva""Per prolungare la durata della batteria, la funzione Batteria adattiva limita l\'utilizzo della batteria per le app usate di rado. Il tablet capirà come usi le app nel corso del tempo.\n\nPotresti ricevere in ritardo le notifiche relative a queste app.""Per prolungare la durata della batteria, la funzione Batteria adattiva limita l\'utilizzo della batteria per le app usate di rado. Il dispositivo capirà come usi le app nel corso del tempo.\n\nPotresti ricevere in ritardo le notifiche relative a queste app.""Usa Batteria adattiva""Attiva Batteria adattiva"
================================================
FILE: overlay/packages/apps/Settings/res/values-iw/strings.xml
================================================
"הפעלת Adaptive Battery""Adaptive Battery""כדי להאריך את חיי הסוללה, התכונה Adaptive Battery מגבילה את השימוש בסוללה לאפליקציות שנעשה בהן שימוש לעיתים רחוקות. לאורך זמן, הטאבלט ילמד את אופן השימוש שלך באפליקציות.\n\nייתכן עיכוב בקבלת הודעות מאפליקציות אלה.""כדי להאריך את חיי הסוללה, התכונה Adaptive Battery מגבילה את השימוש בסוללה לאפליקציות שנעשה בהן שימוש לעיתים רחוקות. לאורך זמן, המכשיר ילמד את אופן השימוש שלך באפליקציות.\n\nייתכן עיכוב בקבלת הודעות מאפליקציות אלה.""שימוש ב-Adaptive Battery""הפעלת Adaptive Battery"
================================================
FILE: overlay/packages/apps/Settings/res/values-ja/strings.xml
================================================
NFC/おサイフケータイ設定NFC/おサイフケータイロック"ON""OFF"":USIM未挿入です"":NFCの一部機能が利用できません"":NFC非対応USIMです"NFC/おサイフケータイリモートロック設定Reader/Writer, P2P"ON""OFF""設定できませんでした。""OK""自動調整バッテリーを ON にする""自動調整バッテリー""自動調整バッテリーで使用頻度の低いアプリの電池使用を制限すると、電池が長持ちします。時間の経過とともに、タブレットがアプリの使用状況を学習します。\n\nこのアプリの通知は遅れることがあります。""自動調整バッテリーで使用頻度の低いアプリの電池使用を制限すると、電池が長持ちします。時間の経過とともに、端末がアプリの使用状況を学習します。\n\nこのアプリの通知は遅くなることがあります。""自動調整バッテリーの使用""自動調整バッテリーを ON にしてください"
================================================
FILE: overlay/packages/apps/Settings/res/values-ka/strings.xml
================================================
"Adaptive Battery-ს ჩართვა""Adaptive Battery""ბატარეის მუშაობის გასახანგრძლივებლად, Adaptive Battery ზღუდავს ბატარეის მოხმარებას იშვიათად გამოყენებული აპების მიერ. თქვენი ტაბლეტი დროთა განმავლობაში ისწავლის თქვენ მიერ აპების გამოყენების სპეციფიკას.\n\nასეთი აპებიდან შეტყობინებები შესაძლოა დაგვიანდეს.""ბატარეის მუშაობის გასახანგრძლივებლად, Adaptive Battery ზღუდავს ბატარეის მოხმარებას იშვიათად გამოყენებული აპების მიერ. თქვენი მოწყობილობა დროთა განმავლობაში ისწავლის თქვენ მიერ აპების გამოყენების სპეციფიკას.\n\nასეთი აპებიდან შეტყობინებები შესაძლოა დაგვიანდეს.""Adaptive Battery-ს გამოყენება""Adaptive Battery-ს ჩართვა"
================================================
FILE: overlay/packages/apps/Settings/res/values-kk/strings.xml
================================================
"Adaptive Battery функциясын қосу""Adaptive Battery""Батарея ұзағырақ жұмыс істеуі үшін, Adaptive Battery функциясы сирек пайдаланылатын қолданбалардың батареяны қолдануын шектейді. Планшетіңіз қолданбалардың қалай пайдаланылатынын есіне сақтайды.\n\nБұл қолданбаларға хабарландырулар кешігіп келуі мүмкін.""Батарея ұзағырақ жұмыс істеуі үшін, Adaptive Battery функциясы сирек пайдаланылатын қолданбалардың батареяны қолдануын шектейді. Құрылғыңыз қолданбалардың қалай пайдаланылатынын есіне сақтайды.\n\nБұл қолданбаларға хабарландырулар кешігіп келуі мүмкін.""Adaptive Battery функциясын пайдалану""Adaptive Battery функциясын қосу"
================================================
FILE: overlay/packages/apps/Settings/res/values-km/strings.xml
================================================
"បើកកម្មវិធីថ្មមានភាពបត់បែន""កម្មវិធីថ្មមានភាពបត់បែន""ដើម្បីបង្កើនរយៈពេលប្រើប្រាស់ថាមពលថ្ម កម្មវិធីថ្មមានភាពបត់បែនដាក់កម្រិតលើការប្រើប្រាស់ថ្មចំពោះកម្មវិធីដែលមិនសូវប្រើ។ ថេប្លេតរបស់អ្នកនឹងស្វែងយល់ពីរបៀបដែលអ្នកប្រើកម្មវិធីជាបន្តបន្ទាប់។\n\nការជូនដំណឹងអាចមានការពន្យារពេលសម្រាប់កម្មវិធីទាំងនេះ។""ដើម្បីបង្កើនរយៈពេលប្រើប្រាស់ថាមពលថ្ម កម្មវិធីថ្មមានភាពបត់បែនដាក់កម្រិតលើការប្រើប្រាស់ថ្មចំពោះកម្មវិធីដែលមិនសូវប្រើ។ ឧបករណ៍របស់អ្នកនឹងស្វែងយល់ពីរបៀបដែលអ្នកប្រើកម្មវិធីជាបន្តបន្ទាប់។\n\nការជូនដំណឹងអាចមានការពន្យារពេលសម្រាប់កម្មវិធីទាំងនេះ។""ប្រើកម្មវិធីថ្មមានភាពបត់បែន""បើកកម្មវិធីថ្មមានភាពបត់បែន"
================================================
FILE: overlay/packages/apps/Settings/res/values-kn/strings.xml
================================================
"ಅಡಾಪ್ಟಿವ್ ಬ್ಯಾಟರಿಯನ್ನು ಆನ್ ಮಾಡಿ""ಅಡಾಪ್ಟಿವ್ ಬ್ಯಾಟರಿ""ಬ್ಯಾಟರಿ ಬಾಳಿಕೆಯನ್ನು ಹೆಚ್ಚಿಸಲು, ಅಡಾಪ್ಟಿವ್ ಬ್ಯಾಟರಿ ಮ್ಯಾನೇಜರ್ ಅಪರೂಪವಾಗಿ ಬಳಸುವ ಅಪ್ಲಿಕೇಶನ್ಗಳ ಬ್ಯಾಟರಿಯನ್ನು ಸೀಮಿತಗೊಳಿಸುತ್ತದೆ. ಕಾಲಾಂತರದಲ್ಲಿ ನಿಮ್ಮ ಟ್ಯಾಬ್ಲೆಟ್ ನೀವು ಹೇಗೆ ಅಪ್ಲಿಕೇಶನ್ಗಳನ್ನು ಉಪಯೋಗಿಸುತ್ತೀರಿ ಎಂಬುದನ್ನು ಕಲಿಯುತ್ತದೆ.\n\nಈ ಅಪ್ಲಿಕೇಶನ್ಗಳಿಗೆ ಅಧಿಸೂಚನೆಗಳು ವಿಳಂಬವಾಗಬಹುದು.""ಬ್ಯಾಟರಿ ಬಾಳಿಕೆಯನ್ನು ಹೆಚ್ಚಿಸಲು, ಅಡಾಪ್ಟಿವ್ ಬ್ಯಾಟರಿ ಮ್ಯಾನೇಜರ್ ಅಪರೂಪವಾಗಿ ಬಳಸುವ ಅಪ್ಲಿಕೇಶನ್ಗಳ ಬ್ಯಾಟರಿಯನ್ನು ಸೀಮಿತಗೊಳಿಸುತ್ತದೆ. ಕಾಲಾಂತರದಲ್ಲಿ ನಿಮ್ಮ ಸಾಧನವು ನೀವು ಹೇಗೆ ಅಪ್ಲಿಕೇಶನ್ಗಳನ್ನು ಉಪಯೋಗಿಸುತ್ತೀರಿ ಎಂಬುದನ್ನು ಕಲಿಯುತ್ತದೆ.\n\nಈ ಅಪ್ಲಿಕೇಶನ್ಗಳಿಗೆ ಅಧಿಸೂಚನೆಗಳು ವಿಳಂಬವಾಗಬಹುದು.""ಅಡಾಪ್ಟಿವ್ ಬ್ಯಾಟರಿಯನ್ನು ಉಪಯೋಗಿಸಿ""ಅಡಾಪ್ಟಿವ್ ಬ್ಯಾಟರಿಯನ್ನು ಆನ್ ಮಾಡಿ"
================================================
FILE: overlay/packages/apps/Settings/res/values-ko/strings.xml
================================================
"배터리 자동 조절 사용 설정""배터리 자동 조절""배터리 자동 조절에서는 자주 사용하지 않는 앱의 배터리 사용량을 제한하여 배터리 수명을 늘립니다. 시간이 지남에 따라 태블릿에서 사용자의 앱 사용 방식을 학습합니다.\n\n제한된 앱의 알림이 지연될 수 있습니다.""배터리 자동 조절에서는 자주 사용하지 않는 앱의 배터리 사용량을 제한하여 배터리 수명을 늘립니다. 시간이 지남에 따라 기기에서 사용자의 앱 사용 방식을 학습합니다.\n\n제한된 앱의 알림이 지연될 수 있습니다.""배터리 자동 조절 사용""배터리 자동 조절 사용 설정"
================================================
FILE: overlay/packages/apps/Settings/res/values-ky/strings.xml
================================================
"Ыңгайлаштырылуучу Battery\'ни күйгүзүңүз""Ыңгайлаштырылуучу Battery""Батареяны узакка жеткирүү үчүн, Adaptive Battery функциясы сейрек колдонулуучу колдонмолордун ишин чектеп коет. Планшетиңиз акырындык менен кайсы колдонмолор көбүрөөк, кайсылары азыраак колдонулуп жаткандыгын аныктайт.\n\nЧектелген колдонмолордун билдирмелери кечигип көрүнүшү мүмкүн.""Батареяны узакка жеткирүү үчүн, Adaptive Battery функциясы сейрек колдонулуучу колдонмолордун ишин чектеп коет. Түзмөгүңүз акырындык менен кайсы колдонмолор көбүрөөк, кайсылары азыраак колдонулуп жаткандыгын аныктайт.\n\nЧектелген колдонмолордун билдирмелери кечигип көрүнүшү мүмкүн.""Adaptive Battery функциясын иштетүү""Ыңгайлаштырылуучу Battery\'ни күйгүзүңүз"
================================================
FILE: overlay/packages/apps/Settings/res/values-lo/strings.xml
================================================
"ເປີດໃຊ້ແບັດເຕີຣີແບບປັບຕົວໄດ້""ແບັດເຕີຣີແບບປັບຕົວໄດ້""ເພື່ອເພີ່ມອາຍຸແບັດເຕີຣີ, ແບັດເຕີຣີແບບປັບຕົວໄດ້ຈະຈຳກັດແບັດເຕີຣີສຳລັບແອັບທີ່ບໍ່ຄ່ອຍໄດ້ໃຊ້. ແທັບເລັດຂອງທ່ານຈະຮຽນຮູ້ວິທີທີ່ທ່ານໃຊ້ແອັບຕ່າງໆເມື່ອເວລາຜ່ານໄປ.\n\nການແຈ້ງເຕືອນອາດຊັກຊ້າສຳລັບແອັບເຫຼົ່ານີ້.""ເພື່ອເພີ່ມອາຍຸແບັດເຕີຣີ, ແບັດເຕີຣີແບບປັບຕົວໄດ້ຈະຈຳກັດແບັດເຕີຣີສຳລັບແອັບທີ່ບໍ່ຄ່ອຍໄດ້ໃຊ້. ອຸປະກອນຂອງທ່ານຈະຮຽນຮູ້ວິທີທີ່ທ່ານໃຊ້ແອັບຕ່າງໆເມື່ອເວລາຜ່ານໄປ.\n\nການແຈ້ງເຕືອນອາດຊັກຊ້າສຳລັບແອັບເຫຼົ່ານີ້.""ແບັດເຕີຣີແບບປັບຕົວໄດ້""ເປີດໃຊ້ແບັດເຕີຣີແບບປັບຕົວໄດ້"
================================================
FILE: overlay/packages/apps/Settings/res/values-lt/strings.xml
================================================
"Įjunkite prisitaikantį akumuliatorių""Prisitaikantis akumuliatorius""Kad akumuliatorius veiktų ilgiau, prisitaikantis akumuliatorius apriboja retai naudojamų programų akumuliatoriaus energijos naudojimą. Planšetinis kompiuteris laikui bėgant sužinos, kaip naudojate programas.\n\nŠių programų pranešimai gali vėluoti.""Kad akumuliatorius veiktų ilgiau, prisitaikantis akumuliatorius apriboja retai naudojamų programų akumuliatoriaus energijos naudojimą. Įrenginys laikui bėgant sužinos, kaip naudojate programas.\n\nŠių programų pranešimai gali vėluoti.""Naudoti prisitaikantį akumuliatorių""Įjunkite prisitaikantį akumuliatorių"
================================================
FILE: overlay/packages/apps/Settings/res/values-lv/strings.xml
================================================
"Ieslēgt režīmu Adaptīvais akumulators""Adaptīvais akumulators""Lai palielinātu akumulatora darbības ilgumu, režīms Adaptīvais akumulators ierobežo akumulatora enerģijas patēriņu reti izmantotām lietotnēm. Laika gaitā planšetdators apgūs lietotņu izmantošanas principus.\n\nŠo lietotņu paziņojumi var tikt parādīti aizkavēti.""Lai palielinātu akumulatora darbības ilgumu, režīms Adaptīvais akumulators ierobežo akumulatora enerģijas patēriņu reti izmantotām lietotnēm. Laika gaitā ierīce apgūs lietotņu izmantošanas principus.\n\nŠo lietotņu paziņojumi var tikt parādīti aizkavēti.""Izmantot režīmu Adaptīvais akumulators""Ieslēgt režīmu Adaptīvais akumulators"
================================================
FILE: overlay/packages/apps/Settings/res/values-mcc310-mnc120/arrays.xml
================================================
@string/preferred_network_mode_td_scdma_lte_gsm_wcdma_cdma_evdo_choice @string/preferred_network_mode_cdma_lte_evdo_choice@string/preferred_network_mode_cdma_evdo_auto_choice@string/preferred_network_mode_gsm_wcdma_auto_choice"22""8""4""3"
================================================
FILE: overlay/packages/apps/Settings/res/values-mcc311-mnc490/arrays.xml
================================================
@string/preferred_network_mode_td_scdma_lte_gsm_wcdma_cdma_evdo_choice @string/preferred_network_mode_cdma_lte_evdo_choice@string/preferred_network_mode_cdma_evdo_auto_choice@string/preferred_network_mode_gsm_wcdma_auto_choice"22""8""4""3"
================================================
FILE: overlay/packages/apps/Settings/res/values-mcc311-mnc870/arrays.xml
================================================
@string/preferred_network_mode_td_scdma_lte_gsm_wcdma_cdma_evdo_choice @string/preferred_network_mode_cdma_lte_evdo_choice@string/preferred_network_mode_cdma_evdo_auto_choice@string/preferred_network_mode_gsm_wcdma_auto_choice"22""8""4""3"
================================================
FILE: overlay/packages/apps/Settings/res/values-mcc312-mnc530/arrays.xml
================================================
@string/preferred_network_mode_td_scdma_lte_gsm_wcdma_cdma_evdo_choice @string/preferred_network_mode_cdma_lte_evdo_choice@string/preferred_network_mode_cdma_evdo_auto_choice@string/preferred_network_mode_gsm_wcdma_auto_choice"22""8""4""3"
================================================
FILE: overlay/packages/apps/Settings/res/values-mcc440-mnc20/arrays.xml
================================================
@string/preferred_network_mode_gsm_wcdma_lte_choice@string/preferred_network_mode_lte_wcdma_choice@string/preferred_network_mode_gsm_wcdma_preferred_choice@string/preferred_network_mode_wcdma_only_choice"9""12""0""2"
================================================
FILE: overlay/packages/apps/Settings/res/values-mk/strings.xml
================================================
"Вклучете „Адаптивна батерија“""Адаптивна батерија""За да го продолжи траењето на батеријата, „Адаптивната батерија“ ја ограничува батеријата за ретко користените апликации. Со тек на време, таблетот ќе научи како ги користите апликациите.\n\nИзвестувањата може да бидат одложени за овие апликации.""За да го продолжи траењето на батеријата, „Адаптивната батерија“ ја ограничува батеријата за ретко користените апликации. Со тек на време, уредот ќе научи како ги користите апликациите.\n\nИзвестувањата може да бидат одложени за овие апликации.""Користи „Адаптивна батерија“""Вклучете „Адаптивна батерија“"
================================================
FILE: overlay/packages/apps/Settings/res/values-ml/strings.xml
================================================
"അഡാപ്റ്റീവ് ബാറ്ററി ഓണാക്കുക""അഡാപ്റ്റീവ് ബാറ്ററി""ബാറ്ററി ലൈഫ് വർദ്ധിപ്പിക്കാൻ, അപൂര്വ്വമായി ഉപയോഗിക്കുന്ന ആപ്പുകൾക്കായുള്ള ബാറ്ററി ഉപഭോഗം അഡാപ്റ്റീവ് ബാറ്ററി പരിമിതപ്പെടുത്തുന്നു. കാലക്രമത്തിൽ നിങ്ങൾ എങ്ങനെയാണ് ആപ്പുകൾ ഉപയോഗിക്കുന്നതെന്ന് ടാബ്ലെറ്റ് മനസിലാക്കും.\n\nഈ ആപ്പുകളുടെ അറിയിപ്പുകൾ വൈകിയേക്കാം.""ബാറ്ററി ലൈഫ് വർദ്ധിപ്പിക്കാൻ, അപൂര്വ്വമായി ഉപയോഗിക്കുന്ന ആപ്പുകൾക്കായുള്ള ബാറ്ററി ഉപഭോഗം അഡാപ്റ്റീവ് ബാറ്ററി പരിമിതപ്പെടുത്തുന്നു. കാലക്രമത്തിൽ നിങ്ങൾ എങ്ങനെയാണ് ആപ്പുകൾ ഉപയോഗിക്കുന്നതെന്ന് ഉപകരണം മനസിലാക്കും.\n\nഈ ആപ്പുകളുടെ അറിയിപ്പുകൾ വൈകിയേക്കാം.""അഡാപ്റ്റീവ് ബാറ്ററി ഉപയോഗിക്കുക""അഡാപ്റ്റീവ് ബാറ്ററി ഓണാക്കുക"
================================================
FILE: overlay/packages/apps/Settings/res/values-mn/strings.xml
================================================
"Дасан зохицох батарейг асаах""Дасан зохицох батарей""Дасан зохицох батарей нь батарейны ажиллах хугацааг уртасгахын тулд тогтмол ашигладаггүй аппуудын батарей ашиглалтыг хязгаарладаг. Таны таблет таныг аппуудаа хэр тогтмол ашиглаж байгааг ашиглалтын явцад сурах болно.\n\nЭдгээр аппын мэдэгдэл хоцорч болзошгүй.""Дасан зохицох батарей нь батарейны ажиллах хугацааг уртасгахын тулд тогтмол ашигладаггүй аппуудын батарей ашиглалтыг хязгаарладаг. Таны төхөөрөмж таныг аппуудаа хэр тогтмол ашиглаж байгааг ашиглалтын явцад сурах болно.\n\nЭдгээр аппын мэдэгдэл хоцорч болзошгүй.""Дасан зохицох батарейг ашиглах""Дасан зохицох батарейг асаах"
================================================
FILE: overlay/packages/apps/Settings/res/values-mr/strings.xml
================================================
"अॅडॅप्टिव्ह बॅटरी सुरू करा""अॅडॅप्टिव्ह बॅटरी""बॅटरी दीर्घकाळ टिकावी म्हणून, अॅडाप्टिव्ह बॅटरी व्यवस्थापकाद्वारे क्वचित वापरल्या जाणाऱ्या अॅप्ससाठी बॅटरीचा वापर मर्यादित केला जातो. काळानुसार तुमचा टॅबलेट तुम्ही अॅप्स कसे वापरता हे शिकेल. \n\nया अॅप्ससाठी सूचना येण्यास उशीर होऊ शकतो.""बॅटरी दीर्घकाळ टिकावी म्हणून, अॅडाप्टिव्ह बॅटरी व्यवस्थापकाद्वारे क्वचित वापरल्या जाणाऱ्या अॅप्ससाठी बॅटरीचा वापर मर्यादित केला जातो. काळानुसार तुमचे डिव्हाइस तुम्ही अॅप्स कसे वापरता हे शिकेल. \n\nया अॅप्ससाठी सूचना येण्यास उशीर होऊ शकतो.""अॅडॅप्टिव्ह बॅटरी वापरा""अॅडॅप्टिव्ह बॅटरी सुरू करा"
================================================
FILE: overlay/packages/apps/Settings/res/values-ms/strings.xml
================================================
"Hidupkan Bateri Mudah Suai""Bateri Mudah Suai""Untuk melanjutkan hayat bateri, Bateri Mudah Suai mengehadkan bateri untuk apl yang jarang digunakan. Peranti anda akan mempelajari cara anda menggunakan apl dari semasa ke semasa.\n\nPemberitahuan mungkin ditangguhkan untuk apl ini.""Untuk melanjutkan hayat bateri, Bateri Mudah Suai mengehadkan bateri untuk apl yang jarang digunakan. Peranti anda akan mempelajari cara anda menggunakan apl dari semasa ke semasa.\n\nPemberitahuan mungkin ditangguhkan untuk apl ini.""Gunakan Bateri Mudah Suai""Hidupkan Bateri Mudah Suai"
================================================
FILE: overlay/packages/apps/Settings/res/values-my/strings.xml
================================================
"\'အလိုက်အထိုက် ဘက်ထရီအားထိန်း\' ကို ဖွင့်ပါ""အလိုက်အထိုက် ဘက်ထရီအားထိန်း""ဘက်ထရီသက်တမ်း တိုးလာစေရန် \'အလိုက်သင့် ဘက်ထရီအားထိန်း\' သည် အသုံးနည်းသည့် အက်ပ်များအတွက် ဘက်ထရီကို ကန့်သတ်ပေးပါသည်။ သင်၏ တက်ဘလက်သည် အချိန်ကြာလာသည်နှင့် အမျှ အက်ပ်များကို မည်ကဲ့သို့ အသုံးပြုသင့်ကြောင်း လေ့လာသွားပါမည်။\n\nဤအက်ပ်များအတွက် အကြောင်းကြားချက်များသည် ကြန့်ကြာမှု ရှိနိုင်ပါသည်။""ဘက်ထရီသက်တမ်း တိုးလာစေရန် \'အလိုက်သင့် ဘက်ထရီအားထိန်း\' သည် အသုံးနည်းသည့် အက်ပ်များအတွက် ဘက်ထရီကို ကန့်သတ်ပေးပါသည်။ သင်၏စက်ပစ္စည်းသည် အချိန်ကြာလာသည်နှင့် အမျှ အက်ပ်များကို မည်ကဲ့သို့ အသုံးပြုသင့်ကြောင်း လေ့လာသွားပါမည်။\n\nဤအက်ပ်များအတွက် အကြောင်းကြားချက်များသည် ကြန့်ကြာမှု ရှိနိုင်ပါသည်။""\'အလိုက်အထိုက် ဘက်ထရီအားထိန်း\' ကို သုံးပါ""\'အလိုက်အထိုက် ဘက်ထရီအားထိန်း\' ကို ဖွင့်ပါ"
================================================
FILE: overlay/packages/apps/Settings/res/values-nb/strings.xml
================================================
"Slå på Tilpasset batteri""Tilpasset batteri""Tilpasset batteri begrenser batteribruken for apper du bruker sjelden, for å forlenge batterilevetiden. Nettbrettet lærer hvordan du bruker apper over tid.\n\nVarsler kan bli forsinket for disse appene.""Tilpasset batteri begrenser batteribruken for apper du bruker sjelden, for å forlenge batterilevetiden. Enheten lærer hvordan du bruker apper over tid.\n\nVarsler kan bli forsinket for disse appene.""Bruk Tilpasset batteri""Slå på Tilpasset batteri"
================================================
FILE: overlay/packages/apps/Settings/res/values-ne/strings.xml
================================================
"अनुकूलनीय ब्याट्री सक्रिय गर्नुहोस्""अनुकूलनीय ब्याट्री""ब्याट्रीको आयु बढाउन, अनुकूलनीय ब्याट्रीले ब्याट्रीलाई कहिलेकाहीँ मात्र प्रयोग गरिने अनुप्रयोगहरूमा सीमित गर्दछ। तपाईंको फोनले अनुप्रयोहरूलाई समयअनुसार कसरी प्रयोग गर्ने भन्ने सिक्ने छ।\n\nयी अनुप्रयोगहरूसम्बन्धी सूचनाहरू आइपुग्न ढिलाइ हुन सक्छ।""ब्याट्रीको आयु बढाउन, अनुकूलनीय ब्याट्रीले ब्याट्रीलाई कहिलेकाहीँ मात्र प्रयोग गरिने अनुप्रयोगहरूमा सीमित गर्दछ। तपाईंको यन्त्रले अनुप्रयोहरूलाई समयअनुसार कसरी प्रयोग गर्ने भन्ने सिक्ने छ। \n\nयी अनुप्रयोगहरूसम्बन्धी सूचनाहरू आइपुग्न ढिलाइ हुन सक्छ।""अनुकूलनीय ब्याट्री प्रयोग गर्नुहोस्""अनुकूलनीय ब्याट्री सक्रिय गर्नुहोस्"
================================================
FILE: overlay/packages/apps/Settings/res/values-nl/strings.xml
================================================
"\'Aanpasbaar batterijbeheer\' inschakelen""Aanpasbaar batterijbeheer""\'Aanpasbaar batterijbeheer\' beperkt het batterijgebruik van weinig gebruikte apps om de levensduur van de batterij te verlengen. Je tablet leert in de loop van de tijd hoe je apps gebruikt.\n\nMeldingen kunnen worden vertraagd voor deze apps.""\'Aanpasbaar batterijbeheer\' beperkt het batterijgebruik van weinig gebruikte apps om de levensduur van de batterij te verlengen. Je apparaat leert in de loop van de tijd hoe je apps gebruikt.\n\nMeldingen kunnen worden vertraagd voor deze apps.""\'Aanpasbaar batterijbeheer\' gebruiken""\'Aanpasbaar batterijbeheer\' inschakelen"
================================================
FILE: overlay/packages/apps/Settings/res/values-or/strings.xml
================================================
"ଆବଶ୍ୟକତା ଅନୁସାରେ ବ୍ୟାଟେରୀ ବ୍ୟବହାରର ସୁବିଧା ଚାଲୁ କରନ୍ତୁ""ଆବଶ୍ୟକତା ଅନୁସାରେ ବ୍ୟାଟେରୀର ବ୍ୟବହାର""ବ୍ୟାଟେରୀ ଖର୍ଚ୍ଚକୁ କମ୍ କରିବା ପାଇଁ, ଆବଶ୍ୟକତା ଅନୁସାରେ ବ୍ୟାଟେରୀର ନିୟମିତ ବ୍ୟବହାର କରୁନଥିବା ଆପ୍କୁ ସୀମିତ କରିଦେଇଥାଏ। ସମୟାନୁସାରେ ଆପଣ ଆପ୍କୁ କିପରି ବ୍ୟବହାର କରୁଛନ୍ତି, ତାହା ଆପଣଙ୍କ ଟାବଲେଟ୍ ଜାଣିପାରେ। \n\nଏହି ଆପ୍ ପାଇଁ ବିଜ୍ଞପ୍ତି ମିଳିବାରେ ବିଳମ୍ୱ ହୋଇପାରେ।""ବ୍ୟାଟେରୀ ଖର୍ଚ୍ଚକୁ କମ୍ କରିବା ପାଇଁ, ଆବଶ୍ୟକତା ଅନୁସାରେ ବ୍ୟାଟେରୀର ନିୟମିତ ବ୍ୟବହାର କରୁନଥିବା ଆପ୍କୁ ସୀମିତ କରିଦେଇଥାଏ। ସମୟାନୁସାରେ ଆପଣ ଆପ୍କୁ କିପରି ବ୍ୟବହାର କରୁଛନ୍ତି, ତାହା ଆପଣଙ୍କ ଡିଭାଇସ୍ ଜାଣିପାରେ। \n\nଏହି ଆପ୍ ପାଇଁ ବିଜ୍ଞପ୍ତି ମିଳିବାରେ ବିଳମ୍ୱ ହୋଇପାରେ।""ଆବଶ୍ୟକତା ଅନୁସାରେ ବ୍ୟାଟେରୀର ବ୍ୟବହାର କରନ୍ତୁ""ଆବଶ୍ୟକତା ଅନୁସାରେ ବ୍ୟାଟେରୀ ବ୍ୟବହାରର ସୁବିଧା ଚାଲୁ କରନ୍ତୁ"
================================================
FILE: overlay/packages/apps/Settings/res/values-pa/strings.xml
================================================
"ਅਨੁਕੂਲਨਯੋਗ ਬੈਟਰੀ ਚਾਲੂ ਕਰੋ""ਅਨੁਕੂਲਨਯੋਗ ਬੈਟਰੀ""ਬੈਟਰੀ ਲਾਈਫ਼ ਨੂੰ ਵਧਾਉਣ ਲਈ, ਅਨੁਕੂਲਨਯੋਗ ਬੈਟਰੀ ਕਦੇ-ਕਦੇ ਵਰਤੀਆਂ ਗਈਆਂ ਐਪਾਂ ਲਈ ਬੈਟਰੀ ਦੀ ਵਰਤੋਂ ਨੂੰ ਸੀਮਤ ਕਰਦਾ ਹੈ। ਸਮੇਂ ਦੇ ਨਾਲ ਤੁਹਾਡਾ ਟੈਬਲੈੱਟ ਇਹ ਜਾਣ ਜਾਵੇਗਾ ਕਿ ਤੁਸੀਂ ਕਿਵੇਂ ਐਪਾਂ ਦੀ ਵਰਤੋਂ ਕਰਦੇ ਹੋ।\n\nਇਹਨਾਂ ਐਪਾਂ ਦੀਆਂ ਸੂਚਨਾਵਾਂ ਦਿਖਾਉਣ ਵਿੱਚ ਦੇਰੀ ਹੋ ਸਕਦੀ ਹੈ।""ਬੈਟਰੀ ਲਾਈਫ਼ ਨੂੰ ਵਧਾਉਣ ਲਈ, ਅਨੁਕੂਲਨਯੋਗ ਬੈਟਰੀ ਕਦੇ-ਕਦੇ ਵਰਤੀਆਂ ਗਈਆਂ ਐਪਾਂ ਲਈ ਬੈਟਰੀ ਦੀ ਵਰਤੋਂ ਨੂੰ ਸੀਮਤ ਕਰਦਾ ਹੈ। ਸਮੇਂ ਦੇ ਨਾਲ ਤੁਹਾਡਾ ਡੀਵਾਈਸ ਇਹ ਜਾਣ ਜਾਵੇਗਾ ਕਿ ਤੁਸੀਂ ਕਿਵੇਂ ਐਪਾਂ ਦੀ ਵਰਤੋਂ ਕਰਦੇ ਹੋ।\n\nਇਹਨਾਂ ਐਪਾਂ ਦੀਆਂ ਸੂਚਨਾਵਾਂ ਦਿਖਾਉਣ ਵਿੱਚ ਦੇਰੀ ਹੋ ਸਕਦੀ ਹੈ।""ਅਨੁਕੂਲਨਯੋਗ ਬੈਟਰੀ ਦੀ ਵਰਤੋਂ ਕਰੋ""ਅਨੁਕੂਲਨਯੋਗ ਬੈਟਰੀ ਚਾਲੂ ਕਰੋ"
================================================
FILE: overlay/packages/apps/Settings/res/values-pl/strings.xml
================================================
"Włącz Baterię adaptacyjną""Bateria adaptacyjna""Aby wydłużyć czas pracy na baterii, Bateria adaptacyjna ogranicza wykorzystanie baterii przez rzadko używane aplikacje. Z biegiem czasu tablet zacznie uwzględniać, jak używasz aplikacji.\n\nPowiadomienia z takich aplikacji mogą być opóźnione.""Aby wydłużyć czas pracy na baterii, Bateria adaptacyjna ogranicza wykorzystanie baterii przez rzadko używane aplikacje. Z biegiem czasu urządzenie zacznie uwzględniać, jak używasz aplikacji.\n\nPowiadomienia z takich aplikacji mogą być opóźnione.""Użyj Baterii adaptacyjnej""Włącz Baterię adaptacyjną"
================================================
FILE: overlay/packages/apps/Settings/res/values-pt/strings.xml
================================================
"Ative a Bateria adaptável""Bateria adaptável""Para aumentar a duração da bateria, a Bateria adaptável limita a bateria para apps pouco utilizados. Com o tempo, seu tablet aprenderá como você usa os apps.\n\nÉ possível que as notificações desses apps sejam entregues com atraso.""Para aumentar a duração da bateria, a Bateria adaptável limita a bateria para apps pouco utilizados. Com o tempo, seu dispositivo aprenderá como você usa os apps.\n\nÉ possível que as notificações desses apps sejam entregues com atraso.""Usar Bateria adaptável""Ative a Bateria adaptável"
================================================
FILE: overlay/packages/apps/Settings/res/values-pt-rBR/strings.xml
================================================
"Ative a Bateria adaptável""Bateria adaptável""Para aumentar a duração da bateria, a Bateria adaptável limita a bateria para apps pouco utilizados. Com o tempo, seu tablet aprenderá como você usa os apps.\n\nÉ possível que as notificações desses apps sejam entregues com atraso.""Para aumentar a duração da bateria, a Bateria adaptável limita a bateria para apps pouco utilizados. Com o tempo, seu dispositivo aprenderá como você usa os apps.\n\nÉ possível que as notificações desses apps sejam entregues com atraso.""Usar Bateria adaptável""Ative a Bateria adaptável"
================================================
FILE: overlay/packages/apps/Settings/res/values-pt-rPT/strings.xml
================================================
"Ative a funcionalidade Adaptive Battery.""Adaptive Battery""Para aumentar a autonomia da bateria, a funcionalidade Adaptive Battery limita a bateria para aplicações utilizadas poucas vezes. O tablet vai perceber de que forma utiliza as aplicações ao longo do tempo.\n\nAs notificações destas aplicações poderão sofrer atrasos.""Para aumentar a autonomia da bateria, a funcionalidade Adaptive Battery limita a bateria para aplicações utilizadas poucas vezes. O dispositivo vai perceber de que forma utiliza as aplicações ao longo do tempo.\n\nAs notificações destas aplicações poderão sofrer atrasos.""Utilizar a funcionalidade Adaptive Battery""Ative a funcionalidade Adaptive Battery."
================================================
FILE: overlay/packages/apps/Settings/res/values-ro/strings.xml
================================================
"Activați Adaptive Battery""Adaptive Battery""Pentru a prelungi autonomia bateriei, Adaptive Battery limitează bateria pentru aplicațiile utilizate rar. Tableta va afla cum folosiți aplicațiile în timp.\n\nNotificările de la aceste aplicații se pot primi cu întârziere.""Pentru a prelungi autonomia bateriei, Adaptive Battery limitează bateria pentru aplicațiile utilizate rar. Dispozitivul va afla cum folosiți aplicațiile în timp.\n\nNotificările de la aceste aplicații se pot primi cu întârziere.""Folosiți Adaptive Battery""Activați Adaptive Battery"
================================================
FILE: overlay/packages/apps/Settings/res/values-ru/strings.xml
================================================
"Включите Adaptive Battery""Adaptive Battery""Чтобы продлить время работы от батареи, функция Adaptive Battery ограничивает фоновые процессы редко используемых приложений. Со временем ваш планшет запоминает, какие приложения вы используете чаще, а какие реже.\n\nУведомления от приложений, работу которых вы ограничиваете, могут приходить с задержкой.""Чтобы продлить время работы от батареи, функция Adaptive Battery ограничивает фоновые процессы редко используемых приложений. Со временем ваше устройство запоминает, какие приложения вы используете чаще, а какие реже.\n\nУведомления от приложений, работу которых вы ограничиваете, могут приходить с задержкой.""Включить Adaptive Battery""Включите Adaptive Battery"
================================================
FILE: overlay/packages/apps/Settings/res/values-si/strings.xml
================================================
"අනුවර්තනීය බැටරිය ක්රියාත්මක කරන්න""අනුවර්තනීය බැටරිය""බැටරි ආයු කාලය දිගු කිරීමට, අනුවර්තනීය බැටරිය නිතර භාවිත කරන යෙදුම් සඳහා බැටරිය සීමා කරයි. ඔබගේ ටැබ්ලට් පරිගණකය කාලයත් සමඟ යෙදුම් භාවිත කරන ආකාරය දැන ගනු ඇත.\n\nමෙම යෙදුම් සඳහා දැනුම්දීම් ප්රමාද විය හැකිය.""බැටරි ආයු කාලය දිගු කිරීමට, අනුවර්තනීය බැටරිය නිතර භාවිත කරන යෙදුම් සඳහා බැටරිය සීමා කරයි. ඔබගේ උපාංගය කාලයත් සමඟ යෙදුම් භාවිත කරන ආකාරය දැන ගනු ඇත.\n\nමෙම යෙදුම් සඳහා දැනුම්දීම් ප්රමාද විය හැකිය.""අනුවර්තනීය බැටරිය භාවිත කරන්න""අනුවර්තනීය බැටරිය ක්රියාත්මක කරන්න"
================================================
FILE: overlay/packages/apps/Settings/res/values-sk/strings.xml
================================================
"Zapnite adaptáciu batériu""Adaptácia batérie""Adaptácia batérie predĺži výdrž batérie tým, že obmedzí využívanie batérie zriedka používanými aplikáciami. Váš tablet sa časom naučí, ako využívate aplikácie.\n\nUpozornenia z týchto aplikácií môžu byť oneskorené.""Adaptácia batérie predĺži výdrž batérie tým, že obmedzí využívanie batérie zriedka používanými aplikáciami. Vaše zariadenie sa časom naučí, ako využívate aplikácie.\n\nUpozornenia z týchto aplikácií môžu byť oneskorené.""Používať adaptáciu batérie""Zapnite adaptáciu batérie"
================================================
FILE: overlay/packages/apps/Settings/res/values-sl/strings.xml
================================================
"Vklopi prilagodljivo varčevanje z energijo akumulatorja""Prilagodljivo varčevanje z energijo akumulatorja""Prilagodljivo varčevanje z energijo akumulatorja omeji porabo energije akumulatorja za redko uporabljene aplikacije, da podaljša čas delovanja akumulatorja. Tablični računalnik se bo sčasoma naučil, kako uporabljate aplikacije.\n\nObvestila za te aplikacije bodo morda zakasnjena.""Prilagodljivo varčevanje z energijo akumulatorja omeji porabo energije akumulatorja za redko uporabljene aplikacije, da podaljša čas delovanja akumulatorja. Naprava se bo sčasoma naučila, kako uporabljate aplikacije.\n\nObvestila za te aplikacije bodo morda zakasnjena.""Uporaba prilagodljivega varčevanja z energijo akumulatorja""Vklopi prilagodljivo varčevanje z energijo akumulatorja"
================================================
FILE: overlay/packages/apps/Settings/res/values-sq/strings.xml
================================================
"Aktivizo \"Baterinë me përshtatje\"""Bateria me përshtatje""Për të zgjatur kohëzgjatjen e baterisë, \"Bateria me përshtatje\" kufizon baterinë për aplikacionet që nuk përdoren shpesh. Tableti yt do të mësojë se si i përdor ti aplikacionet me kalimin e kohës.\n\nNjoftimet mund të vonohen për këto aplikacione.""Për të zgjatur kohëzgjatjen e baterisë, \"Bateria me përshtatje\" kufizon baterinë për aplikacionet që nuk përdoren shpesh. Pajisja jote do të mësojë se si i përdor ti aplikacionet me kalimin e kohës.\n\nNjoftimet mund të vonohen për këto aplikacione.""Përdor \"Baterinë me përshtatje\"""Aktivizo \"Baterinë me përshtatje\""
================================================
FILE: overlay/packages/apps/Settings/res/values-sr/strings.xml
================================================
"Укључите прилагодљиву батерију""Прилагодљива батерија""Да бисте продужили трајање батерије, прилагодљива батерија ограничава потрошњу батерије за апликације које се не користе често. Таблет ће временом научити како да користи апликације.\n\nОбавештења о овим апликацијама могу да касне.""Да бисте продужили трајање батерије, прилагодљива батерија ограничава потрошњу батерије за апликације које се не користе често. Уређај ће временом научити како да користи апликације.\n\nОбавештења о овим апликацијама могу да касне.""Користи прилагодљиву батерију""Укључите прилагодљиву батерију"
================================================
FILE: overlay/packages/apps/Settings/res/values-sv/strings.xml
================================================
"Aktivera Smart batteri""Smart batteri""Med Smart batteri förlängs batteritiden genom att batterianvändningen begränsas för appar som används sällan. Surfplattan lär sig hur du använder appar med tiden.\n\nAviseringar från dessa appar kan fördröjas.""Med Smart batteri förlängs batteritiden genom att batterianvändningen begränsas för appar som används sällan. Enheten lär sig hur du använder appar med tiden.\n\nAviseringar från dessa appar kan fördröjas.""Använd Smart batteri""Aktivera Smart batteri"
================================================
FILE: overlay/packages/apps/Settings/res/values-sw/strings.xml
================================================
"Washa Betri Inayojirekebisha""Betri Inayojirekebisha""Ili uongeze muda wa matumizi ya betri, Betri Inayojirekebisha hudhibiti matumizi ya betri katika programu ambazo huzitumii zaidi. Kompyuta yako kibao itajifunza jinsi unavyotumia programu hizi baada ya muda fulani.\n\nHuenda arifa zikachelewa katika programu hizi.""Ili uongeze muda wa matumizi ya betri, Betri Inayojirekebisha hudhibiti matumizi ya betri katika programu ambazo hutumii sana. Kifaa chako kitajifunza jinsi unavyotumia programu hizi baada ya muda fulani. \n\nHuenda arifa za programu hizi zikachelewa.""Tumia Betri Inayojirekebisha""Washa Betri Inayojirekebisha"
================================================
FILE: overlay/packages/apps/Settings/res/values-ta/strings.xml
================================================
"அடாப்டிவ் பேட்டரியை ஆன் செய்க""அடாப்டிவ் பேட்டரி""பேட்டரி நிலையை நீட்டிக்க, அடாப்டிவ் பேட்டரியானது அடிக்கடி பயன்படுத்தாத ஆப்ஸிற்கு பேட்டரியைக் கட்டுப்படுத்தும். உங்கள் டேப்லெட்டானது காலப்போக்கில் ஆப்ஸ் எப்படி பேட்டரியைப் பயன்படுத்துகிறது என்பதை அறிந்துகொள்ளும்.\n\nஇந்த ஆப்ஸிற்கான அறிவிப்புகள் தாமதமாக வரலாம்.""பேட்டரி நிலையை நீட்டிக்க, அடாப்டிவ் பேட்டரியானது அடிக்கடி பயன்படுத்தாத ஆப்ஸிற்கு பேட்டரியைக் கட்டுப்படுத்தும். உங்கள் சாதனமானது காலப்போக்கில் ஆப்ஸ் எப்படி பேட்டரியைப் பயன்படுத்துகிறது என்பதை அறிந்துகொள்ளும்.\n\nஇந்த ஆப்ஸிற்கான அறிவிப்புகள் தாமதமாக வரலாம்.""அடாப்டிவ் பேட்டரியைப் பயன்படுத்து""அடாப்டிவ் பேட்டரியை ஆன் செய்க"
================================================
FILE: overlay/packages/apps/Settings/res/values-te/strings.xml
================================================
"అనుకూల బ్యాటరీని ఆన్ చేయండి""అనుకూల బ్యాటరీ""బ్యాటరీ పనితీరును విస్తరించడానికి, అనుకూల బ్యాటరీ అరుదుగా ఉపయోగించే యాప్ల కోసం బ్యాటరీని పరిమితం చేస్తుంది. మీరు యాప్లను ఎలా ఉపయోగిస్తారో అన్నది కాలక్రమేణా మీ టాబ్లెట్ అర్థం చేసుకుంటుంది. \n\n ఈ యాప్ కోసం నోటిఫికేషన్లు రావడానికి ఆలస్యం కావచ్చు.""బ్యాటరీ పనితీరును విస్తరించడానికి, అనుకూల బ్యాటరీ అరుదుగా ఉపయోగించే యాప్ల కోసం బ్యాటరీని పరిమితం చేస్తుంది. మీరు యాప్లను ఎలా ఉపయోగిస్తారో అన్నది కాలక్రమేణా మీ ఫోన్ పరికరం చేసుకుంటుంది. \n\n ఈ యాప్ కోసం నోటిఫికేషన్లు రావడానికి ఆలస్యం కావచ్చు.""అనుకూల బ్యాటరీని ఉపయోగించండి""అనుకూల బ్యాటరీని ఆన్ చేయండి"
================================================
FILE: overlay/packages/apps/Settings/res/values-th/strings.xml
================================================
"เปิดแบตเตอรี่แบบปรับอัตโนมัติ""แบตเตอรี่แบบปรับอัตโนมัติ""แบตเตอรี่แบบปรับอัตโนมัติจะจำกัดแบตเตอรี่ของแอปที่ใช้ไม่บ่อยเพื่อยืดอายุการใช้งานแบตเตอรี่ แท็บเล็ตจะเรียนรู้วิธีที่คุณใช้แอปเมื่อเวลาผ่านไป\n\nการแจ้งเตือนของแอปเหล่านี้อาจล่าช้า""แบตเตอรี่แบบปรับอัตโนมัติจะจำกัดแบตเตอรี่ของแอปที่ใช้ไม่บ่อยเพื่อยืดอายุการใช้งานแบตเตอรี่ อุปกรณ์จะเรียนรู้วิธีที่คุณใช้แอปเมื่อเวลาผ่านไป\n\nการแจ้งเตือนของแอปเหล่านี้อาจล่าช้า""ใช้แบตเตอรี่แบบปรับอัตโนมัติ""เปิดแบตเตอรี่แบบปรับอัตโนมัติ"
================================================
FILE: overlay/packages/apps/Settings/res/values-tl/strings.xml
================================================
"I-on ang Adaptive Battery""Adaptive Battery""Para mapatagal ang baterya, nililimitahan ng Adaptive Battery ang baterya para sa mga app na hindi madalas na ginagamit. Matututunan ng iyong tablet kung paano mo ginagamit ang mga app sa paglipas ng panahon.\n\nMaaaring maantala ang mga notification para sa mga app na ito.""Para mapatagal ang baterya, nililimitahan ng Adaptive Battery ang baterya para sa mga app na hindi madalas na ginagamit. Matututunan ng iyong device kung paano mo ginagamit ang mga app sa paglipas ng panahon.\n\nMaaaring maantala ang mga notification para sa mga app na ito.""Gamitin ang Adaptive Battery""I-on ang Adaptive Battery"
================================================
FILE: overlay/packages/apps/Settings/res/values-tr/strings.xml
================================================
"Uyarlamalı Pil\'i aç""Uyarlamalı Pil""Uyarlamalı Pil özelliği pil ömrünü uzatmak için, sık kullanılmayan uygulamaların pil tüketimini sınırlar. Tabletiniz, zamanla uygulamaları nasıl kullandığınızı öğrenir.\n\nBu uygulamalara ait bildirimlerde gecikme olabilir.""Uyarlamalı Pil özelliği pil ömrünü uzatmak için, sık kullanılmayan uygulamaların pil tüketimini sınırlar. Cihazınız, zamanla uygulamaları nasıl kullandığınızı öğrenir.\n\nBu uygulamalara ait bildirimlerde gecikme olabilir.""Uyarlamalı Pil özelliğini kullan""Uyarlamalı Pil\'i aç"
================================================
FILE: overlay/packages/apps/Settings/res/values-uk/strings.xml
================================================
"Увімкнути адаптивний акумулятор""Адаптивний акумулятор""Щоб пристрій працював довше, адаптивний акумулятор обмежує споживання заряду для додатків, які рідко використовуються. Планшет із часом визначить, як ви ними користуєтесь.\n\nСповіщення з цих додатків можуть надходити із затримкою.""Щоб пристрій працював довше, адаптивний акумулятор обмежує споживання заряду для додатків, які рідко використовуються. Пристрій із часом визначить, як ви ними користуєтесь.\n\nСповіщення з цих додатків можуть надходити із затримкою.""Використовувати адаптивний акумулятор""Увімкнути адаптивний акумулятор"
================================================
FILE: overlay/packages/apps/Settings/res/values-ur/strings.xml
================================================
"تغیر پذیر بیٹری آن کریں""تغیر پذیر بیٹری""بیٹری لائف بڑھانے کے لیے، تغیر پذیر بیٹری کبھی کبھار استعمال کی جانے والی ایپس کے لیے بیٹری کو محدود کرتی ہے۔ وقت گزرنے پر، آپ کا ٹیبلیٹ ایپس استعمال کرنے کا طریقہ سیکھے گا۔\n\nان ایپس کے لیے اطلاعات میں تاخیر ہو سکتی ہے۔""بیٹری لائف بڑھانے کے لیے، تغیر پذیر بیٹری کبھی کبھار استعمال کی جانے والی ایپس کے لیے بیٹری کو محدود کرتی ہے۔ وقت گزرنے پر، آپ کا آلہ ایپس استعمال کرنے کا طریقہ سیکھے گا۔\n\nان ایپس کے لیے اطلاعات میں تاخیر ہو سکتی ہے۔""تغیر پذیر بیٹری استعمال کریں""تغیر پذیر بیٹری آن کریں"
================================================
FILE: overlay/packages/apps/Settings/res/values-uz/strings.xml
================================================
"Adaptive Battery funksiyasini yoqing""Adaptive Battery""Batareya quvvatini uzaytirish uchun Adaptive Battery kam ishlatiladigan ilovalar uchun batareyani cheklaydi. Planshetingiz ilovalardan qancha muddatda foydalanishingizni o‘rganib boradi.\n\nMazkur ilovalar uchun bildirishnomalar kechikishi mumkin.""Batareya quvvatini uzaytirish uchun Adaptive Battery kam ishlatiladigan ilovalar uchun batareyani cheklaydi. Qurilmangiz ilovalardan qancha muddatda foydalanishingizni o‘rganib boradi.\n\nMazkur ilovalar uchun bildirishnomalar kechikishi mumkin.""Adaptive Battery funksiyasidan foydalanish""Adaptive Battery funksiyasini yoqing"
================================================
FILE: overlay/packages/apps/Settings/res/values-vi/strings.xml
================================================
"Bật tùy chọn Pin thích ứng""Pin thích ứng""Để kéo dài thời lượng pin, tùy chọn Pin thích ứng sẽ giới hạn mức sử dụng pin đối với các ứng dụng ít dùng. Máy tính bảng sẽ tìm hiểu cách bạn sử dụng ứng dụng theo thời gian.\n\nThông báo có thể bị chậm trễ đối với những ứng dụng này.""Để kéo dài thời lượng pin, tùy chọn Pin thích ứng sẽ giới hạn mức sử dụng pin đối với các ứng dụng ít dùng. Thiết bị sẽ tìm hiểu cách bạn sử dụng ứng dụng theo thời gian.\n\nThông báo có thể bị chậm trễ đối với những ứng dụng này.""Sử dụng Pin thích ứng""Bật tùy chọn Pin thích ứng"
================================================
FILE: overlay/packages/apps/Settings/res/values-zh-rCN/strings.xml
================================================
"开启 Adaptive Battery""Adaptive Battery""为了延长电池续航时间,Adaptive Battery 会针对不常用的应用限制用电量。久而久之,您的平板电脑就会逐渐了解应用的使用情况。\n\n这些应用的通知可能会有所延迟。""为了延长电池续航时间,Adaptive Battery 会针对不常用的应用限制用电量。久而久之,您的设备就会逐渐了解应用的使用情况。\n\n这些应用的通知可能会有所延迟。""使用 Adaptive Battery""开启 Adaptive Battery"
================================================
FILE: overlay/packages/apps/Settings/res/values-zh-rHK/strings.xml
================================================
"開啟「自動調節電池用量」""自動調節電池用量""為延長電池壽命,「自動調節電池用量」會為不常用的應用程式限制用電量。您的平板電腦會瞭解應用程式在不同時間的使用情況。\n\n這些應用程式通知可能會延遲。""為延長電池壽命,「自動調節電池用量」會為不常用的應用程式限制用電量。您的裝置會瞭解應用程式在不同時間的使用情況。\n\n這些應用程式通知可能會延遲。""使用自動調節電池用量""開啟「自動調節電池用量」"
================================================
FILE: overlay/packages/apps/Settings/res/values-zh-rTW/strings.xml
================================================
"開啟自動調節電池用量功能""自動調節電池用量""為了延長電池續航力,「自動調節電池用量」功能會針對不常使用的應用程式限制電池用量。一段時間後,你的平板電腦會記住應用程式的使用情形。\n\n這些應用程式的通知可能會延遲。""為了延長電池續航力,「自動調節電池用量」功能會針對不常使用的應用程式限制電池用量。一段時間後,你的裝置會記住應用程式的使用情形。\n\n這些應用程式的通知可能會延遲。""使用自動調節電池用量功能""開啟自動調節電池用量功能"
================================================
FILE: overlay/packages/apps/Settings/res/values-zu/strings.xml
================================================
"Vula ibhethri le-Adaptive""I-Adaptive Battery""Ukuze kunwetshwe impilo yebhethri, i-Adaptive Battery ikhawulela ibhethri kuzinhlelo zokusebenza ezingasetshenziswa kakhulu. Ithebhulethi yakho izofunda ukuthi uzisebenzisa kanjani izinhlelo zokusebenza ngesikhathi.\n\nIzaziso zingabambezeleka kulezi zinhlelo zokusebenza.""Ukuze kunwetshwe impilo yebhethri, i-Adaptive Battery ikhawulela ibhethri kuzinhlelo zokusebenza ezingasetshenziswa kakhulu. Idivayisi yakho izofunda ukuthi uzisebenzisa kanjani izinhlelo zokusebenza ngesikhathi.\n\nIzaziso zingabambezeleka kulezi zinhlelo zokusebenza.""Sebenzisa i-Adaptive Battery""Vula ibhethri le-Adaptive"
================================================
FILE: overlay/packages/services/Telecomm/res/values/config.xml
================================================
com.android.incallui.InCallServiceImpltruefalse
================================================
FILE: overlay/packages/services/Telephony/res/values/config.xml
================================================
1truefalsetruetruetruetruetruetruetrue
================================================
FILE: overlay/packages/services/Telephony/res/values-mcc234-mnc15/strings.xml
================================================
Data Roaming enables you to browse the web, use email, MMS and other data services while abroad. Check with your network provider for pricingData Roaming enables you to browse the web, use email, MMS and other data services while abroad. Check with your network provider for pricingClick <OK> to use data while roaming. Check with your network provider for pricing.
================================================
FILE: overlay/packages/services/Telephony/res/values-mcc234-mnc15-en-rGB/strings.xml
================================================
Data Roaming enables you to browse the web, use email, MMS and other data services while abroad. Check with your network provider for pricingData Roaming enables you to browse the web, use email, MMS and other data services while abroad. Check with your network provider for pricingClick <OK> to use data while roaming. Check with your network provider for pricing.
================================================
FILE: overlay/packages/services/Telephony/res/values-mcc234-mnc15-en-rIN/strings.xml
================================================
Data Roaming enables you to browse the web, use email, MMS and other data services while abroad. Check with your network provider for pricingData Roaming enables you to browse the web, use email, MMS and other data services while abroad. Check with your network provider for pricingClick <OK> to use data while roaming. Check with your network provider for pricing.
================================================
FILE: overlay/packages/services/Telephony/res/values-mcc262-mnc02/strings.xml
================================================
Data Roaming enables you to browse the web, use email, MMS and other data services while abroad. Check with your network provider for pricingData Roaming enables you to browse the web, use email, MMS and other data services while abroad. Check with your network provider for pricingClick <OK> to use data while roaming. Check with your network provider for pricing.
================================================
FILE: overlay/packages/services/Telephony/res/values-mcc262-mnc02-en-rGB/strings.xml
================================================
Data Roaming enables you to browse the web, use email, MMS and other data services while abroad. Check with your network provider for pricingData Roaming enables you to browse the web, use email, MMS and other data services while abroad. Check with your network provider for pricingClick <OK> to use data while roaming. Check with your network provider for pricing.
================================================
FILE: overlay/packages/services/Telephony/res/values-mcc262-mnc02-en-rIN/strings.xml
================================================
Data Roaming enables you to browse the web, use email, MMS and other data services while abroad. Check with your network provider for pricingData Roaming enables you to browse the web, use email, MMS and other data services while abroad. Check with your network provider for pricingClick <OK> to use data while roaming. Check with your network provider for pricing.
================================================
FILE: overlay/packages/services/Telephony/res/values-mcc262-mnc04/strings.xml
================================================
Data Roaming enables you to browse the web, use email, MMS and other data services while abroad. Check with your network provider for pricingData Roaming enables you to browse the web, use email, MMS and other data services while abroad. Check with your network provider for pricingClick <OK> to use data while roaming. Check with your network provider for pricing.
================================================
FILE: overlay/packages/services/Telephony/res/values-mcc262-mnc04-en-rGB/strings.xml
================================================
Data Roaming enables you to browse the web, use email, MMS and other data services while abroad. Check with your network provider for pricingData Roaming enables you to browse the web, use email, MMS and other data services while abroad. Check with your network provider for pricingClick <OK> to use data while roaming. Check with your network provider for pricing.
================================================
FILE: overlay/packages/services/Telephony/res/values-mcc262-mnc04-en-rIN/strings.xml
================================================
Data Roaming enables you to browse the web, use email, MMS and other data services while abroad. Check with your network provider for pricingData Roaming enables you to browse the web, use email, MMS and other data services while abroad. Check with your network provider for pricingClick <OK> to use data while roaming. Check with your network provider for pricing.
================================================
FILE: overlay/packages/services/Telephony/res/values-mcc262-mnc09/strings.xml
================================================
Data Roaming enables you to browse the web, use email, MMS and other data services while abroad. Check with your network provider for pricingData Roaming enables you to browse the web, use email, MMS and other data services while abroad. Check with your network provider for pricingClick <OK> to use data while roaming. Check with your network provider for pricing.
================================================
FILE: overlay/packages/services/Telephony/res/values-mcc262-mnc09-en-rGB/strings.xml
================================================
Data Roaming enables you to browse the web, use email, MMS and other data services while abroad. Check with your network provider for pricingData Roaming enables you to browse the web, use email, MMS and other data services while abroad. Check with your network provider for pricingClick <OK> to use data while roaming. Check with your network provider for pricing.
================================================
FILE: overlay/packages/services/Telephony/res/values-mcc262-mnc09-en-rIN/strings.xml
================================================
Data Roaming enables you to browse the web, use email, MMS and other data services while abroad. Check with your network provider for pricingData Roaming enables you to browse the web, use email, MMS and other data services while abroad. Check with your network provider for pricingClick <OK> to use data while roaming. Check with your network provider for pricing.
================================================
FILE: p2p_supplicant_overlay.conf
================================================
disable_scan_offload=1
p2p_no_group_iface=1
persistent_reconnect=1
================================================
FILE: power/AudioStreaming.h
================================================
/*
* Copyright (C) 2019 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
#ifndef POWER_LIBPERFMGR_AUDIOSTREAMING_H_
#define POWER_LIBPERFMGR_AUDIOSTREAMING_H_
enum AUDIO_STREAMING_HINT {
AUDIO_STREAMING_OFF = 0,
AUDIO_STREAMING_ON = 1,
TPU_BOOST_OFF = 1000,
TPU_BOOST_SHORT = 1001,
TPU_BOOST_LONG = 1002
};
enum TPU_HINT_DURATION_MS { SHORT = 200, LONG = 2000 };
#endif // POWER_LIBPERFMGR_AUDIOSTREAMING_H_
================================================
FILE: power/CameraMode.h
================================================
/*
* Copyright (C) 2018 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
#ifndef POWER_LIBPERFMGR_CAMERAMODE_H_
#define POWER_LIBPERFMGR_CAMERAMODE_H_
enum CameraStreamingMode {
CAMERA_STREAMING_OFF = 0,
CAMERA_STREAMING,
CAMERA_STREAMING_1080P,
CAMERA_STREAMING_4K,
CAMERA_STREAMING_MAX
};
#endif // POWER_LIBPERFMGR_CAMERAMODE_H_
================================================
FILE: power/InteractionHandler.cpp
================================================
/*
* Copyright (C) 2018 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
#define LOG_TAG "android.hardware.power@1.3-service.mata-libperfmgr"
#define ATRACE_TAG (ATRACE_TAG_POWER | ATRACE_TAG_HAL)
#include
#include
#include
#include
#include
#include
#include
#include
#include "InteractionHandler.h"
#define MAX_LENGTH 64
#define MSINSEC 1000L
#define USINMS 1000000L
static const std::vector fb_idle_patch = {"/sys/class/drm/card0/device/idle_state",
"/sys/class/graphics/fb0/idle_state"};
InteractionHandler::InteractionHandler(std::shared_ptr const &hint_manager)
: mState(INTERACTION_STATE_UNINITIALIZED),
mWaitMs(100),
mMinDurationMs(1400),
mMaxDurationMs(5650),
mDurationMs(0),
mHintManager(hint_manager) {}
InteractionHandler::~InteractionHandler() {
Exit();
}
static int fb_idle_open(void) {
int fd;
for (auto &path : fb_idle_patch) {
fd = open(path.c_str(), O_RDONLY);
if (fd >= 0)
return fd;
}
ALOGE("Unable to open fb idle state path (%d)", errno);
return -1;
}
bool InteractionHandler::Init() {
std::lock_guard lk(mLock);
if (mState != INTERACTION_STATE_UNINITIALIZED)
return true;
int fd = fb_idle_open();
if (fd < 0)
return false;
mIdleFd = fd;
mEventFd = eventfd(0, EFD_NONBLOCK);
if (mEventFd < 0) {
ALOGE("Unable to create event fd (%d)", errno);
close(mIdleFd);
return false;
}
mState = INTERACTION_STATE_IDLE;
mThread = std::unique_ptr(new std::thread(&InteractionHandler::Routine, this));
return true;
}
void InteractionHandler::Exit() {
std::unique_lock lk(mLock);
if (mState == INTERACTION_STATE_UNINITIALIZED)
return;
AbortWaitLocked();
mState = INTERACTION_STATE_UNINITIALIZED;
lk.unlock();
mCond.notify_all();
mThread->join();
close(mEventFd);
close(mIdleFd);
}
void InteractionHandler::PerfLock() {
ALOGV("%s: acquiring perf lock", __func__);
if (!mHintManager->DoHint("INTERACTION")) {
ALOGE("%s: do hint INTERACTION failed", __func__);
}
ATRACE_INT("interaction_lock", 1);
}
void InteractionHandler::PerfRel() {
ALOGV("%s: releasing perf lock", __func__);
if (!mHintManager->EndHint("INTERACTION")) {
ALOGE("%s: end hint INTERACTION failed", __func__);
}
ATRACE_INT("interaction_lock", 0);
}
size_t InteractionHandler::CalcTimespecDiffMs(struct timespec start, struct timespec end) {
size_t diff_in_us = 0;
diff_in_us += (end.tv_sec - start.tv_sec) * MSINSEC;
diff_in_us += (end.tv_nsec - start.tv_nsec) / USINMS;
return diff_in_us;
}
void InteractionHandler::Acquire(int32_t duration) {
ATRACE_CALL();
std::lock_guard lk(mLock);
if (mState == INTERACTION_STATE_UNINITIALIZED) {
ALOGW("%s: called while uninitialized", __func__);
return;
}
int inputDuration = duration + 650;
int finalDuration;
if (inputDuration > mMaxDurationMs)
finalDuration = mMaxDurationMs;
else if (inputDuration > mMinDurationMs)
finalDuration = inputDuration;
else
finalDuration = mMinDurationMs;
struct timespec cur_timespec;
clock_gettime(CLOCK_MONOTONIC, &cur_timespec);
if (mState != INTERACTION_STATE_IDLE && finalDuration <= mDurationMs) {
size_t elapsed_time = CalcTimespecDiffMs(mLastTimespec, cur_timespec);
// don't hint if previous hint's duration covers this hint's duration
if (elapsed_time <= (mDurationMs - finalDuration)) {
ALOGV("%s: Previous duration (%d) cover this (%d) elapsed: %lld", __func__,
static_cast(mDurationMs), static_cast(finalDuration),
static_cast(elapsed_time));
return;
}
}
mLastTimespec = cur_timespec;
mDurationMs = finalDuration;
ALOGV("%s: input: %d final duration: %d", __func__, duration, finalDuration);
if (mState == INTERACTION_STATE_WAITING)
AbortWaitLocked();
else if (mState == INTERACTION_STATE_IDLE)
PerfLock();
mState = INTERACTION_STATE_INTERACTION;
mCond.notify_one();
}
void InteractionHandler::Release() {
std::lock_guard lk(mLock);
if (mState == INTERACTION_STATE_WAITING) {
ATRACE_CALL();
PerfRel();
mState = INTERACTION_STATE_IDLE;
} else {
// clear any wait aborts pending in event fd
uint64_t val;
ssize_t ret = read(mEventFd, &val, sizeof(val));
ALOGW_IF(ret < 0, "%s: failed to clear eventfd (%zd, %d)", __func__, ret, errno);
}
}
// should be called while locked
void InteractionHandler::AbortWaitLocked() {
uint64_t val = 1;
ssize_t ret = write(mEventFd, &val, sizeof(val));
if (ret != sizeof(val))
ALOGW("Unable to write to event fd (%zd)", ret);
}
void InteractionHandler::WaitForIdle(int32_t wait_ms, int32_t timeout_ms) {
char data[MAX_LENGTH];
ssize_t ret;
struct pollfd pfd[2];
ATRACE_CALL();
ALOGV("%s: wait:%d timeout:%d", __func__, wait_ms, timeout_ms);
pfd[0].fd = mEventFd;
pfd[0].events = POLLIN;
pfd[1].fd = mIdleFd;
pfd[1].events = POLLPRI | POLLERR;
ret = poll(pfd, 1, wait_ms);
if (ret > 0) {
ALOGV("%s: wait aborted", __func__);
return;
} else if (ret < 0) {
ALOGE("%s: error in poll while waiting", __func__);
return;
}
ret = pread(mIdleFd, data, sizeof(data), 0);
if (!ret) {
ALOGE("%s: Unexpected EOF!", __func__);
return;
}
if (!strncmp(data, "idle", 4)) {
ALOGV("%s: already idle", __func__);
return;
}
ret = poll(pfd, 2, timeout_ms);
if (ret < 0)
ALOGE("%s: Error on waiting for idle (%zd)", __func__, ret);
else if (ret == 0)
ALOGV("%s: timed out waiting for idle", __func__);
else if (pfd[0].revents)
ALOGV("%s: wait for idle aborted", __func__);
else if (pfd[1].revents)
ALOGV("%s: idle detected", __func__);
}
void InteractionHandler::Routine() {
std::unique_lock lk(mLock, std::defer_lock);
while (true) {
lk.lock();
mCond.wait(lk, [&] { return mState != INTERACTION_STATE_IDLE; });
if (mState == INTERACTION_STATE_UNINITIALIZED)
return;
mState = INTERACTION_STATE_WAITING;
lk.unlock();
WaitForIdle(mWaitMs, mDurationMs);
Release();
}
}
================================================
FILE: power/InteractionHandler.h
================================================
/*
* Copyright (C) 2018 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
#ifndef POWER_LIBPERFMGR_INTERACTIONHANDLER_H_
#define POWER_LIBPERFMGR_INTERACTIONHANDLER_H_
#include
#include
#include
#include
#include
#include
using ::android::perfmgr::HintManager;
enum interaction_state {
INTERACTION_STATE_UNINITIALIZED,
INTERACTION_STATE_IDLE,
INTERACTION_STATE_INTERACTION,
INTERACTION_STATE_WAITING,
};
class InteractionHandler {
public:
InteractionHandler(std::shared_ptr const &hint_manager);
~InteractionHandler();
bool Init();
void Exit();
void Acquire(int32_t duration);
private:
void Release();
void WaitForIdle(int32_t wait_ms, int32_t timeout_ms);
void AbortWaitLocked();
void Routine();
void PerfLock();
void PerfRel();
size_t CalcTimespecDiffMs(struct timespec start, struct timespec end);
enum interaction_state mState;
int mIdleFd;
int mEventFd;
int32_t mWaitMs;
int32_t mMinDurationMs;
int32_t mMaxDurationMs;
int32_t mDurationMs;
struct timespec mLastTimespec;
std::unique_ptr mThread;
std::mutex mLock;
std::condition_variable mCond;
std::shared_ptr mHintManager;
};
#endif // POWER_LIBPERFMGR_INTERACTIONHANDLER_H_
================================================
FILE: power/Power.cpp
================================================
/*
* Copyright (C) 2018 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
#define ATRACE_TAG (ATRACE_TAG_POWER | ATRACE_TAG_HAL)
#define LOG_TAG "android.hardware.power@1.3-service.mata-libperfmgr"
#include
#include
#include
#include
#include
#include
#include
#include
#include "AudioStreaming.h"
#include "Power.h"
#include "display-helper.h"
namespace android {
namespace hardware {
namespace power {
namespace V1_3 {
namespace implementation {
using ::android::hardware::hidl_vec;
using ::android::hardware::Return;
using ::android::hardware::Void;
using ::android::hardware::power::V1_0::Feature;
using ::android::hardware::power::V1_0::Status;
constexpr char kPowerHalStateProp[] = "vendor.powerhal.state";
constexpr char kPowerHalAudioProp[] = "vendor.powerhal.audio";
constexpr char kPowerHalInitProp[] = "vendor.powerhal.init";
constexpr char kPowerHalRenderingProp[] = "vendor.powerhal.rendering";
constexpr char kPowerHalConfigPath[] = "/vendor/etc/powerhint.json";
static const std::map kCamStreamingHint = {
{CAMERA_STREAMING_OFF, "CAMERA_STREAMING_OFF"},
{CAMERA_STREAMING, "CAMERA_STREAMING"},
{CAMERA_STREAMING_1080P, "CAMERA_STREAMING_1080P"},
{CAMERA_STREAMING_4K, "CAMERA_STREAMING_4K"}};
Power::Power()
: mHintManager(nullptr),
mInteractionHandler(nullptr),
mVRModeOn(false),
mSustainedPerfModeOn(false),
mCameraStreamingMode(CAMERA_STREAMING_OFF),
mReady(false) {
mInitThread = std::thread([this]() {
android::base::WaitForProperty(kPowerHalInitProp, "1");
mHintManager = HintManager::GetFromJSON(kPowerHalConfigPath);
if (!mHintManager) {
LOG(FATAL) << "Invalid config: " << kPowerHalConfigPath;
}
mInteractionHandler = std::make_unique(mHintManager);
mInteractionHandler->Init();
std::string state = android::base::GetProperty(kPowerHalStateProp, "");
if (state == "CAMERA_STREAMING") {
ALOGI("Initialize with CAMERA_STREAMING on");
mHintManager->DoHint("CAMERA_STREAMING");
mCameraStreamingMode = CAMERA_STREAMING;
} else if (state == "CAMERA_STREAMING_1080P") {
ALOGI("Initialize CAMERA_STREAMING_1080P on");
mHintManager->DoHint("CAMERA_STREAMING_1080P");
mCameraStreamingMode = CAMERA_STREAMING_1080P;
} else if (state == "CAMERA_STREAMING_4K") {
ALOGI("Initialize with CAMERA_STREAMING_4K on");
mHintManager->DoHint("CAMERA_STREAMING_4K");
mCameraStreamingMode = CAMERA_STREAMING_4K;
} else if (state == "SUSTAINED_PERFORMANCE") {
ALOGI("Initialize with SUSTAINED_PERFORMANCE on");
mHintManager->DoHint("SUSTAINED_PERFORMANCE");
mSustainedPerfModeOn = true;
} else if (state == "VR_MODE") {
ALOGI("Initialize with VR_MODE on");
mHintManager->DoHint("VR_MODE");
mVRModeOn = true;
} else if (state == "VR_SUSTAINED_PERFORMANCE") {
ALOGI("Initialize with SUSTAINED_PERFORMANCE and VR_MODE on");
mHintManager->DoHint("VR_SUSTAINED_PERFORMANCE");
mSustainedPerfModeOn = true;
mVRModeOn = true;
} else {
ALOGI("Initialize PowerHAL");
}
state = android::base::GetProperty(kPowerHalAudioProp, "");
if (state == "AUDIO_LOW_LATENCY") {
ALOGI("Initialize with AUDIO_LOW_LATENCY on");
mHintManager->DoHint("AUDIO_LOW_LATENCY");
}
state = android::base::GetProperty(kPowerHalRenderingProp, "");
if (state == "EXPENSIVE_RENDERING") {
ALOGI("Initialize with EXPENSIVE_RENDERING on");
mHintManager->DoHint("EXPENSIVE_RENDERING");
}
// Now start to take powerhint
mReady.store(true);
ALOGI("PowerHAL ready to process hints");
});
mInitThread.detach();
}
// Methods from ::android::hardware::power::V1_0::IPower follow.
Return Power::setInteractive(bool /* interactive */) {
return Void();
}
Return Power::powerHint(PowerHint_1_0 hint, int32_t data) {
if (!mReady) {
return Void();
}
ATRACE_INT(android::hardware::power::V1_0::toString(hint).c_str(), data);
ALOGD_IF(hint != PowerHint_1_0::INTERACTION, "%s: %d",
android::hardware::power::V1_0::toString(hint).c_str(), static_cast(data));
switch (hint) {
case PowerHint_1_0::INTERACTION:
if (mVRModeOn || mSustainedPerfModeOn) {
ALOGV("%s: ignoring due to other active perf hints", __func__);
} else {
mInteractionHandler->Acquire(data);
}
break;
case PowerHint_1_0::SUSTAINED_PERFORMANCE:
if (data && !mSustainedPerfModeOn) {
if (!mVRModeOn) { // Sustained mode only.
mHintManager->DoHint("SUSTAINED_PERFORMANCE");
} else { // Sustained + VR mode.
mHintManager->EndHint("VR_MODE");
mHintManager->DoHint("VR_SUSTAINED_PERFORMANCE");
}
mSustainedPerfModeOn = true;
} else if (!data && mSustainedPerfModeOn) {
mHintManager->EndHint("VR_SUSTAINED_PERFORMANCE");
mHintManager->EndHint("SUSTAINED_PERFORMANCE");
if (mVRModeOn) { // Switch back to VR Mode.
mHintManager->DoHint("VR_MODE");
}
mSustainedPerfModeOn = false;
}
break;
case PowerHint_1_0::VR_MODE:
if (data && !mVRModeOn) {
if (!mSustainedPerfModeOn) { // VR mode only.
mHintManager->DoHint("VR_MODE");
} else { // Sustained + VR mode.
mHintManager->EndHint("SUSTAINED_PERFORMANCE");
mHintManager->DoHint("VR_SUSTAINED_PERFORMANCE");
}
mVRModeOn = true;
} else if (!data && mVRModeOn) {
mHintManager->EndHint("VR_SUSTAINED_PERFORMANCE");
mHintManager->EndHint("VR_MODE");
if (mSustainedPerfModeOn) { // Switch back to sustained Mode.
mHintManager->DoHint("SUSTAINED_PERFORMANCE");
}
mVRModeOn = false;
}
break;
case PowerHint_1_0::LAUNCH:
if (mVRModeOn || mSustainedPerfModeOn) {
ALOGV("%s: ignoring due to other active perf hints", __func__);
} else {
if (data) {
// Hint until canceled
mHintManager->DoHint("LAUNCH");
} else {
mHintManager->EndHint("LAUNCH");
}
}
break;
case PowerHint_1_0::LOW_POWER:
if (data) {
// Device in battery saver mode, enable display low power mode
set_display_lpm(true);
} else {
// Device exiting battery saver mode, disable display low power mode
set_display_lpm(false);
}
break;
default:
break;
}
return Void();
}
Return Power::setFeature(Feature /*feature*/, bool /*activate*/) {
// Nothing to do
return Void();
}
Return Power::getPlatformLowPowerStats(getPlatformLowPowerStats_cb _hidl_cb) {
LOG(ERROR) << "getPlatformLowPowerStats not supported. Use IPowerStats HAL.";
_hidl_cb({}, Status::SUCCESS);
return Void();
}
// Methods from ::android::hardware::power::V1_1::IPower follow.
Return Power::getSubsystemLowPowerStats(getSubsystemLowPowerStats_cb _hidl_cb) {
LOG(ERROR) << "getSubsystemLowPowerStats not supported. Use IPowerStats HAL.";
_hidl_cb({}, Status::SUCCESS);
return Void();
}
Return Power::powerHintAsync(PowerHint_1_0 hint, int32_t data) {
// just call the normal power hint in this oneway function
return powerHint(hint, data);
}
// Methods from ::android::hardware::power::V1_2::IPower follow.
Return Power::powerHintAsync_1_2(PowerHint_1_2 hint, int32_t data) {
if (!mReady) {
return Void();
}
ATRACE_INT(android::hardware::power::V1_2::toString(hint).c_str(), data);
ALOGD_IF(hint >= PowerHint_1_2::AUDIO_STREAMING, "%s: %d",
android::hardware::power::V1_2::toString(hint).c_str(), static_cast(data));
switch (hint) {
case PowerHint_1_2::AUDIO_LOW_LATENCY:
if (data) {
// Hint until canceled
mHintManager->DoHint("AUDIO_LOW_LATENCY");
} else {
mHintManager->EndHint("AUDIO_LOW_LATENCY");
}
break;
case PowerHint_1_2::AUDIO_STREAMING:
if (mVRModeOn || mSustainedPerfModeOn) {
ALOGV("%s: ignoring due to other active perf hints", __func__);
} else {
if (data == static_cast(AUDIO_STREAMING_HINT::AUDIO_STREAMING_ON)) {
mHintManager->DoHint("AUDIO_STREAMING");
} else if (data ==
static_cast(AUDIO_STREAMING_HINT::AUDIO_STREAMING_OFF)) {
mHintManager->EndHint("AUDIO_STREAMING");
} else if (data == static_cast(AUDIO_STREAMING_HINT::TPU_BOOST_SHORT)) {
mHintManager->DoHint("TPU_BOOST",
std::chrono::milliseconds(TPU_HINT_DURATION_MS::SHORT));
} else if (data == static_cast(AUDIO_STREAMING_HINT::TPU_BOOST_LONG)) {
mHintManager->DoHint("TPU_BOOST",
std::chrono::milliseconds(TPU_HINT_DURATION_MS::LONG));
} else if (data == static_cast(AUDIO_STREAMING_HINT::TPU_BOOST_OFF)) {
mHintManager->EndHint("TPU_BOOST");
} else {
ALOGE("AUDIO STREAMING INVALID DATA: %d", data);
}
}
break;
case PowerHint_1_2::CAMERA_LAUNCH:
if (data > 0) {
mHintManager->DoHint("CAMERA_LAUNCH");
} else if (data == 0) {
mHintManager->EndHint("CAMERA_LAUNCH");
} else {
ALOGE("CAMERA LAUNCH INVALID DATA: %d", data);
}
break;
case PowerHint_1_2::CAMERA_STREAMING: {
const enum CameraStreamingMode mode = static_cast(data);
if (mode < CAMERA_STREAMING_OFF || mode >= CAMERA_STREAMING_MAX) {
ALOGE("CAMERA STREAMING INVALID Mode: %d", mode);
break;
}
if (mCameraStreamingMode == mode)
break;
// turn it off first if any previous hint.
if ((mCameraStreamingMode != CAMERA_STREAMING_OFF)) {
const auto modeValue = kCamStreamingHint.at(mCameraStreamingMode);
mHintManager->EndHint(modeValue);
// Boost 1s for tear down
mHintManager->DoHint("CAMERA_LAUNCH", std::chrono::seconds(1));
}
if (mode != CAMERA_STREAMING_OFF) {
const auto hintValue = kCamStreamingHint.at(mode);
mHintManager->DoHint(hintValue);
}
mCameraStreamingMode = mode;
const auto prop = (mCameraStreamingMode == CAMERA_STREAMING_OFF)
? ""
: kCamStreamingHint.at(mode).c_str();
if (!android::base::SetProperty(kPowerHalStateProp, prop)) {
ALOGE("%s: could set powerHAL state %s property", __func__, prop);
}
break;
}
case PowerHint_1_2::CAMERA_SHOT:
if (data > 0) {
mHintManager->DoHint("CAMERA_SHOT", std::chrono::milliseconds(data));
} else if (data == 0) {
mHintManager->EndHint("CAMERA_SHOT");
} else {
ALOGE("CAMERA SHOT INVALID DATA: %d", data);
}
break;
default:
return powerHint(static_cast(hint), data);
}
return Void();
}
// Methods from ::android::hardware::power::V1_3::IPower follow.
Return Power::powerHintAsync_1_3(PowerHint_1_3 hint, int32_t data) {
if (!mReady) {
return Void();
}
if (hint == PowerHint_1_3::EXPENSIVE_RENDERING) {
ATRACE_INT(android::hardware::power::V1_3::toString(hint).c_str(), data);
if (mVRModeOn || mSustainedPerfModeOn) {
ALOGV("%s: ignoring due to other active perf hints", __func__);
} else {
if (data > 0) {
mHintManager->DoHint("EXPENSIVE_RENDERING");
} else {
mHintManager->EndHint("EXPENSIVE_RENDERING");
}
}
} else {
return powerHintAsync_1_2(static_cast(hint), data);
}
return Void();
}
constexpr const char *boolToString(bool b) {
return b ? "true" : "false";
}
Return Power::debug(const hidl_handle &handle, const hidl_vec &) {
if (handle != nullptr && handle->numFds >= 1 && mReady) {
int fd = handle->data[0];
std::string buf(android::base::StringPrintf(
"HintManager Running: %s\n"
"VRMode: %s\n"
"CameraStreamingMode: %s\n"
"SustainedPerformanceMode: %s\n",
boolToString(mHintManager->IsRunning()), boolToString(mVRModeOn),
kCamStreamingHint.at(mCameraStreamingMode).c_str(),
boolToString(mSustainedPerfModeOn)));
// Dump nodes through libperfmgr
mHintManager->DumpToFd(fd);
if (!android::base::WriteStringToFd(buf, fd)) {
PLOG(ERROR) << "Failed to dump state to fd";
}
fsync(fd);
}
return Void();
}
} // namespace implementation
} // namespace V1_3
} // namespace power
} // namespace hardware
} // namespace android
================================================
FILE: power/Power.h
================================================
/*
* Copyright (C) 2018 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
#ifndef POWER_LIBPERFMGR_POWER_H_
#define POWER_LIBPERFMGR_POWER_H_
#include
#include
#include
#include
#include
#include
#include
#include "CameraMode.h"
#include "InteractionHandler.h"
namespace android {
namespace hardware {
namespace power {
namespace V1_3 {
namespace implementation {
using ::InteractionHandler;
using ::android::hardware::Return;
using ::android::hardware::Void;
using ::android::hardware::power::V1_0::Feature;
using ::android::hardware::power::V1_3::IPower;
using PowerHint_1_0 = ::android::hardware::power::V1_0::PowerHint;
using PowerHint_1_2 = ::android::hardware::power::V1_2::PowerHint;
using PowerHint_1_3 = ::android::hardware::power::V1_3::PowerHint;
using ::android::perfmgr::HintManager;
class Power : public IPower {
public:
// Methods from ::android::hardware::power::V1_0::IPower follow.
Power();
Return setInteractive(bool /* interactive */) override;
Return powerHint(PowerHint_1_0 hint, int32_t data) override;
Return setFeature(Feature feature, bool activate) override;
Return getPlatformLowPowerStats(getPlatformLowPowerStats_cb _hidl_cb) override;
// Methods from ::android::hardware::power::V1_1::IPower follow.
Return getSubsystemLowPowerStats(getSubsystemLowPowerStats_cb _hidl_cb) override;
Return powerHintAsync(PowerHint_1_0 hint, int32_t data) override;
// Methods from ::android::hardware::power::V1_2::IPower follow.
Return powerHintAsync_1_2(PowerHint_1_2 hint, int32_t data) override;
// Methods from ::android::hardware::power::V1_3::IPower follow.
Return powerHintAsync_1_3(PowerHint_1_3 hint, int32_t data) override;
// Methods from ::android::hidl::base::V1_0::IBase follow.
Return debug(const hidl_handle &fd, const hidl_vec &args) override;
private:
std::shared_ptr mHintManager;
std::unique_ptr mInteractionHandler;
std::atomic mVRModeOn;
std::atomic mSustainedPerfModeOn;
std::atomic mCameraStreamingMode;
std::atomic mReady;
std::thread mInitThread;
};
} // namespace implementation
} // namespace V1_3
} // namespace power
} // namespace hardware
} // namespace android
#endif // POWER_LIBPERFMGR_POWER_H_
================================================
FILE: power/android.hardware.power@1.3-service.mata-libperfmgr.rc
================================================
service vendor.power-hal-1-3 /vendor/bin/hw/android.hardware.power@1.3-service.mata-libperfmgr
class hal
user root
group system
interface android.hardware.power@1.0::IPower default
interface android.hardware.power@1.1::IPower default
interface android.hardware.power@1.2::IPower default
interface android.hardware.power@1.3::IPower default
# restart powerHAL when framework died
on property:init.svc.zygote=restarting && property:vendor.powerhal.state=*
setprop vendor.powerhal.state ""
setprop vendor.powerhal.audio ""
setprop vendor.powerhal.rendering ""
restart vendor.power-hal-1-3
# restart powerHAL when cameraHAL died
on property:init.svc.vendor.camera-provider-2-4=restarting && property:vendor.powerhal.state=CAMERA_STREAMING
setprop vendor.powerhal.state ""
restart vendor.power-hal-1-3
# restart powerHAL when audioHAL died
on property:init.svc.vendor.audio-hal-2-0=restarting && property:vendor.powerhal.audio=AUDIO_LOW_LATENCY
setprop vendor.powerhal.audio ""
restart vendor.power-hal-1-3
================================================
FILE: power/android.hardware.power@1.3-service.mata.xml
================================================
android.hardware.powerhwbinder1.3IPowerdefault
================================================
FILE: power/display-helper.cpp
================================================
/*
* Copyright (C) 2018 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
#define LOG_NIDEBUG 0
#define LOG_TAG "android.hardware.power@1.3-service.mata-libperfmgr"
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include "display-helper.h"
#define DAEMON_SOCKET "pps"
static int daemon_socket = -1;
static int connectPPDaemon() {
// Setup socket connection, if not already done.
if (daemon_socket < 0)
daemon_socket =
socket_local_client(DAEMON_SOCKET, ANDROID_SOCKET_NAMESPACE_RESERVED, SOCK_STREAM);
if (daemon_socket < 0) {
ALOGE("Connecting to socket failed: %s", strerror(errno));
return -1;
}
return 0;
}
static int ppdComm(const char *cmd) {
int ret = -1;
ret = connectPPDaemon();
if (ret < 0)
return ret;
ret = write(daemon_socket, cmd, strlen(cmd));
if (ret < 0) {
ALOGE("Failed to send data over socket, %s", strerror(errno));
return ret;
}
return 0;
}
void set_display_lpm(int enable) {
ALOGI("set_display_lpm state: %d", enable);
if (enable) {
ppdComm("foss:on");
} else {
ppdComm("foss:off");
}
}
================================================
FILE: power/display-helper.h
================================================
/*
* Copyright (C) 2018 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
#ifndef POWER_LIBPERFMGR_DISPLAY_HELPER_H_
#define POWER_LIBPERFMGR_DISPLAY_HELPER_H_
enum display_lpm_state {
DISPLAY_LPM_OFF = 0,
DISPLAY_LPM_ON,
DISPLAY_LPM_UNKNOWN,
};
void set_display_lpm(int enable);
#endif // POWER_LIBPERFMGR_DISPLAY_HELPER_H_
================================================
FILE: power/service.cpp
================================================
/*
* Copyright (C) 2018 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
#define LOG_TAG "android.hardware.power@1.3-service.mata-libperfmgr"
#include
#include
#include "Power.h"
using android::OK;
using android::sp;
using android::status_t;
// libhwbinder:
using android::hardware::configureRpcThreadpool;
using android::hardware::joinRpcThreadpool;
// Generated HIDL files
using android::hardware::power::V1_3::IPower;
using android::hardware::power::V1_3::implementation::Power;
int main(int /* argc */, char ** /* argv */) {
ALOGI("Power HAL Service 1.3 for Mata is starting.");
android::sp service = new Power();
if (service == nullptr) {
ALOGE("Can not create an instance of Power HAL Iface, exiting.");
return 1;
}
configureRpcThreadpool(1, true /*callerWillJoin*/);
status_t status = service->registerAsService();
if (status != OK) {
ALOGE("Could not register service for Power HAL Iface (%d), exiting.", status);
return 1;
}
ALOGI("Power Service is ready");
joinRpcThreadpool();
// In normal operation, we don't expect the thread pool to exit
ALOGE("Power Service is shutting down");
return 1;
}
================================================
FILE: powerhint.json
================================================
{
"Nodes": [
{
"Name": "CPULittleClusterMaxFreq",
"Path": "/sys/devices/system/cpu/cpu0/cpufreq/scaling_max_freq",
"Values": [
"1900800",
"1555200",
"1478400",
"1248000"
],
"DefaultIndex": 0,
"ResetOnInit": true
},
{
"Name": "CPULittleClusterMinFreq",
"Path": "/sys/devices/system/cpu/cpu0/cpufreq/scaling_min_freq",
"Values": [
"1900800",
"1555200",
"1512000",
"1478400",
"1134000",
"0"
],
"ResetOnInit": true
},
{
"Name": "CPUBigClusterMaxFreq",
"Path": "/sys/devices/system/cpu/cpu4/cpufreq/scaling_max_freq",
"Values": [
"2457600",
"1958400",
"1574400",
"1344000",
"1267200"
],
"DefaultIndex": 0,
"ResetOnInit": true
},
{
"Name": "CPUBigClusterMinFreq",
"Path": "/sys/devices/system/cpu/cpu4/cpufreq/scaling_min_freq",
"Values": [
"2457600",
"1574400",
"1420800",
"1344000",
"1132800",
"0"
],
"ResetOnInit": true
},
{
"Name": "GPUMaxFreq",
"Path": "/sys/class/kgsl/kgsl-3d0/devfreq/max_freq",
"Values": [
"342000000",
"414000000",
"515000000",
"710000000"
],
"ResetOnInit": true
},
{
"Name": "GPUMinFreq",
"Path": "/sys/class/kgsl/kgsl-3d0/devfreq/min_freq",
"Values": [
"515000000",
"414000000",
"257000000"
],
"ResetOnInit": true
},
{
"Name": "GPUBusMinFreq",
"Path": "/sys/class/devfreq/soc:qcom,gpubw/min_freq",
"Values": [
"11863",
"7759",
"0"
],
"ResetOnInit": true
},
{
"Name": "CPUBWHystTriggerCount",
"Path": "/sys/devices/soc/soc:qcom,cpubw/devfreq/soc:qcom,cpubw/bw_hwmon/hyst_trigger_count",
"Values": [
"0",
"3"
]
},
{
"Name": "CPUBWHistMemory",
"Path": "/sys/devices/soc/soc:qcom,cpubw/devfreq/soc:qcom,cpubw/bw_hwmon/hist_memory",
"Values": [
"0",
"20"
]
},
{
"Name": "CPUBWHystLength",
"Path": "/sys/devices/soc/soc:qcom,cpubw/devfreq/soc:qcom,cpubw/bw_hwmon/hyst_length",
"Values": [
"0",
"10"
]
},
{
"Name": "CPUBWMinFreq",
"Path": "/sys/devices/soc/soc:qcom,cpubw/devfreq/soc:qcom,cpubw/min_freq",
"Values": [
"13763",
"5195",
"1525",
"762"
],
"ResetOnInit": true
},
{
"Name": "PMQoSCpuDmaLatency",
"Path": "/dev/cpu_dma_latency",
"Values": [
"44",
"100"
],
"HoldFd": true
},
{
"Name": "PowerHALMainState",
"Path": "vendor.powerhal.state",
"Values": [
"CAMERA_STREAMING",
"VR_SUSTAINED_PERFORMANCE",
"SUSTAINED_PERFORMANCE",
"VR_MODE",
""
],
"Type": "Property"
},
{
"Name": "PowerHALAudioState",
"Path": "vendor.powerhal.audio",
"Values": [
"AUDIO_LOW_LATENCY",
""
],
"Type": "Property"
},
{
"Name": "PowerHALRenderingState",
"Path": "vendor.powerhal.rendering",
"Values": [
"EXPENSIVE_RENDERING",
""
],
"Type": "Property"
}
],
"Actions": [
{
"PowerHint": "SUSTAINED_PERFORMANCE",
"Node": "PowerHALMainState",
"Duration": 0,
"Value": "SUSTAINED_PERFORMANCE"
},
{
"PowerHint": "SUSTAINED_PERFORMANCE",
"Node": "CPUBigClusterMaxFreq",
"Duration": 0,
"Value": "1267200"
},
{
"PowerHint": "SUSTAINED_PERFORMANCE",
"Node": "CPULittleClusterMaxFreq",
"Duration": 0,
"Value": "1248000"
},
{
"PowerHint": "SUSTAINED_PERFORMANCE",
"Node": "GPUMaxFreq",
"Duration": 0,
"Value": "342000000"
},
{
"PowerHint": "INTERACTION",
"Node": "CPUBigClusterMinFreq",
"Duration": 0,
"Value": "1132800"
},
{
"PowerHint": "INTERACTION",
"Node": "CPULittleClusterMinFreq",
"Duration": 0,
"Value": "1134000"
},
{
"PowerHint": "INTERACTION",
"Node": "CPUBWHystTriggerCount",
"Duration": 0,
"Value": "0"
},
{
"PowerHint": "INTERACTION",
"Node": "CPUBWHystLength",
"Duration": 0,
"Value": "0"
},
{
"PowerHint": "INTERACTION",
"Node": "CPUBWHistMemory",
"Duration": 0,
"Value": "0"
},
{
"PowerHint": "INTERACTION",
"Node": "CPUBWMinFreq",
"Duration": 0,
"Value": "5195"
},
{
"PowerHint": "LAUNCH",
"Node": "CPUBigClusterMaxFreq",
"Duration": 5000,
"Value": "2457600"
},
{
"PowerHint": "LAUNCH",
"Node": "CPUBigClusterMinFreq",
"Duration": 5000,
"Value": "2457600"
},
{
"PowerHint": "LAUNCH",
"Node": "CPULittleClusterMinFreq",
"Duration": 5000,
"Value": "1900800"
},
{
"PowerHint": "LAUNCH",
"Node": "PMQoSCpuDmaLatency",
"Duration": 5000,
"Value": "44"
},
{
"PowerHint": "LAUNCH",
"Node": "CPUBWHystTriggerCount",
"Duration": 5000,
"Value": "0"
},
{
"PowerHint": "LAUNCH",
"Node": "CPUBWHystLength",
"Duration": 5000,
"Value": "0"
},
{
"PowerHint": "LAUNCH",
"Node": "CPUBWHistMemory",
"Duration": 5000,
"Value": "0"
},
{
"PowerHint": "LAUNCH",
"Node": "CPUBWMinFreq",
"Duration": 5000,
"Value": "13763"
},
{
"PowerHint": "CAMERA_LAUNCH",
"Node": "CPUBigClusterMaxFreq",
"Duration": 1000,
"Value": "2457600"
},
{
"PowerHint": "CAMERA_LAUNCH",
"Node": "CPUBigClusterMinFreq",
"Duration": 1000,
"Value": "2457600"
},
{
"PowerHint": "CAMERA_LAUNCH",
"Node": "CPULittleClusterMinFreq",
"Duration": 1000,
"Value": "1900800"
},
{
"PowerHint": "CAMERA_LAUNCH",
"Node": "PMQoSCpuDmaLatency",
"Duration": 1000,
"Value": "44"
},
{
"PowerHint": "CAMERA_STREAMING",
"Node": "PowerHALMainState",
"Duration": 0,
"Value": "CAMERA_STREAMING"
},
{
"PowerHint": "CAMERA_STREAMING",
"Node": "CPUBigClusterMaxFreq",
"Duration": 0,
"Value": "1958400"
},
{
"PowerHint": "CAMERA_SHOT",
"Node": "CPUBigClusterMaxFreq",
"Duration": 1000,
"Value": "2457600"
},
{
"PowerHint": "CAMERA_SHOT",
"Node": "CPUBigClusterMinFreq",
"Duration": 1000,
"Value": "2457600"
},
{
"PowerHint": "CAMERA_SHOT",
"Node": "CPULittleClusterMinFreq",
"Duration": 1000,
"Value": "1900800"
},
{
"PowerHint": "CAMERA_SHOT",
"Node": "PMQoSCpuDmaLatency",
"Duration": 1000,
"Value": "44"
},
{
"PowerHint": "CAMERA_SHOT",
"Node": "CPUBWHystTriggerCount",
"Duration": 1000,
"Value": "0"
},
{
"PowerHint": "CAMERA_SHOT",
"Node": "CPUBWHystLength",
"Duration": 1000,
"Value": "0"
},
{
"PowerHint": "CAMERA_SHOT",
"Node": "CPUBWHistMemory",
"Duration": 1000,
"Value": "0"
},
{
"PowerHint": "CAMERA_SHOT",
"Node": "CPUBWMinFreq",
"Duration": 1000,
"Value": "13763"
},
{
"PowerHint": "AUDIO_STREAMING",
"Node": "CPUBigClusterMinFreq",
"Duration": 2000,
"Value": "1420800"
},
{
"PowerHint": "AUDIO_STREAMING",
"Node": "PMQoSCpuDmaLatency",
"Duration": 2000,
"Value": "44"
},
{
"PowerHint": "AUDIO_LOW_LATENCY",
"Node": "PowerHALAudioState",
"Duration": 0,
"Value": "AUDIO_LOW_LATENCY"
},
{
"PowerHint": "AUDIO_LOW_LATENCY",
"Node": "PMQoSCpuDmaLatency",
"Duration": 0,
"Value": "44"
},
{
"PowerHint": "EXPENSIVE_RENDERING",
"Node": "CPULittleClusterMinFreq",
"Duration": 0,
"Value": "0"
}
]
}
================================================
FILE: powerhint.xml
================================================
================================================
FILE: privapp-permissions-mata.xml
================================================
================================================
FILE: qca_cld3_wlan.ko
================================================
[File too large to display: 10.0 MB]
================================================
FILE: qti_whitelist.xml
================================================
================================================
FILE: radio/filesmap
================================================
# Copyright (c) 2013-2016, The Linux Foundation. All rights reserved.
#
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions are
# met:
# * Redistributions of source code must retain the above copyright
# notice, this list of conditions and the following disclaimer.
# * Redistributions in binary form must reproduce the above
# copyright notice, this list of conditions and the following
# disclaimer in the documentation and/or other materials provided
# with the distribution.
# * Neither the name of The Linux Foundation nor the names of its
# contributors may be used to endorse or promote products derived
# from this software without specific prior written permission.
#
# THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED
# WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT
# ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS
# BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
# BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
# OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
# IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
# filename partition
NON-HLOS.bin /dev/block/bootdevice/by-name/modem
BTFM.bin /dev/block/bootdevice/by-name/bluetooth
sbl1.mbn /dev/block/bootdevice/by-name/sbl1
tz.mbn /dev/block/bootdevice/by-name/tz
rpm.mbn /dev/block/bootdevice/by-name/rpm
emmc_appsboot.mbn /dev/block/bootdevice/by-name/aboot
hyp.mbn /dev/block/bootdevice/by-name/hyp
pmic.mbn /dev/block/bootdevice/by-name/pmic
cmnlib.mbn /dev/block/bootdevice/by-name/cmnlib
cmnlib64.mbn /dev/block/bootdevice/by-name/cmnlib64
keymaster.mbn /dev/block/bootdevice/by-name/keymaster
xbl.elf /dev/block/bootdevice/by-name/xbl
lksecapp.mbn /dev/block/bootdevice/by-name/lksecapp
devcfg.mbn /dev/block/bootdevice/by-name/devcfg
adspso.mbn /dev/block/bootdevice/by-name/dsp
abl.elf /dev/block/bootdevice/by-name/abl
# filename + .bak backup partition
sbl1.mbn.bak /dev/block/bootdevice/by-name/sbl1bak
tz.mbn.bak /dev/block/bootdevice/by-name/tzbak
rpm.mbn.bak /dev/block/bootdevice/by-name/rpmbak
emmc_appsboot.mbn.bak /dev/block/bootdevice/by-name/abootbak
hyp.mbn.bak /dev/block/bootdevice/by-name/hypbak
pmic.mbn.bak /dev/block/bootdevice/by-name/pmicbak
cmnlib.mbn.bak /dev/block/bootdevice/by-name/cmnlibbak
cmnlib64.mbn.bak /dev/block/bootdevice/by-name/cmnlib64bak
keymaster.mbn.bak /dev/block/bootdevice/by-name/keymasterbak
xbl.elf.bak /dev/block/bootdevice/by-name/xblbak
lksecapp.mbn.bak /dev/block/bootdevice/by-name/lksecappbak
devcfg.mbn.bak /dev/block/bootdevice/by-name/devcfgbak
abl.elf.bak /dev/block/bootdevice/by-name/ablbak
# For multiple file firmware images that differ from *.mbn and *.bin
# you can specify filename.* to direct all files to the same location.
# For example for modem.mdt, modem.b00, modem.b01,... modem.bxx files
# writting 'modem.* location' will direct all files to 'location'.
# If still some files need to go to different location give the full
# file name also, for example 'modem.b01 other_location'
# filename location
modem.* /dev/block/bootdevice/by-name/modem
wcnss.* /dev/block/bootdevice/by-name/modem
widevine.* /dev/block/bootdevice/by-name/modem
adsp.* /dev/block/bootdevice/by-name/modem
================================================
FILE: rootdir/Android.mk
================================================
LOCAL_PATH:= $(call my-dir)
include $(CLEAR_VARS)
# files that live under device/qcom/common/rootdir/etc/
include $(CLEAR_VARS)
LOCAL_MODULE := init.crda.sh
LOCAL_MODULE_TAGS := optional
LOCAL_MODULE_CLASS := ETC
LOCAL_SRC_FILES := etc/init.crda.sh
LOCAL_MODULE_PATH := $(TARGET_OUT_VENDOR_EXECUTABLES)
include $(BUILD_PREBUILT)
include $(CLEAR_VARS)
LOCAL_MODULE := init.mata.rc
LOCAL_MODULE_TAGS := optional
LOCAL_MODULE_CLASS := ETC
LOCAL_SRC_FILES := etc/init.mata.rc
LOCAL_MODULE_PATH := $(TARGET_OUT_VENDOR_ETC)/init/hw
include $(BUILD_PREBUILT)
include $(CLEAR_VARS)
LOCAL_MODULE := init.recovery.mata.rc
LOCAL_MODULE_TAGS := optional
LOCAL_MODULE_CLASS := ETC
LOCAL_SRC_FILES := etc/init.recovery.mata.rc
LOCAL_MODULE_PATH := $(TARGET_OUT_VENDOR_ETC)/init/hw
include $(BUILD_PREBUILT)
include $(CLEAR_VARS)
LOCAL_MODULE := init.radio.sh
LOCAL_MODULE_TAGS := optional
LOCAL_MODULE_CLASS := ETC
LOCAL_SRC_FILES := etc/init.radio.sh
LOCAL_MODULE_PATH := $(TARGET_OUT_VENDOR_EXECUTABLES)
include $(BUILD_PREBUILT)
include $(CLEAR_VARS)
LOCAL_MODULE := init.qcom.usb.rc
LOCAL_MODULE_TAGS := optional
LOCAL_MODULE_CLASS := ETC
LOCAL_SRC_FILES := etc/init.qcom.usb.rc
LOCAL_MODULE_PATH := $(TARGET_OUT_VENDOR_ETC)/init/hw
include $(BUILD_PREBUILT)
include $(CLEAR_VARS)
LOCAL_MODULE := init.msm.usb.configfs.rc
LOCAL_MODULE_TAGS := optional
LOCAL_MODULE_CLASS := ETC
LOCAL_SRC_FILES := etc/init.msm.usb.configfs.rc
LOCAL_MODULE_PATH := $(TARGET_OUT_VENDOR_ETC)/init/hw
include $(BUILD_PREBUILT)
include $(CLEAR_VARS)
LOCAL_MODULE := init.qcom.ssr.sh
LOCAL_MODULE_TAGS := optional
LOCAL_MODULE_CLASS := ETC
LOCAL_SRC_FILES := etc/init.qcom.ssr.sh
LOCAL_MODULE_PATH := $(TARGET_OUT_VENDOR_EXECUTABLES)
include $(BUILD_PREBUILT)
================================================
FILE: rootdir/etc/hbtp_cmd.sh
================================================
#!/vendor/bin/sh
export PATH=$PATH:/vendor/bin
if [ "$1" == "grip" ]; then
if [ "$2" == "off" ]; then
hbtp_daemon tool sendCommand enableGripRejection 0
else
hbtp_daemon tool sendCommand enableGripRejection 1
fi
elif [ "$1" == "smoothness" ]; then
hbtp_daemon tool sendCommand setSmoothing $2
fi
================================================
FILE: rootdir/etc/init.crda.sh
================================================
#! /vendor/bin/sh
# Copyright (c) 2012, The Linux Foundation. All rights reserved.
#
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions are met:
# * Redistributions of source code must retain the above copyright
# notice, this list of conditions and the following disclaimer.
# * Redistributions in binary form must reproduce the above copyright
# notice, this list of conditions and the following disclaimer in the
# documentation and/or other materials provided with the distribution.
# * Neither the name of The Linux Foundation nor
# the names of its contributors may be used to endorse or promote
# products derived from this software without specific prior written
# permission.
#
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
# IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
# NON-INFRINGEMENT ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
# EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
# OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
#
country=`getprop wlan.crda.country`
# crda takes input in COUNTRY environment variable
if [ $country != "" ]
then
COUNTRY="$country" /system/bin/crda
fi
================================================
FILE: rootdir/etc/init.mata.diag.rc
================================================
on property:debug.sys.qxdm_cfg_file=*
setprop persist.sys.qxdm_cfg_file ${debug.sys.qxdm_cfg_file}
#persist.sys.logging
#where
# 0 = none- ie lock out ports (prod default)
# 1 = on device logging
# 2 = PC logging (handled in diag.rc)
on property:persist.sys.logging=0
setprop persist.sys.qxdm_logs 0
on property:persist.sys.logging=1
setprop persist.sys.qxdm_logs 1
on property:persist.sys.logging=2
setprop persist.sys.qxdm_logs 0
on property:persist.sys.qxdm_logs=1 && property:sys.boot_completed=1
start mdlog_start
on property:persist.sys.qxdm_logs=0 && property:sys.boot_completed=1
start mdlog_stop
# QXDM logs
service mdlog_start /vendor/bin/diag_mdlog -f ${persist.sys.qxdm_cfg_file:-/etc/Default_Log_Cfg.cfg} -c
class late_start
user system
group system diag sdcard_rw sdcard_r media_rw oem_2901
disabled
oneshot
service mdlog_stop /vendor/bin/diag_mdlog -k
class late_start
user system
group system diag sdcard_rw sdcard_r media_rw oem_2901
disabled
oneshot
================================================
FILE: rootdir/etc/init.mata.rc
================================================
# Copyright (c) 2009-2012, 2014-2017, The Linux Foundation. All rights reserved.
#
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions are met:
# * Redistributions of source code must retain the above copyright
# notice, this list of conditions and the following disclaimer.
# * Redistributions in binary form must reproduce the above copyright
# notice, this list of conditions and the following disclaimer in the
# documentation and/or other materials provided with the distribution.
# * Neither the name of The Linux Foundation nor
# the names of its contributors may be used to endorse or promote
# products derived from this software without specific prior written
# permission.
#
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
# IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
# NON-INFRINGEMENT ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
# EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
# OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
#
import /vendor/etc/init/hw/init.qcom.usb.rc
import /vendor/etc/init/hw/init.msm.usb.configfs.rc
import /vendor/etc/init/hw/init.mata.diag.rc
on charger
setprop persist.sys.usb.config mass_storage
start hvdcp_opti
setprop sys.usb.configfs 1
load_system_props
write /sys/class/leds/lcd-backlight/brightness 80
write /sys/devices/system/cpu/cpu1/online 0
write /sys/devices/system/cpu/cpu2/online 0
write /sys/devices/system/cpu/cpu3/online 0
write /sys/devices/system/cpu/cpu4/online 0
write /sys/devices/system/cpu/cpu5/online 0
write /sys/devices/system/cpu/cpu6/online 0
write /sys/devices/system/cpu/cpu7/online 0
write /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor powersave
write /sys/devices/system/cpu/cpu1/cpufreq/scaling_governor powersave
write /sys/devices/system/cpu/cpu2/cpufreq/scaling_governor powersave
write /sys/devices/system/cpu/cpu3/cpufreq/scaling_governor powersave
write /sys/devices/system/cpu/cpu4/cpufreq/scaling_governor powersave
write /sys/devices/system/cpu/cpu5/cpufreq/scaling_governor powersave
write /sys/devices/system/cpu/cpu6/cpufreq/scaling_governor powersave
write /sys/devices/system/cpu/cpu7/cpufreq/scaling_governor powersave
write /sys/class/sidecar/enable_control 0
on early-init
mount debugfs debugfs /sys/kernel/debug
chmod 0755 /sys/kernel/debug
chown root system /dev/kmsg
chmod 0620 /dev/kmsg
mkdir /firmware 0771 system system
symlink /data/tombstones /tombstones
mkdir /dsp 0771 media media
write /proc/sys/kernel/sched_boost 1
on init
# Disable UFS powersaving
write /sys/devices/soc/${ro.boot.bootdevice}/clkscale_enable 0
write /sys/devices/soc/${ro.boot.bootdevice}/clkgate_enable 0
write /sys/devices/soc/${ro.boot.bootdevice}/hibern8_on_idle_enable 0
write /sys/module/lpm_levels/parameters/sleep_disabled Y
# Set permissions for persist partition
mkdir /mnt/vendor/persist 0771 root system
# Support legacy paths
symlink /sdcard /mnt/sdcard
symlink /sdcard /storage/sdcard0
# Create cgroup mount point for memory
mkdir /sys/fs/cgroup/memory/bg 0750 root system
write /sys/fs/cgroup/memory/bg/memory.swappiness 140
write /sys/fs/cgroup/memory/bg/memory.move_charge_at_immigrate 1
chown root system /sys/fs/cgroup/memory/bg/tasks
chmod 0660 /sys/fs/cgroup/memory/bg/tasks
# The settings for the governor will be set in post-boot script
# configure governor settings for little cluster
write /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor "interactive"
# configure governor settings for big cluster
write /sys/devices/system/cpu/cpu4/cpufreq/scaling_governor "interactive"
write /dev/stune/foreground/schedtune.sched_boost_no_override 1
write /dev/stune/top-app/schedtune.sched_boost_no_override 1
write /dev/stune/schedtune.colocate 0
write /dev/stune/background/schedtune.colocate 0
write /dev/stune/system-background/schedtune.colocate 0
write /dev/stune/foreground/schedtune.colocate 0
write /dev/stune/top-app/schedtune.colocate 1
write /sys/module/qpnp_rtc/parameters/poweron_alarm 1
# Setup all the sub-system as related
write /sys/bus/msm_subsys/devices/subsys0/restart_level RELATED
write /sys/bus/msm_subsys/devices/subsys1/restart_level RELATED
write /sys/bus/msm_subsys/devices/subsys2/restart_level RELATED
write /sys/bus/msm_subsys/devices/subsys3/restart_level RELATED
write /sys/bus/msm_subsys/devices/subsys4/restart_level RELATED
write /sys/bus/msm_subsys/devices/subsys5/restart_level RELATED
write /sys/bus/msm_subsys/devices/subsys6/restart_level RELATED
# Set the right permission for pstore
chown system log /sys/fs/pstore
# ZRAM setup
write /sys/block/zram0/comp_algorithm lz4
write /proc/sys/vm/page-cluster 0
on early-boot
# set RLIMIT_MEMLOCK to 64MB
setrlimit 8 67108864 67108864
# Allow subsystem (modem etc) debugging
write /sys/kernel/boot_adsp/boot 1
write /sys/kernel/boot_slpi/boot 1
exec u:r:qti_init_shell:s0 -- /vendor/bin/init.qcom.early_boot.sh
# Update dm-verity state and set partition.*.verified properties
verity_update_state
# Permission for Vibrator
chown system system /sys/class/timed_output/vibrator/vmax_mv
on boot
chown system system /sys/class/leds/red/blink
chown system system /sys/class/leds/green/blink
chown system system /sys/class/leds/blue/blink
start rmt_storage
start rfs_access
insmod /vendor/lib/modules/qca_cld3_wlan.ko
chown system shell /sys/class/sidecar/power_control
chown bluetooth bluetooth /sys/module/bluetooth_power/parameters/power
chown bluetooth net_bt /sys/class/rfkill/rfkill0/type
chown bluetooth net_bt /sys/class/rfkill/rfkill0/state
chown bluetooth bluetooth /proc/bluetooth/sleep/proto
chown bluetooth bluetooth /sys/module/hci_uart/parameters/ath_lpm
chown bluetooth bluetooth /sys/module/hci_uart/parameters/ath_btwrite
chown system system /sys/module/sco/parameters/disable_esco
chown bluetooth bluetooth /sys/module/hci_smd/parameters/hcismd_set
chown system system /sys/module/msm_core/parameters/polling_interval
chown system system /sys/module/msm_core/parameters/disabled
chown system system /sys/kernel/debug/msm_core/enable
chown system system /sys/kernel/debug/msm_core/ptable
chown system system /sys/kernel/boot_slpi/ssr
chown system system /sys/module/radio_iris_transport/parameters/fmsmd_set
# For tracing support in hub.
chown system shell /sys/kernel/debug/tracing/trace
chown system shell /sys/kernel/debug/tracing/buffer_size_kb
chown system shell /sys/kernel/debug/tracing/tracing_on
chown system shell /sys/kernel/debug/tracing/trace_clock
chown system shell /sys/kernel/debug/tracing/options/overwrite
chown system shell /sys/kernel/debug/tracing/events/cpufreq_interactive/enable
chown system shell /sys/kernel/debug/tracing/events/binder/binder_transaction/enable
chown system shell /sys/kernel/debug/tracing/events/binder/binder_transaction_received/enable
chmod 0660 /sys/module/bluetooth_power/parameters/power
chmod 0660 /sys/module/hci_smd/parameters/hcismd_set
chmod 0660 /sys/module/radio_iris_transport/parameters/fmsmd_set
chmod 0660 /sys/class/rfkill/rfkill0/state
chmod 0660 /proc/bluetooth/sleep/proto
chown bluetooth net_bt /dev/ttyHS0
chmod 0660 /sys/module/hci_uart/parameters/ath_lpm
chmod 0660 /sys/module/hci_uart/parameters/ath_btwrite
chmod 0660 /dev/ttyHS0
chown bluetooth bluetooth /sys/devices/platform/msm_serial_hs.0/clock
chmod 0660 /sys/devices/platform/msm_serial_hs.0/clock
chmod 0660 /dev/ttyHS2
chown bluetooth bluetooth /dev/ttyHS2
chown bluetooth net_bt /sys/class/rfkill/rfkill0/device/extldo
chmod 0660 /sys/class/rfkill/rfkill0/device/extldo
#Create QMUX deamon socket area
mkdir /dev/socket/qmux_radio 0770 radio radio
chmod 2770 /dev/socket/qmux_radio
mkdir /dev/socket/qmux_audio 0770 media audio
chmod 2770 /dev/socket/qmux_audio
mkdir /dev/socket/qmux_bluetooth 0770 bluetooth bluetooth
chmod 2770 /dev/socket/qmux_bluetooth
mkdir /dev/socket/qmux_gps 0770 gps gps
chmod 2770 /dev/socket/qmux_gps
mkdir /mnt/vendor/persist/drm 0770 system system
mkdir /mnt/vendor/persist/bluetooth 0770 bluetooth system
mkdir /mnt/vendor/persist/misc 0770 system system
mkdir /mnt/vendor/persist/alarm 0770 system system
mkdir /mnt/vendor/persist/time 0770 system system
mkdir /mnt/vendor/persist/secnvm 0770 system system
mkdir /mnt/vendor/persist/report 0770 shell shell
#Create NETMGR daemon socket area
mkdir /dev/socket/netmgr 0750 radio radio
setprop wifi.interface wlan0
# Define TCP buffer sizes for various networks
# ReadMin, ReadInitial, ReadMax, WriteMin, WriteInitial, WriteMax,
setprop net.tcp.buffersize.wifi 524288,2097152,4194304,262144,524288,1048576
setprop ro.telephony.call_ring.multiple false
#enable camera read sensors data
setprop persist.camera.gyro.disable 0
#Remove SUID bit for iproute2 ip tool
chmod 0755 /system/bin/ip
chmod 0444 /sys/devices/platform/msm_hsusb/gadget/usb_state
# Define TCP buffer sizes for various networks
# ReadMin, ReadInitial, ReadMax, WriteMin, WriteInitial, WriteMax,
setprop net.tcp.buffersize.default 4096,87380,524288,4096,16384,110208
setprop net.tcp.buffersize.lte 2097152,4194304,8388608,262144,524288,1048576
setprop net.tcp.buffersize.umts 4094,87380,110208,4096,16384,110208
setprop net.tcp.buffersize.hspa 4094,87380,1220608,4096,16384,1220608
setprop net.tcp.buffersize.hsupa 4094,87380,1220608,4096,16384,1220608
setprop net.tcp.buffersize.hsdpa 4094,87380,1220608,4096,16384,1220608
setprop net.tcp.buffersize.hspap 4094,87380,1220608,4096,16384,1220608
setprop net.tcp.buffersize.edge 4093,26280,35040,4096,16384,35040
setprop net.tcp.buffersize.gprs 4092,8760,11680,4096,8760,11680
setprop net.tcp.buffersize.evdo 4094,87380,524288,4096,16384,262144
setprop net.tcp.2g_init_rwnd 10
# Assign TCP buffer thresholds to be ceiling value of technology maximums
# Increased technology maximums should be reflected here.
write /proc/sys/net/core/rmem_max 8388608
write /proc/sys/net/core/wmem_max 8388608
# To prevent out of order acknowledgements from making
# connection tracking to treat them as not belonging to
# the connection they belong to.
# Otherwise, a weird issue happens in which some long
# connections on high-throughput links get dropped when
# an ack packet comes out of order
write /proc/sys/net/netfilter/nf_conntrack_tcp_be_liberal 1
# Set the console loglevel to < KERN_INFO
# Set the default message loglevel to KERN_INFO
write /proc/sys/kernel/printk "6 6 1 7"
# bond0 used by FST Manager
chown wifi wifi /sys/class/net/bond0/bonding/queue_id
# Allow access to emmc rawdump block partition and dload sysfs node
chown root system /sys/kernel/dload/emmc_dload
chmod 0660 /sys/kernel/dload/emmc_dload
chown root system /sys/kernel/dload/dload_mode
chmod 0660 /sys/kernel/dload/dload_mode
# Create directory used for display
mkdir /mnt/vendor/persist/display 0770 system graphics
# Create vpp directory
mkdir /mnt/vendor/persist/vpp 0770 media media
on fs
wait /dev/block/platform/soc/1da4000.ufshc
symlink /dev/block/platform/soc/1da4000.ufshc /dev/block/bootdevice
mount_all /vendor/etc/fstab.mata
# Keeping following partitions outside fstab file. As user may not have
# these partition flashed on the device. Failure to mount any partition in fstab file
# results in failure to launch late-start class.
mkdir /mnt/vendor/persist/data 0700 system system
mkdir /mnt/vendor/persist/display 0770 system graphics
mkdir /mnt/vendor/persist/rfs 0770 root system
mkdir /mnt/vendor/persist/hlos_rfs 0770 root system
chmod 0770 /mnt/vendor/persist/rfs
chmod 0770 /mnt/vendor/persist/rfs/shared
chown system system /mnt/vendor/persist/rfs/shared
chmod 0770 /mnt/vendor/persist/rfs/msm
chown system system /mnt/vendor/persist/rfs/msm
chmod 0770 /mnt/vendor/persist/rfs/msm/adsp
chown system system /mnt/vendor/persist/rfs/msm/adsp
chmod 0770 /mnt/vendor/persist/rfs/msm/mpss
chown system system /mnt/vendor/persist/rfs/msm/mpss
mkdir /mnt/vendor/persist/rfs/msm/slpi 0770 system system
chmod 0770 /mnt/vendor/persist/rfs/mdm
chown system system /mnt/vendor/persist/rfs/mdm
chmod 0770 /mnt/vendor/persist/rfs/mdm/adsp
chown system system /mnt/vendor/persist/rfs/mdm/adsp
chmod 0770 /mnt/vendor/persist/rfs/mdm/mpss
chown system system /mnt/vendor/persist/rfs/mdm/mpss
mkdir /mnt/vendor/persist/rfs/mdm/slpi 0770 system system
chmod 0770 /mnt/vendor/persist/rfs/mdm/sparrow
chown system system /mnt/vendor/persist/rfs/mdm/sparrow
mkdir /mnt/vendor/persist/rfs/mdm/tn 0770 system system
chown system system /mnt/vendor/persist/rfs/apq
chmod 0770 /mnt/vendor/persist/rfs/apq
chown system system /mnt/vendor/persist/rfs/apq/gnss
chmod 0770 /mnt/vendor/persist/rfs/apq/gnss
chmod 0770 /mnt/vendor/persist/hlos_rfs
restorecon_recursive --force /mnt/vendor/persist
mkdir /mnt/vendor/persist/data 0700 system system
chown system system /mnt/vendor/persist/rfs/shared
chown system system /mnt/vendor/persist/rfs/msm
chown system system /mnt/vendor/persist/rfs/msm/adsp
chown system system /mnt/vendor/persist/rfs/msm/mpss
chown system system /mnt/vendor/persist/rfs/msm/slpi
chown system system /mnt/vendor/persist/rfs/mdm
chown system system /mnt/vendor/persist/rfs/mdm/adsp
chown system system /mnt/vendor/persist/rfs/mdm/mpss
chown system system /mnt/vendor/persist/rfs/mdm/sparrow
chown system system /mnt/vendor/persist/rfs/mdm/tn
chown system system /mnt/vendor/persist/rfs/apq
chown system system /mnt/vendor/persist/rfs/apq/gnss
on post-fs
chmod 0755 /sys/kernel/debug/tracing
start qseecomd
chmod 0664 /sys/devices/virtual/graphics/fb0/idle_time
chown system graphics /sys/devices/virtual/graphics/fb0/idle_time
write /sys/devices/virtual/graphics/fb0/idle_time 100
wait_for_prop vendor.sys.listeners.registered true
write /dev/ipa 1
# msm specific files that need to be created on /data
on post-fs-data
chown system system /sys/devices/soc/soc:fpc,fpc1020/irq
chown system system /sys/devices/soc/soc:fpc,fpc1020/wakeup_enable
chown system system /sys/devices/soc/soc:fpc,fpc1020/hw_reset
mkdir /data/tombstones 0771 system system
mkdir /tombstones/modem 0771 system system
mkdir /tombstones/lpass 0771 system system
mkdir /tombstones/wcnss 0771 system system
mkdir /tombstones/dsps 0771 system system
mkdir /data/vendor/hbtp 0750 system system
mkdir /data/misc/qvr 0770 system system
mkdir /data/vendor/misc 01771 system system
# Create directory used by display clients
mkdir /data/vendor/display 0770 system graphics
# Change lm related dirs
mkdir /data/vendor/lm 0700 root root
# Create directory used by media clients
mkdir /data/vendor/media 0770 mediacodec media
#Create directories for Fingerprint
mkdir /data/vendor/misc/qti_fp 0770 system system
mkdir /data/vendor/misc/qti_fp/bg_estimation 0770 system system
mkdir /data/vendor/misc/qti_fp/calib_test 0770 system system
mkdir /data/vendor/misc/qti_fp/database 0770 system system
# create QDMA dropbox
mkdir /data/vendor/qdmastats 0700 system system
mkdir /data/vendor/qdma 0770 system system
# Create directory for TZ Apps
mkdir /data/misc/qsee 0770 system system
# Create directory for apps access via QTEEConnector
mkdir /data/vendor/qtee 0770 system system
# Create directory for voiceprint
mkdir /data/misc/qvop 0771 system system
#Create folder for mm-qcamera-daemon
mkdir /data/misc/camera 0770 camera camera
mkdir /data/media 0770 media_rw media_rw
chown media_rw media_rw /data/media
#Create directory for tftp
mkdir /data/vendor/tombstones 0771 system system
mkdir /data/vendor/ramdump 0771 root system
mkdir /data/misc/bluetooth 0770 bluetooth bluetooth
mkdir /data/vendor/bluetooth 0770 bluetooth bluetooth
mkdir /data/vendor/ramdump/bluetooth 0770 bluetooth bluetooth
# Create the directories used by the Wireless subsystem
mkdir /data/vendor/wifi 0770 wifi wifi
mkdir /data/vendor/wifi/sockets 0770 wifi wifi
mkdir /data/vendor/wifi/hostapd 0770 wifi wifi
mkdir /data/vendor/wifi/hostapd/ctrl 0770 wifi wifi
mkdir /data/vendor/wifi/wpa_supplicant 0770 wifi wifi
mkdir /data/misc/wifi 0770 wifi wifi
mkdir /data/vendor/wifi 0770 wifi wifi
mkdir /data/vendor/wifi/wpa 0770 wifi wifi
mkdir /data/vendor/wifi/wpa/sockets 0770 wifi wifi
mkdir /data/misc/wifi/wpa_supplicant 0770 wifi wifi
mkdir /data/misc/dhcp 0777 dhcp dhcp
chown dhcp dhcp /data/misc/dhcp
# Setup sensors-related directories and permissions
mkdir /mnt/vendor/persist/sensors 0775
chown root system /mnt/vendor/persist/sensors
write /mnt/vendor/persist/sensors/sensors_settings 1
chown root system /mnt/vendor/persist/sensors/sensors_settings
chmod 664 /mnt/vendor/persist/sensors/sensors_settings
chown root system /mnt/vendor/persist/sensors/sns.reg
chmod 664 /mnt/vendor/persist/sensors/sns.reg
chown root system /dev/sensors
chmod 660 /dev/sensors
#create port-bridge log dir
mkdir /data/vendor/port_bridge 0770 radio radio
chmod 0770 /data/vendor/port_bridge
#create netmgr log dir
mkdir /data/vendor/netmgr 0770 radio radio
chmod 0770 /data/vendor/netmgr
# Create retail entries
mkdir /data/preloads 0775 system system
mkdir /data/preloads/media 0775 system system
mkdir /data/preloads/demo 0775 system system
mkdir /data/preloads/apps 0775 system system
#create ipacm log dir
mkdir /data/vendor/ipa 0770 radio radio
chmod 0770 /data/vendor/ipa
# Create the directories used by CnE subsystem
mkdir /data/connectivity 0771 system system
chown system system /data/connectivity
# Create the directories used by DPM subsystem
mkdir /data/dpm 0771 system system
chown system system /data/dpm
mkdir /data/dpm/nsrm 0771 system system
chown system system /data/dpm/nsrm
# Create directory used by audio subsystem
mkdir /data/vendor/misc/audio 0770 audio audio
# Create directory for audio delta files
mkdir /data/vendor/misc/audio/acdbdata 0770 media audio
mkdir /data/vendor/misc/audio/acdbdata/delta 0770 media audio
# Create directory used by the DASH client
mkdir /data/misc/dash 0770 media audio
# Create directory for radio
mkdir /data/vendor/radio 0770 system radio
# Mounting of persist is moved to 'on emmc-fs' and 'on fs' sections
# We chown/chmod /mnt/vendor/persist again so because mount is run as root + defaults
chown root system /mnt/vendor/persist
chmod 0771 /mnt/vendor/persist
chown system system /mnt/vendor/persist/WCNSS_qcom_wlan_nv.bin
#Create the symlink to qcn wpa_supplicant folder for ar6000 wpa_supplicant
mkdir /data/system 0775 system system
#Create directories for Location services
mkdir /data/vendor/location 0770 gps gps
mkdir /data/vendor/location/mq 0770 gps gps
mkdir /data/vendor/location/xtwifi 0770 gps gps
# migrating the GNSS hal to vendor requires this to be relabeled; the
# directory itself is created by /vendor/bin/xtra-daemon
chown gps gps /data/vendor/location/xtra
chmod 0750 /data/vendor/location/xtra
chown gps gps /data/vendor/location/xtra/socket_hal_xtra
chmod 0660 /data/vendor/location/xtra/socket_hal_xtra
chown gps gps /data/vendor/location/xtra/xtra.sqlite
#Create directory from IMS services
mkdir /data/shared 0755
chown system system /data/shared
#Create directory for FOTA
mkdir /data/fota 0771
chown system system /data/fota
#Create directory for hostapd
mkdir /data/hostapd 0770 system wifi
# Create /data/vendor/time folder for time-services
mkdir /data/vendor/time/ 0700 system system
mkdir /data/vendor/audio/ 0770 media audio
# Create a folder for audio delta files
mkdir /data/vendor/audio/acdbdata 0770 media audio
mkdir /data/vendor/audio/acdbdata/delta 0770 media audio
setprop vold.post_fs_data_done 1
#Create PERFD deamon related dirs
mkdir /data/vendor/perfd 0770 root system
chmod 2770 /data/vendor/perfd
rm /data/vendor/perfd/default_values
# NFC local data and nfcee xml storage
mkdir /data/nfc 0770 nfc nfc
mkdir /data/nfc/param 0770 nfc nfc
mkdir /data/vendor/nfc 0770 nfc nfc
#Create IOP deamon related dirs
mkdir /data/vendor/iop 0770 root system
# Mark the copy complete flag to not completed
write /data/vendor/radio/copy_complete 0
chown radio radio /data/vendor/radio/copy_complete
chmod 0660 /data/vendor/radio/copy_complete
# copy prebuilt qcril.db files always
copy /vendor/radio/qcril_database/qcril.db /data/vendor/radio/qcril_prebuilt.db
chown radio radio /data/vendor/radio/qcril_prebuilt.db
chmod 0660 /data/vendor/radio/qcril_prebuilt.db
# File flags for prebuilt ril db file
write /data/vendor/radio/prebuilt_db_support 1
chown radio radio /data/vendor/radio/prebuilt_db_support
chmod 0400 /data/vendor/radio/prebuilt_db_support
write /data/vendor/radio/db_check_done 0
chown radio radio /data/vendor/radio/db_check_done
chmod 0660 /data/vendor/radio/db_check_done
#Create SWAP related dirs
mkdir /data/system/swap 0770 root system
chmod 2770 /data/system/swap
# set aggressive read ahead for dm-0 and dm-1 during boot up
write /sys/block/dm-0/queue/read_ahead_kb 2048
write /sys/block/dm-1/queue/read_ahead_kb 2048
# Create vpp directory
mkdir /data/vendor/vpp 0770 media media
# Create directory to backup kernel panic logs
mkdir /data/misc/pstore 0770 system system
# Change permission for directory that stores trace logs
chown system shell /data/misc/trace
start ipacm-diag
start qti
start netmgrd
start port-bridge
start mata_provision
service ssr_setup /vendor/bin/ssr_setup
oneshot
disabled
on property:debug.ftrace.file=*
chmod 0660 ${debug.ftrace.file}
chown system shell ${debug.ftrace.file}
on property:persist.sys.ssr.enable_debug=*
write /sys/module/subsystem_restart/parameters/enable_debug ${persist.sys.ssr.enable_debug}
on property:persist.sys.mba_boot_timeout=*
write /sys/module/pil_msa/parameters/pbl_mba_boot_timeout_ms ${persist.sys.mba_boot_timeout}
on property:persist.sys.modem_auth_timeout=*
write /sys/module/pil_msa/parameters/modem_auth_timeout_ms ${persist.sys.modem_auth_timeout}
on property:persist.sys.pil_proxy_timeout=*
write /sys/module/peripheral_loader/parameters/proxy_timeout_ms ${persist.sys.pil_proxy_timeout}
on property:persist.sys.ssr.restart_level=*
start ssr_setup
on property:sys.boot_completed=1
write /dev/kmsg "Boot completed "
# Enable UFS powersaving
write /sys/devices/soc/${ro.boot.bootdevice}/clkscale_enable 1
write /sys/devices/soc/${ro.boot.bootdevice}/clkgate_enable 1
write /sys/devices/soc/${ro.boot.bootdevice}/hibern8_on_idle_enable 1
write /sys/module/lpm_levels/parameters/sleep_disabled N
# Enable swap
swapon_all /vendor/etc/fstab.mata
#Reset read ahead for dm-0 and dm-1 to 512kb
write /sys/block/dm-0/queue/read_ahead_kb 512
write /sys/block/dm-1/queue/read_ahead_kb 512
#WDSP FW boot sysfs node used by STHAL
chown media audio /sys/kernel/wcd_cpe0/fw_name
start qcom-post-boot
write /dev/cpuset/top-app/cpus 0-7
write /dev/cpuset/foreground/boost/cpus 0-3,6-7
write /dev/cpuset/foreground/cpus 0-3,6-7
write /dev/cpuset/background/cpus 0-1
write /dev/cpuset/system-background/cpus 0-3
# Enable PowerHAL hint processing
setprop vendor.powerhal.init 1
on property:persist.radio.atfwd.start=false
stop atfwd
on property:radio.atfwd.start=false
stop atfwd
# corefile limit
on property:persist.debug.trace=1
mkdir /data/core 0777 root root
write /proc/sys/kernel/core_pattern "/data/core/%E.%p.%e"
on property:init.svc.wpa_supplicant=stopped
stop dhcpcd
on property:bluetooth.sap.status=running
start bt-sap
on property:bluetooth.sap.status=stopped
stop bt-sap
on property:bluetooth.dun.status=running
start bt-dun
on property:bluetooth.dun.status=stopped
stop bt-dun
on property:bluetooth.startbtsnoop=true
start btsnoop
on property:bluetooth.startbtsnoop=false
stop btsnoop
on property:bluetooth.startbtlogger=true
start bt_logger
on property:bluetooth.startbtlogger=false
stop bt_logger
on property:vold.decrypt=trigger_restart_framework
start ipacm-diag
start qti
start netmgrd
start port-bridge
start wcnss-service
on property:persist.env.fastdorm.enabled=true
setprop persist.radio.data_no_toggle 1
service cnd /vendor/bin/cnd
class main
user system
group system wifi inet radio wakelock net_admin
service irsc_util /vendor/bin/irsc_util "/vendor/etc/sec_config"
class core
user root
oneshot
service rmt_storage /vendor/bin/rmt_storage
class core
user root
shutdown critical
ioprio rt 0
service tftp_server /vendor/bin/tftp_server
class core
user root
on property:wc_transport.start_hci=true
start start_hci_filter
on property:wc_transport.start_hci=false
stop start_hci_filter
service start_hci_filter /vendor/bin/wcnss_filter
class late_start
user bluetooth
group bluetooth diag system wakelock
disabled
service bt-dun /system/bin/dun-server /dev/smd7 /dev/rfcomm0
class late_start
user bluetooth
group bluetooth net_bt_admin inet
disabled
oneshot
service bt-sap /system/bin/sapd 15
user bluetooth
group bluetooth net_bt_admin
class late_start
disabled
oneshot
service btsnoop /system/bin/btsnoop
user bluetooth
group bluetooth net_bt_admin sdcard_rw sdcard_r media_rw
class late_start
disabled
oneshot
service bt_logger /system/bin/bt_logger
user bluetooth
group bluetooth net_bt_admin sdcard_rw sdcard_r media_rw
class late_start
disabled
oneshot
service port-bridge /vendor/bin/port-bridge
class main
user radio
group radio system inet
disabled
oneshot
service qmiproxy /system/bin/qmiproxy
class main
user radio
group radio diag
disabled
service netmgrd /vendor/bin/netmgrd
class main
disabled
service ipacm-diag /vendor/bin/ipacm-diag
class main
user radio
socket ipacm_log_file dgram 660 radio radio
group radio diag
disabled
service qti /vendor/bin/qti
class main
user radio
group radio net_raw diag usb net_admin
disabled
service btaddr_extract /vendor/bin/btaddr_extract
class core
user bluetooth
group system
oneshot
service sensors /vendor/bin/sensors.qcom
class core
user system
group system
# Grants the ability for this daemon to bind IPC router ports so it can
# register QMI services
capabilities NET_BIND_SERVICE
on property:ro.use_data_netmgrd=false
# netmgr not supported on specific target
stop netmgrd
# Adjust socket buffer to enlarge TCP receive window for high bandwidth
# but only if ro.data.large_tcp_window_size property is set.
on property:ro.data.large_tcp_window_size=true
write /proc/sys/net/ipv4/tcp_adv_win_scale 2
on property:sys.sysctl.tcp_adv_win_scale=*
write /proc/sys/net/ipv4/tcp_adv_win_scale ${sys.sysctl.tcp_adv_win_scale}
service amp_init /vendor/bin/amploader -i
class late_start
user root
disabled
oneshot
service amp_load /vendor/bin/amploader -l 7000
class late_start
user root
disabled
oneshot
service amp_unload /vendor/bin/amploader -u
class late_start
user root
disabled
oneshot
service wpa_supplicant /vendor/bin/hw/wpa_supplicant \
-O/data/vendor/wifi/wpa/sockets -puse_p2p_group_interface=1 -dd \
-e/data/misc/wifi/entropy.bin -g@android:wpa_wlan0
# we will start as root and wpa_supplicant will switch to user wifi
# after setting up the capabilities required for WEXT
# user wifi
# group wifi inet keystore
interface android.hardware.wifi.supplicant@1.0::ISupplicant default
interface android.hardware.wifi.supplicant@1.1::ISupplicant default
class main
socket wpa_wlan0 dgram 660 wifi wifi
disabled
oneshot
# FST Manager with hostapd (softap) - all settings inside ini file
service fstman /vendor/bin/fstman -B -ddd -c /data/vendor/wifi/fstman.ini
user wifi
group wifi net_admin net_raw
class main
disabled
oneshot
# FST Manager with supplicant - connect to supplicant socket
service fstman_wlan0 /vendor/bin/fstman -B -ddd -c /data/vendor/wifi/fstman.ini @android:wpa_wlan0
user wifi
group wifi net_admin net_raw
class main
disabled
oneshot
on property:netd.fstman.start=true
start fstman
on property:netd.fstman.start=false
stop fstman
service dhcpcd_wlan0 /system/bin/dhcpcd -ABKLG
class late_start
disabled
oneshot
service dhcpcd_bond0 /system/bin/dhcpcd -ABKLG
class late_start
disabled
oneshot
service dhcpcd_p2p /system/bin/dhcpcd -ABKLG
class late_start
disabled
oneshot
service iprenew_wlan0 /system/bin/dhcpcd -n
class late_start
disabled
oneshot
service iprenew_bond0 /system/bin/dhcpcd -n
class late_start
disabled
oneshot
service iprenew_p2p /system/bin/dhcpcd -n
class late_start
disabled
oneshot
service ptt_socket_app /vendor/bin/ptt_socket_app -d
class main
user root
group root
oneshot
service ptt_ffbm /vendor/bin/ptt_socket_app -f -d
user root
group root
disabled
oneshot
service cnss-daemon /vendor/bin/cnss-daemon -n -l
class late_start
user system
group system inet net_admin wifi
capabilities NET_ADMIN
on property:sys.shutdown.requested=*
stop cnss-daemon
service dhcpcd_bt-pan /system/bin/dhcpcd -BKLG
class late_start
disabled
oneshot
service iprenew_bt-pan /system/bin/dhcpcd -n
class late_start
disabled
oneshot
service dhcpcd_bnep0 /system/bin/dhcpcd -BKLG
disabled
oneshot
service dhcpcd_bnep1 /system/bin/dhcpcd -BKLG
disabled
oneshot
service dhcpcd_bnep2 /system/bin/dhcpcd -BKLG
disabled
oneshot
service dhcpcd_bnep3 /system/bin/dhcpcd -BKLG
disabled
oneshot
service dhcpcd_bnep4 /system/bin/dhcpcd -BKLG
disabled
oneshot
service loc_launcher /vendor/bin/loc_launcher
#loc_launcher will start as root and set its uid to gps
class late_start
group gps inet diag wifi
on property:crypto.driver.load=1
insmod /system/lib/modules/qce.ko
insmod /system/lib/modules/qcedev.ko
service drmdiag /vendor/bin/drmdiagapp
class late_start
user root
disabled
oneshot
on property:drmdiag.load=1
start drmdiag
on property:drmdiag.load=0
stop drmdiag
service init-radio-sh /vendor/bin/init.radio.sh
class late_start
user root
oneshot
service qcom-post-boot /vendor/bin/init.qcom.post_boot.sh
class late_start
user root
disabled
oneshot
service wifi-crda /vendor/bin/init.crda.sh
class late_start
user root
disabled
oneshot
service qvop-daemon /vendor/bin/qvop-daemon
class late_start
user system
group system drmrpc
service atfwd /vendor/bin/ATFWD-daemon
class late_start
user system
group system radio
service hostapd_fst /vendor/bin/hostapd -dd -g /data/vendor/wifi/hostapd/global /data/vendor/wifi/hostapd.conf
class late_start
user wifi
group wifi inet keystore net_admin net_raw
oneshot
disabled
service ims_regmanager /vendor/bin/exe-ims-regmanagerprocessnative
class late_start
group net_bt_admin inet radio wifi
disabled
on property:persist.ims.regmanager.mode=1
start ims_regmanager
on property:ro.data.large_tcp_window_size=true
# Adjust socket buffer to enlarge TCP receive window for high bandwidth (e.g. DO-RevB)
write /proc/sys/net/ipv4/tcp_adv_win_scale 2
service battery_monitor /system/bin/battery_monitor
user system
group system
disabled
service ril-daemon2 /vendor/bin/hw/rild -c 2
class main
socket rild2 stream 660 root radio
socket rild-debug2 stream 660 radio system
user radio
disabled
group radio cache inet misc audio sdcard_r sdcard_rw diag oem_2901 log
capabilities BLOCK_SUSPEND NET_ADMIN NET_RAW
service ril-daemon3 /vendor/bin/hw/rild -c 3
class main
socket rild3 stream 660 root radio
socket rild-debug3 stream 660 radio system
user radio
disabled
group radio cache inet misc audio sdcard_r sdcard_rw diag oem_2901 log
capabilities BLOCK_SUSPEND NET_ADMIN NET_RAW
service profiler_daemon /system/bin/profiler_daemon
class late_start
user root
group root
disabled
service charger /charger
class charger
group system graphics input
seclabel u:r:charger:s0
service ssr_diag /vendor/bin/ssr_diag
class late_start
user system
group system
disabled
service hvdcp /system/bin/hvdcp
class core
user root
disabled
on property:persist.usb.hvdcp.detect=true
start hvdcp
on property:persist.usb.hvdcp.detect=false
stop hvdcp
service charger_monitor /system/bin/charger_monitor
user root
group root
disabled
service qbcharger /charger -m 1
disabled
oneshot
on property:sys.qbcharger.enable=true
start qbcharger
on property:sys.qbcharger.enable=false
stop qbcharger
on property:init.svc.fps_hal=running
stop fps_hal
service vendor.msm_irqbalance /vendor/bin/msm_irqbalance -f /vendor/etc/msm_irqbalance.conf
socket msm_irqbalance seqpacket 660 root system
class core
user root
group root
writepid /dev/cpuset/system-background/tasks
#add poweroffhandler
service poweroffhandler /vendor/bin/poweroffhandler
class core
user media
group graphics audio
disabled
oneshot
service time_daemon /vendor/bin/time_daemon
class main
user root
group root
# Set vendor-ril lib path based on Meta version
on property:vendor.rild.libpath=*
setprop rild.libpath ${vendor.rild.libpath}
# Needed for OTA control
on property:ro.boot.carrier.sku=*
setprop ro.oem.key1 ${ro.boot.carrier.sku}
#Peripheral manager
service per_mgr /vendor/bin/pm-service
class core
user system
group system
ioprio rt 4
service per_proxy /vendor/bin/pm-proxy
class core
user system
group system
disabled
on property:init.svc.per_mgr=running
start per_proxy
on property:sys.shutdown.requested=*
stop per_proxy
# Disable subsystem restart
write /sys/module/subsystem_restart/parameters/disable_restart_work 0x9889deed
service qseecomd /vendor/bin/qseecomd
class core
user root
group root
service spdaemon /vendor/bin/spdaemon
class core
user system
group system
service thermal-engine /vendor/bin/thermal-engine
class main
user root
socket thermal-send-client stream 0666 system system
socket thermal-recv-client stream 0660 system system
socket thermal-recv-passive-client stream 0666 system system
socket thermal-send-rule stream 0660 system system
group root
service adsprpcd /vendor/bin/adsprpcd
class main
user media
group media
service hbtp /vendor/bin/hbtp_daemon
class main
user system
group system
capabilities SYS_NICE
disabled
service imsqmidaemon /vendor/bin/imsqmidaemon
class main
user system
socket ims_qmid stream 0660 system radio
group radio log diag
service imsdatadaemon /vendor/bin/imsdatadaemon
class main
user system
socket ims_datad stream 0660 system radio
group system wifi radio inet log diag
disabled
service pd_mapper /vendor/bin/pd-mapper
class core
on property:vendor.ims.QMI_DAEMON_STATUS=1
start imsdatadaemon
service ims_rtp_daemon /vendor/bin/ims_rtp_daemon
class main
user system
group radio diag inet log
disabled
service imsrcsservice /vendor/bin/imsrcsd
class hal
user system
group radio diag inet log
disabled
on property:vendor.ims.DATA_DAEMON_STATUS=1
start ims_rtp_daemon
start imsrcsservice
service hvdcp_opti /vendor/bin/hvdcp_opti
class main
user root
group system wakelock
# 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
class main
disabled
oneshot
keycodes 114 115 116
# Grip handling
on property:sys.grip.status=*
exec_background u:r:hbtp_cmd:s0 -- /vendor/bin/sh /vendor/bin/hbtp_cmd.sh grip ${sys.grip.status}
# Set smoothness
on property:persist.touch.smoothness=*
exec_background u:r:hbtp_cmd:s0 -- /vendor/bin/sh /vendor/bin/hbtp_cmd.sh smoothness ${persist.touch.smoothness}
# Fastboot needs to be root for access to /data/local/tmp
# Needs to be part of system group to access OTA files
service update_neko /system/bin/fastboot_target update /data/ota_package/update_neko.zip
class main
user root
group system shell cache
seclabel u:r:shell:s0
oneshot
disabled
# Use ro.runtime.firstboot as a trigger, to cover the cases where
# the user set a lock screen
on property:dev.bootcomplete=1 && property:ro.runtime.firstboot=*
write /sys/class/sidecar/enable_control 1
# provisioning service
service mata_provision /vendor/bin/provision.sh
class main
user root
group root system
disabled
oneshot
# shio notification service
on property:vendor.audio.hd.status=*
exec u:r:shell:s0 -- /system/bin/sh /system/bin/am startservice com.essential.score/.ShioService
================================================
FILE: rootdir/etc/init.msm.usb.configfs.rc
================================================
# Copyright (c) 2016-2017, The Linux Foundation. All rights reserved.
#
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions are met:
#
# * Redistributions of source code must retain the above copyright
# notice, this list of conditions and the following disclaimer.
# * Redistributions in binary form must reproduce the above
# copyright notice, this list of conditions and the following
# disclaimer in the documentation and/or other materials provided
# with the distribution.
# * Neither the name of The Linux Foundation nor the names of its
# contributors may be used to endorse or promote products derived
# from this software without specific prior written permission.
#
# THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED
# WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT
# ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS
# BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
# BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
# OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
# IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
#
# USB compositions
on property:sys.usb.config=mass_storage && property:sys.usb.configfs=1
write /config/usb_gadget/g1/configs/b.1/strings/0x409/configuration "msc"
rm /config/usb_gadget/g1/configs/b.1/f1
rm /config/usb_gadget/g1/configs/b.1/f2
rm /config/usb_gadget/g1/configs/b.1/f3
rm /config/usb_gadget/g1/configs/b.1/f4
rm /config/usb_gadget/g1/configs/b.1/f5
rm /config/usb_gadget/g1/configs/b.1/f6
rm /config/usb_gadget/g1/configs/b.1/f7
rm /config/usb_gadget/g1/configs/b.1/f8
write /config/usb_gadget/g1/idVendor 0x05C6
write /config/usb_gadget/g1/idProduct 0xF000
symlink /config/usb_gadget/g1/functions/mass_storage.0 /config/usb_gadget/g1/configs/b.1/f1
write /config/usb_gadget/g1/UDC ${sys.usb.controller}
setprop sys.usb.state ${sys.usb.config}
on property:sys.usb.config=mass_storage,adb && property:sys.usb.configfs=1
start adbd
on property:sys.usb.ffs.ready=1 && property:sys.usb.config=mass_storage,adb && property:sys.usb.configfs=1
write /config/usb_gadget/g1/configs/b.1/strings/0x409/configuration "adb_msc"
rm /config/usb_gadget/g1/configs/b.1/f1
rm /config/usb_gadget/g1/configs/b.1/f2
rm /config/usb_gadget/g1/configs/b.1/f3
rm /config/usb_gadget/g1/configs/b.1/f4
rm /config/usb_gadget/g1/configs/b.1/f5
rm /config/usb_gadget/g1/configs/b.1/f6
rm /config/usb_gadget/g1/configs/b.1/f7
rm /config/usb_gadget/g1/configs/b.1/f8
write /config/usb_gadget/g1/idVendor 0x05C6
write /config/usb_gadget/g1/idProduct 0x9015
symlink /config/usb_gadget/g1/functions/ffs.adb /config/usb_gadget/g1/configs/b.1/f1
symlink /config/usb_gadget/g1/functions/mass_storage.0 /config/usb_gadget/g1/configs/b.1/f2
write /config/usb_gadget/g1/UDC ${sys.usb.controller}
setprop sys.usb.state ${sys.usb.config}
on property:sys.usb.config=diag,adb && property:sys.usb.configfs=1
start adbd
on property:sys.usb.ffs.ready=1 && property:sys.usb.config=diag,adb && property:sys.usb.configfs=1
write /config/usb_gadget/g1/configs/b.1/strings/0x409/configuration "diag_adb"
rm /config/usb_gadget/g1/configs/b.1/f1
rm /config/usb_gadget/g1/configs/b.1/f2
rm /config/usb_gadget/g1/configs/b.1/f3
rm /config/usb_gadget/g1/configs/b.1/f4
rm /config/usb_gadget/g1/configs/b.1/f5
rm /config/usb_gadget/g1/configs/b.1/f6
rm /config/usb_gadget/g1/configs/b.1/f7
rm /config/usb_gadget/g1/configs/b.1/f8
write /config/usb_gadget/g1/idVendor 0x05C6
write /config/usb_gadget/g1/idProduct 0x901D
symlink /config/usb_gadget/g1/functions/diag.diag /config/usb_gadget/g1/configs/b.1/f1
symlink /config/usb_gadget/g1/functions/ffs.adb /config/usb_gadget/g1/configs/b.1/f2
write /config/usb_gadget/g1/UDC ${sys.usb.controller}
setprop sys.usb.state ${sys.usb.config}
on property:sys.usb.config=diag && property:sys.usb.configfs=1
write /config/usb_gadget/g1/configs/b.1/strings/0x409/configuration "diag"
rm /config/usb_gadget/g1/configs/b.1/f1
rm /config/usb_gadget/g1/configs/b.1/f2
rm /config/usb_gadget/g1/configs/b.1/f3
rm /config/usb_gadget/g1/configs/b.1/f4
rm /config/usb_gadget/g1/configs/b.1/f5
rm /config/usb_gadget/g1/configs/b.1/f6
rm /config/usb_gadget/g1/configs/b.1/f7
rm /config/usb_gadget/g1/configs/b.1/f8
write /config/usb_gadget/g1/idVendor 0x05C6
write /config/usb_gadget/g1/idProduct 0x900E
symlink /config/usb_gadget/g1/functions/diag.diag /config/usb_gadget/g1/configs/b.1/f1
write /config/usb_gadget/g1/UDC ${sys.usb.controller}
setprop sys.usb.state ${sys.usb.config}
on property:sys.usb.config=diag,serial_cdev,rmnet,adb && property:sys.usb.configfs=1
start adbd
on property:sys.usb.ffs.ready=1 && property:sys.usb.config=diag,serial_cdev,rmnet,adb && property:sys.usb.configfs=1
write /config/usb_gadget/g1/configs/b.1/strings/0x409/configuration "Default composition"
rm /config/usb_gadget/g1/configs/b.1/f1
rm /config/usb_gadget/g1/configs/b.1/f2
rm /config/usb_gadget/g1/configs/b.1/f3
rm /config/usb_gadget/g1/configs/b.1/f4
rm /config/usb_gadget/g1/configs/b.1/f5
rm /config/usb_gadget/g1/configs/b.1/f6
rm /config/usb_gadget/g1/configs/b.1/f7
rm /config/usb_gadget/g1/configs/b.1/f8
write /config/usb_gadget/g1/idVendor 0x05C6
write /config/usb_gadget/g1/idProduct 0x9091
symlink /config/usb_gadget/g1/functions/diag.diag /config/usb_gadget/g1/configs/b.1/f1
symlink /config/usb_gadget/g1/functions/cser.dun.0 /config/usb_gadget/g1/configs/b.1/f2
symlink /config/usb_gadget/g1/functions/${sys.usb.rmnet.func.name}.rmnet /config/usb_gadget/g1/configs/b.1/f3
symlink /config/usb_gadget/g1/functions/ffs.adb /config/usb_gadget/g1/configs/b.1/f4
write /config/usb_gadget/g1/UDC ${sys.usb.controller}
setprop sys.usb.state ${sys.usb.config}
on property:sys.usb.config=diag,serial_cdev,rmnet && property:sys.usb.configfs=1
write /config/usb_gadget/g1/configs/b.1/strings/0x409/configuration "Default comp without ADB"
rm /config/usb_gadget/g1/configs/b.1/f1
rm /config/usb_gadget/g1/configs/b.1/f2
rm /config/usb_gadget/g1/configs/b.1/f3
rm /config/usb_gadget/g1/configs/b.1/f4
rm /config/usb_gadget/g1/configs/b.1/f5
rm /config/usb_gadget/g1/configs/b.1/f6
rm /config/usb_gadget/g1/configs/b.1/f7
rm /config/usb_gadget/g1/configs/b.1/f8
write /config/usb_gadget/g1/idVendor 0x05C6
write /config/usb_gadget/g1/idProduct 0x9092
symlink /config/usb_gadget/g1/functions/diag.diag /config/usb_gadget/g1/configs/b.1/f1
symlink /config/usb_gadget/g1/functions/cser.dun.0 /config/usb_gadget/g1/configs/b.1/f2
symlink /config/usb_gadget/g1/functions/${sys.usb.rmnet.func.name}.rmnet /config/usb_gadget/g1/configs/b.1/f3
write /config/usb_gadget/g1/UDC ${sys.usb.controller}
setprop sys.usb.state ${sys.usb.config}
on property:sys.usb.tethering=true
write /sys/class/net/rndis0/queues/rx-0/rps_cpus ${sys.usb.rps_mask}
on property:sys.usb.config=rndis && property:sys.usb.configfs=1
write /config/usb_gadget/g1/configs/b.1/strings/0x409/configuration "rndis"
rm /config/usb_gadget/g1/configs/b.1/f1
rm /config/usb_gadget/g1/configs/b.1/f2
rm /config/usb_gadget/g1/configs/b.1/f3
rm /config/usb_gadget/g1/configs/b.1/f4
rm /config/usb_gadget/g1/configs/b.1/f5
rm /config/usb_gadget/g1/configs/b.1/f6
rm /config/usb_gadget/g1/configs/b.1/f7
rm /config/usb_gadget/g1/configs/b.1/f8
write /config/usb_gadget/g1/idVendor 0x05C6
write /config/usb_gadget/g1/idProduct 0xF00E
symlink /config/usb_gadget/g1/functions/${sys.usb.rndis.func.name}.rndis /config/usb_gadget/g1/configs/b.1/f1
write /config/usb_gadget/g1/UDC ${sys.usb.controller}
setprop sys.usb.state rndis
on property:sys.usb.config=rndis,adb && property:sys.usb.configfs=1
start adbd
on property:sys.usb.ffs.ready=1 && property:sys.usb.config=rndis,adb && property:sys.usb.configfs=1
write /config/usb_gadget/g1/configs/b.1/strings/0x409/configuration "rndis_adb"
rm /config/usb_gadget/g1/configs/b.1/f1
rm /config/usb_gadget/g1/configs/b.1/f2
rm /config/usb_gadget/g1/configs/b.1/f3
rm /config/usb_gadget/g1/configs/b.1/f4
rm /config/usb_gadget/g1/configs/b.1/f5
rm /config/usb_gadget/g1/configs/b.1/f6
rm /config/usb_gadget/g1/configs/b.1/f7
rm /config/usb_gadget/g1/configs/b.1/f8
write /config/usb_gadget/g1/idVendor 0x05C6
write /config/usb_gadget/g1/idProduct 0x9024
symlink /config/usb_gadget/g1/functions/${sys.usb.rndis.func.name}.rndis /config/usb_gadget/g1/configs/b.1/f1
symlink /config/usb_gadget/g1/functions/ffs.adb /config/usb_gadget/g1/configs/b.1/f2
write /config/usb_gadget/g1/UDC ${sys.usb.controller}
setprop sys.usb.state rndis,adb
on property:sys.usb.config=rndis,diag && property:sys.usb.configfs=1
write /config/usb_gadget/g1/configs/b.1/strings/0x409/configuration "rndis_diag"
rm /config/usb_gadget/g1/configs/b.1/f1
rm /config/usb_gadget/g1/configs/b.1/f2
rm /config/usb_gadget/g1/configs/b.1/f3
rm /config/usb_gadget/g1/configs/b.1/f4
rm /config/usb_gadget/g1/configs/b.1/f5
rm /config/usb_gadget/g1/configs/b.1/f6
rm /config/usb_gadget/g1/configs/b.1/f7
rm /config/usb_gadget/g1/configs/b.1/f8
write /config/usb_gadget/g1/idVendor 0x05C6
write /config/usb_gadget/g1/idProduct 0x902C
symlink /config/usb_gadget/g1/functions/${sys.usb.rndis.func.name}.rndis /config/usb_gadget/g1/configs/b.1/f1
symlink /config/usb_gadget/g1/functions/diag.diag /config/usb_gadget/g1/configs/b.1/f2
write /config/usb_gadget/g1/UDC ${sys.usb.controller}
setprop sys.usb.state ${sys.usb.config}
on property:sys.usb.config=rndis,diag,adb && property:sys.usb.configfs=1
start adbd
on property:sys.usb.ffs.ready=1 && property:sys.usb.config=rndis,diag,adb && property:sys.usb.configfs=1
write /config/usb_gadget/g1/configs/b.1/strings/0x409/configuration "rndis_diag_adb"
rm /config/usb_gadget/g1/configs/b.1/f1
rm /config/usb_gadget/g1/configs/b.1/f2
rm /config/usb_gadget/g1/configs/b.1/f3
rm /config/usb_gadget/g1/configs/b.1/f4
rm /config/usb_gadget/g1/configs/b.1/f5
rm /config/usb_gadget/g1/configs/b.1/f6
rm /config/usb_gadget/g1/configs/b.1/f7
rm /config/usb_gadget/g1/configs/b.1/f8
write /config/usb_gadget/g1/idVendor 0x05C6
write /config/usb_gadget/g1/idProduct 0x902D
symlink /config/usb_gadget/g1/functions/${sys.usb.rndis.func.name}.rndis /config/usb_gadget/g1/configs/b.1/f1
symlink /config/usb_gadget/g1/functions/diag.diag /config/usb_gadget/g1/configs/b.1/f2
symlink /config/usb_gadget/g1/functions/ffs.adb /config/usb_gadget/g1/configs/b.1/f3
write /config/usb_gadget/g1/UDC ${sys.usb.controller}
setprop sys.usb.state ${sys.usb.config}
on property:sys.usb.config=rndis,serial_cdev && property:sys.usb.configfs=1
write /config/usb_gadget/g1/configs/b.1/strings/0x409/configuration "rndis_dun"
rm /config/usb_gadget/g1/configs/b.1/f1
rm /config/usb_gadget/g1/configs/b.1/f2
rm /config/usb_gadget/g1/configs/b.1/f3
rm /config/usb_gadget/g1/configs/b.1/f4
rm /config/usb_gadget/g1/configs/b.1/f5
rm /config/usb_gadget/g1/configs/b.1/f6
rm /config/usb_gadget/g1/configs/b.1/f7
rm /config/usb_gadget/g1/configs/b.1/f8
write /config/usb_gadget/g1/idVendor 0x05C6
write /config/usb_gadget/g1/idProduct 0x90B3
symlink /config/usb_gadget/g1/functions/${sys.usb.rndis.func.name}.rndis /config/usb_gadget/g1/configs/b.1/f1
symlink /config/usb_gadget/g1/functions/cser.dun.0 /config/usb_gadget/g1/configs/b.1/f2
write /config/usb_gadget/g1/UDC ${sys.usb.controller}
setprop sys.usb.state rndis
on property:sys.usb.config=rndis,serial_cdev,adb && property:sys.usb.configfs=1
start adbd
on property:sys.usb.ffs.ready=1 && property:sys.usb.config=rndis,serial_cdev,adb && property:sys.usb.configfs=1
write /config/usb_gadget/g1/configs/b.1/strings/0x409/configuration "rndis_dun_adb"
rm /config/usb_gadget/g1/configs/b.1/f1
rm /config/usb_gadget/g1/configs/b.1/f2
rm /config/usb_gadget/g1/configs/b.1/f3
rm /config/usb_gadget/g1/configs/b.1/f4
rm /config/usb_gadget/g1/configs/b.1/f5
rm /config/usb_gadget/g1/configs/b.1/f6
rm /config/usb_gadget/g1/configs/b.1/f7
rm /config/usb_gadget/g1/configs/b.1/f8
write /config/usb_gadget/g1/idVendor 0x05C6
write /config/usb_gadget/g1/idProduct 0x90B4
symlink /config/usb_gadget/g1/functions/${sys.usb.rndis.func.name}.rndis /config/usb_gadget/g1/configs/b.1/f1
symlink /config/usb_gadget/g1/functions/cser.dun.0 /config/usb_gadget/g1/configs/b.1/f2
symlink /config/usb_gadget/g1/functions/ffs.adb /config/usb_gadget/g1/configs/b.1/f3
write /config/usb_gadget/g1/UDC ${sys.usb.controller}
setprop sys.usb.state rndis,adb
on property:sys.usb.config=rndis,serial_cdev,diag && property:sys.usb.configfs=1
write /config/usb_gadget/g1/configs/b.1/strings/0x409/configuration "rndis_dun_diag"
rm /config/usb_gadget/g1/configs/b.1/f1
rm /config/usb_gadget/g1/configs/b.1/f2
rm /config/usb_gadget/g1/configs/b.1/f3
rm /config/usb_gadget/g1/configs/b.1/f4
rm /config/usb_gadget/g1/configs/b.1/f5
rm /config/usb_gadget/g1/configs/b.1/f6
rm /config/usb_gadget/g1/configs/b.1/f7
rm /config/usb_gadget/g1/configs/b.1/f8
write /config/usb_gadget/g1/idVendor 0x05C6
write /config/usb_gadget/g1/idProduct 0x90B5
symlink /config/usb_gadget/g1/functions/${sys.usb.rndis.func.name}.rndis /config/usb_gadget/g1/configs/b.1/f1
symlink /config/usb_gadget/g1/functions/cser.dun.0 /config/usb_gadget/g1/configs/b.1/f2
symlink /config/usb_gadget/g1/functions/diag.diag /config/usb_gadget/g1/configs/b.1/f3
write /config/usb_gadget/g1/UDC ${sys.usb.controller}
setprop sys.usb.state rndis
on property:sys.usb.config=rndis,serial_cdev,diag,adb && property:sys.usb.configfs=1
start adbd
on property:sys.usb.ffs.ready=1 && property:sys.usb.config=rndis,serial_cdev,diag,adb && property:sys.usb.configfs=1
write /config/usb_gadget/g1/configs/b.1/strings/0x409/configuration "rndis_dun_diag"
rm /config/usb_gadget/g1/configs/b.1/f1
rm /config/usb_gadget/g1/configs/b.1/f2
rm /config/usb_gadget/g1/configs/b.1/f3
rm /config/usb_gadget/g1/configs/b.1/f4
rm /config/usb_gadget/g1/configs/b.1/f5
rm /config/usb_gadget/g1/configs/b.1/f6
rm /config/usb_gadget/g1/configs/b.1/f7
rm /config/usb_gadget/g1/configs/b.1/f8
write /config/usb_gadget/g1/idVendor 0x05C6
write /config/usb_gadget/g1/idProduct 0x90B6
symlink /config/usb_gadget/g1/functions/${sys.usb.rndis.func.name}.rndis /config/usb_gadget/g1/configs/b.1/f1
symlink /config/usb_gadget/g1/functions/cser.dun.0 /config/usb_gadget/g1/configs/b.1/f2
symlink /config/usb_gadget/g1/functions/diag.diag /config/usb_gadget/g1/configs/b.1/f3
symlink /config/usb_gadget/g1/functions/ffs.adb /config/usb_gadget/g1/configs/b.1/f4
write /config/usb_gadget/g1/UDC ${sys.usb.controller}
setprop sys.usb.state rndis,adb
on property:sys.usb.config=mtp,diag && property:sys.usb.configfs=1
write /config/usb_gadget/g1/configs/b.1/strings/0x409/configuration "mtp_diag"
rm /config/usb_gadget/g1/configs/b.1/f1
rm /config/usb_gadget/g1/configs/b.1/f2
rm /config/usb_gadget/g1/configs/b.1/f3
rm /config/usb_gadget/g1/configs/b.1/f4
rm /config/usb_gadget/g1/configs/b.1/f5
rm /config/usb_gadget/g1/configs/b.1/f6
rm /config/usb_gadget/g1/configs/b.1/f7
rm /config/usb_gadget/g1/configs/b.1/f8
write /config/usb_gadget/g1/idVendor 0x05C6
write /config/usb_gadget/g1/idProduct 0x901B
symlink /config/usb_gadget/g1/functions/mtp.gs0 /config/usb_gadget/g1/configs/b.1/f1
symlink /config/usb_gadget/g1/functions/diag.diag /config/usb_gadget/g1/configs/b.1/f2
write /config/usb_gadget/g1/UDC ${sys.usb.controller}
setprop sys.usb.state ${sys.usb.config}
on property:sys.usb.config=mtp,diag,adb && property:sys.usb.configfs=1
start adbd
on property:sys.usb.ffs.ready=1 && property:sys.usb.config=mtp,diag,adb && property:sys.usb.configfs=1
write /config/usb_gadget/g1/configs/b.1/strings/0x409/configuration "mtp_diag_adb"
rm /config/usb_gadget/g1/configs/b.1/f1
rm /config/usb_gadget/g1/configs/b.1/f2
rm /config/usb_gadget/g1/configs/b.1/f3
rm /config/usb_gadget/g1/configs/b.1/f4
rm /config/usb_gadget/g1/configs/b.1/f5
rm /config/usb_gadget/g1/configs/b.1/f6
rm /config/usb_gadget/g1/configs/b.1/f7
rm /config/usb_gadget/g1/configs/b.1/f8
write /config/usb_gadget/g1/idVendor 0x05C6
write /config/usb_gadget/g1/idProduct 0x903A
symlink /config/usb_gadget/g1/functions/mtp.gs0 /config/usb_gadget/g1/configs/b.1/f1
symlink /config/usb_gadget/g1/functions/diag.diag /config/usb_gadget/g1/configs/b.1/f2
symlink /config/usb_gadget/g1/functions/ffs.adb /config/usb_gadget/g1/configs/b.1/f3
write /config/usb_gadget/g1/UDC ${sys.usb.controller}
setprop sys.usb.state ${sys.usb.config}
on property:sys.usb.config=diag,qdss && property:sys.usb.configfs=1
write /config/usb_gadget/g1/configs/b.1/strings/0x409/configuration "diag_qdss"
rm /config/usb_gadget/g1/configs/b.1/f1
rm /config/usb_gadget/g1/configs/b.1/f2
rm /config/usb_gadget/g1/configs/b.1/f3
rm /config/usb_gadget/g1/configs/b.1/f4
rm /config/usb_gadget/g1/configs/b.1/f5
rm /config/usb_gadget/g1/configs/b.1/f6
rm /config/usb_gadget/g1/configs/b.1/f7
rm /config/usb_gadget/g1/configs/b.1/f8
write /config/usb_gadget/g1/idVendor 0x05C6
write /config/usb_gadget/g1/idProduct 0x904A
write /config/usb_gadget/g1/functions/qdss.qdss/enable_debug_inface 1
symlink /config/usb_gadget/g1/functions/diag.diag /config/usb_gadget/g1/configs/b.1/f1
symlink /config/usb_gadget/g1/functions/qdss.qdss /config/usb_gadget/g1/configs/b.1/f2
write /config/usb_gadget/g1/UDC ${sys.usb.controller}
setprop sys.usb.state ${sys.usb.config}
on property:sys.usb.config=diag,qdss,adb && property:sys.usb.configfs=1
start adbd
on property:sys.usb.ffs.ready=1 && property:sys.usb.config=diag,qdss,adb && property:sys.usb.configfs=1
write /config/usb_gadget/g1/configs/b.1/strings/0x409/configuration "diag_qdss_adb"
rm /config/usb_gadget/g1/configs/b.1/f1
rm /config/usb_gadget/g1/configs/b.1/f2
rm /config/usb_gadget/g1/configs/b.1/f3
rm /config/usb_gadget/g1/configs/b.1/f4
rm /config/usb_gadget/g1/configs/b.1/f5
rm /config/usb_gadget/g1/configs/b.1/f6
rm /config/usb_gadget/g1/configs/b.1/f7
rm /config/usb_gadget/g1/configs/b.1/f8
write /config/usb_gadget/g1/idVendor 0x05C6
write /config/usb_gadget/g1/idProduct 0x9060
write /config/usb_gadget/g1/functions/qdss.qdss/enable_debug_inface 1
symlink /config/usb_gadget/g1/functions/diag.diag /config/usb_gadget/g1/configs/b.1/f1
symlink /config/usb_gadget/g1/functions/qdss.qdss /config/usb_gadget/g1/configs/b.1/f2
symlink /config/usb_gadget/g1/functions/ffs.adb /config/usb_gadget/g1/configs/b.1/f3
write /config/usb_gadget/g1/UDC ${sys.usb.controller}
setprop sys.usb.state ${sys.usb.config}
on property:sys.usb.config=diag,qdss,rmnet && property:sys.usb.configfs=1
write /config/usb_gadget/g1/configs/b.1/strings/0x409/configuration "diag_qdss_rmnet"
rm /config/usb_gadget/g1/configs/b.1/f1
rm /config/usb_gadget/g1/configs/b.1/f2
rm /config/usb_gadget/g1/configs/b.1/f3
rm /config/usb_gadget/g1/configs/b.1/f4
rm /config/usb_gadget/g1/configs/b.1/f5
rm /config/usb_gadget/g1/configs/b.1/f6
rm /config/usb_gadget/g1/configs/b.1/f7
rm /config/usb_gadget/g1/configs/b.1/f8
write /config/usb_gadget/g1/idVendor 0x05C6
write /config/usb_gadget/g1/idProduct 0x9083
write /config/usb_gadget/g1/functions/qdss.qdss/enable_debug_inface 1
symlink /config/usb_gadget/g1/functions/diag.diag /config/usb_gadget/g1/configs/b.1/f1
symlink /config/usb_gadget/g1/functions/qdss.qdss /config/usb_gadget/g1/configs/b.1/f2
symlink /config/usb_gadget/g1/functions/${sys.usb.rmnet.func.name}.rmnet /config/usb_gadget/g1/configs/b.1/f3
write /config/usb_gadget/g1/UDC ${sys.usb.controller}
setprop sys.usb.state ${sys.usb.config}
on property:sys.usb.config=diag,qdss,rmnet,adb && property:sys.usb.configfs=1
start adbd
on property:sys.usb.ffs.ready=1 && property:sys.usb.config=diag,qdss,rmnet,adb && property:sys.usb.configfs=1
write /config/usb_gadget/g1/configs/b.1/strings/0x409/configuration "diag_qdss_rmnet_adb"
rm /config/usb_gadget/g1/configs/b.1/f1
rm /config/usb_gadget/g1/configs/b.1/f2
rm /config/usb_gadget/g1/configs/b.1/f3
rm /config/usb_gadget/g1/configs/b.1/f4
rm /config/usb_gadget/g1/configs/b.1/f5
rm /config/usb_gadget/g1/configs/b.1/f6
rm /config/usb_gadget/g1/configs/b.1/f7
rm /config/usb_gadget/g1/configs/b.1/f8
write /config/usb_gadget/g1/idVendor 0x05C6
write /config/usb_gadget/g1/idProduct 0x9084
write /config/usb_gadget/g1/functions/qdss.qdss/enable_debug_inface 1
symlink /config/usb_gadget/g1/functions/diag.diag /config/usb_gadget/g1/configs/b.1/f1
symlink /config/usb_gadget/g1/functions/qdss.qdss /config/usb_gadget/g1/configs/b.1/f2
symlink /config/usb_gadget/g1/functions/ffs.adb /config/usb_gadget/g1/configs/b.1/f3
symlink /config/usb_gadget/g1/functions/${sys.usb.rmnet.func.name}.rmnet /config/usb_gadget/g1/configs/b.1/f4
write /config/usb_gadget/g1/UDC ${sys.usb.controller}
setprop sys.usb.state ${sys.usb.config}
on property:sys.usb.config=rndis,diag,qdss && property:sys.usb.configfs=1
write /config/usb_gadget/g1/configs/b.1/strings/0x409/configuration "rndis_diag_qdss"
rm /config/usb_gadget/g1/configs/b.1/f1
rm /config/usb_gadget/g1/configs/b.1/f2
rm /config/usb_gadget/g1/configs/b.1/f3
rm /config/usb_gadget/g1/configs/b.1/f4
rm /config/usb_gadget/g1/configs/b.1/f5
rm /config/usb_gadget/g1/configs/b.1/f6
rm /config/usb_gadget/g1/configs/b.1/f7
rm /config/usb_gadget/g1/configs/b.1/f8
write /config/usb_gadget/g1/idVendor 0x05C6
write /config/usb_gadget/g1/idProduct 0x9081
write /config/usb_gadget/g1/functions/qdss.qdss/enable_debug_inface 1
symlink /config/usb_gadget/g1/functions/${sys.usb.rndis.func.name}.rndis /config/usb_gadget/g1/configs/b.1/f1
symlink /config/usb_gadget/g1/functions/diag.diag /config/usb_gadget/g1/configs/b.1/f2
symlink /config/usb_gadget/g1/functions/qdss.qdss /config/usb_gadget/g1/configs/b.1/f3
write /config/usb_gadget/g1/UDC ${sys.usb.controller}
setprop sys.usb.state ${sys.usb.config}
on property:sys.usb.config=rndis,diag,qdss,adb && property:sys.usb.configfs=1
start adbd
on property:sys.usb.ffs.ready=1 && property:sys.usb.config=rndis,diag,qdss,adb && property:sys.usb.configfs=1
write /config/usb_gadget/g1/configs/b.1/strings/0x409/configuration "rndis_diag_qdss_adb"
rm /config/usb_gadget/g1/configs/b.1/f1
rm /config/usb_gadget/g1/configs/b.1/f2
rm /config/usb_gadget/g1/configs/b.1/f3
rm /config/usb_gadget/g1/configs/b.1/f4
rm /config/usb_gadget/g1/configs/b.1/f5
rm /config/usb_gadget/g1/configs/b.1/f6
rm /config/usb_gadget/g1/configs/b.1/f7
rm /config/usb_gadget/g1/configs/b.1/f8
write /config/usb_gadget/g1/idVendor 0x05C6
write /config/usb_gadget/g1/idProduct 0x9082
write /config/usb_gadget/g1/functions/qdss.qdss/enable_debug_inface 1
symlink /config/usb_gadget/g1/functions/${sys.usb.rndis.func.name}.rndis /config/usb_gadget/g1/configs/b.1/f1
symlink /config/usb_gadget/g1/functions/diag.diag /config/usb_gadget/g1/configs/b.1/f2
symlink /config/usb_gadget/g1/functions/qdss.qdss /config/usb_gadget/g1/configs/b.1/f3
symlink /config/usb_gadget/g1/functions/ffs.adb /config/usb_gadget/g1/configs/b.1/f4
write /config/usb_gadget/g1/UDC ${sys.usb.controller}
setprop sys.usb.state ${sys.usb.config}
on property:sys.usb.config=ncm && property:sys.usb.configfs=1
write /config/usb_gadget/g1/configs/b.1/strings/0x409/configuration "ncm"
rm /config/usb_gadget/g1/configs/b.1/f1
rm /config/usb_gadget/g1/configs/b.1/f2
rm /config/usb_gadget/g1/configs/b.1/f3
rm /config/usb_gadget/g1/configs/b.1/f4
rm /config/usb_gadget/g1/configs/b.1/f5
rm /config/usb_gadget/g1/configs/b.1/f6
rm /config/usb_gadget/g1/configs/b.1/f7
rm /config/usb_gadget/g1/configs/b.1/f8
write /config/usb_gadget/g1/idVendor 0x05C6
write /config/usb_gadget/g1/idProduct 0xA4A1
symlink /config/usb_gadget/g1/functions/ncm.0 /config/usb_gadget/g1/configs/b.1/f1
write /config/usb_gadget/g1/UDC ${sys.usb.controller}
setprop sys.usb.state ${sys.usb.config}
on property:sys.usb.config=ncm,adb && property:sys.usb.configfs=1
start adbd
on property:sys.usb.ffs.ready=1 && property:sys.usb.config=ncm,adb && property:sys.usb.configfs=1
write /config/usb_gadget/g1/configs/b.1/strings/0x409/configuration "ncm_adb"
rm /config/usb_gadget/g1/configs/b.1/f1
rm /config/usb_gadget/g1/configs/b.1/f2
rm /config/usb_gadget/g1/configs/b.1/f3
rm /config/usb_gadget/g1/configs/b.1/f4
rm /config/usb_gadget/g1/configs/b.1/f5
rm /config/usb_gadget/g1/configs/b.1/f6
rm /config/usb_gadget/g1/configs/b.1/f7
rm /config/usb_gadget/g1/configs/b.1/f8
write /config/usb_gadget/g1/idVendor 0x05C6
write /config/usb_gadget/g1/idProduct 0x908C
symlink /config/usb_gadget/g1/functions/ncm.0 /config/usb_gadget/g1/configs/b.1/f1
symlink /config/usb_gadget/g1/functions/ffs.adb /config/usb_gadget/g1/configs/b.1/f2
write /config/usb_gadget/g1/UDC ${sys.usb.controller}
setprop sys.usb.state ${sys.usb.config}
on property:sys.usb.config=diag,serial_cdev && property:sys.usb.configfs=1
write /config/usb_gadget/g1/configs/b.1/strings/0x409/configuration "diag_dun"
rm /config/usb_gadget/g1/configs/b.1/f1
rm /config/usb_gadget/g1/configs/b.1/f2
rm /config/usb_gadget/g1/configs/b.1/f3
rm /config/usb_gadget/g1/configs/b.1/f4
rm /config/usb_gadget/g1/configs/b.1/f5
rm /config/usb_gadget/g1/configs/b.1/f6
rm /config/usb_gadget/g1/configs/b.1/f7
rm /config/usb_gadget/g1/configs/b.1/f8
write /config/usb_gadget/g1/idVendor 0x05C6
write /config/usb_gadget/g1/idProduct 0x9004
symlink /config/usb_gadget/g1/functions/diag.diag /config/usb_gadget/g1/configs/b.1/f1
symlink /config/usb_gadget/g1/functions/cser.dun.0 /config/usb_gadget/g1/configs/b.1/f2
write /config/usb_gadget/g1/UDC ${sys.usb.controller}
setprop sys.usb.state ${sys.usb.config}
on property:sys.usb.config=diag,adb,serial_cdev && property:sys.usb.configfs=1
start adbd
on property:sys.usb.ffs.ready=1 && property:sys.usb.config=diag,adb,serial_cdev && property:sys.usb.configfs=1
write /config/usb_gadget/g1/configs/b.1/strings/0x409/configuration "diag_adb_dun"
rm /config/usb_gadget/g1/configs/b.1/f1
rm /config/usb_gadget/g1/configs/b.1/f2
rm /config/usb_gadget/g1/configs/b.1/f3
rm /config/usb_gadget/g1/configs/b.1/f4
rm /config/usb_gadget/g1/configs/b.1/f5
rm /config/usb_gadget/g1/configs/b.1/f6
rm /config/usb_gadget/g1/configs/b.1/f7
rm /config/usb_gadget/g1/configs/b.1/f8
write /config/usb_gadget/g1/idVendor 0x05C6
write /config/usb_gadget/g1/idProduct 0x901f
symlink /config/usb_gadget/g1/functions/diag.diag /config/usb_gadget/g1/configs/b.1/f1
symlink /config/usb_gadget/g1/functions/ffs.adb /config/usb_gadget/g1/configs/b.1/f2
symlink /config/usb_gadget/g1/functions/cser.dun.0 /config/usb_gadget/g1/configs/b.1/f3
write /config/usb_gadget/g1/UDC ${sys.usb.controller}
setprop sys.usb.state ${sys.usb.config}
on property:sys.usb.config=diag,serial_cdev,rmnet,dpl && property:sys.usb.configfs=1
write /config/usb_gadget/g1/configs/b.1/strings/0x409/configuration "diag_dun_rmnet_dpl"
rm /config/usb_gadget/g1/configs/b.1/f1
rm /config/usb_gadget/g1/configs/b.1/f2
rm /config/usb_gadget/g1/configs/b.1/f3
rm /config/usb_gadget/g1/configs/b.1/f4
rm /config/usb_gadget/g1/configs/b.1/f5
rm /config/usb_gadget/g1/configs/b.1/f6
rm /config/usb_gadget/g1/configs/b.1/f7
rm /config/usb_gadget/g1/configs/b.1/f8
write /config/usb_gadget/g1/idVendor 0x05C6
write /config/usb_gadget/g1/idProduct 0x90b7
symlink /config/usb_gadget/g1/functions/diag.diag /config/usb_gadget/g1/configs/b.1/f1
symlink /config/usb_gadget/g1/functions/cser.dun.0 /config/usb_gadget/g1/configs/b.1/f2
symlink /config/usb_gadget/g1/functions/${sys.usb.rmnet.func.name}.rmnet /config/usb_gadget/g1/configs/b.1/f3
symlink /config/usb_gadget/g1/functions/${sys.usb.rmnet.func.name}.dpl /config/usb_gadget/g1/configs/b.1/f4
write /config/usb_gadget/g1/UDC ${sys.usb.controller}
setprop sys.usb.state ${sys.usb.config}
on property:sys.usb.config=diag,serial_cdev,rmnet,dpl,adb && property:sys.usb.configfs=1
start adbd
on property:sys.usb.ffs.ready=1 && property:sys.usb.config=diag,serial_cdev,rmnet,dpl,adb && property:sys.usb.configfs=1
write /config/usb_gadget/g1/configs/b.1/strings/0x409/configuration "diag_dun_rmnet_dpl_adb"
rm /config/usb_gadget/g1/configs/b.1/f1
rm /config/usb_gadget/g1/configs/b.1/f2
rm /config/usb_gadget/g1/configs/b.1/f3
rm /config/usb_gadget/g1/configs/b.1/f4
rm /config/usb_gadget/g1/configs/b.1/f5
rm /config/usb_gadget/g1/configs/b.1/f6
rm /config/usb_gadget/g1/configs/b.1/f7
rm /config/usb_gadget/g1/configs/b.1/f8
write /config/usb_gadget/g1/idVendor 0x05C6
write /config/usb_gadget/g1/idProduct 0x90b8
symlink /config/usb_gadget/g1/functions/diag.diag /config/usb_gadget/g1/configs/b.1/f1
symlink /config/usb_gadget/g1/functions/cser.dun.0 /config/usb_gadget/g1/configs/b.1/f2
symlink /config/usb_gadget/g1/functions/${sys.usb.rmnet.func.name}.rmnet /config/usb_gadget/g1/configs/b.1/f3
symlink /config/usb_gadget/g1/functions/${sys.usb.rmnet.func.name}.dpl /config/usb_gadget/g1/configs/b.1/f4
symlink /config/usb_gadget/g1/functions/ffs.adb /config/usb_gadget/g1/configs/b.1/f5
write /config/usb_gadget/g1/UDC ${sys.usb.controller}
setprop sys.usb.state ${sys.usb.config}
on property:sys.usb.config=rndis,diag,dpl && property:sys.usb.configfs=1
write /config/usb_gadget/g1/configs/b.1/strings/0x409/configuration "rndis_diag_dpl"
rm /config/usb_gadget/g1/configs/b.1/f1
rm /config/usb_gadget/g1/configs/b.1/f2
rm /config/usb_gadget/g1/configs/b.1/f3
rm /config/usb_gadget/g1/configs/b.1/f4
rm /config/usb_gadget/g1/configs/b.1/f5
rm /config/usb_gadget/g1/configs/b.1/f6
rm /config/usb_gadget/g1/configs/b.1/f7
rm /config/usb_gadget/g1/configs/b.1/f8
write /config/usb_gadget/g1/idVendor 0x05C6
write /config/usb_gadget/g1/idProduct 0x90bf
symlink /config/usb_gadget/g1/functions/gsi.rndis /config/usb_gadget/g1/configs/b.1/f1
symlink /config/usb_gadget/g1/functions/diag.diag /config/usb_gadget/g1/configs/b.1/f2
symlink /config/usb_gadget/g1/functions/${sys.usb.rmnet.func.name}.dpl /config/usb_gadget/g1/configs/b.1/f3
write /config/usb_gadget/g1/UDC ${sys.usb.controller}
setprop sys.usb.state rndis
on property:sys.usb.config=rndis,diag,dpl,adb && property:sys.usb.configfs=1
start adbd
on property:sys.usb.ffs.ready=1 && property:sys.usb.config=rndis,diag,dpl,adb && property:sys.usb.configfs=1
write /config/usb_gadget/g1/configs/b.1/strings/0x409/configuration "rndis_diag_dpl_adb"
rm /config/usb_gadget/g1/configs/b.1/f1
rm /config/usb_gadget/g1/configs/b.1/f2
rm /config/usb_gadget/g1/configs/b.1/f3
rm /config/usb_gadget/g1/configs/b.1/f4
rm /config/usb_gadget/g1/configs/b.1/f5
rm /config/usb_gadget/g1/configs/b.1/f6
rm /config/usb_gadget/g1/configs/b.1/f7
rm /config/usb_gadget/g1/configs/b.1/f8
write /config/usb_gadget/g1/idVendor 0x05C6
write /config/usb_gadget/g1/idProduct 0x90c0
symlink /config/usb_gadget/g1/functions/gsi.rndis /config/usb_gadget/g1/configs/b.1/f1
symlink /config/usb_gadget/g1/functions/diag.diag /config/usb_gadget/g1/configs/b.1/f2
symlink /config/usb_gadget/g1/functions/${sys.usb.rmnet.func.name}.dpl /config/usb_gadget/g1/configs/b.1/f3
symlink /config/usb_gadget/g1/functions/ffs.adb /config/usb_gadget/g1/configs/b.1/f4
write /config/usb_gadget/g1/UDC ${sys.usb.controller}
setprop sys.usb.state rndis,adb
on property:sys.usb.config=ccid && property:sys.usb.configfs=1
write /config/usb_gadget/g1/configs/b.1/strings/0x409/configuration "ccid"
rm /config/usb_gadget/g1/configs/b.1/f1
rm /config/usb_gadget/g1/configs/b.1/f2
rm /config/usb_gadget/g1/configs/b.1/f3
rm /config/usb_gadget/g1/configs/b.1/f4
rm /config/usb_gadget/g1/configs/b.1/f5
rm /config/usb_gadget/g1/configs/b.1/f6
rm /config/usb_gadget/g1/configs/b.1/f7
rm /config/usb_gadget/g1/configs/b.1/f8
write /config/usb_gadget/g1/idVendor 0x05C6
write /config/usb_gadget/g1/idProduct 0x90CE
symlink /config/usb_gadget/g1/functions/ccid.ccid /config/usb_gadget/g1/configs/b.1/f1
write /config/usb_gadget/g1/UDC ${sys.usb.controller}
setprop sys.usb.state ${sys.usb.config}
on property:sys.usb.config=ccid,adb && property:sys.usb.configfs=1
start adbd
on property:sys.usb.ffs.ready=1 && property:sys.usb.config=ccid,adb && property:sys.usb.configfs=1
write /config/usb_gadget/g1/configs/b.1/strings/0x409/configuration "ccid_adb"
rm /config/usb_gadget/g1/configs/b.1/f1
rm /config/usb_gadget/g1/configs/b.1/f2
rm /config/usb_gadget/g1/configs/b.1/f3
rm /config/usb_gadget/g1/configs/b.1/f4
rm /config/usb_gadget/g1/configs/b.1/f5
rm /config/usb_gadget/g1/configs/b.1/f6
rm /config/usb_gadget/g1/configs/b.1/f7
rm /config/usb_gadget/g1/configs/b.1/f8
write /config/usb_gadget/g1/idVendor 0x05C6
write /config/usb_gadget/g1/idProduct 0x90CF
symlink /config/usb_gadget/g1/functions/ccid.ccid /config/usb_gadget/g1/configs/b.1/f1
symlink /config/usb_gadget/g1/functions/ffs.adb /config/usb_gadget/g1/configs/b.1/f2
write /config/usb_gadget/g1/UDC ${sys.usb.controller}
setprop sys.usb.state ${sys.usb.config}
on property:sys.usb.config=ccid,diag && property:sys.usb.configfs=1
write /config/usb_gadget/g1/configs/b.1/strings/0x409/configuration "ccid_diag"
rm /config/usb_gadget/g1/configs/b.1/f1
rm /config/usb_gadget/g1/configs/b.1/f2
rm /config/usb_gadget/g1/configs/b.1/f3
rm /config/usb_gadget/g1/configs/b.1/f4
rm /config/usb_gadget/g1/configs/b.1/f5
rm /config/usb_gadget/g1/configs/b.1/f6
rm /config/usb_gadget/g1/configs/b.1/f7
rm /config/usb_gadget/g1/configs/b.1/f8
write /config/usb_gadget/g1/idVendor 0x05C6
write /config/usb_gadget/g1/idProduct 0x90D0
symlink /config/usb_gadget/g1/functions/ccid.ccid /config/usb_gadget/g1/configs/b.1/f1
symlink /config/usb_gadget/g1/functions/diag.diag /config/usb_gadget/g1/configs/b.1/f2
write /config/usb_gadget/g1/UDC ${sys.usb.controller}
setprop sys.usb.state ${sys.usb.config}
on property:sys.usb.config=ccid,diag,adb && property:sys.usb.configfs=1
start adbd
on property:sys.usb.ffs.ready=1 && property:sys.usb.config=ccid,diag,adb && property:sys.usb.configfs=1
write /config/usb_gadget/g1/configs/b.1/strings/0x409/configuration "ccid_diag_adb"
rm /config/usb_gadget/g1/configs/b.1/f1
rm /config/usb_gadget/g1/configs/b.1/f2
rm /config/usb_gadget/g1/configs/b.1/f3
rm /config/usb_gadget/g1/configs/b.1/f4
rm /config/usb_gadget/g1/configs/b.1/f5
rm /config/usb_gadget/g1/configs/b.1/f6
rm /config/usb_gadget/g1/configs/b.1/f7
rm /config/usb_gadget/g1/configs/b.1/f8
write /config/usb_gadget/g1/idVendor 0x05C6
write /config/usb_gadget/g1/idProduct 0x90D1
symlink /config/usb_gadget/g1/functions/ccid.ccid /config/usb_gadget/g1/configs/b.1/f1
symlink /config/usb_gadget/g1/functions/diag.diag /config/usb_gadget/g1/configs/b.1/f2
symlink /config/usb_gadget/g1/functions/ffs.adb /config/usb_gadget/g1/configs/b.1/f3
write /config/usb_gadget/g1/UDC ${sys.usb.controller}
setprop sys.usb.state ${sys.usb.config}
on property:sys.usb.config=diag,serial_cdev,rmnet,ccid && property:sys.usb.configfs=1
write /config/usb_gadget/g1/configs/b.1/strings/0x409/configuration "diag_dun_rmnet_ccid"
rm /config/usb_gadget/g1/configs/b.1/f1
rm /config/usb_gadget/g1/configs/b.1/f2
rm /config/usb_gadget/g1/configs/b.1/f3
rm /config/usb_gadget/g1/configs/b.1/f4
rm /config/usb_gadget/g1/configs/b.1/f5
rm /config/usb_gadget/g1/configs/b.1/f6
rm /config/usb_gadget/g1/configs/b.1/f7
rm /config/usb_gadget/g1/configs/b.1/f8
write /config/usb_gadget/g1/idVendor 0x05C6
write /config/usb_gadget/g1/idProduct 0x90D2
symlink /config/usb_gadget/g1/functions/diag.diag /config/usb_gadget/g1/configs/b.1/f1
symlink /config/usb_gadget/g1/functions/cser.dun.0 /config/usb_gadget/g1/configs/b.1/f2
symlink /config/usb_gadget/g1/functions/${sys.usb.rmnet.func.name}.rmnet /config/usb_gadget/g1/configs/b.1/f3
symlink /config/usb_gadget/g1/functions/ccid.ccid /config/usb_gadget/g1/configs/b.1/f4
write /config/usb_gadget/g1/UDC ${sys.usb.controller}
setprop sys.usb.state ${sys.usb.config}
on property:sys.usb.config=diag,serial_cdev,rmnet,ccid,adb && property:sys.usb.configfs=1
start adbd
on property:sys.usb.ffs.ready=1 && property:sys.usb.config=diag,serial_cdev,rmnet,ccid,adb && property:sys.usb.configfs=1
write /config/usb_gadget/g1/configs/b.1/strings/0x409/configuration "diag_dun_rmnet_ccid_adb"
rm /config/usb_gadget/g1/configs/b.1/f1
rm /config/usb_gadget/g1/configs/b.1/f2
rm /config/usb_gadget/g1/configs/b.1/f3
rm /config/usb_gadget/g1/configs/b.1/f4
rm /config/usb_gadget/g1/configs/b.1/f5
rm /config/usb_gadget/g1/configs/b.1/f6
rm /config/usb_gadget/g1/configs/b.1/f7
rm /config/usb_gadget/g1/configs/b.1/f8
write /config/usb_gadget/g1/idVendor 0x05C6
write /config/usb_gadget/g1/idProduct 0x90D3
symlink /config/usb_gadget/g1/functions/diag.diag /config/usb_gadget/g1/configs/b.1/f1
symlink /config/usb_gadget/g1/functions/cser.dun.0 /config/usb_gadget/g1/configs/b.1/f2
symlink /config/usb_gadget/g1/functions/${sys.usb.rmnet.func.name}.rmnet /config/usb_gadget/g1/configs/b.1/f3
symlink /config/usb_gadget/g1/functions/ccid.ccid /config/usb_gadget/g1/configs/b.1/f4
symlink /config/usb_gadget/g1/functions/ffs.adb /config/usb_gadget/g1/configs/b.1/f5
write /config/usb_gadget/g1/UDC ${sys.usb.controller}
setprop sys.usb.state ${sys.usb.config}
on property:sys.usb.config=diag,diag_mdm,qdss,qdss_mdm,serial_cdev,serial_cdev_mdm,rmnet && property:sys.usb.configfs=1
write /config/usb_gadget/g1/configs/b.1/strings/0x409/configuration "diag_diag_mdm,qdss_qdss_mdm_dun_dun_mdm_rmnet"
rm /config/usb_gadget/g1/configs/b.1/f1
rm /config/usb_gadget/g1/configs/b.1/f2
rm /config/usb_gadget/g1/configs/b.1/f3
rm /config/usb_gadget/g1/configs/b.1/f4
rm /config/usb_gadget/g1/configs/b.1/f5
rm /config/usb_gadget/g1/configs/b.1/f6
rm /config/usb_gadget/g1/configs/b.1/f7
rm /config/usb_gadget/g1/configs/b.1/f8
write /config/usb_gadget/g1/idVendor 0x05C6
write /config/usb_gadget/g1/idProduct 0x90D7
symlink /config/usb_gadget/g1/functions/diag.diag /config/usb_gadget/g1/configs/b.1/f1
symlink /config/usb_gadget/g1/functions/diag.diag_mdm /config/usb_gadget/g1/configs/b.1/f2
symlink /config/usb_gadget/g1/functions/qdss.qdss /config/usb_gadget/g1/configs/b.1/f3
symlink /config/usb_gadget/g1/functions/qdss.qdss_mdm /config/usb_gadget/g1/configs/b.1/f4
symlink /config/usb_gadget/g1/functions/cser.dun.0 /config/usb_gadget/g1/configs/b.1/f5
symlink /config/usb_gadget/g1/functions/cser.dun.2 /config/usb_gadget/g1/configs/b.1/f6
symlink /config/usb_gadget/g1/functions/${sys.usb.rmnet.func.name}.rmnet /config/usb_gadget/g1/configs/b.1/f7
write /config/usb_gadget/g1/UDC ${sys.usb.controller}
setprop sys.usb.state ${sys.usb.config}
on property:sys.usb.config=diag,diag_mdm,qdss,qdss_mdm,serial_cdev,serial_cdev_mdm,rmnet,adb && property:sys.usb.configfs=1
start adbd
on property:sys.usb.ffs.ready=1 && property:sys.usb.config=diag,diag_mdm,qdss,qdss_mdm,serial_cdev,serial_cdev_mdm,rmnet,adb && property:sys.usb.configfs=1
write /config/usb_gadget/g1/configs/b.1/strings/0x409/configuration "diag_diag_mdm,qdss_qdss_mdm_dun_dun_mdm_rmnet_adb"
rm /config/usb_gadget/g1/configs/b.1/f1
rm /config/usb_gadget/g1/configs/b.1/f2
rm /config/usb_gadget/g1/configs/b.1/f3
rm /config/usb_gadget/g1/configs/b.1/f4
rm /config/usb_gadget/g1/configs/b.1/f5
rm /config/usb_gadget/g1/configs/b.1/f6
rm /config/usb_gadget/g1/configs/b.1/f7
rm /config/usb_gadget/g1/configs/b.1/f8
write /config/usb_gadget/g1/idVendor 0x05C6
write /config/usb_gadget/g1/idProduct 0x90D8
symlink /config/usb_gadget/g1/functions/diag.diag /config/usb_gadget/g1/configs/b.1/f1
symlink /config/usb_gadget/g1/functions/diag.diag_mdm /config/usb_gadget/g1/configs/b.1/f2
symlink /config/usb_gadget/g1/functions/qdss.qdss /config/usb_gadget/g1/configs/b.1/f3
symlink /config/usb_gadget/g1/functions/qdss.qdss_mdm /config/usb_gadget/g1/configs/b.1/f4
symlink /config/usb_gadget/g1/functions/cser.dun.0 /config/usb_gadget/g1/configs/b.1/f5
symlink /config/usb_gadget/g1/functions/cser.dun.2 /config/usb_gadget/g1/configs/b.1/f6
symlink /config/usb_gadget/g1/functions/${sys.usb.rmnet.func.name}.rmnet /config/usb_gadget/g1/configs/b.1/f7
symlink /config/usb_gadget/g1/functions/ffs.adb /config/usb_gadget/g1/configs/b.1/f8
write /config/usb_gadget/g1/UDC ${sys.usb.controller}
setprop sys.usb.state ${sys.usb.config}
on property:sys.usb.config=adb && property:sys.usb.configfs=1
write /config/usb_gadget/g1/idVendor 0x2e17
write /config/usb_gadget/g1/idProduct 0xc032
on property:sys.usb.config=mtp && property:sys.usb.configfs=1
write /config/usb_gadget/g1/idVendor 0x2e17
write /config/usb_gadget/g1/idProduct 0xc033
on property:sys.usb.config=mtp,adb && property:sys.usb.configfs=1
write /config/usb_gadget/g1/idVendor 0x2e17
write /config/usb_gadget/g1/idProduct 0xc030
on property:sys.usb.config=ptp && property:sys.usb.configfs=1
write /config/usb_gadget/g1/idVendor 0x2e17
write /config/usb_gadget/g1/idProduct 0xc034
on property:sys.usb.config=ptp,adb && property:sys.usb.configfs=1
write /config/usb_gadget/g1/idVendor 0x2e17
write /config/usb_gadget/g1/idProduct 0xc031
on property:sys.usb.config=accessory && property:sys.usb.configfs=1
write /config/usb_gadget/g1/idVendor 0x18d1
write /config/usb_gadget/g1/idProduct 0x2d00
on property:sys.usb.config=accessory,adb && property:sys.usb.configfs=1
write /config/usb_gadget/g1/idVendor 0x18d1
write /config/usb_gadget/g1/idProduct 0x2d01
on property:sys.usb.config=audio_source && property:sys.usb.configfs=1
write /config/usb_gadget/g1/idVendor 0x18d1
write /config/usb_gadget/g1/idProduct 0x2d02
on property:sys.usb.config=audio_source,adb && property:sys.usb.configfs=1
write /config/usb_gadget/g1/idVendor 0x18d1
write /config/usb_gadget/g1/idProduct 0x2d03
on property:sys.usb.config=accessory,audio_source && property:sys.usb.configfs=1
write /config/usb_gadget/g1/idVendor 0x18d1
write /config/usb_gadget/g1/idProduct 0x2d04
on property:sys.usb.config=accessory,audio_source,adb && property:sys.usb.configfs=1
write /config/usb_gadget/g1/idVendor 0x18d1
write /config/usb_gadget/g1/idProduct 0x2d05
on property:sys.usb.config=midi && property:sys.usb.configfs=1
write /config/usb_gadget/g1/idVendor 0x2e17
write /config/usb_gadget/g1/idProduct 0xc041
on property:sys.usb.config=midi,adb && property:sys.usb.configfs=1
write /config/usb_gadget/g1/idVendor 0x2e17
write /config/usb_gadget/g1/idProduct 0xc042
================================================
FILE: rootdir/etc/init.qcom.early_boot.sh
================================================
#! /vendor/bin/sh
# Copyright (c) 2012-2013,2016 The Linux Foundation. All rights reserved.
#
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions are met:
# * Redistributions of source code must retain the above copyright
# notice, this list of conditions and the following disclaimer.
# * Redistributions in binary form must reproduce the above copyright
# notice, this list of conditions and the following disclaimer in the
# documentation and/or other materials provided with the distribution.
# * Neither the name of The Linux Foundation nor
# the names of its contributors may be used to endorse or promote
# products derived from this software without specific prior written
# permission.
#
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
# IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
# NON-INFRINGEMENT ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
# EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
# OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
#
export PATH=/vendor/bin
log -t BOOT -p i "Essential Mata target '$1', SoC '$soc_hwplatform', HwID '$soc_hwid', SoC ver '$soc_hwver'"
#For drm based display driver
vbfile=/sys/module/drm/parameters/vblankoffdelay
if [ -w $vbfile ]; then
echo -1 > $vbfile
else
log -t DRM_BOOT -p w "file: '$vbfile' or perms doesn't exist"
fi
hw_revision=`getprop ro.boot.revision`
setprop ro.hardware.nfc_nci msm8998
# If grip manual is set to 0 (user forced to disable grip), disable it
# Otherwise set it on
grip_manual=`getprop persist.grip.status_manual`
if [ "$grip_manual" == "" ] || [ "$grip_manual" == "1" ]; then
setprop sys.grip.status on
else
setprop sys.grip.status off
fi
# Set default smoothness value
smoothness=`getprop persist.touch.smoothness`
if [ "$smoothness" == "" ]; then
setprop persist.touch.smoothness 5
fi
# Set carrier specific properties as per sku
sku=`getprop ro.boot.carrier.sku`
tags=`getprop ro.build.tags`
if [ "$sku" == "OPENJP" ]; then
setprop ro.boot.wificountrycode JP
setprop ro.product.locale ja-JP
elif [ "$sku" == "OPENEU" ]; then
setprop ro.boot.wificountrycode UK
setprop ro.product.locale en-UK
fi
if [ "$sku" != "SPRINT" ] && [ "$tags" == "release-keys" ]; then
setprop ro.boot.diagclean true
fi
# Since an ro.* cannot be set twice, we can just call this directly
setprop ro.product.locale en-US
setprop ro.boot.wificountrycode US
# End of carrier specific properties
# Setup display nodes & permissions
# HDMI can be fb1 or fb2
# Loop through the sysfs nodes and determine
# the HDMI(dtv panel)
function set_perms() {
#Usage set_perms
chown -h $2 $1
chmod $3 $1
}
function setHDMIPermission() {
file=/sys/class/graphics/fb$1
dev_file=/dev/graphics/fb$1
dev_gfx_hdmi=/devices/virtual/switch/hdmi
set_perms $file/hpd system.graphics 0664
set_perms $file/res_info system.graphics 0664
set_perms $file/vendor_name system.graphics 0664
set_perms $file/product_description system.graphics 0664
set_perms $file/video_mode system.graphics 0664
set_perms $file/format_3d system.graphics 0664
set_perms $file/s3d_mode system.graphics 0664
set_perms $file/dynamic_fps system.graphics 0664
set_perms $file/msm_fb_dfps_mode system.graphics 0664
set_perms $file/hdr_stream system.graphics 0664
set_perms $file/cec/enable system.graphics 0664
set_perms $file/cec/logical_addr system.graphics 0664
set_perms $file/cec/rd_msg system.graphics 0664
set_perms $file/pa system.graphics 0664
set_perms $file/cec/wr_msg system.graphics 0600
set_perms $file/hdcp/tp system.graphics 0664
set_perms $file/hdmi_audio_cb audioserver.audio 0600
ln -s $dev_file $dev_gfx_hdmi
}
# check for the type of driver FB or DRM
fb_driver=/sys/class/graphics/fb0
if [ -e "$fb_driver" ]
then
# check for HDMI connection
for fb_cnt in 0 1 2 3
do
file=/sys/class/graphics/fb$fb_cnt/msm_fb_panel_info
if [ -f "$file" ]
then
cat $file | while read line; do
case "$line" in
*"is_pluggable"*)
case "$line" in
*"1"*)
setHDMIPermission $fb_cnt
esac
esac
done
fi
done
file=/sys/class/graphics/fb0
if [ -d "$file" ]
then
set_perms $file/idle_time system.graphics 0664
set_perms $file/dynamic_fps system.graphics 0664
set_perms $file/dyn_pu system.graphics 0664
set_perms $file/modes system.graphics 0664
set_perms $file/mode system.graphics 0664
set_perms $file/msm_cmd_autorefresh_en system.graphics 0664
fi
# set lineptr permissions for all displays
for fb_cnt in 0 1 2 3
do
file=/sys/class/graphics/fb$fb_cnt
if [ -f "$file/lineptr_value" ]; then
set_perms $file/lineptr_value system.graphics 0664
fi
if [ -f "$file/msm_fb_persist_mode" ]; then
set_perms $file/msm_fb_persist_mode system.graphics 0664
fi
done
fi
================================================
FILE: rootdir/etc/init.qcom.post_boot.sh
================================================
#! /vendor/bin/sh
# Copyright (c) 2012-2013, 2016, The Linux Foundation. All rights reserved.
#
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions are met:
# * Redistributions of source code must retain the above copyright
# notice, this list of conditions and the following disclaimer.
# * Redistributions in binary form must reproduce the above copyright
# notice, this list of conditions and the following disclaimer in the
# documentation and/or other materials provided with the distribution.
# * Neither the name of The Linux Foundation nor
# the names of its contributors may be used to endorse or promote
# products derived from this software without specific prior written
# permission.
#
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
# IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
# NON-INFRINGEMENT ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
# EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
# OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
#
target=`getprop ro.board.platform`
charger=`getprop ro.boot.mode`
copy_pstore_files_if_enabled()
{
pstore_dump_enabled=`getprop persist.sys.pstore_dumps`
if [ $pstore_dump_enabled -eq 1 ]; then
rm -f /data/misc/pstore/*
cp -r /sys/fs/pstore/* /data/misc/pstore/
chown system:system /data/misc/pstore/*
fi
}
copy_pstore_files_if_enabled
echo 2 > /sys/devices/system/cpu/cpu4/core_ctl/min_cpus
echo 100 > /sys/devices/system/cpu/cpu4/core_ctl/offline_delay_ms
echo 1 > /sys/devices/system/cpu/cpu4/core_ctl/is_big_cluster
echo 4 > /sys/devices/system/cpu/cpu4/core_ctl/task_thres
# Setting b.L scheduler parameters
echo 1 > /proc/sys/kernel/sched_migration_fixup
echo 95 > /proc/sys/kernel/sched_upmigrate
echo 90 > /proc/sys/kernel/sched_downmigrate
echo 100 > /proc/sys/kernel/sched_group_upmigrate
echo 95 > /proc/sys/kernel/sched_group_downmigrate
echo 0 > /proc/sys/kernel/sched_select_prev_cpu_us
echo 400000 > /proc/sys/kernel/sched_freq_inc_notify
echo 400000 > /proc/sys/kernel/sched_freq_dec_notify
echo 5 > /proc/sys/kernel/sched_spill_nr_run
echo 1 > /proc/sys/kernel/sched_restrict_cluster_spill
echo 1 > /proc/sys/kernel/sched_prefer_sync_wakee_to_waker
# disable thermal bcl hotplug to switch governor
echo 0 > /sys/module/msm_thermal/core_control/enabled
# online CPU0
echo 1 > /sys/devices/system/cpu/cpu0/online
# configure governor settings for little cluster
echo "interactive" > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
echo 1 > /sys/devices/system/cpu/cpu0/cpufreq/interactive/use_sched_load
echo 1 > /sys/devices/system/cpu/cpu0/cpufreq/interactive/use_migration_notif
echo 19000 > /sys/devices/system/cpu/cpu0/cpufreq/interactive/above_hispeed_delay
echo 90 > /sys/devices/system/cpu/cpu0/cpufreq/interactive/go_hispeed_load
echo 20000 > /sys/devices/system/cpu/cpu0/cpufreq/interactive/timer_rate
echo 1248000 > /sys/devices/system/cpu/cpu0/cpufreq/interactive/hispeed_freq
echo 1 > /sys/devices/system/cpu/cpu0/cpufreq/interactive/io_is_busy
echo "83 1804800:95" > /sys/devices/system/cpu/cpu0/cpufreq/interactive/target_loads
echo 19000 > /sys/devices/system/cpu/cpu0/cpufreq/interactive/min_sample_time
echo 79000 > /sys/devices/system/cpu/cpu0/cpufreq/interactive/max_freq_hysteresis
echo 300000 > /sys/devices/system/cpu/cpu0/cpufreq/scaling_min_freq
echo 1 > /sys/devices/system/cpu/cpu0/cpufreq/interactive/ignore_hispeed_on_notif
# online CPU4
echo 1 > /sys/devices/system/cpu/cpu4/online
# configure governor settings for big cluster
echo "interactive" > /sys/devices/system/cpu/cpu4/cpufreq/scaling_governor
echo 1 > /sys/devices/system/cpu/cpu4/cpufreq/interactive/use_sched_load
echo 1 > /sys/devices/system/cpu/cpu4/cpufreq/interactive/use_migration_notif
echo 19000 > /sys/devices/system/cpu/cpu4/cpufreq/interactive/above_hispeed_delay
echo 90 > /sys/devices/system/cpu/cpu4/cpufreq/interactive/go_hispeed_load
echo 20000 > /sys/devices/system/cpu/cpu4/cpufreq/interactive/timer_rate
echo 1574400 > /sys/devices/system/cpu/cpu4/cpufreq/interactive/hispeed_freq
echo 1 > /sys/devices/system/cpu/cpu4/cpufreq/interactive/io_is_busy
echo "83 1939200:90 2016000:95" > /sys/devices/system/cpu/cpu4/cpufreq/interactive/target_loads
echo 19000 > /sys/devices/system/cpu/cpu4/cpufreq/interactive/min_sample_time
echo 79000 > /sys/devices/system/cpu/cpu4/cpufreq/interactive/max_freq_hysteresis
echo 300000 > /sys/devices/system/cpu/cpu4/cpufreq/scaling_min_freq
echo 1 > /sys/devices/system/cpu/cpu4/cpufreq/interactive/ignore_hispeed_on_notif
# re-enable thermal and BCL hotplug
echo 1 > /sys/module/msm_thermal/core_control/enabled
# Enable input boost configuration
echo "0:1324800" > /sys/module/cpu_boost/parameters/input_boost_freq
echo 40 > /sys/module/cpu_boost/parameters/input_boost_ms
# Enable bus-dcvs
for cpubw in /sys/class/devfreq/*qcom,cpubw*
do
echo "bw_hwmon" > $cpubw/governor
echo 50 > $cpubw/polling_interval
echo 1525 > $cpubw/min_freq
echo "3143 5859 11863 13763" > $cpubw/bw_hwmon/mbps_zones
echo 4 > $cpubw/bw_hwmon/sample_ms
echo 34 > $cpubw/bw_hwmon/io_percent
echo 20 > $cpubw/bw_hwmon/hist_memory
echo 10 > $cpubw/bw_hwmon/hyst_length
echo 0 > $cpubw/bw_hwmon/low_power_ceil_mbps
echo 34 > $cpubw/bw_hwmon/low_power_io_percent
echo 20 > $cpubw/bw_hwmon/low_power_delay
echo 0 > $cpubw/bw_hwmon/guard_band_mbps
echo 250 > $cpubw/bw_hwmon/up_scale
echo 1600 > $cpubw/bw_hwmon/idle_mbps
done
for memlat in /sys/class/devfreq/*qcom,memlat-cpu*
do
echo "mem_latency" > $memlat/governor
echo 10 > $memlat/polling_interval
echo 400 > $memlat/mem_latency/ratio_ceil
done
echo "cpufreq" > /sys/class/devfreq/soc:qcom,mincpubw/governor
echo N > /sys/module/lpm_levels/system/pwr/cpu0/ret/idle_enabled
echo N > /sys/module/lpm_levels/system/pwr/cpu1/ret/idle_enabled
echo N > /sys/module/lpm_levels/system/pwr/cpu2/ret/idle_enabled
echo N > /sys/module/lpm_levels/system/pwr/cpu3/ret/idle_enabled
echo N > /sys/module/lpm_levels/system/perf/cpu4/ret/idle_enabled
echo N > /sys/module/lpm_levels/system/perf/cpu5/ret/idle_enabled
echo N > /sys/module/lpm_levels/system/perf/cpu6/ret/idle_enabled
echo N > /sys/module/lpm_levels/system/perf/cpu7/ret/idle_enabled
echo N > /sys/module/lpm_levels/system/pwr/pwr-l2-dynret/idle_enabled
echo N > /sys/module/lpm_levels/system/pwr/pwr-l2-ret/idle_enabled
echo N > /sys/module/lpm_levels/system/perf/perf-l2-dynret/idle_enabled
echo N > /sys/module/lpm_levels/system/perf/perf-l2-ret/idle_enabled
echo N > /sys/module/lpm_levels/parameters/sleep_disabled
echo 0-3 > /dev/cpuset/background/cpus
echo 0-3 > /dev/cpuset/system-background/cpus
echo 0 > /proc/sys/kernel/sched_boost
chown -h system /sys/devices/system/cpu/cpufreq/ondemand/sampling_rate
chown -h system /sys/devices/system/cpu/cpufreq/ondemand/sampling_down_factor
chown -h system /sys/devices/system/cpu/cpufreq/ondemand/io_is_busy
setprop sys.post_boot.parsed 1
if [ "$charger" != "charger" ]; then
start hbtp
fi
# Let kernel know our image version/variant/crm_version
if [ -f /sys/devices/soc0/select_image ]; then
image_version="10:"
image_version+=`getprop ro.build.id`
image_version+=":"
image_version+=`getprop ro.build.version.incremental`
image_variant=`getprop ro.product.name`
image_variant+="-"
image_variant+=`getprop ro.build.type`
oem_version=`getprop ro.build.version.codename`
echo 10 > /sys/devices/soc0/select_image
echo $image_version > /sys/devices/soc0/image_version
echo $image_variant > /sys/devices/soc0/image_variant
echo $oem_version > /sys/devices/soc0/image_crm_version
fi
================================================
FILE: rootdir/etc/init.qcom.ssr.sh
================================================
#! /vendor/bin/sh
# Copyright (c) 2013, The Linux Foundation. All rights reserved.
#
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions are met:
# * Redistributions of source code must retain the above copyright
# notice, this list of conditions and the following disclaimer.
# * Redistributions in binary form must reproduce the above copyright
# notice, this list of conditions and the following disclaimer in the
# documentation and/or other materials provided with the distribution.
# * Neither the name of The Linux Foundation nor
# the names of its contributors may be used to endorse or promote
# products derived from this software without specific prior written
# permission.
#
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
# IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
# NON-INFRINGEMENT ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
# EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
# OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
#
ssr_str="$1"
IFS=,
ssr_array=($ssr_str)
declare -i subsys_mask=0
# check user input subsystem with system device
ssr_check_subsystem_name()
{
declare -i i=0
subsys=`cat /sys/bus/msm_subsys/devices/subsys$i/name`
while [ "$subsys" != "" ]
do
if [ "$subsys" == "$ssr_name" ]; then
return 1
fi
i=$i+1
subsys=`cat /sys/bus/msm_subsys/devices/subsys$i/name`
done
return 0
}
# set subsystem mask to indicate which subsystem needs to be enabled
for num in "${!ssr_array[@]}"
do
case "${ssr_array[$num]}" in
"1")
subsys_mask=0
;;
"riva")
subsys_mask=$subsys_mask+1
;;
"3")
subsys_mask=63
;;
"adsp")
ssr_name=adsp
if ( ssr_check_subsystem_name ); then
subsys_mask=$subsys_mask+2
fi
;;
"modem")
ssr_name=modem
if ( ssr_check_subsystem_name ); then
subsys_mask=$subsys_mask+4
fi
;;
"wcnss")
ssr_name=wcnss
if ( ssr_check_subsystem_name ); then
subsys_mask=$subsys_mask+8
fi
;;
"venus")
ssr_name=venus
if ( ssr_check_subsystem_name ); then
subsys_mask=$subsys_mask+16
fi
;;
"external_modem")
ssr_name=external_modem
if ( ssr_check_subsystem_name ); then
subsys_mask=$subsys_mask+32
fi
;;
esac
done
# enable selected subsystem restart
if [ $((subsys_mask & 1)) == 1 ]; then
echo 1 > /sys/module/wcnss_ssr_8960/parameters/enable_riva_ssr
else
echo 0 > /sys/module/wcnss_ssr_8960/parameters/enable_riva_ssr
fi
if [ $((subsys_mask & 2)) == 2 ]; then
echo "related" > /sys/bus/msm_subsys/devices/subsys0/restart_level
else
echo "system" > /sys/bus/msm_subsys/devices/subsys0/restart_level
fi
if [ $((subsys_mask & 4)) == 4 ]; then
echo "related" > /sys/bus/msm_subsys/devices/subsys1/restart_level
else
echo "system" > /sys/bus/msm_subsys/devices/subsys1/restart_level
fi
if [ $((subsys_mask & 8)) == 8 ]; then
echo "related" > /sys/bus/msm_subsys/devices/subsys2/restart_level
else
echo "system" > /sys/bus/msm_subsys/devices/subsys2/restart_level
fi
if [ $((subsys_mask & 16)) == 16 ]; then
echo "related" > /sys/bus/msm_subsys/devices/subsys3/restart_level
else
echo "system" > /sys/bus/msm_subsys/devices/subsys3/restart_level
fi
if [ $((subsys_mask & 32)) == 32 ]; then
echo "related" > /sys/bus/msm_subsys/devices/subsys4/restart_level
else
echo "system" > /sys/bus/msm_subsys/devices/subsys4/restart_level
fi
if [ $((subsys_mask & 63)) == 63 ]; then
echo 3 > /sys/module/subsystem_restart/parameters/restart_level
else
echo 1 > /sys/module/subsystem_restart/parameters/restart_level
fi
================================================
FILE: rootdir/etc/init.qcom.usb.rc
================================================
# Copyright (c) 2011-2016, The Linux Foundation. All rights reserved.
#
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions are met:
# * Redistributions of source code must retain the above copyright
# notice, this list of conditions and the following disclaimer.
# * Redistributions in binary form must reproduce the above copyright
# notice, this list of conditions and the following disclaimer in the
# documentation and/or other materials provided with the distribution.
# * Neither the name of The Linux Foundation nor
# the names of its contributors may be used to endorse or promote
# products derived from this software without specific prior written
# permission.
#
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
# IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
# NON-INFRINGEMENT ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
# EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
# OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
#
on charger
mkdir /dev/usb-ffs 0770 shell shell
mkdir /dev/usb-ffs/adb 0770 shell shell
mount configfs none /config
mkdir /config/usb_gadget/g1 0770 shell shell
mkdir /config/usb_gadget/g1/strings/0x409 0770 shell shell
write /config/usb_gadget/g1/bcdUSB 0x0200
write /config/usb_gadget/g1/os_desc/use 1
write /config/usb_gadget/g1/strings/0x409/serialnumber ${ro.serialno}
write /config/usb_gadget/g1/strings/0x409/manufacturer ${ro.product.manufacturer}
write /config/usb_gadget/g1/strings/0x409/product ${ro.product.model}
mkdir /config/usb_gadget/g1/functions/mass_storage.0
mkdir /config/usb_gadget/g1/functions/ffs.adb
mkdir /config/usb_gadget/g1/configs/b.1 0770 shell shell
mkdir /config/usb_gadget/g1/configs/b.1/strings/0x409 0770 shell shell
write /config/usb_gadget/g1/os_desc/b_vendor_code 0x1
symlink /config/usb_gadget/g1/configs/b.1 /config/usb_gadget/g1/os_desc/b.1
mount functionfs adb /dev/usb-ffs/adb uid=2000,gid=2000
write /sys/class/android_usb/android0/f_ffs/aliases adb
setprop sys.usb.config mass_storage
on boot
write /sys/class/android_usb/android0/iSerial ${ro.serialno}
mkdir /dev/usb-ffs 0770 shell shell
mkdir /dev/usb-ffs/adb 0770 shell shell
mount configfs none /config
mkdir /config/usb_gadget/g1 0770 shell shell
mkdir /config/usb_gadget/g1/strings/0x409 0770 shell shell
write /config/usb_gadget/g1/bcdUSB 0x0200
write /config/usb_gadget/g1/os_desc/use 1
write /config/usb_gadget/g1/strings/0x409/serialnumber ${ro.serialno}
write /config/usb_gadget/g1/strings/0x409/manufacturer ${ro.product.manufacturer}
write /config/usb_gadget/g1/strings/0x409/product ${ro.product.model}
mkdir /config/usb_gadget/g1/functions/mass_storage.0
mkdir /config/usb_gadget/g1/functions/mtp.gs0
mkdir /config/usb_gadget/g1/functions/ptp.gs1
mkdir /config/usb_gadget/g1/functions/accessory.gs2
mkdir /config/usb_gadget/g1/functions/audio_source.gs3
mkdir /config/usb_gadget/g1/functions/midi.gs5
mkdir /config/usb_gadget/g1/functions/ffs.adb
mkdir /config/usb_gadget/g1/functions/diag.diag
mkdir /config/usb_gadget/g1/functions/diag.diag_mdm
mkdir /config/usb_gadget/g1/functions/cser.dun.0
mkdir /config/usb_gadget/g1/functions/cser.nmea.1
mkdir /config/usb_gadget/g1/functions/cser.dun.2
mkdir /config/usb_gadget/g1/functions/gsi.rmnet
mkdir /config/usb_gadget/g1/functions/gsi.rndis
mkdir /config/usb_gadget/g1/functions/gsi.dpl
mkdir /config/usb_gadget/g1/functions/qdss.qdss
mkdir /config/usb_gadget/g1/functions/qdss.qdss_mdm
mkdir /config/usb_gadget/g1/functions/rndis_bam.rndis
mkdir /config/usb_gadget/g1/functions/rmnet_bam.rmnet
mkdir /config/usb_gadget/g1/functions/rmnet_bam.dpl
mkdir /config/usb_gadget/g1/functions/ncm.0
mkdir /config/usb_gadget/g1/functions/ccid.ccid
mkdir /config/usb_gadget/g1/configs/b.1 0770 shell shell
mkdir /config/usb_gadget/g1/configs/b.1/strings/0x409 0770 shell shell
write /config/usb_gadget/g1/os_desc/b_vendor_code 0x1
write /config/usb_gadget/g1/os_desc/qw_sign "MSFT100"
symlink /config/usb_gadget/g1/configs/b.1 /config/usb_gadget/g1/os_desc/b.1
mount functionfs adb /dev/usb-ffs/adb uid=2000,gid=2000
write /sys/class/android_usb/android0/f_ffs/aliases adb
setprop sys.usb.controller "a800000.dwc3"
setprop sys.usb.rndis.func.name "gsi"
setprop sys.usb.rmnet.func.name "gsi"
setprop sys.usb.configfs 1
setprop sys.usb.rps_mask 0
write /sys/module/usbcore/parameters/autosuspend 3
================================================
FILE: rootdir/etc/init.radio.sh
================================================
#! /vendor/bin/sh
#
# Copy qcril.db if needed for RIL
#
if [ -f /vendor/radio/qcril_database/qcril.db -a ! -f /data/vendor/radio/qcril.db ]; then
cp /vendor/radio/qcril_database/qcril.db /data/vendor/radio/qcril.db
chown -h radio.radio /data/vendor/radio/qcril.db
fi
echo 1 > /data/vendor/radio/db_check_done
#
# Make modem config folder and copy firmware config to that folder for RIL
#
if [ -f /data/vendor/radio/ver_info.txt ]; then
prev_version_info=`cat /data/vendor/radio/ver_info.txt`
else
prev_version_info=""
fi
cur_version_info=`cat /vendor/firmware_mnt/verinfo/ver_info.txt`
if [ ! -f /vendor/firmware_mnt/verinfo/ver_info.txt -o "$prev_version_info" != "$cur_version_info" ]; then
rm -rf /data/vendor/radio/modem_config
mkdir /data/vendor/radio/modem_config
chmod 770 /data/vendor/radio/modem_config
cp -r /vendor/firmware_mnt/image/modem_pr/mcfg/configs/* /data/vendor/radio/modem_config
chown -hR radio.radio /data/vendor/radio/modem_config
cp /vendor/firmware_mnt/verinfo/ver_info.txt /data/vendor/radio/ver_info.txt
chown radio.radio /data/vendor/radio/ver_info.txt
fi
cp /vendor/firmware_mnt/image/modem_pr/mbn_ota.txt /data/vendor/radio/modem_config
chown radio.radio /data/vendor/radio/modem_config/mbn_ota.txt
echo 1 > /data/vendor/radio/copy_complete
================================================
FILE: rootdir/etc/init.recovery.mata.rc
================================================
# Copyright (c) 2017, The Linux Foundation. All rights reserved.
#
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions are met:
# * Redistributions of source code must retain the above copyright
# notice, this list of conditions and the following disclaimer.
# * Redistributions in binary form must reproduce the above copyright
# notice, this list of conditions and the following disclaimer in the
# documentation and/or other materials provided with the distribution.
# * Neither the name of The Linux Foundation nor
# the names of its contributors may be used to endorse or promote
# products derived from this software without specific prior written
# permission.
#
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
# IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
# NON-INFRINGEMENT ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
# EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
# OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
#
on init
write /sys/class/backlight/panel0-backlight/brightness 200
================================================
FILE: rootdir/etc/ueventd.vendor.rc
================================================
# Copyright (c) 2012-2015, 2017, The Linux Foundation. All rights reserved.
#
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions are met:
# * Redistributions of source code must retain the above copyright
# notice, this list of conditions and the following disclaimer.
# * Redistributions in binary form must reproduce the above copyright
# notice, this list of conditions and the following disclaimer in the
# documentation and/or other materials provided with the distribution.
# * Neither the name of The Linux Foundation nor
# the names of its contributors may be used to endorse or promote
# products derived from this software without specific prior written
# permission.
#
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
# IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
# NON-INFRINGEMENT ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
# EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
# OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
#
firmware_directories /vendor/firmware_mnt/image/
# the DIAG device node is not world writable/readable.
/dev/diag 0660 system oem_2901
/dev/genlock 0666 system system
/dev/wlan 0660 wifi wifi
/dev/kgsl 0666 system system
/dev/kgsl-3d0 0666 system system
/dev/kgsl-2d0 0666 root root
/dev/kgsl-2d1 0666 root root
/dev/ion 0664 system system
/dev/rtc0 0660 system system
/dev/smd0 0660 system system
/dev/smd4 0660 system system
/dev/smd_cxm_qmi 0640 radio radio
/dev/smd5 0660 system system
/dev/smd6 0660 system system
/dev/smd7 0660 bluetooth bluetooth
/dev/ccid_bridge 0660 system system
/dev/ipa 0660 radio radio
/dev/wwan_ioctl 0660 radio radio
/dev/ipaNatTable 0660 radio radio
/dev/rmnet_ctrl 0660 usb usb
/dev/dpl_ctrl 0660 usb usb
#permissions for CSVT
/dev/smd11 0660 radio radio
#permsissions for BT/FM
/dev/smd2 0660 bluetooth bluetooth
/dev/smd3 0660 bluetooth bluetooth
/dev/btpower 0660 bluetooth system
#permissions for pta
/dev/pta 0660 system system
/dev/radio0 0640 system system
/dev/rfcomm0 0660 bluetooth bluetooth
/dev/ttyUSB0 0660 bluetooth bluetooth
/dev/smdcntl0 0640 radio radio
/dev/smdcntl1 0640 radio radio
/dev/smdcntl2 0640 radio radio
/dev/smdcntl3 0640 radio radio
/dev/smdcntl4 0640 radio radio
/dev/smdcntl5 0640 radio radio
/dev/smdcntl6 0640 radio radio
/dev/smdcntl7 0640 radio radio
/dev/smdcntl8 0640 radio radio
/dev/smdcnt_rev0 0640 radio radio
/dev/smdcnt_rev1 0640 radio radio
/dev/smdcnt_rev2 0640 radio radio
/dev/smdcnt_rev3 0640 radio radio
/dev/smdcnt_rev4 0640 radio radio
/dev/smdcnt_rev5 0640 radio radio
/dev/smdcnt_rev6 0640 radio radio
/dev/smdcnt_rev7 0640 radio radio
/dev/smdcnt_rev8 0640 radio radio
/dev/smuxctl32 0640 radio radio
/dev/sdioctl0 0640 radio radio
/dev/sdioctl1 0640 radio radio
/dev/sdioctl2 0640 radio radio
/dev/sdioctl3 0640 radio radio
/dev/sdioctl4 0640 radio radio
/dev/sdioctl5 0640 radio radio
/dev/sdioctl6 0640 radio radio
/dev/sdioctl7 0640 radio radio
/dev/sdioctl8 0640 radio radio
/dev/rmnet_mux_ctrl 0640 radio radio
/dev/hsicctl0 0640 radio radio
/dev/hsicctl1 0640 radio radio
/dev/hsicctl2 0640 radio radio
/dev/hsicctl3 0640 radio radio
/dev/hsicctl4 0640 radio radio
/dev/hsicctl5 0640 radio radio
/dev/hsicctl6 0640 radio radio
/dev/hsicctl7 0640 radio radio
/dev/hsicctl8 0640 radio radio
/dev/hsicctl9 0640 radio radio
/dev/hsicctl10 0640 radio radio
/dev/hsicctl11 0640 radio radio
/dev/hsicctl12 0640 radio radio
/dev/hsicctl13 0640 radio radio
/dev/hsicctl14 0640 radio radio
/dev/hsicctl15 0640 radio radio
/dev/hsicctl16 0640 radio radio
/dev/mhi_pipe_14 0640 radio radio
/dev/mhi_pipe_16 0640 radio radio
/dev/mhi_pipe_32 0640 radio radio
/dev/at_usb0 0640 radio radio
/dev/at_mdm0 0640 radio radio
/dev/video* 0660 system camera
/dev/input/* 0660 system input
/dev/media* 0660 system camera
/dev/v4l-subdev* 0660 system camera
/dev/qseecom 0660 system drmrpc
/dev/smcinvoke 0660 system system
/dev/qsee_ipc_irq_spss 0660 system drmrpc
/dev/seemplog 0660 system system
/dev/pft 0660 system drmrpc
/dev/spcom 0660 system system
/dev/sp_kernel 0660 system system
/dev/sp_ssr 0660 system system
/dev/sp_keymaster 0660 system system
/dev/cryptoapp 0660 system system
/dev/gemini0 0660 system camera
/dev/jpeg0 0660 system camera
/dev/jpeg1 0660 system camera
/dev/jpeg2 0660 system camera
/dev/jpeg3 0660 system camera
/dev/adsprpc-smd 0664 system system
/dev/system_health_monitor 0644 radio system
/dev/mdss_rotator 0664 system system
# wlan
/dev/wcnss_wlan 0660 system system
/dev/wcnss_ctrl 0660 system system
/sys/devices/soc/a000000.qcom,wcnss-wlan/net/wlan0/queues/rx-* rps_cpus 0660 system system
/sys/devices/soc/a000000.qcom,wcnss-wlan/net/p2p0/queues/rx-* rps_cpus 0660 system system
/dev/spidev0.0 0660 system audio
/dev/msm_camera/* 0660 system camera
/dev/gemini/ 0660 system camera
/dev/mercury0 0660 system camera
/dev/msm_vidc_reg 0660 system audio
/dev/msm_vidc_dec 0660 system audio
/dev/msm_vidc_dec_sec 0660 system audio
/dev/msm_vidc_enc 0660 system audio
/dev/msm_rotator 0660 system system
/dev/hw_random 0600 root root
/dev/sdsprpc-smd 0660 system system
#permissions for audio
/dev/wcd_dsp0_control 0660 system audio
/dev/wcd-dsp-glink 0660 system audio
/dev/audio_slimslave 0660 system audio
/dev/msm_qcelp 0660 system audio
/dev/msm_evrc 0660 system audio
/dev/msm_wma 0660 system audio
/dev/msm_wmapro 0660 system audio
/dev/msm_alac 0660 system audio
/dev/msm_ape 0660 system audio
/dev/msm_amrnb 0660 system audio
/dev/msm_amrwb 0660 system audio
/dev/msm_amrwbplus 0660 system audio
/dev/msm_aac 0660 system audio
/dev/msm_multi_aac 0660 system audio
/dev/msm_aac_in 0660 system audio
/dev/msm_qcelp_in 0660 system audio
/dev/msm_evrc_in 0660 system audio
/dev/msm_amrnb_in 0660 system audio
/dev/msm_amrwb_in 0660 system audio
/dev/msm_a2dp_in 0660 system audio
/dev/msm_ac3 0660 system audio
/dev/msm_audio_cal 0660 system audio
/dev/msm_hweffects 0660 system audio
/dev/msm_cad 0660 system audio
/dev/msm_fm 0660 system audio
/dev/msm_mvs 0660 system audio
/dev/msm_pcm_lp_dec 0660 system audio
/dev/msm_preproc_ctl 0660 system audio
/dev/msm_rtac 0660 system audio
/dev/msm_voicememo 0660 system audio
/dev/ttyHSL1 0660 system system
/dev/ttyHS1 0660 system system
/dev/mdm 0660 system radio
/sys/devices/virtual/smdpkt/smdcntl* open_timeout 0664 radio radio
/dev/sdio_tty_ciq_00 0660 system system
/dev/tty_sdio_00 0660 system system
/dev/ttyGS0 0660 system system
/dev/i2c-5 0660 media media
/dev/avtimer 0660 system audio
# DVB devices
/dev/dvb/adapter0/demux* 0440 media media
/dev/dvb/adapter0/dvr* 0660 media media
/dev/dvb/adapter0/video* 0660 media media
# Broadcast devices
/dev/tsc_mux0 0660 media media
/dev/tsc_ci0 0660 media media
# sensors
/sys/devices/i2c-12/12-* pollrate_ms 0664 system system
/sys/devices/f9925000.i2c/i2c-0/0-* enable 0660 input system
/sys/devices/f9925000.i2c/i2c-0/0-* poll_delay 0660 input system
/sys/devices/soc.0/78b6000.i2c/i2c-0/0-* enable 0660 input system
/sys/devices/soc.0/78b6000.i2c/i2c-0/0-* poll_delay 0660 input system
/sys/devices/soc.0/78b6000.i2c/i2c-0/0-* enable_wakeup 0660 input system
/sys/devices/soc.0/78b6000.i2c/i2c-0/0-* max_latency 0660 input system
/sys/devices/soc.0/78b6000.i2c/i2c-0/0-* flush 0660 input system
/sys/devices/soc.0/78b6000.i2c/i2c-0/0-* calibrate 0660 input system
/sys/devices/soc.0/78b5000.i2c/i2c-1/1-* enable 0660 input system
/sys/devices/soc.0/78b5000.i2c/i2c-1/1-* poll_delay 0660 input system
/sys/devices/soc.0/78b5000.i2c/i2c-1/1-* enable_wakeup 0660 input system
/sys/devices/soc.0/78b5000.i2c/i2c-1/1-* max_latency 0660 input system
/sys/devices/soc.0/78b5000.i2c/i2c-1/1-* flush 0660 input system
/sys/devices/soc.0/78b5000.i2c/i2c-1/1-* calibrate 0660 input system
/sys/devices/virtual/optical_sensors/proximity ps_adc 0660 input system
/sys/devices/virtual/optical_sensors/proximity ps_poll_delay 0660 input system
/sys/devices/virtual/optical_sensors/lightsensor ls_auto 0660 input system
/sys/devices/virtual/optical_sensors/lightsensor ls_poll_delay 0660 input system
/sys/devices/virtual/input/input* poll 0660 input system
/sys/devices/virtual/input/input* pollrate_ms 0660 input system
/sys/devices/soc/78b7000.i2c/i2c-3/3-0020/input/input* secure_touch 0440 system drmrpc
/sys/devices/soc/78b7000.i2c/i2c-3/3-0020/input/input* secure_touch_enable 0660 system drmrpc
/sys/devices/soc/78b7000.i2c/i2c-3/3-0038/input/input* secure_touch 0440 system drmrpc
/sys/devices/soc/78b7000.i2c/i2c-3/3-0038/input/input* secure_touch_enable 0660 system drmrpc
/sys/devices/soc/78b7000.i2c/i2c-3/3-004b/input/input* secure_touch 0440 system drmrpc
/sys/devices/soc/78b7000.i2c/i2c-3/3-004b/input/input* secure_touch_enable 0660 system drmrpc
/sys/devices/soc/c179000.i2c/i2c-5/5-0020/input/input* secure_touch 0440 system drmrpc
/sys/devices/soc/c179000.i2c/i2c-5/5-0020/input/input* secure_touch_enable 0660 system drmrpc
# laser sensor access
/sys/devices/virtual/input/input* enable_ps_sensor 0660 system input
/sys/devices/virtual/input/input* set_delay_ms 0660 system input
/sys/devices/virtual/input/input* do_flush 0660 system input
# wlan
/dev/wcnss_wlan 0660 system system
/dev/wcnss_ctrl 0660 system system
/sys/devices/soc/600000.qcom,pcie/pci0000:00/0000:00:00.0/0000:01:00.0/net/wlan0/queues/rx-* rps_cpus 0660 system system
/sys/devices/soc/600000.qcom,pcie/pci0000:00/0000:00:00.0/0000:01:00.0/net/p2p0/queues/rx-* rps_cpus 0660 system system
# wigig
/sys/bus/pci/drivers/wil6210* 0000:01:00.0/wil6210/fst_link_loss 0660 wifi wifi
/sys/bus/pci/drivers/wil6210* 0000:01:00.0/wil6210/thermal_throttling 0660 system system
/sys/bus/pci/drivers/wil6210* 0000:01:00.0/net/wigig0/queues/rx-0/rps_cpus 0660 system system
/sys/bus/pci/drivers/wil6210* 0000:01:00.0/net/wigig0/gro_flush_timeout 0660 system system
/sys/devices/virtual/net/bond0 queues/rx-0/rps_cpus 0660 system system
#nfc permissions
/dev/nfc-nci 0660 nfc nfc
/dev/nq-nci 0660 nfc nfc
/dev/assd 0660 nfc nfc
/dev/cxd224x-i2c 0660 nfc nfc
# UIO devices
/dev/uio0 0660 system system
/dev/uio1 0660 system system
/dev/uio2 0660 system system
# SSR devices
/dev/subsys_* 0640 system system
# Ultrasound device
/dev/usf1 0660 system system
# Ramdump devices
/dev/ramdump* 0640 system system
# Fingerprint device
/dev/qbt1000 0660 system system
#ImproveTouch device
/dev/hbtp_input 0660 system system
/dev/hbtp_vm 0660 system system
# Add device block for FRP
/dev/block/platform/soc/1da4000.ufshc/by-name/frp 0600 system system
/dev/block/platform/soc/1da4000.ufshc/by-name/bspdata 0600 system system
# Kmsg device
/dev/kmsg 0620 root system
# Sidecar
/dev/ttyACM* 0660 system shell
/dev/neko* 0660 system camera
# TOF sensor
/dev/stmvl53l0_ranging 0660 system camera
================================================
FILE: sdllvm-lto-defs.mk
================================================
ifeq ($(LOCAL_MODULE_CLASS), STATIC_LIBRARIES)
# For STATIC_LIBRARIES we need to use SD LLVM's archiver and archiver flags.
AR := $(SDCLANG_PATH)/llvm-ar
ifeq ($(LOCAL_SDCLANG_2),true)
AR := $(SDCLANG_PATH_2)/llvm-ar
endif
ARFLAGS := crsD
# For 32 bit
$(LOCAL_BUILT_MODULE) : $(combo_2nd_arch_prefix)TARGET_AR := $(AR)
$(LOCAL_BUILT_MODULE) : $(combo_var_prefix)GLOBAL_ARFLAGS := $(ARFLAGS)
# For 64 bit
intermediates := $(call local-intermediates-dir,,$(LOCAL_2ND_ARCH_VAR_PREFIX))
LOCAL_BUILT_MODULE_64 := $(intermediates)/$(my_installed_module_stem)
$(LOCAL_BUILT_MODULE_64) : TARGET_AR := $(AR)
$(LOCAL_BUILT_MODULE_64) : TARGET_GLOBAL_ARFLAGS := $(ARFLAGS)
else
# For SHARED_LIBRARIES and EXECUTABLES we need to filter out flags not
# needed/understood by SD LLVM's Linker.
FLAGS_TO_BE_FILTERED := -Wl,--icf=safe -Wl,--no-undefined-version -Wl,--fix-cortex-a53-843419 -fuse-ld=gold
linked_module_32 := $(intermediates)/LINKED/$(my_installed_module_stem)
intermediates := $(call local-intermediates-dir,,$(LOCAL_2ND_ARCH_VAR_PREFIX))
linked_module_64 := $(intermediates)/LINKED/$(my_installed_module_stem)
$(linked_module_32) : PRIVATE_TARGET_GLOBAL_LDFLAGS := $(filter-out $(FLAGS_TO_BE_FILTERED),$(PRIVATE_TARGET_GLOBAL_LDFLAGS))
$(linked_module_64) : PRIVATE_TARGET_GLOBAL_LDFLAGS := $(filter-out $(FLAGS_TO_BE_FILTERED),$(PRIVATE_TARGET_GLOBAL_LDFLAGS))
endif
================================================
FILE: sec_config
================================================
/* IPC Security Config */
/* :: */
16:4294967295:1000:1021
/* :: */
56:4294967295:1021
/* Allow SS CTL service to be used by system and net_raw processes */
43:4294967295:1000:3004
/* :: */
71:4294967295:1001
/* :: */
50:4294967295:1001
/* QMI-SLIM service permitted to gps and net_raw */
55:4294967295:1021
/* Allow Sensor services to be used by sensor process */
256:4294967295:1000:1006:1013:1021:1047
257:4294967295:1000:1006:1013:1021:1047
258:4294967295:1000:1006:1013:1021:1047
259:4294967295:1000:1006:1013:1021:1047
260:4294967295:1000:1006:1013:1021:1047
261:4294967295:1000:1006:1013:1021:1047
262:4294967295:1000:1006:1013:1021:1047
263:4294967295:1000:1006:1013:1021:1047
264:4294967295:1000:1006:1013:1021:1047
265:4294967295:1000:1006:1013:1021:1047
266:4294967295:1000:1006:1013:1021:1047
267:4294967295:1000:1006:1013:1021:1047
268:4294967295:1000:1006:1013:1021:1047
269:4294967295:1000:1006:1013:1021:1047
270:4294967295:1000:1006:1013:1021:1047
271:4294967295:1000:1006:1013:1021:1047
272:4294967295:1000:1006:1013:1021:1047
273:4294967295:1000:1006:1013:1021:1047
274:4294967295:1000:1006:1013:1021:1047
275:4294967295:1000:1006:1013:1021:1047
276:4294967295:1000:1006:1013:1021:1047
277:4294967295:1000:1006:1013:1021:1047
278:4294967295:1000:1006:1013:1021:1047
279:4294967295:1000:1006:1013:1021:1047
280:4294967295:1000:1006:1013:1021:1047
281:4294967295:1000:1006:1013:1021:1047
282:4294967295:1000:1006:1013:1021:1047
283:4294967295:1000:1006:1013:1021:1047
284:4294967295:1000:1006:1013:1021:1047
285:4294967295:1000:1006:1013:1021:1047
286:4294967295:1000:1006:1013:1021:1047
287:4294967295:1000:1006:1013:1021:1047
288:4294967295:1000:1006:1013:1021:1047
289:4294967295:1000:1006:1013:1021:1047
290:4294967295:1000:1006:1013:1021:1047
291:4294967295:1000:1006:1013:1021:1047
292:4294967295:1000:1006:1013:1021:1047
293:4294967295:1000:1006:1013:1021:1047
294:4294967295:1000:1006:1013:1021:1047
295:4294967295:1000:1006:1013:1021:1047
296:4294967295:1000:1006:1013:1021:1047
297:4294967295:1000:1006:1013:1021:1047
298:4294967295:1000:1006:1013:1021:1047
299:4294967295:1000:1006:1013:1021:1047
300:4294967295:1000:1006:1013:1021:1047
301:4294967295:1000:1006:1013:1021:1047
302:4294967295:1000:1006:1013:1021:1047
303:4294967295:1000:1006:1013:1021:1047
304:4294967295:1000:1006:1013:1021:1047
305:4294967295:1000:1006:1013:1021:1047
306:4294967295:1000:1006:1013:1021:1047
307:4294967295:1000:1006:1013:1021:1047
308:4294967295:1000:1006:1013:1021:1047
309:4294967295:1000:1006:1013:1021:1047
310:4294967295:1000:1006:1013:1021:1047
311:4294967295:1000:1006:1013:1021:1047
312:4294967295:1000:1006:1013:1021:1047
313:4294967295:1000:1006:1013:1021:1047
314:4294967295:1000:1006:1013:1021:1047
315:4294967295:1000:1006:1013:1021:1047
316:4294967295:1000:1006:1013:1021:1047
317:4294967295:1000:1006:1013:1021:1047
318:4294967295:1000:1006:1013:1021:1047
319:4294967295:1000:1006:1013:1021:1047
320:4294967295:1000:1006:1013:1021:1047
321:4294967295:1000:1006:1013:1021:1047
322:4294967295:1000:1006:1013:1021:1047
323:4294967295:1000:1006:1013:1021:1047
324:4294967295:1000:1006:1013:1021:1047
325:4294967295:1000:1006:1013:1021:1047
326:4294967295:1000:1006:1013:1021:1047
327:4294967295:1000:1006:1013:1021:1047
328:4294967295:1000:1006:1013:1021:1047
329:4294967295:1000:1006:1013:1021:1047
330:4294967295:1000:1006:1013:1021:1047
331:4294967295:1000:1006:1013:1021:1047
332:4294967295:1000:1006:1013:1021:1047
333:4294967295:1000:1006:1013:1021:1047
334:4294967295:1000:1006:1013:1021:1047
335:4294967295:1000:1006:1013:1021:1047
336:4294967295:1000:1006:1013:1021:1047
337:4294967295:1000:1006:1013:1021:1047
338:4294967295:1000:1006:1013:1021:1047
339:4294967295:1000:1006:1013:1021:1047
340:4294967295:1000:1006:1013:1021:1047
341:4294967295:1000:1006:1013:1021:1047
342:4294967295:1000:1006:1013:1021:1047
343:4294967295:1000:1006:1013:1021:1047
344:4294967295:1000:1006:1013:1021:1047
345:4294967295:1000:1006:1013:1021:1047
346:4294967295:1000:1006:1013:1021:1047
347:4294967295:1000:1006:1013:1021:1047
348:4294967295:1000:1006:1013:1021:1047
349:4294967295:1000:1006:1013:1021:1047
350:4294967295:1000:1006:1013:1021:1047
351:4294967295:1000:1006:1013:1021:1047
352:4294967295:1000:1006:1013:1021:1047
353:4294967295:1000:1006:1013:1021:1047
354:4294967295:1000:1006:1013:1021:1047
355:4294967295:1000:1006:1013:1021:1047
356:4294967295:1000:1006:1013:1021:1047
357:4294967295:1000:1006:1013:1021:1047
358:4294967295:1000:1006:1013:1021:1047
359:4294967295:1000:1006:1013:1021:1047
360:4294967295:1000:1006:1013:1021:1047
361:4294967295:1000:1006:1013:1021:1047
362:4294967295:1000:1006:1013:1021:1047
363:4294967295:1000:1006:1013:1021:1047
364:4294967295:1000:1006:1013:1021:1047
365:4294967295:1000:1006:1013:1021:1047
366:4294967295:1000:1006:1013:1021:1047
367:4294967295:1000:1006:1013:1021:1047
368:4294967295:1000:1006:1013:1021:1047
369:4294967295:1000:1006:1013:1021:1047
370:4294967295:1000:1006:1013:1021:1047
371:4294967295:1000:1006:1013:1021:1047
372:4294967295:1000:1006:1013:1021:1047
373:4294967295:1000:1006:1013:1021:1047
374:4294967295:1000:1006:1013:1021:1047
375:4294967295:1000:1006:1013:1021:1047
376:4294967295:1000:1006:1013:1021:1047
377:4294967295:1000:1006:1013:1021:1047
378:4294967295:1000:1006:1013:1021:1047
379:4294967295:1000:1006:1013:1021:1047
380:4294967295:1000:1006:1013:1021:1047
381:4294967295:1000:1006:1013:1021:1047
382:4294967295:1000:1006:1013:1021:1047
383:4294967295:1000:1006:1013:1021:1047
384:4294967295:1000:1006:1013:1021:1047
385:4294967295:1000:1006:1013:1021:1047
386:4294967295:1000:1006:1013:1021:1047
387:4294967295:1000:1006:1013:1021:1047
388:4294967295:1000:1006:1013:1021:1047
389:4294967295:1000:1006:1013:1021:1047
390:4294967295:1000:1006:1013:1021:1047
391:4294967295:1000:1006:1013:1021:1047
392:4294967295:1000:1006:1013:1021:1047
393:4294967295:1000:1006:1013:1021:1047
394:4294967295:1000:1006:1013:1021:1047
395:4294967295:1000:1006:1013:1021:1047
396:4294967295:1000:1006:1013:1021:1047
397:4294967295:1000:1006:1013:1021:1047
398:4294967295:1000:1006:1013:1021:1047
399:4294967295:1000:1006:1013:1021:1047
400:4294967295:1000:1006:1013:1021:1047
401:4294967295:1000:1006:1013:1021:1047
402:4294967295:1000:1006:1013:1021:1047
403:4294967295:1000:1006:1013:1021:1047
404:4294967295:1000:1006:1013:1021:1047
405:4294967295:1000:1006:1013:1021:1047
406:4294967295:1000:1006:1013:1021:1047
407:4294967295:1000:1006:1013:1021:1047
408:4294967295:1000:1006:1013:1021:1047
409:4294967295:1000:1006:1013:1021:1047
410:4294967295:1000:1006:1013:1021:1047
411:4294967295:1000:1006:1013:1021:1047
412:4294967295:1000:1006:1013:1021:1047
413:4294967295:1000:1006:1013:1021:1047
414:4294967295:1000:1006:1013:1021:1047
415:4294967295:1000:1006:1013:1021:1047
416:4294967295:1000:1006:1013:1021:1047
417:4294967295:1000:1006:1013:1021:1047
418:4294967295:1000:1006:1013:1021:1047
419:4294967295:1000:1006:1013:1021:1047
420:4294967295:1000:1006:1013:1021:1047
421:4294967295:1000:1006:1013:1021:1047
422:4294967295:1000:1006:1013:1021:1047
423:4294967295:1000:1006:1013:1021:1047
424:4294967295:1000:1006:1013:1021:1047
425:4294967295:1000:1006:1013:1021:1047
426:4294967295:1000:1006:1013:1021:1047
427:4294967295:1000:1006:1013:1021:1047
428:4294967295:1000:1006:1013:1021:1047
429:4294967295:1000:1006:1013:1021:1047
430:4294967295:1000:1006:1013:1021:1047
431:4294967295:1000:1006:1013:1021:1047
432:4294967295:1000:1006:1013:1021:1047
433:4294967295:1000:1006:1013:1021:1047
434:4294967295:1000:1006:1013:1021:1047
435:4294967295:1000:1006:1013:1021:1047
436:4294967295:1000:1006:1013:1021:1047
437:4294967295:1000:1006:1013:1021:1047
438:4294967295:1000:1006:1013:1021:1047
439:4294967295:1000:1006:1013:1021:1047
440:4294967295:1000:1006:1013:1021:1047
441:4294967295:1000:1006:1013:1021:1047
442:4294967295:1000:1006:1013:1021:1047
443:4294967295:1000:1006:1013:1021:1047
444:4294967295:1000:1006:1013:1021:1047
445:4294967295:1000:1006:1013:1021:1047
446:4294967295:1000:1006:1013:1021:1047
447:4294967295:1000:1006:1013:1021:1047
448:4294967295:1000:1006:1013:1021:1047
449:4294967295:1000:1006:1013:1021:1047
450:4294967295:1000:1006:1013:1021:1047
451:4294967295:1000:1006:1013:1021:1047
452:4294967295:1000:1006:1013:1021:1047
453:4294967295:1000:1006:1013:1021:1047
454:4294967295:1000:1006:1013:1021:1047
455:4294967295:1000:1006:1013:1021:1047
456:4294967295:1000:1006:1013:1021:1047
457:4294967295:1000:1006:1013:1021:1047
458:4294967295:1000:1006:1013:1021:1047
459:4294967295:1000:1006:1013:1021:1047
460:4294967295:1000:1006:1013:1021:1047
461:4294967295:1000:1006:1013:1021:1047
462:4294967295:1000:1006:1013:1021:1047
463:4294967295:1000:1006:1013:1021:1047
464:4294967295:1000:1006:1013:1021:1047
465:4294967295:1000:1006:1013:1021:1047
466:4294967295:1000:1006:1013:1021:1047
467:4294967295:1000:1006:1013:1021:1047
468:4294967295:1000:1006:1013:1021:1047
469:4294967295:1000:1006:1013:1021:1047
470:4294967295:1000:1006:1013:1021:1047
471:4294967295:1000:1006:1013:1021:1047
472:4294967295:1000:1006:1013:1021:1047
473:4294967295:1000:1006:1013:1021:1047
474:4294967295:1000:1006:1013:1021:1047
475:4294967295:1000:1006:1013:1021:1047
476:4294967295:1000:1006:1013:1021:1047
477:4294967295:1000:1006:1013:1021:1047
478:4294967295:1000:1006:1013:1021:1047
479:4294967295:1000:1006:1013:1021:1047
480:4294967295:1000:1006:1013:1021:1047
481:4294967295:1000:1006:1013:1021:1047
482:4294967295:1000:1006:1013:1021:1047
483:4294967295:1000:1006:1013:1021:1047
484:4294967295:1000:1006:1013:1021:1047
485:4294967295:1000:1006:1013:1021:1047
486:4294967295:1000:1006:1013:1021:1047
487:4294967295:1000:1006:1013:1021:1047
488:4294967295:1000:1006:1013:1021:1047
489:4294967295:1000:1006:1013:1021:1047
490:4294967295:1000:1006:1013:1021:1047
491:4294967295:1000:1006:1013:1021:1047
492:4294967295:1000:1006:1013:1021:1047
493:4294967295:1000:1006:1013:1021:1047
494:4294967295:1000:1006:1013:1021:1047
495:4294967295:1000:1006:1013:1021:1047
496:4294967295:1000:1006:1013:1021:1047
497:4294967295:1000:1006:1013:1021:1047
498:4294967295:1000:1006:1013:1021:1047
499:4294967295:1000:1006:1013:1021:1047
500:4294967295:1000:1006:1013:1021:1047
501:4294967295:1000:1006:1013:1021:1047
502:4294967295:1000:1006:1013:1021:1047
503:4294967295:1000:1006:1013:1021:1047
504:4294967295:1000:1006:1013:1021:1047
505:4294967295:1000:1006:1013:1021:1047
506:4294967295:1000:1006:1013:1021:1047
507:4294967295:1000:1006:1013:1021:1047
508:4294967295:1000:1006:1013:1021:1047
509:4294967295:1000:1006:1013:1021:1047
510:4294967295:1000:1006:1013:1021:1047
511:4294967295:1000:1006:1013:1021:1047
/* Allow RCS service to aquire net_raw permission */
18:4294967295:1001:3004
/* Allow QMID service to aquire net_raw permission */
3:4294967295:1001:1021:3004
2:4294967295:1000:1001:3004
42:4294967295:1001:3004
18:4294967295:1001:3004
9:4294967295:1001:3004
1:4294967295:1001:3004:1000
4:4294967295:1001:3004
7:4294967295:1001:3004
8:4294967295:1001:3004:1000
68:4294967295:1001:3004
/* DPM */
47:4294967295:1001:3004
/* Allow communication to some QMI services with radio privilages */
/* Format is :: */
/* PBM */
12:4294967295:1001
/* WMS */
5:4294967295:1001
/* IMS VT */
32:4294967295:1001
/* IMSP */
31:4294967295:1001
/* PDC */
36:4294967295:1001
/* SAR */
17:4294967295:1001
/* RFRPE */
41:4294967295:1001
/*UIM*/
11:4294967295:1001
/*CAT*/
10:4294967295:1001
/*IMSA*/
33:4294967295:1001
/* CSVT */
29:4294967295:1001
/*SERVREG_NOTIF*/
64:4294967295:1001
66:4294967295:1001
/*LTE*/
70:4294967295:1001
/* Allow Data dpmd to access QMI DFS */
48:4294967295:1000:3004
/* DIAG */
4097:4294967295:2002:2950:3009:2901
/* :: */
69:4294967295:1000
/* :: */
57:4294967295:1000
/* */
238:4294967295:1001:3004
================================================
FILE: seccomp/mediacodec-seccomp.policy
================================================
# device specific syscalls
# extension of services/mediacodec/minijail/seccomp_policy/mediacodec-seccomp-arm.policy
pselect6: 1
eventfd2: 1
sendto: 1
recvfrom: 1
_llseek: 1
sysinfo: 1
getcwd: 1
getdents64: 1
inotify_init1: 1
inotify_add_watch: 1
================================================
FILE: seccomp/mediaextractor-seccomp.policy
================================================
# device specific syscalls.
# extension of services/mediaextractor/minijail/seccomp_policy/mediaextractor-seccomp-arm.policy
readlinkat: 1
pread64: 1
================================================
FILE: sensors/hals.conf
================================================
sensors.mata.so
sensors.hal.tof.so
================================================
FILE: sepolicy/private/app_zygote.te
================================================
allow app_zygote app_data_file:dir r_dir_perms;
================================================
FILE: sepolicy/private/dataservice_app.te
================================================
typeattribute dataservice_app coredomain;
app_domain(dataservice_app)
net_domain(dataservice_app)
add_service(dataservice_app, cne_service)
add_service(dataservice_app, uce_service)
allow dataservice_app {
app_api_service
system_api_service
audioserver_service
radio_service
}:service_manager find;
allow dataservice_app hal_imsrcsd_hwservice:hwservice_manager find;
allow dataservice_app hal_cne_hwservice:hwservice_manager find;
allow dataservice_app system_app_data_file:dir create_dir_perms;
allow dataservice_app system_app_data_file:{ file lnk_file } create_file_perms;
hwbinder_use(dataservice_app)
================================================
FILE: sepolicy/private/device.te
================================================
type ramoops_device, dev_type;
================================================
FILE: sepolicy/private/file_contexts
================================================
/system/bin/folio_daemon u:object_r:folio_daemon_exec:s0
/data/misc/elabel(/.*)? u:object_r:elabel_data_file:s0
/system/bin/init\.elabel\.sh u:object_r:init_elabel_exec:s0
/system/bin/ramoops u:object_r:ramoops_exec:s0
/system/bin/init\.ramoops\.sh u:object_r:ramoops_exec:s0
/dev/access-metadata u:object_r:ramoops_device:s0
/dev/access-ramoops u:object_r:ramoops_device:s0
/data/misc_ce/[0-9]+/ramoops(/.*)? u:object_r:ramoops_data_file:s0
/system/rfs.* u:object_r:rfs_system_file:s0
/dev/cxd224x-i2c u:object_r:nfc_device:s0
/data/misc/pstore(/.*)? u:object_r:pstore_backup_file:s0
/system/bin/fastboot_target u:object_r:shell_exec:s0
/system/bin/wfdservice u:object_r:wfdservice_exec:s0
================================================
FILE: sepolicy/private/folio_daemon.te
================================================
type folio_daemon, domain, coredomain;
type folio_daemon_exec, exec_type, file_type, system_file_type;
init_daemon_domain(folio_daemon)
allow folio_daemon binder_device:chr_file rw_file_perms;
allow folio_daemon uhid_device:chr_file rw_file_perms;
allow folio_daemon system_server:unix_stream_socket rw_socket_perms_no_ioctl;
binder_use(folio_daemon)
binder_call(folio_daemon, system_server)
allow folio_daemon sensorservice_service:service_manager find;
allow folio_daemon permission_service:service_manager find;
================================================
FILE: sepolicy/private/genfs_contexts
================================================
genfscon sysfs /devices/virtual/ramoops/pstore/aes_key u:object_r:sysfs_pstore:s0
genfscon sysfs /devices/virtual/ramoops/pstore/aes_key_iv u:object_r:sysfs_pstore:s0
genfscon sysfs /devices/virtual/ramoops/pstore/aes_key_tag u:object_r:sysfs_pstore:s0
genfscon sysfs /devices/virtual/ramoops/pstore/use_alt u:object_r:sysfs_pstore:s0
================================================
FILE: sepolicy/private/init_elabel.te
================================================
# /system/bin/init.elabel.sh
#
# write data from /persist/elabel to /data/misc/elabel for use by
# settings app
#
init_daemon_domain(init_elabel)
allow init_elabel shell_exec:file rx_file_perms;
allow init_elabel toolbox_exec:file rx_file_perms;
================================================
FILE: sepolicy/private/migrate_legacy_obb_data.te
================================================
allow migrate_legacy_obb_data storage_file:dir r_dir_perms;
allow migrate_legacy_obb_data storage_file:lnk_file r_file_perms;
allow migrate_legacy_obb_data mnt_user_file:dir r_dir_perms;
allow migrate_legacy_obb_data mnt_user_file:lnk_file r_file_perms;
allow migrate_legacy_obb_data sdcardfs:dir rw_dir_perms;
allow migrate_legacy_obb_data sdcardfs:lnk_file r_file_perms;
================================================
FILE: sepolicy/private/priv_app.te
================================================
dontaudit priv_app device:dir read;
dontaudit priv_app proc_interrupts:file read;
dontaudit priv_app proc_modules:file read;
allow priv_app vr_manager_service:service_manager find;
allow priv_app rs_exec:file { execute execute_no_trans open read };
================================================
FILE: sepolicy/private/property.te
================================================
type ramoops_prop, property_type;
================================================
FILE: sepolicy/private/property_contexts
================================================
sys.ramoops. u:object_r:ramoops_prop:s0
================================================
FILE: sepolicy/private/radio.te
================================================
allow radio uce_service:service_manager find;
================================================
FILE: sepolicy/private/ramoops.te
================================================
type ramoops, domain, coredomain;
type ramoops_data_file, file_type, core_data_file_type, data_file_type;
type ramoops_exec, exec_type, file_type, system_file_type;
init_daemon_domain(ramoops);
# kmod=crypto-gcm(aes)
dontaudit ramoops kernel:system module_request;
allow ramoops ramoops_exec:file rx_file_perms;
allow ramoops shell_exec:file rx_file_perms;
allow ramoops toolbox_exec:file rx_file_perms;
# Set the sys.ramoops.decrypted property
set_prop(ramoops, ramoops_prop);
allow ramoops sysfs_pstore:file rw_file_perms;
allow ramoops ramoops_device:chr_file rw_file_perms;
================================================
FILE: sepolicy/private/seapp_contexts
================================================
#Add new domain for DataServices
#TODO Remove user "system" when b/38043081 is resolved
user=system seinfo=platform name=.dataservices domain=dataservice_app type=system_app_data_file
================================================
FILE: sepolicy/private/service.te
================================================
type cne_service, service_manager_type;
type wfdservice_service, service_manager_type;
================================================
FILE: sepolicy/private/service_contexts
================================================
qti.ims.ext u:object_r:radio_service:s0
cneservice u:object_r:cne_service:s0
uce u:object_r:uce_service:s0
rcs u:object_r:radio_service:s0
wfdservice u:object_r:wfdservice_service:s0
================================================
FILE: sepolicy/private/system_server.te
================================================
binder_call(system_server, folio_daemon)
================================================
FILE: sepolicy/private/system_suspend.te
================================================
allow system_suspend dumpstate:fd use;
allow system_suspend dumpstate:fifo_file write;
================================================
FILE: sepolicy/private/untrusted_app_all.te
================================================
# suppress spurious denials
dontaudit untrusted_app_all sysfs_zram:dir search;
================================================
FILE: sepolicy/private/wfdservice.te
================================================
# Copyright (c) 2017, The Linux Foundation. All rights reserved.
#
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions are
# met:
# * Redistributions of source code must retain the above copyright
# notice, this list of conditions and the following disclaimer.
# * Redistributions in binary form must reproduce the above
# copyright notice, this list of conditions and the following
# disclaimer in the documentation and/or other materials provided
# with the distribution.
# * Neither the name of The Linux Foundation nor the names of its
# contributors may be used to endorse or promote products derived
# from this software without specific prior written permission.
#
# THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED
# WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT
# ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS
# BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
# BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
# OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
# IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
type wfdservice, domain;
type wfdservice_exec, exec_type, file_type, system_file_type;
typeattribute wfdservice coredomain;
#Allow for transition from init domain to wfdservice
init_daemon_domain(wfdservice)
#Inherit base socket permissions from netd domain
net_domain(wfdservice)
#Allow wfdservice to use Binder IPC
binder_use(wfdservice)
#Allow for interaction with Display HAL
binder_call(wfdservice, surfaceflinger)
binder_call(surfaceflinger, wfdservice)
#Allow apps to interact with wfdservice
binder_call(wfdservice, platform_app)
binder_call(platform_app, wfdservice)
binder_call(wfdservice, system_app)
binder_call(system_app, wfdservice)
#Allow access to Audio Flinger APIs
binder_call(wfdservice, audioserver)
#Allow access to Permission Controller in System Server
binder_call(wfdservice, system_server)
# Mark wfdservice as a Binder service domain
binder_service(wfdservice)
#Allow wfdservice to be registered with service manager
allow wfdservice wfdservice_service:service_manager add;
#Allow access to PCM sound card
allow wfdservice audio_device:chr_file rw_file_perms;
allow wfdservice audio_device:dir r_dir_perms;
#Allow access to /dev/graphics/fb* for screen capture
allow wfdservice graphics_device:chr_file rw_file_perms;
#Allow access to encoder for YUV statistics
allow wfdservice gpu_device:chr_file rw_file_perms;
#Allow communication with init over property server
unix_socket_connect(wfdservice, property, init);
#Allow access to /dev/video/* devices for encoding/decoding
allow wfdservice video_device:chr_file rw_file_perms;
allow wfdservice video_device:dir r_dir_perms;
#Allow access to tee device for HDCP sessions
#Allow access to uhid driver for HID event injection
allow wfdservice uhid_device:chr_file rw_file_perms;
#Allow PROT_EXEC for 3rd party library loaded by wfdservice
allow wfdservice self:process execmem;
userdebug_or_eng(`
#Allow access to read mmosal_logmask file in /data partition
allow wfdservice system_data_file:file r_file_perms;
#Allow access to dump encoder/decoder dumps in /data/misc/media
allow wfdservice media_data_file:dir w_dir_perms;
allow wfdservice media_data_file:file create_file_perms;
')
#Allow access to /data/media for dumping
allow wfdservice media_rw_data_file:dir create_dir_perms;
allow wfdservice media_rw_data_file:file create_file_perms;
allow wfdservice self:netlink_kobject_uevent_socket create_socket_perms_no_ioctl;
# Allow access to input_device for touch input detection
allow wfdservice input_device:dir r_dir_perms;
allow wfdservice input_device:chr_file r_file_perms;
# Allow access to mediaserver, surfaceflinger and permissionmanager
# for interaction of wfdservice
allow wfdservice {audioserver_service permission_service surfaceflinger_service wfdservice_service}: service_manager find;
#Allow setting of net_admin capability so that libnl API's can be used
allow wfdservice self:capability net_admin;
#Allow wfdservice to query interface name of network (p2p etc.)
allow wfdservice self:netlink_socket create_socket_perms_no_ioctl;
#Allow ion device access
allow wfdservice ion_device:chr_file r_file_perms;
#Allow udp socket ioctl
allow wfdservice self:udp_socket ioctl;
# ioctlcmd=8bff
allowxperm wfdservice self:udp_socket ioctl priv_sock_ioctls;
#Allow access to proc/net/arp
allow wfdservice proc_net:file r_file_perms;
#Allow hardware binder use
hwbinder_use(wfdservice)
get_prop(wfdservice, hwservicemanager_prop)
#Allow hal graphics mapper permissions
hal_client_domain(wfdservice, hal_graphics_composer);
#Allow hal graphics allocator permissions
hal_client_domain(wfdservice, hal_graphics_allocator);
================================================
FILE: sepolicy/public/dataservice_app.te
================================================
type dataservice_app, domain;
================================================
FILE: sepolicy/public/file.te
================================================
type elabel_data_file, file_type, core_data_file_type, data_file_type;
type sysfs_pstore, sysfs_type, fs_type;
================================================
FILE: sepolicy/public/hwservice.te
================================================
type hal_cne_hwservice, hwservice_manager_type;
type hal_imsrcsd_hwservice, hwservice_manager_type;
================================================
FILE: sepolicy/public/init_elabel.te
================================================
# /system/bin/init.elabel.sh
#
# write data from /persist/elabel to /data/misc/elabel for use by
# settings app
#
type init_elabel, domain, coredomain;
type init_elabel_exec, exec_type, file_type, system_file_type;
================================================
FILE: sepolicy/vendor/adsprpcd.te
================================================
type adsprpcd, domain;
type adsprpcd_exec, exec_type, vendor_file_type, file_type;
init_daemon_domain(adsprpcd)
allow adsprpcd ion_device:chr_file r_file_perms;
allow adsprpcd qdsp_device:chr_file r_file_perms;
# For search/read fluence libs
allow adsprpcd adsprpcd_file:dir { getattr search };
allow adsprpcd adsprpcd_file:dir read;
allow adsprpcd adsprpcd_file:file { getattr open read };
allow adsprpcd_file self:filesystem associate;
allow adsprpcd mnt_vendor_file:dir r_dir_perms;
================================================
FILE: sepolicy/vendor/app.te
================================================
# For the camera app
get_prop(appdomain, camera_prop)
================================================
FILE: sepolicy/vendor/atfwd.te
================================================
type atfwd, domain;
type atfwd_exec, exec_type, vendor_file_type, file_type;
init_daemon_domain(atfwd)
hwbinder_use(atfwd)
get_prop(atfwd, hwservicemanager_prop)
allow atfwd vnd_atcmdfwd_hwservice:hwservice_manager find;
binder_call(atfwd, qtelephony);
allow atfwd self:socket create_socket_perms;
allowxperm atfwd self:socket ioctl msm_sock_ipc_ioctls;
r_dir_file(atfwd, sysfs_type)
set_prop(atfwd, radio_prop)
================================================
FILE: sepolicy/vendor/attributes
================================================
attribute hal_hbtp;
attribute hal_hbtp_client;
attribute hal_hbtp_server;
attribute hal_sidecar_essential;
attribute hal_sidecar_essential_client;
attribute hal_sidecar_essential_server;
attribute wifidisplayhalservice;
attribute wifidisplayhalservice_client;
attribute wifidisplayhalservice_server;
================================================
FILE: sepolicy/vendor/audioserver.te
================================================
binder_call(audioserver, bootanim)
allow audioserver perfd_socket:sock_file write;
allow audioserver sysfs_soc:file r_file_perms;
allow audioserver sysfs_soc:dir search;
================================================
FILE: sepolicy/vendor/bluetooth.te
================================================
set_prop(bluetooth, wc_prop)
# Allow access to net_admin ioctls
allowxperm bluetooth self:udp_socket ioctl priv_sock_ioctls;
================================================
FILE: sepolicy/vendor/bootanim.te
================================================
allow bootanim hwservicemanager:binder call;
# TODO(b/62954877). On Android Wear, bootanim reads the time
# during boot to display. It currently gets that time from a file
# in /data/system. This should be moved. In the meantime, suppress
# this denial since this functionality is not used.
dontaudit bootanim system_data_file:dir read;
================================================
FILE: sepolicy/vendor/btaddr_extract.te
================================================
#Copyright (c) 2016, The Linux Foundation. All rights reserved.
#
#Redistribution and use in source and binary forms, with or without
#modification, are permitted provided that the following conditions are
#met:
# * Redistributions of source code must retain the above copyright
# notice, this list of conditions and the following disclaimer.
# * Redistributions in binary form must reproduce the above
# copyright notice, this list of conditions and the following
# disclaimer in the documentation and/or other materials provided
# with the distribution.
# * Neither the name of The Linux Foundation nor the names of its
# contributors may be used to endorse or promote products derived
# from this software without specific prior written permission.
#
#THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED
#WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
#MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT
#ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS
#BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
#CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
#SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
#BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
#WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
#OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
#IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
type btaddr_extract, domain;
type btaddr_extract_exec, exec_type, vendor_file_type, file_type;
# Started by init
init_daemon_domain(btaddr_extract)
allow btaddr_extract persist_bluetooth_file:dir search;
allow btaddr_extract persist_bluetooth_file:file { read open };
allow btaddr_extract persist_file:dir search;
allow btaddr_extract persist_file:lnk_file read;
allow btaddr_extract mnt_vendor_file:dir search;
set_prop(btaddr_extract, bluetooth_prop)
================================================
FILE: sepolicy/vendor/cameraserver.te
================================================
allow cameraserver gpu_device:chr_file rw_file_perms;
set_prop(cameraserver, camera_prop)
allow cameraserver sysfs_camera:file r_file_perms;
allow cameraserver sysfs_camera:dir search;
allow cameraserver system_server:unix_stream_socket { read write };
# TODO (b/37688918) Verify that this is actually needed and not a violation of treble
binder_call(cameraserver, mediacodec)
================================================
FILE: sepolicy/vendor/certs/Essential-platform.x509.pem
================================================
-----BEGIN CERTIFICATE-----
MIIEBTCCAu2gAwIBAgIJAOWYOpC2UIfXMA0GCSqGSIb3DQEBBQUAMIGYMQswCQYD
VQQGEwJVUzETMBEGA1UECAwKQ2FsaWZvcm5pYTESMBAGA1UEBwwJUGFsbyBBbHRv
MRIwEAYDVQQKDAlFc3NlbnRpYWwxEjAQBgNVBAsMCUVzc2VudGlhbDESMBAGA1UE
AwwJRXNzZW50aWFsMSQwIgYJKoZIhvcNAQkBFhVhbmRyb2lkQGVzc2VudGlhbC5j
b20wHhcNMTcwNjA4MDgyMjQ4WhcNNDQxMDI0MDgyMjQ4WjCBmDELMAkGA1UEBhMC
VVMxEzARBgNVBAgMCkNhbGlmb3JuaWExEjAQBgNVBAcMCVBhbG8gQWx0bzESMBAG
A1UECgwJRXNzZW50aWFsMRIwEAYDVQQLDAlFc3NlbnRpYWwxEjAQBgNVBAMMCUVz
c2VudGlhbDEkMCIGCSqGSIb3DQEJARYVYW5kcm9pZEBlc3NlbnRpYWwuY29tMIIB
IjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAoOl+ZjMSq48FG9bJKtV8OP4+
Sryp+oaIYgwY89s3sAd2h8kQoPvi4v+rBHzsMN95IJAjfhPLPHS8GIu50NtcDqVo
qYi3wtwQgC+BChk/Lr57yl3Ur8SY56IzqP/Ar6c7fH1Gb6YjsOPTZ5MyMK33U0dH
nfqJg+iUJIJxFiNHxI+CuIUqVvNt2rejVcRPWGxP9tA/p19rEXQh8AmWHiwdKgpw
ikjVMdhWYkpL0GF7rDKO08DLlZ58mf4vgSdeV6Ek0T4Lu1OWps+WDDSSS+JU+8FH
pBWqVVFaGZT1jBwFrAkpf9jkHqZWpoCdRe70Dm2yf+ott/7pt97IRAI89yOADQID
AQABo1AwTjAdBgNVHQ4EFgQUvymQxq23gHAlOV/gsJHuyv0/RcwwHwYDVR0jBBgw
FoAUvymQxq23gHAlOV/gsJHuyv0/RcwwDAYDVR0TBAUwAwEB/zANBgkqhkiG9w0B
AQUFAAOCAQEAO0lDpRmy8DDkEIx7hiPi0j4Jb36a+GcO0BNLF22i2MmZclwPyy3J
DJdXXtK8Ccm8QjvXuayzCgi7S+69YHdj6sXASVvg/ZobC1Kj5s5nrdNcFRz40ZM3
yqgM+0ZPQNi452dfEZfD4Rr+YykIxhLCJuDMunb9H8A6CrygSYcx+g6SgE5CCsPN
ZmvJKM0rEhtJeUWQxk2ZwGSY0N+n1wjcqK2JT4mqiBAr8k6W2xD1D3oRwJMdIi2H
E3RC45CrVmaO6XamOWPtCNH9AU/FEAJHdPhoyHy8vGU16dfZOVuXEYyuGM9+pI9c
jRryG+nDva9y643xPIQVTDyslkzunAA6lA==
-----END CERTIFICATE-----
================================================
FILE: sepolicy/vendor/charger.te
================================================
allow charger sysfs_usb_c:file rw_file_perms;
allow charger sysfs_msm_subsys:file rw_file_perms;
================================================
FILE: sepolicy/vendor/chre.te
================================================
# This daemon loads the Context Hub Runtime Environment (CHRE) dynamic modules
# onto the SLPI using FastRPC, and exposes a sockets interface for clients on
# the applications processor to interact CHRE
type chre, domain;
type chre_exec, exec_type, vendor_file_type, file_type;
init_daemon_domain(chre)
allow chre ion_device:chr_file { open read };
allow chre qdsp_device:chr_file { ioctl open read };
allow chre system_file:dir read;
================================================
FILE: sepolicy/vendor/cnd.te
================================================
type cnd, domain;
type cnd_exec, exec_type, vendor_file_type, file_type;
file_type_auto_trans(cnd, socket_device, cnd_socket);
# cnd is started by init, type transit from init domain to cnd domain
init_daemon_domain(cnd)
# allow cnd the following capability
allow cnd self:capability {
net_admin
sys_module
net_bind_service
};
allow cnd self:capability2 block_suspend;
# socket used to communicate with kernel via the netlink syscall
allow cnd self:{
netlink_tcpdiag_socket
netlink_route_socket
netlink_socket
netlink_generic_socket
# allow cnd to perform socket operation on itself
socket
} create_socket_perms_no_ioctl;
# allow cnd to read tcp diagnostics through netlink
allow cnd self:netlink_tcpdiag_socket nlmsg_read;
wakelock_use(cnd)
allow cnd self:udp_socket create_socket_perms;
allowxperm cnd self:udp_socket ioctl SIOCGIFMTU;
allow cnd sysfs_timestamp_switch:file r_file_perms;
r_dir_file(cnd, sysfs_msm_subsys)
r_dir_file(cnd, sysfs_diag)
r_dir_file(cnd, sysfs_soc)
r_dir_file(cnd, sysfs_esoc)
allow cnd proc_meminfo:file r_file_perms;
set_prop(cnd, cnd_prop)
allow cnd self:socket create_socket_perms;
allowxperm cnd self:socket ioctl msm_sock_ipc_ioctls;
# To register cnd to hwbinder
add_hwservice(cnd, hal_cne_hwservice)
hwbinder_use(cnd)
get_prop(cnd, hwservicemanager_prop)
binder_call(cnd, dataservice_app)
binder_call(cnd, ims)
# allow cnd to access wpa_socket
unix_socket_send(cnd, wpa, hal_wifi_supplicant)
allow cnd cnss_vendor_data_file:sock_file write;
allow cnd self:netlink_route_socket nlmsg_read;
================================================
FILE: sepolicy/vendor/dataservice_app.te
================================================
get_prop(dataservice_app, cnd_prop)
r_dir_file(dataservice_app, sysfs_msm_subsys)
binder_call(dataservice_app, cnd)
# imsrcsd to bind with UceShimService.apk
binder_call(dataservice_app, hal_rcsservice)
get_prop(dataservice_app, omadm_prop)
allow dataservice_app cgroup:file rw_file_perms;
================================================
FILE: sepolicy/vendor/device.te
================================================
type ab_block_device, dev_type;
type at_device, dev_type;
type avtimer_device, dev_type;
type bt_device, dev_type;
type diag_device, dev_type, mlstrustedobject;
type dsp_device, dev_type;
type easel_device, dev_type;
type hbtp_device, dev_type;
type latency_device, dev_type;
type modem_block_device, dev_type;
type persist_block_device, dev_type;
type pn81a_device, dev_type;
type qsee_ipc_irq_spss_device, dev_type;
type qdsp_device, dev_type, mlstrustedobject;
type ramdump_device, dev_type;
type rmnet_device, dev_type;
type gpt_block_device, dev_type;
type ramdump_block_device, dev_type;
type seemplog_device, dev_type;
type sg_device, dev_type;
type smd_device, dev_type;
type spcom_device, dev_type;
type ssd_block_device, dev_type;
type ssr_device, dev_type;
type thermal_device, dev_type;
type wlan_device, dev_type;
type xbl_block_device, dev_type;
type hvdcp_device, dev_type;
type stm_device, dev_type;
type neko_device, dev_type;
type ipa_dev, dev_type;
================================================
FILE: sepolicy/vendor/domain.te
================================================
# Our dogfood users are in user build
allow domain diag_device:chr_file rw_file_perms;
# In order for /sys/kernel/debug/kgsl/proc//mem
# to be created for memory tracking, the domain of
# the tracked process must have permission to search
# in /sys/kernel/debug/kgsl
allow domain debugfs_kgsl:dir search;
allow domain debugfs_ion:dir search;
get_prop(domain, public_vendor_default_prop)
================================================
FILE: sepolicy/vendor/dumpstate.te
================================================
userdebug_or_eng(`
allow dumpstate proc_modules:file r_file_perms;
allow dumpstate proc_stat:file r_file_perms;
allow dumpstate persist_file:dir r_dir_perms;
allow dumpstate sysfs_leds:dir search;
allow dumpstate system_block_device:blk_file r_file_perms;
dontaudit dumpstate self:netlink_xfrm_socket create_socket_perms_no_ioctl;
binder_call(dumpstate, per_mgr)
')
# Allow access to /data/misc/trace
allow dumpstate method_trace_data_file:dir rw_dir_perms;
allow dumpstate method_trace_data_file:file create_file_perms;
allow dumpstate sysfs_scsi_devices_0000:file r_file_perms;
allow dumpstate sysfs_scsi_devices_other:file r_file_perms;
allow dumpstate sysfs_devices_block_stat:file r_file_perms;
dontaudit dumpstate persist_file:dir r_dir_perms;
dontaudit dumpstate kernel:system module_request;
allow dumpstate adsprpcd_file:dir getattr;
allow dumpstate adsprpcd_file:filesystem getattr;
================================================
FILE: sepolicy/vendor/ephemeral_app.te
================================================
allow ephemeral_app toolbox_exec:file { open read execute execute_no_trans getattr};
================================================
FILE: sepolicy/vendor/esed.te
================================================
# android.hardware.weaver HAL implementation
# Clean up naming after via b/38447431
type esed, domain;
type esed_exec, exec_type, vendor_file_type, file_type;
hal_server_domain(esed, hal_weaver)
allow esed pn81a_device:chr_file rw_file_perms;
allow esed ese_vendor_data_file:dir create_dir_perms;
allow esed ese_vendor_data_file:file create_file_perms;
init_daemon_domain(esed)
================================================
FILE: sepolicy/vendor/essential_camera_app.te
================================================
type essential_camera_app, domain;
app_domain(essential_camera_app)
net_domain(essential_camera_app)
# Services from untrusted_app_all.
# Should be kept in sync with untrusted_app_all.
allow essential_camera_app audioserver_service:service_manager find;
allow essential_camera_app cameraserver_service:service_manager find;
allow essential_camera_app drmserver_service:service_manager find;
allow essential_camera_app mediaserver_service:service_manager find;
allow essential_camera_app mediaextractor_service:service_manager find;
allow essential_camera_app mediametrics_service:service_manager find;
allow essential_camera_app mediadrmserver_service:service_manager find;
allow essential_camera_app nfc_service:service_manager find;
allow essential_camera_app radio_service:service_manager find;
allow essential_camera_app surfaceflinger_service:service_manager find;
allow essential_camera_app app_api_service:service_manager find;
allow essential_camera_app vr_manager_service:service_manager find;
# Execute libraries from RenderScript cache
allow essential_camera_app app_data_file:file { rx_file_perms };
# Read memory info
allow essential_camera_app proc_meminfo:file r_file_perms;
# Read and write system app data files passed over Binder.
# Motivating case was /data/data/com.android.settings/cache/*.jpg for
# cropping or taking user photos.
allow essential_camera_app system_app_data_file:file { read write getattr };
allow essential_camera_app hal_sidecar_essential_hwservice:hwservice_manager find;
binder_call(essential_camera_app, hal_sidecar_essential_default)
allow essential_camera_app nfc_service:service_manager find;
r_dir_file(essential_camera_app, sysfs_usb_device)
allow essential_camera_app neko_device:chr_file rw_file_perms;
allow essential_camera_app vendor_file:file { getattr open read };
# Allow access to perfd
allow essential_camera_app perfd_socket:sock_file write;
allow essential_camera_app perfd:unix_stream_socket connectto;
================================================
FILE: sepolicy/vendor/file.te
================================================
type sysfs_camera, sysfs_type, fs_type;
type sysfs_clkscale, sysfs_type, fs_type;
type sysfs_console_suspend, sysfs_type, fs_type;
type sysfs_easel, sysfs_type, fs_type;
type sysfs_fingerprint, sysfs_type, fs_type;
type sysfs_graphics, sysfs_type, fs_type;
type sysfs_laser, sysfs_type, fs_type;
type sysfs_mdss_mdp_caps, sysfs_type, fs_type;
type sysfs_msm_subsys, sysfs_type, fs_type;
type sysfs_msm_subsys_restart, sysfs_type, fs_type;
type sysfs_rmtfs, sysfs_type, fs_type;
type sysfs_soc, sysfs_type, fs_type;
type sysfs_scsi_devices_0000, sysfs_type, fs_type;
type sysfs_scsi_devices_other, sysfs_type, fs_type;
type sysfs_devices_block_stat, sysfs_type, fs_type;
type sysfs_timestamp_switch, sysfs_type, fs_type;
type sysfs_touch, sysfs_type, fs_type;
type sysfs_usb_c, sysfs_type, fs_type;
type sysfs_usb_device, sysfs_type, fs_type;
type sysfs_battery_supply, sysfs_type, fs_type;
type sysfs_usb_supply, sysfs_type, fs_type;
# sysfs vadc device for hvdcp/quickcharge
type sysfs_vadc_dev, sysfs_type, fs_type;
# sysfs spmi device for hvdcp/quickcharge
type sysfs_spmi_dev, sysfs_type, fs_type;
type sysfs_audio, sysfs_type, fs_type;
type sysfs_perf, sysfs_type, fs_type;
type debugfs_clk, debugfs_type, fs_type;
type debugfs_ion, debugfs_type, fs_type;
type debugfs_ipc, debugfs_type, fs_type;
type debugfs_kgsl, debugfs_type, fs_type;
type debugfs_rpm, debugfs_type, fs_type;
type debugfs_rmt_storage, debugfs_type, fs_type;
type debugfs_usb, debugfs_type, fs_type;
type debugfs_wlan, debugfs_type, fs_type;
type debugfs_mdp, debugfs_type, fs_type;
type debugfs_icnss, debugfs_type, fs_type;
type debugfs_ufs, debugfs_type, fs_type;
type debugfs_dma_bufinfo, debugfs_type, fs_type;
# /proc
type proc_wifi_dbg, fs_type, proc_type;
type proc_sensor, fs_type, proc_type;
type proc_kernel, fs_type, proc_type;
type qmuxd_socket, file_type;
type netmgrd_socket, file_type;
type thermal_socket, file_type;
type perfd_socket, file_type;
type ims_socket, file_type;
type ipacm_socket, file_type;
type cnd_socket, file_type;
type chre_socket, file_type;
type hal_bootctl_socket, file_type;
type firmware_file, fs_type, contextmount_type;
type location_data_file, file_type, data_file_type;
type persist_file, file_type;
type persist_data_file, file_type;
type persist_display_file, file_type;
type persist_drm_file, file_type;
type persist_elabel_file, file_type;
type persist_haptics_file, file_type;
type persist_rfs_file, file_type;
type persist_sensors_file, file_type;
type persist_time_file, file_type;
type persist_bluetooth_file, file_type;
type netmgr_data_file, file_type, data_file_type;
type ipa_vendor_data_file, file_type, data_file_type;
type camera_vendor_data_file, file_type, data_file_type;
type display_vendor_data_file, file_type, data_file_type;
type nfc_vendor_data_file, file_type, data_file_type;
type radio_vendor_data_file, file_type, data_file_type, mlstrustedobject;
type cnss_vendor_data_file, file_type, data_file_type, mlstrustedobject;
type ramdump_vendor_data_file, file_type, data_file_type, mlstrustedobject;
type modem_dump_file, file_type, data_file_type;
type ese_vendor_data_file, file_type, data_file_type;
type sensors_vendor_data_file, file_type, data_file_type;
type audio_vendor_data_file, file_type, data_file_type;
type time_vendor_data_file, file_type, data_file_type;
type hbtp_vendor_data_file, file_type, data_file_type;
type tombstone_rfs_vendor_data_file, file_type, data_file_type;
type pstore_backup_file, file_type, core_data_file_type, data_file_type;
type tracing_shell_writable, fs_type, debugfs_type;
type mediadrm_vendor_data_file, file_type, data_file_type;
type vendor_firmware_file, vendor_file_type, file_type;
type ramdump_data_file, file_type, core_data_file_type, data_file_type, mlstrustedobject;
#data sysfs files
type sysfs_data, fs_type, sysfs_type;
#diag sysfs files
type sysfs_diag, fs_type, sysfs_type;
type hexagon_halide_file, vendor_file_type, file_type;
# input files
type idc_file, file_type, vendor_file_type;
type keylayout_file, file_type, vendor_file_type;
# Battery Stats file
typeattribute sysfs_batteryinfo mlstrustedobject;
# msm_irqbalance
type proc_irq, fs_type, proc_type;
type sysfs_irq, fs_type, sysfs_type;
type irqbalance_socket, file_type;
type sysfs_esoc, sysfs_type, fs_type;
# hbtp config file
type hbtp_cfg_file, file_type;
type hbtp_log_file, file_type;
type adsprpcd_file, file_type, vendor_file_type, mlstrustedobject;
type rfs_system_file, file_type, system_file_type;
================================================
FILE: sepolicy/vendor/file_contexts
================================================
# dev nodes
/dev/btpower u:object_r:bt_device:s0
/dev/diag u:object_r:diag_device:s0
/dev/kgsl-3d0 u:object_r:gpu_device:s0
/dev/rtc0 u:object_r:rtc_device:s0
/dev/smd.* u:object_r:smd_device:s0
# TODO: does ttyMSM0 need to be more specific
/dev/ttyMSM0 u:object_r:tty_device:s0
/dev/ipa u:object_r:ipa_dev:s0
/dev/wwan_ioctl u:object_r:ipa_dev:s0
/dev/ipaNatTable u:object_r:ipa_dev:s0
/dev/cpu_dma_latency u:object_r:latency_device:s0
/dev/rmnet_ctrl.* u:object_r:rmnet_device:s0
/dev/at_.* u:object_r:at_device:s0
/dev/video([0-9])+ u:object_r:video_device:s0
/dev/media([0-9])+ u:object_r:video_device:s0
/dev/v4l-subdev.* u:object_r:video_device:s0
/dev/qseecom u:object_r:tee_device:s0
/dev/qsee_ipc_irq_spss u:object_r:qsee_ipc_irq_spss_device:s0
/dev/seemplog u:object_r:seemplog_device:s0
/dev/spcom u:object_r:spcom_device:s0
/dev/jpeg[0-9]* u:object_r:video_device:s0
/dev/adsprpc-smd u:object_r:qdsp_device:s0
/dev/sdsprpc-smd u:object_r:dsp_device:s0
/dev/wcd-dsp-glink u:object_r:audio_device:s0
/dev/wcd_dsp0_control u:object_r:audio_device:s0
/dev/msm_thermal_query u:object_r:thermal_device:s0
/dev/msm_.* u:object_r:audio_device:s0
/dev/avtimer u:object_r:avtimer_device:s0
/dev/subsys_.* u:object_r:ssr_device:s0
/dev/ramdump_.* u:object_r:ramdump_device:s0
/dev/hbtp_input u:object_r:hbtp_device:s0
/dev/hbtp_vm u:object_r:hbtp_device:s0
/dev/sg[0-9]+ u:object_r:sg_device:s0
/dev/sensors u:object_r:sensors_device:s0
/dev/mnh_sm u:object_r:easel_device:s0
/dev/easelcomm-client u:object_r:easel_device:s0
/dev/pn81a u:object_r:pn81a_device:s0
/dev/stmvl53l0_ranging u:object_r:stm_device:s0
/dev/dpl_ctrl u:object_r:rmnet_device:s0
/dev/neko([0-9])+ u:object_r:neko_device:s0
# dev socket nodes
/dev/socket/chre u:object_r:chre_socket:s0
/dev/socket/oemlock u:object_r:hal_bootctl_socket:s0
/dev/socket/qmux_audio(/.*)? u:object_r:qmuxd_socket:s0
/dev/socket/qmux_bluetooth(/.*)? u:object_r:qmuxd_socket:s0
/dev/socket/qmux_gps(/.*)? u:object_r:qmuxd_socket:s0
/dev/socket/qmux_nfc(/.*)? u:object_r:qmuxd_socket:s0
/dev/socket/qmux_radio(/.*)? u:object_r:qmuxd_socket:s0
/dev/socket/ims_qmid u:object_r:ims_socket:s0
/dev/socket/ims_datad u:object_r:ims_socket:s0
/dev/socket/ipacm_log_file u:object_r:ipacm_socket:s0
/dev/socket/cnd u:object_r:cnd_socket:s0
/dev/socket/msm_irqbalance u:object_r:irqbalance_socket:s0
/dev/socket/thermal-send-client u:object_r:thermal_socket:s0
/dev/socket/thermal-recv-client u:object_r:thermal_socket:s0
/dev/socket/thermal-recv-passive-client u:object_r:thermal_socket:s0
/dev/socket/thermal-send-rule u:object_r:thermal_socket:s0
/dev/socket/perfd u:object_r:perfd_socket:s0
/dev/socket/netmgr(/.*)? u:object_r:netmgrd_socket:s0
/dev/nq-nci u:object_r:nfc_device:s0
/dev/ttyHS0 u:object_r:hci_attach_dev:s0
/dev/wlan u:object_r:wlan_device:s0
# dev block nodes
/dev/block/platform/soc/1da4000\.ufshc/by-name/abl_[ab] u:object_r:ab_block_device:s0
/dev/block/platform/soc/1da4000\.ufshc/by-name/dsp_[ab] u:object_r:ab_block_device:s0
/dev/block/platform/soc/1da4000\.ufshc/by-name/cmnlib64_[ab] u:object_r:ab_block_device:s0
/dev/block/platform/soc/1da4000\.ufshc/by-name/cmnlib_[ab] u:object_r:ab_block_device:s0
/dev/block/platform/soc/1da4000\.ufshc/by-name/devcfg_[ab] u:object_r:ab_block_device:s0
/dev/block/platform/soc/1da4000\.ufshc/by-name/hyp_[ab] u:object_r:ab_block_device:s0
/dev/block/platform/soc/1da4000\.ufshc/by-name/keymaster_[ab] u:object_r:ab_block_device:s0
/dev/block/platform/soc/1da4000\.ufshc/by-name/pmic_[ab] u:object_r:ab_block_device:s0
/dev/block/platform/soc/1da4000\.ufshc/by-name/rpm_[ab] u:object_r:ab_block_device:s0
/dev/block/platform/soc/1da4000\.ufshc/by-name/storsec_[ab] u:object_r:ab_block_device:s0
/dev/block/platform/soc/1da4000\.ufshc/by-name/tz_[ab] u:object_r:ab_block_device:s0
/dev/block/platform/soc/1da4000\.ufshc/by-name/nvdef_[ab] u:object_r:ab_block_device:s0
/dev/block/platform/soc/1da4000\.ufshc/by-name/bluetooth_[ab] u:object_r:ab_block_device:s0
/dev/block/platform/soc/1da4000\.ufshc/by-name/boot_[ab] u:object_r:boot_block_device:s0
/dev/block/platform/soc/1da4000\.ufshc/by-name/metadata u:object_r:metadata_block_device:s0
/dev/block/platform/soc/1da4000\.ufshc/by-name/misc u:object_r:misc_block_device:s0
/dev/block/platform/soc/1da4000\.ufshc/by-name/frp u:object_r:frp_block_device:s0
/dev/block/platform/soc/1da4000\.ufshc/by-name/fsc u:object_r:modem_block_device:s0
/dev/block/platform/soc/1da4000\.ufshc/by-name/fsg u:object_r:modem_block_device:s0
/dev/block/platform/soc/1da4000\.ufshc/by-name/modem_[ab] u:object_r:modem_block_device:s0
/dev/block/platform/soc/1da4000\.ufshc/by-name/modemst[12] u:object_r:modem_block_device:s0
/dev/block/platform/soc/1da4000\.ufshc/by-name/persist u:object_r:persist_block_device:s0
/dev/block/platform/soc/1da4000\.ufshc/by-name/ramdump u:object_r:ramdump_block_device:s0
/dev/block/platform/soc/1da4000\.ufshc/by-name/ssd u:object_r:ssd_block_device:s0
/dev/block/platform/soc/1da4000\.ufshc/by-name/system_[ab] u:object_r:system_block_device:s0
/dev/block/platform/soc/1da4000\.ufshc/by-name/vendor_[ab] u:object_r:system_block_device:s0
/dev/block/platform/soc/1da4000\.ufshc/by-name/userdata u:object_r:userdata_block_device:s0
/dev/block/platform/soc/1da4000\.ufshc/by-name/xbl_[ab] u:object_r:xbl_block_device:s0
# Block device holding the GPT, where the A/B attributes are stored.
/dev/block/sda u:object_r:gpt_block_device:s0
# Block devices for the drive that holds the xbl_a and xbl_b partitions.
/dev/block/sd[bc]1? u:object_r:xbl_block_device:s0
# Block device for hal_bootctl
/dev/block/sde u:object_r:boot_block_device:s0
# Block device for ZRAM
/dev/block/zram0 u:object_r:swap_block_device:s0
# files in /vendor
/vendor/firmware(/.*)? u:object_r:vendor_firmware_file:s0
/vendor/bin/hw/android\.hardware\.dumpstate@1\.0-service.mata u:object_r:hal_dumpstate_impl_exec:s0
/vendor/bin/hw/android\.hardware\.biometrics\.fingerprint@2\.1-service.mata u:object_r:hal_fingerprint_default_exec:s0
/vendor/bin/msm_irqbalance u:object_r:irqbalance_exec:s0
/vendor/bin/perfd u:object_r:perfd_exec:s0
/vendor/bin/thermal-engine u:object_r:thermal-engine_exec:s0
/vendor/bin/sensors.qcom u:object_r:sensors_exec:s0
/vendor/bin/ssr_setup u:object_r:ssr_setup_exec:s0
/vendor/bin/ssr_diag u:object_r:ssr_diag_exec:s0
/vendor/bin/pm-service u:object_r:per_mgr_exec:s0
/vendor/bin/pm-proxy u:object_r:per_proxy_exec:s0
/vendor/bin/qseecomd u:object_r:tee_exec:s0
/vendor/bin/adsprpcd u:object_r:adsprpcd_exec:s0
/vendor/bin/irsc_util u:object_r:irsc_util_exec:s0
/vendor/bin/rmt_storage u:object_r:rmt_storage_exec:s0
/vendor/bin/tftp_server u:object_r:rfs_access_exec:s0
/vendor/bin/cnss-daemon u:object_r:wcnss_service_exec:s0
/vendor/bin/cnss_diag u:object_r:wcnss_service_exec:s0
/vendor/bin/diag_mdlog u:object_r:qlogd_exec:s0
/vendor/bin/netmgrd u:object_r:netmgrd_exec:s0
/vendor/bin/port-bridge u:object_r:port-bridge_exec:s0
/vendor/bin/qti u:object_r:qti_exec:s0
/vendor/bin/ramdump u:object_r:ramdump_exec:s0
/vendor/bin/smlog_dump u:object_r:smlog_dump_exec:s0
/vendor/bin/wcnss_filter u:object_r:wcnss_filter_exec:s0
/vendor/bin/loc_launcher u:object_r:location_exec:s0
/vendor/bin/lowi-server u:object_r:location_exec:s0
/vendor/bin/xtra-daemon u:object_r:location_exec:s0
/vendor/bin/pd-mapper u:object_r:pd_mapper_exec:s0
/vendor/bin/imsqmidaemon u:object_r:ims_exec:s0
/vendor/bin/imsdatadaemon u:object_r:ims_exec:s0
/vendor/bin/ims_rtp_daemon u:object_r:hal_imsrtp_exec:s0
/vendor/bin/ipacm u:object_r:hal_tetheroffload_default_exec:s0
/vendor/bin/ipacm-diag u:object_r:hal_tetheroffload_default_exec:s0
/vendor/bin/qmuxd u:object_r:qmuxd_exec:s0
/vendor/bin/cnd u:object_r:cnd_exec:s0
/vendor/bin/ATFWD-daemon u:object_r:atfwd_exec:s0
# Remove after b/38447389
/vendor/bin/esed u:object_r:esed_exec:s0
# Rename to android.hardware.[XXX] after b/38447431
/vendor/bin/hw/esed u:object_r:esed_exec:s0
/vendor/bin/ese_load u:object_r:init_ese_exec:s0
/vendor/bin/ese-replay u:object_r:esed_exec:s0
/vendor/bin/ese-ls-provision u:object_r:esed_exec:s0
/vendor/bin/hw/android\.hardware\.oemlock@1\.0-service u:object_r:hal_oemlock_default_exec:s0
/vendor/bin/oemlock_provision u:object_r:hal_bootctl_default_exec:s0
/vendor/bin/oemlock-bridge u:object_r:hal_bootctl_default_exec:s0
/vendor/bin/hw/android\.hardware\.usb@1\.0-service.mata u:object_r:hal_usb_default_exec:s0
/vendor/bin/hw/android\.hardware\.power@1\.3-service.mata-libperfmgr u:object_r:hal_power_default_exec:s0
/vendor/bin/hw/android\.hardware\.thermal@1\.0-service.mata u:object_r:hal_thermal_default_exec:s0
/vendor/bin/hw/android\.hardware\.health@2\.0-service.mata u:object_r:hal_health_default_exec:s0
/vendor/bin/chre u:object_r:chre_exec:s0
/vendor/bin/time_daemon u:object_r:time_daemon_exec:s0
/vendor/bin/imsrcsd u:object_r:hal_rcsservice_exec:s0
/vendor/bin/hbtp_daemon u:object_r:hbtp_exec:s0
/vendor/bin/init\.qcom\.devstart\.sh u:object_r:init-qcom-devstart-sh_exec:s0
/vendor/bin/init\.qcom\.ipastart\.sh u:object_r:init-qcom-ipastart-sh_exec:s0
/vendor/bin/init\.insmod\.sh u:object_r:init-insmod-sh_exec:s0
/vendor/etc/init\.insmod\.cfg u:object_r:init-insmod-sh_exec:s0
/vendor/bin/init\.power\.sh u:object_r:init_power_exec:s0
/vendor/bin/init\.radio\.sh u:object_r:init_radio_exec:s0
/vendor/bin/init\.qcom\.bt\.sh u:object_r:qti_init_shell_exec:s0
/vendor/bin/init\.qcom\.early_boot\.sh u:object_r:qti_init_shell_exec:s0
/vendor/bin/init\.qcom\.post_boot\.sh u:object_r:qti_init_shell_exec:s0
/vendor/bin/init\.qcom\.usb\.sh u:object_r:qti_init_shell_exec:s0
/vendor/bin/init\.mdm\.sh u:object_r:qti_init_shell_exec:s0
/vendor/bin/init\.mdm\.crashdata\.sh u:object_r:qti_init_shell_exec:s0
/vendor/bin/init\.qcom\.syspart_fixup\.sh u:object_r:qti_init_shell_exec:s0
/vendor/bin/hcidump.sh u:object_r:qti_init_shell_exec:s0
/vendor/bin/hsic\.control\.bt\.sh u:object_r:qti_init_shell_exec:s0
/vendor/bin/init\.ath3k\.bt\.sh u:object_r:qti_init_shell_exec:s0
/vendor/bin/init\.crda\.sh u:object_r:qti_init_shell_exec:s0
/vendor/bin/init\.qcom\.coex\.sh u:object_r:qti_init_shell_exec:s0
/vendor/bin/init\.qcom\.debug-sdm660\.sh u:object_r:qti_init_shell_exec:s0
/vendor/bin/init\.qcom\.debug\.sh u:object_r:qti_init_shell_exec:s0
/vendor/bin/init\.qcom\.efs\.sync\.sh u:object_r:qti_init_shell_exec:s0
/vendor/bin/init\.qti\.fm\.sh u:object_r:qti_init_shell_exec:s0
/vendor/bin/init\.qcom\.sdio\.sh u:object_r:qti_init_shell_exec:s0
/vendor/bin/init\.qcom\.uicc\.sh u:object_r:qti_init_shell_exec:s0
/vendor/bin/init\.qcom\.wifi\.sh u:object_r:qti_init_shell_exec:s0
/vendor/bin/init\.qti\.ims\.sh u:object_r:qti_init_shell_exec:s0
/vendor/bin/init\.ambientos\.sh u:object_r:qti_init_shell_exec:s0
/vendor/bin/btaddr_extract u:object_r:btaddr_extract_exec:s0
/vendor/bin/provision.sh u:object_r:qti_init_shell_exec:s0
/vendor/bin/kb_parser u:object_r:qti_init_shell_exec:s0
/vendor/bin/hdcp1prov u:object_r:qti_init_shell_exec:s0
/vendor/bin/hdcp2p2prov u:object_r:qti_init_shell_exec:s0
/vendor/bin/StoreKeybox u:object_r:qti_init_shell_exec:s0
/vendor/bin/KmInstallKeybox u:object_r:qti_init_shell_exec:s0
/system/bin/move_widevine_data\.sh u:object_r:move-widevine-data-sh_exec:s0
/vendor/bin/hw/android\.hardware\.drm@1\.2-service.widevine u:object_r:hal_drm_widevine_exec:s0
/vendor/bin/hw/android\.hardware\.drm@1\.2-service\.clearkey u:object_r:hal_drm_clearkey_exec:s0
/vendor/bin/hw/android\.hardware\.vibrator@1\.2-service.mata u:object_r:hal_vibrator_default_exec:s0
/vendor/bin/hw/android\.hardware\.gnss@1\.0-service-qti u:object_r:hal_gnss_qti_exec:s0
/vendor/bin/hw/android\.hardware\.neuralnetworks@1\.0-service-hvx u:object_r:hal_neuralnetworks_hvx_exec:s0
/vendor/bin/hw/vendor\.essential\.hardware\.sidecar@1\.0-service u:object_r:hal_sidecar_essential_default_exec:s0
/vendor/bin/wifidisplayhalservice u:object_r:wifidisplayhalservice_qti_exec:s0
###############################################
# same-process HAL files and their dependencies
#
/vendor/lib(64)?/hw/android\.hardware\.graphics\.mapper@2\.0-impl-2.1\.so u:object_r:same_process_hal_file:s0
/vendor/lib(64)?/hw/gralloc\.msm8998\.so u:object_r:same_process_hal_file:s0
/vendor/lib(64)?/libqdMetaData\.so u:object_r:same_process_hal_file:s0
/vendor/lib(64)?/libqservice\.so u:object_r:same_process_hal_file:s0
/vendor/lib(64)?/libqdutils\.so u:object_r:same_process_hal_file:s0
/vendor/lib(64)?/libadreno_utils\.so u:object_r:same_process_hal_file:s0
/vendor/lib(64)?/libgsl\.so u:object_r:same_process_hal_file:s0
/vendor/lib(64)?/hw/vulkan\.msm8998\.so u:object_r:same_process_hal_file:s0
/vendor/lib(64)?/libEGL_adreno\.so u:object_r:same_process_hal_file:s0
/vendor/lib(64)?/libGLESv1_CM_adreno\.so u:object_r:same_process_hal_file:s0
/vendor/lib(64)?/libGLESv2_adreno\.so u:object_r:same_process_hal_file:s0
/vendor/lib(64)?/libdrmutils\.so u:object_r:same_process_hal_file:s0
/vendor/lib(64)?/libdrm\.so u:object_r:same_process_hal_file:s0
# /vendor/app/TimeService/TimeService.apk
/vendor/lib(64)?/libTimeService\.so u:object_r:same_process_hal_file:s0
/vendor/lib(64)?/libtime_genoff\.so u:object_r:same_process_hal_file:s0
# RenderScript dependencies.
# To test: run cts -m CtsRenderscriptTestCases
/vendor/lib(64)?/libRSDriver_adreno\.so u:object_r:same_process_hal_file:s0
/vendor/lib(64)?/libCB\.so u:object_r:same_process_hal_file:s0
/vendor/lib(64)?/libllvm-qgl\.so u:object_r:same_process_hal_file:s0
/vendor/lib(64)?/libbccQTI\.so u:object_r:same_process_hal_file:s0
/vendor/lib(64)?/libllvm-qcom\.so u:object_r:same_process_hal_file:s0
/vendor/lib(64)?/librs_adreno\.so u:object_r:same_process_hal_file:s0
/vendor/lib(64)?/librs_adreno_sha1\.so u:object_r:same_process_hal_file:s0
/vendor/lib(64)?/libqti-perfd-client\.so u:object_r:same_process_hal_file:s0
# TODO(b/36895509): remove the following 2 lines once this bug is resolved
# needed by radio
/vendor/lib(64)?/libimsmedia_jni\.so u:object_r:same_process_hal_file:s0
# libGLESv2_adreno depends on this
/vendor/lib(64)?/libllvm-glnext\.so u:object_r:same_process_hal_file:s0
# Hexagon DSP host runtime and DSP-side executable needed for Halide operation
/vendor/lib(64)?/libadsprpc\.so u:object_r:same_process_hal_file:s0
/vendor/lib/dsp/fastrpc_shell_0 u:object_r:adsprpcd_file:s0
# Hexagon DSP lib to extract image features
/vendor/lib/rfsa/adsp/libexternal_dog_skel\.so u:object_r:same_process_hal_file:s0
/vendor/lib/rfsa/adsp/libdspCV_skel\.so u:object_r:same_process_hal_file:s0
/vendor/lib/rfsa/adsp/libapps_mem_heap\.so u:object_r:same_process_hal_file:s0
# thermal sysfs files
/sys/class/thermal(/.*)? u:object_r:sysfs_thermal:s0
# data files
/data/vendor/netmgr(/.*)? u:object_r:netmgr_data_file:s0
/data/vendor/location(/.*)? u:object_r:location_data_file:s0
/data/ramdump(/.*)? u:object_r:ramdump_data_file:s0
/data/nfc(/.*)? u:object_r:nfc_data_file:s0
/data/vendor/camera(/.*)? u:object_r:camera_vendor_data_file:s0
/data/vendor/display(/.*)? u:object_r:display_vendor_data_file:s0
/data/vendor/nfc(/.*)? u:object_r:nfc_vendor_data_file:s0
/data/vendor/radio(/.*)? u:object_r:radio_vendor_data_file:s0
/data/vendor/wifi/cnss_diag(/.*)? u:object_r:cnss_vendor_data_file:s0
/data/vendor/ramdump(/.*)? u:object_r:ramdump_vendor_data_file:s0
/data/vendor/ssrdump(/.*)? u:object_r:ramdump_vendor_data_file:s0
/data/vendor/modem_dump(/.*)? u:object_r:modem_dump_file:s0
/data/vendor/ese(/.*)? u:object_r:ese_vendor_data_file:s0
/data/vendor/ipa(/.*)? u:object_r:ipa_vendor_data_file:s0
/data/vendor/sensors(/.*)? u:object_r:sensors_vendor_data_file:s0
/data/vendor/misc/audio(/.*)? u:object_r:audio_vendor_data_file:s0
/data/vendor/time(/.*)? u:object_r:time_vendor_data_file:s0
/data/vendor/hbtp(/.*)? u:object_r:hbtp_vendor_data_file:s0
/data/vendor/tombstones/rfs(/.*)? u:object_r:tombstone_rfs_vendor_data_file:s0
/data/vendor/mediadrm(/.*)? u:object_r:mediadrm_vendor_data_file:s0
# input files
/vendor/usr/idc(/.*)? u:object_r:idc_file:s0
/vendor/usr/keylayout(/.*)? u:object_r:keylayout_file:s0
# /
/tombstones u:object_r:rootfs:s0
/vendor/lib/dsp(/.*)? u:object_r:adsprpcd_file:s0
# files in firmware
/firmware u:object_r:rootfs:s0
# TODO: Remove them once no need to maintain the backward compatibility. (b/111219177)
/persist u:object_r:rootfs:s0
/dsp u:object_r:rootfs:s0
# /mnt/vendor/persist
/mnt/vendor/persist(/.*)? u:object_r:persist_file:s0
/mnt/vendor/persist/data(/.*)? u:object_r:persist_data_file:s0
/mnt/vendor/persist/display(/.*)? u:object_r:persist_display_file:s0
/mnt/vendor/persist/drm(/.*)? u:object_r:persist_drm_file:s0
/mnt/vendor/persist/elabel(/.*)? u:object_r:persist_elabel_file:s0
/mnt/vendor/persist/haptics(/.*)? u:object_r:persist_haptics_file:s0
/mnt/vendor/persist/hlos_rfs(/.*)? u:object_r:persist_rfs_file:s0
/mnt/vendor/persist/rfs(/.*)? u:object_r:persist_rfs_file:s0
/mnt/vendor/persist/sensors(/.*)? u:object_r:persist_sensors_file:s0
/mnt/vendor/persist/time(/.*)? u:object_r:persist_time_file:s0
/mnt/vendor/persist/bluetooth(/.*)? u:object_r:persist_bluetooth_file:s0
/metadata u:object_r:rootfs:s0
/metadata/.* u:object_r:vold_data_file:s0
/vendor/bin/hvdcp_opti u:object_r:hvdcp_exec:s0
/sys/devices/virtual/block/.*/stat u:object_r:sysfs_devices_block_stat:s0
================================================
FILE: sepolicy/vendor/fsck.te
================================================
allow fsck persist_block_device:blk_file rw_file_perms;
================================================
FILE: sepolicy/vendor/gatekeeperd.te
================================================
set_prop(gatekeeperd, keymaster_prop)
================================================
FILE: sepolicy/vendor/genfs_contexts
================================================
# TODO: genfs doesn't apply correctly to linked files (b/64270911)
genfscon proc /debug/fwdump u:object_r:proc_wifi_dbg:s0
genfscon proc /debugdriver/driverdump u:object_r:proc_wifi_dbg:s0
genfscon proc /ath_pktlog/cld u:object_r:proc_wifi_dbg:s0
genfscon proc /irq u:object_r:proc_irq:s0
genfscon proc /sensordata/ToF u:object_r:proc_sensor:s0
genfscon proc /sys/kernel/sched_upmigrate u:object_r:proc_kernel:s0
genfscon proc /sys/kernel/sched_downmigrate u:object_r:proc_kernel:s0
genfscon proc /sys/kernel/sched_group_upmigrate u:object_r:proc_kernel:s0
genfscon proc /sys/kernel/sched_group_downmigrate u:object_r:proc_kernel:s0
genfscon proc /sys/kernel/sched_select_prev_cpu_us u:object_r:proc_kernel:s0
genfscon proc /sys/kernel/sched_freq_inc_notify u:object_r:proc_kernel:s0
genfscon proc /sys/kernel/sched_freq_dec_notify u:object_r:proc_kernel:s0
genfscon proc /sys/kernel/printk u:object_r:proc_kernel:s0
genfscon proc /sys/kernel/sched_spill_nr_run u:object_r:proc_kernel:s0
genfscon proc /sys/kernel/sched_restrict_cluster_spill u:object_r:proc_kernel:s0
genfscon proc /sys/kernel/sched_prefer_sync_wakee_to_waker u:object_r:proc_kernel:s0
genfscon proc /sys/kernel/sched_boost u:object_r:proc_kernel:s0
genfscon sysfs /devices/soc/soc:qcom,cpubw u:object_r:sysfs_msm_subsys:s0
genfscon sysfs /devices/soc/soc:qcom,mincpubw u:object_r:sysfs_msm_subsys:s0
genfscon sysfs /class/devfreq u:object_r:sysfs_msm_subsys:s0
genfscon sysfs /devices/soc/soc:qcom,memlat-cpu0 u:object_r:sysfs_msm_subsys:s0
genfscon sysfs /devices/soc/soc:qcom,memlat-cpu4 u:object_r:sysfs_msm_subsys:s0
genfscon sysfs /android_touch u:object_r:sysfs_touch:s0
genfscon sysfs /devices/soc/1da4000.ufshc/host0/target0:0:0/0:0:0:0 u:object_r:sysfs_scsi_devices_0000:s0
genfscon sysfs /devices/soc/1da4000.ufshc/host0/target0:0:0/0:0:0:1 u:object_r:sysfs_scsi_devices_other:s0
genfscon sysfs /devices/soc/1da4000.ufshc/host0/target0:0:0/0:0:0:2 u:object_r:sysfs_scsi_devices_other:s0
genfscon sysfs /devices/soc/1da4000.ufshc/host0/target0:0:0/0:0:0:3 u:object_r:sysfs_scsi_devices_other:s0
genfscon sysfs /devices/soc/1da4000.ufshc/host0/target0:0:0/0:0:0:4 u:object_r:sysfs_scsi_devices_other:s0
genfscon sysfs /devices/soc/1da4000.ufshc/host0/target0:0:0/0:0:0:5 u:object_r:sysfs_scsi_devices_other:s0
genfscon sysfs /class/uio u:object_r:sysfs_uio:s0
genfscon sysfs /devices/soc/1da4000.ufshc/clkscale_enable u:object_r:sysfs_clkscale:s0
genfscon sysfs /devices/bt_wcn3990 u:object_r:sysfs_bluetooth_writable:s0
genfscon sysfs /devices/soc/a1800000.qcom,rmtfs_rtel_sharedmem u:object_r:sysfs_rmtfs:s0
genfscon sysfs /devices/soc/c17a000.i2c u:object_r:sysfs_msm_subsys:s0
genfscon sysfs /devices/soc/soc:qcom,gpubw u:object_r:sysfs_msm_subsys:s0
genfscon sysfs /devices/soc/800f000.qcom,spmi u:object_r:sysfs_msm_subsys:s0
genfscon sysfs /devices/soc/4080000.qcom,mss u:object_r:sysfs_msm_subsys:s0
genfscon sysfs /devices/soc/17300000.qcom,lpass u:object_r:sysfs_msm_subsys:s0
genfscon sysfs /devices/soc/1d0101c.qcom,spss u:object_r:sysfs_msm_subsys:s0
genfscon sysfs /devices/soc/5c00000.qcom,ssc u:object_r:sysfs_msm_subsys:s0
genfscon sysfs /devices/soc/c900000.qcom,mdss_rotator u:object_r:sysfs_msm_subsys:s0
genfscon sysfs /devices/soc/c900000.qcom,mdss_mdp/caps u:object_r:sysfs_mdss_mdp_caps:s0
genfscon sysfs /devices/soc/c17a000.i2c/i2c-6/6-005a/leds u:object_r:sysfs_leds:s0
genfscon sysfs /devices/soc/c1b5000.i2c/i2c-7/7-0030/leds u:object_r:sysfs_leds:s0
genfscon sysfs /devices/soc/c900000.qcom,mdss_mdp/c900000.qcom,mdss_mdp:qcom,mdss_fb_primary/leds u:object_r:sysfs_leds:s0
genfscon sysfs /devices/soc/800f000.qcom,spmi/spmi-0/spmi0-03/800f000.qcom,spmi:qcom,pmi8998@3:qcom,leds@d000/leds u:object_r:sysfs_leds:s0
genfscon sysfs /devices/soc/5000000.qcom,kgsl-3d0 u:object_r:sysfs_msm_subsys:s0
genfscon sysfs /devices/soc/soc:qcom,kgsl-hyp u:object_r:sysfs_msm_subsys:s0
genfscon sysfs /devices/soc/soc:qcom,ipa_fws@1e08000 u:object_r:sysfs_msm_subsys:s0
genfscon sysfs /devices/soc/cce0000.qcom,venus u:object_r:sysfs_msm_subsys:s0
genfscon sysfs /devices/soc/0.qcom,rmtfs_sharedmem u:object_r:sysfs_rmtfs:s0
genfscon sysfs /devices/soc/soc:fpc,fpc1020 u:object_r:sysfs_fingerprint:s0
genfscon sysfs /devices/virtual/timed_output/vibrator/vmax_mv u:object_r:sysfs_vibrator:s0
genfscon sysfs /devices/virtual/thermal u:object_r:sysfs_thermal:s0
genfscon sysfs /devices/virtual/switch/hdmi/state u:object_r:sysfs_graphics:s0
genfscon sysfs /devices/virtual/switch/mata_headset/state u:object_r:sysfs_audio:s0
genfscon sysfs /module/msm_thermal u:object_r:sysfs_thermal:s0
genfscon sysfs /module/printk/parameters/console_suspend u:object_r:sysfs_console_suspend:s0
genfscon sysfs /module/diagchar/parameters/timestamp_switch u:object_r:sysfs_timestamp_switch:s0
genfscon sysfs /devices/virtual/graphics/fb0 u:object_r:sysfs_graphics:s0
genfscon sysfs /devices/virtual/graphics/fb1 u:object_r:sysfs_graphics:s0
genfscon sysfs /devices/virtual/graphics/fb0/msm_fb_panel_info u:object_r:sysfs_graphics:s0
genfscon sysfs /devices/virtual/graphics/fb1/msm_fb_panel_info u:object_r:sysfs_graphics:s0
genfscon sysfs /devices/virtual/graphics/fb2/msm_fb_panel_info u:object_r:sysfs_graphics:s0
genfscon sysfs /devices/virtual/graphics/fb3/msm_fb_panel_info u:object_r:sysfs_graphics:s0
genfscon sysfs /devices/virtual/graphics/fb3/hpd u:object_r:sysfs_graphics:s0
genfscon sysfs /devices/virtual/graphics/fb3/res_info u:object_r:sysfs_graphics:s0
genfscon sysfs /devices/virtual/graphics/fb3/s3d_mode u:object_r:sysfs_graphics:s0
genfscon sysfs /devices/virtual/graphics/fb3/msm_fb_dfps_mode u:object_r:sysfs_graphics:s0
genfscon sysfs /devices/virtual/graphics/fb3/pa u:object_r:sysfs_graphics:s0
genfscon sysfs /devices/virtual/graphics/fb3/hdcp/tp u:object_r:sysfs_graphics:s0
genfscon sysfs /devices/virtual/graphics/fb2/lineptr_value u:object_r:sysfs_graphics:s0
genfscon sysfs /devices/virtual/graphics/fb2/msm_fb_persist_mode u:object_r:sysfs_graphics:s0
genfscon sysfs /devices/virtual/graphics/fb3/lineptr_value u:object_r:sysfs_graphics:s0
genfscon sysfs /devices/virtual/graphics/fb3/msm_fb_persist_mode u:object_r:sysfs_graphics:s0
genfscon sysfs /devices/virtual/misc/mnh_sm u:object_r:sysfs_easel:s0
genfscon sysfs /devices/soc/8c0000.qcom,msm-cam u:object_r:sysfs_camera:s0
genfscon sysfs /devices/soc0 u:object_r:sysfs_soc:s0
genfscon sysfs /devices/soc/caa0000.qcom,jpeg u:object_r:sysfs_camera:s0
genfscon sysfs /devices/soc/caa4000.qcom,fd u:object_r:sysfs_camera:s0
genfscon sysfs /devices/soc/780000.qcom,msm-core/uio/uio1/name u:object_r:sysfs_thermal:s0
genfscon sysfs /devices/soc/800f000.qcom,spmi/spmi-0/spmi0-02/800f000.qcom,spmi:qcom,pmi8998@2:qpnp,fg/power_supply/bms u:object_r:sysfs_batteryinfo:s0
genfscon sysfs /devices/soc/800f000.qcom,spmi/spmi-0/spmi0-02/800f000.qcom,spmi:qcom,pmi8998@2:qpnp,fg/power_supply/bms/capacity u:object_r:sysfs_batteryinfo:s0
genfscon sysfs /devices/soc/800f000.qcom,spmi/spmi-0/spmi0-02/800f000.qcom,spmi:qcom,pmi8998@2:qcom,qpnp-smb2/power_supply/battery/capacity u:object_r:sysfs_batteryinfo:s0
genfscon sysfs /devices/soc/800f000.qcom,spmi/spmi-0/spmi0-02/800f000.qcom,spmi:qcom,pmi8998@2:qcom,usb-pdphy@1700/usbpd/usbpd0 u:object_r:sysfs_usb_c:s0
genfscon sysfs /devices/soc/800f000.qcom,spmi/spmi-0/spmi0-02/800f000.qcom,spmi:qcom,pmi8998@2:qcom,qpnp-smb2/power_supply/usb/present u:object_r:sysfs_usb_c:s0
genfscon sysfs /devices/soc/800f000.qcom,spmi/spmi-0/spmi0-02/800f000.qcom,spmi:qcom,pmi8998@2:qcom,qpnp-smb2/power_supply/battery/input_current_limited u:object_r:sysfs_usb_c:s0
genfscon sysfs /devices/soc/c1b5000.i2c/i2c-7/7-0008/c1b5000.i2c:qcom,smb138x@8:qcom,smb138x-parallel-slave@1000/power_supply/parallel/charging_enabled u:object_r:sysfs_usb_c:s0
genfscon sysfs /devices/soc/c1b5000.i2c/i2c-7/7-0008/c1b5000.i2c:qcom,smb138x@8:qcom,smb138x-parallel-slave@1000/power_supply/parallel/input_suspend u:object_r:sysfs_batteryinfo:s0
genfscon sysfs /devices/soc/c1b5000.i2c/i2c-7/7-0008/c1b5000.i2c:qcom,smb138x@8:qcom,smb138x-parallel-slave@1000/power_supply/parallel/connector_health u:object_r:sysfs_usb_c:s0
genfscon sysfs /devices/soc/c1b5000.i2c/i2c-7/7-0008/c1b5000.i2c:qcom,smb138x@8:qcom,smb138x-parallel-slave@1000/power_supply/parallel/model_name u:object_r:sysfs_usb_c:s0
genfscon sysfs /devices/soc/c1b5000.i2c/i2c-7/7-0008/c1b5000.i2c:qcom,smb138x@8:qcom,smb138x-parallel-slave@1000/power_supply/parallel/charger_temp u:object_r:sysfs_usb_c:s0
genfscon sysfs /devices/soc/c1b5000.i2c/i2c-7/7-0008/c1b5000.i2c:qcom,smb138x@8:qcom,smb138x-parallel-slave@1000/power_supply/parallel/parallel_mode u:object_r:sysfs_usb_c:s0
genfscon sysfs /devices/soc/c1b5000.i2c/i2c-7/7-0008/c1b5000.i2c:qcom,smb138x@8:qcom,smb138x-parallel-slave@1000/power_supply/parallel/input_current_limited u:object_r:sysfs_usb_c:s0
genfscon sysfs /class/qcom-battery/parallel_pct u:object_r:sysfs_batteryinfo:s0
genfscon sysfs /bus/msm_subsys u:object_r:sysfs_msm_subsys:s0
genfscon sysfs /bus/esoc u:object_r:sysfs_esoc:s0
genfscon sysfs /module/subsystem_restart u:object_r:sysfs_msm_subsys_restart:s0
genfscon sysfs /kernel/boot_adsp/boot u:object_r:sysfs_msm_subsys:s0
genfscon sysfs /kernel/boot_slpi/boot u:object_r:sysfs_msm_subsys:s0
genfscon sysfs /devices/soc/c1b7000.i2c/i2c-9/9-0008 u:object_r:sysfs_easel:s0
genfscon sysfs /class/typec u:object_r:sysfs_usb_c:s0
genfscon sysfs /class/typec/usbc0 u:object_r:sysfs_usb_c:s0
genfscon sysfs /devices/soc/a800000.ssusb/a800000.dwc3/xhci-hcd.0.auto/usb1 u:object_r:sysfs_usb_device:s0
genfscon sysfs /devices/soc/a800000.ssusb/a800000.dwc3/xhci-hcd.0.auto/usb2 u:object_r:sysfs_usb_device:s0
genfscon sysfs /devices/soc/1c00000.qcom,pcie/pci0000:00/0000:00:00.0/0000:01:00.0/usb1 u:object_r:sysfs_usb_device:s0
genfscon sysfs /devices/soc/1c00000.qcom,pcie/pci0000:00/0000:00:00.0/0000:01:00.0/usb2 u:object_r:sysfs_usb_device:s0
genfscon sysfs /devices/soc/800f000.qcom,spmi/spmi-0/spmi0-02/800f000.qcom,spmi:qcom,pmi8998@2:qcom,usb-pdphy@1700/usbpd0/typec u:object_r:sysfs_usb_c:s0
genfscon sysfs /module/diagchar u:object_r:sysfs_diag:s0
genfscon sysfs /module/msm_performance/parameters/managed_cpus u:object_r:sysfs_perf:s0
genfscon sysfs /module/msm_performance/parameters/num_clusters u:object_r:sysfs_perf:s0
genfscon sysfs /module/msm_performance/events/cpu_hotplug u:object_r:sysfs_perf:s0
genfscon sysfs /module/msm_performance/parameters/cpu_min_freq u:object_r:sysfs_perf:s0
genfscon sysfs /module/msm_performance/parameters/cpu_max_freq u:object_r:sysfs_perf:s0
genfscon sysfs /module/msm_performance/workload_modes/aggr_iobusy u:object_r:sysfs_perf:s0
genfscon sysfs /module/msm_performance/workload_modes/aggr_mode u:object_r:sysfs_perf:s0
genfscon sysfs /kernel/irq_helper/irq_blacklist_on u:object_r:sysfs_irq:s0
genfscon sysfs /module/cpu_boost/parameters/input_boost_freq u:object_r:sysfs_msm_subsys:s0
genfscon sysfs /module/cpu_boost/parameters/input_boost_ms u:object_r:sysfs_msm_subsys:s0
genfscon sysfs /module/msm_thermal/core_control/enabled u:object_r:sysfs_msm_subsys:s0
genfscon sysfs /module/lpm_levels/system/pwr/cpu0/ret/idle_enabled u:object_r:sysfs_msm_subsys:s0
genfscon sysfs /module/lpm_levels/system/pwr/cpu1/ret/idle_enabled u:object_r:sysfs_msm_subsys:s0
genfscon sysfs /module/lpm_levels/system/pwr/cpu2/ret/idle_enabled u:object_r:sysfs_msm_subsys:s0
genfscon sysfs /module/lpm_levels/system/pwr/cpu3/ret/idle_enabled u:object_r:sysfs_msm_subsys:s0
genfscon sysfs /module/lpm_levels/system/perf/cpu4/ret/idle_enabled u:object_r:sysfs_msm_subsys:s0
genfscon sysfs /module/lpm_levels/system/perf/cpu5/ret/idle_enabled u:object_r:sysfs_msm_subsys:s0
genfscon sysfs /module/lpm_levels/system/perf/cpu6/ret/idle_enabled u:object_r:sysfs_msm_subsys:s0
genfscon sysfs /module/lpm_levels/system/perf/cpu7/ret/idle_enabled u:object_r:sysfs_msm_subsys:s0
genfscon sysfs /module/lpm_levels/system/pwr/pwr-l2-dynret/idle_enabled u:object_r:sysfs_msm_subsys:s0
genfscon sysfs /module/lpm_levels/system/pwr/pwr-l2-ret/idle_enabled u:object_r:sysfs_msm_subsys:s0
genfscon sysfs /module/lpm_levels/system/perf/perf-l2-dynret/idle_enabled u:object_r:sysfs_msm_subsys:s0
genfscon sysfs /module/lpm_levels/system/perf/perf-l2-ret/idle_enabled u:object_r:sysfs_msm_subsys:s0
genfscon sysfs /module/lpm_levels/parameters/sleep_disabled u:object_r:sysfs_msm_subsys:s0
genfscon debugfs /kgsl/proc u:object_r:debugfs_kgsl:s0
genfscon debugfs /clk/debug_suspend u:object_r:debugfs_clk:s0
genfscon debugfs /wlan0 u:object_r:debugfs_wlan:s0
genfscon debugfs /rpm_stats u:object_r:debugfs_rpm:s0
genfscon debugfs /rpm_master_stats u:object_r:debugfs_rpm:s0
genfscon debugfs /ion u:object_r:debugfs_ion:s0
genfscon debugfs /ipc_logging u:object_r:debugfs_ipc:s0
genfscon debugfs /system_stats u:object_r:debugfs_rpm:s0
genfscon debugfs /tcpm/usbpd0 u:object_r:debugfs_usb:s0
genfscon debugfs /pd_engine/usbpd0 u:object_r:debugfs_usb:s0
genfscon debugfs /ipc_logging/smblib/log u:object_r:debugfs_usb:s0
genfscon debugfs /msm_ipc_router u:object_r:debugfs_ipc:s0
genfscon debugfs /mdp u:object_r:debugfs_mdp:s0
genfscon debugfs /rmt_storage u:object_r:debugfs_rmt_storage:s0
genfscon debugfs /icnss u:object_r:debugfs_icnss:s0
genfscon debugfs /ufshcd0 u:object_r:debugfs_ufs:s0
genfscon debugfs /dma_buf/bufinfo u:object_r:debugfs_dma_bufinfo:s0
================================================
FILE: sepolicy/vendor/gpuservice.te
================================================
allow gpuservice dumpstate:fd use;
allow gpuservice dumpstate:fifo_file write;
================================================
FILE: sepolicy/vendor/hal_audio_default.te
================================================
r_dir_file(hal_audio_default, sysfs_soc)
allow hal_audio_default perfd:unix_stream_socket connectto;
allow hal_audio_default perfd_socket:sock_file write;
userdebug_or_eng(`
allow hal_audio diag_device:chr_file rw_file_perms;
')
allow hal_audio_default audio_vendor_data_file:dir create_dir_perms;
allow hal_audio_default audio_vendor_data_file:file create_file_perms;
r_dir_file(hal_audio_default, sysfs_audio)
set_prop(hal_audio_default, mqa_hd_prop)
allow hal_audio_default firmware_file:dir r_dir_perms;
allow hal_audio_default firmware_file:file r_file_perms;
allow hal_audio_default mnt_vendor_file:dir search;
================================================
FILE: sepolicy/vendor/hal_bluetooth_default.te
================================================
allow hal_bluetooth_default bt_device:chr_file rw_file_perms;
allow hal_bluetooth_default wcnss_filter:unix_stream_socket connectto;
# talk to system_server to set priority
allow hal_bluetooth fwk_scheduler_hwservice:hwservice_manager find;
allow hal_bluetooth system_server:binder call;
set_prop(hal_bluetooth_default, wc_prop)
================================================
FILE: sepolicy/vendor/hal_bootctl.te
================================================
# These are the permissions required to use the boot_control HAL implemented
# here: hardware/qcom/bootctrl/boot_control.c
# Getting and setting GPT attributes for the bootloader iterates over all the
# partition names in the block_device directory /dev/block/.../by-name
allow hal_bootctl block_device:dir r_dir_perms;
# Edit the attributes stored in the GPT.
allow hal_bootctl gpt_block_device:blk_file rw_file_perms;
allow hal_bootctl ab_block_device:blk_file getattr;
allow hal_bootctl boot_block_device:blk_file rw_file_perms;
allow hal_bootctl modem_block_device:blk_file getattr;
allow hal_bootctl system_block_device:blk_file getattr;
# Access /dev/sgN devices (generic SCSI) to write the
# A/B slot selection for the XBL partition. Allow also to issue a
# UFS_IOCTL_QUERY ioctl.
allow hal_bootctl sg_device:chr_file rw_file_perms;
allow hal_bootctl self:capability sys_admin;
allow hal_bootctl tmpfs:lnk_file r_file_perms;
# Read the sysfs to lookup what /dev/sgN device
# corresponds to the XBL partitions.
allow hal_bootctl sysfs:dir r_dir_perms;
# Write to the XBL devices.
allow hal_bootctl xbl_block_device:blk_file rw_file_perms;
# Expose a socket for brokered boot message access for hal_oemlock.
allow hal_bootctl hal_bootctl_socket:sock_file create_file_perms;
================================================
FILE: sepolicy/vendor/hal_bootctl_default.te
================================================
allow hal_bootctl_default sysfs_scsi_devices_other:file rw_file_perms;
allow hal_bootctl_default sysfs_scsi_devices_other:dir { open read search };
================================================
FILE: sepolicy/vendor/hal_camera.te
================================================
# communicate with perfd
allow hal_camera perfd:unix_stream_socket connectto;
allow hal_camera perfd_socket:sock_file write;
allow hal_camera perfd_socket:sock_file w_file_perms;
allow hal_camera self:capability sys_nice;
# communicate with camera
#allow hal_camera camera:unix_dgram_socket sendto;
#allow hal_camera camera_data_file:sock_file write;
#allow hal_camera camera_device:chr_file rw_file_perms;
allow hal_camera gpu_device:chr_file rw_file_perms;
# access to /dev/input/event{5,10}
allow hal_camera input_device:dir r_dir_perms;
allow hal_camera input_device:chr_file r_file_perms;
set_prop(hal_camera, camera_prop)
#allow hal_camera sysfs_enable_ps_sensor:file w_file_perms;
r_dir_file(hal_camera, sysfs_type)
# find libraries
allow hal_camera system_file:dir r_dir_perms;
allow hal_camera qdisplay_service:service_manager find;
# talk to system_server
allow hal_camera system_server:unix_stream_socket { read write };
allow hal_camera self:socket { create ioctl read write };
# Grant access to Qualcomm MSM Interface (QMI) radio sockets
# qmux_socket(hal_camera)
# allow hal_camera to call some socket ioctls
allowxperm hal_camera self:socket ioctl { IPC_ROUTER_IOCTL_LOOKUP_SERVER IPC_ROUTER_IOCTL_BIND_CONTROL_PORT };
# ignore spurious denial
dontaudit hal_camera graphics_device:dir search;
userdebug_or_eng(`
allow hal_camera diag_device:chr_file rw_file_perms;
')
# access easel dev nodes
allow hal_camera easel_device:chr_file { read write ioctl open getattr };
allow hal_camera sysfs_easel:file rw_file_perms;
# access hexagon
allow hal_camera qdsp_device:chr_file r_file_perms;
================================================
FILE: sepolicy/vendor/hal_camera_default.te
================================================
allow hal_camera_default input_device:dir r_dir_perms;
allow hal_camera_default sysfs_laser:file w_file_perms;
vndbinder_use(hal_camera_default);
allow hal_camera_default qdisplay_service:service_manager { find };
allow hal_camera_default hal_graphics_mapper_hwservice:hwservice_manager find;
hal_client_domain(hal_camera_default, hal_configstore)
binder_call(hal_camera_default, hal_graphics_composer)
binder_call(hal_camera_default, system_server)
binder_call(hal_camera_default, hal_graphics_allocator)
# For interfacing with PowerHAL and ThermalHAL
hal_client_domain(hal_camera_default, hal_power)
hal_client_domain(hal_camera_default, hal_thermal)
# For camera team debugging
userdebug_or_eng(`
allow hal_camera_default camera_vendor_data_file:dir create_dir_perms;
allow hal_camera_default camera_vendor_data_file:file create_file_perms;
')
allow hal_camera_default persist_sensors_file:dir search;
allow hal_camera_default persist_sensors_file:file r_file_perms;
allow hal_camera_default stm_device:chr_file { ioctl open read };
r_dir_file(hal_camera_default, proc_sensor)
r_dir_file(hal_camera_default, persist_file);
allow hal_camera_default firmware_file:dir r_dir_perms;
allow hal_camera_default firmware_file:file r_file_perms;
allow hal_camera_default mnt_vendor_file:lnk_file r_file_perms;
allow hal_camera_default mnt_vendor_file:dir r_dir_perms;
================================================
FILE: sepolicy/vendor/hal_cas_default.te
================================================
# Allow CAS HAL to use vendor-binder service
vndbinder_use(hal_cas_default);
================================================
FILE: sepolicy/vendor/hal_contexthub.te
================================================
# Allow context hub HAL to communicate with daemon via socket
allow hal_contexthub_default chre:unix_stream_socket connectto;
allow hal_contexthub_default chre_socket:sock_file write;
================================================
FILE: sepolicy/vendor/hal_drm_clearkey.te
================================================
# policy for /vendor/bin/hw/android.hardware.drm@1.1-service.clearkey
type hal_drm_clearkey, domain;
type hal_drm_clearkey_exec, exec_type, vendor_file_type, file_type;
init_daemon_domain(hal_drm_clearkey)
hal_server_domain(hal_drm_clearkey, hal_drm)
vndbinder_use(hal_drm_clearkey);
allow hal_drm_clearkey { appdomain -isolated_app }:fd use;
================================================
FILE: sepolicy/vendor/hal_drm_default.te
================================================
allow hal_drm_default vndbinder_device:chr_file rw_file_perms;
================================================
FILE: sepolicy/vendor/hal_drm_widevine.te
================================================
# define SELinux domain
type hal_drm_widevine, domain;
hal_server_domain(hal_drm_widevine, hal_drm)
type hal_drm_widevine_exec, exec_type, vendor_file_type, file_type;
init_daemon_domain(hal_drm_widevine)
allow hal_drm mediacodec:fd use;
allow hal_drm { appdomain -isolated_app }:fd use;
# The Qualcomm DRM-HAL implementation uses a vendor-binder service provided
# by the HWC HAL.
vndbinder_use(hal_drm_widevine);
allow hal_drm_widevine qdisplay_service:service_manager { find };
binder_call(hal_drm_widevine, hal_graphics_composer)
allow hal_drm_widevine firmware_file:dir search;
allow hal_drm_widevine firmware_file:file r_file_perms;
allow hal_drm_widevine hal_allocator_server:fd use;
allow hal_drm_widevine mediadrm_vendor_data_file:dir create_dir_perms;
allow hal_drm_widevine mediadrm_vendor_data_file:file create_file_perms;
================================================
FILE: sepolicy/vendor/hal_dumpstate_impl.te
================================================
type hal_dumpstate_impl, domain;
hal_server_domain(hal_dumpstate_impl, hal_dumpstate)
type hal_dumpstate_impl_exec, exec_type, vendor_file_type, file_type;
init_daemon_domain(hal_dumpstate_impl)
# Execute dump scripts from vendor partition
allow hal_dumpstate_impl vendor_shell_exec:file rx_file_perms;
allow hal_dumpstate_impl vendor_toolbox_exec:file rx_file_perms;
userdebug_or_eng(`
# smlog_dump
domain_auto_trans(hal_dumpstate_impl, smlog_dump_exec, smlog_dump)
allow hal_dumpstate_impl modem_dump_file:dir create_dir_perms;
allow hal_dumpstate_impl modem_dump_file:file create_file_perms;
allow hal_dumpstate_impl radio_vendor_data_file:dir r_dir_perms;
allow hal_dumpstate_impl netmgr_data_file:dir r_dir_perms;
allow hal_dumpstate_impl radio_vendor_data_file:file r_file_perms;
allow hal_dumpstate_impl netmgr_data_file:file r_file_perms;
allow hal_dumpstate_impl sysfs_usb_device:dir r_dir_perms;
allow hal_dumpstate_impl sysfs_usb_device:file r_file_perms;
allow hal_dumpstate_impl sysfs_msm_subsys:file write;
set_prop(hal_dumpstate_impl, modem_diag_prop)
')
allow hal_dumpstate_impl uio_device:chr_file rw_file_perms;
r_dir_file(hal_dumpstate_impl, sysfs_uio)
r_dir_file(hal_dumpstate_impl, sysfs_rmtfs)
r_dir_file(hal_dumpstate_impl, sysfs_msm_subsys)
r_dir_file(hal_dumpstate_impl, sysfs_soc)
r_dir_file(hal_dumpstate_impl, sysfs_thermal)
r_dir_file(hal_dumpstate_impl, sysfs_easel)
allow hal_dumpstate_impl debugfs_ion:dir r_dir_perms;
allow hal_dumpstate_impl debugfs_ion:file r_file_perms;
allow hal_dumpstate_impl debugfs_rpm:file r_file_perms;
allow hal_dumpstate_impl debugfs_wlan:dir r_dir_perms;
allow hal_dumpstate_impl debugfs_wlan:file r_file_perms;
allow hal_dumpstate_impl debugfs_icnss:dir r_dir_perms;
allow hal_dumpstate_impl debugfs_icnss:file r_file_perms;
allow hal_dumpstate_impl debugfs_ipc:dir r_dir_perms;
allow hal_dumpstate_impl debugfs_ipc:file r_file_perms;
allow hal_dumpstate_impl proc_stat:file r_file_perms;
allow hal_dumpstate_impl debugfs_ufs:dir r_dir_perms;
allow hal_dumpstate_impl debugfs_ufs:file r_file_perms;
allow hal_dumpstate_impl dumpstate:fifo_file w_file_perms;
# Access to files for dumping
allow hal_dumpstate_impl sysfs:dir r_dir_perms;
# rpm stat
# usb logs
allow hal_dumpstate_impl debugfs_usb:file r_file_perms;
#Access display debug data
allow hal_dumpstate_impl display_vendor_data_file:dir r_dir_perms;
allow hal_dumpstate_impl display_vendor_data_file:file r_file_perms;
# Access to touch firmware info
allow hal_dumpstate_impl sysfs_touch:dir r_dir_perms;
allow hal_dumpstate_impl sysfs_touch:file rw_file_perms;
# Access to UFS info
allow hal_dumpstate_impl sysfs_scsi_devices_0000:dir r_dir_perms;
allow hal_dumpstate_impl sysfs_scsi_devices_0000:file r_file_perms;
# Access Sidecar entries
allow hal_dumpstate_impl usb_serial_device:chr_file rw_file_perms;
allow hal_dumpstate_impl usb_serial_device:file rw_file_perms;
allow hal_dumpstate_impl shell_data_file:file getattr;
userdebug_or_eng(`allow hal_dumpstate_impl debugfs_dma_bufinfo:file r_file_perms;')
dontaudit hal_dumpstate_impl debugfs_dma_bufinfo:file r_file_perms;
================================================
FILE: sepolicy/vendor/hal_fingerprint.te
================================================
allow hal_fingerprint sysfs_fingerprint:dir r_dir_perms;
allow hal_fingerprint sysfs_fingerprint:file rw_file_perms;
allow hal_fingerprint sysfs_msm_subsys:dir search;
allow hal_fingerprint sysfs_msm_subsys:file r_file_perms;
allow hal_fingerprint tee_device:file rw_file_perms;
allow hal_fingerprint tee_device:chr_file rw_file_perms;
allow hal_fingerprint uhid_device:chr_file rw_file_perms;
allow hal_fingerprint sysfs_camera:dir search;
allow hal_fingerprint sysfs_camera:file r_file_perms;
================================================
FILE: sepolicy/vendor/hal_fingerprint_default.te
================================================
typeattribute hal_fingerprint_default binder_in_vendor_violators;
binder_use(hal_fingerprint_default)
allow hal_fingerprint_default firmware_file:dir r_dir_perms;
allow hal_fingerprint_default firmware_file:file r_file_perms;
allow hal_fingerprint_default tee_device:chr_file rw_file_perms;
allow hal_fingerprint_default vndbinder_device:chr_file rw_file_perms;
# TODO(b/36644492): Remove data_between_core_and_vendor_violators once
# hal_fingerprint no longer directly accesses fingerprintd_data_file.
typeattribute hal_fingerprint_default data_between_core_and_vendor_violators;
# access to /data/system/users/[0-9]+/fpdata
allow hal_fingerprint_default fingerprintd_data_file:file create_file_perms;
allow hal_fingerprint_default fingerprintd_data_file:dir rw_dir_perms;
================================================
FILE: sepolicy/vendor/hal_gatekeeper.te
================================================
set_prop(hal_gatekeeper, keymaster_prop)
get_prop(hal_gatekeeper, tee_listener_prop)
================================================
FILE: sepolicy/vendor/hal_gnss_qti.te
================================================
type hal_gnss_qti, domain;
hal_server_domain(hal_gnss_qti, hal_gnss)
type hal_gnss_qti_exec, exec_type, vendor_file_type, file_type;
init_daemon_domain(hal_gnss_qti)
r_dir_file(hal_gnss_qti, sysfs_msm_subsys)
vndbinder_use(hal_gnss_qti)
allow hal_gnss_qti sysfs_soc:dir r_dir_perms;
allow hal_gnss_qti sysfs_soc:file r_file_perms;
binder_call(hal_gnss_qti, per_mgr)
allow hal_gnss_qti per_mgr_service:service_manager find;
# /data/vendor/location
allow hal_gnss_qti location_data_file:fifo_file { open read setattr write };
allow hal_gnss_qti location_data_file:dir create_dir_perms;
allow hal_gnss_qti location_data_file:sock_file write;
allow hal_gnss_qti location:unix_stream_socket connectto;
allow hal_gnss_qti self:socket create_socket_perms;
allowxperm hal_gnss_qti self:socket ioctl msm_sock_ipc_ioctls;
unix_socket_connect(hal_gnss_qti, netmgrd, netmgrd)
allow hal_gnss_qti netmgrd_socket:dir search;
allow hal_gnss_qti self:netlink_generic_socket { bind create read };
allow hal_gnss_qti self:netlink_route_socket { bind create nlmsg_read read write };
# Most HALs are not allowed to use network sockets. Qcom library
# libqdi is used across multiple processes which are clients of
# netmgrd including the GNSS HAL. libqdi first attempts to get the network
# interface using an IOCTL on a UDP INET socket, which isn't allowed here.
# If that fails, it falls back to using libc's if_nameindex() which requires
# a netlink route socket, which HALs may use. Due to the initial
# attempt to use a UDP socket, we still see a selinux denial,
# but it is safe to ignore.
# TODO (b/37730994) Remove udp_socket requirement from
# libqdi and have all its clients use netlink route
# sockets.
dontaudit hal_gnss_qti self:udp_socket create;
r_dir_file(hal_gnss_qti, sysfs_esoc)
================================================
FILE: sepolicy/vendor/hal_graphics_composer_default.te
================================================
# Binder access (for display.qservice)
vndbinder_use(hal_graphics_composer_default)
allow hal_graphics_composer_default qdisplay_service:service_manager { add find };
allow hal_graphics_composer_default persist_display_file:dir search;
allow hal_graphics_composer_default persist_display_file:file r_file_perms;
allow hal_graphics_composer_default sysfs_camera:dir search;
allow hal_graphics_composer_default sysfs_camera:file r_file_perms;
allow hal_graphics_composer_default sysfs_msm_subsys:dir search;
allow hal_graphics_composer_default sysfs_msm_subsys:file r_file_perms;
allow hal_graphics_composer_default sysfs_mdss_mdp_caps:file r_file_perms;
allow hal_graphics_composer_default persist_file:dir search;
allow hal_graphics_composer_default persist_file:lnk_file read;
# Allow dir search in '/mnt/vendor'
allow hal_graphics_composer_default mnt_vendor_file:dir search;
allow hal_graphics_composer_default mnt_vendor_file:file r_file_perms;
# Allow dir search in '/mnt/vendor/persist/display(/.*)?'
allow hal_graphics_composer_default persist_display_file:dir r_dir_perms;
allow hal_graphics_composer_default persist_display_file:file r_file_perms;
allow hal_graphics_composer_default firmware_file:dir r_dir_perms;
allow hal_graphics_composer_default firmware_file:file r_file_perms;
allow hal_graphics_composer_default hal_graphics_mapper_hwservice:hwservice_manager find;
r_dir_file(hal_graphics_composer_default, sysfs_leds)
# TODO(b/37666508): Remove the following line upon resolution of the bug
allow hal_graphics_composer_default video_device:chr_file rw_file_perms;
# HWC_UeventThread
allow hal_graphics_composer_default self:netlink_kobject_uevent_socket create_socket_perms_no_ioctl;
# Access /sys/devices/virtual/graphics/fb0
r_dir_file(hal_graphics_composer_default, sysfs_type)
r_dir_file(hal_graphics_composer_default, sysfs_graphics)
allow hal_graphics_composer_default sysfs_graphics:file rw_file_perms;
allow hal_graphics_composer_default display_vendor_data_file:dir create_dir_perms;
allow hal_graphics_composer_default display_vendor_data_file:file create_file_perms;
userdebug_or_eng(`
allow hal_graphics_composer_default debugfs_mdp:dir r_dir_perms;
allow hal_graphics_composer_default debugfs_mdp:file r_file_perms;
')
allow hal_graphics_composer_default perfd_socket:sock_file write;
allow hal_graphics_composer_default perfd:unix_stream_socket connectto;
allow hal_graphics_composer_default mnt_vendor_file:dir search;
allow hal_graphics_composer_default mnt_vendor_file:file r_file_perms;
================================================
FILE: sepolicy/vendor/hal_health_default.te
================================================
allow hal_health_default sysfs_batteryinfo:dir search;
allow hal_health_default sysfs_batteryinfo:file r_file_perms;
allow hal_health_default sysfs_msm_subsys:dir search;
allow hal_health_default kmsg_device:chr_file rw_file_perms;
r_dir_file(hal_health_default, persist_file);
r_dir_file(hal_health_default, sysfs_msm_subsys)
allow hal_health_default debugfs_ufs:dir search;
allow hal_health_default sysfs_scsi_devices_0000:dir search;
allow hal_health_default debugfs_ufs:file { getattr open read };
allow hal_health_default sysfs_scsi_devices_0000:file { getattr open read };
allow hal_health_default mnt_vendor_file:dir r_dir_perms;
================================================
FILE: sepolicy/vendor/hal_imsrtp.te
================================================
#ims rtp service
type hal_imsrtp, domain;
type hal_imsrtp_exec, exec_type, vendor_file_type, file_type;
# Started by init
init_daemon_domain(hal_imsrtp)
net_domain(hal_imsrtp)
hwbinder_use(hal_imsrtp)
get_prop(hal_imsrtp, hwservicemanager_prop)
add_hwservice(hal_imsrtp, hal_imsrtp_hwservice)
allow hal_imsrtp self:socket create_socket_perms;
unix_socket_connect(hal_imsrtp, ims, ims)
allow hal_imsrtp sysfs_timestamp_switch:file r_file_perms;
# ioctlcmd=c302
allowxperm hal_imsrtp self:socket ioctl msm_sock_ipc_ioctls;
allow hal_imsrtp self:capability net_bind_service;
allow hal_imsrtp sysfs_timestamp_switch:file r_file_perms;
allow hal_imsrtp ion_device:chr_file r_file_perms;
allow hal_imsrtp sysfs_data:file r_file_perms;
r_dir_file(hal_imsrtp, sysfs_msm_subsys)
r_dir_file(hal_imsrtp, sysfs_diag)
r_dir_file(hal_imsrtp, sysfs_soc)
r_dir_file(hal_imsrtp, sysfs_esoc)
allow hal_imsrtp ion_device:chr_file r_file_perms;
get_prop(hal_imsrtp, ims_prop)
binder_call(hal_imsrtp, radio)
================================================
FILE: sepolicy/vendor/hal_keymaster.te
================================================
get_prop(hal_keymaster, tee_listener_prop)
================================================
FILE: sepolicy/vendor/hal_keymaster_qti.te
================================================
type hal_keymaster_qti, domain;
hal_server_domain(hal_keymaster_qti, hal_keymaster)
type hal_keymaster_qti_exec, exec_type, vendor_file_type, file_type;
init_daemon_domain(hal_keymaster_qti)
dontaudit hal_keymaster_qti firmware_file:dir search;
get_prop(hal_keymaster_qti, tee_listener_prop)
================================================
FILE: sepolicy/vendor/hal_light.te
================================================
allow hal_light sysfs_graphics:dir search;
allow hal_light sysfs_graphics:file rw_file_perms;
================================================
FILE: sepolicy/vendor/hal_light_default.te
================================================
allow hal_light_default sysfs_msm_subsys:dir search;
================================================
FILE: sepolicy/vendor/hal_memtrack_default.te
================================================
allow hal_memtrack_default debugfs_kgsl:file { open read getattr };
================================================
FILE: sepolicy/vendor/hal_neuralnetworks_hvx.te
================================================
type hal_neuralnetworks_hvx, domain;
hal_server_domain(hal_neuralnetworks_hvx, hal_neuralnetworks)
type hal_neuralnetworks_hvx_exec, exec_type, vendor_file_type, file_type;
init_daemon_domain(hal_neuralnetworks_hvx)
allow hal_neuralnetworks_hvx ion_device:chr_file { read open ioctl };
allow hal_neuralnetworks_hvx qdsp_device:chr_file { read open ioctl };
================================================
FILE: sepolicy/vendor/hal_nfc_default.te
================================================
# Data file accesses.
allow hal_nfc_default nfc_vendor_data_file:dir create_dir_perms;
allow hal_nfc_default nfc_vendor_data_file:file create_file_perms;
get_prop(hal_nfc_default, nfc_service_prop)
get_prop(nfc, nfc_service_prop)
dontaudit hal_nfc_default nxpese_hwservice:hwservice_manager find;
dontaudit hal_nfc_default nxpnfc_hwservice:hwservice_manager add;
================================================
FILE: sepolicy/vendor/hal_oemlock_default.te
================================================
type hal_oemlock_default, domain;
hal_server_domain(hal_oemlock_default, hal_oemlock)
allow hal_oemlock_default hal_bootctl_socket:sock_file write;
allow hal_oemlock_default hal_bootctl:unix_stream_socket connectto;
type hal_oemlock_default_exec, exec_type, vendor_file_type, file_type;
init_daemon_domain(hal_oemlock_default)
================================================
FILE: sepolicy/vendor/hal_power_default.te
================================================
allow hal_power_default perfd:unix_stream_socket connectto;
allow hal_power_default perfd_socket:sock_file write;
allow hal_power_default sysfs_graphics:dir search;
allow hal_power_default sysfs_graphics:file r_file_perms;
allow hal_power_default debugfs_rpm:file r_file_perms;
allow hal_power_default debugfs_wlan:dir r_dir_perms;
allow hal_power_default debugfs_wlan:file r_file_perms;
allow hal_power_default sysfs_soc:dir search;
allow hal_power_default sysfs_soc:file r_file_perms;
# To do powerhint on nodes defined in powerhint.json
allow hal_power_default sysfs_msm_subsys:dir search;
allow hal_power_default sysfs_msm_subsys:file rw_file_perms;
allow hal_power_default sysfs_devices_system_cpu:file rw_file_perms;
allow hal_power_default latency_device:chr_file rw_file_perms;
# To get/set powerhal state property
set_prop(hal_power_default, power_prop)
================================================
FILE: sepolicy/vendor/hal_rcsservice.te
================================================
type hal_rcsservice, domain;
type hal_rcsservice_exec, exec_type, vendor_file_type, file_type;
# Started by init
init_daemon_domain(hal_rcsservice)
net_domain(hal_rcsservice)
get_prop(hal_rcsservice, hwservicemanager_prop)
# To register imsrcsd to hwBinder
hwbinder_use(hal_rcsservice)
# add IUceSerive Hidl interface
add_hwservice(hal_rcsservice, hal_imsrcsd_hwservice)
get_prop(hal_rcsservice, hwservicemanager_prop)
get_prop(hal_rcsservice, ims_prop)
# allow hal to read sysfs file
r_dir_file(hal_rcsservice, sysfs_msm_subsys)
r_dir_file(hal_rcsservice, sysfs_diag)
r_dir_file(hal_rcsservice, sysfs_esoc)
allow hal_rcsservice sysfs_timestamp_switch:file r_file_perms;
unix_socket_connect(hal_rcsservice, ims, ims)
# imsrcsd to bind with UceShimService.apk
binder_call(hal_rcsservice, dataservice_app)
# imsrcsd needs read/write access to devpts
allow hal_rcsservice devpts:chr_file rw_file_perms;
================================================
FILE: sepolicy/vendor/hal_sensors_default.te
================================================
# read factory calibration and sensor configuration data
allow hal_sensors_default persist_file:dir search;
r_dir_file(hal_sensors_default, persist_sensors_file)
allow hal_sensors_default persist_file:lnk_file read;
allow hal_sensors_default mnt_vendor_file:dir search;
# interact with the sensors low power island (SLPI) CPU
allow hal_sensors_default self:socket { create ioctl read write };
allowxperm hal_sensors_default self:socket ioctl msm_sock_ipc_ioctls;
r_dir_file(hal_sensors_default, sysfs_msm_subsys);
r_dir_file(hal_sensors_default, sysfs_esoc);
allow hal_sensors_default qdsp_device:chr_file r_file_perms;
userdebug_or_eng(`
r_dir_file(hal_sensors_default, sysfs_diag)
allow hal_sensors_default sysfs_timestamp_switch:file r_file_perms;
')
# Interact with ToF sensor
allow hal_sensors_default input_device:chr_file r_file_perms;
allow hal_sensors_default input_device:dir r_dir_perms;
allow hal_sensors_default sysfs_laser:file rw_file_perms;
================================================
FILE: sepolicy/vendor/hal_sidecar_essential_default.te
================================================
# Copyright (c) 2017, The Linux Foundation. All rights reserved.
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions are
# met:
# * Redistributions of source code must retain the above copyright
# notice, this list of conditions and the following disclaimer.
# * Redistributions in binary form must reproduce the above
# copyright notice, this list of conditions and the following
# disclaimer in the documentation and/or other materials provided
# with the distribution.
# * Neither the name of The Linux Foundation nor the names of its
# contributors may be used to endorse or promote products derived
# from this software without specific prior written permission.
#
# THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED
# WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT
# ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS
# BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
# BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
# OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
# IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
type hal_sidecar_essential_default, domain;
hal_server_domain(hal_sidecar_essential_default, hal_sidecar_essential)
type hal_sidecar_essential_default_exec, exec_type, vendor_file_type, file_type;
init_daemon_domain(hal_sidecar_essential_default)
allow hal_sidecar_essential_default usb_serial_device:chr_file rw_file_perms;
allow hal_sidecar_essential_default usb_serial_device:file rw_file_perms;
binder_call(system_app, hal_sidecar_essential_default)
allow system_app hal_sidecar_essential_hwservice:hwservice_manager find;
add_hwservice(hal_sidecar_essential_server, hal_sidecar_essential_hwservice)
allow hal_sidecar_essential_client hal_sidecar_essential_hwservice:hwservice_manager find;
allow ueventd usb_serial_device:chr_file { create setattr unlink };
allow usb_serial_device tmpfs:filesystem associate;
set_prop(hal_sidecar_essential_default, system_prop)
================================================
FILE: sepolicy/vendor/hal_tetheroffload_default.te
================================================
# associate netdomain to use for accessing internet sockets
net_domain(hal_tetheroffload_default)
userdebug_or_eng(`
# Allow using the logging file between ipacm and ipacm-diag
unix_socket_send(hal_tetheroffload_default, ipacm, hal_tetheroffload_default)
')
# Allow receiving NETLINK messages
allow hal_tetheroffload_default self:{
netlink_socket
netlink_generic_socket
} create_socket_perms_no_ioctl;
# Allow creating and modifying the PID file
allow hal_tetheroffload_default ipa_vendor_data_file:dir w_dir_perms;
allow hal_tetheroffload_default ipa_vendor_data_file:file create_file_perms;
# Register to hwbinder service
add_hwservice(hal_tetheroffload_default, hal_tetheroffload_hwservice)
hwbinder_use(hal_tetheroffload_default)
get_prop(hal_tetheroffload_default, hwservicemanager_prop)
================================================
FILE: sepolicy/vendor/hal_thermal_default.te
================================================
allow hal_thermal_default sysfs_thermal:dir { open read search };
allow hal_thermal_default sysfs_thermal:file { getattr open read };
allow hal_thermal_default sysfs_thermal:lnk_file read;
allow hal_thermal_default proc_stat:file { getattr open read };
================================================
FILE: sepolicy/vendor/hal_usb_default.te
================================================
allow hal_usb_default sysfs_msm_subsys:dir search;
allow hal_usb_default sysfs_msm_subsys:file r_file_perms;
allow hal_usb_default sysfs_usb_c:dir r_dir_perms;
allow hal_usb_default sysfs_usb_c:lnk_file read;
allow hal_usb_default sysfs_usb_c:file rw_file_perms;
allow hal_usb_default sysfs_usb_device:dir r_dir_perms;
allow hal_usb_default sysfs_usb_device:file rw_file_perms;
================================================
FILE: sepolicy/vendor/hal_vibrator_default.te
================================================
r_dir_file(hal_vibrator_default, sysfs_leds)
allow hal_vibrator_default sysfs_leds:file w_file_perms;
allow hal_vibrator_default sysfs_msm_subsys:file rw_file_perms;
allow hal_vibrator_default sysfs_msm_subsys:dir search;
# read-only permission to obtain the calibration data
r_dir_file(hal_vibrator_default, persist_haptics_file)
allow hal_vibrator_default persist_file:dir search;
allow hal_sensors_default mnt_vendor_file:dir search;
================================================
FILE: sepolicy/vendor/hal_vr.te
================================================
# interact with thermal_config
set_prop(hal_vr, thermal_prop)
# Access to touch vrmode node
allow hal_vr sysfs_touch:dir r_dir_perms;
allow hal_vr sysfs_touch:file rw_file_perms;
================================================
FILE: sepolicy/vendor/hal_wifi_default.te
================================================
# Allow wifi hal access to LOWI
allow hal_wifi_default location:unix_stream_socket connectto;
allow hal_wifi_default location_data_file:sock_file write;
# write to files owned by location daemon
allow hal_wifi_default location_data_file:dir create_dir_perms;
allow hal_wifi_default location_data_file:{ file fifo_file } create_file_perms;
allow hal_wifi_default wlan_device:chr_file w_file_perms;
# Allow wifi hal to read debug info from the driver.
r_dir_file(hal_wifi_default, proc_wifi_dbg)
userdebug_or_eng(`
# debugfs entries are only needed in user-debug or eng builds
# Allow wifi hal to access wlan debugfs files and directories
allow hal_wifi_default debugfs_wlan:dir r_dir_perms;
')
allow hal_wifi_supplicant { cnd ims }:unix_dgram_socket sendto;
================================================
FILE: sepolicy/vendor/hal_wifi_supplicant_default.te
================================================
# TODO(b/36657258): Remove data_between_core_and_vendor_violators once
# hal_wifi_supplicant no longer directly accesses wifi_data_file .
typeattribute hal_wifi_supplicant_default data_between_core_and_vendor_violators;
allow hal_wifi_supplicant_default wifi_data_file:dir create_dir_perms;
allow hal_wifi_supplicant_default wifi_data_file:file create_file_perms;
================================================
FILE: sepolicy/vendor/hbtp.te
================================================
# Policies for hbtp (host based touch processing)
type hbtp, domain;
type hbtp_exec, exec_type, vendor_file_type, file_type;
init_daemon_domain(hbtp)
hal_server_domain(hbtp, hal_hbtp)
# Allow access for /dev/hbtp_input
allow hbtp { hbtp_device qdsp_device dsp_device }:chr_file rw_file_perms;
allow hbtp hbtp_log_file:dir rw_dir_perms;
allow hbtp hbtp_log_file:file create_file_perms;
allow hbtp hbtp_cfg_file:dir r_dir_perms;
allow hbtp hbtp_cfg_file:file r_file_perms;
allow hbtp firmware_file:dir r_dir_perms;
allow hbtp firmware_file:file r_file_perms;
allow hbtp sysfs_usb_supply:file r_file_perms;
allow hbtp sysfs_usb_supply:dir r_dir_perms;
allow hbtp sysfs_graphics:file r_file_perms;
allow hbtp sysfs_graphics:dir r_dir_perms;
allow hbtp sysfs_battery_supply:file r_file_perms;
allow hbtp sysfs_battery_supply:dir r_dir_perms;
allow hbtp sysfs_soc:file r_file_perms;
allow hbtp sysfs_soc:dir r_dir_perms;
allow hbtp sysfs_usb_c:file r_file_perms;
allow hbtp sysfs_usb_c:dir r_dir_perms;
allow hbtp sysfs_msm_subsys:file r_file_perms;
allow hbtp sysfs_msm_subsys:dir r_dir_perms;
allow hbtp ion_device:chr_file r_file_perms;
allow hbtp self:netlink_kobject_uevent_socket { create read setopt bind };
# Allow the service to access wakelock sysfs
allow hbtp sysfs_wake_lock:file r_file_perms;
# Allow the service to change to system from root and have sys_nice capability
allow hbtp self:capability { setgid setuid sys_nice };
# Allow load touch driver as touchPD
r_dir_file(hbtp, adsprpcd_file)
# Allow the service to access wakelock capability
wakelock_use(hbtp)
# Allow hwbinder call from hal client to server and vice-versa
binder_call(hal_hbtp_client, hal_hbtp_server)
binder_call(hal_hbtp_server, hal_hbtp_client)
# Allow hwservice related rules
add_hwservice(hal_hbtp_server, hal_hbtp_hwservice)
allow hal_hbtp_client hal_hbtp_hwservice:hwservice_manager find;
hal_client_domain(hbtp, hal_allocator);
allow hbtp hbtp_vendor_data_file:dir create_dir_perms;
allow hbtp hbtp_vendor_data_file:file create_file_perms;
allow hbtp adsprpcd_file:dir { getattr search };
allow hbtp adsprpcd_file:dir read;
allow hbtp adsprpcd_file:file { getattr open read };
================================================
FILE: sepolicy/vendor/hbtp_cmd.te
================================================
type hbtp_cmd, domain;
type hbtp_cmd_exec, exec_type, file_type;
allow hbtp adsprpcd_file:dir { getattr search };
allow hbtp_cmd hal_hbtp_hwservice:hwservice_manager find;
allow hbtp_cmd hbtp:binder { call transfer };
allow hbtp_cmd hbtp_exec:file { execute execute_no_trans getattr open read };
allow hbtp_cmd hbtp_log_file:dir { getattr search };
allow hbtp_cmd hwservicemanager:binder { call transfer };
allow hbtp_cmd hwservicemanager_prop:file { getattr open read };
allow hbtp_cmd vendor_shell_exec:file { rx_file_perms entrypoint };
allow hbtp_cmd vendor_file:file { execute getattr open read };
allow hwservicemanager hbtp_cmd:binder { call transfer };
allow hwservicemanager hbtp_cmd:dir search;
allow hwservicemanager hbtp_cmd:file { open read };
allow hwservicemanager hbtp_cmd:process getattr;
allow init hbtp_cmd:process { rlimitinh siginh transition };
allow hbtp_cmd hbtp_vendor_data_file:dir search;
allow hbtp_cmd hbtp_vendor_data_file:file { open read getattr };
allow hbtp_cmd hbtp_vendor_data_file:dir { open read getattr };
================================================
FILE: sepolicy/vendor/healthd.te
================================================
r_dir_file(healthd, sysfs_msm_subsys)
================================================
FILE: sepolicy/vendor/hvdcp.te
================================================
# HVDVP quickcharge
type hvdcp, domain;
type hvdcp_exec, exec_type, vendor_file_type, file_type;
# Make transition to its own HVDCP domain from init
init_daemon_domain(hvdcp)
# Add rules for access permissions
allow hvdcp hvdcp_device:chr_file rw_file_perms;
allow hvdcp {
sysfs_battery_supply
sysfs_usb_supply
sysfs_usb_c
sysfs_vadc_dev
sysfs_spmi_dev
sysfs_msm_subsys
}:dir r_dir_perms;
allow hvdcp {
sysfs_battery_supply
sysfs_usb_supply
sysfs_usb_c
sysfs_vadc_dev
sysfs_spmi_dev
sysfs_msm_subsys
sysfs_batteryinfo
}:file rw_file_perms;
allow hvdcp {
sysfs_battery_supply
sysfs_usb_supply
sysfs_vadc_dev
sysfs_spmi_dev
}:lnk_file r_file_perms;
allow hvdcp self:capability { setgid setuid };
allow hvdcp self:capability2 wake_alarm;
allow hvdcp kmsg_device:chr_file rw_file_perms;
allow hvdcp cgroup:dir { create add_name };
allow hvdcp self:netlink_kobject_uevent_socket create_socket_perms_no_ioctl;
allow hvdcp sysfs_battery_supply:file setattr;
allow hvdcp sysfs_usb_supply:file setattr;
allow hvdcp sysfs_usb_c:file setattr;
wakelock_use(hvdcp)
================================================
FILE: sepolicy/vendor/hwservice.te
================================================
type vnd_ims_radio_hwservice, hwservice_manager_type;
type vnd_qcrilhook_hwservice, hwservice_manager_type;
type vnd_atcmdfwd_hwservice, hwservice_manager_type;
type hal_imsrtp_hwservice, hwservice_manager_type;
type hal_ipacm_hwservice, hwservice_manager_type;
type hal_hbtp_hwservice, hwservice_manager_type;
type hal_sidecar_essential_hwservice, hwservice_manager_type;
type wifidisplayhalservice_hwservice, hwservice_manager_type;
type nxpnfc_hwservice, hwservice_manager_type;
type nxpese_hwservice, hwservice_manager_type;
================================================
FILE: sepolicy/vendor/hwservice_contexts
================================================
vendor.qti.hardware.radio.ims::IImsRadio u:object_r:vnd_ims_radio_hwservice:s0
vendor.qti.hardware.radio.qcrilhook::IQtiOemHook u:object_r:vnd_qcrilhook_hwservice:s0
com.qualcomm.qti.uceservice::IUceService u:object_r:hal_imsrcsd_hwservice:s0
vendor.qti.hardware.radio.atcmdfwd::IAtCmdFwd u:object_r:vnd_atcmdfwd_hwservice:s0
vendor.qti.hardware.radio.am::IQcRilAudio u:object_r:vnd_qcrilhook_hwservice:s0
vendor.qti.imsrtpservice::IRTPService u:object_r:hal_imsrtp_hwservice:s0
com.quicinc.cne.api::IApiService u:object_r:hal_cne_hwservice:s0
com.quicinc.cne.server::IServer u:object_r:hal_cne_hwservice:s0
vendor.qti.hardware.improvetouch.touchcompanion::ITouchCompanion u:object_r:hal_hbtp_hwservice:s0
vendor.qti.hardware.improvetouch.gesturemanager::IGestureManager u:object_r:hal_hbtp_hwservice:s0
vendor.qti.hardware.improvetouch.blobmanager::IBlobManager u:object_r:hal_hbtp_hwservice:s0
vendor.essential.hardware.sidecar::ISidecar u:object_r:hal_sidecar_essential_hwservice:s0
com.qualcomm.qti.imscmservice::IImsCmService u:object_r:hal_imsrcsd_hwservice:s0
com.qualcomm.qti.wifidisplayhal::IHDCPSession u:object_r:wifidisplayhalservice_hwservice:s0
com.qualcomm.qti.wifidisplayhal::IDSManager u:object_r:wifidisplayhalservice_hwservice:s0
vendor.nxp.nxpnfc::INxpNfc u:object_r:nxpnfc_hwservice:s0
vendor.nxp.nxpese::INxpEse u:object_r:nxpese_hwservice:s0
================================================
FILE: sepolicy/vendor/idmap.te
================================================
allow idmap dumpstate:fd use;
allow idmap dumpstate:fifo_file write;
================================================
FILE: sepolicy/vendor/ims.te
================================================
type ims, domain;
type ims_exec, exec_type, vendor_file_type, file_type;
init_daemon_domain(ims)
net_domain(ims)
get_prop(ims, hwservicemanager_prop)
set_prop(ims, ims_prop)
unix_socket_connect(ims, netmgrd, netmgrd)
allow ims sysfs_soc:dir search;
allow ims sysfs_soc:file r_file_perms;
allow ims sysfs_timestamp_switch:file r_file_perms;
allow ims self:capability net_bind_service;
allow ims ion_device:chr_file r_file_perms;
unix_socket_connect(ims, cnd, cnd)
allow ims self:socket create_socket_perms;
allow ims ims_socket:sock_file write;
allow ims self:netlink_generic_socket create_socket_perms_no_ioctl;
allow ims netmgrd_socket:dir search;
allow ims netmgrd_socket:sock_file w_file_perms;
allowxperm ims self:socket ioctl msm_sock_ipc_ioctls;
allowxperm ims self:udp_socket ioctl RMNET_IOCTL_EXTENDED;
r_dir_file(ims, sysfs_msm_subsys)
r_dir_file(ims, sysfs_diag)
r_dir_file(ims, sysfs_esoc)
hwbinder_use(ims)
allow ims hal_cne_hwservice:hwservice_manager find;
binder_call(ims, cnd)
================================================
FILE: sepolicy/vendor/incidentd.te
================================================
allow incidentd sysfs_msm_subsys:dir search;
allow incidentd kernel:system syslog_read;
================================================
FILE: sepolicy/vendor/init-devstart-sh.te
================================================
type init-qcom-devstart-sh, domain;
type init-qcom-devstart-sh_exec, exec_type, vendor_file_type, file_type;
init_daemon_domain(init-qcom-devstart-sh)
allow init-qcom-devstart-sh vendor_shell_exec:file rx_file_perms;
allow init-qcom-devstart-sh vendor_toolbox_exec:file rx_file_perms;
# execute grep
allow init-qcom-devstart-sh vendor_file:file rx_file_perms;
# Set the sys.qcom.devup property
set_prop(init-qcom-devstart-sh, system_prop)
# Set boot_adsp and boot_slpi to 1
allow init-qcom-devstart-sh sysfs_msm_subsys:file w_file_perms;
================================================
FILE: sepolicy/vendor/init-insmod-sh.te
================================================
type init-insmod-sh, domain;
type init-insmod-sh_exec, exec_type, vendor_file_type, file_type;
init_daemon_domain(init-insmod-sh)
allow init-insmod-sh vendor_shell_exec:file rx_file_perms;
allow init-insmod-sh vendor_toolbox_exec:file rx_file_perms;
# Set the sys.touch.modules.ready property
set_prop(init-insmod-sh, system_prop)
# Allow insmod
allow init-insmod-sh self:capability sys_module;
allow init-insmod-sh system_file:system module_load;
allow init-insmod-sh vendor_file:system module_load;
================================================
FILE: sepolicy/vendor/init-ipastart-sh.te
================================================
type init-qcom-ipastart-sh, domain;
type init-qcom-ipastart-sh_exec, exec_type, vendor_file_type, file_type;
init_daemon_domain(init-qcom-ipastart-sh)
allow init-qcom-ipastart-sh vendor_shell_exec:file rx_file_perms;
allow init-qcom-ipastart-sh vendor_toolbox_exec:file rx_file_perms;
================================================
FILE: sepolicy/vendor/init.te
================================================
# symlink /sdcard to backing block
allow init tmpfs:lnk_file create;
allow init configfs:lnk_file create;
allow init firmware_file:dir mounton;
allow init configfs:file w_file_perms;
allow init debugfs_clk:file w_file_perms;
allow init tty_device:chr_file rw_file_perms;
allow init persist_file:dir mounton;
allow init adsprpcd_file:filesystem { mount relabelfrom relabelto };
allow init adsprpcd_file:dir mounton;
allow init ab_block_device:lnk_file relabelto;
allow init boot_block_device:lnk_file relabelto;
allow init persist_block_device:lnk_file relabelto;
dontaudit init kernel:system module_request;
allow init self:capability sys_module;
allow init vendor_file:system module_load;
allow init proc_kernel:file rw_file_perms;
allow init diag_device:chr_file unlink;
================================================
FILE: sepolicy/vendor/init_elabel.te
================================================
# /system/bin/init.elabel.sh
#
# write data from /persist/elabel to /data/misc/elabel for use by
# settings app
#
allow init_elabel persist_file:dir {search getattr};
allow init_elabel persist_elabel_file:dir r_dir_perms;
allow init_elabel persist_elabel_file:file r_file_perms;
================================================
FILE: sepolicy/vendor/init_ese.te
================================================
# /vendor/bin/ese_load init called shell script.
type init_ese, domain;
type init_ese_exec, exec_type, vendor_file_type, file_type;
init_daemon_domain(init_ese)
# Shell script exec (toolbox)
allow init_ese vendor_shell_exec:file r_file_perms;
allow init_ese vendor_toolbox_exec:file rx_file_perms;
# eSE tools
allow init_ese esed_exec:file rx_file_perms;
# eSE device and data dirs
allow init_ese pn81a_device:chr_file rw_file_perms;
allow init_ese ese_vendor_data_file:dir create_dir_perms;
allow init_ese ese_vendor_data_file:file create_file_perms;
allow init_ese vendor_file:file execute_no_trans;
================================================
FILE: sepolicy/vendor/init_power.te
================================================
type init_power, domain;
type init_power_exec, exec_type, vendor_file_type, file_type;
init_daemon_domain(init_power)
set_prop(init_power, post_boot_prop)
allow init_power vendor_shell_exec:file rx_file_perms;
allow init_power vendor_toolbox_exec:file rx_file_perms;
r_dir_file(init_power, sysfs_msm_subsys)
allow init_power sysfs_msm_subsys:file write;
allow init_power sysfs_thermal:dir search;
allow init_power sysfs_thermal:file w_file_perms;
allow init_power sysfs_devices_system_cpu:file w_file_perms;
allow init_power sysfs_soc:file r_file_perms;
allow init_power sysfs_soc:dir search;
allow init_power sysfs_console_suspend:file w_file_perms;
================================================
FILE: sepolicy/vendor/init_radio.te
================================================
# /vendor/bin/init.radio.sh
type init_radio, domain;
type init_radio_exec, exec_type, vendor_file_type, file_type;
init_daemon_domain(init_radio)
allow init_radio vendor_shell_exec:file rx_file_perms;
allow init_radio vendor_toolbox_exec:file rx_file_perms;
allow init_radio radio_vendor_data_file:dir create_dir_perms;
allow init_radio radio_vendor_data_file:file create_file_perms;
================================================
FILE: sepolicy/vendor/init_shell.te
================================================
# Restricted domain for shell processes spawned by init.
# Normally these are shell commands or scripts invoked via sh
# from an init*.rc file. No service should ever run in this domain.
type qti_init_shell, domain;
type qti_init_shell_exec, exec_type, vendor_file_type,file_type;
init_daemon_domain(qti_init_shell)
domain_auto_trans(init, vendor_shell_exec, qti_init_shell)
# For executing init shell scripts (init.qcom.early_boot.sh)
allow qti_init_shell qti_init_shell_exec:file { rx_file_perms entrypoint };
#execute init scripts
allow qti_init_shell vendor_shell_exec:file {rx_file_perms entrypoint };
allow qti_init_shell vendor_toolbox_exec:file rx_file_perms;
# For getting idle_time value
# this is needed for dynamic_fps and bw_mode_bitmap
allow qti_init_shell sysfs_graphics:file {rw_file_perms setattr};
allow qti_init_shell sysfs:file setattr;
allow qti_init_shell persist_file:dir w_dir_perms;
allow qti_init_shell persist_file:file create_file_perms;
allow qti_init_shell smd_device:chr_file rw_file_perms;
# Run helpers from / or /system without changing domain.
allow qti_init_shell { rootfs vendor_shell_exec }:file execute_no_trans;
allow qti_init_shell gpu_device:chr_file getattr;
# for insmod of iris ko, this is needed.
# dac_read/override is needed for scripts to do chown/mkdir which is
# needed by most of the services
# fowner and fsetid are needed for chmod display nodes.
allow qti_init_shell self:capability {
sys_module
net_admin
chown
fowner
fsetid
sys_admin
};
allow qti_init_shell sysfs_graphics:dir search;
allow qti_init_shell sysfs_mdss_mdp_caps:file rw_file_perms;
r_dir_file(qti_init_shell, sysfs_msm_subsys)
allow qti_init_shell sysfs_msm_subsys:dir search;
allow qti_init_shell sysfs_msm_subsys:file rw_file_perms;
allow qti_init_shell sysfs_devices_system_cpu:file rw_file_perms;
allow qti_init_shell proc_net:file rw_file_perms;
allow qti_init_shell sysfs_thermal:dir search;
allow qti_init_shell sysfs_soc:dir search;
allow qti_init_shell sysfs_soc:file rw_file_perms;
allow qti_init_shell pstorefs:dir r_dir_perms;
allow qti_init_shell pstorefs:file r_file_perms;
allow qti_init_shell kernel:system syslog_read;
set_prop(qti_init_shell, nfc_service_prop)
set_prop(qti_init_shell, build_prop)
set_prop(qti_init_shell, system_prop)
set_prop(qti_init_shell, system_radio_prop)
set_prop(qti_init_shell, ctl_hbtp_prop)
# To set default value
get_prop(qti_init_shell, grip_prop)
set_prop(qti_init_shell, grip_prop)
#Needed for post-boot property
set_prop(qti_init_shell, post_boot_prop)
r_dir_file(qti_init_shell, proc_kernel)
allow qti_init_shell proc_kernel:file rw_file_perms;
allow qti_init_shell radio_vendor_data_file:dir create_dir_perms;
allow qti_init_shell radio_vendor_data_file:file create_file_perms;
allow qti_init_shell firmware_file:dir r_dir_perms;
allow qti_init_shell firmware_file:file r_file_perms;
#============= mata_provision ==============
allow qti_init_shell persist_file:dir { add_name write };
allow qti_init_shell persist_file:file { create getattr open read write };
allow qti_init_shell persist_file:dir search;
allow qti_init_shell firmware_file:dir search;
allow qti_init_shell firmware_file:file { open read };
allow qti_init_shell firmware_file:file getattr;
allow qti_init_shell persist_file:file setattr;
allow qti_init_shell kmsg_device:chr_file { open write };
allow qti_init_shell system_file:lnk_file getattr;
allow qti_init_shell ion_device:chr_file { ioctl open read };
allow qti_init_shell kmsg_device:chr_file open;
allow qti_init_shell tee_device:chr_file { ioctl open read write };
get_prop(qti_init_shell, tee_listener_prop)
r_dir_file(qti_init_shell, sysfs_esoc)
================================================
FILE: sepolicy/vendor/installd.te
================================================
allow installd adsprpcd_file:filesystem quotaget;
================================================
FILE: sepolicy/vendor/ioctl_defines
================================================
# socket ioctls
define(`RMNET_IOCTL_EXTENDED', `0x000089FD')
# socket ioctls defined in the kernel in include/uapi/linux/msm_ipc.h
define(`IPC_ROUTER_IOCTL_GET_VERSION', `0x0000c300')
define(`IPC_ROUTER_IOCTL_GET_MTU', `0x0000c301')
define(`IPC_ROUTER_IOCTL_LOOKUP_SERVER', `0x0000c302')
define(`IPC_ROUTER_IOCTL_GET_CURR_PKT_SIZE', `0x0000c303')
define(`IPC_ROUTER_IOCTL_BIND_CONTROL_PORT', `0x0000c304')
define(`IPC_ROUTER_IOCTL_CONFIG_SEC_RULES', `0x0000c305')
================================================
FILE: sepolicy/vendor/ioctl_macros
================================================
define(`msm_sock_ipc_ioctls', `{
IPC_ROUTER_IOCTL_GET_VERSION
IPC_ROUTER_IOCTL_GET_MTU
IPC_ROUTER_IOCTL_LOOKUP_SERVER
IPC_ROUTER_IOCTL_GET_CURR_PKT_SIZE
IPC_ROUTER_IOCTL_BIND_CONTROL_PORT
IPC_ROUTER_IOCTL_CONFIG_SEC_RULES
}')
================================================
FILE: sepolicy/vendor/irqbalance.te
================================================
type irqbalance, domain;
type irqbalance_exec, exec_type, vendor_file_type, file_type;
init_daemon_domain(irqbalance);
allow irqbalance sysfs_devices_system_cpu:file rw_file_perms;
allow irqbalance proc_irq:dir r_dir_perms;
allow irqbalance proc_irq:file rw_file_perms;
allow irqbalance sysfs_irq:file r_file_perms;
allow irqbalance proc_stat:file r_file_perms;
allow irqbalance proc_interrupts:file r_file_perms;
r_dir_file(irqbalance, proc)
================================================
FILE: sepolicy/vendor/irsc_util.te
================================================
type irsc_util, domain;
type irsc_util_exec, exec_type, vendor_file_type, file_type;
init_daemon_domain(irsc_util)
allow irsc_util self:socket create_socket_perms;
allowxperm irsc_util self:socket ioctl msm_sock_ipc_ioctls;
================================================
FILE: sepolicy/vendor/kernel.te
================================================
# for diag over socket
allow kernel self:socket create;
allow kernel vendor_firmware_file:dir search;
allow kernel vendor_firmware_file:file r_file_perms;
allow kernel vendor_firmware_file:lnk_file read;
dontaudit kernel kernel:system module_request;
# Read FDs from /vendor/firmware
allow kernel vendor_file:file r_file_perms;
allow kernel persist_file:file r_file_perms;
allow kernel tmpfs:dir search;
allow kernel debugfs_ipc:dir search;
allow kernel persist_file:dir search;
allow kernel debugfs_wlan:dir search;
allow kernel firmware_file:dir search;
allow kernel firmware_file:file r_file_perms;
================================================
FILE: sepolicy/vendor/keys.conf
================================================
[@AOSP]
ALL : device/essential/mata/sepolicy/vendor/certs/Essential-platform.x509.pem
================================================
FILE: sepolicy/vendor/location.te
================================================
# loc_launcher service
# which launches various other services supporting GPS & Wifi-RTT (LOWI) location
type location, domain;
type location_exec, exec_type, vendor_file_type, file_type;
init_daemon_domain(location)
# STOPSHIP b/28340421
# Temporarily grant this permission (for LOWI) and log its use.
allow location self:capability { net_admin };
auditallow location self:capability { net_admin };
allow location self:capability { setgid setuid };
hwbinder_use(location)
get_prop(location, hwservicemanager_prop)
allow location fwk_sensor_hwservice:hwservice_manager find;
binder_call(location, system_server)
allow location hal_wifi:unix_stream_socket { read write };
# Enable standard network access (for XTRA download)
net_domain(location)
# And some additional network access
allow location self:netlink_generic_socket create_socket_perms_no_ioctl;
allow location self:netlink_socket create_socket_perms_no_ioctl;
allowxperm location self:udp_socket ioctl { SIOCGIFINDEX SIOCGIFHWADDR SIOCIWFIRSTPRIV_05 };
allow location self:socket create_socket_perms;
# whitelist socket ioctl commands
allowxperm location self:socket ioctl msm_sock_ipc_ioctls;
# files in /sys
r_dir_file(location, sysfs_type)
dontaudit location kernel:system module_request;
allow location proc_net:file r_file_perms;
# execute /vendor/bin/lowi-server
allow location location_exec:file rx_file_perms;
# /data/vendor/location
allow location location_data_file:dir create_dir_perms;
allow location location_data_file:{ file sock_file } create_file_perms;
userdebug_or_eng(`
allow location diag_device:chr_file rw_file_perms;
')
================================================
FILE: sepolicy/vendor/mac_permissions.xml
================================================
================================================
FILE: sepolicy/vendor/mediacodec.te
================================================
allow mediacodec perfd:unix_stream_socket connectto;
allow mediacodec perfd_socket:sock_file write;
allow mediacodec sysfs_soc:file r_file_perms;
allow mediacodec sysfs_soc:dir search;
allow mediacodec system_file:dir r_dir_perms;
allow mediacodec firmware_file:dir search;
allow mediacodec firmware_file:file r_file_perms;
userdebug_or_eng(`
allow mediacodec dumpstate:fd use;
')
================================================
FILE: sepolicy/vendor/mediaextractor.te
================================================
userdebug_or_eng(`
allow mediaextractor dumpstate:fifo_file append;
')
================================================
FILE: sepolicy/vendor/move-widevine-data-sh.te
================================================
type move-widevine-data-sh, domain, coredomain;
type move-widevine-data-sh_exec, exec_type, file_type, system_file_type;
init_daemon_domain(move-widevine-data-sh);
typeattribute move-widevine-data-sh data_between_core_and_vendor_violators;
allow move-widevine-data-sh shell_exec:file rx_file_perms;
allow move-widevine-data-sh toolbox_exec:file rx_file_perms;
allow move-widevine-data-sh file_contexts_file:file { read getattr open };
allow move-widevine-data-sh media_data_file:file { getattr setattr relabelfrom };
allow move-widevine-data-sh media_data_file:dir { reparent rename rmdir setattr rw_dir_perms relabelfrom };
allow move-widevine-data-sh mediadrm_vendor_data_file:dir { create_dir_perms relabelto };
# for writing files_moved so we only execute the move once
allow move-widevine-data-sh mediadrm_vendor_data_file:file { create open write getattr relabelto };
================================================
FILE: sepolicy/vendor/netd.te
================================================
allow netd sysfs_net:file w_file_perms;
dontaudit netd kernel:system module_request;
dontaudit netd self:capability { sys_resource sys_module };
================================================
FILE: sepolicy/vendor/netmgrd.te
================================================
type netmgrd, domain;
type netmgrd_exec, exec_type, vendor_file_type, file_type;
net_domain(netmgrd)
init_daemon_domain(netmgrd)
set_prop(netmgrd, net_radio_prop)
set_prop(netmgrd, net_rmnet_prop)
allow netmgrd netmgrd_socket:dir w_dir_perms;
allow netmgrd netmgrd_socket:sock_file create_file_perms;
allow netmgrd self:netlink_xfrm_socket { create_socket_perms_no_ioctl nlmsg_write };
allow netmgrd self:netlink_generic_socket create_socket_perms_no_ioctl;
allow netmgrd self:netlink_route_socket nlmsg_write;
allow netmgrd self:netlink_socket create_socket_perms_no_ioctl;
allow netmgrd self:socket create_socket_perms;
allowxperm netmgrd self:socket ioctl msm_sock_ipc_ioctls;
allowxperm netmgrd self:udp_socket ioctl priv_sock_ioctls;
allow netmgrd sysfs_net:dir r_dir_perms;
allow netmgrd sysfs_net:file rw_file_perms;
allow netmgrd sysfs_soc:dir search;
allow netmgrd sysfs_soc:file r_file_perms;
allow netmgrd sysfs_msm_subsys:dir r_dir_perms;
allow netmgrd sysfs_msm_subsys:file r_file_perms;
r_dir_file(netmgrd, sysfs_msm_subsys)
wakelock_use(netmgrd)
#Allow netutils usage
domain_auto_trans(netmgrd, netutils_wrapper_exec, netutils_wrapper)
#Allow diag logging
allow netmgrd sysfs_timestamp_switch:file { read open };
userdebug_or_eng(`
r_dir_file(netmgrd, sysfs_diag)
')
#Ignore if device loading for private IOCTL failed
dontaudit netmgrd kernel:system { module_request };
allow netmgrd proc_net:file rw_file_perms;
allow netmgrd netmgr_data_file:dir rw_dir_perms;
allow netmgrd netmgr_data_file:file create_file_perms;
allow netmgrd self:capability { net_admin net_raw setgid setpcap setuid };
allow netmgrd vendor_toolbox_exec:file rx_file_perms;
# Allow netmgrd to use netd HAL
allow netmgrd system_net_netd_hwservice:hwservice_manager find;
get_prop(netmgrd, hwservicemanager_prop)
binder_call(netmgrd, netd)
hwbinder_use(netmgrd)
dontaudit netmgrd kernel:system module_request;
dontaudit netmgrd self:system module_request;
allow netmgrd sysfs_esoc:dir r_dir_perms;
allow netmgrd sysfs_esoc:lnk_file r_file_perms;
================================================
FILE: sepolicy/vendor/netutils_wrapper.te
================================================
# For netutils to be able to write their stdout stderr to the pipes opened by netmgrd
allow netutils_wrapper netmgrd:fd use;
allow netutils_wrapper netmgrd:fifo_file { getattr read write append };
dontaudit netutils_wrapper netmgrd:netlink_socket { getattr read write append };
dontaudit netutils_wrapper kernel:system module_request;
dontaudit netutils_wrapper self:capability sys_module;
================================================
FILE: sepolicy/vendor/pd_services.te
================================================
type pd_mapper, domain;
type pd_mapper_exec, exec_type, vendor_file_type, file_type;
init_daemon_domain(pd_mapper);
allow pd_mapper self:capability { setgid setpcap setuid net_bind_service };
allow pd_mapper firmware_file:dir r_dir_perms;
allow pd_mapper firmware_file:file r_file_perms;
allow pd_mapper self:socket create_socket_perms;
allowxperm pd_mapper self:socket ioctl IPC_ROUTER_IOCTL_BIND_CONTROL_PORT;
r_dir_file(pd_mapper, sysfs_msm_subsys)
r_dir_file(pd_mapper, sysfs_esoc)
================================================
FILE: sepolicy/vendor/per_mgr.te
================================================
# Policy for pm-service and pm-proxy
type per_mgr, domain;
type per_mgr_exec, exec_type, vendor_file_type, file_type;
init_daemon_domain(per_mgr);
add_service(per_mgr, per_mgr_service)
vndbinder_use(per_mgr)
binder_call(per_mgr, hal_gnss)
binder_call(per_mgr, per_proxy)
binder_call(per_mgr, wcnss_service)
binder_call(per_mgr, rild)
allow per_mgr self:capability net_bind_service;
allow per_mgr firmware_file:file r_file_perms;
allow per_mgr firmware_file:dir search;
allow per_mgr self:socket create_socket_perms;
allowxperm per_mgr self:socket ioctl msm_sock_ipc_ioctls;
allow per_mgr ssr_device:chr_file { open read };
r_dir_file(per_mgr, sysfs_msm_subsys)
r_dir_file(per_mgr, sysfs)
r_dir_file(per_mgr, sysfs_esoc)
set_prop(per_mgr, per_mgr_state_prop)
================================================
FILE: sepolicy/vendor/per_proxy.te
================================================
# Policy for /system/bin/pm-proxy
type per_proxy, domain;
type per_proxy_exec, exec_type, vendor_file_type, file_type;
init_daemon_domain(per_proxy)
allow per_proxy per_mgr_service:service_manager find;
r_dir_file(per_proxy, sysfs_type)
vndbinder_use(per_proxy)
binder_call(per_proxy, per_mgr)
================================================
FILE: sepolicy/vendor/perfd.te
================================================
type perfd, domain;
type perfd_exec, exec_type, vendor_file_type, file_type;
init_daemon_domain(perfd)
r_dir_file(perfd, sysfs_msm_subsys)
# perfd uses kill(pid, 0) to determine if a process exists.
# Determining if a process exists does not require the kill capability
# since a permission denied indicates the process exists.
dontaudit perfd self:capability kill;
allow perfd mediacodec:process signull;
allow perfd hal_power_default:process signull;
allow perfd cgroup:file r_file_perms;
allow perfd post_boot_prop:file { getattr open read };
allow perfd proc:file rw_file_perms;
allow perfd sysfs_clkscale:file r_file_perms;
allow perfd sysfs_graphics:dir search;
allow perfd sysfs_graphics:file r_file_perms;
allow perfd sysfs_soc:dir search;
allow perfd sysfs_soc:file r_file_perms;
allow perfd sysfs_graphics:dir search;
allow perfd sysfs_graphics:file r_file_perms;
allow perfd sysfs_perf:file rw_file_perms;
allow perfd sysfs_msm_subsys:file w_file_perms;
allow perfd sysfs_devices_system_cpu:file w_file_perms;
allow perfd perfd_socket:sock_file write;
allow perfd latency_device:chr_file w_file_perms;
================================================
FILE: sepolicy/vendor/platform_app.te
================================================
# Allow Ecore to update these debug data collection properties:
# dalvik.vm.stack-trace-file
# debug.sys.enableThreadTrace
# debug.sys.enableAnrUploads
set_prop(platform_app, dalvik_prop);
set_prop(platform_app, debug_prop);
# Allow Ecore access to /data/anr similar to Hub.
allow platform_app anr_data_file:dir rw_dir_perms;
allow platform_app anr_data_file:file create_file_perms;
================================================
FILE: sepolicy/vendor/port-bridge.te
================================================
type port-bridge, domain;
type port-bridge_exec, exec_type, vendor_file_type, file_type;
init_daemon_domain(port-bridge)
r_dir_file(port-bridge, sysfs_msm_subsys)
r_dir_file(port-bridge, sysfs_esoc)
allow port-bridge sysfs_soc:dir search;
allow port-bridge sysfs_soc:file r_file_perms;
allow port-bridge sysfs_esoc:file r_file_perms;
allow port-bridge at_device:chr_file rw_file_perms;
================================================
FILE: sepolicy/vendor/priv_app.te
================================================
allow priv_app adsprpcd_file:filesystem getattr;
================================================
FILE: sepolicy/vendor/property.te
================================================
type camera_prop, property_type;
type cnd_prop, property_type;
type ims_prop, property_type;
type keymaster_prop, property_type;
type net_rmnet_prop, property_type;
type ramdump_prop, property_type;
type post_boot_prop, property_type;
type ssr_prop, property_type;
type cnss_diag_prop, property_type;
type tee_listener_prop, property_type;
type wc_prop, property_type;
type thermal_prop, property_type;
type modem_diag_prop, property_type;
type tel_mon_prop, property_type;
type sys_time_prop, property_type;
type atfwd_start_prop, property_type;
type bluetooth_log_prop, property_type;
type nfc_service_prop, property_type;
type per_mgr_state_prop, property_type;
type build_prop, property_type;
type ctl_hbtp_prop, property_type;
type fastboot_prop, property_type;
type omadm_prop, property_type;
type grip_prop, property_type;
type mqa_hd_prop, property_type;
type wfd_service_prop, property_type;
type power_prop, property_type;
type public_vendor_default_prop, property_type;
================================================
FILE: sepolicy/vendor/property_contexts
================================================
persist.camera. u:object_r:camera_prop:s0
persist.vendor.sys.cnd u:object_r:cnd_prop:s0
persist.sys.cnd u:object_r:cnd_prop:s0
sys.ims. u:object_r:ims_prop:s0
vendor.ims. u:object_r:ims_prop:s0
sys.keymaster.loaded u:object_r:keymaster_prop:s0
net.r_rmnet_data0 u:object_r:net_rmnet_prop:s0
persist.net.doxlat u:object_r:net_radio_prop:s0
sys.post_boot. u:object_r:post_boot_prop:s0
radio. u:object_r:radio_prop:s0
rcs.publish.status u:object_r:radio_prop:s0
persist.sys.crash_rcu u:object_r:ramdump_prop:s0
debug.ssrdump u:object_r:ssr_prop:s0
persist.sys.cnss. u:object_r:cnss_diag_prop:s0
vendor.sys.listeners.registered u:object_r:tee_listener_prop:s0
wc_transport. u:object_r:wc_prop:s0
sys.qcom.thermalcfg u:object_r:thermal_prop:s0
ctl.thermal-engine u:object_r:thermal_prop:s0
persist.sys.modem.diag. u:object_r:modem_diag_prop:s0
sys.modem.diag. u:object_r:modem_diag_prop:s0
persist.radio.enable_tel_mon u:object_r:tel_mon_prop:s0
sys.time.set u:object_r:sys_time_prop:s0
persist.radio.atfwd.start u:object_r:atfwd_start_prop:s0
sys.logger.bluetooth u:object_r:bluetooth_log_prop:s0
vendor.audio.mqa. u:object_r:mqa_hd_prop:s0
vendor.audio.hd. u:object_r:mqa_hd_prop:s0
ro.hardware.nfc_nci u:object_r:nfc_service_prop:s0
vendor.peripheral. u:object_r:per_mgr_state_prop:s0
ro.product.locale u:object_r:build_prop:s0
ro.boot.wificountrycode u:object_r:build_prop:s0
ro.boot.diagclean u:object_r:build_prop:s0
persist.vendor.radio u:object_r:radio_prop:s0
ctl.hbtp u:object_r:ctl_hbtp_prop:s0
ro.vendor.ril. u:object_r:radio_prop:s0
sys.fastboot_status u:object_r:fastboot_prop:s0
persist.grip.status_manual u:object_r:grip_prop:s0
persist.touch.smoothness u:object_r:grip_prop:s0
# OMADM
sys.omadm. u:object_r:omadm_prop:s0
ro.com.android.dataroaming u:object_r:omadm_prop:s0
gsm.roaming. u:object_r:omadm_prop:s0
cdma.roaming. u:object_r:omadm_prop:s0
ro.home.operator.carrierid u:object_r:omadm_prop:s0
ro.cdma.home.operator.numeric u:object_r:omadm_prop:s0
ro.cdma.home.operator.alpha u:object_r:omadm_prop:s0
ro.cnap.configstatus u:object_r:omadm_prop:s0
ro.com.google.clientidbase. u:object_r:omadm_prop:s0
vendor.wfdservice u:object_r:wfd_service_prop:s0
vendor.powerhal.state u:object_r:power_prop:s0
vendor.powerhal.audio u:object_r:power_prop:s0
vendor.powerhal.lpm u:object_r:power_prop:s0
vendor.powerhal.init u:object_r:power_prop:s0
vendor.powerhal.rendering u:object_r:power_prop:s0
# public_vendor_default_prop
# They are public_vendor_default_props for vendor-specific extension.
# Usually they are for vndk-sp libs and vendor apks.
fastrpc.perf. u:object_r:public_vendor_default_prop:s0
persist.cne.cqetimer u:object_r:public_vendor_default_prop:s0
persist.cne.feature u:object_r:public_vendor_default_prop:s0
persist.cne.logging.qxdm u:object_r:public_vendor_default_prop:s0
persist.gcam. u:object_r:public_vendor_default_prop:s0
persist.vendor.cnd.iwlan u:object_r:public_vendor_default_prop:s0
persist.vendor.cnd.wqe u:object_r:public_vendor_default_prop:s0
ro.graphics.memory u:object_r:public_vendor_default_prop:s0
ro.boot.ddrsize u:object_r:public_vendor_default_prop:s0
ro.boot.hardware.ddr u:object_r:public_vendor_default_prop:s0
ro.boot.hardware.ufs u:object_r:public_vendor_default_prop:s0
ro.qcom.adreno. u:object_r:public_vendor_default_prop:s0
ro.vendor.graphics.memory u:object_r:public_vendor_default_prop:s0
vendor.debug.egl.changepixelformat u:object_r:public_vendor_default_prop:s0
vendor.debug.prerotation.disable u:object_r:public_vendor_default_prop:s0
vendor.debug.rs. u:object_r:public_vendor_default_prop:s0
vendor.debug.egl.swapinterval u:object_r:public_vendor_default_prop:s0
vendor.gralloc.disable_ubwc u:object_r:public_vendor_default_prop:s0
vendor.debug.egl.profiler u:object_r:public_vendor_default_prop:s0
vendor.gralloc.enable_ahardware_buffer u:object_r:public_vendor_default_prop:s0
# vendor_default_prop
audio_hal.in_period_size u:object_r:vendor_default_prop:s0
audio_hal.period_multiplier u:object_r:vendor_default_prop:s0
audio_hal.period_size u:object_r:vendor_default_prop:s0
audio.adm. u:object_r:vendor_default_prop:s0
audio.snd_card.open.retries u:object_r:vendor_default_prop:s0
audio.usb.enable.debug u:object_r:vendor_default_prop:s0
audio.volume.headset.gain.depcal u:object_r:vendor_default_prop:s0
audio.volume.listener.dump u:object_r:vendor_default_prop:s0
boost_override u:object_r:vendor_default_prop:s0
cameradaemon.SaveMemAtBoot u:object_r:vendor_default_prop:s0
camera.cpp. u:object_r:vendor_default_prop:s0
camera.eis.fov_correction u:object_r:vendor_default_prop:s0
camera.hdrplus.donotpoweroneasel u:object_r:vendor_default_prop:s0
com.qti. u:object_r:vendor_default_prop:s0
cpp.set.clock u:object_r:vendor_default_prop:s0
disable.cpp.power.collapse u:object_r:vendor_default_prop:s0
downmix_override_mode u:object_r:vendor_default_prop:s0
fmas. u:object_r:vendor_default_prop:s0
gpu.stats.debug.level u:object_r:vendor_default_prop:s0
hw.hdmi.resolution u:object_r:vendor_default_prop:s0
fpc_kpi u:object_r:vendor_default_prop:s0
media.aac_51_output_enabled u:object_r:vendor_default_prop:s0
mmp.enable.3g2 u:object_r:vendor_default_prop:s0
mm.enable.qcom_parser u:object_r:vendor_default_prop:s0
mm.enable.smoothstreaming u:object_r:vendor_default_prop:s0
perflocks.predefined_clust_map u:object_r:vendor_default_prop:s0
perflocks.predefined_freq_map u:object_r:vendor_default_prop:s0
persist.audio.calfile0 u:object_r:vendor_default_prop:s0
persist.audio.dualmic.config u:object_r:vendor_default_prop:s0
persist.audio.fluence. u:object_r:vendor_default_prop:s0
persist.cam.pp.feat.mask u:object_r:vendor_default_prop:s0
persist.cne.override.memlimit u:object_r:vendor_default_prop:s0
persist.data_netmgrd_mtu u:object_r:vendor_default_prop:s0
persist.data_netmgrd_nint u:object_r:vendor_default_prop:s0
persist.data.df. u:object_r:vendor_default_prop:s0
persist.data.dont_use_epc u:object_r:vendor_default_prop:s0
persist.data.dont_use_npflag u:object_r:vendor_default_prop:s0
persist.data.dpm.enable u:object_r:vendor_default_prop:s0
persist.data.dropssdp u:object_r:vendor_default_prop:s0
persist.data.ibfc.enable u:object_r:vendor_default_prop:s0
persist.data.iwlan.enable u:object_r:vendor_default_prop:s0
persist.data.iwlan.ims.enable u:object_r:vendor_default_prop:s0
persist.data.iwlan.rekey u:object_r:vendor_default_prop:s0
persist.data.llf.enable u:object_r:vendor_default_prop:s0
persist.data.mode u:object_r:vendor_default_prop:s0
persist.data.netmgrd.qos.enable u:object_r:vendor_default_prop:s0
persist.data.netmgrd.qos.hybrid u:object_r:vendor_default_prop:s0
persist.data.netmgr.log_to_file u:object_r:vendor_default_prop:s0
persist.data.netmgr.wl.timeout u:object_r:vendor_default_prop:s0
persist.data.port_bridge.log u:object_r:vendor_default_prop:s0
persist.data.profile_update u:object_r:vendor_default_prop:s0
persist.data.qmi.adb_logmask u:object_r:vendor_default_prop:s0
persist.data.rmnet.en u:object_r:vendor_default_prop:s0
persist.data.target.msm8998 u:object_r:vendor_default_prop:s0
persist.data.tcpackprio.enable u:object_r:vendor_default_prop:s0
persist.data.wda.enable u:object_r:vendor_default_prop:s0
persist.debug.sensors.elmyra.rate u:object_r:vendor_default_prop:s0
persist.debug.sensors.hal u:object_r:vendor_default_prop:s0
persist.debug.sf.showfps u:object_r:vendor_default_prop:s0
persist.delta_time.enable u:object_r:vendor_default_prop:s0
persist.enable.max.pending.buf u:object_r:vendor_default_prop:s0
persist.env.spec u:object_r:vendor_default_prop:s0
persist.fci u:object_r:vendor_default_prop:s0
persist.fuse_sdcard u:object_r:vendor_default_prop:s0
persist.hwc.blit.comp u:object_r:vendor_default_prop:s0
persist.metadata_dynfps.disable u:object_r:vendor_default_prop:s0
persist.msmirqbalance.debug u:object_r:vendor_default_prop:s0
persist.net.logmask u:object_r:vendor_default_prop:s0
persist.partial.skip u:object_r:vendor_default_prop:s0
persist.pd_locater_debug u:object_r:vendor_default_prop:s0
persist.qcril u:object_r:vendor_default_prop:s0
persist.rild.nitz_ u:object_r:vendor_default_prop:s0
persist.rmnet.data.enable u:object_r:vendor_default_prop:s0
persist.sensors.elmyra.sensitivity u:object_r:vendor_default_prop:s0
persist.sensors.hal_timeout u:object_r:vendor_default_prop:s0
persist.sys.ssr.enable_ramdumps u:object_r:vendor_default_prop:s0
persist.sys.ssr.restart_level u:object_r:vendor_default_prop:s0
persist.timed.enable u:object_r:vendor_default_prop:s0
persist.tnr.process.plates u:object_r:vendor_default_prop:s0
qcom.bluetooth.soc u:object_r:vendor_default_prop:s0
qcril.support.encrypted_calls u:object_r:vendor_default_prop:s0
qdcm. u:object_r:vendor_default_prop:s0
rild.libargs u:object_r:vendor_default_prop:s0
rild.libpath u:object_r:vendor_default_prop:s0
ro.alarm_boot u:object_r:vendor_default_prop:s0
ro.boot.factoryota u:object_r:vendor_default_prop:s0
ro.boot.mid u:object_r:vendor_default_prop:s0
ro.boot.temp_protect_ignore u:object_r:vendor_default_prop:s0
ro.camera.wrapper.hal3TrebleMinorVersion u:object_r:vendor_default_prop:s0
ro.fota.oem u:object_r:vendor_default_prop:s0
ro.lean u:object_r:vendor_default_prop:s0
ro.min_freq_0 u:object_r:vendor_default_prop:s0
ro.min_freq_4 u:object_r:vendor_default_prop:s0
ro.oem_unlock.pst u:object_r:vendor_default_prop:s0
ro.qcom. u:object_r:vendor_default_prop:s0
ro.qfusion_use_report_period u:object_r:vendor_default_prop:s0
ro.qti. u:object_r:vendor_default_prop:s0
ro.qualcomm. u:object_r:vendor_default_prop:s0
ro.radio.log_loc u:object_r:vendor_default_prop:s0
ro.radio.log_prefix u:object_r:vendor_default_prop:s0
ro.rfkilldisabled u:object_r:vendor_default_prop:s0
ro.vendor.build.svn u:object_r:vendor_default_prop:s0
ro.vendor.extension_library u:object_r:vendor_default_prop:s0
ro.vibrator.hal.click.duration u:object_r:vendor_default_prop:s0
ro.vibrator.hal.tick.duration u:object_r:vendor_default_prop:s0
ro.vibrator.hal.heavyclick.duration u:object_r:vendor_default_prop:s0
sdm. u:object_r:vendor_default_prop:s0
sys.disable_ext_animation u:object_r:vendor_default_prop:s0
sys.display.low_persistence_mode_brightness u:object_r:vendor_default_prop:s0
sys.hwc_disable_hdr u:object_r:vendor_default_prop:s0
sys.qca1530 u:object_r:vendor_default_prop:s0
vendor.audio.adm.buffering.ms u:object_r:vendor_default_prop:s0
vendor.vidc.enc.dcvs.extra-buff-count u:object_r:vendor_default_prop:s0
ubwc.no.compression u:object_r:vendor_default_prop:s0
persist.audio.fluence.speaker u:object_r:vendor_default_prop:s0
persist.audio.fluence.voicecall u:object_r:vendor_default_prop:s0
persist.audio.fluence.voicecomm u:object_r:vendor_default_prop:s0
persist.audio.fluence.voicerec u:object_r:vendor_default_prop:s0
ro.qc.sdk.audio.fluencetype u:object_r:vendor_default_prop:s0
================================================
FILE: sepolicy/vendor/qlogd.te
================================================
type qlogd, domain;
type qlogd_exec, exec_type, vendor_file_type, file_type;
# make transition from init to its domain
init_daemon_domain(qlogd)
allow qlogd diag_device:chr_file rw_file_perms;
allow qlogd qlogd_exec:file rx_file_perms;
allow qlogd radio_vendor_data_file:file create_file_perms;
allow qlogd radio_vendor_data_file:dir create_dir_perms;
set_prop(qlogd, modem_diag_prop)
r_dir_file(qlogd, storage_file)
r_dir_file(qlogd, mnt_user_file)
allow qlogd sdcardfs:dir create_dir_perms;
allow qlogd sdcardfs:file create_file_perms;
================================================
FILE: sepolicy/vendor/qmuxd.te
================================================
type qmuxd, domain;
type qmuxd_exec, exec_type, vendor_file_type, file_type;
net_domain(qmuxd)
init_daemon_domain(qmuxd)
================================================
FILE: sepolicy/vendor/qtelephony.te
================================================
# Qualcomm telephony apps, such as AtFwd and FastDormancy
type qtelephony, domain;
app_domain(qtelephony)
hwbinder_use(qtelephony)
add_hwservice(qtelephony, vnd_atcmdfwd_hwservice)
allow qtelephony { app_api_service }:service_manager find;
# Read and write /data/data subdirectory.
allow qtelephony system_app_data_file:dir create_dir_perms;
allow qtelephony system_app_data_file:{ file lnk_file } create_file_perms;
set_prop(qtelephony, atfwd_start_prop)
================================================
FILE: sepolicy/vendor/qti.te
================================================
type qti, domain;
type qti_exec, exec_type, vendor_file_type, file_type;
init_daemon_domain(qti)
net_domain(qti)
allow qti sysfs_soc:dir search;
allow qti sysfs_soc:file r_file_perms;
allow qti smd_device:chr_file { read write };
allow qti rmnet_device:chr_file rw_file_perms;
allow qti self:socket create_socket_perms;
allowxperm qti self:socket ioctl msm_sock_ipc_ioctls;
r_dir_file(qti, sysfs_msm_subsys)
r_dir_file(qti, sysfs_esoc)
================================================
FILE: sepolicy/vendor/qti_audio_app.te
================================================
type qti_audio_app, domain;
app_domain(qti_audio_app)
net_domain(qti_audio_app)
hwbinder_use(qti_audio_app)
# Services from untrusted_app_all.
# Should be kept in sync with untrusted_app_all.
allow qti_audio_app audioserver_service:service_manager find;
allow qti_audio_app cameraserver_service:service_manager find;
allow qti_audio_app drmserver_service:service_manager find;
allow qti_audio_app mediaserver_service:service_manager find;
allow qti_audio_app mediaextractor_service:service_manager find;
allow qti_audio_app mediametrics_service:service_manager find;
allow qti_audio_app mediadrmserver_service:service_manager find;
allow qti_audio_app nfc_service:service_manager find;
allow qti_audio_app radio_service:service_manager find;
allow qti_audio_app surfaceflinger_service:service_manager find;
allow qti_audio_app app_api_service:service_manager find;
allow qti_audio_app vr_manager_service:service_manager find;
allow qti_audio_app vnd_qcrilhook_hwservice:hwservice_manager find;
allow qti_audio_app rild:binder { call transfer };
================================================
FILE: sepolicy/vendor/radio.te
================================================
get_prop(radio, ims_prop)
userdebug_or_eng(`set_prop(radio, tel_mon_prop)')
allow radio qmuxd_socket:dir search;
allow radio qmuxd_socket:sock_file write;
allow radio vendor_file:lnk_file r_file_perms;
allow radio vendor_framework_file:file r_file_perms;
allow radio vendor_framework_file:dir search;
allow radio cache_file:lnk_file read;
allow radio system_app_data_file:dir getattr;
allow radio system_app_data_file:dir search;
hwbinder_use(radio)
allow radio vnd_ims_radio_hwservice:hwservice_manager find;
allow radio vnd_qcrilhook_hwservice:hwservice_manager find;
allow radio hal_imsrtp_hwservice:hwservice_manager find;
allow radio {
mediaextractor_service
}:service_manager find;
r_dir_file(radio, sysfs_msm_subsys)
# IMS needs permission to use avtimer
allow radio avtimer_device:chr_file r_file_perms;
binder_call(radio, hal_imsrtp)
set_prop(radio, omadm_prop)
get_prop(radio, omadm_prop)
================================================
FILE: sepolicy/vendor/ramdump.te
================================================
type ramdump_exec, exec_type, vendor_file_type, file_type;
userdebug_or_eng(`
type ramdump, domain;
init_daemon_domain(ramdump)
set_prop(ramdump, ramdump_prop)
allow ramdump self:capability sys_rawio;
allow ramdump ramdump_vendor_data_file:dir create_dir_perms;
allow ramdump ramdump_vendor_data_file:file create_file_perms;
allow ramdump proc:file r_file_perms;
allow ramdump block_device:dir search;
allow ramdump misc_block_device:blk_file rw_file_perms;
allow ramdump userdata_block_device:blk_file rw_file_perms;
# read from /fstab.taimen
allow ramdump rootfs:file r_file_perms;
r_dir_file(ramdump, sysfs_type)
')
================================================
FILE: sepolicy/vendor/recovery.te
================================================
allow recovery sysfs_scsi_devices_other:dir { open read search };
================================================
FILE: sepolicy/vendor/rfs_access.te
================================================
type rfs_access, domain;
type rfs_access_exec, exec_type, vendor_file_type, file_type;
init_daemon_domain(rfs_access)
#For tftp server
allow rfs_access self:capability { chown setgid setpcap setuid net_bind_service };
wakelock_use(rfs_access)
r_dir_file(rfs_access, firmware_file);
# For tftp server file access
allow rfs_access firmware_file:dir search;
allow rfs_access firmware_file:file r_file_perms;
allow rfs_access mnt_vendor_file:dir search;
allow rfs_access mnt_vendor_file:file r_file_perms;
allow rfs_access persist_file:dir search;
# We are using the backward compatibilty calls
allow rfs_access persist_file:lnk_file read;
allow rfs_access persist_rfs_file:dir create_dir_perms;
allow rfs_access persist_rfs_file:file create_file_perms;
allow rfs_access self:socket create_socket_perms_no_ioctl;
allow rmt_storage kmsg_device:chr_file w_file_perms;
allow rfs_access rfs_system_file:lnk_file r_file_perms;
# RFS UID and GIDs were changed and moved from old values to new ones OEM range.
# The below permissions are required to recursively update the folder ownership
# to the new values in the OEM range.
#The files created by rfs_access process in the /data folder will have type rfs_file
type_transition rfs_access system_data_file:{ dir file } persist_rfs_file;
type_transition rfs_access system_data_file:dir persist_rfs_file "hlos_rfs";
allow rfs_access tombstone_rfs_vendor_data_file:dir create_dir_perms;
allow rfs_access tombstone_rfs_vendor_data_file:file create_file_perms;
================================================
FILE: sepolicy/vendor/rild.te
================================================
binder_call(rild, per_mgr)
vndbinder_use(rild)
allow rild qmuxd_socket:dir w_dir_perms;
allow rild qmuxd_socket:sock_file create_file_perms;
allow rild netmgrd_socket:dir search;
unix_socket_connect(rild, netmgrd, netmgrd)
allow rild vendor_file:file { execute_no_trans lock ioctl };
allow rild per_mgr_service:service_manager find;
add_hwservice(rild, vnd_ims_radio_hwservice)
add_hwservice(rild, vnd_qcrilhook_hwservice)
hal_server_domain(rild, hal_secure_element)
allow rild self:socket ioctl;
allowxperm rild self:socket ioctl msm_sock_ipc_ioctls;
allow rild time_daemon:unix_stream_socket connectto;
userdebug_or_eng(`
domain_auto_trans(rild, smlog_dump_exec, smlog_dump)
')
allow rild radio_vendor_data_file:dir rw_dir_perms;
allow rild radio_vendor_data_file:file create_file_perms;
allow rild qti_audio_app:binder { call transfer };
================================================
FILE: sepolicy/vendor/rmt_storage.te
================================================
type rmt_storage, domain;
type rmt_storage_exec, exec_type, vendor_file_type, file_type;
init_daemon_domain(rmt_storage)
wakelock_use(rmt_storage)
allow rmt_storage self:capability { net_bind_service setgid setpcap setuid };
allow rmt_storage modem_block_device:blk_file rw_file_perms;
allow rmt_storage uio_device:chr_file rw_file_perms;
allow rmt_storage block_device:dir search;
allow rmt_storage sysfs_uio:dir r_dir_perms;
allow rmt_storage sysfs_uio:lnk_file r_file_perms;
allow rmt_storage sysfs_rmtfs:dir search;
allow rmt_storage sysfs_rmtfs:file r_file_perms;
allow rmt_storage sysfs_rmtfs:dir search;
allow rmt_storage debugfs_rmt_storage:dir search;
allow rmt_storage debugfs_rmt_storage:file w_file_perms;
allow rmt_storage self:socket create_socket_perms;
allowxperm rmt_storage self:socket ioctl IPC_ROUTER_IOCTL_BIND_CONTROL_PORT;
================================================
FILE: sepolicy/vendor/seapp_contexts
================================================
#TODO Remove user "system" when b/63588267 is resolved
user=system seinfo=platform name=com.qualcomm.telephony domain=qtelephony type=system_app_data_file
# A fallback in case tango_core is missing something critical that untrusted_app provides
user=_app seinfo=tango name=com.google.tango:app domain=untrusted_app type=app_data_file levelFrom=user
# Use a custom domain for Klik, to allow access to Sidecar
user=_app seinfo=platform name=com.essential.klik domain=essential_camera_app type=app_data_file
#Needed for time service apk
user=_app seinfo=platform name=com.qualcomm.timeservice domain=timeservice_app type=app_data_file
# Custom domain to allow QtiAudio access to RILD/QCOM audio HIDL
user=_app seinfo=aosp name=com.qualcomm.qti.audioservice domain=qti_audio_app type=app_data_file
================================================
FILE: sepolicy/vendor/sensors.te
================================================
# Policy for sensor daemon
type sensors, domain;
type sensors_exec, exec_type, vendor_file_type, file_type;
init_daemon_domain(sensors)
allow sensors self:capability {
net_bind_service
};
allow sensors self:socket create_socket_perms;
allowxperm sensors self:socket ioctl msm_sock_ipc_ioctls;
allow sensors persist_sensors_file:dir rw_dir_perms;
allow sensors persist_sensors_file:file create_file_perms;
allow sensors persist_file:dir { getattr search };
allow sensors persist_file:lnk_file r_file_perms;
allow sensors mnt_vendor_file:dir { getattr search };
allow sensors sensors_vendor_data_file:dir create_dir_perms;
allow sensors sensors_vendor_data_file:file create_file_perms;
allow sensors system_file:dir r_dir_perms;
allow sensors sensors_device:chr_file rw_file_perms;
allow sensors sysfs_soc:dir r_dir_perms;
allow sensors sysfs_soc:file r_file_perms;
r_dir_file(sensors, sysfs_msm_subsys)
userdebug_or_eng(`
r_dir_file(sensors, sysfs_diag)
allow sensors sysfs_timestamp_switch:file r_file_perms;
')
r_dir_file(sensors, sysfs_esoc)
================================================
FILE: sepolicy/vendor/service_contexts
================================================
================================================
FILE: sepolicy/vendor/shell.te
================================================
# To allow non-root to find power_supply management info
allow shell sysfs_msm_subsys:dir search;
get_prop(shell, build_prop)
set_prop(shell, fastboot_prop)
# Needs for Essential Accessory OTA
r_dir_file(shell, sysfs_usb_device)
allow shell system_file:file execute_no_trans;
allow shell ota_package_file:file { open read };
allow shell usb_device:chr_file open;
allow shell usb_device:dir search;
allow shell ota_package_file:dir rw_dir_perms;
allow shell ota_package_file:file create_file_perms;
# Since we define our own tracing_shell_writable domain in file_contexts also
# give shell permissions.
allow shell tracing_shell_writable:file rw_file_perms;
================================================
FILE: sepolicy/vendor/smlog_dump.te
================================================
type smlog_dump_exec, exec_type, vendor_file_type, file_type;
userdebug_or_eng(`
type smlog_dump, domain;
allow smlog_dump modem_dump_file:dir create_dir_perms;
allow smlog_dump modem_dump_file:file create_file_perms;
r_dir_file(smlog_dump, sysfs_uio)
r_dir_file(smlog_dump, sysfs_rmtfs)
allow smlog_dump diag_device:chr_file rw_file_perms;
allow smlog_dump radio_vendor_data_file:file { append read write };
allow smlog_dump rild:fd use;
allow smlog_dump rild:fifo_file { read write };
allow smlog_dump rild:unix_stream_socket { read write };
allow smlog_dump rild:netlink_generic_socket { read write };
allow smlog_dump self:socket create_socket_perms;
allowxperm smlog_dump self:socket ioctl msm_sock_ipc_ioctls;
allow smlog_dump sysfs:dir r_dir_perms;
allow smlog_dump sysfs_msm_subsys:dir r_dir_perms;
allow smlog_dump sysfs_msm_subsys:file r_file_perms;
allow smlog_dump sysfs_msm_subsys:lnk_file read;
allow smlog_dump sysfs_soc:dir search;
allow smlog_dump sysfs_soc:file r_file_perms;
allow smlog_dump dumpstate:fd use;
allow smlog_dump hal_dumpstate_impl:fd use;
allow smlog_dump uio_device:chr_file rw_file_perms;
')
================================================
FILE: sepolicy/vendor/ssr_diag.te
================================================
type ssr_diag, domain;
type ssr_diag_exec, exec_type, vendor_file_type, file_type;
init_daemon_domain(ssr_diag);
r_dir_file(ssr_diag, sysfs_msm_subsys)
================================================
FILE: sepolicy/vendor/ssr_setup.te
================================================
type ssr_setup, domain;
type ssr_setup_exec, exec_type, vendor_file_type, file_type;
init_daemon_domain(ssr_setup);
allow ssr_setup sysfs_msm_subsys:dir r_dir_perms;
allow ssr_setup sysfs_msm_subsys:file rw_file_perms;
allow ssr_setup sysfs_msm_subsys:lnk_file read;
================================================
FILE: sepolicy/vendor/surfaceflinger.te
================================================
dontaudit surfaceflinger kernel:system module_request;
allow surfaceflinger debugfs_ion:dir search;
allow surfaceflinger firmware_file:dir search;
allow surfaceflinger firmware_file:file r_file_perms;
================================================
FILE: sepolicy/vendor/system_app.te
================================================
# Needed by Settings app's TelephonyMonitorPreferenceController, available only on a subset of
# userdebug and eng devices
userdebug_or_eng(`set_prop(system_app, tel_mon_prop)')
# Needed by Settings app's CameraHalHdrplusPreferenceController
set_prop(system_app, camera_prop)
# read regulatory info
allow system_app elabel_data_file:dir r_dir_perms;
allow system_app elabel_data_file:file r_file_perms;
# For Score
allow system_app self:netlink_kobject_uevent_socket { read bind setopt create };
allow system_app persist_file:dir rw_dir_perms;
allow system_app pstore_backup_file:file r_file_perms;
allow system_app pstore_backup_file:dir r_dir_perms;
# For EssentialSUW barcode support
allow system_app persist_file:dir create;
# For Essential Accessory OTA support
allow system_app ota_package_file:dir { add_name search write };
allow system_app ota_package_file:file { read create getattr setattr open write };
get_prop(system_app, fastboot_prop)
## For OMA-DM access
allow system_app persist_file:file getattr;
allow system_app persist_file:dir create;
allow system_app persist_file:dir create_dir_perms;
allow system_app persist_file:file create_file_perms;
allow system_app persist_file:dir search;
allow system_app persist_file:dir create_file_perms;
allow system_app persist_file:file create_file_perms;
allow system_app persist_file:dir add_name;
allow system_app persist_file:dir remove_name;
## For Chameleon access
allow system_app cache_file:lnk_file read;
allow system_app cache_file:dir search;
allow system_app cache_file:dir create_file_perms;
# Allow Hub to read crash reports from /data/system/dropbox.
allow system_app system_data_file:dir r_dir_perms;
allow system_app system_data_file:file r_file_perms;
# Allow Hub to read and process from /data/vendor/radio/diag_logs
allow system_app radio_vendor_data_file:dir create_dir_perms;
allow system_app radio_vendor_data_file:file create_file_perms;
allow system_app sysfs_msm_subsys:dir r_dir_perms;
allow system_app sysfs_msm_subsys:file r_file_perms;
# Allow system app to write trace in pre-existing /data/misc/trace
allow system_app method_trace_data_file:dir w_dir_perms;
allow system_app method_trace_data_file:file { create w_file_perms };
# For tracing support in Hub.
allow system_app tracing_shell_writable:file rw_file_perms;
set_prop(system_app, grip_prop)
set_prop(system_app, mqa_hd_prop)
set_prop(system_app, wfd_service_prop);
set_prop(system_app, omadm_prop);
================================================
FILE: sepolicy/vendor/system_server.te
================================================
allow system_server self:socket ioctl;
allowxperm system_server self:socket ioctl msm_sock_ipc_ioctls;
binder_call(system_server, hal_camera_default)
allow system_server persist_file:dir search;
allow system_server persist_sensors_file:dir search;
allow system_server persist_sensors_file:file r_file_perms;
allow system_server wlan_device:chr_file rw_file_perms;
allow system_server sysfs_msm_subsys:file { open read getattr};
# Switch states
r_dir_file(system_server, sysfs_audio)
# TODO(b/30675296): Remove following dontaudit's upon resolution of this bug
# The timerslack_ns denials spam the system really horribly
dontaudit system_server audioserver:file write;
dontaudit system_server untrusted_app:file write;
dontaudit system_server hal_audio_default:file write;
dontaudit system_server appdomain:file write;
get_prop(system_server, build_prop)
# NFC check for Package Manager
get_prop(system_server, nfc_service_prop)
get_prop(system_server, omadm_prop)
get_prop(system_server, grip_prop)
================================================
FILE: sepolicy/vendor/tee.te
================================================
allow tee self:capability { chown setgid setuid sys_admin sys_rawio };
allow tee device:dir r_dir_perms;
set_prop(tee, tee_listener_prop)
set_prop(tee, keymaster_prop)
allow tee firmware_file:dir search;
allow tee block_device:dir { getattr search };
allow tee ssd_block_device:blk_file rw_file_perms;
allow tee sg_device:chr_file { rw_file_perms setattr };
allow tee mnt_vendor_file:dir r_dir_perms;
allow tee persist_file:dir r_dir_perms;
allow tee persist_drm_file:dir create_dir_perms;
allow tee persist_drm_file:file create_file_perms;
allow tee persist_data_file:dir create_dir_perms;
allow tee persist_data_file:file create_file_perms;
# TODO(b/36644492): Remove data_between_core_and_vendor_violators once
# tee no longer directly accesses /data owned by the frameworks.
typeattribute tee data_between_core_and_vendor_violators;
allow tee system_data_file:dir r_dir_perms;
allow tee fingerprintd_data_file:dir rw_dir_perms;
allow tee fingerprintd_data_file:file create_file_perms;
allow tee time_daemon:unix_stream_socket connectto;
================================================
FILE: sepolicy/vendor/thermal-engine.te
================================================
type thermal-engine, domain;
type thermal-engine_exec, exec_type, vendor_file_type, file_type;
init_daemon_domain(thermal-engine)
allow thermal-engine self:capability2 block_suspend;
# to read /sys/devices
allow thermal-engine sysfs:dir r_dir_perms;
allow thermal-engine sysfs_msm_subsys:dir r_dir_perms;
allow thermal-engine sysfs_msm_subsys:file rw_file_perms;
allow thermal-engine sysfs_soc:dir search;
allow thermal-engine sysfs_soc:file r_file_perms;
allow thermal-engine sysfs_thermal:dir r_dir_perms;
allow thermal-engine sysfs_thermal:file rw_file_perms;
allow thermal-engine sysfs_leds:file rw_file_perms;
allow thermal-engine sysfs_thermal:lnk_file read;
allow thermal-engine sysfs_rmtfs:dir search;
allow thermal-engine sysfs_rmtfs:file r_file_perms;
# to read /proc/stat
allow thermal-engine proc_stat:file { getattr open read };
# IThermal Thermal HAL
hal_server_domain(thermal-engine, hal_thermal)
allow thermal-engine thermal_device:chr_file rw_file_perms;
r_dir_file(thermal-engine, sysfs_leds)
r_dir_file(thermal-engine, sysfs_msm_subsys)
r_dir_file(thermal-engine, sysfs_uio)
r_dir_file(thermal-engine, sysfs_esoc)
allow thermal-engine self:socket create_socket_perms;
allowxperm thermal-engine self:socket ioctl msm_sock_ipc_ioctls;
# reboot/shutdown for thermal limits exceeded
set_prop(thermal-engine, powerctl_prop)
================================================
FILE: sepolicy/vendor/time_daemon.te
================================================
type time_daemon, domain;
type time_daemon_exec, exec_type, vendor_file_type, file_type;
init_daemon_domain(time_daemon)
allow time_daemon self:capability { setgid setuid sys_time };
allow time_daemon rtc_device:chr_file r_file_perms;
r_dir_file(time_daemon, sysfs_msm_subsys)
allow time_daemon sysfs_soc:dir search;
allow time_daemon sysfs_soc:file r_file_perms;
r_dir_file(time_daemon, sysfs_esoc)
allow time_daemon sysfs_esoc:dir search;
allow time_daemon sysfs_esoc:file r_file_perms;
# Set sys.time.set property
set_prop(time_daemon, sys_time_prop);
allow time_daemon persist_time_file:dir w_dir_perms;
allow time_daemon persist_time_file:file create_file_perms;
allow time_daemon persist_time_file:dir search;
allow time_daemon persist_file:dir search;
allow time_daemon self:socket create_socket_perms;
allowxperm time_daemon self:socket ioctl msm_sock_ipc_ioctls;
allow time_daemon time_vendor_data_file:dir create_dir_perms;
allow time_daemon time_vendor_data_file:file create_file_perms;
allow time_daemon mnt_vendor_file:dir search;
================================================
FILE: sepolicy/vendor/timeservice_app.te
================================================
type timeservice_app, domain;
app_domain(timeservice_app);
allow timeservice_app app_api_service:service_manager find;
allow timeservice_app app_data_file:dir { search getattr };
allow timeservice_app time_daemon:unix_stream_socket connectto;
================================================
FILE: sepolicy/vendor/ueventd.te
================================================
allow ueventd firmware_file:lnk_file read;
allow ueventd firmware_file:dir search;
allow ueventd firmware_file:file r_file_perms;
allow ueventd tmpfs:blk_file getattr;
allow ueventd persist_file:dir search;
allow ueventd persist_file:file r_file_perms;
allow ueventd mnt_vendor_file:dir search;
================================================
FILE: sepolicy/vendor/update_engine_common.te
================================================
# Allow update_engine and update_engine_sideload (recovery) read/write on the
# device-specific partitions it should update.
allow update_engine_common xbl_block_device:blk_file rw_file_perms;
allow update_engine_common ab_block_device:blk_file rw_file_perms;
allow update_engine_common modem_block_device:blk_file rw_file_perms;
allow update_engine_common postinstall_mnt_dir:dir r_dir_perms;
allow update_engine_common tmpfs:lnk_file r_file_perms;
================================================
FILE: sepolicy/vendor/vendor_init.te
================================================
typeattribute vendor_init data_between_core_and_vendor_violators;
allow vendor_init {
dhcp_data_file
media_rw_data_file
system_data_file
tombstone_data_file
wifi_data_file
vendor_data_file
}:dir { create search getattr open read setattr ioctl write add_name remove_name rmdir relabelfrom };
allow vendor_init proc_uid_cpupower:file write;
dontaudit vendor_init kernel:system module_request;
allow vendor_init bluetooth_data_file:dir setattr;
allow vendor_init camera_data_file:dir setattr;
allow vendor_init ipa_dev:chr_file { open write };
allow vendor_init preloads_data_file:dir { read setattr };
allow vendor_init self:capability sys_module;
allow vendor_init vendor_data_file:dir setattr;
allow vendor_init vendor_file:system module_load;
allow vendor_init wpa_socket:dir setattr;
allow vendor_init method_trace_data_file:dir setattr;
allow vendor_init nfc_data_file:dir { ioctl open read setattr };
allow vendor_init preloads_data_file:dir { ioctl open };
allow vendor_init preloads_media_file:dir setattr;
allow vendor_init unlabeled:dir { getattr setattr search read relabelfrom };
allow vendor_init unlabeled:file { getattr setattr read relabelfrom };
allow vendor_init firmware_file:dir search;
allow vendor_init firmware_file:file r_file_perms;
set_prop(vendor_init, public_vendor_default_prop)
================================================
FILE: sepolicy/vendor/vndservice.te
================================================
type qdisplay_service, vndservice_manager_type;
type per_mgr_service, vndservice_manager_type;
type wfdnativemm_service, vndservice_manager_type;
================================================
FILE: sepolicy/vendor/vndservice_contexts
================================================
display.qservice u:object_r:qdisplay_service:s0
vendor.qcom.PeripheralManager u:object_r:per_mgr_service:s0
wfd.native.mm.service u:object_r:wfdnativemm_service:s0
================================================
FILE: sepolicy/vendor/vold.te
================================================
get_prop(vold, tee_listener_prop)
allow vold sysfs_scsi_devices_0000:file write;
allow vold sysfs_scsi_devices_other:file write;
allow vold persist_file:dir r_dir_perms;
# generated by proc scan, unnecessary
dontaudit vold proc_irq:dir read;
================================================
FILE: sepolicy/vendor/wcnss_filter.te
================================================
type wcnss_filter, domain;
type wcnss_filter_exec, exec_type, vendor_file_type, file_type;
init_daemon_domain(wcnss_filter)
set_prop(wcnss_filter, wc_prop)
set_prop(wcnss_filter, bluetooth_prop)
allow wcnss_filter hci_attach_dev:chr_file rw_file_perms;
userdebug_or_eng(`
allow wcnss_filter diag_device:chr_file rw_file_perms;
allow wcnss_filter ramdump_vendor_data_file:dir w_dir_perms;
allow wcnss_filter ramdump_vendor_data_file:file { create w_file_perms };
allow wcnss_filter proc_sysrq:file { open write };
allow wcnss_filter sysfs_timestamp_switch:file r_file_perms;
r_dir_file(wcnss_filter, debugfs_ipc)
r_dir_file(wcnss_filter, sysfs_diag)
set_prop(wcnss_filter, ssr_prop)
')
#allow wakelock
wakelock_use(wcnss_filter)
# allow wcnss to set threads to RT priority
allow wcnss_filter self:capability sys_nice;
================================================
FILE: sepolicy/vendor/wcnss_service.te
================================================
type wcnss_service, domain;
type wcnss_service_exec, exec_type, vendor_file_type, file_type;
init_daemon_domain(wcnss_service)
net_domain(wcnss_service)
vndbinder_use(wcnss_service)
binder_call(wcnss_service, per_mgr)
allow wcnss_service per_mgr_service:service_manager find;
allow wcnss_service vendor_shell_exec:file rx_file_perms;
allow wcnss_service vendor_toolbox_exec:file rx_file_perms;
allow wcnss_service proc_net:file w_file_perms;
allow wcnss_service self:capability { net_admin };
allow wcnss_service self:socket create_socket_perms;
allowxperm wcnss_service self:socket ioctl msm_sock_ipc_ioctls;
allowxperm wcnss_service self:udp_socket ioctl { SIOCIWFIRSTPRIV_05 SIOCSIFFLAGS };
allow wcnss_service self:netlink_generic_socket create_socket_perms_no_ioctl;
allow wcnss_service self:netlink_socket create_socket_perms_no_ioctl;
allow wcnss_service cnss_vendor_data_file:dir create_dir_perms;
allow wcnss_service cnss_vendor_data_file:file create_file_perms;
allow wcnss_service proc_net:file getattr;
r_dir_file(wcnss_service, sysfs_msm_subsys)
# pkt logging for cnss_diag
userdebug_or_eng(`
r_dir_file(wcnss_service, proc_wifi_dbg)
r_dir_file(wcnss_service, sysfs_diag)
allow wcnss_service sysfs_timestamp_switch:file r_file_perms;
# This is needed for ptt_socket app to write logs file collected to sdcard
r_dir_file(wcnss_service, storage_file)
r_dir_file(wcnss_service, mnt_user_file)
allow wcnss_service sdcardfs:dir create_dir_perms;
allow wcnss_service sdcardfs:file create_file_perms;
')
allow wcnss_service sysfs_soc:dir search;
allow wcnss_service sysfs_soc:file r_file_perms;
r_dir_file(wcnss_service, sysfs_esoc)
allow wcnss_service sysfs_esoc:dir search;
allow wcnss_service sysfs_esoc:file r_file_perms;
allow wcnss_service firmware_file:dir search;
allow wcnss_service firmware_file:file r_file_perms;
get_prop(wcnss_service, hwservicemanager_prop)
================================================
FILE: sepolicy/vendor/wifidisplayhalservice.te
================================================
# Copyright (c) 2017, The Linux Foundation. All rights reserved.
#
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions are
# met:
# * Redistributions of source code must retain the above copyright
# notice, this list of conditions and the following disclaimer.
# * Redistributions in binary form must reproduce the above
# copyright notice, this list of conditions and the following
# disclaimer in the documentation and/or other materials provided
# with the distribution.
# * Neither the name of The Linux Foundation nor the names of its
# contributors may be used to endorse or promote products derived
# from this software without specific prior written permission.
#
# THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED
# WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT
# ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS
# BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
# BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
# OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
# IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
#Define Domain
type wifidisplayhalservice_qti, domain;
type wifidisplayhalservice_qti_exec, exec_type, vendor_file_type, file_type;
net_domain(wifidisplayhalservice_qti)
hwbinder_use(wifidisplayhalservice_qti)
allow wifidisplayhalservice_qti system_file:dir r_dir_perms;
get_prop(wifidisplayhalservice_qti, hwservicemanager_prop)
typeattribute wifidisplayhalservice_qti wifidisplayhalservice_server;
typeattribute wifidisplayhalservice_qti wifidisplayhalservice;
#Allow for transition from init domain to wifidisplayhalservice
init_daemon_domain(wifidisplayhalservice_qti)
#Allow wifidisplayhalservice to use Vendor Binder IPC
vndbinder_use(wifidisplayhalservice)
# Allow hwbinder call from hal client to server
binder_call(wifidisplayhalservice_client, wifidisplayhalservice_server)
binder_call(wifidisplayhalservice_server, wifidisplayhalservice_client)
# Add hwservice related rules
add_hwservice(wifidisplayhalservice_server, wifidisplayhalservice_hwservice)
#Direct streaming native service
add_service(wifidisplayhalservice, wfdnativemm_service)
#Allow access to firmware files for HDCP session
r_dir_file(wifidisplayhalservice, firmware_file)
#Allow access to tee/ion device and tcp socket for HDCP sessions
allow wifidisplayhalservice tee_device:chr_file rw_file_perms;
allow wifidisplayhalservice ion_device:chr_file r_file_perms;
================================================
FILE: sepolicy/vendor/zygote.te
================================================
get_prop(zygote, build_prop)
get_prop(webview_zygote, build_prop)
================================================
FILE: sound_trigger_platform_info.xml
================================================
================================================
FILE: sprint_whitelist.xml
================================================
================================================
FILE: system.prop
================================================
#
# system.prop for cobalt
#
#rild.libpath=/system/lib/libreference-ril.so
rild.libpath=/vendor/lib64/libril-qc-qmi-1.so
#rild.libargs=-d /dev/smd0
persist.rild.nitz_plmn=
persist.rild.nitz_long_ons_0=
persist.rild.nitz_long_ons_1=
persist.rild.nitz_long_ons_2=
persist.rild.nitz_long_ons_3=
persist.rild.nitz_short_ons_0=
persist.rild.nitz_short_ons_1=
persist.rild.nitz_short_ons_2=
persist.rild.nitz_short_ons_3=
ril.subscription.types=NV,RUIM
DEVICE_PROVISIONED=1
debug.sf.enable_hwc_vds=1
debug.sf.hw=1
debug.gralloc.enable_fb_ubwc=1
dalvik.vm.heapsize=36m
dev.pm.dyn_samplingrate=1
persist.demo.hdmirotationlock=false
#property to specify the number of frames to skip before setting hint
sdm.perf_hint_window=50
#ro.hdmi.enable=true
#
# system props for the cne module
#
persist.cne.feature=1
persist.radio.VT_ENABLE=1
persist.radio.VT_HYBRID_ENABLE=1
persist.radio.data_con_rprt=true
persist.rcs.supported=1
persist.radio.rat_on=combine
#system props for the MM modules
media.stagefright.enable-player=true
media.stagefright.enable-http=true
media.stagefright.enable-aac=true
media.stagefright.enable-qcp=true
media.stagefright.enable-scan=true
mmp.enable.3g2=true
media.aac_51_output_enabled=true
mm.enable.smoothstreaming=true
media.settings.xml=/vendor/etc/media_profiles_V1_0.xml
persist.mm.enable.prefetch=true
# Additional buffers shared between Camera and Video
vidc.enc.dcvs.extra-buff-count=2
#
# system props for the data modules
#
ro.use_data_netmgrd=true
persist.data.netmgrd.qos.enable=true
persist.data.mode=concurrent
#system props for time-services
persist.timed.enable=true
# system property for maximum number of HFP client connections
bt.max.hfpclient.connections=1
# System property for cabl
ro.qualcomm.cabl=2
#
# System props for telephony
# System prop to turn on CdmaLTEPhone always
telephony.lteOnCdmaDevice=1
#Simulate sdcard on /data/media
#
persist.fuse_sdcard=true
#system prop for A4WP profile support
ro.bluetooth.a4wp=false
#
#snapdragon value add features
#
#system prop for RmNet Data
persist.rmnet.data.enable=true
persist.data.wda.enable=true
persist.data.df.dl_mode=5
persist.data.df.ul_mode=5
persist.data.df.agg.dl_pkt=10
persist.data.df.agg.dl_size=4096
persist.data.df.mux_count=8
persist.data.df.iwlan_mux=9
persist.data.df.dev_name=rmnet_usb0
#
# system property determining camera HAL to be used for a Video call
#
# 1 is camera1
# 2 or anything else is camera2
persist.radio.VT_CAM_INTERFACE=2
#property to enable user to access Google WFD settings
persist.debug.wfd.enable=1
##property to choose between virtual/external wfd display
persist.sys.wfd.virtual=0
# system prop for NFC DT
ro.nfc.port=I2C
#property to enable VDS WFD solution
persist.hwc.enable_vds=1
#Increase cached app limit
ro.vendor.qti.sys.fw.bg_apps_limit=60
# Property to enable sched colocation, app trigger, game trigger
sched.colocate.enable=1
ro.vendor.gt_library=libqti-gt.so
ro.vendor.at_library=libqti-at.so
sys.games.gt.prof=1
#min/max cpu in core control
ro.vendor.qti.core_ctl_min_cpu=2
ro.vendor.qti.core_ctl_max_cpu=4
#Settings to enable sensors
#Device Orientation sensor
ro.vendor.sensors.dev_ori=false
#Persistent Motion Detector
ro.vendor.sensors.pmd=true
#Stationary Detector
ro.vendor.sensors.sta_detect=true
#Motion Detector
ro.vendor.sensors.mot_detect=true
#Device Position Classifier
ro.vendor.sensors.dpc=true
#MultiShake sensor
ro.vendor.sensors.multishake=true
ro.vendor.sensors.wu=false
#Disable face beautification
persist.ts.rtmakeup=false
#Property to enable display default color mode
vendor.display.enable_default_color_mode=1
persist.radio.videopause.mode=1
persist.data.iwlan.enable=true
#Expose aux camera for below packages
persist.camera.expose.aux=1
vendor.camera.aux.packagelist=org.codeaurora.snapcam,com.essential.klik,com.essential.testcamera
# Set max FPS support
persist.camera.max.previewfps=60
# Property for backup NTP Server
persist.backup.ntpServer="0.pool.ntp.org"
# Chameleon
ro.cdma.home.operator.alpha=Chameleon
ro.home.operator.carrierid=Chameleon
ro.cdma.home.operator.numeric=310000
#enable DPM features
persist.vendor.dpm.feature=11
# Qcril properties
# since Mata is all bands device, should support both 3gpp and 3gpp2 emergency alerts
persist.vendor.radio.all_bc_msg=all
ro.gpu.available_frequencies="710000000 670000000 596000000 515000000 414000000 342000000 257000000"
audio.offload.min.duration.secs=0
vendor.audio.mqa.enable=true
================================================
FILE: thermal/Android.mk
================================================
#
# Copyright 2017 The Android Open Source Project
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE_RELATIVE_PATH := hw
LOCAL_PROPRIETARY_MODULE := true
LOCAL_MODULE_OWNER := qcom
LOCAL_MODULE_TAGS := optional
LOCAL_MODULE := android.hardware.thermal@1.0-service.mata
LOCAL_INIT_RC := android.hardware.thermal@1.0-service.mata.rc
LOCAL_SRC_FILES := service.cpp Thermal.cpp thermal-helper.cpp
LOCAL_SHARED_LIBRARIES := \
libhidlbase \
libhidltransport \
libutils \
libbase \
android.hardware.thermal@1.0 \
include $(BUILD_EXECUTABLE)
================================================
FILE: thermal/Thermal.cpp
================================================
/*
* Copyright (C) 2017 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
#include
#include
#include
#include "Thermal.h"
#include "thermal-helper.h"
namespace android {
namespace hardware {
namespace thermal {
namespace V1_0 {
namespace implementation {
Thermal::Thermal() : enabled(initThermal()) {}
// Methods from ::android::hardware::thermal::V1_0::IThermal follow.
Return Thermal::getTemperatures(getTemperatures_cb _hidl_cb) {
ThermalStatus status;
status.code = ThermalStatusCode::SUCCESS;
hidl_vec temperatures;
temperatures.resize(kTemperatureNum);
if (!enabled) {
status.code = ThermalStatusCode::FAILURE;
status.debugMessage = "Unsupported hardware";
_hidl_cb(status, temperatures);
return Void();
}
ssize_t ret = fillTemperatures(&temperatures);
if (ret < 0) {
status.code = ThermalStatusCode::FAILURE;
status.debugMessage = strerror(-ret);
}
_hidl_cb(status, temperatures);
for (auto& t : temperatures) {
LOG(DEBUG) << "getTemperatures "
<< " Type: " << static_cast(t.type)
<< " Name: " << t.name
<< " CurrentValue: " << t.currentValue
<< " ThrottlingThreshold: " << t.throttlingThreshold
<< " ShutdownThreshold: " << t.shutdownThreshold
<< " VrThrottlingThreshold: " << t.vrThrottlingThreshold;
}
return Void();
}
Return Thermal::getCpuUsages(getCpuUsages_cb _hidl_cb) {
ThermalStatus status;
status.code = ThermalStatusCode::SUCCESS;
hidl_vec cpuUsages;
cpuUsages.resize(kCpuNum);
if (!enabled) {
status.code = ThermalStatusCode::FAILURE;
status.debugMessage = "Unsupported hardware";
_hidl_cb(status, cpuUsages);
return Void();
}
ssize_t ret = fillCpuUsages(&cpuUsages);
if (ret < 0) {
status.code = ThermalStatusCode::FAILURE;
status.debugMessage = strerror(-ret);
}
for (auto& u : cpuUsages) {
LOG(DEBUG) << "getCpuUsages "
<< " Name: " << u.name
<< " Active: " << u.active
<< " Total: " << u.total
<< " IsOnline: " << u.isOnline;
}
_hidl_cb(status, cpuUsages);
return Void();
}
Return Thermal::getCoolingDevices(getCoolingDevices_cb _hidl_cb) {
ThermalStatus status;
status.code = ThermalStatusCode::SUCCESS;
hidl_vec coolingDevices;
if (!enabled) {
status.code = ThermalStatusCode::FAILURE;
status.debugMessage = "Unsupported hardware";
_hidl_cb(status, coolingDevices);
return Void();
}
LOG(DEBUG) << "No Cooling Device";
_hidl_cb(status, coolingDevices);
return Void();
}
} // namespace implementation
} // namespace V1_0
} // namespace thermal
} // namespace hardware
} // namespace android
================================================
FILE: thermal/Thermal.h
================================================
/*
* Copyright (C) 2017 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
#ifndef ANDROID_HARDWARE_THERMAL_V1_0_MATA_THERMAL_H
#define ANDROID_HARDWARE_THERMAL_V1_0_MATA_THERMAL_H
#include
#include
#include
namespace android {
namespace hardware {
namespace thermal {
namespace V1_0 {
namespace implementation {
using ::android::hardware::thermal::V1_0::CoolingDevice;
using ::android::hardware::thermal::V1_0::CpuUsage;
using ::android::hardware::thermal::V1_0::IThermal;
using ::android::hardware::thermal::V1_0::Temperature;
using ::android::hardware::thermal::V1_0::ThermalStatus;
using ::android::hardware::Return;
using ::android::hardware::Void;
using ::android::hardware::hidl_vec;
using ::android::hardware::hidl_string;
using ::android::sp;
struct Thermal : public IThermal {
Thermal();
// Methods from ::android::hardware::thermal::V1_0::IThermal follow.
Return getTemperatures(getTemperatures_cb _hidl_cb) override;
Return getCpuUsages(getCpuUsages_cb _hidl_cb) override;
Return getCoolingDevices(getCoolingDevices_cb _hidl_cb) override;
private:
bool enabled;
};
} // namespace implementation
} // namespace V1_0
} // namespace thermal
} // namespace hardware
} // namespace android
#endif // ANDROID_HARDWARE_THERMAL_V1_0_MATA_THERMAL_H
================================================
FILE: thermal/android.hardware.thermal@1.0-service.mata.rc
================================================
service thermal-hal-1-0 /vendor/bin/hw/android.hardware.thermal@1.0-service.mata
class hal
user nobody
group nobody
================================================
FILE: thermal/service.cpp
================================================
/*
* Copyright (C) 2017 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
#include
#include
#include "Thermal.h"
using android::sp;
using android::status_t;
using android::OK;
// libhwbinder:
using android::hardware::configureRpcThreadpool;
using android::hardware::joinRpcThreadpool;
// Generated HIDL files
using android::hardware::thermal::V1_0::IThermal;
using android::hardware::thermal::V1_0::implementation::Thermal;
int main() {
status_t status;
android::sp service = nullptr;
LOG(INFO) << "Thermal HAL Service 1.0 is starting";
service = new Thermal();
if (service == nullptr) {
LOG(ERROR) << "Can not create an instance of Thermal HAL Iface, exiting";
goto shutdown;
}
configureRpcThreadpool(1, true /*callerWillJoin*/);
status = service->registerAsService();
if (status != OK) {
LOG(ERROR) << "Could not register service for Thermal HAL Iface (" << status << ")";
goto shutdown;
}
LOG(INFO) << "Thermal Service is ready";
joinRpcThreadpool();
// Should not pass this line
shutdown:
// In normal operation, we don't expect the thread pool to exit
LOG(ERROR) << "Thermal Service is shutting down";
return 1;
}
================================================
FILE: thermal/thermal-helper.cpp
================================================
/*
* Copyright (C) 2017 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include "thermal-helper.h"
namespace android {
namespace hardware {
namespace thermal {
namespace V1_0 {
namespace implementation {
static unsigned int gSkinSensorNum;
static unsigned int gTsensOffset;
static unsigned int gSkinThrottlingThreshold;
static unsigned int gSkinShutdownThreshold;
static unsigned int gVrThrottledBelowMin;
/**
* Initialization constants based on platform
*
* @return true on success or false on error.
*/
bool initThermal() {
LOG(ERROR) << "Initialization on Mata";
gSkinSensorNum = kMataSkinSensorNum;
gTsensOffset = kMataTsensOffset;
gSkinThrottlingThreshold = kMataSkinThrottlingThreshold;
gSkinShutdownThreshold = kMataSkinShutdownThreshold;
gVrThrottledBelowMin = kMataVrThrottledBelowMin;
return true;
}
/**
* Reads device temperature.
*
* @param sensor_num Number of sensor file with temperature.
* @param type Device temperature type.
* @param name Device temperature name.
* @param mult Multiplier used to translate temperature to Celsius.
* @param throttling_threshold Throttling threshold for the temperature.
* @param shutdown_threshold Shutdown threshold for the temperature.
* @param out Pointer to temperature_t structure that will be filled with current
* values.
*
* @return 0 on success or negative value -errno on error.
*/
static ssize_t readTemperature(int sensor_num, TemperatureType type, const char *name, float mult,
float throttling_threshold, float shutdown_threshold,
float vr_throttling_threshold, Temperature *out) {
FILE *file;
char file_name[PATH_MAX];
float temp;
sprintf(file_name, kTemperatureFileFormat, sensor_num);
file = fopen(file_name, "r");
if (file == NULL) {
PLOG(ERROR) << "readTemperature: failed to open file (" << file_name << ")";
return -errno;
}
if (1 != fscanf(file, "%f", &temp)) {
fclose(file);
PLOG(ERROR) << "readTemperature: failed to read a float";
return errno ? -errno : -EIO;
}
fclose(file);
(*out).type = type;
(*out).name = name;
(*out).currentValue = temp * mult;
(*out).throttlingThreshold = throttling_threshold;
(*out).shutdownThreshold = shutdown_threshold;
(*out).vrThrottlingThreshold = vr_throttling_threshold;
LOG(DEBUG) << android::base::StringPrintf(
"readTemperature: %d, %d, %s, %g, %g, %g, %g",
sensor_num, type, name, temp * mult, throttling_threshold,
shutdown_threshold, vr_throttling_threshold);
return 0;
}
static ssize_t getCpuTemperatures(hidl_vec *temperatures) {
size_t cpu;
for (cpu = 0; cpu < kCpuNum; cpu++) {
if (cpu >= temperatures->size()) {
break;
}
// temperature in decidegrees Celsius.
ssize_t result = readTemperature(kCpuTsensOffset[cpu] + gTsensOffset, TemperatureType::CPU, kCpuLabel[cpu],
0.1, kCpuThrottlingThreshold, kCpuShutdownThreshold, kCpuThrottlingThreshold,
&(*temperatures)[cpu]);
if (result != 0) {
return result;
}
}
return cpu;
}
ssize_t fillTemperatures(hidl_vec *temperatures) {
ssize_t result = 0;
size_t current_index = 0;
if (temperatures == NULL || temperatures->size() < kTemperatureNum) {
LOG(ERROR) << "fillTemperatures: incorrect buffer";
return -EINVAL;
}
result = getCpuTemperatures(temperatures);
if (result < 0) {
return result;
}
current_index += result;
// GPU temperature.
if (current_index < temperatures->size()) {
// temperature in decidegrees Celsius.
result = readTemperature(gTsensOffset + kGpuTsensOffset, TemperatureType::GPU, kGpuLabel, 0.1,
NAN, NAN, NAN, &(*temperatures)[current_index]);
if (result < 0) {
return result;
}
current_index++;
}
// Battery temperature.
if (current_index < temperatures->size()) {
// battery: temperature in millidegrees Celsius.
result = readTemperature(kBatterySensorNum, TemperatureType::BATTERY, kBatteryLabel,
0.001, NAN, kBatteryShutdownThreshold, NAN,
&(*temperatures)[current_index]);
if (result < 0) {
return result;
}
current_index++;
}
// Skin temperature.
if (current_index < temperatures->size()) {
// temperature in Celsius.
result = readTemperature(gSkinSensorNum, TemperatureType::SKIN, kSkinLabel, 1.,
gSkinThrottlingThreshold, gSkinShutdownThreshold, gVrThrottledBelowMin,
&(*temperatures)[current_index]);
if (result < 0) {
return result;
}
current_index++;
}
return kTemperatureNum;
}
ssize_t fillCpuUsages(hidl_vec *cpuUsages) {
int vals, cpu_num, online;
ssize_t read;
uint64_t user, nice, system, idle, active, total;
char *line = NULL;
size_t len = 0;
size_t size = 0;
char file_name[PATH_MAX];
FILE *file;
FILE *cpu_file;
if (cpuUsages == NULL || cpuUsages->size() < kCpuNum ) {
LOG(ERROR) << "fillCpuUsages: incorrect buffer";
return -EINVAL;
}
file = fopen(kCpuUsageFile, "r");
if (file == NULL) {
PLOG(ERROR) << "fillCpuUsages: failed to open file (" << kCpuUsageFile << ")";
return -errno;
}
while ((read = getline(&line, &len, file)) != -1) {
// Skip non "cpu[0-9]" lines.
if (strnlen(line, read) < 4 || strncmp(line, "cpu", 3) != 0 || !isdigit(line[3])) {
free(line);
line = NULL;
len = 0;
continue;
}
vals = sscanf(line, "cpu%d %" SCNu64 " %" SCNu64 " %" SCNu64 " %" SCNu64, &cpu_num, &user,
&nice, &system, &idle);
free(line);
line = NULL;
len = 0;
if (vals != 5 || size == kCpuNum) {
if (vals != 5) {
PLOG(ERROR) << "fillCpuUsages: failed to read CPU information from file ("
<< kCpuUsageFile << ")";
} else {
PLOG(ERROR) << "fillCpuUsages: file has incorrect format ("
<< kCpuUsageFile << ")";
}
fclose(file);
return errno ? -errno : -EIO;
}
active = user + nice + system;
total = active + idle;
// Read online CPU information.
snprintf(file_name, PATH_MAX, kCpuOnlineFileFormat, cpu_num);
cpu_file = fopen(file_name, "r");
online = 0;
if (cpu_file == NULL) {
PLOG(ERROR) << "fillCpuUsages: failed to open file (" << file_name << ")";
fclose(file);
return -errno;
}
if (1 != fscanf(cpu_file, "%d", &online)) {
PLOG(ERROR) << "fillCpuUsages: failed to read CPU online information from file ("
<< file_name << ")";
fclose(file);
fclose(cpu_file);
return errno ? -errno : -EIO;
}
fclose(cpu_file);
(*cpuUsages)[size].name = kCpuLabel[size];
(*cpuUsages)[size].active = active;
(*cpuUsages)[size].total = total;
(*cpuUsages)[size].isOnline = static_cast(online);
LOG(DEBUG) << "fillCpuUsages: "<< kCpuLabel[size] << ": "
<< active << " " << total << " " << online;
size++;
}
fclose(file);
if (size != kCpuNum) {
PLOG(ERROR) << "fillCpuUsages: file has incorrect format (" << kCpuUsageFile << ")";
return -EIO;
}
return kCpuNum;
}
} // namespace implementation
} // namespace V1_0
} // namespace thermal
} // namespace hardware
} // namespace android
================================================
FILE: thermal/thermal-helper.h
================================================
/*
* Copyright (c) 2017, The Linux Foundation. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are
* met:
* * * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* * Redistributions in binary form must reproduce the above
* copyright notice, this list of conditions and the following
* disclaimer in the documentation and/or other materials provided
* with the distribution.
* * Neither the name of The Linux Foundation nor the names of its
* contributors may be used to endorse or promote products derived
* from this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS
* BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
* BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
* OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
* IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
#ifndef __THERMAL_HELPER_H__
#define __THERMAL_HELPER_H__
#include
namespace android {
namespace hardware {
namespace thermal {
namespace V1_0 {
namespace implementation {
using ::android::hardware::thermal::V1_0::CpuUsage;
using ::android::hardware::thermal::V1_0::Temperature;
constexpr const char *kCpuUsageFile = "/proc/stat";
constexpr const char *kTemperatureFileFormat = "/sys/class/thermal/thermal_zone%d/temp";
constexpr const char *kCpuOnlineFileFormat = "/sys/devices/system/cpu/cpu%d/online";
/* CPU and GPU
* static char *vs_list_cobalt_cluster0[] = {
"tsens_tz_sensor1",
"tsens_tz_sensor2",
"tsens_tz_sensor3",
"tsens_tz_sensor4"
};
static char *vs_list_cobalt_cluster1[] = {
"tsens_tz_sensor7",
"tsens_tz_sensor8",
"tsens_tz_sensor9",
"tsens_tz_sensor10"
};
static char *vs_list_cobalt_gpu_skin[] = {
"tsens_tz_sensor13",
"quiet_therm"
};
* */
// thermal-engine.conf
constexpr unsigned int kMataSkinSensorNum = 9;
constexpr unsigned int kMataTsensOffset = 10;
constexpr unsigned int kMataSkinThrottlingThreshold = 40;
constexpr unsigned int kMataSkinShutdownThreshold = 56;
constexpr unsigned int kMataVrThrottledBelowMin = 52;
constexpr unsigned int kBatterySensorNum = 0;
constexpr unsigned int kGpuTsensOffset = 11;
constexpr unsigned int kCpuNum = 8;
constexpr const char *kGpuLabel = "GPU";
constexpr const char *kBatteryLabel = "battery";
constexpr const char *kSkinLabel = "skin";
constexpr const char *kCpuLabel[kCpuNum] = {"CPU0", "CPU1", "CPU2", "CPU3", "CPU4", "CPU5", "CPU6", "CPU7"};
constexpr int kCpuTsensOffset[kCpuNum] = {1, 2, 4, 3, 5, 6, 7, 8};
// Sum of kCpuNum + 3 for GPU, BATTERY, and SKIN.
constexpr unsigned int kTemperatureNum = 3 + kCpuNum;
// qcom, therm-reset-temp
constexpr unsigned int kCpuShutdownThreshold = 115;
// qcom,freq-mitigation-temp
constexpr unsigned int kCpuThrottlingThreshold = 95;
// config_shutdownBatteryTemperature in overlay/frameworks/base/core/res/res/values/config.xml
constexpr unsigned int kBatteryShutdownThreshold = 60;
bool initThermal();
ssize_t fillTemperatures(hidl_vec *temperatures);
ssize_t fillCpuUsages(hidl_vec *cpuUsages);
} // namespace implementation
} // namespace V1_0
} // namespace thermal
} // namespace hardware
} // namespace android
#endif //__THERMAL_HELPER_H__
================================================
FILE: uinput-fpc.kl
================================================
key 105 SYSTEM_NAVIGATION_UP
key 108 SYSTEM_NAVIGATION_RIGHT
key 103 SYSTEM_NAVIGATION_LEFT
key 106 SYSTEM_NAVIGATION_DOWN
================================================
FILE: usb/Android.mk
================================================
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE_RELATIVE_PATH := hw
LOCAL_PROPRIETARY_MODULE := true
LOCAL_MODULE := android.hardware.usb@1.0-service.mata
LOCAL_INIT_RC := android.hardware.usb@1.0-service.mata.rc
LOCAL_SRC_FILES := \
service.cpp \
Usb.cpp
LOCAL_SHARED_LIBRARIES := \
libcutils \
libhidlbase \
libhidltransport \
liblog \
libutils \
libhardware \
android.hardware.usb@1.0 \
include $(BUILD_EXECUTABLE)
================================================
FILE: usb/Usb.cpp
================================================
/*
* Copyright (C) 2016 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include "Usb.h"
namespace android {
namespace hardware {
namespace usb {
namespace V1_0 {
namespace implementation {
// Set by the signal handler to destroy the thread
volatile bool destroyThread;
int32_t readFile(std::string filename, std::string& contents) {
std::ifstream file(filename);
if (file.is_open()) {
getline(file, contents);
file.close();
return 0;
}
return -1;
}
std::string appendRoleNodeHelper(const std::string portName, PortRoleType type) {
std::string node("/sys/class/dual_role_usb/" + portName);
switch(type) {
case PortRoleType::DATA_ROLE:
return node + "/data_role";
case PortRoleType::POWER_ROLE:
return node + "/power_role";
default:
return node + "/mode";
}
}
std::string convertRoletoString(PortRole role) {
if (role.type == PortRoleType::POWER_ROLE) {
if (role.role == static_cast (PortPowerRole::SOURCE))
return "source";
else if (role.role == static_cast (PortPowerRole::SINK))
return "sink";
} else if (role.type == PortRoleType::DATA_ROLE) {
if (role.role == static_cast (PortDataRole::HOST))
return "host";
if (role.role == static_cast (PortDataRole::DEVICE))
return "device";
} else if (role.type == PortRoleType::MODE) {
if (role.role == static_cast (PortMode::UFP))
return "ufp";
if (role.role == static_cast (PortMode::DFP))
return "dfp";
}
return "none";
}
Return Usb::switchRole(const hidl_string& portName,
const PortRole& newRole) {
std::string filename = appendRoleNodeHelper(std::string(portName.c_str()),
newRole.type);
std::ofstream file(filename);
std::string written;
ALOGI("filename write: %s role:%d", filename.c_str(), newRole.role);
if (file.is_open()) {
file << convertRoletoString(newRole).c_str();
file.close();
if (!readFile(filename, written)) {
ALOGI("written: %s", written.c_str());
if (written == convertRoletoString(newRole)) {
ALOGI("Role switch successfull");
Return ret =
mCallback->notifyRoleSwitchStatus(portName, newRole,
Status::SUCCESS);
if (!ret.isOk())
ALOGE("RoleSwitchStatus error %s",
ret.description().c_str());
}
}
}
Return ret = mCallback->notifyRoleSwitchStatus(portName, newRole, Status::ERROR);
if (!ret.isOk())
ALOGE("RoleSwitchStatus error %s", ret.description().c_str());
return Void();
}
Status getCurrentRoleHelper(std::string portName,
PortRoleType type, uint32_t ¤tRole) {
std::string filename;
std::string roleName;
if (type == PortRoleType::POWER_ROLE) {
filename = "/sys/class/dual_role_usb/" +
portName + "/power_role";
currentRole = static_cast(PortPowerRole::NONE);
} else if (type == PortRoleType::DATA_ROLE) {
filename = "/sys/class/dual_role_usb/" +
portName + "/data_role";
currentRole = static_cast (PortDataRole::NONE);
} else if (type == PortRoleType::MODE) {
filename = "/sys/class/dual_role_usb/" +
portName + "/mode";
currentRole = static_cast (PortMode::NONE);
}
if (readFile(filename, roleName)) {
ALOGE("getCurrentRole: Failed to open filesystem node");
return Status::ERROR;
}
if (roleName == "dfp")
currentRole = static_cast (PortMode::DFP);
else if (roleName == "ufp")
currentRole = static_cast (PortMode::UFP);
else if (roleName == "source")
currentRole = static_cast (PortPowerRole::SOURCE);
else if (roleName == "sink")
currentRole = static_cast (PortPowerRole::SINK);
else if (roleName == "host")
currentRole = static_cast (PortDataRole::HOST);
else if (roleName == "device")
currentRole = static_cast (PortDataRole::DEVICE);
else if (roleName != "none") {
/* case for none has already been addressed.
* so we check if the role isnt none.
*/
return Status::UNRECOGNIZED_ROLE;
}
return Status::SUCCESS;
}
Status getTypeCPortNamesHelper(std::vector& names) {
DIR *dp;
dp = opendir("/sys/class/dual_role_usb");
if (dp != NULL)
{
rescan:
int32_t ports = 0;
int32_t current = 0;
struct dirent *ep;
while ((ep = readdir (dp))) {
if (ep->d_type == DT_LNK) {
ports++;
}
}
if (ports == 0) {
closedir(dp);
return Status::SUCCESS;
}
names.resize(ports);
rewinddir(dp);
while ((ep = readdir (dp))) {
if (ep->d_type == DT_LNK) {
/* Check to see if new ports were added since the first pass. */
if (current >= ports) {
rewinddir(dp);
goto rescan;
}
names[current++] = ep->d_name;
}
}
closedir (dp);
return Status::SUCCESS;
}
ALOGE("Failed to open /sys/class/dual_role_usb");
return Status::ERROR;
}
bool canSwitchRoleHelper(const std::string portName, PortRoleType type) {
std::string filename = appendRoleNodeHelper(portName, type);
std::ofstream file(filename);
if (file.is_open()) {
file.close();
return true;
}
return false;
}
Status getPortModeHelper(const std::string portName, PortMode& portMode) {
std::string filename = "/sys/class/dual_role_usb/" +
std::string(portName.c_str()) + "/supported_modes";
std::string modes;
if (readFile(filename, modes)) {
ALOGE("getSupportedRoles: Failed to open filesystem node");
return Status::ERROR;
}
if (modes == "ufp dfp")
portMode = PortMode::DRP;
else if (modes == "ufp")
portMode = PortMode::UFP;
else if (modes == "dfp")
portMode = PortMode::DFP;
else
return Status::UNRECOGNIZED_ROLE;
return Status::SUCCESS;
}
#define MAX_LOOP 300
Status getPortStatusHelper (hidl_vec& currentPortStatus) {
std::vector names;
Status result = getTypeCPortNamesHelper(names);
int j = 0;
if (result == Status::SUCCESS) {
currentPortStatus.resize(names.size());
for(std::vector::size_type i = 0; i < names.size(); i++) {
while (j < MAX_LOOP) {
currentPortStatus[i].portName = names[i];
uint32_t currentRole;
if (getCurrentRoleHelper(names[i], PortRoleType::POWER_ROLE,
currentRole) == Status::SUCCESS) {
currentPortStatus[i].currentPowerRole =
static_cast (currentRole);
} else {
ALOGE("Error while retreiving portNames");
goto done;
}
if (getCurrentRoleHelper(names[i],
PortRoleType::DATA_ROLE, currentRole) == Status::SUCCESS) {
currentPortStatus[i].currentDataRole =
static_cast (currentRole);
} else {
ALOGE("Error while retreiving current port role");
goto done;
}
if (getCurrentRoleHelper(names[i], PortRoleType::MODE,
currentRole) == Status::SUCCESS) {
currentPortStatus[i].currentMode =
static_cast (currentRole);
} else {
ALOGE("Error while retreiving current data role");
goto done;
}
currentPortStatus[i].canChangeMode =
canSwitchRoleHelper(names[i], PortRoleType::MODE);
currentPortStatus[i].canChangeDataRole =
canSwitchRoleHelper(names[i], PortRoleType::DATA_ROLE);
currentPortStatus[i].canChangePowerRole =
canSwitchRoleHelper(names[i], PortRoleType::POWER_ROLE);
if (getPortModeHelper(names[i], currentPortStatus[i].supportedModes)
!= Status::SUCCESS) {
ALOGE("Error while retrieving port modes");
goto done;
}
/* Exit when a status is properly detected */
if (currentPortStatus[i].canChangeMode || currentPortStatus[i].canChangeDataRole || currentPortStatus[i].canChangePowerRole) {
ALOGI("canChangeMode: %d canChagedata: %d canChangePower:%d",
currentPortStatus[i].canChangeMode,
currentPortStatus[i].canChangeDataRole,
currentPortStatus[i].canChangePowerRole);
break;
}
j++;
}
if (j == MAX_LOOP) {
ALOGI("Fail: canChangeMode: %d canChagedata: %d canChangePower:%d",
currentPortStatus[i].canChangeMode,
currentPortStatus[i].canChangeDataRole,
currentPortStatus[i].canChangePowerRole);
}
}
return Status::SUCCESS;
}
done:
return Status::ERROR;
}
Return Usb::queryPortStatus() {
hidl_vec currentPortStatus;
Status status;
status = getPortStatusHelper(currentPortStatus);
Return ret = mCallback->notifyPortStatusChange(currentPortStatus,
status);
if (!ret.isOk())
ALOGE("queryPortStatus error %s", ret.description().c_str());
return Void();
}
struct data {
int uevent_fd;
android::hardware::usb::V1_0::implementation::Usb *usb;
};
static void uevent_event(uint32_t /*epevents*/, struct data *payload) {
char msg[UEVENT_MSG_LEN + 2];
char *cp;
int n;
n = uevent_kernel_multicast_recv(payload->uevent_fd, msg, UEVENT_MSG_LEN);
if (n <= 0)
return;
if (n >= UEVENT_MSG_LEN) /* overflow -- discard */
return;
msg[n] = '\0';
msg[n + 1] = '\0';
cp = msg;
while (*cp) {
if (!strcmp(cp, "SUBSYSTEM=dual_role_usb")) {
ALOGE("uevent received %s", cp);
if (payload->usb->mCallback != NULL) {
hidl_vec currentPortStatus;
Status status = getPortStatusHelper(currentPortStatus);
Return ret =
payload->usb->mCallback->notifyPortStatusChange(currentPortStatus, status);
if (!ret.isOk())
ALOGE("error %s", ret.description().c_str());
}
break;
}
/* advance to after the next \0 */
while (*cp++);
}
}
void* work(void* param) {
int epoll_fd, uevent_fd;
struct epoll_event ev;
int nevents = 0;
struct data payload;
ALOGE("creating thread");
uevent_fd = uevent_open_socket(64*1024, true);
if (uevent_fd < 0) {
ALOGE("uevent_init: uevent_open_socket failed\n");
return NULL;
}
payload.uevent_fd = uevent_fd;
payload.usb = (android::hardware::usb::V1_0::implementation::Usb *)param;
fcntl(uevent_fd, F_SETFL, O_NONBLOCK);
ev.events = EPOLLIN;
ev.data.ptr = (void *)uevent_event;
epoll_fd = epoll_create(64);
if (epoll_fd == -1) {
ALOGE("epoll_create failed; errno=%d", errno);
goto error;
}
if (epoll_ctl(epoll_fd, EPOLL_CTL_ADD, uevent_fd, &ev) == -1) {
ALOGE("epoll_ctl failed; errno=%d", errno);
goto error;
}
while (!destroyThread) {
struct epoll_event events[64];
nevents = epoll_wait(epoll_fd, events, 64, -1);
if (nevents == -1) {
if (errno == EINTR)
continue;
ALOGE("usb epoll_wait failed; errno=%d", errno);
break;
}
for (int n = 0; n < nevents; ++n) {
if (events[n].data.ptr)
(*(void (*)(int, struct data *payload))events[n].data.ptr)
(events[n].events, &payload);
}
}
ALOGI("exiting worker thread");
error:
close(uevent_fd);
if (epoll_fd >= 0)
close(epoll_fd);
return NULL;
}
void sighandler(int sig)
{
if (sig == SIGUSR1) {
destroyThread = true;
ALOGI("destroy set");
return;
}
signal(SIGUSR1, sighandler);
}
Return Usb::setCallback(const sp& callback) {
pthread_mutex_lock(&mLock);
if ((mCallback == NULL && callback == NULL) ||
(mCallback != NULL && callback != NULL)) {
mCallback = callback;
pthread_mutex_unlock(&mLock);
return Void();
}
mCallback = callback;
ALOGI("registering callback");
if (mCallback == NULL) {
if (!pthread_kill(mPoll, SIGUSR1)) {
pthread_join(mPoll, NULL);
ALOGI("pthread destroyed");
}
pthread_mutex_unlock(&mLock);
return Void();
}
destroyThread = false;
signal(SIGUSR1, sighandler);
if (pthread_create(&mPoll, NULL, work, this)) {
ALOGE("pthread creation failed %d", errno);
mCallback = NULL;
}
pthread_mutex_unlock(&mLock);
return Void();
}
// Protects *usb assignment
pthread_mutex_t lock = PTHREAD_MUTEX_INITIALIZER;
Usb *usb;
Usb::Usb() {
pthread_mutex_lock(&lock);
// Make this a singleton class
assert(usb == NULL);
usb = this;
pthread_mutex_unlock(&lock);
}
} // namespace implementation
} // namespace V1_0
} // namespace usb
} // namespace hardware
} // namespace android
================================================
FILE: usb/Usb.h
================================================
#ifndef ANDROID_HARDWARE_USB_V1_0_USB_H
#define ANDROID_HARDWARE_USB_V1_0_USB_H
#include
#include
#include
#include
#ifdef LOG_TAG
#undef LOG_TAG
#endif
#define LOG_TAG "android.hardware.usb@1.0-service.mata"
#define UEVENT_MSG_LEN 2048
namespace android {
namespace hardware {
namespace usb {
namespace V1_0 {
namespace implementation {
using ::android::hardware::usb::V1_0::IUsb;
using ::android::hardware::usb::V1_0::IUsbCallback;
using ::android::hardware::usb::V1_0::PortRole;
using ::android::hidl::base::V1_0::IBase;
using ::android::hardware::hidl_array;
using ::android::hardware::hidl_memory;
using ::android::hardware::hidl_string;
using ::android::hardware::hidl_vec;
using ::android::hardware::Return;
using ::android::hardware::Void;
using ::android::sp;
struct Usb : public IUsb {
Usb();
Return switchRole(const hidl_string& portName, const PortRole& role) override;
Return setCallback(const sp& callback) override;
Return queryPortStatus() override;
sp mCallback;
private:
pthread_t mPoll;
pthread_mutex_t mLock = PTHREAD_MUTEX_INITIALIZER;
};
} // namespace implementation
} // namespace V1_0
} // namespace usb
} // namespace hardware
} // namespace android
#endif // ANDROID_HARDWARE_USB_V1_0_USB_H
================================================
FILE: usb/android.hardware.usb@1.0-service.mata.rc
================================================
service usb-hal-1-0 /vendor/bin/hw/android.hardware.usb@1.0-service.mata
class hal
user system
group system root
================================================
FILE: usb/service.cpp
================================================
/*
* Copyright (C) 2016 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
#include