From 416017bd34373ddc4bfd7a99e146cdb8a4ea6dea Mon Sep 17 00:00:00 2001 From: Qs315490 Date: Sat, 22 Nov 2025 09:20:25 +0800 Subject: [PATCH] xiaomi-latte: new device (Xiaomi Mi Pad 2) The kernel version has been updated to mainline 6.16.0 and successfully compiled and tested. Due to the device's specific requirements, it enforces the use of Secure Boot. Disabling Secure Boot will reset it back to enabled after several reboots or DNX Fastboot sessions. I had to resort to using shim and a self-signed certificate. https://wiki.postmarketos.org/wiki/Xiaomi_Pad_2_(xiaomi-latte) Part-of: --- device/testing/device-xiaomi-latte/APKBUILD | 94 + device/testing/device-xiaomi-latte/MOK.cer | Bin 0 -> 1315 bytes .../alsa-ucm-conf/HiFi.conf | 93 + .../alsa-ucm-conf/cht-bsw-rt5659.conf | 6 + device/testing/device-xiaomi-latte/deviceinfo | 28 + device/testing/device-xiaomi-latte/grub.cfg | 2 + .../testing/device-xiaomi-latte/keyboard.hwdb | 14 + .../device-xiaomi-latte/modules-initfs | 21 + device/testing/linux-xiaomi-latte/APKBUILD | 72 + device/testing/linux-xiaomi-latte/MOK.crt | 30 + device/testing/linux-xiaomi-latte/MOK.key | 52 + .../linux-xiaomi-latte/latte-audio-fix.patch | 1092 ++++++++ .../linux-xiaomi-latte/latte-i915-fix.patch | 121 + .../linux-xiaomi-latte/xiaomipad2_defconfig | 2408 +++++++++++++++++ 14 files changed, 4033 insertions(+) create mode 100644 device/testing/device-xiaomi-latte/APKBUILD create mode 100644 device/testing/device-xiaomi-latte/MOK.cer create mode 100644 device/testing/device-xiaomi-latte/alsa-ucm-conf/HiFi.conf create mode 100644 device/testing/device-xiaomi-latte/alsa-ucm-conf/cht-bsw-rt5659.conf create mode 100644 device/testing/device-xiaomi-latte/deviceinfo create mode 100644 device/testing/device-xiaomi-latte/grub.cfg create mode 100644 device/testing/device-xiaomi-latte/keyboard.hwdb create mode 100644 device/testing/device-xiaomi-latte/modules-initfs create mode 100644 device/testing/linux-xiaomi-latte/APKBUILD create mode 100644 device/testing/linux-xiaomi-latte/MOK.crt create mode 100644 device/testing/linux-xiaomi-latte/MOK.key create mode 100644 device/testing/linux-xiaomi-latte/latte-audio-fix.patch create mode 100644 device/testing/linux-xiaomi-latte/latte-i915-fix.patch create mode 100644 device/testing/linux-xiaomi-latte/xiaomipad2_defconfig 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 0000000000000000000000000000000000000000..ded8abe79947431a36cf01b2fe62074d15a34407 GIT binary patch literal 1315 zcmXqLVwE>&VrE~!%*4pVB$6W)Tl&OHHPVz#_iQM~Yxi=S%a06r**LY@JlekVGBR?r zG8o7k${I+sF^94+^N8eDD)=TQXJqE3D)^V@r4}i8r&b!siSrtn8WstY z@t$~|na3@Z`Ss5feW&loEt|t{&%36)zNevQv^&gYLey=s*s93% z=7z9nu|-RcG#`_nnO8gWUgm3sl=X`bKjITwM-e|Gyj3-*@j<W7IT??VAS<_=Fzt+S^SGe zj_42N4Re<}8rrVk?mul+?W;AZOC8T%oDt?aJ#G5`5Z9g=*FSKl-@UqW?#BO$DLZbZ zs;6W!1_f@td+gw!^_j2K`XassbZlSopf$%y@Kz^ZcJdLY>Q9za=T`;gT>0R%Pd@Ei z_Kqo!mgQ`#xWs-`mixB&gKr|yXSUw0V$VMi!=2ZA+JDizY4Q3;w3cs6em8SwtDD|L zCT2zk#>K$~fd;Z{%%QS;EMhDow@<4)F*3B-#r=4Vc6(3ZjLyn?b#!$v<6Gl8Gt&8OUi&?*=Dk~V^O#hl{uDM(EzI2aKxek$ z%;I$YTcuBW0tHVNI|O~M(YPV{D6)HfiT6~$p9dRWns#~%Prcl!b6osGu5nC}LYzgk zz`2uwg`T(e$1gQ3eC^}6eD}V@`*&-_ttRJsY*SnN19hD{0DJjWs^oQ$MV< zd-UhEXZL}Eb*I#K9N3W4nku=@KD=$;QPw3{$FE*rkXO?b*O8TAaC$?ljn-OsMaGq9 z4kV{dGnnJ1TK>p%Q~H-3e*a=0b}!kP*7aTS?GlBjxeNJETvCw#tGZ$vx2>q{nOUiC zp3G`lTT|wx60EfN+xn&Z7U(s^-+b_J?&Dv#-ko*gSY7Bl*Tra-`JV@7Z24QnB(`j- z?<;*}-LmrZmsNYe2j_4fVSODt_w59+2Mv!Netp5SWb=0J$eq*m*1Ob+Yey(=zSv(; xcT$<}58tB@jr(uaybZoQYcZV8a`{f?!zk9f5~r@5+j4*Y&4$Zs);jE(3;_BlQt$u( literal 0 HcmV?d00001 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