OSDN Git Service

Merge remote-tracking branch 'x86/nougat-x86' into oreo-x86
authorChih-Wei Huang <cwhuang@linux.org.tw>
Fri, 22 Mar 2019 15:51:59 +0000 (23:51 +0800)
committerChih-Wei Huang <cwhuang@linux.org.tw>
Fri, 22 Mar 2019 15:51:59 +0000 (23:51 +0800)
53 files changed:
BoardConfig.mk
CleanSpec.mk
alsa/bytcrrt5640.state
build/tasks/kernel.mk [new file with mode: 0644]
build/tasks/system.mk [new file with mode: 0644]
device.mk
gpu/gpu_mesa.mk
init.sh
init.x86.rc
manifest.xml [new file with mode: 0644]
modules.blacklist
nativebridge/Android.mk
nativebridge/OEMBlackList [new file with mode: 0644]
nativebridge/OEMWhiteList [new file with mode: 0644]
nativebridge/ThirdPartySO [new file with mode: 0644]
nativebridge/bin/enable_nativebridge
nativebridge/nativebridge.mk
nativebridge/src/libnb.cpp
packages.mk
selinux_diffconfig
sepolicy/adbd.te [new file with mode: 0644]
sepolicy/audioserver.te [new file with mode: 0644]
sepolicy/bootanim.te [new file with mode: 0644]
sepolicy/cameraserver.te [new file with mode: 0644]
sepolicy/device.te [new file with mode: 0644]
sepolicy/domain.te [new file with mode: 0644]
sepolicy/file.te [new file with mode: 0644]
sepolicy/file_contexts [new file with mode: 0644]
sepolicy/hal_camera_default.te [new file with mode: 0644]
sepolicy/hal_cas_default.te [new file with mode: 0644]
sepolicy/hal_drm_default.te [new file with mode: 0644]
sepolicy/hal_drm_widevine.te [new file with mode: 0644]
sepolicy/hal_gnss_default.te [new file with mode: 0644]
sepolicy/hal_graphics_composer_default.te [new file with mode: 0644]
sepolicy/healthd.te [new file with mode: 0644]
sepolicy/init.te [new file with mode: 0644]
sepolicy/installd.te [new file with mode: 0644]
sepolicy/logpersist.te [new file with mode: 0644]
sepolicy/mediacodec.te [new file with mode: 0644]
sepolicy/netd.te [new file with mode: 0644]
sepolicy/priv_app.te [new file with mode: 0644]
sepolicy/property.te [new file with mode: 0644]
sepolicy/property_contexts [new file with mode: 0644]
sepolicy/shell.te [new file with mode: 0644]
sepolicy/surfaceflinger.te [new file with mode: 0644]
sepolicy/system_server.te [new file with mode: 0644]
sepolicy/vold.te [new file with mode: 0644]
sepolicy/zygote.te [new file with mode: 0644]
treble.mk [new file with mode: 0644]
ueventd.x86.rc
vndk/Android.mk [new file with mode: 0644]
vndk/vndk-sp-libs.mk [new file with mode: 0644]
wpa_supplicant_overlay.conf [new file with mode: 0644]

index a63163b..bd23daf 100644 (file)
@@ -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,21 @@ 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 \
+                       system/bt/vendor_libs/linux/sepolicy \
index ca4f50f..c04c745 100644 (file)
@@ -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)
index 78c314c..944edbb 100644 (file)
@@ -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 (file)
index 0000000..6ecf0fe
--- /dev/null
@@ -0,0 +1,119 @@
+#
+# 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)
+
+# rules to get source of Broadcom 802.11a/b/g/n hybrid device driver
+# based on broadcomsetup.sh of Kyle Evans
+WL_PATH := $(KERNEL_DIR)/drivers/net/wireless/broadcom/wl
+ifeq ($(wildcard $(WL_PATH)/build.mk),)
+WL_PATH := $(KERNEL_DIR)/drivers/net/wireless/wl
+endif
+-include $(WL_PATH)/build.mk
+
+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)
+
+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 (file)
index 0000000..fef6d0e
--- /dev/null
@@ -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
index da1b830..cbbba00 100644 (file)
--- 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)
 
index 448d95d..26abe35 100644 (file)
@@ -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 2acd918..812e055 100644 (file)
--- a/init.sh
+++ b/init.sh
@@ -38,13 +38,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()
@@ -150,18 +147,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
                        ;;
@@ -181,6 +179,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
@@ -194,7 +206,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)
@@ -382,6 +394,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
@@ -440,6 +453,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
+                       ;;
                *)
                        ;;
        esac
index 8aebe59..f718b79 100644 (file)
@@ -45,8 +45,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
@@ -56,6 +57,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 (file)
index 0000000..596ef18
--- /dev/null
@@ -0,0 +1,150 @@
+<manifest version="1.0" type="device">
+    <hal format="hidl">
+        <name>android.hardware.audio</name>
+        <transport>hwbinder</transport>
+        <version>2.0</version>
+        <interface>
+            <name>IDevicesFactory</name>
+            <instance>default</instance>
+        </interface>
+    </hal>
+    <hal format="hidl">
+        <name>android.hardware.audio.effect</name>
+        <transport>hwbinder</transport>
+        <version>2.0</version>
+        <interface>
+            <name>IEffectsFactory</name>
+            <instance>default</instance>
+        </interface>
+    </hal>
+    <hal format="hidl">
+        <name>android.hardware.bluetooth</name>
+        <transport>hwbinder</transport>
+        <version>1.0</version>
+        <interface>
+            <name>IBluetoothHci</name>
+            <instance>default</instance>
+        </interface>
+    </hal>
+    <hal format="hidl">
+        <name>android.hardware.camera.provider</name>
+        <transport>hwbinder</transport>
+        <version>2.4</version>
+        <interface>
+            <name>ICameraProvider</name>
+            <instance>legacy/0</instance>
+        </interface>
+    </hal>
+    <hal format="hidl">
+        <name>android.hardware.cas</name>
+        <transport>hwbinder</transport>
+        <version>1.0</version>
+        <interface>
+            <name>IMediaCasService</name>
+            <instance>default</instance>
+        </interface>
+    </hal>
+    <hal format="hidl">
+        <name>android.hardware.configstore</name>
+        <transport>hwbinder</transport>
+        <version>1.0</version>
+        <interface>
+            <name>ISurfaceFlingerConfigs</name>
+            <instance>default</instance>
+        </interface>
+    </hal>
+    <hal format="hidl">
+        <name>android.hardware.dumpstate</name>
+        <transport>hwbinder</transport>
+        <version>1.0</version>
+        <interface>
+            <name>IDumpstateDevice</name>
+            <instance>default</instance>
+        </interface>
+    </hal>
+    <hal format="hidl">
+        <name>android.hardware.graphics.allocator</name>
+        <transport arch="32+64">passthrough</transport>
+        <version>2.0</version>
+        <interface>
+            <name>IAllocator</name>
+            <instance>default</instance>
+        </interface>
+    </hal>
+    <hal format="hidl">
+        <name>android.hardware.graphics.mapper</name>
+        <transport arch="32+64">passthrough</transport>
+        <version>2.0</version>
+        <interface>
+            <name>IMapper</name>
+            <instance>default</instance>
+        </interface>
+    </hal>
+    <hal format="hidl">
+        <name>android.hardware.light</name>
+        <transport>hwbinder</transport>
+        <version>2.0</version>
+        <interface>
+            <name>ILight</name>
+            <instance>default</instance>
+        </interface>
+    </hal>
+    <hal format="hidl">
+        <name>android.hardware.media.omx</name>
+        <transport>hwbinder</transport>
+        <version>1.0</version>
+        <interface>
+            <name>IOmx</name>
+            <instance>default</instance>
+        </interface>
+        <interface>
+            <name>IOmxStore</name>
+            <instance>default</instance>
+        </interface>
+    </hal>
+    <hal format="hidl">
+        <name>android.hardware.power</name>
+        <transport>hwbinder</transport>
+        <version>1.0</version>
+        <interface>
+            <name>IPower</name>
+            <instance>default</instance>
+        </interface>
+    </hal>
+    <hal format="hidl">
+        <name>android.hardware.renderscript</name>
+        <transport arch="32+64">passthrough</transport>
+        <version>1.0</version>
+        <interface>
+            <name>IDevice</name>
+            <instance>default</instance>
+        </interface>
+    </hal>
+    <hal format="hidl">
+        <name>android.hardware.sensors</name>
+        <transport arch="32+64">passthrough</transport>
+        <version>1.0</version>
+        <interface>
+            <name>ISensors</name>
+            <instance>default</instance>
+        </interface>
+    </hal>
+    <hal format="hidl">
+        <name>android.hardware.usb</name>
+        <transport>hwbinder</transport>
+        <version>1.0</version>
+        <interface>
+            <name>IUsb</name>
+            <instance>default</instance>
+        </interface>
+    </hal>
+    <hal format="hidl">
+        <name>android.hardware.wifi.supplicant</name>
+        <transport>hwbinder</transport>
+        <version>1.0</version>
+        <interface>
+            <name>ISupplicant</name>
+            <instance>default</instance>
+        </interface>
+    </hal>
+</manifest>
index 832880d..574d566 100644 (file)
@@ -2,4 +2,3 @@ blacklist evbug
 deferred  amdgpu
 deferred  nouveau
 deferred  radeon
-deferred  soc_button_array
index 75cd99e..378ce69 100644 (file)
@@ -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 (file)
index 0000000..5dfbf4e
--- /dev/null
@@ -0,0 +1 @@
+com.ilongyuan.implosion*
diff --git a/nativebridge/OEMWhiteList b/nativebridge/OEMWhiteList
new file mode 100644 (file)
index 0000000..d7f4898
--- /dev/null
@@ -0,0 +1 @@
+com.alensw.PicFolder
diff --git a/nativebridge/ThirdPartySO b/nativebridge/ThirdPartySO
new file mode 100644 (file)
index 0000000..76e47ff
--- /dev/null
@@ -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
index 0f8cd13..609ecdb 100644 (file)
@@ -6,17 +6,19 @@ 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
+
 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
@@ -34,9 +36,10 @@ else
                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 +48,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 +76,4 @@ else
        log -pi -thoudini "houdini$1 enabled"
 fi
 
-[ "$(getprop ro.zygote)" = "zygote64_32" -a -z "$1" ] && exec $0 64
-
 exit 0
index c8641a2..6f0a236 100644 (file)
@@ -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 \
index 386a514..4576a30 100644 (file)
@@ -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 <cwhuang@linux.org.tw>
  *
 #include <cutils/properties.h>
 #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<NativeBridgeCallbacks *>(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"
index 6bae5ef..a1e102b 100644 (file)
@@ -64,6 +64,7 @@ PRODUCT_PACKAGES := \
 PRODUCT_PACKAGES += \
     libwpa_client \
     hostapd \
+    wificond \
     wpa_supplicant \
     wpa_supplicant.conf \
 
index 807ed71..4fe6c38 100644 (file)
@@ -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/adbd.te b/sepolicy/adbd.te
new file mode 100644 (file)
index 0000000..9546c1a
--- /dev/null
@@ -0,0 +1 @@
+set_prop(adbd, ctl_mdnsd_prop);
diff --git a/sepolicy/audioserver.te b/sepolicy/audioserver.te
new file mode 100644 (file)
index 0000000..c3c4a3a
--- /dev/null
@@ -0,0 +1 @@
+allow audioserver bootanim:binder call;
diff --git a/sepolicy/bootanim.te b/sepolicy/bootanim.te
new file mode 100644 (file)
index 0000000..98d453f
--- /dev/null
@@ -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/cameraserver.te b/sepolicy/cameraserver.te
new file mode 100644 (file)
index 0000000..6cf5d6a
--- /dev/null
@@ -0,0 +1,2 @@
+allow cameraserver system_file:dir { open read };
+allow cameraserver hal_allocator:fd use;
diff --git a/sepolicy/device.te b/sepolicy/device.te
new file mode 100644 (file)
index 0000000..e69de29
diff --git a/sepolicy/domain.te b/sepolicy/domain.te
new file mode 100644 (file)
index 0000000..0bc8d87
--- /dev/null
@@ -0,0 +1 @@
+allow domain cpuctl_device:dir search;
diff --git a/sepolicy/file.te b/sepolicy/file.te
new file mode 100644 (file)
index 0000000..e69de29
diff --git a/sepolicy/file_contexts b/sepolicy/file_contexts
new file mode 100644 (file)
index 0000000..258dc98
--- /dev/null
@@ -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/hal_camera_default.te b/sepolicy/hal_camera_default.te
new file mode 100644 (file)
index 0000000..eb88c36
--- /dev/null
@@ -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/hal_cas_default.te b/sepolicy/hal_cas_default.te
new file mode 100644 (file)
index 0000000..3ed3bee
--- /dev/null
@@ -0,0 +1 @@
+vndbinder_use(hal_cas_default);
diff --git a/sepolicy/hal_drm_default.te b/sepolicy/hal_drm_default.te
new file mode 100644 (file)
index 0000000..5a07433
--- /dev/null
@@ -0,0 +1,2 @@
+vndbinder_use(hal_drm_default);
+hal_client_domain(hal_drm_default, hal_graphics_composer)
diff --git a/sepolicy/hal_drm_widevine.te b/sepolicy/hal_drm_widevine.te
new file mode 100644 (file)
index 0000000..42d462a
--- /dev/null
@@ -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/hal_gnss_default.te b/sepolicy/hal_gnss_default.te
new file mode 100644 (file)
index 0000000..0dd3d03
--- /dev/null
@@ -0,0 +1,3 @@
+#============= hal_gnss_default ==============
+allow hal_gnss_default vndbinder_device:chr_file { ioctl open read write };
+
diff --git a/sepolicy/hal_graphics_composer_default.te b/sepolicy/hal_graphics_composer_default.te
new file mode 100644 (file)
index 0000000..034bdef
--- /dev/null
@@ -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/healthd.te b/sepolicy/healthd.te
new file mode 100644 (file)
index 0000000..95fa807
--- /dev/null
@@ -0,0 +1 @@
+allow healthd self:capability sys_nice;
diff --git a/sepolicy/init.te b/sepolicy/init.te
new file mode 100644 (file)
index 0000000..5e1a5d1
--- /dev/null
@@ -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/installd.te b/sepolicy/installd.te
new file mode 100644 (file)
index 0000000..7a558b1
--- /dev/null
@@ -0,0 +1 @@
+allow installd self:process execmem;
diff --git a/sepolicy/logpersist.te b/sepolicy/logpersist.te
new file mode 100644 (file)
index 0000000..cae03bb
--- /dev/null
@@ -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/mediacodec.te b/sepolicy/mediacodec.te
new file mode 100644 (file)
index 0000000..acf4e59
--- /dev/null
@@ -0,0 +1 @@
+allow mediacodec system_file:dir { open read };
diff --git a/sepolicy/netd.te b/sepolicy/netd.te
new file mode 100644 (file)
index 0000000..09a28b9
--- /dev/null
@@ -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/priv_app.te b/sepolicy/priv_app.te
new file mode 100644 (file)
index 0000000..3d16f32
--- /dev/null
@@ -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/property.te b/sepolicy/property.te
new file mode 100644 (file)
index 0000000..d216ff2
--- /dev/null
@@ -0,0 +1,2 @@
+type radio_noril_prop, property_type;
+type opengles_prop, property_type;
diff --git a/sepolicy/property_contexts b/sepolicy/property_contexts
new file mode 100644 (file)
index 0000000..3bfe5a1
--- /dev/null
@@ -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/shell.te b/sepolicy/shell.te
new file mode 100644 (file)
index 0000000..b246d7e
--- /dev/null
@@ -0,0 +1 @@
+allow shell serial_device:chr_file rw_file_perms;
diff --git a/sepolicy/surfaceflinger.te b/sepolicy/surfaceflinger.te
new file mode 100644 (file)
index 0000000..4c35469
--- /dev/null
@@ -0,0 +1,2 @@
+allow surfaceflinger self:process execmem;
+allow surfaceflinger ashmem_device:chr_file execute;
diff --git a/sepolicy/system_server.te b/sepolicy/system_server.te
new file mode 100644 (file)
index 0000000..9063095
--- /dev/null
@@ -0,0 +1,2 @@
+get_prop(system_server, opengles_prop)
+get_prop(system_server, radio_noril_prop)
diff --git a/sepolicy/vold.te b/sepolicy/vold.te
new file mode 100644 (file)
index 0000000..5f3bdd4
--- /dev/null
@@ -0,0 +1 @@
+dontaudit vold kernel:system module_request;
diff --git a/sepolicy/zygote.te b/sepolicy/zygote.te
new file mode 100644 (file)
index 0000000..0bf668a
--- /dev/null
@@ -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/treble.mk b/treble.mk
new file mode 100644 (file)
index 0000000..95cb842
--- /dev/null
+++ b/treble.mk
@@ -0,0 +1,74 @@
+# 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 += \
+    android.hardware.memtrack@1.0-impl
+
+# 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
index c88a243..e2189fe 100644 (file)
@@ -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 (file)
index 0000000..4ef78ba
--- /dev/null
@@ -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 (file)
index 0000000..6957a1d
--- /dev/null
@@ -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 (file)
index 0000000..06fc042
--- /dev/null
@@ -0,0 +1 @@
+p2p_disabled=1