diff --git a/BoardConfig.mk b/BoardConfig.mk index bf5c4bc..7eac27b 100644 --- a/BoardConfig.mk +++ b/BoardConfig.mk @@ -1,7 +1,38 @@ # mt6797 platform boardconfig LOCAL_PATH := device/vernee/apollo_lite -include vendor/mad/config/board.mk +# MTK Hardware +BOARD_HAS_MTK_HARDWARE := true + +# Display +USE_OPENGL_RENDERER := true +TARGET_FORCE_HWC_FOR_VIRTUAL_DISPLAYS := true +NUM_FRAMEBUFFER_SURFACE_BUFFERS := 3 +TARGET_RUNNING_WITHOUT_SYNC_FRAMEWORK := true +BOARD_EGL_CFG := $(LOCAL_PATH)/configs/egl.cfg + +# Boot animation +TARGET_BOOTANIMATION_MULTITHREAD_DECODE := true + +# Audio +USE_XML_AUDIO_POLICY_CONF := 1 + +# Wifi +WPA_SUPPLICANT_VERSION := VER_0_8_X +BOARD_HOSTAPD_DRIVER := NL80211 +BOARD_HOSTAPD_PRIVATE_LIB := lib_driver_cmd_mt66xx +BOARD_WPA_SUPPLICANT_DRIVER := NL80211 +BOARD_WPA_SUPPLICANT_PRIVATE_LIB := lib_driver_cmd_mt66xx +WIFI_DRIVER_FW_PATH_PARAM := "/dev/wmtWifi" +WIFI_DRIVER_FW_PATH_STA := STA +WIFI_DRIVER_FW_PATH_AP := AP +WIFI_DRIVER_FW_PATH_P2P := P2P + +# Bluetooth +BOARD_HAVE_BLUETOOTH := true + +# Charger +BACKLIGHT_PATH := /sys/class/leds/lcd-backlight/brightness # Platform ARCH_ARM_HAVE_TLS_REGISTER := true @@ -72,11 +103,32 @@ BOARD_BLUETOOTH_BDROID_BUILDCFG_INCLUDE_DIR := $(LOCAL_PATH)/bluetooth # LightHAL TARGET_PROVIDES_LIBLIGHT := true +# Recovery +#RECOVERY_VARIANT := twrp + # Recovery BOARD_HAS_NO_SELECT_BUTTON := true TARGET_RECOVERY_FSTAB := $(LOCAL_PATH)/rootdir/recovery.fstab + # TWRP-specific ifeq ($(RECOVERY_VARIANT), twrp) +TARGET_RECOVERY_PIXEL_FORMAT := "RGBA_8888" +TARGET_USE_CUSTOM_LUN_FILE_PATH := /sys/devices/platform/mt_usb/musb-hdrc.0.auto/gadget/lun%d/file +TARGET_RECOVERY_LCD_BACKLIGHT_PATH := \"/sys/class/leds/lcd-backlight/brightness\" +TW_NO_REBOOT_BOOTLOADER := true +TW_THEME := portrait_hdpi +TW_CUSTOM_CPU_TEMP_PATH := /sys/devices/virtual/thermal/thermal_zone1/temp +TW_USE_MODEL_HARDWARE_ID_FOR_DEVICE_ID := true +RECOVERY_GRAPHICS_USE_LINELENGTH := true +TW_MAX_BRIGHTNESS := 255 +BOARD_SUPPRESS_SECURE_ERASE := true +TW_INCLUDE_CRYPTO := true +TW_BRIGHTNESS_PATH := /sys/class/leds/lcd-backlight/brightness +TW_MAX_BRIGHTNESS := 255 +TW_NO_USB_STORAGE := true +BOARD_USE_FRAMEBUFFER_ALPHA_CHANNEL := true +TARGET_DISABLE_TRIPLE_BUFFERING := false +TW_USE_TOOLBOX := true DEVICE_RESOLUTION := 1080x1920 DEVICE_SCREEN_WIDTH := 1080 DEVICE_SCREEN_HEIGHT := 1920 @@ -95,3 +147,9 @@ BOARD_SEPOLICY_DIRS += $(LOCAL_PATH)/sepolicy # Seccomp filter BOARD_SECCOMP_POLICY := $(LOCAL_PATH)/seccomp + +# DEXPREOPT +ifeq ($(TARGET_BUILD_VARIANT),user) +WITH_DEXPREOPT := true +DONT_DEXPREOPT_PREBUILTS := true +endif diff --git a/configs/egl.cfg b/configs/egl.cfg new file mode 100644 index 0000000..9438b87 --- /dev/null +++ b/configs/egl.cfg @@ -0,0 +1,2 @@ +0 0 android +0 1 mali diff --git a/configs/gps/agps_profiles_conf2.xml b/configs/gps/agps_profiles_conf2.xml new file mode 100644 index 0000000..bc1e480 --- /dev/null +++ b/configs/gps/agps_profiles_conf2.xml @@ -0,0 +1,559 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/configs/telephony/ecc_list.xml b/configs/telephony/ecc_list.xml new file mode 100644 index 0000000..409d00c --- /dev/null +++ b/configs/telephony/ecc_list.xml @@ -0,0 +1,20 @@ + + + + + + + + + + + + diff --git a/configs/telephony/spn-conf.xml b/configs/telephony/spn-conf.xml new file mode 100644 index 0000000..6be4497 --- /dev/null +++ b/configs/telephony/spn-conf.xml @@ -0,0 +1,1117 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +"/> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/configs/wifi/p2p_supplicant_overlay.conf b/configs/wifi/p2p_supplicant_overlay.conf new file mode 100644 index 0000000..d95766d --- /dev/null +++ b/configs/wifi/p2p_supplicant_overlay.conf @@ -0,0 +1,4 @@ +p2p_no_group_iface=1 +driver_param=use_p2p_group_interface=1 +bss_expiration_scan_count=1 +wowlan_triggers=disconnect diff --git a/configs/wifi/wpa_supplicant.conf b/configs/wifi/wpa_supplicant.conf new file mode 100644 index 0000000..ef8a8af --- /dev/null +++ b/configs/wifi/wpa_supplicant.conf @@ -0,0 +1,12 @@ +ctrl_interface=wlan0 +update_config=1 +manufacturer=MediaTek Inc. +device_name=Wireless Client +model_name=MTK Wireless Model +model_number=1.0 +serial_number=2.0 +device_type=10-0050F204-5 +os_version=01020300 +config_methods=display push_button keypad +p2p_no_group_iface=1 +driver_param=use_p2p_group_interface=1 diff --git a/configs/wifi/wpa_supplicant_overlay.conf b/configs/wifi/wpa_supplicant_overlay.conf new file mode 100644 index 0000000..f6b7121 --- /dev/null +++ b/configs/wifi/wpa_supplicant_overlay.conf @@ -0,0 +1,3 @@ +p2p_no_group_iface=1 +driver_param=use_p2p_group_interface=1 +wowlan_triggers=disconnect diff --git a/device.mk b/device.mk index a7ba335..a032ec0 100644 --- a/device.mk +++ b/device.mk @@ -64,8 +64,119 @@ PRODUCT_COPY_FILES += \ # Dalvik/HWUI $(call inherit-product, frameworks/native/build/phone-xhdpi-2048-dalvik-heap.mk) -# Common stuff -$(call inherit-product, vendor/mad/config/common.mk) +# Shim libraries +PRODUCT_PACKAGES += \ + libmtkshim_log \ + libmtkshim_audio \ + libmtkshim_ui \ + libmtkshim_omx \ + libmtkshim_gps + +# Display +PRODUCT_PACKAGES += \ + libion + +# GPS +PRODUCT_COPY_FILES += \ + $(LOCAL_PATH)/configs/gps/agps_profiles_conf2.xml:system/etc/agps_profiles_conf2.xml + +PRODUCT_PACKAGES += \ + libcurl + +# Include explicitly to work around Facelock issues +PRODUCT_PACKAGES += \ + libprotobuf-cpp-full + +# USB +PRODUCT_PACKAGES += \ + com.android.future.usb.accessory + +# Charger +PRODUCT_PACKAGES += \ + charger_res_images \ + +# Sensor Calibration +PRODUCT_PACKAGES += \ + libem_sensor_jni + +PRODUCT_BUILD_PROP_OVERRIDES += BUILD_UTC_DATE=0 + +# Granular Volume Steps +PRODUCT_PROPERTY_OVERRIDES += \ + ro.config.vc_call_vol_steps=14 \ + ro.config.media_vol_steps=30 + +# Permissions +PRODUCT_COPY_FILES += \ + frameworks/native/data/etc/handheld_core_hardware.xml:system/etc/permissions/handheld_core_hardware.xml \ + frameworks/native/data/etc/android.hardware.camera.autofocus.xml:system/etc/permissions/android.hardware.camera.autofocus.xml \ + frameworks/native/data/etc/android.hardware.camera.flash-autofocus.xml:system/etc/permissions/android.hardware.camera.flash-autofocus.xml \ + frameworks/native/data/etc/android.hardware.camera.front.xml:system/etc/permissions/android.hardware.camera.front.xml \ + frameworks/native/data/etc/android.hardware.location.gps.xml:system/etc/permissions/android.hardware.location.gps.xml \ + frameworks/native/data/etc/android.hardware.wifi.xml:system/etc/permissions/android.hardware.wifi.xml \ + frameworks/native/data/etc/android.hardware.wifi.direct.xml:system/etc/permissions/android.hardware.wifi.direct.xml \ + frameworks/native/data/etc/android.hardware.sensor.accelerometer.xml:system/etc/permissions/android.hardware.sensor.accelerometer.xml \ + frameworks/native/data/etc/android.hardware.sensor.compass.xml:system/etc/permissions/android.hardware.compass.xml \ + frameworks/native/data/etc/android.hardware.sensor.light.xml:system/etc/permissions/android.hardware.sensor.light.xml \ + frameworks/native/data/etc/android.hardware.sensor.gyroscope.xml:system/etc/permissions/android.hardware.sensor.gyroscope.xml \ + frameworks/native/data/etc/android.hardware.sensor.proximity.xml:system/etc/permissions/android.hardware.sensor.proximity.xml \ + frameworks/native/data/etc/android.hardware.sensor.stepcounter.xml:system/etc/permissions/android.hardware.sensor.stepcounter.xml \ + frameworks/native/data/etc/android.hardware.sensor.stepdetector.xml:system/etc/permissions/android.hardware.sensor.stepdetector.xml \ + frameworks/native/data/etc/android.hardware.touchscreen.multitouch.jazzhand.xml:system/etc/permissions/android.hardware.touchscreen.multitouch.jazzhand.xml \ + frameworks/native/data/etc/android.hardware.touchscreen.multitouch.distinct.xml:system/etc/permissions/android.hardware.touchscreen.multitouch.distinct.xml \ + frameworks/native/data/etc/android.hardware.touchscreen.multitouch.xml:system/etc/permissions/android.hardware.touchscreen.multitouch.xml \ + frameworks/native/data/etc/android.hardware.touchscreen.xml:system/etc/permissions/android.hardware.touchscreen.xml \ + frameworks/native/data/etc/android.hardware.usb.accessory.xml:system/etc/permissions/android.hardware.usb.accessory.xml \ + frameworks/native/data/etc/android.hardware.bluetooth.xml:system/etc/permissions/android.hardware.bluetooth.xml \ + frameworks/native/data/etc/android.hardware.bluetooth_le.xml:system/etc/permissions/android.hardware.bluetooth_le.xml \ + frameworks/native/data/etc/android.hardware.telephony.cdma.xml:system/etc/permissions/android.hardware.telephony.cdma.xml \ + frameworks/native/data/etc/android.hardware.telephony.gsm.xml:system/etc/permissions/android.hardware.telephony.gsm.xml \ + frameworks/native/data/etc/android.software.sip.voip.xml:system/etc/permissions/android.software.sip.voip.xml \ + frameworks/native/data/etc/android.hardware.usb.host.xml:system/etc/permissions/android.hardware.usb.host.xml + +# Audio +PRODUCT_PACKAGES += \ + audio_policy.default \ + audio.r_submix.default \ + audio.a2dp.default \ + audio.usb.default \ + libtinyalsa \ + libtinycompress \ + libtinymix \ + libtinyxml + +PRODUCT_COPY_FILES += \ + frameworks/av/services/audiopolicy/config/audio_policy_volumes.xml:/system/etc/audio_policy_volumes.xml \ + frameworks/av/services/audiopolicy/config/default_volume_tables.xml:/system/etc/default_volume_tables.xml \ + frameworks/av/services/audiopolicy/config/r_submix_audio_policy_configuration.xml:/system/etc/r_submix_audio_policy_configuration.xml \ + frameworks/av/services/audiopolicy/config/usb_audio_policy_configuration.xml:/system/etc/usb_audio_policy_configuration.xml + +# Codecs +PRODUCT_COPY_FILES += \ + frameworks/av/media/libstagefright/data/media_codecs_google_audio.xml:system/etc/media_codecs_google_audio.xml \ + frameworks/av/media/libstagefright/data/media_codecs_google_telephony.xml:system/etc/media_codecs_google_telephony.xml \ + frameworks/av/media/libstagefright/data/media_codecs_google_video_le.xml:system/etc/media_codecs_google_video_le.xml + +# Storage +PRODUCT_PROPERTY_OVERRIDES += \ + ro.sys.sdcardfs=true + +# Wifi +PRODUCT_PACKAGES += \ + lib_driver_cmd_mt66xx \ + libwpa_client \ + hostapd \ + wpa_supplicant + +PRODUCT_COPY_FILES += \ + $(LOCAL_PATH)/configs/wifi/wpa_supplicant.conf:system/etc/wifi/wpa_supplicant.conf \ + $(LOCAL_PATH)/configs/wifi/wpa_supplicant_overlay.conf:system/etc/wifi/wpa_supplicant_overlay.conf \ + $(LOCAL_PATH)/configs/wifi/p2p_supplicant_overlay.conf:system/etc/wifi/p2p_supplicant_overlay.conf + +# Configs +PRODUCT_COPY_FILES += \ + $(LOCAL_PATH)/configs/telephony/ecc_list.xml:system/etc/ecc_list.xml \ + $(LOCAL_PATH)/configs/telephony/spn-conf.xml:system/etc/spn-conf.xml # Vendor $(call inherit-product, vendor/vernee/apollo_lite/apollo_lite-vendor.mk) diff --git a/libmtkshims/Android.mk b/libmtkshims/Android.mk new file mode 100644 index 0000000..db4f9dd --- /dev/null +++ b/libmtkshims/Android.mk @@ -0,0 +1,62 @@ +LOCAL_PATH := $(call my-dir) + +# mtk log symbols (xlog) +ifeq ($(TARGET_INCLUDE_XLOG_SYMBOLS),true) + include $(CLEAR_VARS) + + LOCAL_SRC_FILES := xlog.c + LOCAL_SHARED_LIBRARIES := liblog + LOCAL_MODULE := libmtkshim_log + LOCAL_MODULE_TAGS := optional + + include $(BUILD_SHARED_LIBRARY) +endif + +# audio symbols +ifeq ($(TARGET_INCLUDE_AUDIO_SYMBOLS),true) + include $(CLEAR_VARS) + + LOCAL_SRC_FILES := audio.cpp + LOCAL_MODULE := libmtkshim_audio + LOCAL_MODULE_TAGS := optional + + include $(BUILD_SHARED_LIBRARY) +endif + +# ui symbols +ifeq ($(TARGET_INCLUDE_UI_SYMBOLS),true) + include $(CLEAR_VARS) + + LOCAL_SRC_FILES := ui.cpp + LOCAL_SHARED_LIBRARIES := libui + LOCAL_MODULE := libmtkshim_ui + LOCAL_MODULE_TAGS := optional + + include $(BUILD_SHARED_LIBRARY) +endif + +# omx symbols +ifeq ($(TARGET_INCLUDE_OMX_SYMBOLS),true) + include $(CLEAR_VARS) + + LOCAL_SRC_FILES := omx.cpp + LOCAL_MODULE := libmtkshim_omx + LOCAL_MODULE_TAGS := optional + + include $(BUILD_SHARED_LIBRARY) +endif + +# gps symbols +ifeq ($(TARGET_INCLUDE_GPS_SYMBOLS),true) + include $(CLEAR_VARS) + + LOCAL_SRC_FILES := \ + agps/icu53.c \ + agps/ssl.c + + LOCAL_SHARED_LIBRARIES := libicuuc libssl + LOCAL_MODULE := libmtkshim_gps + LOCAL_MODULE_TAGS := optional + + include $(BUILD_SHARED_LIBRARY) +endif diff --git a/libmtkshims/agps/icu53.c b/libmtkshims/agps/icu53.c new file mode 100644 index 0000000..a7752fd --- /dev/null +++ b/libmtkshims/agps/icu53.c @@ -0,0 +1,72 @@ +#include "unicode/ucnv.h" + +U_STABLE UConverter* U_EXPORT2 +ucnv_open_53(const char *converterName, UErrorCode *err) +{ + return ucnv_open(converterName, err); +} + +U_STABLE void U_EXPORT2 +ucnv_close_53(UConverter * converter) +{ + return ucnv_close(converter); +} + +U_STABLE void U_EXPORT2 UCNV_TO_U_CALLBACK_STOP_53( + const void *context, + UConverterToUnicodeArgs *toUArgs, + const char* codeUnits, + int32_t length, + UConverterCallbackReason reason, + UErrorCode * err) +{ + UCNV_TO_U_CALLBACK_STOP(context, toUArgs, codeUnits, length, reason, err); +} + +U_STABLE void U_EXPORT2 UCNV_FROM_U_CALLBACK_STOP_53( + const void *context, + UConverterFromUnicodeArgs *fromUArgs, + const UChar* codeUnits, + int32_t length, + UChar32 codePoint, + UConverterCallbackReason reason, + UErrorCode * err) +{ + UCNV_FROM_U_CALLBACK_STOP (context, fromUArgs, codeUnits, length, codePoint, reason, err); +} + +U_STABLE void U_EXPORT2 +ucnv_setToUCallBack_53(UConverter * converter, + UConverterToUCallback newAction, + const void* newContext, + UConverterToUCallback *oldAction, + const void** oldContext, + UErrorCode * err) +{ + ucnv_setToUCallBack(converter, newAction, newContext, oldAction, oldContext, err); +} + +U_STABLE void U_EXPORT2 +ucnv_setFromUCallBack_53(UConverter * converter, + UConverterFromUCallback newAction, + const void *newContext, + UConverterFromUCallback *oldAction, + const void **oldContext, + UErrorCode * err) +{ + ucnv_setFromUCallBack(converter, newAction, newContext, oldAction, oldContext, err); +} + +U_STABLE void U_EXPORT2 +ucnv_convertEx_53(UConverter *targetCnv, UConverter *sourceCnv, + char **target, const char *targetLimit, + const char **source, const char *sourceLimit, + UChar *pivotStart, UChar **pivotSource, + UChar **pivotTarget, const UChar *pivotLimit, + UBool reset, UBool flush, + UErrorCode *pErrorCode) +{ + ucnv_convertEx(targetCnv, sourceCnv, target, targetLimit, source, sourceLimit, + pivotStart, pivotSource, pivotTarget, pivotLimit, reset, flush, + pErrorCode); +} diff --git a/libmtkshims/agps/ssl.c b/libmtkshims/agps/ssl.c new file mode 100644 index 0000000..a115938 --- /dev/null +++ b/libmtkshims/agps/ssl.c @@ -0,0 +1,36 @@ +#include + +long SSL_ctrl(SSL *s, int cmd, long larg, void *parg) { + switch (cmd) { + case 8: { /* SSL_CTRL_GET_SESSION_REUSED */ + return SSL_session_reused(s); + } + default: break; + } + return -1; +} + +long SSL_CTX_ctrl(SSL_CTX *ctx, int cmd, long larg, void *parg) { + switch (cmd) { + case 32: { /* SSL_CTRL_OPTIONS */ + return SSL_CTX_set_options(ctx, larg); + } + case 44: { /* SSL_CTRL_SET_SESS_CACHE_MODE */ + return SSL_CTX_set_session_cache_mode(ctx, larg); + } + default: break; + } + return -1; +} + +void CRYPTO_free(void *str) { + free(str); +} + +void *CRYPTO_malloc(int num, const char *file, int line) { + return malloc(num); +} + +void CRYPTO_lock(int mode, int type, const char *file, int line) { + CRYPTO_lock(mode, type, file, line); +} diff --git a/libmtkshims/audio.cpp b/libmtkshims/audio.cpp new file mode 100644 index 0000000..7f86662 --- /dev/null +++ b/libmtkshims/audio.cpp @@ -0,0 +1,33 @@ +#include + +extern "C" { + bool _ZN7android11AudioSystem24getVoiceUnlockDLInstanceEv(){ + return 0; + } + + int _ZN7android11AudioSystem23GetVoiceUnlockDLLatencyEv(){ + return 0; + } + + int _ZN7android11AudioSystem17SetVoiceUnlockSRCEjj(uint32_t, uint32_t){ + return 0; + } + + bool _ZN7android11AudioSystem18startVoiceUnlockDLEv(){ + return 0; + } + + int _ZN7android11AudioSystem15ReadRefFromRingEPvjS1_(void*, uint32_t, void*){ + return 0; + } + + int _ZN7android11AudioSystem20GetVoiceUnlockULTimeEPv(void*) { + return 0; + } + + void _ZN7android11AudioSystem25freeVoiceUnlockDLInstanceEv() { } + + bool _ZN7android11AudioSystem17stopVoiceUnlockDLEv(){ + return 0; + } +} diff --git a/libmtkshims/omx.cpp b/libmtkshims/omx.cpp new file mode 100644 index 0000000..099be12 --- /dev/null +++ b/libmtkshims/omx.cpp @@ -0,0 +1,5 @@ +extern "C" { + void _ZN7android13AwesomePlayer24mtk_omx_get_current_timeEPx(long long* time){ + time = (long long*)-1; + } +} diff --git a/libmtkshims/ui.cpp b/libmtkshims/ui.cpp new file mode 100644 index 0000000..e47f781 --- /dev/null +++ b/libmtkshims/ui.cpp @@ -0,0 +1,10 @@ +#include +#include + +extern "C" { + void _ZN7android19GraphicBufferMapper4lockEPK13native_handlejRKNS_4RectEPPv(buffer_handle_t, uint32_t, const android::Rect&, void**); + + void _ZN7android19GraphicBufferMapper4lockEPK13native_handleiRKNS_4RectEPPv(buffer_handle_t handle, int usage, const android::Rect& bounds, void** vaddr) { + _ZN7android19GraphicBufferMapper4lockEPK13native_handlejRKNS_4RectEPPv(handle, static_cast(usage), bounds, vaddr); + } +} diff --git a/libmtkshims/xlog.c b/libmtkshims/xlog.c new file mode 100644 index 0000000..932c171 --- /dev/null +++ b/libmtkshims/xlog.c @@ -0,0 +1,16 @@ +#include + +struct xlog_record { + const char *tag_str; + const char *fmt_str; + int prio; +}; + +int __xlog_buf_printf(int bufid, const struct xlog_record *rec, ...) { + va_list args; + va_start(args, rec); + LOG_PRI_VA(rec->prio, rec->tag_str, rec->fmt_str, args); + va_end(args); + + return 0; +} diff --git a/overlay/frameworks/base/core/res/res/values/config.xml b/overlay/frameworks/base/core/res/res/values/config.xml index f4c576e..d500fbd 100644 --- a/overlay/frameworks/base/core/res/res/values/config.xml +++ b/overlay/frameworks/base/core/res/res/values/config.xml @@ -140,4 +140,127 @@ that can be set by the user. --> 10 + + true + + + true + + + + true + + + + + + + wifi,1,1,1,-1,true + mobile,0,0,0,-1,true + mobile_mms,2,0,2,300000,true + mobile_supl,3,0,2,300000,true + mobile_dun,4,0,3,300000,true + mobile_hipri,5,0,3,300000,true + mobile_fota,10,0,2,300000,true + mobile_ims,11,0,2,300000,true + mobile_cbs,12,0,2,300000,true + mobile_dm,34,0,3,300000,true + mobile_wap,35,0,3,300000,true + mobile_net,36,0,3,300000,true + mobile_cmmail,37,0,3,300000,true + mobile_rcse,38,0,3,300000,true + usb,40,40,0,-1,true + mobile_ia,14,0,2,-1,true + bluetooth,7,7,0,-1,true + csd,41,41,3,-1,true + + + + 1,1 + 0,1 + 7,1 + 40,1 + 41,1 + + + + rndis\\d + + + + ap\\d + + + + "bt-pan" + "bt-dun" + + + true + + + true + + true + + + true + + + true + + + true + + + true + + true + + + 4 + + true + + false + + + com.android.systemui/com.android.systemui.doze.DozeService + + true + + true + + true + + + true + + + true + + + + "/system/framework/arm64/boot-framework.oat" + "/system/framework/oat/arm64/services.odex" + "/system/framework/arm64/boot.oat" + "/system/framework/arm64/boot-core-libart.oat" + + + + + com.google.android.gms + + com.android.location.fused + + diff --git a/overlay/frameworks/base/packages/SettingsProvider/res/values/defaults.xml b/overlay/frameworks/base/packages/SettingsProvider/res/values/defaults.xml new file mode 100644 index 0000000..3229535 --- /dev/null +++ b/overlay/frameworks/base/packages/SettingsProvider/res/values/defaults.xml @@ -0,0 +1,24 @@ + + + + true + + + true + diff --git a/overlay/frameworks/base/packages/SystemUI/res/values/config.xml b/overlay/frameworks/base/packages/SystemUI/res/values/config.xml new file mode 100644 index 0000000..fb185e0 --- /dev/null +++ b/overlay/frameworks/base/packages/SystemUI/res/values/config.xml @@ -0,0 +1,34 @@ + + + + + + true + + + true + + true + + true + + + false + diff --git a/overlay/packages/apps/Settings/res/values/config.xml b/overlay/packages/apps/Settings/res/values/config.xml new file mode 100644 index 0000000..0a393ee --- /dev/null +++ b/overlay/packages/apps/Settings/res/values/config.xml @@ -0,0 +1,23 @@ + + + + + + true + diff --git a/overlay/packages/services/Telephony/res/values/config.xml b/overlay/packages/services/Telephony/res/values/config.xml new file mode 100644 index 0000000..41b85ec --- /dev/null +++ b/overlay/packages/services/Telephony/res/values/config.xml @@ -0,0 +1,26 @@ + + + + + + true + + + true + diff --git a/sepolicy/attributes b/sepolicy/attributes new file mode 100644 index 0000000..b7cc346 --- /dev/null +++ b/sepolicy/attributes @@ -0,0 +1 @@ +attribute mtk_property_type; diff --git a/sepolicy/audioserver.te b/sepolicy/audioserver.te new file mode 100644 index 0000000..2dd472f --- /dev/null +++ b/sepolicy/audioserver.te @@ -0,0 +1,15 @@ +# nvram +allow audioserver nvdata_file:dir rw_dir_perms; +allow audioserver nvdata_file:file create_file_perms; +allow audioserver nvdata_file:lnk_file r_file_perms; +allow audioserver ccci_device:chr_file rw_file_perms; + +# fm radio +allow audioserver fm_device:chr_file rw_file_perms; + +# Audio +allow audioserver sysfs:file { open read write }; +allow audioserver sysfs_devinfo:file { open read write }; +allow audioserver sysfs_ccci:file r_file_perms; +allow audioserver sysfs_ccci:dir search; +allow audioserver audiohal_prop:property_service set; diff --git a/sepolicy/bluetooth.te b/sepolicy/bluetooth.te new file mode 100644 index 0000000..9671019 --- /dev/null +++ b/sepolicy/bluetooth.te @@ -0,0 +1,9 @@ +# Allow access to the hardware node +allow bluetooth stpbt_device:chr_file rw_file_perms; + +# Allow nvram access +allow bluetooth nvdata_file:dir search; +allow bluetooth nvdata_file:file rw_file_perms; +allow bluetooth nvdata_file:lnk_file r_file_perms; + +allow bluetooth block_device:dir search; diff --git a/sepolicy/cameraserver.te b/sepolicy/cameraserver.te new file mode 100644 index 0000000..573a0aa --- /dev/null +++ b/sepolicy/cameraserver.te @@ -0,0 +1,21 @@ +# nvram +allow cameraserver nvdata_file:dir rw_dir_perms; +allow cameraserver nvdata_file:file create_file_perms; +allow cameraserver ccci_device:chr_file rw_file_perms; + +# camera +allow cameraserver sensorservice_service:service_manager find; +allow cameraserver system_server:unix_stream_socket { read write }; +allow cameraserver camera_device:chr_file rw_file_perms; +allow cameraserver mtk_smi_device:chr_file rw_file_perms; +allow cameraserver proc:file { read ioctl open }; +allow cameraserver devmap_device:chr_file r_file_perms; +allow cameraserver devmap_device:chr_file { ioctl }; +allow cameraserver sysfs_devinfo:file rw_file_perms; +allow cameraserver sysfs_membw:file rw_file_perms; +allow cameraserver proc_meminfo:file { open read getattr }; +allow cameraserver sysfs_boot_mode:file r_file_perms; +allow cameraserver sysfs_ddr_type:file r_file_perms; + +# PQ +allow cameraserver pq_service:service_manager find; diff --git a/sepolicy/ccci_fsd.te b/sepolicy/ccci_fsd.te new file mode 100644 index 0000000..1f77080 --- /dev/null +++ b/sepolicy/ccci_fsd.te @@ -0,0 +1,18 @@ +type ccci_fsd_exec, exec_type, file_type; +type ccci_fsd, domain, domain_deprecated; + +init_daemon_domain(ccci_fsd) + +allow ccci_fsd ccci_device:chr_file rw_file_perms; +allow ccci_fsd ccci_cfg_file:dir create_dir_perms; +allow ccci_fsd ccci_cfg_file:file create_file_perms; +allow ccci_fsd nvdata_file:dir create_dir_perms; +allow ccci_fsd nvdata_file:file create_file_perms; +allow ccci_fsd nvdata_file:lnk_file r_file_perms; +allow ccci_fsd protect_f_data_file:dir create_dir_perms; +allow ccci_fsd protect_f_data_file:file create_file_perms; +allow ccci_fsd protect_s_data_file:dir create_dir_perms; +allow ccci_fsd protect_s_data_file:file create_file_perms; +allow ccci_fsd sysfs_ccci:file rw_file_perms; +allow ccci_fsd sysfs_ccci:dir search; +allow ccci_fsd sysfs_wake_lock:file rw_file_perms; diff --git a/sepolicy/ccci_mdinit.te b/sepolicy/ccci_mdinit.te new file mode 100644 index 0000000..69679ba --- /dev/null +++ b/sepolicy/ccci_mdinit.te @@ -0,0 +1,29 @@ +type ccci_mdinit_exec, exec_type, file_type; +type ccci_mdinit, domain, domain_deprecated; + +init_daemon_domain(ccci_mdinit) + +allow ccci_mdinit ccci_device:chr_file rw_file_perms; +allow ccci_mdinit ccci_cfg_file:dir create_dir_perms; +allow ccci_mdinit ccci_cfg_file:file create_file_perms; +allow ccci_mdinit nvdata_file:dir rw_dir_perms; +allow ccci_mdinit nvdata_file:file create_file_perms; +allow ccci_mdinit nvdata_file:lnk_file r_file_perms; +allow ccci_mdinit sysfs_ccci:dir search; +allow ccci_mdinit sysfs_ccci:file rw_file_perms; +allow ccci_mdinit sysfs_wake_lock:file rw_file_perms; +allow ccci_mdinit sysfs_devinfo:file r_file_perms; + +allow ccci_mdinit nvram_device:blk_file rw_file_perms; +allow ccci_mdinit mtk_md_prop:property_service set; + +allow ccci_mdinit ctl_ccci_fsd_prop:property_service set; +allow ccci_mdinit ctl_gsm0710muxd_prop:property_service set; +allow ccci_mdinit ctl_rildaemon_prop:property_service set; +allow ccci_mdinit radio_prop:property_service set; +allow ccci_mdinit ril_mux_report_case_prop:property_service set; + +allow ccci_mdinit mdlog_data_file:file r_file_perms; +allow ccci_mdinit mdlog_data_file:dir r_dir_perms; + +unix_socket_connect(ccci_mdinit, property, init) diff --git a/sepolicy/conn_launcher.te b/sepolicy/conn_launcher.te new file mode 100644 index 0000000..d75e9e5 --- /dev/null +++ b/sepolicy/conn_launcher.te @@ -0,0 +1,9 @@ +type conn_launcher_exec, exec_type, file_type; +type conn_launcher, domain, domain_deprecated; + +init_daemon_domain(conn_launcher) + +allow conn_launcher stpwmt_device:chr_file rw_file_perms; +allow conn_launcher wmt_prop:property_service set; + +unix_socket_connect(conn_launcher, property, init) diff --git a/sepolicy/device.te b/sepolicy/device.te new file mode 100644 index 0000000..3ecb5cf --- /dev/null +++ b/sepolicy/device.te @@ -0,0 +1,49 @@ +# Radio devices +type ccci_device, dev_type; +type stpbt_device, dev_type; +type stpgps_device, dev_type; +type stpwmt_device, dev_type; +type hwmsensor_device, dev_type; +type wmtWifi_device, dev_type; +type wmtdetect_device, dev_type; +type gsm0710muxd_device, dev_type; +type mdlog_device, dev_type; +type pmic_adc_device, dev_type; + +# Sensors +type als_ps_device, dev_type; +type mtk-adc-cali_device, dev_type; +type gsensor_device, dev_type; +type msensor_device, dev_type; +type gyroscope_device, dev_type; + +# Media +type accdet_device, dev_type; +type devmap_device, dev_type; +type fm_device, dev_type; +type Vcodec_device, dev_type; +type M4U_device_device, dev_type; +type mtk_smi_device, dev_type; + +# SPM +type spm_device, dev_type; + +# NFC +type mt6605_device, dev_type; + +# Fingerprint +type esfp0_device, dev_type; +type madev0_device, dev_type; + +# IR +type irtx_device, dev_type; + +# Block devices +type proinfo_device, dev_type; +type nvram_device, dev_type; +type nvdata_device, dev_type; +type protect1_device, dev_type; +type protect2_device, dev_type; +type logo_block_device, dev_type; +type para_block_device, dev_type; +type mmc_device, dev_type; diff --git a/sepolicy/domain.te b/sepolicy/domain.te new file mode 100644 index 0000000..faaf49e --- /dev/null +++ b/sepolicy/domain.te @@ -0,0 +1 @@ +get_prop(domain, mtk_property_type) diff --git a/sepolicy/drmserver.te b/sepolicy/drmserver.te new file mode 100644 index 0000000..9d4ccab --- /dev/null +++ b/sepolicy/drmserver.te @@ -0,0 +1 @@ +allow drmserver sysfs_devinfo:file { open read write }; \ No newline at end of file diff --git a/sepolicy/em_svr.te b/sepolicy/em_svr.te new file mode 100644 index 0000000..5844b50 --- /dev/null +++ b/sepolicy/em_svr.te @@ -0,0 +1,9 @@ +type em_svr_exec, exec_type, file_type; +type em_svr, domain, domain_deprecated; + +init_daemon_domain(em_svr) + +allow em_svr gsensor_device:chr_file { read ioctl open }; +allow em_svr gyroscope_device:chr_file { read ioctl open }; +allow em_svr nvdata_file:dir { write read open add_name search }; +allow em_svr nvdata_file:file { write getattr setattr read create open }; \ No newline at end of file diff --git a/sepolicy/etsd.te b/sepolicy/etsd.te new file mode 100644 index 0000000..6a6b0f8 --- /dev/null +++ b/sepolicy/etsd.te @@ -0,0 +1,19 @@ +type etsd_exec, exec_type, file_type; +type etsd, domain, domain_deprecated; + +init_daemon_domain(etsd) +binder_use(etsd) + +allow etsd etsd_service:service_manager { add find }; +allow etsd fingerprintd:binder { call transfer }; + +allow etsd esfp0_device:chr_file rw_file_perms; + +allow etsd fingerprintd_data_file:file { create_file_perms }; +allow etsd fingerprintd_data_file:file { open read write }; +allow etsd fingerprintd_data_file:dir rw_dir_perms; + +use_keystore(etsd) +allow etsd keystore:keystore_key { add_auth }; + +allow etsd self:capability { dac_override dac_read_search }; \ No newline at end of file diff --git a/sepolicy/factory.te b/sepolicy/factory.te new file mode 100644 index 0000000..d9bf10d --- /dev/null +++ b/sepolicy/factory.te @@ -0,0 +1,67 @@ +type factory_exec, exec_type, file_type; +type factory, domain, domain_deprecated; + +init_daemon_domain(factory) +net_domain(factory) + +allow factory serial_device:chr_file rw_file_perms; + +# Hardware nodes +allow factory accdet_device:chr_file r_file_perms; +allow factory ashmem_device:chr_file execute; +allow factory audio_device:dir r_dir_perms; +allow factory audio_device:chr_file rw_file_perms; +allow factory camera_device:chr_file rw_file_perms; +allow factory ccci_device:chr_file rw_file_perms; +allow factory devmap_device:chr_file r_file_perms; +allow factory fm_device:chr_file rwx_file_perms; +allow factory gsm0710muxd_device:chr_file rw_file_perms; +allow factory graphics_device:dir search; +allow factory graphics_device:chr_file rw_file_perms; +allow factory input_device:dir r_dir_perms; +allow factory input_device:chr_file r_file_perms; +allow factory pmic_adc_device:chr_file rw_file_perms; +allow factory rtc_device:chr_file rw_file_perms; +allow factory stpbt_device:chr_file rw_file_perms; +allow factory wmtWifi_device:chr_file rw_file_perms; + +# NVRAM +allow factory nvdata_file:dir create_dir_perms; +allow factory nvdata_file:file create_file_perms; +allow factory nvdata_device:blk_file rw_file_perms; +allow factory nvram_device:blk_file rw_file_perms; +allow factory proinfo_device:blk_file rw_file_perms; + +# Storage +allow factory mnt_user_file:dir search; +allow factory mmc_device:blk_file rw_file_perms; +allow factory storage_file:dir r_dir_perms; +allow factory storage_file:lnk_file r_file_perms; +allow factory storage_file:file r_file_perms; + +# Configuration +allow factory sysfs:file write; +allow factory sysfs_gps_file:dir r_dir_perms; +allow factory sysfs_gps_file:file rw_file_perms; + +# Sensors +allow factory als_ps_device:chr_file r_file_perms; +allow factory gsensor_device:chr_file rw_file_perms; +allow factory msensor_device:chr_file rw_file_perms; + +# GPS +allow factory agpsd_data_file:dir r_dir_perms; +allow factory agpsd_data_file:sock_file write; +allow factory stpgps_device:chr_file rw_file_perms; +allow factory gps_device:chr_file rw_file_perms; +allow factory mnld_data_file:dir rw_dir_perms; +allow factory mnld_data_file:file rw_file_perms; +allow factory mnld_exec:file rx_file_perms; +allow factory mnld_prop:property_service set; + +# Other capabilities +allow factory self:capability { dac_override net_admin net_raw sys_nice sys_time }; +allow factory self:process execmem; +allow factory audiohal_prop:property_service set; + +unix_socket_connect(factory, property, init); diff --git a/sepolicy/file.te b/sepolicy/file.te new file mode 100644 index 0000000..a1da500 --- /dev/null +++ b/sepolicy/file.te @@ -0,0 +1,41 @@ +type protect_s_data_file, file_type, data_file_type; +type protect_f_data_file, file_type, data_file_type; + +type nvdata_file, file_type, data_file_type; + +type agpsd_data_file, file_type, data_file_type; +type mnld_data_file, file_type, data_file_type; +type ccci_cfg_file, file_type, data_file_type; +type logmisc_data_file, file_type, data_file_type; +type mdlog_data_file, file_type, data_file_type; +type thermal_manager_data_file, file_type, data_file_type; + +type sysfs_gps_file, fs_type, sysfs_type; +type sysfs_ccci, fs_type, sysfs_type; +type sysfs_devinfo, fs_type, sysfs_type; +type sysfs_membw, fs_type, sysfs_type; +type sysfs_boot_mode, fs_type, sysfs_type; +type sysfs_ddr_type, fs_type, sysfs_type; + +type msensord_daemon_sysfs, fs_type, sysfs_type; + +type display_color_sysfs, fs_type, sysfs_type; +type gyro_orientation_sysfs, fs_type, sysfs_type; +type fast_charge_sysfs, fs_type, sysfs_type; +type smartwake_sysfs, fs_type, sysfs_type; +type perf_control_sysfs, fs_type, sysfs_type; + +type proc_mtkcooler, fs_type; +type proc_mtktz, fs_type; +type proc_thermal, fs_type; +type proc_wmt, fs_type; + +type agpsd_socket, file_type; +type mnld_socket, file_type; +type mal_mfi_socket, file_type; + +type nfc_socket, file_type; + +# Filesystems +type exfat, sdcard_type, fs_type, mlstrustedobject; +type ntfs, sdcard_type, fs_type, mlstrustedobject; diff --git a/sepolicy/file_contexts b/sepolicy/file_contexts index c108e98..6ca3ec2 100644 --- a/sepolicy/file_contexts +++ b/sepolicy/file_contexts @@ -1,3 +1,166 @@ -# Sysfs nodes -/sys/devices/soc/soc:touch@/smartwake_active u:object_r:smartwake_sysfs:s0 -/sys/devices/soc/soc:touch@/wakeup_gesture u:object_r:smartwake_sysfs:s0 +# Services +/(system|system\/vendor|vendor)/bin/6620_launcher u:object_r:conn_launcher_exec:s0 +/(system|system\/vendor|vendor)/bin/ccci_fsd u:object_r:ccci_fsd_exec:s0 +/(system|system\/vendor|vendor)/bin/ccci_mdinit u:object_r:ccci_mdinit_exec:s0 +/(system|system\/vendor|vendor)/bin/md_ctrl u:object_r:md_ctrl_exec:s0 +/(system|system\/vendor|vendor)/bin/fuelgauged u:object_r:fuelgauged_exec:s0 +/(system|system\/vendor|vendor)/bin/gsm0710muxd u:object_r:gsm0710muxd_exec:s0 +/(system|system\/vendor|vendor)/xbin/mnld u:object_r:mnld_exec:s0 +/(system|system\/vendor|vendor)/bin/mnld u:object_r:mnld_exec:s0 +/(system|system\/vendor|vendor)/bin/muxreport u:object_r:muxreport_exec:s0 +/(system|system\/vendor|vendor)/bin/msensord u:object_r:msensord_exec:s0 +/(system|system\/vendor|vendor)/bin/qmc6983d u:object_r:qmc6983d_exec:s0 +/(system|system\/vendor|vendor)/bin/mxg2320d u:object_r:mxg2320d_exec:s0 +/(system|system\/vendor|vendor)/bin/memsicd3416x u:object_r:memsicd3416x_exec:s0 +/(system|system\/vendor|vendor)/bin/mtk_agpsd u:object_r:mtk_agpsd_exec:s0 +/(system|system\/vendor|vendor)/bin/nvram_daemon u:object_r:nvram_daemon_exec:s0 +/(system|system\/vendor|vendor)/bin/pq u:object_r:pq_exec:s0 +/(system|system\/vendor|vendor)/bin/terservice u:object_r:terservice_exec:s0 +/(system|system\/vendor|vendor)/bin/thermal u:object_r:thermal_exec:s0 +/(system|system\/vendor|vendor)/bin/thermald u:object_r:thermald_exec:s0 +/(system|system\/vendor|vendor)/bin/thermal_manager u:object_r:thermal_manager_exec:s0 +/(system|system\/vendor|vendor)/bin/thermalloadalgod u:object_r:thermalloadalgo_exec:s0 +/(system|system\/vendor|vendor)/bin/mtkrild u:object_r:ril-daemon-mtk_exec:s0 +/(system|system\/vendor|vendor)/bin/mtkmal u:object_r:mtkmal_exec:s0 +/(system|system\/vendor|vendor)/bin/wifi2agps u:object_r:wifi2agps_exec:s0 +/(system|system\/vendor|vendor)/bin/wmt_loader u:object_r:wmt_loader_exec:s0 +/(system|system\/vendor|vendor)/bin/wmt_launcher u:object_r:conn_launcher_exec:s0 +/(system|system\/vendor|vendor)/bin/em_svr u:object_r:em_svr_exec:s0 +/(system|system\/vendor|vendor)/bin/kpoc_charger u:object_r:kpoc_charger_exec:s0 +/(system|system\/vendor|vendor)/bin/etsd u:object_r:etsd_exec:s0 +/(system|system\/vendor|vendor)/bin/ged_srv u:object_r:ged_srv_exec:s0 +/(system|system\/vendor|vendor)/bin/spm_loader u:object_r:spm_loader_exec:s0 + +# exfat & ntfs +/system/bin/mkfs\.exfat u:object_r:mkfs_exec:s0 +/system/bin/mkfs\.ntfs u:object_r:mkfs_exec:s0 +/system/bin/mount\.ntfs u:object_r:mkfs_exec:s0 +/system/bin/mount\.exfat u:object_r:mkfs_exec:s0 +/system/bin/fsck\.ntfs u:object_r:fsck_exec:s0 +/system/bin/fsck\.exfat u:object_r:fsck_exec:s0 + +# Meta mode +/(system|system\/vendor|vendor)/bin/meta_tst u:object_r:meta_tst_exec:s0 +/(system|system\/vendor|vendor)/bin/factory u:object_r:factory_exec:s0 + +# Files from firmware/nv partitions +/protect_f(/.*)? u:object_r:protect_f_data_file:s0 +/protect_s(/.*)? u:object_r:protect_s_data_file:s0 +/nvdata(/.*)? u:object_r:nvdata_file:s0 +/data/nvram(/.*)? u:object_r:nvdata_file:s0 + +# Hardware nodes +/dev/accdet u:object_r:accdet_device:s0 +/dev/devmap u:object_r:devmap_device:s0 +/dev/ttyC2 u:object_r:gps_device:s0 +/dev/ttyGS0 u:object_r:serial_device:s0 +/dev/gps(/.*)? u:object_r:gps_device:s0 +/dev/mali.* u:object_r:gpu_device:s0 +/dev/mtk_disp.* u:object_r:graphics_device:s0 +/dev/sw_sync u:object_r:graphics_device:s0 +/dev/stpbt(/.*)? u:object_r:stpbt_device:s0 +/dev/hwmsensor(/.*)? u:object_r:hwmsensor_device:s0 +/dev/wmtWifi(/.*)? u:object_r:wmtWifi_device:s0 +/dev/camera-isp u:object_r:camera_device:s0 +/dev/camera-fdvt u:object_r:camera_device:s0 +/dev/kd_camera_hw u:object_r:camera_device:s0 +/dev/kd_camera_flashlight u:object_r:camera_device:s0 +/dev/MAINAF u:object_r:camera_device:s0 +/dev/mtk_jpeg(/.*) u:object_r:camera_device:s0 +/dev/DW9714AF(/.*)? u:object_r:camera_device:s0 +/dev/FM50AF(/.*)? u:object_r:camera_device:s0 +/dev/CAM_CAL_DRV(/.*)? u:object_r:camera_device:s0 +/dev/MTK_SMI u:object_r:mtk_smi_device:s0 +/dev/MT_pmic_adc_cali u:object_r:pmic_adc_device:s0 +/dev/als_ps(/.*)? u:object_r:als_ps_device:s0 +/dev/mtk-adc-cali(/.*)? u:object_r:mtk-adc-cali_device:s0 +/dev/ccci.* u:object_r:ccci_device:s0 +/dev/gsensor(/.*)? u:object_r:gsensor_device:s0 +/dev/msensor(/.*)? u:object_r:msensor_device:s0 +/dev/gyroscope(/.*)? u:object_r:gyroscope_device:s0 +/dev/stpgps(/.*)? u:object_r:stpgps_device:s0 +/dev/stpwmt(/.*)? u:object_r:stpwmt_device:s0 +/dev/wmtdetect u:object_r:wmtdetect_device:s0 +/dev/ttyC0 u:object_r:gsm0710muxd_device:s0 +/dev/ttyC1 u:object_r:mdlog_device:s0 +/dev/radio(/.*)? u:object_r:radio_device:s0 +/dev/fm u:object_r:fm_device:s0 +/dev/Vcodec u:object_r:Vcodec_device:s0 +/dev/M4U_device(/.*)? u:object_r:M4U_device_device:s0 +/dev/spm u:object_r:spm_device:s0 +/dev/mt6605 u:object_r:mt6605_device:s0 +/dev/esfp0 u:object_r:esfp0_device:s0 +/dev/madev0 u:object_r:madev0_device:s0 +/dev/irtx u:object_r:irtx_device:s0 + +# Sockets +/dev/socket/rild[2-4] u:object_r:rild_socket:s0 +/dev/socket/rild-atci u:object_r:rild_socket:s0 +/dev/socket/rild-ims u:object_r:rild_socket:s0 +/dev/socket/rild-mtk-modem u:object_r:rild_socket:s0 +/dev/socket/rild-mtk-ut u:object_r:rild_socket:s0 +/dev/socket/rild-mtk-ut-2 u:object_r:rild_socket:s0 +/dev/socket/rild-oem u:object_r:rild_socket:s0 +/dev/socket/mal-mfi u:object_r:mal_mfi_socket:s0 +/dev/socket/agpsd u:object_r:agpsd_socket:s0 +/dev/socket/agpsd[2-3] u:object_r:agpsd_socket:s0 +/dev/socket/mnld u:object_r:mnld_socket:s0 + +# Block devices +/dev/block/platform/mtk-msdc\.0/[0-9]+\.(msdc|MSDC)0/by-name/boot u:object_r:boot_block_device:s0 +/dev/block/platform/mtk-msdc\.0/[0-9]+\.(msdc|MSDC)0/by-name/proinfo u:object_r:proinfo_device:s0 +/dev/block/platform/mtk-msdc\.0/by-name/proinfo u:object_r:proinfo_device:s0 +/dev/block/platform/mtk-msdc\.0/[0-9]+\.(msdc|MSDC)0/by-name/nvram u:object_r:nvram_device:s0 +/dev/block/platform/mtk-msdc\.0/by-name/nvram u:object_r:nvram_device:s0 +/dev/block/platform/mtk-msdc\.0/[0-9]+\.(msdc|MSDC)0/by-name/nvdata u:object_r:nvdata_device:s0 +/dev/block/platform/mtk-msdc\.0/[0-9]+\.(msdc|MSDC)0/by-name/logo u:object_r:logo_block_device:s0 +/dev/block/platform/mtk-msdc\.0/by-name/logo u:object_r:logo_block_device:s0 +/dev/block/platform/mtk-msdc\.0/[0-9]+\.(msdc|MSDC)0/by-name/protect1 u:object_r:protect1_device:s0 +/dev/block/platform/mtk-msdc\.0/[0-9]+\.(msdc|MSDC)0/by-name/protect2 u:object_r:protect2_device:s0 +/dev/block/platform/mtk-msdc\.0/[0-9]+\.(msdc|MSDC)0/by-name/userdata u:object_r:userdata_block_device:s0 +/dev/block/platform/mtk-msdc\.0/[0-9]+\.(msdc|MSDC)0/by-name/cache u:object_r:cache_block_device:s0 +/dev/block/platform/mtk-msdc\.0/[0-9]+\.(msdc|MSDC)0/by-name/recovery u:object_r:recovery_block_device:s0 +/dev/block/platform/mtk-msdc\.0/[0-9]+\.(msdc|MSDC)0/by-name/frp u:object_r:frp_block_device:s0 +/dev/block/platform/mtk-msdc\.0/[0-9]+\.(msdc|MSDC)0/by-name/metadata u:object_r:metadata_block_device:s0 +/dev/block/platform/mtk-msdc\.0/[0-9]+\.(msdc|MSDC)0/by-name/para u:object_r:para_block_device:s0 +/dev/block/mmcblk1 u:object_r:mmc_device:s0 +/dev/block/zram0 u:object_r:swap_block_device:s0 + +# Sysfs nodes +/sys/devices/virtual/gpsdrv(/.*)? u:object_r:sysfs_gps_file:s0 +/sys/kernel/ccci(/.*)? u:object_r:sysfs_ccci:s0 +/sys/bus/platform/drivers/dev_info/dev_info u:object_r:sysfs_devinfo:s0 +/sys/bus/platform/drivers/mem_bw_ctrl/concurrency_scenario u:object_r:sysfs_membw:s0 +/sys/bus/platform/drivers/ddr_type/ddr_type u:object_r:sysfs_ddr_type:s0 +/sys/devices/virtual/BOOT/BOOT/boot/boot_mode u:object_r:sysfs_boot_mode:s0 +/sys/devices/platform/mtk_disp_mgr.0/rgb u:object_r:display_color_sysfs:s0 +/sys/bus/platform/drivers/msensor/daemon u:object_r:msensord_daemon_sysfs:s0 +/sys/bus/platform/drivers/gyroscope/gyro_orientation u:object_r:gyro_orientation_sysfs:s0 +/sys/kernel/charge_levels/quick_charge_enable u:object_r:fast_charge_sysfs:s0 +/sys/kernel/charge_levels/charge_level_ac u:object_r:fast_charge_sysfs:s0 +/sys/kernel/charge_levels/charge_level_usb u:object_r:fast_charge_sysfs:s0 +/sys/devices/system/cpu/cpu0/cpufreq/scaling_min_freq u:object_r:perf_control_sysfs:s0 +/sys/devices/system/cpu/cpu0/cpufreq/scaling_max_freq u:object_r:perf_control_sysfs:s0 +/sys/devices/system/cpu/cpu0/cpufreq/scaling_governor u:object_r:perf_control_sysfs:s0 +/sys/block/mmcblk0/queue/scheduler u:object_r:perf_control_sysfs:s0 +/sys/devices/.*/queue/scheduler u:object_r:perf_control_sysfs:s0 + +# Config/Runtime files +/data/agps_supl(/.*)? u:object_r:agpsd_data_file:s0 +/data/app/cache.dat u:object_r:mnld_data_file:s0 +/data/gps_mnl(/.*)? u:object_r:mnld_data_file:s0 +/data/misc/gps(/.*)? u:object_r:mnld_data_file:s0 +/data/misc/GPS_CHIP.cfg u:object_r:mnld_data_file:s0 +/data/misc/gps.conf u:object_r:mnld_data_file:s0 +/data/misc/mnl_nlp.dat u:object_r:mnld_data_file:s0 +/data/misc/mblog(/.*)? u:object_r:logmisc_data_file:s0 +/data/log_temp(/.*)? u:object_r:logmisc_data_file:s0 +/data/mdlog(/.*)? u:object_r:mdlog_data_file:s0 +/data/mdl(/.*)? u:object_r:mdlog_data_file:s0 +/data/ccci_cfg(/.*)? u:object_r:ccci_cfg_file:s0 +/data/.tp(/.*)? u:object_r:thermal_manager_data_file:s0 +/data/nfc_socket(/.*)? u:object_r:nfc_socket:s0 + +# Sysfs nodes +/sys/devices/soc/soc:touch@/smartwake_active u:object_r:smartwake_sysfs:s0 +/sys/devices/soc/soc:touch@/wakeup_gesture u:object_r:smartwake_sysfs:s0 \ No newline at end of file diff --git a/sepolicy/fingerprintd.te b/sepolicy/fingerprintd.te new file mode 100644 index 0000000..bb0b9b4 --- /dev/null +++ b/sepolicy/fingerprintd.te @@ -0,0 +1,4 @@ +allow fingerprintd esfp0_device:chr_file rw_file_perms; +allow fingerprintd madev0_device:chr_file rw_file_perms; +allow fingerprintd etsd:binder { call transfer }; +allow fingerprintd self:capability { dac_override dac_read_search }; \ No newline at end of file diff --git a/sepolicy/fsck.te b/sepolicy/fsck.te new file mode 100644 index 0000000..58a6021 --- /dev/null +++ b/sepolicy/fsck.te @@ -0,0 +1,3 @@ +allow fsck protect1_device:blk_file rw_file_perms; +allow fsck protect2_device:blk_file rw_file_perms; +allow fsck nvdata_device:blk_file rw_file_perms; diff --git a/sepolicy/fsck_untrusted.te b/sepolicy/fsck_untrusted.te new file mode 100644 index 0000000..4bb5047 --- /dev/null +++ b/sepolicy/fsck_untrusted.te @@ -0,0 +1,2 @@ +# External storage +allow fsck_untrusted self:capability sys_admin; \ No newline at end of file diff --git a/sepolicy/fuelgauged.te b/sepolicy/fuelgauged.te new file mode 100644 index 0000000..cf9912c --- /dev/null +++ b/sepolicy/fuelgauged.te @@ -0,0 +1,7 @@ +type fuelgauged_exec, exec_type, file_type; +type fuelgauged, domain, domain_deprecated; + +init_daemon_domain(fuelgauged) + +allow fuelgauged self:netlink_socket create_socket_perms; +allow fuelgauged kmsg_device:chr_file w_file_perms; diff --git a/sepolicy/ged_srv.te b/sepolicy/ged_srv.te new file mode 100644 index 0000000..06a2263 --- /dev/null +++ b/sepolicy/ged_srv.te @@ -0,0 +1,14 @@ +type ged_srv, domain, domain_deprecated; +type ged_srv_exec, exec_type, file_type; + +init_daemon_domain(ged_srv) + +binder_use(ged_srv) +binder_service(ged_srv) +binder_call(ged_srv, system_server) + +allow ged_srv servicemanager:binder call; +allow ged_srv surfaceflinger:binder call; +allow ged_srv surfaceflinger_service:service_manager find; +allow ged_srv self:netlink_kobject_uevent_socket { bind create setopt read}; +allow ged_srv sysfs_boot_mode:file r_file_perms; diff --git a/sepolicy/genfs_contexts b/sepolicy/genfs_contexts new file mode 100644 index 0000000..eb7a33a --- /dev/null +++ b/sepolicy/genfs_contexts @@ -0,0 +1,7 @@ +genfscon proc /driver/thermal u:object_r:proc_thermal:s0 +genfscon proc /driver/wmt u:object_r:proc_wmt:s0 +genfscon proc /mtkcooler u:object_r:proc_mtkcooler:s0 +genfscon proc /mtktz u:object_r:proc_mtktz:s0 +genfscon fuseblk / u:object_r:fuse:s0 +genfscon exfat / u:object_r:exfat:s0 +genfscon ntfs / u:object_r:ntfs:s0 diff --git a/sepolicy/gsm0710muxd.te b/sepolicy/gsm0710muxd.te new file mode 100644 index 0000000..3c0a149 --- /dev/null +++ b/sepolicy/gsm0710muxd.te @@ -0,0 +1,18 @@ +type gsm0710muxd_exec, exec_type, file_type; +type gsm0710muxd, domain, domain_deprecated; + +init_daemon_domain(gsm0710muxd) + +allow gsm0710muxd gsm0710muxd_device:chr_file rw_file_perms; +allow gsm0710muxd radio_device:dir w_dir_perms; +allow gsm0710muxd radio_device:lnk_file create_file_perms; +allow gsm0710muxd devpts:chr_file setattr; +allow gsm0710muxd self:capability { setuid fowner chown }; +allow gsm0710muxd sysfs_ccci:dir search; +allow gsm0710muxd sysfs_ccci:file r_file_perms; + +allow gsm0710muxd ctl_rildaemon_prop:property_service set; +allow gsm0710muxd radio_prop:property_service set; +allow gsm0710muxd ril_mux_report_case_prop:property_service set; + +unix_socket_connect(gsm0710muxd, property, init) diff --git a/sepolicy/healthd.te b/sepolicy/healthd.te new file mode 100644 index 0000000..a7ec774 --- /dev/null +++ b/sepolicy/healthd.te @@ -0,0 +1 @@ +allow healthd device:dir r_dir_perms; diff --git a/sepolicy/init.te b/sepolicy/init.te new file mode 100644 index 0000000..cb35bcd --- /dev/null +++ b/sepolicy/init.te @@ -0,0 +1,9 @@ +allow init ccci_device:chr_file { write ioctl }; +allow init devpts:chr_file ioctl; + +# Allow init to format formattable partitions…partitions +allow init nvdata_device:blk_file write; +allow init protect1_device:blk_file write; +allow init protect2_device:blk_file write; + +allow init socket_device:sock_file { create setattr unlink }; diff --git a/sepolicy/kernel.te b/sepolicy/kernel.te new file mode 100644 index 0000000..d87c6e7 --- /dev/null +++ b/sepolicy/kernel.te @@ -0,0 +1,6 @@ +allow kernel nvdata_file:dir search; +allow kernel nvdata_file:file r_file_perms; +allow kernel self:capability dac_override; +allow kernel wifi_data_file:dir search; +allow kernel wifi_data_file:file r_file_perms; + diff --git a/sepolicy/kpoc_charger.te b/sepolicy/kpoc_charger.te new file mode 100644 index 0000000..1b0b533 --- /dev/null +++ b/sepolicy/kpoc_charger.te @@ -0,0 +1,25 @@ +type kpoc_charger, domain, domain_deprecated; +type kpoc_charger_exec, exec_type, file_type; + +init_daemon_domain(kpoc_charger) + +allow kpoc_charger block_device:dir search; +allow kpoc_charger graphics_device:dir search; +allow kpoc_charger input_device:dir { open read search }; +allow kpoc_charger input_device:chr_file { open read write ioctl }; +allow kpoc_charger property_socket:sock_file write; +allow kpoc_charger self:capability sys_nice; +allow kpoc_charger self:capability net_admin; +allow kpoc_charger self:capability dac_override; +allow kpoc_charger self:netlink_kobject_uevent_socket { create bind read setopt }; +allow kpoc_charger sysfs:file write; +allow kpoc_charger graphics_device:chr_file { read write ioctl open }; +allow kpoc_charger kmsg_device:chr_file { write open }; +allow kpoc_charger logo_block_device:blk_file { read open }; +allow kpoc_charger rtc_device:chr_file { open read write }; +allow kpoc_charger init:unix_stream_socket connectto; +allow healthd self:capability dac_override; +allow healthd app_data_file:file write; +allow healthd device:dir {open read write}; +allow kpoc_charger self:capability sys_boot; +allow kpoc_charger alarm_device:chr_file write; \ No newline at end of file diff --git a/sepolicy/md_ctrl.te b/sepolicy/md_ctrl.te new file mode 100644 index 0000000..ee57225 --- /dev/null +++ b/sepolicy/md_ctrl.te @@ -0,0 +1,11 @@ +type md_ctrl_exec, exec_type, file_type; +type md_ctrl, domain, domain_deprecated; + +init_daemon_domain(md_ctrl) + +allow md_ctrl ccci_device:chr_file rw_file_perms; +allow md_ctrl devpts:chr_file rw_file_perms; +allow md_ctrl muxreport_exec:file rx_file_perms; +allow md_ctrl self:capability dac_override; + +set_prop(md_ctrl,vold_encryption_type_prop); diff --git a/sepolicy/mediacodec.te b/sepolicy/mediacodec.te new file mode 100644 index 0000000..cb58892 --- /dev/null +++ b/sepolicy/mediacodec.te @@ -0,0 +1,23 @@ +# nvram +allow mediacodec nvdata_file:dir rw_dir_perms; +allow mediacodec nvdata_file:file create_file_perms; +allow mediacodec ccci_device:chr_file rw_file_perms; + +# video codec +allow mediacodec Vcodec_device:chr_file rw_file_perms; +allow mediacodec devmap_device:chr_file r_file_perms; +allow mediacodec devmap_device:chr_file { ioctl }; +allow mediacodec mtk_smi_device:chr_file { ioctl read open }; +allow mediacodec proc:file { open read ioctl }; +allow mediacodec sysfs:file { open read write }; +allow mediacodec sysfs_devinfo:file { open read write }; +allow mediacodec proc_meminfo:file { open read getattr }; + +allow mediacodec property_socket:sock_file write; +allow mediacodec init:unix_stream_socket connectto; + +# M4U +allow mediacodec M4U_device_device:chr_file rw_file_perms; + +# PQ +allow mediacodec pq_service:service_manager find; diff --git a/sepolicy/mediaserver.te b/sepolicy/mediaserver.te new file mode 100644 index 0000000..ada062a --- /dev/null +++ b/sepolicy/mediaserver.te @@ -0,0 +1,9 @@ +# nvram +allow mediaserver nvdata_file:dir rw_dir_perms; +allow mediaserver nvdata_file:file create_file_perms; +allow mediaserver ccci_device:chr_file rw_file_perms; + +# PQ +allow mediaserver pq_service:service_manager find; + +allow mediaserver sysfs_devinfo:file r_file_perms; diff --git a/sepolicy/memsicd3416x.te b/sepolicy/memsicd3416x.te new file mode 100644 index 0000000..7d5cc9a --- /dev/null +++ b/sepolicy/memsicd3416x.te @@ -0,0 +1,7 @@ +type memsicd3416x_exec, exec_type, file_type; +type memsicd3416x, domain, domain_deprecated; + +init_daemon_domain(memsicd3416x) + +allow memsicd3416x msensor_device:chr_file rw_file_perms; +allow memsicd3416x gsensor_device:chr_file rw_file_perms; \ No newline at end of file diff --git a/sepolicy/meta_tst.te b/sepolicy/meta_tst.te new file mode 100644 index 0000000..6536d06 --- /dev/null +++ b/sepolicy/meta_tst.te @@ -0,0 +1,47 @@ +type meta_tst_exec, exec_type, file_type; +type meta_tst, domain, domain_deprecated; + +init_daemon_domain(meta_tst) + +allow meta_tst ccci_device:chr_file rw_file_perms; +allow meta_tst serial_device:chr_file rw_file_perms; +allow meta_tst mdlog_device:chr_file rw_file_perms; + +allow meta_tst nvdata_file:dir create_dir_perms; +allow meta_tst nvdata_file:file create_file_perms; + +allow meta_tst nvdata_device:blk_file rw_file_perms; +allow meta_tst nvram_device:blk_file rw_file_perms; +allow meta_tst proinfo_device:blk_file rw_file_perms; + +allow meta_tst fm_device:chr_file { read write open ioctl }; + +allow meta_tst sysfs_gps_file:dir search; +allow meta_tst sysfs_gps_file:file rw_file_perms; + +allow meta_tst gps_device:chr_file { read write open }; +allow meta_tst agpsd_data_file:dir search; +allow meta_tst agpsd_data_file:sock_file write; +allow meta_tst gps_data_file:file create_file_perms; +allow meta_tst gps_data_file:dir rw_dir_perms; + +allow meta_tst mnld_exec:file { execute read open }; +allow meta_tst mnld_exec:file execute_no_trans; +allow meta_tst stpgps_device:chr_file { open read write ioctl }; +allow meta_tst mnld_prop:property_service set; +allow meta_tst mnld_data_file:file create_file_perms; +allow meta_tst mnld_data_file:dir rw_dir_perms; + +# For GPS +allow meta_tst port:tcp_socket { name_connect name_bind }; +allow meta_tst self:tcp_socket { create connect setopt bind }; +allow meta_tst self:tcp_socket { bind setopt listen accept read write }; +allow meta_tst node:tcp_socket node_bind; + + +allow meta_tst sysfs:file write; + +allow meta_tst powerctl_prop:property_service set; +unix_socket_connect(meta_tst, property, init) + +allow meta_tst self:capability { net_raw chown fsetid sys_nice net_admin fowner dac_override sys_admin }; diff --git a/sepolicy/mkfs.te b/sepolicy/mkfs.te new file mode 100644 index 0000000..fe7c61b --- /dev/null +++ b/sepolicy/mkfs.te @@ -0,0 +1,9 @@ +type mkfs, domain; +type mkfs_exec, exec_type, file_type; + +init_daemon_domain(mkfs) + +# Allow formatting userdata or cache partitions +allow mkfs block_device:dir search; +allow mkfs userdata_block_device:blk_file rw_file_perms; +allow mkfs cache_block_device:blk_file rw_file_perms; diff --git a/sepolicy/mnld.te b/sepolicy/mnld.te new file mode 100644 index 0000000..8e86efc --- /dev/null +++ b/sepolicy/mnld.te @@ -0,0 +1,46 @@ +type mnld_exec, exec_type, file_type; +type mnld, domain, domain_deprecated; + +init_daemon_domain(mnld) +net_domain(mnld) + +allow mnld gps_device:chr_file rw_file_perms; +allow mnld stpgps_device:chr_file rw_file_perms; + +allow mnld gps_data_file:dir create_dir_perms; +allow mnld gps_data_file:file create_file_perms; + +allow mnld agpsd_data_file:dir create_dir_perms; +allow mnld agpsd_data_file:sock_file create_file_perms; +allow mnld mtk_agpsd:unix_dgram_socket sendto; + +allow mnld mnld_data_file:dir rw_dir_perms; +allow mnld mnld_data_file:sock_file create_file_perms; +allow mnld mnld_data_file:file create_file_perms; + +allow mnld nvdata_file:dir rw_dir_perms; +allow mnld nvdata_file:file create_file_perms; +allow mnld nvdata_file:lnk_file r_file_perms; +allow mnld nvram_device:blk_file rw_file_perms; + +allow mnld sysfs_gps_file:dir search; +allow mnld sysfs_gps_file:file rw_file_perms; + +allow mnld mnld_prop:property_service set; +allow mnld property_socket:sock_file write; + +allow mnld init:unix_stream_socket connectto; +allow mnld system_server:unix_dgram_socket { sendto write }; + +allow mnld fuse:dir create_dir_perms; +allow mnld fuse:file create_file_perms; + +allow mnld storage_file:dir search; +allow mnld storage_file:lnk_file read; + +allow mnld mdlog_device:chr_file { read write }; + +allow mnld block_device:dir search; + +file_type_auto_trans(mnld,system_data_file,mnld_data_file); +file_type_auto_trans(mnld,apk_data_file,mnld_data_file); diff --git a/sepolicy/msensord.te b/sepolicy/msensord.te new file mode 100644 index 0000000..14f5e70 --- /dev/null +++ b/sepolicy/msensord.te @@ -0,0 +1,12 @@ +type msensord_exec, exec_type, file_type; +type msensord, domain, domain_deprecated; + +init_daemon_domain(msensord) + +allow msensord msensord_daemon_sysfs:file r_file_perms; + +allow msensord ctl_qmc6983d_prop:property_service set; +allow msensord ctl_mxg2320d_prop:property_service set; +allow msensord ctl_memsicd3416x_prop:property_service set; + +unix_socket_connect(msensord, property, init) diff --git a/sepolicy/mtk_agpsd.te b/sepolicy/mtk_agpsd.te new file mode 100644 index 0000000..fb9bc93 --- /dev/null +++ b/sepolicy/mtk_agpsd.te @@ -0,0 +1,21 @@ +type mtk_agpsd_exec, exec_type, file_type; +type mtk_agpsd, domain, domain_deprecated; + +init_daemon_domain(mtk_agpsd) +net_domain(mtk_agpsd) + +allow mtk_agpsd agpsd_data_file:dir create_dir_perms; +allow mtk_agpsd agpsd_data_file:sock_file create_file_perms; +allow mtk_agpsd gps_device:chr_file rw_file_perms; +allow mtk_agpsd self:udp_socket create; + +allow mtk_agpsd storage_file:dir search; +allow mtk_agpsd storage_file:lnk_file read; + +allow mtk_agpsd mnt_user_file:dir create_dir_perms; +allow mtk_agpsd mnt_user_file:lnk_file create_file_perms; + +allow mtk_agpsd fuse:dir create_dir_perms; +allow mtk_agpsd fuse:file create_file_perms; + +unix_socket_send(mtk_agpsd, mnld, mnld); diff --git a/sepolicy/mtkmal.te b/sepolicy/mtkmal.te new file mode 100644 index 0000000..15fd834 --- /dev/null +++ b/sepolicy/mtkmal.te @@ -0,0 +1,10 @@ +type mtkmal_exec, exec_type, file_type; +type mtkmal, domain, domain_deprecated; + +init_daemon_domain(mtkmal) + +allow mtkmal init:unix_stream_socket connectto; +allow mtkmal property_socket:sock_file write; +allow mtkmal mal_mfi_socket:sock_file write; + +allow mtkmal self:capability { setuid setgid }; diff --git a/sepolicy/muxreport.te b/sepolicy/muxreport.te new file mode 100644 index 0000000..e17a075 --- /dev/null +++ b/sepolicy/muxreport.te @@ -0,0 +1,13 @@ +type muxreport_exec, exec_type, file_type; +type muxreport, domain, domain_deprecated; + +init_daemon_domain(muxreport) + +allow muxreport ccci_device:chr_file { read write ioctl open }; +allow muxreport ril_mux_report_case_prop:property_service set; +allow muxreport init:unix_stream_socket connectto; +allow muxreport property_socket:sock_file write; +allow muxreport devpts:chr_file { read write getattr ioctl }; +allow muxreport self:capability dac_override; +allow muxreport sysfs_ccci:dir search; +allow muxreport sysfs_ccci:file r_file_perms; \ No newline at end of file diff --git a/sepolicy/mxg2320d.te b/sepolicy/mxg2320d.te new file mode 100644 index 0000000..878ca31 --- /dev/null +++ b/sepolicy/mxg2320d.te @@ -0,0 +1,7 @@ +type mxg2320d_exec, exec_type, file_type; +type mxg2320d, domain, domain_deprecated; + +init_daemon_domain(mxg2320d) + +allow mxg2320d msensor_device:chr_file rw_file_perms; +allow mxg2320d gsensor_device:chr_file rw_file_perms; \ No newline at end of file diff --git a/sepolicy/netd.te b/sepolicy/netd.te new file mode 100644 index 0000000..e70363e --- /dev/null +++ b/sepolicy/netd.te @@ -0,0 +1,4 @@ +# Wifi +allow netd wmtWifi_device:chr_file w_file_perms; + +allow netd self:capability sys_module; diff --git a/sepolicy/nfc.te b/sepolicy/nfc.te new file mode 100644 index 0000000..56bfa94 --- /dev/null +++ b/sepolicy/nfc.te @@ -0,0 +1,4 @@ +allow nfc nfc_socket:dir { write remove_name add_name search }; +allow nfc nfc_socket:sock_file { write create setattr unlink }; + +allow nfc mt6605_device:chr_file { read write getattr open ioctl }; \ No newline at end of file diff --git a/sepolicy/nvram_daemon.te b/sepolicy/nvram_daemon.te new file mode 100644 index 0000000..18af42f --- /dev/null +++ b/sepolicy/nvram_daemon.te @@ -0,0 +1,26 @@ +type nvram_daemon_exec, exec_type, file_type; +type nvram_daemon, domain, domain_deprecated; + +init_daemon_domain(nvram_daemon) + +allow nvram_daemon self:capability { fowner dac_override dac_read_search chown fsetid }; +allow nvram_daemon nvram_device:blk_file rw_file_perms; +allow nvram_daemon nvdata_device:blk_file rw_file_perms; +allow nvram_daemon nvdata_file:dir create_dir_perms; +allow nvram_daemon nvdata_file:file create_file_perms; +allow nvram_daemon nvdata_file:lnk_file r_file_perms; +allow nvram_daemon shell_exec:file { read execute open execute_no_trans getattr }; +allow nvram_daemon als_ps_device:chr_file r_file_perms; +allow nvram_daemon mtk-adc-cali_device:chr_file rw_file_perms; +allow nvram_daemon gsensor_device:chr_file r_file_perms; +allow nvram_daemon msensor_device:chr_file r_file_perms; +allow nvram_daemon gyroscope_device:chr_file r_file_perms; +allow nvram_daemon toolbox_exec:file rx_file_perms; + +allow nvram_daemon proinfo_device:blk_file rw_file_perms; +allow nvram_daemon nvram_prop:property_service set; +allow nvram_daemon wmt_prop:property_service set; + +allow nvram_daemon block_device:dir search; + +unix_socket_connect(nvram_daemon, property, init) diff --git a/sepolicy/platform_app.te b/sepolicy/platform_app.te new file mode 100644 index 0000000..84a30ea --- /dev/null +++ b/sepolicy/platform_app.te @@ -0,0 +1,11 @@ +# Fingerprint +allow platform_app esfp0_device:chr_file rw_file_perms; +allow platform_app esfp0_device:chr_file rw_file_perms; +allow platform_app etsd_service:service_manager find; +allow platform_app etsd:binder { call transfer }; + +# Guiext +allow platform_app guiext-server_service:service_manager find; + +# PQ +allow platform_app pq_service:service_manager find; diff --git a/sepolicy/pq.te b/sepolicy/pq.te new file mode 100644 index 0000000..85ada8f --- /dev/null +++ b/sepolicy/pq.te @@ -0,0 +1,15 @@ +type pq_exec, exec_type, file_type; +type pq, domain, domain_deprecated; + +init_daemon_domain(pq) + +binder_use(pq) +binder_call(pq, binderservicedomain) +binder_service(pq) + +allow pq pq_service:service_manager add; +unix_socket_connect(pq, property, init) + +allow pq pq_conf_prop:property_service set; + +allow pq graphics_device:chr_file { open read ioctl }; diff --git a/sepolicy/priv_app.te b/sepolicy/priv_app.te new file mode 100644 index 0000000..7874778 --- /dev/null +++ b/sepolicy/priv_app.te @@ -0,0 +1,5 @@ +# Guiext +allow priv_app guiext-server_service:service_manager find; + +# PQ +allow priv_app pq_service:service_manager find; diff --git a/sepolicy/property.te b/sepolicy/property.te new file mode 100644 index 0000000..2b8d6b8 --- /dev/null +++ b/sepolicy/property.te @@ -0,0 +1,18 @@ +type wmt_prop, property_type, mtk_property_type; +type mtk_md_prop, property_type, mtk_property_type; +type mnld_prop, property_type, mtk_property_type; +type ctl_qmc6983d_prop, property_type; +type ctl_mxg2320d_prop, property_type; +type ctl_memsicd3416x_prop, property_type; +type ctl_ccci_fsd_prop, property_type; +type ctl_gsm0710muxd_prop, property_type; +type ctl_gsm0710muxdmd2_prop, property_type; +type ctl_muxreport-daemon_prop, property_type; +type nvram_prop, property_type, mtk_property_type; +type pq_conf_prop, property_type, mtk_property_type; +type audiohal_prop, property_type, mtk_property_type; +type ril_mux_report_case_prop, property_type, mtk_property_type; +type ril_msim_power_prop, property_type, mtk_property_type; +type ril_sim_inserted_status, property_type, mtk_property_type; +type serial_number_prop, property_type, mtk_property_type; +type vold_encryption_type_prop, property_type; diff --git a/sepolicy/property_contexts b/sepolicy/property_contexts new file mode 100644 index 0000000..aff6dc0 --- /dev/null +++ b/sepolicy/property_contexts @@ -0,0 +1,26 @@ +service.wcn u:object_r:wmt_prop:s0 +persist.mtk.wcn u:object_r:wmt_prop:s0 +wlan.mtk.wifi.5g u:object_r:wmt_prop:s0 +mtk.md u:object_r:mtk_md_prop:s0 +gps.clock.type u:object_r:mnld_prop:s0 +gps.gps.version u:object_r:mnld_prop:s0 +ctl.qmc6983d u:object_r:ctl_qmc6983d_prop:s0 +ctl.mxg2320d u:object_r:ctl_mxg2320d_prop:s0 +ctl.memsicd3416x u:object_r:ctl_memsicd3416x_prop:s0 +ctl.ccci_fsd u:object_r:ctl_ccci_fsd_prop:s0 +ctl.gsm0710muxd u:object_r:ctl_gsm0710muxd_prop:s0 +ctl.gsm0710muxd-s u:object_r:ctl_gsm0710muxd_prop:s0 +ctl.gsm0710muxd-d u:object_r:ctl_gsm0710muxd_prop:s0 +ctl.gsm0710muxdmd2 u:object_r:ctl_gsm0710muxdmd2_prop:s0 +ctl.muxreport-daemon u:object_r:ctl_muxreport-daemon_prop:s0 +service.nvram_init u:object_r:nvram_prop:s0 +persist.sys.pq u:object_r:pq_conf_prop:s0 +af. u:object_r:audiohal_prop:s0 +persist.af. u:object_r:audiohal_prop:s0 +ril.mux.report.case u:object_r:ril_mux_report_case_prop:s0 +sys.msim.power.slot0 u:object_r:ril_msim_power_prop:s0 +sys.msim.power.slot1 u:object_r:ril_msim_power_prop:s0 +sys.sim_inserted_status_0 u:object_r:ril_sim_inserted_status:s0 +sys.sim_inserted_status_1 u:object_r:ril_sim_inserted_status:s0 +ro.serialno u:object_r:serial_number_prop:s0 +vold.encryption.type u:object_r:vold_encryption_type_prop:s0 diff --git a/sepolicy/qmc6983d.te b/sepolicy/qmc6983d.te new file mode 100644 index 0000000..57b11e0 --- /dev/null +++ b/sepolicy/qmc6983d.te @@ -0,0 +1,7 @@ +type qmc6983d_exec, exec_type, file_type; +type qmc6983d, domain, domain_deprecated; + +init_daemon_domain(qmc6983d) + +allow qmc6983d msensor_device:chr_file rw_file_perms; +allow qmc6983d gsensor_device:chr_file rw_file_perms; \ No newline at end of file diff --git a/sepolicy/radio.te b/sepolicy/radio.te new file mode 100644 index 0000000..5f2f249 --- /dev/null +++ b/sepolicy/radio.te @@ -0,0 +1,4 @@ +unix_socket_connect(radio, rild, ril-daemon-mtk) + +allow radio ril_mux_report_case_prop:property_service set; +allow radio ril_msim_power_prop:property_service set; diff --git a/sepolicy/ril-daemon-mtk.te b/sepolicy/ril-daemon-mtk.te new file mode 100644 index 0000000..c1b5c86 --- /dev/null +++ b/sepolicy/ril-daemon-mtk.te @@ -0,0 +1,33 @@ +type ril-daemon-mtk_exec, exec_type, file_type; +type ril-daemon-mtk, domain, domain_deprecated; + +init_daemon_domain(ril-daemon-mtk) +net_domain(ril-daemon-mtk) + +allow ril-daemon-mtk ccci_device:chr_file rw_file_perms; +allow ril-daemon-mtk devpts:chr_file rw_file_perms; +allow ril-daemon-mtk self:capability setuid; +allow ril-daemon-mtk sysfs_wake_lock:file rw_file_perms; +allow ril-daemon-mtk sysfs_ccci:dir search; +allow ril-daemon-mtk sysfs_ccci:file r_file_perms; +allow ril-daemon-mtk block_device:dir search; +allow ril-daemon-mtk para_block_device:blk_file rw_file_perms; + +allow ril-daemon-mtk self:udp_socket create_socket_perms; +allow ril-daemon-mtk self:capability { setuid net_admin net_raw }; + +allow ril-daemon-mtk mal_mfi_socket:sock_file { w_file_perms }; +allow ril-daemon-mtk mtkmal:unix_stream_socket connectto; + +allow ril-daemon-mtk radio_device:dir search; +allow ril-daemon-mtk radio_prop:property_service set; + +allow ril-daemon-mtk ctl_muxreport-daemon_prop:property_service set; +allow ril-daemon-mtk ril_mux_report_case_prop:property_service set; +allow ril-daemon-mtk ril_sim_inserted_status:property_service set; +allow ril-daemon-mtk serial_number_prop:property_service set; + +unix_socket_connect(ril-daemon-mtk, property, init) + +# Access to wake locks +wakelock_use(ril-daemon-mtk) diff --git a/sepolicy/service.te b/sepolicy/service.te new file mode 100644 index 0000000..472c45f --- /dev/null +++ b/sepolicy/service.te @@ -0,0 +1,5 @@ +type pq_service, service_manager_type; +type guiext-server_service, service_manager_type; +type nvram_agent_service, service_manager_type; +type etsd_service, service_manager_type; +type edge_gesture_service, system_api_service, system_server_service, service_manager_type; diff --git a/sepolicy/service_contexts b/sepolicy/service_contexts new file mode 100644 index 0000000..e3dd286 --- /dev/null +++ b/sepolicy/service_contexts @@ -0,0 +1,5 @@ +PQ u:object_r:pq_service:s0 +GuiExtService u:object_r:guiext-server_service:s0 +NvRAMAgent u:object_r:nvram_agent_service:s0 +egistec.ets.service.daemon u:object_r:etsd_service:s0 +edgegestureservice u:object_r:edge_gesture_service:s0 diff --git a/sepolicy/spm_loader.te b/sepolicy/spm_loader.te new file mode 100644 index 0000000..fd08ce5 --- /dev/null +++ b/sepolicy/spm_loader.te @@ -0,0 +1,6 @@ +type spm_loader_exec, exec_type, file_type; +type spm_loader, domain, domain_deprecated; + +init_daemon_domain(spm_loader) + +allow spm_loader spm_device:chr_file r_file_perms; diff --git a/sepolicy/surfaceflinger.te b/sepolicy/surfaceflinger.te new file mode 100644 index 0000000..f2c3b63 --- /dev/null +++ b/sepolicy/surfaceflinger.te @@ -0,0 +1,7 @@ +allow surfaceflinger pq_service:service_manager find; + +allow surfaceflinger guiext-server_service:service_manager { find add }; + +allow surfaceflinger debug_prop:property_service set; + +allow surfaceflinger mtk_smi_device:chr_file { read write open ioctl }; diff --git a/sepolicy/system_app.te b/sepolicy/system_app.te new file mode 100644 index 0000000..95fdd9e --- /dev/null +++ b/sepolicy/system_app.te @@ -0,0 +1,8 @@ +allow system_app fm_device:chr_file rw_file_perms; + +allow system_app gyro_orientation_sysfs:file rw_file_perms; +allow system_app fast_charge_sysfs:file rw_file_perms; +allow system_app smartwake_sysfs:file rw_file_perms; +allow system_app perf_control_sysfs:file rw_file_perms; + +allow system_app em_svr:unix_stream_socket connectto; \ No newline at end of file diff --git a/sepolicy/system_server.te b/sepolicy/system_server.te new file mode 100644 index 0000000..a06dd32 --- /dev/null +++ b/sepolicy/system_server.te @@ -0,0 +1,37 @@ +# GPS +allow system_server mnld:unix_dgram_socket sendto; +allow system_server mnld_data_file:dir w_dir_perms; +allow system_server mnld_data_file:sock_file create_file_perms; +allow system_server mnld_data_file:file create_file_perms; + +# Persist +allow system_server protect_s_data_file:dir r_dir_perms; + +# Sensors +allow system_server hwmsensor_device:chr_file r_file_perms; + +# Wifi +allow system_server wmtWifi_device:chr_file w_file_perms; + +# RGB Display Color +allow system_server display_color_sysfs:file rw_file_perms; + +# Fast Charge +allow system_server fast_charge_sysfs:file rw_file_perms; + +# Smart Wake +allow system_server smartwake_sysfs:file rw_file_perms; + +# Fingerprint +binder_call(system_server, etsd) +allow system_server etsd_service:service_manager find; +allow fingerprintd etsd_service:service_manager find; + +# IR +allow system_server irtx_device:chr_file rw_file_perms; + +# External storage +allow system_server storage_stub_file:dir { getattr }; + +# Guiext +allow system_server guiext-server_service:service_manager find; diff --git a/sepolicy/terservice.te b/sepolicy/terservice.te new file mode 100644 index 0000000..466a013 --- /dev/null +++ b/sepolicy/terservice.te @@ -0,0 +1,4 @@ +type terservice_exec, exec_type, file_type; +type terservice, domain, domain_deprecated; + +init_daemon_domain(terservice) diff --git a/sepolicy/thermal.te b/sepolicy/thermal.te new file mode 100644 index 0000000..3a53730 --- /dev/null +++ b/sepolicy/thermal.te @@ -0,0 +1,10 @@ +type thermal_exec, exec_type, file_type; +type thermal, domain, domain_deprecated; + +init_daemon_domain(thermal) + +allow thermal proc_thermal:dir search; +allow thermal proc_thermal:file rw_file_perms; +allow thermal rild_socket:sock_file w_file_perms; + +allow thermal ril-daemon-mtk:unix_stream_socket connectto; diff --git a/sepolicy/thermal_manager.te b/sepolicy/thermal_manager.te new file mode 100644 index 0000000..c79ce8e --- /dev/null +++ b/sepolicy/thermal_manager.te @@ -0,0 +1,14 @@ +type thermal_manager_exec, exec_type, file_type; +type thermal_manager, domain, domain_deprecated; + +init_daemon_domain(thermal_manager) + +allow thermal_manager self:capability { fowner fsetid chown fsetid dac_override }; +allow thermal_manager proc_thermal:dir search; +allow thermal_manager proc_thermal:file rw_file_perms; +allow thermal_manager proc_mtkcooler:dir search; +allow thermal_manager proc_mtkcooler:file rw_file_perms; +allow thermal_manager proc_mtktz:dir search; +allow thermal_manager proc_mtktz:file rw_file_perms; +allow thermal_manager thermal_manager_data_file:dir rw_dir_perms; +allow thermal_manager thermal_manager_data_file:file create_file_perms; diff --git a/sepolicy/thermald.te b/sepolicy/thermald.te new file mode 100644 index 0000000..a4b53b1 --- /dev/null +++ b/sepolicy/thermald.te @@ -0,0 +1,7 @@ +type thermald_exec, exec_type, file_type; +type thermald, domain, domain_deprecated; + +init_daemon_domain(thermald) + +allow thermald proc_thermal:dir search; +allow thermald proc_thermal:file rw_file_perms; diff --git a/sepolicy/thermalloadalgo.te b/sepolicy/thermalloadalgo.te new file mode 100644 index 0000000..27a3dbd --- /dev/null +++ b/sepolicy/thermalloadalgo.te @@ -0,0 +1,6 @@ +type thermalloadalgo_exec, exec_type, file_type; +type thermalloadalgo, domain, domain_deprecated; + +init_daemon_domain(thermalloadalgo) + +allow thermalloadalgo thermalloadalgo:netlink_socket { create bind write read }; diff --git a/sepolicy/ueventd.te b/sepolicy/ueventd.te new file mode 100644 index 0000000..7bacf63 --- /dev/null +++ b/sepolicy/ueventd.te @@ -0,0 +1 @@ +allow ueventd sysfs_gps_file:file w_file_perms; diff --git a/sepolicy/untrusted_app.te b/sepolicy/untrusted_app.te new file mode 100644 index 0000000..3eccfac --- /dev/null +++ b/sepolicy/untrusted_app.te @@ -0,0 +1,2 @@ +# PQ +allow untrusted_app pq_service:service_manager find; diff --git a/sepolicy/vold.te b/sepolicy/vold.te new file mode 100644 index 0000000..5fc9d70 --- /dev/null +++ b/sepolicy/vold.te @@ -0,0 +1,22 @@ +allow vold nvdata_device:blk_file rw_file_perms; +allow vold cache_block_device:blk_file rw_file_perms; +allow vold protect1_device:blk_file rw_file_perms; +allow vold protect2_device:blk_file rw_file_perms; + +allow vold nvdata_file:dir create_dir_perms; +allow vold nvdata_file:file create_file_perms; +allow vold protect_f_data_file:dir create_dir_perms; +allow vold protect_f_data_file:file create_file_perms; +allow vold protect_s_data_file:dir create_dir_perms; +allow vold protect_s_data_file:file create_file_perms; + +allow vold proc_mtkcooler:dir r_dir_perms; +allow vold proc_mtktz:dir r_dir_perms; + +# Allow vold to access fuse for fuse-based fs +allow vold fuse:chr_file rw_file_perms; + +# External storage +allow vold storage_stub_file:dir { rw_file_perms search add_name }; +allow vold mnt_media_rw_stub_file:dir r_dir_perms; +allow vold mkfs_exec:file { execute read open getattr execute_no_trans }; \ No newline at end of file diff --git a/sepolicy/wifi2agps.te b/sepolicy/wifi2agps.te new file mode 100644 index 0000000..f0c4068 --- /dev/null +++ b/sepolicy/wifi2agps.te @@ -0,0 +1,9 @@ +type wifi2agps_exec, exec_type, file_type; +type wifi2agps, domain, domain_deprecated; + +init_daemon_domain(wifi2agps) + +allow wifi2agps agpsd_data_file:sock_file write; +allow wifi2agps agpsd_data_file:dir search; +allow wifi2agps mtk_agpsd:unix_dgram_socket sendto; +allow wifi2agps self:netlink_socket create_socket_perms; diff --git a/sepolicy/wmt_loader.te b/sepolicy/wmt_loader.te new file mode 100644 index 0000000..33da926 --- /dev/null +++ b/sepolicy/wmt_loader.te @@ -0,0 +1,11 @@ +type wmt_loader_exec, exec_type, file_type; +type wmt_loader, domain, domain_deprecated; + +init_daemon_domain(wmt_loader) + +allow wmt_loader wmtdetect_device:chr_file create_file_perms; +allow wmt_loader self:capability { chown dac_override }; +allow wmt_loader proc_wmt:file setattr; +allow wmt_loader wmt_prop:property_service set; + +unix_socket_connect(wmt_loader, property, init) diff --git a/sepolicy/zygote.te b/sepolicy/zygote.te new file mode 100644 index 0000000..aa101ce --- /dev/null +++ b/sepolicy/zygote.te @@ -0,0 +1 @@ +allow zygote sysfs_devinfo:file r_file_perms; diff --git a/wpa_supplicant_8_lib/Android.mk b/wpa_supplicant_8_lib/Android.mk new file mode 100644 index 0000000..115997a --- /dev/null +++ b/wpa_supplicant_8_lib/Android.mk @@ -0,0 +1,68 @@ +# +# Copyright (C) 2008 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) + +##### For Google SUPPLICANT ##### +ifeq ($(MTKPATH),) + $(warning build BASIC wpa_supplicant) + WPA_SUPPL_DIR = external/wpa_supplicant_8 + WPA_SRC_FILE := + +ifneq ($(BOARD_WPA_SUPPLICANT_DRIVER),) + CONFIG_DRIVER_$(BOARD_WPA_SUPPLICANT_DRIVER) := y +endif +ifneq ($(BOARD_HOSTAPD_DRIVER),) + CONFIG_DRIVER_$(BOARD_HOSTAPD_DRIVER) := y +endif + +include $(WPA_SUPPL_DIR)/wpa_supplicant/android.config + +WPA_SUPPL_DIR_INCLUDE = $(WPA_SUPPL_DIR)/src \ + $(WPA_SUPPL_DIR)/src/common \ + $(WPA_SUPPL_DIR)/src/drivers \ + $(WPA_SUPPL_DIR)/src/l2_packet \ + $(WPA_SUPPL_DIR)/src/utils \ + $(WPA_SUPPL_DIR)/src/wps \ + $(WPA_SUPPL_DIR)/wpa_supplicant + +ifdef CONFIG_DRIVER_NL80211 +WPA_SUPPL_DIR_INCLUDE += external/libnl/include +WPA_SRC_FILE += mediatek_driver_cmd_nl80211.c +endif + +ifdef CONFIG_DRIVER_WEXT +#error doesn't support CONFIG_DRIVER_WEXT +endif + +# To force sizeof(enum) = 4 +ifeq ($(TARGET_ARCH),arm) +L_CFLAGS += -mabi=aapcs-linux +endif + +ifdef CONFIG_ANDROID_LOG +L_CFLAGS += -DCONFIG_ANDROID_LOG +endif + +######################## +include $(CLEAR_VARS) +LOCAL_MODULE := lib_driver_cmd_mt66xx +LOCAL_SHARED_LIBRARIES := libc libcutils +LOCAL_CFLAGS := $(L_CFLAGS) +LOCAL_SRC_FILES := $(WPA_SRC_FILE) +LOCAL_C_INCLUDES := $(WPA_SUPPL_DIR_INCLUDE) +include $(BUILD_STATIC_LIBRARY) +######################## +endif diff --git a/wpa_supplicant_8_lib/mediatek_driver_cmd_nl80211.c b/wpa_supplicant_8_lib/mediatek_driver_cmd_nl80211.c new file mode 100644 index 0000000..c59bcb5 --- /dev/null +++ b/wpa_supplicant_8_lib/mediatek_driver_cmd_nl80211.c @@ -0,0 +1,266 @@ +/* + * Driver interaction with extended Linux CFG8021 + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 2 as + * published by the Free Software Foundation. + * + * Alternatively, this software may be distributed under the terms of BSD + * license. + * + */ +#include "includes.h" +#include +#include "netlink/genl/genl.h" + +#include "common.h" +#include "driver_nl80211.h" +#include "linux_ioctl.h" +#include "wpa_supplicant_i.h" +#include "config.h" +#ifdef ANDROID +#include "android_drv.h" +#endif + +#include "driver_i.h" + +#include "eloop.h" + +/********************************************************************** +* OVERLAPPED functins, previous defination is in driver_nl80211.c, +* it will be modified +***********************************************************************/ + +/**********************************************************************/ +static int wpa_driver_mediatek_set_country(void *priv, const char *alpha2_arg) +{ + struct i802_bss *bss = priv; + struct wpa_driver_nl80211_data *drv = bss->drv; + int ioctl_sock = -1; + struct iwreq iwr; + int ret = -1; + char buf[11]; +#ifdef MTK_TC1_FEATURE + char replace_ifname[IFNAMSIZ+1]; + + memset(replace_ifname, 0, IFNAMSIZ+1); + os_strlcpy(replace_ifname, "wlan0", os_strlen("wlan0")+1); +#endif + + wpa_printf(MSG_DEBUG, "wpa_driver_nl80211_set_country"); + ioctl_sock = socket(PF_INET, SOCK_DGRAM, 0); + if (ioctl_sock < 0) { + wpa_printf(MSG_ERROR, "%s: socket(PF_INET,SOCK_DGRAM)", __func__); + return -1; + } + os_memset(&iwr, 0, sizeof(iwr)); +#ifdef MTK_TC1_FEATURE + // convert 'p2p0' -> 'wlan0' : + // when iface name is p2p0, COUNTRY driver command doesn't support in MTK solution. + if (os_strncmp(drv->first_bss->ifname, "p2p0", os_strlen("p2p0")) == 0) { + wpa_printf(MSG_DEBUG, "Change interface name : p2p0->wlan0"); + os_strlcpy(iwr.ifr_name, replace_ifname, IFNAMSIZ ); + } else { + os_strlcpy(iwr.ifr_name, drv->first_bss->ifname, IFNAMSIZ); + } +#else + os_strlcpy(iwr.ifr_name, drv->first_bss->ifname, IFNAMSIZ); +#endif + sprintf(buf, "COUNTRY %s", alpha2_arg); + iwr.u.data.pointer = buf; + iwr.u.data.length = strlen(buf); + if ((ret = ioctl(ioctl_sock, 0x8B0C, &iwr)) < 0) { // SIOCSIWPRIV + wpa_printf(MSG_DEBUG, "ioctl[SIOCSIWPRIV]: %s", buf); + close(ioctl_sock); + return ret; + } + else { + close(ioctl_sock); + return 0; + } + +} + +/* +* update channel list in wpa_supplicant +* if coutry code chanaged +*/ +static void wpa_driver_notify_country_change(void *ctx, char *cmd) +{ + if (os_strncasecmp(cmd, "COUNTRY", 7) == 0) { + union wpa_event_data event; + + os_memset(&event, 0, sizeof(event)); + event.channel_list_changed.initiator = REGDOM_SET_BY_USER; + if (os_strncasecmp(cmd, "COUNTRY", 7) == 0) { + event.channel_list_changed.type = REGDOM_TYPE_COUNTRY; + if (os_strlen(cmd) > 9) { + event.channel_list_changed.alpha2[0] = cmd[8]; + event.channel_list_changed.alpha2[1] = cmd[9]; + } + } else + event.channel_list_changed.type = REGDOM_TYPE_UNKNOWN; + wpa_supplicant_event(ctx, EVENT_CHANNEL_LIST_CHANGED, &event); + } +} + +int wpa_driver_nl80211_driver_cmd(void *priv, char *cmd, char *buf, + size_t buf_len ) +{ + struct i802_bss *bss = priv; + struct wpa_driver_nl80211_data *drv = bss->drv; + struct ifreq ifr; + struct wpa_supplicant *wpa_s; + struct hostapd_data *hapd; + int handled = 0; + int cmd_len = 0; + union wpa_event_data event; + static int user_force_band = 0; + int ret = -1; + + if (drv == NULL) { + wpa_printf(MSG_ERROR, "%s: drv is NULL. Exiting", __func__); + return -1; + } + if (drv->ctx == NULL) { + wpa_printf(MSG_ERROR, "%s: drv->ctx is NULL. Exiting", __func__); + return -1; + } + + if (os_strcmp(bss->ifname, "ap0") == 0) { + hapd = (struct hostapd_data *)(drv->ctx); + } + else { + wpa_s = (struct wpa_supplicant *)(drv->ctx); + if (wpa_s->conf == NULL) { + wpa_printf(MSG_ERROR, "%s: wpa_s->conf is NULL. Exiting", __func__); + return -1; + } + } + + wpa_printf(MSG_DEBUG, "iface %s recv cmd %s", bss->ifname, cmd); + handled = 1; + + if (os_strncasecmp(cmd, "POWERMODE ", 10) == 0) { + int state; + state = atoi(cmd + 10); + wpa_printf(MSG_DEBUG, "POWERMODE=%d", state); + } else if (os_strncmp(cmd, "MACADDR", os_strlen("MACADDR")) == 0) { + u8 macaddr[ETH_ALEN] = {}; + os_memcpy(&macaddr, wpa_s->own_addr, ETH_ALEN); + ret = snprintf(buf, buf_len, "Macaddr = " MACSTR "\n", MAC2STR(macaddr)); + wpa_printf(MSG_DEBUG, "%s", buf); + } else if(os_strncasecmp(cmd, "COUNTRY", os_strlen("COUNTRY"))==0) { + if (os_strlen(cmd) != os_strlen("COUNTRY") + 3) { + wpa_printf(MSG_DEBUG, "Ignore COUNTRY cmd %s", cmd); + ret = 0; + } else { + wpa_printf(MSG_INFO, "set country: %s", cmd+8); + // ret = wpa_drv_set_country(wpa_s, cmd+8); + ret = wpa_driver_mediatek_set_country(priv, cmd+8); + if (ret == 0) { + wpa_printf(MSG_DEBUG, "Update channel list after country code changed"); + wpa_driver_notify_country_change(wpa_s, cmd); + } + } + } else if (os_strcasecmp(cmd, "start") == 0) { + if (ret = linux_set_iface_flags(drv->global->ioctl_sock, + drv->first_bss->ifname, 1)) { + wpa_printf(MSG_INFO, "nl80211: Could not set interface UP, ret=%d \n", ret); + } else { + wpa_msg(drv->ctx, MSG_INFO, "CTRL-EVENT-DRIVER-STATE STARTED"); + } + } else if (os_strcasecmp(cmd, "stop") == 0) { + if (drv->associated) { + ret = wpa_drv_deauthenticate(wpa_s, drv->bssid, WLAN_REASON_DEAUTH_LEAVING); + if (ret != 0) + wpa_printf(MSG_DEBUG, "DRIVER-STOP error, ret=%d", ret); + } else { + wpa_printf(MSG_INFO, "nl80211: not associated, no need to deauthenticate \n"); + } + + if (ret = linux_set_iface_flags(drv->global->ioctl_sock, + drv->first_bss->ifname, 0)) { + wpa_printf(MSG_INFO, "nl80211: Could not set interface Down, ret=%d \n", ret); + } else { + wpa_msg(drv->ctx, MSG_INFO, "CTRL-EVENT-DRIVER-STATE STOPPED"); + } + } else if (os_strncasecmp(cmd, "getpower", 8) == 0) { + u32 mode; + // ret = wpa_driver_wext_driver_get_power(drv, &mode); + if (ret == 0) { + ret = snprintf(buf, buf_len, "powermode = %u\n", mode); + wpa_printf(MSG_DEBUG, "%s", buf); + if (ret < (int)buf_len) + return ret; + } + } else if (os_strncasecmp(cmd, "get-rts-threshold", 17) == 0) { + u32 thd; + // ret = wpa_driver_wext_driver_get_rts(drv, &thd); + if (ret == 0) { + ret = snprintf(buf, buf_len, "rts-threshold = %u\n", thd); + wpa_printf(MSG_DEBUG, "%s", buf); + if (ret < (int)buf_len) + return ret; + } + } else if (os_strncasecmp(cmd, "set-rts-threshold", 17) == 0) { + u32 thd = 0; + char *cp = cmd + 17; + char *endp; + if (*cp != '\0') { + thd = (u32)strtol(cp, &endp, 0); + // if (endp != cp) + // ret = wpa_driver_wext_driver_set_rts(drv, thd); + } + } else if (os_strcasecmp(cmd, "btcoexscan-start") == 0) { + ret = 0; /* mt5921 linux driver not implement yet */ + } else if (os_strcasecmp(cmd, "btcoexscan-stop") == 0) { + ret = 0; /* mt5921 linux driver not implement yet */ + } else if (os_strncasecmp(cmd, "btcoexmode", 10) == 0) { + ret = 0; /* mt5921 linux driver not implement yet */ + } else { + handled = 0; + wpa_printf(MSG_INFO, "Unsupported command"); + } + + return ret; +} + +int wpa_driver_set_p2p_noa(void *priv, u8 count, int start, int duration) +{ + struct i802_bss *bss = priv; + struct wpa_driver_nl80211_data *drv = bss->drv; + + wpa_printf(MSG_DEBUG, "iface %s P2P_SET_NOA %d %d %d, ignored", bss->ifname, count, start, duration); + return -1; +} + +int wpa_driver_get_p2p_noa(void *priv, u8 *buf, size_t len) +{ + struct i802_bss *bss = priv; + struct wpa_driver_nl80211_data *drv = bss->drv; + + wpa_printf(MSG_DEBUG, "iface %s P2P_GET_NOA, ignored", bss->ifname); + return -1; +} + +int wpa_driver_set_p2p_ps(void *priv, int legacy_ps, int opp_ps, int ctwindow) +{ + struct i802_bss *bss = priv; + struct wpa_driver_nl80211_data *drv = bss->drv; + + wpa_printf(MSG_DEBUG, "iface %s P2P_SET_PS, ignored", bss->ifname); + return -1; +} + +int wpa_driver_set_ap_wps_p2p_ie(void *priv, const struct wpabuf *beacon, + const struct wpabuf *proberesp, + const struct wpabuf *assocresp) +{ + struct i802_bss *bss = priv; + struct wpa_driver_nl80211_data *drv = bss->drv; + + wpa_printf(MSG_DEBUG, "iface %s set_ap_wps_p2p_ie, ignored", bss->ifname); + return 0; +} +