diff --git a/device/testing/device-xiaomi-latte/APKBUILD b/device/testing/device-xiaomi-latte/APKBUILD new file mode 100644 index 000000000..f5de7b9ca --- /dev/null +++ b/device/testing/device-xiaomi-latte/APKBUILD @@ -0,0 +1,94 @@ +# Reference: +# bootx64.efi is shimx64.efi from fedora + +pkgname=device-xiaomi-latte +pkgdesc="XiaoMi Pad2" +pkgver=1 +pkgrel=0 +url="https://github.com/Qs315490/linux_latte" +license="MIT" +arch="x86_64" +options="!check !archcheck" +depends=" + linux-xiaomi-latte + linux-firmware-brcm + oem-intel + postmarketos-base + zstd + btrfs-progs + irqbalance + udisks2 +" +makedepends="devicepkg-dev rpm2cpio" + +_fedora_packages_url="https://dl.fedoraproject.org/pub/fedora/linux/releases/43/Everything/x86_64/os/Packages" +source=" + deviceinfo + modules-initfs + alsa-ucm-conf/cht-bsw-rt5659.conf + alsa-ucm-conf/HiFi.conf + keyboard.hwdb + BCM4356A2.hcd::https://github.com/Qs315490/linux_latte/raw/refs/heads/main/fix_file/BCM4356A2.hcd + MOK.cer + shim-x64.x86_64.rpm::$_fedora_packages_url/s/shim-x64-15.8-3.x86_64.rpm + grub2-efi-x64.x86_64.rpm::$_fedora_packages_url/g/grub2-efi-x64-2.12-40.fc43.x86_64.rpm + grub.cfg +" + +unpack() { + rpm2cpio "$SRCDEST/shim-x64.x86_64.rpm" | cpio -id + rpm2cpio "$SRCDEST/grub2-efi-x64.x86_64.rpm" | cpio -id +} + +build() { + devicepkg_build $startdir $pkgname +} + +package() { + devicepkg_package $startdir $pkgname + + # If you change the all 'm' setting to 'y' in the kconfig, you need to uncomment this line. + # echo "/lib/firmware" >> "$pkgdir/usr/share/mkinitfs/files/00-$pkgname-modules.files" + + # Firmware for Xiaomi Mi Pad 2 + install -Dm755 "$SRCDEST/BCM4356A2.hcd" \ + "$pkgdir/lib/firmware/brcm/BCM4356A2.hcd" + + # ALSA Use Case Manager configuration for Xiaomi Mi Pad 2 + install -Dm755 "alsa-ucm-conf/cht-bsw-rt5659.conf" \ + "$pkgdir/usr/share/alsa/ucm2/Intel/cht-bsw-rt5659/cht-bsw-rt5659.conf" + install -Dm755 "alsa-ucm-conf/HiFi.conf" \ + "$pkgdir/usr/share/alsa/ucm2/Intel/cht-bsw-rt5659/HiFi.conf" + install -dm755 "$pkgdir/usr/share/alsa/ucm2/conf.d/cht-bsw-rt5659" + ln -sf ../../Intel/cht-bsw-rt5659/cht-bsw-rt5659.conf \ + "$pkgdir/usr/share/alsa/ucm2/conf.d/cht-bsw-rt5659/cht-bsw-rt5659.conf" + + # on Screen Touch Keyboard configuration for Xiaomi Mi Pad 2 + install -Dm755 "keyboard.hwdb" \ + "$pkgdir/usr/lib/udev/hwdb.d/61-keyboard.hwdb" + + # Shim Secure Boot loader + install -Dm755 "boot/efi/EFI/fedora/shimx64.efi" "$pkgdir/boot/efi/boot/bootx64.efi" + install -Dm755 "boot/efi/EFI/fedora/mmx64.efi" "$pkgdir/boot/efi/boot/mmx64.efi" + + # GRUB Secure Boot loader + install -Dm755 "boot/efi/EFI/fedora/grubx64.efi" "$pkgdir/boot/efi/boot/grubx64.efi" + install -Dm755 "grub.cfg" "$pkgdir/boot/efi/boot/grub.cfg" + + + # Secure Boot certificate + install -Dm755 "MOK.cer" "$pkgdir/boot/MOK.cer" +} + +sha512sums=" +1e4b27713503a4e9425a43d5efc414fdf802c55d8ce1b444e89adacb91de092b6a33b6aab7915d8728f9431499a2768263c4a920e6a35500a282d41123bcfa39 deviceinfo +b6079f37aa1beea10f522f8bf94ad6040a0253393fb40b9ee09bb2a76b7f3eea9a424f3ec9f60206edeff8f24a38b0f0159b371c4cc28b7db738f475c4488576 modules-initfs +e8bf62d308049427a438e411f499cf554016170f91225ef7a5b7b02ab3b296fd3f603187b0a9e0cbed89ba80081a754a52e5af1333fa1d28ed296c513569b7ac cht-bsw-rt5659.conf +265b86a9f0fc377d1bf800be59a96704f8263b7b614df12d7f26fc8b9105c35060ac661d059a1348cbc2b0788ca8131c14aad3ab5038c0d7253d0daf7e0d75a2 HiFi.conf +9d0e4e17090739a11b9ddd336455343567d49665a5222b3fcfe4b8b73da7233ff13a5ca8aded44fc38345c0c8c4938dcd6b96528165fe8d47b30036dedf0ce7c keyboard.hwdb +fa34874f938d7532d80ee3395d93f1c957260c08f77671074266e3c3c3ca7190b8200668af96b0861ed5b961522d5088921cd3d4af236d287945a7527f75f916 BCM4356A2.hcd +5fdeb5fc0c7fdc61d1a948abc69168966c2c7893a18f54e7583a564555b4a8a360fc24999580d9498ba55d7db63493468c3f4f4690a0f40a7105bb408da6d305 MOK.cer +fa1b522380c81254fd4f356e411ad6b29b82307fc3d9da94f79fc12197a01c542f0646d90540427af786bb97a1baee74afd7c7d85245ad7b66a143571c9456f3 shim-x64.x86_64.rpm +f6de8a85db78db54065442356ffff07a4898c0d4397e24415f6fba2f937375a271d3134b8acb5f6295abdde3ec90c32e10d0552abcca6687240513303a06bdc8 grub2-efi-x64.x86_64.rpm +1d0c3bdf590ec870d026237697c7094098c526cf26eb465786e36490d591e0e05a62c3869fe8a14beec0511c57f0dad4fcde6cbcaa385a3461a0e7cadd26e097 grub.cfg +" diff --git a/device/testing/device-xiaomi-latte/MOK.cer b/device/testing/device-xiaomi-latte/MOK.cer new file mode 100644 index 000000000..ded8abe79 Binary files /dev/null and b/device/testing/device-xiaomi-latte/MOK.cer differ diff --git a/device/testing/device-xiaomi-latte/alsa-ucm-conf/HiFi.conf b/device/testing/device-xiaomi-latte/alsa-ucm-conf/HiFi.conf new file mode 100644 index 000000000..91a2a620a --- /dev/null +++ b/device/testing/device-xiaomi-latte/alsa-ucm-conf/HiFi.conf @@ -0,0 +1,93 @@ +SectionVerb { + If.Controls { + Condition { + Type ControlExists + Control "name='media0_in Gain 0 Switch'" + } + Before.EnableSequence "0" + True { + Include.pe.File "/platforms/bytcr/PlatformEnableSeq.conf" + Include.pd.File "/platforms/bytcr/PlatformDisableSeq.conf" + } + } + + EnableSequence [ + cset "name='codec_out0 Gain 0 Volume' 72%" + cset "name='IF2 ADC Mux' DAC_REF" + cset "name='IF3 ADC Mux' IF_ADC1" + # 音量50% + # cset "name='DAC1 Playback Volume' 50%" + # 设置右扬声器使用右声道 + cset "name='Amp Input1' Right" + + # Enable Boost + cset "name='STO1 ADC Capture Switch' on" + cset "name='IN3 Boost Volume' 45" + cset "name='IN4 Boost Volume' 45" + + # Set ADC Source + cset "name='Stereo1 ADC Source' 'ADC1'" + cset "name='Stereo1 ADC1 Source' 'ADC'" + + # Set recording mixer output to ADC + cset "name='Stereo1 ADC MIXL ADC1 Switch' on" + cset "name='Stereo1 ADC MIXR ADC1 Switch' on" + cset "name='DAC1 MIXL Stereo ADC Switch' off" + cset "name='DAC1 MIXR Stereo ADC Switch' off" + cset "name='media_loop2_out mix 0 codec_in0 Switch' on" + cset "name='pcm1_out mix 0 media_loop2_in Switch' on" + + # Set ADC Volume + cset "name='IN Capture Volume' 23" + cset "name='STO1 ADC Capture Volume' 70" + ] + + DisableSequence [] + Value {} +} + +SectionDevice."Speaker" { + Comment "Stereo Speakers" + + ConflictingDevice [] + + Value { + PlaybackPCM "hw:${CardId}" + # The speaker ampl. path on the 5659 has no speaker vol control + # Use the digital DAC1 master control as MixerElem + PlaybackMixerElem "DAC1" + } + + EnableSequence [ + cset "name='DAC1 Playback Switch' on" + ] + DisableSequence [ + cset "name='DAC1 Playback Switch' off" + ] +} + +SectionDevice."IntMic" { + Comment "Microphone" + + ConflictingDevice [] + + EnableSequence [ + # Enable Int Mic + cset "name='Int Mic Switch' on" + cset "name='RECMIX1L BST3 Switch' on" + cset "name='RECMIX1R BST4 Switch' on" + ] + + DisableSequence [ + cset "name='Int Mic Switch' off" + cset "name='RECMIX1L BST3 Switch' off" + cset "name='RECMIX1R BST4 Switch' off" + ] + + Value { + CapturePCM "hw:${CardId}" + # CaptureMixerElem "Int Mic" + CaptureVolume "IN Capture Volume" + CaptureSwitch "Int Mic Switch" + } +} \ No newline at end of file diff --git a/device/testing/device-xiaomi-latte/alsa-ucm-conf/cht-bsw-rt5659.conf b/device/testing/device-xiaomi-latte/alsa-ucm-conf/cht-bsw-rt5659.conf new file mode 100644 index 000000000..99e31e1e9 --- /dev/null +++ b/device/testing/device-xiaomi-latte/alsa-ucm-conf/cht-bsw-rt5659.conf @@ -0,0 +1,6 @@ +Syntax 3 + +SectionUseCase."HiFi" { + File "/Intel/cht-bsw-rt5659/HiFi.conf" + Comment "Default" +} \ No newline at end of file diff --git a/device/testing/device-xiaomi-latte/deviceinfo b/device/testing/device-xiaomi-latte/deviceinfo new file mode 100644 index 000000000..269865919 --- /dev/null +++ b/device/testing/device-xiaomi-latte/deviceinfo @@ -0,0 +1,28 @@ +# Reference: +# Please use double quotes only. You can source this file in shell +# scripts. + +deviceinfo_format_version="0" +deviceinfo_name="XiaoMi Pad2" +deviceinfo_manufacturer="XiaoMi" +deviceinfo_codename="xiaomi-latte" +deviceinfo_year="2015" +deviceinfo_arch="x86_64" + +# Device related +deviceinfo_chassis="tablet" +deviceinfo_external_storage="false" +deviceinfo_drm="true" + +# Bootloader related +deviceinfo_initfs_compression="zstd:default" +deviceinfo_generate_grub_config="true" + +# filesystem +deviceinfo_boot_filesystem="fat32" +# deviceinfo_swap_size_recommended="2048" + +# USB +deviceinfo_usb_idVendor="0x18d1" +deviceinfo_usb_idProduct="0x2d00" +deviceinfo_usb_serialnumber="0" diff --git a/device/testing/device-xiaomi-latte/grub.cfg b/device/testing/device-xiaomi-latte/grub.cfg new file mode 100644 index 000000000..d4cf4c0e6 --- /dev/null +++ b/device/testing/device-xiaomi-latte/grub.cfg @@ -0,0 +1,2 @@ +set prefix=($root)'/grub' +configfile $prefix/grub.cfg diff --git a/device/testing/device-xiaomi-latte/keyboard.hwdb b/device/testing/device-xiaomi-latte/keyboard.hwdb new file mode 100644 index 000000000..25fd241ec --- /dev/null +++ b/device/testing/device-xiaomi-latte/keyboard.hwdb @@ -0,0 +1,14 @@ +########################################################### +# Xiaomi +########################################################### + +# Fix mapping of menu / home / back capacitive buttons on bottom bezel +# Menu: LeftMeta + S -> menu (ignore LeftMeta, map S to menu) +# Home: LeftCtrl + Esc -> LeftMeta (ignore LeftCtrl, map Esc to LeftMeta) +# Back: Backspace -> back (map backspace to back) +evdev:name:FTSC1000:00 2808:509C Keyboard:dmi:*:svnXiaomiInc:pnMipad2:* + KEYBOARD_KEY_700e0=reserved # LeftCtrl -> ignore + KEYBOARD_KEY_700e3=reserved # LeftMeta -> ignore + KEYBOARD_KEY_70016=menu # S -> menu + KEYBOARD_KEY_70029=leftmeta # Esc -> LeftMeta (Windows key / Win8 tablets home) + KEYBOARD_KEY_7002a=back # Backspace -> back diff --git a/device/testing/device-xiaomi-latte/modules-initfs b/device/testing/device-xiaomi-latte/modules-initfs new file mode 100644 index 000000000..d48b00cf6 --- /dev/null +++ b/device/testing/device-xiaomi-latte/modules-initfs @@ -0,0 +1,21 @@ +# emmc module +sdhci-acpi +mmc_block + +# USB +xhci_pci +xhci_hub +usbkbd + +# Torch Screen +i2c-hid-acpi +hid-multitouch + +# filesystem drivers +btrfs + +# Debug shell Usage +dwc3 +dwc3_pci + +snd_soc_rt5659 \ No newline at end of file diff --git a/device/testing/linux-xiaomi-latte/APKBUILD b/device/testing/linux-xiaomi-latte/APKBUILD new file mode 100644 index 000000000..98c69296e --- /dev/null +++ b/device/testing/linux-xiaomi-latte/APKBUILD @@ -0,0 +1,72 @@ +# Reference: +# Kernel config based on: https://github.com/Qs315490/linux_latte/blob/main/arch/x86/configs/xiaomipad2_defconfig + +pkgname=linux-xiaomi-latte +pkgver=6.16.0 +pkgrel=0 +pkgdesc="Upstream Kernel For XiaoMi Pad2" +arch="x86_64" +_carch="x86_64" +_flavor="xiaomi-latte" +url="https://github.com/torvalds/linux" +license="GPL-2.0-only" +options="!strip !check !tracedeps pmb:cross-native pmb:kconfigcheck-uefi" +makedepends=" + bash + bc + bison + devicepkg-dev + flex + openssl-dev + perl + gcompat + linux-headers + elfutils-dev + gawk + sbsigntool +" + +# Source +_config=xiaomipad2_defconfig +_commit="038d61fd642278bab63ee8ef722c50d10ab01e8f" +source=" + $pkgname-$_commit.tar.gz::https://github.com/torvalds/linux/archive/$_commit.tar.gz + $_config + latte-audio-fix.patch + latte-i915-fix.patch + MOK.crt + MOK.key +" +builddir="$srcdir/linux-$_commit" +_outdir="out" + +prepare() { + default_prepare + rm -rf ${builddir}/include/config + REPLACE_GCCH=0 . downstreamkernel_prepare +} + +build() { + unset LDFLAGS + make O="$_outdir" ARCH="$_carch" CC="${CC:-gcc}" LOCALVERSION= \ + KBUILD_BUILD_VERSION="$((pkgrel + 1 ))-postmarketOS" +} + +package() { + downstreamkernel_package "$builddir" "$pkgdir" "$_carch" "$_flavor" "$_outdir" + + # package kernel modules + make O="$_outdir" ARCH="$_carch" INSTALL_MOD_STRIP=1 INSTALL_MOD_PATH="$pkgdir" modules_install + + # self sign kernel for Secure Boot + sbsign --key ${startdir}/MOK.key --cert ${startdir}/MOK.crt --output $pkgdir/boot/vmlinuz $pkgdir/boot/vmlinuz +} + +sha512sums=" +9cfd1b774fce4237966f32c1880e087490885b8464cefb468c777b6ff022e9ec22a0ec0c051940fff86813c5f535e7c8e291f8998fd5ae8eaebcd546729b1ee6 linux-xiaomi-latte-038d61fd642278bab63ee8ef722c50d10ab01e8f.tar.gz +407913bf970ee0b2e8c53d94224765e3603f987859c67926987d6d39cb70b0cfd6d0ed0f07af1f91a7dcd1ed6baf804b6b4c067b9e15ac7b58e859b479db4b72 xiaomipad2_defconfig +7e3eeb8d54e2bf13bd9b126259daf2dd38cf698c3e66401a953d2ff235a87cfab33ea3f45575ec21cec3987f8cc0fd07f2aabc0c419753e215a851e219502025 latte-audio-fix.patch +7a311bb9ff309349fb5dc11a8a9b18f6595abb28108da60a67cd95dd9c713f150f29068c001400f47010fab1809f092ef2cc4393bab98a64592334ca8650519a latte-i915-fix.patch +fedc27118b43badbcd47f44ac127ff9f02ce4e53ba04350c5bd893d6f6f6ff687c73f8cc7b15e8c71bc0def1ec63247ab675e95b339402edbaa744a3d8acf39d MOK.crt +1b5d43a851e7dc4085e34368b145752d4f8d00671db097f09b85a0152e1427486e7887f9a7fd876b9f97ca4f22dcd584c496f2d8bd9a7d2e64cc1fecad8ce0f0 MOK.key +" diff --git a/device/testing/linux-xiaomi-latte/MOK.crt b/device/testing/linux-xiaomi-latte/MOK.crt new file mode 100644 index 000000000..1cc8ec7a2 --- /dev/null +++ b/device/testing/linux-xiaomi-latte/MOK.crt @@ -0,0 +1,30 @@ +-----BEGIN CERTIFICATE----- +MIIFHzCCAwegAwIBAgIUbBpddeRKJVk1Bi3NVQjrR3c80+IwDQYJKoZIhvcNAQEL +BQAwHzEdMBsGA1UEAwwUbXkgTWFjaGluZSBPd25lciBLZXkwHhcNMjUwMjA2MDQ0 +NzA4WhcNMzUwMjA0MDQ0NzA4WjAfMR0wGwYDVQQDDBRteSBNYWNoaW5lIE93bmVy +IEtleTCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAImHcg5tn/z+knqX +dEkib14K/0eeDcjnaW4LEmn1/JQvQvfHOYNXmWpb6Gq5ouK15CJKVnESpdH00ag3 +j9Ctc3lWCl4uwRjyB3LRUeLvq801BjGS3pKsSFHEZiNXnF7Ry5Srxc9FZOveKC4y +u1ZEkFrbFl16WWeDgFZbFqKkxIPGH5lufZneaesgZK+jw+IOEqpJGilEU6QGo0r+ +Qjk0sVm5NnU5wN+8uGAThOxN5RKwrOwi4yagdYyua0XujUHS9CFyA7MmFL1cF9z8 +UCe+2aHBvvhD0YI5ES75EOYJQOZjbpLoSEa0zWQceF1Bbet7XpytMGMnwCe/+FgQ +vcfkdpy42jk74KYb12iX6NzNJkPsCjYLYDFB6FH/QKD8314PYnYcd6nvMqM9mOQq +Z0HbTPOYLykZzC8Y5nMIA46YCUxBCyI4Q3JqMfuaiPlPp9GpcOntVRuFP8yPnAoG +e7xcowo18AEtTOZIjrpjF/QobBX4I7Cdp0ExPa+3T5aqfeqsZaVBzdGYVkWXZpf/ +VEWMmNfwC2fd1amdsf8hZLjaZSdkaQFSUbXdxsH8r2nqJo5Y9lCIt6jghWxCEdqJ +DmtjxEJ78jmVn3pSbNTwQr4fZvZruJTipmy2eNIHxR0L2xfg9hRbzLXdegdvwFwL +bo3LT6Lull8vxCqntmPumZmFRi6RAgMBAAGjUzBRMB0GA1UdDgQWBBTbyyTkMjE8 +ugvjrCuHjHGYiXWyzjAfBgNVHSMEGDAWgBTbyyTkMjE8ugvjrCuHjHGYiXWyzjAP +BgNVHRMBAf8EBTADAQH/MA0GCSqGSIb3DQEBCwUAA4ICAQAPTMrgcOFprhoOkB52 +Yv4AqP5VaotsRFEiEBwmLXO720owHTVvTYvBuCaGTXg+zlpN8lnCyKvX7MNYa72B +CdnM3fHN8NAyw0gtXPb+5jerDyf7bPUMPW9iQ9Y8xoiKi6YOrEWZWUPtbofeKoO9 +tC1uAiVa/HGDlXFpvuAsmzGZc2cv2nXkjFERyXNAUvN8KNgV4lmLr3RLlU75wYDp +NYlLE5XTiSzHF/BtM1xyIF44WxDOyVFxSdq/X6UxcetMTqe7vmHf3X0XOpNtSLYm +rfjuvpBud1h7IbevU1vLYWphYh0SQ//nIVb8abG/zWRAp2VNzjW34CBVZA+Oo8GT +88p9XeCVbph/gQpilL0orEy3ZfCpPuL860mLwHCuyie4wLBshWUZrj9Xhr7FBaRq +x9XXoG58gl6IamAwy7CFPCqtRyEBqczAY2aWMJxGJXfiNbJn9LhO/l3hi6S5Zor3 +Ie2kIOVtoQ/I0iAf/SWotgs9FT3MmmXs5JqErXx2SiRTIqP2r6W+oC6AX9ng4Z3j ++truzUIIq3FNnUQymjf84DYGb7QWGLSyf4516juEqcv0qr33U2wLxAXrXZ3tkBbg +gOLh9egMpLO3C1m5ly6vRH4XK1gjs9GPeH7JIw78DuJUKN/tJksw9OaEMZcE09xp +4VoF3RjK1M6035/ZgNOsrUC6kw== +-----END CERTIFICATE----- diff --git a/device/testing/linux-xiaomi-latte/MOK.key b/device/testing/linux-xiaomi-latte/MOK.key new file mode 100644 index 000000000..402c33d87 --- /dev/null +++ b/device/testing/linux-xiaomi-latte/MOK.key @@ -0,0 +1,52 @@ +-----BEGIN PRIVATE KEY----- +MIIJQgIBADANBgkqhkiG9w0BAQEFAASCCSwwggkoAgEAAoICAQCJh3IObZ/8/pJ6 +l3RJIm9eCv9Hng3I52luCxJp9fyUL0L3xzmDV5lqW+hquaLiteQiSlZxEqXR9NGo +N4/QrXN5VgpeLsEY8gdy0VHi76vNNQYxkt6SrEhRxGYjV5xe0cuUq8XPRWTr3igu +MrtWRJBa2xZdellng4BWWxaipMSDxh+Zbn2Z3mnrIGSvo8PiDhKqSRopRFOkBqNK +/kI5NLFZuTZ1OcDfvLhgE4TsTeUSsKzsIuMmoHWMrmtF7o1B0vQhcgOzJhS9XBfc +/FAnvtmhwb74Q9GCOREu+RDmCUDmY26S6EhGtM1kHHhdQW3re16crTBjJ8Anv/hY +EL3H5HacuNo5O+CmG9dol+jczSZD7Ao2C2AxQehR/0Cg/N9eD2J2HHep7zKjPZjk +KmdB20zzmC8pGcwvGOZzCAOOmAlMQQsiOENyajH7moj5T6fRqXDp7VUbhT/Mj5wK +Bnu8XKMKNfABLUzmSI66Yxf0KGwV+COwnadBMT2vt0+Wqn3qrGWlQc3RmFZFl2aX +/1RFjJjX8Atn3dWpnbH/IWS42mUnZGkBUlG13cbB/K9p6iaOWPZQiLeo4IVsQhHa +iQ5rY8RCe/I5lZ96UmzU8EK+H2b2a7iU4qZstnjSB8UdC9sX4PYUW8y13XoHb8Bc +C26Ny0+i7pZfL8Qqp7Zj7pmZhUYukQIDAQABAoICAB+12keXYUdNT2ry1v4x8WnG +sVvLBrSnHvkflmxWKpnkV9WX2xv8q8QJUwqgqP0LIYICj/Hccd16TIkz3nYoODLm +8tcKgr2EuNDxkKb5yiwzqKzvh2BcVwR7e210uvpl90HdZWvIPV/hRnR4gBeBEaPR +VlPRbSHgAUxoDk0MHr+fhBO1lUJQNS3gtzaEVRsfUZBv8JdJSNvOKAKXo59bFfVx +LixTV7R+6ChG9+QghcwMbqK33JZAczov0U47ldhykpXPmyjIhAmxXVM33id76uRQ +Lv9Ba+JR1DN3fDz+Lzev/4PiCSA8egs2QU6HUpf0Rzlq+XgzZywDKHjty0R22h4s +Pc6NwILF2Tq/aJ27de+6ZPv6b8bVwV09jvql2OuYhMOJkp7cYwISfgC1+IKflwm+ +UjQgd7mCXOWoScAZD15ZhBVmiXk1pdXZQpTTERLVkC/VclmWN3ciHonWvfQumoPw +tcMM+JT9qeTzHgD1jn+yKUOvfU0EYHvdejjEVZmIGkt2llHBSkD8WaitMuHD9Uhd +ENmDgRzQQXShmmxXKDy1GfFVdjRPL8508aAxsU2J2y3d8B7pR9l2M8yHT3U2TkH7 +4ldiMpnUIWb8xppXQzWu+8jvgdoKOjaFkUX8csOmwAo1jsYJTQb4bReyryD8mRes +o2+o4sY+J4LUnEsxr439AoIBAQC7vjRJr6vhGXhER9LmBYHJdFBat/wtFgCPBBz1 +MfU5BHRqoSa+SRAtgXmC2RoP+oHf6UBBI+aG+im1ac+SNnRfYG6920xjzOeltCoN +lLA6NLJg44ZFa5taV8mQ4p51YPC2BoGC0LAu3N4ltLTJDCHqsBxkyXew8KfqwieU +9J8a8QbIXkp2MC8Hw3O1Is75H/fLVujXj9yN/d4WjSbZ5QgCUnjSjD8VZ1Kjk+9u +qnGu6GXV/zbIdQCgQOLK3GpUG0slI2srtFTgXSKWUDQv/mczu6bwlusncGv/EpPt +rP9mKbar0F0UqARhWogmS5FoksySqs9lcE+6yTWxLxhVxxxfAoIBAQC7h69MXme3 +CkzQvAHAtfCzfUZznyf1sm9F+ycXy75vMEf2JIC8BQdOOxvGuToj1EJ/kkpQsGG+ +SQ5/07IiNZZSFPmsIbX9d0xi3+vyGLkQuCcfK09XBUg9A6wZgjr7bGjmU8rfd4Ts +kKlzF6d3pNltNFKhLJbnKPVVa3ZksmFPFRyAsLH8DDJ4WVhRp6V0kgcnPh4Uk9PH +4oiAe0ZqvxzWEvfY8PTJFRXrTzKprOHOuFnZF744riGhsXp6JHE3cnpgrdnXCag4 +Ukp7MXTye4AwQTz4xd6zXhveYapYMPlVNfY3f953jUbHplrjG0zT3szPCNBzKD7/ +vEnNJNhmUpsPAoIBADcrxvvcdvsYXAJcxPo5phFIcBCovp+VNqbQg53+h1yxFXD8 +WIFUwT9OLCIqoIEPkbj2N56s6SLDQxx/srL586rPkNuUJVeysGQ+lJkXF86TC9Rz +KFMgMzASWjaMkhpWWYZ0VPzXTN8IovObrgDi4tiv1jg8CENkBUR0t+MLG/Jz4BVj +uCgRMtDqPAd/6ijFnzEPIi+upBbKAsjHxCIGLxtXlw/wjN1CVsOhRpxT1EKdIsgH +TtcLoxp01vDcYxbCSovoY6cdQFAKro5TlXKBJVzLiVxsTUByxhnYIMaYrxkbqwXE +noXidh8R1q7CSEHd2eZD8dySa6utU2z1NQaIE6sCggEANHtLlt7QvcwXJU+IWgtQ ++ppzrgX7o+o08+vOy/0MJYfoi705feUWX1Fxe5L473AG0Db7r0s9f4hok2OGdcZz +dDNEkGS6zt2lNgKewJkkqcYvxKxVPvBOgCzX7CejJBv524PVweZr/9yYX4peJsCu +zL4Y5dxZuwWeazJw5st5Ki2pVWad2QD82ut+KRP23QHFGLlsp6ubWFRQiUx2r4ce +pdaXIFKG3wOUp875Sb0FUNoM4xGe/bPV26+UrDwopzDViNr+nQyp1GFLUODNbtMb +U+XeD20o3x/WQs0oZBgIn01Dw9J4SxLxnQw0YVyRirXOsZ4w4BmCUAW8zbmjCjfS +BwKCAQEAuce0T8COVnuEUXIzIDkHi2gaLT91OUVOLLtaRulxhBU6gBuunrvFZOv/ +k3k7IkXAWfSzVNx4/YDwIkU/V/l12nWqFF03WRG0QXDDfEScdxkZVeEacL6YXqQe +4BbHMTq6MGCJEUrrj393I5/zFer/0CywPxNiELD+5gI+aLAw+LcaWKewOjSQCTlZ +86bqyjarnbd/iqM1r1dyOYRWAmMprLuOec+30Fcfyj+clhOLCBjUE3JKBI6Yu4H8 +z3bm+xBEYmkYtxBMD60WBSCois/3ue619kLj60Qz81QMdQIRn+mYcHYfXfneA5qu +Rux2EhPI9A1Eqva+5t3PQnbfHK9EgA== +-----END PRIVATE KEY----- diff --git a/device/testing/linux-xiaomi-latte/latte-audio-fix.patch b/device/testing/linux-xiaomi-latte/latte-audio-fix.patch new file mode 100644 index 000000000..7b77b2205 --- /dev/null +++ b/device/testing/linux-xiaomi-latte/latte-audio-fix.patch @@ -0,0 +1,1092 @@ +diff --color -u -r -N a/drivers/platform/x86/x86-android-tablets/other.c b/drivers/platform/x86/x86-android-tablets/other.c +--- a/drivers/platform/x86/x86-android-tablets/other.c 2025-04-27 15:56:35.538630075 +0800 ++++ b/drivers/platform/x86/x86-android-tablets/other.c 2025-04-27 16:02:29.437301184 +0800 +@@ -918,12 +918,45 @@ + .swnode = &ktd2026_node, + }, + .adapter_path = "\\_SB_.PCI0.I2C3", ++ }, { ++ /* TFA9890A audio amplifier */ ++ .board_info = { ++ .type = "tfa9890", ++ .addr = 0x34, ++ .dev_name = "tfa9890:00", ++ }, ++ .adapter_path = "\\_SB_.PCI0.I2C2", ++ }, { ++ /* TFA9890A audio amplifier */ ++ .board_info = { ++ .type = "tfa9890", ++ .addr = 0x37, ++ .dev_name = "tfa9890:01", ++ }, ++ .adapter_path = "\\_SB_.PCI0.I2C2", + }, + }; + ++static struct gpiod_lookup_table xiaomi_mipad2_codec_rt5659_gpios = { ++ .dev_id = "i2c-10EC5659:01", ++ .table = { ++ /* INT33FF:00 gpio 81 */ ++ GPIO_LOOKUP("INT33FF:00", 593 - 512, "ldo1-en", GPIO_ACTIVE_HIGH), ++ /* INT33FF:01 gpio 46 */ ++ GPIO_LOOKUP("INT33FF:01", 656 - 610, "reset", GPIO_ACTIVE_HIGH), ++ { } ++ }, ++}; ++ ++static struct gpiod_lookup_table * const xiaomi_mipad2_gpios[] = { ++ &xiaomi_mipad2_codec_rt5659_gpios, ++ NULL ++}; ++ + const struct x86_dev_info xiaomi_mipad2_info __initconst = { + .i2c_client_info = xiaomi_mipad2_i2c_clients, + .i2c_client_count = ARRAY_SIZE(xiaomi_mipad2_i2c_clients), + .init = xiaomi_mipad2_init, + .exit = xiaomi_mipad2_exit, ++ .gpiod_lookup_tables = xiaomi_mipad2_gpios, + }; +diff --color -u -r -N a/sound/soc/codecs/rt5659.c b/sound/soc/codecs/rt5659.c +--- a/sound/soc/codecs/rt5659.c 2025-04-27 15:56:35.707676732 +0800 ++++ b/sound/soc/codecs/rt5659.c 2025-04-27 16:13:21.270019374 +0800 +@@ -1135,7 +1135,7 @@ + + static const DECLARE_TLV_DB_SCALE(hp_vol_tlv, -2325, 75, 0); + static const DECLARE_TLV_DB_SCALE(out_vol_tlv, -4650, 150, 0); +-static const DECLARE_TLV_DB_SCALE(dac_vol_tlv, -65625, 375, 0); ++static const DECLARE_TLV_DB_SCALE(dac_vol_tlv, -13125, 75, 0); + static const DECLARE_TLV_DB_SCALE(in_vol_tlv, -3450, 150, 0); + static const DECLARE_TLV_DB_SCALE(adc_vol_tlv, -17625, 375, 0); + static const DECLARE_TLV_DB_SCALE(adc_bst_tlv, 0, 1200, 0); +@@ -1329,9 +1329,19 @@ + static irqreturn_t rt5659_irq(int irq, void *data) + { + struct rt5659_priv *rt5659 = data; ++ int entry_is_empty = list_empty(&rt5659->jack_detect_work.work.entry); + +- queue_delayed_work(system_power_efficient_wq, +- &rt5659->jack_detect_work, msecs_to_jiffies(250)); ++ printk("rt5659 [%s]: jack_detect_work entry is empty: %s\n", __func__, entry_is_empty? "true":"false"); ++ if (!entry_is_empty) { ++ printk("rt5659 [%s]: jack_detect_work func is %pS\n", __func__, rt5659->jack_detect_work.work.func); ++ } ++ ++ if (rt5659->pdata.jd_src == RT5659_JD_NULL) { ++ printk("rt5659 [%s]: rt5659->pdata.jd_src = RT5659_JD_NULL, jack_detect_work not init.", __func__); ++ } else { ++ queue_delayed_work(system_power_efficient_wq, ++ &rt5659->jack_detect_work, msecs_to_jiffies(250)); ++ } + + return IRQ_HANDLED; + } +diff --color -u -r -N a/sound/soc/codecs/tfa989x.c b/sound/soc/codecs/tfa989x.c +--- a/sound/soc/codecs/tfa989x.c 2025-04-27 15:56:35.708676729 +0800 ++++ b/sound/soc/codecs/tfa989x.c 2025-04-27 18:46:08.550702704 +0800 +@@ -84,6 +84,7 @@ + static const char * const chsa_text[] = { "Left", "Right", /* "DSP" */ }; + static SOC_ENUM_SINGLE_DECL(chsa_enum, TFA989X_I2SREG, TFA989X_I2SREG_CHSA, chsa_text); + static const struct snd_kcontrol_new chsa_mux = SOC_DAPM_ENUM("Amp Input", chsa_enum); ++static const struct snd_kcontrol_new chsa_mux1 = SOC_DAPM_ENUM("Amp Input1", chsa_enum); + + static const struct snd_soc_dapm_widget tfa989x_dapm_widgets[] = { + SND_SOC_DAPM_OUTPUT("OUT"), +@@ -103,6 +104,25 @@ + {"Amp Input", "Right", "AIFINR"}, + }; + ++// 第二芯片 ++static const struct snd_soc_dapm_widget tfa9890_dapm_widgets[] = { ++ SND_SOC_DAPM_OUTPUT("OUT1"), ++ SND_SOC_DAPM_SUPPLY("POWER1", TFA989X_SYS_CTRL, TFA989X_SYS_CTRL_PWDN, 1, NULL, 0), ++ SND_SOC_DAPM_OUT_DRV("AMPE1", TFA989X_SYS_CTRL, TFA989X_SYS_CTRL_AMPE, 0, NULL, 0), ++ ++ SND_SOC_DAPM_MUX("Amp Input1", SND_SOC_NOPM, 0, 0, &chsa_mux1), ++ SND_SOC_DAPM_AIF_IN("AIFINL", "HiFi Playback", 0, SND_SOC_NOPM, 0, 0), ++ SND_SOC_DAPM_AIF_IN("AIFINR", "HiFi Playback", 0, SND_SOC_NOPM, 0, 0), ++}; ++ ++static const struct snd_soc_dapm_route tfa9890_dapm_routes[] = { ++ {"OUT1", NULL, "AMPE1"}, ++ {"AMPE1", NULL, "POWER1"}, ++ {"AMPE1", NULL, "Amp Input1"}, ++ {"Amp Input1", "Left", "AIFINL"}, ++ {"Amp Input1", "Right", "AIFINR"}, ++}; ++ + static int tfa989x_put_mode(struct snd_kcontrol *kcontrol, struct snd_ctl_elem_value *ucontrol) + { + struct snd_soc_component *component = snd_soc_kcontrol_component(kcontrol); +@@ -139,6 +159,16 @@ + .use_pmdown_time = 1, + .endianness = 1, + }; ++// 第二芯片 ++static const struct snd_soc_component_driver tfa9890_component = { ++ .probe = tfa989x_probe, ++ .dapm_widgets = tfa9890_dapm_widgets, ++ .num_dapm_widgets = ARRAY_SIZE(tfa9890_dapm_widgets), ++ .dapm_routes = tfa9890_dapm_routes, ++ .num_dapm_routes = ARRAY_SIZE(tfa9890_dapm_routes), ++ .use_pmdown_time = 1, ++ .endianness = 1, ++}; + + static const unsigned int tfa989x_rates[] = { + 8000, 11025, 12000, 16000, 22050, 24000, 32000, 44100, 48000 +@@ -171,8 +201,59 @@ + sr << TFA989X_I2SREG_I2SSR); + } + ++/*****************************************************************************/ ++ /* Params masks */ ++ #define TFA98XX_FORMAT_MASK (0x7) ++ #define TFA98XX_FORMAT_LSB (0x4) ++ #define TFA98XX_FORMAT_MSB (0x2) ++ ++ static int tfa989x_set_dai_fmt(struct snd_soc_dai *codec_dai, unsigned int fmt) ++ { ++ struct snd_soc_component *component = codec_dai->component; ++ //struct tfa989x *tfa989x = snd_soc_component_get_drvdata(component); ++ u16 val; ++ ++ pr_debug("\n"); ++ pr_info("tfa989x received fmt: %d\n",fmt); ++ ++ /* set master/slave audio interface */ ++ switch (fmt & SND_SOC_DAIFMT_MASTER_MASK) { ++ case SND_SOC_DAIFMT_CBC_CFC: ++ /* default value */ ++ break; ++ case SND_SOC_DAIFMT_CBP_CFP: ++ default: ++ /* only supports Slave mode */ ++ pr_err("tfa989x: invalid DAI master/slave interface\n"); ++ return -EINVAL; ++ } ++ val = snd_soc_component_read(component, TFA989X_I2SREG); ++ switch (fmt & SND_SOC_DAIFMT_FORMAT_MASK) { ++ case SND_SOC_DAIFMT_I2S: ++ /* default value */ ++ break; ++ case SND_SOC_DAIFMT_RIGHT_J: ++ val &= ~(TFA98XX_FORMAT_MASK); ++ val |= TFA98XX_FORMAT_LSB; ++ break; ++ case SND_SOC_DAIFMT_LEFT_J: ++ val &= ~(TFA98XX_FORMAT_MASK); ++ val |= TFA98XX_FORMAT_MSB; ++ break; ++ default: ++ pr_err("tfa989x: invalid DAI interface format\n"); ++ return -EINVAL; ++ } ++ ++ snd_soc_component_write(component, TFA989X_I2SREG, val); ++ ++ return 0; ++ } ++ /*****************************************************************************/ ++ + static const struct snd_soc_dai_ops tfa989x_dai_ops = { + .hw_params = tfa989x_hw_params, ++ .set_fmt = tfa989x_set_dai_fmt, + }; + + static struct snd_soc_dai_driver tfa989x_dai = { +@@ -322,11 +403,19 @@ + struct regmap *regmap; + unsigned int val; + int ret; ++ const char* name = dev_name(dev); ++ const char id = name[13]; ++ ++ dev_dbg(&i2c->dev, "tfa989x i2c addr is: %x \n", i2c->addr); + + rev = device_get_match_data(dev); + if (!rev) { +- dev_err(dev, "unknown device revision\n"); +- return -ENODEV; ++ if (strstr(name,"i2c-tfa9890")) { ++ rev = &tfa9890_rev; ++ } else { ++ dev_err(dev, "unknown device revision\n"); ++ return -ENODEV; ++ } + } + + tfa989x = devm_kzalloc(dev, sizeof(*tfa989x), GFP_KERNEL); +@@ -399,6 +488,12 @@ + } + regcache_cache_bypass(regmap, false); + ++ if (id == '1') { ++ pr_info("tfa989x --> Right\n"); ++ return devm_snd_soc_register_component(dev, &tfa9890_component, ++ &tfa989x_dai, 1); ++ } ++ pr_info("tfa989x --> Left\n"); + return devm_snd_soc_register_component(dev, &tfa989x_component, + &tfa989x_dai, 1); + } +@@ -411,12 +506,21 @@ + }; + MODULE_DEVICE_TABLE(of, tfa989x_of_match); + ++static const struct i2c_device_id tfa989x_i2c_id[] = { ++ {.name = "tfa989x", 0}, ++ {.name = "tfa9890", 0}, ++ {.name = "i2c-tfa9890", 0}, ++ {} ++}; ++MODULE_DEVICE_TABLE(i2c, tfa989x_i2c_id); ++ + static struct i2c_driver tfa989x_i2c_driver = { + .driver = { + .name = "tfa989x", + .of_match_table = tfa989x_of_match, + }, + .probe = tfa989x_i2c_probe, ++ .id_table = tfa989x_i2c_id, + }; + module_i2c_driver(tfa989x_i2c_driver); + +diff --color -u -r -N a/sound/soc/intel/boards/cht_bsw_rt5659.c b/sound/soc/intel/boards/cht_bsw_rt5659.c +--- a/sound/soc/intel/boards/cht_bsw_rt5659.c 1970-01-01 08:00:00.000000000 +0800 ++++ b/sound/soc/intel/boards/cht_bsw_rt5659.c 2025-04-27 18:54:32.827896647 +0800 +@@ -0,0 +1,776 @@ ++// SPDX-License-Identifier: GPL-2.0-only ++/* ++ * cht_bsw_rt5659.c - ASoc Machine driver for Intel Cherryview-based platforms ++ * Cherrytrail and Braswell, with RT5659 codec. ++ * ++ * Copyright (C) 2014 Intel Corp ++ * Author: Subhransu S. Prusty ++ * Mengdong Lin ++ */ ++ ++ #include ++ #include ++ #include ++ #include ++ #include ++ #include ++ #include ++ #include ++ #include ++ #include ++ #include ++ #include ++ #include "../../codecs/rt5659.h" ++ #include "../atom/sst-atom-controls.h" ++ #include "../common/soc-intel-quirks.h" ++ ++ ++ /* The platform clock #3 outputs 19.2Mhz clock to codec as I2S MCLK */ ++ #define CHT_PLAT_CLK_3_HZ 19200000 ++ #define CHT_CODEC_DAI "rt5659-aif1" ++ #define CHT_CODEC_DAI2 "rt5659-aif2" ++ #define CHT_CODEC_DAI3 "rt5659-aif3" ++ ++ struct cht_mc_private { ++ struct snd_soc_jack headset; ++ char codec_name[SND_ACPI_I2C_ID_LEN]; ++ struct clk *mclk; ++ bool use_ssp0; ++ }; ++ ++ /* Headset jack detection DAPM pins */ ++ static struct snd_soc_jack_pin cht_bsw_headset_pins[] = { ++ { ++ .pin = "Headset Mic", ++ .mask = SND_JACK_MICROPHONE, ++ }, ++ { ++ .pin = "Headphone", ++ .mask = SND_JACK_HEADPHONE, ++ }, ++ }; ++ ++ static int platform_clock_control(struct snd_soc_dapm_widget *w, ++ struct snd_kcontrol *k, int event) ++ { ++ struct snd_soc_dapm_context *dapm = w->dapm; ++ struct snd_soc_card *card = dapm->card; ++ struct snd_soc_dai *codec_dai; ++ struct cht_mc_private *ctx = snd_soc_card_get_drvdata(card); ++ int ret; ++ ++ codec_dai = snd_soc_card_get_codec_dai(card, CHT_CODEC_DAI); ++ if (!codec_dai) { ++ dev_err(card->dev, "Codec dai not found; Unable to set platform clock\n"); ++ return -EIO; ++ } ++ ++ if (SND_SOC_DAPM_EVENT_ON(event)) { ++ if (ctx->mclk) { ++ ret = clk_prepare_enable(ctx->mclk); ++ if (ret < 0) { ++ dev_err(card->dev, ++ "could not configure MCLK state"); ++ return ret; ++ } ++ } ++ ++ /* set codec PLL source to the 19.2MHz platform clock (MCLK) */ ++ ret = snd_soc_dai_set_pll(codec_dai, 0, RT5659_PLL1_S_MCLK, ++ CHT_PLAT_CLK_3_HZ, 48000 * 512); ++ if (ret < 0) { ++ dev_err(card->dev, "can't set codec pll: %d\n", ret); ++ return ret; ++ } ++ ++ /* set codec sysclk source to PLL */ ++ ret = snd_soc_dai_set_sysclk(codec_dai, RT5659_SCLK_S_PLL1, ++ 48000 * 512, SND_SOC_CLOCK_IN); ++ if (ret < 0) { ++ dev_err(card->dev, "can't set codec sysclk: %d\n", ret); ++ return ret; ++ } ++ } else { ++ /* Set codec sysclk source to its internal clock because codec ++ * PLL will be off when idle and MCLK will also be off by ACPI ++ * when codec is runtime suspended. Codec needs clock for jack ++ * detection and button press. ++ */ ++ ret = snd_soc_dai_set_sysclk(codec_dai, RT5659_SCLK_S_RCCLK, ++ 48000 * 512, SND_SOC_CLOCK_IN); ++ if (ret < 0) { ++ dev_err(card->dev, "failed to set codec sysclk: %d\n", ret); ++ return ret; ++ } ++ ++ if (ctx->mclk) ++ clk_disable_unprepare(ctx->mclk); ++ } ++ return 0; ++ } ++ ++ static const struct snd_soc_dapm_widget cht_dapm_widgets[] = { ++ SND_SOC_DAPM_HP("Headphone", NULL), ++ SND_SOC_DAPM_MIC("Headset Mic", NULL), ++ SND_SOC_DAPM_MIC("Int Mic", NULL), ++ SND_SOC_DAPM_SPK("Ext Spk", NULL), ++ SND_SOC_DAPM_SUPPLY("Platform Clock", SND_SOC_NOPM, 0, 0, ++ platform_clock_control, SND_SOC_DAPM_PRE_PMU | ++ SND_SOC_DAPM_POST_PMD), ++ }; ++ ++ static const struct snd_soc_dapm_route cht_audio_map[] = { ++ {"IN1P", NULL, "Headset Mic"}, ++ {"IN1N", NULL, "Headset Mic"}, ++ {"IN3P", NULL, "Int Mic"}, ++ {"IN3N", NULL, "Int Mic"}, ++ {"IN4P", NULL, "Int Mic"}, ++ {"IN4N", NULL, "Int Mic"}, ++ {"Int Mic", NULL, "MICBIAS2"}, ++ {"Int Mic", NULL, "MICBIAS3"}, ++ {"Headphone", NULL, "HPOL"}, ++ {"Headphone", NULL, "HPOR"}, ++ {"Ext Spk", NULL, "SPOL"}, ++ {"Ext Spk", NULL, "SPOR"}, ++ }; ++ ++ static const struct snd_soc_dapm_route cht_audio_ssp0_map[] = { ++ {"AIF1 Playback", NULL, "ssp0 Tx"}, ++ {"ssp0 Tx", NULL, "modem_out"}, ++ {"modem_in", NULL, "ssp0 Rx"}, ++ {"ssp0 Rx", NULL, "AIF1 Capture"}, ++ }; ++ ++ static const struct snd_soc_dapm_route cht_audio_ssp2_map[] = { ++ {"AIF1 Playback", NULL, "ssp2 Tx"}, ++ {"ssp2 Tx", NULL, "codec_out0"}, ++ {"ssp2 Tx", NULL, "codec_out1"}, ++ {"codec_in0", NULL, "ssp2 Rx"}, ++ {"codec_in1", NULL, "ssp2 Rx"}, ++ {"ssp2 Rx", NULL, "AIF1 Capture"}, ++ {"AIF1 Playback", NULL, "Platform Clock"}, ++ {"AIF1 Capture", NULL, "Platform Clock"}, ++ }; ++ ++ static const struct snd_kcontrol_new cht_mc_controls[] = { ++ SOC_DAPM_PIN_SWITCH("Headphone"), ++ SOC_DAPM_PIN_SWITCH("Headset Mic"), ++ SOC_DAPM_PIN_SWITCH("Int Mic"), ++ SOC_DAPM_PIN_SWITCH("Ext Spk"), ++ }; ++ ++ static int cht_aif1_hw_params(struct snd_pcm_substream *substream, ++ struct snd_pcm_hw_params *params) ++ { ++ struct snd_soc_pcm_runtime *rtd = snd_soc_substream_to_rtd(substream); ++ struct snd_soc_dai *codec_dai = snd_soc_rtd_to_codec(rtd, 0); ++ unsigned int fmt; ++ int ret; ++ ////////////////////////////////////////////////////////////////// ++ pr_debug("Enter:%s, codec_dai name: %s\n", __func__,codec_dai->name); ++ ++ /* proceed only if dai is valid */ ++ if (strncmp(codec_dai->name, "rt5659-aif1", 11)) ++ return 0; ++ ++ /* TDM 4 slot 24 bit set the Rx and Tx bitmask to ++ * 4 active slots as 0xF ++ */ ++ ret = snd_soc_dai_set_tdm_slot(codec_dai, 0xF, 0xF, 4, ++ SNDRV_PCM_FORMAT_GSM); ++ if (ret < 0) { ++ pr_err("can't set codec TDM slot %d\n", ret); ++ return ret; ++ } ++ ++ /* TDM slave Mode */ ++ fmt = SND_SOC_DAIFMT_DSP_B | SND_SOC_DAIFMT_IB_NF ++ | SND_SOC_DAIFMT_CBC_CFC; ++ ++ /* Set codec DAI configuration */ ++ ret = snd_soc_dai_set_fmt(codec_dai, fmt); ++ if (ret < 0) { ++ pr_err("can't set codec DAI configuration %d\n", ret); ++ return ret; ++ } ++ //////////////////////////////////////////////////////////////////// ++ ++ /* set codec PLL source to the 19.2MHz platform clock (MCLK) */ ++ ret = snd_soc_dai_set_pll(codec_dai, 0, RT5659_PLL1_S_MCLK, ++ CHT_PLAT_CLK_3_HZ, params_rate(params) * 512); ++ if (ret < 0) { ++ dev_err(rtd->dev, "can't set codec pll: %d\n", ret); ++ return ret; ++ } ++ ++ /* set codec sysclk source to PLL */ ++ ret = snd_soc_dai_set_sysclk(codec_dai, RT5659_SCLK_S_PLL1, ++ params_rate(params) * 512, ++ SND_SOC_CLOCK_IN); ++ if (ret < 0) { ++ dev_err(rtd->dev, "can't set codec sysclk: %d\n", ret); ++ return ret; ++ } ++ return 0; ++ } ++ ++ static const struct acpi_gpio_params headset_gpios = { 0, 0, false }; ++ ++ static const struct acpi_gpio_mapping cht_rt5659_gpios[] = { ++ { "headset-gpios", &headset_gpios, 1 }, ++ {}, ++ }; ++ /* ++ static int cht_codec_init(struct snd_soc_pcm_runtime *runtime) ++ { ++ int ret; ++ struct snd_soc_dai *codec_dai = snd_soc_rtd_to_codec(runtime, 0); ++ struct snd_soc_component *component = codec_dai->component; ++ struct cht_mc_private *ctx = snd_soc_card_get_drvdata(runtime->card); ++ ++ if (devm_acpi_dev_add_driver_gpios(component->dev, cht_rt5659_gpios)) ++ dev_warn(runtime->dev, "Unable to add GPIO mapping table\n"); ++ ++ // Select codec ASRC clock source to track I2S1 clock, because codec ++ // is in slave mode and 100fs I2S format (BCLK = 100 * LRCLK) cannot ++ // be supported by RT5672. Otherwise, ASRC will be disabled and cause ++ // noise. ++ ++ rt5659_sel_asrc_clk_src(component, ++ RT5659_DA_STEREO_FILTER ++ | RT5659_DA_MONO_L_FILTER ++ | RT5659_DA_MONO_R_FILTER ++ | RT5659_AD_STEREO_FILTER ++ | RT5659_AD_MONO_L_FILTER ++ | RT5659_AD_MONO_R_FILTER, ++ RT5659_CLK_SEL_I2S1_ASRC); ++ ++ if (ctx->use_ssp0) { ++ ret = snd_soc_dapm_add_routes(&runtime->card->dapm, ++ cht_audio_ssp0_map, ++ ARRAY_SIZE(cht_audio_ssp0_map)); ++ } else { ++ ret = snd_soc_dapm_add_routes(&runtime->card->dapm, ++ cht_audio_ssp2_map, ++ ARRAY_SIZE(cht_audio_ssp2_map)); ++ } ++ if (ret) ++ return ret; ++ ++ ret = snd_soc_card_jack_new_pins(runtime->card, "Headset", ++ SND_JACK_HEADSET | SND_JACK_BTN_0 | ++ SND_JACK_BTN_1 | SND_JACK_BTN_2, ++ &ctx->headset, ++ cht_bsw_headset_pins, ++ ARRAY_SIZE(cht_bsw_headset_pins)); ++ if (ret) ++ return ret; ++ ++ snd_jack_set_key(ctx->headset.jack, SND_JACK_BTN_0, KEY_PLAYPAUSE); ++ snd_jack_set_key(ctx->headset.jack, SND_JACK_BTN_1, KEY_VOLUMEUP); ++ snd_jack_set_key(ctx->headset.jack, SND_JACK_BTN_2, KEY_VOLUMEDOWN); ++ ++ rt5659_set_jack_detect(component, &ctx->headset); ++ if (ctx->mclk) { ++ // The firmware might enable the clock at ++ // boot (this information may or may not ++ // be reflected in the enable clock register). ++ // To change the rate we must disable the clock ++ // first to cover these cases. Due to common ++ // clock framework restrictions that do not allow ++ // to disable a clock that has not been enabled, ++ // we need to enable the clock first. ++ ret = clk_prepare_enable(ctx->mclk); ++ if (!ret) ++ clk_disable_unprepare(ctx->mclk); ++ ++ ret = clk_set_rate(ctx->mclk, CHT_PLAT_CLK_3_HZ); ++ ++ if (ret) { ++ dev_err(runtime->dev, "unable to set MCLK rate\n"); ++ return ret; ++ } ++ } ++ return 0; ++ } ++ */ ++ static int cht_audio_init(struct snd_soc_pcm_runtime *runtime) ++ { ++ struct snd_soc_dai *codec_dai = snd_soc_rtd_to_codec(runtime, 0); ++ struct snd_soc_component *component = codec_dai->component; ++ struct cht_mc_private *ctx = snd_soc_card_get_drvdata(runtime->card); ++ int ret; ++ struct snd_soc_card *card = runtime->card; ++ ++ if (ctx->use_ssp0) { ++ ret = snd_soc_dapm_add_routes(&runtime->card->dapm, ++ cht_audio_ssp0_map, ++ ARRAY_SIZE(cht_audio_ssp0_map)); ++ pr_debug("%s add cht_audio_ssp0_map got ret %d \n", __func__,ret); ++ } else { ++ ret = snd_soc_dapm_add_routes(&runtime->card->dapm, ++ cht_audio_ssp2_map, ++ ARRAY_SIZE(cht_audio_ssp2_map)); ++ pr_debug("%s add cht_audio_ssp2_map got ret %d \n", __func__,ret); ++ } ++ ++ int codec_gpio; ++ int pol = 0, val = 0; ++ struct gpio_desc *desc; ++ ++ pr_debug("Enter:%s", __func__); ++ ++ /* Set codec bias level */ ++ card->dapm.bias_level = SND_SOC_BIAS_OFF; ++ card->dapm.idle_bias_off = true; ++ ++ desc = devm_gpiod_get_index(component->dev, NULL, 0, 0); ++ if (!IS_ERR(desc)) { ++ codec_gpio = desc_to_gpio(desc); ++ devm_gpiod_put(component->dev, desc); ++ pr_debug("%s: GPIOs - JD/BP-int: %d (pol = %d, val = %d)\n", ++ __func__, codec_gpio, pol, val); ++ ++ } else { ++ codec_gpio = -1; ++ pr_err("%s: GPIOs - JD/BP-int: Not present!\n", __func__); ++ } ++ ++ /* ++ hs_gpio.gpio = codec_gpio; ++ ++ ctx->intr_debounce = CHT_INTR_DEBOUNCE; ++ ctx->hs_insert_det_delay = CHT_HS_INSERT_DET_DELAY; ++ ctx->hs_remove_det_delay = CHT_HS_REMOVE_DET_DELAY; ++ ctx->button_det_delay = CHT_BUTTON_DET_DELAY; ++ ctx->hs_det_poll_intrvl = CHT_HS_DET_POLL_INTRVL; ++ ctx->hs_det_retry = CHT_HS_DET_RETRY_COUNT; ++ ctx->button_en_delay = CHT_BUTTON_EN_DELAY; ++ ctx->process_button_events = false; ++ //wake_lock_init(&ctx->jack_wake_lock, WAKE_LOCK_SUSPEND, "jack_wakelock"); ++ ++ INIT_DELAYED_WORK(&ctx->hs_insert_work, cht_check_hs_insert_status); ++ INIT_DELAYED_WORK(&ctx->hs_remove_work, cht_check_hs_remove_status); ++ INIT_DELAYED_WORK(&ctx->hs_button_work, cht_check_hs_button_status); ++ INIT_DELAYED_WORK(&ctx->hs_button_en_work, cht_enable_hs_button_events); ++ ++ mutex_init(&ctx->jack_mlock); ++ ++ ret = snd_soc_jack_new(codec, "Intel MID Audio Jack", ++ SND_JACK_HEADSET | SND_JACK_HEADPHONE | SND_JACK_BTN_0 | ++ SND_JACK_BTN_1 | SND_JACK_BTN_2, &ctx->jack); ++ if (ret) { ++ pr_err("jack creation failed\n"); ++ return ret; ++ } ++ ++ snd_jack_set_key(ctx->jack.jack, SND_JACK_BTN_0, KEY_MEDIA); ++ snd_jack_set_key(ctx->jack.jack, SND_JACK_BTN_1, BTN_1); ++ snd_jack_set_key(ctx->jack.jack, SND_JACK_BTN_2, BTN_2); ++ ++ ret = snd_soc_jack_add_gpios(&ctx->jack, 1, &hs_gpio); ++ if (ret) { ++ pr_err("adding jack GPIO failed\n"); ++ return ret; ++ } ++ */ ++ /* Keep the voice call paths active during ++ * suspend. Mark the end points ignore_suspend ++ */ ++ /*TODO: CHECK this */ ++ snd_soc_dapm_ignore_suspend(&component->dapm, "HPOL"); ++ snd_soc_dapm_ignore_suspend(&component->dapm, "HPOR"); ++ ++ snd_soc_dapm_ignore_suspend(&component->dapm, "SPOL"); ++ snd_soc_dapm_ignore_suspend(&component->dapm, "SPOR"); ++ ++ snd_soc_dapm_enable_pin(&card->dapm, "Headset Mic"); ++ snd_soc_dapm_enable_pin(&card->dapm, "Headphone"); ++ snd_soc_dapm_enable_pin(&card->dapm, "Ext Spk"); ++ snd_soc_dapm_enable_pin(&card->dapm, "Int Mic"); ++ ++ snd_soc_dapm_sync(&card->dapm); ++ return ret; ++ } ++ ++ static int cht_codec_fixup(struct snd_soc_pcm_runtime *rtd, ++ struct snd_pcm_hw_params *params) ++ { ++ struct cht_mc_private *ctx = snd_soc_card_get_drvdata(rtd->card); ++ struct snd_interval *rate = hw_param_interval(params, ++ SNDRV_PCM_HW_PARAM_RATE); ++ struct snd_interval *channels = hw_param_interval(params, ++ SNDRV_PCM_HW_PARAM_CHANNELS); ++ // int ret, bits; ++ ++ pr_debug("Invoked %s for dailink %s\n", __func__, rtd->dai_link->name); ++ ++ /* The DSP will covert the FE rate to 48k, stereo, 24bits */ ++ rate->min = rate->max = 48000; ++ channels->min = channels->max = 4; ++ ++ if (ctx->use_ssp0) { ++ // set SSP0 to 16-bit ++ params_set_format(params, SNDRV_PCM_FORMAT_S16_LE); ++ // bits = 16; ++ } else { ++ // set SSP2 to 24-bit ++ params_set_format(params, SNDRV_PCM_FORMAT_S24_LE); ++ // bits = 24; ++ } ++ ++ /* ++ * The default mode for the cpu-dai is TDM 4 slot. The default mode ++ * for the codec-dai is I2S. So we need to either set the cpu-dai to ++ * I2S mode to match the codec-dai, or set the codec-dai to TDM 4 slot ++ * (or program both to yet another mode). ++ * One board, the Lenovo Miix 2 10, uses not 1 but 2 codecs connected ++ * to SSP2. The second piggy-backed, output-only codec is inside the ++ * keyboard-dock (which has extra speakers). Unlike the main rt5672 ++ * codec, we cannot configure this codec, it is hard coded to use ++ * 2 channel 24 bit I2S. For this to work we must use I2S mode on this ++ * board. Since we only support 2 channels anyways, there is no need ++ * for TDM on any cht-bsw-rt5659 designs. So we use I2S 2ch everywhere. ++ */ ++ /* ++ ret = snd_soc_dai_set_fmt(snd_soc_rtd_to_cpu(rtd, 0), ++ SND_SOC_DAIFMT_I2S | ++ SND_SOC_DAIFMT_NB_NF | ++ SND_SOC_DAIFMT_BP_FP); ++ if (ret < 0) { ++ dev_err(rtd->dev, "can't set format to I2S, err %d\n", ret); ++ return ret; ++ } ++ ++ ret = snd_soc_dai_set_tdm_slot(snd_soc_rtd_to_cpu(rtd, 0), 0x3, 0x3, 2, bits); ++ if (ret < 0) { ++ dev_err(rtd->dev, "can't set I2S config, err %d\n", ret); ++ return ret; ++ } ++ */ ++ return 0; ++ } ++ ++ static int cht_aif1_startup(struct snd_pcm_substream *substream) ++ { ++ struct snd_soc_pcm_runtime *rtd = snd_soc_substream_to_rtd(substream); ++ struct snd_soc_dai *cpu_dai = snd_soc_rtd_to_cpu(rtd, 0); ++ struct snd_soc_dapm_widget_list *list_1; ++ struct snd_soc_dapm_widget *widget; ++ int stream = 0; ++ int paths, i; ++ ++ pr_info("%s runtime=%p\n", __func__, substream->runtime); ++ ++ paths = snd_soc_dapm_dai_get_connected_widgets(cpu_dai, stream, &list_1, NULL); ++ pr_info("%d paths got\n", paths); ++ ++ for_each_dapm_widgets(list_1, i, widget) { ++ pr_info("rt5659 path widget: name=%s, sname=%s\n", widget->name,widget->sname); ++ } ++ ++ return snd_pcm_hw_constraint_single(substream->runtime, ++ SNDRV_PCM_HW_PARAM_RATE, 48000); ++ } ++ ++ static const struct snd_soc_ops cht_aif1_ops = { ++ .startup = cht_aif1_startup, ++ }; ++ ++ static const struct snd_soc_ops cht_be_ssp2_ops = { ++ .hw_params = cht_aif1_hw_params, ++ }; ++ ++ SND_SOC_DAILINK_DEF(dummy, ++ DAILINK_COMP_ARRAY(COMP_DUMMY())); ++ ++ SND_SOC_DAILINK_DEF(media, ++ DAILINK_COMP_ARRAY(COMP_CPU("media-cpu-dai"))); ++ ++ SND_SOC_DAILINK_DEF(deepbuffer, ++ DAILINK_COMP_ARRAY(COMP_CPU("deepbuffer-cpu-dai"))); ++ ++ SND_SOC_DAILINK_DEF(ssp2_port, ++ DAILINK_COMP_ARRAY(COMP_CPU("ssp2-port"))); ++ SND_SOC_DAILINK_DEF(ssp2_codec, ++ DAILINK_COMP_ARRAY(COMP_CODEC("i2c-10EC5659:00", ++ "rt5659-aif1"))); ++ ++ SND_SOC_DAILINK_DEF(platform, ++ DAILINK_COMP_ARRAY(COMP_PLATFORM("sst-mfld-platform"))); ++ ++ SND_SOC_DAILINK_DEF(rt5659_aif2_cpu, ++ DAILINK_COMP_ARRAY(COMP_CPU("rt5659-aif2"))); ++ ++ SND_SOC_DAILINK_DEF(spk_l_codec, ++ DAILINK_COMP_ARRAY(COMP_CODEC("i2c-tfa9890:00", ++ "tfa989x-hifi"))); ++ ++ SND_SOC_DAILINK_DEF(spk_r_codec, ++ DAILINK_COMP_ARRAY(COMP_CODEC("i2c-tfa9890:01", ++ "tfa989x-hifi"))); ++ ++ static const struct snd_soc_pcm_stream nxp_tfa989x_params[] = { ++ { ++ .formats = SNDRV_PCM_FMTBIT_S16_LE, ++ .rate_min = 48000, ++ .rate_max = 48000, ++ .channels_min = 2, ++ .channels_max = 2, ++ .rates = SNDRV_PCM_RATE_48000, ++ .sig_bits = 16, ++ }, ++ }; ++ ++ static struct snd_soc_dai_link cht_dailink[] = { ++ /* Front End DAI links */ ++ [MERR_DPCM_AUDIO] = { ++ .name = "Audio Port", ++ .stream_name = "Audio", ++ .nonatomic = true, ++ .dynamic = 1, ++ .ops = &cht_aif1_ops, ++ SND_SOC_DAILINK_REG(media, dummy, platform), ++ }, ++ [MERR_DPCM_DEEP_BUFFER] = { ++ .name = "Deep-Buffer Audio Port", ++ .stream_name = "Deep-Buffer Audio", ++ .nonatomic = true, ++ .dynamic = 1, ++ .playback_only = 1, ++ .ops = &cht_aif1_ops, ++ SND_SOC_DAILINK_REG(deepbuffer, dummy, platform), ++ }, ++ ++ /* Back End DAI links */ ++ { ++ /* SSP2 - Codec */ ++ .name = "SSP2-Codec", ++ .id = 0, ++ .no_pcm = 1, ++ //.init = cht_codec_init, ++ .init = cht_audio_init, ++ .be_hw_params_fixup = cht_codec_fixup, ++ .ops = &cht_be_ssp2_ops, ++ SND_SOC_DAILINK_REG(ssp2_port, ssp2_codec, platform), ++ .ignore_suspend = 1, ++ .ignore_pmdown_time = 1, ++ }, ++ { ++ .name = "rt5659_AIF2-TFA989x_Speaker_L", ++ .stream_name = "aif2-spk_l", ++ SND_SOC_DAILINK_REG(rt5659_aif2_cpu, spk_l_codec), ++ .dai_fmt = SND_SOC_DAIFMT_I2S | SND_SOC_DAIFMT_NB_NF | ++ SND_SOC_DAIFMT_CBC_CFC, ++ .c2c_params = nxp_tfa989x_params, ++ .num_c2c_params = 1, ++ },{ ++ .name = "rt5659_AIF2-TFA989x_Speaker_R", ++ .stream_name = "aif2-spk_r", ++ SND_SOC_DAILINK_REG(rt5659_aif2_cpu, spk_r_codec), ++ .dai_fmt = SND_SOC_DAIFMT_I2S | SND_SOC_DAIFMT_NB_NF | ++ SND_SOC_DAIFMT_CBC_CFC, ++ .c2c_params = nxp_tfa989x_params, ++ .num_c2c_params = 1, ++ }, ++ }; ++ ++ static int cht_suspend_pre(struct snd_soc_card *card) ++ { ++ struct snd_soc_component *component; ++ struct cht_mc_private *ctx = snd_soc_card_get_drvdata(card); ++ ++ for_each_card_components(card, component) { ++ if (!strncmp(component->name, ++ ctx->codec_name, sizeof(ctx->codec_name))) { ++ ++ dev_dbg(component->dev, "disabling jack detect before going to suspend.\n"); ++ //rt5659_jack_suspend(component); ++ break; ++ } ++ } ++ return 0; ++ } ++ ++ static int cht_resume_post(struct snd_soc_card *card) ++ { ++ struct snd_soc_component *component; ++ struct cht_mc_private *ctx = snd_soc_card_get_drvdata(card); ++ ++ for_each_card_components(card, component) { ++ if (!strncmp(component->name, ++ ctx->codec_name, sizeof(ctx->codec_name))) { ++ ++ dev_dbg(component->dev, "enabling jack detect for resume.\n"); ++ //rt5659_jack_resume(component); ++ break; ++ } ++ } ++ ++ return 0; ++ } ++ ++ /* use space before codec name to simplify card ID, and simplify driver name */ ++ #define SOF_CARD_NAME "bytcht rt5659" /* card name will be 'sof-bytcht rt5659' */ ++ #define SOF_DRIVER_NAME "SOF" ++ ++ #define CARD_NAME "cht-bsw-rt5659" ++ #define DRIVER_NAME NULL /* card name will be used for driver name */ ++ ++ /* SoC card */ ++ static struct snd_soc_card snd_soc_card_cht = { ++ .owner = THIS_MODULE, ++ .dai_link = cht_dailink, ++ .num_links = ARRAY_SIZE(cht_dailink), ++ .dapm_widgets = cht_dapm_widgets, ++ .num_dapm_widgets = ARRAY_SIZE(cht_dapm_widgets), ++ .dapm_routes = cht_audio_map, ++ .num_dapm_routes = ARRAY_SIZE(cht_audio_map), ++ .controls = cht_mc_controls, ++ .num_controls = ARRAY_SIZE(cht_mc_controls), ++ .suspend_pre = cht_suspend_pre, ++ .resume_post = cht_resume_post, ++ }; ++ ++ #define RT5659_I2C_DEFAULT "i2c-10EC5659:00" ++ ++ static int snd_cht_mc_probe(struct platform_device *pdev) ++ { ++ int ret_val = 0; ++ struct cht_mc_private *drv; ++ struct snd_soc_acpi_mach *mach = pdev->dev.platform_data; ++ struct sst_platform_info *pdata; ++ const char *platform_name; ++ struct acpi_device *adev; ++ bool sof_parent; ++ int dai_index = 0; ++ int i; ++ ++ pr_info("cht-bsw-rt5659 mach pdev name %s\n", pdev->name); ++ ++ pr_info("cht-bsw-rt5659 mach id %s\n", mach->id); ++ pr_info("cht-bsw-rt5659 mach drv_name %s\n", mach->drv_name); ++ pr_info("cht-bsw-rt5659 mach fw_filename %s\n", mach->fw_filename); ++ ++ dev_dbg(&pdev->dev, "cht-bsw-rt5659 mach test 0\n"); ++ ++ drv = devm_kzalloc(&pdev->dev, sizeof(*drv), GFP_KERNEL); ++ if (!drv) ++ return -ENOMEM; ++ ++ strcpy(drv->codec_name, RT5659_I2C_DEFAULT); ++ ++ /* find index of codec dai */ ++ for (i = 0; i < ARRAY_SIZE(cht_dailink); i++) { ++ if (cht_dailink[i].codecs->name && ++ !strcmp(cht_dailink[i].codecs->name, RT5659_I2C_DEFAULT)) { ++ dai_index = i; ++ break; ++ } ++ } ++ if(i == ARRAY_SIZE(cht_dailink)){ ++ pr_info("cht-bsw-rt5659 default codec name %s not found\n", drv->codec_name); ++ } ++ else{ ++ pr_info("cht-bsw-rt5659 index %d dai codec name %s\n", dai_index, cht_dailink[dai_index].codecs->name); ++ ++ /* fixup codec name based on HID */ ++ adev = acpi_dev_get_first_match_dev(mach->id, NULL, -1); ++ if (adev) { ++ snprintf(drv->codec_name, sizeof(drv->codec_name), ++ "i2c-%s", acpi_dev_name(adev)); ++ cht_dailink[dai_index].codecs->name = drv->codec_name; ++ } ++ acpi_dev_put(adev); ++ ++ pr_info("cht-bsw-rt5659 acpi_device name %s\n", acpi_dev_name(adev)); ++ pr_info("cht-bsw-rt5659 fixuped index %d dai codec name %s\n", dai_index, cht_dailink[dai_index].codecs->name); ++ ++ /* Use SSP0 on Bay Trail CR devices */ ++ if (soc_intel_is_byt() && mach->mach_params.acpi_ipc_irq_index == 0) { ++ cht_dailink[dai_index].cpus->dai_name = "ssp0-port"; ++ drv->use_ssp0 = true; ++ } ++ } ++ ++ /* override platform name, if required */ ++ snd_soc_card_cht.dev = &pdev->dev; ++ platform_name = mach->mach_params.platform; ++ pdata = mach->pdata; ++ //platform_name = padata->platform; ++ ++ pr_info("cht-bsw-rt5659 mach platform_name %s\n", pdata->platform); ++ pr_info("cht-bsw-rt5659 mach test 1\n"); ++ ++ ret_val = snd_soc_fixup_dai_links_platform_name(&snd_soc_card_cht, ++ platform_name); ++ if (ret_val) ++ return ret_val; ++ ++ //snd_soc_card_cht.components = rt5659_components(); ++ ++ drv->mclk = devm_clk_get(&pdev->dev, "pmc_plt_clk_3"); ++ if (IS_ERR(drv->mclk)) { ++ dev_err(&pdev->dev, ++ "Failed to get MCLK from pmc_plt_clk_3: %ld\n", ++ PTR_ERR(drv->mclk)); ++ return PTR_ERR(drv->mclk); ++ } ++ snd_soc_card_set_drvdata(&snd_soc_card_cht, drv); ++ ++ sof_parent = snd_soc_acpi_sof_parent(&pdev->dev); ++ ++ pr_info("cht-bsw-rt5659 mach test 2\n"); ++ ++ /* set card and driver name */ ++ if (sof_parent) { ++ snd_soc_card_cht.name = SOF_CARD_NAME; ++ snd_soc_card_cht.driver_name = SOF_DRIVER_NAME; ++ } else { ++ snd_soc_card_cht.name = CARD_NAME; ++ snd_soc_card_cht.driver_name = DRIVER_NAME; ++ } ++ ++ /* set pm ops */ ++ if (sof_parent) ++ pdev->dev.driver->pm = &snd_soc_pm_ops; ++ ++ /* register the soc card */ ++ ret_val = devm_snd_soc_register_card(&pdev->dev, &snd_soc_card_cht); ++ if (ret_val) { ++ dev_err(&pdev->dev, ++ "snd_soc_register_card failed %d\n", ret_val); ++ return ret_val; ++ } ++ platform_set_drvdata(pdev, &snd_soc_card_cht); ++ ++ pr_info("cht-bsw-rt5659 mach test 3\n"); ++ ++ return ret_val; ++ } ++ ++ static struct platform_driver snd_cht_mc_driver = { ++ .driver = { ++ .name = "cht-bsw-rt5659", ++ }, ++ .probe = snd_cht_mc_probe, ++ }; ++ ++ static int __init snd_cht_mc_init(void) ++ { ++ return platform_driver_register(&snd_cht_mc_driver); ++ } ++ late_initcall(snd_cht_mc_init); ++ ++ static void __exit snd_cht_mc_exit(void) ++ { ++ platform_driver_unregister(&snd_cht_mc_driver); ++ } ++ module_exit(snd_cht_mc_exit); ++ ++ // module_platform_driver(snd_cht_mc_driver); ++ ++ MODULE_DESCRIPTION("ASoC Intel(R) Baytrail CR Machine driver"); ++ MODULE_AUTHOR("Subhransu S. Prusty, Mengdong Lin"); ++ MODULE_LICENSE("GPL v2"); ++ MODULE_ALIAS("platform:cht-bsw-rt5659"); +diff --color -u -r -N a/sound/soc/intel/boards/Kconfig b/sound/soc/intel/boards/Kconfig +--- a/sound/soc/intel/boards/Kconfig 2025-04-27 15:56:35.712635055 +0800 ++++ b/sound/soc/intel/boards/Kconfig 2025-04-27 18:14:54.333346227 +0800 +@@ -144,6 +144,20 @@ + Say Y if you have such a device. + If unsure select "N". + ++config SND_SOC_INTEL_CHT_BSW_RT5659_MACH ++ tristate "Cherrytrail & Braswell with RT5659 codec" ++ depends on I2C && ACPI ++ depends on X86_INTEL_LPSS || COMPILE_TEST ++ depends on GPIOLIB || COMPILE_TEST ++ select SND_SOC_ACPI ++ select SND_SOC_RT5659 ++ help ++ This adds support for ASoC machine driver for Intel(R) Cherrytrail & Braswell ++ platforms with RT5659 audio codec. ++ Say Y or m if you have such a device. This is a recommended option. ++ If unsure select "N". ++ ++ + config SND_SOC_INTEL_CHT_BSW_RT5672_MACH + tristate "Cherrytrail & Braswell with RT5672 codec" + depends on I2C && ACPI +diff --color -u -r -N a/sound/soc/intel/boards/Makefile b/sound/soc/intel/boards/Makefile +--- a/sound/soc/intel/boards/Makefile 2025-04-27 15:56:35.712635055 +0800 ++++ b/sound/soc/intel/boards/Makefile 2025-04-27 18:16:21.774925627 +0800 +@@ -8,6 +8,7 @@ + snd-soc-sst-bytcr-rt5640-y := bytcr_rt5640.o + snd-soc-sst-bytcr-rt5651-y := bytcr_rt5651.o + snd-soc-sst-bytcr-wm5102-y := bytcr_wm5102.o ++snd-soc-sst-cht-bsw-rt5659-y := cht_bsw_rt5659.o + snd-soc-sst-cht-bsw-rt5672-y := cht_bsw_rt5672.o + snd-soc-sst-cht-bsw-rt5645-y := cht_bsw_rt5645.o + snd-soc-sst-cht-bsw-max98090_ti-y := cht_bsw_max98090_ti.o +@@ -40,6 +41,7 @@ + obj-$(CONFIG_SND_SOC_INTEL_BYTCR_RT5640_MACH) += snd-soc-sst-bytcr-rt5640.o + obj-$(CONFIG_SND_SOC_INTEL_BYTCR_RT5651_MACH) += snd-soc-sst-bytcr-rt5651.o + obj-$(CONFIG_SND_SOC_INTEL_BYTCR_WM5102_MACH) += snd-soc-sst-bytcr-wm5102.o ++obj-$(CONFIG_SND_SOC_INTEL_CHT_BSW_RT5659_MACH) += snd-soc-sst-cht-bsw-rt5659.o + obj-$(CONFIG_SND_SOC_INTEL_CHT_BSW_RT5672_MACH) += snd-soc-sst-cht-bsw-rt5672.o + obj-$(CONFIG_SND_SOC_INTEL_CHT_BSW_RT5645_MACH) += snd-soc-sst-cht-bsw-rt5645.o + obj-$(CONFIG_SND_SOC_INTEL_CHT_BSW_MAX98090_TI_MACH) += snd-soc-sst-cht-bsw-max98090_ti.o +diff --color -u -r -N a/sound/soc/intel/common/soc-acpi-intel-cht-match.c b/sound/soc/intel/common/soc-acpi-intel-cht-match.c +--- a/sound/soc/intel/common/soc-acpi-intel-cht-match.c 2025-04-27 15:56:35.713034742 +0800 ++++ b/sound/soc/intel/common/soc-acpi-intel-cht-match.c 2025-04-27 17:10:58.170494018 +0800 +@@ -131,6 +131,11 @@ + /* Cherryview-based platforms: CherryTrail and Braswell */ + struct snd_soc_acpi_mach snd_soc_acpi_intel_cherrytrail_machines[] = { + { ++ .id = "10EC5659", ++ .drv_name = "cht-bsw-rt5659", ++ .fw_filename = "intel/fw_sst_22a8.bin", ++ }, ++ { + .comp_ids = &rt5670_comp_ids, + .drv_name = "cht-bsw-rt5672", + .fw_filename = "intel/fw_sst_22a8.bin", diff --git a/device/testing/linux-xiaomi-latte/latte-i915-fix.patch b/device/testing/linux-xiaomi-latte/latte-i915-fix.patch new file mode 100644 index 000000000..3993d27e4 --- /dev/null +++ b/device/testing/linux-xiaomi-latte/latte-i915-fix.patch @@ -0,0 +1,121 @@ +diff --color -u a/drivers/gpu/drm/i915/display/intel_display_driver.c b/drivers/gpu/drm/i915/display/intel_display_driver.c +--- a/drivers/gpu/drm/i915/display/intel_display_driver.c 2025-04-27 15:25:09.834101149 +0800 ++++ b/drivers/gpu/drm/i915/display/intel_display_driver.c 2025-04-27 15:33:23.685520296 +0800 +@@ -226,6 +226,8 @@ + if (ret) + goto cleanup_bios; + ++ intel_init_quirks(display); ++ + /* FIXME: completely on the wrong abstraction layer */ + ret = intel_power_domains_init(display); + if (ret < 0) +@@ -267,8 +269,6 @@ + if (ret) + goto cleanup_vga_client_pw_domain_dmc; + +- intel_init_quirks(display); +- + intel_fbc_init(display); + + return 0; +diff --color -u a/drivers/gpu/drm/i915/display/intel_display_power.c b/drivers/gpu/drm/i915/display/intel_display_power.c +--- a/drivers/gpu/drm/i915/display/intel_display_power.c 2025-04-27 15:25:09.834101149 +0800 ++++ b/drivers/gpu/drm/i915/display/intel_display_power.c 2025-04-27 15:31:38.759355555 +0800 +@@ -23,6 +23,7 @@ + #include "intel_pcode.h" + #include "intel_pmdemand.h" + #include "intel_pps_regs.h" ++#include "intel_quirks.h" + #include "intel_snps_phy.h" + #include "skl_watermark.h" + #include "skl_watermark_regs.h" +@@ -492,8 +493,14 @@ __intel_display_power_get_domain(struct intel_display *display, + if (intel_display_power_grab_async_put_ref(display, domain)) + return; + +- for_each_power_domain_well(display, power_well, domain) ++ for_each_power_domain_well(display, power_well, domain) { ++ if (domain == POWER_DOMAIN_INIT && ++ intel_has_quirk(display, QUIRK_NO_VLV_DISP_PW_DPIO_CMN_BC_INIT) && ++ i915_power_well_instance(power_well)->id == VLV_DISP_PW_DPIO_CMN_BC) ++ continue; ++ + intel_power_well_get(display, power_well); ++ } + + power_domains->domain_use_count[domain]++; + } +@@ -589,7 +596,13 @@ __intel_display_power_put_domain(struct intel_display *display, + power_domains->domain_use_count[domain]--; + +- for_each_power_domain_well_reverse(display, power_well, domain) ++ for_each_power_domain_well_reverse(display, power_well, domain) { ++ if (domain == POWER_DOMAIN_INIT && ++ intel_has_quirk(display, QUIRK_NO_VLV_DISP_PW_DPIO_CMN_BC_INIT) && ++ i915_power_well_instance(power_well)->id == VLV_DISP_PW_DPIO_CMN_BC) ++ continue; ++ + intel_power_well_put(display, power_well); ++ } + } + + static void __intel_display_power_put(struct intel_display *display, +diff --color -u a/drivers/gpu/drm/i915/display/intel_display_power_well.c b/drivers/gpu/drm/i915/display/intel_display_power_well.c +--- a/drivers/gpu/drm/i915/display/intel_display_power_well.c 2025-04-27 15:25:09.834101149 +0800 ++++ b/drivers/gpu/drm/i915/display/intel_display_power_well.c 2025-04-27 15:25:50.880302395 +0800 +@@ -66,7 +66,7 @@ + struct i915_power_well *power_well); + }; + +-static const struct i915_power_well_instance * ++const struct i915_power_well_instance * + i915_power_well_instance(const struct i915_power_well *power_well) + { + return &power_well->desc->instances->list[power_well->instance_idx]; +diff --color -u a/drivers/gpu/drm/i915/display/intel_display_power_well.h b/drivers/gpu/drm/i915/display/intel_display_power_well.h +--- a/drivers/gpu/drm/i915/display/intel_display_power_well.h 2025-04-27 15:25:09.834101149 +0800 ++++ b/drivers/gpu/drm/i915/display/intel_display_power_well.h 2025-04-27 15:26:38.682005203 +0800 +@@ -129,6 +129,7 @@ + struct i915_power_well *lookup_power_well(struct intel_display *display, + enum i915_power_well_id id); + ++const struct i915_power_well_instance *i915_power_well_instance(const struct i915_power_well *power_well); + void intel_power_well_enable(struct intel_display *display, + struct i915_power_well *power_well); + void intel_power_well_disable(struct intel_display *display, +diff --color -u a/drivers/gpu/drm/i915/display/intel_quirks.c b/drivers/gpu/drm/i915/display/intel_quirks.c +--- a/drivers/gpu/drm/i915/display/intel_quirks.c 2025-04-27 15:25:09.834558483 +0800 ++++ b/drivers/gpu/drm/i915/display/intel_quirks.c 2025-04-27 15:35:01.128380326 +0800 +@@ -78,6 +78,12 @@ + drm_info(display->drm, "Applying Fast Wake sync pulse count quirk\n"); + } + ++static void quirk_no_vlv_disp_pw_dpio_cmn_bc_init(struct intel_display *display) ++{ ++ intel_set_quirk(display, QUIRK_NO_VLV_DISP_PW_DPIO_CMN_BC_INIT); ++ drm_info(display->drm, "Applying no dpio-common-bc powerwell init quirk\n"); ++} ++ + struct intel_quirk { + int device; + int subsystem_vendor; +@@ -253,5 +259,7 @@ + /* HP Notebook - 14-r206nv */ + { 0x0f31, 0x103c, 0x220f, quirk_invert_brightness }, ++ /* Xiaomi Mi Pad 2 */ ++ { 0x22b0, 0x1d72, 0x1502, quirk_no_vlv_disp_pw_dpio_cmn_bc_init }, + }; + + static const struct intel_dpcd_quirk intel_dpcd_quirks[] = { +diff --color -u a/drivers/gpu/drm/i915/display/intel_quirks.h b/drivers/gpu/drm/i915/display/intel_quirks.h +--- a/drivers/gpu/drm/i915/display/intel_quirks.h 2025-04-27 15:25:09.834558483 +0800 ++++ b/drivers/gpu/drm/i915/display/intel_quirks.h 2025-04-27 15:33:54.634332191 +0800 +@@ -20,6 +20,7 @@ + QUIRK_INVERT_BRIGHTNESS, + QUIRK_LVDS_SSC_DISABLE, + QUIRK_NO_PPS_BACKLIGHT_POWER_HOOK, + QUIRK_FW_SYNC_LEN, ++ QUIRK_NO_VLV_DISP_PW_DPIO_CMN_BC_INIT, + }; + diff --git a/device/testing/linux-xiaomi-latte/xiaomipad2_defconfig b/device/testing/linux-xiaomi-latte/xiaomipad2_defconfig new file mode 100644 index 000000000..8ab9db400 --- /dev/null +++ b/device/testing/linux-xiaomi-latte/xiaomipad2_defconfig @@ -0,0 +1,2408 @@ +# CONFIG_LOCALVERSION_AUTO is not set +CONFIG_KERNEL_ZSTD=y +CONFIG_DEFAULT_HOSTNAME="mipad2" +CONFIG_SYSVIPC=y +CONFIG_AUDIT=y +CONFIG_NO_HZ_IDLE=y +CONFIG_HIGH_RES_TIMERS=y +CONFIG_CLOCKSOURCE_WATCHDOG_MAX_SKEW_US=100 +CONFIG_BPF_SYSCALL=y +CONFIG_BPF_JIT=y +CONFIG_BPF_JIT_ALWAYS_ON=y +# CONFIG_BPF_UNPRIV_DEFAULT_OFF is not set +CONFIG_PREEMPT=y +CONFIG_BSD_PROCESS_ACCT=y +CONFIG_BSD_PROCESS_ACCT_V3=y +CONFIG_TASKSTATS=y +CONFIG_TASK_DELAY_ACCT=y +CONFIG_TASK_XACCT=y +CONFIG_TASK_IO_ACCOUNTING=y +CONFIG_PSI=y +CONFIG_RCU_EXPERT=y +CONFIG_RCU_BOOST=y +CONFIG_RCU_BOOST_DELAY=0 +CONFIG_RCU_EXP_KTHREAD=y +CONFIG_IKCONFIG=y +CONFIG_IKCONFIG_PROC=y +CONFIG_UCLAMP_TASK=y +CONFIG_UCLAMP_BUCKETS_COUNT=20 +CONFIG_NUMA_BALANCING=y +CONFIG_MEMCG=y +CONFIG_BLK_CGROUP=y +CONFIG_UCLAMP_TASK_GROUP=y +CONFIG_CGROUP_FREEZER=y +CONFIG_CPUSETS=y +CONFIG_CGROUP_DEVICE=y +CONFIG_CGROUP_CPUACCT=y +CONFIG_CGROUP_BPF=y +CONFIG_CGROUP_DEBUG=y +CONFIG_NAMESPACES=y +CONFIG_USER_NS=y +CONFIG_SCHED_AUTOGROUP=y +# CONFIG_RD_BZIP2 is not set +# CONFIG_RD_LZMA is not set +# CONFIG_RD_XZ is not set +# CONFIG_RD_LZO is not set +# CONFIG_RD_LZ4 is not set +CONFIG_EXPERT=y +# CONFIG_FHANDLE is not set +# CONFIG_ELF_CORE is not set +CONFIG_KALLSYMS_ALL=y +CONFIG_PROFILING=y +CONFIG_KEXEC=y +# CONFIG_CRASH_DUMP is not set +CONFIG_SMP=y +CONFIG_X86_CPU_RESCTRL=y +CONFIG_X86_FRED=y +CONFIG_X86_NUMACHIP=y +CONFIG_X86_INTEL_LPSS=y +CONFIG_HYPERVISOR_GUEST=y +CONFIG_PARAVIRT=y +CONFIG_PARAVIRT_SPINLOCKS=y +CONFIG_PVH=y +CONFIG_PROCESSOR_SELECT=y +# CONFIG_CPU_SUP_AMD is not set +# CONFIG_CPU_SUP_HYGON is not set +# CONFIG_CPU_SUP_CENTAUR is not set +# CONFIG_CPU_SUP_ZHAOXIN is not set +CONFIG_MAXSMP=y +CONFIG_X86_MSR=y +CONFIG_X86_CPUID=y +CONFIG_NUMA=y +# CONFIG_MTRR_SANITIZER is not set +# CONFIG_X86_KERNEL_IBT is not set +CONFIG_EFI=y +CONFIG_EFI_STUB=y +CONFIG_EFI_MIXED=y +CONFIG_CMDLINE_BOOL=y +CONFIG_CMDLINE="stack_depot_disable=on cgroup_disable=pressure loop.max_part=8" +# CONFIG_CPU_MITIGATIONS is not set +CONFIG_PM_AUTOSLEEP=y +CONFIG_PM_WAKELOCKS=y +CONFIG_PM_WAKELOCKS_LIMIT=0 +# CONFIG_PM_WAKELOCKS_GC is not set +CONFIG_PM_DEBUG=y +CONFIG_PM_TRACE_RTC=y +CONFIG_ACPI_EC_DEBUGFS=y +CONFIG_ACPI_DOCK=y +CONFIG_ACPI_IPMI=m +CONFIG_ACPI_PROCESSOR_AGGREGATOR=y +CONFIG_ACPI_PCI_SLOT=y +CONFIG_ACPI_SBS=m +CONFIG_ACPI_NFIT=m +CONFIG_ACPI_HMAT=y +CONFIG_PMIC_OPREGION=y +CONFIG_BYTCRC_PMIC_OPREGION=y +CONFIG_CHTCRC_PMIC_OPREGION=y +CONFIG_BXT_WC_PMIC_OPREGION=y +CONFIG_CHT_WC_PMIC_OPREGION=y +CONFIG_CHT_DC_TI_PMIC_OPREGION=y +CONFIG_CPU_FREQ_STAT=y +CONFIG_CPU_FREQ_GOV_POWERSAVE=y +CONFIG_CPU_FREQ_GOV_USERSPACE=y +CONFIG_CPU_FREQ_GOV_ONDEMAND=y +CONFIG_CPU_FREQ_GOV_CONSERVATIVE=y +CONFIG_X86_PCC_CPUFREQ=y +CONFIG_X86_AMD_PSTATE=y +CONFIG_X86_ACPI_CPUFREQ=y +CONFIG_X86_POWERNOW_K8=y +CONFIG_X86_SPEEDSTEP_CENTRINO=y +CONFIG_X86_P4_CLOCKMOD=m +CONFIG_CPU_IDLE_GOV_LADDER=y +CONFIG_INTEL_IDLE=y +CONFIG_ISA_BUS=y +CONFIG_IA32_EMULATION=y +CONFIG_KVM=m +CONFIG_KVM_SW_PROTECTED_VM=y +CONFIG_KVM_INTEL=m +CONFIG_KVM_INTEL_PROVE_VE=y +# CONFIG_KVM_HYPERV is not set +CONFIG_KPROBES=y +CONFIG_MODULES=y +CONFIG_MODULE_FORCE_LOAD=y +CONFIG_MODULE_UNLOAD=y +CONFIG_MODULE_FORCE_UNLOAD=y +CONFIG_MODVERSIONS=y +CONFIG_MODULE_SRCVERSION_ALL=y +CONFIG_BLK_DEV_BSGLIB=y +CONFIG_BLK_DEV_ZONED=y +CONFIG_BLK_DEV_THROTTLING=y +CONFIG_BLK_WBT=y +CONFIG_PARTITION_ADVANCED=y +CONFIG_BINFMT_MISC=y +CONFIG_ZSWAP=y +CONFIG_ZSWAP_COMPRESSOR_DEFAULT_ZSTD=y +CONFIG_KSM=y +CONFIG_DEFAULT_MMAP_MIN_ADDR=65536 +CONFIG_ANON_VMA_NAME=y +CONFIG_LRU_GEN=y +CONFIG_LRU_GEN_ENABLED=y +CONFIG_NET=y +CONFIG_PACKET=y +CONFIG_PACKET_DIAG=m +CONFIG_UNIX_DIAG=m +CONFIG_XFRM_USER=y +CONFIG_XFRM_MIGRATE=y +CONFIG_NET_KEY=y +CONFIG_XDP_SOCKETS=y +CONFIG_IP_MULTICAST=y +CONFIG_IP_ADVANCED_ROUTER=y +CONFIG_IP_MULTIPLE_TABLES=y +CONFIG_IP_PNP=y +CONFIG_IP_PNP_DHCP=y +CONFIG_NET_IPIP=y +CONFIG_NET_IPGRE_DEMUX=y +CONFIG_NET_IPGRE=y +CONFIG_NET_IPGRE_BROADCAST=y +CONFIG_NET_IPVTI=m +CONFIG_INET_ESP=y +CONFIG_INET_DIAG=m +CONFIG_INET_UDP_DIAG=m +CONFIG_INET_DIAG_DESTROY=y +CONFIG_TCP_CONG_ADVANCED=y +CONFIG_TCP_CONG_CUBIC=m +CONFIG_TCP_CONG_WESTWOOD=y +CONFIG_TCP_CONG_HSTCP=m +CONFIG_TCP_CONG_HYBLA=m +CONFIG_TCP_CONG_NV=m +CONFIG_TCP_CONG_SCALABLE=m +CONFIG_TCP_CONG_LP=m +CONFIG_TCP_CONG_VENO=m +CONFIG_TCP_CONG_YEAH=m +CONFIG_TCP_CONG_ILLINOIS=m +CONFIG_TCP_CONG_DCTCP=m +CONFIG_TCP_CONG_CDG=m +CONFIG_TCP_CONG_BBR=m +CONFIG_IPV6_ROUTER_PREF=y +CONFIG_IPV6_ROUTE_INFO=y +CONFIG_IPV6_OPTIMISTIC_DAD=y +CONFIG_INET6_AH=y +CONFIG_INET6_ESP=y +CONFIG_INET6_IPCOMP=y +CONFIG_IPV6_MIP6=y +CONFIG_IPV6_VTI=y +CONFIG_IPV6_GRE=y +CONFIG_IPV6_MULTIPLE_TABLES=y +CONFIG_IPV6_MROUTE=y +CONFIG_IPV6_MROUTE_MULTIPLE_TABLES=y +CONFIG_NETFILTER=y +CONFIG_BRIDGE_NETFILTER=m +CONFIG_NF_CONNTRACK=y +CONFIG_NF_CONNTRACK_SECMARK=y +CONFIG_NF_CONNTRACK_PROCFS=y +CONFIG_NF_CONNTRACK_EVENTS=y +CONFIG_NF_CONNTRACK_AMANDA=y +CONFIG_NF_CONNTRACK_FTP=y +CONFIG_NF_CONNTRACK_H323=y +CONFIG_NF_CONNTRACK_IRC=y +CONFIG_NF_CONNTRACK_NETBIOS_NS=y +CONFIG_NF_CONNTRACK_PPTP=y +CONFIG_NF_CONNTRACK_SANE=y +CONFIG_NF_CONNTRACK_TFTP=y +CONFIG_NF_CT_NETLINK=y +CONFIG_NETFILTER_XTABLES_COMPAT=y +CONFIG_NETFILTER_XT_TARGET_CLASSIFY=y +CONFIG_NETFILTER_XT_TARGET_CONNMARK=y +CONFIG_NETFILTER_XT_TARGET_CONNSECMARK=y +CONFIG_NETFILTER_XT_TARGET_CT=y +CONFIG_NETFILTER_XT_TARGET_DSCP=y +CONFIG_NETFILTER_XT_TARGET_IDLETIMER=y +CONFIG_NETFILTER_XT_TARGET_MARK=y +CONFIG_NETFILTER_XT_TARGET_NFLOG=y +CONFIG_NETFILTER_XT_TARGET_NFQUEUE=y +CONFIG_NETFILTER_XT_TARGET_TEE=y +CONFIG_NETFILTER_XT_TARGET_TPROXY=y +CONFIG_NETFILTER_XT_TARGET_TRACE=y +CONFIG_NETFILTER_XT_TARGET_SECMARK=y +CONFIG_NETFILTER_XT_TARGET_TCPMSS=y +CONFIG_NETFILTER_XT_MATCH_BPF=y +CONFIG_NETFILTER_XT_MATCH_COMMENT=y +CONFIG_NETFILTER_XT_MATCH_CONNBYTES=y +CONFIG_NETFILTER_XT_MATCH_CONNLIMIT=y +CONFIG_NETFILTER_XT_MATCH_CONNMARK=y +CONFIG_NETFILTER_XT_MATCH_CONNTRACK=y +CONFIG_NETFILTER_XT_MATCH_DSCP=y +CONFIG_NETFILTER_XT_MATCH_ESP=y +CONFIG_NETFILTER_XT_MATCH_HASHLIMIT=y +CONFIG_NETFILTER_XT_MATCH_HELPER=y +CONFIG_NETFILTER_XT_MATCH_IPRANGE=y +CONFIG_NETFILTER_XT_MATCH_LENGTH=y +CONFIG_NETFILTER_XT_MATCH_LIMIT=y +CONFIG_NETFILTER_XT_MATCH_MAC=y +CONFIG_NETFILTER_XT_MATCH_MARK=y +CONFIG_NETFILTER_XT_MATCH_MULTIPORT=y +CONFIG_NETFILTER_XT_MATCH_OWNER=y +CONFIG_NETFILTER_XT_MATCH_POLICY=y +CONFIG_NETFILTER_XT_MATCH_PKTTYPE=y +CONFIG_NETFILTER_XT_MATCH_QUOTA=y +CONFIG_NETFILTER_XT_MATCH_SOCKET=y +CONFIG_NETFILTER_XT_MATCH_STATE=y +CONFIG_NETFILTER_XT_MATCH_STATISTIC=y +CONFIG_NETFILTER_XT_MATCH_STRING=y +CONFIG_NETFILTER_XT_MATCH_TIME=y +CONFIG_NETFILTER_XT_MATCH_U32=y +CONFIG_IP_NF_IPTABLES=y +CONFIG_IP_NF_MATCH_AH=y +CONFIG_IP_NF_MATCH_ECN=y +CONFIG_IP_NF_MATCH_TTL=y +CONFIG_IP_NF_FILTER=y +CONFIG_IP_NF_TARGET_REJECT=y +CONFIG_IP_NF_NAT=y +CONFIG_IP_NF_TARGET_MASQUERADE=y +CONFIG_IP_NF_TARGET_NETMAP=y +CONFIG_IP_NF_TARGET_REDIRECT=y +CONFIG_IP_NF_MANGLE=y +CONFIG_IP_NF_RAW=y +CONFIG_IP_NF_SECURITY=y +CONFIG_IP_NF_ARPFILTER=y +CONFIG_IP_NF_ARP_MANGLE=y +CONFIG_IP6_NF_IPTABLES=y +CONFIG_IP6_NF_MATCH_IPV6HEADER=y +CONFIG_IP6_NF_MATCH_RPFILTER=y +CONFIG_IP6_NF_FILTER=y +CONFIG_IP6_NF_TARGET_REJECT=y +CONFIG_IP6_NF_MANGLE=y +CONFIG_IP6_NF_RAW=y +CONFIG_IP6_NF_NAT=y +CONFIG_IP6_NF_TARGET_MASQUERADE=y +CONFIG_IP6_NF_TARGET_NPT=y +CONFIG_TIPC=m +CONFIG_L2TP=y +CONFIG_L2TP_DEBUGFS=m +CONFIG_L2TP_V3=y +CONFIG_L2TP_IP=y +CONFIG_L2TP_ETH=y +CONFIG_BRIDGE=m +CONFIG_VLAN_8021Q=m +CONFIG_VLAN_8021Q_GVRP=y +CONFIG_VLAN_8021Q_MVRP=y +CONFIG_PHONET=y +CONFIG_6LOWPAN=m +CONFIG_IEEE802154=m +CONFIG_IEEE802154_6LOWPAN=m +CONFIG_MAC802154=m +CONFIG_NET_SCHED=y +CONFIG_NET_SCH_HTB=m +CONFIG_NET_SCH_HFSC=m +CONFIG_NET_SCH_PRIO=m +CONFIG_NET_SCH_MULTIQ=m +CONFIG_NET_SCH_RED=m +CONFIG_NET_SCH_SFB=m +CONFIG_NET_SCH_SFQ=m +CONFIG_NET_SCH_TEQL=m +CONFIG_NET_SCH_TBF=m +CONFIG_NET_SCH_CBS=m +CONFIG_NET_SCH_GRED=m +CONFIG_NET_SCH_NETEM=m +CONFIG_NET_SCH_DRR=m +CONFIG_NET_SCH_MQPRIO=m +CONFIG_NET_SCH_CHOKE=m +CONFIG_NET_SCH_QFQ=m +CONFIG_NET_SCH_CODEL=m +CONFIG_NET_SCH_FQ_CODEL=y +CONFIG_NET_SCH_FQ=m +CONFIG_NET_SCH_HHF=m +CONFIG_NET_SCH_PIE=y +CONFIG_NET_SCH_FQ_PIE=y +CONFIG_NET_SCH_INGRESS=m +CONFIG_NET_SCH_PLUG=m +CONFIG_NET_SCH_DEFAULT=y +CONFIG_DEFAULT_FQ_PIE=y +CONFIG_NET_CLS_BASIC=y +CONFIG_NET_CLS_ROUTE4=m +CONFIG_NET_CLS_FW=y +CONFIG_NET_CLS_U32=y +CONFIG_CLS_U32_MARK=y +CONFIG_NET_CLS_FLOW=y +CONFIG_NET_CLS_CGROUP=y +CONFIG_NET_CLS_BPF=y +CONFIG_NET_CLS_FLOWER=m +CONFIG_NET_CLS_MATCHALL=y +CONFIG_NET_EMATCH=y +CONFIG_NET_EMATCH_CMP=y +CONFIG_NET_EMATCH_NBYTE=y +CONFIG_NET_EMATCH_U32=y +CONFIG_NET_EMATCH_META=y +CONFIG_NET_EMATCH_TEXT=y +CONFIG_NET_EMATCH_IPT=m +CONFIG_NET_CLS_ACT=y +CONFIG_NET_ACT_POLICE=y +CONFIG_NET_ACT_GACT=y +CONFIG_NET_ACT_MIRRED=y +CONFIG_NET_ACT_SAMPLE=m +CONFIG_NET_ACT_NAT=m +CONFIG_NET_ACT_PEDIT=m +CONFIG_NET_ACT_SIMP=m +CONFIG_NET_ACT_SKBEDIT=y +CONFIG_NET_ACT_CSUM=m +CONFIG_NET_ACT_VLAN=m +CONFIG_NET_ACT_BPF=y +CONFIG_NET_ACT_CONNMARK=m +CONFIG_NET_ACT_SKBMOD=m +CONFIG_NET_ACT_IFE=m +CONFIG_NET_ACT_TUNNEL_KEY=m +CONFIG_NET_IFE_SKBMARK=m +CONFIG_NET_IFE_SKBPRIO=m +CONFIG_NET_IFE_SKBTCINDEX=m +CONFIG_NET_TC_SKB_EXT=y +CONFIG_DCB=y +CONFIG_DNS_RESOLVER=y +CONFIG_BATMAN_ADV=m +# CONFIG_BATMAN_ADV_BATMAN_V is not set +CONFIG_BATMAN_ADV_NC=y +CONFIG_OPENVSWITCH=m +CONFIG_VSOCKETS=y +CONFIG_VSOCKETS_DIAG=m +CONFIG_VSOCKETS_LOOPBACK=m +CONFIG_VIRTIO_VSOCKETS=m +CONFIG_NETLINK_DIAG=m +CONFIG_MPLS_ROUTING=m +CONFIG_HSR=m +CONFIG_NET_SWITCHDEV=y +CONFIG_NET_L3_MASTER_DEV=y +CONFIG_QRTR=m +CONFIG_QRTR_TUN=m +CONFIG_QRTR_MHI=m +CONFIG_NET_NCSI=y +CONFIG_NCSI_OEM_CMD_GET_MAC=y +CONFIG_CGROUP_NET_PRIO=y +CONFIG_BT=m +CONFIG_BT_RFCOMM=y +CONFIG_BT_RFCOMM_TTY=y +CONFIG_BT_BNEP=m +CONFIG_BT_BNEP_MC_FILTER=y +CONFIG_BT_BNEP_PROTO_FILTER=y +CONFIG_BT_HIDP=y +CONFIG_BT_LEDS=y +CONFIG_BT_MSFTEXT=y +CONFIG_BT_AOSPEXT=y +# CONFIG_BT_DEBUGFS is not set +CONFIG_BT_HCIBTUSB=m +CONFIG_BT_HCIBTUSB_AUTOSUSPEND=y +CONFIG_BT_HCIBTUSB_MTK=y +CONFIG_BT_HCIBTSDIO=m +CONFIG_BT_HCIUART=m +CONFIG_BT_HCIUART_NOKIA=m +CONFIG_BT_HCIUART_BCSP=y +CONFIG_BT_HCIUART_ATH3K=y +CONFIG_BT_HCIUART_LL=y +CONFIG_BT_HCIUART_INTEL=y +CONFIG_BT_HCIUART_BCM=y +CONFIG_BT_HCIUART_RTL=y +CONFIG_BT_HCIUART_QCA=y +CONFIG_BT_HCIUART_AG6XX=y +CONFIG_BT_HCIUART_MRVL=y +CONFIG_BT_HCIBCM203X=m +CONFIG_BT_HCIBCM4377=m +CONFIG_BT_HCIBPA10X=m +CONFIG_BT_HCIBFUSB=m +CONFIG_BT_HCIVHCI=m +CONFIG_BT_MRVL=m +CONFIG_BT_MRVL_SDIO=m +CONFIG_BT_ATH3K=m +CONFIG_BT_MTKSDIO=m +CONFIG_BT_MTKUART=m +CONFIG_BT_VIRTIO=m +CONFIG_BT_NXPUART=m +CONFIG_BT_INTEL_PCIE=m +CONFIG_CFG80211=m +CONFIG_MAC80211=m +CONFIG_MAC80211_MESH=y +CONFIG_MAC80211_MESSAGE_TRACING=y +CONFIG_RFKILL=y +CONFIG_RFKILL_INPUT=y +CONFIG_RFKILL_GPIO=m +CONFIG_NET_9P=y +CONFIG_NET_9P_VIRTIO=y +CONFIG_NFC=m +CONFIG_NFC_DIGITAL=m +CONFIG_NFC_NCI=m +CONFIG_NFC_NCI_SPI=m +CONFIG_NFC_NCI_UART=m +CONFIG_NFC_HCI=m +CONFIG_NFC_SHDLC=y +CONFIG_NFC_TRF7970A=m +CONFIG_NFC_MEI_PHY=m +CONFIG_NFC_SIM=m +CONFIG_NFC_PORT100=m +CONFIG_NFC_VIRTUAL_NCI=m +CONFIG_NFC_FDP=m +CONFIG_NFC_FDP_I2C=m +CONFIG_NFC_PN544_I2C=m +CONFIG_NFC_PN544_MEI=m +CONFIG_NFC_PN533_USB=m +CONFIG_NFC_PN533_I2C=m +CONFIG_NFC_PN532_UART=m +CONFIG_NFC_MICROREAD_I2C=m +CONFIG_NFC_MICROREAD_MEI=m +CONFIG_NFC_MRVL_USB=m +CONFIG_NFC_MRVL_UART=m +CONFIG_NFC_MRVL_I2C=m +CONFIG_NFC_MRVL_SPI=m +CONFIG_NFC_ST21NFCA_I2C=m +CONFIG_NFC_ST_NCI_I2C=m +CONFIG_NFC_ST_NCI_SPI=m +CONFIG_NFC_NXP_NCI=m +CONFIG_NFC_NXP_NCI_I2C=m +CONFIG_NFC_S3FWRN5_I2C=m +CONFIG_NFC_S3FWRN82_UART=m +CONFIG_NFC_ST95HF=m +CONFIG_PCI=y +CONFIG_PCIEPORTBUS=y +CONFIG_HOTPLUG_PCI_PCIE=y +CONFIG_PCIEAER=y +CONFIG_PCIEAER_INJECT=m +CONFIG_PCIE_ECRC=y +CONFIG_PCIE_DPC=y +CONFIG_PCIE_PTM=y +CONFIG_PCIE_EDR=y +CONFIG_HOTPLUG_PCI=y +CONFIG_HOTPLUG_PCI_ACPI=y +CONFIG_HOTPLUG_PCI_ACPI_IBM=m +CONFIG_HOTPLUG_PCI_SHPC=y +CONFIG_VMD=y +CONFIG_PCI_SW_SWITCHTEC=m +CONFIG_UEVENT_HELPER=y +CONFIG_DEVTMPFS=y +CONFIG_DEVTMPFS_MOUNT=y +CONFIG_FW_LOADER_USER_HELPER=y +CONFIG_FW_LOADER_COMPRESS=y +CONFIG_FW_LOADER_COMPRESS_ZSTD=y +CONFIG_FW_UPLOAD=y +CONFIG_MHI_BUS=m +CONFIG_CONNECTOR=y +CONFIG_DMI_SYSFS=y +CONFIG_EFI_VARS_PSTORE=m +CONFIG_EFI_BOOTLOADER_CONTROL=m +CONFIG_EFI_CAPSULE_LOADER=m +CONFIG_EFI_TEST=m +CONFIG_APPLE_PROPERTIES=y +CONFIG_RESET_ATTACK_MITIGATION=y +CONFIG_EFI_RCI2_TABLE=y +CONFIG_EFI_COCO_SECRET=y +CONFIG_BLK_DEV_PCIESSD_MTIP32XX=m +CONFIG_ZRAM=y +CONFIG_ZRAM_BACKEND_ZSTD=y +CONFIG_ZRAM_BACKEND_LZO=y +CONFIG_ZRAM_DEF_COMP_ZSTD=y +CONFIG_ZRAM_WRITEBACK=y +CONFIG_ZRAM_MEMORY_TRACKING=y +CONFIG_BLK_DEV_LOOP=y +CONFIG_BLK_DEV_LOOP_MIN_COUNT=16 +CONFIG_BLK_DEV_RAM=y +CONFIG_BLK_DEV_RAM_SIZE=65536 +CONFIG_VIRTIO_BLK=y +CONFIG_TIFM_CORE=m +# CONFIG_TIFM_7XX1 is not set +CONFIG_SRAM=y +CONFIG_EEPROM_AT24=m +CONFIG_CB710_CORE=m +CONFIG_ALTERA_STAPL=m +CONFIG_INTEL_MEI_TXE=m +CONFIG_INTEL_MEI_GSC=m +CONFIG_INTEL_MEI_VSC_HW=m +CONFIG_INTEL_MEI_VSC=m +CONFIG_INTEL_MEI_HDCP=m +CONFIG_INTEL_MEI_PXP=m +CONFIG_INTEL_MEI_GSC_PROXY=m +# CONFIG_SCSI_PROC_FS is not set +CONFIG_BLK_DEV_SD=y +CONFIG_BLK_DEV_SR=y +CONFIG_CHR_DEV_SG=y +# CONFIG_BLK_DEV_BSG is not set +CONFIG_SCSI_SPI_ATTRS=y +CONFIG_VMWARE_PVSCSI=y +CONFIG_SCSI_VIRTIO=y +CONFIG_ATA=y +CONFIG_SATA_AHCI=y +CONFIG_SATA_MOBILE_LPM_POLICY=0 +CONFIG_SATA_AHCI_PLATFORM=y +CONFIG_ATA_PIIX=y +CONFIG_SATA_DWC=m +CONFIG_SATA_DWC_OLD_DMA=y +CONFIG_SATA_MV=m +CONFIG_SATA_NV=m +CONFIG_SATA_PROMISE=m +CONFIG_SATA_SIL=m +CONFIG_SATA_SIS=m +CONFIG_SATA_SVW=m +CONFIG_SATA_ULI=m +CONFIG_SATA_VIA=m +CONFIG_SATA_VITESSE=m +CONFIG_PATA_ALI=y +CONFIG_PATA_AMD=y +CONFIG_PATA_ATIIXP=y +CONFIG_PATA_IT8213=y +CONFIG_PATA_SCH=y +CONFIG_PATA_SIS=y +CONFIG_PATA_VIA=y +CONFIG_PATA_ACPI=y +CONFIG_ATA_GENERIC=y +CONFIG_MD=y +CONFIG_BLK_DEV_DM=y +CONFIG_DM_DEBUG=y +CONFIG_DM_CRYPT=y +CONFIG_DM_UEVENT=y +CONFIG_DM_VERITY=y +CONFIG_DM_VERITY_FEC=y +CONFIG_NETDEVICES=y +CONFIG_BONDING=m +CONFIG_DUMMY=m +CONFIG_WIREGUARD=y +CONFIG_EQUALIZER=m +CONFIG_NET_FC=y +CONFIG_IFB=m +CONFIG_NET_TEAM=m +CONFIG_NET_TEAM_MODE_BROADCAST=m +CONFIG_NET_TEAM_MODE_ROUNDROBIN=m +CONFIG_NET_TEAM_MODE_RANDOM=m +CONFIG_NET_TEAM_MODE_ACTIVEBACKUP=m +CONFIG_NET_TEAM_MODE_LOADBALANCE=m +CONFIG_MACVLAN=m +CONFIG_MACVTAP=m +CONFIG_NETCONSOLE=m +CONFIG_NETCONSOLE_DYNAMIC=y +CONFIG_TUN=y +CONFIG_VETH=y +CONFIG_VIRTIO_NET=m +CONFIG_NLMON=m +CONFIG_NET_VRF=m +CONFIG_VSOCKMON=m +CONFIG_MHI_NET=m +CONFIG_ARCNET=m +CONFIG_ARCNET_1201=m +CONFIG_ARCNET_1051=m +CONFIG_ARCNET_RAW=m +CONFIG_ARCNET_CAP=m +CONFIG_ARCNET_COM90xx=m +CONFIG_ARCNET_COM90xxIO=m +CONFIG_ARCNET_RIM_I=m +CONFIG_ARCNET_COM20020=m +CONFIG_ARCNET_COM20020_PCI=m +# CONFIG_NET_VENDOR_3COM is not set +# CONFIG_NET_VENDOR_ADAPTEC is not set +# CONFIG_NET_VENDOR_AGERE is not set +# CONFIG_NET_VENDOR_ALACRITECH is not set +# CONFIG_NET_VENDOR_ALTEON is not set +# CONFIG_NET_VENDOR_AMAZON is not set +# CONFIG_NET_VENDOR_AMD is not set +# CONFIG_NET_VENDOR_AQUANTIA is not set +# CONFIG_NET_VENDOR_ARC is not set +# CONFIG_NET_VENDOR_ASIX is not set +# CONFIG_NET_VENDOR_ATHEROS is not set +# CONFIG_NET_VENDOR_BROADCOM is not set +# CONFIG_NET_VENDOR_CADENCE is not set +# CONFIG_NET_VENDOR_CAVIUM is not set +# CONFIG_NET_VENDOR_CHELSIO is not set +# CONFIG_NET_VENDOR_CISCO is not set +# CONFIG_NET_VENDOR_CORTINA is not set +# CONFIG_NET_VENDOR_DAVICOM is not set +# CONFIG_NET_VENDOR_DEC is not set +# CONFIG_NET_VENDOR_DLINK is not set +# CONFIG_NET_VENDOR_EMULEX is not set +# CONFIG_NET_VENDOR_ENGLEDER is not set +# CONFIG_NET_VENDOR_EZCHIP is not set +# CONFIG_NET_VENDOR_FUNGIBLE is not set +# CONFIG_NET_VENDOR_GOOGLE is not set +# CONFIG_NET_VENDOR_HUAWEI is not set +# CONFIG_NET_VENDOR_I825XX is not set +CONFIG_E100=m +CONFIG_E1000=m +CONFIG_E1000E=m +CONFIG_IGB=m +CONFIG_IGBVF=m +CONFIG_IXGBE=m +CONFIG_IXGBEVF=m +CONFIG_I40E=m +CONFIG_I40EVF=m +CONFIG_ICE=m +CONFIG_FM10K=m +CONFIG_IGC=m +# CONFIG_NET_VENDOR_ADI is not set +# CONFIG_NET_VENDOR_LITEX is not set +# CONFIG_NET_VENDOR_MARVELL is not set +# CONFIG_NET_VENDOR_MELLANOX is not set +# CONFIG_NET_VENDOR_META is not set +# CONFIG_NET_VENDOR_MICREL is not set +# CONFIG_NET_VENDOR_MICROCHIP is not set +# CONFIG_NET_VENDOR_MICROSEMI is not set +# CONFIG_NET_VENDOR_MICROSOFT is not set +# CONFIG_NET_VENDOR_MYRI is not set +# CONFIG_NET_VENDOR_NI is not set +# CONFIG_NET_VENDOR_NATSEMI is not set +# CONFIG_NET_VENDOR_NETERION is not set +# CONFIG_NET_VENDOR_NETRONOME is not set +# CONFIG_NET_VENDOR_NVIDIA is not set +# CONFIG_NET_VENDOR_OKI is not set +# CONFIG_NET_VENDOR_PACKET_ENGINES is not set +# CONFIG_NET_VENDOR_PENSANDO is not set +# CONFIG_NET_VENDOR_QLOGIC is not set +# CONFIG_NET_VENDOR_BROCADE is not set +# CONFIG_NET_VENDOR_QUALCOMM is not set +# CONFIG_NET_VENDOR_RDC is not set +CONFIG_8139CP=m +CONFIG_8139TOO=m +CONFIG_8139TOO_TUNE_TWISTER=y +CONFIG_8139TOO_8129=y +CONFIG_R8169=m +# CONFIG_NET_VENDOR_RENESAS is not set +# CONFIG_NET_VENDOR_ROCKER is not set +# CONFIG_NET_VENDOR_SAMSUNG is not set +# CONFIG_NET_VENDOR_SEEQ is not set +# CONFIG_NET_VENDOR_SILAN is not set +# CONFIG_NET_VENDOR_SIS is not set +# CONFIG_NET_VENDOR_SOLARFLARE is not set +# CONFIG_NET_VENDOR_SMSC is not set +# CONFIG_NET_VENDOR_SOCIONEXT is not set +# CONFIG_NET_VENDOR_STMICRO is not set +# CONFIG_NET_VENDOR_SUN is not set +# CONFIG_NET_VENDOR_SYNOPSYS is not set +# CONFIG_NET_VENDOR_TEHUTI is not set +# CONFIG_NET_VENDOR_TI is not set +# CONFIG_NET_VENDOR_VERTEXCOM is not set +# CONFIG_NET_VENDOR_VIA is not set +# CONFIG_NET_VENDOR_WANGXUN is not set +# CONFIG_NET_VENDOR_WIZNET is not set +# CONFIG_NET_VENDOR_XILINX is not set +CONFIG_LED_TRIGGER_PHY=y +CONFIG_SFP=m +CONFIG_AMD_PHY=m +CONFIG_ADIN_PHY=m +CONFIG_AQUANTIA_PHY=m +CONFIG_BROADCOM_PHY=m +CONFIG_BCM7XXX_PHY=m +CONFIG_BCM87XX_PHY=m +CONFIG_CICADA_PHY=m +CONFIG_CORTINA_PHY=m +CONFIG_DAVICOM_PHY=m +CONFIG_ICPLUS_PHY=m +CONFIG_LXT_PHY=m +CONFIG_INTEL_XWAY_PHY=m +CONFIG_LSI_ET1011C_PHY=m +CONFIG_MARVELL_PHY=m +CONFIG_MARVELL_10G_PHY=m +CONFIG_MICREL_PHY=m +CONFIG_MICROCHIP_PHY=m +CONFIG_MICROSEMI_PHY=m +CONFIG_NATIONAL_PHY=m +CONFIG_AT803X_PHY=m +CONFIG_QSEMI_PHY=m +CONFIG_RENESAS_PHY=m +CONFIG_STE10XP=m +CONFIG_TERANETICS_PHY=m +CONFIG_DP83822_PHY=m +CONFIG_DP83848_PHY=m +CONFIG_DP83867_PHY=m +CONFIG_VITESSE_PHY=m +CONFIG_XILINX_GMII2RGMII=m +CONFIG_MICREL_KS8995MA=m +CONFIG_MDIO_BITBANG=m +CONFIG_MDIO_BCM_UNIMAC=m +CONFIG_MDIO_GPIO=m +CONFIG_MDIO_THUNDER=m +CONFIG_PCS_XPCS=m +CONFIG_PPP=y +CONFIG_PPP_BSDCOMP=y +CONFIG_PPP_DEFLATE=y +CONFIG_PPP_FILTER=y +CONFIG_PPP_MPPE=y +CONFIG_PPP_MULTILINK=y +CONFIG_PPPOE=y +CONFIG_PPTP=y +CONFIG_PPPOL2TP=y +CONFIG_PPP_ASYNC=m +CONFIG_PPP_SYNC_TTY=m +CONFIG_SLIP=m +CONFIG_SLIP_SMART=y +CONFIG_USB_RTL8150=m +CONFIG_USB_RTL8152=m +CONFIG_USB_USBNET=y +CONFIG_USB_NET_AX8817X=m +CONFIG_USB_NET_AX88179_178A=m +CONFIG_USB_NET_CDCETHER=m +CONFIG_USB_NET_CDC_EEM=m +CONFIG_USB_NET_CDC_NCM=m +CONFIG_USB_NET_HUAWEI_CDC_NCM=m +CONFIG_USB_NET_CDC_MBIM=m +CONFIG_USB_NET_DM9601=m +CONFIG_USB_NET_SR9700=m +CONFIG_USB_NET_SR9800=m +CONFIG_USB_NET_SMSC75XX=m +CONFIG_USB_NET_SMSC95XX=m +CONFIG_USB_NET_GL620A=m +CONFIG_USB_NET_NET1080=m +CONFIG_USB_NET_PLUSB=m +CONFIG_USB_NET_MCS7830=m +CONFIG_USB_NET_RNDIS_HOST=m +CONFIG_USB_NET_CDC_SUBSET=m +CONFIG_USB_ALI_M5632=y +CONFIG_USB_AN2720=y +CONFIG_USB_EPSON2888=y +CONFIG_USB_KC2190=y +# CONFIG_USB_NET_ZAURUS is not set +CONFIG_USB_NET_CX82310_ETH=m +CONFIG_USB_NET_QMI_WWAN=m +CONFIG_USB_HSO=m +CONFIG_USB_NET_INT51X1=m +CONFIG_USB_CDC_PHONET=m +CONFIG_USB_IPHETH=m +CONFIG_USB_VL600=m +CONFIG_USB_NET_CH9200=m +CONFIG_USB_NET_AQC111=m +# CONFIG_WLAN_VENDOR_ADMTEK is not set +# CONFIG_WLAN_VENDOR_ATH is not set +# CONFIG_WLAN_VENDOR_ATMEL is not set +CONFIG_B43=m +CONFIG_B43LEGACY=m +CONFIG_BRCMSMAC=m +CONFIG_BRCMFMAC=m +# CONFIG_BRCMFMAC_SDIO is not set +CONFIG_BRCMFMAC_USB=y +CONFIG_BRCMFMAC_PCIE=y +CONFIG_BRCM_TRACING=y +CONFIG_IPW2100=m +CONFIG_IPW2100_MONITOR=y +CONFIG_IPW2200=m +CONFIG_IPW2200_MONITOR=y +CONFIG_IPW2200_PROMISCUOUS=y +CONFIG_IPW2200_QOS=y +CONFIG_IWL4965=m +CONFIG_IWL3945=m +CONFIG_IWLWIFI=m +CONFIG_IWLDVM=m +CONFIG_IWLMVM=m +# CONFIG_IWLWIFI_DEVICE_TRACING is not set +# CONFIG_WLAN_VENDOR_INTERSIL is not set +# CONFIG_WLAN_VENDOR_MARVELL is not set +CONFIG_MT7601U=m +CONFIG_MT76x0U=m +CONFIG_MT76x2U=m +CONFIG_MT7663U=m +CONFIG_MT7921U=m +CONFIG_MT7925U=m +# CONFIG_WLAN_VENDOR_MICROCHIP is not set +# CONFIG_WLAN_VENDOR_PURELIFI is not set +# CONFIG_WLAN_VENDOR_RALINK is not set +CONFIG_RTL8187=m +CONFIG_RTL8192CE=m +CONFIG_RTL8188EE=m +CONFIG_RTL8192EE=m +CONFIG_RTL8821AE=m +CONFIG_RTL8192CU=m +CONFIG_RTL8192DU=m +# CONFIG_RTLWIFI_DEBUG is not set +CONFIG_RTL8XXXU=m +CONFIG_RTL8XXXU_UNTESTED=y +CONFIG_RTW88=m +CONFIG_RTW88_8822BU=m +CONFIG_RTW88_8822CU=m +CONFIG_RTW88_8723DU=m +CONFIG_RTW88_8821CU=m +# CONFIG_WLAN_VENDOR_RSI is not set +# CONFIG_WLAN_VENDOR_SILABS is not set +# CONFIG_WLAN_VENDOR_ST is not set +# CONFIG_WLAN_VENDOR_TI is not set +# CONFIG_WLAN_VENDOR_ZYDAS is not set +CONFIG_MAC80211_HWSIM=m +CONFIG_VIRT_WIFI=m +CONFIG_IEEE802154_FAKELB=m +CONFIG_IEEE802154_AT86RF230=m +CONFIG_IEEE802154_MRF24J40=m +CONFIG_IEEE802154_CC2520=m +CONFIG_IEEE802154_ATUSB=m +CONFIG_IEEE802154_ADF7242=m +CONFIG_IEEE802154_CA8210=m +CONFIG_INPUT_FF_MEMLESS=y +CONFIG_INPUT_MOUSEDEV=y +CONFIG_INPUT_MOUSEDEV_PSAUX=y +CONFIG_INPUT_JOYDEV=m +CONFIG_INPUT_EVDEV=y +CONFIG_KEYBOARD_ADC=m +CONFIG_KEYBOARD_ADP5588=m +CONFIG_KEYBOARD_ADP5589=m +CONFIG_KEYBOARD_APPLESPI=m +CONFIG_KEYBOARD_QT1050=m +CONFIG_KEYBOARD_QT1070=m +CONFIG_KEYBOARD_QT2160=m +CONFIG_KEYBOARD_DLINK_DIR685=m +CONFIG_KEYBOARD_LKKBD=m +CONFIG_KEYBOARD_GPIO=m +CONFIG_KEYBOARD_GPIO_POLLED=m +CONFIG_KEYBOARD_TCA6416=m +CONFIG_KEYBOARD_TCA8418=m +CONFIG_KEYBOARD_MATRIX=m +CONFIG_KEYBOARD_LM8323=m +CONFIG_KEYBOARD_LM8333=m +CONFIG_KEYBOARD_MAX7359=m +CONFIG_KEYBOARD_MPR121=m +CONFIG_KEYBOARD_NEWTON=m +CONFIG_KEYBOARD_OPENCORES=m +CONFIG_KEYBOARD_SAMSUNG=m +CONFIG_KEYBOARD_STOWAWAY=m +CONFIG_KEYBOARD_SUNKBD=m +CONFIG_KEYBOARD_TM2_TOUCHKEY=m +CONFIG_KEYBOARD_XTKBD=m +CONFIG_KEYBOARD_CYPRESS_SF=m +CONFIG_MOUSE_PS2=m +CONFIG_MOUSE_PS2_ELANTECH=y +CONFIG_MOUSE_PS2_SENTELIC=y +CONFIG_MOUSE_PS2_TOUCHKIT=y +CONFIG_MOUSE_PS2_VMMOUSE=y +CONFIG_MOUSE_SERIAL=m +CONFIG_MOUSE_APPLETOUCH=m +CONFIG_MOUSE_BCM5974=m +CONFIG_MOUSE_CYAPA=m +CONFIG_MOUSE_ELAN_I2C=m +CONFIG_MOUSE_ELAN_I2C_SMBUS=y +CONFIG_MOUSE_VSXXXAA=m +CONFIG_MOUSE_GPIO=m +CONFIG_MOUSE_SYNAPTICS_I2C=m +CONFIG_MOUSE_SYNAPTICS_USB=m +CONFIG_INPUT_JOYSTICK=y +CONFIG_JOYSTICK_ANALOG=m +CONFIG_JOYSTICK_A3D=m +CONFIG_JOYSTICK_ADC=m +CONFIG_JOYSTICK_ADI=m +CONFIG_JOYSTICK_COBRA=m +CONFIG_JOYSTICK_GF2K=m +CONFIG_JOYSTICK_GRIP=m +CONFIG_JOYSTICK_GRIP_MP=m +CONFIG_JOYSTICK_GUILLEMOT=m +CONFIG_JOYSTICK_INTERACT=m +CONFIG_JOYSTICK_SIDEWINDER=m +CONFIG_JOYSTICK_TMDC=m +CONFIG_JOYSTICK_IFORCE=m +CONFIG_JOYSTICK_IFORCE_USB=m +CONFIG_JOYSTICK_IFORCE_232=m +CONFIG_JOYSTICK_WARRIOR=m +CONFIG_JOYSTICK_MAGELLAN=m +CONFIG_JOYSTICK_SPACEORB=m +CONFIG_JOYSTICK_SPACEBALL=m +CONFIG_JOYSTICK_STINGER=m +CONFIG_JOYSTICK_TWIDJOY=m +CONFIG_JOYSTICK_ZHENHUA=m +CONFIG_JOYSTICK_AS5011=m +CONFIG_JOYSTICK_JOYDUMP=m +CONFIG_JOYSTICK_XPAD=m +CONFIG_JOYSTICK_XPAD_FF=y +CONFIG_JOYSTICK_XPAD_LEDS=y +CONFIG_JOYSTICK_PSXPAD_SPI=m +CONFIG_JOYSTICK_PSXPAD_SPI_FF=y +CONFIG_JOYSTICK_PXRC=m +CONFIG_JOYSTICK_QWIIC=m +CONFIG_JOYSTICK_FSIA6B=m +CONFIG_JOYSTICK_SENSEHAT=m +CONFIG_JOYSTICK_SEESAW=m +CONFIG_INPUT_TABLET=y +CONFIG_TABLET_USB_ACECAD=m +CONFIG_TABLET_USB_AIPTEK=m +CONFIG_TABLET_USB_HANWANG=m +CONFIG_TABLET_USB_KBTAB=m +CONFIG_TABLET_USB_PEGASUS=m +CONFIG_TABLET_SERIAL_WACOM4=m +CONFIG_INPUT_TOUCHSCREEN=y +CONFIG_TOUCHSCREEN_USB_COMPOSITE=m +# CONFIG_TOUCHSCREEN_USB_EGALAX is not set +# CONFIG_TOUCHSCREEN_USB_PANJIT is not set +# CONFIG_TOUCHSCREEN_USB_3M is not set +# CONFIG_TOUCHSCREEN_USB_ITM is not set +# CONFIG_TOUCHSCREEN_USB_ETURBO is not set +# CONFIG_TOUCHSCREEN_USB_GUNZE is not set +# CONFIG_TOUCHSCREEN_USB_DMC_TSC10 is not set +# CONFIG_TOUCHSCREEN_USB_IRTOUCH is not set +# CONFIG_TOUCHSCREEN_USB_IDEALTEK is not set +# CONFIG_TOUCHSCREEN_USB_GENERAL_TOUCH is not set +# CONFIG_TOUCHSCREEN_USB_GOTOP is not set +# CONFIG_TOUCHSCREEN_USB_JASTEC is not set +# CONFIG_TOUCHSCREEN_USB_ELO is not set +# CONFIG_TOUCHSCREEN_USB_E2I is not set +# CONFIG_TOUCHSCREEN_USB_ZYTRONIC is not set +# CONFIG_TOUCHSCREEN_USB_ETT_TC45USB is not set +# CONFIG_TOUCHSCREEN_USB_NEXIO is not set +# CONFIG_TOUCHSCREEN_USB_EASYTOUCH is not set +CONFIG_INPUT_MISC=y +CONFIG_INPUT_PCSPKR=m +CONFIG_INPUT_ATLAS_BTNS=m +CONFIG_INPUT_KEYSPAN_REMOTE=m +CONFIG_INPUT_UINPUT=y +CONFIG_INPUT_PWM_BEEPER=m +CONFIG_INPUT_PWM_VIBRA=m +CONFIG_INPUT_SOC_BUTTON_ARRAY=m +CONFIG_RMI4_CORE=m +CONFIG_RMI4_I2C=m +CONFIG_RMI4_SPI=m +CONFIG_RMI4_SMB=m +CONFIG_RMI4_F03=y +CONFIG_RMI4_F11=y +CONFIG_RMI4_F12=y +CONFIG_RMI4_F30=y +CONFIG_RMI4_F34=y +CONFIG_RMI4_F3A=y +CONFIG_RMI4_F54=y +CONFIG_SERIO_CT82C710=m +CONFIG_SERIO_PCIPS2=y +CONFIG_SERIO_RAW=y +CONFIG_SERIO_ALTERA_PS2=m +CONFIG_SERIO_PS2MULT=m +CONFIG_SERIO_ARC_PS2=m +CONFIG_GAMEPORT_EMU10K1=m +CONFIG_GAMEPORT_FM801=m +# CONFIG_LEGACY_PTYS is not set +CONFIG_SERIAL_8250=y +# CONFIG_SERIAL_8250_DEPRECATED_OPTIONS is not set +CONFIG_SERIAL_8250_CONSOLE=y +CONFIG_SERIAL_8250_PCI=m +CONFIG_SERIAL_8250_EXAR=m +CONFIG_SERIAL_8250_EXTENDED=y +CONFIG_SERIAL_8250_MANY_PORTS=y +CONFIG_SERIAL_8250_SHARE_IRQ=y +CONFIG_SERIAL_8250_DETECT_IRQ=y +CONFIG_SERIAL_8250_RSA=y +CONFIG_SERIAL_8250_DW=m +CONFIG_SERIAL_8250_RT288X=y +CONFIG_SERIAL_8250_LPSS=m +CONFIG_SERIAL_8250_MID=m +CONFIG_SERIAL_JSM=m +CONFIG_SERIAL_ARC=m +CONFIG_NULL_TTY=y +CONFIG_SERIAL_DEV_BUS=y +CONFIG_VIRTIO_CONSOLE=m +CONFIG_IPMI_HANDLER=m +CONFIG_HW_RANDOM_TIMERIOMEM=m +CONFIG_HW_RANDOM_VIRTIO=m +CONFIG_NVRAM=m +CONFIG_HPET=y +# CONFIG_HPET_MMAP is not set +CONFIG_HANGCHECK_TIMER=m +CONFIG_I2C=y +CONFIG_I2C_CHARDEV=m +CONFIG_I2C_MUX_GPIO=m +CONFIG_I2C_MUX_PCA9541=m +CONFIG_I2C_MUX_PCA954x=m +CONFIG_I2C_MUX_REG=m +CONFIG_I2C_I801=m +CONFIG_I2C_ISCH=m +CONFIG_I2C_ISMT=m +CONFIG_I2C_PIIX4=m +CONFIG_I2C_CHT_WC=m +CONFIG_I2C_SCMI=m +CONFIG_I2C_CBUS_GPIO=m +CONFIG_I2C_DESIGNWARE_CORE=y +CONFIG_I2C_DESIGNWARE_SLAVE=y +CONFIG_I2C_DESIGNWARE_BAYTRAIL=y +CONFIG_I2C_DESIGNWARE_PCI=m +CONFIG_I2C_GPIO=m +CONFIG_I2C_PCA_PLATFORM=m +CONFIG_I2C_VIRTIO=m +CONFIG_I3C=m +CONFIG_CDNS_I3C_MASTER=m +CONFIG_DW_I3C_MASTER=m +CONFIG_SVC_I3C_MASTER=m +CONFIG_MIPI_I3C_HCI=m +CONFIG_SPI=y +CONFIG_SPI_ALTERA=m +CONFIG_SPI_AXI_SPI_ENGINE=m +CONFIG_SPI_CADENCE=m +CONFIG_SPI_CH341=m +CONFIG_SPI_DESIGNWARE=m +CONFIG_SPI_DW_DMA=y +CONFIG_SPI_DW_PCI=m +CONFIG_SPI_DW_MMIO=m +CONFIG_SPI_GPIO=m +CONFIG_SPI_INTEL_PCI=m +CONFIG_SPI_INTEL_PLATFORM=m +CONFIG_SPI_MICROCHIP_CORE=m +CONFIG_SPI_MICROCHIP_CORE_QSPI=m +CONFIG_SPI_LANTIQ_SSC=m +CONFIG_SPI_OC_TINY=m +CONFIG_SPI_PCI1XXXX=m +CONFIG_SPI_PXA2XX=m +CONFIG_SPI_SC18IS602=m +CONFIG_SPI_SIFIVE=m +CONFIG_SPI_MXIC=m +CONFIG_SPI_XCOMM=m +CONFIG_SPI_XILINX=m +CONFIG_SPI_ZYNQMP_GQSPI=m +CONFIG_SPI_AMD=m +CONFIG_SPI_MUX=m +CONFIG_SPI_SPIDEV=m +CONFIG_SPI_LOOPBACK_TEST=m +CONFIG_SPI_TLE62X0=m +CONFIG_SPI_SLAVE=y +CONFIG_SPI_SLAVE_TIME=m +CONFIG_SPI_SLAVE_SYSTEM_CONTROL=m +CONFIG_SPMI=m +CONFIG_HSI=m +CONFIG_HSI_CHAR=m +CONFIG_PTP_1588_CLOCK_KVM=m +CONFIG_PINCTRL_CHERRYVIEW=y +CONFIG_GPIO_SYSFS=y +CONFIG_GPIO_AMDPT=m +CONFIG_GPIO_DWAPB=m +CONFIG_GPIO_EXAR=m +CONFIG_GPIO_GENERIC_PLATFORM=y +CONFIG_GPIO_ICH=m +CONFIG_GPIO_MB86S7X=m +CONFIG_GPIO_AMD_FCH=m +CONFIG_GPIO_VX855=m +CONFIG_GPIO_F7188X=m +CONFIG_GPIO_IT87=m +CONFIG_GPIO_SCH=m +CONFIG_GPIO_SCH311X=m +CONFIG_GPIO_WINBOND=m +CONFIG_GPIO_WS16C48=m +CONFIG_GPIO_FXL6408=m +CONFIG_GPIO_DS4520=m +CONFIG_GPIO_MAX7300=m +CONFIG_GPIO_MAX732X=m +CONFIG_GPIO_PCA953X=m +CONFIG_GPIO_PCA953X_IRQ=y +CONFIG_GPIO_PCA9570=m +CONFIG_GPIO_PCF857X=m +CONFIG_GPIO_TPIC2810=m +CONFIG_GPIO_CRYSTAL_COVE=y +CONFIG_GPIO_ELKHARTLAKE=m +CONFIG_GPIO_WHISKEY_COVE=m +CONFIG_GPIO_AMD8111=m +CONFIG_GPIO_ML_IOH=m +CONFIG_GPIO_PCI_IDIO_16=m +CONFIG_GPIO_PCIE_IDIO_24=m +CONFIG_GPIO_RDC321X=m +CONFIG_GPIO_MAX3191X=m +CONFIG_GPIO_MAX7301=m +CONFIG_GPIO_MC33880=m +CONFIG_GPIO_PISOSR=m +CONFIG_GPIO_XRA1403=m +CONFIG_GPIO_AGGREGATOR=m +CONFIG_GPIO_VIRTIO=m +CONFIG_POWER_RESET=y +CONFIG_POWER_RESET_RESTART=y +# CONFIG_POWER_SUPPLY_HWMON is not set +CONFIG_BATTERY_BQ27XXX=m +CONFIG_CHARGER_BQ25890=m +CONFIG_SENSORS_ABITUGURU=m +CONFIG_SENSORS_ABITUGURU3=m +CONFIG_SENSORS_AD7314=m +CONFIG_SENSORS_AD7414=m +CONFIG_SENSORS_AD7418=m +CONFIG_SENSORS_ADM1025=m +CONFIG_SENSORS_ADM1026=m +CONFIG_SENSORS_ADM1029=m +CONFIG_SENSORS_ADM1031=m +CONFIG_SENSORS_ADM1177=m +CONFIG_SENSORS_ADM9240=m +CONFIG_SENSORS_ADT7310=m +CONFIG_SENSORS_ADT7410=m +CONFIG_SENSORS_ADT7411=m +CONFIG_SENSORS_ADT7462=m +CONFIG_SENSORS_ADT7470=m +CONFIG_SENSORS_ADT7475=m +CONFIG_SENSORS_AHT10=m +CONFIG_SENSORS_AQUACOMPUTER_D5NEXT=m +CONFIG_SENSORS_AS370=m +CONFIG_SENSORS_ASC7621=m +CONFIG_SENSORS_ASUS_ROG_RYUJIN=m +CONFIG_SENSORS_AXI_FAN_CONTROL=m +CONFIG_SENSORS_K8TEMP=m +CONFIG_SENSORS_APPLESMC=m +CONFIG_SENSORS_ASB100=m +CONFIG_SENSORS_ATXP1=m +CONFIG_SENSORS_CHIPCAP2=m +CONFIG_SENSORS_CORSAIR_CPRO=m +CONFIG_SENSORS_CORSAIR_PSU=m +CONFIG_SENSORS_DRIVETEMP=m +CONFIG_SENSORS_DS620=m +CONFIG_SENSORS_DS1621=m +CONFIG_SENSORS_DELL_SMM=m +CONFIG_I8K=y +CONFIG_SENSORS_I5K_AMB=m +CONFIG_SENSORS_F71805F=m +CONFIG_SENSORS_F71882FG=m +CONFIG_SENSORS_F75375S=m +CONFIG_SENSORS_FSCHMD=m +CONFIG_SENSORS_FTSTEUTATES=m +CONFIG_SENSORS_GIGABYTE_WATERFORCE=m +CONFIG_SENSORS_GL518SM=m +CONFIG_SENSORS_GL520SM=m +CONFIG_SENSORS_G760A=m +CONFIG_SENSORS_G762=m +CONFIG_SENSORS_HIH6130=m +CONFIG_SENSORS_HS3001=m +CONFIG_SENSORS_IBMAEM=m +CONFIG_SENSORS_IBMPEX=m +CONFIG_SENSORS_IIO_HWMON=m +CONFIG_SENSORS_I5500=m +CONFIG_SENSORS_CORETEMP=m +CONFIG_SENSORS_IT87=m +CONFIG_SENSORS_JC42=m +CONFIG_SENSORS_POWERZ=m +CONFIG_SENSORS_POWR1220=m +CONFIG_SENSORS_LENOVO_EC=m +CONFIG_SENSORS_LINEAGE=m +CONFIG_SENSORS_LTC2945=m +CONFIG_SENSORS_LTC2947_I2C=m +CONFIG_SENSORS_LTC2947_SPI=m +CONFIG_SENSORS_LTC2990=m +CONFIG_SENSORS_LTC2991=m +CONFIG_SENSORS_LTC2992=m +CONFIG_SENSORS_LTC4151=m +CONFIG_SENSORS_LTC4215=m +CONFIG_SENSORS_LTC4222=m +CONFIG_SENSORS_LTC4245=m +CONFIG_SENSORS_LTC4260=m +CONFIG_SENSORS_LTC4261=m +CONFIG_SENSORS_LTC4282=m +CONFIG_SENSORS_MAX1111=m +CONFIG_SENSORS_MAX127=m +CONFIG_SENSORS_MAX16065=m +CONFIG_SENSORS_MAX1619=m +CONFIG_SENSORS_MAX1668=m +CONFIG_SENSORS_MAX197=m +CONFIG_SENSORS_MAX31722=m +CONFIG_SENSORS_MAX31730=m +CONFIG_SENSORS_MAX31760=m +CONFIG_MAX31827=m +CONFIG_SENSORS_MAX6620=m +CONFIG_SENSORS_MAX6621=m +CONFIG_SENSORS_MAX6639=m +CONFIG_SENSORS_MAX6650=m +CONFIG_SENSORS_MAX6697=m +CONFIG_SENSORS_MAX31790=m +CONFIG_SENSORS_MC34VR500=m +CONFIG_SENSORS_MCP3021=m +CONFIG_SENSORS_TC654=m +CONFIG_SENSORS_TPS23861=m +CONFIG_SENSORS_MR75203=m +CONFIG_SENSORS_ADCXX=m +CONFIG_SENSORS_LM63=m +CONFIG_SENSORS_LM70=m +CONFIG_SENSORS_LM73=m +CONFIG_SENSORS_LM75=m +CONFIG_SENSORS_LM77=m +CONFIG_SENSORS_LM78=m +CONFIG_SENSORS_LM80=m +CONFIG_SENSORS_LM83=m +CONFIG_SENSORS_LM85=m +CONFIG_SENSORS_LM87=m +CONFIG_SENSORS_LM90=m +CONFIG_SENSORS_LM92=m +CONFIG_SENSORS_LM93=m +CONFIG_SENSORS_LM95234=m +CONFIG_SENSORS_LM95241=m +CONFIG_SENSORS_LM95245=m +CONFIG_SENSORS_PC87360=m +CONFIG_SENSORS_PC87427=m +CONFIG_SENSORS_NTC_THERMISTOR=m +CONFIG_SENSORS_NCT6683=m +CONFIG_SENSORS_NCT6775=m +CONFIG_SENSORS_NCT6775_I2C=m +CONFIG_SENSORS_NCT7802=m +CONFIG_SENSORS_NCT7904=m +CONFIG_SENSORS_NPCM7XX=m +CONFIG_SENSORS_NZXT_KRAKEN2=m +CONFIG_SENSORS_NZXT_KRAKEN3=m +CONFIG_SENSORS_NZXT_SMART2=m +CONFIG_SENSORS_OCC_P8_I2C=m +CONFIG_SENSORS_PCF8591=m +CONFIG_PMBUS=m +CONFIG_SENSORS_ACBEL_FSG032=m +CONFIG_SENSORS_ADM1266=m +CONFIG_SENSORS_ADM1275=m +CONFIG_SENSORS_ADP1050=m +CONFIG_SENSORS_BEL_PFE=m +CONFIG_SENSORS_BPA_RS600=m +CONFIG_SENSORS_DELTA_AHE50DC_FAN=m +CONFIG_SENSORS_FSP_3Y=m +CONFIG_SENSORS_IBM_CFFPS=m +CONFIG_SENSORS_DPS920AB=m +CONFIG_SENSORS_INSPUR_IPSPS=m +CONFIG_SENSORS_IR35221=m +CONFIG_SENSORS_IR36021=m +CONFIG_SENSORS_IR38064=m +CONFIG_SENSORS_IR38064_REGULATOR=y +CONFIG_SENSORS_IRPS5401=m +CONFIG_SENSORS_ISL68137=m +CONFIG_SENSORS_LM25066=m +CONFIG_SENSORS_LM25066_REGULATOR=y +CONFIG_SENSORS_LT7182S=m +CONFIG_SENSORS_LTC2978=m +CONFIG_SENSORS_LTC2978_REGULATOR=y +CONFIG_SENSORS_LTC3815=m +CONFIG_SENSORS_LTC4286=y +CONFIG_SENSORS_MAX15301=m +CONFIG_SENSORS_MAX16064=m +CONFIG_SENSORS_MAX16601=m +CONFIG_SENSORS_MAX20730=m +CONFIG_SENSORS_MAX20751=m +CONFIG_SENSORS_MAX31785=m +CONFIG_SENSORS_MAX34440=m +CONFIG_SENSORS_MAX8688=m +CONFIG_SENSORS_MP2856=m +CONFIG_SENSORS_MP2888=m +CONFIG_SENSORS_MP2891=m +CONFIG_SENSORS_MP2975=m +CONFIG_SENSORS_MP2993=m +CONFIG_SENSORS_MP2975_REGULATOR=y +CONFIG_SENSORS_MP5023=m +CONFIG_SENSORS_MP5920=m +CONFIG_SENSORS_MP5990=m +CONFIG_SENSORS_MP9941=m +CONFIG_SENSORS_MPQ7932_REGULATOR=y +CONFIG_SENSORS_MPQ7932=m +CONFIG_SENSORS_MPQ8785=m +CONFIG_SENSORS_PIM4328=m +CONFIG_SENSORS_PLI1209BC=m +CONFIG_SENSORS_PLI1209BC_REGULATOR=y +CONFIG_SENSORS_PM6764TR=m +CONFIG_SENSORS_PXE1610=m +CONFIG_SENSORS_Q54SJ108A2=m +CONFIG_SENSORS_STPDDC60=m +CONFIG_SENSORS_TDA38640=m +CONFIG_SENSORS_TDA38640_REGULATOR=y +CONFIG_SENSORS_TPS40422=m +CONFIG_SENSORS_TPS53679=m +CONFIG_SENSORS_TPS546D24=m +CONFIG_SENSORS_UCD9000=m +CONFIG_SENSORS_UCD9200=m +CONFIG_SENSORS_XDP710=m +CONFIG_SENSORS_XDPE152=m +CONFIG_SENSORS_XDPE122=m +CONFIG_SENSORS_XDPE122_REGULATOR=y +CONFIG_SENSORS_ZL6100=m +CONFIG_SENSORS_PT5161L=m +CONFIG_SENSORS_PWM_FAN=m +CONFIG_SENSORS_SBTSI=m +CONFIG_SENSORS_SHT15=m +CONFIG_SENSORS_SHT21=m +CONFIG_SENSORS_SHT3x=m +CONFIG_SENSORS_SHT4x=m +CONFIG_SENSORS_SHTC1=m +CONFIG_SENSORS_SIS5595=m +CONFIG_SENSORS_DME1737=m +CONFIG_SENSORS_EMC1403=m +CONFIG_SENSORS_EMC2103=m +CONFIG_SENSORS_EMC2305=m +CONFIG_SENSORS_EMC6W201=m +CONFIG_SENSORS_SMSC47M1=m +CONFIG_SENSORS_SMSC47M192=m +CONFIG_SENSORS_SMSC47B397=m +CONFIG_SENSORS_SCH5627=m +CONFIG_SENSORS_SCH5636=m +CONFIG_SENSORS_STTS751=m +CONFIG_SENSORS_ADC128D818=m +CONFIG_SENSORS_ADS7828=m +CONFIG_SENSORS_ADS7871=m +CONFIG_SENSORS_AMC6821=m +CONFIG_SENSORS_INA209=m +CONFIG_SENSORS_INA2XX=m +CONFIG_SENSORS_INA238=m +CONFIG_SENSORS_INA3221=m +CONFIG_SENSORS_SPD5118=m +CONFIG_SENSORS_TC74=m +CONFIG_SENSORS_THMC50=m +CONFIG_SENSORS_TMP102=m +CONFIG_SENSORS_TMP103=m +CONFIG_SENSORS_TMP108=m +CONFIG_SENSORS_TMP401=m +CONFIG_SENSORS_TMP421=m +CONFIG_SENSORS_TMP464=m +CONFIG_SENSORS_TMP513=m +CONFIG_SENSORS_VIA_CPUTEMP=m +CONFIG_SENSORS_VIA686A=m +CONFIG_SENSORS_VT1211=m +CONFIG_SENSORS_VT8231=m +CONFIG_SENSORS_W83773G=m +CONFIG_SENSORS_W83781D=m +CONFIG_SENSORS_W83791D=m +CONFIG_SENSORS_W83792D=m +CONFIG_SENSORS_W83793=m +CONFIG_SENSORS_W83795=m +CONFIG_SENSORS_W83L785TS=m +CONFIG_SENSORS_W83L786NG=m +CONFIG_SENSORS_W83627HF=m +CONFIG_SENSORS_W83627EHF=m +CONFIG_SENSORS_XGENE=m +CONFIG_SENSORS_INTEL_M10_BMC_HWMON=m +CONFIG_SENSORS_ACPI_POWER=m +CONFIG_SENSORS_ATK0110=m +CONFIG_SENSORS_ASUS_WMI=m +CONFIG_SENSORS_ASUS_EC=m +CONFIG_SENSORS_HP_WMI=m +CONFIG_THERMAL_GOV_FAIR_SHARE=y +CONFIG_THERMAL_GOV_BANG_BANG=y +CONFIG_DEVFREQ_THERMAL=y +CONFIG_INTEL_POWERCLAMP=m +CONFIG_INTEL_SOC_DTS_THERMAL=m +CONFIG_INT340X_THERMAL=m +CONFIG_INT3406_THERMAL=m +CONFIG_INTEL_BXT_PMIC_THERMAL=m +CONFIG_INTEL_PCH_THERMAL=m +CONFIG_INTEL_TCC_COOLING=m +CONFIG_INTEL_HFI_THERMAL=y +CONFIG_GENERIC_ADC_THERMAL=m +CONFIG_WATCHDOG=y +CONFIG_WATCHDOG_CORE=y +CONFIG_WATCHDOG_SYSFS=y +CONFIG_WATCHDOG_PRETIMEOUT_GOV=y +CONFIG_WATCHDOG_PRETIMEOUT_GOV_PANIC=m +CONFIG_WATCHDOG_PRETIMEOUT_DEFAULT_GOV_NOOP=y +CONFIG_SOFT_WATCHDOG=m +CONFIG_SOFT_WATCHDOG_PRETIMEOUT=y +CONFIG_LENOVO_SE10_WDT=m +CONFIG_WDAT_WDT=m +CONFIG_XILINX_WATCHDOG=m +CONFIG_ZIIRAVE_WATCHDOG=m +CONFIG_CADENCE_WATCHDOG=m +CONFIG_DW_WATCHDOG=m +CONFIG_MAX63XX_WATCHDOG=m +CONFIG_ACQUIRE_WDT=m +CONFIG_ADVANTECH_WDT=m +CONFIG_ADVANTECH_EC_WDT=m +CONFIG_ALIM1535_WDT=m +CONFIG_ALIM7101_WDT=m +CONFIG_EBC_C384_WDT=m +CONFIG_EXAR_WDT=m +CONFIG_F71808E_WDT=m +CONFIG_SP5100_TCO=m +CONFIG_SBC_FITPC2_WATCHDOG=m +CONFIG_EUROTECH_WDT=m +CONFIG_IB700_WDT=m +CONFIG_IBMASR=m +CONFIG_WAFER_WDT=m +CONFIG_I6300ESB_WDT=m +CONFIG_IE6XX_WDT=m +CONFIG_ITCO_WDT=m +CONFIG_ITCO_VENDOR_SUPPORT=y +CONFIG_IT8712F_WDT=m +CONFIG_IT87_WDT=m +CONFIG_HP_WATCHDOG=m +CONFIG_SC1200_WDT=m +CONFIG_PC87413_WDT=m +CONFIG_NV_TCO=m +CONFIG_60XX_WDT=m +CONFIG_SMSC_SCH311X_WDT=m +CONFIG_SMSC37B787_WDT=m +CONFIG_TQMX86_WDT=m +CONFIG_VIA_WDT=m +CONFIG_W83627HF_WDT=m +CONFIG_W83877F_WDT=m +CONFIG_W83977F_WDT=m +CONFIG_MACHZ_WDT=m +CONFIG_SBC_EPX_C3_WATCHDOG=m +CONFIG_INTEL_MEI_WDT=m +CONFIG_NI903X_WDT=m +CONFIG_NIC7018_WDT=m +CONFIG_MEN_A21_WDT=m +CONFIG_PCIPCWATCHDOG=m +CONFIG_WDTPCI=m +CONFIG_USBPCWATCHDOG=m +CONFIG_SSB_SDIOHOST=y +CONFIG_SSB_DRIVER_GPIO=y +CONFIG_BCMA_HOST_SOC=y +CONFIG_BCMA_DRIVER_GMAC_CMN=y +CONFIG_BCMA_DRIVER_GPIO=y +CONFIG_MFD_BCM590XX=m +CONFIG_MFD_CS42L43_SDW=m +CONFIG_MFD_INTEL_QUARK_I2C_GPIO=m +CONFIG_LPC_ICH=m +CONFIG_INTEL_SOC_PMIC=y +CONFIG_INTEL_SOC_PMIC_BXTWC=m +CONFIG_INTEL_SOC_PMIC_CHTWC=y +CONFIG_INTEL_SOC_PMIC_CHTDC_TI=m +CONFIG_MFD_INTEL_LPSS_ACPI=m +CONFIG_MFD_INTEL_LPSS_PCI=m +CONFIG_MFD_INTEL_PMC_BXT=m +CONFIG_MFD_WL1273_CORE=m +CONFIG_MFD_INTEL_M10_BMC_SPI=m +CONFIG_REGULATOR=y +CONFIG_REGULATOR_FIXED_VOLTAGE=y +CONFIG_REGULATOR_VIRTUAL_CONSUMER=m +CONFIG_REGULATOR_USERSPACE_CONSUMER=m +CONFIG_REGULATOR_NETLINK_EVENTS=y +CONFIG_REGULATOR_BCM590XX=m +CONFIG_REGULATOR_GPIO=m +CONFIG_REGULATOR_PWM=m +CONFIG_RC_CORE=m +CONFIG_LIRC=y +CONFIG_RC_DECODERS=y +CONFIG_IR_JVC_DECODER=m +CONFIG_IR_MCE_KBD_DECODER=m +CONFIG_IR_NEC_DECODER=m +CONFIG_IR_RC5_DECODER=m +CONFIG_IR_RC6_DECODER=m +CONFIG_IR_SANYO_DECODER=m +CONFIG_IR_SHARP_DECODER=m +CONFIG_IR_SONY_DECODER=m +CONFIG_IR_XMP_DECODER=m +CONFIG_RC_DEVICES=y +CONFIG_IR_ENE=m +CONFIG_IR_FINTEK=m +CONFIG_IR_IGUANA=m +CONFIG_IR_IMON=m +CONFIG_IR_ITE_CIR=m +CONFIG_IR_MCEUSB=m +CONFIG_IR_NUVOTON=m +CONFIG_IR_REDRAT3=m +CONFIG_IR_STREAMZAP=m +CONFIG_IR_TTUSBIR=m +CONFIG_IR_WINBOND_CIR=m +CONFIG_RC_ATI_REMOTE=m +CONFIG_RC_LOOPBACK=m +CONFIG_MEDIA_CEC_RC=y +CONFIG_CEC_CH7322=m +CONFIG_CEC_GPIO=m +CONFIG_CEC_SECO=m +CONFIG_CEC_SECO_RC=y +CONFIG_USB_PULSE8_CEC=m +CONFIG_USB_RAINSHADOW_CEC=m +CONFIG_MEDIA_SUPPORT=y +CONFIG_MEDIA_USB_SUPPORT=y +CONFIG_USB_GSPCA=m +CONFIG_USB_GSPCA_BENQ=m +CONFIG_USB_GSPCA_CONEX=m +CONFIG_USB_GSPCA_CPIA1=m +CONFIG_USB_GSPCA_DTCS033=m +CONFIG_USB_GSPCA_ETOMS=m +CONFIG_USB_GSPCA_FINEPIX=m +CONFIG_USB_GSPCA_JEILINJ=m +CONFIG_USB_GSPCA_JL2005BCD=m +CONFIG_USB_GSPCA_KINECT=m +CONFIG_USB_GSPCA_KONICA=m +CONFIG_USB_GSPCA_MARS=m +CONFIG_USB_GSPCA_MR97310A=m +CONFIG_USB_GSPCA_NW80X=m +CONFIG_USB_GSPCA_OV519=m +CONFIG_USB_GSPCA_OV534=m +CONFIG_USB_GSPCA_OV534_9=m +CONFIG_USB_GSPCA_PAC207=m +CONFIG_USB_GSPCA_PAC7302=m +CONFIG_USB_GSPCA_PAC7311=m +CONFIG_USB_GSPCA_SE401=m +CONFIG_USB_GSPCA_SN9C2028=m +CONFIG_USB_GSPCA_SN9C20X=m +CONFIG_USB_GSPCA_SONIXB=m +CONFIG_USB_GSPCA_SONIXJ=m +CONFIG_USB_GSPCA_SPCA1528=m +CONFIG_USB_GSPCA_SPCA500=m +CONFIG_USB_GSPCA_SPCA501=m +CONFIG_USB_GSPCA_SPCA505=m +CONFIG_USB_GSPCA_SPCA506=m +CONFIG_USB_GSPCA_SPCA508=m +CONFIG_USB_GSPCA_SPCA561=m +CONFIG_USB_GSPCA_SQ905=m +CONFIG_USB_GSPCA_SQ905C=m +CONFIG_USB_GSPCA_SQ930X=m +CONFIG_USB_GSPCA_STK014=m +CONFIG_USB_GSPCA_STK1135=m +CONFIG_USB_GSPCA_STV0680=m +CONFIG_USB_GSPCA_SUNPLUS=m +CONFIG_USB_GSPCA_T613=m +CONFIG_USB_GSPCA_TOPRO=m +CONFIG_USB_GSPCA_TOUPTEK=m +CONFIG_USB_GSPCA_TV8532=m +CONFIG_USB_GSPCA_VC032X=m +CONFIG_USB_GSPCA_VICAM=m +CONFIG_USB_GSPCA_XIRLINK_CIT=m +CONFIG_USB_GSPCA_ZC3XX=m +CONFIG_USB_GL860=m +CONFIG_USB_M5602=m +CONFIG_USB_STV06XX=m +CONFIG_USB_PWC=m +CONFIG_USB_S2255=m +CONFIG_VIDEO_USBTV=m +CONFIG_USB_VIDEO_CLASS=m +CONFIG_VIDEO_EM28XX=m +CONFIG_VIDEO_EM28XX_V4L2=m +CONFIG_VIDEO_EM28XX_ALSA=m +CONFIG_MEDIA_PCI_SUPPORT=y +CONFIG_IPU_BRIDGE=m +CONFIG_VIDEO_OV5693=m +CONFIG_VIDEO_AD5820=m +CONFIG_VIDEO_AK7375=m +CONFIG_VIDEO_DW9714=m +CONFIG_VIDEO_DW9719=m +CONFIG_VIDEO_DW9768=m +CONFIG_VIDEO_DW9807_VCM=m +CONFIG_VIDEO_CS3308=m +CONFIG_VIDEO_CS5345=m +CONFIG_VIDEO_ADV7180=m +CONFIG_VIDEO_ADV7183=m +CONFIG_VIDEO_ADV7604=m +CONFIG_VIDEO_BT819=m +CONFIG_VIDEO_BT856=m +CONFIG_VIDEO_BT866=m +CONFIG_VIDEO_KS0127=m +CONFIG_VIDEO_SAA7110=m +CONFIG_VIDEO_SAA711X=m +CONFIG_VIDEO_TVP514X=m +CONFIG_VIDEO_TVP5150=m +CONFIG_VIDEO_TVP7002=m +CONFIG_VIDEO_VPX3220=m +CONFIG_VIDEO_SAA717X=m +CONFIG_VIDEO_CX25840=m +CONFIG_VIDEO_ADV7170=m +CONFIG_VIDEO_ADV7175=m +CONFIG_VIDEO_ADV7343=m +CONFIG_VIDEO_ADV7393=m +CONFIG_VIDEO_ADV7511=m +CONFIG_VIDEO_AK881X=m +CONFIG_VIDEO_SAA7127=m +CONFIG_VIDEO_SAA7185=m +CONFIG_VIDEO_THS8200=m +CONFIG_VIDEO_I2C=m +CONFIG_VIDEO_M52790=m +CONFIG_VIDEO_ST_MIPID02=m +CONFIG_VIDEO_THS7303=m +CONFIG_VIDEO_GS1662=m +CONFIG_AUXDISPLAY=y +CONFIG_AGP=y +CONFIG_AGP_INTEL=y +CONFIG_AGP_SIS=y +CONFIG_AGP_VIA=y +CONFIG_DRM=m +CONFIG_DRM_LOAD_EDID_FIRMWARE=y +CONFIG_DRM_DISPLAY_DP_AUX_CEC=y +CONFIG_DRM_DISPLAY_DP_AUX_CHARDEV=y +CONFIG_DRM_SIMPLEDRM=m +CONFIG_DRM_I915=m +CONFIG_DRM_I915_FORCE_PROBE="*" +CONFIG_DRM_I915_PXP=y +CONFIG_DRM_VGEM=m +CONFIG_DRM_VKMS=m +CONFIG_DRM_VIRTIO_GPU=m +CONFIG_FB=y +CONFIG_FB_VGA16=m +CONFIG_FB_UVESA=m +CONFIG_FB_VESA=y +CONFIG_FB_EFI=y +CONFIG_FB_UDL=m +CONFIG_FB_VIRTUAL=m +CONFIG_FIRMWARE_EDID=y +CONFIG_FB_TILEBLITTING=y +CONFIG_BACKLIGHT_CLASS_DEVICE=y +CONFIG_BACKLIGHT_LP855X=y +CONFIG_FRAMEBUFFER_CONSOLE_ROTATION=y +CONFIG_FRAMEBUFFER_CONSOLE_DEFERRED_TAKEOVER=y +CONFIG_LOGO=y +# CONFIG_LOGO_LINUX_MONO is not set +# CONFIG_LOGO_LINUX_VGA16 is not set +# CONFIG_LOGO_LINUX_CLUT224 is not set +CONFIG_SOUND=m +CONFIG_SND=m +CONFIG_SND_OSSEMUL=y +CONFIG_SND_MIXER_OSS=m +CONFIG_SND_PCM_OSS=m +CONFIG_SND_HRTIMER=m +CONFIG_SND_DYNAMIC_MINORS=y +# CONFIG_SND_SUPPORT_OLD_API is not set +CONFIG_SND_SEQUENCER=m +CONFIG_SND_DUMMY=m +CONFIG_SND_ALOOP=m +CONFIG_SND_VIRMIDI=m +CONFIG_SND_USB_AUDIO=m +CONFIG_SND_USB_UA101=m +CONFIG_SND_USB_USX2Y=m +CONFIG_SND_USB_CAIAQ=m +CONFIG_SND_USB_CAIAQ_INPUT=y +CONFIG_SND_USB_US122L=m +CONFIG_SND_USB_6FIRE=m +CONFIG_SND_USB_HIFACE=m +CONFIG_SND_BCD2000=m +CONFIG_SND_USB_POD=m +CONFIG_SND_USB_PODHD=m +CONFIG_SND_USB_TONEPORT=m +CONFIG_SND_USB_VARIAX=m +CONFIG_SND_SOC=m +CONFIG_SND_SOC_INTEL_USER_FRIENDLY_LONG_NAMES=y +CONFIG_SND_SOC_INTEL_CHT_BSW_RT5659_MACH=m +CONFIG_SND_SOC_BT_SCO=m +CONFIG_SND_SOC_SIMPLE_AMPLIFIER=m +CONFIG_SND_SOC_SIMPLE_MUX=m +CONFIG_SND_SOC_TFA989X=m +CONFIG_SND_SIMPLE_CARD=m +# CONFIG_SND_X86 is not set +CONFIG_SND_VIRTIO=m +CONFIG_HID_BATTERY_STRENGTH=y +CONFIG_HIDRAW=y +CONFIG_UHID=y +CONFIG_HID_LED=m +CONFIG_HID_MULTITOUCH=m +CONFIG_HID_SENSOR_HUB=m +CONFIG_HID_SENSOR_CUSTOM_SENSOR=m +CONFIG_HID_BPF=y +CONFIG_I2C_HID_ACPI=m +CONFIG_INTEL_ISH_HID=m +CONFIG_HID_PID=y +CONFIG_USB_HIDDEV=y +CONFIG_USB_LED_TRIG=y +CONFIG_USB_ULPI_BUS=y +CONFIG_USB_CONN_GPIO=y +CONFIG_USB=y +CONFIG_USB_ANNOUNCE_NEW_DEVICES=y +CONFIG_USB_OTG=y +CONFIG_USB_LEDS_TRIGGER_USBPORT=m +CONFIG_USB_MON=y +CONFIG_USB_C67X00_HCD=m +CONFIG_USB_XHCI_HCD=y +CONFIG_USB_XHCI_PCI_RENESAS=y +CONFIG_USB_EHCI_HCD=y +CONFIG_USB_EHCI_HCD_PLATFORM=y +CONFIG_USB_OXU210HP_HCD=y +CONFIG_USB_ISP116X_HCD=y +CONFIG_USB_OHCI_HCD=y +CONFIG_USB_UHCI_HCD=y +CONFIG_USB_SL811_HCD=y +CONFIG_USB_SL811_HCD_ISO=y +CONFIG_USB_R8A66597_HCD=m +CONFIG_USB_HCD_BCMA=m +CONFIG_USB_HCD_SSB=m +CONFIG_USB_PRINTER=m +CONFIG_USB_TMC=m +CONFIG_USB_STORAGE=y +CONFIG_USB_STORAGE_REALTEK=y +CONFIG_USB_STORAGE_DATAFAB=y +CONFIG_USB_STORAGE_FREECOM=y +CONFIG_USB_STORAGE_ISD200=y +CONFIG_USB_STORAGE_USBAT=y +CONFIG_USB_STORAGE_SDDR09=y +CONFIG_USB_STORAGE_SDDR55=y +CONFIG_USB_STORAGE_JUMPSHOT=y +CONFIG_USB_STORAGE_ALAUDA=y +CONFIG_USB_STORAGE_ONETOUCH=y +CONFIG_USB_STORAGE_KARMA=m +CONFIG_USB_STORAGE_CYPRESS_ATACB=y +CONFIG_USB_STORAGE_ENE_UB6250=y +CONFIG_USB_UAS=y +CONFIG_USB_MDC800=m +CONFIG_USB_MICROTEK=m +CONFIG_USBIP_CORE=m +CONFIG_USBIP_VHCI_HCD=m +CONFIG_USBIP_HOST=m +CONFIG_USBIP_VUDC=m +CONFIG_USB_DWC3=y +CONFIG_USB_DWC3_ULPI=y +CONFIG_USB_DWC2=y +CONFIG_USB_DWC2_PCI=y +CONFIG_USB_CHIPIDEA=m +CONFIG_USB_CHIPIDEA_UDC=y +CONFIG_USB_CHIPIDEA_HOST=y +CONFIG_USB_ISP1760=m +CONFIG_USB_SERIAL=m +CONFIG_USB_SERIAL_AIRCABLE=m +CONFIG_USB_SERIAL_ARK3116=m +CONFIG_USB_SERIAL_BELKIN=m +CONFIG_USB_SERIAL_CH341=m +CONFIG_USB_SERIAL_WHITEHEAT=m +CONFIG_USB_SERIAL_DIGI_ACCELEPORT=m +CONFIG_USB_SERIAL_CP210X=m +CONFIG_USB_SERIAL_CYPRESS_M8=m +CONFIG_USB_SERIAL_EMPEG=m +CONFIG_USB_SERIAL_FTDI_SIO=m +CONFIG_USB_SERIAL_VISOR=m +CONFIG_USB_SERIAL_IPAQ=m +CONFIG_USB_SERIAL_IR=m +CONFIG_USB_SERIAL_EDGEPORT=m +CONFIG_USB_SERIAL_EDGEPORT_TI=m +CONFIG_USB_SERIAL_F81232=m +CONFIG_USB_SERIAL_F8153X=m +CONFIG_USB_SERIAL_GARMIN=m +CONFIG_USB_SERIAL_IPW=m +CONFIG_USB_SERIAL_IUU=m +CONFIG_USB_SERIAL_KEYSPAN_PDA=m +CONFIG_USB_SERIAL_KEYSPAN=m +CONFIG_USB_SERIAL_KLSI=m +CONFIG_USB_SERIAL_KOBIL_SCT=m +CONFIG_USB_SERIAL_MCT_U232=m +CONFIG_USB_SERIAL_METRO=m +CONFIG_USB_SERIAL_MOS7720=m +CONFIG_USB_SERIAL_MOS7840=m +CONFIG_USB_SERIAL_MXUPORT=m +CONFIG_USB_SERIAL_NAVMAN=m +CONFIG_USB_SERIAL_PL2303=m +CONFIG_USB_SERIAL_OTI6858=m +CONFIG_USB_SERIAL_QCAUX=m +CONFIG_USB_SERIAL_QUALCOMM=m +CONFIG_USB_SERIAL_SPCP8X5=m +CONFIG_USB_SERIAL_SAFE=m +CONFIG_USB_SERIAL_SIERRAWIRELESS=m +CONFIG_USB_SERIAL_SYMBOL=m +CONFIG_USB_SERIAL_TI=m +CONFIG_USB_SERIAL_CYBERJACK=m +CONFIG_USB_SERIAL_OPTION=m +CONFIG_USB_SERIAL_OMNINET=m +CONFIG_USB_SERIAL_OPTICON=m +CONFIG_USB_SERIAL_XSENS_MT=m +CONFIG_USB_SERIAL_WISHBONE=m +CONFIG_USB_SERIAL_SSU100=m +CONFIG_USB_SERIAL_QT2=m +CONFIG_USB_SERIAL_UPD78F0730=m +CONFIG_USB_EMI62=m +CONFIG_USB_EMI26=m +CONFIG_USB_ADUTUX=m +CONFIG_USB_SEVSEG=m +CONFIG_USB_LEGOTOWER=m +CONFIG_USB_LCD=m +CONFIG_USB_CYPRESS_CY7C63=m +CONFIG_USB_CYTHERM=m +CONFIG_USB_IDMOUSE=m +CONFIG_USB_APPLEDISPLAY=m +CONFIG_APPLE_MFI_FASTCHARGE=m +CONFIG_USB_LJCA=m +CONFIG_USB_SISUSBVGA=m +CONFIG_USB_LD=m +CONFIG_USB_TRANCEVIBRATOR=m +CONFIG_USB_IOWARRIOR=m +CONFIG_USB_TEST=m +CONFIG_USB_EHSET_TEST_FIXTURE=m +CONFIG_USB_ISIGHTFW=m +CONFIG_USB_YUREX=m +CONFIG_USB_HUB_USB251XB=m +CONFIG_USB_HSIC_USB3503=m +CONFIG_USB_HSIC_USB4604=m +CONFIG_USB_LINK_LAYER_TEST=m +CONFIG_USB_CHAOSKEY=m +CONFIG_USB_ISP1301=m +CONFIG_USB_GADGET=y +CONFIG_USB_GADGET_DEBUG_FILES=y +CONFIG_USB_GADGET_DEBUG_FS=y +CONFIG_USB_GADGET_VBUS_DRAW=500 +CONFIG_USB_GR_UDC=m +CONFIG_USB_R8A66597=m +CONFIG_USB_PXA27X=m +CONFIG_USB_BDC_UDC=m +CONFIG_USB_AMD5536UDC=m +CONFIG_USB_NET2280=m +CONFIG_USB_GOKU=m +CONFIG_USB_EG20T=m +CONFIG_USB_MAX3420_UDC=m +CONFIG_USB_CDNS2_UDC=m +CONFIG_USB_CONFIGFS=y +CONFIG_USB_CONFIGFS_SERIAL=y +CONFIG_USB_CONFIGFS_NCM=y +CONFIG_USB_CONFIGFS_ECM=y +CONFIG_USB_CONFIGFS_RNDIS=y +CONFIG_USB_CONFIGFS_EEM=y +CONFIG_USB_CONFIGFS_PHONET=y +CONFIG_USB_CONFIGFS_MASS_STORAGE=y +CONFIG_USB_CONFIGFS_F_LB_SS=y +CONFIG_USB_CONFIGFS_F_FS=y +CONFIG_USB_CONFIGFS_F_HID=y +CONFIG_USB_CONFIGFS_F_UVC=y +CONFIG_USB_ROLES_INTEL_XHCI=m +CONFIG_MMC=y +CONFIG_MMC_SDHCI=y +CONFIG_MMC_SDHCI_ACPI=y +CONFIG_MMC_USHC=m +CONFIG_MMC_CQHCI=y +CONFIG_LEDS_CLASS_MULTICOLOR=y +CONFIG_LEDS_KTD202X=y +CONFIG_LEDS_TRIGGER_TIMER=m +CONFIG_LEDS_TRIGGER_ONESHOT=m +CONFIG_LEDS_TRIGGER_DISK=y +CONFIG_LEDS_TRIGGER_HEARTBEAT=m +CONFIG_LEDS_TRIGGER_BACKLIGHT=m +CONFIG_LEDS_TRIGGER_CPU=y +CONFIG_LEDS_TRIGGER_ACTIVITY=m +CONFIG_LEDS_TRIGGER_DEFAULT_ON=m +CONFIG_LEDS_TRIGGER_TRANSIENT=y +CONFIG_LEDS_TRIGGER_INPUT_EVENTS=y +CONFIG_EDAC=y +# CONFIG_EDAC_LEGACY_SYSFS is not set +CONFIG_EDAC_IE31200=m +CONFIG_EDAC_I5400=m +CONFIG_EDAC_I7300=m +CONFIG_EDAC_PND2=m +CONFIG_EDAC_IGEN6=m +CONFIG_RTC_CLASS=y +CONFIG_RTC_DEBUG=y +CONFIG_RTC_DRV_ABB5ZES3=m +CONFIG_RTC_DRV_ABEOZ9=m +CONFIG_RTC_DRV_ABX80X=m +CONFIG_RTC_DRV_DS1307=m +CONFIG_RTC_DRV_DS1307_CENTURY=y +CONFIG_RTC_DRV_DS1374=m +CONFIG_RTC_DRV_DS1374_WDT=y +CONFIG_RTC_DRV_DS1672=m +CONFIG_RTC_DRV_MAX6900=m +CONFIG_RTC_DRV_MAX31335=m +CONFIG_RTC_DRV_RS5C372=m +CONFIG_RTC_DRV_ISL1208=m +CONFIG_RTC_DRV_ISL12022=m +CONFIG_RTC_DRV_X1205=m +CONFIG_RTC_DRV_PCF8523=m +CONFIG_RTC_DRV_PCF85063=m +CONFIG_RTC_DRV_PCF85363=m +CONFIG_RTC_DRV_PCF8563=m +CONFIG_RTC_DRV_PCF8583=m +CONFIG_RTC_DRV_M41T80=m +CONFIG_RTC_DRV_M41T80_WDT=y +CONFIG_RTC_DRV_BQ32K=m +CONFIG_RTC_DRV_S35390A=m +CONFIG_RTC_DRV_FM3130=m +CONFIG_RTC_DRV_RX8010=m +CONFIG_RTC_DRV_RX8111=m +CONFIG_RTC_DRV_RX8581=m +CONFIG_RTC_DRV_RX8025=m +CONFIG_RTC_DRV_EM3027=m +CONFIG_RTC_DRV_RV3028=m +CONFIG_RTC_DRV_RV3032=m +CONFIG_RTC_DRV_RV8803=m +CONFIG_RTC_DRV_SD3078=m +CONFIG_RTC_DRV_M41T93=m +CONFIG_RTC_DRV_M41T94=m +CONFIG_RTC_DRV_DS1302=m +CONFIG_RTC_DRV_DS1305=m +CONFIG_RTC_DRV_DS1343=m +CONFIG_RTC_DRV_DS1347=m +CONFIG_RTC_DRV_DS1390=m +CONFIG_RTC_DRV_MAX6916=m +CONFIG_RTC_DRV_R9701=m +CONFIG_RTC_DRV_RX4581=m +CONFIG_RTC_DRV_RS5C348=m +CONFIG_RTC_DRV_MAX6902=m +CONFIG_RTC_DRV_PCF2123=m +CONFIG_RTC_DRV_MCP795=m +CONFIG_RTC_DRV_DS3232=m +CONFIG_RTC_DRV_PCF2127=m +CONFIG_RTC_DRV_RV3029C2=m +CONFIG_RTC_DRV_RX6110=m +CONFIG_RTC_DRV_DS1286=m +CONFIG_RTC_DRV_DS1511=m +CONFIG_RTC_DRV_DS1553=m +CONFIG_RTC_DRV_DS1685_FAMILY=m +CONFIG_RTC_DRV_DS1742=m +CONFIG_RTC_DRV_DS2404=m +CONFIG_RTC_DRV_STK17TA8=m +CONFIG_RTC_DRV_M48T86=m +CONFIG_RTC_DRV_M48T35=m +CONFIG_RTC_DRV_M48T59=m +CONFIG_RTC_DRV_MSM6242=m +CONFIG_RTC_DRV_RP5C01=m +CONFIG_RTC_DRV_FTRTC010=m +CONFIG_RTC_DRV_HID_SENSOR_TIME=m +CONFIG_RTC_DRV_GOLDFISH=m +CONFIG_DMADEVICES=y +CONFIG_INTEL_IDMA64=m +CONFIG_INTEL_IDXD=m +CONFIG_INTEL_IDXD_SVM=y +CONFIG_INTEL_IDXD_PERFMON=y +CONFIG_INTEL_IOATDMA=m +CONFIG_XILINX_XDMA=m +CONFIG_DW_DMAC=m +CONFIG_DW_EDMA=m +CONFIG_DW_EDMA_PCIE=m +CONFIG_SF_PDMA=m +CONFIG_INTEL_LDMA=y +CONFIG_SW_SYNC=y +CONFIG_DMABUF_HEAPS=y +CONFIG_DMABUF_SYSFS_STATS=y +CONFIG_DMABUF_HEAPS_SYSTEM=y +CONFIG_UIO=m +CONFIG_VIRT_DRIVERS=y +CONFIG_VIRTIO_PCI=y +CONFIG_VIRTIO_VDPA=m +CONFIG_VIRTIO_PMEM=m +CONFIG_VIRTIO_BALLOON=y +CONFIG_VIRTIO_INPUT=m +CONFIG_VIRTIO_MMIO=y +CONFIG_VIRTIO_MMIO_CMDLINE_DEVICES=y +CONFIG_VDPA=m +CONFIG_VDPA_SIM=m +CONFIG_VDPA_SIM_NET=m +CONFIG_VDPA_SIM_BLOCK=m +CONFIG_IFCVF=m +CONFIG_VP_VDPA=m +CONFIG_ALIBABA_ENI_VDPA=m +CONFIG_VHOST_NET=m +CONFIG_VHOST_VSOCK=m +CONFIG_VHOST_VDPA=m +CONFIG_COMEDI=m +CONFIG_STAGING=y +CONFIG_STAGING_MEDIA=y +CONFIG_INTEL_ATOMISP=y +CONFIG_VIDEO_ATOMISP=m +# CONFIG_SURFACE_PLATFORMS is not set +CONFIG_HUAWEI_WMI=m +CONFIG_MXM_WMI=m +CONFIG_NVIDIA_WMI_EC_BACKLIGHT=m +CONFIG_ADV_SWBUTTON=m +CONFIG_WIRELESS_HOTKEY=m +CONFIG_IBM_RTL=m +CONFIG_INTEL_SPEED_SELECT_INTERFACE=m +CONFIG_INTEL_WMI_THUNDERBOLT=m +CONFIG_INTEL_HID_EVENT=m +CONFIG_INTEL_VBTN=m +CONFIG_INTEL_INT0002_VGPIO=m +CONFIG_INTEL_CHTDC_TI_PWRBTN=m +CONFIG_INTEL_ISHTP_ECLITE=m +CONFIG_INTEL_PUNIT_IPC=m +CONFIG_INTEL_RST=m +CONFIG_INTEL_SDSI=m +CONFIG_INTEL_SMARTCONNECT=m +CONFIG_INTEL_TPMI=m +CONFIG_INTEL_PLR_TPMI=m +CONFIG_INTEL_TURBO_MAX_3=y +CONFIG_INTEL_VSEC=m +CONFIG_ACPI_QUICKSTART=m +CONFIG_X86_ANDROID_TABLETS=y +CONFIG_INTEL_IPS=m +CONFIG_INTEL_SCU_PCI=y +CONFIG_INTEL_SCU_PLATFORM=m +CONFIG_INTEL_SCU_IPC_UTIL=m +CONFIG_COMMON_CLK_PWM=m +CONFIG_HWSPINLOCK=y +CONFIG_AMD_IOMMU=y +CONFIG_INTEL_IOMMU=y +CONFIG_INTEL_IOMMU_SVM=y +# CONFIG_INTEL_IOMMU_DEFAULT_ON is not set +# CONFIG_INTEL_IOMMU_SCALABLE_MODE_DEFAULT_ON is not set +CONFIG_IRQ_REMAP=y +CONFIG_VIRTIO_IOMMU=y +CONFIG_REMOTEPROC=y +CONFIG_REMOTEPROC_CDEV=y +CONFIG_SOUNDWIRE=m +CONFIG_SOUNDWIRE_INTEL=m +CONFIG_PM_DEVFREQ=y +CONFIG_DEVFREQ_GOV_SIMPLE_ONDEMAND=y +CONFIG_DEVFREQ_GOV_PERFORMANCE=y +CONFIG_DEVFREQ_GOV_POWERSAVE=y +CONFIG_DEVFREQ_GOV_USERSPACE=y +CONFIG_DEVFREQ_GOV_PASSIVE=y +CONFIG_PM_DEVFREQ_EVENT=y +CONFIG_EXTCON_GPIO=m +CONFIG_EXTCON_INTEL_INT3496=m +CONFIG_EXTCON_INTEL_CHT_WC=m +CONFIG_EXTCON_USB_GPIO=m +CONFIG_MEMORY=y +CONFIG_IIO=m +CONFIG_IIO_BUFFER_HW_CONSUMER=m +CONFIG_IIO_SW_DEVICE=m +CONFIG_IIO_SW_TRIGGER=m +CONFIG_ADIS16201=m +CONFIG_ADIS16209=m +CONFIG_ADXL313_I2C=m +CONFIG_ADXL313_SPI=m +CONFIG_ADXL355_I2C=m +CONFIG_ADXL355_SPI=m +CONFIG_ADXL367_SPI=m +CONFIG_ADXL367_I2C=m +CONFIG_ADXL372_SPI=m +CONFIG_ADXL372_I2C=m +CONFIG_BMA220=m +CONFIG_BMA400=m +CONFIG_BMC150_ACCEL=m +CONFIG_BMI088_ACCEL=m +CONFIG_DA280=m +CONFIG_DA311=m +CONFIG_DMARD06=m +CONFIG_DMARD09=m +CONFIG_DMARD10=m +CONFIG_FXLS8962AF_I2C=m +CONFIG_FXLS8962AF_SPI=m +CONFIG_HID_SENSOR_ACCEL_3D=m +CONFIG_IIO_KX022A_SPI=m +CONFIG_IIO_KX022A_I2C=m +CONFIG_KXSD9=m +CONFIG_KXCJK1013=m +CONFIG_MC3230=m +CONFIG_MMA7455_I2C=m +CONFIG_MMA7455_SPI=m +CONFIG_MMA7660=m +CONFIG_MMA8452=m +CONFIG_MMA9551=m +CONFIG_MMA9553=m +CONFIG_MSA311=m +CONFIG_MXC4005=m +CONFIG_MXC6255=m +CONFIG_SCA3000=m +CONFIG_SCA3300=m +CONFIG_STK8312=m +CONFIG_STK8BA50=m +CONFIG_AD7192=m +CONFIG_AD7280=m +CONFIG_AD7606_IFACE_PARALLEL=m +CONFIG_AD7606_IFACE_SPI=m +CONFIG_AD7780=m +CONFIG_IIO_SSP_SENSORS_COMMONS=m +CONFIG_IIO_SSP_SENSORHUB=m +CONFIG_AD3552R=m +CONFIG_AD5064=m +CONFIG_AD5360=m +CONFIG_AD5380=m +CONFIG_AD5421=m +CONFIG_AD5446=m +CONFIG_AD5449=m +CONFIG_AD5592R=m +CONFIG_AD5593R=m +CONFIG_AD5504=m +CONFIG_AD5624R_SPI=m +CONFIG_AD9739A=m +CONFIG_LTC2688=m +CONFIG_AD5686_SPI=m +CONFIG_AD5696_I2C=m +CONFIG_AD5755=m +CONFIG_AD5758=m +CONFIG_AD5761=m +CONFIG_AD5764=m +CONFIG_AD5766=m +CONFIG_AD5770R=m +CONFIG_AD5791=m +CONFIG_AD7293=m +CONFIG_AD7303=m +CONFIG_AD8801=m +CONFIG_DS4424=m +CONFIG_LTC1660=m +CONFIG_LTC2632=m +CONFIG_M62332=m +CONFIG_MAX517=m +CONFIG_MAX5522=m +CONFIG_MAX5821=m +CONFIG_MCP4725=m +CONFIG_MCP4728=m +CONFIG_MCP4821=m +CONFIG_MCP4922=m +CONFIG_TI_DAC082S085=m +CONFIG_TI_DAC5571=m +CONFIG_TI_DAC7311=m +CONFIG_TI_DAC7612=m +CONFIG_VF610_DAC=m +CONFIG_ADIS16080=m +CONFIG_ADIS16130=m +CONFIG_ADIS16136=m +CONFIG_ADIS16260=m +CONFIG_ADXRS290=m +CONFIG_ADXRS450=m +CONFIG_BMG160=m +CONFIG_FXAS21002C=m +CONFIG_HID_SENSOR_GYRO_3D=m +CONFIG_MPU3050_I2C=m +CONFIG_IIO_ST_GYRO_3AXIS=m +CONFIG_ITG3200=m +CONFIG_AM2315=m +CONFIG_DHT11=m +CONFIG_HDC100X=m +CONFIG_HDC2010=m +CONFIG_HDC3020=m +CONFIG_HID_SENSOR_HUMIDITY=m +CONFIG_HTS221=m +CONFIG_HTU21=m +CONFIG_SI7005=m +CONFIG_SI7020=m +CONFIG_ADIS16400=m +CONFIG_ADIS16460=m +CONFIG_ADIS16475=m +CONFIG_ADIS16480=m +CONFIG_BMI160_I2C=m +CONFIG_BMI160_SPI=m +CONFIG_BMI323_I2C=m +CONFIG_BMI323_SPI=m +CONFIG_BOSCH_BNO055_SERIAL=m +CONFIG_BOSCH_BNO055_I2C=m +CONFIG_FXOS8700_I2C=m +CONFIG_FXOS8700_SPI=m +CONFIG_KMX61=m +CONFIG_INV_ICM42600_I2C=m +CONFIG_INV_ICM42600_SPI=m +CONFIG_INV_MPU6050_I2C=m +CONFIG_INV_MPU6050_SPI=m +CONFIG_IIO_ST_LSM6DSX=m +CONFIG_IIO_ST_LSM9DS0=m +CONFIG_ACPI_ALS=m +CONFIG_ADJD_S311=m +CONFIG_ADUX1020=m +CONFIG_AL3010=m +CONFIG_AL3320A=m +CONFIG_APDS9300=m +CONFIG_APDS9306=m +CONFIG_APDS9960=m +CONFIG_AS73211=m +CONFIG_BH1750=m +CONFIG_BH1780=m +CONFIG_CM32181=m +CONFIG_CM3232=m +CONFIG_CM3323=m +CONFIG_CM3605=m +CONFIG_CM36651=m +CONFIG_GP2AP002=m +CONFIG_GP2AP020A00F=m +CONFIG_SENSORS_ISL29018=m +CONFIG_SENSORS_ISL29028=m +CONFIG_ISL29125=m +CONFIG_ISL76682=m +CONFIG_HID_SENSOR_ALS=m +CONFIG_HID_SENSOR_PROX=m +CONFIG_JSA1212=m +CONFIG_ROHM_BU27034=m +CONFIG_RPR0521=m +CONFIG_LTR390=m +CONFIG_LTR501=m +CONFIG_LTRF216A=m +CONFIG_LV0104CS=m +CONFIG_MAX44000=m +CONFIG_MAX44009=m +CONFIG_NOA1305=m +CONFIG_OPT3001=m +CONFIG_OPT4001=m +CONFIG_PA12203001=m +CONFIG_SI1133=m +CONFIG_SI1145=m +CONFIG_STK3310=m +CONFIG_ST_UVIS25=m +CONFIG_TCS3414=m +CONFIG_TCS3472=m +CONFIG_SENSORS_TSL2563=m +CONFIG_TSL2583=m +CONFIG_TSL2591=m +CONFIG_TSL2772=m +CONFIG_TSL4531=m +CONFIG_US5182D=m +CONFIG_VCNL4000=m +CONFIG_VCNL4035=m +CONFIG_VEML6030=m +CONFIG_VEML6040=m +CONFIG_VEML6070=m +CONFIG_VEML6075=m +CONFIG_VL6180=m +CONFIG_ZOPT2201=m +CONFIG_AK8974=m +CONFIG_AK09911=m +CONFIG_BMC150_MAGN_I2C=m +CONFIG_BMC150_MAGN_SPI=m +CONFIG_MAG3110=m +CONFIG_HID_SENSOR_MAGNETOMETER_3D=m +CONFIG_MMC35240=m +CONFIG_SENSORS_HMC5843_I2C=m +CONFIG_SENSORS_HMC5843_SPI=m +CONFIG_SENSORS_RM3100_I2C=m +CONFIG_SENSORS_RM3100_SPI=m +CONFIG_TI_TMAG5273=m +CONFIG_YAMAHA_YAS530=m +CONFIG_IIO_MUX=m +CONFIG_HID_SENSOR_INCLINOMETER_3D=m +CONFIG_HID_SENSOR_DEVICE_ROTATION=m +CONFIG_IIO_INTERRUPT_TRIGGER=m +CONFIG_IIO_SYSFS_TRIGGER=m +CONFIG_HID_SENSOR_CUSTOM_INTEL_HINGE=m +CONFIG_HID_SENSOR_PRESS=m +CONFIG_MPL3115=m +CONFIG_MS5611=m +CONFIG_MS5611_I2C=m +CONFIG_MS5611_SPI=m +CONFIG_MS5637=m +CONFIG_IIO_ST_PRESS=m +CONFIG_T5403=m +CONFIG_AS3935=m +CONFIG_LIDAR_LITE_V2=m +CONFIG_SX9500=m +CONFIG_MLX90614=m +CONFIG_TMP006=m +CONFIG_TSYS01=m +CONFIG_TSYS02D=m +CONFIG_PWM=y +CONFIG_PWM_LPSS_PLATFORM=y +CONFIG_BCM_KONA_USB2_PHY=m +CONFIG_PHY_PXA_28NM_HSIC=m +CONFIG_PHY_PXA_28NM_USB2=m +CONFIG_PHY_SAMSUNG_USB2=m +CONFIG_INTEL_RAPL=m +CONFIG_ANDROID_BINDER_IPC=y +CONFIG_ANDROID_BINDERFS=y +CONFIG_LIBNVDIMM=y +CONFIG_BLK_DEV_PMEM=m +CONFIG_DAX=y +CONFIG_INTERCONNECT=y +CONFIG_EXT4_FS=y +CONFIG_EXT4_FS_POSIX_ACL=y +CONFIG_EXT4_FS_SECURITY=y +CONFIG_BTRFS_FS=y +CONFIG_F2FS_FS=y +CONFIG_F2FS_FS_SECURITY=y +CONFIG_F2FS_FS_COMPRESSION=y +CONFIG_F2FS_UNFAIR_RWSEM=y +CONFIG_FS_ENCRYPTION=y +# CONFIG_DNOTIFY is not set +CONFIG_QUOTA=y +CONFIG_QUOTA_NETLINK_INTERFACE=y +CONFIG_QFMT_V2=y +CONFIG_FUSE_FS=y +CONFIG_VIRTIO_FS=y +CONFIG_OVERLAY_FS=y +CONFIG_ISO9660_FS=y +CONFIG_JOLIET=y +CONFIG_UDF_FS=m +CONFIG_MSDOS_FS=y +CONFIG_VFAT_FS=y +CONFIG_EXFAT_FS=y +CONFIG_NTFS3_FS=y +CONFIG_NTFS3_LZX_XPRESS=y +CONFIG_NTFS3_FS_POSIX_ACL=y +CONFIG_PROC_KCORE=y +CONFIG_TMPFS_POSIX_ACL=y +CONFIG_EFIVAR_FS=y +CONFIG_SQUASHFS=y +CONFIG_SQUASHFS_XATTR=y +CONFIG_SQUASHFS_LZ4=y +CONFIG_SQUASHFS_LZO=y +CONFIG_SQUASHFS_XZ=y +CONFIG_SQUASHFS_ZSTD=y +CONFIG_SQUASHFS_4K_DEVBLK_SIZE=y +CONFIG_PSTORE=y +CONFIG_PSTORE_CONSOLE=y +CONFIG_PSTORE_FTRACE=y +CONFIG_PSTORE_RAM=y +CONFIG_EROFS_FS=y +CONFIG_EROFS_FS_ZIP_LZMA=y +CONFIG_EROFS_FS_ZIP_DEFLATE=y +CONFIG_EROFS_FS_ZIP_ZSTD=y +CONFIG_EROFS_FS_PCPU_KTHREAD=y +CONFIG_NFS_FS=m +CONFIG_NFS_V2=m +CONFIG_CIFS=m +# CONFIG_CIFS_STATS2 is not set +CONFIG_9P_FS=y +CONFIG_9P_FS_POSIX_ACL=y +CONFIG_9P_FS_SECURITY=y +CONFIG_NLS_DEFAULT="utf8" +CONFIG_NLS_CODEPAGE_437=y +CONFIG_NLS_CODEPAGE_737=m +CONFIG_NLS_CODEPAGE_775=m +CONFIG_NLS_CODEPAGE_850=m +CONFIG_NLS_CODEPAGE_852=m +CONFIG_NLS_CODEPAGE_855=m +CONFIG_NLS_CODEPAGE_857=m +CONFIG_NLS_CODEPAGE_860=m +CONFIG_NLS_CODEPAGE_861=m +CONFIG_NLS_CODEPAGE_862=m +CONFIG_NLS_CODEPAGE_863=m +CONFIG_NLS_CODEPAGE_864=m +CONFIG_NLS_CODEPAGE_865=m +CONFIG_NLS_CODEPAGE_866=m +CONFIG_NLS_CODEPAGE_869=m +CONFIG_NLS_CODEPAGE_936=m +CONFIG_NLS_CODEPAGE_950=m +CONFIG_NLS_CODEPAGE_932=m +CONFIG_NLS_CODEPAGE_949=m +CONFIG_NLS_CODEPAGE_874=m +CONFIG_NLS_ISO8859_8=m +CONFIG_NLS_CODEPAGE_1250=m +CONFIG_NLS_CODEPAGE_1251=m +CONFIG_NLS_ASCII=y +CONFIG_NLS_ISO8859_1=y +CONFIG_NLS_ISO8859_2=m +CONFIG_NLS_ISO8859_3=m +CONFIG_NLS_ISO8859_4=m +CONFIG_NLS_ISO8859_5=m +CONFIG_NLS_ISO8859_6=m +CONFIG_NLS_ISO8859_7=m +CONFIG_NLS_ISO8859_9=m +CONFIG_NLS_ISO8859_13=m +CONFIG_NLS_ISO8859_14=m +CONFIG_NLS_ISO8859_15=m +CONFIG_NLS_KOI8_R=m +CONFIG_NLS_KOI8_U=m +CONFIG_NLS_UTF8=m +CONFIG_UNICODE=y +CONFIG_SECURITY=y +CONFIG_SECURITYFS=y +CONFIG_SECURITY_NETWORK=y +CONFIG_SECURITY_PATH=y +CONFIG_SECURITY_SELINUX=y +CONFIG_SECURITY_SELINUX_BOOTPARAM=y +# CONFIG_INTEGRITY is not set +CONFIG_LSM="lockdown,yama,loadpin,safesetid,integrity,selinux,smack,tomoyo,apparmor" +CONFIG_INIT_STACK_NONE=y +CONFIG_INIT_ON_ALLOC_DEFAULT_ON=y +CONFIG_FORTIFY_SOURCE=y +CONFIG_HARDENED_USERCOPY=y +CONFIG_CRYPTO_USER=m +CONFIG_CRYPTO_PCRYPT=m +CONFIG_CRYPTO_DH=y +CONFIG_CRYPTO_DH_RFC7919_GROUPS=y +CONFIG_CRYPTO_ECDSA=m +CONFIG_CRYPTO_ECRDSA=m +CONFIG_CRYPTO_CURVE25519=m +CONFIG_CRYPTO_AES_TI=m +CONFIG_CRYPTO_ANUBIS=m +CONFIG_CRYPTO_BLOWFISH=m +CONFIG_CRYPTO_CAMELLIA=m +CONFIG_CRYPTO_DES=y +CONFIG_CRYPTO_FCRYPT=m +CONFIG_CRYPTO_KHAZAD=m +CONFIG_CRYPTO_SEED=m +CONFIG_CRYPTO_TEA=m +CONFIG_CRYPTO_TWOFISH=m +CONFIG_CRYPTO_ADIANTUM=y +CONFIG_CRYPTO_ARC4=m +CONFIG_CRYPTO_HCTR2=y +CONFIG_CRYPTO_LRW=y +CONFIG_CRYPTO_PCBC=m +CONFIG_CRYPTO_CHACHA20POLY1305=m +CONFIG_CRYPTO_MD4=m +CONFIG_CRYPTO_MD5=y +CONFIG_CRYPTO_RMD160=m +CONFIG_CRYPTO_WP512=m +CONFIG_CRYPTO_XCBC=m +CONFIG_CRYPTO_CRC32=y +CONFIG_CRYPTO_LZO=y +CONFIG_CRYPTO_842=m +CONFIG_CRYPTO_LZ4=m +CONFIG_CRYPTO_LZ4HC=m +CONFIG_CRYPTO_ANSI_CPRNG=m +CONFIG_CRYPTO_DRBG_HASH=y +CONFIG_CRYPTO_DRBG_CTR=y +CONFIG_CRYPTO_USER_API_HASH=y +CONFIG_CRYPTO_USER_API_SKCIPHER=y +CONFIG_CRYPTO_USER_API_RNG=y +CONFIG_CRYPTO_USER_API_AEAD=y +CONFIG_CRYPTO_AES_NI_INTEL=y +CONFIG_CRYPTO_BLOWFISH_X86_64=m +CONFIG_CRYPTO_CAMELLIA_AESNI_AVX2_X86_64=m +CONFIG_CRYPTO_CAST5_AVX_X86_64=m +CONFIG_CRYPTO_CAST6_AVX_X86_64=m +CONFIG_CRYPTO_DES3_EDE_X86_64=m +CONFIG_CRYPTO_SERPENT_SSE2_X86_64=m +CONFIG_CRYPTO_SERPENT_AVX2_X86_64=m +CONFIG_CRYPTO_SM4_AESNI_AVX2_X86_64=m +CONFIG_CRYPTO_TWOFISH_AVX_X86_64=m +CONFIG_CRYPTO_ARIA_GFNI_AVX512_X86_64=m +CONFIG_CRYPTO_AEGIS128_AESNI_SSE2=m +CONFIG_CRYPTO_NHPOLY1305_SSE2=m +CONFIG_CRYPTO_NHPOLY1305_AVX2=m +CONFIG_CRYPTO_SHA1_SSSE3=y +CONFIG_CRYPTO_SHA512_SSSE3=y +CONFIG_CRYPTO_SM3_AVX_X86_64=m +CONFIG_CRYPTO_GHASH_CLMUL_NI_INTEL=m +CONFIG_CRYPTO_DEV_PADLOCK=m +CONFIG_CRYPTO_DEV_PADLOCK_AES=m +CONFIG_CRYPTO_DEV_PADLOCK_SHA=m +CONFIG_CRYPTO_DEV_CCP=y +CONFIG_CRYPTO_DEV_QAT_DH895xCC=m +CONFIG_CRYPTO_DEV_QAT_C3XXX=m +CONFIG_CRYPTO_DEV_QAT_C62X=m +CONFIG_CRYPTO_DEV_QAT_DH895xCCVF=m +CONFIG_CRYPTO_DEV_QAT_C3XXXVF=m +CONFIG_CRYPTO_DEV_QAT_C62XVF=m +CONFIG_CRYPTO_DEV_VIRTIO=m +CONFIG_FONTS=y +CONFIG_FONT_8x8=y +CONFIG_FONT_ACORN_8x8=y +CONFIG_FONT_6x10=y +CONFIG_FONT_TER16x32=y +CONFIG_PRINTK_TIME=y +CONFIG_DYNAMIC_DEBUG=y +CONFIG_FRAME_WARN=1024 +CONFIG_STACK_VALIDATION=y +CONFIG_MAGIC_SYSRQ=y +CONFIG_DEBUG_FS=y +CONFIG_DEBUG_RODATA_TEST=y +CONFIG_PANIC_TIMEOUT=5 +CONFIG_HARDLOCKUP_DETECTOR=y +# CONFIG_DETECT_HUNG_TASK is not set +CONFIG_SCHEDSTATS=y +CONFIG_RCU_CPU_STALL_TIMEOUT=60 +# CONFIG_RCU_TRACE is not set +CONFIG_BOOTTIME_TRACING=y +CONFIG_FUNCTION_TRACER=y +# CONFIG_X86_VERBOSE_BOOTUP is not set +CONFIG_UNWINDER_FRAME_POINTER=y +CONFIG_FUNCTION_ERROR_INJECTION=y