From: Chih-Wei Huang Date: Tue, 15 Oct 2019 09:43:45 +0000 (+0800) Subject: Merge remote-tracking branch 'x86/nougat-x86' into oreo-x86 X-Git-Tag: android-x86-8.1-r3~1 X-Git-Url: http://git.osdn.net/view?p=android-x86%2Fdevice-generic-common.git;a=commitdiff_plain;h=bf8294ec98a4e10868a7c7c006d5c512653b5421;hp=7a6799a85946971f09e48a53d4384afe1775448e Merge remote-tracking branch 'x86/nougat-x86' into oreo-x86 --- diff --git a/BoardConfig.mk b/BoardConfig.mk index a63163b..7ab0e17 100644 --- a/BoardConfig.mk +++ b/BoardConfig.mk @@ -31,7 +31,7 @@ TARGET_EXTRA_KERNEL_MODULES := tp_smapi ifneq ($(filter efi_img,$(MAKECMDGOALS)),) TARGET_KERNEL_ARCH ?= x86_64 endif -TARGET_USES_64_BIT_BINDER := $(if $(filter x86_64,$(TARGET_ARCH) $(TARGET_KERNEL_ARCH)),true) +TARGET_USES_64_BIT_BINDER := true BOARD_USES_GENERIC_AUDIO ?= false BOARD_USES_ALSA_AUDIO ?= true @@ -60,7 +60,9 @@ USE_INTEL_OMX_COMPONENTS := true USE_OPENGL_RENDERER := true NUM_FRAMEBUFFER_SURFACE_BUFFERS ?= 3 +BOARD_USES_DRM_GRALLOC := true BOARD_USES_DRM_HWCOMPOSER ?= true +SF_START_GRAPHICS_ALLOCATOR_SERVICE := true USE_CAMERA_STUB ?= false @@ -69,18 +71,23 @@ SUPERUSER_PACKAGE_PREFIX := com.android.settings.cyanogenmod.superuser # This enables the wpa wireless driver BOARD_WPA_SUPPLICANT_DRIVER ?= NL80211 -BOARD_WPA_SUPPLICANT_PRIVATE_LIB ?= private_lib_driver_cmd WPA_SUPPLICANT_VERSION ?= VER_2_1_DEVEL -WIFI_DRIVER_MODULE_PATH ?= auto BOARD_GPU_DRIVERS ?= i915 i965 nouveau r300g r600g radeonsi virgl vmwgfx ifneq ($(strip $(BOARD_GPU_DRIVERS)),) TARGET_HARDWARE_3D := true endif -BOARD_KERNEL_CMDLINE := root=/dev/ram0 androidboot.selinux=permissive $(if $(filter true,$(TARGET_USES_64_BIT_BINDER)),,vmalloc=192M) +BOARD_KERNEL_CMDLINE := root=/dev/ram0 androidboot.selinux=permissive$(if $(filter x86_64,$(TARGET_ARCH) $(TARGET_KERNEL_ARCH)),, vmalloc=192M) TARGET_KERNEL_DIFFCONFIG := device/generic/common/selinux_diffconfig COMPATIBILITY_ENHANCEMENT_PACKAGE := true PRC_COMPATIBILITY_PACKAGE := true ZIP_OPTIMIZATION_NO_INTEGRITY := true + +DEVICE_MANIFEST_FILE := device/generic/common/manifest.xml + +BOARD_SEPOLICY_DIRS += device/generic/common/sepolicy/nonplat \ + system/bt/vendor_libs/linux/sepolicy \ + +BOARD_PLAT_PRIVATE_SEPOLICY_DIR := device/generic/common/sepolicy/plat_private diff --git a/CleanSpec.mk b/CleanSpec.mk index ca4f50f..c04c745 100644 --- a/CleanSpec.mk +++ b/CleanSpec.mk @@ -1 +1,5 @@ +$(call add-clean-step, rm -f $(TARGET_OUT_VENDOR)/*/*/android.hardware.graphics.allocator@2.0-service*) +$(call add-clean-step, rm -rf $(TARGET_OUT_APPS_PRIVILEGED)/Telecom) +$(call add-clean-step, rm -f $(TARGET_OUT_VENDOR)/*/*/android.hardware.bluetooth@1.0-service* $(TARGET_OUT)/lib*/libbt-vendor.so) +$(call add-clean-step, rm -f $(TARGET_OUT_VENDOR)/lib*/hw/android.hardware.bluetooth@1.0-impl.so) $(call add-clean-step, rm -rf $(TARGET_OUT_APPS)/AndroidTerm) diff --git a/alsa/bytcrrt5640.state b/alsa/bytcrrt5640.state index 78c314c..944edbb 100644 --- a/alsa/bytcrrt5640.state +++ b/alsa/bytcrrt5640.state @@ -81,7 +81,7 @@ state.bytcrrt5640 { } control.9 { iface MIXER - name 'pcm0_out mix 0 codec_in0 Switch' + name 'pcm0_out mix 0 modem_in Switch' value false comment { access 'read write' @@ -91,7 +91,7 @@ state.bytcrrt5640 { } control.10 { iface MIXER - name 'pcm0_out mix 0 codec_in1 Switch' + name 'pcm0_out mix 0 codec_in0 Switch' value false comment { access 'read write' @@ -101,7 +101,7 @@ state.bytcrrt5640 { } control.11 { iface MIXER - name 'pcm0_out mix 0 sprot_loop_in Switch' + name 'pcm0_out mix 0 codec_in1 Switch' value false comment { access 'read write' @@ -111,7 +111,7 @@ state.bytcrrt5640 { } control.12 { iface MIXER - name 'pcm0_out mix 0 media_loop1_in Switch' + name 'pcm0_out mix 0 sprot_loop_in Switch' value false comment { access 'read write' @@ -121,7 +121,7 @@ state.bytcrrt5640 { } control.13 { iface MIXER - name 'pcm0_out mix 0 media_loop2_in Switch' + name 'pcm0_out mix 0 media_loop1_in Switch' value false comment { access 'read write' @@ -131,7 +131,7 @@ state.bytcrrt5640 { } control.14 { iface MIXER - name 'pcm0_out mix 0 pcm0_in Switch' + name 'pcm0_out mix 0 media_loop2_in Switch' value false comment { access 'read write' @@ -141,7 +141,7 @@ state.bytcrrt5640 { } control.15 { iface MIXER - name 'pcm0_out mix 0 pcm1_in Switch' + name 'pcm0_out mix 0 pcm0_in Switch' value false comment { access 'read write' @@ -151,8 +151,8 @@ state.bytcrrt5640 { } control.16 { iface MIXER - name 'pcm1_out mix 0 codec_in0 Switch' - value true + name 'pcm0_out mix 0 pcm1_in Switch' + value false comment { access 'read write' type BOOLEAN @@ -161,8 +161,8 @@ state.bytcrrt5640 { } control.17 { iface MIXER - name 'pcm1_out mix 0 codec_in1 Switch' - value false + name 'pcm1_out mix 0 modem_in Switch' + value true comment { access 'read write' type BOOLEAN @@ -171,8 +171,8 @@ state.bytcrrt5640 { } control.18 { iface MIXER - name 'pcm1_out mix 0 sprot_loop_in Switch' - value false + name 'pcm1_out mix 0 codec_in0 Switch' + value true comment { access 'read write' type BOOLEAN @@ -181,7 +181,7 @@ state.bytcrrt5640 { } control.19 { iface MIXER - name 'pcm1_out mix 0 media_loop1_in Switch' + name 'pcm1_out mix 0 codec_in1 Switch' value false comment { access 'read write' @@ -191,7 +191,7 @@ state.bytcrrt5640 { } control.20 { iface MIXER - name 'pcm1_out mix 0 media_loop2_in Switch' + name 'pcm1_out mix 0 sprot_loop_in Switch' value false comment { access 'read write' @@ -201,7 +201,7 @@ state.bytcrrt5640 { } control.21 { iface MIXER - name 'pcm1_out mix 0 pcm0_in Switch' + name 'pcm1_out mix 0 media_loop1_in Switch' value false comment { access 'read write' @@ -211,7 +211,7 @@ state.bytcrrt5640 { } control.22 { iface MIXER - name 'pcm1_out mix 0 pcm1_in Switch' + name 'pcm1_out mix 0 media_loop2_in Switch' value false comment { access 'read write' @@ -221,7 +221,7 @@ state.bytcrrt5640 { } control.23 { iface MIXER - name 'pcm2_out mix 0 codec_in0 Switch' + name 'pcm1_out mix 0 pcm0_in Switch' value false comment { access 'read write' @@ -231,7 +231,7 @@ state.bytcrrt5640 { } control.24 { iface MIXER - name 'pcm2_out mix 0 codec_in1 Switch' + name 'pcm1_out mix 0 pcm1_in Switch' value false comment { access 'read write' @@ -241,7 +241,7 @@ state.bytcrrt5640 { } control.25 { iface MIXER - name 'pcm2_out mix 0 sprot_loop_in Switch' + name 'pcm2_out mix 0 modem_in Switch' value false comment { access 'read write' @@ -251,7 +251,7 @@ state.bytcrrt5640 { } control.26 { iface MIXER - name 'pcm2_out mix 0 media_loop1_in Switch' + name 'pcm2_out mix 0 codec_in0 Switch' value false comment { access 'read write' @@ -261,7 +261,7 @@ state.bytcrrt5640 { } control.27 { iface MIXER - name 'pcm2_out mix 0 media_loop2_in Switch' + name 'pcm2_out mix 0 codec_in1 Switch' value false comment { access 'read write' @@ -271,7 +271,7 @@ state.bytcrrt5640 { } control.28 { iface MIXER - name 'pcm2_out mix 0 pcm0_in Switch' + name 'pcm2_out mix 0 sprot_loop_in Switch' value false comment { access 'read write' @@ -281,7 +281,7 @@ state.bytcrrt5640 { } control.29 { iface MIXER - name 'pcm2_out mix 0 pcm1_in Switch' + name 'pcm2_out mix 0 media_loop1_in Switch' value false comment { access 'read write' @@ -291,7 +291,7 @@ state.bytcrrt5640 { } control.30 { iface MIXER - name 'sprot_loop_out mix 0 codec_in0 Switch' + name 'pcm2_out mix 0 media_loop2_in Switch' value false comment { access 'read write' @@ -301,7 +301,7 @@ state.bytcrrt5640 { } control.31 { iface MIXER - name 'sprot_loop_out mix 0 codec_in1 Switch' + name 'pcm2_out mix 0 pcm0_in Switch' value false comment { access 'read write' @@ -311,7 +311,7 @@ state.bytcrrt5640 { } control.32 { iface MIXER - name 'sprot_loop_out mix 0 sprot_loop_in Switch' + name 'pcm2_out mix 0 pcm1_in Switch' value false comment { access 'read write' @@ -321,7 +321,7 @@ state.bytcrrt5640 { } control.33 { iface MIXER - name 'sprot_loop_out mix 0 media_loop1_in Switch' + name 'sprot_loop_out mix 0 modem_in Switch' value false comment { access 'read write' @@ -331,7 +331,7 @@ state.bytcrrt5640 { } control.34 { iface MIXER - name 'sprot_loop_out mix 0 media_loop2_in Switch' + name 'sprot_loop_out mix 0 codec_in0 Switch' value false comment { access 'read write' @@ -341,7 +341,7 @@ state.bytcrrt5640 { } control.35 { iface MIXER - name 'sprot_loop_out mix 0 pcm0_in Switch' + name 'sprot_loop_out mix 0 codec_in1 Switch' value false comment { access 'read write' @@ -351,7 +351,7 @@ state.bytcrrt5640 { } control.36 { iface MIXER - name 'sprot_loop_out mix 0 pcm1_in Switch' + name 'sprot_loop_out mix 0 sprot_loop_in Switch' value false comment { access 'read write' @@ -361,7 +361,7 @@ state.bytcrrt5640 { } control.37 { iface MIXER - name 'media_loop1_out mix 0 codec_in0 Switch' + name 'sprot_loop_out mix 0 media_loop1_in Switch' value false comment { access 'read write' @@ -371,7 +371,7 @@ state.bytcrrt5640 { } control.38 { iface MIXER - name 'media_loop1_out mix 0 codec_in1 Switch' + name 'sprot_loop_out mix 0 media_loop2_in Switch' value false comment { access 'read write' @@ -381,7 +381,7 @@ state.bytcrrt5640 { } control.39 { iface MIXER - name 'media_loop1_out mix 0 sprot_loop_in Switch' + name 'sprot_loop_out mix 0 pcm0_in Switch' value false comment { access 'read write' @@ -391,7 +391,7 @@ state.bytcrrt5640 { } control.40 { iface MIXER - name 'media_loop1_out mix 0 media_loop1_in Switch' + name 'sprot_loop_out mix 0 pcm1_in Switch' value false comment { access 'read write' @@ -401,7 +401,7 @@ state.bytcrrt5640 { } control.41 { iface MIXER - name 'media_loop1_out mix 0 media_loop2_in Switch' + name 'media_loop1_out mix 0 modem_in Switch' value false comment { access 'read write' @@ -411,7 +411,7 @@ state.bytcrrt5640 { } control.42 { iface MIXER - name 'media_loop1_out mix 0 pcm0_in Switch' + name 'media_loop1_out mix 0 codec_in0 Switch' value false comment { access 'read write' @@ -421,7 +421,7 @@ state.bytcrrt5640 { } control.43 { iface MIXER - name 'media_loop1_out mix 0 pcm1_in Switch' + name 'media_loop1_out mix 0 codec_in1 Switch' value false comment { access 'read write' @@ -431,7 +431,7 @@ state.bytcrrt5640 { } control.44 { iface MIXER - name 'media_loop2_out mix 0 codec_in0 Switch' + name 'media_loop1_out mix 0 sprot_loop_in Switch' value false comment { access 'read write' @@ -441,7 +441,7 @@ state.bytcrrt5640 { } control.45 { iface MIXER - name 'media_loop2_out mix 0 codec_in1 Switch' + name 'media_loop1_out mix 0 media_loop1_in Switch' value false comment { access 'read write' @@ -451,7 +451,7 @@ state.bytcrrt5640 { } control.46 { iface MIXER - name 'media_loop2_out mix 0 sprot_loop_in Switch' + name 'media_loop1_out mix 0 media_loop2_in Switch' value false comment { access 'read write' @@ -461,7 +461,7 @@ state.bytcrrt5640 { } control.47 { iface MIXER - name 'media_loop2_out mix 0 media_loop1_in Switch' + name 'media_loop1_out mix 0 pcm0_in Switch' value false comment { access 'read write' @@ -471,7 +471,7 @@ state.bytcrrt5640 { } control.48 { iface MIXER - name 'media_loop2_out mix 0 media_loop2_in Switch' + name 'media_loop1_out mix 0 pcm1_in Switch' value false comment { access 'read write' @@ -481,7 +481,7 @@ state.bytcrrt5640 { } control.49 { iface MIXER - name 'media_loop2_out mix 0 pcm0_in Switch' + name 'media_loop2_out mix 0 modem_in Switch' value false comment { access 'read write' @@ -491,7 +491,7 @@ state.bytcrrt5640 { } control.50 { iface MIXER - name 'media_loop2_out mix 0 pcm1_in Switch' + name 'media_loop2_out mix 0 codec_in0 Switch' value false comment { access 'read write' @@ -501,7 +501,7 @@ state.bytcrrt5640 { } control.51 { iface MIXER - name 'codec_out0 mix 0 codec_in0 Switch' + name 'media_loop2_out mix 0 codec_in1 Switch' value false comment { access 'read write' @@ -511,7 +511,7 @@ state.bytcrrt5640 { } control.52 { iface MIXER - name 'codec_out0 mix 0 codec_in1 Switch' + name 'media_loop2_out mix 0 sprot_loop_in Switch' value false comment { access 'read write' @@ -521,7 +521,7 @@ state.bytcrrt5640 { } control.53 { iface MIXER - name 'codec_out0 mix 0 sprot_loop_in Switch' + name 'media_loop2_out mix 0 media_loop1_in Switch' value false comment { access 'read write' @@ -531,7 +531,7 @@ state.bytcrrt5640 { } control.54 { iface MIXER - name 'codec_out0 mix 0 media_loop1_in Switch' + name 'media_loop2_out mix 0 media_loop2_in Switch' value false comment { access 'read write' @@ -541,7 +541,7 @@ state.bytcrrt5640 { } control.55 { iface MIXER - name 'codec_out0 mix 0 media_loop2_in Switch' + name 'media_loop2_out mix 0 pcm0_in Switch' value false comment { access 'read write' @@ -551,8 +551,8 @@ state.bytcrrt5640 { } control.56 { iface MIXER - name 'codec_out0 mix 0 pcm0_in Switch' - value true + name 'media_loop2_out mix 0 pcm1_in Switch' + value false comment { access 'read write' type BOOLEAN @@ -561,7 +561,7 @@ state.bytcrrt5640 { } control.57 { iface MIXER - name 'codec_out0 mix 0 pcm1_in Switch' + name 'codec_out0 mix 0 modem_in Switch' value false comment { access 'read write' @@ -571,7 +571,7 @@ state.bytcrrt5640 { } control.58 { iface MIXER - name 'codec_out1 mix 0 codec_in0 Switch' + name 'codec_out0 mix 0 codec_in0 Switch' value false comment { access 'read write' @@ -581,7 +581,7 @@ state.bytcrrt5640 { } control.59 { iface MIXER - name 'codec_out1 mix 0 codec_in1 Switch' + name 'codec_out0 mix 0 codec_in1 Switch' value false comment { access 'read write' @@ -591,7 +591,7 @@ state.bytcrrt5640 { } control.60 { iface MIXER - name 'codec_out1 mix 0 sprot_loop_in Switch' + name 'codec_out0 mix 0 sprot_loop_in Switch' value false comment { access 'read write' @@ -601,7 +601,7 @@ state.bytcrrt5640 { } control.61 { iface MIXER - name 'codec_out1 mix 0 media_loop1_in Switch' + name 'codec_out0 mix 0 media_loop1_in Switch' value false comment { access 'read write' @@ -611,7 +611,7 @@ state.bytcrrt5640 { } control.62 { iface MIXER - name 'codec_out1 mix 0 media_loop2_in Switch' + name 'codec_out0 mix 0 media_loop2_in Switch' value false comment { access 'read write' @@ -621,8 +621,8 @@ state.bytcrrt5640 { } control.63 { iface MIXER - name 'codec_out1 mix 0 pcm0_in Switch' - value false + name 'codec_out0 mix 0 pcm0_in Switch' + value true comment { access 'read write' type BOOLEAN @@ -631,7 +631,7 @@ state.bytcrrt5640 { } control.64 { iface MIXER - name 'codec_out1 mix 0 pcm1_in Switch' + name 'codec_out0 mix 0 pcm1_in Switch' value false comment { access 'read write' @@ -641,19 +641,18 @@ state.bytcrrt5640 { } control.65 { iface MIXER - name 'media0_in Gain 0 Ramp Delay' - value 5 + name 'codec_out1 mix 0 modem_in Switch' + value false comment { access 'read write' - type INTEGER + type BOOLEAN count 1 - range '5 - 5000' } } control.66 { iface MIXER - name 'media0_in Gain 0 Switch' - value true + name 'codec_out1 mix 0 codec_in0 Switch' + value false comment { access 'read write' type BOOLEAN @@ -662,35 +661,28 @@ state.bytcrrt5640 { } control.67 { iface MIXER - name 'media0_in Gain 0 Volume' - value.0 0 - value.1 0 + name 'codec_out1 mix 0 codec_in1 Switch' + value false comment { access 'read write' - type INTEGER - count 2 - range '-1440 - 360' - dbmin -14400 - dbmax 3600 - dbvalue.0 0 - dbvalue.1 0 + type BOOLEAN + count 1 } } control.68 { iface MIXER - name 'media1_in Gain 0 Ramp Delay' - value 5 + name 'codec_out1 mix 0 sprot_loop_in Switch' + value false comment { access 'read write' - type INTEGER + type BOOLEAN count 1 - range '5 - 5000' } } control.69 { iface MIXER - name 'media1_in Gain 0 Switch' - value true + name 'codec_out1 mix 0 media_loop1_in Switch' + value false comment { access 'read write' type BOOLEAN @@ -699,34 +691,27 @@ state.bytcrrt5640 { } control.70 { iface MIXER - name 'media1_in Gain 0 Volume' - value.0 0 - value.1 0 + name 'codec_out1 mix 0 media_loop2_in Switch' + value false comment { access 'read write' - type INTEGER - count 2 - range '-1440 - 360' - dbmin -14400 - dbmax 3600 - dbvalue.0 0 - dbvalue.1 0 + type BOOLEAN + count 1 } } control.71 { iface MIXER - name 'media2_in Gain 0 Ramp Delay' - value 5 + name 'codec_out1 mix 0 pcm0_in Switch' + value false comment { access 'read write' - type INTEGER + type BOOLEAN count 1 - range '5 - 5000' } } control.72 { iface MIXER - name 'media2_in Gain 0 Switch' + name 'codec_out1 mix 0 pcm1_in Switch' value false comment { access 'read write' @@ -736,35 +721,28 @@ state.bytcrrt5640 { } control.73 { iface MIXER - name 'media2_in Gain 0 Volume' - value.0 -1440 - value.1 -1440 + name 'modem_out mix 0 modem_in Switch' + value false comment { access 'read write' - type INTEGER - count 2 - range '-1440 - 360' - dbmin -14400 - dbmax 3600 - dbvalue.0 -14400 - dbvalue.1 -14400 + type BOOLEAN + count 1 } } control.74 { iface MIXER - name 'media3_in Gain 0 Ramp Delay' - value 5 + name 'modem_out mix 0 codec_in0 Switch' + value false comment { access 'read write' - type INTEGER + type BOOLEAN count 1 - range '5 - 5000' } } control.75 { iface MIXER - name 'media3_in Gain 0 Switch' - value true + name 'modem_out mix 0 codec_in1 Switch' + value false comment { access 'read write' type BOOLEAN @@ -773,35 +751,28 @@ state.bytcrrt5640 { } control.76 { iface MIXER - name 'media3_in Gain 0 Volume' - value.0 0 - value.1 0 + name 'modem_out mix 0 sprot_loop_in Switch' + value false comment { access 'read write' - type INTEGER - count 2 - range '-1440 - 360' - dbmin -14400 - dbmax 3600 - dbvalue.0 0 - dbvalue.1 0 + type BOOLEAN + count 1 } } control.77 { iface MIXER - name 'pcm0_in Gain 0 Ramp Delay' - value 105 + name 'modem_out mix 0 media_loop1_in Switch' + value false comment { access 'read write' - type INTEGER + type BOOLEAN count 1 - range '5 - 5000' } } control.78 { iface MIXER - name 'pcm0_in Gain 0 Switch' - value true + name 'modem_out mix 0 media_loop2_in Switch' + value false comment { access 'read write' type BOOLEAN @@ -810,23 +781,27 @@ state.bytcrrt5640 { } control.79 { iface MIXER - name 'pcm0_in Gain 0 Volume' - value.0 0 - value.1 0 + name 'modem_out mix 0 pcm0_in Switch' + value true comment { access 'read write' - type INTEGER - count 2 - range '-1440 - 360' - dbmin -14400 - dbmax 3600 - dbvalue.0 0 - dbvalue.1 0 + type BOOLEAN + count 1 } } control.80 { iface MIXER - name 'pcm1_in Gain 0 Ramp Delay' + name 'modem_out mix 0 pcm1_in Switch' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.81 { + iface MIXER + name 'media0_in Gain 0 Ramp Delay' value 5 comment { access 'read write' @@ -835,21 +810,21 @@ state.bytcrrt5640 { range '5 - 5000' } } - control.81 { + control.82 { iface MIXER - name 'pcm1_in Gain 0 Switch' - value false + name 'media0_in Gain 0 Switch' + value true comment { access 'read write' type BOOLEAN count 1 } } - control.82 { + control.83 { iface MIXER - name 'pcm1_in Gain 0 Volume' - value.0 -1440 - value.1 -1440 + name 'media0_in Gain 0 Volume' + value.0 0 + value.1 0 comment { access 'read write' type INTEGER @@ -857,11 +832,196 @@ state.bytcrrt5640 { range '-1440 - 360' dbmin -14400 dbmax 3600 - dbvalue.0 -14400 - dbvalue.1 -14400 + dbvalue.0 0 + dbvalue.1 0 } } - control.83 { + control.84 { + iface MIXER + name 'media1_in Gain 0 Ramp Delay' + value 5 + comment { + access 'read write' + type INTEGER + count 1 + range '5 - 5000' + } + } + control.85 { + iface MIXER + name 'media1_in Gain 0 Switch' + value true + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.86 { + iface MIXER + name 'media1_in Gain 0 Volume' + value.0 0 + value.1 0 + comment { + access 'read write' + type INTEGER + count 2 + range '-1440 - 360' + dbmin -14400 + dbmax 3600 + dbvalue.0 0 + dbvalue.1 0 + } + } + control.87 { + iface MIXER + name 'media2_in Gain 0 Ramp Delay' + value 5 + comment { + access 'read write' + type INTEGER + count 1 + range '5 - 5000' + } + } + control.88 { + iface MIXER + name 'media2_in Gain 0 Switch' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.89 { + iface MIXER + name 'media2_in Gain 0 Volume' + value.0 -1440 + value.1 -1440 + comment { + access 'read write' + type INTEGER + count 2 + range '-1440 - 360' + dbmin -14400 + dbmax 3600 + dbvalue.0 -14400 + dbvalue.1 -14400 + } + } + control.90 { + iface MIXER + name 'media3_in Gain 0 Ramp Delay' + value 5 + comment { + access 'read write' + type INTEGER + count 1 + range '5 - 5000' + } + } + control.91 { + iface MIXER + name 'media3_in Gain 0 Switch' + value true + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.92 { + iface MIXER + name 'media3_in Gain 0 Volume' + value.0 0 + value.1 0 + comment { + access 'read write' + type INTEGER + count 2 + range '-1440 - 360' + dbmin -14400 + dbmax 3600 + dbvalue.0 0 + dbvalue.1 0 + } + } + control.93 { + iface MIXER + name 'pcm0_in Gain 0 Ramp Delay' + value 5 + comment { + access 'read write' + type INTEGER + count 1 + range '5 - 5000' + } + } + control.94 { + iface MIXER + name 'pcm0_in Gain 0 Switch' + value true + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.95 { + iface MIXER + name 'pcm0_in Gain 0 Volume' + value.0 0 + value.1 0 + comment { + access 'read write' + type INTEGER + count 2 + range '-1440 - 360' + dbmin -14400 + dbmax 3600 + dbvalue.0 0 + dbvalue.1 0 + } + } + control.96 { + iface MIXER + name 'pcm1_in Gain 0 Ramp Delay' + value 5 + comment { + access 'read write' + type INTEGER + count 1 + range '5 - 5000' + } + } + control.97 { + iface MIXER + name 'pcm1_in Gain 0 Switch' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.98 { + iface MIXER + name 'pcm1_in Gain 0 Volume' + value.0 -1440 + value.1 -1440 + comment { + access 'read write' + type INTEGER + count 2 + range '-1440 - 360' + dbmin -14400 + dbmax 3600 + dbvalue.0 -14400 + dbvalue.1 -14400 + } + } + control.99 { iface MIXER name 'pcm1_out Gain 0 Ramp Delay' value 5 @@ -872,7 +1032,7 @@ state.bytcrrt5640 { range '5 - 5000' } } - control.84 { + control.100 { iface MIXER name 'pcm1_out Gain 0 Switch' value true @@ -882,7 +1042,7 @@ state.bytcrrt5640 { count 1 } } - control.85 { + control.101 { iface MIXER name 'pcm1_out Gain 0 Volume' value.0 0 @@ -898,7 +1058,7 @@ state.bytcrrt5640 { dbvalue.1 0 } } - control.86 { + control.102 { iface MIXER name 'pcm2_out Gain 0 Ramp Delay' value 5 @@ -909,7 +1069,7 @@ state.bytcrrt5640 { range '5 - 5000' } } - control.87 { + control.103 { iface MIXER name 'pcm2_out Gain 0 Switch' value false @@ -919,7 +1079,7 @@ state.bytcrrt5640 { count 1 } } - control.88 { + control.104 { iface MIXER name 'pcm2_out Gain 0 Volume' value.0 -1440 @@ -935,7 +1095,7 @@ state.bytcrrt5640 { dbvalue.1 -14400 } } - control.89 { + control.105 { iface MIXER name 'codec_in0 Gain 0 Ramp Delay' value 5 @@ -946,7 +1106,7 @@ state.bytcrrt5640 { range '5 - 5000' } } - control.90 { + control.106 { iface MIXER name 'codec_in0 Gain 0 Switch' value true @@ -956,7 +1116,7 @@ state.bytcrrt5640 { count 1 } } - control.91 { + control.107 { iface MIXER name 'codec_in0 Gain 0 Volume' value.0 0 @@ -972,7 +1132,7 @@ state.bytcrrt5640 { dbvalue.1 0 } } - control.92 { + control.108 { iface MIXER name 'codec_in1 Gain 0 Ramp Delay' value 5 @@ -983,7 +1143,7 @@ state.bytcrrt5640 { range '5 - 5000' } } - control.93 { + control.109 { iface MIXER name 'codec_in1 Gain 0 Switch' value false @@ -993,7 +1153,7 @@ state.bytcrrt5640 { count 1 } } - control.94 { + control.110 { iface MIXER name 'codec_in1 Gain 0 Volume' value.0 -1440 @@ -1009,7 +1169,7 @@ state.bytcrrt5640 { dbvalue.1 -14400 } } - control.95 { + control.111 { iface MIXER name 'codec_out0 Gain 0 Ramp Delay' value 5 @@ -1020,7 +1180,7 @@ state.bytcrrt5640 { range '5 - 5000' } } - control.96 { + control.112 { iface MIXER name 'codec_out0 Gain 0 Switch' value true @@ -1030,7 +1190,7 @@ state.bytcrrt5640 { count 1 } } - control.97 { + control.113 { iface MIXER name 'codec_out0 Gain 0 Volume' value.0 0 @@ -1046,7 +1206,7 @@ state.bytcrrt5640 { dbvalue.1 0 } } - control.98 { + control.114 { iface MIXER name 'codec_out1 Gain 0 Ramp Delay' value 5 @@ -1057,7 +1217,7 @@ state.bytcrrt5640 { range '5 - 5000' } } - control.99 { + control.115 { iface MIXER name 'codec_out1 Gain 0 Switch' value false @@ -1067,7 +1227,7 @@ state.bytcrrt5640 { count 1 } } - control.100 { + control.116 { iface MIXER name 'codec_out1 Gain 0 Volume' value.0 -1440 @@ -1083,7 +1243,7 @@ state.bytcrrt5640 { dbvalue.1 -14400 } } - control.101 { + control.117 { iface MIXER name 'media_loop1_out Gain 0 Ramp Delay' value 5 @@ -1094,7 +1254,7 @@ state.bytcrrt5640 { range '5 - 5000' } } - control.102 { + control.118 { iface MIXER name 'media_loop1_out Gain 0 Switch' value false @@ -1104,7 +1264,7 @@ state.bytcrrt5640 { count 1 } } - control.103 { + control.119 { iface MIXER name 'media_loop1_out Gain 0 Volume' value.0 -1440 @@ -1120,7 +1280,7 @@ state.bytcrrt5640 { dbvalue.1 -14400 } } - control.104 { + control.120 { iface MIXER name 'media_loop2_out Gain 0 Ramp Delay' value 5 @@ -1131,7 +1291,7 @@ state.bytcrrt5640 { range '5 - 5000' } } - control.105 { + control.121 { iface MIXER name 'media_loop2_out Gain 0 Switch' value false @@ -1141,7 +1301,7 @@ state.bytcrrt5640 { count 1 } } - control.106 { + control.122 { iface MIXER name 'media_loop2_out Gain 0 Volume' value.0 -1440 @@ -1157,7 +1317,7 @@ state.bytcrrt5640 { dbvalue.1 -14400 } } - control.107 { + control.123 { iface MIXER name 'sprot_loop_out Gain 0 Ramp Delay' value 5 @@ -1168,7 +1328,7 @@ state.bytcrrt5640 { range '5 - 5000' } } - control.108 { + control.124 { iface MIXER name 'sprot_loop_out Gain 0 Switch' value false @@ -1178,7 +1338,7 @@ state.bytcrrt5640 { count 1 } } - control.109 { + control.125 { iface MIXER name 'sprot_loop_out Gain 0 Volume' value.0 -1440 @@ -1194,7 +1354,7 @@ state.bytcrrt5640 { dbvalue.1 -14400 } } - control.110 { + control.126 { iface MIXER name 'media0_in Volume 0 Ramp Delay' value 5 @@ -1205,7 +1365,7 @@ state.bytcrrt5640 { range '5 - 5000' } } - control.111 { + control.127 { iface MIXER name 'media0_in Volume 0 Switch' value false @@ -1215,7 +1375,7 @@ state.bytcrrt5640 { count 1 } } - control.112 { + control.128 { iface MIXER name 'media0_in Volume 0 Volume' value.0 -1440 @@ -1231,17 +1391,91 @@ state.bytcrrt5640 { dbvalue.1 -14400 } } - control.113 { + control.129 { iface MIXER - name 'media_loop1_out fir 0 params' - value '00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000' + name 'modem_in Gain 0 Ramp Delay' + value 5 comment { access 'read write' - type BYTES - count 274 - } - } - control.114 { + type INTEGER + count 1 + range '5 - 5000' + } + } + control.130 { + iface MIXER + name 'modem_in Gain 0 Switch' + value true + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.131 { + iface MIXER + name 'modem_in Gain 0 Volume' + value.0 0 + value.1 0 + comment { + access 'read write' + type INTEGER + count 2 + range '-1440 - 360' + dbmin -14400 + dbmax 3600 + dbvalue.0 0 + dbvalue.1 0 + } + } + control.132 { + iface MIXER + name 'modem_out Gain 0 Ramp Delay' + value 5 + comment { + access 'read write' + type INTEGER + count 1 + range '5 - 5000' + } + } + control.133 { + iface MIXER + name 'modem_out Gain 0 Switch' + value true + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.134 { + iface MIXER + name 'modem_out Gain 0 Volume' + value.0 0 + value.1 0 + comment { + access 'read write' + type INTEGER + count 2 + range '-1440 - 360' + dbmin -14400 + dbmax 3600 + dbvalue.0 0 + dbvalue.1 0 + } + } + control.135 { + iface MIXER + name 'media_loop1_out fir 0 params' + value '00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000' + comment { + access 'read write' + type BYTES + count 274 + } + } + control.136 { iface MIXER name 'media_loop1_out iir 0 params' value '0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000' @@ -1251,7 +1485,7 @@ state.bytcrrt5640 { count 302 } } - control.115 { + control.137 { iface MIXER name 'media_loop1_out mdrp 0 params' value '000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000' @@ -1261,7 +1495,7 @@ state.bytcrrt5640 { count 288 } } - control.116 { + control.138 { iface MIXER name 'media_loop2_out fir 0 params' value '00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000' @@ -1271,7 +1505,7 @@ state.bytcrrt5640 { count 274 } } - control.117 { + control.139 { iface MIXER name 'media_loop2_out iir 0 params' value '0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000' @@ -1281,7 +1515,7 @@ state.bytcrrt5640 { count 302 } } - control.118 { + control.140 { iface MIXER name 'media_loop2_out mdrp 0 params' value '000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000' @@ -1291,7 +1525,7 @@ state.bytcrrt5640 { count 288 } } - control.119 { + control.141 { iface MIXER name 'sprot_loop_out lpro 0 params' value '0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000' @@ -1301,7 +1535,7 @@ state.bytcrrt5640 { count 194 } } - control.120 { + control.142 { iface MIXER name 'codec_in0 dcr 0 params' value '000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000' @@ -1311,7 +1545,7 @@ state.bytcrrt5640 { count 54 } } - control.121 { + control.143 { iface MIXER name 'codec_in1 dcr 0 params' value '000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000' @@ -1321,7 +1555,7 @@ state.bytcrrt5640 { count 54 } } - control.122 { + control.144 { iface MIXER name 'codec_out tx interleaver slot 0' value codec_out0_0 @@ -1336,7 +1570,7 @@ state.bytcrrt5640 { item.4 codec_out1_1 } } - control.123 { + control.145 { iface MIXER name 'codec_out tx interleaver slot 1' value codec_out0_1 @@ -1351,7 +1585,7 @@ state.bytcrrt5640 { item.4 codec_out1_1 } } - control.124 { + control.146 { iface MIXER name 'codec_out tx interleaver slot 2' value codec_out1_0 @@ -1366,7 +1600,7 @@ state.bytcrrt5640 { item.4 codec_out1_1 } } - control.125 { + control.147 { iface MIXER name 'codec_out tx interleaver slot 3' value codec_out1_1 @@ -1381,7 +1615,7 @@ state.bytcrrt5640 { item.4 codec_out1_1 } } - control.126 { + control.148 { iface MIXER name 'codec_in rx deinterleaver codec_in0_0' value 'slot 0' @@ -1396,7 +1630,7 @@ state.bytcrrt5640 { item.4 'slot 3' } } - control.127 { + control.149 { iface MIXER name 'codec_in rx deinterleaver codec_in0_1' value 'slot 1' @@ -1411,7 +1645,7 @@ state.bytcrrt5640 { item.4 'slot 3' } } - control.128 { + control.150 { iface MIXER name 'codec_in rx deinterleaver codec_in1_0' value 'slot 2' @@ -1426,7 +1660,7 @@ state.bytcrrt5640 { item.4 'slot 3' } } - control.129 { + control.151 { iface MIXER name 'codec_in rx deinterleaver codec_in1_1' value 'slot 3' @@ -1441,7 +1675,7 @@ state.bytcrrt5640 { item.4 'slot 3' } } - control.130 { + control.152 { iface MIXER name 'Mono Playback Switch' value true @@ -1451,11 +1685,11 @@ state.bytcrrt5640 { count 1 } } - control.131 { + control.153 { iface MIXER name 'Mono DAC Playback Volume' - value.0 0 - value.1 0 + value.0 175 + value.1 175 comment { access 'read write' type INTEGER @@ -1463,11 +1697,11 @@ state.bytcrrt5640 { range '0 - 175' dbmin -65625 dbmax 0 - dbvalue.0 -65625 - dbvalue.1 -65625 + dbvalue.0 0 + dbvalue.1 0 } } - control.132 { + control.154 { iface MIXER name 'Speaker Channel Switch' value.0 true @@ -1478,7 +1712,7 @@ state.bytcrrt5640 { count 2 } } - control.133 { + control.155 { iface MIXER name 'Speaker Playback Volume' value.0 29 @@ -1494,7 +1728,7 @@ state.bytcrrt5640 { dbvalue.1 -300 } } - control.134 { + control.156 { iface MIXER name 'HP Channel Switch' value.0 true @@ -1505,11 +1739,11 @@ state.bytcrrt5640 { count 2 } } - control.135 { + control.157 { iface MIXER name 'HP Playback Volume' - value.0 0 - value.1 0 + value.0 29 + value.1 29 comment { access 'read write' type INTEGER @@ -1517,11 +1751,11 @@ state.bytcrrt5640 { range '0 - 39' dbmin -4650 dbmax 1200 - dbvalue.0 -4650 - dbvalue.1 -4650 + dbvalue.0 -300 + dbvalue.1 -300 } } - control.136 { + control.158 { iface MIXER name 'OUT Playback Switch' value.0 false @@ -1532,7 +1766,7 @@ state.bytcrrt5640 { count 2 } } - control.137 { + control.159 { iface MIXER name 'OUT Channel Switch' value.0 false @@ -1543,11 +1777,11 @@ state.bytcrrt5640 { count 2 } } - control.138 { + control.160 { iface MIXER name 'OUT Playback Volume' - value.0 25 - value.1 25 + value.0 31 + value.1 31 comment { access 'read write' type INTEGER @@ -1555,26 +1789,26 @@ state.bytcrrt5640 { range '0 - 39' dbmin -4650 dbmax 1200 - dbvalue.0 -900 - dbvalue.1 -900 + dbvalue.0 0 + dbvalue.1 0 } } - control.139 { + control.161 { iface MIXER name 'DAC2 Playback Switch' - value.0 false - value.1 false + value.0 true + value.1 true comment { access 'read write' type BOOLEAN count 2 } } - control.140 { + control.162 { iface MIXER name 'DAC1 Playback Volume' - value.0 174 - value.1 174 + value.0 175 + value.1 175 comment { access 'read write' type INTEGER @@ -1582,14 +1816,14 @@ state.bytcrrt5640 { range '0 - 175' dbmin -65625 dbmax 0 - dbvalue.0 -375 - dbvalue.1 -375 + dbvalue.0 0 + dbvalue.1 0 } } - control.141 { + control.163 { iface MIXER name 'IN1 Boost' - value 1 + value 0 comment { access 'read write' type INTEGER @@ -1597,13 +1831,13 @@ state.bytcrrt5640 { range '0 - 8' dbmin 0 dbmax 5200 - dbvalue.0 2000 + dbvalue.0 0 } } - control.142 { + control.164 { iface MIXER name 'IN2 Boost' - value 1 + value 0 comment { access 'read write' type INTEGER @@ -1611,13 +1845,13 @@ state.bytcrrt5640 { range '0 - 8' dbmin 0 dbmax 5200 - dbvalue.0 2000 + dbvalue.0 0 } } - control.143 { + control.165 { iface MIXER name 'IN3 Boost' - value 0 + value 8 comment { access 'read write' type INTEGER @@ -1625,1405 +1859,10 @@ state.bytcrrt5640 { range '0 - 8' dbmin 0 dbmax 5200 - dbvalue.0 0 - } - } - control.144 { - iface MIXER - name 'IN Capture Volume' - value.0 23 - value.1 23 - comment { - access 'read write' - type INTEGER - count 2 - range '0 - 31' - dbmin -3450 - dbmax 1200 - dbvalue.0 0 - dbvalue.1 0 - } - } - control.145 { - iface MIXER - name 'ADC Capture Switch' - value.0 true - value.1 true - comment { - access 'read write' - type BOOLEAN - count 2 - } - } - control.146 { - iface MIXER - name 'ADC Capture Volume' - value.0 47 - value.1 47 - comment { - access 'read write' - type INTEGER - count 2 - range '0 - 127' - dbmin -17625 - dbmax 30000 - dbvalue.0 0 - dbvalue.1 0 - } - } - control.147 { - iface MIXER - name 'Mono ADC Capture Volume' - value.0 47 - value.1 47 - comment { - access 'read write' - type INTEGER - count 2 - range '0 - 127' - dbmin -17625 - dbmax 30000 - dbvalue.0 0 - dbvalue.1 0 - } - } - control.148 { - iface MIXER - name 'ADC Boost Gain' - value.0 0 - value.1 0 - comment { - access 'read write' - type INTEGER - count 2 - range '0 - 3' - dbmin 0 - dbmax 3600 - dbvalue.0 0 - dbvalue.1 0 + dbvalue.0 5200 } } - control.149 { - iface MIXER - name 'Class D SPK Ratio Control' - value '2.77x' - comment { - access 'read write' - type ENUMERATED - count 1 - item.0 '1.66x' - item.1 '1.83x' - item.2 '1.94x' - item.3 '2x' - item.4 '2.11x' - item.5 '2.22x' - item.6 '2.33x' - item.7 '2.44x' - item.8 '2.55x' - item.9 '2.66x' - item.10 '2.77x' - } - } - control.150 { - iface MIXER - name 'ADC IF1 Data Switch' - value Normal - comment { - access 'read write' - type ENUMERATED - count 1 - item.0 Normal - item.1 'left copy to right' - item.2 'right copy to left' - item.3 Swap - } - } - control.151 { - iface MIXER - name 'DAC IF1 Data Switch' - value Normal - comment { - access 'read write' - type ENUMERATED - count 1 - item.0 Normal - item.1 'left copy to right' - item.2 'right copy to left' - item.3 Swap - } - } - control.152 { - iface MIXER - name 'ADC IF2 Data Switch' - value Normal - comment { - access 'read write' - type ENUMERATED - count 1 - item.0 Normal - item.1 'left copy to right' - item.2 'right copy to left' - item.3 Swap - } - } - control.153 { - iface MIXER - name 'DAC IF2 Data Switch' - value Normal - comment { - access 'read write' - type ENUMERATED - count 1 - item.0 Normal - item.1 'left copy to right' - item.2 'right copy to left' - item.3 Swap - } - } - control.154 { - iface MIXER - name 'Headphone Switch' - value true - comment { - access 'read write' - type BOOLEAN - count 1 - } - } - control.155 { - iface MIXER - name 'Headset Mic Switch' - value true - comment { - access 'read write' - type BOOLEAN - count 1 - } - } - control.156 { - iface MIXER - name 'Internal Mic Switch' - value false - comment { - access 'read write' - type BOOLEAN - count 1 - } - } - control.157 { - iface MIXER - name 'Speaker Switch' - value true - comment { - access 'read write' - type BOOLEAN - count 1 - } - } - control.158 { - iface MIXER - name 'RECMIXL HPOL Switch' - value false - comment { - access 'read write' - type BOOLEAN - count 1 - } - } - control.159 { - iface MIXER - name 'RECMIXL INL Switch' - value false - comment { - access 'read write' - type BOOLEAN - count 1 - } - } - control.160 { - iface MIXER - name 'RECMIXL BST3 Switch' - value false - comment { - access 'read write' - type BOOLEAN - count 1 - } - } - control.161 { - iface MIXER - name 'RECMIXL BST2 Switch' - value true - comment { - access 'read write' - type BOOLEAN - count 1 - } - } - control.162 { - iface MIXER - name 'RECMIXL BST1 Switch' - value true - comment { - access 'read write' - type BOOLEAN - count 1 - } - } - control.163 { - iface MIXER - name 'RECMIXL OUT MIXL Switch' - value false - comment { - access 'read write' - type BOOLEAN - count 1 - } - } - control.164 { - iface MIXER - name 'RECMIXR HPOR Switch' - value false - comment { - access 'read write' - type BOOLEAN - count 1 - } - } - control.165 { - iface MIXER - name 'RECMIXR INR Switch' - value false - comment { - access 'read write' - type BOOLEAN - count 1 - } - } - control.166 { - iface MIXER - name 'RECMIXR BST3 Switch' - value false - comment { - access 'read write' - type BOOLEAN - count 1 - } - } - control.167 { - iface MIXER - name 'RECMIXR BST2 Switch' - value true - comment { - access 'read write' - type BOOLEAN - count 1 - } - } - control.168 { - iface MIXER - name 'RECMIXR BST1 Switch' - value true - comment { - access 'read write' - type BOOLEAN - count 1 - } - } - control.169 { - iface MIXER - name 'RECMIXR OUT MIXR Switch' - value false - comment { - access 'read write' - type BOOLEAN - count 1 - } - } - control.170 { - iface MIXER - name 'Stereo ADC2 Mux' - value DMIC1 - comment { - access 'read write' - type ENUMERATED - count 1 - item.0 DMIC1 - item.1 DMIC2 - item.2 'DIG MIX' - } - } - control.171 { - iface MIXER - name 'Stereo ADC1 Mux' - value ADC - comment { - access 'read write' - type ENUMERATED - count 1 - item.0 'DIG MIX' - item.1 ADC - } - } - control.172 { - iface MIXER - name 'Mono ADC L2 Mux' - value 'DMIC L1' - comment { - access 'read write' - type ENUMERATED - count 1 - item.0 'DMIC L1' - item.1 'DMIC L2' - item.2 'Mono DAC MIXL' - } - } - control.173 { - iface MIXER - name 'Mono ADC L1 Mux' - value ADCL - comment { - access 'read write' - type ENUMERATED - count 1 - item.0 'Mono DAC MIXL' - item.1 ADCL - } - } - control.174 { - iface MIXER - name 'Mono ADC R1 Mux' - value ADCR - comment { - access 'read write' - type ENUMERATED - count 1 - item.0 'Mono DAC MIXR' - item.1 ADCR - } - } - control.175 { - iface MIXER - name 'Mono ADC R2 Mux' - value 'DMIC R1' - comment { - access 'read write' - type ENUMERATED - count 1 - item.0 'DMIC R1' - item.1 'DMIC R2' - item.2 'Mono DAC MIXR' - } - } - control.176 { - iface MIXER - name 'Stereo ADC MIXL ADC1 Switch' - value true - comment { - access 'read write' - type BOOLEAN - count 1 - } - } - control.177 { - iface MIXER - name 'Stereo ADC MIXL ADC2 Switch' - value true - comment { - access 'read write' - type BOOLEAN - count 1 - } - } - control.178 { - iface MIXER - name 'Stereo ADC MIXR ADC1 Switch' - value true - comment { - access 'read write' - type BOOLEAN - count 1 - } - } - control.179 { - iface MIXER - name 'Stereo ADC MIXR ADC2 Switch' - value true - comment { - access 'read write' - type BOOLEAN - count 1 - } - } - control.180 { - iface MIXER - name 'Mono ADC MIXL ADC1 Switch' - value false - comment { - access 'read write' - type BOOLEAN - count 1 - } - } - control.181 { - iface MIXER - name 'Mono ADC MIXL ADC2 Switch' - value false - comment { - access 'read write' - type BOOLEAN - count 1 - } - } - control.182 { - iface MIXER - name 'Mono ADC MIXR ADC1 Switch' - value false - comment { - access 'read write' - type BOOLEAN - count 1 - } - } - control.183 { - iface MIXER - name 'Mono ADC MIXR ADC2 Switch' - value false - comment { - access 'read write' - type BOOLEAN - count 1 - } - } - control.184 { - iface MIXER - name 'DAI select' - value '1:1|2:2' - comment { - access 'read write' - type ENUMERATED - count 1 - item.0 '1:1|2:2' - item.1 '1:2|2:1' - item.2 '1:1|2:1' - item.3 '1:2|2:2' - } - } - control.185 { - iface MIXER - name 'SDI select' - value IF1 - comment { - access 'read write' - type ENUMERATED - count 1 - item.0 IF1 - item.1 IF2 - } - } - control.186 { - iface MIXER - name 'DAC MIXL Stereo ADC Switch' - value false - comment { - access 'read write' - type BOOLEAN - count 1 - } - } - control.187 { - iface MIXER - name 'DAC MIXL INF1 Switch' - value true - comment { - access 'read write' - type BOOLEAN - count 1 - } - } - control.188 { - iface MIXER - name 'DAC MIXR Stereo ADC Switch' - value false - comment { - access 'read write' - type BOOLEAN - count 1 - } - } - control.189 { - iface MIXER - name 'DAC MIXR INF1 Switch' - value true - comment { - access 'read write' - type BOOLEAN - count 1 - } - } - control.190 { - iface MIXER - name 'Mono DAC MIXL DAC L1 Switch' - value false - comment { - access 'read write' - type BOOLEAN - count 1 - } - } - control.191 { - iface MIXER - name 'Mono DAC MIXL DAC L2 Switch' - value false - comment { - access 'read write' - type BOOLEAN - count 1 - } - } - control.192 { - iface MIXER - name 'Mono DAC MIXL DAC R2 Switch' - value false - comment { - access 'read write' - type BOOLEAN - count 1 - } - } - control.193 { - iface MIXER - name 'Mono DAC MIXR DAC R1 Switch' - value false - comment { - access 'read write' - type BOOLEAN - count 1 - } - } - control.194 { - iface MIXER - name 'Mono DAC MIXR DAC R2 Switch' - value false - comment { - access 'read write' - type BOOLEAN - count 1 - } - } - control.195 { - iface MIXER - name 'Mono DAC MIXR DAC L2 Switch' - value false - comment { - access 'read write' - type BOOLEAN - count 1 - } - } - control.196 { - iface MIXER - name 'DIG MIXL DAC L1 Switch' - value false - comment { - access 'read write' - type BOOLEAN - count 1 - } - } - control.197 { - iface MIXER - name 'DIG MIXL DAC L2 Switch' - value false - comment { - access 'read write' - type BOOLEAN - count 1 - } - } - control.198 { - iface MIXER - name 'DIG MIXR DAC R1 Switch' - value false - comment { - access 'read write' - type BOOLEAN - count 1 - } - } - control.199 { - iface MIXER - name 'DIG MIXR DAC R2 Switch' - value false - comment { - access 'read write' - type BOOLEAN - count 1 - } - } - control.200 { - iface MIXER - name 'SPK MIXL REC MIXL Switch' - value false - comment { - access 'read write' - type BOOLEAN - count 1 - } - } - control.201 { - iface MIXER - name 'SPK MIXL INL Switch' - value false - comment { - access 'read write' - type BOOLEAN - count 1 - } - } - control.202 { - iface MIXER - name 'SPK MIXL DAC L1 Switch' - value true - comment { - access 'read write' - type BOOLEAN - count 1 - } - } - control.203 { - iface MIXER - name 'SPK MIXL DAC L2 Switch' - value false - comment { - access 'read write' - type BOOLEAN - count 1 - } - } - control.204 { - iface MIXER - name 'SPK MIXL OUT MIXL Switch' - value false - comment { - access 'read write' - type BOOLEAN - count 1 - } - } - control.205 { - iface MIXER - name 'SPK MIXR REC MIXR Switch' - value false - comment { - access 'read write' - type BOOLEAN - count 1 - } - } - control.206 { - iface MIXER - name 'SPK MIXR INR Switch' - value false - comment { - access 'read write' - type BOOLEAN - count 1 - } - } - control.207 { - iface MIXER - name 'SPK MIXR DAC R1 Switch' - value true - comment { - access 'read write' - type BOOLEAN - count 1 - } - } - control.208 { - iface MIXER - name 'SPK MIXR DAC R2 Switch' - value false - comment { - access 'read write' - type BOOLEAN - count 1 - } - } - control.209 { - iface MIXER - name 'SPK MIXR OUT MIXR Switch' - value false - comment { - access 'read write' - type BOOLEAN - count 1 - } - } - control.210 { - iface MIXER - name 'SPOL MIX DAC R1 Switch' - value true - comment { - access 'read write' - type BOOLEAN - count 1 - } - } - control.211 { - iface MIXER - name 'SPOL MIX DAC L1 Switch' - value false - comment { - access 'read write' - type BOOLEAN - count 1 - } - } - control.212 { - iface MIXER - name 'SPOL MIX SPKVOL R Switch' - value false - comment { - access 'read write' - type BOOLEAN - count 1 - } - } - control.213 { - iface MIXER - name 'SPOL MIX SPKVOL L Switch' - value true - comment { - access 'read write' - type BOOLEAN - count 1 - } - } - control.214 { - iface MIXER - name 'SPOL MIX BST1 Switch' - value false - comment { - access 'read write' - type BOOLEAN - count 1 - } - } - control.215 { - iface MIXER - name 'SPOR MIX DAC R1 Switch' - value true - comment { - access 'read write' - type BOOLEAN - count 1 - } - } - control.216 { - iface MIXER - name 'SPOR MIX SPKVOL R Switch' - value true - comment { - access 'read write' - type BOOLEAN - count 1 - } - } - control.217 { - iface MIXER - name 'SPOR MIX BST1 Switch' - value false - comment { - access 'read write' - type BOOLEAN - count 1 - } - } - control.218 { - iface MIXER - name 'LOUT MIX DAC L1 Switch' - value false - comment { - access 'read write' - type BOOLEAN - count 1 - } - } - control.219 { - iface MIXER - name 'LOUT MIX DAC R1 Switch' - value false - comment { - access 'read write' - type BOOLEAN - count 1 - } - } - control.220 { - iface MIXER - name 'LOUT MIX OUTVOL L Switch' - value false - comment { - access 'read write' - type BOOLEAN - count 1 - } - } - control.221 { - iface MIXER - name 'LOUT MIX OUTVOL R Switch' - value false - comment { - access 'read write' - type BOOLEAN - count 1 - } - } - control.222 { - iface MIXER - name 'Speaker L Playback Switch' - value true - comment { - access 'read write' - type BOOLEAN - count 1 - } - } - control.223 { - iface MIXER - name 'Speaker R Playback Switch' - value true - comment { - access 'read write' - type BOOLEAN - count 1 - } - } - control.224 { - iface MIXER - name 'HP L Playback Switch' - value true - comment { - access 'read write' - type BOOLEAN - count 1 - } - } - control.225 { - iface MIXER - name 'HP R Playback Switch' - value true - comment { - access 'read write' - type BOOLEAN - count 1 - } - } - control.226 { - iface MIXER - name 'DAC L2 Mux' - value IF2 - comment { - access 'read write' - type ENUMERATED - count 1 - item.0 IF2 - item.1 'Base L/R' - } - } - control.227 { - iface MIXER - name 'DAC R2 Mux' - value IF2 - comment { - access 'read write' - type ENUMERATED - count 1 - item.0 IF2 - } - } - control.228 { - iface MIXER - name 'Stereo DAC MIXL DAC L1 Switch' - value true - comment { - access 'read write' - type BOOLEAN - count 1 - } - } - control.229 { - iface MIXER - name 'Stereo DAC MIXL DAC L2 Switch' - value true - comment { - access 'read write' - type BOOLEAN - count 1 - } - } - control.230 { - iface MIXER - name 'Stereo DAC MIXL ANC Switch' - value false - comment { - access 'read write' - type BOOLEAN - count 1 - } - } - control.231 { - iface MIXER - name 'Stereo DAC MIXR DAC R1 Switch' - value true - comment { - access 'read write' - type BOOLEAN - count 1 - } - } - control.232 { - iface MIXER - name 'Stereo DAC MIXR DAC R2 Switch' - value false - comment { - access 'read write' - type BOOLEAN - count 1 - } - } - control.233 { - iface MIXER - name 'Stereo DAC MIXR ANC Switch' - value false - comment { - access 'read write' - type BOOLEAN - count 1 - } - } - control.234 { - iface MIXER - name 'OUT MIXL SPK MIXL Switch' - value false - comment { - access 'read write' - type BOOLEAN - count 1 - } - } - control.235 { - iface MIXER - name 'OUT MIXL BST1 Switch' - value false - comment { - access 'read write' - type BOOLEAN - count 1 - } - } - control.236 { - iface MIXER - name 'OUT MIXL INL Switch' - value false - comment { - access 'read write' - type BOOLEAN - count 1 - } - } - control.237 { - iface MIXER - name 'OUT MIXL REC MIXL Switch' - value false - comment { - access 'read write' - type BOOLEAN - count 1 - } - } - control.238 { - iface MIXER - name 'OUT MIXL DAC R2 Switch' - value false - comment { - access 'read write' - type BOOLEAN - count 1 - } - } - control.239 { - iface MIXER - name 'OUT MIXL DAC L2 Switch' - value false - comment { - access 'read write' - type BOOLEAN - count 1 - } - } - control.240 { - iface MIXER - name 'OUT MIXL DAC L1 Switch' - value true - comment { - access 'read write' - type BOOLEAN - count 1 - } - } - control.241 { - iface MIXER - name 'OUT MIXR SPK MIXR Switch' - value false - comment { - access 'read write' - type BOOLEAN - count 1 - } - } - control.242 { - iface MIXER - name 'OUT MIXR BST2 Switch' - value false - comment { - access 'read write' - type BOOLEAN - count 1 - } - } - control.243 { - iface MIXER - name 'OUT MIXR BST1 Switch' - value false - comment { - access 'read write' - type BOOLEAN - count 1 - } - } - control.244 { - iface MIXER - name 'OUT MIXR INR Switch' - value false - comment { - access 'read write' - type BOOLEAN - count 1 - } - } - control.245 { - iface MIXER - name 'OUT MIXR REC MIXR Switch' - value false - comment { - access 'read write' - type BOOLEAN - count 1 - } - } - control.246 { - iface MIXER - name 'OUT MIXR DAC L2 Switch' - value false - comment { - access 'read write' - type BOOLEAN - count 1 - } - } - control.247 { - iface MIXER - name 'OUT MIXR DAC R2 Switch' - value false - comment { - access 'read write' - type BOOLEAN - count 1 - } - } - control.248 { - iface MIXER - name 'OUT MIXR DAC R1 Switch' - value true - comment { - access 'read write' - type BOOLEAN - count 1 - } - } - control.249 { - iface MIXER - name 'HPO MIX DAC2 Switch' - value false - comment { - access 'read write' - type BOOLEAN - count 1 - } - } - control.250 { - iface MIXER - name 'HPO MIX DAC1 Switch' - value true - comment { - access 'read write' - type BOOLEAN - count 1 - } - } - control.251 { - iface MIXER - name 'HPO MIX HPVOL Switch' - value true - comment { - access 'read write' - type BOOLEAN - count 1 - } - } - control.252 { - iface MIXER - name 'Mono MIX DAC R2 Switch' - value false - comment { - access 'read write' - type BOOLEAN - count 1 - } - } - control.253 { - iface MIXER - name 'Mono MIX DAC L2 Switch' - value false - comment { - access 'read write' - type BOOLEAN - count 1 - } - } - control.254 { - iface MIXER - name 'Mono MIX OUTVOL R Switch' - value false - comment { - access 'read write' - type BOOLEAN - count 1 - } - } - control.255 { - iface MIXER - name 'Mono MIX OUTVOL L Switch' - value false - comment { - access 'read write' - type BOOLEAN - count 1 - } - } - control.256 { - iface MIXER - name 'Mono MIX BST1 Switch' - value false - comment { - access 'read write' - type BOOLEAN - count 1 - } - } -} -state.bytrt5640 { - control.1 { - iface MIXER - name 'Mono Playback Switch' - value true - comment { - access 'read write' - type BOOLEAN - count 1 - } - } - control.2 { - iface MIXER - name 'Mono DAC Playback Volume' - value.0 175 - value.1 175 - comment { - access 'read write' - type INTEGER - count 2 - range '0 - 175' - dbmin -65625 - dbmax 0 - dbvalue.0 0 - dbvalue.1 0 - } - } - control.3 { - iface MIXER - name 'Speaker Channel Switch' - value.0 true - value.1 true - comment { - access 'read write' - type BOOLEAN - count 2 - } - } - control.4 { - iface MIXER - name 'Speaker Playback Volume' - value.0 0 - value.1 0 - comment { - access 'read write' - type INTEGER - count 2 - range '0 - 39' - dbmin -4650 - dbmax 1200 - dbvalue.0 -4650 - dbvalue.1 -4650 - } - } - control.5 { - iface MIXER - name 'HP Channel Switch' - value.0 true - value.1 true - comment { - access 'read write' - type BOOLEAN - count 2 - } - } - control.6 { - iface MIXER - name 'HP Playback Volume' - value.0 31 - value.1 31 - comment { - access 'read write' - type INTEGER - count 2 - range '0 - 39' - dbmin -4650 - dbmax 1200 - dbvalue.0 0 - dbvalue.1 0 - } - } - control.7 { - iface MIXER - name 'OUT Playback Switch' - value.0 true - value.1 true - comment { - access 'read write' - type BOOLEAN - count 2 - } - } - control.8 { - iface MIXER - name 'OUT Channel Switch' - value.0 true - value.1 true - comment { - access 'read write' - type BOOLEAN - count 2 - } - } - control.9 { - iface MIXER - name 'OUT Playback Volume' - value.0 31 - value.1 31 - comment { - access 'read write' - type INTEGER - count 2 - range '0 - 39' - dbmin -4650 - dbmax 1200 - dbvalue.0 0 - dbvalue.1 0 - } - } - control.10 { - iface MIXER - name 'DAC2 Playback Switch' - value.0 true - value.1 true - comment { - access 'read write' - type BOOLEAN - count 2 - } - } - control.11 { - iface MIXER - name 'DAC1 Playback Volume' - value.0 175 - value.1 175 - comment { - access 'read write' - type INTEGER - count 2 - range '0 - 175' - dbmin -65625 - dbmax 0 - dbvalue.0 0 - dbvalue.1 0 - } - } - control.12 { - iface MIXER - name 'IN1 Boost' - value 0 - comment { - access 'read write' - type INTEGER - count 1 - range '0 - 8' - dbmin 0 - dbmax 5200 - dbvalue.0 0 - } - } - control.13 { - iface MIXER - name 'IN2 Boost' - value 0 - comment { - access 'read write' - type INTEGER - count 1 - range '0 - 8' - dbmin 0 - dbmax 5200 - dbvalue.0 0 - } - } - control.14 { - iface MIXER - name 'IN3 Boost' - value 0 - comment { - access 'read write' - type INTEGER - count 1 - range '0 - 8' - dbmin 0 - dbmax 5200 - dbvalue.0 0 - } - } - control.15 { + control.166 { iface MIXER name 'IN Capture Volume' value.0 23 @@ -3039,7 +1878,7 @@ state.bytrt5640 { dbvalue.1 0 } } - control.16 { + control.167 { iface MIXER name 'ADC Capture Switch' value.0 true @@ -3050,7 +1889,7 @@ state.bytrt5640 { count 2 } } - control.17 { + control.168 { iface MIXER name 'ADC Capture Volume' value.0 47 @@ -3066,7 +1905,18 @@ state.bytrt5640 { dbvalue.1 0 } } - control.18 { + control.169 { + iface MIXER + name 'Mono ADC Capture Switch' + value.0 true + value.1 true + comment { + access 'read write' + type BOOLEAN + count 2 + } + } + control.170 { iface MIXER name 'Mono ADC Capture Volume' value.0 47 @@ -3082,7 +1932,7 @@ state.bytrt5640 { dbvalue.1 0 } } - control.19 { + control.171 { iface MIXER name 'ADC Boost Gain' value.0 0 @@ -3098,7 +1948,7 @@ state.bytrt5640 { dbvalue.1 0 } } - control.20 { + control.172 { iface MIXER name 'Class D SPK Ratio Control' value '2.77x' @@ -3119,7 +1969,7 @@ state.bytrt5640 { item.10 '2.77x' } } - control.21 { + control.173 { iface MIXER name 'ADC IF1 Data Switch' value Normal @@ -3133,7 +1983,7 @@ state.bytrt5640 { item.3 'right copy to left' } } - control.22 { + control.174 { iface MIXER name 'DAC IF1 Data Switch' value Normal @@ -3147,7 +1997,7 @@ state.bytrt5640 { item.3 'right copy to left' } } - control.23 { + control.175 { iface MIXER name 'ADC IF2 Data Switch' value Normal @@ -3161,7 +2011,7 @@ state.bytrt5640 { item.3 'right copy to left' } } - control.24 { + control.176 { iface MIXER name 'DAC IF2 Data Switch' value Normal @@ -3175,7 +2025,7 @@ state.bytrt5640 { item.3 'right copy to left' } } - control.25 { + control.177 { iface MIXER name 'Headphone Switch' value true @@ -3185,7 +2035,7 @@ state.bytrt5640 { count 1 } } - control.26 { + control.178 { iface MIXER name 'Headset Mic Switch' value true @@ -3195,7 +2045,7 @@ state.bytrt5640 { count 1 } } - control.27 { + control.179 { iface MIXER name 'Internal Mic Switch' value true @@ -3205,7 +2055,7 @@ state.bytrt5640 { count 1 } } - control.28 { + control.180 { iface MIXER name 'Speaker Switch' value true @@ -3215,7 +2065,7 @@ state.bytrt5640 { count 1 } } - control.29 { + control.181 { iface MIXER name 'RECMIXL HPOL Switch' value false @@ -3225,7 +2075,7 @@ state.bytrt5640 { count 1 } } - control.30 { + control.182 { iface MIXER name 'RECMIXL INL Switch' value false @@ -3235,27 +2085,27 @@ state.bytrt5640 { count 1 } } - control.31 { + control.183 { iface MIXER name 'RECMIXL BST3 Switch' - value false + value true comment { access 'read write' type BOOLEAN count 1 } } - control.32 { + control.184 { iface MIXER name 'RECMIXL BST2 Switch' - value false + value true comment { access 'read write' type BOOLEAN count 1 } } - control.33 { + control.185 { iface MIXER name 'RECMIXL BST1 Switch' value false @@ -3265,7 +2115,7 @@ state.bytrt5640 { count 1 } } - control.34 { + control.186 { iface MIXER name 'RECMIXL OUT MIXL Switch' value false @@ -3275,7 +2125,7 @@ state.bytrt5640 { count 1 } } - control.35 { + control.187 { iface MIXER name 'RECMIXR HPOR Switch' value false @@ -3285,7 +2135,7 @@ state.bytrt5640 { count 1 } } - control.36 { + control.188 { iface MIXER name 'RECMIXR INR Switch' value false @@ -3295,27 +2145,27 @@ state.bytrt5640 { count 1 } } - control.37 { + control.189 { iface MIXER name 'RECMIXR BST3 Switch' - value false + value true comment { access 'read write' type BOOLEAN count 1 } } - control.38 { + control.190 { iface MIXER name 'RECMIXR BST2 Switch' - value false + value true comment { access 'read write' type BOOLEAN count 1 } } - control.39 { + control.191 { iface MIXER name 'RECMIXR BST1 Switch' value false @@ -3325,7 +2175,7 @@ state.bytrt5640 { count 1 } } - control.40 { + control.192 { iface MIXER name 'RECMIXR OUT MIXR Switch' value false @@ -3335,7 +2185,7 @@ state.bytrt5640 { count 1 } } - control.41 { + control.193 { iface MIXER name 'Stereo ADC2 Mux' value DMIC1 @@ -3348,7 +2198,7 @@ state.bytrt5640 { item.2 'DIG MIX' } } - control.42 { + control.194 { iface MIXER name 'Stereo ADC1 Mux' value ADC @@ -3360,7 +2210,7 @@ state.bytrt5640 { item.1 ADC } } - control.43 { + control.195 { iface MIXER name 'Mono ADC L2 Mux' value 'DMIC L1' @@ -3373,7 +2223,7 @@ state.bytrt5640 { item.2 'Mono DAC MIXL' } } - control.44 { + control.196 { iface MIXER name 'Mono ADC L1 Mux' value ADCL @@ -3385,7 +2235,7 @@ state.bytrt5640 { item.1 ADCL } } - control.45 { + control.197 { iface MIXER name 'Mono ADC R1 Mux' value ADCR @@ -3397,7 +2247,7 @@ state.bytrt5640 { item.1 ADCR } } - control.46 { + control.198 { iface MIXER name 'Mono ADC R2 Mux' value 'DMIC R1' @@ -3410,17 +2260,17 @@ state.bytrt5640 { item.2 'Mono DAC MIXR' } } - control.47 { + control.199 { iface MIXER name 'Stereo ADC MIXL ADC1 Switch' - value false + value true comment { access 'read write' type BOOLEAN count 1 } } - control.48 { + control.200 { iface MIXER name 'Stereo ADC MIXL ADC2 Switch' value false @@ -3430,17 +2280,17 @@ state.bytrt5640 { count 1 } } - control.49 { + control.201 { iface MIXER name 'Stereo ADC MIXR ADC1 Switch' - value false + value true comment { access 'read write' type BOOLEAN count 1 } } - control.50 { + control.202 { iface MIXER name 'Stereo ADC MIXR ADC2 Switch' value false @@ -3450,17 +2300,17 @@ state.bytrt5640 { count 1 } } - control.51 { + control.203 { iface MIXER name 'Mono ADC MIXL ADC1 Switch' - value false + value true comment { access 'read write' type BOOLEAN count 1 } } - control.52 { + control.204 { iface MIXER name 'Mono ADC MIXL ADC2 Switch' value false @@ -3470,17 +2320,17 @@ state.bytrt5640 { count 1 } } - control.53 { + control.205 { iface MIXER name 'Mono ADC MIXR ADC1 Switch' - value false + value true comment { access 'read write' type BOOLEAN count 1 } } - control.54 { + control.206 { iface MIXER name 'Mono ADC MIXR ADC2 Switch' value false @@ -3490,7 +2340,7 @@ state.bytrt5640 { count 1 } } - control.55 { + control.207 { iface MIXER name 'DAI select' value '1:1|2:2' @@ -3504,7 +2354,7 @@ state.bytrt5640 { item.3 '1:2|2:2' } } - control.56 { + control.208 { iface MIXER name 'SDI select' value IF1 @@ -3516,7 +2366,7 @@ state.bytrt5640 { item.1 IF2 } } - control.57 { + control.209 { iface MIXER name 'DAC MIXL Stereo ADC Switch' value false @@ -3526,7 +2376,7 @@ state.bytrt5640 { count 1 } } - control.58 { + control.210 { iface MIXER name 'DAC MIXL INF1 Switch' value true @@ -3536,7 +2386,7 @@ state.bytrt5640 { count 1 } } - control.59 { + control.211 { iface MIXER name 'DAC MIXR Stereo ADC Switch' value false @@ -3546,7 +2396,7 @@ state.bytrt5640 { count 1 } } - control.60 { + control.212 { iface MIXER name 'DAC MIXR INF1 Switch' value true @@ -3556,7 +2406,7 @@ state.bytrt5640 { count 1 } } - control.61 { + control.213 { iface MIXER name 'Mono DAC MIXL DAC L1 Switch' value false @@ -3566,7 +2416,7 @@ state.bytrt5640 { count 1 } } - control.62 { + control.214 { iface MIXER name 'Mono DAC MIXL DAC L2 Switch' value false @@ -3576,7 +2426,7 @@ state.bytrt5640 { count 1 } } - control.63 { + control.215 { iface MIXER name 'Mono DAC MIXL DAC R2 Switch' value false @@ -3586,7 +2436,7 @@ state.bytrt5640 { count 1 } } - control.64 { + control.216 { iface MIXER name 'Mono DAC MIXR DAC R1 Switch' value false @@ -3596,7 +2446,7 @@ state.bytrt5640 { count 1 } } - control.65 { + control.217 { iface MIXER name 'Mono DAC MIXR DAC R2 Switch' value false @@ -3606,7 +2456,7 @@ state.bytrt5640 { count 1 } } - control.66 { + control.218 { iface MIXER name 'Mono DAC MIXR DAC L2 Switch' value false @@ -3616,7 +2466,7 @@ state.bytrt5640 { count 1 } } - control.67 { + control.219 { iface MIXER name 'DIG MIXL DAC L1 Switch' value false @@ -3626,17 +2476,17 @@ state.bytrt5640 { count 1 } } - control.68 { + control.220 { iface MIXER name 'DIG MIXL DAC L2 Switch' - value false + value true comment { access 'read write' type BOOLEAN count 1 } } - control.69 { + control.221 { iface MIXER name 'DIG MIXR DAC R1 Switch' value false @@ -3646,7 +2496,7 @@ state.bytrt5640 { count 1 } } - control.70 { + control.222 { iface MIXER name 'DIG MIXR DAC R2 Switch' value false @@ -3656,7 +2506,7 @@ state.bytrt5640 { count 1 } } - control.71 { + control.223 { iface MIXER name 'SPK MIXL REC MIXL Switch' value false @@ -3666,7 +2516,7 @@ state.bytrt5640 { count 1 } } - control.72 { + control.224 { iface MIXER name 'SPK MIXL INL Switch' value false @@ -3676,17 +2526,17 @@ state.bytrt5640 { count 1 } } - control.73 { + control.225 { iface MIXER name 'SPK MIXL DAC L1 Switch' - value false + value true comment { access 'read write' type BOOLEAN count 1 } } - control.74 { + control.226 { iface MIXER name 'SPK MIXL DAC L2 Switch' value false @@ -3696,7 +2546,7 @@ state.bytrt5640 { count 1 } } - control.75 { + control.227 { iface MIXER name 'SPK MIXL OUT MIXL Switch' value false @@ -3706,7 +2556,7 @@ state.bytrt5640 { count 1 } } - control.76 { + control.228 { iface MIXER name 'SPK MIXR REC MIXR Switch' value false @@ -3716,7 +2566,7 @@ state.bytrt5640 { count 1 } } - control.77 { + control.229 { iface MIXER name 'SPK MIXR INR Switch' value false @@ -3726,17 +2576,17 @@ state.bytrt5640 { count 1 } } - control.78 { + control.230 { iface MIXER name 'SPK MIXR DAC R1 Switch' - value false + value true comment { access 'read write' type BOOLEAN count 1 } } - control.79 { + control.231 { iface MIXER name 'SPK MIXR DAC R2 Switch' value false @@ -3746,7 +2596,7 @@ state.bytrt5640 { count 1 } } - control.80 { + control.232 { iface MIXER name 'SPK MIXR OUT MIXR Switch' value false @@ -3756,17 +2606,17 @@ state.bytrt5640 { count 1 } } - control.81 { + control.233 { iface MIXER name 'SPOL MIX DAC R1 Switch' - value true + value false comment { access 'read write' type BOOLEAN count 1 } } - control.82 { + control.234 { iface MIXER name 'SPOL MIX DAC L1 Switch' value false @@ -3776,7 +2626,7 @@ state.bytrt5640 { count 1 } } - control.83 { + control.235 { iface MIXER name 'SPOL MIX SPKVOL R Switch' value false @@ -3786,17 +2636,17 @@ state.bytrt5640 { count 1 } } - control.84 { + control.236 { iface MIXER name 'SPOL MIX SPKVOL L Switch' - value false + value true comment { access 'read write' type BOOLEAN count 1 } } - control.85 { + control.237 { iface MIXER name 'SPOL MIX BST1 Switch' value false @@ -3806,27 +2656,27 @@ state.bytrt5640 { count 1 } } - control.86 { + control.238 { iface MIXER name 'SPOR MIX DAC R1 Switch' - value true + value false comment { access 'read write' type BOOLEAN count 1 } } - control.87 { + control.239 { iface MIXER name 'SPOR MIX SPKVOL R Switch' - value false + value true comment { access 'read write' type BOOLEAN count 1 } } - control.88 { + control.240 { iface MIXER name 'SPOR MIX BST1 Switch' value false @@ -3836,7 +2686,7 @@ state.bytrt5640 { count 1 } } - control.89 { + control.241 { iface MIXER name 'LOUT MIX DAC L1 Switch' value false @@ -3846,7 +2696,7 @@ state.bytrt5640 { count 1 } } - control.90 { + control.242 { iface MIXER name 'LOUT MIX DAC R1 Switch' value false @@ -3856,7 +2706,7 @@ state.bytrt5640 { count 1 } } - control.91 { + control.243 { iface MIXER name 'LOUT MIX OUTVOL L Switch' value false @@ -3866,7 +2716,7 @@ state.bytrt5640 { count 1 } } - control.92 { + control.244 { iface MIXER name 'LOUT MIX OUTVOL R Switch' value false @@ -3876,7 +2726,7 @@ state.bytrt5640 { count 1 } } - control.93 { + control.245 { iface MIXER name 'Speaker L Playback Switch' value true @@ -3886,7 +2736,7 @@ state.bytrt5640 { count 1 } } - control.94 { + control.246 { iface MIXER name 'Speaker R Playback Switch' value true @@ -3896,7 +2746,7 @@ state.bytrt5640 { count 1 } } - control.95 { + control.247 { iface MIXER name 'HP L Playback Switch' value true @@ -3906,7 +2756,7 @@ state.bytrt5640 { count 1 } } - control.96 { + control.248 { iface MIXER name 'HP R Playback Switch' value true @@ -3916,7 +2766,7 @@ state.bytrt5640 { count 1 } } - control.97 { + control.249 { iface MIXER name 'DAC L2 Mux' value IF2 @@ -3928,7 +2778,7 @@ state.bytrt5640 { item.1 'Base L/R' } } - control.98 { + control.250 { iface MIXER name 'DAC R2 Mux' value IF2 @@ -3939,7 +2789,7 @@ state.bytrt5640 { item.0 IF2 } } - control.99 { + control.251 { iface MIXER name 'Stereo DAC MIXL DAC L1 Switch' value true @@ -3949,17 +2799,17 @@ state.bytrt5640 { count 1 } } - control.100 { + control.252 { iface MIXER name 'Stereo DAC MIXL DAC L2 Switch' - value false + value true comment { access 'read write' type BOOLEAN count 1 } } - control.101 { + control.253 { iface MIXER name 'Stereo DAC MIXL ANC Switch' value false @@ -3969,7 +2819,7 @@ state.bytrt5640 { count 1 } } - control.102 { + control.254 { iface MIXER name 'Stereo DAC MIXR DAC R1 Switch' value true @@ -3979,17 +2829,17 @@ state.bytrt5640 { count 1 } } - control.103 { + control.255 { iface MIXER name 'Stereo DAC MIXR DAC R2 Switch' - value false + value true comment { access 'read write' type BOOLEAN count 1 } } - control.104 { + control.256 { iface MIXER name 'Stereo DAC MIXR ANC Switch' value false @@ -3999,7 +2849,7 @@ state.bytrt5640 { count 1 } } - control.105 { + control.257 { iface MIXER name 'OUT MIXL SPK MIXL Switch' value false @@ -4009,17 +2859,17 @@ state.bytrt5640 { count 1 } } - control.106 { + control.258 { iface MIXER name 'OUT MIXL BST1 Switch' - value true + value false comment { access 'read write' type BOOLEAN count 1 } } - control.107 { + control.259 { iface MIXER name 'OUT MIXL INL Switch' value false @@ -4029,7 +2879,7 @@ state.bytrt5640 { count 1 } } - control.108 { + control.260 { iface MIXER name 'OUT MIXL REC MIXL Switch' value false @@ -4039,7 +2889,7 @@ state.bytrt5640 { count 1 } } - control.109 { + control.261 { iface MIXER name 'OUT MIXL DAC R2 Switch' value false @@ -4049,7 +2899,7 @@ state.bytrt5640 { count 1 } } - control.110 { + control.262 { iface MIXER name 'OUT MIXL DAC L2 Switch' value false @@ -4059,17 +2909,17 @@ state.bytrt5640 { count 1 } } - control.111 { + control.263 { iface MIXER name 'OUT MIXL DAC L1 Switch' - value false + value true comment { access 'read write' type BOOLEAN count 1 } } - control.112 { + control.264 { iface MIXER name 'OUT MIXR SPK MIXR Switch' value false @@ -4079,7 +2929,7 @@ state.bytrt5640 { count 1 } } - control.113 { + control.265 { iface MIXER name 'OUT MIXR BST2 Switch' value false @@ -4089,7 +2939,7 @@ state.bytrt5640 { count 1 } } - control.114 { + control.266 { iface MIXER name 'OUT MIXR BST1 Switch' value false @@ -4099,7 +2949,7 @@ state.bytrt5640 { count 1 } } - control.115 { + control.267 { iface MIXER name 'OUT MIXR INR Switch' value false @@ -4109,7 +2959,7 @@ state.bytrt5640 { count 1 } } - control.116 { + control.268 { iface MIXER name 'OUT MIXR REC MIXR Switch' value false @@ -4119,7 +2969,7 @@ state.bytrt5640 { count 1 } } - control.117 { + control.269 { iface MIXER name 'OUT MIXR DAC L2 Switch' value false @@ -4129,7 +2979,7 @@ state.bytrt5640 { count 1 } } - control.118 { + control.270 { iface MIXER name 'OUT MIXR DAC R2 Switch' value false @@ -4139,17 +2989,17 @@ state.bytrt5640 { count 1 } } - control.119 { + control.271 { iface MIXER name 'OUT MIXR DAC R1 Switch' - value false + value true comment { access 'read write' type BOOLEAN count 1 } } - control.120 { + control.272 { iface MIXER name 'HPO MIX DAC2 Switch' value false @@ -4159,27 +3009,27 @@ state.bytrt5640 { count 1 } } - control.121 { + control.273 { iface MIXER name 'HPO MIX DAC1 Switch' - value true + value false comment { access 'read write' type BOOLEAN count 1 } } - control.122 { + control.274 { iface MIXER name 'HPO MIX HPVOL Switch' - value false + value true comment { access 'read write' type BOOLEAN count 1 } } - control.123 { + control.275 { iface MIXER name 'Mono MIX DAC R2 Switch' value false @@ -4189,7 +3039,7 @@ state.bytrt5640 { count 1 } } - control.124 { + control.276 { iface MIXER name 'Mono MIX DAC L2 Switch' value false @@ -4199,7 +3049,7 @@ state.bytrt5640 { count 1 } } - control.125 { + control.277 { iface MIXER name 'Mono MIX OUTVOL R Switch' value false @@ -4209,7 +3059,7 @@ state.bytrt5640 { count 1 } } - control.126 { + control.278 { iface MIXER name 'Mono MIX OUTVOL L Switch' value false @@ -4219,7 +3069,7 @@ state.bytrt5640 { count 1 } } - control.127 { + control.279 { iface MIXER name 'Mono MIX BST1 Switch' value false diff --git a/build/tasks/kernel.mk b/build/tasks/kernel.mk new file mode 100644 index 0000000..ee6dbfc --- /dev/null +++ b/build/tasks/kernel.mk @@ -0,0 +1,111 @@ +# +# Copyright (C) 2014-2019 The Android-x86 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 +# + +export LC_CTYPE := C +export LC_MESSAGES := C + +ifneq ($(TARGET_NO_KERNEL),true) +ifeq ($(TARGET_PREBUILT_KERNEL),) + +KERNEL_DIR ?= kernel + +ifneq ($(filter x86%,$(TARGET_ARCH)),) +TARGET_KERNEL_ARCH ?= $(TARGET_ARCH) +KERNEL_TARGET := bzImage +TARGET_KERNEL_CONFIG ?= android-$(TARGET_KERNEL_ARCH)_defconfig +KERNEL_CONFIG_DIR := arch/x86/configs +endif +ifeq ($(TARGET_ARCH),arm) +KERNEL_TARGET := zImage +TARGET_KERNEL_CONFIG ?= goldfish_defconfig +KERNEL_CONFIG_DIR := arch/arm/configs +endif + +ifeq ($(BUILD_KERNEL_WITH_CLANG),true) +CROSS_COMPILE := x86_64-linux-androidkernel- +KERNEL_CLANG_CLAGS := CC=clang HOSTCC=clang CLANG_TRIPLE=x86_64-linux-gnu- PATH=$(abspath $(LLVM_PREBUILTS_BASE)/$(BUILD_OS)-x86/$(LLVM_PREBUILTS_VERSION)/bin):$$PATH +else +ifeq ($(TARGET_KERNEL_ARCH),x86_64) +ifeq ($(HOST_OS),darwin) +CROSS_COMPILE ?= $(abspath prebuilts/gcc/darwin-x86/host/i686-apple-darwin-4.2.1/bin)/i686-apple-darwin11- +else +CROSS_COMPILE ?= $(abspath prebuilts/gcc/linux-x86/host/x86_64-linux-glibc2.11-4.6/bin)/x86_64-linux- +endif +else +CROSS_COMPILE ?= $(abspath $(TARGET_TOOLS_PREFIX)) +endif +endif + +KBUILD_OUTPUT := $(abspath $(TARGET_OUT_INTERMEDIATES)/kernel) +mk_kernel := + $(hide) $(MAKE) $(if $(filter darwin,$(HOST_OS)),-j$$(sysctl -n hw.ncpu) -l$$(($$(sysctl -n hw.ncpu)+2)),-j$$(nproc) -l$$(($$(nproc)+2))) \ + -C $(KERNEL_DIR) O=$(KBUILD_OUTPUT) ARCH=$(TARGET_ARCH) CROSS_COMPILE="$(abspath $(CC_WRAPPER)) $(CROSS_COMPILE)" $(if $(SHOW_COMMANDS),V=1) \ + YACC=$(abspath $(BISON)) LEX=$(abspath $(LEX)) \ + $(KERNEL_CLANG_CLAGS) + +KERNEL_CONFIG_FILE := $(if $(wildcard $(TARGET_KERNEL_CONFIG)),$(TARGET_KERNEL_CONFIG),$(KERNEL_DIR)/$(KERNEL_CONFIG_DIR)/$(TARGET_KERNEL_CONFIG)) + +MOD_ENABLED := $(shell grep ^CONFIG_MODULES=y $(KERNEL_CONFIG_FILE)) +FIRMWARE_ENABLED := $(shell grep ^CONFIG_FIRMWARE_IN_KERNEL=y $(KERNEL_CONFIG_FILE)) + +# I understand Android build system discourage to use submake, +# but I don't want to write a complex Android.mk to build kernel. +# This is the simplest way I can think. +KERNEL_DOTCONFIG_FILE := $(KBUILD_OUTPUT)/.config +KERNEL_ARCH_CHANGED := $(if $(filter 0,$(shell grep -s ^$(if $(filter x86,$(TARGET_KERNEL_ARCH)),\#.)CONFIG_64BIT $(KERNEL_DOTCONFIG_FILE) | wc -l)),FORCE) +$(KERNEL_DOTCONFIG_FILE): $(KERNEL_CONFIG_FILE) $(wildcard $(TARGET_KERNEL_DIFFCONFIG)) $(KERNEL_ARCH_CHANGED) + $(hide) mkdir -p $(@D) && cat $(wildcard $^) > $@ + $(hide) ln -sf ../../../../../../external $(@D) + $(mk_kernel) olddefconfig + +BUILT_KERNEL_TARGET := $(KBUILD_OUTPUT)/arch/$(TARGET_ARCH)/boot/$(KERNEL_TARGET) +$(BUILT_KERNEL_TARGET): $(KERNEL_DOTCONFIG_FILE) + $(mk_kernel) $(KERNEL_TARGET) $(if $(MOD_ENABLED),modules) + $(if $(FIRMWARE_ENABLED),$(mk_kernel) INSTALL_MOD_PATH=$(abspath $(TARGET_OUT)) firmware_install) + +ifneq ($(MOD_ENABLED),) +KERNEL_MODULES_DEP := $(firstword $(wildcard $(TARGET_OUT)/lib/modules/*/modules.dep)) +KERNEL_MODULES_DEP := $(if $(KERNEL_MODULES_DEP),$(KERNEL_MODULES_DEP),$(TARGET_OUT)/lib/modules) + +ALL_EXTRA_MODULES := $(patsubst %,$(TARGET_OUT_INTERMEDIATES)/kmodule/%,$(TARGET_EXTRA_KERNEL_MODULES)) +$(ALL_EXTRA_MODULES): $(TARGET_OUT_INTERMEDIATES)/kmodule/%: $(BUILT_KERNEL_TARGET) | $(ACP) + @echo Building additional kernel module $* + $(hide) mkdir -p $(@D) && $(ACP) -fr $(EXTRA_KERNEL_MODULE_PATH_$*) $(@D) + $(mk_kernel) M=$(abspath $@) modules || ( rm -rf $@ && exit 1 ) + +$(KERNEL_MODULES_DEP): $(BUILT_KERNEL_TARGET) $(ALL_EXTRA_MODULES) + $(hide) rm -rf $(TARGET_OUT)/lib/modules + $(mk_kernel) INSTALL_MOD_PATH=$(abspath $(TARGET_OUT)) modules_install + + $(hide) for kmod in $(TARGET_EXTRA_KERNEL_MODULES) ; do \ + echo Installing additional kernel module $${kmod} ; \ + $(subst +,,$(subst $(hide),,$(mk_kernel))) INSTALL_MOD_PATH=$(abspath $(TARGET_OUT)) M=$(abspath $(TARGET_OUT_INTERMEDIATES))/kmodule/$${kmod} modules_install ; \ + done + $(hide) rm -f $(TARGET_OUT)/lib/modules/*/{build,source} +endif + +$(BUILT_SYSTEMIMAGE): $(KERNEL_MODULES_DEP) + +installclean: FILES += $(KBUILD_OUTPUT) $(INSTALLED_KERNEL_TARGET) + +TARGET_PREBUILT_KERNEL := $(BUILT_KERNEL_TARGET) + +.PHONY: kernel $(if $(KERNEL_ARCH_CHANGED),$(KERNEL_HEADERS_COMMON)/linux/binder.h) +kernel: $(INSTALLED_KERNEL_TARGET) $(KERNEL_MODULES_DEP) + +endif # TARGET_PREBUILT_KERNEL + +ifndef LINEAGE_BUILD +$(INSTALLED_KERNEL_TARGET): $(TARGET_PREBUILT_KERNEL) | $(ACP) + $(copy-file-to-new-target) +ifdef TARGET_PREBUILT_MODULES + mkdir -p $(TARGET_OUT)/lib + $(hide) cp -r $(TARGET_PREBUILT_MODULES) $(TARGET_OUT)/lib +endif +endif # LINEAGE_BUILD +endif # KBUILD_OUTPUT diff --git a/build/tasks/system.mk b/build/tasks/system.mk new file mode 100644 index 0000000..fef6d0e --- /dev/null +++ b/build/tasks/system.mk @@ -0,0 +1,9 @@ +$(PRODUCT_OUT)/build.prop: $(INSTALLED_BUILD_PROP_TARGET) + sed -E '/ro.product.manufacturer|ro.product.model/d' $< > $@ && cat $@ > $< + +$(BUILT_SYSTEMIMAGE): $(PRODUCT_OUT)/build.prop + +ifneq ($(MKSQUASHFS),) +$(systemimg): $(BUILT_SYSTEMIMAGE) | $(MKSQUASHFS) + $(call build-squashfs-target,$^,$@) +endif diff --git a/device.mk b/device.mk index 41f818a..55c03d0 100644 --- a/device.mk +++ b/device.mk @@ -35,6 +35,7 @@ PRODUCT_COPY_FILES := \ $(if $(wildcard $(PRODUCT_DIR)modules.blacklist),$(PRODUCT_DIR),$(LOCAL_PATH)/)modules.blacklist:system/etc/modules.blacklist \ $(if $(wildcard $(PRODUCT_DIR)fstab.$(TARGET_PRODUCT)),$(PRODUCT_DIR)fstab.$(TARGET_PRODUCT),$(LOCAL_PATH)/fstab.x86):root/fstab.$(TARGET_PRODUCT) \ $(if $(wildcard $(PRODUCT_DIR)wpa_supplicant.conf),$(PRODUCT_DIR),$(LOCAL_PATH)/)wpa_supplicant.conf:system/etc/wifi/wpa_supplicant.conf \ + $(if $(wildcard $(PRODUCT_DIR)wpa_supplicant_overlay.conf),$(PRODUCT_DIR),$(LOCAL_PATH)/)wpa_supplicant_overlay.conf:system/etc/wifi/wpa_supplicant_overlay.conf \ $(if $(wildcard $(PRODUCT_DIR)excluded-input-devices.xml),$(PRODUCT_DIR),$(LOCAL_PATH)/)excluded-input-devices.xml:system/etc/excluded-input-devices.xml \ $(if $(wildcard $(PRODUCT_DIR)init.$(TARGET_PRODUCT).rc),$(PRODUCT_DIR)init.$(TARGET_PRODUCT).rc,$(LOCAL_PATH)/init.x86.rc):root/init.$(TARGET_PRODUCT).rc \ $(if $(wildcard $(PRODUCT_DIR)ueventd.$(TARGET_PRODUCT).rc),$(PRODUCT_DIR)ueventd.$(TARGET_PRODUCT).rc,$(LOCAL_PATH)/ueventd.x86.rc):root/ueventd.$(TARGET_PRODUCT).rc \ @@ -49,7 +50,7 @@ PRODUCT_COPY_FILES += \ device/sample/etc/old-apns-conf.xml:system/etc/old-apns-conf.xml \ 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_video.xml:system/etc/media_codecs_google_video.xml \ - frameworks/base/compiled-classes-phone:system/etc/compiled-classes \ + frameworks/base/config/compiled-classes-phone:system/etc/compiled-classes \ frameworks/native/data/etc/tablet_core_hardware.xml:system/etc/permissions/tablet_core_hardware.xml \ frameworks/native/data/etc/android.hardware.audio.low_latency.xml:system/etc/permissions/android.hardware.audio.low_latency.xml \ frameworks/native/data/etc/android.hardware.bluetooth_le.xml:system/etc/permissions/android.hardware.bluetooth_le.xml \ @@ -85,6 +86,9 @@ PRODUCT_AAPT_PREF_CONFIG := mdpi DEVICE_PACKAGE_OVERLAYS := $(LOCAL_PATH)/overlay +# Get Android 8.0 HIDL HALs +$(call inherit-product,$(LOCAL_PATH)/treble.mk) + # Get the firmwares $(call inherit-product,device/generic/firmware/firmware.mk) diff --git a/gpu/gpu_mesa.mk b/gpu/gpu_mesa.mk index 448d95d..26abe35 100644 --- a/gpu/gpu_mesa.mk +++ b/gpu/gpu_mesa.mk @@ -19,6 +19,14 @@ PRODUCT_PACKAGES += \ libEGL_swiftshader \ libGLESv1_CM_swiftshader \ libGLESv2_swiftshader \ + vulkan.android-x86 \ + vulkan.radv PRODUCT_PROPERTY_OVERRIDES := \ - ro.opengles.version = 196608 + ro.opengles.version = 196608 \ + ro.hardware.vulkan.level = 1 \ + ro.hardware.vulkan.version = 4194307 + +PRODUCT_COPY_FILES += \ + frameworks/native/data/etc/android.hardware.vulkan.level-1.xml:system/etc/permissions/android.hardware.vulkan.level.xml \ + frameworks/native/data/etc/android.hardware.vulkan.version-1_0_3.xml:system/etc/permissions/android.hardware.vulkan.version.xml diff --git a/init.sh b/init.sh index 3e5ae24..8293126 100644 --- a/init.sh +++ b/init.sh @@ -66,13 +66,10 @@ function init_hal_audio() VirtualBox*|Bochs*) [ -d /proc/asound/card0 ] || modprobe snd-sb16 isapnp=0 irq=5 ;; - *) + TS10*) + set_prop_if_empty hal.audio.out pcmC0D2p ;; esac - - if grep -qi "IntelHDMI" /proc/asound/card0/id; then - [ -d /proc/asound/card1 ] || set_property ro.hardware.audio.primary hdmi - fi } function init_hal_bluetooth() @@ -178,18 +175,19 @@ function init_uvesafb() function init_hal_gralloc() { + [ "$VULKAN" = "1" ] && GRALLOC=gbm + case "$(cat /proc/fb | head -1)" in *virtiodrmfb) if [ "$HWACCEL" != "0" ]; then - set_property ro.hardware.hwcomposer drm - set_property ro.hardware.gralloc gbm + set_property ro.hardware.hwcomposer ${HWC:-drm} + set_property ro.hardware.gralloc ${GRALLOC:-gbm} set_property debug.drm.mode.force ${video:-1280x800} fi - set_prop_if_empty sleep.state none ;; 0*inteldrmfb|0*radeondrmfb|0*nouveaufb|0*svgadrmfb|0*amdgpudrmfb) if [ "$HWACCEL" != "0" ]; then - set_property ro.hardware.gralloc drm + set_property ro.hardware.gralloc ${GRALLOC:-drm} set_drm_mode fi ;; @@ -209,6 +207,20 @@ function init_hal_hwcomposer() return } +function init_hal_vulkan() +{ + case "$(cat /proc/fb | head -1)" in + 0*inteldrmfb) + set_property ro.hardware.vulkan android-x86 + ;; + 0*amdgpudrmfb) + set_property ro.hardware.vulkan radv + ;; + *) + ;; + esac +} + function init_hal_lights() { chown 1000.1000 /sys/class/backlight/*/brightness @@ -222,7 +234,7 @@ function init_hal_power() # TODO case "$PRODUCT" in - HP*Omni*|OEMB|Surface*3|T10*TA) + HP*Omni*|OEMB|Standard*PC*|Surface*3|T10*TA|VMware*) set_prop_if_empty sleep.state none ;; e-tab*Pro) @@ -413,6 +425,7 @@ function do_init() init_hal_gps init_hal_gralloc init_hal_hwcomposer + init_hal_vulkan init_hal_lights init_hal_power init_hal_sensors @@ -471,6 +484,9 @@ function do_bootcomplete() Surface*Go) echo on > /sys/devices/pci0000:00/0000:00:15.1/i2c_designware.1/power/control ;; + VMware*) + pm disable com.android.bluetooth + ;; X80*Power) set_property power.nonboot-cpu-off 1 ;; diff --git a/init.x86.rc b/init.x86.rc index 4bc545c..bdb05e2 100644 --- a/init.x86.rc +++ b/init.x86.rc @@ -46,8 +46,9 @@ on boot # workaround for h.265 slowness setprop sys.media.vdec.drop 0 -service wpa_supplicant /system/bin/wpa_supplicant -c/data/misc/wifi/wpa_supplicant.conf \ - -iwlan0 -Dnl80211 \ +service wpa_supplicant /vendor/bin/hw/wpa_supplicant -dd \ + -iwlan0 -Dnl80211 -c/data/misc/wifi/wpa_supplicant.conf \ + -I/system/etc/wifi/wpa_supplicant_overlay.conf \ -O/data/misc/wifi/sockets \ -e/data/misc/wifi/entropy.bin -g@android:wpa_wlan0 # we will start as root and wpa_supplicant will switch to user wifi @@ -57,6 +58,7 @@ service wpa_supplicant /system/bin/wpa_supplicant -c/data/misc/wifi/wpa_supplica class main socket wpa_wlan0 dgram 660 wifi wifi disabled + oneshot service nativebridge /system/bin/enable_nativebridge class main diff --git a/manifest.xml b/manifest.xml new file mode 100644 index 0000000..596ef18 --- /dev/null +++ b/manifest.xml @@ -0,0 +1,150 @@ + + + android.hardware.audio + hwbinder + 2.0 + + IDevicesFactory + default + + + + android.hardware.audio.effect + hwbinder + 2.0 + + IEffectsFactory + default + + + + android.hardware.bluetooth + hwbinder + 1.0 + + IBluetoothHci + default + + + + android.hardware.camera.provider + hwbinder + 2.4 + + ICameraProvider + legacy/0 + + + + android.hardware.cas + hwbinder + 1.0 + + IMediaCasService + default + + + + android.hardware.configstore + hwbinder + 1.0 + + ISurfaceFlingerConfigs + default + + + + android.hardware.dumpstate + hwbinder + 1.0 + + IDumpstateDevice + default + + + + android.hardware.graphics.allocator + passthrough + 2.0 + + IAllocator + default + + + + android.hardware.graphics.mapper + passthrough + 2.0 + + IMapper + default + + + + android.hardware.light + hwbinder + 2.0 + + ILight + default + + + + android.hardware.media.omx + hwbinder + 1.0 + + IOmx + default + + + IOmxStore + default + + + + android.hardware.power + hwbinder + 1.0 + + IPower + default + + + + android.hardware.renderscript + passthrough + 1.0 + + IDevice + default + + + + android.hardware.sensors + passthrough + 1.0 + + ISensors + default + + + + android.hardware.usb + hwbinder + 1.0 + + IUsb + default + + + + android.hardware.wifi.supplicant + hwbinder + 1.0 + + ISupplicant + default + + + diff --git a/modules.blacklist b/modules.blacklist index 832880d..574d566 100644 --- a/modules.blacklist +++ b/modules.blacklist @@ -2,4 +2,3 @@ blacklist evbug deferred amdgpu deferred nouveau deferred radeon -deferred soc_button_array diff --git a/nativebridge/Android.mk b/nativebridge/Android.mk index 75cd99e..378ce69 100644 --- a/nativebridge/Android.mk +++ b/nativebridge/Android.mk @@ -17,6 +17,7 @@ LOCAL_SRC_FILES := src/libnb.cpp LOCAL_CFLAGS := -Werror -Wall LOCAL_CPPFLAGS := -std=c++11 LOCAL_SHARED_LIBRARIES := libcutils libdl liblog +LOCAL_C_INCLUDES := system/core/libnativebridge/include LOCAL_MULTILIB := both LOCAL_POST_INSTALL_CMD := $(hide) \ rm -rf $(TARGET_OUT)/*/{arm*,*houdini*} {$(TARGET_OUT),$(PRODUCT_OUT)}/vendor/{*/arm*,*/*houdini*}; \ diff --git a/nativebridge/OEMBlackList b/nativebridge/OEMBlackList new file mode 100644 index 0000000..5dfbf4e --- /dev/null +++ b/nativebridge/OEMBlackList @@ -0,0 +1 @@ +com.ilongyuan.implosion* diff --git a/nativebridge/OEMWhiteList b/nativebridge/OEMWhiteList new file mode 100644 index 0000000..d7f4898 --- /dev/null +++ b/nativebridge/OEMWhiteList @@ -0,0 +1 @@ +com.alensw.PicFolder diff --git a/nativebridge/ThirdPartySO b/nativebridge/ThirdPartySO new file mode 100644 index 0000000..76e47ff --- /dev/null +++ b/nativebridge/ThirdPartySO @@ -0,0 +1,343 @@ +aacdecoder +aac-encoder +aal +aal_honeycomb +aal_jellybean +ads +aisound +aitalk +almixer +amapv +amapv301ex +amapv304ex +amrcodec +amrnb +analytics +andengine +andenginephysicsbox2dextension +andfix +androidgl +app_baidumapapplib_v +app_baidunaviapplib +application +arm +armplugin +art +avcodec +avdevice +avfilter +avformat +aviary_exif +aviary_moalite +aviary_native +avutil +baidumapsdk_v +baidumapvos_v +baiduprotect +base +bdmoplusmd +bdpush_v +bdvoicerecognitionclient_v +bdvoicesearchclient_v +blas +blur +bmapapiengine +bmapapiengine_v +box2d +bspatch +bullet +cardiodecider +cardiorecognizer +cardiorecognizer_tegra +casdkjni +cat +cftutils +chaosvmp +chatscript +chipmunk +cilkrts +cnpackage +cocos2d +cocos2dcpp +cocosdenshion +compiler_rt +core +corona +coronaprovider.gamenetwork.corona +cpudetect +crittercism-ndk +crypto +cryptox +curl +cutils +cyberplayer +cyberplayer-core +database_sqlcipher +dejavu +des +dexhelper +dianjin-jni +dodo +drm +dropboxsync +EGL +ejtts +emu +emumedia +encode +encrypt +entryex +exec +execmain +exif +exif_extended +expat +faceppapi +fastpay +fb_jpegturbo +ffmpeg +ffmpeg_jni_neon +ffmpeg_neon +fmodevent +fmodex +freetype +ft +game +game_logic +gamenetwork +gba +gbd +gdx +gdx-freetype +gif +GLESv +GLESv1_CM +gnustl_shared +gpuimage-library +gui +gwallet +harfbuzz_ng +hci_asr +hci_asr_jni +hci_sys +hci_sys_jni +hci_tts +hci_tts_jni +hci_tts_local_n6_synth +hellolua +iap +iconv +icui18n +icuuc +identifyapp +img_utils +immemulatorj +increment +iomx-gingerbread +iomx-hc +iomx-ics +iprouteutil +javacrypt +jhead +jhead_jni +jni +jniavcodec +jniavdevice +jniavfilter +jniavformat +jniavutil +jnicvkernels +jnigraphics +jni_latinime +jniopencv_core +jniopencv_imgproc +jnipostproc +jniswresample +jniswscale +jnlua +jpeg +jpush +json +jtopus +jtspeex +jtz +kinfoc +lame +lbs +lept +letter_xiaokun.n6.voclib +licensing +litedes +LLVM +locsdk +locsdk4b +locSDK4d +locSDK6a +lptcpjin +lthj_unipaybusiness +lua +luajava +m +mad +main +mame4all +mame4all-jni +mapv3ex +md +mdnssd +media +megjb +minimapv +mmdb +mmsdkjni +mobage +mono +monodroid +moplusmd +mp3lame +mpg +msc +msfboot +mtp +native +nativerqd +nes +nexadaptation_layer_for_dlsdk +nexalfactory +nexcal_aac_armv +nexcal_closedcaption +nexcal_h264_armv +nexcal_mp3_armv +nexcal_qcom_iomx +nexcal_ttml +nexcralbody_mc_jb +nexplayerengine +nexralbody_audio +nexralbody_audio_jb +nexralbody_video_cu +nexralbody_video_fr +nexralbody_video_hc +nexralbody_video_is +nexralbody_video_jb +nexralbody_video_opengl +nexral_nw_jb +nexral_surf_gb +nl +nmsp_speex +objc +ocrengine +ogg +openal +opencv_core +opencv_imgproc +OpenMAXAL +opensles +opus +pac +pagemap +parameter +paypalm_app_plugin_jar_360game +pciaccess +pcre +pdfium +pinguoimagesdk +pjsipjni +pl_droidsonroids_gif +plugins +png +protectclass +protobuf +push-socket +qrcodedecoder +qvodbase +qvodnetjni +radio +redlaser +RS +RScpp +RSCpuRef +RSDriver +rsjni +rs_jni +RSSupport +rtmp +s3eandroidmarketbilling_ext +sapi_so +sdl +sdl_image +sdl_main +sdl_mixer +secexe +secmain +security +skia +smsiap +smsprotocol +soni +sonivox +soundtouch +speex +speexresampler +sqlcipher_android +sqlite +ssl +stagefright_froyo +stagefright_honeycomb +stdc++ +stlport_shared +swresample +swscale +sync +sys +tbb +tbt +tenpay_utils +tersafe +tess +tests +tinyalsa +tinycompress +tinyxml +top-sdk +uffmpeg +unionpay +unity +unwind +usedes +ustoolkit +util +utility +utils +va +vadlib +va-tpi +vinit +vi_voslib +vixl +voandroidvr_s +voh264dec +voh264dec_v +vorbis +vorbisidec +voswrapper +vpx +webp +weibosdkcore +wiengine +wiengine_binding +wilhelm +winetwork +wiskia +wisound +xiaokun.n6.voclib +xml +xmp +yeepaysdk +ysshared +yyutil +yzs_usc +z +zbarjni +zip +zxing-new +zxing-new-v7a diff --git a/nativebridge/bin/enable_nativebridge b/nativebridge/bin/enable_nativebridge index 0f8cd13..9802809 100644 --- a/nativebridge/bin/enable_nativebridge +++ b/nativebridge/bin/enable_nativebridge @@ -6,23 +6,30 @@ houdini_bin=0 dest_dir=/system/lib$1/arm$1 binfmt_misc_dir=/proc/sys/fs/binfmt_misc +urls[0]=http://t.cn/RBJ7mfG +urls[1]=http://t.cn/RBJ7eml +urls[2]=http://t.cn/RBJzLwu +urls[3]=http://goo.gl/96BPKe +urls[4]=http://goo.gl/v6c4Co +urls[5]=http://goo.gl/CtKjxx + +mount_sfs() +{ + mount -o 'context="u:object_r:system_file:s0"' $1 $2 +} + if [ -z "$1" ]; then - if [ "`uname -m`" = "x86_64" ]; then - v=7_y - url=http://goo.gl/SBU3is - else - v=7_x - url=http://goo.gl/0IJs40 - fi + v=8_y + u=1 else - v=7_z - url=http://goo.gl/FDrxVN + v=8_z + u=2 fi if [ -s /system/lib$1/libhoudini.so ]; then log -pi -thoudini "found /system/lib$1/libhoudini.so" elif [ -e /system/etc/houdini$v.sfs ]; then - mount /system/etc/houdini$v.sfs $dest_dir + mount_sfs /system/etc/houdini$v.sfs $dest_dir else if mountpoint -q $dest_dir; then kill -9 `fuser -m $dest_dir` @@ -30,13 +37,14 @@ else fi mkdir -p /data/arm cd /data/arm - while ! mount houdini$v.sfs $dest_dir; do + while ! mount_sfs houdini$v.sfs $dest_dir; do while [ "$(getprop net.dns1)" = "" ]; do sleep 10 done - wget $url -cO houdini$v.sfs && continue + wget ${urls[$u%6]} -cO houdini$v.sfs && continue rm -f houdini$v.sfs sleep 30 + let u+=3 done fi @@ -45,6 +53,7 @@ fi # this is to add the supported binary formats via binfmt_misc if [ ! -e $binfmt_misc_dir/register ]; then + modprobe binfmt_misc mount -t binfmt_misc none $binfmt_misc_dir fi @@ -72,6 +81,4 @@ else log -pi -thoudini "houdini$1 enabled" fi -[ "$(getprop ro.zygote)" = "zygote64_32" -a -z "$1" ] && exec $0 64 - exit 0 diff --git a/nativebridge/nativebridge.mk b/nativebridge/nativebridge.mk index c8641a2..6f0a236 100644 --- a/nativebridge/nativebridge.mk +++ b/nativebridge/nativebridge.mk @@ -13,11 +13,13 @@ WITH_NATIVE_BRIDGE := true # Native Bridge ABI List NATIVE_BRIDGE_ABI_LIST_32_BIT := armeabi-v7a armeabi -NATIVE_BRIDGE_ABI_LIST_64_BIT := arm64-v8a LOCAL_SRC_FILES := bin/enable_nativebridge -PRODUCT_COPY_FILES := $(foreach f,$(LOCAL_SRC_FILES),$(LOCAL_PATH)/$(f):system/$(f)) +PRODUCT_COPY_FILES := $(foreach f,$(LOCAL_SRC_FILES),$(LOCAL_PATH)/$(f):system/$(f)) \ + $(LOCAL_PATH)/OEMBlackList:$(TARGET_COPY_OUT_VENDOR)/etc/misc/.OEMBlackList \ + $(LOCAL_PATH)/OEMWhiteList:$(TARGET_COPY_OUT_VENDOR)/etc/misc/.OEMWhiteList \ + $(LOCAL_PATH)/ThirdPartySO:$(TARGET_COPY_OUT_VENDOR)/etc/misc/.ThirdPartySO \ PRODUCT_PROPERTY_OVERRIDES := \ ro.dalvik.vm.isa.arm=x86 \ diff --git a/nativebridge/src/libnb.cpp b/nativebridge/src/libnb.cpp index 386a514..4576a30 100644 --- a/nativebridge/src/libnb.cpp +++ b/nativebridge/src/libnb.cpp @@ -1,5 +1,5 @@ /* - * Copyright (C) 2015 The Android-x86 Open Source Project + * Copyright (C) 2015-2017 The Android-x86 Open Source Project * * by Chih-Wei Huang * @@ -18,10 +18,22 @@ #include #include "nativebridge/native_bridge.h" +#define DBG 0 +#if DBG +#define LOGV ALOGD +#else +#define LOGV ALOGV +#endif + namespace android { static void *native_handle = nullptr; +static bool is_native_bridge_enabled() +{ + return property_get_bool("persist.sys.nativebridge", 0); +} + static NativeBridgeCallbacks *get_callbacks() { static NativeBridgeCallbacks *callbacks = nullptr; @@ -40,6 +52,7 @@ static NativeBridgeCallbacks *get_callbacks() } } callbacks = reinterpret_cast(dlsym(native_handle, "NativeBridgeItf")); + ALOGI("Found %s version %u", libnb, callbacks ? callbacks->version : 0); } return callbacks; } @@ -49,11 +62,12 @@ static bool native_bridge2_initialize(const NativeBridgeRuntimeCallbacks *art_cb const char *app_code_cache_dir, const char *isa) { - ALOGV("enter native_bridge2_initialize %s %s", app_code_cache_dir, isa); - if (property_get_bool("persist.sys.nativebridge", 0)) { + LOGV("enter native_bridge2_initialize %s %s", app_code_cache_dir, isa); + if (is_native_bridge_enabled()) { if (NativeBridgeCallbacks *cb = get_callbacks()) { return cb->initialize(art_cbs, app_code_cache_dir, isa); } + ALOGW("Native bridge is enabled but callbacks not found"); } else { ALOGW("Native bridge is disabled"); } @@ -62,7 +76,7 @@ static bool native_bridge2_initialize(const NativeBridgeRuntimeCallbacks *art_cb static void *native_bridge2_loadLibrary(const char *libpath, int flag) { - ALOGV("enter native_bridge2_loadLibrary %s", libpath); + LOGV("enter native_bridge2_loadLibrary %s", libpath); NativeBridgeCallbacks *cb = get_callbacks(); return cb ? cb->loadLibrary(libpath, flag) : nullptr; } @@ -70,38 +84,116 @@ static void *native_bridge2_loadLibrary(const char *libpath, int flag) static void *native_bridge2_getTrampoline(void *handle, const char *name, const char* shorty, uint32_t len) { - ALOGV("enter native_bridge2_getTrampoline %s", name); + LOGV("enter native_bridge2_getTrampoline %s", name); NativeBridgeCallbacks *cb = get_callbacks(); return cb ? cb->getTrampoline(handle, name, shorty, len) : nullptr; } static bool native_bridge2_isSupported(const char *libpath) { - ALOGV("enter native_bridge2_isSupported %s", libpath); + LOGV("enter native_bridge2_isSupported %s", libpath); NativeBridgeCallbacks *cb = get_callbacks(); return cb ? cb->isSupported(libpath) : false; } static const struct NativeBridgeRuntimeValues *native_bridge2_getAppEnv(const char *abi) { - ALOGV("enter native_bridge2_getAppEnv %s", abi); + LOGV("enter native_bridge2_getAppEnv %s", abi); NativeBridgeCallbacks *cb = get_callbacks(); return cb ? cb->getAppEnv(abi) : nullptr; } -static bool native_bridge2_is_compatible_compatible_with(uint32_t version) +static bool native_bridge2_isCompatibleWith(uint32_t version) { - // For testing, allow 1 and 2, but disallow 3+. - return version <= 2; + static uint32_t my_version = 0; + LOGV("enter native_bridge2_isCompatibleWith %u", version); + if (my_version == 0 && is_native_bridge_enabled()) { + if (NativeBridgeCallbacks *cb = get_callbacks()) { + my_version = cb->version; + } + } + // We have to claim a valid version before loading the real callbacks, + // otherwise native bridge will be disabled entirely + return version <= (my_version ? my_version : 3); } -static NativeBridgeSignalHandlerFn native_bridge2_get_signal_handler(int signal) +static NativeBridgeSignalHandlerFn native_bridge2_getSignalHandler(int signal) { - ALOGV("enter native_bridge2_getAppEnv %d", signal); + LOGV("enter native_bridge2_getSignalHandler %d", signal); NativeBridgeCallbacks *cb = get_callbacks(); return cb ? cb->getSignalHandler(signal) : nullptr; } +static int native_bridge3_unloadLibrary(void *handle) +{ + LOGV("enter native_bridge3_unloadLibrary %p", handle); + NativeBridgeCallbacks *cb = get_callbacks(); + return cb ? cb->unloadLibrary(handle) : -1; +} + +static const char *native_bridge3_getError() +{ + LOGV("enter native_bridge3_getError"); + NativeBridgeCallbacks *cb = get_callbacks(); + return cb ? cb->getError() : "unknown"; +} + +static bool native_bridge3_isPathSupported(const char *path) +{ + LOGV("enter native_bridge3_isPathSupported %s", path); + NativeBridgeCallbacks *cb = get_callbacks(); + return cb && cb->isPathSupported(path); +} + +static bool native_bridge3_initAnonymousNamespace(const char *public_ns_sonames, + const char *anon_ns_library_path) +{ + LOGV("enter native_bridge3_initAnonymousNamespace %s, %s", public_ns_sonames, anon_ns_library_path); + NativeBridgeCallbacks *cb = get_callbacks(); + return cb && cb->initAnonymousNamespace(public_ns_sonames, anon_ns_library_path); +} + +static native_bridge_namespace_t * +native_bridge3_createNamespace(const char *name, + const char *ld_library_path, + const char *default_library_path, + uint64_t type, + const char *permitted_when_isolated_path, + native_bridge_namespace_t *parent_ns) +{ + LOGV("enter native_bridge3_createNamespace %s, %s, %s, %s", name, ld_library_path, default_library_path, permitted_when_isolated_path); + NativeBridgeCallbacks *cb = get_callbacks(); + return cb ? cb->createNamespace(name, ld_library_path, default_library_path, type, permitted_when_isolated_path, parent_ns) : nullptr; +} + +static bool native_bridge3_linkNamespaces(native_bridge_namespace_t *from, + native_bridge_namespace_t *to, + const char *shared_libs_soname) +{ + LOGV("enter native_bridge3_linkNamespaces %s", shared_libs_soname); + NativeBridgeCallbacks *cb = get_callbacks(); + return cb && cb->linkNamespaces(from, to, shared_libs_soname); +} + +static void *native_bridge3_loadLibraryExt(const char *libpath, + int flag, + native_bridge_namespace_t *ns) +{ + LOGV("enter native_bridge3_loadLibraryExt %s, %d, %p", libpath, flag, ns); + NativeBridgeCallbacks *cb = get_callbacks(); + void *result = cb ? cb->loadLibraryExt(libpath, flag, ns) : nullptr; +// void *result = cb ? cb->loadLibrary(libpath, flag) : nullptr; + LOGV("native_bridge3_loadLibraryExt: %p", result); + return result; +} + +static native_bridge_namespace_t *native_bridge4_getVendorNamespace() +{ + LOGV("enter native_bridge4_getVendorNamespace"); + NativeBridgeCallbacks *cb = get_callbacks(); + return cb ? cb->getVendorNamespace() : nullptr; +} + static void __attribute__ ((destructor)) on_dlclose() { if (native_handle) { @@ -113,14 +205,26 @@ static void __attribute__ ((destructor)) on_dlclose() extern "C" { NativeBridgeCallbacks NativeBridgeItf = { - .version = 2, - .initialize = &native_bridge2_initialize, - .loadLibrary = &native_bridge2_loadLibrary, - .getTrampoline = &native_bridge2_getTrampoline, - .isSupported = &native_bridge2_isSupported, - .getAppEnv = &native_bridge2_getAppEnv, - .isCompatibleWith = &native_bridge2_is_compatible_compatible_with, - .getSignalHandler = &native_bridge2_get_signal_handler, + // v1 + .version = 4, + .initialize = native_bridge2_initialize, + .loadLibrary = native_bridge2_loadLibrary, + .getTrampoline = native_bridge2_getTrampoline, + .isSupported = native_bridge2_isSupported, + .getAppEnv = native_bridge2_getAppEnv, + // v2 + .isCompatibleWith = native_bridge2_isCompatibleWith, + .getSignalHandler = native_bridge2_getSignalHandler, + // v3 + .unloadLibrary = native_bridge3_unloadLibrary, + .getError = native_bridge3_getError, + .isPathSupported = native_bridge3_isPathSupported, + .initAnonymousNamespace = native_bridge3_initAnonymousNamespace, + .createNamespace = native_bridge3_createNamespace, + .linkNamespaces = native_bridge3_linkNamespaces, + .loadLibraryExt = native_bridge3_loadLibraryExt, + // v4 + .getVendorNamespace = native_bridge4_getVendorNamespace, }; } // extern "C" diff --git a/packages.mk b/packages.mk index 6bae5ef..a1e102b 100644 --- a/packages.mk +++ b/packages.mk @@ -64,6 +64,7 @@ PRODUCT_PACKAGES := \ PRODUCT_PACKAGES += \ libwpa_client \ hostapd \ + wificond \ wpa_supplicant \ wpa_supplicant.conf \ diff --git a/selinux_diffconfig b/selinux_diffconfig index 807ed71..4fe6c38 100644 --- a/selinux_diffconfig +++ b/selinux_diffconfig @@ -5,3 +5,4 @@ CONFIG_SECURITY_SELINUX_CHECKREQPROT_VALUE=1 CONFIG_DEFAULT_SECURITY_SELINUX=y # CONFIG_DEFAULT_SECURITY_DAC is not set CONFIG_DEFAULT_SECURITY="selinux" +# CONFIG_ANDROID_BINDER_IPC_32BIT is not set diff --git a/sepolicy/nonplat/adbd.te b/sepolicy/nonplat/adbd.te new file mode 100644 index 0000000..9546c1a --- /dev/null +++ b/sepolicy/nonplat/adbd.te @@ -0,0 +1 @@ +set_prop(adbd, ctl_mdnsd_prop); diff --git a/sepolicy/nonplat/audioserver.te b/sepolicy/nonplat/audioserver.te new file mode 100644 index 0000000..c3c4a3a --- /dev/null +++ b/sepolicy/nonplat/audioserver.te @@ -0,0 +1 @@ +allow audioserver bootanim:binder call; diff --git a/sepolicy/nonplat/bootanim.te b/sepolicy/nonplat/bootanim.te new file mode 100644 index 0000000..98d453f --- /dev/null +++ b/sepolicy/nonplat/bootanim.te @@ -0,0 +1,4 @@ +allow bootanim self:process execmem; +allow bootanim ashmem_device:chr_file execute; +#TODO: This can safely be ignored until b/62954877 is fixed +dontaudit bootanim system_data_file:dir read; diff --git a/sepolicy/nonplat/cameraserver.te b/sepolicy/nonplat/cameraserver.te new file mode 100644 index 0000000..6cf5d6a --- /dev/null +++ b/sepolicy/nonplat/cameraserver.te @@ -0,0 +1,2 @@ +allow cameraserver system_file:dir { open read }; +allow cameraserver hal_allocator:fd use; diff --git a/sepolicy/nonplat/device.te b/sepolicy/nonplat/device.te new file mode 100644 index 0000000..e69de29 diff --git a/sepolicy/nonplat/domain.te b/sepolicy/nonplat/domain.te new file mode 100644 index 0000000..0bc8d87 --- /dev/null +++ b/sepolicy/nonplat/domain.te @@ -0,0 +1 @@ +allow domain cpuctl_device:dir search; diff --git a/sepolicy/nonplat/file.te b/sepolicy/nonplat/file.te new file mode 100644 index 0000000..e69de29 diff --git a/sepolicy/nonplat/file_contexts b/sepolicy/nonplat/file_contexts new file mode 100644 index 0000000..258dc98 --- /dev/null +++ b/sepolicy/nonplat/file_contexts @@ -0,0 +1,15 @@ +# ranchu +/dev/block/vda u:object_r:system_block_device:s0 +/dev/block/vdb u:object_r:cache_block_device:s0 +/dev/block/vdc u:object_r:userdata_block_device:s0 +/dev/block/vdd u:object_r:metadata_block_device:s0 +/dev/block/vde u:object_r:system_block_device:s0 + +/dev/ttyS0 u:object_r:console_device:s0 + +/vendor/bin/hw/android\.hardware\.drm@1\.0-service\.widevine u:object_r:hal_drm_widevine_exec:s0 + +/vendor/lib(64)?/libEGL_swiftshader\.so u:object_r:same_process_hal_file:s0 +/vendor/lib(64)?/libGLESv1_CM_swiftshader\.so u:object_r:same_process_hal_file:s0 +/vendor/lib(64)?/libGLESv2_swiftshader\.so u:object_r:same_process_hal_file:s0 +/vendor/lib(64)?/libOpenglSystemCommon\.so u:object_r:same_process_hal_file:s0 diff --git a/sepolicy/nonplat/hal_camera_default.te b/sepolicy/nonplat/hal_camera_default.te new file mode 100644 index 0000000..eb88c36 --- /dev/null +++ b/sepolicy/nonplat/hal_camera_default.te @@ -0,0 +1,3 @@ +vndbinder_use(hal_camera_default); +allow hal_camera_default hal_graphics_mapper_hwservice:hwservice_manager find; +hal_client_domain(hal_camera_default, hal_graphics_composer) diff --git a/sepolicy/nonplat/hal_cas_default.te b/sepolicy/nonplat/hal_cas_default.te new file mode 100644 index 0000000..3ed3bee --- /dev/null +++ b/sepolicy/nonplat/hal_cas_default.te @@ -0,0 +1 @@ +vndbinder_use(hal_cas_default); diff --git a/sepolicy/nonplat/hal_drm_default.te b/sepolicy/nonplat/hal_drm_default.te new file mode 100644 index 0000000..5a07433 --- /dev/null +++ b/sepolicy/nonplat/hal_drm_default.te @@ -0,0 +1,2 @@ +vndbinder_use(hal_drm_default); +hal_client_domain(hal_drm_default, hal_graphics_composer) diff --git a/sepolicy/nonplat/hal_drm_widevine.te b/sepolicy/nonplat/hal_drm_widevine.te new file mode 100644 index 0000000..42d462a --- /dev/null +++ b/sepolicy/nonplat/hal_drm_widevine.te @@ -0,0 +1,12 @@ +# 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; + +vndbinder_use(hal_drm_widevine); +hal_client_domain(hal_drm_widevine, hal_graphics_composer); diff --git a/sepolicy/nonplat/hal_gnss_default.te b/sepolicy/nonplat/hal_gnss_default.te new file mode 100644 index 0000000..0dd3d03 --- /dev/null +++ b/sepolicy/nonplat/hal_gnss_default.te @@ -0,0 +1,3 @@ +#============= hal_gnss_default ============== +allow hal_gnss_default vndbinder_device:chr_file { ioctl open read write }; + diff --git a/sepolicy/nonplat/hal_graphics_composer_default.te b/sepolicy/nonplat/hal_graphics_composer_default.te new file mode 100644 index 0000000..034bdef --- /dev/null +++ b/sepolicy/nonplat/hal_graphics_composer_default.te @@ -0,0 +1,3 @@ +#============= hal_graphics_composer_default ============== +allow hal_graphics_composer_default vndbinder_device:chr_file { ioctl open read write }; + diff --git a/sepolicy/nonplat/healthd.te b/sepolicy/nonplat/healthd.te new file mode 100644 index 0000000..95fa807 --- /dev/null +++ b/sepolicy/nonplat/healthd.te @@ -0,0 +1 @@ +allow healthd self:capability sys_nice; diff --git a/sepolicy/nonplat/init.te b/sepolicy/nonplat/init.te new file mode 100644 index 0000000..5e1a5d1 --- /dev/null +++ b/sepolicy/nonplat/init.te @@ -0,0 +1,3 @@ +allow init tmpfs:lnk_file create_file_perms; +dontaudit init kernel:system module_request; +allow init tmpfs:lnk_file create_file_perms; diff --git a/sepolicy/nonplat/installd.te b/sepolicy/nonplat/installd.te new file mode 100644 index 0000000..7a558b1 --- /dev/null +++ b/sepolicy/nonplat/installd.te @@ -0,0 +1 @@ +allow installd self:process execmem; diff --git a/sepolicy/nonplat/logpersist.te b/sepolicy/nonplat/logpersist.te new file mode 100644 index 0000000..cae03bb --- /dev/null +++ b/sepolicy/nonplat/logpersist.te @@ -0,0 +1,10 @@ +# See global logcat.te/logpersist.te, only set for eng & userdebug, +# allow for all builds in a non-conflicting manner. + +domain_auto_trans(init, logcat_exec, logpersist) + +# Read from logd. +unix_socket_connect(logpersist, logdr, logd) + +# Write to /dev/ttyS2 and /dev/ttyGF2. +allow logpersist serial_device:chr_file { write open }; diff --git a/sepolicy/nonplat/mediacodec.te b/sepolicy/nonplat/mediacodec.te new file mode 100644 index 0000000..acf4e59 --- /dev/null +++ b/sepolicy/nonplat/mediacodec.te @@ -0,0 +1 @@ +allow mediacodec system_file:dir { open read }; diff --git a/sepolicy/nonplat/netd.te b/sepolicy/nonplat/netd.te new file mode 100644 index 0000000..09a28b9 --- /dev/null +++ b/sepolicy/nonplat/netd.te @@ -0,0 +1,3 @@ +dontaudit netd self:capability sys_module; +#TODO: This can safely be ignored until b/62954877 is fixed +dontaudit netd kernel:system module_request; diff --git a/sepolicy/nonplat/priv_app.te b/sepolicy/nonplat/priv_app.te new file mode 100644 index 0000000..3d16f32 --- /dev/null +++ b/sepolicy/nonplat/priv_app.te @@ -0,0 +1,5 @@ +#TODO: b/62908025 +dontaudit priv_app firstboot_prop:file { getattr open }; +dontaudit priv_app device:dir { open read }; +dontaudit priv_app proc_interrupts:file { getattr open read }; +dontaudit priv_app proc_modules:file { getattr open read }; diff --git a/sepolicy/nonplat/property.te b/sepolicy/nonplat/property.te new file mode 100644 index 0000000..d216ff2 --- /dev/null +++ b/sepolicy/nonplat/property.te @@ -0,0 +1,2 @@ +type radio_noril_prop, property_type; +type opengles_prop, property_type; diff --git a/sepolicy/nonplat/property_contexts b/sepolicy/nonplat/property_contexts new file mode 100644 index 0000000..3bfe5a1 --- /dev/null +++ b/sepolicy/nonplat/property_contexts @@ -0,0 +1,2 @@ +ro.radio.noril u:object_r:radio_noril_prop:s0 +ro.opengles. u:object_r:opengles_prop:s0 diff --git a/sepolicy/nonplat/shell.te b/sepolicy/nonplat/shell.te new file mode 100644 index 0000000..b246d7e --- /dev/null +++ b/sepolicy/nonplat/shell.te @@ -0,0 +1 @@ +allow shell serial_device:chr_file rw_file_perms; diff --git a/sepolicy/nonplat/surfaceflinger.te b/sepolicy/nonplat/surfaceflinger.te new file mode 100644 index 0000000..4c35469 --- /dev/null +++ b/sepolicy/nonplat/surfaceflinger.te @@ -0,0 +1,2 @@ +allow surfaceflinger self:process execmem; +allow surfaceflinger ashmem_device:chr_file execute; diff --git a/sepolicy/nonplat/system_server.te b/sepolicy/nonplat/system_server.te new file mode 100644 index 0000000..9063095 --- /dev/null +++ b/sepolicy/nonplat/system_server.te @@ -0,0 +1,2 @@ +get_prop(system_server, opengles_prop) +get_prop(system_server, radio_noril_prop) diff --git a/sepolicy/nonplat/vold.te b/sepolicy/nonplat/vold.te new file mode 100644 index 0000000..5f3bdd4 --- /dev/null +++ b/sepolicy/nonplat/vold.te @@ -0,0 +1 @@ +dontaudit vold kernel:system module_request; diff --git a/sepolicy/nonplat/zygote.te b/sepolicy/nonplat/zygote.te new file mode 100644 index 0000000..0bf668a --- /dev/null +++ b/sepolicy/nonplat/zygote.te @@ -0,0 +1,5 @@ +# TODO (b/63631799) fix this access +# Suppress denials to storage. Webview zygote should not be accessing. +dontaudit webview_zygote mnt_expand_file:dir getattr; +allow zygote self:process execmem; +allow zygote self:capability sys_nice; diff --git a/sepolicy/plat_private/file_contexts b/sepolicy/plat_private/file_contexts new file mode 100644 index 0000000..9dd2aed --- /dev/null +++ b/sepolicy/plat_private/file_contexts @@ -0,0 +1,3 @@ +# surfaceflinger +/dev/dri(/.*)? u:object_r:gpu_device:s0 +/dev/tty0 u:object_r:gpu_device:s0 diff --git a/sepolicy/plat_private/surfaceflinger.te b/sepolicy/plat_private/surfaceflinger.te new file mode 100644 index 0000000..8f936ca --- /dev/null +++ b/sepolicy/plat_private/surfaceflinger.te @@ -0,0 +1,24 @@ +allow surfaceflinger surfaceflinger_tmpfs:file { map }; +allow surfaceflinger tmpfs:lnk_file { read }; +allow surfaceflinger self:capability { sys_tty_config }; + +allowxperm surfaceflinger gpu_device:chr_file ioctl { + 0x5605 + 0x6409 + 0x640a + 0x640b + 0x641e + 0x641f + 0x6457 + 0x6458 + 0x645b + 0x645e + 0x645f + 0x6461 + 0x6462 + 0x6469 + 0x6466 + 0x646c + 0x64a2 + 0x64b0 +}; diff --git a/sepolicy/plat_private/zygote.te b/sepolicy/plat_private/zygote.te new file mode 100644 index 0000000..867e1f3 --- /dev/null +++ b/sepolicy/plat_private/zygote.te @@ -0,0 +1,2 @@ +allow zygote surfaceflinger:binder call; +allow zygote surfaceflinger:unix_stream_socket { read }; diff --git a/treble.mk b/treble.mk new file mode 100644 index 0000000..c7fc945 --- /dev/null +++ b/treble.mk @@ -0,0 +1,76 @@ +# Graphics HAL +PRODUCT_PACKAGES += \ + android.hardware.graphics.mapper@2.0-impl \ + android.hardware.graphics.allocator@2.0-impl \ + +# HWComposer HAL +PRODUCT_PACKAGES += \ + android.hardware.graphics.composer@2.1-impl + +# Audio HAL +PRODUCT_PACKAGES += \ + android.hardware.audio@2.0-impl \ + android.hardware.audio@2.0-service \ + android.hardware.audio.effect@2.0-impl \ + android.hardware.broadcastradio@1.0-impl \ + android.hardware.soundtrigger@2.0-impl + +# Bluetooth HAL +PRODUCT_PACKAGES += \ + android.hardware.bluetooth@1.0-service.btlinux + +# Camera HAL +PRODUCT_PACKAGES += \ + camera.device@3.2-impl \ + android.hardware.camera.provider@2.4-impl \ + android.hardware.camera.provider@2.4-service + +# DumpState HAL +PRODUCT_PACKAGES += \ + android.hardware.dumpstate@1.0-impl \ + android.hardware.dumpstate@1.0-service + +# Gatekeeper HAL +#PRODUCT_PACKAGES += \ + android.hardware.gatekeeper@1.0-impl + +# Health HAL +PRODUCT_PACKAGES += \ + android.hardware.health@1.0-impl + +# Keymaster HAL +PRODUCT_PACKAGES += \ + android.hardware.keymaster@3.0-impl + +# Light HAL +PRODUCT_PACKAGES += \ + android.hardware.light@2.0-impl \ + android.hardware.light@2.0-service + +# Memtrack HAL +PRODUCT_PACKAGES += \ + memtrack.default \ + android.hardware.memtrack@1.0-impl \ + android.hardware.memtrack@1.0-service + +# Power HAL +PRODUCT_PACKAGES += \ + android.hardware.power@1.0-impl \ + android.hardware.power@1.0-service + +# RenderScript HAL +PRODUCT_PACKAGES += \ + android.hardware.renderscript@1.0-impl + +# Sensors HAL +PRODUCT_PACKAGES += \ + android.hardware.sensors@1.0-impl + +# USB HAL +PRODUCT_PACKAGES += \ + android.hardware.usb@1.0-impl \ + android.hardware.usb@1.0-service + +# Wifi HAL +PRODUCT_PACKAGES += \ + android.hardware.wifi@1.0-service diff --git a/ueventd.x86.rc b/ueventd.x86.rc index c88a243..e2189fe 100644 --- a/ueventd.x86.rc +++ b/ueventd.x86.rc @@ -5,7 +5,7 @@ /dev/iio:device* 0660 system system # for bluetooth nodes -/dev/rfkill 0660 bluetooth bluetooth +/dev/rfkill 0660 bluetooth wifi /dev/uhid 0660 bluetooth bluetooth /sys/devices/system/cpu/cpu* online 0664 system system diff --git a/vndk/Android.mk b/vndk/Android.mk new file mode 100644 index 0000000..4ef78ba --- /dev/null +++ b/vndk/Android.mk @@ -0,0 +1,47 @@ +ifneq ($(filter generic_%,$(TARGET_DEVICE)),) + +LOCAL_PATH := $(call my-dir) + +include $(LOCAL_PATH)/vndk-sp-libs.mk + +define define-vndk-sp-lib +include $$(CLEAR_VARS) +LOCAL_MODULE := $1.vndk-sp-gen +LOCAL_MODULE_CLASS := SHARED_LIBRARIES +LOCAL_PREBUILT_MODULE_FILE := $$(call intermediates-dir-for,SHARED_LIBRARIES,$1,,,,)/$1.so +LOCAL_STRIP_MODULE := false +LOCAL_MULTILIB := first +LOCAL_MODULE_TAGS := optional +LOCAL_INSTALLED_MODULE_STEM := $1.so +LOCAL_MODULE_SUFFIX := .so +LOCAL_MODULE_RELATIVE_PATH := vndk-sp +include $$(BUILD_PREBUILT) + +ifneq ($$(TARGET_2ND_ARCH),) +ifneq ($$(TARGET_TRANSLATE_2ND_ARCH),true) +include $$(CLEAR_VARS) +LOCAL_MODULE := $1.vndk-sp-gen +LOCAL_MODULE_CLASS := SHARED_LIBRARIES +LOCAL_PREBUILT_MODULE_FILE := $$(call intermediates-dir-for,SHARED_LIBRARIES,$1,,,$$(TARGET_2ND_ARCH_VAR_PREFIX),)/$1.so +LOCAL_STRIP_MODULE := false +LOCAL_MULTILIB := 32 +LOCAL_MODULE_TAGS := optional +LOCAL_INSTALLED_MODULE_STEM := $1.so +LOCAL_MODULE_SUFFIX := .so +LOCAL_MODULE_RELATIVE_PATH := vndk-sp +include $$(BUILD_PREBUILT) +endif # TARGET_TRANSLATE_2ND_ARCH is not true +endif # TARGET_2ND_ARCH is not empty +endef + +$(foreach lib,$(VNDK_SP_LIBRARIES),\ + $(eval $(call define-vndk-sp-lib,$(lib)))) + +include $(CLEAR_VARS) +LOCAL_MODULE := vndk-sp +LOCAL_MODULE_OWNER := google +LOCAL_MODULE_TAGS := optional +LOCAL_REQUIRED_MODULES := $(addsuffix .vndk-sp-gen,$(VNDK_SP_LIBRARIES)) +include $(BUILD_PHONY_PACKAGE) + +endif # TARGET_DEVICE is generic_* diff --git a/vndk/vndk-sp-libs.mk b/vndk/vndk-sp-libs.mk new file mode 100644 index 0000000..6957a1d --- /dev/null +++ b/vndk/vndk-sp-libs.mk @@ -0,0 +1,31 @@ +ifndef BOARD_VNDK_VERSION +VNDK_SP_LIBRARIES += \ + android.hardware.graphics.allocator@2.0 \ + android.hardware.graphics.mapper@2.0 \ + android.hardware.graphics.common@1.0 \ + android.hardware.renderscript@1.0 \ + android.hidl.memory@1.0 \ + libbacktrace \ + libbase \ + libc++ \ + libcutils \ + libRSCpuRef \ + libRSDriver \ + libRS_internal \ + libbcinfo \ + libblas \ + libcompiler_rt \ + libft2 \ + libpng \ + libhardware \ + libhwbinder \ + libion \ + liblzma \ + libunwind \ + libutils \ + libhidlbase \ + libhidlmemory \ + libhidltransport \ + libz \ + +endif diff --git a/wpa_supplicant_overlay.conf b/wpa_supplicant_overlay.conf new file mode 100644 index 0000000..06fc042 --- /dev/null +++ b/wpa_supplicant_overlay.conf @@ -0,0 +1 @@ +p2p_disabled=1