diff --git a/conf/machine/bananapi-m2-berry.conf b/conf/machine/bananapi-m2-berry.conf new file mode 100644 index 0000000..4e46d03 --- /dev/null +++ b/conf/machine/bananapi-m2-berry.conf @@ -0,0 +1,9 @@ +#@TYPE: Machine +#@NAME: bananapi-m2-berry +#@DESCRIPTION: Machine configuration for the Banana Pi M2 Berry, based on Allwinner V40 CPU + +require conf/machine/include/sun8i.inc +require conf/machine/include/hardware/ap6212a.inc + +KERNEL_DEVICETREE = "allwinner/sun8i-v40-bananapi-m2-berry.dtb" +UBOOT_MACHINE = "bananapi_m2_berry_defconfig" diff --git a/conf/machine/bananapi-m2-zero.conf b/conf/machine/bananapi-m2-zero.conf index ab8cfa1..6969f04 100644 --- a/conf/machine/bananapi-m2-zero.conf +++ b/conf/machine/bananapi-m2-zero.conf @@ -5,6 +5,5 @@ require conf/machine/include/sun8i.inc require conf/machine/include/hardware/ap6212a.inc -KERNEL_DEVICETREE = "sun8i-h2-plus-bananapi-m2-zero.dtb" +KERNEL_DEVICETREE = "allwinner/sun8i-h2-plus-bananapi-m2-zero.dtb" UBOOT_MACHINE = "bananapi_m2_zero_defconfig" - diff --git a/conf/machine/bananapi-m2m.conf b/conf/machine/bananapi-m2m.conf index 9bf2461..bcd7515 100644 --- a/conf/machine/bananapi-m2m.conf +++ b/conf/machine/bananapi-m2m.conf @@ -4,6 +4,5 @@ require conf/machine/include/sun8i.inc -KERNEL_DEVICETREE = "sun8i-r16-bananapi-m2m.dtb" +KERNEL_DEVICETREE = "allwinner/sun8i-r16-bananapi-m2m.dtb" UBOOT_MACHINE = "Bananapi_m2m_defconfig" - diff --git a/conf/machine/bananapi-m2plus.conf b/conf/machine/bananapi-m2plus.conf index eedb54f..4e91beb 100644 --- a/conf/machine/bananapi-m2plus.conf +++ b/conf/machine/bananapi-m2plus.conf @@ -4,6 +4,5 @@ require conf/machine/include/sun8i.inc -KERNEL_DEVICETREE = "sun8i-h3-bananapi-m2-plus.dtb" +KERNEL_DEVICETREE = "allwinner/sun8i-h3-bananapi-m2-plus.dtb" UBOOT_MACHINE = "bananapi_m2_plus_h3_defconfig" - diff --git a/conf/machine/bananapi.conf b/conf/machine/bananapi.conf index 581efd0..202ddf9 100644 --- a/conf/machine/bananapi.conf +++ b/conf/machine/bananapi.conf @@ -4,6 +4,6 @@ require conf/machine/include/sun7i.inc -KERNEL_DEVICETREE = "sun7i-a20-bananapi.dtb" +KERNEL_DEVICETREE = "allwinner/sun7i-a20-bananapi.dtb" UBOOT_MACHINE = "Bananapi_config" -SUNXI_FEX_FILE = "sys_config/a20/Bananapi.fex" \ No newline at end of file +SUNXI_FEX_FILE = "sys_config/a20/Bananapi.fex" diff --git a/conf/machine/cubieboard.conf b/conf/machine/cubieboard.conf index 0862823..a3f2784 100644 --- a/conf/machine/cubieboard.conf +++ b/conf/machine/cubieboard.conf @@ -4,6 +4,6 @@ require conf/machine/include/sun4i.inc -KERNEL_DEVICETREE = "sun4i-a10-cubieboard.dtb" +KERNEL_DEVICETREE = "allwinner/sun4i-a10-cubieboard.dtb" UBOOT_MACHINE = "Cubieboard_config" SUNXI_FEX_FILE = "sys_config/a10/cubieboard.fex" diff --git a/conf/machine/cubieboard2.conf b/conf/machine/cubieboard2.conf index 4e3114f..7952c0f 100644 --- a/conf/machine/cubieboard2.conf +++ b/conf/machine/cubieboard2.conf @@ -4,6 +4,6 @@ require conf/machine/include/sun7i.inc -KERNEL_DEVICETREE = "sun7i-a20-cubieboard2.dtb" +KERNEL_DEVICETREE = "allwinner/sun7i-a20-cubieboard2.dtb" UBOOT_MACHINE = "Cubieboard2_config" SUNXI_FEX_FILE = "sys_config/a20/cubieboard2.fex" diff --git a/conf/machine/cubieboard4.conf b/conf/machine/cubieboard4.conf index ac9559e..95a8eb3 100644 --- a/conf/machine/cubieboard4.conf +++ b/conf/machine/cubieboard4.conf @@ -3,8 +3,9 @@ #@DESCRIPTION: Machine configuration for the cubieboard4, based on allwinner A80 CPU http://cubieboard.org/ require conf/machine/include/sun9i.inc +require conf/machine/include/hardware/ap6330.inc KERNEL_IMAGETYPE = "zImage" -KERNEL_DEVICETREE = "sun9i-a80-cubieboard4.dtb" +KERNEL_DEVICETREE = "allwinner/sun9i-a80-cubieboard4.dtb" UBOOT_MACHINE = "Cubieboard4_defconfig" diff --git a/conf/machine/cubietruck.conf b/conf/machine/cubietruck.conf index 4e16a10..dbd6dce 100644 --- a/conf/machine/cubietruck.conf +++ b/conf/machine/cubietruck.conf @@ -4,6 +4,6 @@ require conf/machine/include/sun7i.inc -KERNEL_DEVICETREE = "sun7i-a20-cubietruck.dtb" +KERNEL_DEVICETREE = "allwinner/sun7i-a20-cubietruck.dtb" UBOOT_MACHINE = "Cubietruck_config" -SUNXI_FEX_FILE = "sys_config/a20/cubietruck.fex" \ No newline at end of file +SUNXI_FEX_FILE = "sys_config/a20/cubietruck.fex" diff --git a/conf/machine/include/hardware/ap6212a.inc b/conf/machine/include/hardware/ap6212a.inc index 4543f38..36ba86c 100644 --- a/conf/machine/include/hardware/ap6212a.inc +++ b/conf/machine/include/hardware/ap6212a.inc @@ -1,5 +1,9 @@ # Include for boards with AMPAK 6212A Wifi / Bluetooth module # https://linux-sunxi.org/Wifi#Ampak -MACHINE_EXTRA_RRECOMMENDS:append = " kernel-module-brcmfmac" -MACHINE_EXTRA_RDEPENDS:append = " linux-firmware-bcm43430" +MACHINE_EXTRA_RRECOMMENDS:append = " kernel-module-brcmfmac kernel-module-hci-uart" +MACHINE_EXTRA_RDEPENDS:append = " linux-firmware-bcm43430 armbian-firmware-ap6212" + +MACHINE_FEATURES:append = " bluetooth wifi" + +KERNEL_FEATURES:append = " features/ap6212/ap6212.scc" diff --git a/conf/machine/include/hardware/ap6330.inc b/conf/machine/include/hardware/ap6330.inc new file mode 100644 index 0000000..1245764 --- /dev/null +++ b/conf/machine/include/hardware/ap6330.inc @@ -0,0 +1,7 @@ +# Include for boards with AMPAK AP6330 Wifi / Bluetooth module +# https://linux-sunxi.org/Wifi#Ampak + +MACHINE_EXTRA_RRECOMMENDS:append = " kernel-module-brcmfmac" +MACHINE_EXTRA_RDEPENDS:append = " linux-firmware-bcm4330" + +MACHINE_FEATURES:append = " bluetooth wifi" diff --git a/conf/machine/include/sunxi.inc b/conf/machine/include/sunxi.inc index e3d7bf5..a2980bf 100644 --- a/conf/machine/include/sunxi.inc +++ b/conf/machine/include/sunxi.inc @@ -40,7 +40,7 @@ SUNXI_FEX_FILE ?= " " SUNXI_BOOT_SPACE ?= "40" IMAGE_BOOT_FILES ?= "${KERNEL_IMAGETYPE} boot.scr" # ship fex file for sunxi kernel, devicetree file for mainline kernel -IMAGE_BOOT_FILES += "${@bb.utils.contains('PREFERRED_PROVIDER_virtual/kernel', 'linux-sunxi', '${SUNXI_FEX_FILE}', '${KERNEL_DEVICETREE}', d)}" +IMAGE_BOOT_FILES += "${@bb.utils.contains('PREFERRED_PROVIDER_virtual/kernel', 'linux-sunxi', '${SUNXI_FEX_FILE}', d.getVar('KERNEL_DEVICETREE', '').split('/')[-1], d)}" WKS_FILES ?= "sunxi-sdcard-image.wks.in" WKS_FILE_DEPENDS ?= "virtual/kernel u-boot" # in case of sunxi kernel, sunxi-board-fex must be built prior wic image assembly diff --git a/conf/machine/include/sunxi64.inc b/conf/machine/include/sunxi64.inc index 8c4bca2..35a2bb9 100644 --- a/conf/machine/include/sunxi64.inc +++ b/conf/machine/include/sunxi64.inc @@ -4,6 +4,7 @@ include conf/machine/include/soc-family.inc MACHINEOVERRIDES =. "sunxi:sunxi64:" PREFERRED_PROVIDER_virtual/kernel ?= "linux-mainline" +PREFERRED_VERSION_linux-mainline ?= "6.6.%" PREFERRED_PROVIDER_u-boot ?= "u-boot" PREFERRED_PROVIDER_virtual/bootloader ?= "u-boot" @@ -16,7 +17,7 @@ MACHINE_EXTRA_RRECOMMENDS = "kernel-modules" UBOOT_LOCALVERSION = "-g${@d.getVar('SRCPV', True).partition('+')[2][0:7]}" UBOOT_ENTRYPOINT ?= "0x40008000" -UBOOT_LOADADDRESS ?= "0x400080OB00" +UBOOT_LOADADDRESS ?= "0x40008000" #UBOOT_BINARY ?= "u-boot.itb" SPL_BINARY ?= "u-boot-sunxi-with-spl.bin" @@ -24,28 +25,8 @@ SPL_BINARY ?= "u-boot-sunxi-with-spl.bin" SERIAL_CONSOLES ?= "115200;ttyS0" MACHINE_FEATURES ?= "alsa apm keyboard rtc serial screen usbgadget usbhost vfat" -# arm64 dbts are under /dts but is deployed under DEPLOYDIR -do_fix_device_tree_location() { - - for kdt in ${KERNEL_DEVICETREE} - do - local dbt_dir=$(dirname ${kdt}) - if [ "." != "${dbt_dir}" ] ; then - local dbt=$(basename ${kdt}) - local dst=${DEPLOY_DIR_IMAGE}/${dbt_dir}/${dbt} - if [ ! -f ${dst} ] ; then - mkdir -p ${DEPLOY_DIR_IMAGE}/$dbt_dir - ln -s ${DEPLOY_DIR_IMAGE}/${dbt} ${dst} - fi - fi - done -} - - -addtask do_fix_device_tree_location after do_write_wks_template before do_image_wic - SUNXI_BOOT_SPACE ?= "40" -IMAGE_BOOT_FILES ?= "${KERNEL_IMAGETYPE} boot.scr ${KERNEL_DEVICETREE}" +IMAGE_BOOT_FILES ?= "${KERNEL_IMAGETYPE} boot.scr ${@d.getVar('KERNEL_DEVICETREE', '').split('/')[-1]}" WKS_FILES ?= "sunxi-sdcard-image.wks.in" WKS_FILE_DEPENDS ?= "virtual/kernel u-boot" diff --git a/conf/machine/lamobo-r1.conf b/conf/machine/lamobo-r1.conf index 7985ba6..14bc13a 100644 --- a/conf/machine/lamobo-r1.conf +++ b/conf/machine/lamobo-r1.conf @@ -5,6 +5,6 @@ require conf/machine/include/sun7i.inc MACHINE_EXTRA_RRECOMMENDS = " kernel-modules kernel-devicetree" -KERNEL_DEVICETREE = "sun7i-a20-lamobo-r1.dtb" +KERNEL_DEVICETREE = "allwinner/sun7i-a20-lamobo-r1.dtb" UBOOT_MACHINE = "Lamobo_R1_config" SUNXI_FEX_FILE = "sys_config/a20/lamobo-r1.fex" diff --git a/conf/machine/licheepi-zero.conf b/conf/machine/licheepi-zero.conf index a05bd49..1f4b933 100644 --- a/conf/machine/licheepi-zero.conf +++ b/conf/machine/licheepi-zero.conf @@ -6,4 +6,4 @@ require conf/machine/include/sun8i.inc UBOOT_MACHINE = "LicheePi_Zero_defconfig" -KERNEL_DEVICETREE = "sun8i-v3s-licheepi-zero.dtb" +KERNEL_DEVICETREE = "allwinner/sun8i-v3s-licheepi-zero.dtb" diff --git a/conf/machine/mangopi-mq-t-t113.conf b/conf/machine/mangopi-mq-t-t113.conf new file mode 100644 index 0000000..7d636b3 --- /dev/null +++ b/conf/machine/mangopi-mq-t-t113.conf @@ -0,0 +1,10 @@ +#@TYPE: Machine +#@NAME: MangoPi MQ-R T113-S3 +#@DESCRIPTION: Machine configuration for the MangoPi MQ-R, based on the Allwinner T113-S3 CPU + +require conf/machine/include/sun8i.inc + +KERNEL_DEVICETREE = "allwinner/sun8i-t113s-mangopi-mq-r-t113.dtb" +KERNEL_IMAGETYPE = "zImage" + +UBOOT_MACHINE = "mangopi_mq_r_defconfig" diff --git a/conf/machine/marsboard-a10.conf b/conf/machine/marsboard-a10.conf index 222f4b0..21ba7c8 100644 --- a/conf/machine/marsboard-a10.conf +++ b/conf/machine/marsboard-a10.conf @@ -5,6 +5,6 @@ require conf/machine/include/sun4i.inc -KERNEL_DEVICETREE = "sun4i-a10-marsboard.dtb" +KERNEL_DEVICETREE = "allwinner/sun4i-a10-marsboard.dtb" UBOOT_MACHINE = "Marsboard_A10_config" SUNXI_FEX_FILE = "sys_config/a10/marsboard_a10.fex" diff --git a/conf/machine/mele.conf b/conf/machine/mele.conf index 6f31c51..9aef9ed 100644 --- a/conf/machine/mele.conf +++ b/conf/machine/mele.conf @@ -4,6 +4,6 @@ require conf/machine/include/sun4i.inc -KERNEL_DEVICETREE = "sun4i-a10-a1000.dtb" +KERNEL_DEVICETREE = "allwinner/sun4i-a10-a1000.dtb" UBOOT_MACHINE = "Mele_A1000_config" -SUNXI_FEX_FILE = "sys_config/a10/mele_a1000.fex" \ No newline at end of file +SUNXI_FEX_FILE = "sys_config/a10/mele_a1000.fex" diff --git a/conf/machine/merrii-a80-optimus.conf b/conf/machine/merrii-a80-optimus.conf index b7fa263..edb5d1b 100644 --- a/conf/machine/merrii-a80-optimus.conf +++ b/conf/machine/merrii-a80-optimus.conf @@ -3,8 +3,9 @@ #@DESCRIPTION: Machine configuration for the Merrii A80 Optimus, based on Allwinner A80 CPU https://linux-sunxi.org/Merrii_A80_Optimus_Board require conf/machine/include/sun9i.inc +require conf/machine/include/hardware/ap6330.inc KERNEL_IMAGETYPE = "zImage" -KERNEL_DEVICETREE = "sun9i-a80-optimus.dtb" +KERNEL_DEVICETREE = "allwinner/sun9i-a80-optimus.dtb" UBOOT_MACHINE = "Merrii_A80_Optimus_defconfig" diff --git a/conf/machine/nanopi-m1-plus.conf b/conf/machine/nanopi-m1-plus.conf index a9ccdf5..37ef5db 100644 --- a/conf/machine/nanopi-m1-plus.conf +++ b/conf/machine/nanopi-m1-plus.conf @@ -4,6 +4,5 @@ require conf/machine/include/sun8i.inc -KERNEL_DEVICETREE = "sun8i-h3-nanopi-m1-plus.dtb" +KERNEL_DEVICETREE = "allwinner/sun8i-h3-nanopi-m1-plus.dtb" UBOOT_MACHINE = "nanopi_m1_plus_defconfig" - diff --git a/conf/machine/nanopi-m1.conf b/conf/machine/nanopi-m1.conf index de96acf..b88bb87 100644 --- a/conf/machine/nanopi-m1.conf +++ b/conf/machine/nanopi-m1.conf @@ -4,5 +4,5 @@ require conf/machine/include/sun8i.inc -KERNEL_DEVICETREE = "sun8i-h3-nanopi-m1.dtb" +KERNEL_DEVICETREE = "allwinner/sun8i-h3-nanopi-m1.dtb" UBOOT_MACHINE = "nanopi_m1_defconfig" diff --git a/conf/machine/nanopi-neo-air.conf b/conf/machine/nanopi-neo-air.conf index d18f13c..17c7bdb 100644 --- a/conf/machine/nanopi-neo-air.conf +++ b/conf/machine/nanopi-neo-air.conf @@ -5,5 +5,5 @@ require conf/machine/include/sun8i.inc -KERNEL_DEVICETREE = "sun8i-h3-nanopi-neo-air.dtb" +KERNEL_DEVICETREE = "allwinner/sun8i-h3-nanopi-neo-air.dtb" UBOOT_MACHINE = "nanopi_neo_air_defconfig" diff --git a/conf/machine/nanopi-neo.conf b/conf/machine/nanopi-neo.conf index b644f97..e1ad007 100644 --- a/conf/machine/nanopi-neo.conf +++ b/conf/machine/nanopi-neo.conf @@ -4,6 +4,5 @@ require conf/machine/include/sun8i.inc -KERNEL_DEVICETREE = "sun8i-h3-nanopi-neo.dtb" +KERNEL_DEVICETREE = "allwinner/sun8i-h3-nanopi-neo.dtb" UBOOT_MACHINE = "nanopi_neo_defconfig" - diff --git a/conf/machine/nanopi-r1.conf b/conf/machine/nanopi-r1.conf index 8f5911c..7a0672e 100644 --- a/conf/machine/nanopi-r1.conf +++ b/conf/machine/nanopi-r1.conf @@ -4,5 +4,5 @@ require conf/machine/include/sun8i.inc -KERNEL_DEVICETREE = "sun8i-h3-nanopi-r1.dtb" +KERNEL_DEVICETREE = "allwinner/sun8i-h3-nanopi-r1.dtb" UBOOT_MACHINE = "nanopi_r1_defconfig" diff --git a/conf/machine/olinuxino-a10lime.conf b/conf/machine/olinuxino-a10lime.conf index 6827e17..43c39e1 100644 --- a/conf/machine/olinuxino-a10lime.conf +++ b/conf/machine/olinuxino-a10lime.conf @@ -5,6 +5,6 @@ require conf/machine/include/sun4i.inc -KERNEL_DEVICETREE = "sun4i-a10-olinuxino-lime.dtb" +KERNEL_DEVICETREE = "allwinner/sun4i-a10-olinuxino-lime.dtb" UBOOT_MACHINE = "A10-OLinuXino-Lime_config" -SUNXI_FEX_FILE = "sys_config/a10/a10-olinuxino-lime.fex" \ No newline at end of file +SUNXI_FEX_FILE = "sys_config/a10/a10-olinuxino-lime.fex" diff --git a/conf/machine/olinuxino-a10s.conf b/conf/machine/olinuxino-a10s.conf index dd63825..931ac17 100644 --- a/conf/machine/olinuxino-a10s.conf +++ b/conf/machine/olinuxino-a10s.conf @@ -5,6 +5,6 @@ require conf/machine/include/sun5i.inc -KERNEL_DEVICETREE = "sun5i-a10s-olinuxino-micro.dtb" +KERNEL_DEVICETREE = "allwinner/sun5i-a10s-olinuxino-micro.dtb" UBOOT_MACHINE = "A10s-OLinuXino-M_config" -SUNXI_FEX_FILE = "sys_config/a10s/a10s-olinuxino-m.fex" \ No newline at end of file +SUNXI_FEX_FILE = "sys_config/a10s/a10s-olinuxino-m.fex" diff --git a/conf/machine/olinuxino-a13.conf b/conf/machine/olinuxino-a13.conf index d73f622..4b81cbf 100644 --- a/conf/machine/olinuxino-a13.conf +++ b/conf/machine/olinuxino-a13.conf @@ -5,6 +5,6 @@ require conf/machine/include/sun5i.inc -KERNEL_DEVICETREE = "sun5i-a13-olinuxino.dtb" +KERNEL_DEVICETREE = "allwinner/sun5i-a13-olinuxino.dtb" UBOOT_MACHINE = "A13-OLinuXino_config" -SUNXI_FEX_FILE = "sys_config/a13/a13-olinuxino.fex" \ No newline at end of file +SUNXI_FEX_FILE = "sys_config/a13/a13-olinuxino.fex" diff --git a/conf/machine/olinuxino-a20.conf b/conf/machine/olinuxino-a20.conf index fc6620d..a5f42d9 100644 --- a/conf/machine/olinuxino-a20.conf +++ b/conf/machine/olinuxino-a20.conf @@ -5,6 +5,6 @@ require conf/machine/include/sun7i.inc -KERNEL_DEVICETREE = "sun7i-a20-olinuxino-micro.dtb" +KERNEL_DEVICETREE = "allwinner/sun7i-a20-olinuxino-micro.dtb" UBOOT_MACHINE = "A20-OLinuXino_MICRO_config" -SUNXI_FEX_FILE = "sys_config/a20/a20-olinuxino_micro.fex" \ No newline at end of file +SUNXI_FEX_FILE = "sys_config/a20/a20-olinuxino_micro.fex" diff --git a/conf/machine/olinuxino-a20lime.conf b/conf/machine/olinuxino-a20lime.conf index aaa6dac..f2823b7 100644 --- a/conf/machine/olinuxino-a20lime.conf +++ b/conf/machine/olinuxino-a20lime.conf @@ -5,6 +5,6 @@ require conf/machine/include/sun7i.inc -KERNEL_DEVICETREE = "sun7i-a20-olinuxino-lime.dtb" +KERNEL_DEVICETREE = "allwinner/sun7i-a20-olinuxino-lime.dtb" UBOOT_MACHINE = "A20-OLinuXino-Lime_config" -SUNXI_FEX_FILE = "sys_config/a20/a20-olinuxino_lime.fex" \ No newline at end of file +SUNXI_FEX_FILE = "sys_config/a20/a20-olinuxino_lime.fex" diff --git a/conf/machine/olinuxino-a20lime2-emmc.conf b/conf/machine/olinuxino-a20lime2-emmc.conf index 1b61c19..351120d 100644 --- a/conf/machine/olinuxino-a20lime2-emmc.conf +++ b/conf/machine/olinuxino-a20lime2-emmc.conf @@ -5,6 +5,6 @@ require conf/machine/include/sun7i.inc -KERNEL_DEVICETREE = "sun7i-a20-olinuxino-lime2-emmc.dtb" +KERNEL_DEVICETREE = "allwinner/sun7i-a20-olinuxino-lime2-emmc.dtb" UBOOT_MACHINE = "A20-OLinuXino-Lime2-eMMC_config" SUNXI_FEX_FILE = "sys_config/a20/a20-olinuxino_lime2.fex" diff --git a/conf/machine/olinuxino-a20lime2.conf b/conf/machine/olinuxino-a20lime2.conf index 837f43f..923b8c8 100644 --- a/conf/machine/olinuxino-a20lime2.conf +++ b/conf/machine/olinuxino-a20lime2.conf @@ -5,6 +5,6 @@ require conf/machine/include/sun7i.inc -KERNEL_DEVICETREE = "sun7i-a20-olinuxino-lime2.dtb" +KERNEL_DEVICETREE = "allwinner/sun7i-a20-olinuxino-lime2.dtb" UBOOT_MACHINE = "A20-OLinuXino-Lime2_config" SUNXI_FEX_FILE = "sys_config/a20/a20-olinuxino_lime2.fex" diff --git a/conf/machine/olinuxino-a20som.conf b/conf/machine/olinuxino-a20som.conf index 7b94a57..3211b0b 100644 --- a/conf/machine/olinuxino-a20som.conf +++ b/conf/machine/olinuxino-a20som.conf @@ -5,6 +5,6 @@ require conf/machine/include/sun7i.inc -KERNEL_DEVICETREE = "sun7i-a20-olimex-som-evb.dtb" +KERNEL_DEVICETREE = "allwinner/sun7i-a20-olimex-som-evb.dtb" UBOOT_MACHINE = "A20-Olimex-SOM-EVB_config" SUNXI_FEX_FILE = "sys_config/a20/olimex_a20_som.fex" diff --git a/conf/machine/orange-pi-3lts.conf b/conf/machine/orange-pi-3lts.conf new file mode 100644 index 0000000..1bc4fca --- /dev/null +++ b/conf/machine/orange-pi-3lts.conf @@ -0,0 +1,28 @@ +#@TYPE: Machine +#@NAME: orange-pi-3lts +#@DESCRIPTION: Machine configuration for the Orange Pi 3 LTS , based on Allwinner H6 CPU +# Note: Some boards have faulty RTC a fix is included by default +# a workarround in the dts ins include by default but in can removed adding +# KERNEL_FEATURES:remove = " bsp/orange-pi-3lts/fix-rtc.scc" to local.conf + +require conf/machine/include/sun50i-h6.inc + +KERNEL_DEVICETREE = "allwinner/sun50i-h6-orangepi-3-lts.dtb" +UBOOT_MACHINE = "orangepi_3_lts_defconfig" + +SPL_BINARY = "u-boot-sunxi-with-spl.bin" + +# as for now neither graphics nor audio is supported +MACHINE_FEATURES:remove = " x11 alsa rtc" +MACHINE_FEATURES:append = " bluetooth wifi" + +# fiwrware needed for wifi + bt +MACHINE_EXTRA_RRECOMMENDS += " uwe5622-firmware" + +# Load modules for wifi & bt +# Note: fo wifi a custom hci attach userspace sofware is needed that is not included in the layer +KERNEL_MODULE_AUTOLOAD += " sprdwl_ng sprdbt_tty " + + + + diff --git a/conf/machine/orange-pi-lite.conf b/conf/machine/orange-pi-lite.conf index f7ad588..b3f3c06 100644 --- a/conf/machine/orange-pi-lite.conf +++ b/conf/machine/orange-pi-lite.conf @@ -4,6 +4,5 @@ require conf/machine/include/sun8i.inc -KERNEL_DEVICETREE = "sun8i-h3-orangepi-lite.dtb" +KERNEL_DEVICETREE = "allwinner/sun8i-h3-orangepi-lite.dtb" UBOOT_MACHINE = "orangepi_lite_defconfig" - diff --git a/conf/machine/orange-pi-one.conf b/conf/machine/orange-pi-one.conf index de0d20f..eba45cc 100644 --- a/conf/machine/orange-pi-one.conf +++ b/conf/machine/orange-pi-one.conf @@ -4,6 +4,5 @@ require conf/machine/include/sun8i.inc -KERNEL_DEVICETREE = "sun8i-h3-orangepi-one.dtb" +KERNEL_DEVICETREE = "allwinner/sun8i-h3-orangepi-one.dtb" UBOOT_MACHINE = "orangepi_one_defconfig" - diff --git a/conf/machine/orange-pi-pc-plus.conf b/conf/machine/orange-pi-pc-plus.conf index 914ccf7..ab68dbc 100644 --- a/conf/machine/orange-pi-pc-plus.conf +++ b/conf/machine/orange-pi-pc-plus.conf @@ -4,6 +4,5 @@ require conf/machine/include/sun8i.inc -KERNEL_DEVICETREE = "sun8i-h3-orangepi-pc-plus.dtb" +KERNEL_DEVICETREE = "allwinner/sun8i-h3-orangepi-pc-plus.dtb" UBOOT_MACHINE = "orangepi_pc_plus_defconfig" - diff --git a/conf/machine/orange-pi-pc.conf b/conf/machine/orange-pi-pc.conf index eb70d88..6440e88 100644 --- a/conf/machine/orange-pi-pc.conf +++ b/conf/machine/orange-pi-pc.conf @@ -4,6 +4,5 @@ require conf/machine/include/sun8i.inc -KERNEL_DEVICETREE = "sun8i-h3-orangepi-pc.dtb" +KERNEL_DEVICETREE = "allwinner/sun8i-h3-orangepi-pc.dtb" UBOOT_MACHINE = "orangepi_pc_defconfig" - diff --git a/conf/machine/orange-pi-prime.conf b/conf/machine/orange-pi-prime.conf new file mode 100644 index 0000000..4dff13e --- /dev/null +++ b/conf/machine/orange-pi-prime.conf @@ -0,0 +1,11 @@ +#@TYPE: Machine +#@NAME: orange-pi-prime +#@DESCRIPTION: Machine configuration for the orange-pi-prime, base on Allwinner H5 CPU + +require conf/machine/include/sun50i.inc +require conf/machine/include/hardware/ap6212a.inc + +KERNEL_DEVICETREE = "allwinner/sun50i-h5-orangepi-prime.dtb" +UBOOT_MACHINE = "orangepi_prime_defconfig" + +MACHINE_EXTRA_RRECOMMENDS:append = " linux-firmware-rtl8723" diff --git a/conf/machine/orange-pi-r1.conf b/conf/machine/orange-pi-r1.conf index 78d167b..3453749 100644 --- a/conf/machine/orange-pi-r1.conf +++ b/conf/machine/orange-pi-r1.conf @@ -4,6 +4,5 @@ require conf/machine/include/sun8i.inc -KERNEL_DEVICETREE = "sun8i-h2-plus-orangepi-r1.dtb" +KERNEL_DEVICETREE = "allwinner/sun8i-h2-plus-orangepi-r1.dtb" UBOOT_MACHINE = "orangepi_r1_defconfig" - diff --git a/conf/machine/orange-pi-zero-plus2-h3.conf b/conf/machine/orange-pi-zero-plus2-h3.conf index af1ff69..badc7c9 100644 --- a/conf/machine/orange-pi-zero-plus2-h3.conf +++ b/conf/machine/orange-pi-zero-plus2-h3.conf @@ -5,5 +5,5 @@ require conf/machine/include/sun8i.inc require conf/machine/include/hardware/ap6212a.inc -KERNEL_DEVICETREE = "sun8i-h3-orangepi-zero-plus2.dtb" +KERNEL_DEVICETREE = "allwinner/sun8i-h3-orangepi-zero-plus2.dtb" UBOOT_MACHINE = "orangepi_zero_plus2_h3_defconfig" diff --git a/conf/machine/orange-pi-zero.conf b/conf/machine/orange-pi-zero.conf index 60249ee..daaaf7d 100644 --- a/conf/machine/orange-pi-zero.conf +++ b/conf/machine/orange-pi-zero.conf @@ -4,6 +4,5 @@ require conf/machine/include/sun8i.inc -KERNEL_DEVICETREE = "sun8i-h2-plus-orangepi-zero.dtb" +KERNEL_DEVICETREE = "allwinner/sun8i-h2-plus-orangepi-zero.dtb" UBOOT_MACHINE = "orangepi_zero_defconfig" - diff --git a/conf/machine/orange-pi-zero2.conf b/conf/machine/orange-pi-zero2.conf index 2d258e9..ff3bbf2 100644 --- a/conf/machine/orange-pi-zero2.conf +++ b/conf/machine/orange-pi-zero2.conf @@ -13,4 +13,9 @@ SPL_BINARY = "u-boot-sunxi-with-spl.bin" MACHINE_FEATURES:remove = "alsa x11" MACHINE_FEATURES:append = "bluetooth wifi" -MACHINE_EXTRA_RRECOMMENDS = "uwe5622-firmware" \ No newline at end of file +MACHINE_EXTRA_RRECOMMENDS = "uwe5622-firmware" + +# Load modules for wifi & bt +# Note: fo wifi a custom hci attach userspace sofware is needed that is not included in the layer +KERNEL_MODULE_AUTOLOAD += " sprdwl_ng sprdbt_tty " + diff --git a/conf/machine/pcduino.conf b/conf/machine/pcduino.conf index 8adb51e..8825f81 100644 --- a/conf/machine/pcduino.conf +++ b/conf/machine/pcduino.conf @@ -4,6 +4,6 @@ require conf/machine/include/sun4i.inc -KERNEL_DEVICETREE = "sun4i-a10-pcduino.dtb" +KERNEL_DEVICETREE = "allwinner/sun4i-a10-pcduino.dtb" UBOOT_MACHINE = "Linksprite_pcDuino_defconfig" SUNXI_FEX_FILE = "sys_config/a10/pcduino.fex" diff --git a/conf/machine/pcduino3.conf b/conf/machine/pcduino3.conf index 2ea2492..f91f405 100644 --- a/conf/machine/pcduino3.conf +++ b/conf/machine/pcduino3.conf @@ -4,6 +4,6 @@ require conf/machine/include/sun7i.inc -KERNEL_DEVICETREE = "sun7i-a20-pcduino3.dtb" +KERNEL_DEVICETREE = "allwinner/sun7i-a20-pcduino3.dtb" UBOOT_MACHINE = "Linksprite_pcDuino3_defconfig" -SUNXI_FEX_FILE = "sys_config/a20/linksprite_pcduino3.fex" \ No newline at end of file +SUNXI_FEX_FILE = "sys_config/a20/linksprite_pcduino3.fex" diff --git a/recipes-bsp/trusted-firmware-a/trusted-firmware-a_%.bbappend b/recipes-bsp/trusted-firmware-a/trusted-firmware-a_%.bbappend index df34187..4a6ad78 100644 --- a/recipes-bsp/trusted-firmware-a/trusted-firmware-a_%.bbappend +++ b/recipes-bsp/trusted-firmware-a/trusted-firmware-a_%.bbappend @@ -1,7 +1,7 @@ -COMPATIBLE_MACHINE = "(sun50i|sun50i-h616|sun50i-h6)" +COMPATIBLE_MACHINE:sunxi = "(sun50i|sun50i-h616|sun50i-h6)" TFA_PLATFORM:sun50i = "sun50i_a64" TFA_PLATFORM:sun50i-h6 = "sun50i_h6" TFA_PLATFORM:sun50i-h616 = "sun50i_h616" -TFA_BUILD_TARGET = "bl31" +TFA_BUILD_TARGET:sunxi = "bl31" diff --git a/recipes-bsp/u-boot/files/0001-Revert-sunxi-board-simplify-early-PMIC-setup-conditi.patch b/recipes-bsp/u-boot/files/0001-Revert-sunxi-board-simplify-early-PMIC-setup-conditi.patch deleted file mode 100644 index 136d0cf..0000000 --- a/recipes-bsp/u-boot/files/0001-Revert-sunxi-board-simplify-early-PMIC-setup-conditi.patch +++ /dev/null @@ -1,108 +0,0 @@ -From b75fa85deb7099916493ff9cc582c0956121238e Mon Sep 17 00:00:00 2001 -From: Leon Anavi -Date: Mon, 9 Dec 2024 14:02:07 +0000 -Subject: [PATCH] Revert "sunxi: board: simplify early PMIC setup conditions" - -This reverts commit ffb02942fab024d4a9b6a3346b9791457e272ff4. - -Upstream-Status: Inappropriate - -Signed-off-by: Leon Anavi ---- - board/sunxi/board.c | 32 ++++++++++++++++++-------------- - drivers/power/Kconfig | 2 +- - 2 files changed, 19 insertions(+), 15 deletions(-) - -diff --git a/board/sunxi/board.c b/board/sunxi/board.c -index 02fc3eef00..39ecbe988f 100644 ---- a/board/sunxi/board.c -+++ b/board/sunxi/board.c -@@ -581,46 +581,50 @@ void sunxi_board_init(void) - } - } - --#ifdef CONFIG_AXP_DCDC1_VOLT -+#if defined CONFIG_AXP221_POWER || defined CONFIG_AXP809_POWER || \ -+ defined CONFIG_AXP818_POWER - power_failed |= axp_set_dcdc1(CONFIG_AXP_DCDC1_VOLT); -- power_failed |= axp_set_dcdc5(CONFIG_AXP_DCDC5_VOLT); - #endif --#ifdef CONFIG_AXP_DCDC2_VOLT -+#if !defined(CONFIG_AXP305_POWER) - power_failed |= axp_set_dcdc2(CONFIG_AXP_DCDC2_VOLT); - power_failed |= axp_set_dcdc3(CONFIG_AXP_DCDC3_VOLT); - #endif --#ifdef CONFIG_AXP_DCDC4_VOLT -+#if !defined(CONFIG_AXP209_POWER) && !defined(CONFIG_AXP818_POWER) - power_failed |= axp_set_dcdc4(CONFIG_AXP_DCDC4_VOLT); - #endif -+#if defined CONFIG_AXP221_POWER || defined CONFIG_AXP809_POWER || \ -+ defined CONFIG_AXP818_POWER -+ power_failed |= axp_set_dcdc5(CONFIG_AXP_DCDC5_VOLT); -+#endif - --#ifdef CONFIG_AXP_ALDO1_VOLT -+#if defined CONFIG_AXP221_POWER || defined CONFIG_AXP809_POWER || \ -+ defined CONFIG_AXP818_POWER - power_failed |= axp_set_aldo1(CONFIG_AXP_ALDO1_VOLT); - #endif --#ifdef CONFIG_AXP_ALDO2_VOLT -+#if !defined(CONFIG_AXP305_POWER) - power_failed |= axp_set_aldo2(CONFIG_AXP_ALDO2_VOLT); - #endif --#ifdef CONFIG_AXP_ALDO3_VOLT -+#if !defined(CONFIG_AXP152_POWER) && !defined(CONFIG_AXP305_POWER) - power_failed |= axp_set_aldo3(CONFIG_AXP_ALDO3_VOLT); - #endif --#ifdef CONFIG_AXP_ALDO4_VOLT -+#ifdef CONFIG_AXP209_POWER - power_failed |= axp_set_aldo4(CONFIG_AXP_ALDO4_VOLT); - #endif - --#ifdef CONFIG_AXP_DLDO1_VOLT -+#if defined(CONFIG_AXP221_POWER) || defined(CONFIG_AXP809_POWER) || \ -+ defined(CONFIG_AXP818_POWER) - power_failed |= axp_set_dldo(1, CONFIG_AXP_DLDO1_VOLT); - power_failed |= axp_set_dldo(2, CONFIG_AXP_DLDO2_VOLT); --#endif --#ifdef CONFIG_AXP_DLDO3_VOLT -+#if !defined CONFIG_AXP809_POWER - power_failed |= axp_set_dldo(3, CONFIG_AXP_DLDO3_VOLT); - power_failed |= axp_set_dldo(4, CONFIG_AXP_DLDO4_VOLT); - #endif --#ifdef CONFIG_AXP_ELDO1_VOLT - power_failed |= axp_set_eldo(1, CONFIG_AXP_ELDO1_VOLT); - power_failed |= axp_set_eldo(2, CONFIG_AXP_ELDO2_VOLT); - power_failed |= axp_set_eldo(3, CONFIG_AXP_ELDO3_VOLT); - #endif - --#ifdef CONFIG_AXP_FLDO1_VOLT -+#ifdef CONFIG_AXP818_POWER - power_failed |= axp_set_fldo(1, CONFIG_AXP_FLDO1_VOLT); - power_failed |= axp_set_fldo(2, CONFIG_AXP_FLDO2_VOLT); - power_failed |= axp_set_fldo(3, CONFIG_AXP_FLDO3_VOLT); -@@ -629,7 +633,7 @@ void sunxi_board_init(void) - #if defined CONFIG_AXP809_POWER || defined CONFIG_AXP818_POWER - power_failed |= axp_set_sw(IS_ENABLED(CONFIG_AXP_SW_ON)); - #endif --#endif /* CONFIG_AXPxxx_POWER */ -+#endif - printf("DRAM:"); - gd->ram_size = sunxi_dram_init(); - printf(" %d MiB\n", (int)(gd->ram_size >> 20)); -diff --git a/drivers/power/Kconfig b/drivers/power/Kconfig -index 83cb31c937..7f3b990d23 100644 ---- a/drivers/power/Kconfig -+++ b/drivers/power/Kconfig -@@ -180,7 +180,7 @@ config AXP_DCDC3_VOLT - - config AXP_DCDC4_VOLT - int "axp pmic dcdc4 voltage" -- depends on AXP152_POWER || AXP221_POWER || AXP809_POWER || AXP305_POWER -+ depends on AXP152_POWER || AXP221_POWER || AXP809_POWER || AXP818_POWER || AXP305_POWER - default 1250 if AXP152_POWER - default 1200 if MACH_SUN6I - default 0 if MACH_SUN8I --- -2.47.0 - diff --git a/recipes-bsp/u-boot/files/0001-sunxi-board-Fix-early-PMIC-setup-conditions.patch b/recipes-bsp/u-boot/files/0001-sunxi-board-Fix-early-PMIC-setup-conditions.patch new file mode 100644 index 0000000..4a51e9d --- /dev/null +++ b/recipes-bsp/u-boot/files/0001-sunxi-board-Fix-early-PMIC-setup-conditions.patch @@ -0,0 +1,41 @@ +From f4dde09fa41eb538b743ee2104c1e2e10cc7e13f Mon Sep 17 00:00:00 2001 +From: Leon Anavi +Date: Sat, 14 Dec 2024 10:59:09 +0000 +Subject: [PATCH] sunxi: board: Fix early PMIC setup conditions + +Patch provided by Andre Przywara through the U-Boot mailing list: +https://lists.denx.de/pipermail/u-boot/2024-December/575050.html + +Upstream-Status: Pending + +Suggested-by: Andre Przywara +Signed-off-by: Leon Anavi +--- + board/sunxi/board.c | 4 +++- + 1 file changed, 3 insertions(+), 1 deletion(-) + +diff --git a/board/sunxi/board.c b/board/sunxi/board.c +index 961cdcde74..d6759fe853 100644 +--- a/board/sunxi/board.c ++++ b/board/sunxi/board.c +@@ -577,7 +577,6 @@ void sunxi_board_init(void) + + #ifdef CONFIG_AXP_DCDC1_VOLT + power_failed |= axp_set_dcdc1(CONFIG_AXP_DCDC1_VOLT); +- power_failed |= axp_set_dcdc5(CONFIG_AXP_DCDC5_VOLT); + #endif + #ifdef CONFIG_AXP_DCDC2_VOLT + power_failed |= axp_set_dcdc2(CONFIG_AXP_DCDC2_VOLT); +@@ -586,6 +585,9 @@ void sunxi_board_init(void) + #ifdef CONFIG_AXP_DCDC4_VOLT + power_failed |= axp_set_dcdc4(CONFIG_AXP_DCDC4_VOLT); + #endif ++#ifdef CONFIG_AXP_DCDC5_VOLT ++ power_failed |= axp_set_dcdc5(CONFIG_AXP_DCDC5_VOLT); ++#endif + + #ifdef CONFIG_AXP_ALDO1_VOLT + power_failed |= axp_set_aldo1(CONFIG_AXP_ALDO1_VOLT); +-- +2.47.1 + diff --git a/recipes-bsp/u-boot/files/0004-OrangePi-3-LTS-support.patch b/recipes-bsp/u-boot/files/0004-OrangePi-3-LTS-support.patch new file mode 100644 index 0000000..f91d534 --- /dev/null +++ b/recipes-bsp/u-boot/files/0004-OrangePi-3-LTS-support.patch @@ -0,0 +1,421 @@ +From 9966dda20246285abf8b417bd251d5a4bea3e423 Mon Sep 17 00:00:00 2001 +From: Juliano Dorigão +Date: Fri, 3 Mar 2023 16:11:30 -0400 +Subject: [PATCH] OrangePi 3 LTS support + +Upstream-Status: Pending +--- + arch/arm/dts/Makefile | 1 + + arch/arm/dts/sun50i-h6-orangepi-3-lts.dts | 361 ++++++++++++++++++++++ + configs/orangepi_3_lts_defconfig | 19 ++ + 3 files changed, 381 insertions(+) + create mode 100644 arch/arm/dts/sun50i-h6-orangepi-3-lts.dts + create mode 100644 configs/orangepi_3_lts_defconfig + +diff --git a/arch/arm/dts/Makefile b/arch/arm/dts/Makefile +index 43951a77..8dbbb6f4 100644 +--- a/arch/arm/dts/Makefile ++++ b/arch/arm/dts/Makefile +@@ -710,6 +710,7 @@ dtb-$(CONFIG_MACH_SUN50I_H5) += \ + dtb-$(CONFIG_MACH_SUN50I_H6) += \ + sun50i-h6-beelink-gs1.dtb \ + sun50i-h6-orangepi-3.dtb \ ++ sun50i-h6-orangepi-3-lts.dtb \ + sun50i-h6-orangepi-lite2.dtb \ + sun50i-h6-orangepi-one-plus.dtb \ + sun50i-h6-pine-h64.dtb \ +diff --git a/arch/arm/dts/sun50i-h6-orangepi-3-lts.dts b/arch/arm/dts/sun50i-h6-orangepi-3-lts.dts +new file mode 100644 +index 00000000..67f38b8a +--- /dev/null ++++ b/arch/arm/dts/sun50i-h6-orangepi-3-lts.dts +@@ -0,0 +1,361 @@ ++// SPDX-License-Identifier: (GPL-2.0+ OR MIT) ++// Copyright (C) 2023 Jernej Skrabec ++// Based on sun50i-h6-orangepi-3.dts, which is: ++// Copyright (C) 2019 Ondřej Jirman ++ ++/dts-v1/; ++ ++#include "sun50i-h6.dtsi" ++#include "sun50i-h6-cpu-opp.dtsi" ++ ++#include ++ ++/ { ++ model = "OrangePi 3 LTS"; ++ compatible = "xunlong,orangepi-3-lts", "allwinner,sun50i-h6"; ++ ++ aliases { ++ ethernet0 = &emac; ++ serial0 = &uart0; ++ }; ++ ++ chosen { ++ stdout-path = "serial0:115200n8"; ++ }; ++ ++ connector { ++ compatible = "hdmi-connector"; ++ ddc-en-gpios = <&pio 7 2 GPIO_ACTIVE_HIGH>; /* PH2 */ ++ type = "a"; ++ ++ port { ++ hdmi_con_in: endpoint { ++ remote-endpoint = <&hdmi_out_con>; ++ }; ++ }; ++ }; ++ ++ ext_osc32k: ext_osc32k_clk { ++ #clock-cells = <0>; ++ compatible = "fixed-clock"; ++ clock-frequency = <32768>; ++ clock-output-names = "ext_osc32k"; ++ }; ++ ++ leds { ++ compatible = "gpio-leds"; ++ ++ led-0 { ++ label = "orangepi:red:power"; ++ gpios = <&r_pio 0 4 GPIO_ACTIVE_HIGH>; /* PL4 */ ++ }; ++ ++ led-1 { ++ label = "orangepi:green:status"; ++ gpios = <&r_pio 0 7 GPIO_ACTIVE_HIGH>; /* PL7 */ ++ default-state = "on"; ++ }; ++ }; ++ ++ reg_vcc5v: vcc5v { ++ /* board wide 5V supply directly from the DC jack */ ++ compatible = "regulator-fixed"; ++ regulator-name = "vcc-5v"; ++ regulator-min-microvolt = <5000000>; ++ regulator-max-microvolt = <5000000>; ++ regulator-always-on; ++ }; ++ ++ reg_gmac_3v3: gmac-3v3 { ++ compatible = "regulator-fixed"; ++ regulator-name = "gmac-3v3"; ++ regulator-min-microvolt = <3300000>; ++ regulator-max-microvolt = <3300000>; ++ startup-delay-us = <150000>; ++ enable-active-high; ++ gpio = <&pio 3 6 GPIO_ACTIVE_HIGH>; /* PD6 */ ++ }; ++ ++ reg_vcc33_wifi: vcc33-wifi { ++ /* Always on 3.3V regulator for WiFi and BT */ ++ compatible = "regulator-fixed"; ++ regulator-name = "vcc33-wifi"; ++ regulator-min-microvolt = <3300000>; ++ regulator-max-microvolt = <3300000>; ++ enable-active-high; ++ gpio = <&pio 7 7 GPIO_ACTIVE_HIGH>; /* PH7 */ ++ }; ++ ++ reg_vcc_wifi_io: vcc-wifi-io { ++ /* Always on 1.8V/300mA regulator for WiFi and BT IO */ ++ compatible = "regulator-fixed"; ++ regulator-name = "vcc-wifi-io"; ++ regulator-min-microvolt = <1800000>; ++ regulator-max-microvolt = <1800000>; ++ regulator-always-on; ++ vin-supply = <®_vcc33_wifi>; ++ }; ++ ++ wifi_pwrseq: wifi-pwrseq { ++ compatible = "mmc-pwrseq-simple"; ++ clocks = <&rtc 1>; ++ clock-names = "ext_clock"; ++ reset-gpios = <&r_pio 1 3 GPIO_ACTIVE_LOW>; /* PM3 */ ++ post-power-on-delay-ms = <200>; ++ }; ++}; ++ ++&cpu0 { ++ cpu-supply = <®_dcdca>; ++}; ++ ++&de { ++ status = "okay"; ++}; ++ ++&dwc3 { ++ status = "okay"; ++}; ++ ++&ehci0 { ++ status = "okay"; ++}; ++ ++&ehci3 { ++ status = "okay"; ++}; ++ ++&emac { ++ pinctrl-names = "default"; ++ pinctrl-0 = <&ext_rgmii_pins>; ++ phy-mode = "rgmii"; ++ phy-handle = <&ext_rgmii_phy>; ++ phy-supply = <®_gmac_3v3>; ++ allwinner,rx-delay-ps = <1500>; ++ allwinner,tx-delay-ps = <700>; ++ status = "okay"; ++}; ++ ++&gpu { ++ mali-supply = <®_dcdcc>; ++ status = "okay"; ++}; ++ ++&hdmi { ++ hvcc-supply = <®_bldo2>; ++ status = "okay"; ++}; ++ ++&hdmi_out { ++ hdmi_out_con: endpoint { ++ remote-endpoint = <&hdmi_con_in>; ++ }; ++}; ++ ++&mdio { ++ ext_rgmii_phy: ethernet-phy@1 { ++ compatible = "ethernet-phy-ieee802.3-c22"; ++ reg = <1>; ++ ++ reset-gpios = <&pio 3 14 GPIO_ACTIVE_LOW>; /* PD14 */ ++ reset-assert-us = <15000>; ++ reset-deassert-us = <40000>; ++ }; ++}; ++ ++&mmc0 { ++ vmmc-supply = <®_cldo1>; ++ cd-gpios = <&pio 5 6 GPIO_ACTIVE_LOW>; /* PF6 */ ++ bus-width = <4>; ++ status = "okay"; ++}; ++ ++&mmc1 { ++ vmmc-supply = <®_vcc33_wifi>; ++ vqmmc-supply = <®_vcc_wifi_io>; ++ mmc-pwrseq = <&wifi_pwrseq>; ++ bus-width = <4>; ++ non-removable; ++ status = "okay"; ++}; ++ ++&mmc2 { ++ vmmc-supply = <®_cldo1>; ++ vqmmc-supply = <®_bldo2>; ++ cap-mmc-hw-reset; ++ non-removable; ++ bus-width = <8>; ++ status = "okay"; ++}; ++ ++&ohci0 { ++ status = "okay"; ++}; ++ ++&ohci3 { ++ status = "okay"; ++}; ++ ++&pio { ++ vcc-pc-supply = <®_bldo2>; ++ vcc-pd-supply = <®_cldo1>; ++ vcc-pg-supply = <®_bldo3>; ++}; ++ ++&r_ir { ++ status = "okay"; ++}; ++ ++&r_rsb { ++ clock-frequency = <100000>; ++ status = "okay"; ++ ++ axp805: pmic@745 { ++ compatible = "x-powers,axp805", "x-powers,axp806"; ++ reg = <0x745>; ++ interrupt-parent = <&r_intc>; ++ interrupts = ; ++ interrupt-controller; ++ #interrupt-cells = <1>; ++ x-powers,self-working-mode; ++ vina-supply = <®_vcc5v>; ++ vinb-supply = <®_vcc5v>; ++ vinc-supply = <®_vcc5v>; ++ vind-supply = <®_vcc5v>; ++ vine-supply = <®_vcc5v>; ++ aldoin-supply = <®_vcc5v>; ++ bldoin-supply = <®_vcc5v>; ++ cldoin-supply = <®_vcc5v>; ++ ++ regulators { ++ reg_aldo1: aldo1 { ++ regulator-always-on; ++ regulator-min-microvolt = <3300000>; ++ regulator-max-microvolt = <3300000>; ++ regulator-name = "vcc-pl-led-ir"; ++ }; ++ ++ reg_aldo2: aldo2 { ++ regulator-min-microvolt = <3300000>; ++ regulator-max-microvolt = <3300000>; ++ regulator-name = "vcc33-audio-tv-ephy-mac"; ++ }; ++ ++ /* ALDO3 is shorted to CLDO1 */ ++ reg_aldo3: aldo3 { ++ regulator-always-on; ++ regulator-min-microvolt = <3300000>; ++ regulator-max-microvolt = <3300000>; ++ regulator-name = "vcc33-io-pd-emmc-sd-usb-uart-1"; ++ }; ++ ++ reg_bldo1: bldo1 { ++ regulator-always-on; ++ regulator-min-microvolt = <1800000>; ++ regulator-max-microvolt = <1800000>; ++ regulator-name = "vcc18-dram-bias-pll"; ++ }; ++ ++ reg_bldo2: bldo2 { ++ regulator-min-microvolt = <1800000>; ++ regulator-max-microvolt = <1800000>; ++ regulator-name = "vcc-efuse-pcie-hdmi-pc"; ++ }; ++ ++ reg_bldo3: bldo3 { ++ regulator-min-microvolt = <1800000>; ++ regulator-max-microvolt = <1800000>; ++ regulator-name = "vcc-pm-pg-dcxoio-wifi"; ++ }; ++ ++ bldo4 { ++ /* unused */ ++ }; ++ ++ reg_cldo1: cldo1 { ++ regulator-always-on; ++ regulator-min-microvolt = <3300000>; ++ regulator-max-microvolt = <3300000>; ++ regulator-name = "vcc33-io-pd-emmc-sd-usb-uart-2"; ++ }; ++ ++ cldo2 { ++ /* unused */ ++ }; ++ ++ cldo3 { ++ /* unused */ ++ }; ++ ++ reg_dcdca: dcdca { ++ regulator-always-on; ++ regulator-min-microvolt = <800000>; ++ regulator-max-microvolt = <1160000>; ++ regulator-ramp-delay = <2500>; ++ regulator-name = "vdd-cpu"; ++ }; ++ ++ reg_dcdcc: dcdcc { ++ regulator-enable-ramp-delay = <32000>; ++ regulator-min-microvolt = <810000>; ++ regulator-max-microvolt = <1080000>; ++ regulator-ramp-delay = <2500>; ++ regulator-name = "vdd-gpu"; ++ }; ++ ++ reg_dcdcd: dcdcd { ++ regulator-always-on; ++ regulator-min-microvolt = <980000>; ++ regulator-max-microvolt = <980000>; ++ regulator-name = "vdd-sys"; ++ }; ++ ++ reg_dcdce: dcdce { ++ regulator-always-on; ++ regulator-min-microvolt = <1200000>; ++ regulator-max-microvolt = <1200000>; ++ regulator-name = "vcc-dram"; ++ }; ++ ++ sw { ++ /* unused */ ++ }; ++ }; ++ }; ++}; ++ ++&pwm { ++ status = "okay"; ++}; ++ ++&r_ir { ++ status = "okay"; ++}; ++ ++&rtc { ++ clocks = <&ext_osc32k>; ++}; ++ ++/delete-node/ &spi0; ++ ++&uart0 { ++ pinctrl-names = "default"; ++ pinctrl-0 = <&uart0_ph_pins>; ++ status = "okay"; ++}; ++ ++&usb2otg { ++ dr_mode = "host"; ++ status = "okay"; ++}; ++ ++&usb2phy { ++ usb0_id_det-gpios = <&pio 2 15 GPIO_ACTIVE_HIGH>; /* PC15 */ ++ usb0_vbus-supply = <®_vcc5v>; ++ usb3_vbus-supply = <®_vcc5v>; ++ status = "okay"; ++}; ++ ++&usb3phy { ++ status = "okay"; ++}; +diff --git a/configs/orangepi_3_lts_defconfig b/configs/orangepi_3_lts_defconfig +new file mode 100644 +index 00000000..41a9af4e +--- /dev/null ++++ b/configs/orangepi_3_lts_defconfig +@@ -0,0 +1,19 @@ ++CONFIG_ARM=y ++CONFIG_ARCH_SUNXI=y ++CONFIG_DEFAULT_DEVICE_TREE="sun50i-h6-orangepi-3-lts" ++CONFIG_SPL=y ++CONFIG_MACH_SUN50I_H6=y ++CONFIG_SUNXI_DRAM_H6_LPDDR3=y ++CONFIG_MMC0_CD_PIN="PF6" ++CONFIG_MMC_SUNXI_SLOT_EXTRA=2 ++# CONFIG_SYS_MALLOC_CLEAR_ON_INIT is not set ++CONFIG_SPL_STACK=0x118000 ++CONFIG_SYS_PBSIZE=1024 ++CONFIG_SYS_BOOTM_LEN=0x2000000 ++CONFIG_PHY_SUN50I_USB3=y ++CONFIG_USB_XHCI_HCD=y ++CONFIG_USB_XHCI_DWC3=y ++CONFIG_USB_EHCI_HCD=y ++CONFIG_USB_OHCI_HCD=y ++CONFIG_USB_DWC3=y ++# CONFIG_USB_DWC3_GADGET is not set +-- +2.39.2 + diff --git a/recipes-bsp/u-boot/files/0004-mangopi-mq-r-t113-Fix-serial-console.patch b/recipes-bsp/u-boot/files/0004-mangopi-mq-r-t113-Fix-serial-console.patch new file mode 100644 index 0000000..a9d334b --- /dev/null +++ b/recipes-bsp/u-boot/files/0004-mangopi-mq-r-t113-Fix-serial-console.patch @@ -0,0 +1,30 @@ +From bf813915bf480154c707e0be14016cef94adbd95 Mon Sep 17 00:00:00 2001 +From: Marek Belisko +Date: Tue, 7 May 2024 11:27:08 +0200 +Subject: [PATCH] mangopi-mq-r-t113: Fix serial console + +Serial console is on uart3 not on uart0. + +Upstream-Status: Inappropriate (for this board only) + +Signed-off-by: Marek Belisko +--- + include/configs/sunxi-common.h | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/include/configs/sunxi-common.h b/include/configs/sunxi-common.h +index b8ca77d031..4e4808d2c1 100644 +--- a/include/configs/sunxi-common.h ++++ b/include/configs/sunxi-common.h +@@ -324,7 +324,7 @@ + MEM_LAYOUT_ENV_EXTRA_SETTINGS \ + DFU_ALT_INFO_RAM \ + "fdtfile=" FDTFILE "\0" \ +- "console=ttyS0,115200\0" \ ++ "console=ttyS3,115200\0" \ + "uuid_gpt_esp=" UUID_GPT_ESP "\0" \ + "uuid_gpt_system=" UUID_GPT_SYSTEM "\0" \ + "partitions=" PARTS_DEFAULT "\0" \ +-- +2.25.1 + diff --git a/recipes-bsp/u-boot/u-boot_%.bbappend b/recipes-bsp/u-boot/u-boot_%.bbappend index bd5a0b0..0f85df2 100644 --- a/recipes-bsp/u-boot/u-boot_%.bbappend +++ b/recipes-bsp/u-boot/u-boot_%.bbappend @@ -15,13 +15,17 @@ SRC_URI:append:sunxi = " \ file://0001-nanopi_neo_air_defconfig-Enable-eMMC-support.patch \ file://0002-Added-nanopi-r1-board-support.patch \ file://0003-sunxi-H6-Enable-Ethernet-on-Orange-Pi-One-Plus.patch \ + file://0004-OrangePi-3-LTS-support.patch \ file://boot.cmd \ " - SRC_URI:append:sun9i = " \ - file://0001-Revert-sunxi-board-simplify-early-PMIC-setup-conditi.patch \ + file://0001-sunxi-board-Fix-early-PMIC-setup-conditions.patch \ " +SRC_URI:append:mangopi-mq-t-t113 = " \ + file://0004-mangopi-mq-r-t113-Fix-serial-console.patch \ + " + UBOOT_ENV_SUFFIX:sunxi = "scr" UBOOT_ENV:sunxi = "boot" diff --git a/recipes-devtools/python/pya20_0.2.12.bb b/recipes-devtools/python/pya20_0.2.12.bb index be7e332..29974c1 100644 --- a/recipes-devtools/python/pya20_0.2.12.bb +++ b/recipes-devtools/python/pya20_0.2.12.bb @@ -13,7 +13,7 @@ SRC_URI = "https://pypi.python.org/packages/source/p/pyA20/pyA20-${PV}.tar.gz \ " S = "${WORKDIR}/pyA20-${PV}" -inherit distutils3 +inherit setuptools3 do_compile:prepend() { cp ${WORKDIR}/mapping.h ${S}/pyA20/gpio/mapping.h diff --git a/recipes-graphics/xorg-xserver/xserver-xorg_%.bbappend b/recipes-graphics/xorg-xserver/xserver-xorg_%.bbappend index d79738d..362c93f 100644 --- a/recipes-graphics/xorg-xserver/xserver-xorg_%.bbappend +++ b/recipes-graphics/xorg-xserver/xserver-xorg_%.bbappend @@ -1 +1 @@ -DEPENDS += "libxshmfence" +PACKAGECONFIG[dri3] = "-Ddri3=true,-Ddri3=false,libxshmfence" diff --git a/recipes-kernel/armbian-firmware/armbian-firmware_git.bb b/recipes-kernel/armbian-firmware/armbian-firmware_git.bb new file mode 100644 index 0000000..ca36687 --- /dev/null +++ b/recipes-kernel/armbian-firmware/armbian-firmware_git.bb @@ -0,0 +1,37 @@ +SUMMARY = "Armbian Firmware" +DESCRIPTION = "Collection of firmware files necessary for Armbian supported hardware devices to work correctly with the Linux kernel" +LICENSE = "CLOSED" + +PV = "1.0+git" +SRC_URI = "git://github.com/armbian/firmware.git;protocol=https;branch=master" +SRCREV = "4050e02da2dce2b74c97101f7964ecfb962f5aec" + +S = "${WORKDIR}/git" + +inherit allarch + +do_compile[noexec] = "1" + +do_install() { + # ap6212 (bluetooth firmware only, wifi firmware is provided by linux-firmware-bcm43430) + install -d "${D}${nonarch_base_libdir}/firmware/ap6212" + install -m 0644 "${S}/ap6212/bcm43438a1.hcd" "${D}${nonarch_base_libdir}/firmware/ap6212/" + install -d "${D}${nonarch_base_libdir}/firmware/brcm" + ln -sf ../ap6212/bcm43438a1.hcd "${D}${nonarch_base_libdir}/firmware/brcm/BCM43430A1.hcd" +} + +PACKAGES =+ " \ + ${PN}-ap6212 \ +" + +FILES:${PN}-ap6212 = " \ + ${nonarch_base_libdir}/firmware/ap6212/* \ + ${nonarch_base_libdir}/firmware/brcm/BCM43430A1.hcd \ +" + + +# Make armbian-firmware depend on all of the split-out packages. +python populate_packages:prepend () { + firmware_pkgs = oe.utils.packages_filter_out_system(d) + d.appendVar('RRECOMMENDS:armbian-firmware', ' ' + ' '.join(firmware_pkgs)) +} diff --git a/recipes-kernel/linux-firmware/linux-firmware_%.bbappend b/recipes-kernel/linux-firmware/linux-firmware_%.bbappend index a08ff45..32c124e 100644 --- a/recipes-kernel/linux-firmware/linux-firmware_%.bbappend +++ b/recipes-kernel/linux-firmware/linux-firmware_%.bbappend @@ -6,8 +6,21 @@ # WARNING: The following commit is required for NVRAM files to be included in # linux-firmware-bcm43430 package: # http://git.openembedded.org/openembedded-core/commit/?id=dde0f79f32fa6bab045ef60199903f74c4cc3393 -do_install:append() { +do_install:append:sunxi() { ln -sf -r ${D}${nonarch_base_libdir}/firmware/brcm/brcmfmac43430-sdio.AP6212.txt ${D}${nonarch_base_libdir}/firmware/brcm/brcmfmac43430-sdio.xunlong,orangepi-zero-plus2.txt ln -sf -r ${D}${nonarch_base_libdir}/firmware/brcm/brcmfmac43430-sdio.AP6212.txt ${D}${nonarch_base_libdir}/firmware/brcm/brcmfmac43430-sdio.xunlong,orangepi-zero-plus2-h3.txt ln -sf -r ${D}${nonarch_base_libdir}/firmware/brcm/brcmfmac43430-sdio.AP6212.txt ${D}${nonarch_base_libdir}/firmware/brcm/brcmfmac43430-sdio.friendlyarm,nanopi-neo-plus2.txt + ln -sf -r ${D}${nonarch_base_libdir}/firmware/brcm/brcmfmac43430-sdio.AP6212.txt ${D}${nonarch_base_libdir}/firmware/brcm/brcmfmac43430-sdio.sinovoip,bpi-m2-berry.txt +} + +do_install:append:cubieboard4() { + ln -sf -r ${D}${nonarch_base_libdir}/firmware/brcm/brcmfmac4330-sdio.bin ${D}${nonarch_base_libdir}/firmware/brcm/brcmfmac4330-sdio.cubietech,a80-cubieboard4.bin +} + +do_install:append:merrii-a80-optimus() { + ln -sf -r ${D}${nonarch_base_libdir}/firmware/brcm/brcmfmac4330-sdio.bin ${D}${nonarch_base_libdir}/firmware/brcm/brcmfmac4330-sdio.merrii,a80-optimus.bin +} + +do_install:append:sun9i() { + ln -sf -r ${D}${nonarch_base_libdir}/firmware/brcm/brcmfmac4330-sdio.Prowise-PT301.txt ${D}${nonarch_base_libdir}/firmware/brcm/brcmfmac4330-sdio.txt } diff --git a/recipes-kernel/linux/linux-mainline-6.1.9/orange-pi-zero2/0003-drv-fix-incldue-path-for-unisocwcn.patch b/recipes-kernel/linux/linux-mainline-6.1.9/orange-pi-zero2/0003-drv-fix-incldue-path-for-unisocwcn.patch deleted file mode 100644 index 473b08c..0000000 --- a/recipes-kernel/linux/linux-mainline-6.1.9/orange-pi-zero2/0003-drv-fix-incldue-path-for-unisocwcn.patch +++ /dev/null @@ -1,45 +0,0 @@ -From 5138d597275fd503573fac84018186bd18740644 Mon Sep 17 00:00:00 2001 -From: pbiel -Date: Thu, 30 Mar 2023 22:45:33 +0200 -Subject: [PATCH] Fix incldue path for unisocwcn - ---- - drivers/net/wireless/uwe5622/Makefile | 4 +++- - drivers/net/wireless/uwe5622/unisocwcn/Makefile | 6 +++--- - 2 files changed, 6 insertions(+), 4 deletions(-) - -diff --git a/drivers/net/wireless/uwe5622/Makefile b/drivers/net/wireless/uwe5622/Makefile -index 313ea5123..e9a398584 100644 ---- a/drivers/net/wireless/uwe5622/Makefile -+++ b/drivers/net/wireless/uwe5622/Makefile -@@ -2,7 +2,9 @@ obj-$(CONFIG_AW_WIFI_DEVICE_UWE5622) += unisocwcn/ - obj-$(CONFIG_WLAN_UWE5622) += unisocwifi/ - obj-$(CONFIG_TTY_OVERY_SDIO) += tty-sdio/ - --UNISOCWCN_DIR := $(shell cd $(src)/unisocwcn/ && /bin/pwd) -+mkfile_path := $(abspath $(lastword $(MAKEFILE_LIST))) -+UNISOCWCN_DIR := $(dir $(mkfile_path))/unisocwcn/ -+ - UNISOC_BSP_INCLUDE := $(UNISOCWCN_DIR)/include - export UNISOC_BSP_INCLUDE - -diff --git a/drivers/net/wireless/uwe5622/unisocwcn/Makefile b/drivers/net/wireless/uwe5622/unisocwcn/Makefile -index f9c595747..1ad490594 100644 ---- a/drivers/net/wireless/uwe5622/unisocwcn/Makefile -+++ b/drivers/net/wireless/uwe5622/unisocwcn/Makefile -@@ -129,9 +129,9 @@ ccflags-y += -DCONFIG_WCN_BOOT - ccflags-y += -DCONFIG_WCN_UTILS - - #### include path ###### --ccflags-y += -I$(src)/include/ --ccflags-y += -I$(src)/platform/ --ccflags-y += -I$(src)/platform/rf/ -+ccflags-y += -I$(srctree)/$(src)/include/ -+ccflags-y += -I$(srctree)/$(src)/platform/ -+ccflags-y += -I$(srctree)/$(src)/platform/rf/ - - #### add cflag for Customer ###### - ### ---------- Hisilicon start ---------- ### --- -2.34.1 - diff --git a/recipes-kernel/linux/linux-mainline-6.1.9/orange-pi-zero2/0004-drv-wireless-adapt-uwe5622-wifi-driver-to-kernel-6.1.patch b/recipes-kernel/linux/linux-mainline-6.1.9/orange-pi-zero2/0004-drv-wireless-adapt-uwe5622-wifi-driver-to-kernel-6.1.patch deleted file mode 100644 index b8aae2c..0000000 --- a/recipes-kernel/linux/linux-mainline-6.1.9/orange-pi-zero2/0004-drv-wireless-adapt-uwe5622-wifi-driver-to-kernel-6.1.patch +++ /dev/null @@ -1,177 +0,0 @@ -From 5f4d2d5fc32dfe41c73cac36ec6747c34e5562a3 Mon Sep 17 00:00:00 2001 -From: pbiel -Date: Wed, 15 Mar 2023 23:04:27 +0100 -Subject: [PATCH] wireless: Adapt uwe5622 wifi driver to kernel 6.1 - ---- - drivers/net/wireless/uwe5622/tty-sdio/lpm.c | 2 +- - .../uwe5622/unisocwcn/boot/wcn_integrate_dev.c | 2 +- - .../uwe5622/unisocwcn/platform/wcn_parn_parser.c | 2 +- - .../wireless/uwe5622/unisocwcn/platform/wcn_procfs.c | 2 +- - .../wireless/uwe5622/unisocwcn/usb/wcn_usb_download.c | 2 +- - .../net/wireless/uwe5622/unisocwcn/usb/wcn_usb_test.c | 6 +++--- - drivers/net/wireless/uwe5622/unisocwifi/cfg80211.c | 10 +++++----- - drivers/net/wireless/uwe5622/unisocwifi/cmdevt.c | 2 +- - 8 files changed, 14 insertions(+), 14 deletions(-) - -diff --git a/drivers/net/wireless/uwe5622/tty-sdio/lpm.c b/drivers/net/wireless/uwe5622/tty-sdio/lpm.c -index b2d9a8994e5e..35e30651a921 100644 ---- a/drivers/net/wireless/uwe5622/tty-sdio/lpm.c -+++ b/drivers/net/wireless/uwe5622/tty-sdio/lpm.c -@@ -70,7 +70,7 @@ static int btwrite_proc_show(struct seq_file *m, void *v) - - static int bluesleep_open_proc_btwrite(struct inode *inode, struct file *file) - { -- return single_open(file, btwrite_proc_show, PDE_DATA(inode)); -+ return single_open(file, btwrite_proc_show, pde_data(inode)); - } - - static const struct proc_ops lpm_proc_btwrite_fops = { -diff --git a/drivers/net/wireless/uwe5622/unisocwcn/boot/wcn_integrate_dev.c b/drivers/net/wireless/uwe5622/unisocwcn/boot/wcn_integrate_dev.c -index 3ee6910e7cf7..29a3ec298bc1 100644 ---- a/drivers/net/wireless/uwe5622/unisocwcn/boot/wcn_integrate_dev.c -+++ b/drivers/net/wireless/uwe5622/unisocwcn/boot/wcn_integrate_dev.c -@@ -562,7 +562,7 @@ static struct wcn_proc_data g_proc_data = { - static int wcn_platform_open(struct inode *inode, struct file *filp) - { - struct platform_proc_file_entry -- *entry = (struct platform_proc_file_entry *)PDE_DATA(inode); -+ *entry = (struct platform_proc_file_entry *)pde_data(inode); - - WCN_INFO("entry name:%s\n!", entry->name); - -diff --git a/drivers/net/wireless/uwe5622/unisocwcn/platform/wcn_parn_parser.c b/drivers/net/wireless/uwe5622/unisocwcn/platform/wcn_parn_parser.c -index aea7d6d0fe57..bd841f0b32d3 100644 ---- a/drivers/net/wireless/uwe5622/unisocwcn/platform/wcn_parn_parser.c -+++ b/drivers/net/wireless/uwe5622/unisocwcn/platform/wcn_parn_parser.c -@@ -146,7 +146,7 @@ static int prefixcmp(const char *str, const char *prefix) - } - - #if KERNEL_VERSION(3, 19, 0) <= LINUX_VERSION_CODE --static int find_callback(struct dir_context *ctx, const char *name, int namlen, -+static bool find_callback(struct dir_context *ctx, const char *name, int namlen, - loff_t offset, u64 ino, unsigned int d_type) - #else - static int find_callback(void *ctx, const char *name, int namlen, -diff --git a/drivers/net/wireless/uwe5622/unisocwcn/platform/wcn_procfs.c b/drivers/net/wireless/uwe5622/unisocwcn/platform/wcn_procfs.c -index 2edb7903d80e..9e453365bba8 100644 ---- a/drivers/net/wireless/uwe5622/unisocwcn/platform/wcn_procfs.c -+++ b/drivers/net/wireless/uwe5622/unisocwcn/platform/wcn_procfs.c -@@ -431,7 +431,7 @@ static const struct proc_ops mdbg_snap_shoot_seq_fops = { - static int mdbg_proc_open(struct inode *inode, struct file *filp) - { - struct mdbg_proc_entry *entry = -- (struct mdbg_proc_entry *)PDE_DATA(inode); -+ (struct mdbg_proc_entry *)pde_data(inode); - filp->private_data = entry; - - return 0; -diff --git a/drivers/net/wireless/uwe5622/unisocwcn/usb/wcn_usb_download.c b/drivers/net/wireless/uwe5622/unisocwcn/usb/wcn_usb_download.c -index 8f228d403909..750bfc0466cb 100644 ---- a/drivers/net/wireless/uwe5622/unisocwcn/usb/wcn_usb_download.c -+++ b/drivers/net/wireless/uwe5622/unisocwcn/usb/wcn_usb_download.c -@@ -82,7 +82,7 @@ static int wcn_usb_dopen(struct inode *inode, struct file *file) - { - struct wcn_usb_ddata *data; - -- data = (struct wcn_usb_ddata *)PDE_DATA(inode); -+ data = (struct wcn_usb_ddata *)pde_data(inode); - - if (!data) - return -EIO; -diff --git a/drivers/net/wireless/uwe5622/unisocwcn/usb/wcn_usb_test.c b/drivers/net/wireless/uwe5622/unisocwcn/usb/wcn_usb_test.c -index c2cccc658c0d..e7a9f258943e 100644 ---- a/drivers/net/wireless/uwe5622/unisocwcn/usb/wcn_usb_test.c -+++ b/drivers/net/wireless/uwe5622/unisocwcn/usb/wcn_usb_test.c -@@ -61,7 +61,7 @@ static int wcn_usb_channel_open(struct inode *inode, struct file *file) - { - struct channel *channel; - -- channel = (struct channel *)PDE_DATA(inode); -+ channel = (struct channel *)pde_data(inode); - - if (!channel) - return -EIO; -@@ -467,7 +467,7 @@ static int wcn_usb_chnmg_open(struct inode *inode, struct file *file) - { - struct chnmg *chnmg; - /* get channel_list head */ -- chnmg = (struct chnmg *)PDE_DATA(inode); -+ chnmg = (struct chnmg *)pde_data(inode); - - file->private_data = chnmg; - return 0; -@@ -916,7 +916,7 @@ static int print_level_open(struct inode *inode, struct file *file) - { - struct chnmg *chnmg; - /* get channel_list head */ -- chnmg = (struct chnmg *)PDE_DATA(inode); -+ chnmg = (struct chnmg *)pde_data(inode); - - file->private_data = chnmg; - return 0; -diff --git a/drivers/net/wireless/uwe5622/unisocwifi/cfg80211.c b/drivers/net/wireless/uwe5622/unisocwifi/cfg80211.c -index daef880ae3c0..2231388da70a 100644 ---- a/drivers/net/wireless/uwe5622/unisocwifi/cfg80211.c -+++ b/drivers/net/wireless/uwe5622/unisocwifi/cfg80211.c -@@ -703,7 +703,7 @@ static int sprdwl_add_cipher_key(struct sprdwl_vif *vif, bool pairwise, - } - - static int sprdwl_cfg80211_add_key(struct wiphy *wiphy, struct net_device *ndev, -- u8 key_index, bool pairwise, -+ int link_id, u8 key_index, bool pairwise, - const u8 *mac_addr, - struct key_params *params) - { -@@ -725,7 +725,7 @@ static int sprdwl_cfg80211_add_key(struct wiphy *wiphy, struct net_device *ndev, - } - - static int sprdwl_cfg80211_del_key(struct wiphy *wiphy, struct net_device *ndev, -- u8 key_index, bool pairwise, -+ int link_id, u8 key_index, bool pairwise, - const u8 *mac_addr) - { - struct sprdwl_vif *vif = netdev_priv(ndev); -@@ -755,7 +755,7 @@ static int sprdwl_cfg80211_del_key(struct wiphy *wiphy, struct net_device *ndev, - - static int sprdwl_cfg80211_set_default_key(struct wiphy *wiphy, - struct net_device *ndev, -- u8 key_index, bool unicast, -+ int link_id, u8 key_index, bool unicast, - bool multicast) - { - struct sprdwl_vif *vif = netdev_priv(ndev); -@@ -984,7 +984,7 @@ static int sprdwl_cfg80211_change_beacon(struct wiphy *wiphy, - return sprdwl_change_beacon(vif, beacon); - } - --static int sprdwl_cfg80211_stop_ap(struct wiphy *wiphy, struct net_device *ndev) -+static int sprdwl_cfg80211_stop_ap(struct wiphy *wiphy, struct net_device *ndev, unsigned int link_id) - { - #ifdef DFS_MASTER - struct sprdwl_vif *vif = netdev_priv(ndev); -@@ -2367,7 +2367,7 @@ void sprdwl_report_connection(struct sprdwl_vif *vif, - conn_info->status == SPRDWL_ROAM_SUCCESS){ - #if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 14, 0) - struct cfg80211_roam_info roam_info = { -- .bss = bss, -+ .links[0].bss = bss, - .req_ie = conn_info->req_ie, - .req_ie_len = conn_info->req_ie_len, - .resp_ie = conn_info->resp_ie, -diff --git a/drivers/net/wireless/uwe5622/unisocwifi/cmdevt.c b/drivers/net/wireless/uwe5622/unisocwifi/cmdevt.c -index e81619b12e39..1ecbfac5b490 100644 ---- a/drivers/net/wireless/uwe5622/unisocwifi/cmdevt.c -+++ b/drivers/net/wireless/uwe5622/unisocwifi/cmdevt.c -@@ -3296,7 +3296,7 @@ void sprdwl_event_chan_changed(struct sprdwl_vif *vif, u8 *data, u16 len) - NL80211_CHAN_HT20); - else - wl_err("%s, ch is null!\n", __func__); -- cfg80211_ch_switch_notify(vif->ndev, &chandef); -+ cfg80211_ch_switch_notify(vif->ndev, &chandef, 0); - } - } - --- -2.34.1 - diff --git a/recipes-kernel/linux/linux-mainline-6.1.9/orange-pi-zero2/0006-drv-add-dump_reg-and-sunxi-sysinfo-drivers.patch b/recipes-kernel/linux/linux-mainline-6.1.9/orange-pi-zero2/0006-drv-add-dump_reg-and-sunxi-sysinfo-drivers.patch deleted file mode 100644 index 58b6b65..0000000 --- a/recipes-kernel/linux/linux-mainline-6.1.9/orange-pi-zero2/0006-drv-add-dump_reg-and-sunxi-sysinfo-drivers.patch +++ /dev/null @@ -1,1552 +0,0 @@ -From ad291f3fffe361a3a424f9a892475b6343870ed9 Mon Sep 17 00:00:00 2001 -From: afaulkner420 -Date: Fri, 25 Mar 2022 19:28:00 +0000 -Subject: [PATCH 03/11] Add dump_reg and sunxi-sysinfo drivers - ---- - drivers/char/Kconfig | 2 + - drivers/char/Makefile | 2 + - drivers/char/dump_reg/Kconfig | 21 + - drivers/char/dump_reg/Makefile | 2 + - drivers/char/dump_reg/dump_reg.c | 888 +++++++++++++++++++++ - drivers/char/dump_reg/dump_reg.h | 132 +++ - drivers/char/dump_reg/dump_reg_misc.c | 209 +++++ - drivers/char/sunxi-sysinfo/Kconfig | 10 + - drivers/char/sunxi-sysinfo/Makefile | 5 + - drivers/char/sunxi-sysinfo/sunxi-sysinfo.c | 178 +++++ - 10 files changed, 1449 insertions(+) - create mode 100644 drivers/char/dump_reg/Kconfig - create mode 100644 drivers/char/dump_reg/Makefile - create mode 100644 drivers/char/dump_reg/dump_reg.c - create mode 100644 drivers/char/dump_reg/dump_reg.h - create mode 100644 drivers/char/dump_reg/dump_reg_misc.c - create mode 100644 drivers/char/sunxi-sysinfo/Kconfig - create mode 100644 drivers/char/sunxi-sysinfo/Makefile - create mode 100644 drivers/char/sunxi-sysinfo/sunxi-sysinfo.c - -diff --git a/drivers/char/Kconfig b/drivers/char/Kconfig -index 740811893..e8d6b5cb1 100644 ---- a/drivers/char/Kconfig -+++ b/drivers/char/Kconfig -@@ -131,6 +131,8 @@ config POWERNV_OP_PANEL - If unsure, say M here to build it as a module called powernv-op-panel. - - source "drivers/char/ipmi/Kconfig" -+source "drivers/char/sunxi-sysinfo/Kconfig" -+source "drivers/char/dump_reg/Kconfig" - - config DS1620 - tristate "NetWinder thermometer support" -diff --git a/drivers/char/Makefile b/drivers/char/Makefile -index 264eb398f..c638d4426 100644 ---- a/drivers/char/Makefile -+++ b/drivers/char/Makefile -@@ -11,6 +11,7 @@ obj-$(CONFIG_VIRTIO_CONSOLE) += virtio_console.o - obj-$(CONFIG_MSPEC) += mspec.o - obj-$(CONFIG_UV_MMTIMER) += uv_mmtimer.o - obj-$(CONFIG_IBM_BSR) += bsr.o -+obj-$(CONFIG_ARCH_SUNXI) += sunxi-sysinfo/ - - obj-$(CONFIG_PRINTER) += lp.o - -@@ -46,3 +47,4 @@ obj-$(CONFIG_PS3_FLASH) += ps3flash.o - obj-$(CONFIG_XILLYBUS_CLASS) += xillybus/ - obj-$(CONFIG_POWERNV_OP_PANEL) += powernv-op-panel.o - obj-$(CONFIG_ADI) += adi.o -+obj-$(CONFIG_DUMP_REG) += dump_reg/ -diff --git a/drivers/char/dump_reg/Kconfig b/drivers/char/dump_reg/Kconfig -new file mode 100644 -index 000000000..dbf24c59f ---- /dev/null -+++ b/drivers/char/dump_reg/Kconfig -@@ -0,0 +1,21 @@ -+# -+# dump reg config. -+# -+ -+config DUMP_REG -+ tristate "dump reg driver for sunxi platform" -+ default y -+ help -+ Say y here if you want to support dump regs module. -+ The dump regs module is used to dump regs of any devices -+ if you want it, When in doubt, say "Y". -+ -+config DUMP_REG_MISC -+ tristate "dump reg misc driver" -+ depends on DUMP_REG -+ default y -+ help -+ Add misc driver support, you can use dump regs function -+ via ("/sys/class/...") sysfs interface. -+ When in doubt, say "Y". -+ -diff --git a/drivers/char/dump_reg/Makefile b/drivers/char/dump_reg/Makefile -new file mode 100644 -index 000000000..e953f413b ---- /dev/null -+++ b/drivers/char/dump_reg/Makefile -@@ -0,0 +1,2 @@ -+obj-$(CONFIG_DUMP_REG) += dump_reg.o -+obj-$(CONFIG_DUMP_REG_MISC) += dump_reg_misc.o -diff --git a/drivers/char/dump_reg/dump_reg.c b/drivers/char/dump_reg/dump_reg.c -new file mode 100644 -index 000000000..8c227b08d ---- /dev/null -+++ b/drivers/char/dump_reg/dump_reg.c -@@ -0,0 +1,888 @@ -+/* -+ * dump registers sysfs driver -+ * -+ * Copyright(c) 2015-2018 Allwinnertech Co., Ltd. -+ * http://www.allwinnertech.com -+ * -+ * Author: Liugang -+ * Xiafeng -+ * Martin -+ * Lewis -+ * This program is free software; you can redistribute it and/or modify -+ * it under the terms of the GNU General Public License as published by -+ * the Free Software Foundation; either version 2 of the License, or -+ * (at your option) any later version. -+ */ -+ -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include "dump_reg.h" -+ -+/* the register and vaule to be test by dump_reg */ -+static u32 test_addr; -+static u32 test_size; -+static struct class *dump_class; -+ -+/* Access in byte mode ? 1: byte-mode, 0: word-mode */ -+static unsigned int rw_byte_mode; -+ -+/* for dump_reg class */ -+static struct dump_addr dump_para; -+static struct write_group *wt_group; -+static struct compare_group *cmp_group; -+ -+static u32 _read(void __iomem *vaddr) -+{ -+ if (rw_byte_mode) -+ return (u32)readb(vaddr); -+ else -+ return readl(vaddr); -+} -+ -+static void _write(u32 val, void __iomem *vaddr) -+{ -+ if (rw_byte_mode) -+ writeb((u8)val, vaddr); -+ else -+ writel(val, vaddr); -+} -+ -+static void __iomem *_io_remap(unsigned long paddr, size_t size) -+{ -+ return ioremap(paddr, size); -+} -+ -+static void _io_unmap(void __iomem *vaddr) -+{ -+ iounmap(vaddr); -+} -+ -+static void __iomem *_mem_remap(unsigned long paddr, size_t size) -+{ -+ return (void __iomem *)phys_to_virt(paddr); -+} -+ -+/* -+ * Convert a physical address (which is already mapped) to virtual address -+ */ -+static void __iomem *_get_vaddr(struct dump_addr *dump_addr, unsigned long uaddr) -+{ -+ unsigned long offset = uaddr - dump_addr->uaddr_start; -+ return (void __iomem *)(dump_addr->vaddr_start + offset); -+} -+ -+const struct dump_struct dump_table[] = { -+ { -+ .addr_start = SUNXI_IO_PHYS_START, -+ .addr_end = SUNXI_IO_PHYS_END, -+ .remap = _io_remap, -+ .unmap = _io_unmap, -+ .get_vaddr = _get_vaddr, -+ .read = _read, -+ .write = _write, -+ }, -+ { -+ .addr_start = SUNXI_PLAT_PHYS_START, -+ .addr_end = SUNXI_PLAT_PHYS_END, -+ .remap = _mem_remap, -+ .unmap = NULL, -+ .get_vaddr = _get_vaddr, -+ .read = _read, -+ .write = _write, -+ }, -+#if defined(SUNXI_IOMEM_START) -+ { -+ .addr_start = SUNXI_IOMEM_START, -+ .addr_end = SUNXI_IOMEM_END, -+ .remap = NULL, /* .remap = NULL: uaddr is a virtual address */ -+ .unmap = NULL, -+ .get_vaddr = _get_vaddr, -+ .read = _read, -+ .write = _write, -+ }, -+#endif -+ { -+ .addr_start = SUNXI_MEM_PHYS_START, -+ .addr_end = SUNXI_MEM_PHYS_END, -+ .remap = NULL, /* .remap = NULL: uaddr is a virtual address */ -+ .unmap = NULL, -+ .get_vaddr = _get_vaddr, -+ .read = _read, -+ .write = _write, -+ }, -+}; -+EXPORT_SYMBOL(dump_table); -+ -+/** -+ * __addr_valid - check if @uaddr is valid. -+ * @uaddr: addr to judge. -+ * -+ * return index if @addr is valid, -ENXIO if not. -+ */ -+int __addr_valid(unsigned long uaddr) -+{ -+ int i; -+ -+ for (i = 0; i < ARRAY_SIZE(dump_table); i++) -+ if (uaddr >= dump_table[i].addr_start && -+ uaddr <= dump_table[i].addr_end) -+ return i; -+ return -ENXIO; -+} -+EXPORT_SYMBOL(__addr_valid); -+ -+/** -+ * __dump_regs_ex - dump a range of registers' value, copy to buf. -+ * @dump_addr: start and end address of registers. -+ * @buf: store the dump info. -+ * @buf_size: buf size -+ * -+ * return bytes written to buf, <=0 indicate err -+ */ -+ssize_t __dump_regs_ex(struct dump_addr *dump_addr, char *buf, ssize_t buf_size) -+{ -+ int index; -+ ssize_t cnt = 0; -+ unsigned long uaddr; -+ unsigned long remap_size; -+ const struct dump_struct *dump; -+ -+ /* Make the address 4-bytes aligned */ -+ dump_addr->uaddr_start &= (~0x3UL); -+ dump_addr->uaddr_end &= (~0x3UL); -+ remap_size = dump_addr->uaddr_end - dump_addr->uaddr_start + 4; -+ -+ index = __addr_valid(dump_addr->uaddr_start); -+ if ((index < 0) || (index != __addr_valid(dump_addr->uaddr_end)) || -+ (buf == NULL)) { -+ pr_err("%s(): Invalid para: index=%d, start=0x%lx, end=0x%lx, buf=0x%p\n", -+ __func__, index, dump_addr->uaddr_start, dump_addr->uaddr_end, buf); -+ return -EIO; -+ } -+ -+ dump = &dump_table[index]; -+ if (dump->remap) { -+ dump_addr->vaddr_start = dump->remap(dump_addr->uaddr_start, remap_size); -+ if (!dump_addr->vaddr_start) { -+ pr_err("%s(): remap failed\n", __func__); -+ return -EIO; -+ } -+ } else /* if (dump->remap = NULL), then treat uaddr as a virtual address */ -+ dump_addr->vaddr_start = (void __iomem *)dump_addr->uaddr_start; -+ -+ if (dump_addr->uaddr_start == dump_addr->uaddr_end) { -+ cnt = sprintf(buf, "0x%08x\n", dump->read(dump_addr->vaddr_start)); -+ goto out; -+ } -+ -+ for (uaddr = (dump_addr->uaddr_start & ~0x0F); uaddr <= dump_addr->uaddr_end; -+ uaddr += 4) { -+ if (!(uaddr & 0x0F)) -+ cnt += snprintf(buf + cnt, buf_size - cnt, -+ "\n" PRINT_ADDR_FMT ":", uaddr); -+ -+ if (cnt >= buf_size) { -+ pr_warn("Range too large, strings buffer overflow\n"); -+ cnt = buf_size; -+ goto out; -+ } -+ -+ if (uaddr < dump_addr->uaddr_start) /* Don't show unused uaddr */ -+ /* "0x12345678 ", 11 space */ -+ cnt += snprintf(buf + cnt, buf_size - cnt, " "); -+ else -+ cnt += snprintf(buf + cnt, buf_size - cnt, " 0x%08x", -+ dump->read(dump->get_vaddr(dump_addr, uaddr))); -+ } -+ cnt += snprintf(buf + cnt, buf_size - cnt, "\n"); -+ -+ pr_debug("%s(): start=0x%lx, end=0x%lx, return=%zd\n", __func__, -+ dump_addr->uaddr_start, dump_addr->uaddr_end, cnt); -+ -+out: -+ if (dump->unmap) -+ dump->unmap(dump_addr->vaddr_start); -+ -+ return cnt; -+} -+EXPORT_SYMBOL(__dump_regs_ex); -+ -+/** -+ * __parse_dump_str - parse the input string for dump attri. -+ * @buf: the input string, eg: "0x01c20000,0x01c20300". -+ * @size: buf size. -+ * @start: store the start reg's addr parsed from buf, eg 0x01c20000. -+ * @end: store the end reg's addr parsed from buf, eg 0x01c20300. -+ * -+ * return 0 if success, otherwise failed. -+ */ -+int __parse_dump_str(const char *buf, size_t size, -+ unsigned long *start, unsigned long *end) -+{ -+ char *ptr = NULL; -+ char *ptr2 = (char *)buf; -+ int ret = 0, times = 0; -+ -+ /* Support single address mode, some time it haven't ',' */ -+next: -+ /* -+ * Default dump only one register(*start =*end). -+ * If ptr is not NULL, we will cover the default value of end. -+ */ -+ if (times == 1) -+ *start = *end; -+ -+ if (!ptr2 || (ptr2 - buf) >= size) -+ goto out; -+ -+ ptr = ptr2; -+ ptr2 = strnchr(ptr, size - (ptr - buf), ','); -+ if (ptr2) { -+ *ptr2 = '\0'; -+ ptr2++; -+ } -+ -+ ptr = strim(ptr); -+ if (!strlen(ptr)) -+ goto next; -+ -+ ret = kstrtoul(ptr, 16, end); -+ if (!ret) { -+ times++; -+ goto next; -+ } else -+ pr_warn("String syntax errors: \"%s\"\n", ptr); -+ -+out: -+ return ret; -+} -+EXPORT_SYMBOL(__parse_dump_str); -+ -+/** -+ * __write_show - dump a register's value, copy to buf. -+ * @pgroup: the addresses to read. -+ * @buf: store the dump info. -+ * -+ * return bytes written to buf, <=0 indicate err. -+ */ -+ssize_t __write_show(struct write_group *pgroup, char *buf, ssize_t len) -+{ -+#define WR_DATA_FMT PRINT_ADDR_FMT" 0x%08x %s" -+ -+ int i = 0; -+ ssize_t cnt = 0; -+ unsigned long reg = 0; -+ u32 val; -+ u8 rval_buf[16]; -+ struct dump_addr dump_addr; -+ -+ if (!pgroup) { -+ pr_err("%s,%d err, pgroup is NULL!\n", __func__, __LINE__); -+ goto end; -+ } -+ -+ cnt += snprintf(buf, len - cnt, WR_PRINT_FMT); -+ if (cnt > len) { -+ cnt = -EINVAL; -+ goto end; -+ } -+ -+ for (i = 0; i < pgroup->num; i++) { -+ reg = pgroup->pitem[i].reg_addr; -+ val = pgroup->pitem[i].val; -+ dump_addr.uaddr_start = reg; -+ dump_addr.uaddr_end = reg; -+ if (__dump_regs_ex(&dump_addr, rval_buf, sizeof(rval_buf)) < 0) -+ return -EINVAL; -+ -+ cnt += -+ snprintf(buf + cnt, len - cnt, WR_DATA_FMT, reg, val, -+ rval_buf); -+ if (cnt > len) { -+ cnt = len; -+ goto end; -+ } -+ } -+ -+end: -+ return cnt; -+} -+EXPORT_SYMBOL(__write_show); -+ -+/** -+ * __parse_write_str - parse the input string for write attri. -+ * @str: string to be parsed, eg: "0x01c20818 0x55555555". -+ * @reg_addr: store the reg address. eg: 0x01c20818. -+ * @val: store the expect value. eg: 0x55555555. -+ * -+ * return 0 if success, otherwise failed. -+ */ -+static int __parse_write_str(char *str, unsigned long *reg_addr, u32 *val) -+{ -+ char *ptr = str; -+ char *tstr = NULL; -+ int ret = 0; -+ -+ /* -+ * Skip the leading whitespace, find the true split symbol. -+ * And it must be 'address value'. -+ */ -+ tstr = strim(str); -+ ptr = strchr(tstr, ' '); -+ if (!ptr) -+ return -EINVAL; -+ -+ /* -+ * Replaced split symbol with a %NUL-terminator temporary. -+ * Will be fixed at end. -+ */ -+ *ptr = '\0'; -+ ret = kstrtoul(tstr, 16, reg_addr); -+ if (ret) -+ goto out; -+ -+ ret = kstrtou32(skip_spaces(ptr + 1), 16, val); -+ -+out: -+ return ret; -+} -+ -+/** -+ * __write_item_init - init for write attri. parse input string, -+ * and construct write struct. -+ * @ppgroup: store the struct allocated, the struct contains items parsed from -+ * input buf. -+ * @buf: input string, eg: "0x01c20800 0x00000031,0x01c20818 0x55555555,...". -+ * @size: buf size. -+ * -+ * return 0 if success, otherwise failed. -+ */ -+int __write_item_init(struct write_group **ppgroup, const char *buf, -+ size_t size) -+{ -+ char *ptr, *ptr2; -+ unsigned long addr = 0; -+ u32 val; -+ struct write_group *pgroup; -+ -+ /* alloc item buffer */ -+ pgroup = kmalloc(sizeof(struct write_group), GFP_KERNEL); -+ if (!pgroup) -+ return -ENOMEM; -+ -+ pgroup->pitem = kmalloc(sizeof(struct write_item) * MAX_WRITE_ITEM, -+ GFP_KERNEL); -+ if (!pgroup->pitem) { -+ kfree(pgroup); -+ return -ENOMEM; -+ } -+ -+ pgroup->num = 0; -+ ptr = (char *)buf; -+ do { -+ ptr2 = strchr(ptr, ','); -+ if (ptr2) -+ *ptr2 = '\0'; -+ -+ if (!__parse_write_str(ptr, &addr, &val)) { -+ pgroup->pitem[pgroup->num].reg_addr = addr; -+ pgroup->pitem[pgroup->num].val = val; -+ pgroup->num++; -+ } else -+ pr_err("%s: Failed to parse string: %s\n", __func__, -+ ptr); -+ -+ if (!ptr2) -+ break; -+ -+ ptr = ptr2 + 1; -+ *ptr2 = ','; -+ -+ } while (pgroup->num <= MAX_WRITE_ITEM); -+ -+ /* free buffer if no valid item */ -+ if (pgroup->num == 0) { -+ kfree(pgroup->pitem); -+ kfree(pgroup); -+ return -EINVAL; -+ } -+ -+ *ppgroup = pgroup; -+ return 0; -+} -+EXPORT_SYMBOL(__write_item_init); -+ -+/** -+ * __write_item_deinit - reled_addrse memory that cred_addrted by -+ * __write_item_init. -+ * @pgroup: the write struct allocated in __write_item_init. -+ */ -+void __write_item_deinit(struct write_group *pgroup) -+{ -+ if (pgroup != NULL) { -+ if (pgroup->pitem != NULL) -+ kfree(pgroup->pitem); -+ kfree(pgroup); -+ } -+} -+EXPORT_SYMBOL(__write_item_deinit); -+ -+/** -+ * __compare_regs_ex - dump a range of registers' value, copy to buf. -+ * @pgroup: addresses of registers. -+ * @buf: store the dump info. -+ * -+ * return bytes written to buf, <= 0 indicate err. -+ */ -+ssize_t __compare_regs_ex(struct compare_group *pgroup, char *buf, -+ ssize_t len) -+{ -+#define CMP_DATAO_FMT PRINT_ADDR_FMT" 0x%08x 0x%08x 0x%08x OK\n" -+#define CMP_DATAE_FMT PRINT_ADDR_FMT" 0x%08x 0x%08x 0x%08x ERR\n" -+ -+ int i; -+ ssize_t cnt = 0; -+ unsigned long reg; -+ u32 expect, actual, mask; -+ u8 actualb[16]; -+ struct dump_addr dump_addr; -+ -+ if (!pgroup) { -+ pr_err("%s,%d err, pgroup is NULL!\n", __func__, __LINE__); -+ goto end; -+ } -+ -+ cnt += snprintf(buf, len - cnt, CMP_PRINT_FMT); -+ if (cnt > len) { -+ cnt = -EINVAL; -+ goto end; -+ } -+ -+ for (i = 0; i < pgroup->num; i++) { -+ reg = pgroup->pitem[i].reg_addr; -+ expect = pgroup->pitem[i].val_expect; -+ dump_addr.uaddr_start = reg; -+ dump_addr.uaddr_end = reg; -+ if (__dump_regs_ex(&dump_addr, actualb, sizeof(actualb)) < 0) -+ return -EINVAL; -+ -+ if (kstrtou32(actualb, 16, &actual)) -+ return -EINVAL; -+ -+ mask = pgroup->pitem[i].val_mask; -+ if ((actual & mask) == (expect & mask)) -+ cnt += -+ snprintf(buf + cnt, len - cnt, CMP_DATAO_FMT, reg, -+ expect, actual, mask); -+ else -+ cnt += -+ snprintf(buf + cnt, len - cnt, CMP_DATAE_FMT, reg, -+ expect, actual, mask); -+ if (cnt > len) { -+ cnt = -EINVAL; -+ goto end; -+ } -+ } -+ -+end: -+ return cnt; -+} -+EXPORT_SYMBOL(__compare_regs_ex); -+ -+/** -+ * __parse_compare_str - parse the input string for compare attri. -+ * @str: string to be parsed, eg: "0x01c20000 0x80000011 0x00000011". -+ * @reg_addr: store the reg address. eg: 0x01c20000. -+ * @val_expect: store the expect value. eg: 0x80000011. -+ * @val_mask: store the mask value. eg: 0x00000011. -+ * -+ * return 0 if success, otherwise failed. -+ */ -+static int __parse_compare_str(char *str, unsigned long *reg_addr, -+ u32 *val_expect, u32 *val_mask) -+{ -+ unsigned long result_addr[3] = { 0 }; -+ char *ptr = str; -+ char *ptr2 = NULL; -+ int i, ret = 0; -+ -+ for (i = 0; i < ARRAY_SIZE(result_addr); i++) { -+ ptr = skip_spaces(ptr); -+ ptr2 = strchr(ptr, ' '); -+ if (ptr2) -+ *ptr2 = '\0'; -+ -+ ret = kstrtoul(ptr, 16, &result_addr[i]); -+ if (!ptr2) -+ break; -+ -+ *ptr2 = ' '; -+ -+ if (ret) -+ break; -+ -+ ptr = ptr2 + 1; -+ } -+ -+ *reg_addr = result_addr[0]; -+ *val_expect = (u32) result_addr[1]; -+ *val_mask = (u32) result_addr[2]; -+ -+ return ret; -+} -+ -+/** -+ * __compare_item_init - init for compare attri. parse input string, -+ * and construct compare struct. -+ * @ppgroup: store the struct allocated, the struct contains items parsed from -+ * input buf. -+ * @buf: input string, -+ * eg: "0x01c20000 0x80000011 0x00000011,0x01c20004 0x0000c0a4 0x0000c0a0,...". -+ * @size: buf size. -+ * -+ * return 0 if success, otherwise failed. -+ */ -+int __compare_item_init(struct compare_group **ppgroup, -+ const char *buf, size_t size) -+{ -+ char *ptr, *ptr2; -+ unsigned long addr = 0; -+ u32 val_expect = 0, val_mask = 0; -+ struct compare_group *pgroup = NULL; -+ -+ /* alloc item buffer */ -+ pgroup = kmalloc(sizeof(struct compare_group), GFP_KERNEL); -+ if (pgroup == NULL) -+ return -EINVAL; -+ -+ pgroup->pitem = kmalloc(sizeof(struct compare_item) * MAX_COMPARE_ITEM, -+ GFP_KERNEL); -+ if (pgroup->pitem == NULL) { -+ kfree(pgroup); -+ return -EINVAL; -+ } -+ -+ pgroup->num = 0; -+ -+ /* get item from buf */ -+ ptr = (char *)buf; -+ do { -+ ptr2 = strchr(ptr, ','); -+ if (ptr2) -+ *ptr2 = '\0'; -+ -+ if (!__parse_compare_str(ptr, &addr, &val_expect, &val_mask)) { -+ pgroup->pitem[pgroup->num].reg_addr = addr; -+ pgroup->pitem[pgroup->num].val_expect = val_expect; -+ pgroup->pitem[pgroup->num].val_mask = val_mask; -+ pgroup->num++; -+ } else -+ pr_err("%s: Failed to parse string: %s\n", __func__, -+ ptr); -+ -+ if (!ptr2) -+ break; -+ -+ *ptr2 = ','; -+ ptr = ptr2 + 1; -+ -+ } while (pgroup->num <= MAX_COMPARE_ITEM); -+ -+ /* free buffer if no valid item */ -+ if (pgroup->num == 0) { -+ kfree(pgroup->pitem); -+ kfree(pgroup); -+ return -EINVAL; -+ } -+ *ppgroup = pgroup; -+ -+ return 0; -+} -+EXPORT_SYMBOL(__compare_item_init); -+ -+/** -+ * __compare_item_deinit - reled_addrse memory that cred_addrted by -+ * __compare_item_init. -+ * @pgroup: the compare struct allocated in __compare_item_init. -+ */ -+void __compare_item_deinit(struct compare_group *pgroup) -+{ -+ if (pgroup) { -+ kfree(pgroup->pitem); -+ kfree(pgroup); -+ } -+} -+EXPORT_SYMBOL(__compare_item_deinit); -+ -+/** -+ * dump_show - show func of dump attribute. -+ * @dev: class ptr. -+ * @attr: attribute ptr. -+ * @buf: the input buf which contain the start and end reg. -+ * eg: "0x01c20000,0x01c20100\n". -+ * -+ * return size written to the buf, otherwise failed. -+ */ -+static ssize_t -+dump_show(struct class *class, struct class_attribute *attr, char *buf) -+{ -+ return __dump_regs_ex(&dump_para, buf, PAGE_SIZE); -+} -+ -+static ssize_t -+dump_store(struct class *class, struct class_attribute *attr, -+ const char *buf, size_t count) -+{ -+ int index; -+ unsigned long start_reg = 0; -+ unsigned long end_reg = 0; -+ -+ if (__parse_dump_str(buf, count, &start_reg, &end_reg)) { -+ pr_err("%s,%d err, invalid para!\n", __func__, __LINE__); -+ goto err; -+ } -+ -+ index = __addr_valid(start_reg); -+ if ((index < 0) || (index != __addr_valid(end_reg))) { -+ pr_err("%s,%d err, invalid para!\n", __func__, __LINE__); -+ goto err; -+ } -+ -+ dump_para.uaddr_start = start_reg; -+ dump_para.uaddr_end = end_reg; -+ pr_debug("%s,%d, start_reg:" PRINT_ADDR_FMT ", end_reg:" PRINT_ADDR_FMT -+ "\n", __func__, __LINE__, start_reg, end_reg); -+ -+ return count; -+ -+err: -+ dump_para.uaddr_start = 0; -+ dump_para.uaddr_end = 0; -+ -+ return -EINVAL; -+} -+ -+static ssize_t -+write_show(struct class *class, struct class_attribute *attr, char *buf) -+{ -+ /* display write result */ -+ return __write_show(wt_group, buf, PAGE_SIZE); -+} -+ -+static ssize_t -+write_store(struct class *class, struct class_attribute *attr, -+ const char *buf, size_t count) -+{ -+ int i; -+ int index; -+ unsigned long reg; -+ u32 val; -+ const struct dump_struct *dump; -+ struct dump_addr dump_addr; -+ -+ /* free if not NULL */ -+ if (wt_group) { -+ __write_item_deinit(wt_group); -+ wt_group = NULL; -+ } -+ -+ /* parse input buf for items that will be dumped */ -+ if (__write_item_init(&wt_group, buf, count) < 0) -+ return -EINVAL; -+ -+ /** -+ * write reg -+ * it is better if the regs been remaped and unmaped only once, -+ * but we map everytime for the range between min and max address -+ * maybe too large. -+ */ -+ for (i = 0; i < wt_group->num; i++) { -+ reg = wt_group->pitem[i].reg_addr; -+ dump_addr.uaddr_start = reg; -+ val = wt_group->pitem[i].val; -+ index = __addr_valid(reg); -+ dump = &dump_table[index]; -+ if (dump->remap) -+ dump_addr.vaddr_start = dump->remap(reg, 4); -+ else -+ dump_addr.vaddr_start = (void __iomem *)reg; -+ dump->write(val, dump->get_vaddr(&dump_addr, reg)); -+ if (dump->unmap) -+ dump->unmap(dump_addr.vaddr_start); -+ } -+ -+ return count; -+} -+ -+static ssize_t -+compare_show(struct class *class, struct class_attribute *attr, char *buf) -+{ -+ /* dump the items */ -+ return __compare_regs_ex(cmp_group, buf, PAGE_SIZE); -+} -+ -+static ssize_t -+compare_store(struct class *class, struct class_attribute *attr, -+ const char *buf, size_t count) -+{ -+ /* free if struct not null */ -+ if (cmp_group) { -+ __compare_item_deinit(cmp_group); -+ cmp_group = NULL; -+ } -+ -+ /* parse input buf for items that will be dumped */ -+ if (__compare_item_init(&cmp_group, buf, count) < 0) -+ return -EINVAL; -+ -+ return count; -+} -+ -+static ssize_t -+rw_byte_show(struct class *class, struct class_attribute *attr, char *buf) -+{ -+ return sprintf(buf, "read/write mode: %u(%s)\n", rw_byte_mode, -+ rw_byte_mode ? "byte" : "word"); -+} -+ -+static ssize_t -+rw_byte_store(struct class *class, struct class_attribute *attr, -+ const char *buf, size_t count) -+{ -+ unsigned long value; -+ int ret; -+ -+ ret = kstrtoul(buf, 10, &value); -+ if (!ret && (value > 1)) { -+ pr_err("%s,%d err, invalid para!\n", __func__, __LINE__); -+ goto out; -+ } -+ rw_byte_mode = value; -+out: -+ return count; -+} -+ -+static ssize_t -+test_show(struct class *class, struct class_attribute *attr, char *buf) -+{ -+ return sprintf(buf, "addr:0x%08x\nsize:0x%08x\n", test_addr, test_size); -+} -+ -+static ssize_t -+help_show(struct class *class, struct class_attribute *attr, char *buf) -+{ -+ const char *info = -+ "dump single register: echo {addr} > dump; cat dump\n" -+ "dump multi registers: echo {start-addr},{end-addr} > dump; cat dump\n" -+ "write single register: echo {addr} {val} > write; cat write\n" -+ "write multi registers: echo {addr1} {val1},{addr2} {val2},... > write; cat write\n" -+ "compare single register: echo {addr} {expect-val} {mask} > compare; cat compare\n" -+ "compare multi registers: echo {addr1} {expect-val1} {mask1},{addr2} {expect-val2} {mask2},... > compare; cat compare\n" -+ "byte-access mode: echo 1 > rw_byte\n" -+ "word-access mode (default): echo 0 > rw_byte\n" -+ "show test address info: cat test\n"; -+ return sprintf(buf, info); -+} -+ -+static struct class_attribute dump_class_attrs[] = { -+ __ATTR(dump, S_IWUSR | S_IRUGO, dump_show, dump_store), -+ __ATTR(write, S_IWUSR | S_IRUGO, write_show, write_store), -+ __ATTR(compare, S_IWUSR | S_IRUGO, compare_show, compare_store), -+ __ATTR(rw_byte, S_IWUSR | S_IRUGO, rw_byte_show, rw_byte_store), -+ __ATTR(test, S_IRUGO, test_show, NULL), -+ __ATTR(help, S_IRUGO, help_show, NULL), -+}; -+ -+static const struct of_device_id sunxi_dump_reg_match[] = { -+ {.compatible = "allwinner,sunxi-dump-reg", }, -+ {} -+}; -+MODULE_DEVICE_TABLE(of, sunxi_dump_reg_match); -+ -+static int sunxi_dump_reg_probe(struct platform_device *pdev) -+{ -+ struct resource *res; -+ struct device *dev = &pdev->dev; -+ -+ int err; -+ int i; -+ -+ /* sys/class/sunxi_dump */ -+ dump_class = class_create(THIS_MODULE, "sunxi_dump"); -+ if (IS_ERR(dump_class)) { -+ pr_err("%s:%u class_create() failed\n", __func__, __LINE__); -+ return PTR_ERR(dump_class); -+ } -+ -+ /* sys/class/sunxi_dump/xxx */ -+ for (i = 0; i < ARRAY_SIZE(dump_class_attrs); i++) { -+ err = class_create_file(dump_class, &dump_class_attrs[i]); -+ if (err) { -+ pr_err("%s:%u class_create_file() failed. err=%d\n", __func__, __LINE__, err); -+ while (i--) { -+ class_remove_file(dump_class, &dump_class_attrs[i]); -+ } -+ class_destroy(dump_class); -+ dump_class = NULL; -+ return err; -+ } -+ } -+ -+ res = platform_get_resource(pdev, IORESOURCE_MEM, 0); -+ if (!res) { -+ dev_err(dev, "Fail to get IORESOURCE_MEM \n"); -+ goto error; -+ } -+ -+ test_addr = res->start; -+ test_size = resource_size(res); -+ -+ return 0; -+error: -+ dev_err(dev, "sunxi_dump_reg probe error\n"); -+ return -1; -+} -+ -+static int sunxi_dump_reg_remove(struct platform_device *pdev) -+{ -+ int i; -+ -+ for (i = 0; i < ARRAY_SIZE(dump_class_attrs); i++) { -+ class_remove_file(dump_class, &dump_class_attrs[i]); -+ } -+ -+ class_destroy(dump_class); -+ return 0; -+} -+ -+static struct platform_driver sunxi_dump_reg_driver = { -+ .probe = sunxi_dump_reg_probe, -+ .remove = sunxi_dump_reg_remove, -+ .driver = { -+ .name = "dump_reg", -+ .owner = THIS_MODULE, -+ .of_match_table = sunxi_dump_reg_match, -+ }, -+}; -+ -+module_platform_driver(sunxi_dump_reg_driver); -+ -+MODULE_ALIAS("dump reg driver"); -+MODULE_ALIAS("platform:dump reg"); -+MODULE_LICENSE("GPL v2"); -+MODULE_VERSION("1.0.3"); -+MODULE_AUTHOR("xiafeng "); -+MODULE_AUTHOR("Martin "); -+MODULE_AUTHOR("liuyu "); -+MODULE_DESCRIPTION("dump registers driver"); -diff --git a/drivers/char/dump_reg/dump_reg.h b/drivers/char/dump_reg/dump_reg.h -new file mode 100644 -index 000000000..85af5c96e ---- /dev/null -+++ b/drivers/char/dump_reg/dump_reg.h -@@ -0,0 +1,132 @@ -+/* -+ * dump registers head file -+ * -+ * (C) Copyright 2015-2018 -+ * Reuuimlla Technology Co., Ltd. -+ * Liugang -+ * Xiafeng -+ * Martin -+ * -+ * This program is free software; you can redistribute it and/or -+ * modify it under the terms of the GNU General Public License as -+ * published by the Free Software Foundation; either version 2 of -+ * the License, or (at your option) any later version. -+ * -+ */ -+#ifndef _DUMP_REG_H_ -+#define _DUMP_REG_H_ -+ -+/* BROM/SRAM/peripheral-registers space */ -+#define SUNXI_IO_PHYS_START (0x01000000UL) -+#define SUNXI_IO_PHYS_END (SUNXI_IO_PHYS_START + SZ_128M + SZ_16M -1) -+ -+/* DRAM space (Only map the first 1GB) */ -+#define SUNXI_PLAT_PHYS_START (0x40000000UL) -+#define SUNXI_PLAT_PHYS_END (SUNXI_PLAT_PHYS_START + SZ_1G - 1) -+ -+#if IS_ENABLED(CONFIG_ARM64) -+/* Virtual address space 1 */ -+#define SUNXI_IOMEM_START (0xffffff8000000000UL) -+#define SUNXI_IOMEM_END (SUNXI_IOMEM_START + SZ_2G) -+/* Virtual address space 2 */ -+#define SUNXI_MEM_PHYS_START (0xffffffc000000000UL) -+#define SUNXI_MEM_PHYS_END (SUNXI_MEM_PHYS_START + SZ_2G) -+/* Print format */ -+#define PRINT_ADDR_FMT "0x%016lx" -+#define CMP_PRINT_FMT "reg expect actual mask result\n" -+#define WR_PRINT_FMT "reg to_write after_write\n" -+#else -+/* Virtual address space 2 */ -+#define SUNXI_MEM_PHYS_START PAGE_OFFSET -+#define SUNXI_MEM_PHYS_END (SUNXI_MEM_PHYS_START + SZ_1G - 1) -+/* Print format */ -+#define PRINT_ADDR_FMT "0x%08lx" -+#define CMP_PRINT_FMT "reg expect actual mask result\n" -+#define WR_PRINT_FMT "reg to_write after_write\n" -+#endif -+ -+/* Item count */ -+#define MAX_COMPARE_ITEM 64 -+#define MAX_WRITE_ITEM 64 -+ -+struct dump_addr { -+ /* User specified address. Maybe physical or virtual address */ -+ unsigned long uaddr_start; -+ unsigned long uaddr_end; -+ /* Virtual address */ -+ void __iomem *vaddr_start; -+}; -+ -+struct dump_struct { -+ unsigned long addr_start; -+ unsigned long addr_end; -+ /* some registers' operate method maybe different */ -+ void __iomem *(*remap)(unsigned long paddr, size_t size); -+ void (*unmap)(void __iomem *vaddr); -+ void __iomem *(*get_vaddr)(struct dump_addr *dump_addr, unsigned long uaddr); -+ u32 (*read)(void __iomem *vaddr); -+ void (*write)(u32 val, void __iomem *vaddr); -+}; -+ -+/** -+ * compare_item - reg compare item struct -+ * @reg_addr: reg address. -+ * @val_expect: expected value, provided by caller. -+ * @val_mask: mask value, provided by caller. only mask bits will be compared. -+ */ -+struct compare_item { -+ unsigned long reg_addr; -+ u32 val_expect; -+ u32 val_mask; -+}; -+ -+/** -+ * compare_group - reg compare group struct -+ * @num: pitem element count. cannot exceed MAX_COMPARE_ITEM. -+ * @pitem: items that will be compared, provided by caller. -+ */ -+struct compare_group { -+ u32 num; -+ u32 reserve; -+ struct compare_item *pitem; -+}; -+ -+/** -+ * write_item - reg write item struct -+ * @reg_addr: reg address. -+ * @val: value to write -+ */ -+struct write_item { -+ unsigned long reg_addr; -+ u32 val; -+ u32 reserve; -+}; -+ -+/** -+ * write_group - reg write group struct -+ * @num: pitem element count. cannot exceed MAX_WRITE_ITEM. -+ * @pitem: items that will be write, provided by caller. -+ */ -+struct write_group { -+ u32 num; -+ u32 reserve; -+ struct write_item *pitem; -+}; -+ -+extern const struct dump_struct dump_table[4]; -+ -+int __addr_valid(unsigned long addr); -+ssize_t __dump_regs_ex(struct dump_addr *reg, char *buf, ssize_t len); -+int __parse_dump_str(const char *buf, size_t size, -+ unsigned long *start, unsigned long *end); -+ssize_t __write_show(struct write_group *pgroup, char *buf, ssize_t len); -+int __write_item_init(struct write_group **ppgroup, const char *buf, -+ size_t size); -+void __write_item_deinit(struct write_group *pgroup); -+ssize_t __compare_regs_ex(struct compare_group *pgroup, char *buf, -+ ssize_t len); -+int __compare_item_init(struct compare_group **ppgroup, -+ const char *buf, size_t size); -+void __compare_item_deinit(struct compare_group *pgroup); -+ -+#endif /* _DUMP_REG_H_ */ -diff --git a/drivers/char/dump_reg/dump_reg_misc.c b/drivers/char/dump_reg/dump_reg_misc.c -new file mode 100644 -index 000000000..238ddd147 ---- /dev/null -+++ b/drivers/char/dump_reg/dump_reg_misc.c -@@ -0,0 +1,209 @@ -+/* -+ * misc dump registers driver - -+ * User space application could use dump-reg functions through file operations -+ * (open/read/write/close) to the sysfs node created by this driver. -+ * -+ * Copyright(c) 2015-2018 Allwinnertech Co., Ltd. -+ * http://www.allwinnertech.com -+ * -+ * Author: Liugang -+ * Xiafeng -+ * Martin -+ * -+ * This program is free software; you can redistribute it and/or modify -+ * it under the terms of the GNU General Public License as published by -+ * the Free Software Foundation; either version 2 of the License, or -+ * (at your option) any later version. -+ */ -+ -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include "dump_reg.h" -+ -+/* for dump_reg misc driver */ -+static struct dump_addr misc_dump_para; -+static struct write_group *misc_wt_group; -+static struct compare_group *misc_cmp_group; -+ -+static ssize_t -+misc_dump_show(struct device *dev, struct device_attribute *attr, char *buf) -+{ -+ return __dump_regs_ex(&misc_dump_para, buf, PAGE_SIZE); -+} -+ -+static ssize_t -+misc_dump_store(struct device *dev, struct device_attribute *attr, -+ const char *buf, size_t size) -+{ -+ int index; -+ unsigned long start_reg = 0; -+ unsigned long end_reg = 0; -+ -+ if (__parse_dump_str(buf, size, &start_reg, &end_reg)) { -+ pr_err("%s,%d err, invalid para!\n", __func__, __LINE__); -+ goto err; -+ } -+ -+ index = __addr_valid(start_reg); -+ if ((index < 0) || (index != __addr_valid(end_reg))) { -+ pr_err("%s,%d err, invalid para!\n", __func__, __LINE__); -+ goto err; -+ } -+ -+ misc_dump_para.uaddr_start = start_reg; -+ misc_dump_para.uaddr_end = end_reg; -+ pr_debug("%s,%d, start_reg:" PRINT_ADDR_FMT ", end_reg:" PRINT_ADDR_FMT -+ "\n", __func__, __LINE__, start_reg, end_reg); -+ -+ return size; -+ -+err: -+ misc_dump_para.uaddr_start = 0; -+ misc_dump_para.uaddr_end = 0; -+ -+ return -EINVAL; -+} -+ -+static ssize_t -+misc_write_show(struct device *dev, struct device_attribute *attr, char *buf) -+{ -+ /* display write result */ -+ return __write_show(misc_wt_group, buf, PAGE_SIZE); -+} -+ -+static ssize_t -+misc_write_store(struct device *dev, struct device_attribute *attr, -+ const char *buf, size_t size) -+{ -+ int i; -+ int index; -+ unsigned long reg; -+ u32 val; -+ const struct dump_struct *dump; -+ struct dump_addr dump_addr; -+ -+ /* free if not NULL */ -+ if (misc_wt_group) { -+ __write_item_deinit(misc_wt_group); -+ misc_wt_group = NULL; -+ } -+ -+ /* parse input buf for items that will be dumped */ -+ if (__write_item_init(&misc_wt_group, buf, size) < 0) -+ return -EINVAL; -+ -+ /** -+ * write reg -+ * it is better if the regs been remaped and unmaped only once, -+ * but we map everytime for the range between min and max address -+ * maybe too large. -+ */ -+ for (i = 0; i < misc_wt_group->num; i++) { -+ reg = misc_wt_group->pitem[i].reg_addr; -+ dump_addr.uaddr_start = reg; -+ val = misc_wt_group->pitem[i].val; -+ index = __addr_valid(reg); -+ dump = &dump_table[index]; -+ if (dump->remap) -+ dump_addr.vaddr_start = dump->remap(reg, 4); -+ else -+ dump_addr.vaddr_start = (void __iomem *)reg; -+ dump->write(val, dump->get_vaddr(&dump_addr, reg)); -+ if (dump->unmap) -+ dump->unmap(dump_addr.vaddr_start); -+ } -+ -+ return size; -+} -+ -+static ssize_t -+misc_compare_show(struct device *dev, struct device_attribute *attr, char *buf) -+{ -+ /* dump the items */ -+ return __compare_regs_ex(misc_cmp_group, buf, PAGE_SIZE); -+} -+ -+static ssize_t -+misc_compare_store(struct device *dev, struct device_attribute *attr, -+ const char *buf, size_t size) -+{ -+ /* free if struct not null */ -+ if (misc_cmp_group) { -+ __compare_item_deinit(misc_cmp_group); -+ misc_cmp_group = NULL; -+ } -+ -+ /* parse input buf for items that will be dumped */ -+ if (__compare_item_init(&misc_cmp_group, buf, size) < 0) -+ return -EINVAL; -+ -+ return size; -+} -+ -+static DEVICE_ATTR(dump, S_IWUSR | S_IRUGO, misc_dump_show, misc_dump_store); -+static DEVICE_ATTR(write, S_IWUSR | S_IRUGO, misc_write_show, misc_write_store); -+static DEVICE_ATTR(compare, S_IWUSR | S_IRUGO, misc_compare_show, -+ misc_compare_store); -+ -+static struct attribute *misc_attributes[] = { /* files under '/sys/devices/virtual/misc/sunxi-reg/rw/' */ -+ &dev_attr_dump.attr, -+ &dev_attr_write.attr, -+ &dev_attr_compare.attr, -+ NULL, -+}; -+ -+static struct attribute_group misc_attribute_group = { -+ .name = "rw", /* directory: '/sys/devices/virtual/misc/sunxi-reg/rw/' */ -+ .attrs = misc_attributes, -+}; -+ -+static struct miscdevice dump_reg_dev = { -+ .minor = MISC_DYNAMIC_MINOR, -+ .name = "sunxi-reg", /* device node: '/dev/sunxi-reg' */ -+}; -+ -+static int __init misc_dump_reg_init(void) -+{ -+ int err; -+ -+ pr_info("misc dump reg init\n"); -+ err = misc_register(&dump_reg_dev); -+ if (err) { -+ pr_err("dump register driver as misc device error!\n"); -+ goto exit; -+ } -+ -+ err = sysfs_create_group(&dump_reg_dev.this_device->kobj, -+ &misc_attribute_group); -+ if (err) -+ pr_err("dump register sysfs create group failed!\n"); -+ -+exit: -+ return err; -+} -+ -+static void __exit misc_dump_reg_exit(void) -+{ -+ pr_info("misc dump reg exit\n"); -+ -+ sysfs_remove_group(&(dump_reg_dev.this_device->kobj), -+ &misc_attribute_group); -+ misc_deregister(&dump_reg_dev); -+} -+ -+module_init(misc_dump_reg_init); -+module_exit(misc_dump_reg_exit); -+ -+MODULE_ALIAS("misc dump reg driver"); -+MODULE_LICENSE("GPL v2"); -+MODULE_VERSION("1.0.1"); -+MODULE_AUTHOR("xiafeng "); -+MODULE_DESCRIPTION("misc dump registers driver"); -diff --git a/drivers/char/sunxi-sysinfo/Kconfig b/drivers/char/sunxi-sysinfo/Kconfig -new file mode 100644 -index 000000000..9b6e2f06d ---- /dev/null -+++ b/drivers/char/sunxi-sysinfo/Kconfig -@@ -0,0 +1,10 @@ -+# -+# sunxi system information driver. -+# -+ -+config SUNXI_SYS_INFO -+ tristate "sunxi system info driver" -+ default y -+ help -+ This driver is used for query system information. -+ If you don't know whether need it, please select y. -diff --git a/drivers/char/sunxi-sysinfo/Makefile b/drivers/char/sunxi-sysinfo/Makefile -new file mode 100644 -index 000000000..188696592 ---- /dev/null -+++ b/drivers/char/sunxi-sysinfo/Makefile -@@ -0,0 +1,5 @@ -+# -+# Makefile for sunxi system information driver -+# -+ -+obj-$(CONFIG_SUNXI_SYS_INFO) += sunxi-sysinfo.o -diff --git a/drivers/char/sunxi-sysinfo/sunxi-sysinfo.c b/drivers/char/sunxi-sysinfo/sunxi-sysinfo.c -new file mode 100644 -index 000000000..349b92bf1 ---- /dev/null -+++ b/drivers/char/sunxi-sysinfo/sunxi-sysinfo.c -@@ -0,0 +1,178 @@ -+/* -+ * Based on drivers/char/sunxi-sysinfo/sunxi-sysinfo.c -+ * -+ * Copyright (C) 2015 Allwinnertech Ltd. -+ * -+ * This program is free software; you can redistribute it and/or modify -+ * it under the terms of the GNU General Public License version 2 as -+ * published by the Free Software Foundation. -+ * -+ * This program is distributed in the hope that it will be useful, -+ * but WITHOUT ANY WARRANTY; without even the implied warranty of -+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+ * GNU General Public License for more details. -+ * -+ * You should have received a copy of the GNU General Public License -+ * along with this program. If not, see . -+ */ -+ -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+ -+extern int sunxi_get_soc_chipid(unsigned char *chipid); -+extern int sunxi_get_serial(unsigned char *serial); -+ -+struct sunxi_info_quirks { -+ char * platform_name; -+}; -+ -+static const struct sunxi_info_quirks sun5i_h6_info_quirks = { -+ .platform_name = "sun50i-h6", -+}; -+ -+static const struct sunxi_info_quirks sun5i_h616_info_quirks = { -+ .platform_name = "sun50i-h616", -+}; -+ -+struct sunxi_info_quirks *quirks; -+ -+static int soc_info_open(struct inode *inode, struct file *file) -+{ -+ return 0; -+} -+ -+static int soc_info_release(struct inode *inode, struct file *file) -+{ -+ return 0; -+} -+ -+static const struct file_operations soc_info_ops = { -+ .owner = THIS_MODULE, -+ .open = soc_info_open, -+ .release = soc_info_release, -+}; -+ -+struct miscdevice soc_info_device = { -+ .minor = MISC_DYNAMIC_MINOR, -+ .name = "sunxi_soc_info", -+ .fops = &soc_info_ops, -+}; -+ -+static ssize_t sys_info_show(struct class *class, -+ struct class_attribute *attr, char *buf) -+{ -+ int i; -+ int databuf[4] = {0}; -+ char tmpbuf[129] = {0}; -+ size_t size = 0; -+ -+ /* platform */ -+ size += sprintf(buf + size, "sunxi_platform : %s\n", quirks->platform_name); -+ -+ /* chipid */ -+ sunxi_get_soc_chipid((u8 *)databuf); -+ -+ for (i = 0; i < 4; i++) -+ sprintf(tmpbuf + i*8, "%08x", databuf[i]); -+ tmpbuf[128] = 0; -+ size += sprintf(buf + size, "sunxi_chipid : %s\n", tmpbuf); -+ -+ /* serial */ -+ sunxi_get_serial((u8 *)databuf); -+ for (i = 0; i < 4; i++) -+ sprintf(tmpbuf + i*8, "%08x", databuf[i]); -+ tmpbuf[128] = 0; -+ size += sprintf(buf + size, "sunxi_serial : %s\n", tmpbuf); -+ -+ return size; -+} -+ -+static struct class_attribute info_class_attrs[] = { -+ __ATTR(sys_info, 0644, sys_info_show, NULL), -+}; -+ -+static struct class info_class = { -+ .name = "sunxi_info", -+ .owner = THIS_MODULE, -+}; -+ -+static const struct of_device_id sunxi_info_match[] = { -+ { -+ .compatible = "allwinner,sun50i-h6-sys-info", -+ .data = &sun5i_h6_info_quirks, -+ }, -+ { -+ .compatible = "allwinner,sun50i-h616-sys-info", -+ .data = &sun5i_h616_info_quirks, -+ }, -+ {} -+}; -+ -+static int sunxi_info_probe(struct platform_device *pdev) -+{ -+ int i, ret = 0; -+ -+ quirks = of_device_get_match_data(&pdev->dev); -+ if (quirks == NULL) { -+ dev_err(&pdev->dev, "Failed to determine the quirks to use\n"); -+ return -ENODEV; -+ } -+ -+ ret = class_register(&info_class); -+ if (ret != 0) -+ return ret; -+ -+ /* need some class specific sysfs attributes */ -+ for (i = 0; i < ARRAY_SIZE(info_class_attrs); i++) { -+ ret = class_create_file(&info_class, &info_class_attrs[i]); -+ if (ret) -+ goto out_class_create_file_failed; -+ } -+ -+ ret = misc_register(&soc_info_device); -+ if (ret != 0) { -+ pr_err("%s: misc_register() failed!(%d)\n", __func__, ret); -+ class_unregister(&info_class); -+ return ret; -+ } -+ -+ return ret; -+ -+out_class_create_file_failed: -+ class_unregister(&info_class); -+ -+ return ret; -+} -+ -+static int sunxi_info_remove(struct platform_device *pdev) -+{ -+ misc_deregister(&soc_info_device); -+ class_unregister(&info_class); -+ -+ return 0; -+} -+ -+static struct platform_driver sunxi_info_driver = { -+ .probe = sunxi_info_probe, -+ .remove = sunxi_info_remove, -+ .driver = { -+ .name = "sunxi_info", -+ .owner = THIS_MODULE, -+ .of_match_table = sunxi_info_match, -+ }, -+}; -+module_platform_driver(sunxi_info_driver); -+ -+MODULE_LICENSE("GPL v2"); -+MODULE_AUTHOR("xiafeng"); -+MODULE_DESCRIPTION("sunxi sys info."); --- -2.25.1 - diff --git a/recipes-kernel/linux/linux-mainline-6.1.9/orange-pi-zero2/0009-dts-add-addr_mgt-device-tree-node.patch b/recipes-kernel/linux/linux-mainline-6.1.9/orange-pi-zero2/0009-dts-add-addr_mgt-device-tree-node.patch deleted file mode 100644 index 9d203f9..0000000 --- a/recipes-kernel/linux/linux-mainline-6.1.9/orange-pi-zero2/0009-dts-add-addr_mgt-device-tree-node.patch +++ /dev/null @@ -1,32 +0,0 @@ -From 706dc6ed092e4a1b9d84893cb4186fbd354bb1c8 Mon Sep 17 00:00:00 2001 -From: pbiel -Date: Thu, 26 Jan 2023 09:51:22 +0100 -Subject: [PATCH] Add addr_mgt device tree node - ---- - arch/arm64/boot/dts/allwinner/sun50i-h616.dtsi | 10 ++++++++++ - 1 file changed, 10 insertions(+) - -diff --git a/arch/arm64/boot/dts/allwinner/sun50i-h616.dtsi b/arch/arm64/boot/dts/allwinner/sun50i-h616.dtsi -index d0b95d43a..15f45a3f9 100644 ---- a/arch/arm64/boot/dts/allwinner/sun50i-h616.dtsi -+++ b/arch/arm64/boot/dts/allwinner/sun50i-h616.dtsi -@@ -591,5 +591,15 @@ sunxi-info { - compatible = "allwinner,sun50i-h616-sys-info"; - status = "okay"; - }; -+ -+ addr_mgt { -+ compatible = "allwinner,sunxi-addr_mgt"; -+ type_addr_wifi = <0x00>; -+ type_addr_bt = <0x00>; -+ type_addr_eth = <0x00>; -+ status = "okay"; -+ linux,phandle = <0x179>; -+ phandle = <0x179>; -+ }; - }; - }; --- -2.34.1 - diff --git a/recipes-kernel/linux/linux-mainline-6.1.9/orange-pi-zero2/0011-dts-add-usb-to-h616.patch b/recipes-kernel/linux/linux-mainline-6.1.9/orange-pi-zero2/0011-dts-add-usb-to-h616.patch deleted file mode 100644 index fae929e..0000000 --- a/recipes-kernel/linux/linux-mainline-6.1.9/orange-pi-zero2/0011-dts-add-usb-to-h616.patch +++ /dev/null @@ -1,184 +0,0 @@ -From ab35c98369d50766eb20920a93a2dca927935481 Mon Sep 17 00:00:00 2001 -From: OpenEmbedded -Date: Fri, 19 May 2023 23:01:14 +0200 -Subject: [PATCH] Add usb support to h616. This is not needed from kernel 6.2 - -Signed-off-by: OpenEmbedded ---- - .../arm64/boot/dts/allwinner/sun50i-h616.dtsi | 160 ++++++++++++++++++ - 1 file changed, 160 insertions(+) - -diff --git a/arch/arm64/boot/dts/allwinner/sun50i-h616.dtsi b/arch/arm64/boot/dts/allwinner/sun50i-h616.dtsi -index 04cdec7e2..a1d872e74 100644 ---- a/arch/arm64/boot/dts/allwinner/sun50i-h616.dtsi -+++ b/arch/arm64/boot/dts/allwinner/sun50i-h616.dtsi -@@ -504,6 +504,166 @@ mdio0: mdio { - }; - }; - -+ usbotg: usb@5100000 { -+ compatible = "allwinner,sun50i-h616-musb", -+ "allwinner,sun8i-h3-musb"; -+ reg = <0x05100000 0x0400>; -+ clocks = <&ccu CLK_BUS_OTG>; -+ resets = <&ccu RST_BUS_OTG>; -+ interrupts = ; -+ interrupt-names = "mc"; -+ phys = <&usbphy 0>; -+ phy-names = "usb"; -+ extcon = <&usbphy 0>; -+ status = "disabled"; -+ }; -+ -+ usbphy: phy@5100400 { -+ compatible = "allwinner,sun50i-h616-usb-phy"; -+ reg = <0x05100400 0x24>, -+ <0x05101800 0x14>, -+ <0x05200800 0x14>, -+ <0x05310800 0x14>, -+ <0x05311800 0x14>; -+ reg-names = "phy_ctrl", -+ "pmu0", -+ "pmu1", -+ "pmu2", -+ "pmu3"; -+ clocks = <&ccu CLK_USB_PHY0>, -+ <&ccu CLK_USB_PHY1>, -+ <&ccu CLK_USB_PHY2>, -+ <&ccu CLK_USB_PHY3>, -+ <&ccu CLK_BUS_EHCI2>; -+ clock-names = "usb0_phy", -+ "usb1_phy", -+ "usb2_phy", -+ "usb3_phy", -+ "pmu2_clk"; -+ resets = <&ccu RST_USB_PHY0>, -+ <&ccu RST_USB_PHY1>, -+ <&ccu RST_USB_PHY2>, -+ <&ccu RST_USB_PHY3>; -+ reset-names = "usb0_reset", -+ "usb1_reset", -+ "usb2_reset", -+ "usb3_reset"; -+ status = "disabled"; -+ #phy-cells = <1>; -+ }; -+ -+ ehci0: usb@5101000 { -+ compatible = "allwinner,sun50i-h616-ehci", -+ "generic-ehci"; -+ reg = <0x05101000 0x100>; -+ interrupts = ; -+ clocks = <&ccu CLK_BUS_OHCI0>, -+ <&ccu CLK_BUS_EHCI0>, -+ <&ccu CLK_USB_OHCI0>; -+ resets = <&ccu RST_BUS_OHCI0>, -+ <&ccu RST_BUS_EHCI0>; -+ phys = <&usbphy 0>; -+ phy-names = "usb"; -+ status = "disabled"; -+ }; -+ -+ ohci0: usb@5101400 { -+ compatible = "allwinner,sun50i-h616-ohci", -+ "generic-ohci"; -+ reg = <0x05101400 0x100>; -+ interrupts = ; -+ clocks = <&ccu CLK_BUS_OHCI0>, -+ <&ccu CLK_USB_OHCI0>; -+ resets = <&ccu RST_BUS_OHCI0>; -+ phys = <&usbphy 0>; -+ phy-names = "usb"; -+ status = "disabled"; -+ }; -+ -+ ehci1: usb@5200000 { -+ compatible = "allwinner,sun50i-h616-ehci", -+ "generic-ehci"; -+ reg = <0x05200000 0x100>; -+ interrupts = ; -+ clocks = <&ccu CLK_BUS_OHCI1>, -+ <&ccu CLK_BUS_EHCI1>, -+ <&ccu CLK_USB_OHCI1>; -+ resets = <&ccu RST_BUS_OHCI1>, -+ <&ccu RST_BUS_EHCI1>; -+ phys = <&usbphy 1>; -+ phy-names = "usb"; -+ status = "disabled"; -+ }; -+ -+ ohci1: usb@5200400 { -+ compatible = "allwinner,sun50i-h616-ohci", -+ "generic-ohci"; -+ reg = <0x05200400 0x100>; -+ interrupts = ; -+ clocks = <&ccu CLK_BUS_OHCI1>, -+ <&ccu CLK_USB_OHCI1>; -+ resets = <&ccu RST_BUS_OHCI1>; -+ phys = <&usbphy 1>; -+ phy-names = "usb"; -+ status = "disabled"; -+ }; -+ -+ ehci2: usb@5310000 { -+ compatible = "allwinner,sun50i-h616-ehci", -+ "generic-ehci"; -+ reg = <0x05310000 0x100>; -+ interrupts = ; -+ clocks = <&ccu CLK_BUS_OHCI2>, -+ <&ccu CLK_BUS_EHCI2>, -+ <&ccu CLK_USB_OHCI2>; -+ resets = <&ccu RST_BUS_OHCI2>, -+ <&ccu RST_BUS_EHCI2>; -+ phys = <&usbphy 2>; -+ phy-names = "usb"; -+ status = "disabled"; -+ }; -+ -+ ohci2: usb@5310400 { -+ compatible = "allwinner,sun50i-h616-ohci", -+ "generic-ohci"; -+ reg = <0x05310400 0x100>; -+ interrupts = ; -+ clocks = <&ccu CLK_BUS_OHCI2>, -+ <&ccu CLK_USB_OHCI2>; -+ resets = <&ccu RST_BUS_OHCI2>; -+ phys = <&usbphy 2>; -+ phy-names = "usb"; -+ status = "disabled"; -+ }; -+ -+ ehci3: usb@5311000 { -+ compatible = "allwinner,sun50i-h616-ehci", -+ "generic-ehci"; -+ reg = <0x05311000 0x100>; -+ interrupts = ; -+ clocks = <&ccu CLK_BUS_OHCI3>, -+ <&ccu CLK_BUS_EHCI3>, -+ <&ccu CLK_USB_OHCI3>; -+ resets = <&ccu RST_BUS_OHCI3>, -+ <&ccu RST_BUS_EHCI3>; -+ phys = <&usbphy 3>; -+ phy-names = "usb"; -+ status = "disabled"; -+ }; -+ -+ ohci3: usb@5311400 { -+ compatible = "allwinner,sun50i-h616-ohci", -+ "generic-ohci"; -+ reg = <0x05311400 0x100>; -+ interrupts = ; -+ clocks = <&ccu CLK_BUS_OHCI3>, -+ <&ccu CLK_USB_OHCI3>; -+ resets = <&ccu RST_BUS_OHCI3>; -+ phys = <&usbphy 3>; -+ phy-names = "usb"; -+ status = "disabled"; -+ }; -+ - rtc: rtc@7000000 { - compatible = "allwinner,sun50i-h616-rtc"; - reg = <0x07000000 0x400>; --- -2.40.1 - diff --git a/recipes-kernel/linux/linux-mainline-6.1.9/orange-pi-zero2/0012-dts-orange-pi-zero2.patch b/recipes-kernel/linux/linux-mainline-6.1.9/orange-pi-zero2/0012-dts-orange-pi-zero2.patch deleted file mode 100644 index 8854669..0000000 --- a/recipes-kernel/linux/linux-mainline-6.1.9/orange-pi-zero2/0012-dts-orange-pi-zero2.patch +++ /dev/null @@ -1,84 +0,0 @@ -From 038441bbe0f6dab3e701061c514a8d776dbe6523 Mon Sep 17 00:00:00 2001 -From: OpenEmbedded -Date: Sat, 20 May 2023 14:07:47 +0200 -Subject: [PATCH] DTS orange pi zero2 enable usb - -Signed-off-by: OpenEmbedded ---- - .../allwinner/sun50i-h616-orangepi-zero2.dts | 42 +++++++++++++++++++ - 1 file changed, 42 insertions(+) - -diff --git a/arch/arm64/boot/dts/allwinner/sun50i-h616-orangepi-zero2.dts b/arch/arm64/boot/dts/allwinner/sun50i-h616-orangepi-zero2.dts -index 88234a139..3b836296b 100644 ---- a/arch/arm64/boot/dts/allwinner/sun50i-h616-orangepi-zero2.dts -+++ b/arch/arm64/boot/dts/allwinner/sun50i-h616-orangepi-zero2.dts -@@ -50,6 +50,16 @@ reg_vcc5v: vcc5v { - regulator-always-on; - }; - -+ reg_usb1_vbus: regulator-usb1-vbus { -+ compatible = "regulator-fixed"; -+ regulator-name = "usb1-vbus"; -+ regulator-min-microvolt = <5000000>; -+ regulator-max-microvolt = <5000000>; -+ vin-supply = <®_vcc5v>; -+ enable-active-high; -+ gpio = <&pio 2 16 GPIO_ACTIVE_HIGH>; /* PC16 */ -+ }; -+ - reg_vcc33_wifi: vcc33-wifi { - /* Always on 3.3V regulator for WiFi and BT */ - compatible = "regulator-fixed"; -@@ -79,6 +89,12 @@ wifi_pwrseq: wifi-pwrseq { - }; - }; - -+&ehci1 { -+ status = "okay"; -+}; -+ -+/* USB 2 & 3 are on headers only. */ -+ - &mmc1 { - vmmc-supply = <®_vcc33_wifi>; - vqmmc-supply = <®_vcc_wifi_io>; -@@ -123,6 +139,11 @@ &mmc0 { - status = "okay"; - }; - -+ -+&ohci1 { -+ status = "okay"; -+}; -+ - &r_rsb { - status = "okay"; - -@@ -258,3 +279,24 @@ &uart0 { - pinctrl-0 = <&uart0_ph_pins>; - status = "okay"; - }; -+ -+&usbotg { -+ /* -+ * PHY0 pins are connected to a USB-C socket, but a role switch -+ * is not implemented: both CC pins are pulled to GND. -+ * The VBUS pins power the device, so a fixed peripheral mode -+ * is the best choice. -+ * The board can be powered via GPIOs, in this case port0 *can* -+ * act as a host (with a cable/adapter ignoring CC), as VBUS is -+ * then provided by the GPIOs. Any user of this setup would -+ * need to adjust the DT accordingly: dr_mode set to "host", -+ * enabling OHCI0 and EHCI0. -+ */ -+ dr_mode = "peripheral"; -+ status = "okay"; -+}; -+ -+&usbphy { -+ usb1_vbus-supply = <®_usb1_vbus>; -+ status = "okay"; -+}; --- -2.40.1 - diff --git a/recipes-kernel/linux/linux-mainline-6.1.9/orange-pi-zero2/defconfig b/recipes-kernel/linux/linux-mainline-6.1.9/orange-pi-zero2/defconfig deleted file mode 100644 index 7d90097..0000000 --- a/recipes-kernel/linux/linux-mainline-6.1.9/orange-pi-zero2/defconfig +++ /dev/null @@ -1,8185 +0,0 @@ -# -# Automatically generated file; DO NOT EDIT. -# Linux/arm64 6.1.9 Kernel Configuration -# -CONFIG_CC_VERSION_TEXT="aarch64-poky-linux-gcc (GCC) 11.3.0" -CONFIG_CC_IS_GCC=y -CONFIG_GCC_VERSION=110300 -CONFIG_CLANG_VERSION=0 -CONFIG_AS_IS_GNU=y -CONFIG_AS_VERSION=20244508 -CONFIG_LD_IS_BFD=y -CONFIG_LD_VERSION=20244508 -CONFIG_LLD_VERSION=0 -CONFIG_CC_HAS_ASM_GOTO_OUTPUT=y -CONFIG_CC_HAS_ASM_GOTO_TIED_OUTPUT=y -CONFIG_CC_HAS_ASM_INLINE=y -CONFIG_CC_HAS_NO_PROFILE_FN_ATTR=y -CONFIG_PAHOLE_VERSION=0 -CONFIG_IRQ_WORK=y -CONFIG_BUILDTIME_TABLE_SORT=y -CONFIG_THREAD_INFO_IN_TASK=y - -# -# General setup -# -CONFIG_INIT_ENV_ARG_LIMIT=32 -# CONFIG_COMPILE_TEST is not set -# CONFIG_WERROR is not set -CONFIG_LOCALVERSION="" -# CONFIG_LOCALVERSION_AUTO is not set -CONFIG_BUILD_SALT="" -CONFIG_DEFAULT_INIT="" -CONFIG_DEFAULT_HOSTNAME="(none)" -CONFIG_SYSVIPC=y -CONFIG_SYSVIPC_SYSCTL=y -CONFIG_SYSVIPC_COMPAT=y -CONFIG_POSIX_MQUEUE=y -CONFIG_POSIX_MQUEUE_SYSCTL=y -# CONFIG_WATCH_QUEUE is not set -CONFIG_CROSS_MEMORY_ATTACH=y -# CONFIG_USELIB is not set -CONFIG_AUDIT=y -CONFIG_HAVE_ARCH_AUDITSYSCALL=y -CONFIG_AUDITSYSCALL=y - -# -# IRQ subsystem -# -CONFIG_GENERIC_IRQ_PROBE=y -CONFIG_GENERIC_IRQ_SHOW=y -CONFIG_GENERIC_IRQ_SHOW_LEVEL=y -CONFIG_GENERIC_IRQ_EFFECTIVE_AFF_MASK=y -CONFIG_GENERIC_IRQ_MIGRATION=y -CONFIG_HARDIRQS_SW_RESEND=y -CONFIG_GENERIC_IRQ_CHIP=y -CONFIG_IRQ_DOMAIN=y -CONFIG_IRQ_DOMAIN_HIERARCHY=y -CONFIG_IRQ_FASTEOI_HIERARCHY_HANDLERS=y -CONFIG_GENERIC_IRQ_IPI=y -CONFIG_GENERIC_MSI_IRQ=y -CONFIG_GENERIC_MSI_IRQ_DOMAIN=y -CONFIG_IRQ_MSI_IOMMU=y -CONFIG_IRQ_FORCED_THREADING=y -CONFIG_SPARSE_IRQ=y -# CONFIG_GENERIC_IRQ_DEBUGFS is not set -# end of IRQ subsystem - -CONFIG_GENERIC_TIME_VSYSCALL=y -CONFIG_GENERIC_CLOCKEVENTS=y -CONFIG_ARCH_HAS_TICK_BROADCAST=y -CONFIG_GENERIC_CLOCKEVENTS_BROADCAST=y -CONFIG_HAVE_POSIX_CPU_TIMERS_TASK_WORK=y -CONFIG_POSIX_CPU_TIMERS_TASK_WORK=y -CONFIG_CONTEXT_TRACKING=y -CONFIG_CONTEXT_TRACKING_IDLE=y - -# -# Timers subsystem -# -CONFIG_TICK_ONESHOT=y -CONFIG_NO_HZ_COMMON=y -# CONFIG_HZ_PERIODIC is not set -CONFIG_NO_HZ_IDLE=y -# CONFIG_NO_HZ_FULL is not set -# CONFIG_NO_HZ is not set -CONFIG_HIGH_RES_TIMERS=y -# end of Timers subsystem - -CONFIG_BPF=y -CONFIG_HAVE_EBPF_JIT=y -CONFIG_ARCH_WANT_DEFAULT_BPF_JIT=y - -# -# BPF subsystem -# -# CONFIG_BPF_SYSCALL is not set -CONFIG_BPF_JIT=y -CONFIG_BPF_JIT_DEFAULT_ON=y -# end of BPF subsystem - -CONFIG_PREEMPT_BUILD=y -# CONFIG_PREEMPT_NONE is not set -# CONFIG_PREEMPT_VOLUNTARY is not set -CONFIG_PREEMPT=y -CONFIG_PREEMPT_COUNT=y -CONFIG_PREEMPTION=y -# CONFIG_PREEMPT_DYNAMIC is not set - -# -# CPU/Task time and stats accounting -# -CONFIG_TICK_CPU_ACCOUNTING=y -# CONFIG_VIRT_CPU_ACCOUNTING_GEN is not set -CONFIG_IRQ_TIME_ACCOUNTING=y -CONFIG_HAVE_SCHED_AVG_IRQ=y -CONFIG_SCHED_THERMAL_PRESSURE=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 is not set -# end of CPU/Task time and stats accounting - -CONFIG_CPU_ISOLATION=y - -# -# RCU Subsystem -# -CONFIG_TREE_RCU=y -CONFIG_PREEMPT_RCU=y -# CONFIG_RCU_EXPERT is not set -CONFIG_SRCU=y -CONFIG_TREE_SRCU=y -CONFIG_RCU_STALL_COMMON=y -CONFIG_RCU_NEED_SEGCBLIST=y -# end of RCU Subsystem - -CONFIG_IKCONFIG=y -CONFIG_IKCONFIG_PROC=y -# CONFIG_IKHEADERS is not set -CONFIG_LOG_BUF_SHIFT=17 -CONFIG_LOG_CPU_MAX_BUF_SHIFT=12 -CONFIG_PRINTK_SAFE_LOG_BUF_SHIFT=13 -# CONFIG_PRINTK_INDEX is not set -CONFIG_GENERIC_SCHED_CLOCK=y - -# -# Scheduler features -# -# CONFIG_UCLAMP_TASK is not set -# end of Scheduler features - -CONFIG_ARCH_SUPPORTS_NUMA_BALANCING=y -CONFIG_CC_HAS_INT128=y -CONFIG_CC_IMPLICIT_FALLTHROUGH="-Wimplicit-fallthrough=5" -CONFIG_GCC11_NO_ARRAY_BOUNDS=y -CONFIG_GCC12_NO_ARRAY_BOUNDS=y -CONFIG_CC_NO_ARRAY_BOUNDS=y -CONFIG_ARCH_SUPPORTS_INT128=y -CONFIG_NUMA_BALANCING=y -CONFIG_NUMA_BALANCING_DEFAULT_ENABLED=y -CONFIG_CGROUPS=y -CONFIG_PAGE_COUNTER=y -# CONFIG_CGROUP_FAVOR_DYNMODS is not set -CONFIG_MEMCG=y -CONFIG_MEMCG_KMEM=y -CONFIG_BLK_CGROUP=y -CONFIG_CGROUP_WRITEBACK=y -CONFIG_CGROUP_SCHED=y -CONFIG_FAIR_GROUP_SCHED=y -# CONFIG_CFS_BANDWIDTH is not set -# CONFIG_RT_GROUP_SCHED is not set -CONFIG_CGROUP_PIDS=y -# CONFIG_CGROUP_RDMA is not set -# CONFIG_CGROUP_FREEZER is not set -CONFIG_CGROUP_HUGETLB=y -CONFIG_CPUSETS=y -CONFIG_PROC_PID_CPUSET=y -CONFIG_CGROUP_DEVICE=y -CONFIG_CGROUP_CPUACCT=y -CONFIG_CGROUP_PERF=y -# CONFIG_CGROUP_MISC is not set -# CONFIG_CGROUP_DEBUG is not set -CONFIG_NAMESPACES=y -CONFIG_UTS_NS=y -CONFIG_TIME_NS=y -CONFIG_IPC_NS=y -CONFIG_USER_NS=y -CONFIG_PID_NS=y -CONFIG_NET_NS=y -# CONFIG_CHECKPOINT_RESTORE is not set -CONFIG_SCHED_AUTOGROUP=y -# CONFIG_SYSFS_DEPRECATED is not set -# CONFIG_RELAY is not set -CONFIG_BLK_DEV_INITRD=y -CONFIG_INITRAMFS_SOURCE="" -CONFIG_RD_GZIP=y -CONFIG_RD_BZIP2=y -CONFIG_RD_LZMA=y -CONFIG_RD_XZ=y -CONFIG_RD_LZO=y -CONFIG_RD_LZ4=y -CONFIG_RD_ZSTD=y -# CONFIG_BOOT_CONFIG is not set -CONFIG_INITRAMFS_PRESERVE_MTIME=y -CONFIG_CC_OPTIMIZE_FOR_PERFORMANCE=y -# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set -CONFIG_LD_ORPHAN_WARN=y -CONFIG_SYSCTL=y -CONFIG_HAVE_UID16=y -CONFIG_SYSCTL_EXCEPTION_TRACE=y -# CONFIG_EXPERT is not set -CONFIG_UID16=y -CONFIG_MULTIUSER=y -CONFIG_SYSFS_SYSCALL=y -CONFIG_FHANDLE=y -CONFIG_POSIX_TIMERS=y -CONFIG_PRINTK=y -CONFIG_BUG=y -CONFIG_ELF_CORE=y -CONFIG_BASE_FULL=y -CONFIG_FUTEX=y -CONFIG_FUTEX_PI=y -CONFIG_EPOLL=y -CONFIG_SIGNALFD=y -CONFIG_TIMERFD=y -CONFIG_EVENTFD=y -CONFIG_SHMEM=y -CONFIG_AIO=y -CONFIG_IO_URING=y -CONFIG_ADVISE_SYSCALLS=y -CONFIG_MEMBARRIER=y -CONFIG_KALLSYMS=y -CONFIG_KALLSYMS_ALL=y -CONFIG_KALLSYMS_BASE_RELATIVE=y -CONFIG_ARCH_HAS_MEMBARRIER_SYNC_CORE=y -CONFIG_KCMP=y -CONFIG_RSEQ=y -# CONFIG_EMBEDDED is not set -CONFIG_HAVE_PERF_EVENTS=y -CONFIG_GUEST_PERF_EVENTS=y - -# -# Kernel Performance Events And Counters -# -CONFIG_PERF_EVENTS=y -# CONFIG_DEBUG_PERF_USE_VMALLOC is not set -# end of Kernel Performance Events And Counters - -CONFIG_SYSTEM_DATA_VERIFICATION=y -CONFIG_PROFILING=y -# end of General setup - -CONFIG_ARM64=y -CONFIG_GCC_SUPPORTS_DYNAMIC_FTRACE_WITH_REGS=y -CONFIG_64BIT=y -CONFIG_MMU=y -CONFIG_ARM64_PAGE_SHIFT=12 -CONFIG_ARM64_CONT_PTE_SHIFT=4 -CONFIG_ARM64_CONT_PMD_SHIFT=4 -CONFIG_ARCH_MMAP_RND_BITS_MIN=18 -CONFIG_ARCH_MMAP_RND_BITS_MAX=33 -CONFIG_ARCH_MMAP_RND_COMPAT_BITS_MIN=11 -CONFIG_ARCH_MMAP_RND_COMPAT_BITS_MAX=16 -CONFIG_STACKTRACE_SUPPORT=y -CONFIG_ILLEGAL_POINTER_VALUE=0xdead000000000000 -CONFIG_LOCKDEP_SUPPORT=y -CONFIG_GENERIC_BUG=y -CONFIG_GENERIC_BUG_RELATIVE_POINTERS=y -CONFIG_GENERIC_HWEIGHT=y -CONFIG_GENERIC_CSUM=y -CONFIG_GENERIC_CALIBRATE_DELAY=y -CONFIG_ARCH_MHP_MEMMAP_ON_MEMORY_ENABLE=y -CONFIG_SMP=y -CONFIG_KERNEL_MODE_NEON=y -CONFIG_FIX_EARLYCON_MEM=y -CONFIG_PGTABLE_LEVELS=4 -CONFIG_ARCH_SUPPORTS_UPROBES=y -CONFIG_ARCH_PROC_KCORE_TEXT=y - -# -# Platform selection -# -# CONFIG_ARCH_ACTIONS is not set -CONFIG_ARCH_SUNXI=y -CONFIG_ARCH_ALPINE=y -# CONFIG_ARCH_APPLE is not set -# CONFIG_ARCH_BCM is not set -CONFIG_ARCH_BERLIN=y -# CONFIG_ARCH_BITMAIN is not set -CONFIG_ARCH_EXYNOS=y -# CONFIG_ARCH_SPARX5 is not set -# CONFIG_ARCH_K3 is not set -CONFIG_ARCH_LG1K=y -CONFIG_ARCH_HISI=y -# CONFIG_ARCH_KEEMBAY is not set -CONFIG_ARCH_MEDIATEK=y -CONFIG_ARCH_MESON=y -CONFIG_ARCH_MVEBU=y -# CONFIG_ARCH_NXP is not set -# CONFIG_ARCH_NPCM is not set -CONFIG_ARCH_QCOM=y -# CONFIG_ARCH_REALTEK is not set -CONFIG_ARCH_RENESAS=y -CONFIG_ARCH_ROCKCHIP=y -CONFIG_ARCH_SEATTLE=y -# CONFIG_ARCH_INTEL_SOCFPGA is not set -# CONFIG_ARCH_SYNQUACER is not set -CONFIG_ARCH_TEGRA=y -# CONFIG_ARCH_TESLA_FSD is not set -CONFIG_ARCH_SPRD=y -CONFIG_ARCH_THUNDER=y -CONFIG_ARCH_THUNDER2=y -CONFIG_ARCH_UNIPHIER=y -CONFIG_ARCH_VEXPRESS=y -# CONFIG_ARCH_VISCONTI is not set -CONFIG_ARCH_XGENE=y -CONFIG_ARCH_ZYNQMP=y -# end of Platform selection - -# -# Kernel Features -# - -# -# ARM errata workarounds via the alternatives framework -# -CONFIG_ARM64_WORKAROUND_CLEAN_CACHE=y -CONFIG_ARM64_ERRATUM_826319=y -CONFIG_ARM64_ERRATUM_827319=y -CONFIG_ARM64_ERRATUM_824069=y -CONFIG_ARM64_ERRATUM_819472=y -CONFIG_ARM64_ERRATUM_832075=y -CONFIG_ARM64_ERRATUM_834220=y -CONFIG_ARM64_ERRATUM_1742098=y -CONFIG_ARM64_ERRATUM_845719=y -CONFIG_ARM64_ERRATUM_843419=y -CONFIG_ARM64_LD_HAS_FIX_ERRATUM_843419=y -CONFIG_ARM64_ERRATUM_1024718=y -CONFIG_ARM64_ERRATUM_1418040=y -CONFIG_ARM64_WORKAROUND_SPECULATIVE_AT=y -CONFIG_ARM64_ERRATUM_1165522=y -CONFIG_ARM64_ERRATUM_1319367=y -CONFIG_ARM64_ERRATUM_1530923=y -CONFIG_ARM64_WORKAROUND_REPEAT_TLBI=y -CONFIG_ARM64_ERRATUM_2441007=y -CONFIG_ARM64_ERRATUM_1286807=y -CONFIG_ARM64_ERRATUM_1463225=y -CONFIG_ARM64_ERRATUM_1542419=y -CONFIG_ARM64_ERRATUM_1508412=y -CONFIG_ARM64_ERRATUM_2051678=y -CONFIG_ARM64_ERRATUM_2077057=y -CONFIG_ARM64_ERRATUM_2658417=y -CONFIG_ARM64_WORKAROUND_TSB_FLUSH_FAILURE=y -CONFIG_ARM64_ERRATUM_2054223=y -CONFIG_ARM64_ERRATUM_2067961=y -CONFIG_ARM64_ERRATUM_2441009=y -CONFIG_ARM64_ERRATUM_2457168=y -CONFIG_CAVIUM_ERRATUM_22375=y -CONFIG_CAVIUM_ERRATUM_23144=y -CONFIG_CAVIUM_ERRATUM_23154=y -CONFIG_CAVIUM_ERRATUM_27456=y -CONFIG_CAVIUM_ERRATUM_30115=y -CONFIG_CAVIUM_TX2_ERRATUM_219=y -CONFIG_FUJITSU_ERRATUM_010001=y -CONFIG_HISILICON_ERRATUM_161600802=y -CONFIG_QCOM_FALKOR_ERRATUM_1003=y -CONFIG_QCOM_FALKOR_ERRATUM_1009=y -CONFIG_QCOM_QDF2400_ERRATUM_0065=y -CONFIG_QCOM_FALKOR_ERRATUM_E1041=y -CONFIG_NVIDIA_CARMEL_CNP_ERRATUM=y -CONFIG_SOCIONEXT_SYNQUACER_PREITS=y -# end of ARM errata workarounds via the alternatives framework - -CONFIG_ARM64_4K_PAGES=y -# CONFIG_ARM64_16K_PAGES is not set -# CONFIG_ARM64_64K_PAGES is not set -# CONFIG_ARM64_VA_BITS_39 is not set -CONFIG_ARM64_VA_BITS_48=y -CONFIG_ARM64_VA_BITS=48 -CONFIG_ARM64_PA_BITS_48=y -CONFIG_ARM64_PA_BITS=48 -# CONFIG_CPU_BIG_ENDIAN is not set -CONFIG_CPU_LITTLE_ENDIAN=y -CONFIG_SCHED_MC=y -# CONFIG_SCHED_CLUSTER is not set -# CONFIG_SCHED_SMT is not set -CONFIG_NR_CPUS=256 -CONFIG_HOTPLUG_CPU=y -CONFIG_NUMA=y -CONFIG_NODES_SHIFT=4 -# CONFIG_HZ_100 is not set -CONFIG_HZ_250=y -# CONFIG_HZ_300 is not set -# CONFIG_HZ_1000 is not set -CONFIG_HZ=250 -CONFIG_SCHED_HRTICK=y -CONFIG_ARCH_SPARSEMEM_ENABLE=y -CONFIG_HW_PERF_EVENTS=y -CONFIG_PARAVIRT=y -# CONFIG_PARAVIRT_TIME_ACCOUNTING is not set -CONFIG_KEXEC=y -# CONFIG_KEXEC_FILE is not set -CONFIG_CRASH_DUMP=y -CONFIG_TRANS_TABLE=y -CONFIG_XEN_DOM0=y -CONFIG_XEN=y -CONFIG_ARCH_FORCE_MAX_ORDER=11 -CONFIG_UNMAP_KERNEL_AT_EL0=y -CONFIG_MITIGATE_SPECTRE_BRANCH_HISTORY=y -CONFIG_RODATA_FULL_DEFAULT_ENABLED=y -# CONFIG_ARM64_SW_TTBR0_PAN is not set -CONFIG_ARM64_TAGGED_ADDR_ABI=y -CONFIG_COMPAT=y -CONFIG_KUSER_HELPERS=y -# CONFIG_COMPAT_ALIGNMENT_FIXUPS is not set -# CONFIG_ARMV8_DEPRECATED is not set - -# -# ARMv8.1 architectural features -# -CONFIG_ARM64_HW_AFDBM=y -CONFIG_ARM64_PAN=y -CONFIG_AS_HAS_LDAPR=y -CONFIG_AS_HAS_LSE_ATOMICS=y -CONFIG_ARM64_LSE_ATOMICS=y -CONFIG_ARM64_USE_LSE_ATOMICS=y -# end of ARMv8.1 architectural features - -# -# ARMv8.2 architectural features -# -CONFIG_AS_HAS_ARMV8_2=y -CONFIG_AS_HAS_SHA3=y -# CONFIG_ARM64_PMEM is not set -CONFIG_ARM64_RAS_EXTN=y -CONFIG_ARM64_CNP=y -# end of ARMv8.2 architectural features - -# -# ARMv8.3 architectural features -# -CONFIG_ARM64_PTR_AUTH=y -CONFIG_ARM64_PTR_AUTH_KERNEL=y -CONFIG_CC_HAS_BRANCH_PROT_PAC_RET=y -CONFIG_CC_HAS_SIGN_RETURN_ADDRESS=y -CONFIG_AS_HAS_PAC=y -CONFIG_AS_HAS_CFI_NEGATE_RA_STATE=y -# end of ARMv8.3 architectural features - -# -# ARMv8.4 architectural features -# -CONFIG_ARM64_AMU_EXTN=y -CONFIG_AS_HAS_ARMV8_4=y -CONFIG_ARM64_TLB_RANGE=y -# end of ARMv8.4 architectural features - -# -# ARMv8.5 architectural features -# -CONFIG_AS_HAS_ARMV8_5=y -CONFIG_ARM64_BTI=y -CONFIG_CC_HAS_BRANCH_PROT_PAC_RET_BTI=y -CONFIG_ARM64_E0PD=y -CONFIG_ARM64_AS_HAS_MTE=y -CONFIG_ARM64_MTE=y -# end of ARMv8.5 architectural features - -# -# ARMv8.7 architectural features -# -CONFIG_ARM64_EPAN=y -# end of ARMv8.7 architectural features - -CONFIG_ARM64_SVE=y -CONFIG_ARM64_SME=y -CONFIG_ARM64_MODULE_PLTS=y -# CONFIG_ARM64_PSEUDO_NMI is not set -CONFIG_RELOCATABLE=y -# CONFIG_RANDOMIZE_BASE is not set -CONFIG_CC_HAVE_STACKPROTECTOR_SYSREG=y -CONFIG_STACKPROTECTOR_PER_TASK=y -CONFIG_ARCH_NR_GPIO=0 -# end of Kernel Features - -# -# Boot options -# -# CONFIG_ARM64_ACPI_PARKING_PROTOCOL is not set -CONFIG_CMDLINE=" loglevel=3" -CONFIG_CMDLINE_FROM_BOOTLOADER=y -# CONFIG_CMDLINE_FORCE is not set -CONFIG_EFI_STUB=y -CONFIG_EFI=y -CONFIG_DMI=y -# end of Boot options - -# -# Power management options -# -CONFIG_SUSPEND=y -CONFIG_SUSPEND_FREEZER=y -CONFIG_HIBERNATE_CALLBACKS=y -CONFIG_HIBERNATION=y -CONFIG_HIBERNATION_SNAPSHOT_DEV=y -CONFIG_PM_STD_PARTITION="" -CONFIG_PM_SLEEP=y -CONFIG_PM_SLEEP_SMP=y -# CONFIG_PM_AUTOSLEEP is not set -# CONFIG_PM_USERSPACE_AUTOSLEEP is not set -# CONFIG_PM_WAKELOCKS is not set -CONFIG_PM=y -# CONFIG_PM_DEBUG is not set -CONFIG_PM_CLK=y -CONFIG_PM_GENERIC_DOMAINS=y -CONFIG_WQ_POWER_EFFICIENT_DEFAULT=y -CONFIG_PM_GENERIC_DOMAINS_SLEEP=y -CONFIG_PM_GENERIC_DOMAINS_OF=y -CONFIG_CPU_PM=y -# CONFIG_ENERGY_MODEL is not set -CONFIG_ARCH_HIBERNATION_POSSIBLE=y -CONFIG_ARCH_HIBERNATION_HEADER=y -CONFIG_ARCH_SUSPEND_POSSIBLE=y -# end of Power management options - -# -# CPU Power Management -# - -# -# CPU Idle -# -CONFIG_CPU_IDLE=y -# CONFIG_CPU_IDLE_GOV_LADDER is not set -CONFIG_CPU_IDLE_GOV_MENU=y -# CONFIG_CPU_IDLE_GOV_TEO is not set - -# -# ARM CPU Idle Drivers -# -# CONFIG_ARM_PSCI_CPUIDLE is not set -# end of ARM CPU Idle Drivers -# end of CPU Idle - -# -# CPU Frequency scaling -# -CONFIG_CPU_FREQ=y -CONFIG_CPU_FREQ_GOV_ATTR_SET=y -# CONFIG_CPU_FREQ_STAT is not set -# CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE is not set -# CONFIG_CPU_FREQ_DEFAULT_GOV_POWERSAVE is not set -# CONFIG_CPU_FREQ_DEFAULT_GOV_USERSPACE is not set -# CONFIG_CPU_FREQ_DEFAULT_GOV_ONDEMAND is not set -# CONFIG_CPU_FREQ_DEFAULT_GOV_CONSERVATIVE is not set -CONFIG_CPU_FREQ_DEFAULT_GOV_SCHEDUTIL=y -CONFIG_CPU_FREQ_GOV_PERFORMANCE=y -# CONFIG_CPU_FREQ_GOV_POWERSAVE is not set -# CONFIG_CPU_FREQ_GOV_USERSPACE is not set -# CONFIG_CPU_FREQ_GOV_ONDEMAND is not set -# CONFIG_CPU_FREQ_GOV_CONSERVATIVE is not set -CONFIG_CPU_FREQ_GOV_SCHEDUTIL=y - -# -# CPU frequency scaling drivers -# -CONFIG_CPUFREQ_DT=y -CONFIG_CPUFREQ_DT_PLATDEV=y -CONFIG_ACPI_CPPC_CPUFREQ=m -CONFIG_ACPI_CPPC_CPUFREQ_FIE=y -# CONFIG_ARM_ALLWINNER_SUN50I_CPUFREQ_NVMEM is not set -# CONFIG_ARM_ARMADA_37XX_CPUFREQ is not set -# CONFIG_ARM_ARMADA_8K_CPUFREQ is not set -CONFIG_ARM_SCPI_CPUFREQ=y -# CONFIG_ARM_MEDIATEK_CPUFREQ is not set -CONFIG_ARM_MEDIATEK_CPUFREQ_HW=m -# CONFIG_ARM_QCOM_CPUFREQ_HW is not set -CONFIG_ARM_TEGRA20_CPUFREQ=y -CONFIG_ARM_TEGRA124_CPUFREQ=y -# CONFIG_ARM_TEGRA186_CPUFREQ is not set -# end of CPU Frequency scaling -# end of CPU Power Management - -CONFIG_ARCH_SUPPORTS_ACPI=y -CONFIG_ACPI=y -CONFIG_ACPI_GENERIC_GSI=y -CONFIG_ACPI_CCA_REQUIRED=y -# CONFIG_ACPI_DEBUGGER is not set -CONFIG_ACPI_SPCR_TABLE=y -# CONFIG_ACPI_EC_DEBUGFS is not set -CONFIG_ACPI_AC=y -CONFIG_ACPI_BATTERY=y -CONFIG_ACPI_BUTTON=y -# CONFIG_ACPI_VIDEO is not set -CONFIG_ACPI_FAN=y -# CONFIG_ACPI_TAD is not set -# CONFIG_ACPI_DOCK is not set -CONFIG_ACPI_PROCESSOR_IDLE=y -CONFIG_ACPI_MCFG=y -CONFIG_ACPI_CPPC_LIB=y -CONFIG_ACPI_PROCESSOR=y -CONFIG_ACPI_HOTPLUG_CPU=y -CONFIG_ACPI_THERMAL=y -CONFIG_ARCH_HAS_ACPI_TABLE_UPGRADE=y -CONFIG_ACPI_TABLE_UPGRADE=y -# CONFIG_ACPI_DEBUG is not set -# CONFIG_ACPI_PCI_SLOT is not set -CONFIG_ACPI_CONTAINER=y -CONFIG_ACPI_HED=y -# CONFIG_ACPI_CUSTOM_METHOD is not set -# CONFIG_ACPI_BGRT is not set -CONFIG_ACPI_REDUCED_HARDWARE_ONLY=y -CONFIG_ACPI_NUMA=y -# CONFIG_ACPI_HMAT is not set -CONFIG_HAVE_ACPI_APEI=y -CONFIG_ACPI_APEI=y -CONFIG_ACPI_APEI_GHES=y -CONFIG_ACPI_APEI_SEA=y -# CONFIG_ACPI_APEI_EINJ is not set -# CONFIG_ACPI_APEI_ERST_DEBUG is not set -# CONFIG_ACPI_CONFIGFS is not set -# CONFIG_ACPI_PFRUT is not set -CONFIG_ACPI_IORT=y -CONFIG_ACPI_GTDT=y -CONFIG_ACPI_PPTT=y -CONFIG_ACPI_PCC=y -# CONFIG_PMIC_OPREGION is not set -CONFIG_ACPI_PRMT=y -CONFIG_IRQ_BYPASS_MANAGER=y -CONFIG_HAVE_KVM=y -CONFIG_HAVE_KVM_IRQCHIP=y -CONFIG_HAVE_KVM_IRQFD=y -CONFIG_HAVE_KVM_IRQ_ROUTING=y -CONFIG_HAVE_KVM_EVENTFD=y -CONFIG_KVM_MMIO=y -CONFIG_HAVE_KVM_MSI=y -CONFIG_HAVE_KVM_CPU_RELAX_INTERCEPT=y -CONFIG_KVM_VFIO=y -CONFIG_HAVE_KVM_ARCH_TLB_FLUSH_ALL=y -CONFIG_KVM_GENERIC_DIRTYLOG_READ_PROTECT=y -CONFIG_HAVE_KVM_IRQ_BYPASS=y -CONFIG_HAVE_KVM_VCPU_RUN_PID_CHANGE=y -CONFIG_KVM_XFER_TO_GUEST_WORK=y -CONFIG_VIRTUALIZATION=y -CONFIG_KVM=y -# CONFIG_NVHE_EL2_DEBUG is not set - -# -# General architecture-dependent options -# -CONFIG_CRASH_CORE=y -CONFIG_KEXEC_CORE=y -CONFIG_ARCH_HAS_SUBPAGE_FAULTS=y -# CONFIG_KPROBES is not set -CONFIG_JUMP_LABEL=y -# CONFIG_STATIC_KEYS_SELFTEST is not set -CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS=y -CONFIG_HAVE_IOREMAP_PROT=y -CONFIG_HAVE_KPROBES=y -CONFIG_HAVE_KRETPROBES=y -CONFIG_ARCH_CORRECT_STACKTRACE_ON_KRETPROBE=y -CONFIG_HAVE_FUNCTION_ERROR_INJECTION=y -CONFIG_HAVE_NMI=y -CONFIG_TRACE_IRQFLAGS_SUPPORT=y -CONFIG_TRACE_IRQFLAGS_NMI_SUPPORT=y -CONFIG_HAVE_ARCH_TRACEHOOK=y -CONFIG_HAVE_DMA_CONTIGUOUS=y -CONFIG_GENERIC_SMP_IDLE_THREAD=y -CONFIG_GENERIC_IDLE_POLL_SETUP=y -CONFIG_ARCH_HAS_FORTIFY_SOURCE=y -CONFIG_ARCH_HAS_KEEPINITRD=y -CONFIG_ARCH_HAS_SET_MEMORY=y -CONFIG_ARCH_HAS_SET_DIRECT_MAP=y -CONFIG_HAVE_ARCH_THREAD_STRUCT_WHITELIST=y -CONFIG_ARCH_WANTS_NO_INSTR=y -CONFIG_HAVE_ASM_MODVERSIONS=y -CONFIG_HAVE_REGS_AND_STACK_ACCESS_API=y -CONFIG_HAVE_RSEQ=y -CONFIG_HAVE_FUNCTION_ARG_ACCESS_API=y -CONFIG_HAVE_HW_BREAKPOINT=y -CONFIG_HAVE_PERF_REGS=y -CONFIG_HAVE_PERF_USER_STACK_DUMP=y -CONFIG_HAVE_ARCH_JUMP_LABEL=y -CONFIG_HAVE_ARCH_JUMP_LABEL_RELATIVE=y -CONFIG_MMU_GATHER_TABLE_FREE=y -CONFIG_MMU_GATHER_RCU_TABLE_FREE=y -CONFIG_ARCH_HAVE_NMI_SAFE_CMPXCHG=y -CONFIG_HAVE_ALIGNED_STRUCT_PAGE=y -CONFIG_HAVE_CMPXCHG_LOCAL=y -CONFIG_HAVE_CMPXCHG_DOUBLE=y -CONFIG_ARCH_WANT_COMPAT_IPC_PARSE_VERSION=y -CONFIG_HAVE_ARCH_SECCOMP=y -CONFIG_HAVE_ARCH_SECCOMP_FILTER=y -CONFIG_SECCOMP=y -CONFIG_SECCOMP_FILTER=y -# CONFIG_SECCOMP_CACHE_DEBUG is not set -CONFIG_HAVE_ARCH_STACKLEAK=y -CONFIG_HAVE_STACKPROTECTOR=y -CONFIG_STACKPROTECTOR=y -CONFIG_STACKPROTECTOR_STRONG=y -CONFIG_ARCH_SUPPORTS_LTO_CLANG=y -CONFIG_ARCH_SUPPORTS_LTO_CLANG_THIN=y -CONFIG_LTO_NONE=y -CONFIG_ARCH_SUPPORTS_CFI_CLANG=y -CONFIG_HAVE_CONTEXT_TRACKING_USER=y -CONFIG_HAVE_VIRT_CPU_ACCOUNTING_GEN=y -CONFIG_HAVE_IRQ_TIME_ACCOUNTING=y -CONFIG_HAVE_MOVE_PUD=y -CONFIG_HAVE_MOVE_PMD=y -CONFIG_HAVE_ARCH_TRANSPARENT_HUGEPAGE=y -CONFIG_HAVE_ARCH_HUGE_VMAP=y -CONFIG_HAVE_ARCH_HUGE_VMALLOC=y -CONFIG_ARCH_WANT_HUGE_PMD_SHARE=y -CONFIG_HAVE_MOD_ARCH_SPECIFIC=y -CONFIG_MODULES_USE_ELF_RELA=y -CONFIG_HAVE_SOFTIRQ_ON_OWN_STACK=y -CONFIG_SOFTIRQ_ON_OWN_STACK=y -CONFIG_ARCH_HAS_ELF_RANDOMIZE=y -CONFIG_HAVE_ARCH_MMAP_RND_BITS=y -CONFIG_ARCH_MMAP_RND_BITS=18 -CONFIG_HAVE_ARCH_MMAP_RND_COMPAT_BITS=y -CONFIG_ARCH_MMAP_RND_COMPAT_BITS=11 -CONFIG_PAGE_SIZE_LESS_THAN_64KB=y -CONFIG_PAGE_SIZE_LESS_THAN_256KB=y -CONFIG_ARCH_WANT_DEFAULT_TOPDOWN_MMAP_LAYOUT=y -CONFIG_CLONE_BACKWARDS=y -CONFIG_OLD_SIGSUSPEND3=y -CONFIG_COMPAT_OLD_SIGACTION=y -CONFIG_COMPAT_32BIT_TIME=y -CONFIG_HAVE_ARCH_VMAP_STACK=y -CONFIG_VMAP_STACK=y -CONFIG_HAVE_ARCH_RANDOMIZE_KSTACK_OFFSET=y -CONFIG_RANDOMIZE_KSTACK_OFFSET=y -# CONFIG_RANDOMIZE_KSTACK_OFFSET_DEFAULT is not set -CONFIG_ARCH_HAS_STRICT_KERNEL_RWX=y -CONFIG_STRICT_KERNEL_RWX=y -CONFIG_ARCH_HAS_STRICT_MODULE_RWX=y -CONFIG_STRICT_MODULE_RWX=y -CONFIG_HAVE_ARCH_COMPILER_H=y -CONFIG_HAVE_ARCH_PREL32_RELOCATIONS=y -CONFIG_ARCH_USE_MEMREMAP_PROT=y -# CONFIG_LOCK_EVENT_COUNTS is not set -CONFIG_ARCH_HAS_RELR=y -CONFIG_HAVE_PREEMPT_DYNAMIC=y -CONFIG_HAVE_PREEMPT_DYNAMIC_KEY=y -CONFIG_ARCH_WANT_LD_ORPHAN_WARN=y -CONFIG_ARCH_SUPPORTS_DEBUG_PAGEALLOC=y -CONFIG_ARCH_SUPPORTS_PAGE_TABLE_CHECK=y -CONFIG_ARCH_HAVE_TRACE_MMIO_ACCESS=y - -# -# GCOV-based kernel profiling -# -# CONFIG_GCOV_KERNEL is not set -CONFIG_ARCH_HAS_GCOV_PROFILE_ALL=y -# end of GCOV-based kernel profiling - -CONFIG_HAVE_GCC_PLUGINS=y -CONFIG_GCC_PLUGINS=y -# CONFIG_GCC_PLUGIN_LATENT_ENTROPY is not set -# end of General architecture-dependent options - -CONFIG_RT_MUTEXES=y -CONFIG_BASE_SMALL=0 -CONFIG_MODULES=y -# CONFIG_MODULE_FORCE_LOAD is not set -CONFIG_MODULE_UNLOAD=y -# CONFIG_MODULE_FORCE_UNLOAD is not set -# CONFIG_MODULE_UNLOAD_TAINT_TRACKING is not set -# CONFIG_MODVERSIONS is not set -# CONFIG_MODULE_SRCVERSION_ALL is not set -# CONFIG_MODULE_SIG is not set -CONFIG_MODULE_COMPRESS_NONE=y -# CONFIG_MODULE_COMPRESS_GZIP is not set -# CONFIG_MODULE_COMPRESS_XZ is not set -# CONFIG_MODULE_COMPRESS_ZSTD is not set -# CONFIG_MODULE_ALLOW_MISSING_NAMESPACE_IMPORTS is not set -CONFIG_MODPROBE_PATH="/sbin/modprobe" -CONFIG_MODULES_TREE_LOOKUP=y -CONFIG_BLOCK=y -CONFIG_BLOCK_LEGACY_AUTOLOAD=y -CONFIG_BLK_DEV_BSG_COMMON=y -CONFIG_BLK_DEV_BSGLIB=y -CONFIG_BLK_DEV_INTEGRITY=y -CONFIG_BLK_DEV_INTEGRITY_T10=y -# CONFIG_BLK_DEV_ZONED is not set -# CONFIG_BLK_DEV_THROTTLING is not set -# CONFIG_BLK_WBT is not set -# CONFIG_BLK_CGROUP_IOLATENCY is not set -# CONFIG_BLK_CGROUP_IOCOST is not set -# CONFIG_BLK_CGROUP_IOPRIO is not set -CONFIG_BLK_DEBUG_FS=y -# CONFIG_BLK_SED_OPAL is not set -# CONFIG_BLK_INLINE_ENCRYPTION is not set - -# -# Partition Types -# -# CONFIG_PARTITION_ADVANCED is not set -CONFIG_MSDOS_PARTITION=y -CONFIG_EFI_PARTITION=y -# end of Partition Types - -CONFIG_BLOCK_COMPAT=y -CONFIG_BLK_MQ_PCI=y -CONFIG_BLK_MQ_VIRTIO=y -CONFIG_BLK_PM=y - -# -# IO Schedulers -# -CONFIG_MQ_IOSCHED_DEADLINE=y -CONFIG_MQ_IOSCHED_KYBER=y -# CONFIG_IOSCHED_BFQ is not set -# end of IO Schedulers - -CONFIG_PREEMPT_NOTIFIERS=y -CONFIG_ASN1=y -CONFIG_UNINLINE_SPIN_UNLOCK=y -CONFIG_ARCH_SUPPORTS_ATOMIC_RMW=y -CONFIG_MUTEX_SPIN_ON_OWNER=y -CONFIG_RWSEM_SPIN_ON_OWNER=y -CONFIG_LOCK_SPIN_ON_OWNER=y -CONFIG_ARCH_USE_QUEUED_SPINLOCKS=y -CONFIG_QUEUED_SPINLOCKS=y -CONFIG_ARCH_USE_QUEUED_RWLOCKS=y -CONFIG_QUEUED_RWLOCKS=y -CONFIG_ARCH_HAS_NON_OVERLAPPING_ADDRESS_SPACE=y -CONFIG_ARCH_HAS_SYSCALL_WRAPPER=y -CONFIG_FREEZER=y - -# -# Executable file formats -# -CONFIG_BINFMT_ELF=y -CONFIG_COMPAT_BINFMT_ELF=y -CONFIG_ARCH_BINFMT_ELF_STATE=y -CONFIG_ARCH_BINFMT_ELF_EXTRA_PHDRS=y -CONFIG_ARCH_HAVE_ELF_PROT=y -CONFIG_ARCH_USE_GNU_PROPERTY=y -CONFIG_ELFCORE=y -# CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set -CONFIG_BINFMT_SCRIPT=y -# CONFIG_BINFMT_MISC is not set -CONFIG_COREDUMP=y -# end of Executable file formats - -# -# Memory Management options -# -CONFIG_SWAP=y -# CONFIG_ZSWAP is not set - -# -# SLAB allocator options -# -# CONFIG_SLAB is not set -CONFIG_SLUB=y -CONFIG_SLAB_MERGE_DEFAULT=y -# CONFIG_SLAB_FREELIST_RANDOM is not set -# CONFIG_SLAB_FREELIST_HARDENED is not set -# CONFIG_SLUB_STATS is not set -CONFIG_SLUB_CPU_PARTIAL=y -# end of SLAB allocator options - -# CONFIG_SHUFFLE_PAGE_ALLOCATOR is not set -# CONFIG_COMPAT_BRK is not set -CONFIG_SPARSEMEM=y -CONFIG_SPARSEMEM_EXTREME=y -CONFIG_SPARSEMEM_VMEMMAP_ENABLE=y -CONFIG_SPARSEMEM_VMEMMAP=y -CONFIG_HAVE_FAST_GUP=y -CONFIG_ARCH_KEEP_MEMBLOCK=y -CONFIG_MEMORY_ISOLATION=y -CONFIG_EXCLUSIVE_SYSTEM_RAM=y -CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y -CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y -# CONFIG_MEMORY_HOTPLUG is not set -CONFIG_SPLIT_PTLOCK_CPUS=4 -CONFIG_ARCH_ENABLE_SPLIT_PMD_PTLOCK=y -CONFIG_MEMORY_BALLOON=y -CONFIG_BALLOON_COMPACTION=y -CONFIG_COMPACTION=y -CONFIG_COMPACT_UNEVICTABLE_DEFAULT=1 -CONFIG_PAGE_REPORTING=y -CONFIG_MIGRATION=y -CONFIG_ARCH_ENABLE_HUGEPAGE_MIGRATION=y -CONFIG_ARCH_ENABLE_THP_MIGRATION=y -CONFIG_CONTIG_ALLOC=y -CONFIG_PHYS_ADDR_T_64BIT=y -CONFIG_MMU_NOTIFIER=y -CONFIG_KSM=y -CONFIG_DEFAULT_MMAP_MIN_ADDR=4096 -CONFIG_ARCH_SUPPORTS_MEMORY_FAILURE=y -# CONFIG_MEMORY_FAILURE is not set -CONFIG_ARCH_WANTS_THP_SWAP=y -CONFIG_TRANSPARENT_HUGEPAGE=y -CONFIG_TRANSPARENT_HUGEPAGE_ALWAYS=y -# CONFIG_TRANSPARENT_HUGEPAGE_MADVISE is not set -CONFIG_THP_SWAP=y -# CONFIG_READ_ONLY_THP_FOR_FS is not set -CONFIG_NEED_PER_CPU_EMBED_FIRST_CHUNK=y -CONFIG_NEED_PER_CPU_PAGE_FIRST_CHUNK=y -CONFIG_USE_PERCPU_NUMA_NODE_ID=y -CONFIG_HAVE_SETUP_PER_CPU_AREA=y -CONFIG_CMA=y -# CONFIG_CMA_DEBUG is not set -# CONFIG_CMA_DEBUGFS is not set -# CONFIG_CMA_SYSFS is not set -CONFIG_CMA_AREAS=19 -CONFIG_GENERIC_EARLY_IOREMAP=y -# CONFIG_DEFERRED_STRUCT_PAGE_INIT is not set -# CONFIG_IDLE_PAGE_TRACKING is not set -CONFIG_ARCH_HAS_CACHE_LINE_SIZE=y -CONFIG_ARCH_HAS_CURRENT_STACK_POINTER=y -CONFIG_ARCH_HAS_PTE_DEVMAP=y -CONFIG_ZONE_DMA=y -CONFIG_ZONE_DMA32=y -CONFIG_ARCH_USES_HIGH_VMA_FLAGS=y -CONFIG_VM_EVENT_COUNTERS=y -# CONFIG_PERCPU_STATS is not set -# CONFIG_GUP_TEST is not set -CONFIG_ARCH_HAS_PTE_SPECIAL=y -CONFIG_SECRETMEM=y -# CONFIG_ANON_VMA_NAME is not set -# CONFIG_USERFAULTFD is not set -# CONFIG_LRU_GEN is not set - -# -# Data Access Monitoring -# -# CONFIG_DAMON is not set -# end of Data Access Monitoring -# end of Memory Management options - -CONFIG_NET=y -CONFIG_COMPAT_NETLINK_MESSAGES=y -CONFIG_NET_INGRESS=y -CONFIG_NET_EGRESS=y - -# -# Networking options -# -CONFIG_PACKET=y -# CONFIG_PACKET_DIAG is not set -CONFIG_UNIX=y -CONFIG_UNIX_SCM=y -CONFIG_AF_UNIX_OOB=y -# CONFIG_UNIX_DIAG is not set -# CONFIG_TLS is not set -# CONFIG_XFRM_USER is not set -# CONFIG_NET_KEY is not set -CONFIG_INET=y -CONFIG_IP_MULTICAST=y -# CONFIG_IP_ADVANCED_ROUTER is not set -CONFIG_IP_PNP=y -CONFIG_IP_PNP_DHCP=y -CONFIG_IP_PNP_BOOTP=y -# CONFIG_IP_PNP_RARP is not set -# CONFIG_NET_IPIP is not set -# CONFIG_NET_IPGRE_DEMUX is not set -CONFIG_NET_IP_TUNNEL=m -# CONFIG_IP_MROUTE is not set -# CONFIG_SYN_COOKIES is not set -# CONFIG_NET_IPVTI is not set -# CONFIG_NET_FOU is not set -# CONFIG_NET_FOU_IP_TUNNELS is not set -# CONFIG_INET_AH is not set -# CONFIG_INET_ESP is not set -# CONFIG_INET_IPCOMP is not set -CONFIG_INET_TABLE_PERTURB_ORDER=16 -CONFIG_INET_TUNNEL=m -CONFIG_INET_DIAG=y -CONFIG_INET_TCP_DIAG=y -# CONFIG_INET_UDP_DIAG is not set -# CONFIG_INET_RAW_DIAG is not set -# CONFIG_INET_DIAG_DESTROY is not set -# CONFIG_TCP_CONG_ADVANCED is not set -CONFIG_TCP_CONG_CUBIC=y -CONFIG_DEFAULT_TCP_CONG="cubic" -# CONFIG_TCP_MD5SIG is not set -CONFIG_IPV6=m -# CONFIG_IPV6_ROUTER_PREF is not set -# CONFIG_IPV6_OPTIMISTIC_DAD is not set -# CONFIG_INET6_AH is not set -# CONFIG_INET6_ESP is not set -# CONFIG_INET6_IPCOMP is not set -# CONFIG_IPV6_MIP6 is not set -# CONFIG_IPV6_ILA is not set -# CONFIG_IPV6_VTI is not set -CONFIG_IPV6_SIT=m -# CONFIG_IPV6_SIT_6RD is not set -CONFIG_IPV6_NDISC_NODETYPE=y -# CONFIG_IPV6_TUNNEL is not set -# CONFIG_IPV6_MULTIPLE_TABLES is not set -# CONFIG_IPV6_MROUTE is not set -# CONFIG_IPV6_SEG6_LWTUNNEL is not set -# CONFIG_IPV6_SEG6_HMAC is not set -# CONFIG_IPV6_RPL_LWTUNNEL is not set -# CONFIG_IPV6_IOAM6_LWTUNNEL is not set -# CONFIG_NETLABEL is not set -# CONFIG_MPTCP is not set -# CONFIG_NETWORK_SECMARK is not set -CONFIG_NET_PTP_CLASSIFY=y -# CONFIG_NETWORK_PHY_TIMESTAMPING is not set -CONFIG_NETFILTER=y -CONFIG_NETFILTER_ADVANCED=y -# CONFIG_BRIDGE_NETFILTER is not set - -# -# Core Netfilter Configuration -# -CONFIG_NETFILTER_INGRESS=y -CONFIG_NETFILTER_EGRESS=y -# CONFIG_NETFILTER_NETLINK_ACCT is not set -# CONFIG_NETFILTER_NETLINK_QUEUE is not set -# CONFIG_NETFILTER_NETLINK_LOG is not set -# CONFIG_NETFILTER_NETLINK_OSF is not set -CONFIG_NF_CONNTRACK=m -CONFIG_NF_LOG_SYSLOG=m -# CONFIG_NF_CONNTRACK_MARK is not set -# CONFIG_NF_CONNTRACK_ZONES is not set -# CONFIG_NF_CONNTRACK_PROCFS is not set -CONFIG_NF_CONNTRACK_EVENTS=y -# CONFIG_NF_CONNTRACK_TIMEOUT is not set -# CONFIG_NF_CONNTRACK_TIMESTAMP is not set -# CONFIG_NF_CONNTRACK_LABELS is not set -CONFIG_NF_CT_PROTO_DCCP=y -CONFIG_NF_CT_PROTO_SCTP=y -CONFIG_NF_CT_PROTO_UDPLITE=y -# CONFIG_NF_CONNTRACK_AMANDA is not set -# CONFIG_NF_CONNTRACK_FTP is not set -# CONFIG_NF_CONNTRACK_H323 is not set -# CONFIG_NF_CONNTRACK_IRC is not set -# CONFIG_NF_CONNTRACK_NETBIOS_NS is not set -# CONFIG_NF_CONNTRACK_SNMP is not set -# CONFIG_NF_CONNTRACK_PPTP is not set -# CONFIG_NF_CONNTRACK_SANE is not set -# CONFIG_NF_CONNTRACK_SIP is not set -# CONFIG_NF_CONNTRACK_TFTP is not set -# CONFIG_NF_CT_NETLINK is not set -CONFIG_NF_NAT=m -CONFIG_NF_NAT_MASQUERADE=y -# CONFIG_NF_TABLES is not set -CONFIG_NETFILTER_XTABLES=m -CONFIG_NETFILTER_XTABLES_COMPAT=y - -# -# Xtables combined modules -# -# CONFIG_NETFILTER_XT_MARK is not set -# CONFIG_NETFILTER_XT_CONNMARK is not set - -# -# Xtables targets -# -# CONFIG_NETFILTER_XT_TARGET_AUDIT is not set -CONFIG_NETFILTER_XT_TARGET_CHECKSUM=m -# CONFIG_NETFILTER_XT_TARGET_CLASSIFY is not set -# CONFIG_NETFILTER_XT_TARGET_CONNMARK is not set -# CONFIG_NETFILTER_XT_TARGET_DSCP is not set -# CONFIG_NETFILTER_XT_TARGET_HL is not set -# CONFIG_NETFILTER_XT_TARGET_HMARK is not set -# CONFIG_NETFILTER_XT_TARGET_IDLETIMER is not set -# CONFIG_NETFILTER_XT_TARGET_LED is not set -CONFIG_NETFILTER_XT_TARGET_LOG=m -# CONFIG_NETFILTER_XT_TARGET_MARK is not set -CONFIG_NETFILTER_XT_NAT=m -# CONFIG_NETFILTER_XT_TARGET_NETMAP is not set -# CONFIG_NETFILTER_XT_TARGET_NFLOG is not set -# CONFIG_NETFILTER_XT_TARGET_NFQUEUE is not set -# CONFIG_NETFILTER_XT_TARGET_RATEEST is not set -# CONFIG_NETFILTER_XT_TARGET_REDIRECT is not set -CONFIG_NETFILTER_XT_TARGET_MASQUERADE=m -# CONFIG_NETFILTER_XT_TARGET_TEE is not set -# CONFIG_NETFILTER_XT_TARGET_TPROXY is not set -# CONFIG_NETFILTER_XT_TARGET_TCPMSS is not set -# CONFIG_NETFILTER_XT_TARGET_TCPOPTSTRIP is not set - -# -# Xtables matches -# -CONFIG_NETFILTER_XT_MATCH_ADDRTYPE=m -# CONFIG_NETFILTER_XT_MATCH_BPF is not set -# CONFIG_NETFILTER_XT_MATCH_CGROUP is not set -# CONFIG_NETFILTER_XT_MATCH_CLUSTER is not set -# CONFIG_NETFILTER_XT_MATCH_COMMENT is not set -# CONFIG_NETFILTER_XT_MATCH_CONNBYTES is not set -# CONFIG_NETFILTER_XT_MATCH_CONNLABEL is not set -# CONFIG_NETFILTER_XT_MATCH_CONNLIMIT is not set -# CONFIG_NETFILTER_XT_MATCH_CONNMARK is not set -CONFIG_NETFILTER_XT_MATCH_CONNTRACK=m -# CONFIG_NETFILTER_XT_MATCH_CPU is not set -# CONFIG_NETFILTER_XT_MATCH_DCCP is not set -# CONFIG_NETFILTER_XT_MATCH_DEVGROUP is not set -# CONFIG_NETFILTER_XT_MATCH_DSCP is not set -# CONFIG_NETFILTER_XT_MATCH_ECN is not set -# CONFIG_NETFILTER_XT_MATCH_ESP is not set -# CONFIG_NETFILTER_XT_MATCH_HASHLIMIT is not set -# CONFIG_NETFILTER_XT_MATCH_HELPER is not set -# CONFIG_NETFILTER_XT_MATCH_HL is not set -# CONFIG_NETFILTER_XT_MATCH_IPCOMP is not set -# CONFIG_NETFILTER_XT_MATCH_IPRANGE is not set -# CONFIG_NETFILTER_XT_MATCH_L2TP is not set -# CONFIG_NETFILTER_XT_MATCH_LENGTH is not set -# CONFIG_NETFILTER_XT_MATCH_LIMIT is not set -# CONFIG_NETFILTER_XT_MATCH_MAC is not set -# CONFIG_NETFILTER_XT_MATCH_MARK is not set -# CONFIG_NETFILTER_XT_MATCH_MULTIPORT is not set -# CONFIG_NETFILTER_XT_MATCH_NFACCT is not set -# CONFIG_NETFILTER_XT_MATCH_OSF is not set -# CONFIG_NETFILTER_XT_MATCH_OWNER is not set -# CONFIG_NETFILTER_XT_MATCH_PKTTYPE is not set -# CONFIG_NETFILTER_XT_MATCH_QUOTA is not set -# CONFIG_NETFILTER_XT_MATCH_RATEEST is not set -# CONFIG_NETFILTER_XT_MATCH_REALM is not set -# CONFIG_NETFILTER_XT_MATCH_RECENT is not set -# CONFIG_NETFILTER_XT_MATCH_SCTP is not set -# CONFIG_NETFILTER_XT_MATCH_SOCKET is not set -# CONFIG_NETFILTER_XT_MATCH_STATE is not set -# CONFIG_NETFILTER_XT_MATCH_STATISTIC is not set -# CONFIG_NETFILTER_XT_MATCH_STRING is not set -# CONFIG_NETFILTER_XT_MATCH_TCPMSS is not set -# CONFIG_NETFILTER_XT_MATCH_TIME is not set -# CONFIG_NETFILTER_XT_MATCH_U32 is not set -# end of Core Netfilter Configuration - -# CONFIG_IP_SET is not set -# CONFIG_IP_VS is not set - -# -# IP: Netfilter Configuration -# -CONFIG_NF_DEFRAG_IPV4=m -# CONFIG_NF_SOCKET_IPV4 is not set -# CONFIG_NF_TPROXY_IPV4 is not set -# CONFIG_NF_DUP_IPV4 is not set -# CONFIG_NF_LOG_ARP is not set -# CONFIG_NF_LOG_IPV4 is not set -CONFIG_NF_REJECT_IPV4=m -CONFIG_IP_NF_IPTABLES=m -# CONFIG_IP_NF_MATCH_AH is not set -# CONFIG_IP_NF_MATCH_ECN is not set -# CONFIG_IP_NF_MATCH_RPFILTER is not set -# CONFIG_IP_NF_MATCH_TTL is not set -CONFIG_IP_NF_FILTER=m -CONFIG_IP_NF_TARGET_REJECT=m -# CONFIG_IP_NF_TARGET_SYNPROXY is not set -CONFIG_IP_NF_NAT=m -CONFIG_IP_NF_TARGET_MASQUERADE=m -# CONFIG_IP_NF_TARGET_NETMAP is not set -# CONFIG_IP_NF_TARGET_REDIRECT is not set -CONFIG_IP_NF_MANGLE=m -# CONFIG_IP_NF_TARGET_CLUSTERIP is not set -# CONFIG_IP_NF_TARGET_ECN is not set -# CONFIG_IP_NF_TARGET_TTL is not set -# CONFIG_IP_NF_RAW is not set -# CONFIG_IP_NF_SECURITY is not set -# CONFIG_IP_NF_ARPTABLES is not set -# end of IP: Netfilter Configuration - -# -# IPv6: Netfilter Configuration -# -# CONFIG_NF_SOCKET_IPV6 is not set -# CONFIG_NF_TPROXY_IPV6 is not set -# CONFIG_NF_DUP_IPV6 is not set -CONFIG_NF_REJECT_IPV6=m -CONFIG_NF_LOG_IPV6=m -CONFIG_IP6_NF_IPTABLES=m -# CONFIG_IP6_NF_MATCH_AH is not set -# CONFIG_IP6_NF_MATCH_EUI64 is not set -# CONFIG_IP6_NF_MATCH_FRAG is not set -# CONFIG_IP6_NF_MATCH_OPTS is not set -# CONFIG_IP6_NF_MATCH_HL is not set -# CONFIG_IP6_NF_MATCH_IPV6HEADER is not set -# CONFIG_IP6_NF_MATCH_MH is not set -# CONFIG_IP6_NF_MATCH_RPFILTER is not set -# CONFIG_IP6_NF_MATCH_RT is not set -# CONFIG_IP6_NF_MATCH_SRH is not set -# CONFIG_IP6_NF_TARGET_HL is not set -CONFIG_IP6_NF_FILTER=m -CONFIG_IP6_NF_TARGET_REJECT=m -# CONFIG_IP6_NF_TARGET_SYNPROXY is not set -CONFIG_IP6_NF_MANGLE=m -# CONFIG_IP6_NF_RAW is not set -# CONFIG_IP6_NF_SECURITY is not set -CONFIG_IP6_NF_NAT=m -CONFIG_IP6_NF_TARGET_MASQUERADE=m -# CONFIG_IP6_NF_TARGET_NPT is not set -# end of IPv6: Netfilter Configuration - -CONFIG_NF_DEFRAG_IPV6=m -# CONFIG_NF_CONNTRACK_BRIDGE is not set -# CONFIG_BRIDGE_NF_EBTABLES is not set -# CONFIG_BPFILTER is not set -# CONFIG_IP_DCCP is not set -# CONFIG_IP_SCTP is not set -# CONFIG_RDS is not set -# CONFIG_TIPC is not set -# CONFIG_ATM is not set -# CONFIG_L2TP is not set -CONFIG_STP=m -CONFIG_GARP=m -CONFIG_MRP=m -CONFIG_BRIDGE=m -CONFIG_BRIDGE_IGMP_SNOOPING=y -CONFIG_BRIDGE_VLAN_FILTERING=y -# CONFIG_BRIDGE_MRP is not set -# CONFIG_BRIDGE_CFM is not set -# CONFIG_NET_DSA is not set -CONFIG_VLAN_8021Q=m -CONFIG_VLAN_8021Q_GVRP=y -CONFIG_VLAN_8021Q_MVRP=y -CONFIG_LLC=m -# CONFIG_LLC2 is not set -# CONFIG_ATALK is not set -# CONFIG_X25 is not set -# CONFIG_LAPB is not set -# CONFIG_PHONET is not set -# CONFIG_6LOWPAN is not set -# CONFIG_IEEE802154 is not set -# CONFIG_NET_SCHED is not set -# CONFIG_DCB is not set -CONFIG_DNS_RESOLVER=y -# CONFIG_BATMAN_ADV is not set -# CONFIG_OPENVSWITCH is not set -# CONFIG_VSOCKETS is not set -# CONFIG_NETLINK_DIAG is not set -# CONFIG_MPLS is not set -# CONFIG_NET_NSH is not set -# CONFIG_HSR is not set -# CONFIG_NET_SWITCHDEV is not set -# CONFIG_NET_L3_MASTER_DEV is not set -# CONFIG_QRTR is not set -# CONFIG_NET_NCSI is not set -CONFIG_PCPU_DEV_REFCNT=y -CONFIG_RPS=y -CONFIG_RFS_ACCEL=y -CONFIG_SOCK_RX_QUEUE_MAPPING=y -CONFIG_XPS=y -# CONFIG_CGROUP_NET_PRIO is not set -# CONFIG_CGROUP_NET_CLASSID is not set -CONFIG_NET_RX_BUSY_POLL=y -CONFIG_BQL=y -CONFIG_NET_FLOW_LIMIT=y - -# -# Network testing -# -# CONFIG_NET_PKTGEN is not set -# end of Network testing -# end of Networking options - -# CONFIG_HAMRADIO is not set -# CONFIG_CAN is not set -CONFIG_BT=m -CONFIG_BT_BREDR=y -# CONFIG_BT_RFCOMM is not set -# CONFIG_BT_BNEP is not set -CONFIG_BT_HIDP=m -# CONFIG_BT_HS is not set -# CONFIG_BT_LE is not set -CONFIG_BT_LEDS=y -# CONFIG_BT_MSFTEXT is not set -# CONFIG_BT_AOSPEXT is not set -# CONFIG_BT_DEBUGFS is not set -# CONFIG_BT_SELFTEST is not set -# CONFIG_BT_FEATURE_DEBUG is not set - -# -# Bluetooth device drivers -# -# CONFIG_BT_HCIBTUSB is not set -# CONFIG_BT_HCIBTSDIO is not set -CONFIG_BT_HCIUART=m -CONFIG_BT_HCIUART_SERDEV=y -CONFIG_BT_HCIUART_H4=y -# CONFIG_BT_HCIUART_NOKIA is not set -# CONFIG_BT_HCIUART_BCSP is not set -# CONFIG_BT_HCIUART_ATH3K is not set -CONFIG_BT_HCIUART_LL=y -# CONFIG_BT_HCIUART_3WIRE is not set -# CONFIG_BT_HCIUART_INTEL is not set -# CONFIG_BT_HCIUART_BCM is not set -# CONFIG_BT_HCIUART_RTL is not set -# CONFIG_BT_HCIUART_QCA is not set -# CONFIG_BT_HCIUART_AG6XX is not set -# CONFIG_BT_HCIUART_MRVL is not set -# CONFIG_BT_HCIBCM203X is not set -# CONFIG_BT_HCIBPA10X is not set -# CONFIG_BT_HCIBFUSB is not set -# CONFIG_BT_HCIVHCI is not set -# CONFIG_BT_MRVL is not set -# CONFIG_BT_MTKSDIO is not set -# CONFIG_BT_MTKUART is not set -# CONFIG_BT_VIRTIO is not set -# end of Bluetooth device drivers - -# CONFIG_AF_RXRPC is not set -# CONFIG_AF_KCM is not set -# CONFIG_MCTP is not set -CONFIG_WIRELESS=y -CONFIG_WEXT_CORE=y -CONFIG_WEXT_PROC=y -CONFIG_CFG80211=m -# CONFIG_NL80211_TESTMODE is not set -# CONFIG_CFG80211_DEVELOPER_WARNINGS is not set -CONFIG_CFG80211_REQUIRE_SIGNED_REGDB=y -CONFIG_CFG80211_USE_KERNEL_REGDB_KEYS=y -CONFIG_CFG80211_DEFAULT_PS=y -# CONFIG_CFG80211_DEBUGFS is not set -CONFIG_CFG80211_CRDA_SUPPORT=y -CONFIG_CFG80211_WEXT=y -CONFIG_MAC80211=m -CONFIG_MAC80211_HAS_RC=y -CONFIG_MAC80211_RC_MINSTREL=y -CONFIG_MAC80211_RC_DEFAULT_MINSTREL=y -CONFIG_MAC80211_RC_DEFAULT="minstrel_ht" -# CONFIG_MAC80211_MESH is not set -CONFIG_MAC80211_LEDS=y -# CONFIG_MAC80211_DEBUGFS is not set -# CONFIG_MAC80211_MESSAGE_TRACING is not set -# CONFIG_MAC80211_DEBUG_MENU is not set -CONFIG_MAC80211_STA_HASH_MAX_SIZE=0 -CONFIG_RFKILL=m -CONFIG_RFKILL_LEDS=y -CONFIG_RFKILL_INPUT=y -# CONFIG_RFKILL_GPIO is not set -CONFIG_NET_9P=y -CONFIG_NET_9P_FD=y -CONFIG_NET_9P_VIRTIO=y -# CONFIG_NET_9P_XEN is not set -# CONFIG_NET_9P_DEBUG is not set -# CONFIG_CAIF is not set -# CONFIG_CEPH_LIB is not set -# CONFIG_NFC is not set -# CONFIG_PSAMPLE is not set -# CONFIG_NET_IFE is not set -# CONFIG_LWTUNNEL is not set -CONFIG_DST_CACHE=y -CONFIG_GRO_CELLS=y -CONFIG_NET_SELFTESTS=y -CONFIG_PAGE_POOL=y -CONFIG_PAGE_POOL_STATS=y -CONFIG_FAILOVER=y -CONFIG_ETHTOOL_NETLINK=y - -# -# Device Drivers -# -CONFIG_ARM_AMBA=y -CONFIG_TEGRA_AHB=y -CONFIG_HAVE_PCI=y -CONFIG_PCI=y -CONFIG_PCI_DOMAINS=y -CONFIG_PCI_DOMAINS_GENERIC=y -CONFIG_PCI_SYSCALL=y -# CONFIG_PCIEPORTBUS is not set -CONFIG_PCIEASPM=y -CONFIG_PCIEASPM_DEFAULT=y -# CONFIG_PCIEASPM_POWERSAVE is not set -# CONFIG_PCIEASPM_POWER_SUPERSAVE is not set -# CONFIG_PCIEASPM_PERFORMANCE is not set -# CONFIG_PCIE_PTM is not set -CONFIG_PCI_MSI=y -CONFIG_PCI_MSI_IRQ_DOMAIN=y -CONFIG_PCI_QUIRKS=y -# CONFIG_PCI_DEBUG is not set -# CONFIG_PCI_REALLOC_ENABLE_AUTO is not set -# CONFIG_PCI_STUB is not set -# CONFIG_PCI_PF_STUB is not set -CONFIG_PCI_ATS=y -CONFIG_PCI_ECAM=y -CONFIG_PCI_BRIDGE_EMUL=y -CONFIG_PCI_IOV=y -# CONFIG_PCI_PRI is not set -# CONFIG_PCI_PASID is not set -CONFIG_PCI_LABEL=y -CONFIG_VGA_ARB=y -CONFIG_VGA_ARB_MAX_GPUS=16 -CONFIG_HOTPLUG_PCI=y -CONFIG_HOTPLUG_PCI_ACPI=y -# CONFIG_HOTPLUG_PCI_ACPI_IBM is not set -# CONFIG_HOTPLUG_PCI_CPCI is not set -# CONFIG_HOTPLUG_PCI_SHPC is not set - -# -# PCI controller drivers -# -CONFIG_PCI_AARDVARK=y -# CONFIG_PCIE_XILINX_NWL is not set -# CONFIG_PCI_FTPCI100 is not set -# CONFIG_PCI_TEGRA is not set -# CONFIG_PCIE_RCAR_HOST is not set -CONFIG_PCI_HOST_COMMON=y -CONFIG_PCI_HOST_GENERIC=y -# CONFIG_PCIE_XILINX is not set -# CONFIG_PCIE_XILINX_CPM is not set -CONFIG_PCI_XGENE=y -CONFIG_PCI_XGENE_MSI=y -# CONFIG_PCIE_ALTERA is not set -# CONFIG_PCI_HOST_THUNDER_PEM is not set -# CONFIG_PCI_HOST_THUNDER_ECAM is not set -# CONFIG_PCIE_ROCKCHIP_HOST is not set -# CONFIG_PCIE_MEDIATEK is not set -# CONFIG_PCIE_MEDIATEK_GEN3 is not set -# CONFIG_PCIE_MICROCHIP_HOST is not set -# CONFIG_PCIE_HISI_ERR is not set - -# -# DesignWare PCI Core Support -# -CONFIG_PCIE_DW=y -CONFIG_PCIE_DW_HOST=y -# CONFIG_PCIE_DW_PLAT_HOST is not set -# CONFIG_PCI_EXYNOS is not set -CONFIG_PCI_HISI=y -CONFIG_PCIE_QCOM=y -CONFIG_PCIE_ARMADA_8K=y -# CONFIG_PCIE_ROCKCHIP_DW_HOST is not set -CONFIG_PCIE_KIRIN=y -# CONFIG_PCIE_HISI_STB is not set -CONFIG_PCI_MESON=m -# CONFIG_PCIE_UNIPHIER is not set -# CONFIG_PCIE_AL is not set -# end of DesignWare PCI Core Support - -# -# Mobiveil PCIe Core Support -# -# CONFIG_PCIE_MOBIVEIL_PLAT is not set -# end of Mobiveil PCIe Core Support - -# -# Cadence PCIe controllers support -# -# CONFIG_PCIE_CADENCE_PLAT_HOST is not set -# CONFIG_PCI_J721E_HOST is not set -# end of Cadence PCIe controllers support -# end of PCI controller drivers - -# -# PCI Endpoint -# -# CONFIG_PCI_ENDPOINT is not set -# end of PCI Endpoint - -# -# PCI switch controller drivers -# -# CONFIG_PCI_SW_SWITCHTEC is not set -# end of PCI switch controller drivers - -# CONFIG_CXL_BUS is not set -# CONFIG_PCCARD is not set -# CONFIG_RAPIDIO is not set - -# -# Generic Driver Options -# -# CONFIG_UEVENT_HELPER is not set -CONFIG_DEVTMPFS=y -CONFIG_DEVTMPFS_MOUNT=y -# CONFIG_DEVTMPFS_SAFE is not set -CONFIG_STANDALONE=y -CONFIG_PREVENT_FIRMWARE_BUILD=y - -# -# Firmware loader -# -CONFIG_FW_LOADER=y -CONFIG_EXTRA_FIRMWARE="" -# CONFIG_FW_LOADER_USER_HELPER is not set -# CONFIG_FW_LOADER_COMPRESS is not set -CONFIG_FW_CACHE=y -# CONFIG_FW_UPLOAD is not set -# end of Firmware loader - -CONFIG_ALLOW_DEV_COREDUMP=y -# CONFIG_DEBUG_DRIVER is not set -# CONFIG_DEBUG_DEVRES is not set -# CONFIG_DEBUG_TEST_DRIVER_REMOVE is not set -# CONFIG_TEST_ASYNC_DRIVER_PROBE is not set -CONFIG_SYS_HYPERVISOR=y -CONFIG_GENERIC_CPU_AUTOPROBE=y -CONFIG_GENERIC_CPU_VULNERABILITIES=y -CONFIG_SOC_BUS=y -CONFIG_REGMAP=y -CONFIG_REGMAP_I2C=y -CONFIG_REGMAP_SPI=y -CONFIG_REGMAP_SPMI=y -CONFIG_REGMAP_MMIO=y -CONFIG_REGMAP_IRQ=y -CONFIG_DMA_SHARED_BUFFER=y -# CONFIG_DMA_FENCE_TRACE is not set -CONFIG_GENERIC_ARCH_TOPOLOGY=y -CONFIG_GENERIC_ARCH_NUMA=y -# end of Generic Driver Options - -# -# Bus devices -# -# CONFIG_BRCMSTB_GISB_ARB is not set -# CONFIG_MOXTET is not set -# CONFIG_HISILICON_LPC is not set -CONFIG_QCOM_EBI2=y -# CONFIG_QCOM_SSC_BLOCK_BUS is not set -CONFIG_SUN50I_DE2_BUS=y -CONFIG_SUNXI_RSB=y -# CONFIG_TEGRA_ACONNECT is not set -# CONFIG_TEGRA_GMI is not set -CONFIG_UNIPHIER_SYSTEM_BUS=y -CONFIG_VEXPRESS_CONFIG=y -# CONFIG_MHI_BUS is not set -# CONFIG_MHI_BUS_EP is not set -# end of Bus devices - -# CONFIG_CONNECTOR is not set - -# -# Firmware Drivers -# - -# -# ARM System Control and Management Interface Protocol -# -# CONFIG_ARM_SCMI_PROTOCOL is not set -# end of ARM System Control and Management Interface Protocol - -CONFIG_ARM_SCPI_PROTOCOL=y -CONFIG_ARM_SCPI_POWER_DOMAIN=y -# CONFIG_ARM_SDE_INTERFACE is not set -CONFIG_DMIID=y -# CONFIG_DMI_SYSFS is not set -# CONFIG_ISCSI_IBFT is not set -# CONFIG_FW_CFG_SYSFS is not set -CONFIG_QCOM_SCM=y -# CONFIG_QCOM_SCM_DOWNLOAD_MODE_DEFAULT is not set -# CONFIG_SYSFB_SIMPLEFB is not set -# CONFIG_TURRIS_MOX_RWTM is not set -# CONFIG_ARM_FFA_TRANSPORT is not set -# CONFIG_GOOGLE_FIRMWARE is not set - -# -# EFI (Extensible Firmware Interface) Support -# -CONFIG_EFI_ESRT=y -CONFIG_EFI_VARS_PSTORE=y -# CONFIG_EFI_VARS_PSTORE_DEFAULT_DISABLE is not set -CONFIG_EFI_PARAMS_FROM_FDT=y -CONFIG_EFI_RUNTIME_WRAPPERS=y -CONFIG_EFI_GENERIC_STUB=y -# CONFIG_EFI_ZBOOT is not set -CONFIG_EFI_ARMSTUB_DTB_LOADER=y -# CONFIG_EFI_GENERIC_STUB_INITRD_CMDLINE_LOADER is not set -# CONFIG_EFI_BOOTLOADER_CONTROL is not set -CONFIG_EFI_CAPSULE_LOADER=y -# CONFIG_EFI_TEST is not set -# CONFIG_RESET_ATTACK_MITIGATION is not set -# CONFIG_EFI_DISABLE_PCI_DMA is not set -CONFIG_EFI_EARLYCON=y -CONFIG_EFI_CUSTOM_SSDT_OVERLAYS=y -# CONFIG_EFI_DISABLE_RUNTIME is not set -# CONFIG_EFI_COCO_SECRET is not set -# end of EFI (Extensible Firmware Interface) Support - -CONFIG_UEFI_CPER=y -CONFIG_UEFI_CPER_ARM=y -CONFIG_MESON_SM=y -CONFIG_ARM_PSCI_FW=y -# CONFIG_ARM_PSCI_CHECKER is not set -CONFIG_HAVE_ARM_SMCCC=y -CONFIG_HAVE_ARM_SMCCC_DISCOVERY=y -CONFIG_ARM_SMCCC_SOC_ID=y - -# -# Tegra firmware driver -# -CONFIG_TEGRA_IVC=y -CONFIG_TEGRA_BPMP=y -# end of Tegra firmware driver - -# -# Zynq MPSoC Firmware Drivers -# -CONFIG_ZYNQMP_FIRMWARE=y -# CONFIG_ZYNQMP_FIRMWARE_DEBUG is not set -# end of Zynq MPSoC Firmware Drivers -# end of Firmware Drivers - -# CONFIG_GNSS is not set -CONFIG_MTD=y -# CONFIG_MTD_TESTS is not set - -# -# Partition parsers -# -# CONFIG_MTD_AR7_PARTS is not set -# CONFIG_MTD_CMDLINE_PARTS is not set -CONFIG_MTD_OF_PARTS=y -# CONFIG_MTD_AFS_PARTS is not set -# CONFIG_MTD_PARSER_TRX is not set -# CONFIG_MTD_REDBOOT_PARTS is not set -# CONFIG_MTD_QCOMSMEM_PARTS is not set -# end of Partition parsers - -# -# User Modules And Translation Layers -# -CONFIG_MTD_BLKDEVS=y -CONFIG_MTD_BLOCK=y - -# -# Note that in some cases UBI block is preferred. See MTD_UBI_BLOCK. -# -# CONFIG_FTL is not set -# CONFIG_NFTL is not set -# CONFIG_INFTL is not set -# CONFIG_RFD_FTL is not set -# CONFIG_SSFDC is not set -# CONFIG_SM_FTL is not set -# CONFIG_MTD_OOPS is not set -# CONFIG_MTD_SWAP is not set -# CONFIG_MTD_PARTITIONED_MASTER is not set - -# -# RAM/ROM/Flash chip drivers -# -# CONFIG_MTD_CFI is not set -# CONFIG_MTD_JEDECPROBE is not set -CONFIG_MTD_MAP_BANK_WIDTH_1=y -CONFIG_MTD_MAP_BANK_WIDTH_2=y -CONFIG_MTD_MAP_BANK_WIDTH_4=y -CONFIG_MTD_CFI_I1=y -CONFIG_MTD_CFI_I2=y -# CONFIG_MTD_RAM is not set -# CONFIG_MTD_ROM is not set -# CONFIG_MTD_ABSENT is not set -# end of RAM/ROM/Flash chip drivers - -# -# Mapping drivers for chip access -# -# CONFIG_MTD_COMPLEX_MAPPINGS is not set -# CONFIG_MTD_INTEL_VR_NOR is not set -# CONFIG_MTD_PLATRAM is not set -# end of Mapping drivers for chip access - -# -# Self-contained MTD device drivers -# -# CONFIG_MTD_PMC551 is not set -# CONFIG_MTD_DATAFLASH is not set -# CONFIG_MTD_MCHP23K256 is not set -# CONFIG_MTD_MCHP48L640 is not set -# CONFIG_MTD_SST25L is not set -# CONFIG_MTD_SLRAM is not set -# CONFIG_MTD_PHRAM is not set -# CONFIG_MTD_MTDRAM is not set -# CONFIG_MTD_BLOCK2MTD is not set - -# -# Disk-On-Chip Device Drivers -# -# CONFIG_MTD_DOCG3 is not set -# end of Self-contained MTD device drivers - -# -# NAND -# -# CONFIG_MTD_ONENAND is not set -# CONFIG_MTD_RAW_NAND is not set -# CONFIG_MTD_SPI_NAND is not set - -# -# ECC engine support -# -# CONFIG_MTD_NAND_ECC_SW_HAMMING is not set -# CONFIG_MTD_NAND_ECC_SW_BCH is not set -# CONFIG_MTD_NAND_ECC_MXIC is not set -# CONFIG_MTD_NAND_ECC_MEDIATEK is not set -# end of ECC engine support -# end of NAND - -# -# LPDDR & LPDDR2 PCM memory drivers -# -# CONFIG_MTD_LPDDR is not set -# end of LPDDR & LPDDR2 PCM memory drivers - -CONFIG_MTD_SPI_NOR=y -CONFIG_MTD_SPI_NOR_USE_4K_SECTORS=y -# CONFIG_MTD_SPI_NOR_SWP_DISABLE is not set -CONFIG_MTD_SPI_NOR_SWP_DISABLE_ON_VOLATILE=y -# CONFIG_MTD_SPI_NOR_SWP_KEEP is not set -# CONFIG_SPI_HISI_SFC is not set -# CONFIG_MTD_UBI is not set -# CONFIG_MTD_HYPERBUS is not set -CONFIG_DTC=y -CONFIG_OF=y -# CONFIG_OF_UNITTEST is not set -CONFIG_OF_FLATTREE=y -CONFIG_OF_EARLY_FLATTREE=y -CONFIG_OF_KOBJ=y -CONFIG_OF_ADDRESS=y -CONFIG_OF_IRQ=y -CONFIG_OF_RESERVED_MEM=y -# CONFIG_OF_OVERLAY is not set -CONFIG_OF_NUMA=y -# CONFIG_PARPORT is not set -CONFIG_PNP=y -CONFIG_PNP_DEBUG_MESSAGES=y - -# -# Protocols -# -CONFIG_PNPACPI=y -CONFIG_BLK_DEV=y -# CONFIG_BLK_DEV_NULL_BLK is not set -# CONFIG_BLK_DEV_PCIESSD_MTIP32XX is not set -CONFIG_BLK_DEV_LOOP=y -CONFIG_BLK_DEV_LOOP_MIN_COUNT=8 -# CONFIG_BLK_DEV_DRBD is not set -CONFIG_BLK_DEV_NBD=m -# CONFIG_BLK_DEV_RAM is not set -# CONFIG_CDROM_PKTCDVD is not set -# CONFIG_ATA_OVER_ETH is not set -CONFIG_XEN_BLKDEV_FRONTEND=y -# CONFIG_XEN_BLKDEV_BACKEND is not set -CONFIG_VIRTIO_BLK=y -# CONFIG_BLK_DEV_RBD is not set -# CONFIG_BLK_DEV_UBLK is not set - -# -# NVME Support -# -CONFIG_NVME_CORE=m -CONFIG_BLK_DEV_NVME=m -# CONFIG_NVME_MULTIPATH is not set -# CONFIG_NVME_VERBOSE_ERRORS is not set -# CONFIG_NVME_HWMON is not set -# CONFIG_NVME_FC is not set -# CONFIG_NVME_TCP is not set -# CONFIG_NVME_AUTH is not set -# CONFIG_NVME_TARGET is not set -# end of NVME Support - -# -# Misc devices -# -# CONFIG_AD525X_DPOT is not set -# CONFIG_DUMMY_IRQ is not set -# CONFIG_PHANTOM is not set -# CONFIG_TIFM_CORE is not set -# CONFIG_ICS932S401 is not set -# CONFIG_ENCLOSURE_SERVICES is not set -# CONFIG_HI6421V600_IRQ is not set -# CONFIG_HP_ILO is not set -# CONFIG_QCOM_COINCELL is not set -# CONFIG_QCOM_FASTRPC is not set -# CONFIG_APDS9802ALS is not set -# CONFIG_ISL29003 is not set -# CONFIG_ISL29020 is not set -# CONFIG_SENSORS_TSL2550 is not set -# CONFIG_SENSORS_BH1770 is not set -# CONFIG_SENSORS_APDS990X is not set -# CONFIG_HMC6352 is not set -# CONFIG_DS1682 is not set -# CONFIG_LATTICE_ECP3_CONFIG is not set -CONFIG_SRAM=y -# CONFIG_DW_XDATA_PCIE is not set -# CONFIG_PCI_ENDPOINT_TEST is not set -# CONFIG_XILINX_SDFEC is not set -# CONFIG_HISI_HIKEY_USB is not set -# CONFIG_OPEN_DICE is not set -# CONFIG_VCPU_STALL_DETECTOR is not set -# CONFIG_C2PORT is not set - -# -# EEPROM support -# -# CONFIG_EEPROM_AT24 is not set -CONFIG_EEPROM_AT25=m -# CONFIG_EEPROM_LEGACY is not set -# CONFIG_EEPROM_MAX6875 is not set -# CONFIG_EEPROM_93CX6 is not set -# CONFIG_EEPROM_93XX46 is not set -# CONFIG_EEPROM_IDT_89HPESX is not set -# CONFIG_EEPROM_EE1004 is not set -# end of EEPROM support - -# CONFIG_CB710_CORE is not set - -# -# Texas Instruments shared transport line discipline -# -# CONFIG_TI_ST is not set -# end of Texas Instruments shared transport line discipline - -# CONFIG_SENSORS_LIS3_I2C is not set -# CONFIG_ALTERA_STAPL is not set -# CONFIG_VMWARE_VMCI is not set -# CONFIG_GENWQE is not set -# CONFIG_ECHO is not set -# CONFIG_BCM_VK is not set -# CONFIG_MISC_ALCOR_PCI is not set -# CONFIG_MISC_RTSX_PCI is not set -# CONFIG_MISC_RTSX_USB is not set -# CONFIG_HABANA_AI is not set -# CONFIG_UACCE is not set -# CONFIG_PVPANIC is not set -# CONFIG_GP_PCI1XXXX is not set -CONFIG_SUNXI_ADDR_MGT=m -# end of Misc devices - -# -# SCSI device support -# -CONFIG_SCSI_MOD=y -# CONFIG_RAID_ATTRS is not set -CONFIG_SCSI_COMMON=y -CONFIG_SCSI=y -CONFIG_SCSI_DMA=y -# CONFIG_SCSI_PROC_FS is not set - -# -# SCSI support type (disk, tape, CD-ROM) -# -CONFIG_BLK_DEV_SD=y -# CONFIG_CHR_DEV_ST is not set -# CONFIG_BLK_DEV_SR is not set -# CONFIG_CHR_DEV_SG is not set -CONFIG_BLK_DEV_BSG=y -# CONFIG_CHR_DEV_SCH is not set -# CONFIG_SCSI_CONSTANTS is not set -# CONFIG_SCSI_LOGGING is not set -# CONFIG_SCSI_SCAN_ASYNC is not set - -# -# SCSI Transports -# -# CONFIG_SCSI_SPI_ATTRS is not set -# CONFIG_SCSI_FC_ATTRS is not set -# CONFIG_SCSI_ISCSI_ATTRS is not set -CONFIG_SCSI_SAS_ATTRS=y -CONFIG_SCSI_SAS_LIBSAS=y -CONFIG_SCSI_SAS_ATA=y -CONFIG_SCSI_SAS_HOST_SMP=y -# CONFIG_SCSI_SRP_ATTRS is not set -# end of SCSI Transports - -CONFIG_SCSI_LOWLEVEL=y -# CONFIG_ISCSI_TCP is not set -# CONFIG_ISCSI_BOOT_SYSFS is not set -# CONFIG_SCSI_CXGB3_ISCSI is not set -# CONFIG_SCSI_CXGB4_ISCSI is not set -# CONFIG_SCSI_BNX2_ISCSI is not set -# CONFIG_BE2ISCSI is not set -# CONFIG_BLK_DEV_3W_XXXX_RAID is not set -# CONFIG_SCSI_HPSA is not set -# CONFIG_SCSI_3W_9XXX is not set -# CONFIG_SCSI_3W_SAS is not set -# CONFIG_SCSI_ACARD is not set -# CONFIG_SCSI_AACRAID is not set -# CONFIG_SCSI_AIC7XXX is not set -# CONFIG_SCSI_AIC79XX is not set -# CONFIG_SCSI_AIC94XX is not set -CONFIG_SCSI_HISI_SAS=y -CONFIG_SCSI_HISI_SAS_PCI=y -# CONFIG_SCSI_HISI_SAS_DEBUGFS_DEFAULT_ENABLE is not set -# CONFIG_SCSI_MVSAS is not set -# CONFIG_SCSI_MVUMI is not set -# CONFIG_SCSI_ADVANSYS is not set -# CONFIG_SCSI_ARCMSR is not set -# CONFIG_SCSI_ESAS2R is not set -# CONFIG_MEGARAID_NEWGEN is not set -# CONFIG_MEGARAID_LEGACY is not set -# CONFIG_MEGARAID_SAS is not set -# CONFIG_SCSI_MPT3SAS is not set -# CONFIG_SCSI_MPT2SAS is not set -# CONFIG_SCSI_MPI3MR is not set -# CONFIG_SCSI_SMARTPQI is not set -# CONFIG_SCSI_HPTIOP is not set -# CONFIG_SCSI_BUSLOGIC is not set -# CONFIG_SCSI_MYRB is not set -# CONFIG_SCSI_MYRS is not set -# CONFIG_XEN_SCSI_FRONTEND is not set -# CONFIG_SCSI_SNIC is not set -# CONFIG_SCSI_DMX3191D is not set -# CONFIG_SCSI_FDOMAIN_PCI is not set -# CONFIG_SCSI_IPS is not set -# CONFIG_SCSI_INITIO is not set -# CONFIG_SCSI_INIA100 is not set -# CONFIG_SCSI_STEX is not set -# CONFIG_SCSI_SYM53C8XX_2 is not set -# CONFIG_SCSI_IPR is not set -# CONFIG_SCSI_QLOGIC_1280 is not set -# CONFIG_SCSI_QLA_ISCSI is not set -# CONFIG_SCSI_DC395x is not set -# CONFIG_SCSI_AM53C974 is not set -# CONFIG_SCSI_WD719X is not set -# CONFIG_SCSI_DEBUG is not set -# CONFIG_SCSI_PMCRAID is not set -# CONFIG_SCSI_PM8001 is not set -# CONFIG_SCSI_VIRTIO is not set -# CONFIG_SCSI_DH is not set -# end of SCSI device support - -CONFIG_ATA=y -CONFIG_SATA_HOST=y -CONFIG_PATA_TIMINGS=y -CONFIG_ATA_VERBOSE_ERROR=y -CONFIG_ATA_FORCE=y -CONFIG_ATA_ACPI=y -# CONFIG_SATA_ZPODD is not set -CONFIG_SATA_PMP=y - -# -# Controllers with non-SFF native interface -# -CONFIG_SATA_AHCI=y -CONFIG_SATA_MOBILE_LPM_POLICY=0 -CONFIG_SATA_AHCI_PLATFORM=y -# CONFIG_AHCI_DWC is not set -CONFIG_AHCI_CEVA=y -# CONFIG_AHCI_MTK is not set -CONFIG_AHCI_MVEBU=y -# CONFIG_AHCI_SUNXI is not set -# CONFIG_AHCI_TEGRA is not set -CONFIG_AHCI_XGENE=y -CONFIG_AHCI_QORIQ=y -# CONFIG_SATA_AHCI_SEATTLE is not set -# CONFIG_SATA_INIC162X is not set -# CONFIG_SATA_ACARD_AHCI is not set -CONFIG_SATA_SIL24=y -CONFIG_ATA_SFF=y - -# -# SFF controllers with custom DMA interface -# -# CONFIG_PDC_ADMA is not set -# CONFIG_SATA_QSTOR is not set -# CONFIG_SATA_SX4 is not set -CONFIG_ATA_BMDMA=y - -# -# SATA SFF controllers with BMDMA -# -# CONFIG_ATA_PIIX is not set -# CONFIG_SATA_DWC is not set -# CONFIG_SATA_MV is not set -# CONFIG_SATA_NV is not set -# CONFIG_SATA_PROMISE is not set -CONFIG_SATA_RCAR=y -# CONFIG_SATA_SIL is not set -# CONFIG_SATA_SIS is not set -# CONFIG_SATA_SVW is not set -# CONFIG_SATA_ULI is not set -# CONFIG_SATA_VIA is not set -# CONFIG_SATA_VITESSE is not set - -# -# PATA SFF controllers with BMDMA -# -# CONFIG_PATA_ALI is not set -# CONFIG_PATA_AMD is not set -# CONFIG_PATA_ARTOP is not set -# CONFIG_PATA_ATIIXP is not set -# CONFIG_PATA_ATP867X is not set -# CONFIG_PATA_CMD64X is not set -# CONFIG_PATA_CYPRESS is not set -# CONFIG_PATA_EFAR is not set -# CONFIG_PATA_HPT366 is not set -# CONFIG_PATA_HPT37X is not set -# CONFIG_PATA_HPT3X2N is not set -# CONFIG_PATA_HPT3X3 is not set -# CONFIG_PATA_IT8213 is not set -# CONFIG_PATA_IT821X is not set -# CONFIG_PATA_JMICRON is not set -# CONFIG_PATA_MARVELL is not set -# CONFIG_PATA_NETCELL is not set -# CONFIG_PATA_NINJA32 is not set -# CONFIG_PATA_NS87415 is not set -# CONFIG_PATA_OLDPIIX is not set -# CONFIG_PATA_OPTIDMA is not set -# CONFIG_PATA_PDC2027X is not set -# CONFIG_PATA_PDC_OLD is not set -# CONFIG_PATA_RADISYS is not set -# CONFIG_PATA_RDC is not set -# CONFIG_PATA_SCH is not set -# CONFIG_PATA_SERVERWORKS is not set -# CONFIG_PATA_SIL680 is not set -# CONFIG_PATA_SIS is not set -# CONFIG_PATA_TOSHIBA is not set -# CONFIG_PATA_TRIFLEX is not set -# CONFIG_PATA_VIA is not set -# CONFIG_PATA_WINBOND is not set - -# -# PIO-only SFF controllers -# -# CONFIG_PATA_CMD640_PCI is not set -# CONFIG_PATA_MPIIX is not set -# CONFIG_PATA_NS87410 is not set -# CONFIG_PATA_OPTI is not set -CONFIG_PATA_PLATFORM=y -CONFIG_PATA_OF_PLATFORM=y -# CONFIG_PATA_RZ1000 is not set - -# -# Generic fallback / legacy drivers -# -# CONFIG_PATA_ACPI is not set -# CONFIG_ATA_GENERIC is not set -# CONFIG_PATA_LEGACY is not set -# CONFIG_MD is not set -# CONFIG_TARGET_CORE is not set -# CONFIG_FUSION is not set - -# -# IEEE 1394 (FireWire) support -# -# CONFIG_FIREWIRE is not set -# CONFIG_FIREWIRE_NOSY is not set -# end of IEEE 1394 (FireWire) support - -CONFIG_NETDEVICES=y -CONFIG_MII=y -CONFIG_NET_CORE=y -# CONFIG_BONDING is not set -# CONFIG_DUMMY is not set -# CONFIG_WIREGUARD is not set -# CONFIG_EQUALIZER is not set -# CONFIG_NET_FC is not set -# CONFIG_NET_TEAM is not set -CONFIG_MACVLAN=m -CONFIG_MACVTAP=m -# CONFIG_IPVLAN is not set -# CONFIG_VXLAN is not set -# CONFIG_GENEVE is not set -# CONFIG_BAREUDP is not set -# CONFIG_GTP is not set -# CONFIG_AMT is not set -# CONFIG_MACSEC is not set -# CONFIG_NETCONSOLE is not set -CONFIG_TUN=y -CONFIG_TAP=m -# CONFIG_TUN_VNET_CROSS_LE is not set -CONFIG_VETH=m -CONFIG_VIRTIO_NET=y -# CONFIG_NLMON is not set -# CONFIG_ARCNET is not set -CONFIG_ETHERNET=y -CONFIG_NET_VENDOR_3COM=y -# CONFIG_VORTEX is not set -# CONFIG_TYPHOON is not set -CONFIG_NET_VENDOR_ADAPTEC=y -# CONFIG_ADAPTEC_STARFIRE is not set -CONFIG_NET_VENDOR_AGERE=y -# CONFIG_ET131X is not set -CONFIG_NET_VENDOR_ALACRITECH=y -# CONFIG_SLICOSS is not set -CONFIG_NET_VENDOR_ALLWINNER=y -# CONFIG_SUN4I_EMAC is not set -CONFIG_NET_VENDOR_ALTEON=y -# CONFIG_ACENIC is not set -# CONFIG_ALTERA_TSE is not set -CONFIG_NET_VENDOR_AMAZON=y -# CONFIG_ENA_ETHERNET is not set -CONFIG_NET_VENDOR_AMD=y -# CONFIG_AMD8111_ETH is not set -# CONFIG_PCNET32 is not set -CONFIG_AMD_XGBE=y -CONFIG_NET_XGENE=y -# CONFIG_NET_XGENE_V2 is not set -CONFIG_NET_VENDOR_AQUANTIA=y -# CONFIG_AQTION is not set -CONFIG_NET_VENDOR_ARC=y -# CONFIG_EMAC_ROCKCHIP is not set -CONFIG_NET_VENDOR_ASIX=y -# CONFIG_SPI_AX88796C is not set -CONFIG_NET_VENDOR_ATHEROS=y -# CONFIG_ATL2 is not set -# CONFIG_ATL1 is not set -# CONFIG_ATL1E is not set -# CONFIG_ATL1C is not set -# CONFIG_ALX is not set -CONFIG_NET_VENDOR_BROADCOM=y -# CONFIG_B44 is not set -# CONFIG_BCMGENET is not set -# CONFIG_BNX2 is not set -# CONFIG_CNIC is not set -# CONFIG_TIGON3 is not set -# CONFIG_BNX2X is not set -# CONFIG_SYSTEMPORT is not set -# CONFIG_BNXT is not set -CONFIG_NET_VENDOR_CADENCE=y -CONFIG_MACB=y -CONFIG_MACB_USE_HWSTAMP=y -# CONFIG_MACB_PCI is not set -CONFIG_NET_VENDOR_CAVIUM=y -# CONFIG_THUNDER_NIC_PF is not set -# CONFIG_THUNDER_NIC_VF is not set -# CONFIG_THUNDER_NIC_BGX is not set -# CONFIG_THUNDER_NIC_RGX is not set -# CONFIG_CAVIUM_PTP is not set -# CONFIG_LIQUIDIO is not set -# CONFIG_LIQUIDIO_VF is not set -CONFIG_NET_VENDOR_CHELSIO=y -# CONFIG_CHELSIO_T1 is not set -# CONFIG_CHELSIO_T3 is not set -# CONFIG_CHELSIO_T4 is not set -# CONFIG_CHELSIO_T4VF is not set -CONFIG_NET_VENDOR_CISCO=y -# CONFIG_ENIC is not set -CONFIG_NET_VENDOR_CORTINA=y -# CONFIG_GEMINI_ETHERNET is not set -CONFIG_NET_VENDOR_DAVICOM=y -# CONFIG_DM9051 is not set -# CONFIG_DNET is not set -CONFIG_NET_VENDOR_DEC=y -# CONFIG_NET_TULIP is not set -CONFIG_NET_VENDOR_DLINK=y -# CONFIG_DL2K is not set -# CONFIG_SUNDANCE is not set -CONFIG_NET_VENDOR_EMULEX=y -# CONFIG_BE2NET is not set -CONFIG_NET_VENDOR_ENGLEDER=y -# CONFIG_TSNEP is not set -CONFIG_NET_VENDOR_EZCHIP=y -# CONFIG_EZCHIP_NPS_MANAGEMENT_ENET is not set -CONFIG_NET_VENDOR_FUNGIBLE=y -# CONFIG_FUN_ETH is not set -CONFIG_NET_VENDOR_GOOGLE=y -# CONFIG_GVE is not set -CONFIG_NET_VENDOR_HISILICON=y -# CONFIG_HIX5HD2_GMAC is not set -# CONFIG_HISI_FEMAC is not set -# CONFIG_HIP04_ETH is not set -CONFIG_HNS_MDIO=y -CONFIG_HNS=y -CONFIG_HNS_DSAF=y -CONFIG_HNS_ENET=y -# CONFIG_HNS3 is not set -CONFIG_NET_VENDOR_HUAWEI=y -# CONFIG_HINIC is not set -CONFIG_NET_VENDOR_I825XX=y -CONFIG_NET_VENDOR_INTEL=y -# CONFIG_E100 is not set -# CONFIG_E1000 is not set -CONFIG_E1000E=y -CONFIG_IGB=y -CONFIG_IGB_HWMON=y -CONFIG_IGBVF=y -# CONFIG_IXGB is not set -# CONFIG_IXGBE is not set -# CONFIG_IXGBEVF is not set -# CONFIG_I40E is not set -# CONFIG_I40EVF is not set -# CONFIG_ICE is not set -# CONFIG_FM10K is not set -# CONFIG_IGC is not set -CONFIG_NET_VENDOR_WANGXUN=y -# CONFIG_NGBE is not set -# CONFIG_TXGBE is not set -# CONFIG_JME is not set -CONFIG_NET_VENDOR_ADI=y -CONFIG_NET_VENDOR_LITEX=y -# CONFIG_LITEX_LITEETH is not set -CONFIG_NET_VENDOR_MARVELL=y -CONFIG_MVMDIO=y -CONFIG_MVNETA=y -CONFIG_MVPP2=y -# CONFIG_MVPP2_PTP is not set -# CONFIG_PXA168_ETH is not set -# CONFIG_SKGE is not set -CONFIG_SKY2=y -# CONFIG_SKY2_DEBUG is not set -# CONFIG_OCTEONTX2_AF is not set -# CONFIG_OCTEONTX2_PF is not set -# CONFIG_OCTEON_EP is not set -# CONFIG_NET_VENDOR_MEDIATEK is not set -CONFIG_NET_VENDOR_MELLANOX=y -# CONFIG_MLX4_EN is not set -# CONFIG_MLX5_CORE is not set -# CONFIG_MLXSW_CORE is not set -# CONFIG_MLXFW is not set -# CONFIG_MLXBF_GIGE is not set -CONFIG_NET_VENDOR_MICREL=y -# CONFIG_KS8842 is not set -# CONFIG_KS8851 is not set -# CONFIG_KS8851_MLL is not set -# CONFIG_KSZ884X_PCI is not set -CONFIG_NET_VENDOR_MICROCHIP=y -# CONFIG_ENC28J60 is not set -# CONFIG_ENCX24J600 is not set -# CONFIG_LAN743X is not set -CONFIG_NET_VENDOR_MICROSEMI=y -CONFIG_NET_VENDOR_MICROSOFT=y -CONFIG_NET_VENDOR_MYRI=y -# CONFIG_MYRI10GE is not set -# CONFIG_FEALNX is not set -CONFIG_NET_VENDOR_NI=y -# CONFIG_NI_XGE_MANAGEMENT_ENET is not set -CONFIG_NET_VENDOR_NATSEMI=y -# CONFIG_NATSEMI is not set -# CONFIG_NS83820 is not set -CONFIG_NET_VENDOR_NETERION=y -# CONFIG_S2IO is not set -CONFIG_NET_VENDOR_NETRONOME=y -# CONFIG_NFP is not set -CONFIG_NET_VENDOR_8390=y -# CONFIG_NE2K_PCI is not set -CONFIG_NET_VENDOR_NVIDIA=y -# CONFIG_FORCEDETH is not set -CONFIG_NET_VENDOR_OKI=y -# CONFIG_ETHOC is not set -CONFIG_NET_VENDOR_PACKET_ENGINES=y -# CONFIG_HAMACHI is not set -# CONFIG_YELLOWFIN is not set -CONFIG_NET_VENDOR_PENSANDO=y -# CONFIG_IONIC is not set -CONFIG_NET_VENDOR_QLOGIC=y -# CONFIG_QLA3XXX is not set -# CONFIG_QLCNIC is not set -# CONFIG_NETXEN_NIC is not set -# CONFIG_QED is not set -CONFIG_NET_VENDOR_BROCADE=y -# CONFIG_BNA is not set -CONFIG_NET_VENDOR_QUALCOMM=y -# CONFIG_QCA7000_SPI is not set -# CONFIG_QCA7000_UART is not set -CONFIG_QCOM_EMAC=m -# CONFIG_RMNET is not set -CONFIG_NET_VENDOR_RDC=y -# CONFIG_R6040 is not set -CONFIG_NET_VENDOR_REALTEK=y -# CONFIG_8139CP is not set -# CONFIG_8139TOO is not set -# CONFIG_R8169 is not set -CONFIG_NET_VENDOR_RENESAS=y -# CONFIG_SH_ETH is not set -CONFIG_RAVB=y -CONFIG_NET_VENDOR_ROCKER=y -CONFIG_NET_VENDOR_SAMSUNG=y -# CONFIG_SXGBE_ETH is not set -CONFIG_NET_VENDOR_SEEQ=y -CONFIG_NET_VENDOR_SILAN=y -# CONFIG_SC92031 is not set -CONFIG_NET_VENDOR_SIS=y -# CONFIG_SIS900 is not set -# CONFIG_SIS190 is not set -CONFIG_NET_VENDOR_SOLARFLARE=y -# CONFIG_SFC is not set -# CONFIG_SFC_FALCON is not set -# CONFIG_SFC_SIENA is not set -CONFIG_NET_VENDOR_SMSC=y -CONFIG_SMC91X=y -# CONFIG_EPIC100 is not set -CONFIG_SMSC911X=y -# CONFIG_SMSC9420 is not set -CONFIG_NET_VENDOR_SOCIONEXT=y -# CONFIG_SNI_AVE is not set -CONFIG_NET_VENDOR_STMICRO=y -CONFIG_STMMAC_ETH=m -# CONFIG_STMMAC_SELFTESTS is not set -CONFIG_STMMAC_PLATFORM=m -# CONFIG_DWMAC_DWC_QOS_ETH is not set -CONFIG_DWMAC_GENERIC=m -CONFIG_DWMAC_IPQ806X=m -# CONFIG_DWMAC_MEDIATEK is not set -CONFIG_DWMAC_MESON=m -CONFIG_DWMAC_QCOM_ETHQOS=m -CONFIG_DWMAC_ROCKCHIP=m -CONFIG_DWMAC_SUNXI=m -CONFIG_DWMAC_SUN8I=m -# CONFIG_DWMAC_INTEL_PLAT is not set -# CONFIG_DWMAC_LOONGSON is not set -# CONFIG_STMMAC_PCI is not set -CONFIG_NET_VENDOR_SUN=y -# CONFIG_HAPPYMEAL is not set -# CONFIG_SUNGEM is not set -# CONFIG_CASSINI is not set -# CONFIG_NIU is not set -CONFIG_NET_VENDOR_SYNOPSYS=y -# CONFIG_DWC_XLGMAC is not set -CONFIG_NET_VENDOR_TEHUTI=y -# CONFIG_TEHUTI is not set -CONFIG_NET_VENDOR_TI=y -# CONFIG_TI_CPSW_PHY_SEL is not set -# CONFIG_TLAN is not set -CONFIG_NET_VENDOR_VERTEXCOM=y -# CONFIG_MSE102X is not set -CONFIG_NET_VENDOR_VIA=y -# CONFIG_VIA_RHINE is not set -# CONFIG_VIA_VELOCITY is not set -CONFIG_NET_VENDOR_WIZNET=y -# CONFIG_WIZNET_W5100 is not set -# CONFIG_WIZNET_W5300 is not set -CONFIG_NET_VENDOR_XILINX=y -# CONFIG_XILINX_EMACLITE is not set -# CONFIG_XILINX_AXI_EMAC is not set -# CONFIG_XILINX_LL_TEMAC is not set -# CONFIG_FDDI is not set -# CONFIG_HIPPI is not set -# CONFIG_NET_SB1000 is not set -CONFIG_PHYLINK=y -CONFIG_PHYLIB=y -CONFIG_SWPHY=y -# CONFIG_LED_TRIGGER_PHY is not set -CONFIG_FIXED_PHY=y -# CONFIG_SFP is not set - -# -# MII PHY device drivers -# -# CONFIG_AMD_PHY is not set -CONFIG_MESON_GXL_PHY=m -# CONFIG_ADIN_PHY is not set -# CONFIG_ADIN1100_PHY is not set -# CONFIG_AQUANTIA_PHY is not set -CONFIG_AX88796B_PHY=m -# CONFIG_BROADCOM_PHY is not set -# CONFIG_BCM54140_PHY is not set -# CONFIG_BCM7XXX_PHY is not set -# CONFIG_BCM84881_PHY is not set -# CONFIG_BCM87XX_PHY is not set -# CONFIG_CICADA_PHY is not set -# CONFIG_CORTINA_PHY is not set -# CONFIG_DAVICOM_PHY is not set -# CONFIG_ICPLUS_PHY is not set -# CONFIG_LXT_PHY is not set -# CONFIG_INTEL_XWAY_PHY is not set -# CONFIG_LSI_ET1011C_PHY is not set -CONFIG_MARVELL_PHY=m -# CONFIG_MARVELL_10G_PHY is not set -# CONFIG_MARVELL_88X2222_PHY is not set -# CONFIG_MAXLINEAR_GPHY is not set -# CONFIG_MEDIATEK_GE_PHY is not set -CONFIG_MICREL_PHY=y -# CONFIG_MICROCHIP_PHY is not set -# CONFIG_MICROCHIP_T1_PHY is not set -# CONFIG_MICROSEMI_PHY is not set -# CONFIG_MOTORCOMM_PHY is not set -# CONFIG_NATIONAL_PHY is not set -# CONFIG_NXP_C45_TJA11XX_PHY is not set -# CONFIG_NXP_TJA11XX_PHY is not set -CONFIG_AT803X_PHY=m -# CONFIG_QSEMI_PHY is not set -CONFIG_REALTEK_PHY=m -# CONFIG_RENESAS_PHY is not set -CONFIG_ROCKCHIP_PHY=y -CONFIG_SMSC_PHY=m -# CONFIG_STE10XP is not set -# CONFIG_TERANETICS_PHY is not set -# CONFIG_DP83822_PHY is not set -# CONFIG_DP83TC811_PHY is not set -# CONFIG_DP83848_PHY is not set -# CONFIG_DP83867_PHY is not set -# CONFIG_DP83869_PHY is not set -# CONFIG_DP83TD510_PHY is not set -# CONFIG_VITESSE_PHY is not set -# CONFIG_XILINX_GMII2RGMII is not set -# CONFIG_MICREL_KS8995MA is not set -# CONFIG_PSE_CONTROLLER is not set -CONFIG_MDIO_DEVICE=y -CONFIG_MDIO_BUS=y -CONFIG_FWNODE_MDIO=y -CONFIG_OF_MDIO=y -CONFIG_ACPI_MDIO=y -CONFIG_MDIO_DEVRES=y -# CONFIG_MDIO_SUN4I is not set -CONFIG_MDIO_XGENE=y -CONFIG_MDIO_BITBANG=y -# CONFIG_MDIO_BCM_UNIMAC is not set -# CONFIG_MDIO_GPIO is not set -# CONFIG_MDIO_HISI_FEMAC is not set -# CONFIG_MDIO_MVUSB is not set -# CONFIG_MDIO_MSCC_MIIM is not set -# CONFIG_MDIO_OCTEON is not set -# CONFIG_MDIO_IPQ4019 is not set -# CONFIG_MDIO_IPQ8064 is not set -# CONFIG_MDIO_THUNDER is not set - -# -# MDIO Multiplexers -# -CONFIG_MDIO_BUS_MUX=y -CONFIG_MDIO_BUS_MUX_MESON_G12A=m -# CONFIG_MDIO_BUS_MUX_GPIO is not set -# CONFIG_MDIO_BUS_MUX_MULTIPLEXER is not set -CONFIG_MDIO_BUS_MUX_MMIOREG=y - -# -# PCS device drivers -# -CONFIG_PCS_XPCS=m -# end of PCS device drivers - -# CONFIG_PPP is not set -# CONFIG_SLIP is not set -CONFIG_USB_NET_DRIVERS=y -# CONFIG_USB_CATC is not set -# CONFIG_USB_KAWETH is not set -CONFIG_USB_PEGASUS=m -CONFIG_USB_RTL8150=m -CONFIG_USB_RTL8152=m -# CONFIG_USB_LAN78XX is not set -CONFIG_USB_USBNET=m -CONFIG_USB_NET_AX8817X=m -CONFIG_USB_NET_AX88179_178A=m -CONFIG_USB_NET_CDCETHER=m -# CONFIG_USB_NET_CDC_EEM is not set -CONFIG_USB_NET_CDC_NCM=m -# CONFIG_USB_NET_HUAWEI_CDC_NCM is not set -# CONFIG_USB_NET_CDC_MBIM is not set -CONFIG_USB_NET_DM9601=m -# CONFIG_USB_NET_SR9700 is not set -CONFIG_USB_NET_SR9800=m -CONFIG_USB_NET_SMSC75XX=m -CONFIG_USB_NET_SMSC95XX=m -# CONFIG_USB_NET_GL620A is not set -CONFIG_USB_NET_NET1080=m -CONFIG_USB_NET_PLUSB=m -CONFIG_USB_NET_MCS7830=m -# CONFIG_USB_NET_RNDIS_HOST is not set -CONFIG_USB_NET_CDC_SUBSET_ENABLE=m -CONFIG_USB_NET_CDC_SUBSET=m -# CONFIG_USB_ALI_M5632 is not set -# CONFIG_USB_AN2720 is not set -CONFIG_USB_BELKIN=y -CONFIG_USB_ARMLINUX=y -# CONFIG_USB_EPSON2888 is not set -# CONFIG_USB_KC2190 is not set -CONFIG_USB_NET_ZAURUS=m -# CONFIG_USB_NET_CX82310_ETH is not set -# CONFIG_USB_NET_KALMIA is not set -# CONFIG_USB_NET_QMI_WWAN is not set -# CONFIG_USB_HSO is not set -# CONFIG_USB_NET_INT51X1 is not set -# CONFIG_USB_IPHETH is not set -# CONFIG_USB_SIERRA_NET is not set -# CONFIG_USB_VL600 is not set -# CONFIG_USB_NET_CH9200 is not set -# CONFIG_USB_NET_AQC111 is not set -CONFIG_USB_RTL8153_ECM=m -CONFIG_WLAN=y -CONFIG_WLAN_VENDOR_ADMTEK=y -# CONFIG_ADM8211 is not set -CONFIG_WLAN_VENDOR_ATH=y -# CONFIG_ATH_DEBUG is not set -# CONFIG_ATH5K is not set -# CONFIG_ATH5K_PCI is not set -# CONFIG_ATH9K is not set -# CONFIG_ATH9K_HTC is not set -# CONFIG_CARL9170 is not set -# CONFIG_ATH6KL is not set -# CONFIG_AR5523 is not set -# CONFIG_WIL6210 is not set -# CONFIG_ATH10K is not set -# CONFIG_WCN36XX is not set -CONFIG_WLAN_VENDOR_ATMEL=y -# CONFIG_ATMEL is not set -# CONFIG_AT76C50X_USB is not set -CONFIG_WLAN_VENDOR_BROADCOM=y -# CONFIG_B43 is not set -# CONFIG_B43LEGACY is not set -CONFIG_BRCMUTIL=m -# CONFIG_BRCMSMAC is not set -CONFIG_BRCMFMAC=m -CONFIG_BRCMFMAC_PROTO_BCDC=y -CONFIG_BRCMFMAC_SDIO=y -# CONFIG_BRCMFMAC_USB is not set -# CONFIG_BRCMFMAC_PCIE is not set -# CONFIG_BRCM_TRACING is not set -# CONFIG_BRCMDBG is not set -CONFIG_WLAN_VENDOR_CISCO=y -CONFIG_WLAN_VENDOR_INTEL=y -# CONFIG_IPW2100 is not set -# CONFIG_IPW2200 is not set -# CONFIG_IWL4965 is not set -# CONFIG_IWL3945 is not set -# CONFIG_IWLWIFI is not set -CONFIG_WLAN_VENDOR_INTERSIL=y -# CONFIG_HOSTAP is not set -# CONFIG_HERMES is not set -# CONFIG_P54_COMMON is not set -CONFIG_WLAN_VENDOR_MARVELL=y -# CONFIG_LIBERTAS is not set -# CONFIG_LIBERTAS_THINFIRM is not set -# CONFIG_MWIFIEX is not set -# CONFIG_MWL8K is not set -CONFIG_WLAN_VENDOR_MEDIATEK=y -# CONFIG_MT7601U is not set -# CONFIG_MT76x0U is not set -# CONFIG_MT76x0E is not set -# CONFIG_MT76x2E is not set -# CONFIG_MT76x2U is not set -# CONFIG_MT7603E is not set -# CONFIG_MT7615E is not set -# CONFIG_MT7663U is not set -# CONFIG_MT7663S is not set -# CONFIG_MT7915E is not set -# CONFIG_MT7921E is not set -# CONFIG_MT7921S is not set -# CONFIG_MT7921U is not set -CONFIG_WLAN_VENDOR_MICROCHIP=y -# CONFIG_WILC1000_SDIO is not set -# CONFIG_WILC1000_SPI is not set -CONFIG_WLAN_VENDOR_PURELIFI=y -# CONFIG_PLFXLC is not set -CONFIG_WLAN_VENDOR_RALINK=y -# CONFIG_RT2X00 is not set -CONFIG_WLAN_VENDOR_REALTEK=y -# CONFIG_RTL8180 is not set -# CONFIG_RTL8187 is not set -CONFIG_RTL_CARDS=m -# CONFIG_RTL8192CE is not set -# CONFIG_RTL8192SE is not set -# CONFIG_RTL8192DE is not set -# CONFIG_RTL8723AE is not set -# CONFIG_RTL8723BE is not set -# CONFIG_RTL8188EE is not set -# CONFIG_RTL8192EE is not set -# CONFIG_RTL8821AE is not set -# CONFIG_RTL8192CU is not set -# CONFIG_RTL8XXXU is not set -# CONFIG_RTW88 is not set -# CONFIG_RTW89 is not set -CONFIG_WLAN_VENDOR_RSI=y -# CONFIG_RSI_91X is not set -CONFIG_WLAN_VENDOR_SILABS=y -# CONFIG_WFX is not set -CONFIG_WLAN_VENDOR_ST=y -# CONFIG_CW1200 is not set -CONFIG_WLAN_VENDOR_TI=y -# CONFIG_WL1251 is not set -# CONFIG_WL12XX is not set -CONFIG_WL18XX=m -CONFIG_WLCORE=m -# CONFIG_WLCORE_SPI is not set -CONFIG_WLCORE_SDIO=m -CONFIG_WILINK_PLATFORM_DATA=y -CONFIG_WLAN_VENDOR_ZYDAS=y -# CONFIG_USB_ZD1201 is not set -# CONFIG_ZD1211RW is not set -CONFIG_WLAN_VENDOR_QUANTENNA=y -# CONFIG_QTNFMAC_PCIE is not set -CONFIG_SPARD_WLAN_SUPPORT=y - -# -# UNISOC WCN Device Drivers(for new chip...) -# -# CONFIG_SC23XX is not set -# CONFIG_WCN_BSP_DRIVER_BUILDIN is not set -# CONFIG_RK_WIFI_DEVICE_UWE5621 is not set -# CONFIG_RK_WIFI_DEVICE_UWE5622 is not set -CONFIG_AW_WIFI_DEVICE_UWE5622=y -CONFIG_AW_BIND_VERIFY=y -# end of UNISOC WCN Device Drivers(for new chip...) - -CONFIG_WLAN_UWE5622=m -CONFIG_SPRDWL_NG=m -CONFIG_UNISOC_WIFI_PS=y -CONFIG_TTY_OVERY_SDIO=m -# CONFIG_MAC80211_HWSIM is not set -# CONFIG_USB_NET_RNDIS_WLAN is not set -# CONFIG_VIRT_WIFI is not set -# CONFIG_WAN is not set - -# -# Wireless WAN -# -# CONFIG_WWAN is not set -# end of Wireless WAN - -CONFIG_XEN_NETDEV_FRONTEND=y -# CONFIG_XEN_NETDEV_BACKEND is not set -# CONFIG_VMXNET3 is not set -# CONFIG_FUJITSU_ES is not set -# CONFIG_NETDEVSIM is not set -CONFIG_NET_FAILOVER=y -# CONFIG_ISDN is not set - -# -# Input device support -# -CONFIG_INPUT=y -CONFIG_INPUT_LEDS=y -CONFIG_INPUT_FF_MEMLESS=y -# CONFIG_INPUT_SPARSEKMAP is not set -# CONFIG_INPUT_MATRIXKMAP is not set -CONFIG_INPUT_VIVALDIFMAP=y - -# -# Userland interfaces -# -# CONFIG_INPUT_MOUSEDEV is not set -# CONFIG_INPUT_JOYDEV is not set -CONFIG_INPUT_EVDEV=y -# CONFIG_INPUT_EVBUG is not set - -# -# Input Device Drivers -# -CONFIG_INPUT_KEYBOARD=y -CONFIG_KEYBOARD_ADC=m -# CONFIG_KEYBOARD_ADP5588 is not set -# CONFIG_KEYBOARD_ADP5589 is not set -CONFIG_KEYBOARD_ATKBD=y -# CONFIG_KEYBOARD_QT1050 is not set -# CONFIG_KEYBOARD_QT1070 is not set -# CONFIG_KEYBOARD_QT2160 is not set -# CONFIG_KEYBOARD_DLINK_DIR685 is not set -# CONFIG_KEYBOARD_LKKBD is not set -CONFIG_KEYBOARD_GPIO=y -# CONFIG_KEYBOARD_GPIO_POLLED is not set -# CONFIG_KEYBOARD_TCA6416 is not set -# CONFIG_KEYBOARD_TCA8418 is not set -# CONFIG_KEYBOARD_MATRIX is not set -# CONFIG_KEYBOARD_LM8323 is not set -# CONFIG_KEYBOARD_LM8333 is not set -# CONFIG_KEYBOARD_MAX7359 is not set -# CONFIG_KEYBOARD_MCS is not set -# CONFIG_KEYBOARD_MPR121 is not set -# CONFIG_KEYBOARD_NEWTON is not set -# CONFIG_KEYBOARD_TEGRA is not set -# CONFIG_KEYBOARD_OPENCORES is not set -# CONFIG_KEYBOARD_PINEPHONE is not set -# CONFIG_KEYBOARD_SAMSUNG is not set -# CONFIG_KEYBOARD_STOWAWAY is not set -# CONFIG_KEYBOARD_SUNKBD is not set -# CONFIG_KEYBOARD_SUN4I_LRADC is not set -# CONFIG_KEYBOARD_OMAP4 is not set -# CONFIG_KEYBOARD_TM2_TOUCHKEY is not set -# CONFIG_KEYBOARD_XTKBD is not set -# CONFIG_KEYBOARD_CAP11XX is not set -# CONFIG_KEYBOARD_BCM is not set -# CONFIG_KEYBOARD_MT6779 is not set -# CONFIG_KEYBOARD_CYPRESS_SF is not set -CONFIG_INPUT_MOUSE=y -CONFIG_MOUSE_PS2=y -CONFIG_MOUSE_PS2_ALPS=y -CONFIG_MOUSE_PS2_BYD=y -CONFIG_MOUSE_PS2_LOGIPS2PP=y -CONFIG_MOUSE_PS2_SYNAPTICS=y -CONFIG_MOUSE_PS2_SYNAPTICS_SMBUS=y -CONFIG_MOUSE_PS2_CYPRESS=y -CONFIG_MOUSE_PS2_TRACKPOINT=y -# CONFIG_MOUSE_PS2_ELANTECH is not set -# CONFIG_MOUSE_PS2_SENTELIC is not set -# CONFIG_MOUSE_PS2_TOUCHKIT is not set -CONFIG_MOUSE_PS2_FOCALTECH=y -CONFIG_MOUSE_PS2_SMBUS=y -# CONFIG_MOUSE_SERIAL is not set -# CONFIG_MOUSE_APPLETOUCH is not set -# CONFIG_MOUSE_BCM5974 is not set -# CONFIG_MOUSE_CYAPA is not set -# CONFIG_MOUSE_ELAN_I2C is not set -# CONFIG_MOUSE_VSXXXAA is not set -# CONFIG_MOUSE_GPIO is not set -# CONFIG_MOUSE_SYNAPTICS_I2C is not set -# CONFIG_MOUSE_SYNAPTICS_USB is not set -# CONFIG_INPUT_JOYSTICK is not set -# CONFIG_INPUT_TABLET is not set -# CONFIG_INPUT_TOUCHSCREEN is not set -CONFIG_INPUT_MISC=y -# CONFIG_INPUT_AD714X is not set -# CONFIG_INPUT_ATMEL_CAPTOUCH is not set -# CONFIG_INPUT_BMA150 is not set -# CONFIG_INPUT_E3X0_BUTTON is not set -CONFIG_INPUT_PM8941_PWRKEY=y -# CONFIG_INPUT_PM8XXX_VIBRATOR is not set -# CONFIG_INPUT_MMA8450 is not set -# CONFIG_INPUT_GPIO_BEEPER is not set -# CONFIG_INPUT_GPIO_DECODER is not set -# CONFIG_INPUT_GPIO_VIBRA is not set -# CONFIG_INPUT_ATI_REMOTE2 is not set -# CONFIG_INPUT_KEYSPAN_REMOTE is not set -# CONFIG_INPUT_KXTJ9 is not set -# CONFIG_INPUT_POWERMATE is not set -# CONFIG_INPUT_YEALINK is not set -# CONFIG_INPUT_CM109 is not set -# CONFIG_INPUT_REGULATOR_HAPTIC is not set -# CONFIG_INPUT_AXP20X_PEK is not set -# CONFIG_INPUT_UINPUT is not set -# CONFIG_INPUT_PCF8574 is not set -# CONFIG_INPUT_PWM_BEEPER is not set -# CONFIG_INPUT_PWM_VIBRA is not set -# CONFIG_INPUT_RK805_PWRKEY is not set -# CONFIG_INPUT_GPIO_ROTARY_ENCODER is not set -# CONFIG_INPUT_DA7280_HAPTICS is not set -# CONFIG_INPUT_ADXL34X is not set -# CONFIG_INPUT_IBM_PANEL is not set -# CONFIG_INPUT_IMS_PCU is not set -# CONFIG_INPUT_IQS269A is not set -# CONFIG_INPUT_IQS626A is not set -# CONFIG_INPUT_IQS7222 is not set -# CONFIG_INPUT_CMA3000 is not set -CONFIG_INPUT_XEN_KBDDEV_FRONTEND=y -# CONFIG_INPUT_SOC_BUTTON_ARRAY is not set -# CONFIG_INPUT_DRV260X_HAPTICS is not set -# CONFIG_INPUT_DRV2665_HAPTICS is not set -# CONFIG_INPUT_DRV2667_HAPTICS is not set -CONFIG_INPUT_HISI_POWERKEY=y -# CONFIG_RMI4_CORE is not set - -# -# Hardware I/O ports -# -CONFIG_SERIO=y -# CONFIG_SERIO_SERPORT is not set -CONFIG_SERIO_AMBAKMI=y -# CONFIG_SERIO_PCIPS2 is not set -CONFIG_SERIO_LIBPS2=y -# CONFIG_SERIO_RAW is not set -# CONFIG_SERIO_ALTERA_PS2 is not set -# CONFIG_SERIO_PS2MULT is not set -# CONFIG_SERIO_ARC_PS2 is not set -# CONFIG_SERIO_APBPS2 is not set -# CONFIG_SERIO_SUN4I_PS2 is not set -# CONFIG_SERIO_GPIO_PS2 is not set -# CONFIG_USERIO is not set -# CONFIG_GAMEPORT is not set -# end of Hardware I/O ports -# end of Input device support - -# -# Character devices -# -CONFIG_TTY=y -CONFIG_VT=y -CONFIG_CONSOLE_TRANSLATIONS=y -CONFIG_VT_CONSOLE=y -CONFIG_VT_CONSOLE_SLEEP=y -CONFIG_HW_CONSOLE=y -CONFIG_VT_HW_CONSOLE_BINDING=y -CONFIG_UNIX98_PTYS=y -CONFIG_LEGACY_PTYS=y -CONFIG_LEGACY_PTY_COUNT=16 -CONFIG_LDISC_AUTOLOAD=y - -# -# Serial drivers -# -CONFIG_SERIAL_EARLYCON=y -CONFIG_SERIAL_8250=y -CONFIG_SERIAL_8250_DEPRECATED_OPTIONS=y -CONFIG_SERIAL_8250_PNP=y -CONFIG_SERIAL_8250_16550A_VARIANTS=y -# CONFIG_SERIAL_8250_FINTEK is not set -CONFIG_SERIAL_8250_CONSOLE=y -CONFIG_SERIAL_8250_DMA=y -CONFIG_SERIAL_8250_PCI=y -CONFIG_SERIAL_8250_EXAR=y -CONFIG_SERIAL_8250_NR_UARTS=4 -CONFIG_SERIAL_8250_RUNTIME_UARTS=4 -CONFIG_SERIAL_8250_EXTENDED=y -# CONFIG_SERIAL_8250_MANY_PORTS is not set -CONFIG_SERIAL_8250_SHARE_IRQ=y -# CONFIG_SERIAL_8250_DETECT_IRQ is not set -# CONFIG_SERIAL_8250_RSA is not set -CONFIG_SERIAL_8250_DWLIB=y -CONFIG_SERIAL_8250_FSL=y -CONFIG_SERIAL_8250_DW=y -# CONFIG_SERIAL_8250_EM is not set -# CONFIG_SERIAL_8250_RT288X is not set -CONFIG_SERIAL_8250_MT6577=y -CONFIG_SERIAL_8250_UNIPHIER=y -CONFIG_SERIAL_8250_PERICOM=y -CONFIG_SERIAL_8250_TEGRA=y -CONFIG_SERIAL_OF_PLATFORM=y - -# -# Non-8250 serial port support -# -# CONFIG_SERIAL_AMBA_PL010 is not set -CONFIG_SERIAL_AMBA_PL011=y -CONFIG_SERIAL_AMBA_PL011_CONSOLE=y -# CONFIG_SERIAL_EARLYCON_ARM_SEMIHOST is not set -CONFIG_SERIAL_MESON=y -CONFIG_SERIAL_MESON_CONSOLE=y -CONFIG_SERIAL_SAMSUNG=y -CONFIG_SERIAL_SAMSUNG_UARTS_4=y -CONFIG_SERIAL_SAMSUNG_UARTS=4 -CONFIG_SERIAL_SAMSUNG_CONSOLE=y -CONFIG_SERIAL_TEGRA=y -# CONFIG_SERIAL_TEGRA_TCU is not set -# CONFIG_SERIAL_MAX3100 is not set -# CONFIG_SERIAL_MAX310X is not set -# CONFIG_SERIAL_UARTLITE is not set -CONFIG_SERIAL_SH_SCI=y -CONFIG_SERIAL_SH_SCI_NR_UARTS=18 -CONFIG_SERIAL_SH_SCI_CONSOLE=y -CONFIG_SERIAL_SH_SCI_EARLYCON=y -CONFIG_SERIAL_SH_SCI_DMA=y -CONFIG_SERIAL_CORE=y -CONFIG_SERIAL_CORE_CONSOLE=y -# CONFIG_SERIAL_JSM is not set -CONFIG_SERIAL_MSM=y -CONFIG_SERIAL_MSM_CONSOLE=y -# CONFIG_SERIAL_SIFIVE is not set -# CONFIG_SERIAL_SCCNXP is not set -# CONFIG_SERIAL_SC16IS7XX is not set -# CONFIG_SERIAL_ALTERA_JTAGUART is not set -# CONFIG_SERIAL_ALTERA_UART is not set -CONFIG_SERIAL_XILINX_PS_UART=y -CONFIG_SERIAL_XILINX_PS_UART_CONSOLE=y -# CONFIG_SERIAL_ARC is not set -# CONFIG_SERIAL_RP2 is not set -# CONFIG_SERIAL_FSL_LPUART is not set -# CONFIG_SERIAL_FSL_LINFLEXUART is not set -# CONFIG_SERIAL_CONEXANT_DIGICOLOR is not set -# CONFIG_SERIAL_SPRD is not set -CONFIG_SERIAL_MVEBU_UART=y -CONFIG_SERIAL_MVEBU_CONSOLE=y -# end of Serial drivers - -CONFIG_SERIAL_MCTRL_GPIO=y -# CONFIG_SERIAL_NONSTANDARD is not set -# CONFIG_N_GSM is not set -# CONFIG_NOZOMI is not set -# CONFIG_NULL_TTY is not set -CONFIG_HVC_DRIVER=y -CONFIG_HVC_IRQ=y -CONFIG_HVC_XEN=y -CONFIG_HVC_XEN_FRONTEND=y -# CONFIG_HVC_DCC is not set -# CONFIG_RPMSG_TTY is not set -CONFIG_SERIAL_DEV_BUS=y -CONFIG_SERIAL_DEV_CTRL_TTYPORT=y -CONFIG_VIRTIO_CONSOLE=y -# CONFIG_IPMI_HANDLER is not set -# CONFIG_IPMB_DEVICE_INTERFACE is not set -CONFIG_SUNXI_SYS_INFO=y -CONFIG_DUMP_REG=y -CONFIG_DUMP_REG_MISC=y -CONFIG_HW_RANDOM=m -# CONFIG_HW_RANDOM_TIMERIOMEM is not set -# CONFIG_HW_RANDOM_BA431 is not set -CONFIG_HW_RANDOM_OMAP=m -# CONFIG_HW_RANDOM_VIRTIO is not set -CONFIG_HW_RANDOM_HISI=m -CONFIG_HW_RANDOM_XGENE=m -CONFIG_HW_RANDOM_MESON=m -CONFIG_HW_RANDOM_CAVIUM=m -CONFIG_HW_RANDOM_MTK=m -CONFIG_HW_RANDOM_EXYNOS=m -CONFIG_HW_RANDOM_OPTEE=m -# CONFIG_HW_RANDOM_CCTRNG is not set -# CONFIG_HW_RANDOM_XIPHERA is not set -CONFIG_HW_RANDOM_ARM_SMCCC_TRNG=m -CONFIG_HW_RANDOM_CN10K=m -# CONFIG_APPLICOM is not set -CONFIG_DEVMEM=y -CONFIG_DEVPORT=y -# CONFIG_TCG_TPM is not set -# CONFIG_XILLYBUS is not set -# CONFIG_XILLYUSB is not set -CONFIG_RANDOM_TRUST_CPU=y -CONFIG_RANDOM_TRUST_BOOTLOADER=y -# end of Character devices - -# -# I2C support -# -CONFIG_I2C=y -CONFIG_ACPI_I2C_OPREGION=y -CONFIG_I2C_BOARDINFO=y -CONFIG_I2C_COMPAT=y -CONFIG_I2C_CHARDEV=y -CONFIG_I2C_MUX=y - -# -# Multiplexer I2C Chip support -# -# CONFIG_I2C_ARB_GPIO_CHALLENGE is not set -# CONFIG_I2C_MUX_GPIO is not set -# CONFIG_I2C_MUX_GPMUX is not set -# CONFIG_I2C_MUX_LTC4306 is not set -# CONFIG_I2C_MUX_PCA9541 is not set -CONFIG_I2C_MUX_PCA954x=y -# CONFIG_I2C_MUX_PINCTRL is not set -# CONFIG_I2C_MUX_REG is not set -# CONFIG_I2C_DEMUX_PINCTRL is not set -# CONFIG_I2C_MUX_MLXCPLD is not set -# end of Multiplexer I2C Chip support - -CONFIG_I2C_HELPER_AUTO=y -CONFIG_I2C_SMBUS=y -CONFIG_I2C_ALGOBIT=y - -# -# I2C Hardware Bus support -# - -# -# PC SMBus host controller drivers -# -# CONFIG_I2C_ALI1535 is not set -# CONFIG_I2C_ALI1563 is not set -# CONFIG_I2C_ALI15X3 is not set -# CONFIG_I2C_AMD756 is not set -# CONFIG_I2C_AMD8111 is not set -# CONFIG_I2C_AMD_MP2 is not set -# CONFIG_I2C_HIX5HD2 is not set -# CONFIG_I2C_I801 is not set -# CONFIG_I2C_ISCH is not set -# CONFIG_I2C_PIIX4 is not set -# CONFIG_I2C_NFORCE2 is not set -# CONFIG_I2C_NVIDIA_GPU is not set -# CONFIG_I2C_SIS5595 is not set -# CONFIG_I2C_SIS630 is not set -# CONFIG_I2C_SIS96X is not set -# CONFIG_I2C_VIA is not set -# CONFIG_I2C_VIAPRO is not set - -# -# ACPI drivers -# -# CONFIG_I2C_SCMI is not set - -# -# I2C system bus drivers (mostly embedded / system-on-chip) -# -# CONFIG_I2C_CADENCE is not set -# CONFIG_I2C_CBUS_GPIO is not set -CONFIG_I2C_DESIGNWARE_CORE=y -# CONFIG_I2C_DESIGNWARE_SLAVE is not set -CONFIG_I2C_DESIGNWARE_PLATFORM=y -# CONFIG_I2C_DESIGNWARE_PCI is not set -# CONFIG_I2C_EMEV2 is not set -CONFIG_I2C_EXYNOS5=y -# CONFIG_I2C_GPIO is not set -# CONFIG_I2C_HISI is not set -CONFIG_I2C_MESON=y -# CONFIG_I2C_MT65XX is not set -CONFIG_I2C_MV64XXX=y -# CONFIG_I2C_NOMADIK is not set -# CONFIG_I2C_OCORES is not set -# CONFIG_I2C_PCA_PLATFORM is not set -CONFIG_I2C_PXA=y -# CONFIG_I2C_PXA_SLAVE is not set -# CONFIG_I2C_QCOM_CCI is not set -CONFIG_I2C_QUP=y -# CONFIG_I2C_RIIC is not set -CONFIG_I2C_RK3X=y -# CONFIG_I2C_RZV2M is not set -# CONFIG_I2C_S3C2410 is not set -CONFIG_I2C_SH_MOBILE=y -# CONFIG_I2C_SIMTEC is not set -# CONFIG_I2C_SPRD is not set -CONFIG_I2C_TEGRA=y -CONFIG_I2C_TEGRA_BPMP=y -# CONFIG_I2C_UNIPHIER is not set -CONFIG_I2C_UNIPHIER_F=y -# CONFIG_I2C_VERSATILE is not set -# CONFIG_I2C_THUNDERX is not set -# CONFIG_I2C_XILINX is not set -# CONFIG_I2C_XLP9XX is not set -CONFIG_I2C_RCAR=y - -# -# External I2C/SMBus adapter drivers -# -# CONFIG_I2C_DIOLAN_U2C is not set -# CONFIG_I2C_CP2615 is not set -# CONFIG_I2C_PCI1XXXX is not set -# CONFIG_I2C_ROBOTFUZZ_OSIF is not set -# CONFIG_I2C_TAOS_EVM is not set -# CONFIG_I2C_TINY_USB is not set - -# -# Other I2C/SMBus bus drivers -# -# CONFIG_I2C_XGENE_SLIMPRO is not set -# CONFIG_I2C_VIRTIO is not set -# end of I2C Hardware Bus support - -# CONFIG_I2C_STUB is not set -CONFIG_I2C_SLAVE=y -# CONFIG_I2C_SLAVE_EEPROM is not set -# CONFIG_I2C_SLAVE_TESTUNIT is not set -# CONFIG_I2C_DEBUG_CORE is not set -# CONFIG_I2C_DEBUG_ALGO is not set -# CONFIG_I2C_DEBUG_BUS is not set -# end of I2C support - -# CONFIG_I3C is not set -CONFIG_SPI=y -# CONFIG_SPI_DEBUG is not set -CONFIG_SPI_MASTER=y -CONFIG_SPI_MEM=y - -# -# SPI Master Controller Drivers -# -# CONFIG_SPI_ALTERA is not set -# CONFIG_SPI_ARMADA_3700 is not set -# CONFIG_SPI_AXI_SPI_ENGINE is not set -# CONFIG_SPI_BITBANG is not set -# CONFIG_SPI_CADENCE is not set -# CONFIG_SPI_CADENCE_QUADSPI is not set -# CONFIG_SPI_CADENCE_XSPI is not set -# CONFIG_SPI_DESIGNWARE is not set -# CONFIG_SPI_HISI_KUNPENG is not set -# CONFIG_SPI_HISI_SFC_V3XX is not set -# CONFIG_SPI_NXP_FLEXSPI is not set -# CONFIG_SPI_GPIO is not set -# CONFIG_SPI_FSL_SPI is not set -CONFIG_SPI_MESON_SPICC=m -CONFIG_SPI_MESON_SPIFC=m -# CONFIG_SPI_MICROCHIP_CORE is not set -# CONFIG_SPI_MICROCHIP_CORE_QSPI is not set -# CONFIG_SPI_MT65XX is not set -# CONFIG_SPI_MTK_NOR is not set -# CONFIG_SPI_OC_TINY is not set -CONFIG_SPI_ORION=y -CONFIG_SPI_PL022=y -# CONFIG_SPI_PXA2XX is not set -CONFIG_SPI_ROCKCHIP=y -# CONFIG_SPI_ROCKCHIP_SFC is not set -# CONFIG_SPI_RSPI is not set -# CONFIG_SPI_QCOM_QSPI is not set -CONFIG_SPI_QUP=y -CONFIG_SPI_S3C64XX=y -# CONFIG_SPI_SC18IS602 is not set -# CONFIG_SPI_SH_MSIOF is not set -# CONFIG_SPI_SH_HSPI is not set -# CONFIG_SPI_SIFIVE is not set -# CONFIG_SPI_SPRD is not set -# CONFIG_SPI_SPRD_ADI is not set -# CONFIG_SPI_SUN4I is not set -# CONFIG_SPI_SUN6I is not set -# CONFIG_SPI_MXIC is not set -# CONFIG_SPI_TEGRA210_QUAD is not set -# CONFIG_SPI_TEGRA114 is not set -# CONFIG_SPI_TEGRA20_SFLASH is not set -# CONFIG_SPI_TEGRA20_SLINK is not set -# CONFIG_SPI_THUNDERX is not set -# CONFIG_SPI_UNIPHIER is not set -# CONFIG_SPI_XCOMM is not set -# CONFIG_SPI_XILINX is not set -# CONFIG_SPI_XLP is not set -# CONFIG_SPI_ZYNQMP_GQSPI is not set -# CONFIG_SPI_AMD is not set - -# -# SPI Multiplexer support -# -# CONFIG_SPI_MUX is not set - -# -# SPI Protocol Masters -# -CONFIG_SPI_SPIDEV=m -# CONFIG_SPI_LOOPBACK_TEST is not set -# CONFIG_SPI_TLE62X0 is not set -# CONFIG_SPI_SLAVE is not set -CONFIG_SPI_DYNAMIC=y -CONFIG_SPMI=y -# CONFIG_SPMI_HISI3670 is not set -CONFIG_SPMI_MSM_PMIC_ARB=y -# CONFIG_SPMI_MTK_PMIF is not set -# CONFIG_HSI is not set -CONFIG_PPS=y -# CONFIG_PPS_DEBUG is not set - -# -# PPS clients support -# -# CONFIG_PPS_CLIENT_KTIMER is not set -# CONFIG_PPS_CLIENT_LDISC is not set -# CONFIG_PPS_CLIENT_GPIO is not set - -# -# PPS generators support -# - -# -# PTP clock support -# -CONFIG_PTP_1588_CLOCK=y -CONFIG_PTP_1588_CLOCK_OPTIONAL=y - -# -# Enable PHYLIB and NETWORK_PHY_TIMESTAMPING to see the additional clocks. -# -CONFIG_PTP_1588_CLOCK_KVM=y -# CONFIG_PTP_1588_CLOCK_IDT82P33 is not set -# CONFIG_PTP_1588_CLOCK_IDTCM is not set -# CONFIG_PTP_1588_CLOCK_OCP is not set -# end of PTP clock support - -CONFIG_PINCTRL=y -CONFIG_GENERIC_PINCTRL_GROUPS=y -CONFIG_PINMUX=y -CONFIG_GENERIC_PINMUX_FUNCTIONS=y -CONFIG_PINCONF=y -CONFIG_GENERIC_PINCONF=y -# CONFIG_DEBUG_PINCTRL is not set -# CONFIG_PINCTRL_AMD is not set -# CONFIG_PINCTRL_AXP209 is not set -# CONFIG_PINCTRL_CY8C95X0 is not set -CONFIG_PINCTRL_MAX77620=y -# CONFIG_PINCTRL_MCP23S08 is not set -# CONFIG_PINCTRL_MICROCHIP_SGPIO is not set -# CONFIG_PINCTRL_OCELOT is not set -# CONFIG_PINCTRL_RK805 is not set -CONFIG_PINCTRL_ROCKCHIP=y -CONFIG_PINCTRL_SINGLE=y -# CONFIG_PINCTRL_STMFX is not set -# CONFIG_PINCTRL_SX150X is not set -CONFIG_PINCTRL_ZYNQMP=y -# CONFIG_PINCTRL_AS370 is not set -# CONFIG_PINCTRL_BERLIN_BG4CT is not set - -# -# MediaTek pinctrl drivers -# -CONFIG_EINT_MTK=y -CONFIG_PINCTRL_MTK=y -CONFIG_PINCTRL_MTK_V2=y -CONFIG_PINCTRL_MTK_MOORE=y -CONFIG_PINCTRL_MTK_PARIS=y -CONFIG_PINCTRL_MT2712=y -CONFIG_PINCTRL_MT6765=y -CONFIG_PINCTRL_MT6779=y -CONFIG_PINCTRL_MT6795=y -CONFIG_PINCTRL_MT6797=y -CONFIG_PINCTRL_MT7622=y -CONFIG_PINCTRL_MT7986=y -CONFIG_PINCTRL_MT8167=y -CONFIG_PINCTRL_MT8173=y -CONFIG_PINCTRL_MT8183=y -CONFIG_PINCTRL_MT8186=y -CONFIG_PINCTRL_MT8188=y -CONFIG_PINCTRL_MT8192=y -CONFIG_PINCTRL_MT8195=y -CONFIG_PINCTRL_MT8365=y -CONFIG_PINCTRL_MT8516=y -# end of MediaTek pinctrl drivers - -CONFIG_PINCTRL_MESON=y -CONFIG_PINCTRL_MESON_GXBB=y -CONFIG_PINCTRL_MESON_GXL=y -CONFIG_PINCTRL_MESON8_PMX=y -CONFIG_PINCTRL_MESON_AXG=y -CONFIG_PINCTRL_MESON_AXG_PMX=y -CONFIG_PINCTRL_MESON_G12A=y -CONFIG_PINCTRL_MESON_A1=y -CONFIG_PINCTRL_MESON_S4=y -CONFIG_PINCTRL_MVEBU=y -CONFIG_PINCTRL_ARMADA_AP806=y -CONFIG_PINCTRL_ARMADA_CP110=y -CONFIG_PINCTRL_AC5=y -CONFIG_PINCTRL_ARMADA_37XX=y -# CONFIG_PINCTRL_MSM is not set -CONFIG_PINCTRL_QCOM_SPMI_PMIC=y -# CONFIG_PINCTRL_QCOM_SSBI_PMIC is not set -# CONFIG_PINCTRL_LPASS_LPI is not set - -# -# Renesas pinctrl drivers -# -CONFIG_PINCTRL_RENESAS=y -# end of Renesas pinctrl drivers - -CONFIG_PINCTRL_SAMSUNG=y -CONFIG_PINCTRL_EXYNOS=y -CONFIG_PINCTRL_EXYNOS_ARM64=y -# CONFIG_PINCTRL_SPRD_SC9860 is not set -CONFIG_PINCTRL_SUNXI=y -# CONFIG_PINCTRL_SUN4I_A10 is not set -# CONFIG_PINCTRL_SUN5I is not set -# CONFIG_PINCTRL_SUN6I_A31 is not set -# CONFIG_PINCTRL_SUN6I_A31_R is not set -# CONFIG_PINCTRL_SUN8I_A23 is not set -# CONFIG_PINCTRL_SUN8I_A33 is not set -# CONFIG_PINCTRL_SUN8I_A83T is not set -# CONFIG_PINCTRL_SUN8I_A83T_R is not set -# CONFIG_PINCTRL_SUN8I_A23_R is not set -# CONFIG_PINCTRL_SUN8I_H3 is not set -CONFIG_PINCTRL_SUN8I_H3_R=y -# CONFIG_PINCTRL_SUN8I_V3S is not set -# CONFIG_PINCTRL_SUN9I_A80 is not set -# CONFIG_PINCTRL_SUN9I_A80_R is not set -# CONFIG_PINCTRL_SUN20I_D1 is not set -CONFIG_PINCTRL_SUN50I_A64=y -CONFIG_PINCTRL_SUN50I_A64_R=y -CONFIG_PINCTRL_SUN50I_A100=y -CONFIG_PINCTRL_SUN50I_A100_R=y -CONFIG_PINCTRL_SUN50I_H5=y -CONFIG_PINCTRL_SUN50I_H6=y -CONFIG_PINCTRL_SUN50I_H6_R=y -CONFIG_PINCTRL_SUN50I_H616=y -CONFIG_PINCTRL_SUN50I_H616_R=y -CONFIG_PINCTRL_TEGRA=y -CONFIG_PINCTRL_TEGRA124=y -CONFIG_PINCTRL_TEGRA210=y -CONFIG_PINCTRL_TEGRA_XUSB=y -CONFIG_PINCTRL_UNIPHIER=y -# CONFIG_PINCTRL_UNIPHIER_LD4 is not set -# CONFIG_PINCTRL_UNIPHIER_PRO4 is not set -# CONFIG_PINCTRL_UNIPHIER_SLD8 is not set -# CONFIG_PINCTRL_UNIPHIER_PRO5 is not set -# CONFIG_PINCTRL_UNIPHIER_PXS2 is not set -# CONFIG_PINCTRL_UNIPHIER_LD6B is not set -CONFIG_PINCTRL_UNIPHIER_LD11=y -CONFIG_PINCTRL_UNIPHIER_LD20=y -CONFIG_PINCTRL_UNIPHIER_PXS3=y -CONFIG_PINCTRL_UNIPHIER_NX1=y -CONFIG_GPIOLIB=y -CONFIG_GPIOLIB_FASTPATH_LIMIT=512 -CONFIG_OF_GPIO=y -CONFIG_GPIO_ACPI=y -CONFIG_GPIOLIB_IRQCHIP=y -# CONFIG_DEBUG_GPIO is not set -CONFIG_GPIO_CDEV=y -CONFIG_GPIO_CDEV_V1=y -CONFIG_GPIO_GENERIC=y - -# -# Memory mapped GPIO drivers -# -# CONFIG_GPIO_74XX_MMIO is not set -# CONFIG_GPIO_ALTERA is not set -# CONFIG_GPIO_AMDPT is not set -# CONFIG_GPIO_CADENCE is not set -CONFIG_GPIO_DWAPB=y -# CONFIG_GPIO_EIC_SPRD is not set -# CONFIG_GPIO_EXAR is not set -# CONFIG_GPIO_FTGPIO010 is not set -CONFIG_GPIO_GENERIC_PLATFORM=y -# CONFIG_GPIO_GRGPIO is not set -# CONFIG_GPIO_HISI is not set -# CONFIG_GPIO_HLWD is not set -# CONFIG_GPIO_LOGICVC is not set -# CONFIG_GPIO_MB86S7X is not set -CONFIG_GPIO_MVEBU=y -CONFIG_GPIO_PL061=y -CONFIG_GPIO_RCAR=y -CONFIG_GPIO_ROCKCHIP=y -# CONFIG_GPIO_SIFIVE is not set -# CONFIG_GPIO_SPRD is not set -# CONFIG_GPIO_SYSCON is not set -CONFIG_GPIO_TEGRA=y -CONFIG_GPIO_TEGRA186=y -# CONFIG_GPIO_THUNDERX is not set -# CONFIG_GPIO_UNIPHIER is not set -CONFIG_GPIO_XGENE=y -CONFIG_GPIO_XGENE_SB=y -# CONFIG_GPIO_XILINX is not set -# CONFIG_GPIO_XLP is not set -# CONFIG_GPIO_ZYNQ is not set -CONFIG_GPIO_ZYNQMP_MODEPIN=y -# CONFIG_GPIO_AMD_FCH is not set -# end of Memory mapped GPIO drivers - -# -# I2C GPIO expanders -# -# CONFIG_GPIO_ADNP is not set -# CONFIG_GPIO_GW_PLD is not set -# CONFIG_GPIO_MAX7300 is not set -# CONFIG_GPIO_MAX732X is not set -CONFIG_GPIO_PCA953X=y -CONFIG_GPIO_PCA953X_IRQ=y -# CONFIG_GPIO_PCA9570 is not set -# CONFIG_GPIO_PCF857X is not set -# CONFIG_GPIO_TPIC2810 is not set -# end of I2C GPIO expanders - -# -# MFD GPIO expanders -# -CONFIG_GPIO_MAX77620=y -# end of MFD GPIO expanders - -# -# PCI GPIO expanders -# -# CONFIG_GPIO_BT8XX is not set -# CONFIG_GPIO_PCI_IDIO_16 is not set -# CONFIG_GPIO_PCIE_IDIO_24 is not set -# CONFIG_GPIO_RDC321X is not set -# end of PCI GPIO expanders - -# -# SPI GPIO expanders -# -# CONFIG_GPIO_74X164 is not set -# CONFIG_GPIO_MAX3191X is not set -# CONFIG_GPIO_MAX7301 is not set -# CONFIG_GPIO_MC33880 is not set -# CONFIG_GPIO_PISOSR is not set -# CONFIG_GPIO_XRA1403 is not set -# end of SPI GPIO expanders - -# -# USB GPIO expanders -# -# end of USB GPIO expanders - -# -# Virtual GPIO drivers -# -# CONFIG_GPIO_AGGREGATOR is not set -# CONFIG_GPIO_MOCKUP is not set -# CONFIG_GPIO_VIRTIO is not set -# CONFIG_GPIO_SIM is not set -# end of Virtual GPIO drivers - -# CONFIG_W1 is not set -CONFIG_POWER_RESET=y -# CONFIG_POWER_RESET_BRCMSTB is not set -# CONFIG_POWER_RESET_GPIO is not set -# CONFIG_POWER_RESET_GPIO_RESTART is not set -# CONFIG_POWER_RESET_HISI is not set -# CONFIG_POWER_RESET_LINKSTATION is not set -CONFIG_POWER_RESET_MSM=y -# CONFIG_POWER_RESET_QCOM_PON is not set -# CONFIG_POWER_RESET_LTC2952 is not set -# CONFIG_POWER_RESET_REGULATOR is not set -# CONFIG_POWER_RESET_RESTART is not set -# CONFIG_POWER_RESET_VEXPRESS is not set -CONFIG_POWER_RESET_XGENE=y -CONFIG_POWER_RESET_SYSCON=y -# CONFIG_POWER_RESET_SYSCON_POWEROFF is not set -CONFIG_REBOOT_MODE=y -CONFIG_SYSCON_REBOOT_MODE=y -# CONFIG_NVMEM_REBOOT_MODE is not set -CONFIG_POWER_SUPPLY=y -# CONFIG_POWER_SUPPLY_DEBUG is not set -CONFIG_POWER_SUPPLY_HWMON=y -# CONFIG_PDA_POWER is not set -# CONFIG_GENERIC_ADC_BATTERY is not set -# CONFIG_IP5XXX_POWER is not set -# CONFIG_TEST_POWER is not set -# CONFIG_CHARGER_ADP5061 is not set -# CONFIG_BATTERY_CW2015 is not set -# CONFIG_BATTERY_DS2780 is not set -# CONFIG_BATTERY_DS2781 is not set -# CONFIG_BATTERY_DS2782 is not set -# CONFIG_BATTERY_SAMSUNG_SDI is not set -# CONFIG_BATTERY_SBS is not set -# CONFIG_CHARGER_SBS is not set -# CONFIG_MANAGER_SBS is not set -CONFIG_BATTERY_BQ27XXX=y -CONFIG_BATTERY_BQ27XXX_I2C=y -# CONFIG_BATTERY_BQ27XXX_DT_UPDATES_NVM is not set -# CONFIG_AXP20X_POWER is not set -# CONFIG_BATTERY_MAX17040 is not set -# CONFIG_BATTERY_MAX17042 is not set -# CONFIG_CHARGER_ISP1704 is not set -# CONFIG_CHARGER_MAX8903 is not set -# CONFIG_CHARGER_LP8727 is not set -# CONFIG_CHARGER_GPIO is not set -# CONFIG_CHARGER_MANAGER is not set -# CONFIG_CHARGER_LT3651 is not set -# CONFIG_CHARGER_LTC4162L is not set -# CONFIG_CHARGER_DETECTOR_MAX14656 is not set -# CONFIG_CHARGER_MAX77976 is not set -# CONFIG_CHARGER_QCOM_SMBB is not set -# CONFIG_CHARGER_BQ2415X is not set -# CONFIG_CHARGER_BQ24190 is not set -# CONFIG_CHARGER_BQ24257 is not set -# CONFIG_CHARGER_BQ24735 is not set -# CONFIG_CHARGER_BQ2515X is not set -# CONFIG_CHARGER_BQ25890 is not set -# CONFIG_CHARGER_BQ25980 is not set -# CONFIG_CHARGER_BQ256XX is not set -# CONFIG_CHARGER_RK817 is not set -# CONFIG_CHARGER_SMB347 is not set -# CONFIG_BATTERY_GAUGE_LTC2941 is not set -# CONFIG_BATTERY_GOLDFISH is not set -# CONFIG_BATTERY_RT5033 is not set -# CONFIG_CHARGER_RT9455 is not set -# CONFIG_CHARGER_UCS1002 is not set -# CONFIG_CHARGER_BD99954 is not set -# CONFIG_BATTERY_UG3105 is not set -CONFIG_HWMON=y -# CONFIG_HWMON_DEBUG_CHIP is not set - -# -# Native drivers -# -# CONFIG_SENSORS_AD7314 is not set -# CONFIG_SENSORS_AD7414 is not set -# CONFIG_SENSORS_AD7418 is not set -# CONFIG_SENSORS_ADM1025 is not set -# CONFIG_SENSORS_ADM1026 is not set -# CONFIG_SENSORS_ADM1029 is not set -# CONFIG_SENSORS_ADM1031 is not set -# CONFIG_SENSORS_ADM1177 is not set -# CONFIG_SENSORS_ADM9240 is not set -# CONFIG_SENSORS_ADT7310 is not set -# CONFIG_SENSORS_ADT7410 is not set -# CONFIG_SENSORS_ADT7411 is not set -# CONFIG_SENSORS_ADT7462 is not set -# CONFIG_SENSORS_ADT7470 is not set -# CONFIG_SENSORS_ADT7475 is not set -# CONFIG_SENSORS_AHT10 is not set -# CONFIG_SENSORS_AQUACOMPUTER_D5NEXT is not set -# CONFIG_SENSORS_AS370 is not set -# CONFIG_SENSORS_ASC7621 is not set -# CONFIG_SENSORS_AXI_FAN_CONTROL is not set -CONFIG_SENSORS_ARM_SCPI=y -# CONFIG_SENSORS_ATXP1 is not set -# CONFIG_SENSORS_CORSAIR_CPRO is not set -# CONFIG_SENSORS_CORSAIR_PSU is not set -# CONFIG_SENSORS_DRIVETEMP is not set -# CONFIG_SENSORS_DS620 is not set -# CONFIG_SENSORS_DS1621 is not set -# CONFIG_SENSORS_I5K_AMB is not set -# CONFIG_SENSORS_F71805F is not set -# CONFIG_SENSORS_F71882FG is not set -# CONFIG_SENSORS_F75375S is not set -# CONFIG_SENSORS_FTSTEUTATES is not set -# CONFIG_SENSORS_GL518SM is not set -# CONFIG_SENSORS_GL520SM is not set -# CONFIG_SENSORS_G760A is not set -# CONFIG_SENSORS_G762 is not set -# CONFIG_SENSORS_GPIO_FAN is not set -# CONFIG_SENSORS_HIH6130 is not set -# CONFIG_SENSORS_IIO_HWMON is not set -# CONFIG_SENSORS_IT87 is not set -# CONFIG_SENSORS_JC42 is not set -# CONFIG_SENSORS_POWR1220 is not set -# CONFIG_SENSORS_LINEAGE is not set -# CONFIG_SENSORS_LTC2945 is not set -# CONFIG_SENSORS_LTC2947_I2C is not set -# CONFIG_SENSORS_LTC2947_SPI is not set -# CONFIG_SENSORS_LTC2990 is not set -# CONFIG_SENSORS_LTC2992 is not set -# CONFIG_SENSORS_LTC4151 is not set -# CONFIG_SENSORS_LTC4215 is not set -# CONFIG_SENSORS_LTC4222 is not set -# CONFIG_SENSORS_LTC4245 is not set -# CONFIG_SENSORS_LTC4260 is not set -# CONFIG_SENSORS_LTC4261 is not set -# CONFIG_SENSORS_MAX1111 is not set -# CONFIG_SENSORS_MAX127 is not set -# CONFIG_SENSORS_MAX16065 is not set -# CONFIG_SENSORS_MAX1619 is not set -# CONFIG_SENSORS_MAX1668 is not set -# CONFIG_SENSORS_MAX197 is not set -# CONFIG_SENSORS_MAX31722 is not set -# CONFIG_SENSORS_MAX31730 is not set -# CONFIG_SENSORS_MAX31760 is not set -# CONFIG_SENSORS_MAX6620 is not set -# CONFIG_SENSORS_MAX6621 is not set -# CONFIG_SENSORS_MAX6639 is not set -# CONFIG_SENSORS_MAX6650 is not set -# CONFIG_SENSORS_MAX6697 is not set -# CONFIG_SENSORS_MAX31790 is not set -# CONFIG_SENSORS_MCP3021 is not set -# CONFIG_SENSORS_TC654 is not set -# CONFIG_SENSORS_TPS23861 is not set -# CONFIG_SENSORS_MR75203 is not set -# CONFIG_SENSORS_ADCXX is not set -# CONFIG_SENSORS_LM63 is not set -# CONFIG_SENSORS_LM70 is not set -# CONFIG_SENSORS_LM73 is not set -# CONFIG_SENSORS_LM75 is not set -# CONFIG_SENSORS_LM77 is not set -# CONFIG_SENSORS_LM78 is not set -# CONFIG_SENSORS_LM80 is not set -# CONFIG_SENSORS_LM83 is not set -# CONFIG_SENSORS_LM85 is not set -# CONFIG_SENSORS_LM87 is not set -CONFIG_SENSORS_LM90=m -# CONFIG_SENSORS_LM92 is not set -# CONFIG_SENSORS_LM93 is not set -# CONFIG_SENSORS_LM95234 is not set -# CONFIG_SENSORS_LM95241 is not set -# CONFIG_SENSORS_LM95245 is not set -# CONFIG_SENSORS_PC87360 is not set -# CONFIG_SENSORS_PC87427 is not set -# CONFIG_SENSORS_NTC_THERMISTOR is not set -# CONFIG_SENSORS_NCT6683 is not set -# CONFIG_SENSORS_NCT6775 is not set -# CONFIG_SENSORS_NCT6775_I2C is not set -# CONFIG_SENSORS_NCT7802 is not set -# CONFIG_SENSORS_NCT7904 is not set -# CONFIG_SENSORS_NPCM7XX is not set -# CONFIG_SENSORS_NZXT_KRAKEN2 is not set -# CONFIG_SENSORS_NZXT_SMART2 is not set -# CONFIG_SENSORS_OCC_P8_I2C is not set -# CONFIG_SENSORS_PCF8591 is not set -# CONFIG_PMBUS is not set -# CONFIG_SENSORS_PWM_FAN is not set -# CONFIG_SENSORS_SBTSI is not set -# CONFIG_SENSORS_SBRMI is not set -# CONFIG_SENSORS_SHT15 is not set -# CONFIG_SENSORS_SHT21 is not set -# CONFIG_SENSORS_SHT3x is not set -# CONFIG_SENSORS_SHT4x is not set -# CONFIG_SENSORS_SHTC1 is not set -# CONFIG_SENSORS_SIS5595 is not set -# CONFIG_SENSORS_DME1737 is not set -# CONFIG_SENSORS_EMC1403 is not set -# CONFIG_SENSORS_EMC2103 is not set -# CONFIG_SENSORS_EMC2305 is not set -# CONFIG_SENSORS_EMC6W201 is not set -# CONFIG_SENSORS_SMSC47M1 is not set -# CONFIG_SENSORS_SMSC47M192 is not set -# CONFIG_SENSORS_SMSC47B397 is not set -# CONFIG_SENSORS_SCH5627 is not set -# CONFIG_SENSORS_SCH5636 is not set -# CONFIG_SENSORS_STTS751 is not set -# CONFIG_SENSORS_SMM665 is not set -# CONFIG_SENSORS_ADC128D818 is not set -# CONFIG_SENSORS_ADS7828 is not set -# CONFIG_SENSORS_ADS7871 is not set -# CONFIG_SENSORS_AMC6821 is not set -# CONFIG_SENSORS_INA209 is not set -CONFIG_SENSORS_INA2XX=m -# CONFIG_SENSORS_INA238 is not set -# CONFIG_SENSORS_INA3221 is not set -# CONFIG_SENSORS_TC74 is not set -# CONFIG_SENSORS_THMC50 is not set -# CONFIG_SENSORS_TMP102 is not set -# CONFIG_SENSORS_TMP103 is not set -# CONFIG_SENSORS_TMP108 is not set -# CONFIG_SENSORS_TMP401 is not set -# CONFIG_SENSORS_TMP421 is not set -# CONFIG_SENSORS_TMP464 is not set -# CONFIG_SENSORS_TMP513 is not set -# CONFIG_SENSORS_VEXPRESS is not set -# CONFIG_SENSORS_VIA686A is not set -# CONFIG_SENSORS_VT1211 is not set -# CONFIG_SENSORS_VT8231 is not set -# CONFIG_SENSORS_W83773G is not set -# CONFIG_SENSORS_W83781D is not set -# CONFIG_SENSORS_W83791D is not set -# CONFIG_SENSORS_W83792D is not set -# CONFIG_SENSORS_W83793 is not set -# CONFIG_SENSORS_W83795 is not set -# CONFIG_SENSORS_W83L785TS is not set -# CONFIG_SENSORS_W83L786NG is not set -# CONFIG_SENSORS_W83627HF is not set -# CONFIG_SENSORS_W83627EHF is not set -# CONFIG_SENSORS_XGENE is not set - -# -# ACPI drivers -# -# CONFIG_SENSORS_ACPI_POWER is not set -CONFIG_THERMAL=y -# CONFIG_THERMAL_NETLINK is not set -# CONFIG_THERMAL_STATISTICS is not set -CONFIG_THERMAL_EMERGENCY_POWEROFF_DELAY_MS=0 -CONFIG_THERMAL_HWMON=y -CONFIG_THERMAL_OF=y -# CONFIG_THERMAL_WRITABLE_TRIPS is not set -CONFIG_THERMAL_DEFAULT_GOV_STEP_WISE=y -# CONFIG_THERMAL_DEFAULT_GOV_FAIR_SHARE is not set -# CONFIG_THERMAL_DEFAULT_GOV_USER_SPACE is not set -# CONFIG_THERMAL_GOV_FAIR_SHARE is not set -CONFIG_THERMAL_GOV_STEP_WISE=y -# CONFIG_THERMAL_GOV_BANG_BANG is not set -# CONFIG_THERMAL_GOV_USER_SPACE is not set -CONFIG_CPU_THERMAL=y -CONFIG_CPU_FREQ_THERMAL=y -CONFIG_THERMAL_EMULATION=y -# CONFIG_THERMAL_MMIO is not set -CONFIG_HISI_THERMAL=y -# CONFIG_MAX77620_THERMAL is not set -# CONFIG_SUN8I_THERMAL is not set -CONFIG_ROCKCHIP_THERMAL=m -# CONFIG_RCAR_THERMAL is not set -# CONFIG_RCAR_GEN3_THERMAL is not set -# CONFIG_RZG2L_THERMAL is not set -# CONFIG_ARMADA_THERMAL is not set -CONFIG_MTK_THERMAL=y -CONFIG_AMLOGIC_THERMAL=y - -# -# Samsung thermal drivers -# -CONFIG_EXYNOS_THERMAL=y -# end of Samsung thermal drivers - -# -# NVIDIA Tegra thermal drivers -# -# CONFIG_TEGRA_SOCTHERM is not set -# CONFIG_TEGRA_BPMP_THERMAL is not set -# end of NVIDIA Tegra thermal drivers - -# CONFIG_GENERIC_ADC_THERMAL is not set - -# -# Qualcomm thermal drivers -# -# CONFIG_QCOM_SPMI_ADC_TM5 is not set -# CONFIG_QCOM_SPMI_TEMP_ALARM is not set -# CONFIG_QCOM_LMH is not set -# end of Qualcomm thermal drivers - -# CONFIG_UNIPHIER_THERMAL is not set -# CONFIG_SPRD_THERMAL is not set -CONFIG_WATCHDOG=y -CONFIG_WATCHDOG_CORE=y -# CONFIG_WATCHDOG_NOWAYOUT is not set -CONFIG_WATCHDOG_HANDLE_BOOT_ENABLED=y -CONFIG_WATCHDOG_OPEN_TIMEOUT=0 -# CONFIG_WATCHDOG_SYSFS is not set -# CONFIG_WATCHDOG_HRTIMER_PRETIMEOUT is not set - -# -# Watchdog Pretimeout Governors -# -# CONFIG_WATCHDOG_PRETIMEOUT_GOV is not set - -# -# Watchdog Device Drivers -# -# CONFIG_SOFT_WATCHDOG is not set -# CONFIG_GPIO_WATCHDOG is not set -# CONFIG_WDAT_WDT is not set -# CONFIG_XILINX_WATCHDOG is not set -# CONFIG_ZIIRAVE_WATCHDOG is not set -# CONFIG_ARM_SP805_WATCHDOG is not set -# CONFIG_ARM_SBSA_WATCHDOG is not set -# CONFIG_ARMADA_37XX_WATCHDOG is not set -# CONFIG_CADENCE_WATCHDOG is not set -CONFIG_S3C2410_WATCHDOG=y -# CONFIG_DW_WATCHDOG is not set -# CONFIG_SUNXI_WATCHDOG is not set -# CONFIG_MAX63XX_WATCHDOG is not set -# CONFIG_MAX77620_WATCHDOG is not set -# CONFIG_TEGRA_WATCHDOG is not set -# CONFIG_QCOM_WDT is not set -CONFIG_MESON_GXBB_WATCHDOG=m -CONFIG_MESON_WATCHDOG=m -CONFIG_MEDIATEK_WATCHDOG=y -# CONFIG_ARM_SMC_WATCHDOG is not set -CONFIG_RENESAS_WDT=y -# CONFIG_RENESAS_RZAWDT is not set -# CONFIG_RENESAS_RZN1WDT is not set -# CONFIG_RENESAS_RZG2LWDT is not set -CONFIG_UNIPHIER_WATCHDOG=y -# CONFIG_SPRD_WATCHDOG is not set -# CONFIG_PM8916_WATCHDOG is not set -# CONFIG_ALIM7101_WDT is not set -# CONFIG_I6300ESB_WDT is not set -# CONFIG_HP_WATCHDOG is not set -# CONFIG_MEN_A21_WDT is not set -# CONFIG_XEN_WDT is not set - -# -# PCI-based Watchdog Cards -# -# CONFIG_PCIPCWATCHDOG is not set -# CONFIG_WDTPCI is not set - -# -# USB-based Watchdog Cards -# -# CONFIG_USBPCWATCHDOG is not set -CONFIG_SSB_POSSIBLE=y -# CONFIG_SSB is not set -CONFIG_BCMA_POSSIBLE=y -# CONFIG_BCMA is not set - -# -# Multifunction device drivers -# -CONFIG_MFD_CORE=y -# CONFIG_MFD_ACT8945A is not set -# CONFIG_MFD_SUN4I_GPADC is not set -# CONFIG_MFD_AS3711 is not set -# CONFIG_MFD_AS3722 is not set -# CONFIG_PMIC_ADP5520 is not set -# CONFIG_MFD_AAT2870_CORE is not set -# CONFIG_MFD_ATMEL_FLEXCOM is not set -# CONFIG_MFD_ATMEL_HLCDC is not set -# CONFIG_MFD_BCM590XX is not set -# CONFIG_MFD_BD9571MWV is not set -# CONFIG_MFD_AC100 is not set -CONFIG_MFD_AXP20X=y -# CONFIG_MFD_AXP20X_I2C is not set -CONFIG_MFD_AXP20X_RSB=y -# CONFIG_MFD_MADERA is not set -# CONFIG_PMIC_DA903X is not set -# CONFIG_MFD_DA9052_SPI is not set -# CONFIG_MFD_DA9052_I2C is not set -# CONFIG_MFD_DA9055 is not set -# CONFIG_MFD_DA9062 is not set -# CONFIG_MFD_DA9063 is not set -# CONFIG_MFD_DA9150 is not set -# CONFIG_MFD_DLN2 is not set -CONFIG_MFD_EXYNOS_LPASS=m -# CONFIG_MFD_GATEWORKS_GSC is not set -# CONFIG_MFD_MC13XXX_SPI is not set -# CONFIG_MFD_MC13XXX_I2C is not set -# CONFIG_MFD_MP2629 is not set -CONFIG_MFD_HI6421_PMIC=y -# CONFIG_MFD_HI6421_SPMI is not set -CONFIG_MFD_HI655X_PMIC=y -# CONFIG_HTC_PASIC3 is not set -# CONFIG_HTC_I2CPLD is not set -# CONFIG_LPC_ICH is not set -# CONFIG_LPC_SCH is not set -# CONFIG_MFD_IQS62X is not set -# CONFIG_MFD_JANZ_CMODIO is not set -# CONFIG_MFD_KEMPLD is not set -# CONFIG_MFD_88PM800 is not set -# CONFIG_MFD_88PM805 is not set -# CONFIG_MFD_88PM860X is not set -# CONFIG_MFD_MAX14577 is not set -CONFIG_MFD_MAX77620=y -# CONFIG_MFD_MAX77650 is not set -# CONFIG_MFD_MAX77686 is not set -# CONFIG_MFD_MAX77693 is not set -# CONFIG_MFD_MAX77714 is not set -# CONFIG_MFD_MAX77843 is not set -# CONFIG_MFD_MAX8907 is not set -# CONFIG_MFD_MAX8925 is not set -# CONFIG_MFD_MAX8997 is not set -# CONFIG_MFD_MAX8998 is not set -# CONFIG_MFD_MT6360 is not set -# CONFIG_MFD_MT6370 is not set -# CONFIG_MFD_MT6397 is not set -# CONFIG_MFD_MENF21BMC is not set -# CONFIG_MFD_OCELOT is not set -# CONFIG_EZX_PCAP is not set -# CONFIG_MFD_CPCAP is not set -# CONFIG_MFD_VIPERBOARD is not set -# CONFIG_MFD_NTXEC is not set -# CONFIG_MFD_RETU is not set -# CONFIG_MFD_PCF50633 is not set -# CONFIG_MFD_QCOM_RPM is not set -CONFIG_MFD_SPMI_PMIC=y -# CONFIG_MFD_SY7636A is not set -# CONFIG_MFD_RDC321X is not set -# CONFIG_MFD_RT4831 is not set -# CONFIG_MFD_RT5033 is not set -# CONFIG_MFD_RT5120 is not set -# CONFIG_MFD_RC5T583 is not set -CONFIG_MFD_RK808=y -# CONFIG_MFD_RN5T618 is not set -CONFIG_MFD_SEC_CORE=y -# CONFIG_MFD_SI476X_CORE is not set -# CONFIG_MFD_SM501 is not set -# CONFIG_MFD_SKY81452 is not set -# CONFIG_MFD_SC27XX_PMIC is not set -# CONFIG_MFD_STMPE is not set -# CONFIG_MFD_SUN6I_PRCM is not set -CONFIG_MFD_SYSCON=y -# CONFIG_MFD_TI_AM335X_TSCADC is not set -# CONFIG_MFD_LP3943 is not set -# CONFIG_MFD_LP8788 is not set -# CONFIG_MFD_TI_LMU is not set -# CONFIG_MFD_PALMAS is not set -# CONFIG_TPS6105X is not set -# CONFIG_TPS65010 is not set -# CONFIG_TPS6507X is not set -# CONFIG_MFD_TPS65086 is not set -# CONFIG_MFD_TPS65090 is not set -# CONFIG_MFD_TPS65217 is not set -# CONFIG_MFD_TI_LP873X is not set -# CONFIG_MFD_TI_LP87565 is not set -# CONFIG_MFD_TPS65218 is not set -# CONFIG_MFD_TPS6586X is not set -# CONFIG_MFD_TPS65910 is not set -# CONFIG_MFD_TPS65912_I2C is not set -# CONFIG_MFD_TPS65912_SPI is not set -# CONFIG_TWL4030_CORE is not set -# CONFIG_TWL6040_CORE is not set -# CONFIG_MFD_WL1273_CORE is not set -# CONFIG_MFD_LM3533 is not set -# CONFIG_MFD_TC3589X is not set -# CONFIG_MFD_TQMX86 is not set -# CONFIG_MFD_VX855 is not set -# CONFIG_MFD_LOCHNAGAR is not set -# CONFIG_MFD_ARIZONA_I2C is not set -# CONFIG_MFD_ARIZONA_SPI is not set -# CONFIG_MFD_WM8400 is not set -# CONFIG_MFD_WM831X_I2C is not set -# CONFIG_MFD_WM831X_SPI is not set -# CONFIG_MFD_WM8350_I2C is not set -# CONFIG_MFD_WM8994 is not set -# CONFIG_MFD_ROHM_BD718XX is not set -# CONFIG_MFD_ROHM_BD71828 is not set -# CONFIG_MFD_ROHM_BD957XMUF is not set -# CONFIG_MFD_STPMIC1 is not set -# CONFIG_MFD_STMFX is not set -# CONFIG_MFD_ATC260X_I2C is not set -# CONFIG_MFD_KHADAS_MCU is not set -# CONFIG_MFD_QCOM_PM8008 is not set -CONFIG_MFD_VEXPRESS_SYSREG=y -# CONFIG_RAVE_SP_CORE is not set -# CONFIG_MFD_INTEL_M10_BMC is not set -# CONFIG_MFD_RSMU_I2C is not set -# CONFIG_MFD_RSMU_SPI is not set -# end of Multifunction device drivers - -CONFIG_REGULATOR=y -# CONFIG_REGULATOR_DEBUG is not set -CONFIG_REGULATOR_FIXED_VOLTAGE=y -# CONFIG_REGULATOR_VIRTUAL_CONSUMER is not set -# CONFIG_REGULATOR_USERSPACE_CONSUMER is not set -# CONFIG_REGULATOR_88PG86X is not set -# CONFIG_REGULATOR_ACT8865 is not set -# CONFIG_REGULATOR_AD5398 is not set -CONFIG_REGULATOR_AXP20X=y -# CONFIG_REGULATOR_DA9121 is not set -# CONFIG_REGULATOR_DA9210 is not set -# CONFIG_REGULATOR_DA9211 is not set -CONFIG_REGULATOR_FAN53555=y -# CONFIG_REGULATOR_FAN53880 is not set -CONFIG_REGULATOR_GPIO=y -# CONFIG_REGULATOR_HI6421 is not set -CONFIG_REGULATOR_HI6421V530=y -CONFIG_REGULATOR_HI655X=y -# CONFIG_REGULATOR_ISL9305 is not set -# CONFIG_REGULATOR_ISL6271A is not set -# CONFIG_REGULATOR_LP3971 is not set -# CONFIG_REGULATOR_LP3972 is not set -# CONFIG_REGULATOR_LP872X is not set -# CONFIG_REGULATOR_LP8755 is not set -# CONFIG_REGULATOR_LTC3589 is not set -# CONFIG_REGULATOR_LTC3676 is not set -# CONFIG_REGULATOR_MAX1586 is not set -CONFIG_REGULATOR_MAX77620=y -# CONFIG_REGULATOR_MAX8649 is not set -# CONFIG_REGULATOR_MAX8660 is not set -# CONFIG_REGULATOR_MAX8893 is not set -# CONFIG_REGULATOR_MAX8952 is not set -# CONFIG_REGULATOR_MAX8973 is not set -# CONFIG_REGULATOR_MAX20086 is not set -# CONFIG_REGULATOR_MAX77826 is not set -# CONFIG_REGULATOR_MCP16502 is not set -# CONFIG_REGULATOR_MP5416 is not set -# CONFIG_REGULATOR_MP8859 is not set -# CONFIG_REGULATOR_MP886X is not set -# CONFIG_REGULATOR_MPQ7920 is not set -# CONFIG_REGULATOR_MT6311 is not set -# CONFIG_REGULATOR_MT6315 is not set -# CONFIG_REGULATOR_PCA9450 is not set -# CONFIG_REGULATOR_PF8X00 is not set -# CONFIG_REGULATOR_PFUZE100 is not set -# CONFIG_REGULATOR_PV88060 is not set -# CONFIG_REGULATOR_PV88080 is not set -# CONFIG_REGULATOR_PV88090 is not set -CONFIG_REGULATOR_PWM=y -CONFIG_REGULATOR_QCOM_SMD_RPM=y -CONFIG_REGULATOR_QCOM_SPMI=y -# CONFIG_REGULATOR_QCOM_USB_VBUS is not set -# CONFIG_REGULATOR_RASPBERRYPI_TOUCHSCREEN_ATTINY is not set -CONFIG_REGULATOR_RK808=y -# CONFIG_REGULATOR_RT4801 is not set -# CONFIG_REGULATOR_RT5190A is not set -# CONFIG_REGULATOR_RT5759 is not set -# CONFIG_REGULATOR_RT6160 is not set -# CONFIG_REGULATOR_RT6245 is not set -# CONFIG_REGULATOR_RTQ2134 is not set -# CONFIG_REGULATOR_RTMV20 is not set -# CONFIG_REGULATOR_RTQ6752 is not set -# CONFIG_REGULATOR_S2MPA01 is not set -CONFIG_REGULATOR_S2MPS11=y -# CONFIG_REGULATOR_S5M8767 is not set -# CONFIG_REGULATOR_SLG51000 is not set -# CONFIG_REGULATOR_SY8106A is not set -# CONFIG_REGULATOR_SY8824X is not set -# CONFIG_REGULATOR_SY8827N is not set -# CONFIG_REGULATOR_TPS51632 is not set -# CONFIG_REGULATOR_TPS62360 is not set -# CONFIG_REGULATOR_TPS6286X is not set -# CONFIG_REGULATOR_TPS65023 is not set -# CONFIG_REGULATOR_TPS6507X is not set -# CONFIG_REGULATOR_TPS65132 is not set -# CONFIG_REGULATOR_TPS6524X is not set -CONFIG_REGULATOR_UNIPHIER=y -# CONFIG_REGULATOR_VCTRL is not set -# CONFIG_REGULATOR_VEXPRESS is not set -# CONFIG_REGULATOR_VQMMC_IPQ4019 is not set -# CONFIG_REGULATOR_QCOM_LABIBB is not set -CONFIG_RC_CORE=m -# CONFIG_LIRC is not set -CONFIG_RC_MAP=m -CONFIG_RC_DECODERS=y -# CONFIG_IR_IMON_DECODER is not set -# CONFIG_IR_JVC_DECODER is not set -# CONFIG_IR_MCE_KBD_DECODER is not set -# CONFIG_IR_NEC_DECODER is not set -# CONFIG_IR_RC5_DECODER is not set -# CONFIG_IR_RC6_DECODER is not set -# CONFIG_IR_RCMM_DECODER is not set -# CONFIG_IR_SANYO_DECODER is not set -# CONFIG_IR_SHARP_DECODER is not set -# CONFIG_IR_SONY_DECODER is not set -# CONFIG_IR_XMP_DECODER is not set -CONFIG_RC_DEVICES=y -# CONFIG_IR_ENE is not set -# CONFIG_IR_FINTEK is not set -# CONFIG_IR_GPIO_CIR is not set -# CONFIG_IR_HIX5HD2 is not set -# CONFIG_IR_IGORPLUGUSB is not set -# CONFIG_IR_IGUANA is not set -# CONFIG_IR_IMON is not set -# CONFIG_IR_IMON_RAW is not set -# CONFIG_IR_ITE_CIR is not set -# CONFIG_IR_MCEUSB is not set -CONFIG_IR_MESON=m -# CONFIG_IR_MESON_TX is not set -# CONFIG_IR_MTK is not set -# CONFIG_IR_NUVOTON is not set -# CONFIG_IR_REDRAT3 is not set -# CONFIG_IR_SERIAL is not set -# CONFIG_IR_STREAMZAP is not set -# CONFIG_IR_SUNXI is not set -# CONFIG_IR_TOY is not set -# CONFIG_IR_TTUSBIR is not set -# CONFIG_RC_ATI_REMOTE is not set -# CONFIG_RC_LOOPBACK is not set -# CONFIG_RC_XBOX_DVD is not set -CONFIG_CEC_CORE=m - -# -# CEC support -# -# CONFIG_MEDIA_CEC_RC is not set -# CONFIG_MEDIA_CEC_SUPPORT is not set -# end of CEC support - -CONFIG_MEDIA_SUPPORT=m -CONFIG_MEDIA_SUPPORT_FILTER=y -CONFIG_MEDIA_SUBDRV_AUTOSELECT=y - -# -# Media device types -# -CONFIG_MEDIA_CAMERA_SUPPORT=y -CONFIG_MEDIA_ANALOG_TV_SUPPORT=y -CONFIG_MEDIA_DIGITAL_TV_SUPPORT=y -# CONFIG_MEDIA_RADIO_SUPPORT is not set -# CONFIG_MEDIA_SDR_SUPPORT is not set -# CONFIG_MEDIA_PLATFORM_SUPPORT is not set -# CONFIG_MEDIA_TEST_SUPPORT is not set -# end of Media device types - -CONFIG_VIDEO_DEV=m -CONFIG_MEDIA_CONTROLLER=y -CONFIG_DVB_CORE=m - -# -# Video4Linux options -# -CONFIG_VIDEO_V4L2_I2C=y -# CONFIG_VIDEO_ADV_DEBUG is not set -# CONFIG_VIDEO_FIXED_MINOR_RANGES is not set -# end of Video4Linux options - -# -# Media controller options -# -# CONFIG_MEDIA_CONTROLLER_DVB is not set -# end of Media controller options - -# -# Digital TV options -# -# CONFIG_DVB_MMAP is not set -# CONFIG_DVB_NET is not set -CONFIG_DVB_MAX_ADAPTERS=16 -CONFIG_DVB_DYNAMIC_MINORS=y -# CONFIG_DVB_DEMUX_SECTION_LOSS_LOG is not set -# CONFIG_DVB_ULE_DEBUG is not set -# end of Digital TV options - -# -# Media drivers -# - -# -# Drivers filtered as selected at 'Filter media drivers' -# - -# -# Media drivers -# -# CONFIG_MEDIA_USB_SUPPORT is not set -# CONFIG_MEDIA_PCI_SUPPORT is not set -# end of Media drivers - -CONFIG_MEDIA_HIDE_ANCILLARY_SUBDRV=y - -# -# Media ancillary drivers -# -CONFIG_MEDIA_ATTACH=y - -# -# IR I2C driver auto-selected by 'Autoselect ancillary drivers' -# -CONFIG_VIDEO_IR_I2C=m - -# -# Camera sensor devices -# -# CONFIG_VIDEO_AR0521 is not set -# CONFIG_VIDEO_HI556 is not set -# CONFIG_VIDEO_HI846 is not set -# CONFIG_VIDEO_HI847 is not set -# CONFIG_VIDEO_IMX208 is not set -# CONFIG_VIDEO_IMX214 is not set -# CONFIG_VIDEO_IMX219 is not set -# CONFIG_VIDEO_IMX258 is not set -# CONFIG_VIDEO_IMX274 is not set -# CONFIG_VIDEO_IMX290 is not set -# CONFIG_VIDEO_IMX319 is not set -# CONFIG_VIDEO_IMX334 is not set -# CONFIG_VIDEO_IMX335 is not set -# CONFIG_VIDEO_IMX355 is not set -# CONFIG_VIDEO_IMX412 is not set -# CONFIG_VIDEO_MT9M001 is not set -# CONFIG_VIDEO_MT9M032 is not set -# CONFIG_VIDEO_MT9M111 is not set -# CONFIG_VIDEO_MT9P031 is not set -# CONFIG_VIDEO_MT9T001 is not set -# CONFIG_VIDEO_MT9T112 is not set -# CONFIG_VIDEO_MT9V011 is not set -# CONFIG_VIDEO_MT9V032 is not set -# CONFIG_VIDEO_MT9V111 is not set -# CONFIG_VIDEO_NOON010PC30 is not set -# CONFIG_VIDEO_OG01A1B is not set -# CONFIG_VIDEO_OV02A10 is not set -# CONFIG_VIDEO_OV08D10 is not set -# CONFIG_VIDEO_OV13858 is not set -# CONFIG_VIDEO_OV13B10 is not set -# CONFIG_VIDEO_OV2640 is not set -# CONFIG_VIDEO_OV2659 is not set -# CONFIG_VIDEO_OV2680 is not set -# CONFIG_VIDEO_OV2685 is not set -# CONFIG_VIDEO_OV2740 is not set -# CONFIG_VIDEO_OV5640 is not set -# CONFIG_VIDEO_OV5645 is not set -# CONFIG_VIDEO_OV5647 is not set -# CONFIG_VIDEO_OV5648 is not set -# CONFIG_VIDEO_OV5670 is not set -# CONFIG_VIDEO_OV5675 is not set -# CONFIG_VIDEO_OV5693 is not set -# CONFIG_VIDEO_OV5695 is not set -# CONFIG_VIDEO_OV6650 is not set -# CONFIG_VIDEO_OV7251 is not set -# CONFIG_VIDEO_OV7640 is not set -# CONFIG_VIDEO_OV7670 is not set -# CONFIG_VIDEO_OV772X is not set -# CONFIG_VIDEO_OV7740 is not set -# CONFIG_VIDEO_OV8856 is not set -# CONFIG_VIDEO_OV8865 is not set -# CONFIG_VIDEO_OV9282 is not set -# CONFIG_VIDEO_OV9640 is not set -# CONFIG_VIDEO_OV9650 is not set -# CONFIG_VIDEO_OV9734 is not set -# CONFIG_VIDEO_RDACM20 is not set -# CONFIG_VIDEO_RDACM21 is not set -# CONFIG_VIDEO_RJ54N1 is not set -# CONFIG_VIDEO_S5C73M3 is not set -# CONFIG_VIDEO_S5K4ECGX is not set -# CONFIG_VIDEO_S5K5BAF is not set -# CONFIG_VIDEO_S5K6A3 is not set -# CONFIG_VIDEO_S5K6AA is not set -# CONFIG_VIDEO_SR030PC30 is not set -# CONFIG_VIDEO_VS6624 is not set -# CONFIG_VIDEO_CCS is not set -# CONFIG_VIDEO_ET8EK8 is not set -# CONFIG_VIDEO_M5MOLS is not set -# end of Camera sensor devices - -# -# Lens drivers -# -# CONFIG_VIDEO_AD5820 is not set -# CONFIG_VIDEO_AK7375 is not set -# CONFIG_VIDEO_DW9714 is not set -# CONFIG_VIDEO_DW9768 is not set -# CONFIG_VIDEO_DW9807_VCM is not set -# end of Lens drivers - -# -# Flash devices -# -# CONFIG_VIDEO_ADP1653 is not set -# CONFIG_VIDEO_LM3560 is not set -# CONFIG_VIDEO_LM3646 is not set -# end of Flash devices - -# -# audio, video and radio I2C drivers auto-selected by 'Autoselect ancillary drivers' -# - -# -# Video and audio decoders -# - -# -# SPI I2C drivers auto-selected by 'Autoselect ancillary drivers' -# - -# -# Media SPI Adapters -# -# CONFIG_CXD2880_SPI_DRV is not set -# CONFIG_VIDEO_GS1662 is not set -# end of Media SPI Adapters - -CONFIG_MEDIA_TUNER=m - -# -# Tuner drivers auto-selected by 'Autoselect ancillary drivers' -# -CONFIG_MEDIA_TUNER_MC44S803=m -CONFIG_MEDIA_TUNER_MT20XX=m -CONFIG_MEDIA_TUNER_SIMPLE=m -CONFIG_MEDIA_TUNER_TDA18271=m -CONFIG_MEDIA_TUNER_TDA827X=m -CONFIG_MEDIA_TUNER_TDA8290=m -CONFIG_MEDIA_TUNER_TDA9887=m -CONFIG_MEDIA_TUNER_XC2028=m -CONFIG_MEDIA_TUNER_XC4000=m -CONFIG_MEDIA_TUNER_XC5000=m - -# -# DVB Frontend drivers auto-selected by 'Autoselect ancillary drivers' -# - -# -# Multistandard (satellite) frontends -# - -# -# Multistandard (cable + terrestrial) frontends -# - -# -# DVB-S (satellite) frontends -# - -# -# DVB-T (terrestrial) frontends -# - -# -# DVB-C (cable) frontends -# - -# -# ATSC (North American/Korean Terrestrial/Cable DTV) frontends -# - -# -# ISDB-T (terrestrial) frontends -# - -# -# ISDB-S (satellite) & ISDB-T (terrestrial) frontends -# - -# -# Digital terrestrial only tuners/PLL -# - -# -# SEC control devices for DVB-S -# - -# -# Common Interface (EN50221) controller drivers -# -# end of Media ancillary drivers - -# -# Graphics support -# -CONFIG_TEGRA_HOST1X_CONTEXT_BUS=y -CONFIG_TEGRA_HOST1X=m -CONFIG_TEGRA_HOST1X_FIREWALL=y -CONFIG_DRM=m -CONFIG_DRM_MIPI_DSI=y -CONFIG_DRM_KMS_HELPER=m -CONFIG_DRM_FBDEV_EMULATION=y -CONFIG_DRM_FBDEV_OVERALLOC=100 -# CONFIG_DRM_LOAD_EDID_FIRMWARE is not set -CONFIG_DRM_DP_AUX_BUS=m -CONFIG_DRM_DISPLAY_HELPER=m -CONFIG_DRM_DISPLAY_DP_HELPER=y -CONFIG_DRM_DISPLAY_HDMI_HELPER=y -# CONFIG_DRM_DP_AUX_CHARDEV is not set -# CONFIG_DRM_DP_CEC is not set -CONFIG_DRM_TTM=m -CONFIG_DRM_TTM_HELPER=m -CONFIG_DRM_GEM_DMA_HELPER=m - -# -# I2C encoder or helper chips -# -CONFIG_DRM_I2C_CH7006=m -CONFIG_DRM_I2C_SIL164=m -# CONFIG_DRM_I2C_NXP_TDA998X is not set -# CONFIG_DRM_I2C_NXP_TDA9950 is not set -# end of I2C encoder or helper chips - -# -# ARM devices -# -# CONFIG_DRM_HDLCD is not set -# CONFIG_DRM_MALI_DISPLAY is not set -# CONFIG_DRM_KOMEDA is not set -# end of ARM devices - -# CONFIG_DRM_RADEON is not set -# CONFIG_DRM_AMDGPU is not set -CONFIG_DRM_NOUVEAU=m -CONFIG_NOUVEAU_LEGACY_CTX_SUPPORT=y -CONFIG_NOUVEAU_PLATFORM_DRIVER=y -CONFIG_NOUVEAU_DEBUG=5 -CONFIG_NOUVEAU_DEBUG_DEFAULT=3 -# CONFIG_NOUVEAU_DEBUG_MMU is not set -# CONFIG_NOUVEAU_DEBUG_PUSH is not set -CONFIG_DRM_NOUVEAU_BACKLIGHT=y -# CONFIG_DRM_VGEM is not set -# CONFIG_DRM_VKMS is not set -CONFIG_DRM_EXYNOS=m - -# -# CRTCs -# -# CONFIG_DRM_EXYNOS_FIMD is not set -CONFIG_DRM_EXYNOS5433_DECON=y -CONFIG_DRM_EXYNOS7_DECON=y -# CONFIG_DRM_EXYNOS_MIXER is not set -# CONFIG_DRM_EXYNOS_VIDI is not set - -# -# Encoders and Bridges -# -CONFIG_DRM_EXYNOS_DSI=y -# CONFIG_DRM_EXYNOS_DP is not set -CONFIG_DRM_EXYNOS_HDMI=y -CONFIG_DRM_EXYNOS_MIC=y - -# -# Sub-drivers -# -# CONFIG_DRM_EXYNOS_G2D is not set -# CONFIG_DRM_EXYNOS_FIMC is not set -# CONFIG_DRM_EXYNOS_ROTATOR is not set -# CONFIG_DRM_EXYNOS_SCALER is not set -# CONFIG_DRM_EXYNOS_GSC is not set -CONFIG_DRM_ROCKCHIP=m -CONFIG_ROCKCHIP_VOP=y -# CONFIG_ROCKCHIP_VOP2 is not set -CONFIG_ROCKCHIP_ANALOGIX_DP=y -CONFIG_ROCKCHIP_CDN_DP=y -CONFIG_ROCKCHIP_DW_HDMI=y -CONFIG_ROCKCHIP_DW_MIPI_DSI=y -CONFIG_ROCKCHIP_INNO_HDMI=y -# CONFIG_ROCKCHIP_LVDS is not set -# CONFIG_ROCKCHIP_RGB is not set -# CONFIG_ROCKCHIP_RK3066_HDMI is not set -# CONFIG_DRM_VMWGFX is not set -# CONFIG_DRM_UDL is not set -# CONFIG_DRM_AST is not set -# CONFIG_DRM_MGAG200 is not set -CONFIG_DRM_RCAR_DU=m -CONFIG_DRM_RCAR_USE_CMM=y -CONFIG_DRM_RCAR_CMM=m -# CONFIG_DRM_RCAR_DW_HDMI is not set -CONFIG_DRM_RCAR_USE_LVDS=y -CONFIG_DRM_RCAR_LVDS=m -CONFIG_DRM_RCAR_USE_MIPI_DSI=y -CONFIG_DRM_RCAR_MIPI_DSI=m -CONFIG_DRM_RCAR_WRITEBACK=y -# CONFIG_DRM_SUN4I is not set -# CONFIG_DRM_QXL is not set -# CONFIG_DRM_VIRTIO_GPU is not set -# CONFIG_DRM_MSM is not set -CONFIG_DRM_TEGRA=m -# CONFIG_DRM_TEGRA_DEBUG is not set -# CONFIG_DRM_TEGRA_STAGING is not set -CONFIG_DRM_PANEL=y - -# -# Display Panels -# -# CONFIG_DRM_PANEL_ABT_Y030XX067A is not set -# CONFIG_DRM_PANEL_ARM_VERSATILE is not set -# CONFIG_DRM_PANEL_ASUS_Z00T_TM5P5_NT35596 is not set -# CONFIG_DRM_PANEL_BOE_BF060Y8M_AJ0 is not set -# CONFIG_DRM_PANEL_BOE_HIMAX8279D is not set -# CONFIG_DRM_PANEL_BOE_TV101WUM_NL6 is not set -# CONFIG_DRM_PANEL_DSI_CM is not set -# CONFIG_DRM_PANEL_LVDS is not set -CONFIG_DRM_PANEL_SIMPLE=m -# CONFIG_DRM_PANEL_EDP is not set -# CONFIG_DRM_PANEL_EBBG_FT8719 is not set -# CONFIG_DRM_PANEL_ELIDA_KD35T133 is not set -# CONFIG_DRM_PANEL_FEIXIN_K101_IM2BA02 is not set -# CONFIG_DRM_PANEL_FEIYANG_FY07024DI26A30D is not set -# CONFIG_DRM_PANEL_ILITEK_IL9322 is not set -# CONFIG_DRM_PANEL_ILITEK_ILI9341 is not set -# CONFIG_DRM_PANEL_ILITEK_ILI9881C is not set -# CONFIG_DRM_PANEL_INNOLUX_EJ030NA is not set -# CONFIG_DRM_PANEL_INNOLUX_P079ZCA is not set -# CONFIG_DRM_PANEL_JDI_LT070ME05000 is not set -# CONFIG_DRM_PANEL_JDI_R63452 is not set -# CONFIG_DRM_PANEL_KHADAS_TS050 is not set -# CONFIG_DRM_PANEL_KINGDISPLAY_KD097D04 is not set -# CONFIG_DRM_PANEL_LEADTEK_LTK050H3146W is not set -# CONFIG_DRM_PANEL_LEADTEK_LTK500HD1829 is not set -# CONFIG_DRM_PANEL_SAMSUNG_LD9040 is not set -# CONFIG_DRM_PANEL_LG_LB035Q02 is not set -# CONFIG_DRM_PANEL_LG_LG4573 is not set -# CONFIG_DRM_PANEL_NEC_NL8048HL11 is not set -# CONFIG_DRM_PANEL_NEWVISION_NV3052C is not set -# CONFIG_DRM_PANEL_NOVATEK_NT35510 is not set -# CONFIG_DRM_PANEL_NOVATEK_NT35560 is not set -# CONFIG_DRM_PANEL_NOVATEK_NT35950 is not set -# CONFIG_DRM_PANEL_NOVATEK_NT36672A is not set -# CONFIG_DRM_PANEL_NOVATEK_NT39016 is not set -# CONFIG_DRM_PANEL_MANTIX_MLAF057WE51 is not set -# CONFIG_DRM_PANEL_OLIMEX_LCD_OLINUXINO is not set -# CONFIG_DRM_PANEL_ORISETECH_OTM8009A is not set -# CONFIG_DRM_PANEL_OSD_OSD101T2587_53TS is not set -# CONFIG_DRM_PANEL_PANASONIC_VVX10F034N00 is not set -# CONFIG_DRM_PANEL_RASPBERRYPI_TOUCHSCREEN is not set -# CONFIG_DRM_PANEL_RAYDIUM_RM67191 is not set -# CONFIG_DRM_PANEL_RAYDIUM_RM68200 is not set -# CONFIG_DRM_PANEL_RONBO_RB070D30 is not set -# CONFIG_DRM_PANEL_SAMSUNG_ATNA33XC20 is not set -# CONFIG_DRM_PANEL_SAMSUNG_DB7430 is not set -# CONFIG_DRM_PANEL_SAMSUNG_S6D16D0 is not set -# CONFIG_DRM_PANEL_SAMSUNG_S6D27A1 is not set -# CONFIG_DRM_PANEL_SAMSUNG_S6E3HA2 is not set -# CONFIG_DRM_PANEL_SAMSUNG_S6E63J0X03 is not set -# CONFIG_DRM_PANEL_SAMSUNG_S6E63M0 is not set -# CONFIG_DRM_PANEL_SAMSUNG_S6E88A0_AMS452EF01 is not set -# CONFIG_DRM_PANEL_SAMSUNG_S6E8AA0 is not set -# CONFIG_DRM_PANEL_SAMSUNG_SOFEF00 is not set -# CONFIG_DRM_PANEL_SEIKO_43WVF1G is not set -# CONFIG_DRM_PANEL_SHARP_LQ101R1SX01 is not set -# CONFIG_DRM_PANEL_SHARP_LS037V7DW01 is not set -# CONFIG_DRM_PANEL_SHARP_LS043T1LE01 is not set -# CONFIG_DRM_PANEL_SHARP_LS060T1SX01 is not set -# CONFIG_DRM_PANEL_SITRONIX_ST7701 is not set -# CONFIG_DRM_PANEL_SITRONIX_ST7703 is not set -# CONFIG_DRM_PANEL_SITRONIX_ST7789V is not set -# CONFIG_DRM_PANEL_SONY_ACX565AKM is not set -# CONFIG_DRM_PANEL_SONY_TULIP_TRULY_NT35521 is not set -# CONFIG_DRM_PANEL_TDO_TL070WSH30 is not set -# CONFIG_DRM_PANEL_TPO_TD028TTEC1 is not set -# CONFIG_DRM_PANEL_TPO_TD043MTEA1 is not set -# CONFIG_DRM_PANEL_TPO_TPG110 is not set -# CONFIG_DRM_PANEL_TRULY_NT35597_WQXGA is not set -# CONFIG_DRM_PANEL_VISIONOX_RM69299 is not set -# CONFIG_DRM_PANEL_WIDECHIPS_WS2401 is not set -# CONFIG_DRM_PANEL_XINPENG_XPP055C272 is not set -# end of Display Panels - -CONFIG_DRM_BRIDGE=y -CONFIG_DRM_PANEL_BRIDGE=y - -# -# Display Interface Bridges -# -# CONFIG_DRM_CDNS_DSI is not set -# CONFIG_DRM_CHIPONE_ICN6211 is not set -# CONFIG_DRM_CHRONTEL_CH7033 is not set -CONFIG_DRM_DISPLAY_CONNECTOR=m -# CONFIG_DRM_ITE_IT6505 is not set -# CONFIG_DRM_LONTIUM_LT8912B is not set -# CONFIG_DRM_LONTIUM_LT9211 is not set -# CONFIG_DRM_LONTIUM_LT9611 is not set -# CONFIG_DRM_LONTIUM_LT9611UXC is not set -# CONFIG_DRM_ITE_IT66121 is not set -# CONFIG_DRM_LVDS_CODEC is not set -# CONFIG_DRM_MEGACHIPS_STDPXXXX_GE_B850V3_FW is not set -# CONFIG_DRM_NWL_MIPI_DSI is not set -# CONFIG_DRM_NXP_PTN3460 is not set -# CONFIG_DRM_PARADE_PS8622 is not set -# CONFIG_DRM_PARADE_PS8640 is not set -# CONFIG_DRM_SIL_SII8620 is not set -# CONFIG_DRM_SII902X is not set -# CONFIG_DRM_SII9234 is not set -# CONFIG_DRM_SIMPLE_BRIDGE is not set -# CONFIG_DRM_THINE_THC63LVD1024 is not set -# CONFIG_DRM_TOSHIBA_TC358762 is not set -# CONFIG_DRM_TOSHIBA_TC358764 is not set -# CONFIG_DRM_TOSHIBA_TC358767 is not set -# CONFIG_DRM_TOSHIBA_TC358768 is not set -# CONFIG_DRM_TOSHIBA_TC358775 is not set -# CONFIG_DRM_TI_DLPC3433 is not set -# CONFIG_DRM_TI_TFP410 is not set -# CONFIG_DRM_TI_SN65DSI83 is not set -# CONFIG_DRM_TI_SN65DSI86 is not set -# CONFIG_DRM_TI_TPD12S015 is not set -# CONFIG_DRM_ANALOGIX_ANX6345 is not set -# CONFIG_DRM_ANALOGIX_ANX78XX is not set -CONFIG_DRM_ANALOGIX_DP=m -# CONFIG_DRM_ANALOGIX_ANX7625 is not set -CONFIG_DRM_I2C_ADV7511=m -# CONFIG_DRM_I2C_ADV7511_AUDIO is not set -CONFIG_DRM_I2C_ADV7511_CEC=y -# CONFIG_DRM_CDNS_MHDP8546 is not set -CONFIG_DRM_DW_HDMI=m -# CONFIG_DRM_DW_HDMI_AHB_AUDIO is not set -CONFIG_DRM_DW_HDMI_I2S_AUDIO=m -# CONFIG_DRM_DW_HDMI_GP_AUDIO is not set -# CONFIG_DRM_DW_HDMI_CEC is not set -CONFIG_DRM_DW_MIPI_DSI=m -# end of Display Interface Bridges - -# CONFIG_DRM_ETNAVIV is not set -# CONFIG_DRM_HISI_HIBMC is not set -CONFIG_DRM_HISI_KIRIN=m -# CONFIG_DRM_LOGICVC is not set -# CONFIG_DRM_MEDIATEK is not set -# CONFIG_DRM_MXSFB is not set -# CONFIG_DRM_IMX_LCDIF is not set -CONFIG_DRM_MESON=m -CONFIG_DRM_MESON_DW_HDMI=m -# CONFIG_DRM_ARCPGU is not set -# CONFIG_DRM_BOCHS is not set -# CONFIG_DRM_CIRRUS_QEMU is not set -# CONFIG_DRM_GM12U320 is not set -# CONFIG_DRM_PANEL_MIPI_DBI is not set -# CONFIG_DRM_SIMPLEDRM is not set -# CONFIG_TINYDRM_HX8357D is not set -# CONFIG_TINYDRM_ILI9163 is not set -# CONFIG_TINYDRM_ILI9225 is not set -# CONFIG_TINYDRM_ILI9341 is not set -# CONFIG_TINYDRM_ILI9486 is not set -# CONFIG_TINYDRM_MI0283QT is not set -# CONFIG_TINYDRM_REPAPER is not set -# CONFIG_TINYDRM_ST7586 is not set -# CONFIG_TINYDRM_ST7735R is not set -# CONFIG_DRM_PL111 is not set -# CONFIG_DRM_XEN_FRONTEND is not set -# CONFIG_DRM_LIMA is not set -# CONFIG_DRM_PANFROST is not set -# CONFIG_DRM_TIDSS is not set -# CONFIG_DRM_GUD is not set -# CONFIG_DRM_SSD130X is not set -# CONFIG_DRM_SPRD is not set -CONFIG_DRM_LEGACY=y -# CONFIG_DRM_TDFX is not set -# CONFIG_DRM_R128 is not set -# CONFIG_DRM_MGA is not set -# CONFIG_DRM_VIA is not set -# CONFIG_DRM_SAVAGE is not set -CONFIG_DRM_PANEL_ORIENTATION_QUIRKS=m -CONFIG_DRM_NOMODESET=y - -# -# Frame buffer Devices -# -CONFIG_FB_CMDLINE=y -CONFIG_FB_NOTIFY=y -CONFIG_FB=y -# CONFIG_FIRMWARE_EDID is not set -CONFIG_FB_CFB_FILLRECT=y -CONFIG_FB_CFB_COPYAREA=y -CONFIG_FB_CFB_IMAGEBLIT=y -CONFIG_FB_SYS_FILLRECT=y -CONFIG_FB_SYS_COPYAREA=y -CONFIG_FB_SYS_IMAGEBLIT=y -# CONFIG_FB_FOREIGN_ENDIAN is not set -CONFIG_FB_SYS_FOPS=y -CONFIG_FB_DEFERRED_IO=y -CONFIG_FB_MODE_HELPERS=y -# CONFIG_FB_TILEBLITTING is not set - -# -# Frame buffer hardware drivers -# -# CONFIG_FB_CIRRUS is not set -# CONFIG_FB_PM2 is not set -CONFIG_FB_ARMCLCD=y -# CONFIG_FB_CYBER2000 is not set -# CONFIG_FB_ASILIANT is not set -# CONFIG_FB_IMSTT is not set -# CONFIG_FB_EFI is not set -# CONFIG_FB_OPENCORES is not set -# CONFIG_FB_S1D13XXX is not set -# CONFIG_FB_NVIDIA is not set -# CONFIG_FB_RIVA is not set -# CONFIG_FB_I740 is not set -# CONFIG_FB_MATROX is not set -# CONFIG_FB_RADEON is not set -# CONFIG_FB_ATY128 is not set -# CONFIG_FB_ATY is not set -# CONFIG_FB_S3 is not set -# CONFIG_FB_SAVAGE is not set -# CONFIG_FB_SIS is not set -# CONFIG_FB_NEOMAGIC is not set -# CONFIG_FB_KYRO is not set -# CONFIG_FB_3DFX is not set -# CONFIG_FB_VOODOO1 is not set -# CONFIG_FB_VT8623 is not set -# CONFIG_FB_TRIDENT is not set -# CONFIG_FB_ARK is not set -# CONFIG_FB_PM3 is not set -# CONFIG_FB_CARMINE is not set -# CONFIG_FB_SH_MOBILE_LCDC is not set -# CONFIG_FB_SMSCUFX is not set -# CONFIG_FB_UDL is not set -# CONFIG_FB_IBM_GXT4500 is not set -# CONFIG_FB_XILINX is not set -# CONFIG_FB_VIRTUAL is not set -CONFIG_XEN_FBDEV_FRONTEND=y -# CONFIG_FB_METRONOME is not set -# CONFIG_FB_MB862XX is not set -# CONFIG_FB_SIMPLE is not set -# CONFIG_FB_SSD1307 is not set -# CONFIG_FB_SM712 is not set -# end of Frame buffer Devices - -# -# Backlight & LCD device support -# -# CONFIG_LCD_CLASS_DEVICE is not set -CONFIG_BACKLIGHT_CLASS_DEVICE=y -# CONFIG_BACKLIGHT_KTD253 is not set -CONFIG_BACKLIGHT_PWM=m -# CONFIG_BACKLIGHT_QCOM_WLED is not set -# CONFIG_BACKLIGHT_ADP8860 is not set -# CONFIG_BACKLIGHT_ADP8870 is not set -# CONFIG_BACKLIGHT_LM3630A is not set -# CONFIG_BACKLIGHT_LM3639 is not set -CONFIG_BACKLIGHT_LP855X=m -# CONFIG_BACKLIGHT_GPIO is not set -# CONFIG_BACKLIGHT_LV5207LP is not set -# CONFIG_BACKLIGHT_BD6107 is not set -# CONFIG_BACKLIGHT_ARCXCNN is not set -# CONFIG_BACKLIGHT_LED is not set -# end of Backlight & LCD device support - -CONFIG_VIDEOMODE_HELPERS=y -CONFIG_HDMI=y - -# -# Console display driver support -# -CONFIG_DUMMY_CONSOLE=y -CONFIG_DUMMY_CONSOLE_COLUMNS=80 -CONFIG_DUMMY_CONSOLE_ROWS=25 -CONFIG_FRAMEBUFFER_CONSOLE=y -# CONFIG_FRAMEBUFFER_CONSOLE_LEGACY_ACCELERATION is not set -CONFIG_FRAMEBUFFER_CONSOLE_DETECT_PRIMARY=y -# CONFIG_FRAMEBUFFER_CONSOLE_ROTATION is not set -# CONFIG_FRAMEBUFFER_CONSOLE_DEFERRED_TAKEOVER is not set -# end of Console display driver support - -CONFIG_LOGO=y -# CONFIG_LOGO_LINUX_MONO is not set -# CONFIG_LOGO_LINUX_VGA16 is not set -CONFIG_LOGO_LINUX_CLUT224=y -# end of Graphics support - -CONFIG_SOUND=y -CONFIG_SND=y -CONFIG_SND_TIMER=y -CONFIG_SND_PCM=y -CONFIG_SND_PCM_ELD=y -CONFIG_SND_PCM_IEC958=y -CONFIG_SND_DMAENGINE_PCM=y -CONFIG_SND_JACK=y -CONFIG_SND_JACK_INPUT_DEV=y -# CONFIG_SND_OSSEMUL is not set -CONFIG_SND_PCM_TIMER=y -# CONFIG_SND_HRTIMER is not set -# CONFIG_SND_DYNAMIC_MINORS is not set -CONFIG_SND_SUPPORT_OLD_API=y -CONFIG_SND_PROC_FS=y -CONFIG_SND_VERBOSE_PROCFS=y -# CONFIG_SND_VERBOSE_PRINTK is not set -CONFIG_SND_CTL_FAST_LOOKUP=y -# CONFIG_SND_DEBUG is not set -# CONFIG_SND_CTL_INPUT_VALIDATION is not set -# CONFIG_SND_SEQUENCER is not set -CONFIG_SND_DRIVERS=y -# CONFIG_SND_DUMMY is not set -# CONFIG_SND_ALOOP is not set -# CONFIG_SND_MTPAV is not set -# CONFIG_SND_SERIAL_U16550 is not set -# CONFIG_SND_SERIAL_GENERIC is not set -# CONFIG_SND_MPU401 is not set -CONFIG_SND_PCI=y -# CONFIG_SND_AD1889 is not set -# CONFIG_SND_ALS300 is not set -# CONFIG_SND_ALI5451 is not set -# CONFIG_SND_ATIIXP is not set -# CONFIG_SND_ATIIXP_MODEM is not set -# CONFIG_SND_AU8810 is not set -# CONFIG_SND_AU8820 is not set -# CONFIG_SND_AU8830 is not set -# CONFIG_SND_AW2 is not set -# CONFIG_SND_AZT3328 is not set -# CONFIG_SND_BT87X is not set -# CONFIG_SND_CA0106 is not set -# CONFIG_SND_CMIPCI is not set -# CONFIG_SND_OXYGEN is not set -# CONFIG_SND_CS4281 is not set -# CONFIG_SND_CS46XX is not set -# CONFIG_SND_CTXFI is not set -# CONFIG_SND_DARLA20 is not set -# CONFIG_SND_GINA20 is not set -# CONFIG_SND_LAYLA20 is not set -# CONFIG_SND_DARLA24 is not set -# CONFIG_SND_GINA24 is not set -# CONFIG_SND_LAYLA24 is not set -# CONFIG_SND_MONA is not set -# CONFIG_SND_MIA is not set -# CONFIG_SND_ECHO3G is not set -# CONFIG_SND_INDIGO is not set -# CONFIG_SND_INDIGOIO is not set -# CONFIG_SND_INDIGODJ is not set -# CONFIG_SND_INDIGOIOX is not set -# CONFIG_SND_INDIGODJX is not set -# CONFIG_SND_EMU10K1 is not set -# CONFIG_SND_EMU10K1X is not set -# CONFIG_SND_ENS1370 is not set -# CONFIG_SND_ENS1371 is not set -# CONFIG_SND_ES1938 is not set -# CONFIG_SND_ES1968 is not set -# CONFIG_SND_FM801 is not set -# CONFIG_SND_HDSP is not set -# CONFIG_SND_HDSPM is not set -# CONFIG_SND_ICE1712 is not set -# CONFIG_SND_ICE1724 is not set -# CONFIG_SND_INTEL8X0 is not set -# CONFIG_SND_INTEL8X0M is not set -# CONFIG_SND_KORG1212 is not set -# CONFIG_SND_LOLA is not set -# CONFIG_SND_LX6464ES is not set -# CONFIG_SND_MAESTRO3 is not set -# CONFIG_SND_MIXART is not set -# CONFIG_SND_NM256 is not set -# CONFIG_SND_PCXHR is not set -# CONFIG_SND_RIPTIDE is not set -# CONFIG_SND_RME32 is not set -# CONFIG_SND_RME96 is not set -# CONFIG_SND_RME9652 is not set -# CONFIG_SND_SE6X is not set -# CONFIG_SND_SONICVIBES is not set -# CONFIG_SND_TRIDENT is not set -# CONFIG_SND_VIA82XX is not set -# CONFIG_SND_VIA82XX_MODEM is not set -# CONFIG_SND_VIRTUOSO is not set -# CONFIG_SND_VX222 is not set -# CONFIG_SND_YMFPCI is not set - -# -# HD-Audio -# -# CONFIG_SND_HDA_INTEL is not set -# CONFIG_SND_HDA_TEGRA is not set -# end of HD-Audio - -CONFIG_SND_HDA_PREALLOC_SIZE=64 -CONFIG_SND_SPI=y -CONFIG_SND_USB=y -# CONFIG_SND_USB_AUDIO is not set -# CONFIG_SND_USB_UA101 is not set -# CONFIG_SND_USB_CAIAQ is not set -# CONFIG_SND_USB_6FIRE is not set -# CONFIG_SND_USB_HIFACE is not set -# CONFIG_SND_BCD2000 is not set -# CONFIG_SND_USB_POD is not set -# CONFIG_SND_USB_PODHD is not set -# CONFIG_SND_USB_TONEPORT is not set -# CONFIG_SND_USB_VARIAX is not set -CONFIG_SND_SOC=y -CONFIG_SND_SOC_GENERIC_DMAENGINE_PCM=y -# CONFIG_SND_SOC_ADI is not set -# CONFIG_SND_SOC_AMD_ACP is not set -# CONFIG_SND_AMD_ACP_CONFIG is not set -# CONFIG_SND_ATMEL_SOC is not set -# CONFIG_SND_BCM63XX_I2S_WHISTLER is not set -# CONFIG_SND_DESIGNWARE_I2S is not set - -# -# SoC Audio for Freescale CPUs -# - -# -# Common SoC Audio options for Freescale CPUs: -# -# CONFIG_SND_SOC_FSL_ASRC is not set -# CONFIG_SND_SOC_FSL_SAI is not set -# CONFIG_SND_SOC_FSL_AUDMIX is not set -# CONFIG_SND_SOC_FSL_SSI is not set -# CONFIG_SND_SOC_FSL_SPDIF is not set -# CONFIG_SND_SOC_FSL_ESAI is not set -# CONFIG_SND_SOC_FSL_MICFIL is not set -# CONFIG_SND_SOC_FSL_XCVR is not set -# CONFIG_SND_SOC_FSL_RPMSG is not set -# CONFIG_SND_SOC_IMX_AUDMUX is not set -# end of SoC Audio for Freescale CPUs - -# CONFIG_SND_I2S_HI6210_I2S is not set -# CONFIG_SND_KIRKWOOD_SOC is not set -# CONFIG_SND_SOC_IMG is not set -# CONFIG_SND_SOC_MT2701 is not set -# CONFIG_SND_SOC_MT6797 is not set -# CONFIG_SND_SOC_MT8173 is not set -# CONFIG_SND_SOC_MT8183 is not set -# CONFIG_SND_SOC_MT8186 is not set -# CONFIG_SND_SOC_MTK_BTCVSD is not set -# CONFIG_SND_SOC_MT8192 is not set -# CONFIG_SND_SOC_MT8195 is not set - -# -# ASoC support for Amlogic platforms -# -# CONFIG_SND_MESON_AIU is not set -# CONFIG_SND_MESON_AXG_FRDDR is not set -# CONFIG_SND_MESON_AXG_TODDR is not set -# CONFIG_SND_MESON_AXG_TDMIN is not set -# CONFIG_SND_MESON_AXG_TDMOUT is not set -# CONFIG_SND_MESON_AXG_SOUND_CARD is not set -# CONFIG_SND_MESON_AXG_SPDIFOUT is not set -# CONFIG_SND_MESON_AXG_SPDIFIN is not set -# CONFIG_SND_MESON_AXG_PDM is not set -# CONFIG_SND_MESON_GX_SOUND_CARD is not set -# CONFIG_SND_MESON_G12A_TOACODEC is not set -# CONFIG_SND_MESON_G12A_TOHDMITX is not set -# CONFIG_SND_SOC_MESON_T9015 is not set -# end of ASoC support for Amlogic platforms - -# CONFIG_SND_SOC_QCOM is not set -# CONFIG_SND_SOC_ROCKCHIP is not set -CONFIG_SND_SOC_SAMSUNG=y -# CONFIG_SND_SAMSUNG_PCM is not set -# CONFIG_SND_SAMSUNG_SPDIF is not set -# CONFIG_SND_SAMSUNG_I2S is not set -# CONFIG_SND_SOC_SAMSUNG_SMDK_WM8994 is not set -# CONFIG_SND_SOC_SAMSUNG_SMDK_SPDIF is not set -# CONFIG_SND_SOC_SMDK_WM8994_PCM is not set -# CONFIG_SND_SOC_SNOW is not set -# CONFIG_SND_SOC_ODROID is not set -# CONFIG_SND_SOC_ARNDALE is not set -# CONFIG_SND_SOC_SAMSUNG_MIDAS_WM1811 is not set - -# -# SoC Audio support for Renesas SoCs -# -# CONFIG_SND_SOC_SH4_FSI is not set -CONFIG_SND_SOC_RCAR=m -# end of SoC Audio support for Renesas SoCs - -# CONFIG_SND_SOC_SOF_TOPLEVEL is not set -# CONFIG_SND_SOC_SPRD is not set - -# -# STMicroelectronics STM32 SOC audio support -# -# end of STMicroelectronics STM32 SOC audio support - -# -# Allwinner SoC Audio support -# -# CONFIG_SND_SUN4I_CODEC is not set -# CONFIG_SND_SUN8I_CODEC is not set -# CONFIG_SND_SUN8I_CODEC_ANALOG is not set -# CONFIG_SND_SUN50I_CODEC_ANALOG is not set -# CONFIG_SND_SUN4I_I2S is not set -# CONFIG_SND_SUN4I_SPDIF is not set -# CONFIG_SND_SUN50I_DMIC is not set -# end of Allwinner SoC Audio support - -# CONFIG_SND_SOC_TEGRA is not set -# CONFIG_SND_SOC_UNIPHIER is not set -# CONFIG_SND_SOC_XILINX_I2S is not set -# CONFIG_SND_SOC_XILINX_AUDIO_FORMATTER is not set -# CONFIG_SND_SOC_XILINX_SPDIF is not set -# CONFIG_SND_SOC_XTFPGA_I2S is not set -CONFIG_SND_SOC_I2C_AND_SPI=y - -# -# CODEC drivers -# -# CONFIG_SND_SOC_AC97_CODEC is not set -# CONFIG_SND_SOC_ADAU1372_I2C is not set -# CONFIG_SND_SOC_ADAU1372_SPI is not set -# CONFIG_SND_SOC_ADAU1701 is not set -# CONFIG_SND_SOC_ADAU1761_I2C is not set -# CONFIG_SND_SOC_ADAU1761_SPI is not set -# CONFIG_SND_SOC_ADAU7002 is not set -# CONFIG_SND_SOC_ADAU7118_HW is not set -# CONFIG_SND_SOC_ADAU7118_I2C is not set -# CONFIG_SND_SOC_AK4104 is not set -# CONFIG_SND_SOC_AK4118 is not set -# CONFIG_SND_SOC_AK4375 is not set -# CONFIG_SND_SOC_AK4458 is not set -# CONFIG_SND_SOC_AK4554 is not set -CONFIG_SND_SOC_AK4613=m -# CONFIG_SND_SOC_AK4642 is not set -# CONFIG_SND_SOC_AK5386 is not set -# CONFIG_SND_SOC_AK5558 is not set -# CONFIG_SND_SOC_ALC5623 is not set -# CONFIG_SND_SOC_AW8738 is not set -# CONFIG_SND_SOC_BD28623 is not set -# CONFIG_SND_SOC_BT_SCO is not set -# CONFIG_SND_SOC_CS35L32 is not set -# CONFIG_SND_SOC_CS35L33 is not set -# CONFIG_SND_SOC_CS35L34 is not set -# CONFIG_SND_SOC_CS35L35 is not set -# CONFIG_SND_SOC_CS35L36 is not set -# CONFIG_SND_SOC_CS35L41_SPI is not set -# CONFIG_SND_SOC_CS35L41_I2C is not set -# CONFIG_SND_SOC_CS35L45_SPI is not set -# CONFIG_SND_SOC_CS35L45_I2C is not set -# CONFIG_SND_SOC_CS42L42 is not set -# CONFIG_SND_SOC_CS42L51_I2C is not set -# CONFIG_SND_SOC_CS42L52 is not set -# CONFIG_SND_SOC_CS42L56 is not set -# CONFIG_SND_SOC_CS42L73 is not set -# CONFIG_SND_SOC_CS42L83 is not set -# CONFIG_SND_SOC_CS4234 is not set -# CONFIG_SND_SOC_CS4265 is not set -# CONFIG_SND_SOC_CS4270 is not set -# CONFIG_SND_SOC_CS4271_I2C is not set -# CONFIG_SND_SOC_CS4271_SPI is not set -# CONFIG_SND_SOC_CS42XX8_I2C is not set -# CONFIG_SND_SOC_CS43130 is not set -# CONFIG_SND_SOC_CS4341 is not set -# CONFIG_SND_SOC_CS4349 is not set -# CONFIG_SND_SOC_CS53L30 is not set -# CONFIG_SND_SOC_CX2072X is not set -# CONFIG_SND_SOC_DA7213 is not set -# CONFIG_SND_SOC_DMIC is not set -CONFIG_SND_SOC_HDMI_CODEC=m -# CONFIG_SND_SOC_ES7134 is not set -# CONFIG_SND_SOC_ES7241 is not set -# CONFIG_SND_SOC_ES8316 is not set -# CONFIG_SND_SOC_ES8326 is not set -# CONFIG_SND_SOC_ES8328_I2C is not set -# CONFIG_SND_SOC_ES8328_SPI is not set -# CONFIG_SND_SOC_GTM601 is not set -# CONFIG_SND_SOC_HDA is not set -# CONFIG_SND_SOC_ICS43432 is not set -# CONFIG_SND_SOC_INNO_RK3036 is not set -# CONFIG_SND_SOC_MAX98088 is not set -# CONFIG_SND_SOC_MAX98357A is not set -# CONFIG_SND_SOC_MAX98504 is not set -# CONFIG_SND_SOC_MAX9867 is not set -# CONFIG_SND_SOC_MAX98927 is not set -# CONFIG_SND_SOC_MAX98520 is not set -# CONFIG_SND_SOC_MAX98373_I2C is not set -# CONFIG_SND_SOC_MAX98390 is not set -# CONFIG_SND_SOC_MAX98396 is not set -# CONFIG_SND_SOC_MAX9860 is not set -# CONFIG_SND_SOC_MSM8916_WCD_ANALOG is not set -# CONFIG_SND_SOC_MSM8916_WCD_DIGITAL is not set -# CONFIG_SND_SOC_PCM1681 is not set -# CONFIG_SND_SOC_PCM1789_I2C is not set -# CONFIG_SND_SOC_PCM179X_I2C is not set -# CONFIG_SND_SOC_PCM179X_SPI is not set -# CONFIG_SND_SOC_PCM186X_I2C is not set -# CONFIG_SND_SOC_PCM186X_SPI is not set -# CONFIG_SND_SOC_PCM3060_I2C is not set -# CONFIG_SND_SOC_PCM3060_SPI is not set -# CONFIG_SND_SOC_PCM3168A_I2C is not set -# CONFIG_SND_SOC_PCM3168A_SPI is not set -# CONFIG_SND_SOC_PCM5102A is not set -# CONFIG_SND_SOC_PCM512x_I2C is not set -# CONFIG_SND_SOC_PCM512x_SPI is not set -# CONFIG_SND_SOC_RK3328 is not set -# CONFIG_SND_SOC_RK817 is not set -# CONFIG_SND_SOC_RT5616 is not set -# CONFIG_SND_SOC_RT5631 is not set -# CONFIG_SND_SOC_RT5640 is not set -# CONFIG_SND_SOC_RT5659 is not set -# CONFIG_SND_SOC_RT9120 is not set -# CONFIG_SND_SOC_SGTL5000 is not set -# CONFIG_SND_SOC_SIMPLE_AMPLIFIER is not set -# CONFIG_SND_SOC_SIMPLE_MUX is not set -# CONFIG_SND_SOC_SPDIF is not set -# CONFIG_SND_SOC_SRC4XXX_I2C is not set -# CONFIG_SND_SOC_SSM2305 is not set -# CONFIG_SND_SOC_SSM2518 is not set -# CONFIG_SND_SOC_SSM2602_SPI is not set -# CONFIG_SND_SOC_SSM2602_I2C is not set -# CONFIG_SND_SOC_SSM4567 is not set -# CONFIG_SND_SOC_STA32X is not set -# CONFIG_SND_SOC_STA350 is not set -# CONFIG_SND_SOC_STI_SAS is not set -# CONFIG_SND_SOC_TAS2552 is not set -# CONFIG_SND_SOC_TAS2562 is not set -# CONFIG_SND_SOC_TAS2764 is not set -# CONFIG_SND_SOC_TAS2770 is not set -# CONFIG_SND_SOC_TAS2780 is not set -# CONFIG_SND_SOC_TAS5086 is not set -# CONFIG_SND_SOC_TAS571X is not set -# CONFIG_SND_SOC_TAS5720 is not set -# CONFIG_SND_SOC_TAS5805M is not set -# CONFIG_SND_SOC_TAS6424 is not set -# CONFIG_SND_SOC_TDA7419 is not set -# CONFIG_SND_SOC_TFA9879 is not set -# CONFIG_SND_SOC_TFA989X is not set -# CONFIG_SND_SOC_TLV320ADC3XXX is not set -# CONFIG_SND_SOC_TLV320AIC23_I2C is not set -# CONFIG_SND_SOC_TLV320AIC23_SPI is not set -# CONFIG_SND_SOC_TLV320AIC31XX is not set -# CONFIG_SND_SOC_TLV320AIC32X4_I2C is not set -# CONFIG_SND_SOC_TLV320AIC32X4_SPI is not set -# CONFIG_SND_SOC_TLV320AIC3X_I2C is not set -# CONFIG_SND_SOC_TLV320AIC3X_SPI is not set -# CONFIG_SND_SOC_TLV320ADCX140 is not set -# CONFIG_SND_SOC_TS3A227E is not set -# CONFIG_SND_SOC_TSCS42XX is not set -# CONFIG_SND_SOC_TSCS454 is not set -# CONFIG_SND_SOC_UDA1334 is not set -# CONFIG_SND_SOC_WM8510 is not set -# CONFIG_SND_SOC_WM8523 is not set -# CONFIG_SND_SOC_WM8524 is not set -# CONFIG_SND_SOC_WM8580 is not set -# CONFIG_SND_SOC_WM8711 is not set -# CONFIG_SND_SOC_WM8728 is not set -# CONFIG_SND_SOC_WM8731_I2C is not set -# CONFIG_SND_SOC_WM8731_SPI is not set -# CONFIG_SND_SOC_WM8737 is not set -# CONFIG_SND_SOC_WM8741 is not set -# CONFIG_SND_SOC_WM8750 is not set -# CONFIG_SND_SOC_WM8753 is not set -# CONFIG_SND_SOC_WM8770 is not set -# CONFIG_SND_SOC_WM8776 is not set -# CONFIG_SND_SOC_WM8782 is not set -# CONFIG_SND_SOC_WM8804_I2C is not set -# CONFIG_SND_SOC_WM8804_SPI is not set -# CONFIG_SND_SOC_WM8903 is not set -# CONFIG_SND_SOC_WM8904 is not set -# CONFIG_SND_SOC_WM8940 is not set -# CONFIG_SND_SOC_WM8960 is not set -# CONFIG_SND_SOC_WM8962 is not set -# CONFIG_SND_SOC_WM8974 is not set -# CONFIG_SND_SOC_WM8978 is not set -# CONFIG_SND_SOC_WM8985 is not set -# CONFIG_SND_SOC_ZL38060 is not set -# CONFIG_SND_SOC_MAX9759 is not set -# CONFIG_SND_SOC_MT6351 is not set -# CONFIG_SND_SOC_MT6358 is not set -# CONFIG_SND_SOC_MT6660 is not set -# CONFIG_SND_SOC_NAU8315 is not set -# CONFIG_SND_SOC_NAU8540 is not set -# CONFIG_SND_SOC_NAU8810 is not set -# CONFIG_SND_SOC_NAU8821 is not set -# CONFIG_SND_SOC_NAU8822 is not set -# CONFIG_SND_SOC_NAU8824 is not set -# CONFIG_SND_SOC_TPA6130A2 is not set -# CONFIG_SND_SOC_LPASS_WSA_MACRO is not set -# CONFIG_SND_SOC_LPASS_VA_MACRO is not set -# CONFIG_SND_SOC_LPASS_RX_MACRO is not set -# CONFIG_SND_SOC_LPASS_TX_MACRO is not set -# end of CODEC drivers - -CONFIG_SND_SIMPLE_CARD_UTILS=y -CONFIG_SND_SIMPLE_CARD=y -# CONFIG_SND_AUDIO_GRAPH_CARD is not set -# CONFIG_SND_AUDIO_GRAPH_CARD2 is not set -# CONFIG_SND_TEST_COMPONENT is not set -# CONFIG_SND_XEN_FRONTEND is not set -# CONFIG_SND_VIRTIO is not set - -# -# HID support -# -CONFIG_HID=y -# CONFIG_HID_BATTERY_STRENGTH is not set -# CONFIG_HIDRAW is not set -# CONFIG_UHID is not set -CONFIG_HID_GENERIC=y - -# -# Special HID drivers -# -CONFIG_HID_A4TECH=y -# CONFIG_HID_ACCUTOUCH is not set -# CONFIG_HID_ACRUX is not set -CONFIG_HID_APPLE=y -# CONFIG_HID_APPLEIR is not set -# CONFIG_HID_ASUS is not set -# CONFIG_HID_AUREAL is not set -CONFIG_HID_BELKIN=y -# CONFIG_HID_BETOP_FF is not set -# CONFIG_HID_BIGBEN_FF is not set -CONFIG_HID_CHERRY=y -CONFIG_HID_CHICONY=y -# CONFIG_HID_CORSAIR is not set -# CONFIG_HID_COUGAR is not set -# CONFIG_HID_MACALLY is not set -# CONFIG_HID_PRODIKEYS is not set -# CONFIG_HID_CMEDIA is not set -# CONFIG_HID_CREATIVE_SB0540 is not set -CONFIG_HID_CYPRESS=y -# CONFIG_HID_DRAGONRISE is not set -# CONFIG_HID_EMS_FF is not set -# CONFIG_HID_ELAN is not set -# CONFIG_HID_ELECOM is not set -# CONFIG_HID_ELO is not set -CONFIG_HID_EZKEY=y -# CONFIG_HID_GEMBIRD is not set -# CONFIG_HID_GFRM is not set -# CONFIG_HID_GLORIOUS is not set -# CONFIG_HID_HOLTEK is not set -# CONFIG_HID_VIVALDI is not set -# CONFIG_HID_GT683R is not set -# CONFIG_HID_KEYTOUCH is not set -# CONFIG_HID_KYE is not set -# CONFIG_HID_UCLOGIC is not set -# CONFIG_HID_WALTOP is not set -# CONFIG_HID_VIEWSONIC is not set -# CONFIG_HID_VRC2 is not set -# CONFIG_HID_XIAOMI is not set -# CONFIG_HID_GYRATION is not set -# CONFIG_HID_ICADE is not set -CONFIG_HID_ITE=y -# CONFIG_HID_JABRA is not set -# CONFIG_HID_TWINHAN is not set -CONFIG_HID_KENSINGTON=y -# CONFIG_HID_LCPOWER is not set -# CONFIG_HID_LED is not set -# CONFIG_HID_LENOVO is not set -# CONFIG_HID_LETSKETCH is not set -CONFIG_HID_LOGITECH=y -# CONFIG_HID_LOGITECH_HIDPP is not set -# CONFIG_LOGITECH_FF is not set -# CONFIG_LOGIRUMBLEPAD2_FF is not set -# CONFIG_LOGIG940_FF is not set -# CONFIG_LOGIWHEELS_FF is not set -# CONFIG_HID_MAGICMOUSE is not set -# CONFIG_HID_MALTRON is not set -# CONFIG_HID_MAYFLASH is not set -# CONFIG_HID_MEGAWORLD_FF is not set -CONFIG_HID_REDRAGON=y -CONFIG_HID_MICROSOFT=y -CONFIG_HID_MONTEREY=y -# CONFIG_HID_MULTITOUCH is not set -# CONFIG_HID_NINTENDO is not set -# CONFIG_HID_NTI is not set -# CONFIG_HID_NTRIG is not set -# CONFIG_HID_ORTEK is not set -# CONFIG_HID_PANTHERLORD is not set -# CONFIG_HID_PENMOUNT is not set -# CONFIG_HID_PETALYNX is not set -# CONFIG_HID_PICOLCD is not set -# CONFIG_HID_PLANTRONICS is not set -# CONFIG_HID_PXRC is not set -# CONFIG_HID_RAZER is not set -# CONFIG_HID_PRIMAX is not set -# CONFIG_HID_RETRODE is not set -# CONFIG_HID_ROCCAT is not set -# CONFIG_HID_SAITEK is not set -# CONFIG_HID_SAMSUNG is not set -# CONFIG_HID_SEMITEK is not set -# CONFIG_HID_SIGMAMICRO is not set -# CONFIG_HID_SONY is not set -# CONFIG_HID_SPEEDLINK is not set -# CONFIG_HID_STEAM is not set -# CONFIG_HID_STEELSERIES is not set -# CONFIG_HID_SUNPLUS is not set -# CONFIG_HID_RMI is not set -# CONFIG_HID_GREENASIA is not set -# CONFIG_HID_SMARTJOYPLUS is not set -# CONFIG_HID_TIVO is not set -# CONFIG_HID_TOPSEED is not set -# CONFIG_HID_TOPRE is not set -# CONFIG_HID_THINGM is not set -# CONFIG_HID_THRUSTMASTER is not set -# CONFIG_HID_UDRAW_PS3 is not set -# CONFIG_HID_U2FZERO is not set -# CONFIG_HID_WACOM is not set -# CONFIG_HID_WIIMOTE is not set -# CONFIG_HID_XINMO is not set -# CONFIG_HID_ZEROPLUS is not set -# CONFIG_HID_ZYDACRON is not set -# CONFIG_HID_SENSOR_HUB is not set -# CONFIG_HID_ALPS is not set -# CONFIG_HID_MCP2221 is not set -# end of Special HID drivers - -# -# USB HID support -# -CONFIG_USB_HID=y -# CONFIG_HID_PID is not set -# CONFIG_USB_HIDDEV is not set -# end of USB HID support - -# -# I2C HID support -# -# CONFIG_I2C_HID_ACPI is not set -# CONFIG_I2C_HID_OF is not set -# CONFIG_I2C_HID_OF_ELAN is not set -# CONFIG_I2C_HID_OF_GOODIX is not set -# end of I2C HID support -# end of HID support - -CONFIG_USB_OHCI_LITTLE_ENDIAN=y -CONFIG_USB_SUPPORT=y -CONFIG_USB_COMMON=y -# CONFIG_USB_LED_TRIG is not set -CONFIG_USB_ULPI_BUS=y -CONFIG_USB_CONN_GPIO=y -CONFIG_USB_ARCH_HAS_HCD=y -CONFIG_USB=y -CONFIG_USB_PCI=y -# CONFIG_USB_ANNOUNCE_NEW_DEVICES is not set - -# -# Miscellaneous USB options -# -CONFIG_USB_DEFAULT_PERSIST=y -# CONFIG_USB_FEW_INIT_RETRIES is not set -# CONFIG_USB_DYNAMIC_MINORS is not set -CONFIG_USB_OTG=y -# CONFIG_USB_OTG_PRODUCTLIST is not set -# CONFIG_USB_OTG_DISABLE_EXTERNAL_HUB is not set -# CONFIG_USB_OTG_FSM is not set -# CONFIG_USB_LEDS_TRIGGER_USBPORT is not set -CONFIG_USB_AUTOSUSPEND_DELAY=2 -# CONFIG_USB_MON is not set - -# -# USB Host Controller Drivers -# -# CONFIG_USB_C67X00_HCD is not set -CONFIG_USB_XHCI_HCD=y -# CONFIG_USB_XHCI_DBGCAP is not set -CONFIG_USB_XHCI_PCI=y -# CONFIG_USB_XHCI_PCI_RENESAS is not set -CONFIG_USB_XHCI_PLATFORM=y -# CONFIG_USB_XHCI_HISTB is not set -# CONFIG_USB_XHCI_MTK is not set -# CONFIG_USB_XHCI_MVEBU is not set -CONFIG_USB_XHCI_RCAR=y -CONFIG_USB_XHCI_TEGRA=y -CONFIG_USB_EHCI_HCD=y -CONFIG_USB_EHCI_ROOT_HUB_TT=y -CONFIG_USB_EHCI_TT_NEWSCHED=y -CONFIG_USB_EHCI_PCI=y -# CONFIG_USB_EHCI_FSL is not set -CONFIG_USB_EHCI_HCD_ORION=y -# CONFIG_USB_EHCI_TEGRA is not set -CONFIG_USB_EHCI_EXYNOS=y -CONFIG_USB_EHCI_HCD_PLATFORM=y -# CONFIG_USB_OXU210HP_HCD is not set -# CONFIG_USB_ISP116X_HCD is not set -# CONFIG_USB_FOTG210_HCD is not set -# CONFIG_USB_MAX3421_HCD is not set -CONFIG_USB_OHCI_HCD=y -CONFIG_USB_OHCI_HCD_PCI=y -CONFIG_USB_OHCI_EXYNOS=y -CONFIG_USB_OHCI_HCD_PLATFORM=y -# CONFIG_USB_UHCI_HCD is not set -# CONFIG_USB_SL811_HCD is not set -# CONFIG_USB_R8A66597_HCD is not set -# CONFIG_USB_RENESAS_USBHS_HCD is not set -# CONFIG_USB_HCD_TEST_MODE is not set -# CONFIG_USB_XEN_HCD is not set -CONFIG_USB_RENESAS_USBHS=m - -# -# USB Device Class drivers -# -# CONFIG_USB_ACM is not set -# CONFIG_USB_PRINTER is not set -# CONFIG_USB_WDM is not set -# CONFIG_USB_TMC is not set - -# -# NOTE: USB_STORAGE depends on SCSI but BLK_DEV_SD may -# - -# -# also be needed; see USB_STORAGE Help for more info -# -CONFIG_USB_STORAGE=y -# CONFIG_USB_STORAGE_DEBUG is not set -# CONFIG_USB_STORAGE_REALTEK is not set -# CONFIG_USB_STORAGE_DATAFAB is not set -# CONFIG_USB_STORAGE_FREECOM is not set -# CONFIG_USB_STORAGE_ISD200 is not set -# CONFIG_USB_STORAGE_USBAT is not set -# CONFIG_USB_STORAGE_SDDR09 is not set -# CONFIG_USB_STORAGE_SDDR55 is not set -# CONFIG_USB_STORAGE_JUMPSHOT is not set -# CONFIG_USB_STORAGE_ALAUDA is not set -# CONFIG_USB_STORAGE_ONETOUCH is not set -# CONFIG_USB_STORAGE_KARMA is not set -# CONFIG_USB_STORAGE_CYPRESS_ATACB is not set -# CONFIG_USB_STORAGE_ENE_UB6250 is not set -# CONFIG_USB_UAS is not set - -# -# USB Imaging devices -# -# CONFIG_USB_MDC800 is not set -# CONFIG_USB_MICROTEK is not set -# CONFIG_USBIP_CORE is not set -# CONFIG_USB_CDNS_SUPPORT is not set -# CONFIG_USB_MTU3 is not set -CONFIG_USB_MUSB_HDRC=y -CONFIG_USB_MUSB_HOST=y -# CONFIG_USB_MUSB_GADGET is not set -# CONFIG_USB_MUSB_DUAL_ROLE is not set - -# -# Platform Glue Layer -# -CONFIG_USB_MUSB_SUNXI=y -# CONFIG_USB_MUSB_MEDIATEK is not set - -# -# MUSB DMA mode -# -# CONFIG_MUSB_PIO_ONLY is not set -CONFIG_USB_DWC3=y -# CONFIG_USB_DWC3_ULPI is not set -# CONFIG_USB_DWC3_HOST is not set -# CONFIG_USB_DWC3_GADGET is not set -CONFIG_USB_DWC3_DUAL_ROLE=y - -# -# Platform Glue Driver Support -# -CONFIG_USB_DWC3_EXYNOS=y -CONFIG_USB_DWC3_PCI=y -CONFIG_USB_DWC3_HAPS=y -CONFIG_USB_DWC3_MESON_G12A=y -CONFIG_USB_DWC3_OF_SIMPLE=y -CONFIG_USB_DWC3_QCOM=y -CONFIG_USB_DWC3_XILINX=y -CONFIG_USB_DWC2=y -# CONFIG_USB_DWC2_HOST is not set - -# -# Gadget/Dual-role mode requires USB Gadget support to be enabled -# -# CONFIG_USB_DWC2_PERIPHERAL is not set -CONFIG_USB_DWC2_DUAL_ROLE=y -# CONFIG_USB_DWC2_PCI is not set -# CONFIG_USB_DWC2_DEBUG is not set -# CONFIG_USB_DWC2_TRACK_MISSED_SOFS is not set -CONFIG_USB_CHIPIDEA=y -CONFIG_USB_CHIPIDEA_UDC=y -CONFIG_USB_CHIPIDEA_HOST=y -CONFIG_USB_CHIPIDEA_PCI=y -CONFIG_USB_CHIPIDEA_MSM=y -CONFIG_USB_CHIPIDEA_IMX=y -CONFIG_USB_CHIPIDEA_GENERIC=y -CONFIG_USB_CHIPIDEA_TEGRA=y -CONFIG_USB_ISP1760=y -CONFIG_USB_ISP1760_HCD=y -CONFIG_USB_ISP1761_UDC=y -# CONFIG_USB_ISP1760_HOST_ROLE is not set -# CONFIG_USB_ISP1760_GADGET_ROLE is not set -CONFIG_USB_ISP1760_DUAL_ROLE=y - -# -# USB port drivers -# -# CONFIG_USB_SERIAL is not set - -# -# USB Miscellaneous drivers -# -# CONFIG_USB_EMI62 is not set -# CONFIG_USB_EMI26 is not set -# CONFIG_USB_ADUTUX is not set -# CONFIG_USB_SEVSEG is not set -# CONFIG_USB_LEGOTOWER is not set -# CONFIG_USB_LCD is not set -# CONFIG_USB_CYPRESS_CY7C63 is not set -# CONFIG_USB_CYTHERM is not set -# CONFIG_USB_IDMOUSE is not set -# CONFIG_USB_FTDI_ELAN is not set -# CONFIG_USB_APPLEDISPLAY is not set -# CONFIG_USB_QCOM_EUD is not set -# CONFIG_APPLE_MFI_FASTCHARGE is not set -# CONFIG_USB_SISUSBVGA is not set -# CONFIG_USB_LD is not set -# CONFIG_USB_TRANCEVIBRATOR is not set -# CONFIG_USB_IOWARRIOR is not set -# CONFIG_USB_TEST is not set -# CONFIG_USB_EHSET_TEST_FIXTURE is not set -# CONFIG_USB_ISIGHTFW is not set -# CONFIG_USB_YUREX is not set -# CONFIG_USB_EZUSB_FX2 is not set -# CONFIG_USB_HUB_USB251XB is not set -CONFIG_USB_HSIC_USB3503=y -# CONFIG_USB_HSIC_USB4604 is not set -# CONFIG_USB_LINK_LAYER_TEST is not set -# CONFIG_USB_CHAOSKEY is not set -# CONFIG_USB_ONBOARD_HUB is not set - -# -# USB Physical Layer drivers -# -CONFIG_USB_PHY=y -CONFIG_NOP_USB_XCEIV=y -# CONFIG_USB_GPIO_VBUS is not set -# CONFIG_USB_ISP1301 is not set -CONFIG_USB_TEGRA_PHY=y -CONFIG_USB_ULPI=y -CONFIG_USB_ULPI_VIEWPORT=y -# end of USB Physical Layer drivers - -CONFIG_USB_GADGET=y -# CONFIG_USB_GADGET_DEBUG is not set -# CONFIG_USB_GADGET_DEBUG_FILES is not set -# CONFIG_USB_GADGET_DEBUG_FS is not set -CONFIG_USB_GADGET_VBUS_DRAW=2 -CONFIG_USB_GADGET_STORAGE_NUM_BUFFERS=2 - -# -# USB Peripheral Controller -# -# CONFIG_USB_FOTG210_UDC is not set -# CONFIG_USB_GR_UDC is not set -# CONFIG_USB_R8A66597 is not set -CONFIG_USB_RENESAS_USBHS_UDC=m -# CONFIG_USB_RENESAS_USB3 is not set -# CONFIG_USB_PXA27X is not set -# CONFIG_USB_MV_UDC is not set -# CONFIG_USB_MV_U3D is not set -# CONFIG_USB_SNP_UDC_PLAT is not set -# CONFIG_USB_M66592 is not set -# CONFIG_USB_BDC_UDC is not set -# CONFIG_USB_AMD5536UDC is not set -# CONFIG_USB_NET2272 is not set -# CONFIG_USB_NET2280 is not set -# CONFIG_USB_GOKU is not set -# CONFIG_USB_EG20T is not set -# CONFIG_USB_GADGET_XILINX is not set -# CONFIG_USB_MAX3420_UDC is not set -# CONFIG_USB_TEGRA_XUDC is not set -# CONFIG_USB_DUMMY_HCD is not set -# end of USB Peripheral Controller - -# CONFIG_USB_CONFIGFS is not set - -# -# USB Gadget precomposed configurations -# -# CONFIG_USB_ZERO is not set -# CONFIG_USB_AUDIO is not set -# CONFIG_USB_ETH is not set -# CONFIG_USB_G_NCM is not set -# CONFIG_USB_GADGETFS is not set -# CONFIG_USB_FUNCTIONFS is not set -# CONFIG_USB_MASS_STORAGE is not set -# CONFIG_USB_G_SERIAL is not set -# CONFIG_USB_MIDI_GADGET is not set -# CONFIG_USB_G_PRINTER is not set -# CONFIG_USB_CDC_COMPOSITE is not set -# CONFIG_USB_G_ACM_MS is not set -# CONFIG_USB_G_MULTI is not set -# CONFIG_USB_G_HID is not set -# CONFIG_USB_G_DBGP is not set -# CONFIG_USB_G_WEBCAM is not set -# CONFIG_USB_RAW_GADGET is not set -# end of USB Gadget precomposed configurations - -# CONFIG_TYPEC is not set -CONFIG_USB_ROLE_SWITCH=y -CONFIG_MMC=y -CONFIG_PWRSEQ_EMMC=y -CONFIG_PWRSEQ_SIMPLE=y -CONFIG_MMC_BLOCK=y -CONFIG_MMC_BLOCK_MINORS=32 -# CONFIG_SDIO_UART is not set -# CONFIG_MMC_TEST is not set - -# -# MMC/SD/SDIO Host Controller Drivers -# -# CONFIG_MMC_DEBUG is not set -CONFIG_MMC_ARMMMCI=y -CONFIG_MMC_QCOM_DML=y -CONFIG_MMC_STM32_SDMMC=y -CONFIG_MMC_SDHCI=y -CONFIG_MMC_SDHCI_IO_ACCESSORS=y -# CONFIG_MMC_SDHCI_PCI is not set -CONFIG_MMC_SDHCI_ACPI=y -CONFIG_MMC_SDHCI_PLTFM=y -CONFIG_MMC_SDHCI_OF_ARASAN=y -# CONFIG_MMC_SDHCI_OF_AT91 is not set -# CONFIG_MMC_SDHCI_OF_DWCMSHC is not set -CONFIG_MMC_SDHCI_CADENCE=y -CONFIG_MMC_SDHCI_TEGRA=y -# CONFIG_MMC_SDHCI_S3C is not set -# CONFIG_MMC_SDHCI_PXAV3 is not set -# CONFIG_MMC_SDHCI_F_SDH30 is not set -# CONFIG_MMC_SDHCI_MILBEAUT is not set -CONFIG_MMC_MESON_GX=y -# CONFIG_MMC_MESON_MX_SDIO is not set -CONFIG_MMC_SDHCI_MSM=y -# CONFIG_MMC_TIFM_SD is not set -CONFIG_MMC_SPI=y -# CONFIG_MMC_SDHCI_SPRD is not set -CONFIG_MMC_TMIO_CORE=y -CONFIG_MMC_SDHI=y -# CONFIG_MMC_SDHI_SYS_DMAC is not set -CONFIG_MMC_SDHI_INTERNAL_DMAC=y -# CONFIG_MMC_UNIPHIER is not set -# CONFIG_MMC_CB710 is not set -# CONFIG_MMC_VIA_SDMMC is not set -CONFIG_MMC_DW=y -CONFIG_MMC_DW_PLTFM=y -# CONFIG_MMC_DW_BLUEFIELD is not set -CONFIG_MMC_DW_EXYNOS=y -# CONFIG_MMC_DW_HI3798CV200 is not set -CONFIG_MMC_DW_K3=y -# CONFIG_MMC_DW_PCI is not set -CONFIG_MMC_DW_ROCKCHIP=y -# CONFIG_MMC_SH_MMCIF is not set -# CONFIG_MMC_VUB300 is not set -# CONFIG_MMC_USHC is not set -# CONFIG_MMC_USDHI6ROL0 is not set -CONFIG_MMC_SUNXI=y -CONFIG_MMC_CQHCI=y -# CONFIG_MMC_HSQ is not set -# CONFIG_MMC_TOSHIBA_PCI is not set -# CONFIG_MMC_MTK is not set -CONFIG_MMC_SDHCI_XENON=y -# CONFIG_MMC_SDHCI_OMAP is not set -# CONFIG_MMC_SDHCI_AM654 is not set -# CONFIG_SCSI_UFSHCD is not set -# CONFIG_MEMSTICK is not set -CONFIG_NEW_LEDS=y -CONFIG_LEDS_CLASS=y -# CONFIG_LEDS_CLASS_FLASH is not set -# CONFIG_LEDS_CLASS_MULTICOLOR is not set -# CONFIG_LEDS_BRIGHTNESS_HW_CHANGED is not set - -# -# LED drivers -# -# CONFIG_LEDS_AN30259A is not set -# CONFIG_LEDS_AW2013 is not set -# CONFIG_LEDS_BCM6328 is not set -# CONFIG_LEDS_BCM6358 is not set -# CONFIG_LEDS_CR0014114 is not set -# CONFIG_LEDS_EL15203000 is not set -# CONFIG_LEDS_LM3530 is not set -# CONFIG_LEDS_LM3532 is not set -# CONFIG_LEDS_LM3642 is not set -# CONFIG_LEDS_LM3692X is not set -# CONFIG_LEDS_PCA9532 is not set -CONFIG_LEDS_GPIO=y -# CONFIG_LEDS_LP3944 is not set -# CONFIG_LEDS_LP3952 is not set -# CONFIG_LEDS_LP50XX is not set -# CONFIG_LEDS_LP55XX_COMMON is not set -# CONFIG_LEDS_LP8860 is not set -# CONFIG_LEDS_PCA955X is not set -# CONFIG_LEDS_PCA963X is not set -# CONFIG_LEDS_DAC124S085 is not set -CONFIG_LEDS_PWM=y -# CONFIG_LEDS_REGULATOR is not set -# CONFIG_LEDS_BD2802 is not set -# CONFIG_LEDS_LT3593 is not set -# CONFIG_LEDS_TCA6507 is not set -# CONFIG_LEDS_TLC591XX is not set -# CONFIG_LEDS_LM355x is not set -# CONFIG_LEDS_IS31FL319X is not set -# CONFIG_LEDS_IS31FL32XX is not set - -# -# LED driver for blink(1) USB RGB LED is under Special HID drivers (HID_THINGM) -# -# CONFIG_LEDS_BLINKM is not set -CONFIG_LEDS_SYSCON=y -# CONFIG_LEDS_MLXREG is not set -# CONFIG_LEDS_USER is not set -# CONFIG_LEDS_SPI_BYTE is not set -# CONFIG_LEDS_TI_LMU_COMMON is not set - -# -# Flash and Torch LED drivers -# - -# -# RGB LED drivers -# - -# -# LED Triggers -# -CONFIG_LEDS_TRIGGERS=y -# CONFIG_LEDS_TRIGGER_TIMER is not set -# CONFIG_LEDS_TRIGGER_ONESHOT is not set -# CONFIG_LEDS_TRIGGER_DISK is not set -# CONFIG_LEDS_TRIGGER_MTD is not set -CONFIG_LEDS_TRIGGER_HEARTBEAT=y -# CONFIG_LEDS_TRIGGER_BACKLIGHT is not set -CONFIG_LEDS_TRIGGER_CPU=y -# CONFIG_LEDS_TRIGGER_ACTIVITY is not set -# CONFIG_LEDS_TRIGGER_GPIO is not set -CONFIG_LEDS_TRIGGER_DEFAULT_ON=y - -# -# iptables trigger is under Netfilter config (LED target) -# -# CONFIG_LEDS_TRIGGER_TRANSIENT is not set -# CONFIG_LEDS_TRIGGER_CAMERA is not set -# CONFIG_LEDS_TRIGGER_PANIC is not set -# CONFIG_LEDS_TRIGGER_NETDEV is not set -# CONFIG_LEDS_TRIGGER_PATTERN is not set -# CONFIG_LEDS_TRIGGER_AUDIO is not set -# CONFIG_LEDS_TRIGGER_TTY is not set - -# -# Simple LED drivers -# -# CONFIG_ACCESSIBILITY is not set -# CONFIG_INFINIBAND is not set -CONFIG_EDAC_SUPPORT=y -CONFIG_RTC_LIB=y -CONFIG_RTC_CLASS=y -CONFIG_RTC_HCTOSYS=y -CONFIG_RTC_HCTOSYS_DEVICE="rtc0" -CONFIG_RTC_SYSTOHC=y -CONFIG_RTC_SYSTOHC_DEVICE="rtc0" -# CONFIG_RTC_DEBUG is not set -CONFIG_RTC_NVMEM=y - -# -# RTC interfaces -# -CONFIG_RTC_INTF_SYSFS=y -CONFIG_RTC_INTF_PROC=y -CONFIG_RTC_INTF_DEV=y -# CONFIG_RTC_INTF_DEV_UIE_EMUL is not set -# CONFIG_RTC_DRV_TEST is not set - -# -# I2C RTC drivers -# -# CONFIG_RTC_DRV_ABB5ZES3 is not set -# CONFIG_RTC_DRV_ABEOZ9 is not set -# CONFIG_RTC_DRV_ABX80X is not set -# CONFIG_RTC_DRV_DS1307 is not set -# CONFIG_RTC_DRV_DS1374 is not set -# CONFIG_RTC_DRV_DS1672 is not set -# CONFIG_RTC_DRV_HYM8563 is not set -# CONFIG_RTC_DRV_MAX6900 is not set -CONFIG_RTC_DRV_MAX77686=y -# CONFIG_RTC_DRV_NCT3018Y is not set -CONFIG_RTC_DRV_RK808=m -# CONFIG_RTC_DRV_RS5C372 is not set -# CONFIG_RTC_DRV_ISL1208 is not set -# CONFIG_RTC_DRV_ISL12022 is not set -# CONFIG_RTC_DRV_ISL12026 is not set -# CONFIG_RTC_DRV_X1205 is not set -# CONFIG_RTC_DRV_PCF8523 is not set -# CONFIG_RTC_DRV_PCF85063 is not set -# CONFIG_RTC_DRV_PCF85363 is not set -# CONFIG_RTC_DRV_PCF8563 is not set -# CONFIG_RTC_DRV_PCF8583 is not set -# CONFIG_RTC_DRV_M41T80 is not set -# CONFIG_RTC_DRV_BQ32K is not set -# CONFIG_RTC_DRV_S35390A is not set -# CONFIG_RTC_DRV_FM3130 is not set -# CONFIG_RTC_DRV_RX8010 is not set -# CONFIG_RTC_DRV_RX8581 is not set -# CONFIG_RTC_DRV_RX8025 is not set -# CONFIG_RTC_DRV_EM3027 is not set -# CONFIG_RTC_DRV_RV3028 is not set -# CONFIG_RTC_DRV_RV3032 is not set -# CONFIG_RTC_DRV_RV8803 is not set -CONFIG_RTC_DRV_S5M=y -# CONFIG_RTC_DRV_SD3078 is not set - -# -# SPI RTC drivers -# -# CONFIG_RTC_DRV_M41T93 is not set -# CONFIG_RTC_DRV_M41T94 is not set -# CONFIG_RTC_DRV_DS1302 is not set -# CONFIG_RTC_DRV_DS1305 is not set -# CONFIG_RTC_DRV_DS1343 is not set -# CONFIG_RTC_DRV_DS1347 is not set -# CONFIG_RTC_DRV_DS1390 is not set -# CONFIG_RTC_DRV_MAX6916 is not set -# CONFIG_RTC_DRV_R9701 is not set -# CONFIG_RTC_DRV_RX4581 is not set -# CONFIG_RTC_DRV_RS5C348 is not set -# CONFIG_RTC_DRV_MAX6902 is not set -# CONFIG_RTC_DRV_PCF2123 is not set -# CONFIG_RTC_DRV_MCP795 is not set -CONFIG_RTC_I2C_AND_SPI=y - -# -# SPI and I2C RTC drivers -# -CONFIG_RTC_DRV_DS3232=y -CONFIG_RTC_DRV_DS3232_HWMON=y -# CONFIG_RTC_DRV_PCF2127 is not set -# CONFIG_RTC_DRV_RV3029C2 is not set -# CONFIG_RTC_DRV_RX6110 is not set - -# -# Platform RTC drivers -# -# CONFIG_RTC_DRV_DS1286 is not set -# CONFIG_RTC_DRV_DS1511 is not set -# CONFIG_RTC_DRV_DS1553 is not set -# CONFIG_RTC_DRV_DS1685_FAMILY is not set -# CONFIG_RTC_DRV_DS1742 is not set -# CONFIG_RTC_DRV_DS2404 is not set -CONFIG_RTC_DRV_EFI=y -# CONFIG_RTC_DRV_STK17TA8 is not set -# CONFIG_RTC_DRV_M48T86 is not set -# CONFIG_RTC_DRV_M48T35 is not set -# CONFIG_RTC_DRV_M48T59 is not set -# CONFIG_RTC_DRV_MSM6242 is not set -# CONFIG_RTC_DRV_BQ4802 is not set -# CONFIG_RTC_DRV_RP5C01 is not set -# CONFIG_RTC_DRV_V3020 is not set -# CONFIG_RTC_DRV_OPTEE is not set -# CONFIG_RTC_DRV_ZYNQMP is not set - -# -# on-CPU RTC drivers -# -CONFIG_RTC_DRV_MESON_VRTC=m -CONFIG_RTC_DRV_S3C=y -# CONFIG_RTC_DRV_SH is not set -# CONFIG_RTC_DRV_PL030 is not set -CONFIG_RTC_DRV_PL031=y -CONFIG_RTC_DRV_SUN6I=y -# CONFIG_RTC_DRV_MV is not set -# CONFIG_RTC_DRV_ARMADA38X is not set -# CONFIG_RTC_DRV_CADENCE is not set -# CONFIG_RTC_DRV_FTRTC010 is not set -# CONFIG_RTC_DRV_PM8XXX is not set -CONFIG_RTC_DRV_TEGRA=y -# CONFIG_RTC_DRV_MT2712 is not set -# CONFIG_RTC_DRV_MT7622 is not set -CONFIG_RTC_DRV_XGENE=y -# CONFIG_RTC_DRV_R7301 is not set - -# -# HID Sensor RTC drivers -# -# CONFIG_RTC_DRV_GOLDFISH is not set -CONFIG_DMADEVICES=y -# CONFIG_DMADEVICES_DEBUG is not set - -# -# DMA Devices -# -CONFIG_ASYNC_TX_ENABLE_CHANNEL_SWITCH=y -CONFIG_DMA_ENGINE=y -CONFIG_DMA_VIRTUAL_CHANNELS=y -CONFIG_DMA_ACPI=y -CONFIG_DMA_OF=y -# CONFIG_ALTERA_MSGDMA is not set -# CONFIG_AMBA_PL08X is not set -# CONFIG_AXI_DMAC is not set -# CONFIG_BCM_SBA_RAID is not set -# CONFIG_DMA_SUN6I is not set -# CONFIG_DW_AXI_DMAC is not set -# CONFIG_FSL_EDMA is not set -# CONFIG_FSL_QDMA is not set -# CONFIG_HISI_DMA is not set -# CONFIG_INTEL_IDMA64 is not set -CONFIG_K3_DMA=y -# CONFIG_MV_XOR is not set -CONFIG_MV_XOR_V2=y -CONFIG_PL330_DMA=y -# CONFIG_PLX_DMA is not set -# CONFIG_SPRD_DMA is not set -# CONFIG_TEGRA186_GPC_DMA is not set -CONFIG_TEGRA20_APB_DMA=y -# CONFIG_TEGRA210_ADMA is not set -# CONFIG_UNIPHIER_MDMAC is not set -# CONFIG_UNIPHIER_XDMAC is not set -# CONFIG_XGENE_DMA is not set -# CONFIG_XILINX_DMA is not set -# CONFIG_XILINX_ZYNQMP_DMA is not set -# CONFIG_XILINX_ZYNQMP_DPDMA is not set -# CONFIG_MTK_HSDMA is not set -# CONFIG_MTK_CQDMA is not set -# CONFIG_MTK_UART_APDMA is not set -CONFIG_QCOM_BAM_DMA=y -# CONFIG_QCOM_GPI_DMA is not set -CONFIG_QCOM_HIDMA_MGMT=y -CONFIG_QCOM_HIDMA=y -# CONFIG_DW_DMAC is not set -# CONFIG_DW_DMAC_PCI is not set -# CONFIG_DW_EDMA is not set -# CONFIG_DW_EDMA_PCIE is not set -# CONFIG_SF_PDMA is not set -CONFIG_RENESAS_DMA=y -CONFIG_RCAR_DMAC=y -# CONFIG_RENESAS_USB_DMAC is not set - -# -# DMA Clients -# -# CONFIG_ASYNC_TX_DMA is not set -# CONFIG_DMATEST is not set -CONFIG_DMA_ENGINE_RAID=y - -# -# DMABUF options -# -CONFIG_SYNC_FILE=y -# CONFIG_SW_SYNC is not set -# CONFIG_UDMABUF is not set -# CONFIG_DMABUF_MOVE_NOTIFY is not set -# CONFIG_DMABUF_DEBUG is not set -# CONFIG_DMABUF_SELFTESTS is not set -# CONFIG_DMABUF_HEAPS is not set -# CONFIG_DMABUF_SYSFS_STATS is not set -# end of DMABUF options - -# CONFIG_AUXDISPLAY is not set -# CONFIG_UIO is not set -CONFIG_VFIO=y -CONFIG_VFIO_IOMMU_TYPE1=y -CONFIG_VFIO_VIRQFD=y -# CONFIG_VFIO_NOIOMMU is not set -CONFIG_VFIO_PCI_CORE=y -CONFIG_VFIO_PCI_MMAP=y -CONFIG_VFIO_PCI_INTX=y -CONFIG_VFIO_PCI=y -# CONFIG_VFIO_PLATFORM is not set -# CONFIG_VFIO_MDEV is not set -# CONFIG_VIRT_DRIVERS is not set -CONFIG_VIRTIO_ANCHOR=y -CONFIG_VIRTIO=y -CONFIG_VIRTIO_PCI_LIB=y -CONFIG_VIRTIO_PCI_LIB_LEGACY=y -CONFIG_VIRTIO_MENU=y -CONFIG_VIRTIO_PCI=y -CONFIG_VIRTIO_PCI_LEGACY=y -CONFIG_VIRTIO_BALLOON=y -# CONFIG_VIRTIO_INPUT is not set -CONFIG_VIRTIO_MMIO=y -# CONFIG_VIRTIO_MMIO_CMDLINE_DEVICES is not set -# CONFIG_VDPA is not set -CONFIG_VHOST_MENU=y -# CONFIG_VHOST_NET is not set -# CONFIG_VHOST_CROSS_ENDIAN_LEGACY is not set - -# -# Microsoft Hyper-V guest support -# -# CONFIG_HYPERV is not set -# end of Microsoft Hyper-V guest support - -# -# Xen driver support -# -CONFIG_XEN_BALLOON=y -CONFIG_XEN_SCRUB_PAGES_DEFAULT=y -CONFIG_XEN_DEV_EVTCHN=y -CONFIG_XEN_BACKEND=y -CONFIG_XENFS=y -CONFIG_XEN_COMPAT_XENFS=y -CONFIG_XEN_SYS_HYPERVISOR=y -CONFIG_XEN_XENBUS_FRONTEND=y -CONFIG_XEN_GNTDEV=y -CONFIG_XEN_GRANT_DEV_ALLOC=y -# CONFIG_XEN_GRANT_DMA_ALLOC is not set -CONFIG_SWIOTLB_XEN=y -CONFIG_XEN_PCI_STUB=y -CONFIG_XEN_PCIDEV_STUB=m -# CONFIG_XEN_PVCALLS_FRONTEND is not set -# CONFIG_XEN_PVCALLS_BACKEND is not set -CONFIG_XEN_PRIVCMD=y -CONFIG_XEN_EFI=y -CONFIG_XEN_AUTO_XLATE=y -# CONFIG_XEN_VIRTIO is not set -# end of Xen driver support - -# CONFIG_GREYBUS is not set -# CONFIG_COMEDI is not set -CONFIG_STAGING=y -# CONFIG_PRISM2_USB is not set -# CONFIG_RTL8192U is not set -# CONFIG_RTLLIB is not set -CONFIG_RTL8723BS=m -# CONFIG_R8712U is not set -# CONFIG_R8188EU is not set -# CONFIG_RTS5208 is not set -# CONFIG_VT6655 is not set -# CONFIG_VT6656 is not set - -# -# IIO staging drivers -# - -# -# Accelerometers -# -# CONFIG_ADIS16203 is not set -# CONFIG_ADIS16240 is not set -# end of Accelerometers - -# -# Analog to digital converters -# -# CONFIG_AD7816 is not set -# end of Analog to digital converters - -# -# Analog digital bi-direction converters -# -# CONFIG_ADT7316 is not set -# end of Analog digital bi-direction converters - -# -# Direct Digital Synthesis -# -# CONFIG_AD9832 is not set -# CONFIG_AD9834 is not set -# end of Direct Digital Synthesis - -# -# Network Analyzer, Impedance Converters -# -# CONFIG_AD5933 is not set -# end of Network Analyzer, Impedance Converters - -# -# Active energy metering IC -# -# CONFIG_ADE7854 is not set -# end of Active energy metering IC - -# -# Resolver to digital converters -# -# CONFIG_AD2S1210 is not set -# end of Resolver to digital converters -# end of IIO staging drivers - -# CONFIG_FB_SM750 is not set -# CONFIG_USB_EMXX is not set -# CONFIG_MFD_NVEC is not set -# CONFIG_STAGING_MEDIA is not set -# CONFIG_STAGING_BOARD is not set -# CONFIG_LTE_GDM724X is not set -# CONFIG_FB_TFT is not set -# CONFIG_KS7010 is not set -# CONFIG_PI433 is not set -# CONFIG_XIL_AXIS_FIFO is not set -# CONFIG_FIELDBUS_DEV is not set -# CONFIG_QLGE is not set -# CONFIG_VME_BUS is not set -# CONFIG_GOLDFISH is not set -# CONFIG_CHROME_PLATFORMS is not set -# CONFIG_MELLANOX_PLATFORM is not set -CONFIG_SURFACE_PLATFORMS=y -# CONFIG_SURFACE_3_POWER_OPREGION is not set -# CONFIG_SURFACE_GPE is not set -# CONFIG_SURFACE_HOTPLUG is not set -# CONFIG_SURFACE_PRO3_BUTTON is not set -# CONFIG_SURFACE_AGGREGATOR is not set -CONFIG_HAVE_CLK=y -CONFIG_HAVE_CLK_PREPARE=y -CONFIG_COMMON_CLK=y - -# -# Clock driver for ARM Reference designs -# -# CONFIG_CLK_ICST is not set -# CONFIG_CLK_SP810 is not set -CONFIG_CLK_VEXPRESS_OSC=y -# end of Clock driver for ARM Reference designs - -# CONFIG_LMK04832 is not set -# CONFIG_COMMON_CLK_MAX77686 is not set -# CONFIG_COMMON_CLK_MAX9485 is not set -CONFIG_COMMON_CLK_RK808=y -CONFIG_COMMON_CLK_HI655X=y -CONFIG_COMMON_CLK_SCPI=y -# CONFIG_COMMON_CLK_SI5341 is not set -# CONFIG_COMMON_CLK_SI5351 is not set -# CONFIG_COMMON_CLK_SI514 is not set -# CONFIG_COMMON_CLK_SI544 is not set -# CONFIG_COMMON_CLK_SI570 is not set -# CONFIG_COMMON_CLK_CDCE706 is not set -# CONFIG_COMMON_CLK_CDCE925 is not set -CONFIG_COMMON_CLK_CS2000_CP=y -CONFIG_COMMON_CLK_S2MPS11=y -# CONFIG_COMMON_CLK_AXI_CLKGEN is not set -CONFIG_COMMON_CLK_XGENE=y -CONFIG_COMMON_CLK_PWM=y -# CONFIG_COMMON_CLK_RS9_PCIE is not set -# CONFIG_COMMON_CLK_VC5 is not set -# CONFIG_COMMON_CLK_VC7 is not set -# CONFIG_COMMON_CLK_FIXED_MMIO is not set -CONFIG_COMMON_CLK_HI3516CV300=y -CONFIG_COMMON_CLK_HI3519=y -CONFIG_COMMON_CLK_HI3559A=y -CONFIG_COMMON_CLK_HI3660=y -CONFIG_COMMON_CLK_HI3670=y -CONFIG_COMMON_CLK_HI3798CV200=y -CONFIG_COMMON_CLK_HI6220=y -CONFIG_RESET_HISI=y -CONFIG_STUB_CLK_HI6220=y -CONFIG_STUB_CLK_HI3660=y - -# -# Clock driver for MediaTek SoC -# -CONFIG_COMMON_CLK_MEDIATEK=y -CONFIG_COMMON_CLK_MT2712=y -# CONFIG_COMMON_CLK_MT2712_BDPSYS is not set -# CONFIG_COMMON_CLK_MT2712_IMGSYS is not set -# CONFIG_COMMON_CLK_MT2712_JPGDECSYS is not set -# CONFIG_COMMON_CLK_MT2712_MFGCFG is not set -# CONFIG_COMMON_CLK_MT2712_MMSYS is not set -# CONFIG_COMMON_CLK_MT2712_VDECSYS is not set -# CONFIG_COMMON_CLK_MT2712_VENCSYS is not set -CONFIG_COMMON_CLK_MT6765=y -# CONFIG_COMMON_CLK_MT6765_AUDIOSYS is not set -# CONFIG_COMMON_CLK_MT6765_CAMSYS is not set -# CONFIG_COMMON_CLK_MT6765_GCESYS is not set -# CONFIG_COMMON_CLK_MT6765_MMSYS is not set -# CONFIG_COMMON_CLK_MT6765_IMGSYS is not set -# CONFIG_COMMON_CLK_MT6765_VCODECSYS is not set -# CONFIG_COMMON_CLK_MT6765_MFGSYS is not set -# CONFIG_COMMON_CLK_MT6765_MIPI0ASYS is not set -# CONFIG_COMMON_CLK_MT6765_MIPI0BSYS is not set -# CONFIG_COMMON_CLK_MT6765_MIPI1ASYS is not set -# CONFIG_COMMON_CLK_MT6765_MIPI1BSYS is not set -# CONFIG_COMMON_CLK_MT6765_MIPI2ASYS is not set -# CONFIG_COMMON_CLK_MT6765_MIPI2BSYS is not set -CONFIG_COMMON_CLK_MT6779=y -# CONFIG_COMMON_CLK_MT6779_MMSYS is not set -# CONFIG_COMMON_CLK_MT6779_IMGSYS is not set -# CONFIG_COMMON_CLK_MT6779_IPESYS is not set -# CONFIG_COMMON_CLK_MT6779_CAMSYS is not set -# CONFIG_COMMON_CLK_MT6779_VDECSYS is not set -# CONFIG_COMMON_CLK_MT6779_VENCSYS is not set -# CONFIG_COMMON_CLK_MT6779_MFGCFG is not set -# CONFIG_COMMON_CLK_MT6779_AUDSYS is not set -CONFIG_COMMON_CLK_MT6795=y -CONFIG_COMMON_CLK_MT6795_MFGCFG=y -CONFIG_COMMON_CLK_MT6795_MMSYS=y -CONFIG_COMMON_CLK_MT6795_VDECSYS=y -CONFIG_COMMON_CLK_MT6795_VENCSYS=y -CONFIG_COMMON_CLK_MT6797=y -# CONFIG_COMMON_CLK_MT6797_MMSYS is not set -# CONFIG_COMMON_CLK_MT6797_IMGSYS is not set -# CONFIG_COMMON_CLK_MT6797_VDECSYS is not set -# CONFIG_COMMON_CLK_MT6797_VENCSYS is not set -CONFIG_COMMON_CLK_MT7622=y -# CONFIG_COMMON_CLK_MT7622_ETHSYS is not set -# CONFIG_COMMON_CLK_MT7622_HIFSYS is not set -# CONFIG_COMMON_CLK_MT7622_AUDSYS is not set -CONFIG_COMMON_CLK_MT7986=y -CONFIG_COMMON_CLK_MT7986_ETHSYS=y -CONFIG_COMMON_CLK_MT8167=y -CONFIG_COMMON_CLK_MT8167_AUDSYS=y -CONFIG_COMMON_CLK_MT8167_IMGSYS=y -CONFIG_COMMON_CLK_MT8167_MFGCFG=y -CONFIG_COMMON_CLK_MT8167_MMSYS=y -CONFIG_COMMON_CLK_MT8167_VDECSYS=y -CONFIG_COMMON_CLK_MT8173=y -CONFIG_COMMON_CLK_MT8173_MMSYS=y -CONFIG_COMMON_CLK_MT8183=y -CONFIG_COMMON_CLK_MT8183_AUDIOSYS=y -CONFIG_COMMON_CLK_MT8183_CAMSYS=y -CONFIG_COMMON_CLK_MT8183_IMGSYS=y -CONFIG_COMMON_CLK_MT8183_IPU_CORE0=y -CONFIG_COMMON_CLK_MT8183_IPU_CORE1=y -CONFIG_COMMON_CLK_MT8183_IPU_ADL=y -CONFIG_COMMON_CLK_MT8183_IPU_CONN=y -CONFIG_COMMON_CLK_MT8183_MFGCFG=y -CONFIG_COMMON_CLK_MT8183_MMSYS=y -CONFIG_COMMON_CLK_MT8183_VDECSYS=y -CONFIG_COMMON_CLK_MT8183_VENCSYS=y -CONFIG_COMMON_CLK_MT8186=y -CONFIG_COMMON_CLK_MT8192=y -# CONFIG_COMMON_CLK_MT8192_AUDSYS is not set -# CONFIG_COMMON_CLK_MT8192_CAMSYS is not set -# CONFIG_COMMON_CLK_MT8192_IMGSYS is not set -# CONFIG_COMMON_CLK_MT8192_IMP_IIC_WRAP is not set -# CONFIG_COMMON_CLK_MT8192_IPESYS is not set -# CONFIG_COMMON_CLK_MT8192_MDPSYS is not set -# CONFIG_COMMON_CLK_MT8192_MFGCFG is not set -# CONFIG_COMMON_CLK_MT8192_MMSYS is not set -# CONFIG_COMMON_CLK_MT8192_MSDC is not set -# CONFIG_COMMON_CLK_MT8192_SCP_ADSP is not set -# CONFIG_COMMON_CLK_MT8192_VDECSYS is not set -# CONFIG_COMMON_CLK_MT8192_VENCSYS is not set -CONFIG_COMMON_CLK_MT8195=y -CONFIG_COMMON_CLK_MT8365=y -CONFIG_COMMON_CLK_MT8365_APU=y -CONFIG_COMMON_CLK_MT8365_CAM=y -CONFIG_COMMON_CLK_MT8365_MFG=y -CONFIG_COMMON_CLK_MT8365_MMSYS=y -CONFIG_COMMON_CLK_MT8365_VDEC=y -CONFIG_COMMON_CLK_MT8365_VENC=y -CONFIG_COMMON_CLK_MT8516=y -# CONFIG_COMMON_CLK_MT8516_AUDSYS is not set -# end of Clock driver for MediaTek SoC - -# -# Clock support for Amlogic platforms -# -CONFIG_COMMON_CLK_MESON_REGMAP=y -CONFIG_COMMON_CLK_MESON_DUALDIV=y -CONFIG_COMMON_CLK_MESON_MPLL=y -CONFIG_COMMON_CLK_MESON_PLL=y -CONFIG_COMMON_CLK_MESON_VID_PLL_DIV=y -CONFIG_COMMON_CLK_MESON_AO_CLKC=y -CONFIG_COMMON_CLK_MESON_EE_CLKC=y -CONFIG_COMMON_CLK_MESON_CPU_DYNDIV=y -CONFIG_COMMON_CLK_GXBB=y -CONFIG_COMMON_CLK_AXG=y -# CONFIG_COMMON_CLK_AXG_AUDIO is not set -CONFIG_COMMON_CLK_G12A=y -# end of Clock support for Amlogic platforms - -CONFIG_ARMADA_AP_CP_HELPER=y -CONFIG_ARMADA_37XX_CLK=y -CONFIG_ARMADA_AP806_SYSCON=y -CONFIG_ARMADA_CP110_SYSCON=y -CONFIG_QCOM_GDSC=y -CONFIG_QCOM_RPMCC=y -CONFIG_COMMON_CLK_QCOM=y -# CONFIG_QCOM_A53PLL is not set -# CONFIG_QCOM_A7PLL is not set -# CONFIG_QCOM_CLK_APCC_MSM8996 is not set -CONFIG_QCOM_CLK_SMD_RPM=y -# CONFIG_APQ_GCC_8084 is not set -# CONFIG_APQ_MMCC_8084 is not set -# CONFIG_IPQ_APSS_PLL is not set -# CONFIG_IPQ_GCC_4019 is not set -# CONFIG_IPQ_GCC_6018 is not set -# CONFIG_IPQ_GCC_806X is not set -# CONFIG_IPQ_LCC_806X is not set -CONFIG_IPQ_GCC_8074=y -# CONFIG_MSM_GCC_8660 is not set -# CONFIG_MSM_GCC_8909 is not set -CONFIG_MSM_GCC_8916=y -# CONFIG_MSM_GCC_8939 is not set -# CONFIG_MSM_GCC_8960 is not set -# CONFIG_MSM_LCC_8960 is not set -# CONFIG_MDM_GCC_9607 is not set -# CONFIG_MDM_GCC_9615 is not set -# CONFIG_MDM_LCC_9615 is not set -# CONFIG_MSM_MMCC_8960 is not set -# CONFIG_MSM_GCC_8953 is not set -# CONFIG_MSM_GCC_8974 is not set -# CONFIG_MSM_MMCC_8974 is not set -# CONFIG_MSM_GCC_8976 is not set -# CONFIG_MSM_MMCC_8994 is not set -CONFIG_MSM_GCC_8994=y -CONFIG_MSM_GCC_8996=y -CONFIG_MSM_MMCC_8996=y -# CONFIG_MSM_GCC_8998 is not set -# CONFIG_MSM_GPUCC_8998 is not set -# CONFIG_MSM_MMCC_8998 is not set -# CONFIG_QCM_GCC_2290 is not set -# CONFIG_QCM_DISPCC_2290 is not set -# CONFIG_QCS_GCC_404 is not set -# CONFIG_SC_CAMCC_7180 is not set -# CONFIG_SC_CAMCC_7280 is not set -# CONFIG_SC_DISPCC_7180 is not set -# CONFIG_SC_DISPCC_7280 is not set -# CONFIG_SC_GCC_7180 is not set -# CONFIG_SC_GCC_7280 is not set -# CONFIG_SC_GCC_8180X is not set -# CONFIG_SC_GCC_8280XP is not set -# CONFIG_SC_GPUCC_7180 is not set -# CONFIG_SC_GPUCC_7280 is not set -# CONFIG_SC_GPUCC_8280XP is not set -# CONFIG_SC_LPASSCC_7280 is not set -# CONFIG_SC_LPASS_CORECC_7180 is not set -# CONFIG_SC_LPASS_CORECC_7280 is not set -# CONFIG_SC_MSS_7180 is not set -# CONFIG_SC_VIDEOCC_7180 is not set -# CONFIG_SC_VIDEOCC_7280 is not set -# CONFIG_SDM_CAMCC_845 is not set -# CONFIG_SDM_GCC_660 is not set -# CONFIG_SDM_MMCC_660 is not set -# CONFIG_SDM_GPUCC_660 is not set -# CONFIG_QCS_TURING_404 is not set -# CONFIG_QCS_Q6SSTOP_404 is not set -# CONFIG_SDM_GCC_845 is not set -# CONFIG_SDM_GPUCC_845 is not set -# CONFIG_SDM_VIDEOCC_845 is not set -# CONFIG_SDM_DISPCC_845 is not set -# CONFIG_SDM_LPASSCC_845 is not set -# CONFIG_SDX_GCC_55 is not set -# CONFIG_SDX_GCC_65 is not set -# CONFIG_SM_CAMCC_8250 is not set -# CONFIG_SM_CAMCC_8450 is not set -# CONFIG_SM_GCC_6115 is not set -# CONFIG_SM_GCC_6125 is not set -# CONFIG_SM_GCC_6350 is not set -# CONFIG_SM_GCC_6375 is not set -# CONFIG_SM_GCC_8150 is not set -# CONFIG_SM_GCC_8250 is not set -# CONFIG_SM_GCC_8350 is not set -# CONFIG_SM_GCC_8450 is not set -# CONFIG_SM_GPUCC_6350 is not set -# CONFIG_SM_GPUCC_8150 is not set -# CONFIG_SM_GPUCC_8250 is not set -# CONFIG_SM_GPUCC_8350 is not set -# CONFIG_SM_VIDEOCC_8150 is not set -# CONFIG_SM_VIDEOCC_8250 is not set -# CONFIG_SPMI_PMIC_CLKDIV is not set -# CONFIG_QCOM_HFPLL is not set -# CONFIG_KPSS_XCC is not set -# CONFIG_CLK_GFM_LPASS_SM8250 is not set -CONFIG_CLK_RENESAS=y -# CONFIG_CLK_RCAR_USB2_CLOCK_SEL is not set -CONFIG_COMMON_CLK_ROCKCHIP=y -CONFIG_CLK_PX30=y -CONFIG_CLK_RK3308=y -CONFIG_CLK_RK3328=y -CONFIG_CLK_RK3368=y -CONFIG_CLK_RK3399=y -CONFIG_CLK_RK3568=y -CONFIG_COMMON_CLK_SAMSUNG=y -CONFIG_EXYNOS_ARM64_COMMON_CLK=y -CONFIG_EXYNOS_AUDSS_CLK_CON=y -CONFIG_EXYNOS_CLKOUT=y -CONFIG_SPRD_COMMON_CLK=y -CONFIG_SPRD_SC9860_CLK=y -CONFIG_SPRD_SC9863A_CLK=y -# CONFIG_SPRD_UMS512_CLK is not set -CONFIG_SUNXI_CCU=y -CONFIG_SUN50I_A64_CCU=y -CONFIG_SUN50I_A100_CCU=y -CONFIG_SUN50I_A100_R_CCU=y -CONFIG_SUN50I_H6_CCU=y -CONFIG_SUN50I_H616_CCU=y -CONFIG_SUN50I_H6_R_CCU=y -CONFIG_SUN6I_RTC_CCU=y -CONFIG_SUN8I_H3_CCU=y -CONFIG_SUN8I_DE2_CCU=y -CONFIG_SUN8I_R_CCU=y -CONFIG_CLK_TEGRA_BPMP=y -CONFIG_TEGRA_CLK_DFLL=y -CONFIG_CLK_UNIPHIER=y -# CONFIG_XILINX_VCU is not set -# CONFIG_COMMON_CLK_XLNX_CLKWZRD is not set -CONFIG_COMMON_CLK_ZYNQMP=y -CONFIG_HWSPINLOCK=y -CONFIG_HWSPINLOCK_QCOM=y -# CONFIG_HWSPINLOCK_SPRD is not set -# CONFIG_HWSPINLOCK_SUN6I is not set - -# -# Clock Source drivers -# -CONFIG_TIMER_OF=y -CONFIG_TIMER_ACPI=y -CONFIG_TIMER_PROBE=y -CONFIG_CLKSRC_MMIO=y -CONFIG_DW_APB_TIMER=y -CONFIG_DW_APB_TIMER_OF=y -CONFIG_ROCKCHIP_TIMER=y -CONFIG_SUN4I_TIMER=y -CONFIG_TEGRA_TIMER=y -# CONFIG_TEGRA186_TIMER is not set -CONFIG_ARM_ARCH_TIMER=y -CONFIG_ARM_ARCH_TIMER_EVTSTREAM=y -CONFIG_ARM_ARCH_TIMER_OOL_WORKAROUND=y -CONFIG_FSL_ERRATUM_A008585=y -CONFIG_HISILICON_ERRATUM_161010101=y -CONFIG_ARM64_ERRATUM_858921=y -CONFIG_SUN50I_ERRATUM_UNKNOWN1=y -CONFIG_ARM_TIMER_SP804=y -CONFIG_CLKSRC_EXYNOS_MCT=y -CONFIG_MTK_TIMER=y -CONFIG_SPRD_TIMER=y -# CONFIG_RENESAS_OSTM is not set -# CONFIG_MICROCHIP_PIT64B is not set -# end of Clock Source drivers - -CONFIG_MAILBOX=y -CONFIG_ARM_MHU=y -# CONFIG_ARM_MHU_V2 is not set -CONFIG_PLATFORM_MHU=y -# CONFIG_PL320_MBOX is not set -# CONFIG_ARMADA_37XX_RWTM_MBOX is not set -# CONFIG_ROCKCHIP_MBOX is not set -CONFIG_PCC=y -# CONFIG_ALTERA_MBOX is not set -CONFIG_HI3660_MBOX=y -CONFIG_HI6220_MBOX=y -# CONFIG_MAILBOX_TEST is not set -# CONFIG_QCOM_APCS_IPC is not set -CONFIG_TEGRA_HSP_MBOX=y -# CONFIG_XGENE_SLIMPRO_MBOX is not set -# CONFIG_MTK_ADSP_MBOX is not set -# CONFIG_MTK_CMDQ_MBOX is not set -CONFIG_ZYNQMP_IPI_MBOX=y -CONFIG_SUN6I_MSGBOX=y -# CONFIG_SPRD_MBOX is not set -# CONFIG_QCOM_IPCC is not set -CONFIG_IOMMU_IOVA=y -CONFIG_IOMMU_API=y -CONFIG_IOMMU_SUPPORT=y - -# -# Generic IOMMU Pagetable Support -# -CONFIG_IOMMU_IO_PGTABLE=y -CONFIG_IOMMU_IO_PGTABLE_LPAE=y -# CONFIG_IOMMU_IO_PGTABLE_LPAE_SELFTEST is not set -# CONFIG_IOMMU_IO_PGTABLE_ARMV7S is not set -# CONFIG_IOMMU_IO_PGTABLE_DART is not set -# end of Generic IOMMU Pagetable Support - -# CONFIG_IOMMU_DEBUGFS is not set -CONFIG_IOMMU_DEFAULT_DMA_STRICT=y -# CONFIG_IOMMU_DEFAULT_DMA_LAZY is not set -# CONFIG_IOMMU_DEFAULT_PASSTHROUGH is not set -CONFIG_OF_IOMMU=y -CONFIG_IOMMU_DMA=y -CONFIG_ROCKCHIP_IOMMU=y -# CONFIG_SUN50I_IOMMU is not set -# CONFIG_EXYNOS_IOMMU is not set -# CONFIG_IPMMU_VMSA is not set -CONFIG_ARM_SMMU=y -# CONFIG_ARM_SMMU_LEGACY_DT_BINDINGS is not set -CONFIG_ARM_SMMU_DISABLE_BYPASS_BY_DEFAULT=y -CONFIG_ARM_SMMU_QCOM=y -# CONFIG_ARM_SMMU_QCOM_DEBUG is not set -CONFIG_ARM_SMMU_V3=y -# CONFIG_ARM_SMMU_V3_SVA is not set -# CONFIG_MTK_IOMMU is not set -# CONFIG_QCOM_IOMMU is not set -# CONFIG_VIRTIO_IOMMU is not set -# CONFIG_SPRD_IOMMU is not set - -# -# Remoteproc drivers -# -# CONFIG_REMOTEPROC is not set -# end of Remoteproc drivers - -# -# Rpmsg drivers -# -CONFIG_RPMSG=y -# CONFIG_RPMSG_CHAR is not set -# CONFIG_RPMSG_CTRL is not set -# CONFIG_RPMSG_NS is not set -# CONFIG_RPMSG_QCOM_GLINK_RPM is not set -# CONFIG_RPMSG_QCOM_GLINK_SMEM is not set -CONFIG_RPMSG_QCOM_SMD=y -# CONFIG_RPMSG_VIRTIO is not set -# end of Rpmsg drivers - -# CONFIG_SOUNDWIRE is not set - -# -# SOC (System On Chip) specific Drivers -# - -# -# Amlogic SoC drivers -# -CONFIG_MESON_CANVAS=m -CONFIG_MESON_CLK_MEASURE=y -CONFIG_MESON_GX_SOCINFO=y -CONFIG_MESON_GX_PM_DOMAINS=y -CONFIG_MESON_EE_PM_DOMAINS=y -CONFIG_MESON_SECURE_PM_DOMAINS=y -# end of Amlogic SoC drivers - -# -# Broadcom SoC drivers -# -# CONFIG_SOC_BRCMSTB is not set -# end of Broadcom SoC drivers - -# -# NXP/Freescale QorIQ SoC drivers -# -# CONFIG_QUICC_ENGINE is not set -# CONFIG_FSL_RCPM is not set -# end of NXP/Freescale QorIQ SoC drivers - -# -# fujitsu SoC drivers -# -# CONFIG_A64FX_DIAG is not set -# end of fujitsu SoC drivers - -# -# i.MX SoC drivers -# -# end of i.MX SoC drivers - -# -# Enable LiteX SoC Builder specific drivers -# -# CONFIG_LITEX_SOC_CONTROLLER is not set -# end of Enable LiteX SoC Builder specific drivers - -# -# MediaTek SoC drivers -# -# CONFIG_MTK_CMDQ is not set -# CONFIG_MTK_DEVAPC is not set -CONFIG_MTK_INFRACFG=y -# CONFIG_MTK_PMIC_WRAP is not set -CONFIG_MTK_SCPSYS=y -CONFIG_MTK_SCPSYS_PM_DOMAINS=y -CONFIG_MTK_MMSYS=y -# end of MediaTek SoC drivers - -# -# Qualcomm SoC drivers -# -# CONFIG_QCOM_AOSS_QMP is not set -# CONFIG_QCOM_COMMAND_DB is not set -# CONFIG_QCOM_CPR is not set -# CONFIG_QCOM_GENI_SE is not set -# CONFIG_QCOM_GSBI is not set -# CONFIG_QCOM_LLCC is not set -CONFIG_QCOM_KRYO_L2_ACCESSORS=y -# CONFIG_QCOM_OCMEM is not set -# CONFIG_QCOM_RMTFS_MEM is not set -# CONFIG_QCOM_RPMH is not set -# CONFIG_QCOM_RPMPD is not set -CONFIG_QCOM_SMEM=y -CONFIG_QCOM_SMD_RPM=y -CONFIG_QCOM_SMEM_STATE=y -CONFIG_QCOM_SMP2P=y -CONFIG_QCOM_SMSM=y -# CONFIG_QCOM_SOCINFO is not set -# CONFIG_QCOM_SPM is not set -# CONFIG_QCOM_STATS is not set -# CONFIG_QCOM_WCNSS_CTRL is not set -# CONFIG_QCOM_APR is not set -# CONFIG_QCOM_ICC_BWMON is not set -# end of Qualcomm SoC drivers - -CONFIG_SOC_RENESAS=y -# CONFIG_ARCH_R8A77995 is not set -# CONFIG_ARCH_R8A77990 is not set -# CONFIG_ARCH_R8A77950 is not set -# CONFIG_ARCH_R8A77951 is not set -# CONFIG_ARCH_R8A77965 is not set -# CONFIG_ARCH_R8A77960 is not set -# CONFIG_ARCH_R8A77961 is not set -# CONFIG_ARCH_R8A779F0 is not set -# CONFIG_ARCH_R8A77980 is not set -# CONFIG_ARCH_R8A77970 is not set -# CONFIG_ARCH_R8A779A0 is not set -# CONFIG_ARCH_R8A779G0 is not set -# CONFIG_ARCH_R8A774C0 is not set -# CONFIG_ARCH_R8A774E1 is not set -# CONFIG_ARCH_R8A774A1 is not set -# CONFIG_ARCH_R8A774B1 is not set -# CONFIG_ARCH_R9A07G043 is not set -# CONFIG_ARCH_R9A07G044 is not set -# CONFIG_ARCH_R9A07G054 is not set -# CONFIG_ARCH_R9A09G011 is not set -CONFIG_ROCKCHIP_GRF=y -# CONFIG_ROCKCHIP_IODOMAIN is not set -CONFIG_ROCKCHIP_PM_DOMAINS=y -CONFIG_SOC_SAMSUNG=y -CONFIG_EXYNOS_CHIPID=y -CONFIG_EXYNOS_USI=y -CONFIG_EXYNOS_PMU=y -CONFIG_EXYNOS_PM_DOMAINS=y -CONFIG_SUNXI_MBUS=y -CONFIG_SUNXI_SRAM=y -CONFIG_ARCH_TEGRA_132_SOC=y -CONFIG_ARCH_TEGRA_210_SOC=y -CONFIG_ARCH_TEGRA_186_SOC=y -# CONFIG_ARCH_TEGRA_194_SOC is not set -# CONFIG_ARCH_TEGRA_234_SOC is not set -CONFIG_SOC_TEGRA_FUSE=y -CONFIG_SOC_TEGRA_FLOWCTRL=y -CONFIG_SOC_TEGRA_PMC=y -CONFIG_SOC_TEGRA_POWERGATE_BPMP=y -# CONFIG_SOC_TI is not set - -# -# Xilinx SoC drivers -# -CONFIG_ZYNQMP_POWER=y -CONFIG_ZYNQMP_PM_DOMAINS=y -CONFIG_XLNX_EVENT_MANAGER=y -# end of Xilinx SoC drivers -# end of SOC (System On Chip) specific Drivers - -# CONFIG_PM_DEVFREQ is not set -CONFIG_EXTCON=y - -# -# Extcon Device Drivers -# -# CONFIG_EXTCON_ADC_JACK is not set -# CONFIG_EXTCON_FSA9480 is not set -# CONFIG_EXTCON_GPIO is not set -# CONFIG_EXTCON_MAX3355 is not set -# CONFIG_EXTCON_PTN5150 is not set -# CONFIG_EXTCON_QCOM_SPMI_MISC is not set -# CONFIG_EXTCON_RT8973A is not set -# CONFIG_EXTCON_SM5502 is not set -CONFIG_EXTCON_USB_GPIO=y -# CONFIG_MEMORY is not set -CONFIG_IIO=y -CONFIG_IIO_BUFFER=y -# CONFIG_IIO_BUFFER_CB is not set -# CONFIG_IIO_BUFFER_DMA is not set -# CONFIG_IIO_BUFFER_DMAENGINE is not set -# CONFIG_IIO_BUFFER_HW_CONSUMER is not set -CONFIG_IIO_KFIFO_BUF=m -CONFIG_IIO_TRIGGERED_BUFFER=m -# CONFIG_IIO_CONFIGFS is not set -CONFIG_IIO_TRIGGER=y -CONFIG_IIO_CONSUMERS_PER_TRIGGER=2 -# CONFIG_IIO_SW_DEVICE is not set -# CONFIG_IIO_SW_TRIGGER is not set -# CONFIG_IIO_TRIGGERED_EVENT is not set - -# -# Accelerometers -# -# CONFIG_ADIS16201 is not set -# CONFIG_ADIS16209 is not set -# CONFIG_ADXL313_I2C is not set -# CONFIG_ADXL313_SPI is not set -# CONFIG_ADXL345_I2C is not set -# CONFIG_ADXL345_SPI is not set -# CONFIG_ADXL355_I2C is not set -# CONFIG_ADXL355_SPI is not set -# CONFIG_ADXL367_SPI is not set -# CONFIG_ADXL367_I2C is not set -# CONFIG_ADXL372_SPI is not set -# CONFIG_ADXL372_I2C is not set -# CONFIG_BMA180 is not set -# CONFIG_BMA220 is not set -# CONFIG_BMA400 is not set -# CONFIG_BMC150_ACCEL is not set -# CONFIG_BMI088_ACCEL is not set -# CONFIG_DA280 is not set -# CONFIG_DA311 is not set -# CONFIG_DMARD06 is not set -# CONFIG_DMARD09 is not set -# CONFIG_DMARD10 is not set -# CONFIG_FXLS8962AF_I2C is not set -# CONFIG_FXLS8962AF_SPI is not set -# CONFIG_IIO_ST_ACCEL_3AXIS is not set -# CONFIG_KXSD9 is not set -# CONFIG_KXCJK1013 is not set -# CONFIG_MC3230 is not set -# CONFIG_MMA7455_I2C is not set -# CONFIG_MMA7455_SPI is not set -# CONFIG_MMA7660 is not set -# CONFIG_MMA8452 is not set -# CONFIG_MMA9551 is not set -# CONFIG_MMA9553 is not set -# CONFIG_MSA311 is not set -# CONFIG_MXC4005 is not set -# CONFIG_MXC6255 is not set -# CONFIG_SCA3000 is not set -# CONFIG_SCA3300 is not set -# CONFIG_STK8312 is not set -# CONFIG_STK8BA50 is not set -# end of Accelerometers - -# -# Analog to digital converters -# -# CONFIG_AD7091R5 is not set -# CONFIG_AD7124 is not set -# CONFIG_AD7192 is not set -# CONFIG_AD7266 is not set -# CONFIG_AD7280 is not set -# CONFIG_AD7291 is not set -# CONFIG_AD7292 is not set -# CONFIG_AD7298 is not set -# CONFIG_AD7476 is not set -# CONFIG_AD7606_IFACE_PARALLEL is not set -# CONFIG_AD7606_IFACE_SPI is not set -# CONFIG_AD7766 is not set -# CONFIG_AD7768_1 is not set -# CONFIG_AD7780 is not set -# CONFIG_AD7791 is not set -# CONFIG_AD7793 is not set -# CONFIG_AD7887 is not set -# CONFIG_AD7923 is not set -# CONFIG_AD7949 is not set -# CONFIG_AD799X is not set -# CONFIG_ADI_AXI_ADC is not set -# CONFIG_AXP20X_ADC is not set -# CONFIG_AXP288_ADC is not set -# CONFIG_BERLIN2_ADC is not set -# CONFIG_CC10001_ADC is not set -# CONFIG_ENVELOPE_DETECTOR is not set -CONFIG_EXYNOS_ADC=y -# CONFIG_HI8435 is not set -# CONFIG_HX711 is not set -# CONFIG_INA2XX_ADC is not set -# CONFIG_LTC2471 is not set -# CONFIG_LTC2485 is not set -# CONFIG_LTC2496 is not set -# CONFIG_LTC2497 is not set -# CONFIG_MAX1027 is not set -# CONFIG_MAX11100 is not set -# CONFIG_MAX1118 is not set -# CONFIG_MAX11205 is not set -# CONFIG_MAX1241 is not set -# CONFIG_MAX1363 is not set -# CONFIG_MAX9611 is not set -# CONFIG_MCP320X is not set -# CONFIG_MCP3422 is not set -# CONFIG_MCP3911 is not set -# CONFIG_MEDIATEK_MT6577_AUXADC is not set -CONFIG_MESON_SARADC=y -# CONFIG_NAU7802 is not set -# CONFIG_QCOM_SPMI_RRADC is not set -# CONFIG_QCOM_SPMI_IADC is not set -# CONFIG_QCOM_SPMI_VADC is not set -# CONFIG_QCOM_SPMI_ADC5 is not set -CONFIG_ROCKCHIP_SARADC=m -# CONFIG_RICHTEK_RTQ6056 is not set -# CONFIG_SD_ADC_MODULATOR is not set -# CONFIG_TI_ADC081C is not set -# CONFIG_TI_ADC0832 is not set -# CONFIG_TI_ADC084S021 is not set -# CONFIG_TI_ADC12138 is not set -# CONFIG_TI_ADC108S102 is not set -# CONFIG_TI_ADC128S052 is not set -# CONFIG_TI_ADC161S626 is not set -# CONFIG_TI_ADS1015 is not set -# CONFIG_TI_ADS7950 is not set -# CONFIG_TI_ADS8344 is not set -# CONFIG_TI_ADS8688 is not set -# CONFIG_TI_ADS124S08 is not set -# CONFIG_TI_ADS131E08 is not set -# CONFIG_TI_TLC4541 is not set -# CONFIG_TI_TSC2046 is not set -# CONFIG_VF610_ADC is not set -# CONFIG_XILINX_XADC is not set -# CONFIG_XILINX_AMS is not set -# end of Analog to digital converters - -# -# Analog to digital and digital to analog converters -# -# CONFIG_AD74413R is not set -# end of Analog to digital and digital to analog converters - -# -# Analog Front Ends -# -# CONFIG_IIO_RESCALE is not set -# end of Analog Front Ends - -# -# Amplifiers -# -# CONFIG_AD8366 is not set -# CONFIG_ADA4250 is not set -# CONFIG_HMC425 is not set -# end of Amplifiers - -# -# Capacitance to digital converters -# -# CONFIG_AD7150 is not set -# CONFIG_AD7746 is not set -# end of Capacitance to digital converters - -# -# Chemical Sensors -# -# CONFIG_ATLAS_PH_SENSOR is not set -# CONFIG_ATLAS_EZO_SENSOR is not set -# CONFIG_BME680 is not set -# CONFIG_CCS811 is not set -# CONFIG_IAQCORE is not set -# CONFIG_PMS7003 is not set -# CONFIG_SCD30_CORE is not set -# CONFIG_SCD4X is not set -# CONFIG_SENSIRION_SGP30 is not set -# CONFIG_SENSIRION_SGP40 is not set -# CONFIG_SPS30_I2C is not set -# CONFIG_SPS30_SERIAL is not set -# CONFIG_SENSEAIR_SUNRISE_CO2 is not set -# CONFIG_VZ89X is not set -# end of Chemical Sensors - -# -# Hid Sensor IIO Common -# -# end of Hid Sensor IIO Common - -# -# IIO SCMI Sensors -# -# end of IIO SCMI Sensors - -# -# SSP Sensor Common -# -# CONFIG_IIO_SSP_SENSORHUB is not set -# end of SSP Sensor Common - -# -# Digital to analog converters -# -# CONFIG_AD3552R is not set -# CONFIG_AD5064 is not set -# CONFIG_AD5360 is not set -# CONFIG_AD5380 is not set -# CONFIG_AD5421 is not set -# CONFIG_AD5446 is not set -# CONFIG_AD5449 is not set -# CONFIG_AD5592R is not set -# CONFIG_AD5593R is not set -# CONFIG_AD5504 is not set -# CONFIG_AD5624R_SPI is not set -# CONFIG_LTC2688 is not set -# CONFIG_AD5686_SPI is not set -# CONFIG_AD5696_I2C is not set -# CONFIG_AD5755 is not set -# CONFIG_AD5758 is not set -# CONFIG_AD5761 is not set -# CONFIG_AD5764 is not set -# CONFIG_AD5766 is not set -# CONFIG_AD5770R is not set -# CONFIG_AD5791 is not set -# CONFIG_AD7293 is not set -# CONFIG_AD7303 is not set -# CONFIG_AD8801 is not set -# CONFIG_DPOT_DAC is not set -# CONFIG_DS4424 is not set -# CONFIG_LTC1660 is not set -# CONFIG_LTC2632 is not set -# CONFIG_M62332 is not set -# CONFIG_MAX517 is not set -# CONFIG_MAX5821 is not set -# CONFIG_MCP4725 is not set -# CONFIG_MCP4922 is not set -# CONFIG_TI_DAC082S085 is not set -# CONFIG_TI_DAC5571 is not set -# CONFIG_TI_DAC7311 is not set -# CONFIG_TI_DAC7612 is not set -# CONFIG_VF610_DAC is not set -# end of Digital to analog converters - -# -# IIO dummy driver -# -# end of IIO dummy driver - -# -# Filters -# -# CONFIG_ADMV8818 is not set -# end of Filters - -# -# Frequency Synthesizers DDS/PLL -# - -# -# Clock Generator/Distribution -# -# CONFIG_AD9523 is not set -# end of Clock Generator/Distribution - -# -# Phase-Locked Loop (PLL) frequency synthesizers -# -# CONFIG_ADF4350 is not set -# CONFIG_ADF4371 is not set -# CONFIG_ADMV1013 is not set -# CONFIG_ADMV1014 is not set -# CONFIG_ADMV4420 is not set -# CONFIG_ADRF6780 is not set -# end of Phase-Locked Loop (PLL) frequency synthesizers -# end of Frequency Synthesizers DDS/PLL - -# -# Digital gyroscope sensors -# -# CONFIG_ADIS16080 is not set -# CONFIG_ADIS16130 is not set -# CONFIG_ADIS16136 is not set -# CONFIG_ADIS16260 is not set -# CONFIG_ADXRS290 is not set -# CONFIG_ADXRS450 is not set -# CONFIG_BMG160 is not set -# CONFIG_FXAS21002C is not set -# CONFIG_MPU3050_I2C is not set -# CONFIG_IIO_ST_GYRO_3AXIS is not set -# CONFIG_ITG3200 is not set -# end of Digital gyroscope sensors - -# -# Health Sensors -# - -# -# Heart Rate Monitors -# -# CONFIG_AFE4403 is not set -# CONFIG_AFE4404 is not set -# CONFIG_MAX30100 is not set -# CONFIG_MAX30102 is not set -# end of Heart Rate Monitors -# end of Health Sensors - -# -# Humidity sensors -# -# CONFIG_AM2315 is not set -# CONFIG_DHT11 is not set -# CONFIG_HDC100X is not set -# CONFIG_HDC2010 is not set -# CONFIG_HTS221 is not set -# CONFIG_HTU21 is not set -# CONFIG_SI7005 is not set -# CONFIG_SI7020 is not set -# end of Humidity sensors - -# -# Inertial measurement units -# -# CONFIG_ADIS16400 is not set -# CONFIG_ADIS16460 is not set -# CONFIG_ADIS16475 is not set -# CONFIG_ADIS16480 is not set -# CONFIG_BMI160_I2C is not set -# CONFIG_BMI160_SPI is not set -# CONFIG_BOSCH_BNO055_SERIAL is not set -# CONFIG_BOSCH_BNO055_I2C is not set -# CONFIG_FXOS8700_I2C is not set -# CONFIG_FXOS8700_SPI is not set -# CONFIG_KMX61 is not set -# CONFIG_INV_ICM42600_I2C is not set -# CONFIG_INV_ICM42600_SPI is not set -# CONFIG_INV_MPU6050_I2C is not set -# CONFIG_INV_MPU6050_SPI is not set -# CONFIG_IIO_ST_LSM6DSX is not set -# CONFIG_IIO_ST_LSM9DS0 is not set -# end of Inertial measurement units - -# -# Light sensors -# -# CONFIG_ACPI_ALS is not set -# CONFIG_ADJD_S311 is not set -# CONFIG_ADUX1020 is not set -# CONFIG_AL3010 is not set -# CONFIG_AL3320A is not set -# CONFIG_APDS9300 is not set -# CONFIG_APDS9960 is not set -# CONFIG_AS73211 is not set -# CONFIG_BH1750 is not set -# CONFIG_BH1780 is not set -# CONFIG_CM32181 is not set -# CONFIG_CM3232 is not set -# CONFIG_CM3323 is not set -# CONFIG_CM3605 is not set -# CONFIG_CM36651 is not set -# CONFIG_GP2AP002 is not set -# CONFIG_GP2AP020A00F is not set -# CONFIG_SENSORS_ISL29018 is not set -# CONFIG_SENSORS_ISL29028 is not set -# CONFIG_ISL29125 is not set -# CONFIG_JSA1212 is not set -# CONFIG_RPR0521 is not set -# CONFIG_LTR501 is not set -# CONFIG_LTRF216A is not set -# CONFIG_LV0104CS is not set -# CONFIG_MAX44000 is not set -# CONFIG_MAX44009 is not set -# CONFIG_NOA1305 is not set -# CONFIG_OPT3001 is not set -# CONFIG_PA12203001 is not set -# CONFIG_SI1133 is not set -# CONFIG_SI1145 is not set -# CONFIG_STK3310 is not set -# CONFIG_ST_UVIS25 is not set -# CONFIG_TCS3414 is not set -# CONFIG_TCS3472 is not set -# CONFIG_SENSORS_TSL2563 is not set -# CONFIG_TSL2583 is not set -# CONFIG_TSL2591 is not set -# CONFIG_TSL2772 is not set -# CONFIG_TSL4531 is not set -# CONFIG_US5182D is not set -# CONFIG_VCNL4000 is not set -# CONFIG_VCNL4035 is not set -# CONFIG_VEML6030 is not set -# CONFIG_VEML6070 is not set -# CONFIG_VL6180 is not set -# CONFIG_ZOPT2201 is not set -# end of Light sensors - -# -# Magnetometer sensors -# -# CONFIG_AK8974 is not set -# CONFIG_AK8975 is not set -# CONFIG_AK09911 is not set -# CONFIG_BMC150_MAGN_I2C is not set -# CONFIG_BMC150_MAGN_SPI is not set -# CONFIG_MAG3110 is not set -# CONFIG_MMC35240 is not set -# CONFIG_IIO_ST_MAGN_3AXIS is not set -# CONFIG_SENSORS_HMC5843_I2C is not set -# CONFIG_SENSORS_HMC5843_SPI is not set -# CONFIG_SENSORS_RM3100_I2C is not set -# CONFIG_SENSORS_RM3100_SPI is not set -# CONFIG_YAMAHA_YAS530 is not set -# end of Magnetometer sensors - -# -# Multiplexers -# -# CONFIG_IIO_MUX is not set -# end of Multiplexers - -# -# Inclinometer sensors -# -# end of Inclinometer sensors - -# -# Triggers - standalone -# -# CONFIG_IIO_INTERRUPT_TRIGGER is not set -# CONFIG_IIO_SYSFS_TRIGGER is not set -# end of Triggers - standalone - -# -# Linear and angular position sensors -# -# end of Linear and angular position sensors - -# -# Digital potentiometers -# -# CONFIG_AD5110 is not set -# CONFIG_AD5272 is not set -# CONFIG_DS1803 is not set -# CONFIG_MAX5432 is not set -# CONFIG_MAX5481 is not set -# CONFIG_MAX5487 is not set -# CONFIG_MCP4018 is not set -# CONFIG_MCP4131 is not set -# CONFIG_MCP4531 is not set -# CONFIG_MCP41010 is not set -# CONFIG_TPL0102 is not set -# end of Digital potentiometers - -# -# Digital potentiostats -# -# CONFIG_LMP91000 is not set -# end of Digital potentiostats - -# -# Pressure sensors -# -# CONFIG_ABP060MG is not set -# CONFIG_BMP280 is not set -# CONFIG_DLHL60D is not set -# CONFIG_DPS310 is not set -# CONFIG_HP03 is not set -# CONFIG_ICP10100 is not set -# CONFIG_MPL115_I2C is not set -# CONFIG_MPL115_SPI is not set -# CONFIG_MPL3115 is not set -# CONFIG_MS5611 is not set -# CONFIG_MS5637 is not set -# CONFIG_IIO_ST_PRESS is not set -# CONFIG_T5403 is not set -# CONFIG_HP206C is not set -# CONFIG_ZPA2326 is not set -# end of Pressure sensors - -# -# Lightning sensors -# -# CONFIG_AS3935 is not set -# end of Lightning sensors - -# -# Proximity and distance sensors -# -# CONFIG_ISL29501 is not set -# CONFIG_LIDAR_LITE_V2 is not set -# CONFIG_MB1232 is not set -# CONFIG_PING is not set -# CONFIG_RFD77402 is not set -# CONFIG_SRF04 is not set -# CONFIG_SX9310 is not set -# CONFIG_SX9324 is not set -# CONFIG_SX9360 is not set -# CONFIG_SX9500 is not set -# CONFIG_SRF08 is not set -# CONFIG_VCNL3020 is not set -# CONFIG_VL53L0X_I2C is not set -# end of Proximity and distance sensors - -# -# Resolver to digital converters -# -# CONFIG_AD2S90 is not set -# CONFIG_AD2S1200 is not set -# end of Resolver to digital converters - -# -# Temperature sensors -# -# CONFIG_LTC2983 is not set -# CONFIG_MAXIM_THERMOCOUPLE is not set -# CONFIG_MLX90614 is not set -# CONFIG_MLX90632 is not set -# CONFIG_TMP006 is not set -# CONFIG_TMP007 is not set -# CONFIG_TMP117 is not set -# CONFIG_TSYS01 is not set -# CONFIG_TSYS02D is not set -# CONFIG_MAX31856 is not set -# CONFIG_MAX31865 is not set -# end of Temperature sensors - -# CONFIG_NTB is not set -CONFIG_PWM=y -CONFIG_PWM_SYSFS=y -# CONFIG_PWM_DEBUG is not set -# CONFIG_PWM_ATMEL_TCB is not set -# CONFIG_PWM_BERLIN is not set -# CONFIG_PWM_CLK is not set -# CONFIG_PWM_DWC is not set -# CONFIG_PWM_FSL_FTM is not set -# CONFIG_PWM_HIBVT is not set -CONFIG_PWM_MESON=m -# CONFIG_PWM_MTK_DISP is not set -# CONFIG_PWM_MEDIATEK is not set -# CONFIG_PWM_PCA9685 is not set -# CONFIG_PWM_RCAR is not set -# CONFIG_PWM_RENESAS_TPU is not set -CONFIG_PWM_ROCKCHIP=y -CONFIG_PWM_SAMSUNG=y -# CONFIG_PWM_SPRD is not set -# CONFIG_PWM_SUN4I is not set -CONFIG_PWM_TEGRA=m -# CONFIG_PWM_XILINX is not set - -# -# IRQ chip support -# -CONFIG_IRQCHIP=y -CONFIG_ARM_GIC=y -CONFIG_ARM_GIC_PM=y -CONFIG_ARM_GIC_MAX_NR=1 -CONFIG_ARM_GIC_V2M=y -CONFIG_ARM_GIC_V3=y -CONFIG_ARM_GIC_V3_ITS=y -CONFIG_ARM_GIC_V3_ITS_PCI=y -CONFIG_ALPINE_MSI=y -# CONFIG_AL_FIC is not set -CONFIG_DW_APB_ICTL=y -CONFIG_HISILICON_IRQ_MBIGEN=y -CONFIG_SUN6I_R_INTC=y -CONFIG_SUNXI_NMI_INTC=y -# CONFIG_XILINX_INTC is not set -CONFIG_MVEBU_GICP=y -CONFIG_MVEBU_ICU=y -CONFIG_MVEBU_ODMI=y -CONFIG_MVEBU_PIC=y -CONFIG_MVEBU_SEI=y -CONFIG_PARTITION_PERCPU=y -CONFIG_QCOM_IRQ_COMBINER=y -CONFIG_IRQ_UNIPHIER_AIDET=y -CONFIG_MESON_IRQ_GPIO=y -# CONFIG_QCOM_PDC is not set -# CONFIG_QCOM_MPM is not set -CONFIG_MST_IRQ=y -# end of IRQ chip support - -# CONFIG_IPACK_BUS is not set -CONFIG_ARCH_HAS_RESET_CONTROLLER=y -CONFIG_RESET_CONTROLLER=y -CONFIG_RESET_BERLIN=m -CONFIG_RESET_MESON=y -# CONFIG_RESET_MESON_AUDIO_ARB is not set -# CONFIG_RESET_QCOM_AOSS is not set -# CONFIG_RESET_QCOM_PDC is not set -CONFIG_RESET_SIMPLE=y -CONFIG_RESET_SUNXI=y -# CONFIG_RESET_TI_SYSCON is not set -# CONFIG_RESET_TI_TPS380X is not set -CONFIG_RESET_UNIPHIER=y -CONFIG_RESET_UNIPHIER_GLUE=y -CONFIG_COMMON_RESET_HI3660=y -CONFIG_COMMON_RESET_HI6220=y -CONFIG_RESET_TEGRA_BPMP=y - -# -# PHY Subsystem -# -CONFIG_GENERIC_PHY=y -CONFIG_GENERIC_PHY_MIPI_DPHY=y -CONFIG_PHY_XGENE=y -# CONFIG_PHY_CAN_TRANSCEIVER is not set -CONFIG_PHY_SUN4I_USB=y -# CONFIG_PHY_SUN6I_MIPI_DPHY is not set -# CONFIG_PHY_SUN9I_USB is not set -# CONFIG_PHY_SUN50I_USB3 is not set -CONFIG_PHY_MESON8B_USB2=y -CONFIG_PHY_MESON_GXL_USB2=y -CONFIG_PHY_MESON_G12A_MIPI_DPHY_ANALOG=y -CONFIG_PHY_MESON_G12A_USB2=y -CONFIG_PHY_MESON_G12A_USB3_PCIE=y -CONFIG_PHY_MESON_AXG_PCIE=y -CONFIG_PHY_MESON_AXG_MIPI_PCIE_ANALOG=y -CONFIG_PHY_MESON_AXG_MIPI_DPHY=y - -# -# PHY drivers for Broadcom platforms -# -# CONFIG_BCM_KONA_USB2_PHY is not set -# end of PHY drivers for Broadcom platforms - -# CONFIG_PHY_CADENCE_TORRENT is not set -# CONFIG_PHY_CADENCE_DPHY is not set -# CONFIG_PHY_CADENCE_DPHY_RX is not set -# CONFIG_PHY_CADENCE_SIERRA is not set -# CONFIG_PHY_CADENCE_SALVO is not set -CONFIG_PHY_HI6220_USB=y -# CONFIG_PHY_HI3660_USB is not set -# CONFIG_PHY_HI3670_USB is not set -# CONFIG_PHY_HI3670_PCIE is not set -# CONFIG_PHY_HISTB_COMBPHY is not set -# CONFIG_PHY_HISI_INNO_USB2 is not set -# CONFIG_PHY_BERLIN_SATA is not set -# CONFIG_PHY_BERLIN_USB is not set -CONFIG_PHY_MVEBU_A3700_COMPHY=y -CONFIG_PHY_MVEBU_A3700_UTMI=y -# CONFIG_PHY_MVEBU_A38X_COMPHY is not set -# CONFIG_PHY_MVEBU_CP110_COMPHY is not set -# CONFIG_PHY_MVEBU_CP110_UTMI is not set -# CONFIG_PHY_PXA_28NM_HSIC is not set -# CONFIG_PHY_PXA_28NM_USB2 is not set -# CONFIG_PHY_MTK_PCIE is not set -# CONFIG_PHY_MTK_TPHY is not set -# CONFIG_PHY_MTK_UFS is not set -# CONFIG_PHY_MTK_XSPHY is not set -# CONFIG_PHY_MTK_HDMI is not set -# CONFIG_PHY_MTK_MIPI_DSI is not set -# CONFIG_PHY_MTK_DP is not set -# CONFIG_PHY_LAN966X_SERDES is not set -# CONFIG_PHY_CPCAP_USB is not set -# CONFIG_PHY_MAPPHONE_MDM6600 is not set -# CONFIG_PHY_OCELOT_SERDES is not set -# CONFIG_PHY_QCOM_APQ8064_SATA is not set -# CONFIG_PHY_QCOM_EDP is not set -# CONFIG_PHY_QCOM_IPQ4019_USB is not set -# CONFIG_PHY_QCOM_IPQ806X_SATA is not set -# CONFIG_PHY_QCOM_PCIE2 is not set -# CONFIG_PHY_QCOM_QMP is not set -# CONFIG_PHY_QCOM_QUSB2 is not set -# CONFIG_PHY_QCOM_USB_HS is not set -# CONFIG_PHY_QCOM_USB_SNPS_FEMTO_V2 is not set -# CONFIG_PHY_QCOM_USB_HSIC is not set -# CONFIG_PHY_QCOM_USB_HS_28NM is not set -# CONFIG_PHY_QCOM_USB_SS is not set -# CONFIG_PHY_QCOM_IPQ806X_USB is not set -# CONFIG_PHY_RCAR_GEN2 is not set -# CONFIG_PHY_RCAR_GEN3_PCIE is not set -CONFIG_PHY_RCAR_GEN3_USB2=y -# CONFIG_PHY_RCAR_GEN3_USB3 is not set -# CONFIG_PHY_ROCKCHIP_DP is not set -# CONFIG_PHY_ROCKCHIP_DPHY_RX0 is not set -CONFIG_PHY_ROCKCHIP_EMMC=y -# CONFIG_PHY_ROCKCHIP_INNO_HDMI is not set -CONFIG_PHY_ROCKCHIP_INNO_USB2=y -# CONFIG_PHY_ROCKCHIP_INNO_CSIDPHY is not set -# CONFIG_PHY_ROCKCHIP_INNO_DSIDPHY is not set -# CONFIG_PHY_ROCKCHIP_NANENG_COMBO_PHY is not set -CONFIG_PHY_ROCKCHIP_PCIE=m -# CONFIG_PHY_ROCKCHIP_SNPS_PCIE3 is not set -# CONFIG_PHY_ROCKCHIP_TYPEC is not set -# CONFIG_PHY_ROCKCHIP_USB is not set -CONFIG_PHY_EXYNOS_DP_VIDEO=y -CONFIG_PHY_EXYNOS_MIPI_VIDEO=y -# CONFIG_PHY_EXYNOS_PCIE is not set -# CONFIG_PHY_SAMSUNG_UFS is not set -CONFIG_PHY_SAMSUNG_USB2=y -CONFIG_PHY_EXYNOS5_USBDRD=y -# CONFIG_PHY_UNIPHIER_USB2 is not set -# CONFIG_PHY_UNIPHIER_USB3 is not set -# CONFIG_PHY_UNIPHIER_PCIE is not set -CONFIG_PHY_UNIPHIER_AHCI=y -CONFIG_PHY_TEGRA_XUSB=y -# CONFIG_PHY_TUSB1210 is not set -# CONFIG_PHY_XILINX_ZYNQMP is not set -# end of PHY Subsystem - -# CONFIG_POWERCAP is not set -# CONFIG_MCB is not set - -# -# Performance monitor support -# -# CONFIG_ARM_CCI_PMU is not set -# CONFIG_ARM_CCN is not set -# CONFIG_ARM_CMN is not set -CONFIG_ARM_PMU=y -CONFIG_ARM_PMU_ACPI=y -# CONFIG_ARM_SMMU_V3_PMU is not set -# CONFIG_ARM_DSU_PMU is not set -CONFIG_QCOM_L2_PMU=y -CONFIG_QCOM_L3_PMU=y -CONFIG_THUNDERX2_PMU=m -# CONFIG_XGENE_PMU is not set -# CONFIG_ARM_SPE_PMU is not set -# CONFIG_ARM_DMC620_PMU is not set -# CONFIG_MARVELL_CN10K_TAD_PMU is not set -# CONFIG_ALIBABA_UNCORE_DRW_PMU is not set -# CONFIG_HISI_PMU is not set -# CONFIG_HISI_PCIE_PMU is not set -# CONFIG_HNS3_PMU is not set -# CONFIG_MARVELL_CN10K_DDR_PMU is not set -# end of Performance monitor support - -# CONFIG_RAS is not set -# CONFIG_USB4 is not set - -# -# Android -# -# CONFIG_ANDROID_BINDER_IPC is not set -# end of Android - -# CONFIG_LIBNVDIMM is not set -# CONFIG_DAX is not set -CONFIG_NVMEM=y -CONFIG_NVMEM_SYSFS=y -# CONFIG_NVMEM_MESON_EFUSE is not set -# CONFIG_NVMEM_MESON_MX_EFUSE is not set -# CONFIG_NVMEM_MTK_EFUSE is not set -# CONFIG_NVMEM_QCOM_QFPROM is not set -# CONFIG_NVMEM_RMEM is not set -# CONFIG_NVMEM_ROCKCHIP_EFUSE is not set -# CONFIG_NVMEM_ROCKCHIP_OTP is not set -# CONFIG_NVMEM_SPMI_SDAM is not set -# CONFIG_NVMEM_SPRD_EFUSE is not set -CONFIG_NVMEM_SUNXI_SID=y -# CONFIG_NVMEM_U_BOOT_ENV is not set -# CONFIG_NVMEM_UNIPHIER_EFUSE is not set -# CONFIG_NVMEM_ZYNQMP is not set - -# -# HW tracing support -# -# CONFIG_STM is not set -# CONFIG_INTEL_TH is not set -# CONFIG_HISI_PTT is not set -# end of HW tracing support - -# CONFIG_FPGA is not set -# CONFIG_FSI is not set -CONFIG_TEE=y -CONFIG_OPTEE=y -CONFIG_PM_OPP=y -# CONFIG_SIOX is not set -# CONFIG_SLIMBUS is not set -CONFIG_INTERCONNECT=y -# CONFIG_INTERCONNECT_QCOM is not set -# CONFIG_INTERCONNECT_SAMSUNG is not set -# CONFIG_COUNTER is not set -# CONFIG_MOST is not set -# CONFIG_PECI is not set -# CONFIG_HTE is not set -# end of Device Drivers - -# -# File systems -# -CONFIG_DCACHE_WORD_ACCESS=y -# CONFIG_VALIDATE_FS_PARSER is not set -CONFIG_FS_IOMAP=y -CONFIG_EXT2_FS=y -# CONFIG_EXT2_FS_XATTR is not set -CONFIG_EXT3_FS=y -# CONFIG_EXT3_FS_POSIX_ACL is not set -# CONFIG_EXT3_FS_SECURITY is not set -CONFIG_EXT4_FS=y -CONFIG_EXT4_FS_POSIX_ACL=y -# CONFIG_EXT4_FS_SECURITY is not set -# CONFIG_EXT4_DEBUG is not set -CONFIG_JBD2=y -# CONFIG_JBD2_DEBUG is not set -CONFIG_FS_MBCACHE=y -# CONFIG_REISERFS_FS is not set -# CONFIG_JFS_FS is not set -# CONFIG_XFS_FS is not set -# CONFIG_GFS2_FS is not set -# CONFIG_OCFS2_FS is not set -CONFIG_BTRFS_FS=m -CONFIG_BTRFS_FS_POSIX_ACL=y -# CONFIG_BTRFS_FS_CHECK_INTEGRITY is not set -# CONFIG_BTRFS_FS_RUN_SANITY_TESTS is not set -# CONFIG_BTRFS_DEBUG is not set -# CONFIG_BTRFS_ASSERT is not set -# CONFIG_BTRFS_FS_REF_VERIFY is not set -# CONFIG_NILFS2_FS is not set -# CONFIG_F2FS_FS is not set -CONFIG_FS_POSIX_ACL=y -CONFIG_EXPORTFS=y -# CONFIG_EXPORTFS_BLOCK_OPS is not set -CONFIG_FILE_LOCKING=y -# CONFIG_FS_ENCRYPTION is not set -# CONFIG_FS_VERITY is not set -CONFIG_FSNOTIFY=y -CONFIG_DNOTIFY=y -CONFIG_INOTIFY_USER=y -CONFIG_FANOTIFY=y -CONFIG_FANOTIFY_ACCESS_PERMISSIONS=y -CONFIG_QUOTA=y -# CONFIG_QUOTA_NETLINK_INTERFACE is not set -CONFIG_PRINT_QUOTA_WARNING=y -# CONFIG_QUOTA_DEBUG is not set -# CONFIG_QFMT_V1 is not set -# CONFIG_QFMT_V2 is not set -CONFIG_QUOTACTL=y -CONFIG_AUTOFS4_FS=y -CONFIG_AUTOFS_FS=y -CONFIG_FUSE_FS=m -CONFIG_CUSE=m -# CONFIG_VIRTIO_FS is not set -CONFIG_OVERLAY_FS=m -# CONFIG_OVERLAY_FS_REDIRECT_DIR is not set -CONFIG_OVERLAY_FS_REDIRECT_ALWAYS_FOLLOW=y -# CONFIG_OVERLAY_FS_INDEX is not set -# CONFIG_OVERLAY_FS_XINO_AUTO is not set -# CONFIG_OVERLAY_FS_METACOPY is not set - -# -# Caches -# -CONFIG_NETFS_SUPPORT=y -# CONFIG_NETFS_STATS is not set -# CONFIG_FSCACHE is not set -# end of Caches - -# -# CD-ROM/DVD Filesystems -# -# CONFIG_ISO9660_FS is not set -# CONFIG_UDF_FS is not set -# end of CD-ROM/DVD Filesystems - -# -# DOS/FAT/EXFAT/NT Filesystems -# -CONFIG_FAT_FS=y -# CONFIG_MSDOS_FS is not set -CONFIG_VFAT_FS=y -CONFIG_FAT_DEFAULT_CODEPAGE=437 -CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1" -# CONFIG_FAT_DEFAULT_UTF8 is not set -# CONFIG_EXFAT_FS is not set -# CONFIG_NTFS_FS is not set -# CONFIG_NTFS3_FS is not set -# end of DOS/FAT/EXFAT/NT Filesystems - -# -# Pseudo filesystems -# -CONFIG_PROC_FS=y -# CONFIG_PROC_KCORE is not set -CONFIG_PROC_VMCORE=y -# CONFIG_PROC_VMCORE_DEVICE_DUMP is not set -CONFIG_PROC_SYSCTL=y -CONFIG_PROC_PAGE_MONITOR=y -# CONFIG_PROC_CHILDREN is not set -CONFIG_KERNFS=y -CONFIG_SYSFS=y -CONFIG_TMPFS=y -CONFIG_TMPFS_POSIX_ACL=y -CONFIG_TMPFS_XATTR=y -# CONFIG_TMPFS_INODE64 is not set -CONFIG_ARCH_SUPPORTS_HUGETLBFS=y -CONFIG_HUGETLBFS=y -CONFIG_HUGETLB_PAGE=y -CONFIG_ARCH_WANT_HUGETLB_PAGE_OPTIMIZE_VMEMMAP=y -CONFIG_HUGETLB_PAGE_OPTIMIZE_VMEMMAP=y -# CONFIG_HUGETLB_PAGE_OPTIMIZE_VMEMMAP_DEFAULT_ON is not set -CONFIG_MEMFD_CREATE=y -CONFIG_ARCH_HAS_GIGANTIC_PAGE=y -CONFIG_CONFIGFS_FS=y -CONFIG_EFIVAR_FS=y -# end of Pseudo filesystems - -CONFIG_MISC_FILESYSTEMS=y -# CONFIG_ORANGEFS_FS is not set -# CONFIG_ADFS_FS is not set -# CONFIG_AFFS_FS is not set -# CONFIG_ECRYPT_FS is not set -# CONFIG_HFS_FS is not set -# CONFIG_HFSPLUS_FS is not set -# CONFIG_BEFS_FS is not set -# CONFIG_BFS_FS is not set -# CONFIG_EFS_FS is not set -# CONFIG_JFFS2_FS is not set -# CONFIG_CRAMFS is not set -CONFIG_SQUASHFS=y -CONFIG_SQUASHFS_FILE_CACHE=y -# CONFIG_SQUASHFS_FILE_DIRECT is not set -CONFIG_SQUASHFS_DECOMP_SINGLE=y -# CONFIG_SQUASHFS_DECOMP_MULTI is not set -# CONFIG_SQUASHFS_DECOMP_MULTI_PERCPU is not set -# CONFIG_SQUASHFS_XATTR is not set -CONFIG_SQUASHFS_ZLIB=y -# CONFIG_SQUASHFS_LZ4 is not set -# CONFIG_SQUASHFS_LZO is not set -# CONFIG_SQUASHFS_XZ is not set -# CONFIG_SQUASHFS_ZSTD is not set -# CONFIG_SQUASHFS_4K_DEVBLK_SIZE is not set -# CONFIG_SQUASHFS_EMBEDDED is not set -CONFIG_SQUASHFS_FRAGMENT_CACHE_SIZE=3 -# CONFIG_VXFS_FS is not set -# CONFIG_MINIX_FS is not set -# CONFIG_OMFS_FS is not set -# CONFIG_HPFS_FS is not set -# CONFIG_QNX4FS_FS is not set -# CONFIG_QNX6FS_FS is not set -# CONFIG_ROMFS_FS is not set -CONFIG_PSTORE=y -CONFIG_PSTORE_DEFAULT_KMSG_BYTES=10240 -CONFIG_PSTORE_DEFLATE_COMPRESS=y -# CONFIG_PSTORE_LZO_COMPRESS is not set -# CONFIG_PSTORE_LZ4_COMPRESS is not set -# CONFIG_PSTORE_LZ4HC_COMPRESS is not set -# CONFIG_PSTORE_842_COMPRESS is not set -# CONFIG_PSTORE_ZSTD_COMPRESS is not set -CONFIG_PSTORE_COMPRESS=y -CONFIG_PSTORE_DEFLATE_COMPRESS_DEFAULT=y -CONFIG_PSTORE_COMPRESS_DEFAULT="deflate" -# CONFIG_PSTORE_CONSOLE is not set -# CONFIG_PSTORE_PMSG is not set -# CONFIG_PSTORE_RAM is not set -# CONFIG_PSTORE_BLK is not set -# CONFIG_SYSV_FS is not set -# CONFIG_UFS_FS is not set -# CONFIG_EROFS_FS is not set -CONFIG_NETWORK_FILESYSTEMS=y -CONFIG_NFS_FS=y -CONFIG_NFS_V2=y -CONFIG_NFS_V3=y -# CONFIG_NFS_V3_ACL is not set -CONFIG_NFS_V4=y -# CONFIG_NFS_SWAP is not set -CONFIG_NFS_V4_1=y -CONFIG_NFS_V4_2=y -CONFIG_PNFS_FILE_LAYOUT=y -CONFIG_PNFS_FLEXFILE_LAYOUT=y -CONFIG_NFS_V4_1_IMPLEMENTATION_ID_DOMAIN="kernel.org" -# CONFIG_NFS_V4_1_MIGRATION is not set -CONFIG_NFS_V4_SECURITY_LABEL=y -CONFIG_ROOT_NFS=y -# CONFIG_NFS_USE_LEGACY_DNS is not set -CONFIG_NFS_USE_KERNEL_DNS=y -CONFIG_NFS_DISABLE_UDP_SUPPORT=y -# CONFIG_NFS_V4_2_READ_PLUS is not set -# CONFIG_NFSD is not set -CONFIG_GRACE_PERIOD=y -CONFIG_LOCKD=y -CONFIG_LOCKD_V4=y -CONFIG_NFS_COMMON=y -CONFIG_NFS_V4_2_SSC_HELPER=y -CONFIG_SUNRPC=y -CONFIG_SUNRPC_GSS=y -CONFIG_SUNRPC_BACKCHANNEL=y -# CONFIG_SUNRPC_DEBUG is not set -# CONFIG_CEPH_FS is not set -# CONFIG_CIFS is not set -# CONFIG_SMB_SERVER is not set -# CONFIG_CODA_FS is not set -# CONFIG_AFS_FS is not set -CONFIG_9P_FS=y -# CONFIG_9P_FS_POSIX_ACL is not set -# CONFIG_9P_FS_SECURITY is not set -CONFIG_NLS=y -CONFIG_NLS_DEFAULT="iso8859-1" -CONFIG_NLS_CODEPAGE_437=y -# CONFIG_NLS_CODEPAGE_737 is not set -# CONFIG_NLS_CODEPAGE_775 is not set -# CONFIG_NLS_CODEPAGE_850 is not set -# CONFIG_NLS_CODEPAGE_852 is not set -# CONFIG_NLS_CODEPAGE_855 is not set -# CONFIG_NLS_CODEPAGE_857 is not set -# CONFIG_NLS_CODEPAGE_860 is not set -# CONFIG_NLS_CODEPAGE_861 is not set -# CONFIG_NLS_CODEPAGE_862 is not set -# CONFIG_NLS_CODEPAGE_863 is not set -# CONFIG_NLS_CODEPAGE_864 is not set -# CONFIG_NLS_CODEPAGE_865 is not set -# CONFIG_NLS_CODEPAGE_866 is not set -# CONFIG_NLS_CODEPAGE_869 is not set -# CONFIG_NLS_CODEPAGE_936 is not set -# CONFIG_NLS_CODEPAGE_950 is not set -# CONFIG_NLS_CODEPAGE_932 is not set -# CONFIG_NLS_CODEPAGE_949 is not set -# CONFIG_NLS_CODEPAGE_874 is not set -# CONFIG_NLS_ISO8859_8 is not set -# CONFIG_NLS_CODEPAGE_1250 is not set -# CONFIG_NLS_CODEPAGE_1251 is not set -# CONFIG_NLS_ASCII is not set -CONFIG_NLS_ISO8859_1=y -# CONFIG_NLS_ISO8859_2 is not set -# CONFIG_NLS_ISO8859_3 is not set -# CONFIG_NLS_ISO8859_4 is not set -# CONFIG_NLS_ISO8859_5 is not set -# CONFIG_NLS_ISO8859_6 is not set -# CONFIG_NLS_ISO8859_7 is not set -# CONFIG_NLS_ISO8859_9 is not set -# CONFIG_NLS_ISO8859_13 is not set -# CONFIG_NLS_ISO8859_14 is not set -# CONFIG_NLS_ISO8859_15 is not set -# CONFIG_NLS_KOI8_R is not set -# CONFIG_NLS_KOI8_U is not set -# CONFIG_NLS_MAC_ROMAN is not set -# CONFIG_NLS_MAC_CELTIC is not set -# CONFIG_NLS_MAC_CENTEURO is not set -# CONFIG_NLS_MAC_CROATIAN is not set -# CONFIG_NLS_MAC_CYRILLIC is not set -# CONFIG_NLS_MAC_GAELIC is not set -# CONFIG_NLS_MAC_GREEK is not set -# CONFIG_NLS_MAC_ICELAND is not set -# CONFIG_NLS_MAC_INUIT is not set -# CONFIG_NLS_MAC_ROMANIAN is not set -# CONFIG_NLS_MAC_TURKISH is not set -# CONFIG_NLS_UTF8 is not set -# CONFIG_DLM is not set -# CONFIG_UNICODE is not set -CONFIG_IO_WQ=y -# end of File systems - -# -# Security options -# -CONFIG_KEYS=y -# CONFIG_KEYS_REQUEST_CACHE is not set -# CONFIG_PERSISTENT_KEYRINGS is not set -# CONFIG_TRUSTED_KEYS is not set -# CONFIG_ENCRYPTED_KEYS is not set -# CONFIG_KEY_DH_OPERATIONS is not set -# CONFIG_SECURITY_DMESG_RESTRICT is not set -CONFIG_SECURITY=y -# CONFIG_SECURITYFS is not set -# CONFIG_SECURITY_NETWORK is not set -# CONFIG_SECURITY_PATH is not set -CONFIG_HAVE_HARDENED_USERCOPY_ALLOCATOR=y -# CONFIG_HARDENED_USERCOPY is not set -# CONFIG_FORTIFY_SOURCE is not set -# CONFIG_STATIC_USERMODEHELPER is not set -# CONFIG_SECURITY_SMACK is not set -# CONFIG_SECURITY_TOMOYO is not set -# CONFIG_SECURITY_APPARMOR is not set -# CONFIG_SECURITY_LOADPIN is not set -# CONFIG_SECURITY_YAMA is not set -# CONFIG_SECURITY_SAFESETID is not set -# CONFIG_SECURITY_LOCKDOWN_LSM is not set -# CONFIG_SECURITY_LANDLOCK is not set -CONFIG_INTEGRITY=y -# CONFIG_INTEGRITY_SIGNATURE is not set -CONFIG_INTEGRITY_AUDIT=y -# CONFIG_IMA is not set -# CONFIG_IMA_SECURE_AND_OR_TRUSTED_BOOT is not set -# CONFIG_EVM is not set -CONFIG_DEFAULT_SECURITY_DAC=y -CONFIG_LSM="landlock,lockdown,yama,loadpin,safesetid,integrity,bpf" - -# -# Kernel hardening options -# - -# -# Memory initialization -# -CONFIG_INIT_STACK_NONE=y -# CONFIG_GCC_PLUGIN_STRUCTLEAK_USER is not set -# CONFIG_GCC_PLUGIN_STRUCTLEAK_BYREF is not set -# CONFIG_GCC_PLUGIN_STRUCTLEAK_BYREF_ALL is not set -# CONFIG_GCC_PLUGIN_STACKLEAK is not set -# CONFIG_INIT_ON_ALLOC_DEFAULT_ON is not set -# CONFIG_INIT_ON_FREE_DEFAULT_ON is not set -CONFIG_CC_HAS_ZERO_CALL_USED_REGS=y -# CONFIG_ZERO_CALL_USED_REGS is not set -# end of Memory initialization - -CONFIG_RANDSTRUCT_NONE=y -# CONFIG_RANDSTRUCT_FULL is not set -# CONFIG_RANDSTRUCT_PERFORMANCE is not set -# end of Kernel hardening options -# end of Security options - -CONFIG_XOR_BLOCKS=m -CONFIG_CRYPTO=y - -# -# Crypto core or helper -# -CONFIG_CRYPTO_ALGAPI=y -CONFIG_CRYPTO_ALGAPI2=y -CONFIG_CRYPTO_AEAD=y -CONFIG_CRYPTO_AEAD2=y -CONFIG_CRYPTO_SKCIPHER=y -CONFIG_CRYPTO_SKCIPHER2=y -CONFIG_CRYPTO_HASH=y -CONFIG_CRYPTO_HASH2=y -CONFIG_CRYPTO_RNG=y -CONFIG_CRYPTO_RNG2=y -CONFIG_CRYPTO_RNG_DEFAULT=y -CONFIG_CRYPTO_AKCIPHER2=y -CONFIG_CRYPTO_AKCIPHER=y -CONFIG_CRYPTO_KPP2=y -CONFIG_CRYPTO_KPP=m -CONFIG_CRYPTO_ACOMP2=y -CONFIG_CRYPTO_MANAGER=y -CONFIG_CRYPTO_MANAGER2=y -# CONFIG_CRYPTO_USER is not set -CONFIG_CRYPTO_MANAGER_DISABLE_TESTS=y -CONFIG_CRYPTO_GF128MUL=y -CONFIG_CRYPTO_NULL=y -CONFIG_CRYPTO_NULL2=y -# CONFIG_CRYPTO_PCRYPT is not set -# CONFIG_CRYPTO_CRYPTD is not set -# CONFIG_CRYPTO_AUTHENC is not set -# CONFIG_CRYPTO_TEST is not set -CONFIG_CRYPTO_ENGINE=m -# end of Crypto core or helper - -# -# Public-key cryptography -# -CONFIG_CRYPTO_RSA=y -# CONFIG_CRYPTO_DH is not set -CONFIG_CRYPTO_ECC=m -CONFIG_CRYPTO_ECDH=m -# CONFIG_CRYPTO_ECDSA is not set -# CONFIG_CRYPTO_ECRDSA is not set -# CONFIG_CRYPTO_SM2 is not set -# CONFIG_CRYPTO_CURVE25519 is not set -# end of Public-key cryptography - -# -# Block ciphers -# -CONFIG_CRYPTO_AES=y -# CONFIG_CRYPTO_AES_TI is not set -# CONFIG_CRYPTO_ARIA is not set -# CONFIG_CRYPTO_BLOWFISH is not set -# CONFIG_CRYPTO_CAMELLIA is not set -# CONFIG_CRYPTO_CAST5 is not set -# CONFIG_CRYPTO_CAST6 is not set -# CONFIG_CRYPTO_DES is not set -# CONFIG_CRYPTO_FCRYPT is not set -# CONFIG_CRYPTO_SERPENT is not set -# CONFIG_CRYPTO_SM4_GENERIC is not set -# CONFIG_CRYPTO_TWOFISH is not set -# end of Block ciphers - -# -# Length-preserving ciphers and modes -# -# CONFIG_CRYPTO_ADIANTUM is not set -# CONFIG_CRYPTO_CHACHA20 is not set -CONFIG_CRYPTO_CBC=m -# CONFIG_CRYPTO_CFB is not set -CONFIG_CRYPTO_CTR=m -# CONFIG_CRYPTO_CTS is not set -CONFIG_CRYPTO_ECB=m -# CONFIG_CRYPTO_HCTR2 is not set -# CONFIG_CRYPTO_KEYWRAP is not set -# CONFIG_CRYPTO_LRW is not set -# CONFIG_CRYPTO_OFB is not set -# CONFIG_CRYPTO_PCBC is not set -# CONFIG_CRYPTO_XTS is not set -# end of Length-preserving ciphers and modes - -# -# AEAD (authenticated encryption with associated data) ciphers -# -# CONFIG_CRYPTO_AEGIS128 is not set -# CONFIG_CRYPTO_CHACHA20POLY1305 is not set -CONFIG_CRYPTO_CCM=m -CONFIG_CRYPTO_GCM=m -# CONFIG_CRYPTO_SEQIV is not set -CONFIG_CRYPTO_ECHAINIV=y -# CONFIG_CRYPTO_ESSIV is not set -# end of AEAD (authenticated encryption with associated data) ciphers - -# -# Hashes, digests, and MACs -# -CONFIG_CRYPTO_BLAKE2B=m -CONFIG_CRYPTO_CMAC=m -CONFIG_CRYPTO_GHASH=m -CONFIG_CRYPTO_HMAC=y -# CONFIG_CRYPTO_MD4 is not set -# CONFIG_CRYPTO_MD5 is not set -# CONFIG_CRYPTO_MICHAEL_MIC is not set -# CONFIG_CRYPTO_POLY1305 is not set -# CONFIG_CRYPTO_RMD160 is not set -CONFIG_CRYPTO_SHA1=y -CONFIG_CRYPTO_SHA256=m -CONFIG_CRYPTO_SHA512=y -# CONFIG_CRYPTO_SHA3 is not set -# CONFIG_CRYPTO_SM3_GENERIC is not set -# CONFIG_CRYPTO_STREEBOG is not set -# CONFIG_CRYPTO_VMAC is not set -# CONFIG_CRYPTO_WP512 is not set -# CONFIG_CRYPTO_XCBC is not set -CONFIG_CRYPTO_XXHASH=m -# end of Hashes, digests, and MACs - -# -# CRCs (cyclic redundancy checks) -# -CONFIG_CRYPTO_CRC32C=y -# CONFIG_CRYPTO_CRC32 is not set -CONFIG_CRYPTO_CRCT10DIF=y -CONFIG_CRYPTO_CRC64_ROCKSOFT=y -# end of CRCs (cyclic redundancy checks) - -# -# Compression -# -CONFIG_CRYPTO_DEFLATE=y -# CONFIG_CRYPTO_LZO is not set -# CONFIG_CRYPTO_842 is not set -# CONFIG_CRYPTO_LZ4 is not set -# CONFIG_CRYPTO_LZ4HC is not set -# CONFIG_CRYPTO_ZSTD is not set -# end of Compression - -# -# Random number generation -# -CONFIG_CRYPTO_ANSI_CPRNG=y -CONFIG_CRYPTO_DRBG_MENU=y -CONFIG_CRYPTO_DRBG_HMAC=y -# CONFIG_CRYPTO_DRBG_HASH is not set -# CONFIG_CRYPTO_DRBG_CTR is not set -CONFIG_CRYPTO_DRBG=y -CONFIG_CRYPTO_JITTERENTROPY=y -# end of Random number generation - -# -# Userspace interface -# -# CONFIG_CRYPTO_USER_API_HASH is not set -# CONFIG_CRYPTO_USER_API_SKCIPHER is not set -# CONFIG_CRYPTO_USER_API_RNG is not set -# CONFIG_CRYPTO_USER_API_AEAD is not set -# end of Userspace interface - -CONFIG_CRYPTO_HASH_INFO=y -# CONFIG_CRYPTO_NHPOLY1305_NEON is not set -CONFIG_CRYPTO_CHACHA20_NEON=m - -# -# Accelerated Cryptographic Algorithms for CPU (arm64) -# -CONFIG_CRYPTO_GHASH_ARM64_CE=y -# CONFIG_CRYPTO_POLY1305_NEON is not set -CONFIG_CRYPTO_SHA1_ARM64_CE=y -CONFIG_CRYPTO_SHA256_ARM64=y -CONFIG_CRYPTO_SHA2_ARM64_CE=y -CONFIG_CRYPTO_SHA512_ARM64=m -# CONFIG_CRYPTO_SHA512_ARM64_CE is not set -# CONFIG_CRYPTO_SHA3_ARM64 is not set -# CONFIG_CRYPTO_SM3_NEON is not set -# CONFIG_CRYPTO_SM3_ARM64_CE is not set -# CONFIG_CRYPTO_POLYVAL_ARM64_CE is not set -CONFIG_CRYPTO_AES_ARM64=m -CONFIG_CRYPTO_AES_ARM64_CE=y -CONFIG_CRYPTO_AES_ARM64_CE_BLK=y -CONFIG_CRYPTO_AES_ARM64_NEON_BLK=m -CONFIG_CRYPTO_AES_ARM64_BS=m -# CONFIG_CRYPTO_SM4_ARM64_CE is not set -# CONFIG_CRYPTO_SM4_ARM64_CE_BLK is not set -# CONFIG_CRYPTO_SM4_ARM64_NEON_BLK is not set -CONFIG_CRYPTO_AES_ARM64_CE_CCM=y -CONFIG_CRYPTO_CRCT10DIF_ARM64_CE=m -# end of Accelerated Cryptographic Algorithms for CPU (arm64) - -CONFIG_CRYPTO_HW=y -CONFIG_CRYPTO_DEV_ALLWINNER=y -# CONFIG_CRYPTO_DEV_SUN4I_SS is not set -# CONFIG_CRYPTO_DEV_SUN8I_CE is not set -# CONFIG_CRYPTO_DEV_SUN8I_SS is not set -# CONFIG_CRYPTO_DEV_EXYNOS_RNG is not set -# CONFIG_CRYPTO_DEV_S5P is not set -# CONFIG_CRYPTO_DEV_ATMEL_ECC is not set -# CONFIG_CRYPTO_DEV_ATMEL_SHA204A is not set -# CONFIG_CRYPTO_DEV_CCP is not set -# CONFIG_CRYPTO_DEV_QAT_DH895xCC is not set -# CONFIG_CRYPTO_DEV_QAT_C3XXX is not set -# CONFIG_CRYPTO_DEV_QAT_C62X is not set -# CONFIG_CRYPTO_DEV_QAT_4XXX is not set -# CONFIG_CRYPTO_DEV_QAT_DH895xCCVF is not set -# CONFIG_CRYPTO_DEV_QAT_C3XXXVF is not set -# CONFIG_CRYPTO_DEV_QAT_C62XVF is not set -# CONFIG_CAVIUM_CPT is not set -# CONFIG_CRYPTO_DEV_NITROX_CNN55XX is not set -# CONFIG_CRYPTO_DEV_MARVELL_CESA is not set -# CONFIG_CRYPTO_DEV_OCTEONTX_CPT is not set -# CONFIG_CRYPTO_DEV_OCTEONTX2_CPT is not set -# CONFIG_CRYPTO_DEV_CAVIUM_ZIP is not set -# CONFIG_CRYPTO_DEV_QCE is not set -# CONFIG_CRYPTO_DEV_QCOM_RNG is not set -# CONFIG_CRYPTO_DEV_ROCKCHIP is not set -# CONFIG_CRYPTO_DEV_ZYNQMP_AES is not set -# CONFIG_CRYPTO_DEV_ZYNQMP_SHA3 is not set -# CONFIG_CRYPTO_DEV_VIRTIO is not set -# CONFIG_CRYPTO_DEV_SAFEXCEL is not set -# CONFIG_CRYPTO_DEV_CCREE is not set -# CONFIG_CRYPTO_DEV_HISI_SEC is not set -# CONFIG_CRYPTO_DEV_HISI_SEC2 is not set -# CONFIG_CRYPTO_DEV_HISI_ZIP is not set -# CONFIG_CRYPTO_DEV_HISI_HPRE is not set -# CONFIG_CRYPTO_DEV_HISI_TRNG is not set -CONFIG_CRYPTO_DEV_AMLOGIC_GXL=m -# CONFIG_CRYPTO_DEV_AMLOGIC_GXL_DEBUG is not set -CONFIG_ASYMMETRIC_KEY_TYPE=y -CONFIG_ASYMMETRIC_PUBLIC_KEY_SUBTYPE=y -CONFIG_X509_CERTIFICATE_PARSER=y -# CONFIG_PKCS8_PRIVATE_KEY_PARSER is not set -CONFIG_PKCS7_MESSAGE_PARSER=y -# CONFIG_PKCS7_TEST_KEY is not set -# CONFIG_SIGNED_PE_FILE_VERIFICATION is not set -# CONFIG_FIPS_SIGNATURE_SELFTEST is not set - -# -# Certificates for signature checking -# -CONFIG_SYSTEM_TRUSTED_KEYRING=y -CONFIG_SYSTEM_TRUSTED_KEYS="" -# CONFIG_SYSTEM_EXTRA_CERTIFICATE is not set -# CONFIG_SECONDARY_TRUSTED_KEYRING is not set -# CONFIG_SYSTEM_BLACKLIST_KEYRING is not set -# end of Certificates for signature checking - -# -# Library routines -# -CONFIG_RAID6_PQ=m -CONFIG_RAID6_PQ_BENCHMARK=y -CONFIG_LINEAR_RANGES=y -# CONFIG_PACKING is not set -CONFIG_BITREVERSE=y -CONFIG_HAVE_ARCH_BITREVERSE=y -CONFIG_GENERIC_STRNCPY_FROM_USER=y -CONFIG_GENERIC_STRNLEN_USER=y -CONFIG_GENERIC_NET_UTILS=y -# CONFIG_CORDIC is not set -# CONFIG_PRIME_NUMBERS is not set -CONFIG_RATIONAL=y -CONFIG_GENERIC_PCI_IOMAP=y -CONFIG_ARCH_USE_CMPXCHG_LOCKREF=y -CONFIG_ARCH_HAS_FAST_MULTIPLIER=y -CONFIG_ARCH_USE_SYM_ANNOTATIONS=y -# CONFIG_INDIRECT_PIO is not set - -# -# Crypto library routines -# -CONFIG_CRYPTO_LIB_UTILS=y -CONFIG_CRYPTO_LIB_AES=y -CONFIG_CRYPTO_LIB_ARC4=m -CONFIG_CRYPTO_LIB_BLAKE2S_GENERIC=y -CONFIG_CRYPTO_ARCH_HAVE_LIB_CHACHA=m -CONFIG_CRYPTO_LIB_CHACHA_GENERIC=m -# CONFIG_CRYPTO_LIB_CHACHA is not set -# CONFIG_CRYPTO_LIB_CURVE25519 is not set -CONFIG_CRYPTO_LIB_POLY1305_RSIZE=9 -# CONFIG_CRYPTO_LIB_POLY1305 is not set -# CONFIG_CRYPTO_LIB_CHACHA20POLY1305 is not set -CONFIG_CRYPTO_LIB_SHA1=y -CONFIG_CRYPTO_LIB_SHA256=m -# end of Crypto library routines - -# CONFIG_CRC_CCITT is not set -CONFIG_CRC16=y -CONFIG_CRC_T10DIF=y -CONFIG_CRC64_ROCKSOFT=y -CONFIG_CRC_ITU_T=y -CONFIG_CRC32=y -# CONFIG_CRC32_SELFTEST is not set -CONFIG_CRC32_SLICEBY8=y -# CONFIG_CRC32_SLICEBY4 is not set -# CONFIG_CRC32_SARWATE is not set -# CONFIG_CRC32_BIT is not set -CONFIG_CRC64=y -# CONFIG_CRC4 is not set -CONFIG_CRC7=y -CONFIG_LIBCRC32C=m -CONFIG_CRC8=y -CONFIG_XXHASH=y -CONFIG_AUDIT_GENERIC=y -CONFIG_AUDIT_ARCH_COMPAT_GENERIC=y -CONFIG_AUDIT_COMPAT_GENERIC=y -# CONFIG_RANDOM32_SELFTEST is not set -CONFIG_ZLIB_INFLATE=y -CONFIG_ZLIB_DEFLATE=y -CONFIG_LZO_COMPRESS=y -CONFIG_LZO_DECOMPRESS=y -CONFIG_LZ4_DECOMPRESS=y -CONFIG_ZSTD_COMMON=y -CONFIG_ZSTD_COMPRESS=m -CONFIG_ZSTD_DECOMPRESS=y -CONFIG_XZ_DEC=y -CONFIG_XZ_DEC_X86=y -CONFIG_XZ_DEC_POWERPC=y -CONFIG_XZ_DEC_IA64=y -CONFIG_XZ_DEC_ARM=y -CONFIG_XZ_DEC_ARMTHUMB=y -CONFIG_XZ_DEC_SPARC=y -# CONFIG_XZ_DEC_MICROLZMA is not set -CONFIG_XZ_DEC_BCJ=y -# CONFIG_XZ_DEC_TEST is not set -CONFIG_DECOMPRESS_GZIP=y -CONFIG_DECOMPRESS_BZIP2=y -CONFIG_DECOMPRESS_LZMA=y -CONFIG_DECOMPRESS_XZ=y -CONFIG_DECOMPRESS_LZO=y -CONFIG_DECOMPRESS_LZ4=y -CONFIG_DECOMPRESS_ZSTD=y -CONFIG_GENERIC_ALLOCATOR=y -CONFIG_INTERVAL_TREE=y -CONFIG_XARRAY_MULTI=y -CONFIG_ASSOCIATIVE_ARRAY=y -CONFIG_HAS_IOMEM=y -CONFIG_HAS_IOPORT_MAP=y -CONFIG_HAS_DMA=y -CONFIG_DMA_OPS=y -CONFIG_NEED_SG_DMA_LENGTH=y -CONFIG_NEED_DMA_MAP_STATE=y -CONFIG_ARCH_DMA_ADDR_T_64BIT=y -CONFIG_DMA_DECLARE_COHERENT=y -CONFIG_ARCH_HAS_SETUP_DMA_OPS=y -CONFIG_ARCH_HAS_TEARDOWN_DMA_OPS=y -CONFIG_ARCH_HAS_SYNC_DMA_FOR_DEVICE=y -CONFIG_ARCH_HAS_SYNC_DMA_FOR_CPU=y -CONFIG_ARCH_HAS_DMA_PREP_COHERENT=y -CONFIG_SWIOTLB=y -# CONFIG_DMA_RESTRICTED_POOL is not set -CONFIG_DMA_NONCOHERENT_MMAP=y -CONFIG_DMA_COHERENT_POOL=y -CONFIG_DMA_DIRECT_REMAP=y -CONFIG_DMA_CMA=y -CONFIG_DMA_PERNUMA_CMA=y - -# -# Default contiguous memory area size: -# -CONFIG_CMA_SIZE_MBYTES=16 -CONFIG_CMA_SIZE_SEL_MBYTES=y -# CONFIG_CMA_SIZE_SEL_PERCENTAGE is not set -# CONFIG_CMA_SIZE_SEL_MIN is not set -# CONFIG_CMA_SIZE_SEL_MAX is not set -CONFIG_CMA_ALIGNMENT=8 -# CONFIG_DMA_API_DEBUG is not set -# CONFIG_DMA_MAP_BENCHMARK is not set -CONFIG_SGL_ALLOC=y -# CONFIG_FORCE_NR_CPUS is not set -CONFIG_CPU_RMAP=y -CONFIG_DQL=y -CONFIG_GLOB=y -# CONFIG_GLOB_SELFTEST is not set -CONFIG_NLATTR=y -CONFIG_CLZ_TAB=y -# CONFIG_IRQ_POLL is not set -CONFIG_MPILIB=y -CONFIG_LIBFDT=y -CONFIG_OID_REGISTRY=y -CONFIG_UCS2_STRING=y -CONFIG_HAVE_GENERIC_VDSO=y -CONFIG_GENERIC_GETTIMEOFDAY=y -CONFIG_GENERIC_VDSO_TIME_NS=y -CONFIG_FONT_SUPPORT=y -# CONFIG_FONTS is not set -CONFIG_FONT_8x8=y -CONFIG_FONT_8x16=y -CONFIG_SG_POOL=y -CONFIG_ARCH_STACKWALK=y -CONFIG_STACKDEPOT=y -CONFIG_SBITMAP=y -# end of Library routines - -CONFIG_GENERIC_IOREMAP=y -CONFIG_GENERIC_LIB_DEVMEM_IS_ALLOWED=y - -# -# Kernel hacking -# - -# -# printk and dmesg options -# -CONFIG_PRINTK_TIME=y -# CONFIG_PRINTK_CALLER is not set -# CONFIG_STACKTRACE_BUILD_ID is not set -CONFIG_CONSOLE_LOGLEVEL_DEFAULT=7 -CONFIG_CONSOLE_LOGLEVEL_QUIET=4 -CONFIG_MESSAGE_LOGLEVEL_DEFAULT=4 -# CONFIG_BOOT_PRINTK_DELAY is not set -# CONFIG_DYNAMIC_DEBUG is not set -# CONFIG_DYNAMIC_DEBUG_CORE is not set -CONFIG_SYMBOLIC_ERRNAME=y -CONFIG_DEBUG_BUGVERBOSE=y -# end of printk and dmesg options - -CONFIG_DEBUG_KERNEL=y -CONFIG_DEBUG_MISC=y - -# -# Compile-time checks and compiler options -# -CONFIG_AS_HAS_NON_CONST_LEB128=y -CONFIG_DEBUG_INFO_NONE=y -# CONFIG_DEBUG_INFO_DWARF_TOOLCHAIN_DEFAULT is not set -# CONFIG_DEBUG_INFO_DWARF4 is not set -# CONFIG_DEBUG_INFO_DWARF5 is not set -CONFIG_FRAME_WARN=2048 -# CONFIG_STRIP_ASM_SYMS is not set -# CONFIG_READABLE_ASM is not set -# CONFIG_HEADERS_INSTALL is not set -# CONFIG_DEBUG_SECTION_MISMATCH is not set -CONFIG_SECTION_MISMATCH_WARN_ONLY=y -CONFIG_ARCH_WANT_FRAME_POINTERS=y -CONFIG_FRAME_POINTER=y -# CONFIG_DEBUG_FORCE_WEAK_PER_CPU is not set -# end of Compile-time checks and compiler options - -# -# Generic Kernel Debugging Instruments -# -CONFIG_MAGIC_SYSRQ=y -CONFIG_MAGIC_SYSRQ_DEFAULT_ENABLE=0x1 -CONFIG_MAGIC_SYSRQ_SERIAL=y -CONFIG_MAGIC_SYSRQ_SERIAL_SEQUENCE="" -CONFIG_DEBUG_FS=y -CONFIG_DEBUG_FS_ALLOW_ALL=y -# CONFIG_DEBUG_FS_DISALLOW_MOUNT is not set -# CONFIG_DEBUG_FS_ALLOW_NONE is not set -CONFIG_HAVE_ARCH_KGDB=y -# CONFIG_KGDB is not set -CONFIG_ARCH_HAS_UBSAN_SANITIZE_ALL=y -# CONFIG_UBSAN is not set -CONFIG_HAVE_KCSAN_COMPILER=y -# end of Generic Kernel Debugging Instruments - -# -# Networking Debugging -# -# CONFIG_NET_DEV_REFCNT_TRACKER is not set -# CONFIG_NET_NS_REFCNT_TRACKER is not set -# CONFIG_DEBUG_NET is not set -# end of Networking Debugging - -# -# Memory Debugging -# -# CONFIG_PAGE_EXTENSION is not set -# CONFIG_DEBUG_PAGEALLOC is not set -CONFIG_SLUB_DEBUG=y -# CONFIG_SLUB_DEBUG_ON is not set -# CONFIG_PAGE_OWNER is not set -# CONFIG_PAGE_TABLE_CHECK is not set -# CONFIG_PAGE_POISONING is not set -# CONFIG_DEBUG_RODATA_TEST is not set -CONFIG_ARCH_HAS_DEBUG_WX=y -# CONFIG_DEBUG_WX is not set -CONFIG_GENERIC_PTDUMP=y -# CONFIG_PTDUMP_DEBUGFS is not set -# CONFIG_DEBUG_OBJECTS is not set -# CONFIG_SHRINKER_DEBUG is not set -CONFIG_HAVE_DEBUG_KMEMLEAK=y -# CONFIG_DEBUG_KMEMLEAK is not set -# CONFIG_DEBUG_STACK_USAGE is not set -# CONFIG_SCHED_STACK_END_CHECK is not set -CONFIG_ARCH_HAS_DEBUG_VM_PGTABLE=y -# CONFIG_DEBUG_VM is not set -# CONFIG_DEBUG_VM_PGTABLE is not set -CONFIG_ARCH_HAS_DEBUG_VIRTUAL=y -# CONFIG_DEBUG_VIRTUAL is not set -CONFIG_DEBUG_MEMORY_INIT=y -# CONFIG_DEBUG_PER_CPU_MAPS is not set -CONFIG_HAVE_ARCH_KASAN=y -CONFIG_HAVE_ARCH_KASAN_SW_TAGS=y -CONFIG_HAVE_ARCH_KASAN_HW_TAGS=y -CONFIG_HAVE_ARCH_KASAN_VMALLOC=y -CONFIG_CC_HAS_KASAN_GENERIC=y -CONFIG_CC_HAS_KASAN_SW_TAGS=y -CONFIG_CC_HAS_WORKING_NOSANITIZE_ADDRESS=y -# CONFIG_KASAN is not set -CONFIG_HAVE_ARCH_KFENCE=y -# CONFIG_KFENCE is not set -# end of Memory Debugging - -# CONFIG_DEBUG_SHIRQ is not set - -# -# Debug Oops, Lockups and Hangs -# -# CONFIG_PANIC_ON_OOPS is not set -CONFIG_PANIC_ON_OOPS_VALUE=0 -CONFIG_PANIC_TIMEOUT=0 -# CONFIG_SOFTLOCKUP_DETECTOR is not set -# CONFIG_DETECT_HUNG_TASK is not set -# CONFIG_WQ_WATCHDOG is not set -# CONFIG_TEST_LOCKUP is not set -# end of Debug Oops, Lockups and Hangs - -# -# Scheduler Debugging -# -# CONFIG_SCHED_DEBUG is not set -CONFIG_SCHED_INFO=y -# CONFIG_SCHEDSTATS is not set -# end of Scheduler Debugging - -# CONFIG_DEBUG_TIMEKEEPING is not set -# CONFIG_DEBUG_PREEMPT is not set - -# -# Lock Debugging (spinlocks, mutexes, etc...) -# -CONFIG_LOCK_DEBUGGING_SUPPORT=y -# CONFIG_PROVE_LOCKING is not set -# CONFIG_LOCK_STAT is not set -# CONFIG_DEBUG_RT_MUTEXES is not set -# CONFIG_DEBUG_SPINLOCK is not set -# CONFIG_DEBUG_MUTEXES is not set -# CONFIG_DEBUG_WW_MUTEX_SLOWPATH is not set -# CONFIG_DEBUG_RWSEMS is not set -# CONFIG_DEBUG_LOCK_ALLOC is not set -# CONFIG_DEBUG_ATOMIC_SLEEP is not set -# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set -# CONFIG_LOCK_TORTURE_TEST is not set -# CONFIG_WW_MUTEX_SELFTEST is not set -# CONFIG_SCF_TORTURE_TEST is not set -# CONFIG_CSD_LOCK_WAIT_DEBUG is not set -# end of Lock Debugging (spinlocks, mutexes, etc...) - -# CONFIG_DEBUG_IRQFLAGS is not set -CONFIG_STACKTRACE=y -# CONFIG_WARN_ALL_UNSEEDED_RANDOM is not set -# CONFIG_DEBUG_KOBJECT is not set - -# -# Debug kernel data structures -# -# CONFIG_DEBUG_LIST is not set -# CONFIG_DEBUG_PLIST is not set -# CONFIG_DEBUG_SG is not set -# CONFIG_DEBUG_NOTIFIERS is not set -# CONFIG_BUG_ON_DATA_CORRUPTION is not set -# CONFIG_DEBUG_MAPLE_TREE is not set -# end of Debug kernel data structures - -# CONFIG_DEBUG_CREDENTIALS is not set - -# -# RCU Debugging -# -# CONFIG_RCU_SCALE_TEST is not set -# CONFIG_RCU_TORTURE_TEST is not set -# CONFIG_RCU_REF_SCALE_TEST is not set -CONFIG_RCU_CPU_STALL_TIMEOUT=21 -CONFIG_RCU_EXP_CPU_STALL_TIMEOUT=0 -CONFIG_RCU_TRACE=y -# CONFIG_RCU_EQS_DEBUG is not set -# end of RCU Debugging - -# CONFIG_DEBUG_WQ_FORCE_RR_CPU is not set -# CONFIG_CPU_HOTPLUG_STATE_CONTROL is not set -# CONFIG_LATENCYTOP is not set -CONFIG_HAVE_FUNCTION_TRACER=y -CONFIG_HAVE_FUNCTION_GRAPH_TRACER=y -CONFIG_HAVE_DYNAMIC_FTRACE=y -CONFIG_HAVE_DYNAMIC_FTRACE_WITH_REGS=y -CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y -CONFIG_HAVE_SYSCALL_TRACEPOINTS=y -CONFIG_HAVE_C_RECORDMCOUNT=y -CONFIG_TRACE_CLOCK=y -CONFIG_TRACING_SUPPORT=y -# CONFIG_FTRACE is not set -# CONFIG_SAMPLES is not set -CONFIG_STRICT_DEVMEM=y -# CONFIG_IO_STRICT_DEVMEM is not set - -# -# arm64 Debugging -# -# CONFIG_PID_IN_CONTEXTIDR is not set -# CONFIG_ARM64_RELOC_TEST is not set -# CONFIG_CORESIGHT is not set -# end of arm64 Debugging - -# -# Kernel Testing and Coverage -# -# CONFIG_KUNIT is not set -# CONFIG_NOTIFIER_ERROR_INJECTION is not set -# CONFIG_FAULT_INJECTION is not set -CONFIG_ARCH_HAS_KCOV=y -CONFIG_CC_HAS_SANCOV_TRACE_PC=y -CONFIG_RUNTIME_TESTING_MENU=y -# CONFIG_LKDTM is not set -# CONFIG_TEST_MIN_HEAP is not set -# CONFIG_TEST_DIV64 is not set -# CONFIG_BACKTRACE_SELF_TEST is not set -# CONFIG_TEST_REF_TRACKER is not set -# CONFIG_RBTREE_TEST is not set -# CONFIG_REED_SOLOMON_TEST is not set -# CONFIG_INTERVAL_TREE_TEST is not set -# CONFIG_PERCPU_TEST is not set -# CONFIG_ATOMIC64_SELFTEST is not set -# CONFIG_TEST_HEXDUMP is not set -# CONFIG_STRING_SELFTEST is not set -# CONFIG_TEST_STRING_HELPERS is not set -# CONFIG_TEST_STRSCPY is not set -# CONFIG_TEST_KSTRTOX is not set -# CONFIG_TEST_PRINTF is not set -# CONFIG_TEST_SCANF is not set -# CONFIG_TEST_BITMAP is not set -# CONFIG_TEST_UUID is not set -# CONFIG_TEST_XARRAY is not set -# CONFIG_TEST_MAPLE_TREE is not set -# CONFIG_TEST_RHASHTABLE is not set -# CONFIG_TEST_SIPHASH is not set -# CONFIG_TEST_IDA is not set -# CONFIG_TEST_LKM is not set -# CONFIG_TEST_BITOPS is not set -# CONFIG_TEST_VMALLOC is not set -# CONFIG_TEST_USER_COPY is not set -# CONFIG_TEST_BPF is not set -# CONFIG_TEST_BLACKHOLE_DEV is not set -# CONFIG_FIND_BIT_BENCHMARK is not set -# CONFIG_TEST_FIRMWARE is not set -# CONFIG_TEST_SYSCTL is not set -# CONFIG_TEST_UDELAY is not set -# CONFIG_TEST_STATIC_KEYS is not set -# CONFIG_TEST_KMOD is not set -# CONFIG_TEST_MEMCAT_P is not set -# CONFIG_TEST_MEMINIT is not set -# CONFIG_TEST_FREE_PAGES is not set -CONFIG_ARCH_USE_MEMTEST=y -CONFIG_MEMTEST=y -# end of Kernel Testing and Coverage - -# -# Rust hacking -# -# end of Rust hacking -# end of Kernel hacking diff --git a/recipes-kernel/linux/linux-mainline.inc b/recipes-kernel/linux/linux-mainline.inc index b8244ea..6d7911a 100644 --- a/recipes-kernel/linux/linux-mainline.inc +++ b/recipes-kernel/linux/linux-mainline.inc @@ -9,24 +9,6 @@ require linux.inc LINUX_VERSION = "${PV}" -KERNEL_DTB_PREFIX = "0" - -python() { - # return version in int form - def kernel_version(): - ver = d.getVar('PV', True).split('.') - return int("".join(ver[0])),int("".join(ver[1])) - - # kernel 6.5 have updated dts path add 'allwinner' prefix automatically - major, minor = kernel_version() - if major >= 6 and minor >= 5: - dt = d.getVar('KERNEL_DEVICETREE', True) - if not "allwinner" in dt: - dt = "allwinner/{0}".format(dt) - d.setVar('KERNEL_DEVICETREE', dt) - d.setVar('KERNEL_DTB_PREFIX', "1") -} - # Since we're not using git, this doesn't make a difference, but we need to fill # in something or kernel-yocto.bbclass will fail. KBRANCH ?= "master" @@ -44,30 +26,30 @@ S = "${WORKDIR}/linux-${PV}" KRELEASE = "${@d.getVar('PV', True).split('.')[0]}" SRC_URI = "https://www.kernel.org/pub/linux/kernel/v${KRELEASE}.x/linux-${PV}.tar.xz \ - file://defconfig \ + file://defconfig \ + file://sunxi-kmeta;type=kmeta;name=sunxi-kmeta;destsuffix=sunxi-kmeta \ " -# append patches for kernels before 6.5 and after based on version -SRC_URI += "${@oe.utils.ifelse(d.getVar('KERNEL_DTB_PREFIX') == '1', d.getVar('SOURCES_K65'), d.getVar('SOURCES'))}" - -SOURCES_K65 = " \ - file://6.5/0001-dts-orangepi-zero-Add-wifi-support.patch \ - file://6.5/0002-dts-nanopi-neo-air-Add-camera-support.patch \ - file://6.5/0003-dts-allwinner-bananapi-m2-zero-Enforce-consistent-MM.patch \ - file://6.5/0004-dts-allwinner-bananapi-m64-Consistent-nodes-for-mmc-devices.patch \ -" - -SOURCES = " \ - file://0001-dts-orange-pi-zero-Add-wifi-support.patch \ - file://0002-dts-nanopi-neo-air-add-camera.patch \ - file://0003-dts-allwinner-bananapi-m2-zreo-Enforce-consistent-MM.patch \ - file://0004-dts-allwinner-bananapi-m64-Consistent-nodes-for-mmc-devices.patch \ +# patches +SRC_URI:append = " \ + file://patches/0001-dts-orangepi-zero-Add-wifi-support.patch \ + file://patches/0002-dts-nanopi-neo-air-Add-camera-support.patch \ + file://patches/0003-dts-allwinner-bananapi-m2-zero-Enforce-consistent-MM.patch \ + file://patches/0004-dts-allwinner-bananapi-m64-Consistent-nodes-for-mmc-devices.patch \ + file://patches/0005-ARM-dts-sunxi-Add-MMC-alias-for-consistent-enumerati.patch \ + file://patches/0006-dts-allwinner-orangepi-zero-mmc-aliases-for-consiste.patch \ " SRC_URI:append:use-mailine-graphics = " file://drm.cfg" SRC_URI:append:bananapi = " file://axp20x.cfg" +SRC_URI:append:bananapi-m2-berry = " file://axp20x.cfg" SRC_URI:append:bananapi-m2-zero = " file://axp20x.cfg" SRC_URI:append:cubietruck = " file://axp20x.cfg" SRC_URI:append:nanopi-neo-air = " file://cam500b.cfg" +SRC_URI:append:orange-pi-prime = " \ + file://0001-dts-sun50i-h5-enable-power-button-for-orange-pi-prime.patch \ + file://0002-dts-sun50i-h5-orange-pi-prime-add-regulator.patch \ + file://0003-dts-sun50i-h5-orange-pi-prime-add-rtl8723cs.patch \ +" FILES_${KERNEL_PACKAGE_NAME}-base:append = " ${nonarch_base_libdir}/modules/${KERNEL_VERSION}/modules.builtin.modinfo" diff --git a/recipes-kernel/linux/linux-mainline/0001-dts-orange-pi-zero-Add-wifi-support.patch b/recipes-kernel/linux/linux-mainline/0001-dts-orange-pi-zero-Add-wifi-support.patch deleted file mode 100644 index 4680a43..0000000 --- a/recipes-kernel/linux/linux-mainline/0001-dts-orange-pi-zero-Add-wifi-support.patch +++ /dev/null @@ -1,87 +0,0 @@ -diff --git a/arch/arm/boot/dts/sun8i-h2-plus-orangepi-zero.dts b/arch/arm/boot/dts/sun8i-h2-plus-orangepi-zero.dts -index 84cd9c061..917986cce 100644 ---- a/arch/arm/boot/dts/sun8i-h2-plus-orangepi-zero.dts -+++ b/arch/arm/boot/dts/sun8i-h2-plus-orangepi-zero.dts -@@ -80,13 +80,15 @@ - }; - }; - -- reg_vcc_wifi: reg_vcc_wifi { -+ vdd_wifi: vdd_wifi { - compatible = "regulator-fixed"; -- regulator-min-microvolt = <3300000>; -- regulator-max-microvolt = <3300000>; -- regulator-name = "vcc-wifi"; -- enable-active-high; -+ regulator-name = "wifi"; -+ regulator-min-microvolt = <1800000>; -+ regulator-max-microvolt = <1800000>; - gpio = <&pio 0 20 GPIO_ACTIVE_HIGH>; -+ startup-delay-us = <70000>; -+ enable-active-high; -+ - }; - - reg_vdd_cpux: vdd-cpux-regulator { -@@ -106,10 +108,12 @@ - 1300000 1>; - }; - -- wifi_pwrseq: wifi_pwrseq { -+ pwrseq_wifi: pwrseq_wifi { - compatible = "mmc-pwrseq-simple"; -+ pinctrl-names = "default"; -+ pinctrl-0 = <&wifi_rst>; - reset-gpios = <&r_pio 0 7 GPIO_ACTIVE_LOW>; -- post-power-on-delay-ms = <200>; -+ post-power-on-delay-ms = <50>; - }; - }; - -@@ -140,9 +144,11 @@ - }; - - &mmc1 { -- vmmc-supply = <®_vcc_wifi>; -- mmc-pwrseq = <&wifi_pwrseq>; -+ vmmc-supply = <®_vcc3v3>; -+ vqmmc-supply = <&vdd_wifi>; -+ mmc-pwrseq = <&pwrseq_wifi>; - bus-width = <4>; -+ max-frequency = <16000000>; - non-removable; - status = "okay"; - -@@ -152,6 +158,13 @@ - */ - xr819: sdio_wifi@1 { - reg = <1>; -+ compatible = "xradio,xr819"; -+ pinctrl-names = "default"; -+ pinctrl-0 = <&wifi_wake>; -+ interrupt-parent = <&pio>; -+ interrupts = <6 10 IRQ_TYPE_EDGE_RISING>; -+ interrupt-names = "host-wake"; -+ local-mac-address = [dc 44 6d c0 ff ee]; - }; - }; - -@@ -208,3 +221,18 @@ - status = "okay"; - usb0_id_det-gpios = <&pio 6 12 GPIO_ACTIVE_HIGH>; /* PG12 */ - }; -+ -+&pio { -+ wifi_wake: wifi_wake { -+ pins = "PG10"; -+ function = "gpio_in"; -+ }; -+}; -+ -+&r_pio { -+ wifi_rst: wifi_rst { -+ pins = "PL7"; -+ function = "gpio_out"; -+ }; -+}; -+ diff --git a/recipes-kernel/linux/linux-mainline/0002-dts-nanopi-neo-air-add-camera.patch b/recipes-kernel/linux/linux-mainline/0002-dts-nanopi-neo-air-add-camera.patch deleted file mode 100644 index 837617f..0000000 --- a/recipes-kernel/linux/linux-mainline/0002-dts-nanopi-neo-air-add-camera.patch +++ /dev/null @@ -1,101 +0,0 @@ -diff --git a/arch/arm/boot/dts/sun8i-h3-nanopi-neo-air.dts b/arch/arm/boot/dts/sun8i-h3-nanopi-neo-air.dts -index cd3df12b65..33a161692f 100644 ---- a/arch/arm/boot/dts/sun8i-h3-nanopi-neo-air.dts -+++ b/arch/arm/boot/dts/sun8i-h3-nanopi-neo-air.dts -@@ -77,6 +77,39 @@ - compatible = "mmc-pwrseq-simple"; - reset-gpios = <&r_pio 0 7 GPIO_ACTIVE_LOW>; /* PL7 */ - }; -+ -+ cam_xclk: cam-xclk { -+ #clock-cells = <0>; -+ compatible = "fixed-clock"; -+ clock-frequency = <24000000>; -+ clock-output-names = "cam-xclk"; -+ }; -+ -+ reg_cam_avdd: cam-avdd { -+ compatible = "regulator-fixed"; -+ regulator-name = "cam-avdd"; -+ regulator-min-microvolt = <2800000>; -+ regulator-max-microvolt = <2800000>; -+ vin-supply = <®_vcc3v3>; -+ }; -+ -+ reg_cam_dovdd: cam-dovdd { -+ compatible = "regulator-fixed"; -+ regulator-name = "cam-dovdd"; -+ regulator-min-microvolt = <1800000>; -+ regulator-max-microvolt = <1800000>; -+ vin-supply = <®_vcc3v3>; -+ }; -+ -+ reg_cam_dvdd: cam-dvdd { -+ compatible = "regulator-fixed"; -+ regulator-name = "cam-dvdd"; -+ regulator-min-microvolt = <1500000>; -+ regulator-max-microvolt = <1500000>; -+ vin-supply = <®_vcc3v3>; -+ }; -+ -+ - }; - - &mmc0 { -@@ -141,3 +174,55 @@ - /* USB VBUS is always on */ - status = "okay"; - }; -+ -+&csi { -+ status = "okay"; -+ -+ port { -+ #address-cells = <1>; -+ #size-cells = <0>; -+ -+ /* Parallel bus endpoint */ -+ csi_from_ov5640: endpoint { -+ remote-endpoint = <&ov5640_to_csi>; -+ bus-width = <8>; -+ data-shift = <2>; -+ hsync-active = <1>; /* Active high */ -+ vsync-active = <0>; /* Active low */ -+ data-active = <1>; /* Active high */ -+ pclk-sample = <1>; /* Rising */ -+ }; -+ }; -+}; -+ -+&i2c2 { -+ status = "okay"; -+ -+ ov5640: camera@3c { -+ compatible = "ovti,ov5640"; -+ reg = <0x3c>; -+ clocks = <&cam_xclk>; -+ clock-names = "xclk"; -+ -+ reset-gpios = <&pio 4 14 GPIO_ACTIVE_LOW>; -+ powerdown-gpios = <&pio 4 15 GPIO_ACTIVE_HIGH>; -+ AVDD-supply = <®_cam_avdd>; -+ DOVDD-supply = <®_cam_dovdd>; -+ DVDD-supply = <®_cam_dvdd>; -+ -+ port { -+ ov5640_to_csi: endpoint { -+ remote-endpoint = <&csi_from_ov5640>; -+ bus-width = <8>; -+ data-shift = <2>; -+ hsync-active = <1>; /* Active high */ -+ vsync-active = <0>; /* Active low */ -+ data-active = <1>; /* Active high */ -+ pclk-sample = <1>; /* Rising */ -+ }; -+ }; -+ }; -+}; -+&i2c2_pins { -+ bias-pull-up; -+}; - diff --git a/recipes-kernel/linux/linux-mainline/0003-dts-allwinner-bananapi-m2-zreo-Enforce-consistent-MM.patch b/recipes-kernel/linux/linux-mainline/0003-dts-allwinner-bananapi-m2-zreo-Enforce-consistent-MM.patch deleted file mode 100644 index cbaf782..0000000 --- a/recipes-kernel/linux/linux-mainline/0003-dts-allwinner-bananapi-m2-zreo-Enforce-consistent-MM.patch +++ /dev/null @@ -1,28 +0,0 @@ -From 9b4baa9b5aab0511c46a1ae95485e1a3ea984352 Mon Sep 17 00:00:00 2001 -From: matteolel -Date: Fri, 9 Dec 2022 16:38:11 +0000 -Subject: [PATCH] dts: allwinner: bananapi-m2-zreo: Enforce consistent MMC - numbering - -Enforce MMC number (sometimes the order was wrong and the device does not boot). ---- - arch/arm/boot/dts/sun8i-h2-plus-bananapi-m2-zero.dts | 3 +++ - 1 file changed, 3 insertions(+) - -diff --git a/arch/arm/boot/dts/sun8i-h2-plus-bananapi-m2-zero.dts b/arch/arm/boot/dts/sun8i-h2-plus-bananapi-m2-zero.dts -index 8e8634ff2..37a2ed937 100644 ---- a/arch/arm/boot/dts/sun8i-h2-plus-bananapi-m2-zero.dts -+++ b/arch/arm/boot/dts/sun8i-h2-plus-bananapi-m2-zero.dts -@@ -20,6 +20,9 @@ / { - aliases { - serial0 = &uart0; - serial1 = &uart1; -+ mmc0 = &mmc0; -+ mmc1 = &mmc1; -+ mmc2 = &mmc2; - }; - - chosen { --- -2.25.1 - diff --git a/recipes-kernel/linux/linux-mainline/6.5/0004-dts-allwinner-bananapi-m64-Consistent-nodes-for-mmc-devices.patch b/recipes-kernel/linux/linux-mainline/6.5/0004-dts-allwinner-bananapi-m64-Consistent-nodes-for-mmc-devices.patch deleted file mode 100644 index 7b37762..0000000 --- a/recipes-kernel/linux/linux-mainline/6.5/0004-dts-allwinner-bananapi-m64-Consistent-nodes-for-mmc-devices.patch +++ /dev/null @@ -1,27 +0,0 @@ -From f487f62babb11d014da7a0b58a0fcdf6d217a812 Mon Sep 17 00:00:00 2001 -From: Marek Belisko -Date: Thu, 11 May 2023 11:18:33 +0200 -Subject: [PATCH] bananapi-m64: Consistent nodes for mmc devices - -Signed-off-by: Marek Belisko ---- - arch/arm64/boot/dts/allwinner/sun50i-a64-bananapi-m64.dts | 3 +++ - 1 file changed, 3 insertions(+) - -diff --git a/arch/arm64/boot/dts/allwinner/sun50i-a64-bananapi-m64.dts b/arch/arm64/boot/dts/allwinner/sun50i-a64-bananapi-m64.dts -index e6d5bc0f7..39a28aad8 100644 ---- a/arch/arm64/boot/dts/allwinner/sun50i-a64-bananapi-m64.dts -+++ b/arch/arm64/boot/dts/allwinner/sun50i-a64-bananapi-m64.dts -@@ -16,6 +16,9 @@ aliases { - ethernet0 = &emac; - serial0 = &uart0; - serial1 = &uart1; -+ mmc0 = &mmc0; -+ mmc1 = &mmc1; -+ mmc2 = &mmc2; - }; - - chosen { --- -2.25.1 - diff --git a/recipes-kernel/linux/linux-mainline/orange-pi-prime/0001-dts-sun50i-h5-enable-power-button-for-orange-pi-prime.patch b/recipes-kernel/linux/linux-mainline/orange-pi-prime/0001-dts-sun50i-h5-enable-power-button-for-orange-pi-prime.patch new file mode 100644 index 0000000..2f7b1c3 --- /dev/null +++ b/recipes-kernel/linux/linux-mainline/orange-pi-prime/0001-dts-sun50i-h5-enable-power-button-for-orange-pi-prime.patch @@ -0,0 +1,27 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Gunjan Gupta +Date: Sat, 15 Jul 2023 17:06:17 +0000 +Subject: arm64: dts: sun50i: h5: enable power button for orangepi prime + +--- + arch/arm64/boot/dts/allwinner/sun50i-h5-orangepi-prime.dts | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +diff --git a/arch/arm64/boot/dts/allwinner/sun50i-h5-orangepi-prime.dts b/arch/arm64/boot/dts/allwinner/sun50i-h5-orangepi-prime.dts +index f430acd8558f..35e09098570f 100644 +--- a/arch/arm64/boot/dts/allwinner/sun50i-h5-orangepi-prime.dts ++++ b/arch/arm64/boot/dts/allwinner/sun50i-h5-orangepi-prime.dts +@@ -63,8 +63,9 @@ gpio-keys { + + key-sw4 { + label = "sw4"; +- linux,code = ; ++ linux,code = ; + gpios = <&r_pio 0 3 GPIO_ACTIVE_LOW>; ++ wakeup-source; + }; + }; + +-- +Armbian + diff --git a/recipes-kernel/linux/linux-mainline/orange-pi-prime/0002-dts-sun50i-h5-orange-pi-prime-add-regulator.patch b/recipes-kernel/linux/linux-mainline/orange-pi-prime/0002-dts-sun50i-h5-orange-pi-prime-add-regulator.patch new file mode 100644 index 0000000..bd28355 --- /dev/null +++ b/recipes-kernel/linux/linux-mainline/orange-pi-prime/0002-dts-sun50i-h5-orange-pi-prime-add-regulator.patch @@ -0,0 +1,66 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: The-going <48602507+The-going@users.noreply.github.com> +Date: Mon, 24 Jan 2022 19:34:31 +0300 +Subject: arm64:dts: sun50i-h5-orangepi-prime add regulator + +--- + .../allwinner/sun50i-h5-orangepi-prime.dts | 30 +++++++++++++++++++ + 1 file changed, 30 insertions(+) + +diff --git a/arch/arm64/boot/dts/allwinner/sun50i-h5-orangepi-prime.dts b/arch/arm64/boot/dts/allwinner/sun50i-h5-orangepi-prime.dts +index 998396bc0..6dc6850c1 100644 +--- a/arch/arm64/boot/dts/allwinner/sun50i-h5-orangepi-prime.dts ++++ b/arch/arm64/boot/dts/allwinner/sun50i-h5-orangepi-prime.dts +@@ -8,6 +8,7 @@ + + #include + #include ++#include + + / { + model = "Xunlong Orange Pi Prime"; +@@ -93,6 +94,10 @@ wifi_pwrseq: wifi_pwrseq { + }; + }; + ++&cpu0 { ++ cpu-supply = <®_vdd_cpux>; ++}; ++ + &codec { + allwinner,audio-routing = + "Line Out", "LINEOUT", +@@ -188,6 +193,31 @@ &ohci3 { + status = "okay"; + }; + ++&r_i2c { ++ status = "okay"; ++ ++ reg_vdd_cpux: regulator@65 { ++ compatible = "silergy,sy8106a"; ++ reg = <0x65>; ++ regulator-name = "vdd-cpux"; ++ silergy,fixed-microvolt = <1200000>; ++ /* ++ * The datasheet uses 1.1V as the minimum value of VDD-CPUX, ++ * however both the Armbian DVFS table and the official one ++ * have operating points with voltage under 1.1V, and both ++ * DVFS table are known to work properly at the lowest ++ * operating point. ++ * ++ * Use 1.0V as the minimum voltage instead. ++ */ ++ regulator-min-microvolt = <1000000>; ++ regulator-max-microvolt = <1400000>; ++ regulator-ramp-delay = <200>; ++ regulator-boot-on; ++ regulator-always-on; ++ }; ++}; ++ + &uart0 { + pinctrl-names = "default"; + pinctrl-0 = <&uart0_pa_pins>; +-- +2.25.1 diff --git a/recipes-kernel/linux/linux-mainline/orange-pi-prime/0003-dts-sun50i-h5-orange-pi-prime-add-rtl8723cs.patch b/recipes-kernel/linux/linux-mainline/orange-pi-prime/0003-dts-sun50i-h5-orange-pi-prime-add-rtl8723cs.patch new file mode 100644 index 0000000..badd015 --- /dev/null +++ b/recipes-kernel/linux/linux-mainline/orange-pi-prime/0003-dts-sun50i-h5-orange-pi-prime-add-rtl8723cs.patch @@ -0,0 +1,35 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: The-going <48602507+The-going@users.noreply.github.com> +Date: Mon, 7 Feb 2022 19:11:07 +0300 +Subject: arm64:dts: sun50i-h5-orangepi-prime add rtl8723cs + +--- + arch/arm64/boot/dts/allwinner/sun50i-h5-orangepi-prime.dts | 5 +++++ + 1 file changed, 5 insertions(+) + +diff --git a/arch/arm64/boot/dts/allwinner/sun50i-h5-orangepi-prime.dts b/arch/arm64/boot/dts/allwinner/sun50i-h5-orangepi-prime.dts +index 8b92d5e77220..f430acd8558f 100644 +--- a/arch/arm64/boot/dts/allwinner/sun50i-h5-orangepi-prime.dts ++++ b/arch/arm64/boot/dts/allwinner/sun50i-h5-orangepi-prime.dts +@@ -25,6 +25,7 @@ reg_vcc3v3: vcc3v3 { + aliases { + ethernet0 = &emac; + serial0 = &uart0; ++ ethernet1 = &rtl8723cs; + }; + + chosen { +@@ -174,6 +175,10 @@ &mmc1 { + bus-width = <4>; + non-removable; + status = "okay"; ++ ++ rtl8723cs: sdio_wifi@1 { ++ reg = <1>; ++ }; + }; + + &ohci0 { +-- +Armbian + diff --git a/recipes-kernel/linux/linux-mainline/6.5/0001-dts-orangepi-zero-Add-wifi-support.patch b/recipes-kernel/linux/linux-mainline/patches/0001-dts-orangepi-zero-Add-wifi-support.patch similarity index 100% rename from recipes-kernel/linux/linux-mainline/6.5/0001-dts-orangepi-zero-Add-wifi-support.patch rename to recipes-kernel/linux/linux-mainline/patches/0001-dts-orangepi-zero-Add-wifi-support.patch diff --git a/recipes-kernel/linux/linux-mainline/6.5/0002-dts-nanopi-neo-air-Add-camera-support.patch b/recipes-kernel/linux/linux-mainline/patches/0002-dts-nanopi-neo-air-Add-camera-support.patch similarity index 100% rename from recipes-kernel/linux/linux-mainline/6.5/0002-dts-nanopi-neo-air-Add-camera-support.patch rename to recipes-kernel/linux/linux-mainline/patches/0002-dts-nanopi-neo-air-Add-camera-support.patch diff --git a/recipes-kernel/linux/linux-mainline/6.5/0003-dts-allwinner-bananapi-m2-zero-Enforce-consistent-MM.patch b/recipes-kernel/linux/linux-mainline/patches/0003-dts-allwinner-bananapi-m2-zero-Enforce-consistent-MM.patch similarity index 100% rename from recipes-kernel/linux/linux-mainline/6.5/0003-dts-allwinner-bananapi-m2-zero-Enforce-consistent-MM.patch rename to recipes-kernel/linux/linux-mainline/patches/0003-dts-allwinner-bananapi-m2-zero-Enforce-consistent-MM.patch diff --git a/recipes-kernel/linux/linux-mainline/0004-dts-allwinner-bananapi-m64-Consistent-nodes-for-mmc-devices.patch b/recipes-kernel/linux/linux-mainline/patches/0004-dts-allwinner-bananapi-m64-Consistent-nodes-for-mmc-devices.patch similarity index 100% rename from recipes-kernel/linux/linux-mainline/0004-dts-allwinner-bananapi-m64-Consistent-nodes-for-mmc-devices.patch rename to recipes-kernel/linux/linux-mainline/patches/0004-dts-allwinner-bananapi-m64-Consistent-nodes-for-mmc-devices.patch diff --git a/recipes-kernel/linux/linux-mainline/patches/0005-ARM-dts-sunxi-Add-MMC-alias-for-consistent-enumerati.patch b/recipes-kernel/linux/linux-mainline/patches/0005-ARM-dts-sunxi-Add-MMC-alias-for-consistent-enumerati.patch new file mode 100644 index 0000000..84129f7 --- /dev/null +++ b/recipes-kernel/linux/linux-mainline/patches/0005-ARM-dts-sunxi-Add-MMC-alias-for-consistent-enumerati.patch @@ -0,0 +1,31 @@ +From 8b245b30a451bc4a4081759a6918b630ec075a7c Mon Sep 17 00:00:00 2001 +From: Stefan Gloor +Date: Thu, 19 Dec 2024 10:34:54 +0100 +Subject: [PATCH] ARM: dts: sunxi: Add MMC alias for consistent enumeration + +Add explicit alias for MMC devices, so that (e)MMC and micro SD cards +are enumerated consistenly. This should fix spurious boot failures when +specifying a hard-coded root partition, e.g., mmcblk0p2. + +Signed-off-by: Stefan Gloor +Upstream-Status: Denied https://lore.kernel.org/lkml/CAGb2v67dBhL3-AhLeHg3xOgbNZ3qu0aj9+kA+MoOMRYfr_Z_zQ@mail.gmail.com/ +--- + arch/arm/boot/dts/allwinner/sun7i-a20-olinuxino-micro.dts | 2 ++ + 1 file changed, 2 insertions(+) + +diff --git a/arch/arm/boot/dts/allwinner/sun7i-a20-olinuxino-micro.dts b/arch/arm/boot/dts/allwinner/sun7i-a20-olinuxino-micro.dts +index a1b89b2a2999..9cd1eb690134 100644 +--- a/arch/arm/boot/dts/allwinner/sun7i-a20-olinuxino-micro.dts ++++ b/arch/arm/boot/dts/allwinner/sun7i-a20-olinuxino-micro.dts +@@ -60,6 +60,8 @@ aliases { + serial2 = &uart7; + spi0 = &spi1; + spi1 = &spi2; ++ mmc0 = &mmc0; ++ mmc1 = &mmc3; + }; + + chosen { +-- +2.45.2 + diff --git a/recipes-kernel/linux/linux-mainline/patches/0006-dts-allwinner-orangepi-zero-mmc-aliases-for-consiste.patch b/recipes-kernel/linux/linux-mainline/patches/0006-dts-allwinner-orangepi-zero-mmc-aliases-for-consiste.patch new file mode 100644 index 0000000..91f7436 --- /dev/null +++ b/recipes-kernel/linux/linux-mainline/patches/0006-dts-allwinner-orangepi-zero-mmc-aliases-for-consiste.patch @@ -0,0 +1,32 @@ +From a2d765aab2989ba080b8f63cb0489d6a531cb3fd Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Oliver=20K=C3=A4stner?= +Date: Sun, 16 Mar 2025 22:36:53 +0100 +Subject: [PATCH] dts: allwinner: orangepi-zero: mmc aliases for consistent + enumeration +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +This fixes random boot failures. + +Upstream-Status: Inappropriate [https://github.com/linux-sunxi/meta-sunxi/pull/431] + +Signed-off-by: Oliver Kästner +--- + arch/arm/boot/dts/allwinner/sun8i-h2-plus-orangepi-zero.dts | 3 +++ + 1 file changed, 3 insertions(+) + +diff --git a/arch/arm/boot/dts/allwinner/sun8i-h2-plus-orangepi-zero.dts b/arch/arm/boot/dts/allwinner/sun8i-h2-plus-orangepi-zero.dts +index ca94e313f..570a88327 100644 +--- a/arch/arm/boot/dts/allwinner/sun8i-h2-plus-orangepi-zero.dts ++++ b/arch/arm/boot/dts/allwinner/sun8i-h2-plus-orangepi-zero.dts +@@ -59,6 +59,9 @@ aliases { + /* ethernet0 is the H3 emac, defined in sun8i-h3.dtsi */ + ethernet0 = &emac; + ethernet1 = &xr819; ++ mmc0 = &mmc0; /* microSD */ ++ mmc1 = &mmc1; /* XR819 WiFi */ ++ mmc2 = &mmc2; + }; + + chosen { diff --git a/recipes-kernel/linux/linux-mainline/sun9i/defconfig b/recipes-kernel/linux/linux-mainline/sun9i/defconfig index cfb637f..0c8dea6 100644 --- a/recipes-kernel/linux/linux-mainline/sun9i/defconfig +++ b/recipes-kernel/linux/linux-mainline/sun9i/defconfig @@ -897,7 +897,7 @@ CONFIG_MAC80211_RC_DEFAULT="minstrel_ht" # CONFIG_MAC80211_MESSAGE_TRACING is not set # CONFIG_MAC80211_DEBUG_MENU is not set CONFIG_MAC80211_STA_HASH_MAX_SIZE=0 -# CONFIG_RFKILL is not set +CONFIG_RFKILL=y # CONFIG_NET_9P is not set # CONFIG_CAIF is not set # CONFIG_CEPH_LIB is not set diff --git a/recipes-kernel/linux/linux-mainline/sunxi-kmeta/bsp/h61x/add-nodes-for-sunxi-info-addr-dump-reg.patch b/recipes-kernel/linux/linux-mainline/sunxi-kmeta/bsp/h61x/add-nodes-for-sunxi-info-addr-dump-reg.patch new file mode 100644 index 0000000..9e51894 --- /dev/null +++ b/recipes-kernel/linux/linux-mainline/sunxi-kmeta/bsp/h61x/add-nodes-for-sunxi-info-addr-dump-reg.patch @@ -0,0 +1,72 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: The-going <48602507+The-going@users.noreply.github.com> +Date: Sat, 16 Apr 2022 11:51:35 +0300 +Subject: add nodes for sunxi-info, sunxi-addr and sunxi-dump-reg + +--- + arch/arm64/boot/dts/allwinner/sun50i-h6.dtsi | 19 ++++++++++ + 1 file changed, 19 insertions(+) + +diff --git a/arch/arm64/boot/dts/allwinner/sun50i-h6.dtsi b/arch/arm64/boot/dts/allwinner/sun50i-h6.dtsi +index 538c90663602..6365cce07304 100644 +--- a/arch/arm64/boot/dts/allwinner/sun50i-h6.dtsi ++++ b/arch/arm64/boot/dts/allwinner/sun50i-h6.dtsi +@@ -1243,6 +1243,25 @@ ths: thermal-sensor@5070400 { + nvmem-cell-names = "calibration"; + #thermal-sensor-cells = <1>; + }; ++ ++ sunxi-info { ++ compatible = "allwinner,sun50i-h6-sys-info"; ++ status = "okay"; ++ }; ++ ++ addr_mgt: addr-mgt { ++ compatible = "allwinner,sunxi-addr_mgt"; ++ type_addr_wifi = <0x2>; ++ type_addr_bt = <0x2>; ++ type_addr_eth = <0x2>; ++ status = "okay"; ++ }; ++ ++ dump_reg: dump_reg@20000 { ++ compatible = "allwinner,sunxi-dump-reg"; ++ reg = <0x0 0x03001000 0x0 0x0f20>; ++ status = "okay"; ++ }; + }; + + thermal-zones { +diff --git a/arch/arm64/boot/dts/allwinner/sun50i-h616.dtsi b/arch/arm64/boot/dts/allwinner/sun50i-h616.dtsi +index 98735d39e6e8..5ff1b357a25b 100644 +--- a/arch/arm64/boot/dts/allwinner/sun50i-h616.dtsi ++++ b/arch/arm64/boot/dts/allwinner/sun50i-h616.dtsi +@@ -1053,6 +1053,25 @@ ths: thermal-sensor@5070400 { + nvmem-cell-names = "calibration"; + #thermal-sensor-cells = <1>; + }; ++ ++ dump_reg: dump_reg@20000 { ++ compatible = "allwinner,sunxi-dump-reg"; ++ reg = <0x0 0x03001000 0x0 0x0f20>; ++ status = "okay"; ++ }; ++ ++ sunxi-info { ++ compatible = "allwinner,sun50i-h616-sys-info"; ++ status = "okay"; ++ }; ++ ++ addr_mgt: addr-mgt { ++ compatible = "allwinner,sunxi-addr_mgt"; ++ type_addr_wifi = <0x2>; ++ type_addr_bt = <0x2>; ++ type_addr_eth = <0x2>; ++ status = "okay"; ++ }; + }; + + thermal-zones { +-- +Armbian + diff --git a/recipes-kernel/linux/linux-mainline/sunxi-kmeta/bsp/h61x/arm64-dts-allwinner-h616-Add-device-node-for-SID.patch b/recipes-kernel/linux/linux-mainline/sunxi-kmeta/bsp/h61x/arm64-dts-allwinner-h616-Add-device-node-for-SID.patch new file mode 100644 index 0000000..e04954a --- /dev/null +++ b/recipes-kernel/linux/linux-mainline/sunxi-kmeta/bsp/h61x/arm64-dts-allwinner-h616-Add-device-node-for-SID.patch @@ -0,0 +1,41 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Kali Prasad +Date: Sun, 19 Sep 2021 08:02:27 +0000 +Subject: arm64: dts: allwinner: h616: Add device node for SID + +The device tree binding for H616's SID controller. + +Signed-off-by: Kali Prasad +--- + arch/arm64/boot/dts/allwinner/sun50i-h616.dtsi | 15 ++++++++++ + 1 file changed, 15 insertions(+) + +diff --git a/arch/arm64/boot/dts/allwinner/sun50i-h616.dtsi b/arch/arm64/boot/dts/allwinner/sun50i-h616.dtsi +index 45359b0d317a..7ad1982fb47f 100644 +--- a/arch/arm64/boot/dts/allwinner/sun50i-h616.dtsi ++++ b/arch/arm64/boot/dts/allwinner/sun50i-h616.dtsi +@@ -171,6 +171,21 @@ ccu: clock@3001000 { + #reset-cells = <1>; + }; + ++ sid: efuse@3006000 { ++ compatible = "allwinner,sun50i-h616-sid"; ++ reg = <0x03006000 0x1000>; ++ #address-cells = <1>; ++ #size-cells = <1>; ++ ++ cpu_speed_grade: cpu-speed-grade@0 { ++ reg = <0x00 0x02>; ++ }; ++ ++ ths_calibration: thermal-sensor-calibration@14 { ++ reg = <0x14 0x8>; ++ }; ++ }; ++ + watchdog: watchdog@30090a0 { + compatible = "allwinner,sun50i-h616-wdt", + "allwinner,sun6i-a31-wdt"; +-- +Armbian + diff --git a/recipes-kernel/linux/linux-mainline/sunxi-kmeta/bsp/h61x/arm64-dts-allwinner-h616-Add-efuse_xlate-cpu-frequency-scaling-v1_6_2.patch b/recipes-kernel/linux/linux-mainline/sunxi-kmeta/bsp/h61x/arm64-dts-allwinner-h616-Add-efuse_xlate-cpu-frequency-scaling-v1_6_2.patch new file mode 100644 index 0000000..fea28a8 --- /dev/null +++ b/recipes-kernel/linux/linux-mainline/sunxi-kmeta/bsp/h61x/arm64-dts-allwinner-h616-Add-efuse_xlate-cpu-frequency-scaling-v1_6_2.patch @@ -0,0 +1,473 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: AGM1968 +Date: Tue, 23 May 2023 16:43:00 +0000 +Subject: arm64-dts-allwinner-h616-Add-efuse_xlate-cpu-frequency-scaling-v1_6_2 + arch/arm64/boot/dts/allwinner/sun50i-h616-cpu-opp.dtsi + arch/arm64/boot/dts/allwinner/sun50i-h618-cpu-dvfs.dtsi + arch/arm64/boot/dts/allwinner/sun50i-h616-orangepi-zero2.dts + drivers/cpufreq/cpufreq-dt-platdev.c drivers/cpufreq/sun50i-cpufreq-nvmem.c + +Signed-off-by: AGM1968 +--- + arch/arm64/boot/dts/allwinner/sun50i-h616-cpu-opp.dtsi | 75 ++++++++ + arch/arm64/boot/dts/allwinner/sun50i-h618-cpu-dvfs.dtsi | 64 +++++++++++++ + arch/arm64/boot/dts/allwinner/sun50i-h616-orangepi-zero.dtsi | 1 + + arch/arm64/boot/dts/allwinner/sun50i-h616-orangepi-zero2.dts | 5 + + arch/arm64/boot/dts/allwinner/sun50i-h618-orangepi-zero3.dts | 62 ++----------- + drivers/cpufreq/cpufreq-dt-platdev.c | 2 + + drivers/cpufreq/sun50i-cpufreq-nvmem.c | 92 +++++++--- + 7 files changed, 221 insertions(+), 80 deletions(-) + create mode 100644 arch/arm64/boot/dts/allwinner/sun50i-h618-cpu-dvfs.dtsi + +diff --git a/arch/arm64/boot/dts/allwinner/sun50i-h616-cpu-opp.dtsi b/arch/arm64/boot/dts/allwinner/sun50i-h616-cpu-opp.dtsi +new file mode 100644 +index 000000000000..36f2950367c6 +--- /dev/null ++++ b/arch/arm64/boot/dts/allwinner/sun50i-h616-cpu-opp.dtsi +@@ -0,0 +1,75 @@ ++//SPDX-License-Identifier: (GPL-2.0+ OR MIT) ++//Testing Version 1 from: AGM1968 ++//Noted: PLL_CPUX = 24 MHz*N/P (WIP) ++ ++/ { ++ cpu_opp_table: opp-table-cpu { ++ compatible = "allwinner,sun50i-h616-operating-points"; ++ nvmem-cells = <&cpu_speed_grade>; ++ opp-shared; ++ ++ opp-480000000 { ++ clock-latency-ns = <244144>; /* 8 32k periods */ ++ opp-hz = /bits/ 64 <480000000>; ++ opp-microvolt-speed0 = <820000 820000 1100000>; ++ opp-microvolt-speed1 = <880000 880000 1100000>; ++ opp-microvolt-speed2 = <880000 880000 1100000>; ++ }; ++ ++ opp-600000000 { ++ clock-latency-ns = <244144>; /* 8 32k periods */ ++ opp-hz = /bits/ 64 <600000000>; ++ opp-microvolt-speed0 = <820000 820000 1100000>; ++ opp-microvolt-speed1 = <880000 880000 1100000>; ++ opp-microvolt-speed2 = <880000 880000 1100000>; ++ }; ++ ++ opp-792000000 { ++ clock-latency-ns = <244144>; /* 8 32k periods */ ++ opp-hz = /bits/ 64 <792000000>; ++ opp-microvolt-speed0 = <860000 860000 1100000>; ++ opp-microvolt-speed1 = <940000 940000 1100000>; ++ opp-microvolt-speed2 = <940000 940000 1100000>; ++ }; ++ ++ opp-1008000000 { ++ clock-latency-ns = <244144>; /* 8 32k periods */ ++ opp-hz = /bits/ 64 <1008000000>; ++ opp-microvolt-speed0 = <900000 900000 1100000>; ++ opp-microvolt-speed1 = <1020000 1020000 1100000>; ++ opp-microvolt-speed2 = <1020000 1020000 1100000>; ++ }; ++ ++ opp-1200000000 { ++ clock-latency-ns = <244144>; /* 8 32k periods */ ++ opp-hz = /bits/ 64 <1200000000>; ++ opp-microvolt-speed0 = <960000 960000 1100000>; ++ opp-microvolt-speed1 = <1100000 1100000 1100000>; ++ opp-microvolt-speed2 = <1100000 1100000 1100000>; ++ }; ++ ++ opp-1512000000 { ++ clock-latency-ns = <244144>; /* 8 32k periods */ ++ opp-hz = /bits/ 64 <1512000000>; ++ opp-microvolt-speed0 = <1100000 1100000 1100000>; ++ opp-microvolt-speed1 = <1100000 1100000 1100000>; ++ opp-microvolt-speed2 = <1100000 1100000 1100000>; ++ }; ++ }; ++}; ++ ++&cpu0 { ++ operating-points-v2 = <&cpu_opp_table>; ++}; ++ ++&cpu1 { ++ operating-points-v2 = <&cpu_opp_table>; ++}; ++ ++&cpu2 { ++ operating-points-v2 = <&cpu_opp_table>; ++}; ++ ++&cpu3 { ++ operating-points-v2 = <&cpu_opp_table>; ++}; +diff --git a/arch/arm64/boot/dts/allwinner/sun50i-h616-orangepi-zero.dtsi b/arch/arm64/boot/dts/allwinner/sun50i-h616-orangepi-zero.dtsi +index 0666d16ba7d0..54d706286554 100644 +--- a/arch/arm64/boot/dts/allwinner/sun50i-h616-orangepi-zero.dtsi ++++ b/arch/arm64/boot/dts/allwinner/sun50i-h616-orangepi-zero.dtsi +@@ -7,6 +7,7 @@ + */ + + #include "sun50i-h616.dtsi" ++#include "sun50i-h616-cpu-opp.dtsi" + + #include + #include +diff --git a/arch/arm64/boot/dts/allwinner/sun50i-h616-orangepi-zero2.dts b/arch/arm64/boot/dts/allwinner/sun50i-h616-orangepi-zero2.dts +index 8d8009c7f9a3..41a5a4013091 100644 +--- a/arch/arm64/boot/dts/allwinner/sun50i-h616-orangepi-zero2.dts ++++ b/arch/arm64/boot/dts/allwinner/sun50i-h616-orangepi-zero2.dts +@@ -12,6 +12,11 @@ / { + compatible = "xunlong,orangepi-zero2", "allwinner,sun50i-h616"; + }; + ++&cpu0 { ++ cpu-supply = <®_dcdca>; ++ status = "okay"; ++}; ++ + &emac0 { + phy-supply = <®_dcdce>; + }; +diff --git a/arch/arm64/boot/dts/allwinner/sun50i-h618-cpu-dvfs.dtsi b/arch/arm64/boot/dts/allwinner/sun50i-h618-cpu-dvfs.dtsi +new file mode 100644 +index 0000000000000..0509e3fb22e26 +--- /dev/null ++++ b/arch/arm64/boot/dts/allwinner/sun50i-h618-cpu-dvfs.dtsi +@@ -0,0 +1,64 @@ ++ ++ ++&r_i2c { ++ status = "okay"; ++ ++ axp313: pmic@36 { ++ compatible = "x-powers,axp313a"; ++ reg = <0x36>; ++ #interrupt-cells = <1>; ++ interrupt-controller; ++ interrupt-parent = <&pio>; ++ interrupts = <2 9 IRQ_TYPE_LEVEL_LOW>; /* PC9 */ ++ ++ vin1-supply = <®_vcc5v>; ++ vin2-supply = <®_vcc5v>; ++ vin3-supply = <®_vcc5v>; ++ ++ regulators { ++ /* Supplies VCC-PLL and DRAM */ ++ reg_aldo1: aldo1 { ++ regulator-always-on; ++ regulator-min-microvolt = <1800000>; ++ regulator-max-microvolt = <1800000>; ++ regulator-name = "vcc1v8"; ++ }; ++ ++ /* Supplies VCC-IO, so needs to be always on. */ ++ reg_dldo1: dldo1 { ++ regulator-always-on; ++ regulator-min-microvolt = <3300000>; ++ regulator-max-microvolt = <3300000>; ++ regulator-name = "vcc3v3"; ++ }; ++ ++ reg_dcdc1: dcdc1 { ++ regulator-always-on; ++ regulator-min-microvolt = <810000>; ++ regulator-max-microvolt = <990000>; ++ regulator-step-delay-us = <25>; ++ regulator-final-delay-us = <50>; ++ regulator-name = "vdd-gpu-sys"; ++ }; ++ ++ reg_dcdc2: dcdc2 { ++ regulator-always-on; ++ regulator-min-microvolt = <500000>; ++ regulator-max-microvolt = <1100000>; ++ regulator-step-delay-us = <25>; ++ regulator-final-delay-us = <50>; ++ regulator-ramp-delay = <200>; ++ regulator-name = "vdd-cpu"; ++ }; ++ ++ reg_dcdc3: dcdc3 { ++ regulator-always-on; ++ regulator-min-microvolt = <1100000>; ++ regulator-max-microvolt = <1100000>; ++ regulator-step-delay-us = <25>; ++ regulator-final-delay-us = <50>; ++ regulator-name = "vdd-dram"; ++ }; ++ }; ++ }; ++}; +diff --git a/arch/arm64/boot/dts/allwinner/sun50i-h618-orangepi-zero3.dts b/arch/arm64/boot/dts/allwinner/sun50i-h618-orangepi-zero3.dts +index 00fe28caac93..edbfc83f390a 100644 +--- a/arch/arm64/boot/dts/allwinner/sun50i-h618-orangepi-zero3.dts ++++ b/arch/arm64/boot/dts/allwinner/sun50i-h618-orangepi-zero3.dts +@@ -6,12 +6,18 @@ + /dts-v1/; + + #include "sun50i-h616-orangepi-zero.dtsi" ++#include "sun50i-h618-cpu-dvfs.dtsi" + + / { + model = "OrangePi Zero3"; + compatible = "xunlong,orangepi-zero3", "allwinner,sun50i-h618"; + }; + ++&cpu0 { ++ cpu-supply = <®_dcdc2>; ++ status = "okay"; ++}; ++ + &emac0 { + phy-supply = <®_dldo1>; + }; +@@ -31,62 +37,6 @@ &mmc0 { + vmmc-supply = <®_dldo1>; + }; + +-&r_i2c { +- status = "okay"; +- +- axp313: pmic@36 { +- compatible = "x-powers,axp313a"; +- reg = <0x36>; +- #interrupt-cells = <1>; +- interrupt-controller; +- interrupt-parent = <&pio>; +- interrupts = <2 9 IRQ_TYPE_LEVEL_LOW>; /* PC9 */ +- +- vin1-supply = <®_vcc5v>; +- vin2-supply = <®_vcc5v>; +- vin3-supply = <®_vcc5v>; +- +- regulators { +- /* Supplies VCC-PLL, so needs to be always on. */ +- reg_aldo1: aldo1 { +- regulator-always-on; +- regulator-min-microvolt = <1800000>; +- regulator-max-microvolt = <1800000>; +- regulator-name = "vcc1v8"; +- }; +- +- /* Supplies VCC-IO, so needs to be always on. */ +- reg_dldo1: dldo1 { +- regulator-always-on; +- regulator-min-microvolt = <3300000>; +- regulator-max-microvolt = <3300000>; +- regulator-name = "vcc3v3"; +- }; +- +- reg_dcdc1: dcdc1 { +- regulator-always-on; +- regulator-min-microvolt = <810000>; +- regulator-max-microvolt = <990000>; +- regulator-name = "vdd-gpu-sys"; +- }; +- +- reg_dcdc2: dcdc2 { +- regulator-always-on; +- regulator-min-microvolt = <810000>; +- regulator-max-microvolt = <1100000>; +- regulator-name = "vdd-cpu"; +- }; +- +- reg_dcdc3: dcdc3 { +- regulator-always-on; +- regulator-min-microvolt = <1100000>; +- regulator-max-microvolt = <1100000>; +- regulator-name = "vdd-dram"; +- }; +- }; +- }; +-}; +- + &pio { + vcc-pc-supply = <®_dldo1>; + vcc-pf-supply = <®_dldo1>; +diff --git a/drivers/cpufreq/cpufreq-dt-platdev.c b/drivers/cpufreq/cpufreq-dt-platdev.c +index fb2875ce1fdd..e63d36839769 100644 +--- a/drivers/cpufreq/cpufreq-dt-platdev.c ++++ b/drivers/cpufreq/cpufreq-dt-platdev.c +@@ -104,6 +104,8 @@ static const struct of_device_id allowlist[] __initconst = { + */ + static const struct of_device_id blocklist[] __initconst = { + { .compatible = "allwinner,sun50i-h6", }, ++ { .compatible = "allwinner,sun50i-h616", }, ++ { .compatible = "allwinner,sun50i-h618", }, + + { .compatible = "apple,arm-platform", }, + +diff --git a/drivers/cpufreq/sun50i-cpufreq-nvmem.c b/drivers/cpufreq/sun50i-cpufreq-nvmem.c +index 6845ab5034ec..5d85bfe475de 100644 +--- a/drivers/cpufreq/sun50i-cpufreq-nvmem.c ++++ b/drivers/cpufreq/sun50i-cpufreq-nvmem.c +@@ -6,6 +6,9 @@ + * provide the OPP framework with required information. + * + * Copyright (C) 2019 Yangtao Li ++ * ++ * ADD efuse_xlate to extract SoC version so that h6 and h616 can coexist. ++ * Version 1 AGM1968 + */ + + #define pr_fmt(fmt) KBUILD_MODNAME ": " fmt +@@ -20,25 +23,62 @@ + + #define MAX_NAME_LEN 7 + +-#define NVMEM_MASK 0x7 +-#define NVMEM_SHIFT 5 ++#define SUN50I_H616_NVMEM_MASK 0x22 ++#define SUN50I_H616_NVMEM_SHIFT 5 ++#define SUN50I_H6_NVMEM_MASK 0x7 ++#define SUN50I_H6_NVMEM_SHIFT 5 ++ ++struct sunxi_cpufreq_soc_data { ++ u32 (*efuse_xlate) (void *efuse); ++}; + + static struct platform_device *cpufreq_dt_pdev, *sun50i_cpufreq_pdev; + ++static u32 sun50i_h616_efuse_xlate(void *efuse) ++{ ++ u32 efuse_value = (*(u32 *)efuse >> SUN50I_H616_NVMEM_SHIFT) & ++ SUN50I_H616_NVMEM_MASK; ++ ++ /* Tested as V1 h616 soc. Expected efuse values are 1 - 3, ++ slowest to fastest */ ++ if (efuse_value >=1 && efuse_value <= 3) ++ return efuse_value - 1; ++ else ++ return 0; ++}; ++ ++static u32 sun50i_h6_efuse_xlate(void *efuse) ++{ ++ u32 efuse_value = (*(u32 *)efuse >> SUN50I_H6_NVMEM_SHIFT) & ++ SUN50I_H6_NVMEM_MASK; ++ ++ /* ++ * We treat unexpected efuse values as if the SoC was from ++ * the slowest bin. Expected efuse values are 1 - 3, slowest ++ * to fastest. ++ */ ++ if (efuse_value >= 1 && efuse_value <= 3) ++ return efuse_value - 1; ++ else ++ return 0; ++}; ++ ++ + /** + * sun50i_cpufreq_get_efuse() - Determine speed grade from efuse value ++ * @soc_data: pointer to sunxi_cpufreq_soc_data context + * @versions: Set to the value parsed from efuse + * + * Returns 0 if success. + */ +-static int sun50i_cpufreq_get_efuse(u32 *versions) ++static int sun50i_cpufreq_get_efuse(const struct sunxi_cpufreq_soc_data *soc_data, ++ u32 *versions) + { + struct nvmem_cell *speedbin_nvmem; + struct device_node *np; + struct device *cpu_dev; +- u32 *speedbin, efuse_value; ++ u32 *speedbin; + size_t len; +- int ret; + + cpu_dev = get_cpu_device(0); + if (!cpu_dev) +@@ -47,10 +87,9 @@ static int sun50i_cpufreq_get_efuse(u32 *versions) + np = dev_pm_opp_of_get_opp_desc_node(cpu_dev); + if (!np) + return -ENOENT; +- +- ret = of_device_is_compatible(np, +- "allwinner,sun50i-h6-operating-points"); +- if (!ret) { ++ if (of_device_is_compatible(np, "allwinner,sun50i-h6-operating-points")) {} ++ else if (of_device_is_compatible(np, "allwinner,sun50i-h616-operating-points")) {} ++ else { + of_node_put(np); + return -ENOENT; + } +@@ -66,17 +105,7 @@ static int sun50i_cpufreq_get_efuse(u32 *versions) + if (IS_ERR(speedbin)) + return PTR_ERR(speedbin); + +- efuse_value = (*speedbin >> NVMEM_SHIFT) & NVMEM_MASK; +- +- /* +- * We treat unexpected efuse values as if the SoC was from +- * the slowest bin. Expected efuse values are 1-3, slowest +- * to fastest. +- */ +- if (efuse_value >= 1 && efuse_value <= 3) +- *versions = efuse_value - 1; +- else +- *versions = 0; ++ *versions = soc_data->efuse_xlate(speedbin); + + kfree(speedbin); + return 0; +@@ -84,18 +113,23 @@ static int sun50i_cpufreq_get_efuse(u32 *versions) + + static int sun50i_cpufreq_nvmem_probe(struct platform_device *pdev) + { ++ const struct of_device_id *match; + int *opp_tokens; + char name[MAX_NAME_LEN]; + unsigned int cpu; + u32 speed = 0; + int ret; + ++ match = dev_get_platdata(&pdev->dev); ++ if (!match) ++ return -EINVAL; ++ + opp_tokens = kcalloc(num_possible_cpus(), sizeof(*opp_tokens), + GFP_KERNEL); + if (!opp_tokens) + return -ENOMEM; + +- ret = sun50i_cpufreq_get_efuse(&speed); ++ ret = sun50i_cpufreq_get_efuse(match-> data, &speed); + if (ret) { + kfree(opp_tokens); + return ret; +@@ -159,8 +193,18 @@ static struct platform_driver sun50i_cpufreq_driver = { + }, + }; + ++static const struct sunxi_cpufreq_soc_data sun50i_h616_data = { ++ .efuse_xlate = sun50i_h616_efuse_xlate, ++}; ++ ++static const struct sunxi_cpufreq_soc_data sun50i_h6_data = { ++ .efuse_xlate = sun50i_h6_efuse_xlate, ++}; ++ + static const struct of_device_id sun50i_cpufreq_match_list[] = { +- { .compatible = "allwinner,sun50i-h6" }, ++ { .compatible = "allwinner,sun50i-h6", .data = &sun50i_h6_data }, ++ { .compatible = "allwinner,sun50i-h616", .data = &sun50i_h616_data }, ++ { .compatible = "allwinner,sun50i-h618", .data = &sun50i_h616_data }, + {} + }; + MODULE_DEVICE_TABLE(of, sun50i_cpufreq_match_list); +@@ -196,8 +239,8 @@ static int __init sun50i_cpufreq_init(void) + return ret; + + sun50i_cpufreq_pdev = +- platform_device_register_simple("sun50i-cpufreq-nvmem", +- -1, NULL, 0); ++ platform_device_register_data(NULL, ++ "sun50i-cpufreq-nvmem", -1, match, sizeof(*match)); + ret = PTR_ERR_OR_ZERO(sun50i_cpufreq_pdev); + if (ret == 0) + return 0; +-- +Armbian + diff --git a/recipes-kernel/linux/linux-mainline/sunxi-kmeta/bsp/h61x/arm64-dts-allwinner-h616-Add-thermal-sensor-and-thermal-zones.patch b/recipes-kernel/linux/linux-mainline/sunxi-kmeta/bsp/h61x/arm64-dts-allwinner-h616-Add-thermal-sensor-and-thermal-zones.patch new file mode 100644 index 0000000..887bd51 --- /dev/null +++ b/recipes-kernel/linux/linux-mainline/sunxi-kmeta/bsp/h61x/arm64-dts-allwinner-h616-Add-thermal-sensor-and-thermal-zones.patch @@ -0,0 +1,135 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Kali Prasad +Date: Sun, 19 Sep 2021 08:02:27 +0000 +Subject: arm64: dts: allwinner: h616: Add thermal sensor and thermal zones + +There are four sensors, CPU, GPU, VE, and DDR. + +Signed-off-by: Kali Prasad +--- + arch/arm64/boot/dts/allwinner/sun50i-h616.dtsi | 75 ++++++++++ + 1 file changed, 75 insertions(+) + +diff --git a/arch/arm64/boot/dts/allwinner/sun50i-h616.dtsi b/arch/arm64/boot/dts/allwinner/sun50i-h616.dtsi +index 7ad1982fb47f..8628a9e3dfca 100644 +--- a/arch/arm64/boot/dts/allwinner/sun50i-h616.dtsi ++++ b/arch/arm64/boot/dts/allwinner/sun50i-h616.dtsi +@@ -9,6 +9,7 @@ + #include + #include + #include ++#include + + / { + interrupt-parent = <&gic>; +@@ -25,6 +26,8 @@ cpu0: cpu@0 { + reg = <0>; + enable-method = "psci"; + clocks = <&ccu CLK_CPUX>; ++ clock-latency-ns = <244144>; /* 8 32k periods */ ++ #cooling-cells = <2>; + }; + + cpu1: cpu@1 { +@@ -33,6 +36,8 @@ cpu1: cpu@1 { + reg = <1>; + enable-method = "psci"; + clocks = <&ccu CLK_CPUX>; ++ clock-latency-ns = <244144>; /* 8 32k periods */ ++ #cooling-cells = <2>; + }; + + cpu2: cpu@2 { +@@ -41,6 +46,8 @@ cpu2: cpu@2 { + reg = <2>; + enable-method = "psci"; + clocks = <&ccu CLK_CPUX>; ++ clock-latency-ns = <244144>; /* 8 32k periods */ ++ #cooling-cells = <2>; + }; + + cpu3: cpu@3 { +@@ -49,6 +56,8 @@ cpu3: cpu@3 { + reg = <3>; + enable-method = "psci"; + clocks = <&ccu CLK_CPUX>; ++ clock-latency-ns = <244144>; /* 8 32k periods */ ++ #cooling-cells = <2>; + }; + }; + +@@ -833,5 +842,71 @@ r_rsb: rsb@7083000 { + #address-cells = <1>; + #size-cells = <0>; + }; ++ ++ ths: thermal-sensor@5070400 { ++ compatible = "allwinner,sun50i-h616-ths"; ++ reg = <0x05070400 0x400>; ++ interrupts = ; ++ clocks = <&ccu CLK_BUS_THS>; ++ clock-names = "bus"; ++ resets = <&ccu RST_BUS_THS>; ++ nvmem-cells = <&ths_calibration>; ++ nvmem-cell-names = "calibration"; ++ #thermal-sensor-cells = <1>; ++ }; ++ }; ++ ++ thermal-zones { ++ cpu-thermal { ++ polling-delay-passive = <500>; ++ polling-delay = <1000>; ++ thermal-sensors = <&ths 2>; ++ sustainable-power = <1000>; ++ k_po = <20>; ++ k_pu = <40>; ++ k_i = <0>; ++ ++ trips { ++ cpu_threshold: trip-point@0 { ++ temperature = <60000>; ++ type = "passive"; ++ hysteresis = <0>; ++ }; ++ cpu_target: trip-point@1 { ++ temperature = <70000>; ++ type = "passive"; ++ hysteresis = <0>; ++ }; ++ }; ++ ++ cooling-maps { ++ map0 { ++ trip = <&cpu_target>; ++ cooling-device = <&cpu0 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>, ++ <&cpu1 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>, ++ <&cpu2 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>, ++ <&cpu3 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>; ++ }; ++ }; ++ }; ++ ++ gpu-thermal { ++ polling-delay-passive = <500>; ++ polling-delay = <1000>; ++ thermal-sensors = <&ths 0>; ++ sustainable-power = <1100>; ++ }; ++ ++ ve-thermal { ++ polling-delay-passive = <0>; ++ polling-delay = <0>; ++ thermal-sensors = <&ths 1>; ++ }; ++ ++ ddr-thermal { ++ polling-delay-passive = <0>; ++ polling-delay = <0>; ++ thermal-sensors = <&ths 3>; ++ }; + }; + }; +-- +Armbian + diff --git a/recipes-kernel/linux/linux-mainline/sunxi-kmeta/bsp/h61x/arm64-dts-allwinner-h616-Fix-thermal-zones-missing-trips.patch b/recipes-kernel/linux/linux-mainline/sunxi-kmeta/bsp/h61x/arm64-dts-allwinner-h616-Fix-thermal-zones-missing-trips.patch new file mode 100644 index 0000000..053809e --- /dev/null +++ b/recipes-kernel/linux/linux-mainline/sunxi-kmeta/bsp/h61x/arm64-dts-allwinner-h616-Fix-thermal-zones-missing-trips.patch @@ -0,0 +1,73 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Micha=C5=82=20Dzieko=C5=84ski?= + +Date: Wed, 3 May 2023 12:17:28 +0000 +Subject: arm64: dts: allwinner: h616: Fix thermal zones (add missing trips) + +Signed-off-by: Michal Dziekonski +--- + arch/arm64/boot/dts/allwinner/sun50i-h616.dtsi | 29 ++++++++++ + 1 file changed, 29 insertions(+) + +diff --git a/arch/arm64/boot/dts/allwinner/sun50i-h616.dtsi b/arch/arm64/boot/dts/allwinner/sun50i-h616.dtsi +index 8628a9e3dfca..17b13d3193cc 100644 +--- a/arch/arm64/boot/dts/allwinner/sun50i-h616.dtsi ++++ b/arch/arm64/boot/dts/allwinner/sun50i-h616.dtsi +@@ -877,6 +877,11 @@ cpu_target: trip-point@1 { + type = "passive"; + hysteresis = <0>; + }; ++ cpu_temp_critical: trip-point@2 { ++ temperature = <110000>; ++ type = "critical"; ++ hysteresis = <0>; ++ }; + }; + + cooling-maps { +@@ -895,18 +900,42 @@ gpu-thermal { + polling-delay = <1000>; + thermal-sensors = <&ths 0>; + sustainable-power = <1100>; ++ ++ trips { ++ gpu_temp_critical: trip-point@0 { ++ temperature = <110000>; ++ type = "critical"; ++ hysteresis = <0>; ++ }; ++ }; + }; + + ve-thermal { + polling-delay-passive = <0>; + polling-delay = <0>; + thermal-sensors = <&ths 1>; ++ ++ trips { ++ ve_temp_critical: trip-point@0 { ++ temperature = <110000>; ++ type = "critical"; ++ hysteresis = <0>; ++ }; ++ }; + }; + + ddr-thermal { + polling-delay-passive = <0>; + polling-delay = <0>; + thermal-sensors = <&ths 3>; ++ ++ trips { ++ ddr_temp_critical: trip-point@0 { ++ temperature = <110000>; ++ type = "critical"; ++ hysteresis = <0>; ++ }; ++ }; + }; + }; + }; +-- +Armbian + diff --git a/recipes-kernel/linux/linux-mainline/sunxi-kmeta/bsp/h61x/arm64-dts-allwinner-h616-LED-green_power_on-red_status_heartbeat.patch b/recipes-kernel/linux/linux-mainline/sunxi-kmeta/bsp/h61x/arm64-dts-allwinner-h616-LED-green_power_on-red_status_heartbeat.patch new file mode 100644 index 0000000..926bb7d --- /dev/null +++ b/recipes-kernel/linux/linux-mainline/sunxi-kmeta/bsp/h61x/arm64-dts-allwinner-h616-LED-green_power_on-red_status_heartbeat.patch @@ -0,0 +1,39 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: AGM1968 +Date: Wed, 31 May 2023 08:12:00 +0000 +Subject: LED-green_power_on-red_status_heartbeat + arch/arm64/boot/dts/allwinner/sun50i-h616-orangepi-zero.dtsi + +Signed-off-by: AGM1968 +--- + arch/arm64/boot/dts/allwinner/sun50i-h616-orangepi-zero.dtsi | 7 ++++--- + 1 file changed, 4 insertions(+), 3 deletions(-) + +diff --git a/arch/arm64/boot/dts/allwinner/sun50i-h616-orangepi-zero.dtsi b/arch/arm64/boot/dts/allwinner/sun50i-h616-orangepi-zero.dtsi +index 0666d16ba7d0..19451a0c85ae 100644 +--- a/arch/arm64/boot/dts/allwinner/sun50i-h616-orangepi-zero.dtsi ++++ b/arch/arm64/boot/dts/allwinner/sun50i-h616-orangepi-zero.dtsi +@@ -26,16 +26,17 @@ leds { + compatible = "gpio-leds"; + + led-0 { +- function = LED_FUNCTION_POWER; ++ function = LED_FUNCTION_STATUS; + color = ; + gpios = <&pio 2 12 GPIO_ACTIVE_HIGH>; /* PC12 */ +- default-state = "on"; ++ linux,default-trigger = "heartbeat"; + }; + + led-1 { +- function = LED_FUNCTION_STATUS; ++ function = LED_FUNCTION_POWER; + color = ; + gpios = <&pio 2 13 GPIO_ACTIVE_HIGH>; /* PC13 */ ++ default-state = "on"; + }; + }; + +-- +Armbian + diff --git a/recipes-kernel/linux/linux-mainline/sunxi-kmeta/bsp/h61x/arm64-dts-allwinner-sun50i-h616-Add-GPU-node.patch b/recipes-kernel/linux/linux-mainline/sunxi-kmeta/bsp/h61x/arm64-dts-allwinner-sun50i-h616-Add-GPU-node.patch new file mode 100644 index 0000000..35b3a15 --- /dev/null +++ b/recipes-kernel/linux/linux-mainline/sunxi-kmeta/bsp/h61x/arm64-dts-allwinner-sun50i-h616-Add-GPU-node.patch @@ -0,0 +1,38 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Jernej Skrabec +Date: Fri, 15 Oct 2021 21:07:46 +0200 +Subject: arm64:dts: allwinner: sun50i-h616 Add GPU node + +Signed-off-by: Jernej Skrabec +--- + arch/arm64/boot/dts/allwinner/sun50i-h616.dtsi | 14 ++++++++++ + 1 file changed, 14 insertions(+) + +diff --git a/arch/arm64/boot/dts/allwinner/sun50i-h616.dtsi b/arch/arm64/boot/dts/allwinner/sun50i-h616.dtsi +index 44f8ae11ca16..26ef79c5d895 100644 +--- a/arch/arm64/boot/dts/allwinner/sun50i-h616.dtsi ++++ b/arch/arm64/boot/dts/allwinner/sun50i-h616.dtsi +@@ -108,6 +108,20 @@ soc { + #size-cells = <1>; + ranges = <0x0 0x0 0x0 0x40000000>; + ++ gpu: gpu@1800000 { ++ compatible = "allwinner,sun50i-h616-mali", ++ "arm,mali-bifrost"; ++ reg = <0x1800000 0x40000>; ++ interrupts = , ++ , ++ ; ++ interrupt-names = "job", "mmu", "gpu"; ++ clocks = <&ccu CLK_GPU0>, <&ccu CLK_BUS_GPU>; ++ clock-names = "core", "bus"; ++ resets = <&ccu RST_BUS_GPU>; ++ status = "disabled"; ++ }; ++ + syscon: syscon@3000000 { + compatible = "allwinner,sun50i-h616-system-control"; + reg = <0x03000000 0x1000>; +-- +Armbian + diff --git a/recipes-kernel/linux/linux-mainline/sunxi-kmeta/bsp/h61x/arm64-dts-allwinner-sun50i-h616-Add-VPU-node.patch b/recipes-kernel/linux/linux-mainline/sunxi-kmeta/bsp/h61x/arm64-dts-allwinner-sun50i-h616-Add-VPU-node.patch new file mode 100644 index 0000000..507ad19 --- /dev/null +++ b/recipes-kernel/linux/linux-mainline/sunxi-kmeta/bsp/h61x/arm64-dts-allwinner-sun50i-h616-Add-VPU-node.patch @@ -0,0 +1,55 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Jernej Skrabec +Date: Fri, 15 Oct 2021 21:14:55 +0200 +Subject: arm64:dts:allwinner: sun50i-h616 Add VPU node + +Signed-off-by: Jernej Skrabec +--- + arch/arm64/boot/dts/allwinner/sun50i-h616.dtsi | 24 ++++++++++ + 1 file changed, 24 insertions(+) + +diff --git a/arch/arm64/boot/dts/allwinner/sun50i-h616.dtsi b/arch/arm64/boot/dts/allwinner/sun50i-h616.dtsi +index 26ef79c5d895..944ff2747d27 100644 +--- a/arch/arm64/boot/dts/allwinner/sun50i-h616.dtsi ++++ b/arch/arm64/boot/dts/allwinner/sun50i-h616.dtsi +@@ -122,6 +122,17 @@ gpu: gpu@1800000 { + status = "disabled"; + }; + ++ video-codec@1c0e000 { ++ compatible = "allwinner,sun50i-h616-video-engine"; ++ reg = <0x01c0e000 0x2000>; ++ clocks = <&ccu CLK_BUS_VE>, <&ccu CLK_VE>, ++ <&ccu CLK_MBUS_VE>; ++ clock-names = "ahb", "mod", "ram"; ++ resets = <&ccu RST_BUS_VE>; ++ interrupts = ; ++ allwinner,sram = <&ve_sram 1>; ++ }; ++ + syscon: syscon@3000000 { + compatible = "allwinner,sun50i-h616-system-control"; + reg = <0x03000000 0x1000>; +@@ -136,6 +147,19 @@ sram_c: sram@28000 { + #size-cells = <1>; + ranges = <0 0x00028000 0x30000>; + }; ++ ++ sram_c1: sram@1a00000 { ++ compatible = "mmio-sram"; ++ reg = <0x01a00000 0x200000>; ++ #address-cells = <1>; ++ #size-cells = <1>; ++ ranges = <0 0x01a00000 0x200000>; ++ ++ ve_sram: sram-section@0 { ++ compatible = "allwinner,sun50i-h616-sram-c1"; ++ reg = <0x000000 0x200000>; ++ }; ++ }; + }; + + ccu: clock@3001000 { +-- +Armbian + diff --git a/recipes-kernel/linux/linux-mainline/sunxi-kmeta/bsp/h61x/arm64-dts-allwinner-sun50i-h616-PG-12c-pins.patch b/recipes-kernel/linux/linux-mainline/sunxi-kmeta/bsp/h61x/arm64-dts-allwinner-sun50i-h616-PG-12c-pins.patch new file mode 100644 index 0000000..fe1bd5c --- /dev/null +++ b/recipes-kernel/linux/linux-mainline/sunxi-kmeta/bsp/h61x/arm64-dts-allwinner-sun50i-h616-PG-12c-pins.patch @@ -0,0 +1,39 @@ +From a3e54a502cf754b148a8ad06580a3c256bc42b09 Mon Sep 17 00:00:00 2001 +From: Patrick Yavitz +Date: Thu, 22 Feb 2024 19:31:11 -0500 +Subject: [PATCH] arch: arm64: dts: allwinner: sun50i-h616: PG 12c pins + +pins = "PG17", "PG18"; +pins = "PG15", "PG16"; + +Signed-off-by: Patrick Yavitz +--- + arch/arm64/boot/dts/allwinner/sun50i-h616.dtsi | 12 ++++++++++++ + 1 file changed, 12 insertions(+) + +diff --git a/arch/arm64/boot/dts/allwinner/sun50i-h616.dtsi b/arch/arm64/boot/dts/allwinner/sun50i-h616.dtsi +index 17df57e2db0a..e5ce4214a43b 100644 +--- a/arch/arm64/boot/dts/allwinner/sun50i-h616.dtsi ++++ b/arch/arm64/boot/dts/allwinner/sun50i-h616.dtsi +@@ -334,6 +334,18 @@ i2c4_ph_pins: i2c4-ph-pins { + function = "i2c4"; + }; + ++ /omit-if-no-ref/ ++ i2c3_pg_pins: i2c3-pg-pins { ++ pins = "PG17", "PG18"; ++ function = "i2c3"; ++ }; ++ ++ /omit-if-no-ref/ ++ i2c4_pg_pins: i2c4-pg-pins { ++ pins = "PG15", "PG16"; ++ function = "i2c4"; ++ }; ++ + ir_rx_pin: ir-rx-pin { + pins = "PH10"; + function = "ir_rx"; +-- +2.39.2 + diff --git a/recipes-kernel/linux/linux-mainline/sunxi-kmeta/bsp/h61x/arm64-dts-allwinner-sun50i-h616-spi1-cs1-pin.patch b/recipes-kernel/linux/linux-mainline/sunxi-kmeta/bsp/h61x/arm64-dts-allwinner-sun50i-h616-spi1-cs1-pin.patch new file mode 100644 index 0000000..ddac57e --- /dev/null +++ b/recipes-kernel/linux/linux-mainline/sunxi-kmeta/bsp/h61x/arm64-dts-allwinner-sun50i-h616-spi1-cs1-pin.patch @@ -0,0 +1,30 @@ +From 64b0221e526f6359a39ab3beb9a693dc964b1112 Mon Sep 17 00:00:00 2001 +From: Patrick Yavitz +Date: Wed, 6 Mar 2024 06:51:01 -0500 +Subject: [PATCH] arch: arm64: dts: allwinner: sun50i-h616: spi1 cs1 pin + +Signed-off-by: Patrick Yavitz +--- + arch/arm64/boot/dts/allwinner/sun50i-h616.dtsi | 6 ++++++ + 1 file changed, 6 insertions(+) + +diff --git a/arch/arm64/boot/dts/allwinner/sun50i-h616.dtsi b/arch/arm64/boot/dts/allwinner/sun50i-h616.dtsi +index 33f8c758b9e6..1354dca01e78 100644 +--- a/arch/arm64/boot/dts/allwinner/sun50i-h616.dtsi ++++ b/arch/arm64/boot/dts/allwinner/sun50i-h616.dtsi +@@ -397,6 +397,12 @@ spi1_cs0_pin: spi1-cs0-pin { + function = "spi1"; + }; + ++ /omit-if-no-ref/ ++ spi1_cs1_pin: spi1-cs1-pin { ++ pins = "PH9"; ++ function = "spi1"; ++ }; ++ + uart0_ph_pins: uart0-ph-pins { + pins = "PH0", "PH1"; + function = "uart0"; +-- +2.39.2 + diff --git a/recipes-kernel/linux/linux-mainline-6.1.9/orange-pi-zero2/0010-dts-add-wifi-power-regulator.patch b/recipes-kernel/linux/linux-mainline/sunxi-kmeta/bsp/h61x/arm64-dts-h616-add-wifi-support-for-orange-pi-zero-2.patch similarity index 58% rename from recipes-kernel/linux/linux-mainline-6.1.9/orange-pi-zero2/0010-dts-add-wifi-power-regulator.patch rename to recipes-kernel/linux/linux-mainline/sunxi-kmeta/bsp/h61x/arm64-dts-h616-add-wifi-support-for-orange-pi-zero-2.patch index f87758b..9b3c700 100644 --- a/recipes-kernel/linux/linux-mainline-6.1.9/orange-pi-zero2/0010-dts-add-wifi-power-regulator.patch +++ b/recipes-kernel/linux/linux-mainline/sunxi-kmeta/bsp/h61x/arm64-dts-h616-add-wifi-support-for-orange-pi-zero-2.patch @@ -1,19 +1,20 @@ -From 899da8366afd97b1ca59b632036dc313777026da Mon Sep 17 00:00:00 2001 -From: pbiel -Date: Fri, 24 Feb 2023 22:14:58 +0100 -Subject: [PATCH] Add wifi power regulator +From 8e36084386d07a07f755bda978875b1354162019 Mon Sep 17 00:00:00 2001 +From: Gunjan Gupta +Date: Wed, 13 Dec 2023 19:15:45 +0000 +Subject: [PATCH] arm64: dts: h616: add wifi support for orange pi zero 2 and + zero3 --- - .../allwinner/sun50i-h616-orangepi-zero2.dts | 47 +++++++++++++++++++ - 1 file changed, 47 insertions(+) + .../allwinner/sun50i-h616-orangepi-zero.dtsi | 38 +++++++++++++++++++ + 1 file changed, 38 insertions(+) -diff --git a/arch/arm64/boot/dts/allwinner/sun50i-h616-orangepi-zero2.dts b/arch/arm64/boot/dts/allwinner/sun50i-h616-orangepi-zero2.dts -index 02893f3ac..88234a139 100644 ---- a/arch/arm64/boot/dts/allwinner/sun50i-h616-orangepi-zero2.dts -+++ b/arch/arm64/boot/dts/allwinner/sun50i-h616-orangepi-zero2.dts -@@ -49,6 +49,53 @@ reg_vcc5v: vcc5v { - regulator-max-microvolt = <5000000>; - regulator-always-on; +diff --git a/arch/arm64/boot/dts/allwinner/sun50i-h616-orangepi-zero.dtsi b/arch/arm64/boot/dts/allwinner/sun50i-h616-orangepi-zero.dtsi +index 19451a0c85ae..400966667d1e 100644 +--- a/arch/arm64/boot/dts/allwinner/sun50i-h616-orangepi-zero.dtsi ++++ b/arch/arm64/boot/dts/allwinner/sun50i-h616-orangepi-zero.dtsi +@@ -59,6 +59,34 @@ reg_usb1_vbus: regulator-usb1-vbus { + gpio = <&pio 2 16 GPIO_ACTIVE_HIGH>; /* PC16 */ + status = "okay"; }; + + reg_vcc33_wifi: vcc33-wifi { @@ -43,8 +44,13 @@ index 02893f3ac..88234a139 100644 + reset-gpios = <&pio 6 18 GPIO_ACTIVE_LOW>; /* PG18 */ + post-power-on-delay-ms = <200>; + }; -+}; -+ + }; + + &ehci1 { +@@ -90,6 +118,16 @@ &mmc0 { + status = "okay"; + }; + +&mmc1 { + vmmc-supply = <®_vcc33_wifi>; + vqmmc-supply = <®_vcc_wifi_io>; @@ -53,18 +59,11 @@ index 02893f3ac..88234a139 100644 + non-removable; + mmc-ddr-1_8v; + status = "okay"; -+ uwe-bsp { -+ compatible = "unisoc,uwe_bsp"; -+ keep-power-on; -+ data-irq; -+ //adma-tx; -+ adma-rx; -+ //blksz-512; -+ status = "okay"; -+ }; ++}; ++ + &ohci1 { + status = "okay"; }; - - &emac0 { -- 2.34.1 diff --git a/recipes-kernel/linux/linux-mainline/sunxi-kmeta/bsp/h61x/arm64-dts-sun50i-h616-Add-dma-node.patch b/recipes-kernel/linux/linux-mainline/sunxi-kmeta/bsp/h61x/arm64-dts-sun50i-h616-Add-dma-node.patch new file mode 100644 index 0000000..6eec14d --- /dev/null +++ b/recipes-kernel/linux/linux-mainline/sunxi-kmeta/bsp/h61x/arm64-dts-sun50i-h616-Add-dma-node.patch @@ -0,0 +1,53 @@ +From 8cdd9309fce75995cf3068be5c7ffb65cec51cff Mon Sep 17 00:00:00 2001 +From: Gunjan Gupta +Date: Wed, 3 Jan 2024 09:53:55 +0000 +Subject: [PATCH] arm64: dts: sun50i-h616: Add dma node + +--- + arch/arm64/boot/dts/allwinner/sun50i-h616.dtsi | 16 ++++++++++++++++ + 1 file changed, 16 insertions(+) + +diff --git a/arch/arm64/boot/dts/allwinner/sun50i-h616.dtsi b/arch/arm64/boot/dts/allwinner/sun50i-h616.dtsi +index 2424a2827455..e71b79ebced8 100644 +--- a/arch/arm64/boot/dts/allwinner/sun50i-h616.dtsi ++++ b/arch/arm64/boot/dts/allwinner/sun50i-h616.dtsi +@@ -170,6 +170,18 @@ mixer0_out_tcon_top_mixer0: endpoint { + }; + }; + ++ dma: dma-controller@3002000 { ++ compatible = "allwinner,sun50i-h6-dma"; ++ reg = <0x03002000 0x1000>; ++ interrupts = ; ++ clocks = <&ccu CLK_BUS_DMA>, <&ccu CLK_MBUS_DMA>; ++ clock-names = "bus", "mbus"; ++ dma-channels = <16>; ++ dma-requests = <49>; ++ resets = <&ccu RST_BUS_DMA>; ++ #dma-cells = <1>; ++ }; ++ + gpu: gpu@1800000 { + compatible = "allwinner,sun50i-h616-mali", + "arm,mali-bifrost"; +@@ -606,6 +618,8 @@ spi0: spi@5010000 { + interrupts = ; + clocks = <&ccu CLK_BUS_SPI0>, <&ccu CLK_SPI0>; + clock-names = "ahb", "mod"; ++ dmas = <&dma 22>, <&dma 22>; ++ dma-names = "rx", "tx"; + resets = <&ccu RST_BUS_SPI0>; + pinctrl-names = "default"; + pinctrl-0 = <&spi0_pins>; +@@ -621,6 +635,8 @@ spi1: spi@5011000 { + interrupts = ; + clocks = <&ccu CLK_BUS_SPI1>, <&ccu CLK_SPI1>; + clock-names = "ahb", "mod"; ++ dmas = <&dma 23>, <&dma 23>; ++ dma-names = "rx", "tx"; + resets = <&ccu RST_BUS_SPI1>; + pinctrl-names = "default"; + pinctrl-0 = <&spi1_pins>; +-- +2.34.1 + diff --git a/recipes-kernel/linux/linux-mainline/sunxi-kmeta/bsp/h61x/arm64-dts-sun50i-h616-orangepi-zero2-Enable-GPU-mali.patch b/recipes-kernel/linux/linux-mainline/sunxi-kmeta/bsp/h61x/arm64-dts-sun50i-h616-orangepi-zero2-Enable-GPU-mali.patch new file mode 100644 index 0000000..edd0271 --- /dev/null +++ b/recipes-kernel/linux/linux-mainline/sunxi-kmeta/bsp/h61x/arm64-dts-sun50i-h616-orangepi-zero2-Enable-GPU-mali.patch @@ -0,0 +1,29 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Jernej Skrabec +Date: Fri, 15 Oct 2021 21:09:42 +0200 +Subject: arm64:dts: sun50i-h616-orangepi-zero2 Enable GPU mali + +Signed-off-by: Jernej Skrabec +--- + arch/arm64/boot/dts/allwinner/sun50i-h616-orangepi-zero2.dts | 5 +++++ + 1 file changed, 5 insertions(+) + +diff --git a/arch/arm64/boot/dts/allwinner/sun50i-h616-orangepi-zero2.dts b/arch/arm64/boot/dts/allwinner/sun50i-h616-orangepi-zero2.dts +index d83852e72f06..8d8009c7f9a3 100644 +--- a/arch/arm64/boot/dts/allwinner/sun50i-h616-orangepi-zero2.dts ++++ b/arch/arm64/boot/dts/allwinner/sun50i-h616-orangepi-zero2.dts +@@ -16,6 +16,11 @@ &emac0 { + phy-supply = <®_dcdce>; + }; + ++&gpu { ++ mali-supply = <®_dcdcc>; ++ status = "okay"; ++}; ++ + &mmc0 { + vmmc-supply = <®_dcdce>; + }; +-- +Armbian + diff --git a/recipes-kernel/linux/linux-mainline/sunxi-kmeta/bsp/h61x/arm64-dts-sun50i-h616-orangepi-zero2-reg_usb1_vbus-status-ok.patch b/recipes-kernel/linux/linux-mainline/sunxi-kmeta/bsp/h61x/arm64-dts-sun50i-h616-orangepi-zero2-reg_usb1_vbus-status-ok.patch new file mode 100644 index 0000000..8ad6814 --- /dev/null +++ b/recipes-kernel/linux/linux-mainline/sunxi-kmeta/bsp/h61x/arm64-dts-sun50i-h616-orangepi-zero2-reg_usb1_vbus-status-ok.patch @@ -0,0 +1,24 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: The-going <48602507+The-going@users.noreply.github.com> +Date: Wed, 14 Dec 2022 20:15:41 +0300 +Subject: arm64: dts: sun50i-h616-orangepi-zero2: reg_usb1_vbus status ok + +--- + arch/arm64/boot/dts/allwinner/sun50i-h616-orangepi-zero.dtsi | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/arch/arm64/boot/dts/allwinner/sun50i-h616-orangepi-zero.dtsi b/arch/arm64/boot/dts/allwinner/sun50i-h616-orangepi-zero.dtsi +index 15290e6892fc..0666d16ba7d0 100644 +--- a/arch/arm64/boot/dts/allwinner/sun50i-h616-orangepi-zero.dtsi ++++ b/arch/arm64/boot/dts/allwinner/sun50i-h616-orangepi-zero.dtsi +@@ -56,6 +56,7 @@ reg_usb1_vbus: regulator-usb1-vbus { + vin-supply = <®_vcc5v>; + enable-active-high; + gpio = <&pio 2 16 GPIO_ACTIVE_HIGH>; /* PC16 */ ++ status = "okay"; + }; + }; + +-- +Armbian + diff --git a/recipes-kernel/linux/linux-mainline/sunxi-kmeta/bsp/h61x/drv-nvmem-sunxi_sid-Support-SID-on-H616.patch b/recipes-kernel/linux/linux-mainline/sunxi-kmeta/bsp/h61x/drv-nvmem-sunxi_sid-Support-SID-on-H616.patch new file mode 100644 index 0000000..abfb475 --- /dev/null +++ b/recipes-kernel/linux/linux-mainline/sunxi-kmeta/bsp/h61x/drv-nvmem-sunxi_sid-Support-SID-on-H616.patch @@ -0,0 +1,41 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Kali Prasad +Date: Sun, 19 Sep 2021 08:02:27 +0000 +Subject: drv:nvmem:sunxi_sid: Support SID on H616 + +Add support for H616's SID controller. It supports 4K-bit +EFUSE. + +Signed-off-by: Kali Prasad +--- + drivers/nvmem/sunxi_sid.c | 7 +++++++ + 1 file changed, 7 insertions(+) + +diff --git a/drivers/nvmem/sunxi_sid.c b/drivers/nvmem/sunxi_sid.c +index 5d364d85347f..c526fe4abe22 100644 +--- a/drivers/nvmem/sunxi_sid.c ++++ b/drivers/nvmem/sunxi_sid.c +@@ -204,6 +204,12 @@ static const struct sunxi_sid_cfg sun50i_h6_cfg = { + .size = 0x200, + }; + ++static const struct sunxi_sid_cfg sun50i_h616_cfg = { ++ .value_offset = 0x200, ++ .size = 0x100, ++ .need_register_readout = true, ++}; ++ + static const struct of_device_id sunxi_sid_of_match[] = { + { .compatible = "allwinner,sun4i-a10-sid", .data = &sun4i_a10_cfg }, + { .compatible = "allwinner,sun7i-a20-sid", .data = &sun7i_a20_cfg }, +@@ -213,6 +219,7 @@ static const struct of_device_id sunxi_sid_of_match[] = { + { .compatible = "allwinner,sun50i-a64-sid", .data = &sun50i_a64_cfg }, + { .compatible = "allwinner,sun50i-h5-sid", .data = &sun50i_a64_cfg }, + { .compatible = "allwinner,sun50i-h6-sid", .data = &sun50i_h6_cfg }, ++ { .compatible = "allwinner,sun50i-h616-sid", .data = &sun50i_h616_cfg }, + {/* sentinel */}, + }; + MODULE_DEVICE_TABLE(of, sunxi_sid_of_match); +-- +Armbian + diff --git a/recipes-kernel/linux/linux-mainline/sunxi-kmeta/bsp/h61x/drv-rtc-sun6i-Add-Allwinner-H616-support.patch b/recipes-kernel/linux/linux-mainline/sunxi-kmeta/bsp/h61x/drv-rtc-sun6i-Add-Allwinner-H616-support.patch new file mode 100644 index 0000000..400b4b0 --- /dev/null +++ b/recipes-kernel/linux/linux-mainline/sunxi-kmeta/bsp/h61x/drv-rtc-sun6i-Add-Allwinner-H616-support.patch @@ -0,0 +1,45 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Andre Przywara +Date: Wed, 21 Apr 2021 12:46:43 +0100 +Subject: drv:rtc: sun6i: Add Allwinner H616 support + +The H616 RTC changes its day storage to the newly introduced linear day +scheme, so pair the new compatible string with this feature flag. +The clock part is missing an external 32768 Hz oscillator input pin, +for future expansion we must thus ignore any provided clock for now. + +Signed-off-by: Andre Przywara +--- + drivers/rtc/rtc-sun6i.c | 16 ++++++++++ + 1 file changed, 16 insertions(+) + +diff --git a/drivers/rtc/rtc-sun6i.c b/drivers/rtc/rtc-sun6i.c +index 190ea007d82e..e0b85a0d5645 100644 +--- a/drivers/rtc/rtc-sun6i.c ++++ b/drivers/rtc/rtc-sun6i.c +@@ -389,6 +389,22 @@ static void __init sun50i_h6_rtc_clk_init(struct device_node *node) + CLK_OF_DECLARE_DRIVER(sun50i_h6_rtc_clk, "allwinner,sun50i-h6-rtc", + sun50i_h6_rtc_clk_init); + ++static const struct sun6i_rtc_clk_data sun50i_h616_rtc_data = { ++ .rc_osc_rate = 16000000, ++ .fixed_prescaler = 32, ++ .has_prescaler = 1, ++ .has_out_clk = 1, ++ .no_ext_losc = 1, ++}; ++ ++static void __init sun50i_h616_rtc_clk_init(struct device_node *node) ++{ ++ sun6i_rtc_clk_init(node, &sun50i_h616_rtc_data); ++} ++ ++CLK_OF_DECLARE_DRIVER(sun50i_h616_rtc_clk, "allwinner,sun50i-h616-rtc", ++ sun50i_h616_rtc_clk_init); ++ + /* + * The R40 user manual is self-conflicting on whether the prescaler is + * fixed or configurable. The clock diagram shows it as fixed, but there +-- +Armbian + diff --git a/recipes-kernel/linux/linux-mainline/sunxi-kmeta/bsp/h61x/drv-rtc-sun6i-support-RTCs-without-external-LOSCs.patch b/recipes-kernel/linux/linux-mainline/sunxi-kmeta/bsp/h61x/drv-rtc-sun6i-support-RTCs-without-external-LOSCs.patch new file mode 100644 index 0000000..7902dc4 --- /dev/null +++ b/recipes-kernel/linux/linux-mainline/sunxi-kmeta/bsp/h61x/drv-rtc-sun6i-support-RTCs-without-external-LOSCs.patch @@ -0,0 +1,68 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Andre Przywara +Date: Mon, 14 Jun 2021 23:02:45 +0100 +Subject: drv:rtc:sun6i: support RTCs without external LOSCs + +Some newer Allwinner RTCs (for instance the one in the H616 SoC) lack +a pin for an external 32768 Hz oscillator. As a consequence, this LOSC +can't be selected as the RTC clock source, and we must rely on the +internal RC oscillator. +To allow additions of clocks to the RTC node, add a feature bit to ignore +any provided clocks for now (the current code would think this is the +external LOSC). Later DTs and code can then for instance add the PLL +based clock input, and older kernel won't get confused. + +Signed-off-by: Andre Przywara +Acked-by: Jernej Skrabec +--- + drivers/rtc/rtc-sun6i.c | 16 +++++++--- + 1 file changed, 11 insertions(+), 5 deletions(-) + +diff --git a/drivers/rtc/rtc-sun6i.c b/drivers/rtc/rtc-sun6i.c +index 02129ea346c1..190ea007d82e 100644 +--- a/drivers/rtc/rtc-sun6i.c ++++ b/drivers/rtc/rtc-sun6i.c +@@ -137,6 +137,7 @@ struct sun6i_rtc_clk_data { + unsigned int has_out_clk : 1; + unsigned int has_losc_en : 1; + unsigned int has_auto_swt : 1; ++ unsigned int no_ext_losc : 1; + }; + + #define RTC_LINEAR_DAY BIT(0) +@@ -260,7 +261,7 @@ static void __init sun6i_rtc_clk_init(struct device_node *node, + } + + /* Switch to the external, more precise, oscillator, if present */ +- if (of_property_present(node, "clocks")) { ++ if (!rtc->data->no_ext_losc && of_get_property(node, "clocks", NULL)) { + reg |= SUN6I_LOSC_CTRL_EXT_OSC; + if (rtc->data->has_losc_en) + reg |= SUN6I_LOSC_CTRL_EXT_LOSC_EN; +@@ -284,14 +285,19 @@ static void __init sun6i_rtc_clk_init(struct device_node *node, + } + + parents[0] = clk_hw_get_name(rtc->int_osc); +- /* If there is no external oscillator, this will be NULL and ... */ +- parents[1] = of_clk_get_parent_name(node, 0); ++ if (rtc->data->no_ext_losc) { ++ parents[1] = NULL; ++ init.num_parents = 1; ++ } else { ++ /* If there is no external oscillator, this will be NULL and */ ++ parents[1] = of_clk_get_parent_name(node, 0); ++ /* ... number of clock parents will be 1. */ ++ init.num_parents = of_clk_get_parent_count(node) + 1; ++ } + + rtc->hw.init = &init; + + init.parent_names = parents; +- /* ... number of clock parents will be 1. */ +- init.num_parents = of_clk_get_parent_count(node) + 1; + of_property_read_string_index(node, "clock-output-names", 0, + &init.name); + +-- +Armbian + diff --git a/recipes-kernel/linux/linux-mainline/sunxi-kmeta/bsp/h61x/drv-soc-sunxi-sram-Add-SRAM-C1-H616-handling.patch b/recipes-kernel/linux/linux-mainline/sunxi-kmeta/bsp/h61x/drv-soc-sunxi-sram-Add-SRAM-C1-H616-handling.patch new file mode 100644 index 0000000..6f98624 --- /dev/null +++ b/recipes-kernel/linux/linux-mainline/sunxi-kmeta/bsp/h61x/drv-soc-sunxi-sram-Add-SRAM-C1-H616-handling.patch @@ -0,0 +1,41 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Jernej Skrabec +Date: Sat, 16 Oct 2021 21:26:41 +0200 +Subject: drv:soc: sunxi: sram: Add SRAM C1 H616 handling + +Signed-off-by: Jernej Skrabec +--- + drivers/soc/sunxi/sunxi_sram.c | 10 ++++++++++ + 1 file changed, 10 insertions(+) + +diff --git a/drivers/soc/sunxi/sunxi_sram.c b/drivers/soc/sunxi/sunxi_sram.c +index 4458b2e0562b..9e65d8dfe355 100644 +--- a/drivers/soc/sunxi/sunxi_sram.c ++++ b/drivers/soc/sunxi/sunxi_sram.c +@@ -70,6 +70,12 @@ static struct sunxi_sram_desc sun4i_a10_sram_c1 = { + SUNXI_SRAM_MAP(0x7fffffff, 1, "ve")), + }; + ++static struct sunxi_sram_desc sun50i_h616_sram_c1 = { ++ .data = SUNXI_SRAM_DATA("C1", 0x0, 0x0, 31, ++ SUNXI_SRAM_MAP(0x7fffffff, 0, "cpu"), ++ SUNXI_SRAM_MAP(0, 1, "ve")), ++}; ++ + static struct sunxi_sram_desc sun4i_a10_sram_d = { + .data = SUNXI_SRAM_DATA("D", 0x4, 0x0, 1, + SUNXI_SRAM_MAP(0, 0, "cpu"), +@@ -99,6 +105,10 @@ static const struct of_device_id sunxi_sram_dt_ids[] = { + .compatible = "allwinner,sun50i-a64-sram-c", + .data = &sun50i_a64_sram_c.data, + }, ++ { ++ .compatible = "allwinner,sun50i-h616-sram-c1", ++ .data = &sun50i_h616_sram_c1.data, ++ }, + {} + }; + +-- +Armbian + diff --git a/recipes-kernel/linux/linux-mainline/sunxi-kmeta/bsp/h61x/drv-staging-media-sunxi-cedrus-add-H616-variant.patch b/recipes-kernel/linux/linux-mainline/sunxi-kmeta/bsp/h61x/drv-staging-media-sunxi-cedrus-add-H616-variant.patch new file mode 100644 index 0000000..089747e --- /dev/null +++ b/recipes-kernel/linux/linux-mainline/sunxi-kmeta/bsp/h61x/drv-staging-media-sunxi-cedrus-add-H616-variant.patch @@ -0,0 +1,44 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Jernej Skrabec +Date: Fri, 15 Oct 2021 21:49:45 +0200 +Subject: drv:staging:media:sunxi:cedrus: add H616 variant + +Signed-off-by: Jernej Skrabec +--- + drivers/staging/media/sunxi/cedrus/cedrus.c | 13 ++++++++++ + 1 file changed, 13 insertions(+) + +diff --git a/drivers/staging/media/sunxi/cedrus/cedrus.c b/drivers/staging/media/sunxi/cedrus/cedrus.c +index a0f9f4a5b03a..160bd376eb58 100644 +--- a/drivers/staging/media/sunxi/cedrus/cedrus.c ++++ b/drivers/staging/media/sunxi/cedrus/cedrus.c +@@ -651,6 +651,15 @@ static const struct cedrus_variant sun50i_h6_cedrus_variant = { + .mod_rate = 600000000, + }; + ++static const struct cedrus_variant sun50i_h616_cedrus_variant = { ++ .capabilities = CEDRUS_CAPABILITY_UNTILED | ++ CEDRUS_CAPABILITY_MPEG2_DEC | ++ CEDRUS_CAPABILITY_H264_DEC | ++ CEDRUS_CAPABILITY_H265_DEC | ++ CEDRUS_CAPABILITY_VP8_DEC, ++ .mod_rate = 600000000, ++}; ++ + static const struct of_device_id cedrus_dt_match[] = { + { + .compatible = "allwinner,sun4i-a10-video-engine", +@@ -696,6 +705,10 @@ static const struct of_device_id cedrus_dt_match[] = { + .compatible = "allwinner,sun50i-h6-video-engine", + .data = &sun50i_h6_cedrus_variant, + }, ++ { ++ .compatible = "allwinner,sun50i-h616-video-engine", ++ .data = &sun50i_h6_cedrus_variant, ++ }, + { /* sentinel */ } + }; + MODULE_DEVICE_TABLE(of, cedrus_dt_match); +-- +Armbian + diff --git a/recipes-kernel/linux/linux-mainline/sunxi-kmeta/bsp/h61x/h61x-common-6_6.scc b/recipes-kernel/linux/linux-mainline/sunxi-kmeta/bsp/h61x/h61x-common-6_6.scc new file mode 100644 index 0000000..8d2c95a --- /dev/null +++ b/recipes-kernel/linux/linux-mainline/sunxi-kmeta/bsp/h61x/h61x-common-6_6.scc @@ -0,0 +1,24 @@ +# Common patches for h616 and h618 +# Ported from armbian +# https://github.com/armbian/build/tree/main/patch/kernel/archive/sunxi-6.6/patches.armbian +# Armabian includes a hack hdmi output not included here: drivers-hack-for-h616-hdmi-video-output.patch + +patch add-nodes-for-sunxi-info-addr-dump-reg.patch +patch arm64-dts-allwinner-h616-Add-device-node-for-SID.patch +patch arm64-dts-allwinner-h616-Add-efuse_xlate-cpu-frequency-scaling-v1_6_2.patch +patch arm64-dts-allwinner-h616-Add-thermal-sensor-and-thermal-zones.patch +patch arm64-dts-allwinner-h616-Fix-thermal-zones-missing-trips.patch +patch arm64-dts-allwinner-h616-LED-green_power_on-red_status_heartbeat.patch +patch arm64-dts-allwinner-sun50i-h616-Add-GPU-node.patch +patch arm64-dts-allwinner-sun50i-h616-Add-VPU-node.patch +patch arm64-dts-allwinner-sun50i-h616-PG-12c-pins.patch +patch arm64-dts-allwinner-sun50i-h616-spi1-cs1-pin.patch + +patch arm64-dts-sun50i-h616-Add-dma-node.patch +patch drv-nvmem-sunxi_sid-Support-SID-on-H616.patch +patch drv-rtc-sun6i-Add-Allwinner-H616-support.patch +patch drv-rtc-sun6i-support-RTCs-without-external-LOSCs.patch +patch drv-soc-sunxi-sram-Add-SRAM-C1-H616-handling.patch +patch drv-staging-media-sunxi-cedrus-add-H616-variant.patch +patch nvmem-sunxi_sid-add-sunxi_get_soc_chipid-sunxi_get_serial.patch + diff --git a/recipes-kernel/linux/linux-mainline-6.1.9/orange-pi-zero2/0007-drv-add-sunxi_get_soc_chipid-and-sunxi_get_serial.patch b/recipes-kernel/linux/linux-mainline/sunxi-kmeta/bsp/h61x/nvmem-sunxi_sid-add-sunxi_get_soc_chipid-sunxi_get_serial.patch similarity index 75% rename from recipes-kernel/linux/linux-mainline-6.1.9/orange-pi-zero2/0007-drv-add-sunxi_get_soc_chipid-and-sunxi_get_serial.patch rename to recipes-kernel/linux/linux-mainline/sunxi-kmeta/bsp/h61x/nvmem-sunxi_sid-add-sunxi_get_soc_chipid-sunxi_get_serial.patch index 066084b..1eceb98 100644 --- a/recipes-kernel/linux/linux-mainline-6.1.9/orange-pi-zero2/0007-drv-add-sunxi_get_soc_chipid-and-sunxi_get_serial.patch +++ b/recipes-kernel/linux/linux-mainline/sunxi-kmeta/bsp/h61x/nvmem-sunxi_sid-add-sunxi_get_soc_chipid-sunxi_get_serial.patch @@ -1,18 +1,17 @@ -From 452a691a83df1aab77cec33203cb04a817817a05 Mon Sep 17 00:00:00 2001 +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: The-going <48602507+The-going@users.noreply.github.com> -Date: Thu, 5 May 2022 22:55:13 +0300 -Subject: [PATCH] drv: nvmem: sunxi_sid: Add sunxi_get_soc_chipid, - sunxi_get_serial +Date: Sat, 16 Apr 2022 11:19:05 +0300 +Subject: nvmem: sunxi_sid: add sunxi_get_soc_chipid, sunxi_get_serial --- - drivers/nvmem/sunxi_sid.c | 28 ++++++++++++++++++++++++++++ + drivers/nvmem/sunxi_sid.c | 28 ++++++++++ 1 file changed, 28 insertions(+) diff --git a/drivers/nvmem/sunxi_sid.c b/drivers/nvmem/sunxi_sid.c -index 37a6abb0e..c81fac63d 100644 +index c526fe4abe22..e522bd1e5edd 100644 --- a/drivers/nvmem/sunxi_sid.c +++ b/drivers/nvmem/sunxi_sid.c -@@ -37,6 +37,25 @@ struct sunxi_sid { +@@ -36,6 +36,25 @@ struct sunxi_sid { u32 value_offset; }; @@ -38,7 +37,7 @@ index 37a6abb0e..c81fac63d 100644 static int sunxi_sid_read(void *context, unsigned int offset, void *val, size_t bytes) { -@@ -167,6 +186,15 @@ static int sunxi_sid_probe(struct platform_device *pdev) +@@ -177,6 +196,15 @@ static int sunxi_sid_probe(struct platform_device *pdev) platform_set_drvdata(pdev, nvmem); @@ -55,6 +54,5 @@ index 37a6abb0e..c81fac63d 100644 } -- -2.35.3 - +Armbian diff --git a/recipes-kernel/linux/linux-mainline/sunxi-kmeta/bsp/h61x/orangepi-zero2-6_6.scc b/recipes-kernel/linux/linux-mainline/sunxi-kmeta/bsp/h61x/orangepi-zero2-6_6.scc new file mode 100644 index 0000000..3ec9608 --- /dev/null +++ b/recipes-kernel/linux/linux-mainline/sunxi-kmeta/bsp/h61x/orangepi-zero2-6_6.scc @@ -0,0 +1,7 @@ +# Kmeta for OPI Zero 2 +include h61x-common-6_6.scc + +patch arm64-dts-h616-add-wifi-support-for-orange-pi-zero-2.patch +patch arm64-dts-sun50i-h616-orangepi-zero2-Enable-GPU-mali.patch +patch arm64-dts-sun50i-h616-orangepi-zero2-reg_usb1_vbus-status-ok.patch + diff --git a/recipes-kernel/linux/linux-mainline/sunxi-kmeta/bsp/orange-pi-3lts/ASoC-hdmi-codec-fix-channel-allocation.patch b/recipes-kernel/linux/linux-mainline/sunxi-kmeta/bsp/orange-pi-3lts/ASoC-hdmi-codec-fix-channel-allocation.patch new file mode 100644 index 0000000..83cb49c --- /dev/null +++ b/recipes-kernel/linux/linux-mainline/sunxi-kmeta/bsp/orange-pi-3lts/ASoC-hdmi-codec-fix-channel-allocation.patch @@ -0,0 +1,142 @@ +From 91b69779e0875e58d8973b2938a1cc4b7a1c455b Mon Sep 17 00:00:00 2001 +From: Jonas Karlman +Date: Sun, 25 Mar 2018 22:17:06 +0200 +Subject: [PATCH 22/44] ASoC: hdmi-codec: fix channel allocation + +--- + sound/soc/codecs/hdmi-codec.c | 113 ++++++++++++++++------------------ + 1 file changed, 52 insertions(+), 61 deletions(-) + +--- a/sound/soc/codecs/hdmi-codec.c ++++ b/sound/soc/codecs/hdmi-codec.c +@@ -194,78 +194,69 @@ static const struct snd_pcm_chmap_elem h + */ + static const struct hdmi_codec_cea_spk_alloc hdmi_codec_channel_alloc[] = { + { .ca_id = 0x00, .n_ch = 2, +- .mask = FL | FR}, +- /* 2.1 */ +- { .ca_id = 0x01, .n_ch = 4, +- .mask = FL | FR | LFE}, +- /* Dolby Surround */ ++ .mask = FL | FR }, ++ { .ca_id = 0x03, .n_ch = 4, ++ .mask = FL | FR | LFE | FC }, + { .ca_id = 0x02, .n_ch = 4, + .mask = FL | FR | FC }, +- /* surround51 */ ++ { .ca_id = 0x01, .n_ch = 4, ++ .mask = FL | FR | LFE }, + { .ca_id = 0x0b, .n_ch = 6, +- .mask = FL | FR | LFE | FC | RL | RR}, +- /* surround40 */ +- { .ca_id = 0x08, .n_ch = 6, +- .mask = FL | FR | RL | RR }, +- /* surround41 */ +- { .ca_id = 0x09, .n_ch = 6, +- .mask = FL | FR | LFE | RL | RR }, +- /* surround50 */ ++ .mask = FL | FR | LFE | FC | RL | RR }, + { .ca_id = 0x0a, .n_ch = 6, + .mask = FL | FR | FC | RL | RR }, +- /* 6.1 */ +- { .ca_id = 0x0f, .n_ch = 8, +- .mask = FL | FR | LFE | FC | RL | RR | RC }, +- /* surround71 */ ++ { .ca_id = 0x09, .n_ch = 6, ++ .mask = FL | FR | LFE | RL | RR }, ++ { .ca_id = 0x08, .n_ch = 6, ++ .mask = FL | FR | RL | RR }, ++ { .ca_id = 0x07, .n_ch = 6, ++ .mask = FL | FR | LFE | FC | RC }, ++ { .ca_id = 0x06, .n_ch = 6, ++ .mask = FL | FR | FC | RC }, ++ { .ca_id = 0x05, .n_ch = 6, ++ .mask = FL | FR | LFE | RC }, ++ { .ca_id = 0x04, .n_ch = 6, ++ .mask = FL | FR | RC }, + { .ca_id = 0x13, .n_ch = 8, + .mask = FL | FR | LFE | FC | RL | RR | RLC | RRC }, +- /* others */ +- { .ca_id = 0x03, .n_ch = 8, +- .mask = FL | FR | LFE | FC }, +- { .ca_id = 0x04, .n_ch = 8, +- .mask = FL | FR | RC}, +- { .ca_id = 0x05, .n_ch = 8, +- .mask = FL | FR | LFE | RC }, +- { .ca_id = 0x06, .n_ch = 8, +- .mask = FL | FR | FC | RC }, +- { .ca_id = 0x07, .n_ch = 8, +- .mask = FL | FR | LFE | FC | RC }, +- { .ca_id = 0x0c, .n_ch = 8, +- .mask = FL | FR | RC | RL | RR }, +- { .ca_id = 0x0d, .n_ch = 8, +- .mask = FL | FR | LFE | RL | RR | RC }, +- { .ca_id = 0x0e, .n_ch = 8, +- .mask = FL | FR | FC | RL | RR | RC }, +- { .ca_id = 0x10, .n_ch = 8, +- .mask = FL | FR | RL | RR | RLC | RRC }, +- { .ca_id = 0x11, .n_ch = 8, +- .mask = FL | FR | LFE | RL | RR | RLC | RRC }, ++ { .ca_id = 0x1f, .n_ch = 8, ++ .mask = FL | FR | LFE | FC | RL | RR | FLC | FRC }, + { .ca_id = 0x12, .n_ch = 8, + .mask = FL | FR | FC | RL | RR | RLC | RRC }, +- { .ca_id = 0x14, .n_ch = 8, +- .mask = FL | FR | FLC | FRC }, +- { .ca_id = 0x15, .n_ch = 8, +- .mask = FL | FR | LFE | FLC | FRC }, +- { .ca_id = 0x16, .n_ch = 8, +- .mask = FL | FR | FC | FLC | FRC }, +- { .ca_id = 0x17, .n_ch = 8, +- .mask = FL | FR | LFE | FC | FLC | FRC }, +- { .ca_id = 0x18, .n_ch = 8, +- .mask = FL | FR | RC | FLC | FRC }, +- { .ca_id = 0x19, .n_ch = 8, +- .mask = FL | FR | LFE | RC | FLC | FRC }, +- { .ca_id = 0x1a, .n_ch = 8, +- .mask = FL | FR | RC | FC | FLC | FRC }, +- { .ca_id = 0x1b, .n_ch = 8, +- .mask = FL | FR | LFE | RC | FC | FLC | FRC }, +- { .ca_id = 0x1c, .n_ch = 8, +- .mask = FL | FR | RL | RR | FLC | FRC }, +- { .ca_id = 0x1d, .n_ch = 8, +- .mask = FL | FR | LFE | RL | RR | FLC | FRC }, + { .ca_id = 0x1e, .n_ch = 8, + .mask = FL | FR | FC | RL | RR | FLC | FRC }, +- { .ca_id = 0x1f, .n_ch = 8, +- .mask = FL | FR | LFE | FC | RL | RR | FLC | FRC }, ++ { .ca_id = 0x11, .n_ch = 8, ++ .mask = FL | FR | LFE | RL | RR | RLC | RRC }, ++ { .ca_id = 0x1d, .n_ch = 8, ++ .mask = FL | FR | LFE | RL | RR | FLC | FRC }, ++ { .ca_id = 0x10, .n_ch = 8, ++ .mask = FL | FR | RL | RR | RLC | RRC }, ++ { .ca_id = 0x1c, .n_ch = 8, ++ .mask = FL | FR | RL | RR | FLC | FRC }, ++ { .ca_id = 0x0f, .n_ch = 8, ++ .mask = FL | FR | LFE | FC | RL | RR | RC }, ++ { .ca_id = 0x1b, .n_ch = 8, ++ .mask = FL | FR | LFE | RC | FC | FLC | FRC }, ++ { .ca_id = 0x0e, .n_ch = 8, ++ .mask = FL | FR | FC | RL | RR | RC }, ++ { .ca_id = 0x1a, .n_ch = 8, ++ .mask = FL | FR | RC | FC | FLC | FRC }, ++ { .ca_id = 0x0d, .n_ch = 8, ++ .mask = FL | FR | LFE | RL | RR | RC }, ++ { .ca_id = 0x19, .n_ch = 8, ++ .mask = FL | FR | LFE | RC | FLC | FRC }, ++ { .ca_id = 0x0c, .n_ch = 8, ++ .mask = FL | FR | RC | RL | RR }, ++ { .ca_id = 0x18, .n_ch = 8, ++ .mask = FL | FR | RC | FLC | FRC }, ++ { .ca_id = 0x17, .n_ch = 8, ++ .mask = FL | FR | LFE | FC | FLC | FRC }, ++ { .ca_id = 0x16, .n_ch = 8, ++ .mask = FL | FR | FC | FLC | FRC }, ++ { .ca_id = 0x15, .n_ch = 8, ++ .mask = FL | FR | LFE | FLC | FRC }, ++ { .ca_id = 0x14, .n_ch = 8, ++ .mask = FL | FR | FLC | FRC }, + }; + + struct hdmi_codec_priv { diff --git a/recipes-kernel/linux/linux-mainline/sunxi-kmeta/bsp/orange-pi-3lts/HACK-h6-Add-HDMI-sound-card.patch b/recipes-kernel/linux/linux-mainline/sunxi-kmeta/bsp/orange-pi-3lts/HACK-h6-Add-HDMI-sound-card.patch new file mode 100644 index 0000000..dda3c2f --- /dev/null +++ b/recipes-kernel/linux/linux-mainline/sunxi-kmeta/bsp/orange-pi-3lts/HACK-h6-Add-HDMI-sound-card.patch @@ -0,0 +1,53 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Jernej Skrabec +Date: Sat, 16 Jan 2021 10:58:14 +0100 +Subject: [PATCH] HACK: h6: Add HDMI sound card + +Signed-off-by: Jernej Skrabec +--- + arch/arm64/boot/dts/allwinner/sun50i-h6.dtsi | 20 +++++++++++++++++++- + 1 file changed, 19 insertions(+), 1 deletion(-) + +--- a/arch/arm64/boot/dts/allwinner/sun50i-h6.dtsi ++++ b/arch/arm64/boot/dts/allwinner/sun50i-h6.dtsi +@@ -108,6 +108,24 @@ + (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_HIGH)>; + }; + ++ sound_hdmi: sound { ++ compatible = "simple-audio-card"; ++ simple-audio-card,format = "i2s"; ++ simple-audio-card,name = "allwinner-hdmi"; ++ simple-audio-card,mclk-fs = <128>; ++ simple-audio-card,frame-inversion; ++ ++ simple-audio-card,codec { ++ sound-dai = <&hdmi>; ++ }; ++ ++ simple-audio-card,cpu { ++ sound-dai = <&i2s1>; ++ dai-tdm-slot-num = <2>; ++ dai-tdm-slot-width = <32>; ++ }; ++ }; ++ + soc { + compatible = "simple-bus"; + #address-cells = <1>; +@@ -664,7 +682,6 @@ + dmas = <&dma 4>, <&dma 4>; + resets = <&ccu RST_BUS_I2S1>; + dma-names = "rx", "tx"; +- status = "disabled"; + }; + + spdif: spdif@5093000 { +@@ -801,6 +818,7 @@ + }; + + hdmi: hdmi@6000000 { ++ #sound-dai-cells = <0>; + compatible = "allwinner,sun50i-h6-dw-hdmi"; + reg = <0x06000000 0x10000>; + reg-io-width = <1>; diff --git a/recipes-kernel/linux/linux-mainline/sunxi-kmeta/bsp/orange-pi-3lts/Input-axp20x-pek-allow-wakeup-after-shutdown-6_5.patch b/recipes-kernel/linux/linux-mainline/sunxi-kmeta/bsp/orange-pi-3lts/Input-axp20x-pek-allow-wakeup-after-shutdown-6_5.patch new file mode 100644 index 0000000..bf011a3 --- /dev/null +++ b/recipes-kernel/linux/linux-mainline/sunxi-kmeta/bsp/orange-pi-3lts/Input-axp20x-pek-allow-wakeup-after-shutdown-6_5.patch @@ -0,0 +1,36 @@ +From dbf607d6716dd0a314d734cfd9423601d6c5a99d Mon Sep 17 00:00:00 2001 +From: OpenEmbedded +Date: Wed, 6 Dec 2023 18:01:24 +0100 +Subject: [PATCH] Input: axp20x-pek - allow wakeup after shutdown + +--- + drivers/input/misc/axp20x-pek.c | 6 ++++++ + 1 file changed, 6 insertions(+) + +diff --git a/drivers/input/misc/axp20x-pek.c b/drivers/input/misc/axp20x-pek.c +index 4581606a2..7217dc6ed 100644 +--- a/drivers/input/misc/axp20x-pek.c ++++ b/drivers/input/misc/axp20x-pek.c +@@ -393,6 +393,11 @@ static const struct dev_pm_ops axp20x_pek_pm_ops = { + .resume_noirq = pm_sleep_ptr(axp20x_pek_resume_noirq), + }; + ++static void axp20x_pek_shutdown(struct platform_device *pdev) ++{ ++ axp20x_pek_suspend(&pdev->dev); ++} ++ + static const struct platform_device_id axp_pek_id_match[] = { + { + .name = "axp20x-pek", +@@ -408,6 +413,7 @@ MODULE_DEVICE_TABLE(platform, axp_pek_id_match); + + static struct platform_driver axp20x_pek_driver = { + .probe = axp20x_pek_probe, ++ .shutdown = axp20x_pek_shutdown, + .id_table = axp_pek_id_match, + .driver = { + .name = "axp20x-pek", +-- +2.43.0 + diff --git a/recipes-kernel/linux/linux-mainline/sunxi-kmeta/bsp/orange-pi-3lts/OrangePi-3-LTS-support.patch b/recipes-kernel/linux/linux-mainline/sunxi-kmeta/bsp/orange-pi-3lts/OrangePi-3-LTS-support.patch new file mode 100644 index 0000000..ca12528 --- /dev/null +++ b/recipes-kernel/linux/linux-mainline/sunxi-kmeta/bsp/orange-pi-3lts/OrangePi-3-LTS-support.patch @@ -0,0 +1,393 @@ +From 20d3d43d9daa82d5fa1e937e17b975974572d189 Mon Sep 17 00:00:00 2001 +From: Juliano Dorigão +Date: Fri, 3 Mar 2023 16:12:03 -0400 +Subject: [PATCH] OrangePi 3 LTS support + +--- + arch/arm64/boot/dts/allwinner/Makefile | 1 + + .../allwinner/sun50i-h6-orangepi-3-lts.dts | 361 ++++++++++++++++++ + 2 files changed, 362 insertions(+) + create mode 100644 arch/arm64/boot/dts/allwinner/sun50i-h6-orangepi-3-lts.dts + +diff --git a/arch/arm64/boot/dts/allwinner/Makefile b/arch/arm64/boot/dts/allwinner/Makefile +index 6a96494a2..ace8159a6 100644 +--- a/arch/arm64/boot/dts/allwinner/Makefile ++++ b/arch/arm64/boot/dts/allwinner/Makefile +@@ -32,6 +32,7 @@ dtb-$(CONFIG_ARCH_SUNXI) += sun50i-h5-orangepi-zero-plus.dtb + dtb-$(CONFIG_ARCH_SUNXI) += sun50i-h5-orangepi-zero-plus2.dtb + dtb-$(CONFIG_ARCH_SUNXI) += sun50i-h6-beelink-gs1.dtb + dtb-$(CONFIG_ARCH_SUNXI) += sun50i-h6-orangepi-3.dtb ++dtb-$(CONFIG_ARCH_SUNXI) += sun50i-h6-orangepi-3-lts.dtb + dtb-$(CONFIG_ARCH_SUNXI) += sun50i-h6-orangepi-lite2.dtb + dtb-$(CONFIG_ARCH_SUNXI) += sun50i-h6-orangepi-one-plus.dtb + dtb-$(CONFIG_ARCH_SUNXI) += sun50i-h6-pine-h64.dtb +diff --git a/arch/arm64/boot/dts/allwinner/sun50i-h6-orangepi-3-lts.dts b/arch/arm64/boot/dts/allwinner/sun50i-h6-orangepi-3-lts.dts +new file mode 100644 +index 000000000..67f38b8a1 +--- /dev/null ++++ b/arch/arm64/boot/dts/allwinner/sun50i-h6-orangepi-3-lts.dts +@@ -0,0 +1,361 @@ ++// SPDX-License-Identifier: (GPL-2.0+ OR MIT) ++// Copyright (C) 2023 Jernej Skrabec ++// Based on sun50i-h6-orangepi-3.dts, which is: ++// Copyright (C) 2019 Ondřej Jirman ++ ++/dts-v1/; ++ ++#include "sun50i-h6.dtsi" ++#include "sun50i-h6-cpu-opp.dtsi" ++ ++#include ++ ++/ { ++ model = "OrangePi 3 LTS"; ++ compatible = "xunlong,orangepi-3-lts", "allwinner,sun50i-h6"; ++ ++ aliases { ++ ethernet0 = &emac; ++ serial0 = &uart0; ++ }; ++ ++ chosen { ++ stdout-path = "serial0:115200n8"; ++ }; ++ ++ connector { ++ compatible = "hdmi-connector"; ++ ddc-en-gpios = <&pio 7 2 GPIO_ACTIVE_HIGH>; /* PH2 */ ++ type = "a"; ++ ++ port { ++ hdmi_con_in: endpoint { ++ remote-endpoint = <&hdmi_out_con>; ++ }; ++ }; ++ }; ++ ++ ext_osc32k: ext_osc32k_clk { ++ #clock-cells = <0>; ++ compatible = "fixed-clock"; ++ clock-frequency = <32768>; ++ clock-output-names = "ext_osc32k"; ++ }; ++ ++ leds { ++ compatible = "gpio-leds"; ++ ++ led-0 { ++ label = "orangepi:red:power"; ++ gpios = <&r_pio 0 4 GPIO_ACTIVE_HIGH>; /* PL4 */ ++ }; ++ ++ led-1 { ++ label = "orangepi:green:status"; ++ gpios = <&r_pio 0 7 GPIO_ACTIVE_HIGH>; /* PL7 */ ++ default-state = "on"; ++ }; ++ }; ++ ++ reg_vcc5v: vcc5v { ++ /* board wide 5V supply directly from the DC jack */ ++ compatible = "regulator-fixed"; ++ regulator-name = "vcc-5v"; ++ regulator-min-microvolt = <5000000>; ++ regulator-max-microvolt = <5000000>; ++ regulator-always-on; ++ }; ++ ++ reg_gmac_3v3: gmac-3v3 { ++ compatible = "regulator-fixed"; ++ regulator-name = "gmac-3v3"; ++ regulator-min-microvolt = <3300000>; ++ regulator-max-microvolt = <3300000>; ++ startup-delay-us = <150000>; ++ enable-active-high; ++ gpio = <&pio 3 6 GPIO_ACTIVE_HIGH>; /* PD6 */ ++ }; ++ ++ reg_vcc33_wifi: vcc33-wifi { ++ /* Always on 3.3V regulator for WiFi and BT */ ++ compatible = "regulator-fixed"; ++ regulator-name = "vcc33-wifi"; ++ regulator-min-microvolt = <3300000>; ++ regulator-max-microvolt = <3300000>; ++ enable-active-high; ++ gpio = <&pio 7 7 GPIO_ACTIVE_HIGH>; /* PH7 */ ++ }; ++ ++ reg_vcc_wifi_io: vcc-wifi-io { ++ /* Always on 1.8V/300mA regulator for WiFi and BT IO */ ++ compatible = "regulator-fixed"; ++ regulator-name = "vcc-wifi-io"; ++ regulator-min-microvolt = <1800000>; ++ regulator-max-microvolt = <1800000>; ++ regulator-always-on; ++ vin-supply = <®_vcc33_wifi>; ++ }; ++ ++ wifi_pwrseq: wifi-pwrseq { ++ compatible = "mmc-pwrseq-simple"; ++ clocks = <&rtc 1>; ++ clock-names = "ext_clock"; ++ reset-gpios = <&r_pio 1 3 GPIO_ACTIVE_LOW>; /* PM3 */ ++ post-power-on-delay-ms = <200>; ++ }; ++}; ++ ++&cpu0 { ++ cpu-supply = <®_dcdca>; ++}; ++ ++&de { ++ status = "okay"; ++}; ++ ++&dwc3 { ++ status = "okay"; ++}; ++ ++&ehci0 { ++ status = "okay"; ++}; ++ ++&ehci3 { ++ status = "okay"; ++}; ++ ++&emac { ++ pinctrl-names = "default"; ++ pinctrl-0 = <&ext_rgmii_pins>; ++ phy-mode = "rgmii"; ++ phy-handle = <&ext_rgmii_phy>; ++ phy-supply = <®_gmac_3v3>; ++ allwinner,rx-delay-ps = <1500>; ++ allwinner,tx-delay-ps = <700>; ++ status = "okay"; ++}; ++ ++&gpu { ++ mali-supply = <®_dcdcc>; ++ status = "okay"; ++}; ++ ++&hdmi { ++ hvcc-supply = <®_bldo2>; ++ status = "okay"; ++}; ++ ++&hdmi_out { ++ hdmi_out_con: endpoint { ++ remote-endpoint = <&hdmi_con_in>; ++ }; ++}; ++ ++&mdio { ++ ext_rgmii_phy: ethernet-phy@1 { ++ compatible = "ethernet-phy-ieee802.3-c22"; ++ reg = <1>; ++ ++ reset-gpios = <&pio 3 14 GPIO_ACTIVE_LOW>; /* PD14 */ ++ reset-assert-us = <15000>; ++ reset-deassert-us = <40000>; ++ }; ++}; ++ ++&mmc0 { ++ vmmc-supply = <®_cldo1>; ++ cd-gpios = <&pio 5 6 GPIO_ACTIVE_LOW>; /* PF6 */ ++ bus-width = <4>; ++ status = "okay"; ++}; ++ ++&mmc1 { ++ vmmc-supply = <®_vcc33_wifi>; ++ vqmmc-supply = <®_vcc_wifi_io>; ++ mmc-pwrseq = <&wifi_pwrseq>; ++ bus-width = <4>; ++ non-removable; ++ status = "okay"; ++}; ++ ++&mmc2 { ++ vmmc-supply = <®_cldo1>; ++ vqmmc-supply = <®_bldo2>; ++ cap-mmc-hw-reset; ++ non-removable; ++ bus-width = <8>; ++ status = "okay"; ++}; ++ ++&ohci0 { ++ status = "okay"; ++}; ++ ++&ohci3 { ++ status = "okay"; ++}; ++ ++&pio { ++ vcc-pc-supply = <®_bldo2>; ++ vcc-pd-supply = <®_cldo1>; ++ vcc-pg-supply = <®_bldo3>; ++}; ++ ++&r_ir { ++ status = "okay"; ++}; ++ ++&r_rsb { ++ clock-frequency = <100000>; ++ status = "okay"; ++ ++ axp805: pmic@745 { ++ compatible = "x-powers,axp805", "x-powers,axp806"; ++ reg = <0x745>; ++ interrupt-parent = <&r_intc>; ++ interrupts = ; ++ interrupt-controller; ++ #interrupt-cells = <1>; ++ x-powers,self-working-mode; ++ vina-supply = <®_vcc5v>; ++ vinb-supply = <®_vcc5v>; ++ vinc-supply = <®_vcc5v>; ++ vind-supply = <®_vcc5v>; ++ vine-supply = <®_vcc5v>; ++ aldoin-supply = <®_vcc5v>; ++ bldoin-supply = <®_vcc5v>; ++ cldoin-supply = <®_vcc5v>; ++ ++ regulators { ++ reg_aldo1: aldo1 { ++ regulator-always-on; ++ regulator-min-microvolt = <3300000>; ++ regulator-max-microvolt = <3300000>; ++ regulator-name = "vcc-pl-led-ir"; ++ }; ++ ++ reg_aldo2: aldo2 { ++ regulator-min-microvolt = <3300000>; ++ regulator-max-microvolt = <3300000>; ++ regulator-name = "vcc33-audio-tv-ephy-mac"; ++ }; ++ ++ /* ALDO3 is shorted to CLDO1 */ ++ reg_aldo3: aldo3 { ++ regulator-always-on; ++ regulator-min-microvolt = <3300000>; ++ regulator-max-microvolt = <3300000>; ++ regulator-name = "vcc33-io-pd-emmc-sd-usb-uart-1"; ++ }; ++ ++ reg_bldo1: bldo1 { ++ regulator-always-on; ++ regulator-min-microvolt = <1800000>; ++ regulator-max-microvolt = <1800000>; ++ regulator-name = "vcc18-dram-bias-pll"; ++ }; ++ ++ reg_bldo2: bldo2 { ++ regulator-min-microvolt = <1800000>; ++ regulator-max-microvolt = <1800000>; ++ regulator-name = "vcc-efuse-pcie-hdmi-pc"; ++ }; ++ ++ reg_bldo3: bldo3 { ++ regulator-min-microvolt = <1800000>; ++ regulator-max-microvolt = <1800000>; ++ regulator-name = "vcc-pm-pg-dcxoio-wifi"; ++ }; ++ ++ bldo4 { ++ /* unused */ ++ }; ++ ++ reg_cldo1: cldo1 { ++ regulator-always-on; ++ regulator-min-microvolt = <3300000>; ++ regulator-max-microvolt = <3300000>; ++ regulator-name = "vcc33-io-pd-emmc-sd-usb-uart-2"; ++ }; ++ ++ cldo2 { ++ /* unused */ ++ }; ++ ++ cldo3 { ++ /* unused */ ++ }; ++ ++ reg_dcdca: dcdca { ++ regulator-always-on; ++ regulator-min-microvolt = <800000>; ++ regulator-max-microvolt = <1160000>; ++ regulator-ramp-delay = <2500>; ++ regulator-name = "vdd-cpu"; ++ }; ++ ++ reg_dcdcc: dcdcc { ++ regulator-enable-ramp-delay = <32000>; ++ regulator-min-microvolt = <810000>; ++ regulator-max-microvolt = <1080000>; ++ regulator-ramp-delay = <2500>; ++ regulator-name = "vdd-gpu"; ++ }; ++ ++ reg_dcdcd: dcdcd { ++ regulator-always-on; ++ regulator-min-microvolt = <980000>; ++ regulator-max-microvolt = <980000>; ++ regulator-name = "vdd-sys"; ++ }; ++ ++ reg_dcdce: dcdce { ++ regulator-always-on; ++ regulator-min-microvolt = <1200000>; ++ regulator-max-microvolt = <1200000>; ++ regulator-name = "vcc-dram"; ++ }; ++ ++ sw { ++ /* unused */ ++ }; ++ }; ++ }; ++}; ++ ++&pwm { ++ status = "okay"; ++}; ++ ++&r_ir { ++ status = "okay"; ++}; ++ ++&rtc { ++ clocks = <&ext_osc32k>; ++}; ++ ++/delete-node/ &spi0; ++ ++&uart0 { ++ pinctrl-names = "default"; ++ pinctrl-0 = <&uart0_ph_pins>; ++ status = "okay"; ++}; ++ ++&usb2otg { ++ dr_mode = "host"; ++ status = "okay"; ++}; ++ ++&usb2phy { ++ usb0_id_det-gpios = <&pio 2 15 GPIO_ACTIVE_HIGH>; /* PC15 */ ++ usb0_vbus-supply = <®_vcc5v>; ++ usb3_vbus-supply = <®_vcc5v>; ++ status = "okay"; ++}; ++ ++&usb3phy { ++ status = "okay"; ++}; +-- +2.39.2 + diff --git a/recipes-kernel/linux/linux-mainline/sunxi-kmeta/bsp/orange-pi-3lts/Revert-clk-qcom-Support-protected-clocks-property.patch b/recipes-kernel/linux/linux-mainline/sunxi-kmeta/bsp/orange-pi-3lts/Revert-clk-qcom-Support-protected-clocks-property.patch new file mode 100644 index 0000000..98f48bc --- /dev/null +++ b/recipes-kernel/linux/linux-mainline/sunxi-kmeta/bsp/orange-pi-3lts/Revert-clk-qcom-Support-protected-clocks-property.patch @@ -0,0 +1,49 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Samuel Holland +Date: Mon, 30 Dec 2019 12:39:31 -0600 +Subject: [PATCH] Revert "clk: qcom: Support 'protected-clocks' property" + +Now that protected-clocks is handled in the clk core, this +driver-specific implementation is redundant. + +This reverts commit b181b3b801da8893c8eb706e448dd5111b02de60. + +Signed-off-by: Samuel Holland +--- + drivers/clk/qcom/common.c | 18 ------------------ + 1 file changed, 18 deletions(-) + +--- a/drivers/clk/qcom/common.c ++++ b/drivers/clk/qcom/common.c +@@ -194,22 +194,6 @@ int qcom_cc_register_sleep_clk(struct de + } + EXPORT_SYMBOL_GPL(qcom_cc_register_sleep_clk); + +-/* Drop 'protected-clocks' from the list of clocks to register */ +-static void qcom_cc_drop_protected(struct device *dev, struct qcom_cc *cc) +-{ +- struct device_node *np = dev->of_node; +- struct property *prop; +- const __be32 *p; +- u32 i; +- +- of_property_for_each_u32(np, "protected-clocks", prop, p, i) { +- if (i >= cc->num_rclks) +- continue; +- +- cc->rclks[i] = NULL; +- } +-} +- + static struct clk_hw *qcom_cc_clk_hw_get(struct of_phandle_args *clkspec, + void *data) + { +@@ -272,8 +256,6 @@ int qcom_cc_really_probe(struct platform + cc->rclks = rclks; + cc->num_rclks = num_clks; + +- qcom_cc_drop_protected(dev, cc); +- + for (i = 0; i < num_clk_hws; i++) { + ret = devm_clk_hw_register(dev, clk_hws[i]); + if (ret) diff --git a/recipes-kernel/linux/linux-mainline/sunxi-kmeta/bsp/orange-pi-3lts/arm64-dts-allwinner-Enforce-consistent-MMC-numbering.patch b/recipes-kernel/linux/linux-mainline/sunxi-kmeta/bsp/orange-pi-3lts/arm64-dts-allwinner-Enforce-consistent-MMC-numbering.patch new file mode 100644 index 0000000..fc75e6d --- /dev/null +++ b/recipes-kernel/linux/linux-mainline/sunxi-kmeta/bsp/orange-pi-3lts/arm64-dts-allwinner-Enforce-consistent-MMC-numbering.patch @@ -0,0 +1,67 @@ +From ba3b30a80ac2c388d48c58fbee242466d51fbfd8 Mon Sep 17 00:00:00 2001 +From: Samuel Holland +Date: Sun, 6 Dec 2020 11:15:34 -0600 +Subject: [PATCH 177/389] arm64: dts: allwinner: Enforce consistent MMC + numbering + +Signed-off-by: Samuel Holland +--- + arch/arm64/boot/dts/allwinner/sun50i-a64.dtsi | 6 ++++++ + arch/arm64/boot/dts/allwinner/sun50i-h5.dtsi | 6 ++++++ + arch/arm64/boot/dts/allwinner/sun50i-h6.dtsi | 6 ++++++ + 3 files changed, 18 insertions(+) + +diff --git a/arch/arm64/boot/dts/allwinner/sun50i-a64.dtsi b/arch/arm64/boot/dts/allwinner/sun50i-a64.dtsi +index 77b5349f6087..9e0e17179839 100644 +--- a/arch/arm64/boot/dts/allwinner/sun50i-a64.dtsi ++++ b/arch/arm64/boot/dts/allwinner/sun50i-a64.dtsi +@@ -18,6 +18,12 @@ / { + #address-cells = <1>; + #size-cells = <1>; + ++ aliases { ++ mmc0 = &mmc0; ++ mmc1 = &mmc1; ++ mmc2 = &mmc2; ++ }; ++ + chosen { + #address-cells = <1>; + #size-cells = <1>; +diff --git a/arch/arm64/boot/dts/allwinner/sun50i-h5.dtsi b/arch/arm64/boot/dts/allwinner/sun50i-h5.dtsi +index a56fae761a1f..2159fa336d75 100644 +--- a/arch/arm64/boot/dts/allwinner/sun50i-h5.dtsi ++++ b/arch/arm64/boot/dts/allwinner/sun50i-h5.dtsi +@@ -6,6 +6,12 @@ + #include + + / { ++ aliases { ++ mmc0 = &mmc0; ++ mmc1 = &mmc1; ++ mmc2 = &mmc2; ++ }; ++ + cpus { + #address-cells = <1>; + #size-cells = <0>; +diff --git a/arch/arm64/boot/dts/allwinner/sun50i-h6.dtsi b/arch/arm64/boot/dts/allwinner/sun50i-h6.dtsi +index ca1d287a0a01..3feac99556f3 100644 +--- a/arch/arm64/boot/dts/allwinner/sun50i-h6.dtsi ++++ b/arch/arm64/boot/dts/allwinner/sun50i-h6.dtsi +@@ -17,6 +17,12 @@ / { + #address-cells = <1>; + #size-cells = <1>; + ++ aliases { ++ mmc0 = &mmc0; ++ mmc1 = &mmc1; ++ mmc2 = &mmc2; ++ }; ++ + cpus { + #address-cells = <1>; + #size-cells = <0>; +-- +2.35.3 + diff --git a/recipes-kernel/linux/linux-mainline/sunxi-kmeta/bsp/orange-pi-3lts/arm64-dts-allwinner-h6-Add-AC200-EPHY-related-nodes.patch b/recipes-kernel/linux/linux-mainline/sunxi-kmeta/bsp/orange-pi-3lts/arm64-dts-allwinner-h6-Add-AC200-EPHY-related-nodes.patch new file mode 100644 index 0000000..51bc021 --- /dev/null +++ b/recipes-kernel/linux/linux-mainline/sunxi-kmeta/bsp/orange-pi-3lts/arm64-dts-allwinner-h6-Add-AC200-EPHY-related-nodes.patch @@ -0,0 +1,110 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Jernej Skrabec +Date: Fri, 16 Aug 2019 16:40:20 +0200 +Subject: [PATCH] arm64: dts: allwinner: h6: Add AC200 EPHY related nodes + +Signed-off-by: Jernej Skrabec +--- + arch/arm64/boot/dts/allwinner/sun50i-h6.dtsi | 56 ++++++++++++++++++++ + 1 file changed, 56 insertions(+) + +--- a/arch/arm64/boot/dts/allwinner/sun50i-h6.dtsi ++++ b/arch/arm64/boot/dts/allwinner/sun50i-h6.dtsi +@@ -16,6 +16,16 @@ + #address-cells = <1>; + #size-cells = <1>; + ++ ac200_pwm_clk: ac200_clk { ++ compatible = "pwm-clock"; ++ #clock-cells = <0>; ++ clock-frequency = <24000000>; ++ pinctrl-names = "default"; ++ pinctrl-0 = <&pwm1_pin>; ++ pwms = <&pwm 1 42 0>; ++ status = "disabled"; ++ }; ++ + cpus { + #address-cells = <1>; + #size-cells = <0>; +@@ -319,6 +329,10 @@ + cpu_speed_grade: cpu-speed-grade@1c { + reg = <0x1c 0x4>; + }; ++ ++ ephy_calib: ephy_calib@2c { ++ reg = <0x2c 0x2>; ++ }; + }; + + timer@3009000 { +@@ -373,6 +387,13 @@ + drive-strength = <40>; + }; + ++ ext_rmii_pins: rmii_pins { ++ pins = "PA0", "PA1", "PA2", "PA3", "PA4", ++ "PA5", "PA6", "PA7", "PA8", "PA9"; ++ function = "emac"; ++ drive-strength = <40>; ++ }; ++ + hdmi_pins: hdmi-pins { + pins = "PH8", "PH9", "PH10"; + function = "hdmi"; +@@ -393,6 +414,11 @@ + function = "i2c2"; + }; + ++ i2c3_pins: i2c3-pins { ++ pins = "PB17", "PB18"; ++ function = "i2c3"; ++ }; ++ + mmc0_pins: mmc0-pins { + pins = "PF0", "PF1", "PF2", "PF3", + "PF4", "PF5"; +@@ -419,6 +445,11 @@ + bias-pull-up; + }; + ++ pwm1_pin: pwm1-pin { ++ pins = "PB19"; ++ function = "pwm1"; ++ }; ++ + /omit-if-no-ref/ + spi0_pins: spi0-pins { + pins = "PC0", "PC2", "PC3"; +@@ -652,6 +683,31 @@ + #size-cells = <0>; + }; + ++ i2c3: i2c@5002c00 { ++ compatible = "allwinner,sun6i-a31-i2c"; ++ reg = <0x05002c00 0x400>; ++ interrupts = ; ++ clocks = <&ccu CLK_BUS_I2C3>; ++ resets = <&ccu RST_BUS_I2C3>; ++ pinctrl-names = "default"; ++ pinctrl-0 = <&i2c3_pins>; ++ status = "disabled"; ++ #address-cells = <1>; ++ #size-cells = <0>; ++ ++ ac200: mfd@10 { ++ compatible = "x-powers,ac200"; ++ reg = <0x10>; ++ clocks = <&ac200_pwm_clk>; ++ ++ ac200_ephy: phy { ++ compatible = "x-powers,ac200-ephy"; ++ nvmem-cells = <&ephy_calib>; ++ nvmem-cell-names = "ephy_calib"; ++ }; ++ }; ++ }; ++ + emac: ethernet@5020000 { + compatible = "allwinner,sun50i-h6-emac", + "allwinner,sun50i-a64-emac"; diff --git a/recipes-kernel/linux/linux-mainline/sunxi-kmeta/bsp/orange-pi-3lts/arm64-dts-allwinner-h6-Add-SCPI-protocol.patch b/recipes-kernel/linux/linux-mainline/sunxi-kmeta/bsp/orange-pi-3lts/arm64-dts-allwinner-h6-Add-SCPI-protocol.patch new file mode 100644 index 0000000..0971c9d --- /dev/null +++ b/recipes-kernel/linux/linux-mainline/sunxi-kmeta/bsp/orange-pi-3lts/arm64-dts-allwinner-h6-Add-SCPI-protocol.patch @@ -0,0 +1,46 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Samuel Holland +Date: Sat, 14 Dec 2019 20:54:40 -0600 +Subject: [PATCH] arm64: dts: allwinner: h6: Add SCPI protocol + +Signed-off-by: Samuel Holland +--- + arch/arm64/boot/dts/allwinner/sun50i-h6.dtsi | 20 ++++++++++++++++++++ + 1 file changed, 20 insertions(+) + +--- a/arch/arm64/boot/dts/allwinner/sun50i-h6.dtsi ++++ b/arch/arm64/boot/dts/allwinner/sun50i-h6.dtsi +@@ -88,6 +88,13 @@ + method = "smc"; + }; + ++ scpi_protocol: scpi { ++ compatible = "arm,scpi"; ++ mboxes = <&msgbox 2>, <&msgbox 3>; ++ mbox-names = "tx", "rx"; ++ shmem = <&scpi_sram>; ++ }; ++ + timer { + compatible = "arm,armv8-timer"; + arm,no-tick-in-suspend; +@@ -196,6 +203,19 @@ + #size-cells = <1>; + ranges; + ++ sram_a2: sram@100000 { ++ compatible = "mmio-sram"; ++ reg = <0x00100000 0x18000>; ++ #address-cells = <1>; ++ #size-cells = <1>; ++ ranges = <0 0x00100000 0x18000>; ++ ++ scpi_sram: scpi-sram@17c00 { ++ compatible = "arm,scp-shmem"; ++ reg = <0x17c00 0x200>; ++ }; ++ }; ++ + sram_c: sram@28000 { + compatible = "mmio-sram"; + reg = <0x00028000 0x1e000>; diff --git a/recipes-kernel/linux/linux-mainline/sunxi-kmeta/bsp/orange-pi-3lts/arm64-dts-allwinner-h6-Fix-Cedrus-IOMMU-again.patch b/recipes-kernel/linux/linux-mainline/sunxi-kmeta/bsp/orange-pi-3lts/arm64-dts-allwinner-h6-Fix-Cedrus-IOMMU-again.patch new file mode 100644 index 0000000..ec2153f --- /dev/null +++ b/recipes-kernel/linux/linux-mainline/sunxi-kmeta/bsp/orange-pi-3lts/arm64-dts-allwinner-h6-Fix-Cedrus-IOMMU-again.patch @@ -0,0 +1,26 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Jernej Skrabec +Date: Wed, 12 Oct 2022 23:01:04 +0200 +Subject: [PATCH] arm64: dts: allwinner: h6: Fix Cedrus IOMMU, again + +Cedrus actually uses two IOMMU channels. Add the second one. + +Fixes: 62a8ccf3a248 ("arm64: dts: allwinner: h6: Fix Cedrus IOMMU usage") +Signed-off-by: Jernej Skrabec +--- + arch/arm64/boot/dts/allwinner/sun50i-h6.dtsi | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/arch/arm64/boot/dts/allwinner/sun50i-h6.dtsi b/arch/arm64/boot/dts/allwinner/sun50i-h6.dtsi +index e897559d9a89..436cc2a02d1a 100644 +--- a/arch/arm64/boot/dts/allwinner/sun50i-h6.dtsi ++++ b/arch/arm64/boot/dts/allwinner/sun50i-h6.dtsi +@@ -172,7 +172,7 @@ video-codec@1c0e000 { + resets = <&ccu RST_BUS_VE>; + interrupts = ; + allwinner,sram = <&ve_sram 1>; +- iommus = <&iommu 3>; ++ iommus = <&iommu 1>, <&iommu 3>; + }; + + gpu: gpu@1800000 { diff --git a/recipes-kernel/linux/linux-mainline/sunxi-kmeta/bsp/orange-pi-3lts/arm64-dts-h6-deinterlace.patch b/recipes-kernel/linux/linux-mainline/sunxi-kmeta/bsp/orange-pi-3lts/arm64-dts-h6-deinterlace.patch new file mode 100644 index 0000000..cfc7495 --- /dev/null +++ b/recipes-kernel/linux/linux-mainline/sunxi-kmeta/bsp/orange-pi-3lts/arm64-dts-h6-deinterlace.patch @@ -0,0 +1,31 @@ +From c009b3b707bbde30fa6ff49ca3075160524ea7b9 Mon Sep 17 00:00:00 2001 +From: Jernej Skrabec +Date: Tue, 26 May 2020 20:08:27 +0200 +Subject: [PATCH 41/44] arm64: dts: h6 deinterlace + +Signed-off-by: Jernej Skrabec +--- + arch/arm64/boot/dts/allwinner/sun50i-h6.dtsi | 11 +++++++++++ + 1 file changed, 11 insertions(+) + +--- a/arch/arm64/boot/dts/allwinner/sun50i-h6.dtsi ++++ b/arch/arm64/boot/dts/allwinner/sun50i-h6.dtsi +@@ -160,6 +160,18 @@ + }; + }; + ++ deinterlace: deinterlace@1420000 { ++ compatible = "allwinner,sun50i-h6-deinterlace"; ++ reg = <0x01420000 0x2000>; ++ clocks = <&ccu CLK_BUS_DEINTERLACE>, ++ <&ccu CLK_DEINTERLACE>, ++ <&ccu CLK_MBUS_DEINTERLACE>; ++ clock-names = "bus", "mod", "ram"; ++ resets = <&ccu RST_BUS_DEINTERLACE>; ++ interrupts = ; ++ iommus = <&iommu 2>; ++ }; ++ + video-codec@1c0e000 { + compatible = "allwinner,sun50i-h6-video-engine"; + reg = <0x01c0e000 0x2000>; diff --git a/recipes-kernel/linux/linux-mainline/sunxi-kmeta/bsp/orange-pi-3lts/clk-Implement-protected-clocks-for-all-OF-clock-prov.patch b/recipes-kernel/linux/linux-mainline/sunxi-kmeta/bsp/orange-pi-3lts/clk-Implement-protected-clocks-for-all-OF-clock-prov.patch new file mode 100644 index 0000000..8ac83e1 --- /dev/null +++ b/recipes-kernel/linux/linux-mainline/sunxi-kmeta/bsp/orange-pi-3lts/clk-Implement-protected-clocks-for-all-OF-clock-prov.patch @@ -0,0 +1,197 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Samuel Holland +Date: Sun, 29 Dec 2019 20:23:28 -0600 +Subject: [PATCH] clk: Implement protected-clocks for all OF clock providers + +This is a generic implementation of the "protected-clocks" property from +the common clock binding. It allows firmware to inform the OS about +clocks that must not be disabled while the OS is running. + +This implementation comes with some caveats: + +1) Clocks that have CLK_IS_CRITICAL in their init data are prepared/ +enabled before they are attached to the clock tree. protected-clocks are +only protected once the clock provider is added, which is generally +after all of the clocks it provides have been registered. This leaves a +window of opportunity where something could disable or modify the clock, +such as a driver running on another CPU, or the clock core itself. There +is a comment to this effect in __clk_core_init(): + + /* + * Enable CLK_IS_CRITICAL clocks so newly added critical clocks + * don't get accidentally disabled when walking the orphan tree and + * reparenting clocks + */ + +Similarly, these clocks will be enabled after they are first reparented, +unlike other CLK_IS_CRITICAL clocks. See the comment in +clk_core_reparent_orphans_nolock(): + + /* + * We need to use __clk_set_parent_before() and _after() to + * to properly migrate any prepare/enable count of the orphan + * clock. This is important for CLK_IS_CRITICAL clocks, which + * are enabled during init but might not have a parent yet. + */ + +Ideally we could detect protected clocks before they are reparented, but +there are two problems with that: + + a) From the clock core's perspective, hw->init is const. + + b) The clock core doesn't see the device_node until __clk_register is + called on the first clock. + +So the only "race-free" way to detect protected-clocks is to do it in +the middle of __clk_register, between when core->flags is initialized +and calling __clk_core_init(). That requires scanning the device tree +again for each clock, which is part of why I didn't do it that way. + +2) __clk_protect needs to be idempotent, for two reasons: + + a) Clocks with CLK_IS_CRITICAL in their init data are already + prepared/enabled, and we don't want to prepare/enable them again. + + b) of_clk_set_defaults() is called twice for (at least some) clock + controllers registered with CLK_OF_DECLARE. It is called first in + of_clk_add_provider()/of_clk_add_hw_provider() inside clk_init_cb, + and again afterward in of_clk_init(). The second call in + of_clk_init() may be unnecessary, but verifying that would require + auditing all users of CLK_OF_DECLARE to ensure they called one of + the of_clk_add{,_hw}_provider functions. + +Signed-off-by: Samuel Holland +--- + drivers/clk/clk-conf.c | 54 ++++++++++++++++++++++++++++++++++++++++++ + drivers/clk/clk.c | 31 ++++++++++++++++++++++++ + drivers/clk/clk.h | 2 ++ + 3 files changed, 87 insertions(+) + +--- a/drivers/clk/clk-conf.c ++++ b/drivers/clk/clk-conf.c +@@ -11,6 +11,54 @@ + #include + #include + ++#include "clk.h" ++ ++static int __set_clk_flags(struct device_node *node) ++{ ++ struct of_phandle_args clkspec; ++ struct property *prop; ++ int i, index = 0, rc; ++ const __be32 *cur; ++ struct clk *clk; ++ u32 nr_cells; ++ ++ rc = of_property_read_u32(node, "#clock-cells", &nr_cells); ++ if (rc < 0) { ++ pr_err("clk: missing #clock-cells property on %pOF\n", node); ++ return rc; ++ } ++ ++ clkspec.np = node; ++ clkspec.args_count = nr_cells; ++ ++ of_property_for_each_u32(node, "protected-clocks", prop, cur, clkspec.args[0]) { ++ /* read the remainder of the clock specifier */ ++ for (i = 1; i < nr_cells; ++i) { ++ cur = of_prop_next_u32(prop, cur, &clkspec.args[i]); ++ if (!cur) { ++ pr_err("clk: invalid value of protected-clocks" ++ " property at %pOF\n", node); ++ return -EINVAL; ++ } ++ } ++ clk = of_clk_get_from_provider(&clkspec); ++ if (IS_ERR(clk)) { ++ if (PTR_ERR(clk) != -EPROBE_DEFER) ++ pr_err("clk: couldn't get protected clock" ++ " %u for %pOF\n", index, node); ++ return PTR_ERR(clk); ++ } ++ ++ rc = __clk_protect(clk); ++ if (rc < 0) ++ pr_warn("clk: failed to protect %s: %d\n", ++ __clk_get_name(clk), rc); ++ clk_put(clk); ++ index++; ++ } ++ return 0; ++} ++ + static int __set_clk_parents(struct device_node *node, bool clk_supplier) + { + struct of_phandle_args clkspec; +@@ -135,6 +183,12 @@ int of_clk_set_defaults(struct device_no + if (!node) + return 0; + ++ if (clk_supplier) { ++ rc = __set_clk_flags(node); ++ if (rc < 0) ++ return rc; ++ } ++ + rc = __set_clk_parents(node, clk_supplier); + if (rc < 0) + return rc; +--- a/drivers/clk/clk.c ++++ b/drivers/clk/clk.c +@@ -4271,6 +4271,37 @@ struct clk *devm_clk_hw_get_clk(struct d + EXPORT_SYMBOL_GPL(devm_clk_hw_get_clk); + + /* ++ * clk-conf helpers ++ */ ++ ++int __clk_protect(struct clk *clk) ++{ ++ struct clk_core *core = clk->core; ++ int ret = 0; ++ ++ clk_prepare_lock(); ++ ++ /* ++ * If CLK_IS_CRITICAL was set in the clock's init data, then ++ * the clock was already prepared/enabled when it was added. ++ */ ++ if (core->flags & CLK_IS_CRITICAL) ++ goto out; ++ ++ core->flags |= CLK_IS_CRITICAL; ++ ret = clk_core_prepare(core); ++ if (ret) ++ goto out; ++ ++ ret = clk_core_enable_lock(core); ++ ++out: ++ clk_prepare_unlock(); ++ ++ return ret; ++} ++ ++/* + * clkdev helpers + */ + +--- a/drivers/clk/clk.h ++++ b/drivers/clk/clk.h +@@ -24,6 +24,7 @@ struct clk_hw *clk_find_hw(const char *d + #ifdef CONFIG_COMMON_CLK + struct clk *clk_hw_create_clk(struct device *dev, struct clk_hw *hw, + const char *dev_id, const char *con_id); ++int __clk_protect(struct clk *clk); + void __clk_put(struct clk *clk); + #else + /* All these casts to avoid ifdefs in clkdev... */ +@@ -33,6 +34,7 @@ clk_hw_create_clk(struct device *dev, st + { + return (struct clk *)hw; + } ++static inline int __clk_protect(struct clk *clk) { return 0; } + static inline void __clk_put(struct clk *clk) { } + + #endif diff --git a/recipes-kernel/linux/linux-mainline/sunxi-kmeta/bsp/orange-pi-3lts/firmware-arm_scpi-Support-unidirectional-mailbox-cha.patch b/recipes-kernel/linux/linux-mainline/sunxi-kmeta/bsp/orange-pi-3lts/firmware-arm_scpi-Support-unidirectional-mailbox-cha.patch new file mode 100644 index 0000000..e09d6d2 --- /dev/null +++ b/recipes-kernel/linux/linux-mainline/sunxi-kmeta/bsp/orange-pi-3lts/firmware-arm_scpi-Support-unidirectional-mailbox-cha.patch @@ -0,0 +1,122 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Samuel Holland +Date: Tue, 5 Mar 2019 22:02:41 -0600 +Subject: [PATCH] firmware: arm_scpi: Support unidirectional mailbox channels + +Some mailbox controllers have only unidirectional channels, so we need a +pair of them for each SCPI channel. If a mbox-names property is present, +look for "rx" and "tx" mbox channels; otherwise, the existing behavior +is preserved, and a single mbox channel is used for each SCPI channel. + +Note that since the mailbox framework only supports a single phandle +with each name (mbox_request_channel_byname always returns the first +one), this new mode only supports a single SCPI channel. + +Signed-off-by: Samuel Holland +--- + drivers/firmware/arm_scpi.c | 58 +++++++++++++++++++++++++++++-------- + 1 file changed, 46 insertions(+), 12 deletions(-) + +--- a/drivers/firmware/arm_scpi.c ++++ b/drivers/firmware/arm_scpi.c +@@ -231,7 +231,8 @@ struct scpi_xfer { + + struct scpi_chan { + struct mbox_client cl; +- struct mbox_chan *chan; ++ struct mbox_chan *rx_chan; ++ struct mbox_chan *tx_chan; + void __iomem *tx_payload; + void __iomem *rx_payload; + struct list_head rx_pending; +@@ -505,7 +506,7 @@ static int scpi_send_message(u8 idx, voi + msg->rx_len = rx_len; + reinit_completion(&msg->done); + +- ret = mbox_send_message(scpi_chan->chan, msg); ++ ret = mbox_send_message(scpi_chan->tx_chan, msg); + if (ret < 0 || !rx_buf) + goto out; + +@@ -856,8 +857,13 @@ static void scpi_free_channels(void *dat + struct scpi_drvinfo *info = data; + int i; + +- for (i = 0; i < info->num_chans; i++) +- mbox_free_channel(info->channels[i].chan); ++ for (i = 0; i < info->num_chans; i++) { ++ struct scpi_chan *pchan = &info->channels[i]; ++ ++ if (pchan->tx_chan != pchan->rx_chan) ++ mbox_free_channel(pchan->tx_chan); ++ mbox_free_channel(pchan->rx_chan); ++ } + } + + static int scpi_remove(struct platform_device *pdev) +@@ -913,6 +919,7 @@ static int scpi_probe(struct platform_de + struct device *dev = &pdev->dev; + struct device_node *np = dev->of_node; + struct scpi_drvinfo *scpi_drvinfo; ++ bool use_mbox_names = false; + + scpi_drvinfo = devm_kzalloc(dev, sizeof(*scpi_drvinfo), GFP_KERNEL); + if (!scpi_drvinfo) +@@ -926,6 +933,14 @@ static int scpi_probe(struct platform_de + dev_err(dev, "no mboxes property in '%pOF'\n", np); + return -ENODEV; + } ++ if (of_get_property(dev->of_node, "mbox-names", NULL)) { ++ use_mbox_names = true; ++ if (count != 2) { ++ dev_err(dev, "need exactly 2 mboxes with mbox-names\n"); ++ return -ENODEV; ++ } ++ count /= 2; ++ } + + scpi_info->channels = devm_kcalloc(dev, count, sizeof(struct scpi_chan), + GFP_KERNEL); +@@ -974,15 +989,34 @@ static int scpi_probe(struct platform_de + mutex_init(&pchan->xfers_lock); + + ret = scpi_alloc_xfer_list(dev, pchan); +- if (!ret) { +- pchan->chan = mbox_request_channel(cl, idx); +- if (!IS_ERR(pchan->chan)) +- continue; +- ret = PTR_ERR(pchan->chan); +- if (ret != -EPROBE_DEFER) +- dev_err(dev, "failed to get channel%d err %d\n", +- idx, ret); ++ if (ret) ++ return ret; ++ ++ if (use_mbox_names) { ++ pchan->rx_chan = mbox_request_channel_byname(cl, "rx"); ++ if (IS_ERR(pchan->rx_chan)) { ++ ret = PTR_ERR(pchan->rx_chan); ++ goto fail; ++ } ++ pchan->tx_chan = mbox_request_channel_byname(cl, "tx"); ++ if (IS_ERR(pchan->rx_chan)) { ++ ret = PTR_ERR(pchan->tx_chan); ++ goto fail; ++ } ++ } else { ++ pchan->rx_chan = mbox_request_channel(cl, idx); ++ if (IS_ERR(pchan->rx_chan)) { ++ ret = PTR_ERR(pchan->rx_chan); ++ goto fail; ++ } ++ pchan->tx_chan = pchan->rx_chan; + } ++ continue; ++ ++fail: ++ if (ret != -EPROBE_DEFER) ++ dev_err(dev, "failed to get channel%d err %d\n", ++ idx, ret); + return ret; + } + diff --git a/recipes-kernel/linux/linux-mainline/sunxi-kmeta/bsp/orange-pi-3lts/fix-orange-pi-3lts-rtc-on-faulty-boards.patch b/recipes-kernel/linux/linux-mainline/sunxi-kmeta/bsp/orange-pi-3lts/fix-orange-pi-3lts-rtc-on-faulty-boards.patch new file mode 100644 index 0000000..3fda990 --- /dev/null +++ b/recipes-kernel/linux/linux-mainline/sunxi-kmeta/bsp/orange-pi-3lts/fix-orange-pi-3lts-rtc-on-faulty-boards.patch @@ -0,0 +1,29 @@ +From 791849a059cce08f238491b8cae1c3d452edcda5 Mon Sep 17 00:00:00 2001 +From: OpenEmbedded +Date: Wed, 6 Dec 2023 00:37:25 +0100 +Subject: [PATCH 1/2] fix orange pi 3lts rtc on faulty boards" + +--- + arch/arm64/boot/dts/allwinner/sun50i-h6-orangepi-3-lts.dts | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/arch/arm64/boot/dts/allwinner/sun50i-h6-orangepi-3-lts.dts b/arch/arm64/boot/dts/allwinner/sun50i-h6-orangepi-3-lts.dts +index 67f38b8a1..e3337c6f2 100644 +--- a/arch/arm64/boot/dts/allwinner/sun50i-h6-orangepi-3-lts.dts ++++ b/arch/arm64/boot/dts/allwinner/sun50i-h6-orangepi-3-lts.dts +@@ -331,10 +331,10 @@ &pwm { + &r_ir { + status = "okay"; + }; +- ++/* + &rtc { + clocks = <&ext_osc32k>; +-}; ++};*/ + + /delete-node/ &spi0; + +-- +2.43.0 + diff --git a/recipes-kernel/linux/linux-mainline/sunxi-kmeta/bsp/orange-pi-3lts/fix-rtc.scc b/recipes-kernel/linux/linux-mainline/sunxi-kmeta/bsp/orange-pi-3lts/fix-rtc.scc new file mode 100644 index 0000000..b859676 --- /dev/null +++ b/recipes-kernel/linux/linux-mainline/sunxi-kmeta/bsp/orange-pi-3lts/fix-rtc.scc @@ -0,0 +1,3 @@ +# Optional patch for 3 lts that deactivates external 32Khz crystals and fallback to internal clock +# This fix rtc problems at the cost of clock accuracy on faulty boards +patch fix-orange-pi-3lts-rtc-on-faulty-boards.patch diff --git a/recipes-kernel/linux/linux-mainline/sunxi-kmeta/bsp/orange-pi-3lts/iommu-sun50i-Allow-page-sizes-multiple-of-4096.patch b/recipes-kernel/linux/linux-mainline/sunxi-kmeta/bsp/orange-pi-3lts/iommu-sun50i-Allow-page-sizes-multiple-of-4096.patch new file mode 100644 index 0000000..a6af506 --- /dev/null +++ b/recipes-kernel/linux/linux-mainline/sunxi-kmeta/bsp/orange-pi-3lts/iommu-sun50i-Allow-page-sizes-multiple-of-4096.patch @@ -0,0 +1,107 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Jernej Skrabec +Date: Fri, 14 Oct 2022 20:15:43 +0200 +Subject: [PATCH] iommu/sun50i: Allow page sizes multiple of 4096 + +While peripheral supports only 4K page sizes, we can easily emulate +support for bigger page sizes, up to 1M. This is done by making multiple +entries in map function or clearing multiple entries in unmap. + +This considerably lowers overhead. + +Signed-off-by: Jernej Skrabec +--- + drivers/iommu/sun50i-iommu.c | 44 +++++++++++++++++++++--------------- + 1 file changed, 26 insertions(+), 18 deletions(-) + +diff --git a/drivers/iommu/sun50i-iommu.c b/drivers/iommu/sun50i-iommu.c +index d7c5e9b1a087..9944266c4f58 100644 +--- a/drivers/iommu/sun50i-iommu.c ++++ b/drivers/iommu/sun50i-iommu.c +@@ -593,10 +593,12 @@ static int sun50i_iommu_map(struct iommu_domain *domain, unsigned long iova, + { + struct sun50i_iommu_domain *sun50i_domain = to_sun50i_domain(domain); + struct sun50i_iommu *iommu = sun50i_domain->iommu; +- u32 pte_index; ++ u32 pte_index, pages, i; + u32 *page_table, *pte_addr; + int ret = 0; + ++ pages = size / SPAGE_SIZE; ++ + page_table = sun50i_dte_get_page_table(sun50i_domain, iova, gfp); + if (IS_ERR(page_table)) { + ret = PTR_ERR(page_table); +@@ -604,18 +606,21 @@ static int sun50i_iommu_map(struct iommu_domain *domain, unsigned long iova, + } + + pte_index = sun50i_iova_get_pte_index(iova); +- pte_addr = &page_table[pte_index]; +- if (unlikely(sun50i_pte_is_page_valid(*pte_addr))) { +- phys_addr_t page_phys = sun50i_pte_get_page_address(*pte_addr); +- dev_err(iommu->dev, +- "iova %pad already mapped to %pa cannot remap to %pa prot: %#x\n", +- &iova, &page_phys, &paddr, prot); +- ret = -EBUSY; +- goto out; ++ for (i = 0; i < pages; i++) { ++ pte_addr = &page_table[pte_index + i]; ++ if (unlikely(sun50i_pte_is_page_valid(*pte_addr))) { ++ phys_addr_t page_phys = sun50i_pte_get_page_address(*pte_addr); ++ dev_err(iommu->dev, ++ "iova %pad already mapped to %pa cannot remap to %pa prot: %#x\n", ++ &iova, &page_phys, &paddr, prot); ++ ret = -EBUSY; ++ goto out; ++ } ++ *pte_addr = sun50i_mk_pte(paddr, prot); ++ paddr += SPAGE_SIZE; + } + +- *pte_addr = sun50i_mk_pte(paddr, prot); +- sun50i_table_flush(sun50i_domain, pte_addr, 1); ++ sun50i_table_flush(sun50i_domain, &page_table[pte_index], pages); + + out: + return ret; +@@ -626,8 +631,10 @@ static size_t sun50i_iommu_unmap(struct iommu_domain *domain, unsigned long iova + { + struct sun50i_iommu_domain *sun50i_domain = to_sun50i_domain(domain); + phys_addr_t pt_phys; ++ u32 dte, pages, i; + u32 *pte_addr; +- u32 dte; ++ ++ pages = size / SPAGE_SIZE; + + dte = sun50i_domain->dt[sun50i_iova_get_dte_index(iova)]; + if (!sun50i_dte_is_pt_valid(dte)) +@@ -636,13 +643,14 @@ static size_t sun50i_iommu_unmap(struct iommu_domain *domain, unsigned long iova + pt_phys = sun50i_dte_get_pt_address(dte); + pte_addr = (u32 *)phys_to_virt(pt_phys) + sun50i_iova_get_pte_index(iova); + +- if (!sun50i_pte_is_page_valid(*pte_addr)) +- return 0; ++ for (i = 0; i < pages; i++) ++ if (!sun50i_pte_is_page_valid(pte_addr[i])) ++ return 0; + +- memset(pte_addr, 0, sizeof(*pte_addr)); +- sun50i_table_flush(sun50i_domain, pte_addr, 1); ++ memset(pte_addr, 0, sizeof(*pte_addr) * pages); ++ sun50i_table_flush(sun50i_domain, pte_addr, pages); + +- return SZ_4K; ++ return size; + } + + static phys_addr_t sun50i_iommu_iova_to_phys(struct iommu_domain *domain, +@@ -828,7 +836,7 @@ static int sun50i_iommu_of_xlate(struct device *dev, + } + + static const struct iommu_ops sun50i_iommu_ops = { +- .pgsize_bitmap = SZ_4K, ++ .pgsize_bitmap = 0x1ff000, + .device_group = sun50i_iommu_device_group, + .domain_alloc = sun50i_iommu_domain_alloc, + .of_xlate = sun50i_iommu_of_xlate, diff --git a/recipes-kernel/linux/linux-mainline/sunxi-kmeta/bsp/orange-pi-3lts/mfd-Add-support-for-X-Powers-AC200-EPHY-syscon.patch b/recipes-kernel/linux/linux-mainline/sunxi-kmeta/bsp/orange-pi-3lts/mfd-Add-support-for-X-Powers-AC200-EPHY-syscon.patch new file mode 100644 index 0000000..9708dfc --- /dev/null +++ b/recipes-kernel/linux/linux-mainline/sunxi-kmeta/bsp/orange-pi-3lts/mfd-Add-support-for-X-Powers-AC200-EPHY-syscon.patch @@ -0,0 +1,374 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Andre Przywara +Date: Mon, 13 Jun 2022 17:37:19 +0100 +Subject: mfd: Add support for X-Powers AC200 EPHY syscon + +The X-Powers AC200 mixed signal chip contains a 100Mbit/s Ethernet PHY. +While the PHY is using the standard MDIO and MII/RMII interfaces to +the MAC, there are some registers in the AC200 that need to be setup to +make the PHY functional: +- The MDIO PHY address needs to set. +- The LED polarity needs to be configured. +- The MII interface mode needs to be set (MII or RMII). +- There is a reset line that controls the PHY operation. +- There is a clock gate that blocks or forwards the AC200's internal clock + to the PHY. + +This driver here takes care of those setup needs, but does not cover the +actual PHY operation. Once the PHY is set up and enabled, it behaves like +a standard MDIO/MII controlled PHY, and can be driven by the IEEE802.3-C22 +driver. + +To some degree those parameters mimic the typical wired setup of a +physical PHY chip: the LED polarity, MII interface mode and PHY address +are typically configued via connecting certain pins. We use the +devicetree to learn those parameters, which depend on the board setup. + +This driver is a child of the AC200 MFD parent device, and uses its +regmap and input clock. It also provides a reset and clock controller, +which the actual PHY device (node) needs to refer to. This ensures that +this PHY control device is initialised before the PHY is expected to work. + +Signed-off-by: Andre Przywara +--- + drivers/phy/allwinner/Kconfig | 9 + + drivers/phy/allwinner/Makefile | 1 + + drivers/phy/allwinner/ac200-ephy-ctl.c | 301 ++++++++++ + 3 files changed, 311 insertions(+) + +diff --git a/drivers/phy/allwinner/Kconfig b/drivers/phy/allwinner/Kconfig +index e93a53139460..d3614169de5c 100644 +--- a/drivers/phy/allwinner/Kconfig ++++ b/drivers/phy/allwinner/Kconfig +@@ -58,3 +58,12 @@ config PHY_SUN50I_USB3 + part of Allwinner H6 SoC. + + This driver controls each individual USB 2+3 host PHY combo. ++ ++config AC200_PHY_CTL ++ tristate "X-Power AC200 PHY control driver" ++ depends on MFD_AC200 ++ depends on RESET_CONTROLLER ++ help ++ Enable this to support the Ethernet PHY operation of the AC200 ++ mixed signal chip. This driver just enables and configures the ++ PHY, the PHY itself is supported by a standard driver. +diff --git a/drivers/phy/allwinner/Makefile b/drivers/phy/allwinner/Makefile +index bd74901a1255..0eecec7a908a 100644 +--- a/drivers/phy/allwinner/Makefile ++++ b/drivers/phy/allwinner/Makefile +@@ -3,3 +3,4 @@ obj-$(CONFIG_PHY_SUN4I_USB) += phy-sun4i-usb.o + obj-$(CONFIG_PHY_SUN6I_MIPI_DPHY) += phy-sun6i-mipi-dphy.o + obj-$(CONFIG_PHY_SUN9I_USB) += phy-sun9i-usb.o + obj-$(CONFIG_PHY_SUN50I_USB3) += phy-sun50i-usb3.o ++obj-$(CONFIG_AC200_PHY_CTL) += ac200-ephy-ctl.o +diff --git a/drivers/phy/allwinner/ac200-ephy-ctl.c b/drivers/phy/allwinner/ac200-ephy-ctl.c +new file mode 100644 +index 000000000000..8efeaf18e42c +--- /dev/null ++++ b/drivers/phy/allwinner/ac200-ephy-ctl.c +@@ -0,0 +1,301 @@ ++// SPDX-License-Identifier: GPL-2.0+ ++/** ++ * syscon driver to control and configure AC200 Ethernet PHY ++ * Copyright (c) 2022 Arm Ltd. ++ * ++ * TODO's and questions: ++ * ========================= ++ * - This driver is something like a syscon driver, as it controls various ++ * bits and registers that effect other devices (the actual PHY). It's ++ * unclear where it should live, though: ++ * - it could be integrated into the MFD driver, but this looks messy ++ * - it could live at the current location (drivers/phy/allwinner), but that ++ * sounds wrong ++ * - it could be a separate file, but in drivers/mfd ++ * - anything else ++ * ++ */ ++ ++#include ++ ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++ ++/* macros for system ephy control 0 register */ ++#define AC200_SYS_EPHY_CTL0 0x0014 ++#define AC200_EPHY_RESET_INVALID BIT(0) ++#define AC200_EPHY_SYSCLK_GATING 1 ++ ++/* macros for system ephy control 1 register */ ++#define AC200_SYS_EPHY_CTL1 0x0016 ++#define AC200_EPHY_E_EPHY_MII_IO_EN BIT(0) ++#define AC200_EPHY_E_LNK_LED_IO_EN BIT(1) ++#define AC200_EPHY_E_SPD_LED_IO_EN BIT(2) ++#define AC200_EPHY_E_DPX_LED_IO_EN BIT(3) ++ ++/* macros for ephy control register */ ++#define AC200_EPHY_CTL 0x6000 ++#define AC200_EPHY_SHUTDOWN BIT(0) ++#define AC200_EPHY_LED_POL BIT(1) ++#define AC200_EPHY_CLK_SEL BIT(2) ++#define AC200_EPHY_ADDR(x) (((x) & 0x1F) << 4) ++#define AC200_EPHY_XMII_SEL BIT(11) ++#define AC200_EPHY_CALIB(x) (((x) & 0xF) << 12) ++ ++struct ac200_ephy_ctl_dev { ++ struct reset_controller_dev rcdev; ++ struct clk_hw *gate_clk; ++ struct regmap *regmap; ++}; ++ ++static struct ac200_ephy_ctl_dev *to_phy_dev(struct reset_controller_dev *rcdev) ++{ ++ return container_of(rcdev, struct ac200_ephy_ctl_dev, rcdev); ++} ++ ++static int ephy_ctl_reset(struct reset_controller_dev *rcdev, unsigned long id) ++{ ++ struct ac200_ephy_ctl_dev *ac200 = to_phy_dev(rcdev); ++ int ret; ++ ++ ret = regmap_clear_bits(ac200->regmap, AC200_SYS_EPHY_CTL0, ++ AC200_EPHY_RESET_INVALID); ++ if (ret) ++ return ret; ++ ++ /* This is going via I2C, so there is plenty of built-in delay. */ ++ return regmap_set_bits(ac200->regmap, AC200_SYS_EPHY_CTL0, ++ AC200_EPHY_RESET_INVALID); ++} ++ ++static int ephy_ctl_assert(struct reset_controller_dev *rcdev, unsigned long id) ++{ ++ struct ac200_ephy_ctl_dev *ac200 = to_phy_dev(rcdev); ++ ++ return regmap_clear_bits(ac200->regmap, AC200_SYS_EPHY_CTL0, ++ AC200_EPHY_RESET_INVALID); ++} ++ ++static int ephy_ctl_deassert(struct reset_controller_dev *rcdev, ++ unsigned long id) ++{ ++ struct ac200_ephy_ctl_dev *ac200 = to_phy_dev(rcdev); ++ ++ return regmap_set_bits(ac200->regmap, AC200_SYS_EPHY_CTL0, ++ AC200_EPHY_RESET_INVALID); ++} ++ ++static int ephy_ctl_status(struct reset_controller_dev *rcdev, unsigned long id) ++{ ++ struct ac200_ephy_ctl_dev *ac200 = to_phy_dev(rcdev); ++ ++ return regmap_test_bits(ac200->regmap, AC200_SYS_EPHY_CTL0, ++ AC200_EPHY_RESET_INVALID); ++} ++ ++static int ephy_ctl_reset_of_xlate(struct reset_controller_dev *rcdev, ++ const struct of_phandle_args *reset_spec) ++{ ++ if (WARN_ON(reset_spec->args_count != 0)) ++ return -EINVAL; ++ ++ return 0; ++} ++ ++const struct reset_control_ops ephy_ctl_reset_ops = { ++ .assert = ephy_ctl_assert, ++ .deassert = ephy_ctl_deassert, ++ .reset = ephy_ctl_reset, ++ .status = ephy_ctl_status, ++}; ++ ++static void ac200_ephy_ctl_disable(struct ac200_ephy_ctl_dev *priv) ++{ ++ regmap_write(priv->regmap, AC200_EPHY_CTL, AC200_EPHY_SHUTDOWN); ++ regmap_write(priv->regmap, AC200_SYS_EPHY_CTL1, 0); ++ regmap_write(priv->regmap, AC200_SYS_EPHY_CTL0, 0); ++} ++ ++static int ac200_ephy_ctl_probe(struct platform_device *pdev) ++{ ++ struct reset_controller_dev *rcdev; ++ struct device *dev = &pdev->dev; ++ struct ac200_ephy_ctl_dev *priv; ++ struct nvmem_cell *calcell; ++ const char *parent_name; ++ phy_interface_t phy_if; ++ u16 *caldata, ephy_ctl; ++ struct clk *clk; ++ size_t callen; ++ u32 value; ++ int ret; ++ ++ priv = devm_kzalloc(dev, sizeof(*priv), GFP_KERNEL); ++ if (!priv) ++ return -ENOMEM; ++ ++ platform_set_drvdata(pdev, priv); ++ ++ priv->regmap = dev_get_regmap(dev->parent, NULL); ++ if (!priv->regmap) ++ return -EPROBE_DEFER; ++ ++ calcell = devm_nvmem_cell_get(dev, "calibration"); ++ if (IS_ERR(calcell)) ++ return dev_err_probe(dev, PTR_ERR(calcell), ++ "Unable to find calibration data!\n"); ++ ++ caldata = nvmem_cell_read(calcell, &callen); ++ if (IS_ERR(caldata)) { ++ dev_err(dev, "Unable to read calibration data!\n"); ++ return PTR_ERR(caldata); ++ } ++ ++ if (callen != 2) { ++ dev_err(dev, "Calibration data length must be 2 bytes!\n"); ++ kfree(caldata); ++ return -EINVAL; ++ } ++ ++ ephy_ctl = AC200_EPHY_CALIB(*caldata + 3); ++ kfree(caldata); ++ ++ ret = of_get_phy_mode(dev->of_node, &phy_if); ++ if (ret) { ++ dev_err(dev, "Unable to read PHY connection mode\n"); ++ return ret; ++ } ++ ++ switch (phy_if) { ++ case PHY_INTERFACE_MODE_MII: ++ break; ++ case PHY_INTERFACE_MODE_RMII: ++ ephy_ctl |= AC200_EPHY_XMII_SEL; ++ break; ++ default: ++ dev_err(dev, "Illegal PHY connection mode (%d), only RMII or MII supported\n", ++ phy_if); ++ return -EINVAL; ++ } ++ ++ ret = of_property_read_u32(dev->of_node, "x-powers,led-polarity", ++ &value); ++ if (ret) { ++ dev_err(dev, "Unable to read LED polarity setting\n"); ++ return ret; ++ } ++ ++ if (value == GPIO_ACTIVE_LOW) ++ ephy_ctl |= AC200_EPHY_LED_POL; ++ ++ ret = of_property_read_u32(dev->of_node, "phy-address", &value); ++ if (ret) { ++ dev_err(dev, "Unable to read PHY address value\n"); ++ return ret; ++ } ++ ++ ephy_ctl |= AC200_EPHY_ADDR(value); ++ ++ clk = clk_get(dev->parent, NULL); ++ if (IS_ERR(clk)) ++ return dev_err_probe(dev, PTR_ERR(clk), ++ "Unable to obtain the clock\n"); ++ ++ if (clk_get_rate(clk) == 24000000) ++ ephy_ctl |= AC200_EPHY_CLK_SEL; ++ ++ clk_put(clk); ++ ++ /* Assert reset and gate clock, to disable PHY for now */ ++ ret = regmap_write(priv->regmap, AC200_SYS_EPHY_CTL0, 0); ++ if (ret) ++ return ret; ++ ++ ret = regmap_write(priv->regmap, AC200_SYS_EPHY_CTL1, ++ AC200_EPHY_E_EPHY_MII_IO_EN | ++ AC200_EPHY_E_LNK_LED_IO_EN | ++ AC200_EPHY_E_SPD_LED_IO_EN | ++ AC200_EPHY_E_DPX_LED_IO_EN); ++ if (ret) ++ return ret; ++ ++ ret = regmap_write(priv->regmap, AC200_EPHY_CTL, ephy_ctl); ++ if (ret) ++ return ret; ++ ++ rcdev = &priv->rcdev; ++ rcdev->owner = dev->driver->owner; ++ rcdev->nr_resets = 1; ++ rcdev->ops = &ephy_ctl_reset_ops; ++ rcdev->of_node = dev->of_node; ++ rcdev->of_reset_n_cells = 0; ++ rcdev->of_xlate = ephy_ctl_reset_of_xlate; ++ ++ ret = devm_reset_controller_register(dev, rcdev); ++ if (ret) { ++ dev_err(dev, "Unable to register reset controller: %d\n", ret); ++ goto err_disable_ephy; ++ } ++ ++ parent_name = of_clk_get_parent_name(dev->parent->of_node, 0); ++ priv->gate_clk = devm_clk_hw_register_regmap_gate(dev, ++ "ac200-ephy-ctl-gate", parent_name, 0, ++ priv->regmap, AC200_SYS_EPHY_CTL0, ++ AC200_EPHY_SYSCLK_GATING, 0); ++ if (IS_ERR(priv->gate_clk)) { ++ ret = PTR_ERR(priv->gate_clk); ++ dev_err(dev, "Unable to register gate clock: %d\n", ret); ++ goto err_disable_ephy; ++ } ++ ++ ret = devm_of_clk_add_hw_provider(dev, of_clk_hw_simple_get, ++ priv->gate_clk); ++ if (ret) { ++ dev_err(dev, "Unable to register clock provider: %d\n", ret); ++ goto err_disable_ephy; ++ } ++ ++ return 0; ++ ++err_disable_ephy: ++ ac200_ephy_ctl_disable(priv); ++ ++ return ret; ++} ++ ++static int ac200_ephy_ctl_remove(struct platform_device *pdev) ++{ ++ struct ac200_ephy_ctl_dev *priv = platform_get_drvdata(pdev); ++ ++ ac200_ephy_ctl_disable(priv); ++ ++ return 0; ++} ++ ++static const struct of_device_id ac200_ephy_ctl_match[] = { ++ { .compatible = "x-powers,ac200-ephy-ctl" }, ++ { /* sentinel */ } ++}; ++MODULE_DEVICE_TABLE(of, ac200_ephy_ctl_match); ++ ++static struct platform_driver ac200_ephy_ctl_driver = { ++ .probe = ac200_ephy_ctl_probe, ++ .remove = ac200_ephy_ctl_remove, ++ .driver = { ++ .name = "ac200-ephy-ctl", ++ .of_match_table = ac200_ephy_ctl_match, ++ }, ++}; ++module_platform_driver(ac200_ephy_ctl_driver); ++ ++MODULE_AUTHOR("Andre Przywara "); ++MODULE_DESCRIPTION("AC200 Ethernet PHY control driver"); ++MODULE_LICENSE("GPL"); +-- +Armbian + diff --git a/recipes-kernel/linux/linux-mainline/sunxi-kmeta/bsp/orange-pi-3lts/mfd-Add-support-for-X-Powers-AC200.patch b/recipes-kernel/linux/linux-mainline/sunxi-kmeta/bsp/orange-pi-3lts/mfd-Add-support-for-X-Powers-AC200.patch new file mode 100644 index 0000000..5c3c526 --- /dev/null +++ b/recipes-kernel/linux/linux-mainline/sunxi-kmeta/bsp/orange-pi-3lts/mfd-Add-support-for-X-Powers-AC200.patch @@ -0,0 +1,265 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Jernej Skrabec +Date: Fri, 16 Aug 2019 16:38:21 +0200 +Subject: mfd: Add support for X-Powers AC200 + +The X-Powers AC200 is a mixed signal multi-purpose chip, which provides +audio DAC/ADCs, a CVBS video encoder, a 100Mbit/s Ethernet PHY and a +real-time clock. Its control registers can be accessed via I2C or +Allwinner's RSB bus. +Beside this chip being used on some older boards (for instance the Remix +Mini PC), it is quite wide spread due to its die being co-packaged on the +Allwinner H6 and H616 SoCs, which use its audio, video and PHY +functionality. + +Aside from the RTC, the other functions do not need constant +hand-holding via the I2C registers, but rather need to be configured and +enabled only once. + +We model the control side of this chip using the MFD subsystem. This +driver here just provides the parent device for the various subfunctions, +and takes care of enabling clocks and reset, but also provides the regmap, +which the respective child drivers will use. + +Signed-off-by: Jernej Skrabec +Signed-off-by: Andre Przywara +--- + drivers/mfd/Kconfig | 12 + + drivers/mfd/Makefile | 1 + + drivers/mfd/ac200.c | 190 ++++++++++ + 3 files changed, 203 insertions(+) + +diff --git a/drivers/mfd/Kconfig b/drivers/mfd/Kconfig +index f6b519eaaa71..39fef6420fe5 100644 +--- a/drivers/mfd/Kconfig ++++ b/drivers/mfd/Kconfig +@@ -191,6 +191,18 @@ config MFD_AC100 + This driver include only the core APIs. You have to select individual + components like codecs or RTC under the corresponding menus. + ++config MFD_AC200 ++ tristate "X-Powers AC200" ++ select MFD_CORE ++ select REGMAP_I2C ++ depends on COMMON_CLK ++ depends on I2C ++ depends on OF ++ help ++ If you say Y here you get support for the X-Powers AC200 IC. ++ This driver include only the core APIs. You have to select individual ++ components like Ethernet PHY or codec under the corresponding menus. ++ + config MFD_AXP20X + tristate + select MFD_CORE +diff --git a/drivers/mfd/Makefile b/drivers/mfd/Makefile +index f3d1f1dc73b5..e2ba77bd1d51 100644 +--- a/drivers/mfd/Makefile ++++ b/drivers/mfd/Makefile +@@ -137,6 +137,7 @@ obj-$(CONFIG_MFD_DA9052_SPI) += da9052-spi.o + obj-$(CONFIG_MFD_DA9052_I2C) += da9052-i2c.o + + obj-$(CONFIG_MFD_AC100) += ac100.o ++obj-$(CONFIG_MFD_AC200) += ac200.o + obj-$(CONFIG_MFD_AXP20X) += axp20x.o + obj-$(CONFIG_MFD_AXP20X_I2C) += axp20x-i2c.o + obj-$(CONFIG_MFD_AXP20X_RSB) += axp20x-rsb.o +diff --git a/drivers/mfd/ac200.c b/drivers/mfd/ac200.c +new file mode 100644 +index 000000000000..ad28c380c880 +--- /dev/null ++++ b/drivers/mfd/ac200.c +@@ -0,0 +1,190 @@ ++// SPDX-License-Identifier: GPL-2.0-only ++/* ++ * MFD core driver for X-Powers' AC200 IC ++ * ++ * The AC200 is a chip which is co-packaged with Allwinner H6 SoC and ++ * includes analog audio codec, analog TV encoder, ethernet PHY, eFuse ++ * and RTC. ++ * ++ * Copyright (c) 2019 Jernej Skrabec ++ * ++ * Based on AC100 driver with following copyrights: ++ * Copyright (2016) Chen-Yu Tsai ++ */ ++ ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++ ++struct ac200_dev { ++ struct clk *clk; ++ struct regmap *regmap; ++}; ++ ++#define AC200_SYS_CONTROL 0x0002 ++#define AC200_SYS_BG_CTL 0x0050 ++ ++/* interface register (can be accessed from any page) */ ++#define AC200_TWI_REG_ADDR_H 0xFE ++ ++#define AC200_MAX_REG 0xA1F2 ++ ++static const struct regmap_range_cfg ac200_range_cfg[] = { ++ { ++ .range_max = AC200_MAX_REG, ++ .selector_reg = AC200_TWI_REG_ADDR_H, ++ .selector_mask = 0xff, ++ .selector_shift = 0, ++ .window_start = 0, ++ .window_len = 256, ++ } ++}; ++ ++static const struct regmap_config ac200_regmap_config = { ++ .name = "AC200", ++ .reg_bits = 8, ++ .reg_stride = 2, ++ .val_bits = 16, ++ .ranges = ac200_range_cfg, ++ .num_ranges = ARRAY_SIZE(ac200_range_cfg), ++ .max_register = AC200_MAX_REG, ++}; ++ ++static struct mfd_cell ac200_cells[] = { ++ { ++ .name = "ac200-codec", ++ .of_compatible = "x-powers,ac200-codec", ++ }, { ++ .name = "ac200-ephy-ctl", ++ .of_compatible = "x-powers,ac200-ephy-ctl", ++ }, ++}; ++ ++static int ac200_i2c_probe(struct i2c_client *i2c) ++{ ++ struct device *dev = &i2c->dev; ++ struct nvmem_cell *bgcell; ++ struct ac200_dev *ac200; ++ u16 *bgdata, bgval; ++ size_t bglen; ++ int ret; ++ ++ ac200 = devm_kzalloc(dev, sizeof(*ac200), GFP_KERNEL); ++ if (!ac200) ++ return -ENOMEM; ++ ++ i2c_set_clientdata(i2c, ac200); ++ ++ ac200->clk = devm_clk_get(dev, NULL); ++ if (IS_ERR(ac200->clk)) ++ return dev_err_probe(dev, PTR_ERR(ac200->clk), ++ "Can't obtain the clock\n"); ++ ++ ac200->regmap = devm_regmap_init_i2c(i2c, &ac200_regmap_config); ++ if (IS_ERR(ac200->regmap)) { ++ ret = PTR_ERR(ac200->regmap); ++ dev_err(dev, "Regmap init failed: %d\n", ret); ++ return ret; ++ } ++ ++ bgcell = devm_nvmem_cell_get(dev, "bandgap"); ++ if (IS_ERR(bgcell)) ++ return dev_err_probe(dev, PTR_ERR(bgcell), ++ "Unable to find bandgap data!\n"); ++ ++ bgdata = nvmem_cell_read(bgcell, &bglen); ++ if (IS_ERR(bgdata)) { ++ dev_err(dev, "Unable to read bandgap data!\n"); ++ return PTR_ERR(bgdata); ++ } ++ ++ if (bglen != 2) { ++ dev_err(dev, "Invalid nvmem bandgap length!\n"); ++ kfree(bgdata); ++ return -EINVAL; ++ } ++ ++ bgval = *bgdata; ++ kfree(bgdata); ++ ++ ret = clk_prepare_enable(ac200->clk); ++ if (ret) ++ return ret; ++ ++ /* ++ * There is no documentation on how long we have to wait before ++ * executing first operation. Vendor driver sleeps for 40 ms. ++ */ ++ msleep(40); ++ ++ ret = regmap_write(ac200->regmap, AC200_SYS_CONTROL, 0); ++ if (ret) ++ goto err; ++ ++ ret = regmap_write(ac200->regmap, AC200_SYS_CONTROL, 1); ++ if (ret) ++ goto err; ++ ++ if (bgval) { ++ /* bandgap register is not documented */ ++ ret = regmap_write(ac200->regmap, AC200_SYS_BG_CTL, ++ 0x8280 | bgval); ++ if (ret) ++ goto err; ++ } ++ ++ ret = devm_mfd_add_devices(dev, PLATFORM_DEVID_NONE, ac200_cells, ++ ARRAY_SIZE(ac200_cells), NULL, 0, NULL); ++ if (ret) { ++ dev_err(dev, "Failed to add MFD devices: %d\n", ret); ++ goto err; ++ } ++ ++ return 0; ++ ++err: ++ clk_disable_unprepare(ac200->clk); ++ return ret; ++} ++ ++static void ac200_i2c_remove(struct i2c_client *i2c) ++{ ++ struct ac200_dev *ac200 = i2c_get_clientdata(i2c); ++ ++ regmap_write(ac200->regmap, AC200_SYS_CONTROL, 0); ++ ++ clk_disable_unprepare(ac200->clk); ++} ++ ++static const struct i2c_device_id ac200_ids[] = { ++ { "ac200", }, ++ { } ++}; ++MODULE_DEVICE_TABLE(i2c, ac200_ids); ++ ++static const struct of_device_id ac200_of_match[] = { ++ { .compatible = "x-powers,ac200" }, ++ { } ++}; ++MODULE_DEVICE_TABLE(of, ac200_of_match); ++ ++static struct i2c_driver ac200_i2c_driver = { ++ .driver = { ++ .name = "ac200", ++ .of_match_table = of_match_ptr(ac200_of_match), ++ }, ++ .probe = ac200_i2c_probe, ++ .remove = ac200_i2c_remove, ++ .id_table = ac200_ids, ++}; ++module_i2c_driver(ac200_i2c_driver); ++ ++MODULE_DESCRIPTION("MFD core driver for AC200"); ++MODULE_AUTHOR("Jernej Skrabec "); ++MODULE_LICENSE("GPL v2"); +-- +Armbian + diff --git a/recipes-kernel/linux/linux-mainline/sunxi-kmeta/bsp/orange-pi-3lts/mmc-sunxi-fix-unusuable-eMMC-on-some-H6-boards-by-di.patch b/recipes-kernel/linux/linux-mainline/sunxi-kmeta/bsp/orange-pi-3lts/mmc-sunxi-fix-unusuable-eMMC-on-some-H6-boards-by-di.patch new file mode 100644 index 0000000..bf3b0c5 --- /dev/null +++ b/recipes-kernel/linux/linux-mainline/sunxi-kmeta/bsp/orange-pi-3lts/mmc-sunxi-fix-unusuable-eMMC-on-some-H6-boards-by-di.patch @@ -0,0 +1,60 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Alejandro=20Gonz=C3=A1lez?= + +Date: Sun, 25 Aug 2019 17:05:58 +0200 +Subject: [PATCH] mmc: sunxi: fix unusuable eMMC on some H6 boards by disabling + DDR +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Some Allwinner H6 boards have timing problems when dealing with +DDR-capable eMMC cards. These boards include the Pine H64 and Tanix TX6. + +These timing problems result in out of sync communication between the +driver and the eMMC, which renders the memory unsuable for every +operation but some basic commmands, like reading the status register. + +The cause of these timing problems is not yet well known, but they go +away by disabling DDR mode operation in the driver. Like on some H5 +boards, it might be that the traces are not precise enough to support +these speeds. However, Jernej Skrabec compared the BSP driver with this +driver, and found that the BSP driver configures pinctrl to operate at +1.8 V when entering DDR mode (although 3.3 V operation is supported), while +the mainline kernel lacks any mechanism to switch voltages dynamically. +Finally, other possible cause might be some timing parameter that is +different on the H6 with respect to other SoCs. + +Therefore, as this fix works reliably, the kernel lacks the required +dynamic pinctrl control for now and a slow eMMC is better than a not +working eMMC, just disable DDR operation for now on H6-compatible +devices. + +Signed-off-by: Alejandro González +--- + drivers/mmc/host/sunxi-mmc.c | 9 ++++++--- + 1 file changed, 6 insertions(+), 3 deletions(-) + +--- a/drivers/mmc/host/sunxi-mmc.c ++++ b/drivers/mmc/host/sunxi-mmc.c +@@ -1421,14 +1421,17 @@ static int sunxi_mmc_probe(struct platfo + + /* + * Some H5 devices do not have signal traces precise enough to +- * use HS DDR mode for their eMMC chips. ++ * use HS DDR mode for their eMMC chips. Other H6 devices operate ++ * unreliably on HS DDR mode, too. + * + * We still enable HS DDR modes for all the other controller +- * variants that support them. ++ * variants that support them properly. + */ + if ((host->cfg->clk_delays || host->use_new_timings) && + !of_device_is_compatible(pdev->dev.of_node, +- "allwinner,sun50i-h5-emmc")) ++ "allwinner,sun50i-h5-emmc") && ++ !of_device_is_compatible(pdev->dev.of_node, ++ "allwinner,sun50i-h6-emmc")) + mmc->caps |= MMC_CAP_1_8V_DDR | MMC_CAP_3_3V_DDR; + + ret = mmc_of_parse(mmc); diff --git a/recipes-kernel/linux/linux-mainline/sunxi-kmeta/bsp/orange-pi-3lts/orange-pi-3lts-6_5.scc b/recipes-kernel/linux/linux-mainline/sunxi-kmeta/bsp/orange-pi-3lts/orange-pi-3lts-6_5.scc new file mode 100644 index 0000000..ad96b00 --- /dev/null +++ b/recipes-kernel/linux/linux-mainline/sunxi-kmeta/bsp/orange-pi-3lts/orange-pi-3lts-6_5.scc @@ -0,0 +1,8 @@ +# K metadata for orangepi lts +# version 6.5 + +patch Input-axp20x-pek-allow-wakeup-after-shutdown-6_5.patch +patch mfd-Add-support-for-X-Powers-AC200-EPHY-syscon.patch +patch mfd-Add-support-for-X-Powers-AC200.patch + +include orange-pi-3lts-common.scc diff --git a/recipes-kernel/linux/linux-mainline/sunxi-kmeta/bsp/orange-pi-3lts/orange-pi-3lts-common.scc b/recipes-kernel/linux/linux-mainline/sunxi-kmeta/bsp/orange-pi-3lts/orange-pi-3lts-common.scc new file mode 100644 index 0000000..22a5bea --- /dev/null +++ b/recipes-kernel/linux/linux-mainline/sunxi-kmeta/bsp/orange-pi-3lts/orange-pi-3lts-common.scc @@ -0,0 +1,20 @@ +# Kmeta common +# + +patch clk-Implement-protected-clocks-for-all-OF-clock-prov.patch +patch Revert-clk-qcom-Support-protected-clocks-property.patch +patch rtc-sun6i-Allow-RTC-wakeup-after-shutdown.patch +patch firmware-arm_scpi-Support-unidirectional-mailbox-cha.patch +patch arm64-dts-allwinner-h6-Add-SCPI-protocol.patch +patch ASoC-hdmi-codec-fix-channel-allocation.patch +patch arm64-dts-h6-deinterlace.patch +patch HACK-h6-Add-HDMI-sound-card.patch +patch arm64-dts-allwinner-h6-Add-AC200-EPHY-related-nodes.patch +patch mmc-sunxi-fix-unusuable-eMMC-on-some-H6-boards-by-di.patch +patch wip-fix-H6-4k-60.patch +patch arm64-dts-allwinner-h6-Fix-Cedrus-IOMMU-again.patch +patch iommu-sun50i-Allow-page-sizes-multiple-of-4096.patch +patch OrangePi-3-LTS-support.patch +patch arm64-dts-allwinner-Enforce-consistent-MMC-numbering.patch + +kconf harware orange-pi-3lts.cfg diff --git a/recipes-kernel/linux/linux-mainline/sunxi-kmeta/bsp/orange-pi-3lts/orange-pi-3lts.cfg b/recipes-kernel/linux/linux-mainline/sunxi-kmeta/bsp/orange-pi-3lts/orange-pi-3lts.cfg new file mode 100644 index 0000000..e3bceda --- /dev/null +++ b/recipes-kernel/linux/linux-mainline/sunxi-kmeta/bsp/orange-pi-3lts/orange-pi-3lts.cfg @@ -0,0 +1,5 @@ +CONFIG_NVMEM_SUNXI_SID=y +CONFIG_INIT_STACK_NONE=y +CONFIG_PHY_SUN50I_USB3=y +CONFIG_AC200_PHY=m +CONFIG_MFD_AC200=m diff --git a/recipes-kernel/linux/linux-mainline/sunxi-kmeta/bsp/orange-pi-3lts/rtc-sun6i-Allow-RTC-wakeup-after-shutdown.patch b/recipes-kernel/linux/linux-mainline/sunxi-kmeta/bsp/orange-pi-3lts/rtc-sun6i-Allow-RTC-wakeup-after-shutdown.patch new file mode 100644 index 0000000..3abf3b5 --- /dev/null +++ b/recipes-kernel/linux/linux-mainline/sunxi-kmeta/bsp/orange-pi-3lts/rtc-sun6i-Allow-RTC-wakeup-after-shutdown.patch @@ -0,0 +1,62 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Samuel Holland +Date: Sat, 2 Jan 2021 15:52:27 -0600 +Subject: [PATCH] rtc: sun6i: Allow RTC wakeup after shutdown + +Only IRQs that have enable_irq_wake() called on them can wake the system +from sleep or after it has been shut down. Currently, the RTC alarm can +only wake the system from sleep. Run the suspend callback to arm the IRQ +during the shutdown process, so the RTC alarm also works after shutdown. + +Signed-off-by: Samuel Holland +--- + drivers/rtc/rtc-sun6i.c | 10 +++++++--- + 1 file changed, 7 insertions(+), 3 deletions(-) + +--- a/drivers/rtc/rtc-sun6i.c ++++ b/drivers/rtc/rtc-sun6i.c +@@ -641,7 +641,6 @@ static const struct rtc_class_ops sun6i_ + .alarm_irq_enable = sun6i_rtc_alarm_irq_enable + }; + +-#ifdef CONFIG_PM_SLEEP + /* Enable IRQ wake on suspend, to wake up from RTC. */ + static int sun6i_rtc_suspend(struct device *dev) + { +@@ -654,7 +653,7 @@ static int sun6i_rtc_suspend(struct devi + } + + /* Disable IRQ wake on resume. */ +-static int sun6i_rtc_resume(struct device *dev) ++static int __maybe_unused sun6i_rtc_resume(struct device *dev) + { + struct sun6i_rtc_dev *chip = dev_get_drvdata(dev); + +@@ -663,7 +662,6 @@ static int sun6i_rtc_resume(struct devic + + return 0; + } +-#endif + + static SIMPLE_DEV_PM_OPS(sun6i_rtc_pm_ops, + sun6i_rtc_suspend, sun6i_rtc_resume); +@@ -735,6 +733,11 @@ static int sun6i_rtc_probe(struct platfo + return 0; + } + ++static void sun6i_rtc_shutdown(struct platform_device *pdev) ++{ ++ sun6i_rtc_suspend(&pdev->dev); ++} ++ + /* + * As far as RTC functionality goes, all models are the same. The + * datasheets claim that different models have different number of +@@ -755,6 +758,7 @@ MODULE_DEVICE_TABLE(of, sun6i_rtc_dt_ids + + static struct platform_driver sun6i_rtc_driver = { + .probe = sun6i_rtc_probe, ++ .shutdown = sun6i_rtc_shutdown, + .driver = { + .name = "sun6i-rtc", + .of_match_table = sun6i_rtc_dt_ids, diff --git a/recipes-kernel/linux/linux-mainline/sunxi-kmeta/bsp/orange-pi-3lts/wip-fix-H6-4k-60.patch b/recipes-kernel/linux/linux-mainline/sunxi-kmeta/bsp/orange-pi-3lts/wip-fix-H6-4k-60.patch new file mode 100644 index 0000000..1b956fb --- /dev/null +++ b/recipes-kernel/linux/linux-mainline/sunxi-kmeta/bsp/orange-pi-3lts/wip-fix-H6-4k-60.patch @@ -0,0 +1,75 @@ +From edc858b1d62ce5ffd8b8d10cc62425af15d48a91 Mon Sep 17 00:00:00 2001 +From: Jernej Skrabec +Date: Wed, 8 Dec 2021 20:42:45 +0100 +Subject: [PATCH] wip: fix H6 4k@60 + +Signed-off-by: Jernej Skrabec +--- + drivers/gpu/drm/bridge/synopsys/dw-hdmi.c | 7 +++++++ + drivers/gpu/drm/bridge/synopsys/dw-hdmi.h | 4 ++++ + drivers/gpu/drm/sun4i/sun8i_hdmi_phy.c | 2 +- + 3 files changed, 12 insertions(+), 1 deletion(-) + +diff --git a/drivers/gpu/drm/bridge/synopsys/dw-hdmi.c b/drivers/gpu/drm/bridge/synopsys/dw-hdmi.c +index f08d0fded61f..bcd839a3ce80 100644 +--- a/drivers/gpu/drm/bridge/synopsys/dw-hdmi.c ++++ b/drivers/gpu/drm/bridge/synopsys/dw-hdmi.c +@@ -1488,6 +1488,8 @@ static int hdmi_phy_configure_dwc_hdmi_3d_tx(struct dw_hdmi *hdmi, + /* Override and disable clock termination. */ + dw_hdmi_phy_i2c_write(hdmi, HDMI_3D_TX_PHY_CKCALCTRL_OVERRIDE, + HDMI_3D_TX_PHY_CKCALCTRL); ++ if (mpixelclock == 594000000) ++ dw_hdmi_phy_i2c_write(hdmi, 0x8006, HDMI_3D_TX_PHY_MSM_CTRL); + + return 0; + } +@@ -2166,6 +2168,8 @@ static int dw_hdmi_setup(struct dw_hdmi *hdmi, + hdmi->hdmi_data.hdcp_enable = 0; + hdmi->hdmi_data.video_mode.mdataenablepolarity = true; + ++ hdmi_writeb(hdmi, HDMI_FC_GCP_SET_AVMUTE, HDMI_FC_GCP); ++ + /* HDMI Initialization Step B.1 */ + hdmi_av_composer(hdmi, &connector->display_info, mode); + +@@ -2205,6 +2209,9 @@ static int dw_hdmi_setup(struct dw_hdmi *hdmi, + hdmi_video_sample(hdmi); + hdmi_tx_hdcp_config(hdmi); + ++ msleep(100); ++ hdmi_writeb(hdmi, HDMI_FC_GCP_CLEAR_AVMUTE, HDMI_FC_GCP); ++ + dw_hdmi_clear_overflow(hdmi); + + return 0; +diff --git a/drivers/gpu/drm/bridge/synopsys/dw-hdmi.h b/drivers/gpu/drm/bridge/synopsys/dw-hdmi.h +index 1999db05bc3b..05182418efbb 100644 +--- a/drivers/gpu/drm/bridge/synopsys/dw-hdmi.h ++++ b/drivers/gpu/drm/bridge/synopsys/dw-hdmi.h +@@ -842,6 +842,10 @@ enum { + HDMI_FC_AVICONF3_QUANT_RANGE_LIMITED = 0x00, + HDMI_FC_AVICONF3_QUANT_RANGE_FULL = 0x04, + ++/* HDMI_FC_GCP */ ++ HDMI_FC_GCP_SET_AVMUTE = 0x2, ++ HDMI_FC_GCP_CLEAR_AVMUTE = 0x1, ++ + /* FC_DBGFORCE field values */ + HDMI_FC_DBGFORCE_FORCEAUDIO = 0x10, + HDMI_FC_DBGFORCE_FORCEVIDEO = 0x1, +diff --git a/drivers/gpu/drm/sun4i/sun8i_hdmi_phy.c b/drivers/gpu/drm/sun4i/sun8i_hdmi_phy.c +index b64d93da651d..b70bc9de761f 100644 +--- a/drivers/gpu/drm/sun4i/sun8i_hdmi_phy.c ++++ b/drivers/gpu/drm/sun4i/sun8i_hdmi_phy.c +@@ -90,7 +90,7 @@ static const struct dw_hdmi_mpll_config sun50i_h6_mpll_cfg[] = { + }, + }, { + 594000000, { +- { 0x1a40, 0x0003 }, ++ { 0x1a7c, 0x0003 }, + { 0x3b4c, 0x0003 }, + { 0x5a64, 0x0003 }, + }, +-- +2.34.1 + diff --git a/recipes-kernel/linux/linux-mainline-6.1.9/orange-pi-zero2/0008-drv-add-sunxi-addr-driver.patch b/recipes-kernel/linux/linux-mainline/sunxi-kmeta/bsp/uwe5622/0001-drv-fix-MAC-address-for-UWE5622.patch similarity index 93% rename from recipes-kernel/linux/linux-mainline-6.1.9/orange-pi-zero2/0008-drv-add-sunxi-addr-driver.patch rename to recipes-kernel/linux/linux-mainline/sunxi-kmeta/bsp/uwe5622/0001-drv-fix-MAC-address-for-UWE5622.patch index 4e7ddd4..db4bbe0 100644 --- a/recipes-kernel/linux/linux-mainline-6.1.9/orange-pi-zero2/0008-drv-add-sunxi-addr-driver.patch +++ b/recipes-kernel/linux/linux-mainline/sunxi-kmeta/bsp/uwe5622/0001-drv-fix-MAC-address-for-UWE5622.patch @@ -1,64 +1,65 @@ -From 418436514e2e64e07e7fd2ef9d77ec4712d1033b Mon Sep 17 00:00:00 2001 -From: pbiel -Date: Fri, 24 Feb 2023 10:38:03 +0100 -Subject: [PATCH 2/2] Add sunxi addr driver +From 5e8062c5f6500526633934006c2858812961f6f4 Mon Sep 17 00:00:00 2001 +From: OpenEmbedded +Date: Wed, 22 May 2024 15:36:46 +0200 +Subject: [PATCH] drv fix MAC address for UWE5622 --- drivers/misc/Kconfig | 1 + drivers/misc/Makefile | 1 + - drivers/misc/sunxi-addr/Kconfig | 6 + - drivers/misc/sunxi-addr/Makefile | 5 + + drivers/misc/sunxi-addr/Kconfig | 7 + + drivers/misc/sunxi-addr/Makefile | 6 + drivers/misc/sunxi-addr/sha256.c | 178 +++++++++++++ drivers/misc/sunxi-addr/sunxi-addr.c | 358 +++++++++++++++++++++++++++ - 6 files changed, 549 insertions(+) + 6 files changed, 551 insertions(+) create mode 100644 drivers/misc/sunxi-addr/Kconfig create mode 100644 drivers/misc/sunxi-addr/Makefile create mode 100644 drivers/misc/sunxi-addr/sha256.c create mode 100644 drivers/misc/sunxi-addr/sunxi-addr.c diff --git a/drivers/misc/Kconfig b/drivers/misc/Kconfig -index 358ad56f6..c59480dc8 100644 +index cadd4a820..605e4d2ba 100644 --- a/drivers/misc/Kconfig +++ b/drivers/misc/Kconfig -@@ -514,4 +514,5 @@ source "drivers/misc/habanalabs/Kconfig" +@@ -579,4 +579,5 @@ source "drivers/misc/cardreader/Kconfig" source "drivers/misc/uacce/Kconfig" source "drivers/misc/pvpanic/Kconfig" source "drivers/misc/mchp_pci1xxxx/Kconfig" +source "drivers/misc/sunxi-addr/Kconfig" endmenu diff --git a/drivers/misc/Makefile b/drivers/misc/Makefile -index ac9b3e757..487a2bf2d 100644 +index f2a4d1ff6..06e857d70 100644 --- a/drivers/misc/Makefile +++ b/drivers/misc/Makefile -@@ -62,3 +62,4 @@ obj-$(CONFIG_HI6421V600_IRQ) += hi6421v600-irq.o - obj-$(CONFIG_OPEN_DICE) += open-dice.o - obj-$(CONFIG_GP_PCI1XXXX) += mchp_pci1xxxx/ - obj-$(CONFIG_VCPU_STALL_DETECTOR) += vcpu_stall_detector.o +@@ -67,3 +67,4 @@ obj-$(CONFIG_TMR_MANAGER) += xilinx_tmr_manager.o + obj-$(CONFIG_TMR_INJECT) += xilinx_tmr_inject.o + obj-$(CONFIG_TPS6594_ESM) += tps6594-esm.o + obj-$(CONFIG_TPS6594_PFSM) += tps6594-pfsm.o +obj-$(CONFIG_SUNXI_ADDR_MGT) += sunxi-addr/ -\ No newline at end of file diff --git a/drivers/misc/sunxi-addr/Kconfig b/drivers/misc/sunxi-addr/Kconfig new file mode 100644 -index 000000000..801dd2c02 +index 000000000..d7d0ca3bd --- /dev/null +++ b/drivers/misc/sunxi-addr/Kconfig -@@ -0,0 +1,6 @@ +@@ -0,0 +1,7 @@ +config SUNXI_ADDR_MGT + tristate "Allwinner Network MAC Addess Manager" + depends on BT || ETHERNET || WLAN + depends on NVMEM_SUNXI_SID + help + allwinner network mac address management ++ diff --git a/drivers/misc/sunxi-addr/Makefile b/drivers/misc/sunxi-addr/Makefile new file mode 100644 -index 000000000..f01fd4783 +index 000000000..9bafcece5 --- /dev/null +++ b/drivers/misc/sunxi-addr/Makefile -@@ -0,0 +1,5 @@ +@@ -0,0 +1,6 @@ +# +# Makefile for wifi mac addr manager drivers +# +sunxi_addr-objs := sunxi-addr.o sha256.o +obj-$(CONFIG_SUNXI_ADDR_MGT) += sunxi_addr.o ++ diff --git a/drivers/misc/sunxi-addr/sha256.c b/drivers/misc/sunxi-addr/sha256.c new file mode 100644 index 000000000..78825810c @@ -245,7 +246,7 @@ index 000000000..78825810c +} diff --git a/drivers/misc/sunxi-addr/sunxi-addr.c b/drivers/misc/sunxi-addr/sunxi-addr.c new file mode 100644 -index 000000000..a812e4e82 +index 000000000..3ba0a113f --- /dev/null +++ b/drivers/misc/sunxi-addr/sunxi-addr.c @@ -0,0 +1,358 @@ @@ -291,16 +292,16 @@ index 000000000..a812e4e82 +#define IS_TYPE_INVALID(x) ((x < TYPE_ANY) || (x > TYPE_RAND)) + +#define ADDR_CLASS_ATTR_ADD(name) \ -+static ssize_t addr_##name##_show(struct class *class, \ -+ struct class_attribute *attr, char *buffer) \ ++static ssize_t addr_##name##_show(const struct class *class, \ ++ const struct class_attribute *attr, char *buffer) \ +{ \ + char addr[ADDR_STR_LEN]; \ + if (IS_TYPE_INVALID(get_addr_by_name(ADDR_FMT_STR, addr, #name))) \ + return 0; \ + return sprintf(buffer, "%.17s\n", addr); \ +} \ -+static ssize_t addr_##name##_store(struct class *class, \ -+ struct class_attribute *attr, \ ++static ssize_t addr_##name##_store(const struct class *class, \ ++ const struct class_attribute *attr, \ + const char *buffer, size_t count) \ +{ \ + if (count != ADDR_STR_LEN) { \ @@ -525,8 +526,8 @@ index 000000000..a812e4e82 + return 0; +} + -+static ssize_t summary_show(struct class *class, -+ struct class_attribute *attr, char *buffer) ++static ssize_t summary_show(const struct class *class, ++ const struct class_attribute *attr, char *buffer) +{ + int i = 0, ret = 0; + @@ -557,7 +558,6 @@ index 000000000..a812e4e82 + +static struct class addr_class = { + .name = "addr_mgt", -+ .owner = THIS_MODULE, + .class_groups = addr_class_groups, +}; + @@ -607,6 +607,4 @@ index 000000000..a812e4e82 +MODULE_AUTHOR("Allwinnertech"); +MODULE_DESCRIPTION("Network MAC Addess Manager"); +MODULE_LICENSE("GPL"); --- -2.34.1 - ++ diff --git a/recipes-kernel/linux/linux-mainline/sunxi-kmeta/bsp/uwe5622/add-uwe5622-to-wireless-makefile.patch b/recipes-kernel/linux/linux-mainline/sunxi-kmeta/bsp/uwe5622/add-uwe5622-to-wireless-makefile.patch new file mode 100644 index 0000000..a1ae271 --- /dev/null +++ b/recipes-kernel/linux/linux-mainline/sunxi-kmeta/bsp/uwe5622/add-uwe5622-to-wireless-makefile.patch @@ -0,0 +1,25 @@ +From e5017f74e32f644f9c707f788b2aaf47a98b820c Mon Sep 17 00:00:00 2001 +From: OpenEmbedded +Date: Wed, 6 Dec 2023 00:38:22 +0100 +Subject: [PATCH 2/2] add uwe5622 to wireless makefile + +--- + drivers/net/wireless/Makefile | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/drivers/net/wireless/Makefile b/drivers/net/wireless/Makefile +index a61cf6c90..455cf9296 100644 +--- a/drivers/net/wireless/Makefile ++++ b/drivers/net/wireless/Makefile +@@ -2,7 +2,7 @@ + # + # Makefile for the Linux Wireless network device drivers. + # +- ++obj-$(CONFIG_SPARD_WLAN_SUPPORT) += uwe5622/ + obj-$(CONFIG_WLAN_VENDOR_ADMTEK) += admtek/ + obj-$(CONFIG_WLAN_VENDOR_ATH) += ath/ + obj-$(CONFIG_WLAN_VENDOR_ATMEL) += atmel/ +-- +2.43.0 + diff --git a/recipes-kernel/linux/linux-mainline/sunxi-kmeta/bsp/uwe5622/fix-makefiles-for-yocto-build.patch b/recipes-kernel/linux/linux-mainline/sunxi-kmeta/bsp/uwe5622/fix-makefiles-for-yocto-build.patch new file mode 100644 index 0000000..f0f45f9 --- /dev/null +++ b/recipes-kernel/linux/linux-mainline/sunxi-kmeta/bsp/uwe5622/fix-makefiles-for-yocto-build.patch @@ -0,0 +1,50 @@ +From 3c57b45edef027fe994cd469185f10a04f12dcd7 Mon Sep 17 00:00:00 2001 +From: OpenEmbedded +Date: Sat, 25 Nov 2023 14:39:37 +0000 +Subject: [PATCH] fix makefiles for yocto build + +--- + drivers/net/wireless/uwe5622/Makefile | 2 +- + drivers/net/wireless/uwe5622/unisocwcn/Makefile | 9 +++++---- + 2 files changed, 6 insertions(+), 5 deletions(-) + +diff --git a/drivers/net/wireless/uwe5622/Makefile b/drivers/net/wireless/uwe5622/Makefile +index d2210439f3cc..09e06defdfcf 100644 +--- a/drivers/net/wireless/uwe5622/Makefile ++++ b/drivers/net/wireless/uwe5622/Makefile +@@ -2,7 +2,7 @@ obj-$(CONFIG_RK_WIFI_DEVICE_UWE5622) += unisocwcn/ + obj-$(CONFIG_WLAN_UWE5622) += unisocwifi/ + obj-$(CONFIG_TTY_OVERY_SDIO) += tty-sdio/ + +-UNISOCWCN_DIR := $(shell cd $(src)/unisocwcn/ && /bin/pwd) ++UNISOCWCN_DIR := $(dir $(realpath $(lastword $(MAKEFILE_LIST))))unisocwcn + UNISOC_BSP_INCLUDE := $(UNISOCWCN_DIR)/include + export UNISOC_BSP_INCLUDE + +diff --git a/drivers/net/wireless/uwe5622/unisocwcn/Makefile b/drivers/net/wireless/uwe5622/unisocwcn/Makefile +index 939acb5c9274..a582426995ed 100755 +--- a/drivers/net/wireless/uwe5622/unisocwcn/Makefile ++++ b/drivers/net/wireless/uwe5622/unisocwcn/Makefile +@@ -129,9 +129,10 @@ ccflags-y += -DCONFIG_WCN_BOOT + ccflags-y += -DCONFIG_WCN_UTILS + + #### include path ###### +-ccflags-y += -I$(src)/include/ +-ccflags-y += -I$(src)/platform/ +-ccflags-y += -I$(src)/platform/rf/ ++local_src__ := $(dir $(realpath $(lastword $(MAKEFILE_LIST)))) ++ccflags-y += -I$(local_src__)include/ ++ccflags-y += -I$(local_src__)platform/ ++ccflags-y += -I$(local_src__)platform/rf/ + + #### add cflag for Customer ###### + ### ---------- Hisilicon start ---------- ### +@@ -405,7 +406,7 @@ KDIR ?= $(ANDROID_PRODUCT_OUT)/obj/KERNEL_OBJ + ARCH ?= arm + CROSS_COMPILE ?= arm-histbv310-linux- + +-EXTRA_CFLAGS += -I$(src)/include -D__linux__ ++EXTRA_CFLAGS += -I$(local_src__)include -D__linux__ + + all: $(all_dependencies) + diff --git a/recipes-kernel/linux/linux-mainline/sunxi-kmeta/bsp/uwe5622/uwe5622-6_5.scc b/recipes-kernel/linux/linux-mainline/sunxi-kmeta/bsp/uwe5622/uwe5622-6_5.scc new file mode 100644 index 0000000..96ac73f --- /dev/null +++ b/recipes-kernel/linux/linux-mainline/sunxi-kmeta/bsp/uwe5622/uwe5622-6_5.scc @@ -0,0 +1,11 @@ +# Kmeta for uwe5622 +# patches for 6.5 & 6.6 + + +patch uwe5622-allwinner-v6.3.patch +patch uwe5622-allwinner-bugfix-v6.3.patch +patch uwe5622-allwinner-v6.3-compilation-fix.patch +patch uwe5622-v6.4-post.patch + +include uwe5622-common.scc + diff --git a/recipes-kernel/linux/linux-mainline/sunxi-kmeta/bsp/uwe5622/uwe5622-6_6.scc b/recipes-kernel/linux/linux-mainline/sunxi-kmeta/bsp/uwe5622/uwe5622-6_6.scc new file mode 100644 index 0000000..af87361 --- /dev/null +++ b/recipes-kernel/linux/linux-mainline/sunxi-kmeta/bsp/uwe5622/uwe5622-6_6.scc @@ -0,0 +1,9 @@ +# Kmeta for uwe5622 +# for kernel 6.6 only + +include uwe5622-6_5.scc + +patch uwe5622-v6.6-fix-tty-sdio.patch + +# Add driver for MAC address fix +patch 0001-drv-fix-MAC-address-for-UWE5622.patch diff --git a/recipes-kernel/linux/linux-mainline/sunxi-kmeta/bsp/uwe5622/uwe5622-6_7.scc b/recipes-kernel/linux/linux-mainline/sunxi-kmeta/bsp/uwe5622/uwe5622-6_7.scc new file mode 100644 index 0000000..e7e008d --- /dev/null +++ b/recipes-kernel/linux/linux-mainline/sunxi-kmeta/bsp/uwe5622/uwe5622-6_7.scc @@ -0,0 +1,7 @@ +# Kmeta for uwe5622 +# for kernel 6.7 +# simply includes 6.6 metadata + +include uwe5622-6_6.scc + + diff --git a/recipes-kernel/linux/linux-mainline-6.1.9/orange-pi-zero2/0002-drv-wireless-driver-for-uwe5622-allwinner-bugfix.patch b/recipes-kernel/linux/linux-mainline/sunxi-kmeta/bsp/uwe5622/uwe5622-allwinner-bugfix-v6.3.patch similarity index 97% rename from recipes-kernel/linux/linux-mainline-6.1.9/orange-pi-zero2/0002-drv-wireless-driver-for-uwe5622-allwinner-bugfix.patch rename to recipes-kernel/linux/linux-mainline/sunxi-kmeta/bsp/uwe5622/uwe5622-allwinner-bugfix-v6.3.patch index 6ed2b8a..2cdb74e 100644 --- a/recipes-kernel/linux/linux-mainline-6.1.9/orange-pi-zero2/0002-drv-wireless-driver-for-uwe5622-allwinner-bugfix.patch +++ b/recipes-kernel/linux/linux-mainline/sunxi-kmeta/bsp/uwe5622/uwe5622-allwinner-bugfix-v6.3.patch @@ -1,7 +1,7 @@ -From d58b45ae101e1f97f7291017a174d875e5d975d6 Mon Sep 17 00:00:00 2001 -From: pbiel -Date: Thu, 30 Mar 2023 22:34:50 +0200 -Subject: [PATCH] [PATCH] wireless: update uwe5622 +From 90dc2bf4b9243830a9d2951518e95116dd3fbb43 Mon Sep 17 00:00:00 2001 +From: Paolo Sabatino +Date: Sun, 7 May 2023 15:07:06 +0200 +Subject: [PATCH 2/2] apply bugfixes for uwe5622 driver --- drivers/net/wireless/uwe5622/tty-sdio/tty.c | 72 +-- @@ -52,7 +52,7 @@ Subject: [PATCH] [PATCH] wireless: update uwe5622 drivers/net/wireless/uwe5622/unisocwifi/msg.c | 6 +- drivers/net/wireless/uwe5622/unisocwifi/msg.h | 2 + drivers/net/wireless/uwe5622/unisocwifi/nan.c | 2 +- - drivers/net/wireless/uwe5622/unisocwifi/npi.c | 22 +- + drivers/net/wireless/uwe5622/unisocwifi/npi.c | 20 +- drivers/net/wireless/uwe5622/unisocwifi/qos.c | 63 ++- drivers/net/wireless/uwe5622/unisocwifi/qos.h | 5 +- .../wireless/uwe5622/unisocwifi/reg_domain.c | 8 +- @@ -72,11 +72,11 @@ Subject: [PATCH] [PATCH] wireless: update uwe5622 .../net/wireless/uwe5622/unisocwifi/wl_intf.c | 234 ++++---- .../net/wireless/uwe5622/unisocwifi/wl_intf.h | 1 + .../net/wireless/uwe5622/unisocwifi/work.c | 28 +- - 68 files changed, 2156 insertions(+), 1585 deletions(-) - create mode 100644 drivers/net/wireless/uwe5622/unisocwifi/wcn_wrapper.h + 68 files changed, 2155 insertions(+), 1584 deletions(-) + create mode 100755 drivers/net/wireless/uwe5622/unisocwifi/wcn_wrapper.h diff --git a/drivers/net/wireless/uwe5622/tty-sdio/tty.c b/drivers/net/wireless/uwe5622/tty-sdio/tty.c -index 0f90a758b..6498272fc 100644 +index 0f90a758b7bc..6498272fc192 100644 --- a/drivers/net/wireless/uwe5622/tty-sdio/tty.c +++ b/drivers/net/wireless/uwe5622/tty-sdio/tty.c @@ -113,17 +113,6 @@ static ssize_t dumpmem_store(struct device *dev, @@ -208,7 +208,7 @@ index 0f90a758b..6498272fc 100644 sprdwcn_bus_chn_init(&bt_tx_ops); sema_init(&sem_id, BT_TX_POOL_SIZE - 1); diff --git a/drivers/net/wireless/uwe5622/tty-sdio/woble.c b/drivers/net/wireless/uwe5622/tty-sdio/woble.c -index 1df3f37fd..578108e7a 100644 +index 1df3f37fd6be..578108e7a78a 100644 --- a/drivers/net/wireless/uwe5622/tty-sdio/woble.c +++ b/drivers/net/wireless/uwe5622/tty-sdio/woble.c @@ -22,13 +22,13 @@ @@ -254,7 +254,7 @@ index 1df3f37fd..578108e7a 100644 hci_cmd.opcode = 0; diff --git a/drivers/net/wireless/uwe5622/unisocwcn/Makefile b/drivers/net/wireless/uwe5622/unisocwcn/Makefile -index b62652f63..f9c595747 100644 +index b62652f63acb..f9c595747547 100644 --- a/drivers/net/wireless/uwe5622/unisocwcn/Makefile +++ b/drivers/net/wireless/uwe5622/unisocwcn/Makefile @@ -50,6 +50,7 @@ endif @@ -454,7 +454,7 @@ index b62652f63..f9c595747 100644 KDIR ?= $(ANDROID_PRODUCT_OUT)/obj/KERNEL_OBJ ARCH ?= arm diff --git a/drivers/net/wireless/uwe5622/unisocwcn/boot/wcn_integrate_boot.c b/drivers/net/wireless/uwe5622/unisocwcn/boot/wcn_integrate_boot.c -index 48b69ccaa..ebccdb22f 100644 +index c544d63cfa7d..9f713386ca60 100644 --- a/drivers/net/wireless/uwe5622/unisocwcn/boot/wcn_integrate_boot.c +++ b/drivers/net/wireless/uwe5622/unisocwcn/boot/wcn_integrate_boot.c @@ -19,7 +19,6 @@ @@ -466,7 +466,7 @@ index 48b69ccaa..ebccdb22f 100644 static struct mutex marlin_lock; static struct wifi_calibration wifi_data; diff --git a/drivers/net/wireless/uwe5622/unisocwcn/include/marlin_platform.h b/drivers/net/wireless/uwe5622/unisocwcn/include/marlin_platform.h -index ae8daac46..7a78181a4 100644 +index ae8daac46644..7a78181a4586 100644 --- a/drivers/net/wireless/uwe5622/unisocwcn/include/marlin_platform.h +++ b/drivers/net/wireless/uwe5622/unisocwcn/include/marlin_platform.h @@ -83,7 +83,8 @@ enum marlin_wake_host_en { @@ -480,7 +480,7 @@ index ae8daac46..7a78181a4 100644 enum wcn_hw_type wcn_get_hw_if_type(void); diff --git a/drivers/net/wireless/uwe5622/unisocwcn/include/uwe562x_glb.h b/drivers/net/wireless/uwe5622/unisocwcn/include/uwe562x_glb.h -index ca7feadb5..275a464eb 100644 +index ca7feadb5460..275a464eb05d 100644 --- a/drivers/net/wireless/uwe5622/unisocwcn/include/uwe562x_glb.h +++ b/drivers/net/wireless/uwe5622/unisocwcn/include/uwe562x_glb.h @@ -245,16 +245,15 @@ static inline unsigned int reg_value(unsigned int marlin3reg, @@ -506,7 +506,7 @@ index ca7feadb5..275a464eb 100644 #define GNSS_CHIPID_REG 0x603003fc diff --git a/drivers/net/wireless/uwe5622/unisocwcn/platform/bufring.c b/drivers/net/wireless/uwe5622/unisocwcn/platform/bufring.c -index b8459b914..7cb79f2f2 100644 +index b8459b914cb1..7cb79f2f2d0c 100644 --- a/drivers/net/wireless/uwe5622/unisocwcn/platform/bufring.c +++ b/drivers/net/wireless/uwe5622/unisocwcn/platform/bufring.c @@ -117,7 +117,6 @@ void mdbg_ring_destroy(struct mdbg_ring_t *ring) @@ -518,7 +518,7 @@ index b8459b914..7cb79f2f2 100644 } diff --git a/drivers/net/wireless/uwe5622/unisocwcn/platform/gnss/gnss_common.h b/drivers/net/wireless/uwe5622/unisocwcn/platform/gnss/gnss_common.h -index 5999726f5..34de085bb 100644 +index 5999726f543c..34de085bb05c 100644 --- a/drivers/net/wireless/uwe5622/unisocwcn/platform/gnss/gnss_common.h +++ b/drivers/net/wireless/uwe5622/unisocwcn/platform/gnss/gnss_common.h @@ -20,44 +20,76 @@ @@ -624,7 +624,7 @@ index 5999726f5..34de085bb 100644 #endif diff --git a/drivers/net/wireless/uwe5622/unisocwcn/platform/gnss/gnss_common_ctl.c b/drivers/net/wireless/uwe5622/unisocwcn/platform/gnss/gnss_common_ctl.c -index c9831c1d3..0fe9e1ade 100644 +index c9831c1d38cc..0fe9e1aded81 100644 --- a/drivers/net/wireless/uwe5622/unisocwcn/platform/gnss/gnss_common_ctl.c +++ b/drivers/net/wireless/uwe5622/unisocwcn/platform/gnss/gnss_common_ctl.c @@ -76,18 +76,21 @@ enum gnss_cp_status_subtype { @@ -823,7 +823,7 @@ index c9831c1d3..0fe9e1ade 100644 MODULE_AUTHOR("Jun.an"); +#endif diff --git a/drivers/net/wireless/uwe5622/unisocwcn/platform/gnss/gnss_dbg.c b/drivers/net/wireless/uwe5622/unisocwcn/platform/gnss/gnss_dbg.c -index 5d2179933..b1c2b9408 100644 +index 5d21799337fd..b1c2b9408cd4 100644 --- a/drivers/net/wireless/uwe5622/unisocwcn/platform/gnss/gnss_dbg.c +++ b/drivers/net/wireless/uwe5622/unisocwcn/platform/gnss/gnss_dbg.c @@ -109,7 +109,6 @@ static void gnss_ring_destroy(struct gnss_ring_t *pring) @@ -917,7 +917,7 @@ index 5d2179933..b1c2b9408 100644 MODULE_LICENSE("GPL"); +#endif diff --git a/drivers/net/wireless/uwe5622/unisocwcn/platform/gnss/gnss_dump.c b/drivers/net/wireless/uwe5622/unisocwcn/platform/gnss/gnss_dump.c -index 44afbf6ec..48da71449 100644 +index 44afbf6ec70f..48da71449d89 100644 --- a/drivers/net/wireless/uwe5622/unisocwcn/platform/gnss/gnss_dump.c +++ b/drivers/net/wireless/uwe5622/unisocwcn/platform/gnss/gnss_dump.c @@ -18,7 +18,9 @@ @@ -996,7 +996,7 @@ index 44afbf6ec..48da71449 100644 ret = gnss_creat_gnss_dump_file(); if (ret == -1) { diff --git a/drivers/net/wireless/uwe5622/unisocwcn/platform/gnss/gnss_pmnotify_ctl.c b/drivers/net/wireless/uwe5622/unisocwcn/platform/gnss/gnss_pmnotify_ctl.c -index 84412f916..6bf78a2bd 100644 +index 84412f9160dd..6bf78a2bd9c1 100644 --- a/drivers/net/wireless/uwe5622/unisocwcn/platform/gnss/gnss_pmnotify_ctl.c +++ b/drivers/net/wireless/uwe5622/unisocwcn/platform/gnss/gnss_pmnotify_ctl.c @@ -32,6 +32,7 @@ @@ -1043,7 +1043,7 @@ index 84412f916..6bf78a2bd 100644 +#endif \ No newline at end of file diff --git a/drivers/net/wireless/uwe5622/unisocwcn/platform/rdc_debug.c b/drivers/net/wireless/uwe5622/unisocwcn/platform/rdc_debug.c -index 015c9020e..86fa3b103 100644 +index 015c9020e913..86fa3b103ad3 100644 --- a/drivers/net/wireless/uwe5622/unisocwcn/platform/rdc_debug.c +++ b/drivers/net/wireless/uwe5622/unisocwcn/platform/rdc_debug.c @@ -31,8 +31,6 @@ @@ -1075,7 +1075,7 @@ index 015c9020e..86fa3b103 100644 "/data", /* amlogic s905w... */ "/mnt/UDISK" /* allwinner r328... */ diff --git a/drivers/net/wireless/uwe5622/unisocwcn/platform/wcn_boot.c b/drivers/net/wireless/uwe5622/unisocwcn/platform/wcn_boot.c -index 57cf1a898..fca777c80 100644 +index 57cf1a898fb9..fca777c80200 100644 --- a/drivers/net/wireless/uwe5622/unisocwcn/platform/wcn_boot.c +++ b/drivers/net/wireless/uwe5622/unisocwcn/platform/wcn_boot.c @@ -10,7 +10,7 @@ @@ -1527,7 +1527,7 @@ index 57cf1a898..fca777c80 100644 platform_driver_unregister(&marlin_driver); diff --git a/drivers/net/wireless/uwe5622/unisocwcn/platform/wcn_op.h b/drivers/net/wireless/uwe5622/unisocwcn/platform/wcn_op.h -index 391280910..7121823e7 100644 +index 391280910f84..7121823e7af8 100644 --- a/drivers/net/wireless/uwe5622/unisocwcn/platform/wcn_op.h +++ b/drivers/net/wireless/uwe5622/unisocwcn/platform/wcn_op.h @@ -1,12 +1,6 @@ @@ -1544,7 +1544,7 @@ index 391280910..7121823e7 100644 void wcn_op_exit(void); diff --git a/drivers/net/wireless/uwe5622/unisocwcn/platform/wcn_parn_parser.c b/drivers/net/wireless/uwe5622/unisocwcn/platform/wcn_parn_parser.c -index aea7d6d0f..e3eeab46d 100644 +index fe6cd44fb178..0a61282f4cb1 100644 --- a/drivers/net/wireless/uwe5622/unisocwcn/platform/wcn_parn_parser.c +++ b/drivers/net/wireless/uwe5622/unisocwcn/platform/wcn_parn_parser.c @@ -48,9 +48,6 @@ @@ -1558,7 +1558,7 @@ index aea7d6d0f..e3eeab46d 100644 static char fstab_name[128]; static char fstab_dir[FSTAB_PATH_NUM][32] = { diff --git a/drivers/net/wireless/uwe5622/unisocwcn/platform/wcn_procfs.c b/drivers/net/wireless/uwe5622/unisocwcn/platform/wcn_procfs.c -index 2edb7903d..8be7131e1 100644 +index b179f2398b1f..77b4ec259e3d 100644 --- a/drivers/net/wireless/uwe5622/unisocwcn/platform/wcn_procfs.c +++ b/drivers/net/wireless/uwe5622/unisocwcn/platform/wcn_procfs.c @@ -23,7 +23,7 @@ @@ -1683,7 +1683,7 @@ index 2edb7903d..8be7131e1 100644 static int mdbg_proc_open(struct inode *inode, struct file *filp) { -@@ -752,6 +760,12 @@ static ssize_t mdbg_proc_write(struct file *filp, +@@ -756,6 +764,12 @@ static ssize_t mdbg_proc_write(struct file *filp, return count; } @@ -1696,7 +1696,7 @@ index 2edb7903d..8be7131e1 100644 /* unit of loglimitsize is MByte. */ if (strncmp(mdbg_proc->write_buf, "loglimitsize=", -@@ -1007,13 +1021,23 @@ static unsigned int mdbg_proc_poll(struct file *filp, poll_table *wait) +@@ -1011,13 +1025,23 @@ static unsigned int mdbg_proc_poll(struct file *filp, poll_table *wait) return mask; } @@ -1726,7 +1726,7 @@ index 2edb7903d..8be7131e1 100644 int mdbg_memory_alloc(void) { diff --git a/drivers/net/wireless/uwe5622/unisocwcn/platform/wcn_txrx.c b/drivers/net/wireless/uwe5622/unisocwcn/platform/wcn_txrx.c -index 8b19305ca..2fd7f3988 100644 +index 8b19305ca192..2fd7f39888a4 100644 --- a/drivers/net/wireless/uwe5622/unisocwcn/platform/wcn_txrx.c +++ b/drivers/net/wireless/uwe5622/unisocwcn/platform/wcn_txrx.c @@ -114,7 +114,7 @@ static long int mdbg_comm_write(char *buf, @@ -1806,7 +1806,7 @@ index 8b19305ca..2fd7f3988 100644 mdbg_dev->ring_dev = NULL; kfree(ring_dev); diff --git a/drivers/net/wireless/uwe5622/unisocwcn/platform/wcn_txrx.h b/drivers/net/wireless/uwe5622/unisocwcn/platform/wcn_txrx.h -index 9e74b7176..3e1dc9f42 100644 +index 9e74b7176ae0..3e1dc9f42258 100644 --- a/drivers/net/wireless/uwe5622/unisocwcn/platform/wcn_txrx.h +++ b/drivers/net/wireless/uwe5622/unisocwcn/platform/wcn_txrx.h @@ -18,8 +18,6 @@ @@ -1830,7 +1830,7 @@ index 9e74b7176..3e1dc9f42 100644 struct mutex mdbg_read_mutex; struct list_head rx_head; diff --git a/drivers/net/wireless/uwe5622/unisocwcn/sdio/sdiohal.h b/drivers/net/wireless/uwe5622/unisocwcn/sdio/sdiohal.h -index 55eda7326..c26bfb325 100644 +index 55eda732610b..c26bfb3251b4 100644 --- a/drivers/net/wireless/uwe5622/unisocwcn/sdio/sdiohal.h +++ b/drivers/net/wireless/uwe5622/unisocwcn/sdio/sdiohal.h @@ -15,7 +15,7 @@ @@ -1882,7 +1882,7 @@ index 55eda7326..c26bfb325 100644 int sdiohal_misc_init(void); void sdiohal_misc_deinit(void); diff --git a/drivers/net/wireless/uwe5622/unisocwcn/sdio/sdiohal_common.c b/drivers/net/wireless/uwe5622/unisocwcn/sdio/sdiohal_common.c -index 8896272a9..8dbf21437 100644 +index 8896272a950f..8dbf21437b57 100644 --- a/drivers/net/wireless/uwe5622/unisocwcn/sdio/sdiohal_common.c +++ b/drivers/net/wireless/uwe5622/unisocwcn/sdio/sdiohal_common.c @@ -3,7 +3,7 @@ @@ -2398,7 +2398,7 @@ index 8896272a9..8dbf21437 100644 return 0; diff --git a/drivers/net/wireless/uwe5622/unisocwcn/sdio/sdiohal_ctl.c b/drivers/net/wireless/uwe5622/unisocwcn/sdio/sdiohal_ctl.c -index 5a5cd9bb3..5f5905aac 100644 +index ceb34a487e69..b426bf89cd9a 100644 --- a/drivers/net/wireless/uwe5622/unisocwcn/sdio/sdiohal_ctl.c +++ b/drivers/net/wireless/uwe5622/unisocwcn/sdio/sdiohal_ctl.c @@ -55,9 +55,6 @@ @@ -2439,7 +2439,7 @@ index 5a5cd9bb3..5f5905aac 100644 if (count > SDIOHAL_WRITE_SIZE) { sdiohal_err("%s write size > %d\n", diff --git a/drivers/net/wireless/uwe5622/unisocwcn/sdio/sdiohal_main.c b/drivers/net/wireless/uwe5622/unisocwcn/sdio/sdiohal_main.c -index 31c2639e4..2008e14a5 100644 +index 42fb0a2b38a8..0f67a7f35c30 100644 --- a/drivers/net/wireless/uwe5622/unisocwcn/sdio/sdiohal_main.c +++ b/drivers/net/wireless/uwe5622/unisocwcn/sdio/sdiohal_main.c @@ -1971,7 +1971,6 @@ static int sdiohal_probe(struct sdio_func *func, @@ -2451,7 +2451,7 @@ index 31c2639e4..2008e14a5 100644 sdiohal_info("probe ok\n"); diff --git a/drivers/net/wireless/uwe5622/unisocwcn/sdio/sdiohal_rx.c b/drivers/net/wireless/uwe5622/unisocwcn/sdio/sdiohal_rx.c -index 287d17c95..2a64dac7a 100644 +index 287d17c959db..2a64dac7af55 100644 --- a/drivers/net/wireless/uwe5622/unisocwcn/sdio/sdiohal_rx.c +++ b/drivers/net/wireless/uwe5622/unisocwcn/sdio/sdiohal_rx.c @@ -99,8 +99,8 @@ static int sdiohal_rx_list_parser(struct sdiohal_list_t *data_list, @@ -2590,7 +2590,7 @@ index 287d17c95..2a64dac7a 100644 } diff --git a/drivers/net/wireless/uwe5622/unisocwcn/sdio/sdiohal_tx.c b/drivers/net/wireless/uwe5622/unisocwcn/sdio/sdiohal_tx.c -index ce0a9a639..9308abae2 100644 +index 540a589770b4..c0790f6cdd13 100644 --- a/drivers/net/wireless/uwe5622/unisocwcn/sdio/sdiohal_tx.c +++ b/drivers/net/wireless/uwe5622/unisocwcn/sdio/sdiohal_tx.c @@ -33,8 +33,8 @@ static void sdiohal_tx_retrybuf_left(unsigned int suc_pac_cnt) @@ -2623,7 +2623,7 @@ index ce0a9a639..9308abae2 100644 } diff --git a/drivers/net/wireless/uwe5622/unisocwcn/sleep/sdio_int.c b/drivers/net/wireless/uwe5622/unisocwcn/sleep/sdio_int.c -index 2f76fee2b..3bd84deba 100644 +index 6a14855a91e7..f3dec551e97e 100644 --- a/drivers/net/wireless/uwe5622/unisocwcn/sleep/sdio_int.c +++ b/drivers/net/wireless/uwe5622/unisocwcn/sleep/sdio_int.c @@ -58,7 +58,7 @@ void sdio_wait_pub_int_done(void) @@ -2675,7 +2675,7 @@ index 2f76fee2b..3bd84deba 100644 wakeup_source_destroy(sdio_int.pub_int_ws); diff --git a/drivers/net/wireless/uwe5622/unisocwcn/sleep/sdio_int.h b/drivers/net/wireless/uwe5622/unisocwcn/sleep/sdio_int.h -index b4ed05fd5..2a1bbf248 100644 +index b4ed05fd5efa..2a1bbf24864f 100644 --- a/drivers/net/wireless/uwe5622/unisocwcn/sleep/sdio_int.h +++ b/drivers/net/wireless/uwe5622/unisocwcn/sleep/sdio_int.h @@ -2,8 +2,6 @@ @@ -2698,7 +2698,7 @@ index b4ed05fd5..2a1bbf248 100644 unsigned int pub_int_num; /* 1: power on, 0: power off */ diff --git a/drivers/net/wireless/uwe5622/unisocwcn/sleep/slp_mgr.c b/drivers/net/wireless/uwe5622/unisocwcn/sleep/slp_mgr.c -index 3c173c260..65f37abc4 100644 +index 3c173c260444..65f37abc4399 100644 --- a/drivers/net/wireless/uwe5622/unisocwcn/sleep/slp_mgr.c +++ b/drivers/net/wireless/uwe5622/unisocwcn/sleep/slp_mgr.c @@ -29,6 +29,7 @@ @@ -2750,7 +2750,7 @@ index 3c173c260..65f37abc4 100644 mutex_unlock(&(slp_mgr.wakeup_lock)); return -1; diff --git a/drivers/net/wireless/uwe5622/unisocwcn/wcn_bus.c b/drivers/net/wireless/uwe5622/unisocwcn/wcn_bus.c -index b6b54733f..2926b7f58 100644 +index 0277de66659e..231718d77364 100644 --- a/drivers/net/wireless/uwe5622/unisocwcn/wcn_bus.c +++ b/drivers/net/wireless/uwe5622/unisocwcn/wcn_bus.c @@ -17,8 +17,6 @@ @@ -2806,7 +2806,7 @@ index b6b54733f..2926b7f58 100644 /* pr_info("[-]%s(%d)\n", __func__, ops->channel); */ diff --git a/drivers/net/wireless/uwe5622/unisocwifi/Kconfig b/drivers/net/wireless/uwe5622/unisocwifi/Kconfig -index bcfd8bfb7..952c263f3 100644 +index 060c584f5da3..fce21d35d06c 100644 --- a/drivers/net/wireless/uwe5622/unisocwifi/Kconfig +++ b/drivers/net/wireless/uwe5622/unisocwifi/Kconfig @@ -1,3 +1,8 @@ @@ -2818,14 +2818,15 @@ index bcfd8bfb7..952c263f3 100644 config WLAN_UWE5622 tristate "UWE5622 Wi-Fi Driver" help -@@ -15,4 +20,4 @@ config UNISOC_WIFI_PS +@@ -15,5 +20,5 @@ config UNISOC_WIFI_PS bool "Unisoc Wi-Fi Power Save Support" depends on WLAN_UWE5622 help - Spard UWE5622 Wi-Fi Driver Power Save. + Sprd UWE5622 Wi-Fi Driver Power Save. + diff --git a/drivers/net/wireless/uwe5622/unisocwifi/Makefile b/drivers/net/wireless/uwe5622/unisocwifi/Makefile -index 966e74eee..f9047ecd5 100644 +index 966e74eeeb2c..f9047ecd5a37 100644 --- a/drivers/net/wireless/uwe5622/unisocwifi/Makefile +++ b/drivers/net/wireless/uwe5622/unisocwifi/Makefile @@ -1,8 +1,6 @@ @@ -2914,7 +2915,7 @@ index 966e74eee..f9047ecd5 100644 all: $(all_dependencies) driver: $(driver_dependencies) diff --git a/drivers/net/wireless/uwe5622/unisocwifi/api_version.c b/drivers/net/wireless/uwe5622/unisocwifi/api_version.c -index 79f0b5706..91bcfee46 100644 +index 79f0b5706d13..91bcfee46fb8 100644 --- a/drivers/net/wireless/uwe5622/unisocwifi/api_version.c +++ b/drivers/net/wireless/uwe5622/unisocwifi/api_version.c @@ -407,7 +407,7 @@ void sprdwl_fill_drv_api_version(struct sprdwl_priv *priv, @@ -2969,7 +2970,7 @@ index 79f0b5706..91bcfee46 100644 } } diff --git a/drivers/net/wireless/uwe5622/unisocwifi/cfg80211.c b/drivers/net/wireless/uwe5622/unisocwifi/cfg80211.c -index daef880ae..3d0f12ce3 100644 +index 47d60f30c2e6..490797f8fc42 100644 --- a/drivers/net/wireless/uwe5622/unisocwifi/cfg80211.c +++ b/drivers/net/wireless/uwe5622/unisocwifi/cfg80211.c @@ -238,38 +238,38 @@ sprdwl_mgmt_stypes[NUM_NL80211_IFTYPES] = { @@ -3238,7 +3239,7 @@ index daef880ae..3d0f12ce3 100644 kfree(mgmt); #ifdef DFS_MASTER -@@ -999,14 +999,14 @@ static int sprdwl_cfg80211_stop_ap(struct wiphy *wiphy, struct net_device *ndev) +@@ -1003,14 +1003,14 @@ static int sprdwl_cfg80211_stop_ap(struct wiphy *wiphy, struct net_device *ndev) } static int sprdwl_cfg80211_add_station(struct wiphy *wiphy, @@ -3256,7 +3257,7 @@ index daef880ae..3d0f12ce3 100644 #if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 4, 83) struct station_del_parameters *params #else -@@ -1042,16 +1042,16 @@ static int sprdwl_cfg80211_del_station(struct wiphy *wiphy, +@@ -1046,16 +1046,16 @@ static int sprdwl_cfg80211_del_station(struct wiphy *wiphy, static int sprdwl_cfg80211_change_station(struct wiphy *wiphy, @@ -3277,7 +3278,7 @@ index daef880ae..3d0f12ce3 100644 { struct sprdwl_vif *vif = netdev_priv(ndev); struct sprdwl_cmd_get_station sta; -@@ -1122,8 +1122,8 @@ static int sprdwl_cfg80211_get_station(struct wiphy *wiphy, +@@ -1126,8 +1126,8 @@ static int sprdwl_cfg80211_get_station(struct wiphy *wiphy, #else static int sprdwl_cfg80211_get_station(struct wiphy *wiphy, @@ -3288,7 +3289,7 @@ index daef880ae..3d0f12ce3 100644 { struct sprdwl_vif *vif = netdev_priv(ndev); struct sprdwl_cmd_get_station sta; -@@ -1176,8 +1176,8 @@ static int sprdwl_cfg80211_get_station(struct wiphy *wiphy, +@@ -1180,8 +1180,8 @@ static int sprdwl_cfg80211_get_station(struct wiphy *wiphy, #endif static int sprdwl_cfg80211_set_channel(struct wiphy *wiphy, @@ -3299,7 +3300,7 @@ index daef880ae..3d0f12ce3 100644 { struct sprdwl_vif *vif = netdev_priv(ndev); -@@ -1217,7 +1217,7 @@ void sprdwl_report_softap(struct sprdwl_vif *vif, u8 is_connect, u8 *addr, +@@ -1221,7 +1221,7 @@ void sprdwl_report_softap(struct sprdwl_vif *vif, u8 is_connect, u8 *addr, } else { cfg80211_del_sta(vif->ndev, addr, GFP_KERNEL); wl_ndev_log(L_DBG, vif->ndev, "The station (%pM) disconnected\n", @@ -3308,7 +3309,7 @@ index daef880ae..3d0f12ce3 100644 trace_deauth_reason(vif->mode, 0, REMOTE_EVENT); } } -@@ -1259,7 +1259,7 @@ void sprdwl_cancel_scan(struct sprdwl_vif *vif) +@@ -1263,7 +1263,7 @@ void sprdwl_cancel_scan(struct sprdwl_vif *vif) #endif else wl_err("%s, %d, error, scan_request freed", @@ -3317,7 +3318,7 @@ index daef880ae..3d0f12ce3 100644 priv->scan_request = NULL; priv->scan_vif = NULL; } -@@ -1319,7 +1319,7 @@ void sprdwl_scan_done(struct sprdwl_vif *vif, bool abort) +@@ -1323,7 +1323,7 @@ void sprdwl_scan_done(struct sprdwl_vif *vif, bool abort) #endif } else { wl_err("%s, %d, error, scan_request freed", @@ -3326,7 +3327,7 @@ index daef880ae..3d0f12ce3 100644 } priv->scan_request = NULL; priv->scan_vif = NULL; -@@ -1344,7 +1344,7 @@ void sprdwl_sched_scan_done(struct sprdwl_vif *vif, bool abort) +@@ -1348,7 +1348,7 @@ void sprdwl_sched_scan_done(struct sprdwl_vif *vif, bool abort) cfg80211_sched_scan_results(vif->wdev.wiphy); #endif wl_ndev_log(L_DBG, priv->sched_scan_vif->ndev, @@ -3335,7 +3336,7 @@ index daef880ae..3d0f12ce3 100644 priv->sched_scan_request = NULL; priv->sched_scan_vif = NULL; } -@@ -1389,7 +1389,7 @@ static int sprdwl_cfg80211_scan(struct wiphy *wiphy, +@@ -1393,7 +1393,7 @@ static int sprdwl_cfg80211_scan(struct wiphy *wiphy, { struct sprdwl_priv *priv = wiphy_priv(wiphy); struct sprdwl_vif *vif = @@ -3344,7 +3345,7 @@ index daef880ae..3d0f12ce3 100644 struct cfg80211_ssid *ssids = request->ssids; struct sprdwl_scan_ssid *scan_ssids; u8 *ssids_ptr = NULL; -@@ -1417,11 +1417,11 @@ static int sprdwl_cfg80211_scan(struct wiphy *wiphy, +@@ -1421,11 +1421,11 @@ static int sprdwl_cfg80211_scan(struct wiphy *wiphy, #endif wl_ndev_log(L_DBG, vif->ndev, "%s n_channels %u\n", __func__, @@ -3358,7 +3359,7 @@ index daef880ae..3d0f12ce3 100644 ret = -EOPNOTSUPP; goto err; } -@@ -1439,7 +1439,7 @@ static int sprdwl_cfg80211_scan(struct wiphy *wiphy, +@@ -1443,7 +1443,7 @@ static int sprdwl_cfg80211_scan(struct wiphy *wiphy, if (flags & (1<<3)) { random_mac_flag = 1; wl_info("Random MAC support==set value:%d\n", @@ -3367,7 +3368,7 @@ index daef880ae..3d0f12ce3 100644 wl_info("random mac addr: %pM\n", rand_addr); } else { wl_info("random mac feature disabled\n"); -@@ -1448,7 +1448,7 @@ static int sprdwl_cfg80211_scan(struct wiphy *wiphy, +@@ -1452,7 +1452,7 @@ static int sprdwl_cfg80211_scan(struct wiphy *wiphy, if (random_mac_flag != old_mac_flag) { old_mac_flag = random_mac_flag; wlan_cmd_set_rand_mac(vif->priv, vif->ctx_id, @@ -3376,7 +3377,7 @@ index daef880ae..3d0f12ce3 100644 } } #endif -@@ -1463,7 +1463,7 @@ static int sprdwl_cfg80211_scan(struct wiphy *wiphy, +@@ -1467,7 +1467,7 @@ static int sprdwl_cfg80211_scan(struct wiphy *wiphy, } ret = sprdwl_set_ie(priv, vif->ctx_id, SPRDWL_IE_PROBE_REQ, @@ -3385,7 +3386,7 @@ index daef880ae..3d0f12ce3 100644 if (ret) goto err; } -@@ -1506,7 +1506,7 @@ static int sprdwl_cfg80211_scan(struct wiphy *wiphy, +@@ -1510,7 +1510,7 @@ static int sprdwl_cfg80211_scan(struct wiphy *wiphy, info->beacon_num = 0; info->channel = NULL; list_add_tail(&info->survey_list, @@ -3394,7 +3395,7 @@ index daef880ae..3d0f12ce3 100644 } #endif /* ACS_SUPPORT */ } -@@ -1532,7 +1532,7 @@ static int sprdwl_cfg80211_scan(struct wiphy *wiphy, +@@ -1536,7 +1536,7 @@ static int sprdwl_cfg80211_scan(struct wiphy *wiphy, scan_ssids_len += (ssids[i].ssid_len + sizeof(scan_ssids->len)); scan_ssids = (struct sprdwl_scan_ssid *) @@ -3403,7 +3404,7 @@ index daef880ae..3d0f12ce3 100644 } } else { #ifndef ACS_SUPPORT -@@ -1568,9 +1568,9 @@ static int sprdwl_cfg80211_scan(struct wiphy *wiphy, +@@ -1572,9 +1572,9 @@ static int sprdwl_cfg80211_scan(struct wiphy *wiphy, } static int sprdwl_cfg80211_sched_scan_start(struct wiphy *wiphy, @@ -3416,7 +3417,7 @@ index daef880ae..3d0f12ce3 100644 { struct sprdwl_priv *priv = wiphy_priv(wiphy); #if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 4, 83) -@@ -1592,7 +1592,7 @@ static int sprdwl_cfg80211_sched_scan_start(struct wiphy *wiphy, +@@ -1596,7 +1596,7 @@ static int sprdwl_cfg80211_sched_scan_start(struct wiphy *wiphy, /*scan not allowed if closed*/ if (vif->priv->fw_stat[vif->mode] == SPRDWL_INTF_CLOSE) { wl_err("%s, %d, error!mode%d scan after closed not allowed\n", @@ -3425,7 +3426,7 @@ index daef880ae..3d0f12ce3 100644 return -ENOMEM; } -@@ -1603,23 +1603,23 @@ static int sprdwl_cfg80211_sched_scan_start(struct wiphy *wiphy, +@@ -1607,23 +1607,23 @@ static int sprdwl_cfg80211_sched_scan_start(struct wiphy *wiphy, /*to protect the size of struct sprdwl_sched_scan_buf*/ if (request->n_channels > TOTAL_2G_5G_CHANNEL_NUM) { wl_err("%s, %d, error! request->n_channels=%d\n", @@ -3453,7 +3454,7 @@ index daef880ae..3d0f12ce3 100644 scan_plans = request->scan_plans; sscan_buf->interval = scan_plans->interval; #else -@@ -1644,8 +1644,8 @@ static int sprdwl_cfg80211_sched_scan_start(struct wiphy *wiphy, +@@ -1648,8 +1648,8 @@ static int sprdwl_cfg80211_sched_scan_start(struct wiphy *wiphy, if (ch == 0) { wl_ndev_log(L_DBG, ndev, "%s unknown frequency %dMhz\n", @@ -3464,7 +3465,7 @@ index daef880ae..3d0f12ce3 100644 continue; } -@@ -1721,6 +1721,20 @@ static int sprdwl_cfg80211_sched_scan_stop(struct wiphy *wiphy, +@@ -1725,6 +1725,20 @@ static int sprdwl_cfg80211_sched_scan_stop(struct wiphy *wiphy, #ifdef SYNC_DISCONNECT void sprdwl_disconnect_handle(struct sprdwl_vif *vif) { @@ -3485,7 +3486,7 @@ index daef880ae..3d0f12ce3 100644 vif->sm_state = SPRDWL_DISCONNECTED; /* Clear bssid & ssid */ -@@ -1742,24 +1756,22 @@ void sprdwl_disconnect_handle(struct sprdwl_vif *vif) +@@ -1746,24 +1760,22 @@ void sprdwl_disconnect_handle(struct sprdwl_vif *vif) } #endif static int sprdwl_cfg80211_disconnect(struct wiphy *wiphy, @@ -3512,7 +3513,7 @@ index daef880ae..3d0f12ce3 100644 vif->sm_state = SPRDWL_DISCONNECTING; -@@ -1772,17 +1784,19 @@ static int sprdwl_cfg80211_disconnect(struct wiphy *wiphy, +@@ -1776,17 +1788,19 @@ static int sprdwl_cfg80211_disconnect(struct wiphy *wiphy, goto out; } #ifdef SYNC_DISCONNECT @@ -3535,7 +3536,7 @@ index daef880ae..3d0f12ce3 100644 #endif trace_deauth_reason(vif->mode, reason_code, LOCAL_EVENT); out: -@@ -1799,14 +1813,14 @@ static int sprdwl_cfg80211_connect(struct wiphy *wiphy, struct net_device *ndev, +@@ -1803,14 +1817,14 @@ static int sprdwl_cfg80211_connect(struct wiphy *wiphy, struct net_device *ndev, struct sprdwl_cmd_connect con; enum sm_state old_state = vif->sm_state; int is_wep = (sme->crypto.cipher_group == WLAN_CIPHER_SUITE_WEP40) || @@ -3552,7 +3553,7 @@ index daef880ae..3d0f12ce3 100644 goto err; } -@@ -1814,7 +1828,7 @@ static int sprdwl_cfg80211_connect(struct wiphy *wiphy, struct net_device *ndev, +@@ -1818,7 +1832,7 @@ static int sprdwl_cfg80211_connect(struct wiphy *wiphy, struct net_device *ndev, if (vif->has_rand_mac) { random_mac_flag = SPRDWL_CONNECT_RANDOM_ADDR; ret = wlan_cmd_set_rand_mac(vif->priv, vif->ctx_id, @@ -3561,7 +3562,7 @@ index daef880ae..3d0f12ce3 100644 if (ret) netdev_info(ndev, "Set random mac failed!\n"); } -@@ -1832,7 +1846,7 @@ static int sprdwl_cfg80211_connect(struct wiphy *wiphy, struct net_device *ndev, +@@ -1836,7 +1850,7 @@ static int sprdwl_cfg80211_connect(struct wiphy *wiphy, struct net_device *ndev, if (sme->ie_len > 0) { wl_ndev_log(L_DBG, ndev, "set assoc req ie, len %zx\n", sme->ie_len); ret = sprdwl_set_ie(vif->priv, vif->ctx_id, SPRDWL_IE_ASSOC_REQ, @@ -3570,7 +3571,7 @@ index daef880ae..3d0f12ce3 100644 if (ret) goto err; } -@@ -1844,7 +1858,7 @@ static int sprdwl_cfg80211_connect(struct wiphy *wiphy, struct net_device *ndev, +@@ -1848,7 +1862,7 @@ static int sprdwl_cfg80211_connect(struct wiphy *wiphy, struct net_device *ndev, wl_ndev_log(L_DBG, ndev, "auth type %#x\n", sme->auth_type); if ((sme->auth_type == NL80211_AUTHTYPE_OPEN_SYSTEM) || @@ -3579,7 +3580,7 @@ index daef880ae..3d0f12ce3 100644 con.auth_type = SPRDWL_AUTH_OPEN; else if ((sme->auth_type == NL80211_AUTHTYPE_SHARED_KEY) || ((sme->auth_type == NL80211_AUTHTYPE_AUTOMATIC) && is_wep)) -@@ -1853,11 +1867,11 @@ static int sprdwl_cfg80211_connect(struct wiphy *wiphy, struct net_device *ndev, +@@ -1857,11 +1871,11 @@ static int sprdwl_cfg80211_connect(struct wiphy *wiphy, struct net_device *ndev, /* Set pairewise cipher */ if (sme->crypto.n_ciphers_pairwise) { vif->prwise_crypto = @@ -3593,7 +3594,7 @@ index daef880ae..3d0f12ce3 100644 con.pairwise_cipher = vif->prwise_crypto; con.pairwise_cipher |= SPRDWL_VALID_CONFIG; } -@@ -1870,7 +1884,7 @@ static int sprdwl_cfg80211_connect(struct wiphy *wiphy, struct net_device *ndev, +@@ -1874,7 +1888,7 @@ static int sprdwl_cfg80211_connect(struct wiphy *wiphy, struct net_device *ndev, vif->grp_crypto = sprdwl_parse_cipher(sme->crypto.cipher_group); if (vif->grp_crypto != SPRDWL_CIPHER_NONE) { wl_ndev_log(L_DBG, ndev, "group cipher %#x\n", @@ -3602,7 +3603,7 @@ index daef880ae..3d0f12ce3 100644 con.group_cipher = vif->grp_crypto; con.group_cipher |= SPRDWL_VALID_CONFIG; } -@@ -1878,7 +1892,7 @@ static int sprdwl_cfg80211_connect(struct wiphy *wiphy, struct net_device *ndev, +@@ -1882,7 +1896,7 @@ static int sprdwl_cfg80211_connect(struct wiphy *wiphy, struct net_device *ndev, /* Set auth key management (akm) */ if (sme->crypto.n_akm_suites) { wl_ndev_log(L_DBG, ndev, "akm suites %#x\n", @@ -3611,7 +3612,7 @@ index daef880ae..3d0f12ce3 100644 con.key_mgmt = sprdwl_parse_akm(sme->crypto.akm_suites[0]); con.key_mgmt |= SPRDWL_VALID_CONFIG; } else { -@@ -1888,17 +1902,17 @@ static int sprdwl_cfg80211_connect(struct wiphy *wiphy, struct net_device *ndev, +@@ -1892,17 +1906,17 @@ static int sprdwl_cfg80211_connect(struct wiphy *wiphy, struct net_device *ndev, /* Set PSK */ if (sme->key_len) { if (sme->crypto.cipher_group == WLAN_CIPHER_SUITE_WEP40 || @@ -3636,7 +3637,7 @@ index daef880ae..3d0f12ce3 100644 sme->crypto. ciphers_pairwise[0], NULL, NULL); -@@ -1927,7 +1941,7 @@ static int sprdwl_cfg80211_connect(struct wiphy *wiphy, struct net_device *ndev, +@@ -1931,7 +1945,7 @@ static int sprdwl_cfg80211_connect(struct wiphy *wiphy, struct net_device *ndev, u16 center_freq = sme->channel_hint->center_freq; con.channel = @@ -3645,7 +3646,7 @@ index daef880ae..3d0f12ce3 100644 wl_ndev_log(L_DBG, ndev, "channel_hint %d\n", con.channel); #ifdef STA_SOFTAP_SCC_MODE if (sme->channel_hint->flags != IEEE80211_CHAN_RADAR) -@@ -1940,7 +1954,7 @@ static int sprdwl_cfg80211_connect(struct wiphy *wiphy, struct net_device *ndev, +@@ -1944,7 +1958,7 @@ static int sprdwl_cfg80211_connect(struct wiphy *wiphy, struct net_device *ndev, } } else { con.channel = @@ -3654,7 +3655,7 @@ index daef880ae..3d0f12ce3 100644 wl_ndev_log(L_DBG, ndev, "channel %d\n", con.channel); #ifdef STA_SOFTAP_SCC_MODE if (sme->channel->flags != IEEE80211_CHAN_RADAR) -@@ -1963,14 +1977,14 @@ static int sprdwl_cfg80211_connect(struct wiphy *wiphy, struct net_device *ndev, +@@ -1967,14 +1981,14 @@ static int sprdwl_cfg80211_connect(struct wiphy *wiphy, struct net_device *ndev, /* Special process for WEP(WEP key must be set before essid) */ if (sme->crypto.cipher_group == WLAN_CIPHER_SUITE_WEP40 || @@ -3671,7 +3672,7 @@ index daef880ae..3d0f12ce3 100644 wl_ndev_log(L_ERR, ndev, "%s invalid WEP key length!\n", __func__); ret = -EINVAL; -@@ -2033,38 +2047,38 @@ static int sprdwl_cfg80211_set_wiphy_params(struct wiphy *wiphy, u32 changed) +@@ -2037,38 +2051,38 @@ static int sprdwl_cfg80211_set_wiphy_params(struct wiphy *wiphy, u32 changed) } static int sprdwl_cfg80211_set_pmksa(struct wiphy *wiphy, @@ -3718,7 +3719,7 @@ index daef880ae..3d0f12ce3 100644 } void sprdwl_report_fake_probe(struct wiphy *wiphy, u8 *ie, size_t ielen) -@@ -2155,14 +2169,18 @@ void signal_level_enhance(struct sprdwl_vif *vif, +@@ -2159,14 +2173,18 @@ void signal_level_enhance(struct sprdwl_vif *vif, } void sprdwl_report_scan_result(struct sprdwl_vif *vif, u16 chan, s16 rssi, @@ -3738,7 +3739,7 @@ index daef880ae..3d0f12ce3 100644 u16 capability, beacon_interval; u32 freq; s32 signal; -@@ -2200,7 +2218,7 @@ void sprdwl_report_scan_result(struct sprdwl_vif *vif, u16 chan, s16 rssi, +@@ -2204,7 +2222,7 @@ void sprdwl_report_scan_result(struct sprdwl_vif *vif, u16 chan, s16 rssi, if ((rssi * 100) != signal) wl_debug("old signal level:%d,new signal level:%d\n", @@ -3747,7 +3748,7 @@ index daef880ae..3d0f12ce3 100644 #ifdef ACS_SUPPORT if (vif->mode == SPRDWL_MODE_AP) -@@ -2210,13 +2228,18 @@ void sprdwl_report_scan_result(struct sprdwl_vif *vif, u16 chan, s16 rssi, +@@ -2214,13 +2232,18 @@ void sprdwl_report_scan_result(struct sprdwl_vif *vif, u16 chan, s16 rssi, ie = mgmt->u.probe_resp.variable; ielen = len - offsetof(struct ieee80211_mgmt, u.probe_resp.variable); /* framework use system bootup time */ @@ -3769,7 +3770,7 @@ index daef880ae..3d0f12ce3 100644 bss = cfg80211_inform_bss(wiphy, channel, #if (LINUX_VERSION_CODE >= KERNEL_VERSION(3, 18, 0)) -@@ -2226,8 +2249,9 @@ void sprdwl_report_scan_result(struct sprdwl_vif *vif, u16 chan, s16 rssi, +@@ -2230,8 +2253,9 @@ void sprdwl_report_scan_result(struct sprdwl_vif *vif, u16 chan, s16 rssi, ie, ielen, signal, GFP_KERNEL); if (unlikely(!bss)) @@ -3781,7 +3782,7 @@ index daef880ae..3d0f12ce3 100644 cfg80211_put_bss(wiphy, bss); /*check log mac flag and call report fake probe*/ -@@ -2236,14 +2260,14 @@ void sprdwl_report_scan_result(struct sprdwl_vif *vif, u16 chan, s16 rssi, +@@ -2240,14 +2264,14 @@ void sprdwl_report_scan_result(struct sprdwl_vif *vif, u16 chan, s16 rssi, if (vif->beacon_loss) { bss = cfg80211_get_bss(wiphy, NULL, vif->bssid, @@ -3801,7 +3802,7 @@ index daef880ae..3d0f12ce3 100644 vif->beacon_loss = 0; } } -@@ -2258,7 +2282,11 @@ void sprdwl_report_connection(struct sprdwl_vif *vif, +@@ -2262,7 +2286,11 @@ void sprdwl_report_connection(struct sprdwl_vif *vif, struct ieee80211_channel *channel; struct ieee80211_mgmt *mgmt; struct cfg80211_bss *bss = NULL; @@ -3813,7 +3814,7 @@ index daef880ae..3d0f12ce3 100644 #ifdef WMMAC_WFA_CERTIFICATION struct wmm_params_element *wmm_params; int i; -@@ -2273,19 +2301,19 @@ void sprdwl_report_connection(struct sprdwl_vif *vif, +@@ -2277,19 +2305,19 @@ void sprdwl_report_connection(struct sprdwl_vif *vif, #endif if (vif->sm_state != SPRDWL_CONNECTING && @@ -3838,7 +3839,7 @@ index daef880ae..3d0f12ce3 100644 goto err; #endif /* IBSS_SUPPORT */ if (!conn_info->bssid) { -@@ -2321,20 +2349,25 @@ void sprdwl_report_connection(struct sprdwl_vif *vif, +@@ -2325,20 +2353,25 @@ void sprdwl_report_connection(struct sprdwl_vif *vif, mgmt = (struct ieee80211_mgmt *)conn_info->bea_ie; wl_ndev_log(L_DBG, vif->ndev, "%s update BSS %s\n", __func__, @@ -3870,7 +3871,7 @@ index daef880ae..3d0f12ce3 100644 beacon_interval = le16_to_cpu(mgmt->u.probe_resp.beacon_int); capability = le16_to_cpu(mgmt->u.probe_resp.capab_info); wl_ndev_log(L_DBG, vif->ndev, "%s, %pM, signal: %d\n", -@@ -2350,15 +2383,16 @@ void sprdwl_report_connection(struct sprdwl_vif *vif, +@@ -2354,15 +2387,16 @@ void sprdwl_report_connection(struct sprdwl_vif *vif, capability, beacon_interval, ie, ielen, conn_info->signal, GFP_KERNEL); if (unlikely(!bss)) @@ -3891,7 +3892,7 @@ index daef880ae..3d0f12ce3 100644 cfg80211_connect_result(vif->ndev, conn_info->bssid, conn_info->req_ie, conn_info->req_ie_len, conn_info->resp_ie, conn_info->resp_ie_len, -@@ -2376,7 +2410,7 @@ void sprdwl_report_connection(struct sprdwl_vif *vif, +@@ -2380,7 +2414,7 @@ void sprdwl_report_connection(struct sprdwl_vif *vif, cfg80211_roamed(vif->ndev, &roam_info, GFP_KERNEL); #else cfg80211_roamed_bss(vif->ndev, bss, conn_info->req_ie, conn_info->req_ie_len, @@ -3900,7 +3901,7 @@ index daef880ae..3d0f12ce3 100644 #endif } #ifdef IBSS_SUPPORT -@@ -2433,7 +2467,7 @@ void sprdwl_report_connection(struct sprdwl_vif *vif, +@@ -2437,7 +2471,7 @@ void sprdwl_report_connection(struct sprdwl_vif *vif, vif->sm_state = SPRDWL_CONNECTED; memcpy(vif->bssid, conn_info->bssid, sizeof(vif->bssid)); wl_ndev_log(L_DBG, vif->ndev, "%s %s to %s (%pM)\n", __func__, @@ -3909,7 +3910,7 @@ index daef880ae..3d0f12ce3 100644 "connect" : "roam", vif->ssid, vif->bssid); return; err: -@@ -2464,11 +2498,11 @@ void sprdwl_report_disconnection(struct sprdwl_vif *vif, u16 reason_code) +@@ -2468,11 +2502,11 @@ void sprdwl_report_disconnection(struct sprdwl_vif *vif, u16 reason_code) #if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 4, 83) NULL, 0, false, GFP_KERNEL); #else @@ -3924,7 +3925,7 @@ index daef880ae..3d0f12ce3 100644 } else { wl_ndev_log(L_ERR, vif->ndev, "%s Unexpected event!\n", __func__); return; -@@ -2500,13 +2534,13 @@ void sprdwl_report_disconnection(struct sprdwl_vif *vif, u16 reason_code) +@@ -2504,13 +2538,13 @@ void sprdwl_report_disconnection(struct sprdwl_vif *vif, u16 reason_code) void sprdwl_report_mic_failure(struct sprdwl_vif *vif, u8 is_mcast, u8 key_id) { wl_ndev_log(L_DBG, vif->ndev, @@ -3943,7 +3944,7 @@ index daef880ae..3d0f12ce3 100644 } static char type_name[16][32] = { -@@ -2577,10 +2611,10 @@ void sprdwl_cfg80211_dump_frame_prot_info(int send, int freq, +@@ -2581,10 +2615,10 @@ void sprdwl_cfg80211_dump_frame_prot_info(int send, int freq, if (type == IEEE80211_FTYPE_MGMT) { idx += sprintf(p + idx, "%dMHz, %s, ", @@ -3956,7 +3957,7 @@ index daef880ae..3d0f12ce3 100644 } if (subtype == ACTION_TYPE) { -@@ -2588,10 +2622,10 @@ void sprdwl_cfg80211_dump_frame_prot_info(int send, int freq, +@@ -2592,10 +2626,10 @@ void sprdwl_cfg80211_dump_frame_prot_info(int send, int freq, action_subtype = *(buf + ACTION_SUBTYPE_OFFSET); if (action == PUB_ACTION) idx += sprintf(p + idx, "PUB:%s ", @@ -3969,7 +3970,7 @@ index daef880ae..3d0f12ce3 100644 else idx += sprintf(p + idx, "Unknown ACTION(0x%x)", action); } -@@ -2602,9 +2636,9 @@ void sprdwl_cfg80211_dump_frame_prot_info(int send, int freq, +@@ -2606,9 +2640,9 @@ void sprdwl_cfg80211_dump_frame_prot_info(int send, int freq, /* P2P related stuff */ static int sprdwl_cfg80211_remain_on_channel(struct wiphy *wiphy, @@ -3982,7 +3983,7 @@ index daef880ae..3d0f12ce3 100644 { struct sprdwl_vif *vif = container_of(wdev, struct sprdwl_vif, wdev); enum nl80211_channel_type channel_type = 0; -@@ -2613,7 +2647,7 @@ static int sprdwl_cfg80211_remain_on_channel(struct wiphy *wiphy, +@@ -2617,7 +2651,7 @@ static int sprdwl_cfg80211_remain_on_channel(struct wiphy *wiphy, *cookie = vif->listen_cookie = ++remain_index; wl_ndev_log(L_DBG, wdev->netdev, "%s %d for %dms, cookie %lld\n", @@ -3991,7 +3992,7 @@ index daef880ae..3d0f12ce3 100644 memcpy(&vif->listen_channel, chan, sizeof(struct ieee80211_channel)); ret = sprdwl_remain_chan(vif->priv, vif->ctx_id, chan, -@@ -2627,8 +2661,8 @@ static int sprdwl_cfg80211_remain_on_channel(struct wiphy *wiphy, +@@ -2631,8 +2665,8 @@ static int sprdwl_cfg80211_remain_on_channel(struct wiphy *wiphy, } static int sprdwl_cfg80211_cancel_remain_on_channel(struct wiphy *wiphy, @@ -4002,7 +4003,7 @@ index daef880ae..3d0f12ce3 100644 { struct sprdwl_vif *vif = container_of(wdev, struct sprdwl_vif, wdev); -@@ -2668,9 +2702,9 @@ static int sprdwl_cfg80211_mgmt_tx(struct wiphy *wiphy, +@@ -2672,9 +2706,9 @@ static int sprdwl_cfg80211_mgmt_tx(struct wiphy *wiphy, /* send tx mgmt */ if (len > 0) { ret = sprdwl_tx_mgmt(vif->priv, vif->ctx_id, @@ -4015,7 +4016,7 @@ index daef880ae..3d0f12ce3 100644 if (ret) if (!dont_wait_for_ack) cfg80211_mgmt_tx_status(wdev, *cookie, buf, len, -@@ -2688,9 +2722,10 @@ static void sprdwl_cfg80211_mgmt_frame_register(struct wiphy *wiphy, +@@ -2692,9 +2726,10 @@ static void sprdwl_cfg80211_mgmt_frame_register(struct wiphy *wiphy, struct sprdwl_work *misc_work; struct sprdwl_reg_mgmt *reg_mgmt; u16 mgmt_type; @@ -4028,7 +4029,7 @@ index daef880ae..3d0f12ce3 100644 #endif if (vif->mode == SPRDWL_MODE_NONE) -@@ -2698,7 +2733,7 @@ static void sprdwl_cfg80211_mgmt_frame_register(struct wiphy *wiphy, +@@ -2702,7 +2737,7 @@ static void sprdwl_cfg80211_mgmt_frame_register(struct wiphy *wiphy, mgmt_type = (frame_type & IEEE80211_FCTL_STYPE) >> 4; if ((reg && test_and_set_bit(mgmt_type, &vif->mgmt_reg)) || @@ -4037,7 +4038,7 @@ index daef880ae..3d0f12ce3 100644 wl_ndev_log(L_DBG, wdev->netdev, "%s mgmt %d has %sreg\n", __func__, frame_type, reg ? "" : "un"); return; -@@ -2745,9 +2780,9 @@ void sprdwl_report_rx_mgmt(struct sprdwl_vif *vif, u8 chan, const u8 *buf, +@@ -2749,9 +2784,9 @@ void sprdwl_report_rx_mgmt(struct sprdwl_vif *vif, u8 chan, const u8 *buf, int freq; #if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 7, 0) freq = ieee80211_channel_to_frequency(chan, @@ -4050,7 +4051,7 @@ index daef880ae..3d0f12ce3 100644 #else freq = ieee80211_channel_to_frequency(chan, chan <= CH_MAX_2G_CHANNEL ? -@@ -2767,7 +2802,7 @@ void sprdwl_report_rx_mgmt(struct sprdwl_vif *vif, u8 chan, const u8 *buf, +@@ -2771,7 +2806,7 @@ void sprdwl_report_rx_mgmt(struct sprdwl_vif *vif, u8 chan, const u8 *buf, } void sprdwl_report_mgmt_deauth(struct sprdwl_vif *vif, const u8 *buf, @@ -4059,7 +4060,7 @@ index daef880ae..3d0f12ce3 100644 { struct sprdwl_work *misc_work; -@@ -2803,7 +2838,7 @@ void sprdwl_report_mgmt_disassoc(struct sprdwl_vif *vif, const u8 *buf, +@@ -2807,7 +2842,7 @@ void sprdwl_report_mgmt_disassoc(struct sprdwl_vif *vif, const u8 *buf, } static int sprdwl_cfg80211_start_p2p_device(struct wiphy *wiphy, @@ -4068,7 +4069,7 @@ index daef880ae..3d0f12ce3 100644 { struct sprdwl_vif *vif = container_of(wdev, struct sprdwl_vif, wdev); -@@ -2813,7 +2848,7 @@ static int sprdwl_cfg80211_start_p2p_device(struct wiphy *wiphy, +@@ -2817,7 +2852,7 @@ static int sprdwl_cfg80211_start_p2p_device(struct wiphy *wiphy, } static void sprdwl_cfg80211_stop_p2p_device(struct wiphy *wiphy, @@ -4077,22 +4078,7 @@ index daef880ae..3d0f12ce3 100644 { struct sprdwl_vif *vif = container_of(wdev, struct sprdwl_vif, wdev); -@@ -2826,10 +2861,10 @@ static void sprdwl_cfg80211_stop_p2p_device(struct wiphy *wiphy, - } - - static int sprdwl_cfg80211_tdls_mgmt(struct wiphy *wiphy, -- struct net_device *ndev, const u8 *peer, -- u8 action_code, u8 dialog_token, -- u16 status_code, u32 peer_capability, -- bool initiator, const u8 *buf, size_t len) -+ struct net_device *ndev, const u8 *peer, -+ u8 action_code, u8 dialog_token, -+ u16 status_code, u32 peer_capability, -+ bool initiator, const u8 *buf, size_t len) - { - struct sprdwl_vif *vif = netdev_priv(ndev); - struct sk_buff *tdls_skb; -@@ -2839,7 +2874,7 @@ static int sprdwl_cfg80211_tdls_mgmt(struct wiphy *wiphy, +@@ -2843,7 +2878,7 @@ static int sprdwl_cfg80211_tdls_mgmt(struct wiphy *wiphy, int ret = 0; wl_ndev_log(L_DBG, ndev, "%s action_code=%d(%pM)\n", __func__, @@ -4101,7 +4087,7 @@ index daef880ae..3d0f12ce3 100644 datalen = sizeof(*p) + len + sizeof(end); ielen = len + sizeof(end); -@@ -2917,8 +2952,8 @@ static int sprdwl_cfg80211_tdls_mgmt(struct wiphy *wiphy, +@@ -2921,8 +2956,8 @@ static int sprdwl_cfg80211_tdls_mgmt(struct wiphy *wiphy, } static int sprdwl_cfg80211_tdls_oper(struct wiphy *wiphy, @@ -4112,7 +4098,7 @@ index daef880ae..3d0f12ce3 100644 { struct sprdwl_vif *vif = netdev_priv(ndev); int ret; -@@ -2943,7 +2978,7 @@ static int sprdwl_cfg80211_tdls_oper(struct wiphy *wiphy, +@@ -2947,7 +2982,7 @@ static int sprdwl_cfg80211_tdls_oper(struct wiphy *wiphy, for (i = 0; i < MAX_LUT_NUM; i++) { if ((0 == memcmp(intf->peer_entry[i].tx.da, peer, ETH_ALEN)) && @@ -4121,7 +4107,7 @@ index daef880ae..3d0f12ce3 100644 wl_info("%s, %d, lut_index=%d\n", __func__, __LINE__, intf->peer_entry[i].lut_index); -@@ -2957,9 +2992,9 @@ static int sprdwl_cfg80211_tdls_oper(struct wiphy *wiphy, +@@ -2961,9 +2996,9 @@ static int sprdwl_cfg80211_tdls_oper(struct wiphy *wiphy, #if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 19, 0) static int sprdwl_cfg80211_tdls_chan_switch(struct wiphy *wiphy, @@ -4134,7 +4120,7 @@ index daef880ae..3d0f12ce3 100644 { struct sprdwl_vif *vif = netdev_priv(ndev); u8 chan, band; -@@ -2973,8 +3008,8 @@ static int sprdwl_cfg80211_tdls_chan_switch(struct wiphy *wiphy, +@@ -2977,8 +3012,8 @@ static int sprdwl_cfg80211_tdls_chan_switch(struct wiphy *wiphy, } static void sprdwl_cfg80211_tdls_cancel_chan_switch(struct wiphy *wiphy, @@ -4145,7 +4131,7 @@ index daef880ae..3d0f12ce3 100644 { struct sprdwl_vif *vif = netdev_priv(ndev); -@@ -3000,7 +3035,7 @@ int sprdwl_cfg80211_set_cqm_rssi_config(struct wiphy *wiphy, +@@ -3004,7 +3039,7 @@ int sprdwl_cfg80211_set_cqm_rssi_config(struct wiphy *wiphy, struct sprdwl_vif *vif = netdev_priv(ndev); wl_ndev_log(L_DBG, ndev, "%s rssi_thold %d rssi_hyst %d", @@ -4154,7 +4140,7 @@ index daef880ae..3d0f12ce3 100644 return sprdwl_set_cqm_rssi(vif->priv, vif->ctx_id, rssi_thold, rssi_hyst); -@@ -3024,13 +3059,13 @@ int sprdwl_cfg80211_update_ft_ies(struct wiphy *wiphy, struct net_device *ndev, +@@ -3028,13 +3063,13 @@ int sprdwl_cfg80211_update_ft_ies(struct wiphy *wiphy, struct net_device *ndev, wl_ndev_log(L_DBG, ndev, "%s\n", __func__); return sprdwl_set_roam_offload(vif->priv, vif->ctx_id, @@ -4172,7 +4158,7 @@ index daef880ae..3d0f12ce3 100644 { struct sprdwl_vif *vif = netdev_priv(ndev); -@@ -3041,9 +3076,9 @@ static int sprdwl_cfg80211_set_qos_map(struct wiphy *wiphy, +@@ -3045,9 +3080,9 @@ static int sprdwl_cfg80211_set_qos_map(struct wiphy *wiphy, #if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 18, 0) static int sprdwl_cfg80211_add_tx_ts(struct wiphy *wiphy, @@ -4185,7 +4171,7 @@ index daef880ae..3d0f12ce3 100644 { struct sprdwl_vif *vif = netdev_priv(ndev); -@@ -3054,8 +3089,8 @@ static int sprdwl_cfg80211_add_tx_ts(struct wiphy *wiphy, +@@ -3058,8 +3093,8 @@ static int sprdwl_cfg80211_add_tx_ts(struct wiphy *wiphy, } static int sprdwl_cfg80211_del_tx_ts(struct wiphy *wiphy, @@ -4196,7 +4182,7 @@ index daef880ae..3d0f12ce3 100644 { struct sprdwl_vif *vif = netdev_priv(ndev); -@@ -3066,8 +3101,8 @@ static int sprdwl_cfg80211_del_tx_ts(struct wiphy *wiphy, +@@ -3070,8 +3105,8 @@ static int sprdwl_cfg80211_del_tx_ts(struct wiphy *wiphy, #endif static int sprdwl_cfg80211_set_mac_acl(struct wiphy *wiphy, @@ -4207,7 +4193,7 @@ index daef880ae..3d0f12ce3 100644 { struct sprdwl_vif *vif = netdev_priv(ndev); int index, num; -@@ -3075,7 +3110,7 @@ static int sprdwl_cfg80211_set_mac_acl(struct wiphy *wiphy, +@@ -3079,7 +3114,7 @@ static int sprdwl_cfg80211_set_mac_acl(struct wiphy *wiphy, unsigned char *mac_addr = NULL; if (!acl || !acl->n_acl_entries) { @@ -4216,7 +4202,7 @@ index daef880ae..3d0f12ce3 100644 return 0; } -@@ -3099,18 +3134,18 @@ static int sprdwl_cfg80211_set_mac_acl(struct wiphy *wiphy, +@@ -3103,18 +3138,18 @@ static int sprdwl_cfg80211_set_mac_acl(struct wiphy *wiphy, for (index = 0; index < num; index++) { wl_ndev_log(L_DBG, ndev, "%s MAC: %pM\n", __func__, @@ -4240,7 +4226,7 @@ index daef880ae..3d0f12ce3 100644 } int sprdwl_cfg80211_set_power_mgmt(struct wiphy *wiphy, struct net_device *ndev, -@@ -3126,7 +3161,7 @@ int sprdwl_cfg80211_set_power_mgmt(struct wiphy *wiphy, struct net_device *ndev, +@@ -3130,7 +3165,7 @@ int sprdwl_cfg80211_set_power_mgmt(struct wiphy *wiphy, struct net_device *ndev, #ifdef ACS_SUPPORT static int sprdwl_cfg80211_dump_survey(struct wiphy *wiphy, struct net_device *ndev, @@ -4249,7 +4235,7 @@ index daef880ae..3d0f12ce3 100644 { struct sprdwl_vif *vif = netdev_priv(ndev); struct sprdwl_survey_info *info = NULL; -@@ -3176,7 +3211,7 @@ sprdwl_cfg80211_dump_survey(struct wiphy *wiphy, struct net_device *ndev, +@@ -3180,7 +3215,7 @@ sprdwl_cfg80211_dump_survey(struct wiphy *wiphy, struct net_device *ndev, /* There are no more survey info in list */ err = -ENOENT; wl_ndev_log(L_DBG, vif->ndev, "%s report %d surveys\n", @@ -4258,7 +4244,7 @@ index daef880ae..3d0f12ce3 100644 survey_count = 0; } -@@ -3247,6 +3282,7 @@ static struct cfg80211_ops sprdwl_cfg80211_ops = { +@@ -3251,6 +3286,7 @@ static struct cfg80211_ops sprdwl_cfg80211_ops = { .remain_on_channel = sprdwl_cfg80211_remain_on_channel, .cancel_remain_on_channel = sprdwl_cfg80211_cancel_remain_on_channel, .mgmt_tx = sprdwl_cfg80211_mgmt_tx, @@ -4266,7 +4252,7 @@ index daef880ae..3d0f12ce3 100644 .update_mgmt_frame_registrations = sprdwl_cfg80211_mgmt_frame_register, .set_power_mgmt = sprdwl_cfg80211_set_power_mgmt, .set_cqm_rssi_config = sprdwl_cfg80211_set_cqm_rssi_config, -@@ -3322,7 +3358,7 @@ void sprdwl_save_ch_info(struct sprdwl_priv *priv, u32 band, u32 flags, int cent +@@ -3326,7 +3362,7 @@ void sprdwl_save_ch_info(struct sprdwl_priv *priv, u32 band, u32 flags, int cent #if defined(CONFIG_CFG80211_INTERNAL_REGDB) && !defined(CUSTOM_REGDOMAIN) static void sprdwl_reg_notify(struct wiphy *wiphy, @@ -4275,7 +4261,7 @@ index daef880ae..3d0f12ce3 100644 { struct sprdwl_priv *priv = wiphy_priv(wiphy); struct sprdwl_intf *intf = (struct sprdwl_intf *)priv->hw_priv; -@@ -3359,7 +3395,7 @@ static void sprdwl_reg_notify(struct wiphy *wiphy, +@@ -3363,7 +3399,7 @@ static void sprdwl_reg_notify(struct wiphy *wiphy, chan = &sband->channels[channel]; reg_rule = @@ -4284,7 +4270,7 @@ index daef880ae..3d0f12ce3 100644 if (IS_ERR(reg_rule)) continue; -@@ -3375,12 +3411,12 @@ static void sprdwl_reg_notify(struct wiphy *wiphy, +@@ -3379,12 +3415,12 @@ static void sprdwl_reg_notify(struct wiphy *wiphy, } rd_size = sizeof(struct sprdwl_ieee80211_regdomain) + @@ -4299,7 +4285,7 @@ index daef880ae..3d0f12ce3 100644 return; } -@@ -3408,17 +3444,17 @@ static void sprdwl_reg_notify(struct wiphy *wiphy, +@@ -3412,17 +3448,17 @@ static void sprdwl_reg_notify(struct wiphy *wiphy, intf->sta_home_channel = 0; #endif reg_rule = @@ -4320,7 +4306,7 @@ index daef880ae..3d0f12ce3 100644 i++; wl_info( -@@ -3432,7 +3468,7 @@ static void sprdwl_reg_notify(struct wiphy *wiphy, +@@ -3436,7 +3472,7 @@ static void sprdwl_reg_notify(struct wiphy *wiphy, } print_hex_dump_debug("regdom:", DUMP_PREFIX_OFFSET, 16, 1, @@ -4329,7 +4315,7 @@ index daef880ae..3d0f12ce3 100644 if (sprdwl_set_regdom(priv, (u8 *)rd, rd_size)) wl_err("%s failed to set regdomain!\n", __func__); if (rd != NULL) { -@@ -3442,7 +3478,7 @@ static void sprdwl_reg_notify(struct wiphy *wiphy, +@@ -3446,7 +3482,7 @@ static void sprdwl_reg_notify(struct wiphy *wiphy, } #else void sprdwl_reg_notify(struct wiphy *wiphy, @@ -4338,7 +4324,7 @@ index daef880ae..3d0f12ce3 100644 { struct sprdwl_priv *priv = wiphy_priv(wiphy); #ifdef STA_SOFTAP_SCC_MODE -@@ -3500,7 +3536,7 @@ void sprdwl_reg_notify(struct wiphy *wiphy, +@@ -3504,7 +3540,7 @@ void sprdwl_reg_notify(struct wiphy *wiphy, chan = &sband->channels[channel]; reg_rule = @@ -4347,7 +4333,7 @@ index daef880ae..3d0f12ce3 100644 if (IS_ERR(reg_rule)) { wl_debug("%s, %d, chan=%d\n", __func__, __LINE__, (int)(chan->center_freq)); continue; -@@ -3519,15 +3555,15 @@ void sprdwl_reg_notify(struct wiphy *wiphy, +@@ -3523,15 +3559,15 @@ void sprdwl_reg_notify(struct wiphy *wiphy, rd_size = sizeof(struct sprdwl_ieee80211_regdomain) + #if (LINUX_VERSION_CODE >= KERNEL_VERSION(3, 15, 0)) @@ -4366,7 +4352,7 @@ index daef880ae..3d0f12ce3 100644 return; } -@@ -3556,17 +3592,17 @@ void sprdwl_reg_notify(struct wiphy *wiphy, +@@ -3560,17 +3596,17 @@ void sprdwl_reg_notify(struct wiphy *wiphy, #endif reg_rule = @@ -4387,7 +4373,7 @@ index daef880ae..3d0f12ce3 100644 #if (LINUX_VERSION_CODE < KERNEL_VERSION(3, 15, 0)) rd->reg_rules[i].dfs_cac_ms = 0; #endif -@@ -3583,7 +3619,7 @@ void sprdwl_reg_notify(struct wiphy *wiphy, +@@ -3587,7 +3623,7 @@ void sprdwl_reg_notify(struct wiphy *wiphy, } wl_hex_dump(L_DBG, "regdom:", DUMP_PREFIX_OFFSET, 16, 1, @@ -4396,7 +4382,7 @@ index daef880ae..3d0f12ce3 100644 if (sprdwl_set_regdom(priv, (u8 *)rd, rd_size)) wl_err("%s failed to set regdomain!\n", __func__); -@@ -3638,8 +3674,8 @@ void sprdwl_setup_wiphy(struct wiphy *wiphy, struct sprdwl_priv *priv) +@@ -3642,8 +3678,8 @@ void sprdwl_setup_wiphy(struct wiphy *wiphy, struct sprdwl_priv *priv) wiphy->mgmt_stypes = sprdwl_mgmt_stypes; wiphy->interface_modes = @@ -4407,7 +4393,7 @@ index daef880ae..3d0f12ce3 100644 #ifndef CONFIG_P2P_INTF wiphy->interface_modes |= BIT(NL80211_IFTYPE_P2P_DEVICE); #endif -@@ -3784,9 +3820,9 @@ void sprdwl_setup_wiphy(struct wiphy *wiphy, struct sprdwl_priv *priv) +@@ -3788,9 +3824,9 @@ void sprdwl_setup_wiphy(struct wiphy *wiphy, struct sprdwl_priv *priv) #if !defined (CONFIG_CFG80211_INTERNAL_REGDB) || defined(CUSTOM_REGDOMAIN) #if (LINUX_VERSION_CODE >= KERNEL_VERSION(3, 14, 0)) @@ -4419,7 +4405,7 @@ index daef880ae..3d0f12ce3 100644 #endif alpha2[0] = '0'; alpha2[1] = '0'; -@@ -3805,9 +3841,9 @@ void sprdwl_setup_wiphy(struct wiphy *wiphy, struct sprdwl_priv *priv) +@@ -3809,9 +3845,9 @@ void sprdwl_setup_wiphy(struct wiphy *wiphy, struct sprdwl_priv *priv) } else { wl_info("\tSCC supported\n"); wiphy->software_iftypes = @@ -4432,7 +4418,7 @@ index daef880ae..3d0f12ce3 100644 #ifndef CONFIG_P2P_INTF wiphy->software_iftypes |= BIT(NL80211_IFTYPE_P2P_DEVICE); #endif -@@ -3825,7 +3861,7 @@ void sprdwl_setup_wiphy(struct wiphy *wiphy, struct sprdwl_priv *priv) +@@ -3829,7 +3865,7 @@ void sprdwl_setup_wiphy(struct wiphy *wiphy, struct sprdwl_priv *priv) } #if 0 if (priv->fw_capa & SPRDWL_CAPA_PMK_OKC_OFFLOAD && @@ -4441,7 +4427,7 @@ index daef880ae..3d0f12ce3 100644 wl_info("\tRoaming offload supported\n"); wiphy->flags |= WIPHY_FLAG_SUPPORTS_FW_ROAM; } -@@ -3876,7 +3912,7 @@ static void sprdwl_check_intf_ops(struct sprdwl_if_ops *ops) +@@ -3880,7 +3916,7 @@ static void sprdwl_check_intf_ops(struct sprdwl_if_ops *ops) } struct sprdwl_priv *sprdwl_core_create(enum sprdwl_hw_type type, @@ -4450,7 +4436,7 @@ index daef880ae..3d0f12ce3 100644 { struct wiphy *wiphy; struct sprdwl_priv *priv; -@@ -3897,7 +3933,7 @@ struct sprdwl_priv *sprdwl_core_create(enum sprdwl_hw_type type, +@@ -3901,7 +3937,7 @@ struct sprdwl_priv *sprdwl_core_create(enum sprdwl_hw_type type, wl_info("hw_type:%d\n", priv->hw_type); priv->skb_head_len = sizeof(struct sprdwl_data_hdr) + NET_IP_ALIGN + @@ -4459,7 +4445,7 @@ index daef880ae..3d0f12ce3 100644 priv->if_ops = ops; -@@ -3905,7 +3941,7 @@ struct sprdwl_priv *sprdwl_core_create(enum sprdwl_hw_type type, +@@ -3909,7 +3945,7 @@ struct sprdwl_priv *sprdwl_core_create(enum sprdwl_hw_type type, timer_setup(&priv->scan_timer, sprdwl_scan_timeout, 0); #else setup_timer(&priv->scan_timer, sprdwl_scan_timeout, @@ -4469,7 +4455,7 @@ index daef880ae..3d0f12ce3 100644 #ifdef WMMAC_WFA_CERTIFICATION diff --git a/drivers/net/wireless/uwe5622/unisocwifi/cfg80211.h b/drivers/net/wireless/uwe5622/unisocwifi/cfg80211.h -index d4ffe1024..380e7da5f 100644 +index d4ffe102447c..380e7da5f442 100644 --- a/drivers/net/wireless/uwe5622/unisocwifi/cfg80211.h +++ b/drivers/net/wireless/uwe5622/unisocwifi/cfg80211.h @@ -21,15 +21,6 @@ @@ -4489,7 +4475,7 @@ index d4ffe1024..380e7da5f 100644 #define NL80211_SCAN_FLAG_RANDOM_ADDR (1<<3) diff --git a/drivers/net/wireless/uwe5622/unisocwifi/cmdevt.c b/drivers/net/wireless/uwe5622/unisocwifi/cmdevt.c -index e81619b12..19e59b6f2 100644 +index 8a3081fb819c..55c76b74195a 100644 --- a/drivers/net/wireless/uwe5622/unisocwifi/cmdevt.c +++ b/drivers/net/wireless/uwe5622/unisocwifi/cmdevt.c @@ -257,7 +257,11 @@ int sprdwl_cmd_init(void) @@ -5569,7 +5555,7 @@ index e81619b12..19e59b6f2 100644 sprdwl_unboost(); } -@@ -3382,8 +3512,8 @@ unsigned short sprdwl_rx_event_process(struct sprdwl_priv *priv, u8 *msg) +@@ -3386,8 +3516,8 @@ unsigned short sprdwl_rx_event_process(struct sprdwl_priv *priv, u8 *msg) plen = SPRDWL_GET_LE16(hdr->plen); if (!priv) { wl_err("%s priv is NULL [%u]ctx_id %d recv[%s]len: %d\n", @@ -5580,7 +5566,7 @@ index e81619b12..19e59b6f2 100644 return plen; } -@@ -3392,7 +3522,7 @@ unsigned short sprdwl_rx_event_process(struct sprdwl_priv *priv, u8 *msg) +@@ -3396,7 +3526,7 @@ unsigned short sprdwl_rx_event_process(struct sprdwl_priv *priv, u8 *msg) evt2str(hdr->cmd_id), plen); wl_hex_dump(L_DBG, "EVENT: ", DUMP_PREFIX_OFFSET, 16, 1, @@ -5589,7 +5575,7 @@ index e81619b12..19e59b6f2 100644 len = plen - sizeof(*hdr); vif = ctx_id_to_vif(priv, ctx_id); -@@ -3466,9 +3596,11 @@ unsigned short sprdwl_rx_event_process(struct sprdwl_priv *priv, u8 *msg) +@@ -3470,9 +3600,11 @@ unsigned short sprdwl_rx_event_process(struct sprdwl_priv *priv, u8 *msg) sprdwl_event_nan(vif, data, len); break; #endif /* NAN_SUPPORT */ @@ -5601,7 +5587,7 @@ index e81619b12..19e59b6f2 100644 case WIFI_EVENT_BA: sprdwl_event_ba_mgmt(vif, data, len); break; -@@ -3588,8 +3720,8 @@ int sprdwl_sync_disconnect_event(struct sprdwl_vif *vif, unsigned int timeout) +@@ -3592,8 +3724,8 @@ int sprdwl_sync_disconnect_event(struct sprdwl_vif *vif, unsigned int timeout) #endif int sprdwl_set_packet_offload(struct sprdwl_priv *priv, u8 vif_ctx_id, @@ -5613,7 +5599,7 @@ index e81619b12..19e59b6f2 100644 struct sprdwl_msg_buf *msg; struct sprdwl_cmd_packet_offload *p; diff --git a/drivers/net/wireless/uwe5622/unisocwifi/cmdevt.h b/drivers/net/wireless/uwe5622/unisocwifi/cmdevt.h -index 8dd59bc2c..ce8c774e8 100644 +index 8dd59bc2c841..ce8c774e8968 100644 --- a/drivers/net/wireless/uwe5622/unisocwifi/cmdevt.h +++ b/drivers/net/wireless/uwe5622/unisocwifi/cmdevt.h @@ -907,6 +907,7 @@ struct sprdwl_tlv_data { @@ -5625,7 +5611,7 @@ index 8dd59bc2c..ce8c774e8 100644 struct ap_version_tlv_elmt { #define NOTIFY_AP_VERSION_USER 0 diff --git a/drivers/net/wireless/uwe5622/unisocwifi/dbg_ini_util.c b/drivers/net/wireless/uwe5622/unisocwifi/dbg_ini_util.c -index 70415e79b..264e9f755 100644 +index 70415e79b311..264e9f7559ab 100644 --- a/drivers/net/wireless/uwe5622/unisocwifi/dbg_ini_util.c +++ b/drivers/net/wireless/uwe5622/unisocwifi/dbg_ini_util.c @@ -264,9 +264,9 @@ int sprdwl_dbg_new_beacon_tail(const u8 *beacon_tail, int tail_len, u8 *new_tail @@ -5642,7 +5628,7 @@ index 70415e79b..264e9f755 100644 while (tail_len > 2) { diff --git a/drivers/net/wireless/uwe5622/unisocwifi/debug.c b/drivers/net/wireless/uwe5622/unisocwifi/debug.c -index 998f00ec5..8f12cf16a 100644 +index 5f25f078ff5c..84fe30f7e70e 100644 --- a/drivers/net/wireless/uwe5622/unisocwifi/debug.c +++ b/drivers/net/wireless/uwe5622/unisocwifi/debug.c @@ -175,12 +175,12 @@ void adjust_ts_cnt_debug(char *buf, unsigned char offset) @@ -5662,7 +5648,7 @@ index 998f00ec5..8f12cf16a 100644 spin_unlock_bh(&debug_ctrl.debug_ctrl_lock); } diff --git a/drivers/net/wireless/uwe5622/unisocwifi/defrag.c b/drivers/net/wireless/uwe5622/unisocwifi/defrag.c -index 0b3cfb767..816940b47 100644 +index 0b3cfb767681..816940b47dca 100644 --- a/drivers/net/wireless/uwe5622/unisocwifi/defrag.c +++ b/drivers/net/wireless/uwe5622/unisocwifi/defrag.c @@ -26,11 +26,11 @@ static struct rx_defrag_node @@ -5755,7 +5741,7 @@ index 0b3cfb767..816940b47 100644 struct rx_msdu_desc *msdu_desc = (struct rx_msdu_desc *)pskb->data; struct sk_buff *skb = NULL; diff --git a/drivers/net/wireless/uwe5622/unisocwifi/edma_test.c b/drivers/net/wireless/uwe5622/unisocwifi/edma_test.c -index 5a320b6b5..f45bc8043 100644 +index 5a320b6b55e1..f45bc8043f9c 100644 --- a/drivers/net/wireless/uwe5622/unisocwifi/edma_test.c +++ b/drivers/net/wireless/uwe5622/unisocwifi/edma_test.c @@ -23,7 +23,7 @@ @@ -5824,7 +5810,7 @@ index 5a320b6b5..f45bc8043 100644 } diff --git a/drivers/net/wireless/uwe5622/unisocwifi/ibss.c b/drivers/net/wireless/uwe5622/unisocwifi/ibss.c -index d335635bc..822a17c6b 100644 +index d335635bc262..822a17c6bb47 100644 --- a/drivers/net/wireless/uwe5622/unisocwifi/ibss.c +++ b/drivers/net/wireless/uwe5622/unisocwifi/ibss.c @@ -28,8 +28,8 @@ @@ -5878,7 +5864,7 @@ index d335635bc..822a17c6b 100644 struct sprdwl_vif *vif = netdev_priv(ndev); enum sm_state old_state = vif->sm_state; diff --git a/drivers/net/wireless/uwe5622/unisocwifi/intf.h b/drivers/net/wireless/uwe5622/unisocwifi/intf.h -index 41b9bd5a3..c17356251 100644 +index 41b9bd5a3fe9..c17356251e02 100644 --- a/drivers/net/wireless/uwe5622/unisocwifi/intf.h +++ b/drivers/net/wireless/uwe5622/unisocwifi/intf.h @@ -24,17 +24,35 @@ struct sprdwl_priv; @@ -5919,7 +5905,7 @@ index 41b9bd5a3..c17356251 100644 }; diff --git a/drivers/net/wireless/uwe5622/unisocwifi/intf_ops.h b/drivers/net/wireless/uwe5622/unisocwifi/intf_ops.h -index c580b3040..3844b0b06 100644 +index c580b3040260..3844b0b06767 100644 --- a/drivers/net/wireless/uwe5622/unisocwifi/intf_ops.h +++ b/drivers/net/wireless/uwe5622/unisocwifi/intf_ops.h @@ -28,7 +28,11 @@ inline struct sprdwl_msg_buf *sprdwl_intf_get_msg_buf(struct sprdwl_priv *priv, @@ -5982,7 +5968,7 @@ index c580b3040..3844b0b06 100644 static inline int sprdwl_get_ini_status(struct sprdwl_priv *priv) diff --git a/drivers/net/wireless/uwe5622/unisocwifi/main.c b/drivers/net/wireless/uwe5622/unisocwifi/main.c -index edd8ac14f..3b9164214 100644 +index 21efdf4e0855..46b9039519cd 100644 --- a/drivers/net/wireless/uwe5622/unisocwifi/main.c +++ b/drivers/net/wireless/uwe5622/unisocwifi/main.c @@ -24,10 +24,13 @@ @@ -6402,7 +6388,7 @@ index edd8ac14f..3b9164214 100644 sprdwl_vendor_deinit(priv->wiphy); wiphy_unregister(priv->wiphy); diff --git a/drivers/net/wireless/uwe5622/unisocwifi/mm.c b/drivers/net/wireless/uwe5622/unisocwifi/mm.c -index eaf6554f2..f33d87185 100644 +index eaf6554f2310..f33d87185de3 100644 --- a/drivers/net/wireless/uwe5622/unisocwifi/mm.c +++ b/drivers/net/wireless/uwe5622/unisocwifi/mm.c @@ -30,7 +30,7 @@ @@ -6635,7 +6621,7 @@ index eaf6554f2..f33d87185 100644 kfree(mm_entry->hdr); mm_entry->hdr = NULL; diff --git a/drivers/net/wireless/uwe5622/unisocwifi/msg.c b/drivers/net/wireless/uwe5622/unisocwifi/msg.c -index 6140199be..f130e0da4 100644 +index 511baf91f5de..f71a6879615d 100644 --- a/drivers/net/wireless/uwe5622/unisocwifi/msg.c +++ b/drivers/net/wireless/uwe5622/unisocwifi/msg.c @@ -17,7 +17,7 @@ @@ -6664,14 +6650,14 @@ index 6140199be..f130e0da4 100644 struct sprdwl_msg_buf *sprdwl_get_tail_msg_buf(struct sprdwl_msg_list *list) { struct sprdwl_msg_buf *msg_buf = NULL; -@@ -180,3 +181,4 @@ struct sprdwl_msg_buf *sprdwl_get_tail_msg_buf(struct sprdwl_msg_list *list) +@@ -180,4 +181,5 @@ struct sprdwl_msg_buf *sprdwl_get_tail_msg_buf(struct sprdwl_msg_list *list) spin_unlock_bh(&list->busylock); return msg_buf; } +#endif -\ No newline at end of file + diff --git a/drivers/net/wireless/uwe5622/unisocwifi/msg.h b/drivers/net/wireless/uwe5622/unisocwifi/msg.h -index dd57521ae..67a4b474e 100644 +index dd57521ae708..67a4b474e74e 100644 --- a/drivers/net/wireless/uwe5622/unisocwifi/msg.h +++ b/drivers/net/wireless/uwe5622/unisocwifi/msg.h @@ -215,5 +215,7 @@ void sprdwl_dequeue_msg_buf(struct sprdwl_msg_buf *msg_buf, @@ -6683,7 +6669,7 @@ index dd57521ae..67a4b474e 100644 #endif +#endif diff --git a/drivers/net/wireless/uwe5622/unisocwifi/nan.c b/drivers/net/wireless/uwe5622/unisocwifi/nan.c -index a08a3c076..740ea0ad3 100644 +index a08a3c076964..740ea0ad38a2 100644 --- a/drivers/net/wireless/uwe5622/unisocwifi/nan.c +++ b/drivers/net/wireless/uwe5622/unisocwifi/nan.c @@ -43,7 +43,7 @@ int sprdwl_vendor_nan_cmds(struct wiphy *wiphy, @@ -6696,18 +6682,9 @@ index a08a3c076..740ea0ad3 100644 if (!ret && rsp_len) sprdwl_event_nan(vif, rsp, rsp_len); diff --git a/drivers/net/wireless/uwe5622/unisocwifi/npi.c b/drivers/net/wireless/uwe5622/unisocwifi/npi.c -index ca599c894..90b333b70 100644 +index 00908c1a862f..42fe960c8289 100644 --- a/drivers/net/wireless/uwe5622/unisocwifi/npi.c +++ b/drivers/net/wireless/uwe5622/unisocwifi/npi.c -@@ -105,7 +105,7 @@ static int sprdwl_cmd_set_psm_cap(struct sprdwl_vif *vif) - } - - static int sprdwl_npi_pre_doit(const struct genl_ops *ops, -- struct sk_buff *skb, struct genl_info *info) -+ struct sk_buff *skb, struct genl_info *info) - { - struct net_device *ndev; - struct sprdwl_vif *vif; @@ -148,7 +148,7 @@ static bool sprdwl_npi_cmd_is_start(void *buf) msg = (struct sprdwl_npi_cmd_hdr *)buf; @@ -6777,7 +6754,7 @@ index ca599c894..90b333b70 100644 #endif .doit = sprdwl_nl_get_info_handler, diff --git a/drivers/net/wireless/uwe5622/unisocwifi/qos.c b/drivers/net/wireless/uwe5622/unisocwifi/qos.c -index b1a0f7cc4..047b2d9c3 100644 +index c01d88fba346..d0e42a882cb4 100644 --- a/drivers/net/wireless/uwe5622/unisocwifi/qos.c +++ b/drivers/net/wireless/uwe5622/unisocwifi/qos.c @@ -192,7 +192,7 @@ void qos_set_dscp2up_table(unsigned char *dscp2up_table, @@ -6916,7 +6893,7 @@ index b1a0f7cc4..047b2d9c3 100644 unsigned int change_priority_if(struct sprdwl_priv *priv, unsigned char *tid, unsigned char *tos, u16 len) { diff --git a/drivers/net/wireless/uwe5622/unisocwifi/qos.h b/drivers/net/wireless/uwe5622/unisocwifi/qos.h -index 2a99178bc..3d69d1c57 100644 +index 2a99178bcea4..3d69d1c5730a 100644 --- a/drivers/net/wireless/uwe5622/unisocwifi/qos.h +++ b/drivers/net/wireless/uwe5622/unisocwifi/qos.h @@ -79,6 +79,7 @@ struct qos_map_set { @@ -6943,7 +6920,7 @@ index 2a99178bc..3d69d1c57 100644 const u8 *get_wmm_ie(u8 *res, u16 ie_len, u8 ie, uint oui, uint oui_type); #endif diff --git a/drivers/net/wireless/uwe5622/unisocwifi/reg_domain.c b/drivers/net/wireless/uwe5622/unisocwifi/reg_domain.c -index 5a9857757..fb15045e1 100644 +index 5a9857757f53..fb15045e1764 100644 --- a/drivers/net/wireless/uwe5622/unisocwifi/reg_domain.c +++ b/drivers/net/wireless/uwe5622/unisocwifi/reg_domain.c @@ -253,7 +253,7 @@ void ShowChannel(struct wiphy *pWiphy) @@ -6983,7 +6960,7 @@ index 5a9857757..fb15045e1 100644 return false; diff --git a/drivers/net/wireless/uwe5622/unisocwifi/reorder.c b/drivers/net/wireless/uwe5622/unisocwifi/reorder.c -index 1cb3f9178..c6c77648d 100644 +index 1cb3f9178eeb..c6c77648ddde 100644 --- a/drivers/net/wireless/uwe5622/unisocwifi/reorder.c +++ b/drivers/net/wireless/uwe5622/unisocwifi/reorder.c @@ -49,7 +49,7 @@ set_ba_node_desc(struct rx_ba_node_desc *ba_node_desc, @@ -7349,7 +7326,7 @@ index 1cb3f9178..c6c77648d 100644 spin_lock_bh(&ba_node->ba_node_lock); diff --git a/drivers/net/wireless/uwe5622/unisocwifi/rf_marlin3.c b/drivers/net/wireless/uwe5622/unisocwifi/rf_marlin3.c -index a2f6cc394..ca307f12a 100644 +index a2f6cc394ce1..ca307f12ac99 100644 --- a/drivers/net/wireless/uwe5622/unisocwifi/rf_marlin3.c +++ b/drivers/net/wireless/uwe5622/unisocwifi/rf_marlin3.c @@ -181,9 +181,9 @@ static struct nvm_name_table g_config_table[] = { @@ -7365,7 +7342,7 @@ index a2f6cc394..ca307f12a 100644 CF_TAB("Chain1_161", tx_scale.chain1[37][0], 1), CF_TAB("Chain0_165", tx_scale.chain0[38][0], 1), diff --git a/drivers/net/wireless/uwe5622/unisocwifi/rtt.c b/drivers/net/wireless/uwe5622/unisocwifi/rtt.c -index 739d3aa3d..1ad03a902 100644 +index 69d6965638fb..9f0e9f2d3dd0 100644 --- a/drivers/net/wireless/uwe5622/unisocwifi/rtt.c +++ b/drivers/net/wireless/uwe5622/unisocwifi/rtt.c @@ -203,8 +203,8 @@ static u8 sprdwl_ftm_get_channel(struct wiphy *wiphy, @@ -7699,7 +7676,7 @@ index 739d3aa3d..1ad03a902 100644 struct sprdwl_msg_buf *msg; struct sprdwl_cmd_rtt *cmd; diff --git a/drivers/net/wireless/uwe5622/unisocwifi/rx_msg.c b/drivers/net/wireless/uwe5622/unisocwifi/rx_msg.c -index b6604ee54..b51207d19 100644 +index b6604ee547ce..b51207d19c89 100644 --- a/drivers/net/wireless/uwe5622/unisocwifi/rx_msg.c +++ b/drivers/net/wireless/uwe5622/unisocwifi/rx_msg.c @@ -31,8 +31,8 @@ @@ -7858,7 +7835,7 @@ index b6604ee54..b51207d19 100644 } #endif diff --git a/drivers/net/wireless/uwe5622/unisocwifi/softap_hook.c b/drivers/net/wireless/uwe5622/unisocwifi/softap_hook.c -index 5cdc8eff9..4a859e724 100644 +index 5cdc8eff9df5..4a859e724ed8 100644 --- a/drivers/net/wireless/uwe5622/unisocwifi/softap_hook.c +++ b/drivers/net/wireless/uwe5622/unisocwifi/softap_hook.c @@ -76,7 +76,7 @@ static int sprdwl_get_softap_chan(u8 *path) @@ -7902,7 +7879,7 @@ index 5cdc8eff9..4a859e724 100644 *ds_param_ch = oper->primary_chan = channel; } diff --git a/drivers/net/wireless/uwe5622/unisocwifi/sprdwl.h b/drivers/net/wireless/uwe5622/unisocwifi/sprdwl.h -index e430bfbac..a1b2f8544 100644 +index e430bfbace8f..a1b2f8544ec4 100644 --- a/drivers/net/wireless/uwe5622/unisocwifi/sprdwl.h +++ b/drivers/net/wireless/uwe5622/unisocwifi/sprdwl.h @@ -35,6 +35,7 @@ @@ -7923,7 +7900,7 @@ index e430bfbac..a1b2f8544 100644 #endif diff --git a/drivers/net/wireless/uwe5622/unisocwifi/tcp_ack.c b/drivers/net/wireless/uwe5622/unisocwifi/tcp_ack.c -index d360f9f57..4db766fba 100644 +index d360f9f57990..4db766fbac3b 100644 --- a/drivers/net/wireless/uwe5622/unisocwifi/tcp_ack.c +++ b/drivers/net/wireless/uwe5622/unisocwifi/tcp_ack.c @@ -26,7 +26,7 @@ static void sprdwl_tcp_ack_timeout(unsigned long data) @@ -8056,7 +8033,7 @@ index d360f9f57..4db766fba 100644 struct sprdwl_tcp_ack_info *ack_info; struct sprdwl_tcp_ack_manage *ack_m = &priv->ack_m; diff --git a/drivers/net/wireless/uwe5622/unisocwifi/tx_msg.c b/drivers/net/wireless/uwe5622/unisocwifi/tx_msg.c -index 7be652187..40d51a713 100644 +index 7be652187be2..40d51a7130d9 100644 --- a/drivers/net/wireless/uwe5622/unisocwifi/tx_msg.c +++ b/drivers/net/wireless/uwe5622/unisocwifi/tx_msg.c @@ -109,7 +109,7 @@ struct sprdwl_msg_buf *sprdwl_get_msg_buf(void *pdev, @@ -8333,7 +8310,7 @@ index 7be652187..40d51a713 100644 (*b_cmd_path) = true; } diff --git a/drivers/net/wireless/uwe5622/unisocwifi/txrx.c b/drivers/net/wireless/uwe5622/unisocwifi/txrx.c -index b0a24a361..227339ada 100644 +index b0a24a3615ba..227339ada73f 100644 --- a/drivers/net/wireless/uwe5622/unisocwifi/txrx.c +++ b/drivers/net/wireless/uwe5622/unisocwifi/txrx.c @@ -23,7 +23,9 @@ @@ -8451,7 +8428,7 @@ index b0a24a361..227339ada 100644 return 0; } diff --git a/drivers/net/wireless/uwe5622/unisocwifi/vendor.c b/drivers/net/wireless/uwe5622/unisocwifi/vendor.c -index 733591184..6fba95b60 100644 +index 733591184c17..6fba95b60d62 100644 --- a/drivers/net/wireless/uwe5622/unisocwifi/vendor.c +++ b/drivers/net/wireless/uwe5622/unisocwifi/vendor.c @@ -17,7 +17,6 @@ @@ -9512,8 +9489,8 @@ index 733591184..6fba95b60 100644 int err; u8 control; diff --git a/drivers/net/wireless/uwe5622/unisocwifi/wcn_wrapper.h b/drivers/net/wireless/uwe5622/unisocwifi/wcn_wrapper.h -new file mode 100644 -index 000000000..31042f86d +new file mode 100755 +index 000000000000..31042f86d6b1 --- /dev/null +++ b/drivers/net/wireless/uwe5622/unisocwifi/wcn_wrapper.h @@ -0,0 +1,20 @@ @@ -9538,7 +9515,7 @@ index 000000000..31042f86d +#endif +#endif//__WCN_WRAPPER_H__ diff --git a/drivers/net/wireless/uwe5622/unisocwifi/wl_core.c b/drivers/net/wireless/uwe5622/unisocwifi/wl_core.c -index a4ef854b6..042a4df01 100644 +index a4ef854b62e6..042a4df0161e 100644 --- a/drivers/net/wireless/uwe5622/unisocwifi/wl_core.c +++ b/drivers/net/wireless/uwe5622/unisocwifi/wl_core.c @@ -18,7 +18,6 @@ @@ -9862,7 +9839,7 @@ index a4ef854b6..042a4df01 100644 module_init(unisoc_wlan_init); diff --git a/drivers/net/wireless/uwe5622/unisocwifi/wl_core.h b/drivers/net/wireless/uwe5622/unisocwifi/wl_core.h -index 8bad5a5fd..0d039c18e 100644 +index 8bad5a5fd538..0d039c18e226 100644 --- a/drivers/net/wireless/uwe5622/unisocwifi/wl_core.h +++ b/drivers/net/wireless/uwe5622/unisocwifi/wl_core.h @@ -17,7 +17,7 @@ @@ -9875,7 +9852,7 @@ index 8bad5a5fd..0d039c18e 100644 #include #include diff --git a/drivers/net/wireless/uwe5622/unisocwifi/wl_intf.c b/drivers/net/wireless/uwe5622/unisocwifi/wl_intf.c -index b05a57678..a6def0e06 100644 +index b05a57678264..a6def0e0682d 100644 --- a/drivers/net/wireless/uwe5622/unisocwifi/wl_intf.c +++ b/drivers/net/wireless/uwe5622/unisocwifi/wl_intf.c @@ -24,9 +24,6 @@ @@ -10485,7 +10462,7 @@ index b05a57678..a6def0e06 100644 } wl_debug("disconnect, flush qoslist, %s, %d\n", __func__, __LINE__); diff --git a/drivers/net/wireless/uwe5622/unisocwifi/wl_intf.h b/drivers/net/wireless/uwe5622/unisocwifi/wl_intf.h -index e55a35a66..b159c685a 100644 +index e55a35a66b63..b159c685a5e0 100644 --- a/drivers/net/wireless/uwe5622/unisocwifi/wl_intf.h +++ b/drivers/net/wireless/uwe5622/unisocwifi/wl_intf.h @@ -299,4 +299,5 @@ void sprdwl_boost(void); @@ -10495,7 +10472,7 @@ index e55a35a66..b159c685a 100644 +void sprdwl_bus_deinit(void); #endif /* __SPRDWL_INTF_SDIO_SC2355_H__ */ diff --git a/drivers/net/wireless/uwe5622/unisocwifi/work.c b/drivers/net/wireless/uwe5622/unisocwifi/work.c -index b7c0c8bbb..4d7e016ea 100644 +index b7c0c8bbbf99..4d7e016ea686 100644 --- a/drivers/net/wireless/uwe5622/unisocwifi/work.c +++ b/drivers/net/wireless/uwe5622/unisocwifi/work.c @@ -44,7 +44,7 @@ static struct sprdwl_work *sprdwl_get_work(struct sprdwl_priv *priv) diff --git a/recipes-kernel/linux/linux-mainline/sunxi-kmeta/bsp/uwe5622/uwe5622-allwinner-v6.3-compilation-fix.patch b/recipes-kernel/linux/linux-mainline/sunxi-kmeta/bsp/uwe5622/uwe5622-allwinner-v6.3-compilation-fix.patch new file mode 100644 index 0000000..f4dc7f3 --- /dev/null +++ b/recipes-kernel/linux/linux-mainline/sunxi-kmeta/bsp/uwe5622/uwe5622-allwinner-v6.3-compilation-fix.patch @@ -0,0 +1,47 @@ +From 9a649d7ad384907ba8f62ba50a6fd7e524d8ce25 Mon Sep 17 00:00:00 2001 +From: root +Date: Sun, 17 Sep 2023 20:45:44 +0000 +Subject: [PATCH] drivers: uwe5622: fix compilation on 6.3+ kernels + +--- + .../wireless/uwe5622/unisocwcn/platform/wcn_boot.c | 11 +++-------- + 1 file changed, 3 insertions(+), 8 deletions(-) + +diff --git a/drivers/net/wireless/uwe5622/unisocwcn/platform/wcn_boot.c b/drivers/net/wireless/uwe5622/unisocwcn/platform/wcn_boot.c +index 220bac67ddd0..b243b39c2133 100644 +--- a/drivers/net/wireless/uwe5622/unisocwcn/platform/wcn_boot.c ++++ b/drivers/net/wireless/uwe5622/unisocwcn/platform/wcn_boot.c +@@ -1371,15 +1371,13 @@ static int marlin_registsr_bt_wake(struct device *dev) + { + struct device_node *np; + int bt_wake_host_gpio, ret = 0; +- struct gpio_config config; + + np = of_find_compatible_node(NULL, NULL, "allwinner,sunxi-btlpm"); + if (!np) { + WCN_ERR("dts node for bt_wake not found"); + return -EINVAL; + } +- bt_wake_host_gpio = of_get_named_gpio_flags(np, "bt_hostwake", 0, +- (enum of_gpio_flags *)&config); ++ bt_wake_host_gpio = of_get_named_gpio(np, "bt_hostwake", 0); + if (!gpio_is_valid(bt_wake_host_gpio)) { + WCN_ERR("bt_hostwake irq is invalid: %d\n", + bt_wake_host_gpio); +@@ -1403,11 +1401,8 @@ static int marlin_registsr_bt_wake(struct device *dev) + + marlin_dev->bt_wake_host_int_num = gpio_to_irq(bt_wake_host_gpio); + +- WCN_INFO("%s bt_hostwake gpio=%d mul-sel=%d pull=%d " +- "drv_level=%d data=%d intnum=%d\n", +- __func__, config.gpio, config.mul_sel, config.pull, +- config.drv_level, config.data, +- marlin_dev->bt_wake_host_int_num); ++ WCN_INFO("%s bt_hostwake gpio=%d intnum=%d\n", __func__, ++ bt_wake_host_gpio, marlin_dev->bt_wake_host_int_num); + + ret = device_init_wakeup(dev, true); + if (ret < 0) { +-- +2.34.1 + diff --git a/recipes-kernel/linux/linux-mainline-6.1.9/orange-pi-zero2/0001-drv-wireless-add-uwe5622-wifi-driver.patch b/recipes-kernel/linux/linux-mainline/sunxi-kmeta/bsp/uwe5622/uwe5622-allwinner-v6.3.patch similarity index 99% rename from recipes-kernel/linux/linux-mainline-6.1.9/orange-pi-zero2/0001-drv-wireless-add-uwe5622-wifi-driver.patch rename to recipes-kernel/linux/linux-mainline/sunxi-kmeta/bsp/uwe5622/uwe5622-allwinner-v6.3.patch index ea66f07..43d7eb9 100644 --- a/recipes-kernel/linux/linux-mainline-6.1.9/orange-pi-zero2/0001-drv-wireless-add-uwe5622-wifi-driver.patch +++ b/recipes-kernel/linux/linux-mainline/sunxi-kmeta/bsp/uwe5622/uwe5622-allwinner-v6.3.patch @@ -1,40 +1,39 @@ -From 11cab86b2b6d25bc1369284d8c94d3b6a0cb8603 Mon Sep 17 00:00:00 2001 -From: pbiel -Date: Wed, 15 Mar 2023 22:36:27 +0100 -Subject: [PATCH] wireless: Add uwe5622 wifi driver +From 306781a4eba75b90f5abcda4790a09cb8b9aaccc Mon Sep 17 00:00:00 2001 +From: Paolo Sabatino +Date: Sun, 7 May 2023 15:05:06 +0200 +Subject: [PATCH 1/2] introduce uwe5622 driver for kernel 6.3 --- drivers/net/wireless/Kconfig | 1 + - drivers/net/wireless/Makefile | 1 + drivers/net/wireless/uwe5622/Kconfig | 13 + drivers/net/wireless/uwe5622/Makefile | 10 + drivers/net/wireless/uwe5622/tty-sdio/Kconfig | 4 + - .../net/wireless/uwe5622/tty-sdio/Makefile | 19 + - .../uwe5622/tty-sdio/alignment/sitm.c | 164 + + .../net/wireless/uwe5622/tty-sdio/Makefile | 20 + + .../uwe5622/tty-sdio/alignment/sitm.c | 166 + .../uwe5622/tty-sdio/alignment/sitm.h | 52 + drivers/net/wireless/uwe5622/tty-sdio/dump.c | 136 + drivers/net/wireless/uwe5622/tty-sdio/dump.h | 51 + - drivers/net/wireless/uwe5622/tty-sdio/lpm.c | 143 + - drivers/net/wireless/uwe5622/tty-sdio/lpm.h | 21 + - .../net/wireless/uwe5622/tty-sdio/rfkill.c | 82 + + drivers/net/wireless/uwe5622/tty-sdio/lpm.c | 147 + + drivers/net/wireless/uwe5622/tty-sdio/lpm.h | 22 + + .../net/wireless/uwe5622/tty-sdio/rfkill.c | 84 + .../net/wireless/uwe5622/tty-sdio/rfkill.h | 25 + drivers/net/wireless/uwe5622/tty-sdio/tty.c | 885 + drivers/net/wireless/uwe5622/tty-sdio/tty.h | 44 + drivers/net/wireless/uwe5622/tty-sdio/woble.c | 315 + - drivers/net/wireless/uwe5622/tty-sdio/woble.h | 136 + + drivers/net/wireless/uwe5622/tty-sdio/woble.h | 137 + .../net/wireless/uwe5622/unisocwcn/Kconfig | 126 + .../net/wireless/uwe5622/unisocwcn/Makefile | 412 + .../wireless/uwe5622/unisocwcn/boot/Kconfig | 3 + .../wireless/uwe5622/unisocwcn/boot/Makefile | 6 + .../unisocwcn/boot/gnss_firmware_bin.h | 20 + .../unisocwcn/boot/marlin_firmware_bin.h | 21 + - .../uwe5622/unisocwcn/boot/wcn_integrate.c | 838 + + .../uwe5622/unisocwcn/boot/wcn_integrate.c | 839 + .../uwe5622/unisocwcn/boot/wcn_integrate.h | 202 + - .../unisocwcn/boot/wcn_integrate_boot.c | 1156 + + .../unisocwcn/boot/wcn_integrate_boot.c | 1157 + .../unisocwcn/boot/wcn_integrate_boot.h | 20 + - .../unisocwcn/boot/wcn_integrate_dev.c | 852 + + .../unisocwcn/boot/wcn_integrate_dev.c | 856 + .../unisocwcn/boot/wcn_integrate_dev.h | 271 + - .../wireless/uwe5622/unisocwcn/fw/bin2hex.c | 53 + + .../wireless/uwe5622/unisocwcn/fw/bin2hex.c | 54 + .../uwe5622/unisocwcn/fw/firmware_hex.h | 12 + .../uwe5622/unisocwcn/fw/usb_fdl.bin.hex | 22256 +++ .../wireless/uwe5622/unisocwcn/fw/version.txt | 3 + @@ -43,13 +42,13 @@ Subject: [PATCH] wireless: Add uwe5622 wifi driver .../wireless/uwe5622/unisocwcn/gnss/Makefile | 6 + .../uwe5622/unisocwcn/include/bus_common.h | 16 + .../unisocwcn/include/marlin_platform.h | 125 + - .../wireless/uwe5622/unisocwcn/include/mchn.h | 107 + + .../wireless/uwe5622/unisocwcn/include/mchn.h | 108 + .../uwe5622/unisocwcn/include/uwe5621_glb.h | 297 + .../uwe5622/unisocwcn/include/uwe5622_glb.h | 121 + .../uwe5622/unisocwcn/include/uwe5623_glb.h | 313 + .../uwe5622/unisocwcn/include/uwe562x_glb.h | 425 + .../include/vendor/hisilicon/hi_drv_gpio.h | 69 + - .../include/vendor/hisilicon/hi_type.h | 99 + + .../include/vendor/hisilicon/hi_type.h | 100 + .../uwe5622/unisocwcn/include/wcn_bus.h | 609 + .../uwe5622/unisocwcn/include/wcn_glb.h | 31 + .../uwe5622/unisocwcn/include/wcn_glb_reg.h | 31 + @@ -63,7 +62,7 @@ Subject: [PATCH] wireless: Add uwe5622 wifi driver .../uwe5622/unisocwcn/pcie/edma_test.c | 293 + .../wireless/uwe5622/unisocwcn/pcie/ioctl.c | 537 + .../wireless/uwe5622/unisocwcn/pcie/ioctl.h | 81 + - .../wireless/uwe5622/unisocwcn/pcie/mchn.c | 325 + + .../wireless/uwe5622/unisocwcn/pcie/mchn.c | 326 + .../wireless/uwe5622/unisocwcn/pcie/mchn.h | 62 + .../wireless/uwe5622/unisocwcn/pcie/pcie.c | 601 + .../wireless/uwe5622/unisocwcn/pcie/pcie.h | 118 + @@ -73,7 +72,7 @@ Subject: [PATCH] wireless: Add uwe5622 wifi driver .../uwe5622/unisocwcn/platform/Kconfig | 55 + .../uwe5622/unisocwcn/platform/Makefile | 45 + .../uwe5622/unisocwcn/platform/bufring.c | 356 + - .../uwe5622/unisocwcn/platform/bufring.h | 52 + + .../uwe5622/unisocwcn/platform/bufring.h | 53 + .../unisocwcn/platform/gnss/gnss_common.h | 63 + .../unisocwcn/platform/gnss/gnss_common_ctl.c | 689 + .../unisocwcn/platform/gnss/gnss_dbg.c | 419 + @@ -83,10 +82,10 @@ Subject: [PATCH] wireless: Add uwe5622 wifi driver .../uwe5622/unisocwcn/platform/loopcheck.c | 258 + .../uwe5622/unisocwcn/platform/loopcheck.h | 14 + .../uwe5622/unisocwcn/platform/mdbg_type.h | 97 + - .../uwe5622/unisocwcn/platform/mem_pd_mgr.c | 812 + + .../uwe5622/unisocwcn/platform/mem_pd_mgr.c | 813 + .../uwe5622/unisocwcn/platform/mem_pd_mgr.h | 84 + - .../uwe5622/unisocwcn/platform/pcie_boot.c | 114 + - .../uwe5622/unisocwcn/platform/pcie_boot.h | 3 + + .../uwe5622/unisocwcn/platform/pcie_boot.c | 115 + + .../uwe5622/unisocwcn/platform/pcie_boot.h | 4 + .../uwe5622/unisocwcn/platform/rdc_debug.c | 617 + .../uwe5622/unisocwcn/platform/rdc_debug.h | 43 + .../uwe5622/unisocwcn/platform/rf/rf.c | 989 + @@ -94,21 +93,21 @@ Subject: [PATCH] wireless: Add uwe5622 wifi driver .../uwe5622/unisocwcn/platform/usb_boot.c | 370 + .../uwe5622/unisocwcn/platform/usb_boot.h | 19 + .../uwe5622/unisocwcn/platform/wcn_boot.c | 4120 + - .../uwe5622/unisocwcn/platform/wcn_debugfs.c | 137 + - .../uwe5622/unisocwcn/platform/wcn_dump.c | 1602 + + .../uwe5622/unisocwcn/platform/wcn_debugfs.c | 138 + + .../uwe5622/unisocwcn/platform/wcn_dump.c | 1603 + .../uwe5622/unisocwcn/platform/wcn_dump.h | 20 + .../unisocwcn/platform/wcn_dump_integrate.c | 386 + .../unisocwcn/platform/wcn_dump_integrate.h | 16 + .../uwe5622/unisocwcn/platform/wcn_gnss.h | 31 + .../uwe5622/unisocwcn/platform/wcn_log.c | 365 + .../uwe5622/unisocwcn/platform/wcn_log.h | 32 + - .../uwe5622/unisocwcn/platform/wcn_misc.c | 174 + + .../uwe5622/unisocwcn/platform/wcn_misc.c | 175 + .../uwe5622/unisocwcn/platform/wcn_misc.h | 72 + .../uwe5622/unisocwcn/platform/wcn_op.c | 144 + .../uwe5622/unisocwcn/platform/wcn_op.h | 13 + - .../unisocwcn/platform/wcn_parn_parser.c | 209 + + .../unisocwcn/platform/wcn_parn_parser.c | 210 + .../unisocwcn/platform/wcn_parn_parser.h | 23 + - .../uwe5622/unisocwcn/platform/wcn_procfs.c | 1256 + + .../uwe5622/unisocwcn/platform/wcn_procfs.c | 1260 + .../uwe5622/unisocwcn/platform/wcn_procfs.h | 19 + .../uwe5622/unisocwcn/platform/wcn_swd_dp.c | 696 + .../uwe5622/unisocwcn/platform/wcn_swd_dp.h | 59 + @@ -119,54 +118,54 @@ Subject: [PATCH] wireless: Add uwe5622 wifi driver .../wireless/uwe5622/unisocwcn/sdio/sdio_v3.c | 196 + .../wireless/uwe5622/unisocwcn/sdio/sdiohal.h | 531 + .../uwe5622/unisocwcn/sdio/sdiohal_common.c | 1471 + - .../uwe5622/unisocwcn/sdio/sdiohal_ctl.c | 1260 + - .../uwe5622/unisocwcn/sdio/sdiohal_main.c | 2312 + + .../uwe5622/unisocwcn/sdio/sdiohal_ctl.c | 1261 + + .../uwe5622/unisocwcn/sdio/sdiohal_main.c | 2313 + .../uwe5622/unisocwcn/sdio/sdiohal_rx.c | 333 + - .../uwe5622/unisocwcn/sdio/sdiohal_tx.c | 194 + + .../uwe5622/unisocwcn/sdio/sdiohal_tx.c | 195 + .../wireless/uwe5622/unisocwcn/sipc/Kconfig | 9 + .../wireless/uwe5622/unisocwcn/sipc/Makefile | 1 + .../uwe5622/unisocwcn/sipc/wcn_sipc.c | 490 + .../uwe5622/unisocwcn/sipc/wcn_sipc.h | 86 + - .../wireless/uwe5622/unisocwcn/sleep/Kconfig | 9 + + .../wireless/uwe5622/unisocwcn/sleep/Kconfig | 10 + .../wireless/uwe5622/unisocwcn/sleep/Makefile | 5 + - .../uwe5622/unisocwcn/sleep/sdio_int.c | 354 + + .../uwe5622/unisocwcn/sleep/sdio_int.c | 355 + .../uwe5622/unisocwcn/sleep/sdio_int.h | 129 + .../uwe5622/unisocwcn/sleep/slp_mgr.c | 205 + .../uwe5622/unisocwcn/sleep/slp_mgr.h | 57 + - .../uwe5622/unisocwcn/sleep/slp_pcie.c | 0 - .../uwe5622/unisocwcn/sleep/slp_pcie.h | 0 - .../uwe5622/unisocwcn/sleep/slp_sdio.c | 66 + + .../uwe5622/unisocwcn/sleep/slp_pcie.c | 1 + + .../uwe5622/unisocwcn/sleep/slp_pcie.h | 1 + + .../uwe5622/unisocwcn/sleep/slp_sdio.c | 67 + .../uwe5622/unisocwcn/sleep/slp_sdio.h | 22 + .../uwe5622/unisocwcn/sleep/slp_test.c | 40 + .../wireless/uwe5622/unisocwcn/tool/Kconfig | 3 + .../wireless/uwe5622/unisocwcn/tool/Makefile | 3 + .../unisocwcn/tool/cp2log_config/readme.txt | 89 + .../cp2log_config/unisoc_cp2log_config.txt | 4 + - .../wireless/uwe5622/unisocwcn/usb/Kconfig | 9 + + .../wireless/uwe5622/unisocwcn/usb/Kconfig | 10 + .../wireless/uwe5622/unisocwcn/usb/Makefile | 6 + .../wireless/uwe5622/unisocwcn/usb/wcn_usb.c | 541 + .../wireless/uwe5622/unisocwcn/usb/wcn_usb.h | 338 + - .../uwe5622/unisocwcn/usb/wcn_usb_download.c | 345 + + .../uwe5622/unisocwcn/usb/wcn_usb_download.c | 346 + .../uwe5622/unisocwcn/usb/wcn_usb_io.c | 908 + - .../uwe5622/unisocwcn/usb/wcn_usb_rx_tx.c | 1718 + + .../uwe5622/unisocwcn/usb/wcn_usb_rx_tx.c | 1719 + .../uwe5622/unisocwcn/usb/wcn_usb_store.c | 380 + - .../uwe5622/unisocwcn/usb/wcn_usb_test.c | 1447 + + .../uwe5622/unisocwcn/usb/wcn_usb_test.c | 1451 + .../net/wireless/uwe5622/unisocwcn/vm/Kconfig | 3 + .../wireless/uwe5622/unisocwcn/vm/Makefile | 3 + - .../net/wireless/uwe5622/unisocwcn/wcn_bus.c | 312 + - drivers/net/wireless/uwe5622/unisocwifi/11h.c | 234 + + .../net/wireless/uwe5622/unisocwcn/wcn_bus.c | 313 + + drivers/net/wireless/uwe5622/unisocwifi/11h.c | 235 + drivers/net/wireless/uwe5622/unisocwifi/11h.h | 61 + - .../wireless/uwe5622/unisocwifi/Android.mk | 32 + - .../net/wireless/uwe5622/unisocwifi/Kconfig | 18 + + .../wireless/uwe5622/unisocwifi/Android.mk | 33 + + .../net/wireless/uwe5622/unisocwifi/Kconfig | 19 + .../net/wireless/uwe5622/unisocwifi/Makefile | 64 + .../wireless/uwe5622/unisocwifi/api_version.c | 498 + - .../wireless/uwe5622/unisocwifi/cfg80211.c | 3940 + + .../wireless/uwe5622/unisocwifi/cfg80211.c | 3944 + .../wireless/uwe5622/unisocwifi/cfg80211.h | 220 + - .../net/wireless/uwe5622/unisocwifi/cmdevt.c | 3615 + + .../net/wireless/uwe5622/unisocwifi/cmdevt.c | 3619 + .../net/wireless/uwe5622/unisocwifi/cmdevt.h | 1131 + .../uwe5622/unisocwifi/dbg_ini_util.c | 347 + .../uwe5622/unisocwifi/dbg_ini_util.h | 22 + - .../net/wireless/uwe5622/unisocwifi/debug.c | 187 + + .../net/wireless/uwe5622/unisocwifi/debug.c | 188 + .../net/wireless/uwe5622/unisocwifi/debug.h | 88 + .../net/wireless/uwe5622/unisocwifi/defrag.c | 264 + .../net/wireless/uwe5622/unisocwifi/defrag.h | 35 + @@ -176,16 +175,16 @@ Subject: [PATCH] wireless: Add uwe5622 wifi driver .../net/wireless/uwe5622/unisocwifi/ibss.h | 36 + .../net/wireless/uwe5622/unisocwifi/intf.h | 41 + .../wireless/uwe5622/unisocwifi/intf_ops.h | 97 + - .../net/wireless/uwe5622/unisocwifi/main.c | 1640 + + .../net/wireless/uwe5622/unisocwifi/main.c | 1641 + drivers/net/wireless/uwe5622/unisocwifi/mm.c | 620 + drivers/net/wireless/uwe5622/unisocwifi/mm.h | 40 + - drivers/net/wireless/uwe5622/unisocwifi/msg.c | 182 + + drivers/net/wireless/uwe5622/unisocwifi/msg.c | 183 + drivers/net/wireless/uwe5622/unisocwifi/msg.h | 219 + drivers/net/wireless/uwe5622/unisocwifi/nan.c | 86 + drivers/net/wireless/uwe5622/unisocwifi/nan.h | 304 + drivers/net/wireless/uwe5622/unisocwifi/npi.c | 367 + drivers/net/wireless/uwe5622/unisocwifi/npi.h | 75 + - drivers/net/wireless/uwe5622/unisocwifi/qos.c | 814 + + drivers/net/wireless/uwe5622/unisocwifi/qos.c | 815 + drivers/net/wireless/uwe5622/unisocwifi/qos.h | 247 + .../wireless/uwe5622/unisocwifi/reg_domain.c | 342 + .../wireless/uwe5622/unisocwifi/reg_domain.h | 27 + @@ -195,8 +194,8 @@ Subject: [PATCH] wireless: Add uwe5622 wifi driver .../wireless/uwe5622/unisocwifi/rf_marlin3.h | 181 + .../uwe5622/unisocwifi/rnd_mac_addr.c | 28 + .../uwe5622/unisocwifi/rnd_mac_addr.h | 19 + - drivers/net/wireless/uwe5622/unisocwifi/rtt.c | 964 + - drivers/net/wireless/uwe5622/unisocwifi/rtt.h | 527 + + drivers/net/wireless/uwe5622/unisocwifi/rtt.c | 965 + + drivers/net/wireless/uwe5622/unisocwifi/rtt.h | 528 + .../net/wireless/uwe5622/unisocwifi/rx_msg.c | 684 + .../net/wireless/uwe5622/unisocwifi/rx_msg.h | 266 + .../wireless/uwe5622/unisocwifi/softap_hook.c | 122 + @@ -204,10 +203,10 @@ Subject: [PATCH] wireless: Add uwe5622 wifi driver .../net/wireless/uwe5622/unisocwifi/sprdwl.h | 414 + .../net/wireless/uwe5622/unisocwifi/tcp_ack.c | 606 + .../net/wireless/uwe5622/unisocwifi/tcp_ack.h | 89 + - .../net/wireless/uwe5622/unisocwifi/tracer.c | 191 + + .../net/wireless/uwe5622/unisocwifi/tracer.c | 192 + .../net/wireless/uwe5622/unisocwifi/tracer.h | 54 + .../net/wireless/uwe5622/unisocwifi/tx_msg.c | 1892 + - .../net/wireless/uwe5622/unisocwifi/tx_msg.h | 124 + + .../net/wireless/uwe5622/unisocwifi/tx_msg.h | 125 + .../net/wireless/uwe5622/unisocwifi/txrx.c | 238 + .../net/wireless/uwe5622/unisocwifi/txrx.h | 49 + .../net/wireless/uwe5622/unisocwifi/vendor.c | 4277 + @@ -219,7 +218,7 @@ Subject: [PATCH] wireless: Add uwe5622 wifi driver .../net/wireless/uwe5622/unisocwifi/wl_intf.h | 302 + .../net/wireless/uwe5622/unisocwifi/work.c | 220 + .../net/wireless/uwe5622/unisocwifi/work.h | 84 + - 215 files changed, 210031 insertions(+) + 214 files changed, 210098 insertions(+) create mode 100644 drivers/net/wireless/uwe5622/Kconfig create mode 100644 drivers/net/wireless/uwe5622/Makefile create mode 100644 drivers/net/wireless/uwe5622/tty-sdio/Kconfig @@ -435,29 +434,17 @@ Subject: [PATCH] wireless: Add uwe5622 wifi driver create mode 100644 drivers/net/wireless/uwe5622/unisocwifi/work.h diff --git a/drivers/net/wireless/Kconfig b/drivers/net/wireless/Kconfig -index cb1c15012dd0..83e0e54ee96a 100644 +index a128292c331a..dc8ed773aff9 100644 --- a/drivers/net/wireless/Kconfig +++ b/drivers/net/wireless/Kconfig -@@ -37,6 +37,7 @@ source "drivers/net/wireless/st/Kconfig" - source "drivers/net/wireless/ti/Kconfig" +@@ -47,6 +47,7 @@ source "drivers/net/wireless/rtl8189fs/Kconfig" + source "drivers/net/wireless/rtl8189es/Kconfig" source "drivers/net/wireless/zydas/Kconfig" source "drivers/net/wireless/quantenna/Kconfig" +source "drivers/net/wireless/uwe5622/Kconfig" config PCMCIA_RAYCS tristate "Aviator/Raytheon 2.4GHz wireless support" -diff --git a/drivers/net/wireless/Makefile b/drivers/net/wireless/Makefile -index a61cf6c90343..952e6bdd8f70 100644 ---- a/drivers/net/wireless/Makefile -+++ b/drivers/net/wireless/Makefile -@@ -22,6 +22,7 @@ obj-$(CONFIG_WLAN_VENDOR_SILABS) += silabs/ - obj-$(CONFIG_WLAN_VENDOR_ST) += st/ - obj-$(CONFIG_WLAN_VENDOR_TI) += ti/ - obj-$(CONFIG_WLAN_VENDOR_ZYDAS) += zydas/ -+obj-$(CONFIG_SPARD_WLAN_SUPPORT) += uwe5622/ - - # 16-bit wireless PCMCIA client drivers - obj-$(CONFIG_PCMCIA_RAYCS) += ray_cs.o diff --git a/drivers/net/wireless/uwe5622/Kconfig b/drivers/net/wireless/uwe5622/Kconfig new file mode 100644 index 000000000000..a1e123b039bd @@ -505,10 +492,10 @@ index 000000000000..df2027bf05f2 + Spard tty overy sdio driver. diff --git a/drivers/net/wireless/uwe5622/tty-sdio/Makefile b/drivers/net/wireless/uwe5622/tty-sdio/Makefile new file mode 100644 -index 000000000000..df9be3f22910 +index 000000000000..9dcb75258dfe --- /dev/null +++ b/drivers/net/wireless/uwe5622/tty-sdio/Makefile -@@ -0,0 +1,19 @@ +@@ -0,0 +1,20 @@ +# ccflags-y += -DDEBUG +# ccflags-y += -DKERNEL_VERSION_414 +ccflags-y += -I$(srctree)/drivers/net/wireless/uwe5622/sprdwcn/include @@ -528,12 +515,13 @@ index 000000000000..df9be3f22910 + dump.o + +obj-$(CONFIG_TTY_OVERY_SDIO) += sprdbt_tty.o ++ diff --git a/drivers/net/wireless/uwe5622/tty-sdio/alignment/sitm.c b/drivers/net/wireless/uwe5622/tty-sdio/alignment/sitm.c new file mode 100644 -index 000000000000..c8a3f3ba6050 +index 000000000000..3506fb0692db --- /dev/null +++ b/drivers/net/wireless/uwe5622/tty-sdio/alignment/sitm.c -@@ -0,0 +1,164 @@ +@@ -0,0 +1,166 @@ +/* + * Copyright (C) 2016 Spreadtrum Communications Inc. + * @@ -698,6 +686,8 @@ index 000000000000..c8a3f3ba6050 + parse_frame(data_ready, frame_complete); + return count; +} ++ ++ diff --git a/drivers/net/wireless/uwe5622/tty-sdio/alignment/sitm.h b/drivers/net/wireless/uwe5622/tty-sdio/alignment/sitm.h new file mode 100644 index 000000000000..5cad2607f35d @@ -957,10 +947,10 @@ index 000000000000..f97b8365ae25 +#endif diff --git a/drivers/net/wireless/uwe5622/tty-sdio/lpm.c b/drivers/net/wireless/uwe5622/tty-sdio/lpm.c new file mode 100644 -index 000000000000..b2d9a8994e5e +index 000000000000..1570676ced50 --- /dev/null +++ b/drivers/net/wireless/uwe5622/tty-sdio/lpm.c -@@ -0,0 +1,143 @@ +@@ -0,0 +1,147 @@ +#include +#include +#include @@ -1033,7 +1023,11 @@ index 000000000000..b2d9a8994e5e + +static int bluesleep_open_proc_btwrite(struct inode *inode, struct file *file) +{ ++#if (LINUX_VERSION_CODE >= KERNEL_VERSION(5,19, 2)) ++ return single_open(file, btwrite_proc_show, pde_data(inode)); ++#else + return single_open(file, btwrite_proc_show, PDE_DATA(inode)); ++#endif +} + +static const struct proc_ops lpm_proc_btwrite_fops = { @@ -1106,10 +1100,10 @@ index 000000000000..b2d9a8994e5e +MODULE_LICENSE("GPL"); diff --git a/drivers/net/wireless/uwe5622/tty-sdio/lpm.h b/drivers/net/wireless/uwe5622/tty-sdio/lpm.h new file mode 100644 -index 000000000000..042d01555463 +index 000000000000..5239e0daefb2 --- /dev/null +++ b/drivers/net/wireless/uwe5622/tty-sdio/lpm.h -@@ -0,0 +1,21 @@ +@@ -0,0 +1,22 @@ +/* + * Copyright (C) 2015 Spreadtrum Communications Inc. + * @@ -1131,12 +1125,13 @@ index 000000000000..042d01555463 +void bluesleep_exit(void); + +#endif ++ diff --git a/drivers/net/wireless/uwe5622/tty-sdio/rfkill.c b/drivers/net/wireless/uwe5622/tty-sdio/rfkill.c new file mode 100644 -index 000000000000..8c45192dbf8c +index 000000000000..66ce926033e9 --- /dev/null +++ b/drivers/net/wireless/uwe5622/tty-sdio/rfkill.c -@@ -0,0 +1,82 @@ +@@ -0,0 +1,84 @@ +/* + * Copyright (C) 2015 Spreadtrum Communications Inc. + * @@ -1219,6 +1214,8 @@ index 000000000000..8c45192dbf8c + pr_info("<--%s\n", __func__); + return 0; +} ++ ++ diff --git a/drivers/net/wireless/uwe5622/tty-sdio/rfkill.h b/drivers/net/wireless/uwe5622/tty-sdio/rfkill.h new file mode 100644 index 000000000000..3dcfb01d3698 @@ -1255,7 +1252,7 @@ new file mode 100644 index 000000000000..0f90a758b7bc --- /dev/null +++ b/drivers/net/wireless/uwe5622/tty-sdio/tty.c -@@ -0,0 +1,885 @@ +@@ -0,0 +1,886 @@ +/* + * Copyright (C) 2015 Spreadtrum Communications Inc. + * @@ -1285,6 +1282,7 @@ index 000000000000..0f90a758b7bc +#include +#ifdef CONFIG_OF +#include ++#include +#endif +#include +#include @@ -2514,10 +2512,10 @@ index 000000000000..1df3f37fd6be +} diff --git a/drivers/net/wireless/uwe5622/tty-sdio/woble.h b/drivers/net/wireless/uwe5622/tty-sdio/woble.h new file mode 100644 -index 000000000000..75c8d27e6cf3 +index 000000000000..e47752985036 --- /dev/null +++ b/drivers/net/wireless/uwe5622/tty-sdio/woble.h -@@ -0,0 +1,136 @@ +@@ -0,0 +1,137 @@ +/* + * btif_woble.h + * @@ -2654,6 +2652,7 @@ index 000000000000..75c8d27e6cf3 +void hci_add_device_to_wakeup_list(mtty_bt_wake_t bt_wakeup_dev); +void hci_set_ap_start_sleep(void); +#endif ++ diff --git a/drivers/net/wireless/uwe5622/unisocwcn/Kconfig b/drivers/net/wireless/uwe5622/unisocwcn/Kconfig new file mode 100644 index 000000000000..f5fe8170a7e5 @@ -3280,10 +3279,10 @@ index 000000000000..47fac3646891 +#endif diff --git a/drivers/net/wireless/uwe5622/unisocwcn/boot/wcn_integrate.c b/drivers/net/wireless/uwe5622/unisocwcn/boot/wcn_integrate.c new file mode 100644 -index 000000000000..2d74f7e56029 +index 000000000000..fcf139d90907 --- /dev/null +++ b/drivers/net/wireless/uwe5622/unisocwcn/boot/wcn_integrate.c -@@ -0,0 +1,838 @@ +@@ -0,0 +1,839 @@ +/* + * Copyright (C) 2017 Spreadtrum Communications Inc. + * @@ -4122,6 +4121,7 @@ index 000000000000..2d74f7e56029 + wcn_regmap_raw_write_bit(regmap, 0X24, value); + msleep(200); +} ++ diff --git a/drivers/net/wireless/uwe5622/unisocwcn/boot/wcn_integrate.h b/drivers/net/wireless/uwe5622/unisocwcn/boot/wcn_integrate.h new file mode 100644 index 000000000000..757078cebd30 @@ -4332,10 +4332,10 @@ index 000000000000..757078cebd30 +#endif diff --git a/drivers/net/wireless/uwe5622/unisocwcn/boot/wcn_integrate_boot.c b/drivers/net/wireless/uwe5622/unisocwcn/boot/wcn_integrate_boot.c new file mode 100644 -index 000000000000..48b69ccaacb4 +index 000000000000..c544d63cfa7d --- /dev/null +++ b/drivers/net/wireless/uwe5622/unisocwcn/boot/wcn_integrate_boot.c -@@ -0,0 +1,1156 @@ +@@ -0,0 +1,1157 @@ +/* + * Copyright (C) 2017 Spreadtrum Communications Inc. + * @@ -5492,6 +5492,7 @@ index 000000000000..48b69ccaacb4 + return stop_integrate_wcn(subsys); +} +EXPORT_SYMBOL_GPL(stop_marlin); ++ diff --git a/drivers/net/wireless/uwe5622/unisocwcn/boot/wcn_integrate_boot.h b/drivers/net/wireless/uwe5622/unisocwcn/boot/wcn_integrate_boot.h new file mode 100644 index 000000000000..638accb95eac @@ -5520,10 +5521,10 @@ index 000000000000..638accb95eac +#endif diff --git a/drivers/net/wireless/uwe5622/unisocwcn/boot/wcn_integrate_dev.c b/drivers/net/wireless/uwe5622/unisocwcn/boot/wcn_integrate_dev.c new file mode 100644 -index 000000000000..3ee6910e7cf7 +index 000000000000..bc7978ebf737 --- /dev/null +++ b/drivers/net/wireless/uwe5622/unisocwcn/boot/wcn_integrate_dev.c -@@ -0,0 +1,852 @@ +@@ -0,0 +1,856 @@ +/* + * Copyright (C) 2017 Spreadtrum Communications Inc. + * @@ -6088,7 +6089,11 @@ index 000000000000..3ee6910e7cf7 +static int wcn_platform_open(struct inode *inode, struct file *filp) +{ + struct platform_proc_file_entry ++#if (LINUX_VERSION_CODE >= KERNEL_VERSION(5,19, 2)) ++ *entry = (struct platform_proc_file_entry *)pde_data(inode); ++#else + *entry = (struct platform_proc_file_entry *)PDE_DATA(inode); ++#endif + + WCN_INFO("entry name:%s\n!", entry->name); + @@ -6655,10 +6660,10 @@ index 000000000000..8bd1421b6733 +#endif diff --git a/drivers/net/wireless/uwe5622/unisocwcn/fw/bin2hex.c b/drivers/net/wireless/uwe5622/unisocwcn/fw/bin2hex.c new file mode 100644 -index 000000000000..b365b9359c9c +index 000000000000..a5ffdfe7cb70 --- /dev/null +++ b/drivers/net/wireless/uwe5622/unisocwcn/fw/bin2hex.c -@@ -0,0 +1,53 @@ +@@ -0,0 +1,54 @@ +#include +#include +#include @@ -6712,6 +6717,7 @@ index 000000000000..b365b9359c9c + + return 0; +} ++ diff --git a/drivers/net/wireless/uwe5622/unisocwcn/fw/firmware_hex.h b/drivers/net/wireless/uwe5622/unisocwcn/fw/firmware_hex.h new file mode 100644 index 000000000000..271f31b3cf96 @@ -140420,10 +140426,10 @@ index 000000000000..ae8daac46644 +#endif diff --git a/drivers/net/wireless/uwe5622/unisocwcn/include/mchn.h b/drivers/net/wireless/uwe5622/unisocwcn/include/mchn.h new file mode 100644 -index 000000000000..e18ac354347e +index 000000000000..4f93edf184b7 --- /dev/null +++ b/drivers/net/wireless/uwe5622/unisocwcn/include/mchn.h -@@ -0,0 +1,107 @@ +@@ -0,0 +1,108 @@ +/* + * Copyright (C) 2016 Spreadtrum Communications Inc. + * @@ -140531,6 +140537,7 @@ index 000000000000..e18ac354347e +struct mchn_info_t *mchn_info(void); +struct mchn_ops_t *mchn_ops(int channel); +#endif ++ diff --git a/drivers/net/wireless/uwe5622/unisocwcn/include/uwe5621_glb.h b/drivers/net/wireless/uwe5622/unisocwcn/include/uwe5621_glb.h new file mode 100644 index 000000000000..2ea0b684d6eb @@ -141788,10 +141795,10 @@ index 000000000000..677540a2fb24 +#endif diff --git a/drivers/net/wireless/uwe5622/unisocwcn/include/vendor/hisilicon/hi_type.h b/drivers/net/wireless/uwe5622/unisocwcn/include/vendor/hisilicon/hi_type.h new file mode 100644 -index 000000000000..31fca0726922 +index 000000000000..b56a016299c5 --- /dev/null +++ b/drivers/net/wireless/uwe5622/unisocwcn/include/vendor/hisilicon/hi_type.h -@@ -0,0 +1,99 @@ +@@ -0,0 +1,100 @@ +/************************************************************************ + * Copyright (C), 2001-2011, Hisilicon Tech. Co., Ltd. + ************************************************************************ @@ -141891,6 +141898,7 @@ index 000000000000..31fca0726922 +#endif /* __cplusplus */ + +#endif /* __HI_TYPE_H__ */ ++ diff --git a/drivers/net/wireless/uwe5622/unisocwcn/include/wcn_bus.h b/drivers/net/wireless/uwe5622/unisocwcn/include/wcn_bus.h new file mode 100644 index 000000000000..aee2200db0e9 @@ -145474,10 +145482,10 @@ index 000000000000..cb932c7c343d +#endif diff --git a/drivers/net/wireless/uwe5622/unisocwcn/pcie/mchn.c b/drivers/net/wireless/uwe5622/unisocwcn/pcie/mchn.c new file mode 100644 -index 000000000000..4d236d1831a8 +index 000000000000..05d3d79bd3cf --- /dev/null +++ b/drivers/net/wireless/uwe5622/unisocwcn/pcie/mchn.c -@@ -0,0 +1,325 @@ +@@ -0,0 +1,326 @@ +/* + * Copyright (C) 2016-2018 Spreadtrum Communications Inc. + * This software is licensed under the terms of the GNU General Public @@ -145803,6 +145811,7 @@ index 000000000000..4d236d1831a8 + return ret; +} +EXPORT_SYMBOL(mchn_deinit); ++ diff --git a/drivers/net/wireless/uwe5622/unisocwcn/pcie/mchn.h b/drivers/net/wireless/uwe5622/unisocwcn/pcie/mchn.h new file mode 100644 index 000000000000..76f332705f04 @@ -147218,10 +147227,10 @@ index 000000000000..b8459b914cb1 +} diff --git a/drivers/net/wireless/uwe5622/unisocwcn/platform/bufring.h b/drivers/net/wireless/uwe5622/unisocwcn/platform/bufring.h new file mode 100644 -index 000000000000..f5f5e5625c34 +index 000000000000..d33ad0cf695a --- /dev/null +++ b/drivers/net/wireless/uwe5622/unisocwcn/platform/bufring.h -@@ -0,0 +1,52 @@ +@@ -0,0 +1,53 @@ +/* + * Copyright (C) 2015 Spreadtrum Communications Inc. + * This software is licensed under the terms of the GNU General Public @@ -147274,6 +147283,7 @@ index 000000000000..f5f5e5625c34 +bool mdbg_ring_over_loop(struct mdbg_ring_t *ring, u_long len, int rw); +void mdbg_ring_print(struct mdbg_ring_t *ring); +#endif ++ diff --git a/drivers/net/wireless/uwe5622/unisocwcn/platform/gnss/gnss_common.h b/drivers/net/wireless/uwe5622/unisocwcn/platform/gnss/gnss_common.h new file mode 100644 index 000000000000..5999726f543c @@ -149615,10 +149625,10 @@ index 000000000000..21d0f2df8d04 +#endif diff --git a/drivers/net/wireless/uwe5622/unisocwcn/platform/mem_pd_mgr.c b/drivers/net/wireless/uwe5622/unisocwcn/platform/mem_pd_mgr.c new file mode 100644 -index 000000000000..a8b8b92b8cb1 +index 000000000000..f013b9d49987 --- /dev/null +++ b/drivers/net/wireless/uwe5622/unisocwcn/platform/mem_pd_mgr.c -@@ -0,0 +1,812 @@ +@@ -0,0 +1,813 @@ +/* + * Copyright (C) 2013 Spreadtrum Communications Inc. + * @@ -150431,6 +150441,7 @@ index 000000000000..a8b8b92b8cb1 + + return 0; +} ++ diff --git a/drivers/net/wireless/uwe5622/unisocwcn/platform/mem_pd_mgr.h b/drivers/net/wireless/uwe5622/unisocwcn/platform/mem_pd_mgr.h new file mode 100644 index 000000000000..264e74e834ed @@ -150523,10 +150534,10 @@ index 000000000000..264e74e834ed +#endif diff --git a/drivers/net/wireless/uwe5622/unisocwcn/platform/pcie_boot.c b/drivers/net/wireless/uwe5622/unisocwcn/platform/pcie_boot.c new file mode 100644 -index 000000000000..e5748c43ae11 +index 000000000000..9ce23ada5635 --- /dev/null +++ b/drivers/net/wireless/uwe5622/unisocwcn/platform/pcie_boot.c -@@ -0,0 +1,114 @@ +@@ -0,0 +1,115 @@ +/* + * Copyright (C) 2019 Spreadtrum Communications Inc. + * @@ -150641,15 +150652,17 @@ index 000000000000..e5748c43ae11 + + return 0; +} ++ diff --git a/drivers/net/wireless/uwe5622/unisocwcn/platform/pcie_boot.h b/drivers/net/wireless/uwe5622/unisocwcn/platform/pcie_boot.h new file mode 100644 -index 000000000000..0d1f0d5992fa +index 000000000000..e99a7abea43f --- /dev/null +++ b/drivers/net/wireless/uwe5622/unisocwcn/platform/pcie_boot.h -@@ -0,0 +1,3 @@ +@@ -0,0 +1,4 @@ +#include + +int pcie_boot(enum marlin_sub_sys subsys); ++ diff --git a/drivers/net/wireless/uwe5622/unisocwcn/platform/rdc_debug.c b/drivers/net/wireless/uwe5622/unisocwcn/platform/rdc_debug.c new file mode 100644 index 000000000000..015c9020e913 @@ -157087,10 +157100,10 @@ index 000000000000..57cf1a898fb9 +MODULE_AUTHOR("Yufeng Yang "); diff --git a/drivers/net/wireless/uwe5622/unisocwcn/platform/wcn_debugfs.c b/drivers/net/wireless/uwe5622/unisocwcn/platform/wcn_debugfs.c new file mode 100644 -index 000000000000..1310b48b1ae4 +index 000000000000..6fef7fa4f106 --- /dev/null +++ b/drivers/net/wireless/uwe5622/unisocwcn/platform/wcn_debugfs.c -@@ -0,0 +1,137 @@ +@@ -0,0 +1,138 @@ +/* + * Copyright (C) 2018 Spreadtrum Communications Inc. + * @@ -157228,12 +157241,13 @@ index 000000000000..1310b48b1ae4 +} + +device_initcall(wcn_init_debugfs); ++ diff --git a/drivers/net/wireless/uwe5622/unisocwcn/platform/wcn_dump.c b/drivers/net/wireless/uwe5622/unisocwcn/platform/wcn_dump.c new file mode 100644 -index 000000000000..5ae84841ec70 +index 000000000000..5c432c77ce9a --- /dev/null +++ b/drivers/net/wireless/uwe5622/unisocwcn/platform/wcn_dump.c -@@ -0,0 +1,1602 @@ +@@ -0,0 +1,1603 @@ +/* + * Copyright (C) 2015 Spreadtrum Communications Inc. + * This software is licensed under the terms of the GNU General Public @@ -158836,6 +158850,7 @@ index 000000000000..5ae84841ec70 + + return 0; +} ++ diff --git a/drivers/net/wireless/uwe5622/unisocwcn/platform/wcn_dump.h b/drivers/net/wireless/uwe5622/unisocwcn/platform/wcn_dump.h new file mode 100644 index 000000000000..98910bfeeebe @@ -159724,10 +159739,10 @@ index 000000000000..3481006a8362 +#endif diff --git a/drivers/net/wireless/uwe5622/unisocwcn/platform/wcn_misc.c b/drivers/net/wireless/uwe5622/unisocwcn/platform/wcn_misc.c new file mode 100644 -index 000000000000..a95d9f9d2b4f +index 000000000000..126746321efc --- /dev/null +++ b/drivers/net/wireless/uwe5622/unisocwcn/platform/wcn_misc.c -@@ -0,0 +1,174 @@ +@@ -0,0 +1,175 @@ +/* + * Copyright (C) 2018 Spreadtrum Communications Inc. + * @@ -159902,6 +159917,7 @@ index 000000000000..a95d9f9d2b4f +{ + return s_marlin_bootup_time; +} ++ diff --git a/drivers/net/wireless/uwe5622/unisocwcn/platform/wcn_misc.h b/drivers/net/wireless/uwe5622/unisocwcn/platform/wcn_misc.h new file mode 100644 index 000000000000..97a1124b6a38 @@ -160151,10 +160167,10 @@ index 000000000000..391280910f84 +#endif diff --git a/drivers/net/wireless/uwe5622/unisocwcn/platform/wcn_parn_parser.c b/drivers/net/wireless/uwe5622/unisocwcn/platform/wcn_parn_parser.c new file mode 100644 -index 000000000000..aea7d6d0fe57 +index 000000000000..fe6cd44fb178 --- /dev/null +++ b/drivers/net/wireless/uwe5622/unisocwcn/platform/wcn_parn_parser.c -@@ -0,0 +1,209 @@ +@@ -0,0 +1,210 @@ +/* + * Copyright (c) 2017 Spreadtrum + * @@ -160364,6 +160380,7 @@ index 000000000000..aea7d6d0fe57 + + return ret; +} ++ diff --git a/drivers/net/wireless/uwe5622/unisocwcn/platform/wcn_parn_parser.h b/drivers/net/wireless/uwe5622/unisocwcn/platform/wcn_parn_parser.h new file mode 100644 index 000000000000..210a2ff96366 @@ -160395,10 +160412,10 @@ index 000000000000..210a2ff96366 +#endif diff --git a/drivers/net/wireless/uwe5622/unisocwcn/platform/wcn_procfs.c b/drivers/net/wireless/uwe5622/unisocwcn/platform/wcn_procfs.c new file mode 100644 -index 000000000000..2edb7903d80e +index 000000000000..b179f2398b1f --- /dev/null +++ b/drivers/net/wireless/uwe5622/unisocwcn/platform/wcn_procfs.c -@@ -0,0 +1,1256 @@ +@@ -0,0 +1,1260 @@ +/* + * Copyright (C) 2015 Spreadtrum Communications Inc. + * @@ -160832,7 +160849,11 @@ index 000000000000..2edb7903d80e +static int mdbg_proc_open(struct inode *inode, struct file *filp) +{ + struct mdbg_proc_entry *entry = ++#if (LINUX_VERSION_CODE >= KERNEL_VERSION(5,19, 2)) ++ (struct mdbg_proc_entry *)pde_data(inode); ++#else + (struct mdbg_proc_entry *)PDE_DATA(inode); ++#endif + filp->private_data = entry; + + return 0; @@ -165192,10 +165213,10 @@ index 000000000000..8896272a950f +} diff --git a/drivers/net/wireless/uwe5622/unisocwcn/sdio/sdiohal_ctl.c b/drivers/net/wireless/uwe5622/unisocwcn/sdio/sdiohal_ctl.c new file mode 100644 -index 000000000000..5a5cd9bb398e +index 000000000000..ceb34a487e69 --- /dev/null +++ b/drivers/net/wireless/uwe5622/unisocwcn/sdio/sdiohal_ctl.c -@@ -0,0 +1,1260 @@ +@@ -0,0 +1,1261 @@ +#include +#include +#include @@ -166456,12 +166477,13 @@ index 000000000000..5a5cd9bb398e + debugfs_remove_recursive(debug_root); + at_cmd_deinit(); +} ++ diff --git a/drivers/net/wireless/uwe5622/unisocwcn/sdio/sdiohal_main.c b/drivers/net/wireless/uwe5622/unisocwcn/sdio/sdiohal_main.c new file mode 100644 -index 000000000000..31c2639e4728 +index 000000000000..42fb0a2b38a8 --- /dev/null +++ b/drivers/net/wireless/uwe5622/unisocwcn/sdio/sdiohal_main.c -@@ -0,0 +1,2312 @@ +@@ -0,0 +1,2314 @@ +/* + * Copyright (C) 2017 Spreadtrum Communications Inc. + * @@ -166487,6 +166509,7 @@ index 000000000000..31c2639e4728 +#include +#include +#include ++#include +#include +#include +#include @@ -166512,9 +166535,9 @@ index 000000000000..31c2639e4728 +extern void sdio_set_max_reqsz(unsigned int size); +#endif + -+#ifdef CONFIG_RK_BOARD -+extern int rockchip_wifi_set_carddetect(int val); -+#endif ++//#ifdef CONFIG_RK_BOARD ++//extern int rockchip_wifi_set_carddetect(int val); ++//#endif + +#ifdef CONFIG_AW_BOARD +extern int sunxi_wlan_get_bus_index(void); @@ -168555,9 +168578,9 @@ index 000000000000..31c2639e4728 + sdiohal_set_card_present(0); +#endif + -+#ifdef CONFIG_RK_BOARD -+ rockchip_wifi_set_carddetect(0); -+#endif ++//#ifdef CONFIG_RK_BOARD ++// rockchip_wifi_set_carddetect(0); ++//#endif + +#ifdef CONFIG_AW_BOARD +// sunxi_mmc_rescan_card(wlan_bus_index); @@ -168657,9 +168680,9 @@ index 000000000000..31c2639e4728 + sdiohal_set_card_present(1); +#endif + -+#ifdef CONFIG_RK_BOARD -+ rockchip_wifi_set_carddetect(1); -+#endif ++//#ifdef CONFIG_RK_BOARD ++// rockchip_wifi_set_carddetect(1); ++//#endif + +#if 0 + wlan_bus_index = sunxi_wlan_get_bus_index(); @@ -168774,6 +168797,7 @@ index 000000000000..31c2639e4728 + + sdiohal_info("sdiohal_exit ok\n"); +} ++ diff --git a/drivers/net/wireless/uwe5622/unisocwcn/sdio/sdiohal_rx.c b/drivers/net/wireless/uwe5622/unisocwcn/sdio/sdiohal_rx.c new file mode 100644 index 000000000000..287d17c959db @@ -169115,10 +169139,10 @@ index 000000000000..287d17c959db +} diff --git a/drivers/net/wireless/uwe5622/unisocwcn/sdio/sdiohal_tx.c b/drivers/net/wireless/uwe5622/unisocwcn/sdio/sdiohal_tx.c new file mode 100644 -index 000000000000..ce0a9a639ab1 +index 000000000000..540a589770b4 --- /dev/null +++ b/drivers/net/wireless/uwe5622/unisocwcn/sdio/sdiohal_tx.c -@@ -0,0 +1,194 @@ +@@ -0,0 +1,195 @@ +#include "sdiohal.h" + +#define SDIOHAL_TX_RETRY_MAX 3 @@ -169313,6 +169337,7 @@ index 000000000000..ce0a9a639ab1 + + return 0; +} ++ diff --git a/drivers/net/wireless/uwe5622/unisocwcn/sipc/Kconfig b/drivers/net/wireless/uwe5622/unisocwcn/sipc/Kconfig new file mode 100644 index 000000000000..3af08d21ed3b @@ -169925,10 +169950,10 @@ index 000000000000..19028bc970c8 +#endif diff --git a/drivers/net/wireless/uwe5622/unisocwcn/sleep/Kconfig b/drivers/net/wireless/uwe5622/unisocwcn/sleep/Kconfig new file mode 100644 -index 000000000000..06582dc71795 +index 000000000000..57c6b8961017 --- /dev/null +++ b/drivers/net/wireless/uwe5622/unisocwcn/sleep/Kconfig -@@ -0,0 +1,9 @@ +@@ -0,0 +1,10 @@ +config WCN_SLP + tristate "Sleep Support" + depends on SDIOHAL @@ -169938,6 +169963,7 @@ index 000000000000..06582dc71795 + chip sdio interface bus Support. + Please insmod this module before any other + WCN subsystems. Thanks. ++ diff --git a/drivers/net/wireless/uwe5622/unisocwcn/sleep/Makefile b/drivers/net/wireless/uwe5622/unisocwcn/sleep/Makefile new file mode 100644 index 000000000000..215469f54fcb @@ -169951,10 +169977,10 @@ index 000000000000..215469f54fcb +wcn_slp-objs += $(slp-c-objs) diff --git a/drivers/net/wireless/uwe5622/unisocwcn/sleep/sdio_int.c b/drivers/net/wireless/uwe5622/unisocwcn/sleep/sdio_int.c new file mode 100644 -index 000000000000..2f76fee2bb51 +index 000000000000..6a14855a91e7 --- /dev/null +++ b/drivers/net/wireless/uwe5622/unisocwcn/sleep/sdio_int.c -@@ -0,0 +1,354 @@ +@@ -0,0 +1,355 @@ +#include +#include +#include @@ -170309,6 +170335,7 @@ index 000000000000..2f76fee2bb51 + return 0; +} +EXPORT_SYMBOL(sdio_pub_int_deinit); ++ diff --git a/drivers/net/wireless/uwe5622/unisocwcn/sleep/sdio_int.h b/drivers/net/wireless/uwe5622/unisocwcn/sleep/sdio_int.h new file mode 100644 index 000000000000..b4ed05fd5efa @@ -170720,16 +170747,24 @@ index 000000000000..d32054bfaba5 +#endif diff --git a/drivers/net/wireless/uwe5622/unisocwcn/sleep/slp_pcie.c b/drivers/net/wireless/uwe5622/unisocwcn/sleep/slp_pcie.c new file mode 100644 -index 000000000000..e69de29bb2d1 +index 000000000000..8b137891791f +--- /dev/null ++++ b/drivers/net/wireless/uwe5622/unisocwcn/sleep/slp_pcie.c +@@ -0,0 +1 @@ ++ diff --git a/drivers/net/wireless/uwe5622/unisocwcn/sleep/slp_pcie.h b/drivers/net/wireless/uwe5622/unisocwcn/sleep/slp_pcie.h new file mode 100644 -index 000000000000..e69de29bb2d1 +index 000000000000..8b137891791f +--- /dev/null ++++ b/drivers/net/wireless/uwe5622/unisocwcn/sleep/slp_pcie.h +@@ -0,0 +1 @@ ++ diff --git a/drivers/net/wireless/uwe5622/unisocwcn/sleep/slp_sdio.c b/drivers/net/wireless/uwe5622/unisocwcn/sleep/slp_sdio.c new file mode 100644 -index 000000000000..53532947a4bf +index 000000000000..abab04b96a40 --- /dev/null +++ b/drivers/net/wireless/uwe5622/unisocwcn/sleep/slp_sdio.c -@@ -0,0 +1,66 @@ +@@ -0,0 +1,67 @@ +#include +#include +#include @@ -170796,6 +170831,7 @@ index 000000000000..53532947a4bf + + return 0; +} ++ diff --git a/drivers/net/wireless/uwe5622/unisocwcn/sleep/slp_sdio.h b/drivers/net/wireless/uwe5622/unisocwcn/sleep/slp_sdio.h new file mode 100644 index 000000000000..b0e2cca011b9 @@ -170995,10 +171031,10 @@ index 000000000000..22850fb7198a +wcn_cp2_log_path="/data/unisoc_dbg"; diff --git a/drivers/net/wireless/uwe5622/unisocwcn/usb/Kconfig b/drivers/net/wireless/uwe5622/unisocwcn/usb/Kconfig new file mode 100644 -index 000000000000..98a3533c0741 +index 000000000000..d9d101e1494b --- /dev/null +++ b/drivers/net/wireless/uwe5622/unisocwcn/usb/Kconfig -@@ -0,0 +1,9 @@ +@@ -0,0 +1,10 @@ +config WCN_USB + tristate "USB Support" + depends on UMW2653 @@ -171008,6 +171044,7 @@ index 000000000000..98a3533c0741 + chip usb interface bus Support. + Please insmod this module before any other + WCN subsystems. Thanks. ++ diff --git a/drivers/net/wireless/uwe5622/unisocwcn/usb/Makefile b/drivers/net/wireless/uwe5622/unisocwcn/usb/Makefile new file mode 100644 index 000000000000..9b539012eb01 @@ -171913,10 +171950,10 @@ index 000000000000..793d627d0ab4 +#endif diff --git a/drivers/net/wireless/uwe5622/unisocwcn/usb/wcn_usb_download.c b/drivers/net/wireless/uwe5622/unisocwcn/usb/wcn_usb_download.c new file mode 100644 -index 000000000000..8f228d403909 +index 000000000000..6e95b0f3ce87 --- /dev/null +++ b/drivers/net/wireless/uwe5622/unisocwcn/usb/wcn_usb_download.c -@@ -0,0 +1,345 @@ +@@ -0,0 +1,346 @@ +#include +#include +#include @@ -172001,7 +172038,11 @@ index 000000000000..8f228d403909 +{ + struct wcn_usb_ddata *data; + ++#if (LINUX_VERSION_CODE >= KERNEL_VERSION(5,19, 2)) ++ data = (struct wcn_usb_ddata *)pde_data(inode); ++#else + data = (struct wcn_usb_ddata *)PDE_DATA(inode); ++#endif + + if (!data) + return -EIO; @@ -172259,9 +172300,6 @@ index 000000000000..8f228d403909 + if (!this->download) + wcn_usb_dp("%s create file[download] failed\n", __func__); + -+ ddthis = this; -+ return 0; -+} diff --git a/drivers/net/wireless/uwe5622/unisocwcn/usb/wcn_usb_io.c b/drivers/net/wireless/uwe5622/unisocwcn/usb/wcn_usb_io.c new file mode 100644 index 000000000000..f1339f9dc0fd @@ -173178,10 +173216,10 @@ index 000000000000..f1339f9dc0fd +} diff --git a/drivers/net/wireless/uwe5622/unisocwcn/usb/wcn_usb_rx_tx.c b/drivers/net/wireless/uwe5622/unisocwcn/usb/wcn_usb_rx_tx.c new file mode 100644 -index 000000000000..e8467528c02f +index 000000000000..28ade1f394ae --- /dev/null +++ b/drivers/net/wireless/uwe5622/unisocwcn/usb/wcn_usb_rx_tx.c -@@ -0,0 +1,1718 @@ +@@ -0,0 +1,1719 @@ +#include "wcn_usb.h" +#include "bus_common.h" +#include @@ -174900,6 +174938,7 @@ index 000000000000..e8467528c02f +{ + return wcn_usb_apostle_fire(chn, wcn_usb_rx_apostle_callback); +} ++ diff --git a/drivers/net/wireless/uwe5622/unisocwcn/usb/wcn_usb_store.c b/drivers/net/wireless/uwe5622/unisocwcn/usb/wcn_usb_store.c new file mode 100644 index 000000000000..03563500054b @@ -175288,10 +175327,10 @@ index 000000000000..03563500054b +} diff --git a/drivers/net/wireless/uwe5622/unisocwcn/usb/wcn_usb_test.c b/drivers/net/wireless/uwe5622/unisocwcn/usb/wcn_usb_test.c new file mode 100644 -index 000000000000..c2cccc658c0d +index 000000000000..eab457c09f04 --- /dev/null +++ b/drivers/net/wireless/uwe5622/unisocwcn/usb/wcn_usb_test.c -@@ -0,0 +1,1447 @@ +@@ -0,0 +1,1451 @@ +#include "wcn_usb.h" +#include +#include @@ -175355,7 +175394,11 @@ index 000000000000..c2cccc658c0d +{ + struct channel *channel; + ++#if (LINUX_VERSION_CODE >= KERNEL_VERSION(5,19, 2)) ++ channel = (struct channel *)pde_data(inode); ++else + channel = (struct channel *)PDE_DATA(inode); ++#endif + + if (!channel) + return -EIO; @@ -175761,7 +175804,7 @@ index 000000000000..c2cccc658c0d +{ + struct chnmg *chnmg; + /* get channel_list head */ -+ chnmg = (struct chnmg *)PDE_DATA(inode); ++ chnmg = (struct chnmg *)pde_data(inode); + + file->private_data = chnmg; + return 0; @@ -176210,7 +176253,7 @@ index 000000000000..c2cccc658c0d +{ + struct chnmg *chnmg; + /* get channel_list head */ -+ chnmg = (struct chnmg *)PDE_DATA(inode); ++ chnmg = (struct chnmg *)pde_data(inode); + + file->private_data = chnmg; + return 0; @@ -176759,10 +176802,10 @@ index 000000000000..c393b99fd5a3 +# diff --git a/drivers/net/wireless/uwe5622/unisocwcn/wcn_bus.c b/drivers/net/wireless/uwe5622/unisocwcn/wcn_bus.c new file mode 100644 -index 000000000000..b6b54733f256 +index 000000000000..0277de66659e --- /dev/null +++ b/drivers/net/wireless/uwe5622/unisocwcn/wcn_bus.c -@@ -0,0 +1,312 @@ +@@ -0,0 +1,313 @@ +/* + * Copyright (C) 2017 Spreadtrum Communications Inc. + * @@ -177075,12 +177118,13 @@ index 000000000000..b6b54733f256 + return wcn_bus_ops; +} +EXPORT_SYMBOL(get_wcn_bus_ops); ++ diff --git a/drivers/net/wireless/uwe5622/unisocwifi/11h.c b/drivers/net/wireless/uwe5622/unisocwifi/11h.c new file mode 100644 -index 000000000000..01febdc995e8 +index 000000000000..8df549180486 --- /dev/null +++ b/drivers/net/wireless/uwe5622/unisocwifi/11h.c -@@ -0,0 +1,234 @@ +@@ -0,0 +1,235 @@ +/* + * Copyright (C) 2017 Spreadtrum Communications Inc. + * @@ -177315,6 +177359,7 @@ index 000000000000..01febdc995e8 + memcpy(msg->data, data, len); + sprdwl_cmd_send_recv(vif->priv, msg, CMD_WAIT_TIMEOUT, NULL, NULL); +} ++ diff --git a/drivers/net/wireless/uwe5622/unisocwifi/11h.h b/drivers/net/wireless/uwe5622/unisocwifi/11h.h new file mode 100644 index 000000000000..9397dc1796d8 @@ -177384,10 +177429,10 @@ index 000000000000..9397dc1796d8 +#endif diff --git a/drivers/net/wireless/uwe5622/unisocwifi/Android.mk b/drivers/net/wireless/uwe5622/unisocwifi/Android.mk new file mode 100644 -index 000000000000..e18dad2c8327 +index 000000000000..3cad4b4cb44f --- /dev/null +++ b/drivers/net/wireless/uwe5622/unisocwifi/Android.mk -@@ -0,0 +1,32 @@ +@@ -0,0 +1,33 @@ +ifeq ($(BOARD_WLAN_DEVICE), $(filter $(BOARD_WLAN_DEVICE), sc2355 uwe5622)) +ifeq ($(BOARD_SPRD_WCN_SOCKET), $(filter $(BOARD_SPRD_WCN_SOCKET), sdio)) +$(warning shell echo "$(BOARD_WLAN_DEVICE)") @@ -177420,12 +177465,13 @@ index 000000000000..e18dad2c8327 + +endif +endif ++ diff --git a/drivers/net/wireless/uwe5622/unisocwifi/Kconfig b/drivers/net/wireless/uwe5622/unisocwifi/Kconfig new file mode 100644 -index 000000000000..bcfd8bfb773a +index 000000000000..060c584f5da3 --- /dev/null +++ b/drivers/net/wireless/uwe5622/unisocwifi/Kconfig -@@ -0,0 +1,18 @@ +@@ -0,0 +1,19 @@ +config WLAN_UWE5622 + tristate "UWE5622 Wi-Fi Driver" + help @@ -177444,6 +177490,7 @@ index 000000000000..bcfd8bfb773a + depends on WLAN_UWE5622 + help + Spard UWE5622 Wi-Fi Driver Power Save. ++ diff --git a/drivers/net/wireless/uwe5622/unisocwifi/Makefile b/drivers/net/wireless/uwe5622/unisocwifi/Makefile new file mode 100644 index 000000000000..966e74eeeb2c @@ -178020,10 +178067,10 @@ index 000000000000..79f0b5706d13 +} diff --git a/drivers/net/wireless/uwe5622/unisocwifi/cfg80211.c b/drivers/net/wireless/uwe5622/unisocwifi/cfg80211.c new file mode 100644 -index 000000000000..daef880ae3c0 +index 000000000000..47d60f30c2e6 --- /dev/null +++ b/drivers/net/wireless/uwe5622/unisocwifi/cfg80211.c -@@ -0,0 +1,3940 @@ +@@ -0,0 +1,3947 @@ +/* + * Copyright (C) 2015 Spreadtrum Communications Inc. + * @@ -179010,7 +179057,11 @@ index 000000000000..daef880ae3c0 + return sprdwl_change_beacon(vif, beacon); +} + ++#if (LINUX_VERSION_CODE >= KERNEL_VERSION(5,19, 2)) ++static int sprdwl_cfg80211_stop_ap(struct wiphy *wiphy, struct net_device *ndev, unsigned int link_id) ++#else +static int sprdwl_cfg80211_stop_ap(struct wiphy *wiphy, struct net_device *ndev) ++#endif +{ +#ifdef DFS_MASTER + struct sprdwl_vif *vif = netdev_priv(ndev); @@ -180853,6 +180904,9 @@ index 000000000000..daef880ae3c0 + +static int sprdwl_cfg80211_tdls_mgmt(struct wiphy *wiphy, + struct net_device *ndev, const u8 *peer, ++#if (LINUX_VERSION_CODE >= KERNEL_VERSION(6, 5, 0)) ++ int link_id, ++#endif + u8 action_code, u8 dialog_token, + u16 status_code, u32 peer_capability, + bool initiator, const u8 *buf, size_t len) @@ -182094,7 +182148,7 @@ index 000000000000..d4ffe102447c + +struct sprdwl_scan_ssid { + u8 len; -+ u8 ssid[0]; ++ u8 ssid[]; +} __packed; + +struct sprdwl_sched_scan_buf { @@ -182192,10 +182246,10 @@ index 000000000000..d4ffe102447c +#endif diff --git a/drivers/net/wireless/uwe5622/unisocwifi/cmdevt.c b/drivers/net/wireless/uwe5622/unisocwifi/cmdevt.c new file mode 100644 -index 000000000000..e81619b12e39 +index 000000000000..8a3081fb819c --- /dev/null +++ b/drivers/net/wireless/uwe5622/unisocwifi/cmdevt.c -@@ -0,0 +1,3615 @@ +@@ -0,0 +1,3619 @@ +/* + * Copyright (C) 2015 Spreadtrum Communications Inc. + * @@ -185494,7 +185548,11 @@ index 000000000000..e81619b12e39 + NL80211_CHAN_HT20); + else + wl_err("%s, ch is null!\n", __func__); ++#if (LINUX_VERSION_CODE >= KERNEL_VERSION(5,19, 2)) ++ cfg80211_ch_switch_notify(vif->ndev, &chandef, 0, 0); ++#else + cfg80211_ch_switch_notify(vif->ndev, &chandef); ++#endif + } +} + @@ -187331,10 +187389,10 @@ index 000000000000..ee0748bebf5d +#endif diff --git a/drivers/net/wireless/uwe5622/unisocwifi/debug.c b/drivers/net/wireless/uwe5622/unisocwifi/debug.c new file mode 100644 -index 000000000000..998f00ec52a0 +index 000000000000..5f25f078ff5c --- /dev/null +++ b/drivers/net/wireless/uwe5622/unisocwifi/debug.c -@@ -0,0 +1,187 @@ +@@ -0,0 +1,188 @@ +#include "debug.h" +#include +#include @@ -187522,6 +187580,7 @@ index 000000000000..998f00ec52a0 + spin_unlock_bh(&debug_ctrl.debug_ctrl_lock); + } +} ++ diff --git a/drivers/net/wireless/uwe5622/unisocwifi/debug.h b/drivers/net/wireless/uwe5622/unisocwifi/debug.h new file mode 100644 index 000000000000..108b6c857204 @@ -188740,10 +188799,10 @@ index 000000000000..c580b3040260 +#endif diff --git a/drivers/net/wireless/uwe5622/unisocwifi/main.c b/drivers/net/wireless/uwe5622/unisocwifi/main.c new file mode 100644 -index 000000000000..edd8ac14f12e +index 000000000000..21efdf4e0855 --- /dev/null +++ b/drivers/net/wireless/uwe5622/unisocwifi/main.c -@@ -0,0 +1,1640 @@ +@@ -0,0 +1,1641 @@ +/* + * Copyright (C) 2015 Spreadtrum Communications Inc. + * @@ -190384,6 +190443,7 @@ index 000000000000..edd8ac14f12e +#else +const unsigned int tcp_ack_drop_enable; +#endif ++ diff --git a/drivers/net/wireless/uwe5622/unisocwifi/mm.c b/drivers/net/wireless/uwe5622/unisocwifi/mm.c new file mode 100644 index 000000000000..eaf6554f2310 @@ -191058,10 +191118,10 @@ index 000000000000..ac74ba701405 +#endif /* __SPRDWL_MM_H__ */ diff --git a/drivers/net/wireless/uwe5622/unisocwifi/msg.c b/drivers/net/wireless/uwe5622/unisocwifi/msg.c new file mode 100644 -index 000000000000..6140199beedd +index 000000000000..511baf91f5de --- /dev/null +++ b/drivers/net/wireless/uwe5622/unisocwifi/msg.c -@@ -0,0 +1,182 @@ +@@ -0,0 +1,183 @@ +/* + * Copyright (C) 2015 Spreadtrum Communications Inc. + * @@ -191244,6 +191304,7 @@ index 000000000000..6140199beedd + spin_unlock_bh(&list->busylock); + return msg_buf; +} ++ diff --git a/drivers/net/wireless/uwe5622/unisocwifi/msg.h b/drivers/net/wireless/uwe5622/unisocwifi/msg.h new file mode 100644 index 000000000000..dd57521ae708 @@ -191873,7 +191934,7 @@ index 000000000000..fd6d980b4d78 +#endif /* __SPRDWL_NAN_H__ */ diff --git a/drivers/net/wireless/uwe5622/unisocwifi/npi.c b/drivers/net/wireless/uwe5622/unisocwifi/npi.c new file mode 100644 -index 000000000000..ca599c894524 +index 000000000000..00908c1a862f --- /dev/null +++ b/drivers/net/wireless/uwe5622/unisocwifi/npi.c @@ -0,0 +1,367 @@ @@ -191983,7 +192044,7 @@ index 000000000000..ca599c894524 + return ret; +} + -+static int sprdwl_npi_pre_doit(const struct genl_ops *ops, ++static int sprdwl_npi_pre_doit(const struct genl_split_ops *ops, + struct sk_buff *skb, struct genl_info *info) +{ + struct net_device *ndev; @@ -192014,7 +192075,7 @@ index 000000000000..ca599c894524 + return 0; +} + -+static void sprdwl_npi_post_doit(const struct genl_ops *ops, ++static void sprdwl_npi_post_doit(const struct genl_split_ops *ops, + struct sk_buff *skb, struct genl_info *info) +{ + if (info->user_ptr[0]) @@ -192327,10 +192388,10 @@ index 000000000000..0c81ef0d7d92 +#endif /*__NPI_H__*/ diff --git a/drivers/net/wireless/uwe5622/unisocwifi/qos.c b/drivers/net/wireless/uwe5622/unisocwifi/qos.c new file mode 100644 -index 000000000000..b1a0f7cc44c6 +index 000000000000..c01d88fba346 --- /dev/null +++ b/drivers/net/wireless/uwe5622/unisocwifi/qos.c -@@ -0,0 +1,814 @@ +@@ -0,0 +1,815 @@ +/* + * Copyright (C) 2016 Spreadtrum Communications Inc. + * @@ -193145,6 +193206,7 @@ index 000000000000..b1a0f7cc44c6 + return NULL; +} +#endif ++ diff --git a/drivers/net/wireless/uwe5622/unisocwifi/qos.h b/drivers/net/wireless/uwe5622/unisocwifi/qos.h new file mode 100644 index 000000000000..2a99178bcea4 @@ -195632,10 +195694,10 @@ index 000000000000..2c4b0d7066bf +#endif diff --git a/drivers/net/wireless/uwe5622/unisocwifi/rtt.c b/drivers/net/wireless/uwe5622/unisocwifi/rtt.c new file mode 100644 -index 000000000000..739d3aa3d9fe +index 000000000000..69d6965638fb --- /dev/null +++ b/drivers/net/wireless/uwe5622/unisocwifi/rtt.c -@@ -0,0 +1,964 @@ +@@ -0,0 +1,965 @@ +/* + * Copyright (C) 2015 Spreadtrum Communications Inc. + * @@ -196600,12 +196662,13 @@ index 000000000000..739d3aa3d9fe + sprdwl_ftm_session_ended( + priv, SPRDWL_VENDOR_ATTR_LOC_SESSION_STATUS_ABORTED); +} ++ diff --git a/drivers/net/wireless/uwe5622/unisocwifi/rtt.h b/drivers/net/wireless/uwe5622/unisocwifi/rtt.h new file mode 100644 -index 000000000000..0df36298d8f0 +index 000000000000..b58deeb6dcfd --- /dev/null +++ b/drivers/net/wireless/uwe5622/unisocwifi/rtt.h -@@ -0,0 +1,527 @@ +@@ -0,0 +1,528 @@ +#ifndef __SPRD_RTT_H__ +#define __SPRD_RTT_H__ + @@ -197133,6 +197196,7 @@ index 000000000000..0df36298d8f0 +void sprdwl_ftm_stop_operations(struct sprdwl_priv *priv); + +#endif /* __SPRD_RTT_H__ */ ++ diff --git a/drivers/net/wireless/uwe5622/unisocwifi/rx_msg.c b/drivers/net/wireless/uwe5622/unisocwifi/rx_msg.c new file mode 100644 index 000000000000..b6604ee547ce @@ -199367,10 +199431,10 @@ index 000000000000..1ff26aa3fe9a +#endif diff --git a/drivers/net/wireless/uwe5622/unisocwifi/tracer.c b/drivers/net/wireless/uwe5622/unisocwifi/tracer.c new file mode 100644 -index 000000000000..36c510de0b94 +index 000000000000..f8308a5ecdfc --- /dev/null +++ b/drivers/net/wireless/uwe5622/unisocwifi/tracer.c -@@ -0,0 +1,191 @@ +@@ -0,0 +1,192 @@ +#include +#include +#include @@ -199562,6 +199626,7 @@ index 000000000000..36c510de0b94 +{ + cancel_work_sync(&deauth_worker); +} ++ diff --git a/drivers/net/wireless/uwe5622/unisocwifi/tracer.h b/drivers/net/wireless/uwe5622/unisocwifi/tracer.h new file mode 100644 index 000000000000..196ff453173e @@ -201522,10 +201587,10 @@ index 000000000000..7be652187be2 +} diff --git a/drivers/net/wireless/uwe5622/unisocwifi/tx_msg.h b/drivers/net/wireless/uwe5622/unisocwifi/tx_msg.h new file mode 100644 -index 000000000000..a307ea10f945 +index 000000000000..0a6a5790389c --- /dev/null +++ b/drivers/net/wireless/uwe5622/unisocwifi/tx_msg.h -@@ -0,0 +1,124 @@ +@@ -0,0 +1,125 @@ +#ifndef __TX_MSG_H__ +#define __TX_MSG_H__ +#include @@ -201650,6 +201715,7 @@ index 000000000000..a307ea10f945 +bool is_vowifi_pkt(struct sk_buff *skb, bool *b_cmd_path); +void tx_up(struct sprdwl_tx_msg *tx_msg); +#endif ++ diff --git a/drivers/net/wireless/uwe5622/unisocwifi/txrx.c b/drivers/net/wireless/uwe5622/unisocwifi/txrx.c new file mode 100644 index 000000000000..b0a24a3615ba diff --git a/recipes-kernel/linux/linux-mainline/sunxi-kmeta/bsp/uwe5622/uwe5622-common.scc b/recipes-kernel/linux/linux-mainline/sunxi-kmeta/bsp/uwe5622/uwe5622-common.scc new file mode 100644 index 0000000..bb506d0 --- /dev/null +++ b/recipes-kernel/linux/linux-mainline/sunxi-kmeta/bsp/uwe5622/uwe5622-common.scc @@ -0,0 +1,18 @@ +# Kmeta for uwe5622 +# common patches for kernel versions 6.1, 6.5, 6.6 & 6.7 +# source: armbian misc drivers + +# common patches to be appliend after kernel version specific ones + +patch uwe5622-warnings.patch +patch uwe5622-park-link-v6.1-post.patch +patch uwe5622-v6.1.patch +patch uwe5622-fix-setting-mac-address-for-netdev.patch +patch wireless-uwe5622-Fix-compilation-with-6.7-kernel.patch +patch wireless-uwe5622-reduce-system-load.patch + +# Custom: Add driver to makefile and patch Makefiles to make it work with yocto. +patch add-uwe5622-to-wireless-makefile.patch +patch fix-makefiles-for-yocto-build.patch + +kconf harware uwe5622-fragment.cfg diff --git a/recipes-kernel/linux/linux-mainline-6.1.9/orange-pi-zero2/0005-drv-fix-setting-mac-address-for-netdev-in-uwe5622.patch b/recipes-kernel/linux/linux-mainline/sunxi-kmeta/bsp/uwe5622/uwe5622-fix-setting-mac-address-for-netdev.patch similarity index 100% rename from recipes-kernel/linux/linux-mainline-6.1.9/orange-pi-zero2/0005-drv-fix-setting-mac-address-for-netdev-in-uwe5622.patch rename to recipes-kernel/linux/linux-mainline/sunxi-kmeta/bsp/uwe5622/uwe5622-fix-setting-mac-address-for-netdev.patch diff --git a/recipes-kernel/linux/linux-mainline/sunxi-kmeta/bsp/uwe5622/uwe5622-fragment.cfg b/recipes-kernel/linux/linux-mainline/sunxi-kmeta/bsp/uwe5622/uwe5622-fragment.cfg new file mode 100644 index 0000000..9e1d8b8 --- /dev/null +++ b/recipes-kernel/linux/linux-mainline/sunxi-kmeta/bsp/uwe5622/uwe5622-fragment.cfg @@ -0,0 +1,11 @@ +CONFIG_SPARD_WLAN_SUPPORT=y +CONFIG_WCN_BSP_DRIVER_BUILDIN=y +CONFIG_WLAN_UWE5621=m +CONFIG_WLAN_UWE5622=m +CONFIG_SPRDWL_NG=m +CONFIG_UNISOC_WIFI_PS=y +CONFIG_TTY_OVERY_SDIO=m +CONFIG_CRYPTO_SHA256=y +CONFIG_CRYPTO_LIB_SHA256=y + +CONFIG_NVMEM_SUNXI_SID=m diff --git a/recipes-kernel/linux/linux-mainline/sunxi-kmeta/bsp/uwe5622/uwe5622-park-link-v6.1-post.patch b/recipes-kernel/linux/linux-mainline/sunxi-kmeta/bsp/uwe5622/uwe5622-park-link-v6.1-post.patch new file mode 100644 index 0000000..879e383 --- /dev/null +++ b/recipes-kernel/linux/linux-mainline/sunxi-kmeta/bsp/uwe5622/uwe5622-park-link-v6.1-post.patch @@ -0,0 +1,58 @@ +From 67b790ecbeab3f5493dc8306e87e503e1bb7bcdc Mon Sep 17 00:00:00 2001 +From: Paolo Sabatino +Date: Sun, 29 Jan 2023 13:43:27 +0000 +Subject: [PATCH] fix spreadtrum (sprd) bluetooth broken park link status + +--- + drivers/bluetooth/hci_ldisc.c | 6 ++++++ + include/net/bluetooth/hci.h | 6 ++++++ + net/bluetooth/hci_sync.c | 2 +- + 3 files changed, 13 insertions(+), 1 deletion(-) + +diff --git a/drivers/bluetooth/hci_ldisc.c b/drivers/bluetooth/hci_ldisc.c +--- a/drivers/bluetooth/hci_ldisc.c (revision 58aa050aa57333b34b358234002121c59fb3af26) ++++ b/drivers/bluetooth/hci_ldisc.c (revision bf8ab2f58b21494ffde96979431a3da931deb48b) +@@ -658,6 +658,12 @@ + hdev->setup = hci_uart_setup; + SET_HCIDEV_DEV(hdev, hu->tty->dev); + ++ // Set the broken Park link status quirk, specific for spreadtrum (sprd) ++ // bluetooth devices ++ if (hdev->manufacturer == 0xffff && hu->tty->driver && ++ strncmp(hu->tty->driver->name, "ttyBT", 5) == 0) ++ set_bit(HCI_QUIRK_BROKEN_PARK_LINK_STATUS, &hdev->quirks); ++ + if (test_bit(HCI_UART_RAW_DEVICE, &hu->hdev_flags)) + set_bit(HCI_QUIRK_RAW_DEVICE, &hdev->quirks); + +diff --git a/include/net/bluetooth/hci.h b/include/net/bluetooth/hci.h +--- a/include/net/bluetooth/hci.h (revision 58aa050aa57333b34b358234002121c59fb3af26) ++++ b/include/net/bluetooth/hci.h (revision bf8ab2f58b21494ffde96979431a3da931deb48b) +@@ -309,6 +309,12 @@ + + /* HCI device quirks */ + enum { ++ /* ++ * Device declares that support Park link status, but it really ++ * does not support it and fails to initialize ++ */ ++ HCI_QUIRK_BROKEN_PARK_LINK_STATUS, ++ + /* When this quirk is set, the HCI Reset command is send when + * closing the transport instead of when opening it. + * +diff --git a/net/bluetooth/hci_sync.c b/net/bluetooth/hci_sync.c +--- a/net/bluetooth/hci_sync.c (revision 58aa050aa57333b34b358234002121c59fb3af26) ++++ b/net/bluetooth/hci_sync.c (revision bf8ab2f58b21494ffde96979431a3da931deb48b) +@@ -3804,7 +3804,7 @@ + link_policy |= HCI_LP_HOLD; + if (lmp_sniff_capable(hdev)) + link_policy |= HCI_LP_SNIFF; +- if (lmp_park_capable(hdev)) ++ if (lmp_park_capable(hdev) && !test_bit(HCI_QUIRK_BROKEN_PARK_LINK_STATUS, &hdev->quirks)) + link_policy |= HCI_LP_PARK; + + cp.policy = cpu_to_le16(link_policy); +-- +2.34.1 + diff --git a/recipes-kernel/linux/linux-mainline/sunxi-kmeta/bsp/uwe5622/uwe5622-v6.1.patch b/recipes-kernel/linux/linux-mainline/sunxi-kmeta/bsp/uwe5622/uwe5622-v6.1.patch new file mode 100644 index 0000000..121f2d9 --- /dev/null +++ b/recipes-kernel/linux/linux-mainline/sunxi-kmeta/bsp/uwe5622/uwe5622-v6.1.patch @@ -0,0 +1,65 @@ +From 7c0e3b529afd31f99baf78be10b5d71d9086789a Mon Sep 17 00:00:00 2001 +From: Paolo Sabatino +Date: Sun, 29 Jan 2023 15:53:20 +0000 +Subject: [PATCH] port uwe5622 driver to kernel 6.1 + +--- + drivers/net/wireless/uwe5622/unisocwifi/cfg80211.c | 8 ++++---- + 1 file changed, 4 insertions(+), 4 deletions(-) + +diff --git a/drivers/net/wireless/uwe5622/unisocwifi/cfg80211.c b/drivers/net/wireless/uwe5622/unisocwifi/cfg80211.c +index 294f19e1f6c..9dcdee02cb9 100755 +--- a/drivers/net/wireless/uwe5622/unisocwifi/cfg80211.c ++++ b/drivers/net/wireless/uwe5622/unisocwifi/cfg80211.c +@@ -703,7 +703,7 @@ static int sprdwl_add_cipher_key(struct sprdwl_vif *vif, bool pairwise, + } + + static int sprdwl_cfg80211_add_key(struct wiphy *wiphy, struct net_device *ndev, +- u8 key_index, bool pairwise, ++ int link_id, u8 key_index, bool pairwise, + const u8 *mac_addr, + struct key_params *params) + { +@@ -725,7 +725,7 @@ static int sprdwl_cfg80211_add_key(struct wiphy *wiphy, struct net_device *ndev, + } + + static int sprdwl_cfg80211_del_key(struct wiphy *wiphy, struct net_device *ndev, +- u8 key_index, bool pairwise, ++ int link_id, u8 key_index, bool pairwise, + const u8 *mac_addr) + { + struct sprdwl_vif *vif = netdev_priv(ndev); +@@ -755,7 +755,7 @@ static int sprdwl_cfg80211_del_key(struct wiphy *wiphy, struct net_device *ndev, + + static int sprdwl_cfg80211_set_default_key(struct wiphy *wiphy, + struct net_device *ndev, +- u8 key_index, bool unicast, ++ int link_id, u8 key_index, bool unicast, + bool multicast) + { + struct sprdwl_vif *vif = netdev_priv(ndev); +@@ -2383,7 +2383,7 @@ void sprdwl_report_connection(struct sprdwl_vif *vif, + conn_info->status == SPRDWL_ROAM_SUCCESS){ + #if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 14, 0) + struct cfg80211_roam_info roam_info = { +- .bss = bss, ++ .links[0].bss = bss, + .req_ie = conn_info->req_ie, + .req_ie_len = conn_info->req_ie_len, + .resp_ie = conn_info->resp_ie, +-- +2.34.1 + +diff --git a/drivers/net/wireless/uwe5622/unisocwcn/platform/wcn_parn_parser.c b/drivers/net/wireless/uwe5622/unisocwcn/platform/wcn_parn_parser.c +index 0aa765ad839..20aea5e7366 100644 +--- a/drivers/net/wireless/uwe5622/unisocwcn/platform/wcn_parn_parser.c ++++ b/drivers/net/wireless/uwe5622/unisocwcn/platform/wcn_parn_parser.c +@@ -143,7 +143,7 @@ static int prefixcmp(const char *str, const char *prefix) + } + + #if KERNEL_VERSION(3, 19, 0) <= LINUX_VERSION_CODE +-static int find_callback(struct dir_context *ctx, const char *name, int namlen, ++static bool find_callback(struct dir_context *ctx, const char *name, int namlen, + loff_t offset, u64 ino, unsigned int d_type) + #else + static int find_callback(void *ctx, const char *name, int namlen, diff --git a/recipes-kernel/linux/linux-mainline/sunxi-kmeta/bsp/uwe5622/uwe5622-v6.4-post.patch b/recipes-kernel/linux/linux-mainline/sunxi-kmeta/bsp/uwe5622/uwe5622-v6.4-post.patch new file mode 100644 index 0000000..568a4f6 --- /dev/null +++ b/recipes-kernel/linux/linux-mainline/sunxi-kmeta/bsp/uwe5622/uwe5622-v6.4-post.patch @@ -0,0 +1,34 @@ +From 5b43103009736d5efff606ca40a1a693ba8a04c2 Mon Sep 17 00:00:00 2001 +From: Paolo Sabatino +Date: Thu, 3 Aug 2023 10:09:46 +0200 +Subject: [PATCH] fix driver for kernel 6.4 + +--- + drivers/net/wireless/uwe5622/unisocwcn/platform/wcn_log.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/drivers/net/wireless/uwe5622/unisocwcn/platform/wcn_log.c b/drivers/net/wireless/uwe5622/unisocwcn/platform/wcn_log.c +index 1a78b5b035a4..c68d86a20fe2 100644 +--- a/drivers/net/wireless/uwe5622/unisocwcn/platform/wcn_log.c ++++ b/drivers/net/wireless/uwe5622/unisocwcn/platform/wcn_log.c +@@ -260,7 +260,7 @@ int log_cdev_init(void) + struct wcnlog_dev *dev[WCN_LOG_MAX_MINOR] = {NULL}; + + WCN_DEBUG("log_cdev_init\n"); +- wcnlog_class = class_create(THIS_MODULE, "slog_wcn"); ++ wcnlog_class = class_create("slog_wcn"); + if (IS_ERR(wcnlog_class)) + return PTR_ERR(wcnlog_class); + +diff --git a/drivers/net/wireless/uwe5622/tty-sdio/lpm.c b/drivers/net/wireless/uwe5622/tty-sdio/lpm.c +index 1570676ced50..79a6d60c94e8 100644 +--- a/drivers/net/wireless/uwe5622/tty-sdio/lpm.c ++++ b/drivers/net/wireless/uwe5622/tty-sdio/lpm.c +@@ -11,6 +11,7 @@ + #include + #include + #include ++#include + #include + + #define VERSION "marlin2 V0.1" diff --git a/recipes-kernel/linux/linux-mainline/sunxi-kmeta/bsp/uwe5622/uwe5622-v6.6-fix-tty-sdio.patch b/recipes-kernel/linux/linux-mainline/sunxi-kmeta/bsp/uwe5622/uwe5622-v6.6-fix-tty-sdio.patch new file mode 100644 index 0000000..5c9574f --- /dev/null +++ b/recipes-kernel/linux/linux-mainline/sunxi-kmeta/bsp/uwe5622/uwe5622-v6.6-fix-tty-sdio.patch @@ -0,0 +1,27 @@ +From 332748a389a88f8d78c5b2c70cf5c29f7098c703 Mon Sep 17 00:00:00 2001 +From: Ricardo Pardini +Date: Mon, 2 Oct 2023 16:24:12 +0200 +Subject: [PATCH] wifi uwe fix uwe5622 tty-sdio + +--- + drivers/net/wireless/uwe5622/tty-sdio/tty.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/drivers/net/wireless/uwe5622/tty-sdio/tty.c b/drivers/net/wireless/uwe5622/tty-sdio/tty.c +index 6498272fc192..36fc7dd558d4 100644 +--- a/drivers/net/wireless/uwe5622/tty-sdio/tty.c ++++ b/drivers/net/wireless/uwe5622/tty-sdio/tty.c +@@ -467,8 +467,8 @@ static int sdio_data_transmit(uint8_t *data, size_t count) + return mtty_write(NULL, data, count); + } + +-static int mtty_write_plus(struct tty_struct *tty, +- const unsigned char *buf, int count) ++static ssize_t mtty_write_plus(struct tty_struct *tty, const u8 *buf, ++ size_t count) + { + return sitm_write(buf, count, sdio_data_transmit); + } +-- +2.42.0 + diff --git a/recipes-kernel/linux/linux-mainline/sunxi-kmeta/bsp/uwe5622/uwe5622-warnings.patch b/recipes-kernel/linux/linux-mainline/sunxi-kmeta/bsp/uwe5622/uwe5622-warnings.patch new file mode 100644 index 0000000..809b2e7 --- /dev/null +++ b/recipes-kernel/linux/linux-mainline/sunxi-kmeta/bsp/uwe5622/uwe5622-warnings.patch @@ -0,0 +1,206 @@ +From b758478655da935b50a973b0aa2ddbc20893b789 Mon Sep 17 00:00:00 2001 +From: Paolo Sabatino +Date: Sun, 12 Jun 2022 14:33:59 +0000 +Subject: [PATCH] uwe5622: various warning and firmware path fixes + +--- + drivers/net/wireless/uwe5622/Makefile | 2 +- + .../uwe5622/unisocwcn/platform/rdc_debug.c | 4 +- + .../uwe5622/unisocwcn/platform/wcn_boot.c | 2 - + .../unisocwcn/platform/wcn_parn_parser.c | 2 +- + .../uwe5622/unisocwcn/sdio/sdiohal_ctl.c | 42 ++++++------------- + .../wireless/uwe5622/unisocwifi/cfg80211.c | 4 -- + 6 files changed, 17 insertions(+), 39 deletions(-) + +diff --git a/drivers/net/wireless/uwe5622/Makefile b/drivers/net/wireless/uwe5622/Makefile +index 71c863c1017..d2210439f3c 100644 +--- a/drivers/net/wireless/uwe5622/Makefile ++++ b/drivers/net/wireless/uwe5622/Makefile +@@ -6,5 +6,5 @@ UNISOCWCN_DIR := $(shell cd $(src)/unisocwcn/ && /bin/pwd) + UNISOC_BSP_INCLUDE := $(UNISOCWCN_DIR)/include + export UNISOC_BSP_INCLUDE + +-UNISOC_FW_PATH_CONFIG := "/lib/firmware/" ++UNISOC_FW_PATH_CONFIG := "/lib/firmware/uwe5622/" + export UNISOC_FW_PATH_CONFIG +diff --git a/drivers/net/wireless/uwe5622/unisocwcn/platform/rdc_debug.c b/drivers/net/wireless/uwe5622/unisocwcn/platform/rdc_debug.c +index 86fa3b103ad..1343cb98362 100755 +--- a/drivers/net/wireless/uwe5622/unisocwcn/platform/rdc_debug.c ++++ b/drivers/net/wireless/uwe5622/unisocwcn/platform/rdc_debug.c +@@ -41,13 +41,13 @@ static unsigned int wcn_cp2_file_max_num = UNISOC_DBG_FILENUM_DEFAULT; + */ + static unsigned int wcn_cp2_log_cover_old = 1; + /* path of config file unisoc_cp2log_config.txt */ +-#define WCN_DEBUG_CFG_MAX_PATH_NUM 0 ++#define WCN_DEBUG_CFG_MAX_PATH_NUM 2 + static char *wcn_cp2_config_path[WCN_DEBUG_CFG_MAX_PATH_NUM] = { + "/data/unisoc_cp2log_config.txt", + "/vendor/etc/wifi/unisoc_cp2log_config.txt" + }; + /* path of cp2 log and mem files. */ +-#define WCN_UNISOC_DBG_MAX_PATH_NUM 0 ++#define WCN_UNISOC_DBG_MAX_PATH_NUM 3 + static char *wcn_unisoc_dbg_path[WCN_UNISOC_DBG_MAX_PATH_NUM] = { + UNISOC_DBG_PATH_DEFAULT,/* most of projects */ + "/data", /* amlogic s905w... */ +diff --git a/drivers/net/wireless/uwe5622/unisocwcn/platform/wcn_boot.c b/drivers/net/wireless/uwe5622/unisocwcn/platform/wcn_boot.c +index d82f56357f3..58b9d290f23 100755 +--- a/drivers/net/wireless/uwe5622/unisocwcn/platform/wcn_boot.c ++++ b/drivers/net/wireless/uwe5622/unisocwcn/platform/wcn_boot.c +@@ -325,8 +325,6 @@ static struct regmap *reg_map; + #define AFC_CALI_READ_FINISH 0x12121212 + #define WCN_AFC_CALI_PATH "/productinfo/wcn/tsx_bt_data.txt" + +-#define BIT(nr) (1UL << (nr)) +- + #ifdef CONFIG_WCN_DOWNLOAD_FIRMWARE_FROM_HEX + #define POWER_WQ_DELAYED_MS 0 + #else +diff --git a/drivers/net/wireless/uwe5622/unisocwcn/platform/wcn_parn_parser.c b/drivers/net/wireless/uwe5622/unisocwcn/platform/wcn_parn_parser.c +index 9abcd326972..c1557dcce3f 100755 +--- a/drivers/net/wireless/uwe5622/unisocwcn/platform/wcn_parn_parser.c ++++ b/drivers/net/wireless/uwe5622/unisocwcn/platform/wcn_parn_parser.c +@@ -183,7 +183,7 @@ int parse_firmware_path(char *firmware_path) + continue; + } + memset(fstab_name, 0, sizeof(fstab_name)); +- strncpy(fstab_name, fstab_dir[loop], sizeof(fstab_dir[loop])); ++ strncpy(fstab_name, fstab_dir[loop], sizeof(fstab_name)); + if (strlen(fstab_name) > 1) + fstab_name[strlen(fstab_name)] = '/'; + iterate_dir(file1, &ctx); +diff --git a/drivers/net/wireless/uwe5622/unisocwcn/sdio/sdiohal_ctl.c b/drivers/net/wireless/uwe5622/unisocwcn/sdio/sdiohal_ctl.c +index b426bf89cd9..8000bfea378 100755 +--- a/drivers/net/wireless/uwe5622/unisocwcn/sdio/sdiohal_ctl.c ++++ b/drivers/net/wireless/uwe5622/unisocwcn/sdio/sdiohal_ctl.c +@@ -9,6 +9,7 @@ + #include + #include + #include ++#include + #include + + #include "sdiohal.h" +@@ -96,8 +97,10 @@ char *tp_tx_buf[TP_TX_BUF_CNT]; + + struct mchn_ops_t at_tx_ops; + struct mchn_ops_t at_rx_ops; +-struct timeval tp_tx_start_time; +-struct timeval tp_tx_stop_time; ++ktime_t tp_tx_start_time; ++ktime_t tp_tx_stop_time; ++ktime_t tp_rx_start_time; ++ktime_t tp_rx_stop_time; + int tp_tx_cnt; + int tp_tx_flag; + int tp_tx_buf_cnt = TP_TX_BUF_CNT; +@@ -222,7 +225,6 @@ static int sdiohal_throughput_tx(void) + static void sdiohal_throughput_tx_compute_time(void) + { + static signed long long times_count; +- struct timespec64 now; + + if (tp_tx_flag != 1) + return; +@@ -230,17 +232,12 @@ static void sdiohal_throughput_tx_compute_time(void) + /* throughput test */ + tp_tx_cnt++; + if (tp_tx_cnt % 500 == 0) { +- getnstimeofday(&now); +- tp_tx_stop_time.tv_sec = now.tv_sec; +- tp_tx_stop_time.tv_usec = now.tv_nsec/1000; +- times_count = timeval_to_ns(&tp_tx_stop_time) - +- timeval_to_ns(&tp_tx_start_time); ++ tp_tx_stop_time = ktime_get(); ++ times_count = tp_tx_stop_time - tp_tx_start_time; + sdiohal_info("tx->times(500c) is %lldns, tx %d, rx %d\n", + times_count, tp_tx_cnt, rx_pop_cnt); + tp_tx_cnt = 0; +- getnstimeofday(&now); +- tp_tx_start_time.tv_sec = now.tv_sec; +- tp_tx_start_time.tv_usec = now.tv_nsec/1000; ++ tp_tx_start_time = ktime_get(); + } + sdiohal_throughput_tx(); + } +@@ -544,14 +541,10 @@ int at_list_tx_pop(int channel, struct mbuf_t *head, + } + + int tp_rx_cnt; +-struct timeval tp_rx_start_time; +-struct timeval tp_rx_stop_time; +-struct timespec tp_tm_begin; + int at_list_rx_pop(int channel, struct mbuf_t *head, + struct mbuf_t *tail, int num) + { +- static signed long long times_count; +- struct timespec64 now; ++ ktime_t times_count; + + sdiohal_debug("%s channel:%d head:%p tail:%p num:%d\n", + __func__, channel, head, tail, num); +@@ -568,19 +561,13 @@ int at_list_rx_pop(int channel, struct mbuf_t *head, + /* throughput test */ + tp_rx_cnt += num; + if (tp_rx_cnt / (500*64) == 1) { +- getnstimeofday(&now); +- tp_rx_stop_time.tv_sec = now.tv_sec; +- tp_rx_stop_time.tv_usec = now.tv_nsec/1000; +- times_count = timeval_to_ns(&tp_rx_stop_time) +- - timeval_to_ns(&tp_rx_start_time); ++ tp_rx_stop_time = ktime_get(); ++ times_count = tp_rx_stop_time - tp_rx_start_time; + sdiohal_info("rx->times(%dc) is %lldns, tx %d, rx %d\n", + tp_rx_cnt, times_count, tp_tx_cnt, rx_pop_cnt); + tp_rx_cnt = 0; +- getnstimeofday(&now); +- tp_rx_start_time.tv_sec = now.tv_sec; +- tp_rx_start_time.tv_usec = now.tv_nsec/1000; ++ tp_rx_start_time = ktime_get(); + } +- getnstimeofday(&tp_tm_begin); + + return 0; + } +@@ -834,7 +821,6 @@ static ssize_t at_cmd_write(struct file *filp, + long int long_data; + int ret; + unsigned char *send_buf = NULL; +- struct timespec64 now; + + if (count > SDIOHAL_WRITE_SIZE) { + sdiohal_err("%s write size > %d\n", +@@ -1127,9 +1113,7 @@ static ssize_t at_cmd_write(struct file *filp, + __func__, tp_tx_buf_cnt, tp_tx_buf_len); + tp_tx_flag = 1; + tp_tx_cnt = 0; +- getnstimeofday(&now); +- tp_tx_start_time.tv_sec = now.tv_sec; +- tp_tx_start_time.tv_usec = now.tv_nsec/1000; ++ tp_tx_start_time = ktime_get(); + if ((tp_tx_buf_cnt <= TP_TX_BUF_CNT) && + (tp_tx_buf_len <= TP_TX_BUF_LEN)) { + sprdwcn_bus_chn_deinit(&at_tx_ops); +diff --git a/drivers/net/wireless/uwe5622/unisocwifi/wl_core.c b/drivers/net/wireless/uwe5622/unisocwifi/wl_core.c +index ad310450e79..206824604ec 100755 +--- a/drivers/net/wireless/uwe5622/unisocwifi/wl_core.c ++++ b/drivers/net/wireless/uwe5622/unisocwifi/wl_core.c +@@ -628,12 +628,12 @@ static int sprdwl_probe(struct platform_device *pdev) + ret = -ENXIO; + goto err_core_create; + } +- memcpy(priv->wl_ver.kernel_ver, utsname()->release, +- strlen(utsname()->release)); +- memcpy(priv->wl_ver.drv_ver, SPRDWL_DRIVER_VERSION, +- strlen(SPRDWL_DRIVER_VERSION)); +- memcpy(priv->wl_ver.update, SPRDWL_UPDATE, strlen(SPRDWL_UPDATE)); +- memcpy(priv->wl_ver.reserve, SPRDWL_RESERVE, strlen(SPRDWL_RESERVE)); ++ strncpy(priv->wl_ver.kernel_ver, utsname()->release, ++ sizeof(priv->wl_ver.kernel_ver)); ++ strncpy(priv->wl_ver.drv_ver, SPRDWL_DRIVER_VERSION, ++ sizeof(priv->wl_ver.drv_ver)); ++ strncpy(priv->wl_ver.update, SPRDWL_UPDATE, sizeof(priv->wl_ver.update)); ++ strncpy(priv->wl_ver.reserve, SPRDWL_RESERVE, sizeof(priv->wl_ver.reserve)); + wl_info("Spreadtrum WLAN Version:"); + wl_info("Kernel:%s,Driver:%s,update:%s,reserved:%s\n", + utsname()->release, SPRDWL_DRIVER_VERSION, diff --git a/recipes-kernel/linux/linux-mainline/sunxi-kmeta/bsp/uwe5622/wireless-uwe5622-Fix-compilation-with-6.7-kernel.patch b/recipes-kernel/linux/linux-mainline/sunxi-kmeta/bsp/uwe5622/wireless-uwe5622-Fix-compilation-with-6.7-kernel.patch new file mode 100644 index 0000000..7f7020a --- /dev/null +++ b/recipes-kernel/linux/linux-mainline/sunxi-kmeta/bsp/uwe5622/wireless-uwe5622-Fix-compilation-with-6.7-kernel.patch @@ -0,0 +1,33 @@ +From 4cf270a8ac06021e0f6cf30790d089584cb24b67 Mon Sep 17 00:00:00 2001 +From: Gunjan Gupta +Date: Sat, 23 Dec 2023 10:05:30 +0000 +Subject: [PATCH] wireless: uwe5622: Fix compilation with 6.7 kernel + +--- + drivers/net/wireless/uwe5622/unisocwifi/cfg80211.c | 7 +++++++ + 1 file changed, 7 insertions(+) + +diff --git a/drivers/net/wireless/uwe5622/unisocwifi/cfg80211.c b/drivers/net/wireless/uwe5622/unisocwifi/cfg80211.c +index b2f9a877edce..34b2e5e4274d 100644 +--- a/drivers/net/wireless/uwe5622/unisocwifi/cfg80211.c ++++ b/drivers/net/wireless/uwe5622/unisocwifi/cfg80211.c +@@ -964,9 +964,16 @@ static int sprdwl_cfg80211_start_ap(struct wiphy *wiphy, + + static int sprdwl_cfg80211_change_beacon(struct wiphy *wiphy, + struct net_device *ndev, ++#if (LINUX_VERSION_CODE >= KERNEL_VERSION(6, 7, 0)) ++ struct cfg80211_ap_update *info) ++#else + struct cfg80211_beacon_data *beacon) ++#endif + { + struct sprdwl_vif *vif = netdev_priv(ndev); ++#if (LINUX_VERSION_CODE >= KERNEL_VERSION(6, 7, 0)) ++ struct cfg80211_beacon_data *beacon = &(info->beacon); ++#endif + + wl_ndev_log(L_DBG, ndev, "%s\n", __func__); + #ifdef DFS_MASTER +-- +2.34.1 + diff --git a/recipes-kernel/linux/linux-mainline/sunxi-kmeta/bsp/uwe5622/wireless-uwe5622-reduce-system-load.patch b/recipes-kernel/linux/linux-mainline/sunxi-kmeta/bsp/uwe5622/wireless-uwe5622-reduce-system-load.patch new file mode 100644 index 0000000..25f2400 --- /dev/null +++ b/recipes-kernel/linux/linux-mainline/sunxi-kmeta/bsp/uwe5622/wireless-uwe5622-reduce-system-load.patch @@ -0,0 +1,29 @@ +From 2bf93d6cfe24f56baa12f75a57b71dfc33fe322a Mon Sep 17 00:00:00 2001 +From: Gunjan Gupta +Date: Tue, 2 Jan 2024 13:23:23 +0000 +Subject: [PATCH] wireless: uwe5622: reduce system load + +Based on https://github.com/pyavitz/debian-image-builder/commit/cbed5020641ad2d2a6c2df0a2ce68586da1b1635 +--- + drivers/net/wireless/uwe5622/unisocwifi/tx_msg.c | 5 ++++- + 1 file changed, 4 insertions(+), 1 deletion(-) + +diff --git a/drivers/net/wireless/uwe5622/unisocwifi/tx_msg.c b/drivers/net/wireless/uwe5622/unisocwifi/tx_msg.c +index 40d51a7130d9..040193d3115d 100644 +--- a/drivers/net/wireless/uwe5622/unisocwifi/tx_msg.c ++++ b/drivers/net/wireless/uwe5622/unisocwifi/tx_msg.c +@@ -317,7 +317,10 @@ void sprdwl_dequeue_data_list(struct mbuf_t *head, int num) + /* seam for tx_thread */ + void tx_down(struct sprdwl_tx_msg *tx_msg) + { +- wait_for_completion(&tx_msg->tx_completed); ++ int ret; ++ do { ++ ret = wait_for_completion_interruptible(&tx_msg->tx_completed); ++ } while (ret == -ERESTARTSYS); + } + + void tx_up(struct sprdwl_tx_msg *tx_msg) +-- +2.34.1 + diff --git a/recipes-kernel/linux/linux-mainline/sunxi-kmeta/features/ap6212/ap6212.scc b/recipes-kernel/linux/linux-mainline/sunxi-kmeta/features/ap6212/ap6212.scc new file mode 100644 index 0000000..f3b773b --- /dev/null +++ b/recipes-kernel/linux/linux-mainline/sunxi-kmeta/features/ap6212/ap6212.scc @@ -0,0 +1,5 @@ +# SPDX-License-Identifier: MIT +define KFEATURE_DESCRIPTION "AMPAK 6212(A) Wifi / Bluetooth module support" + +include features/bluetooth/bluetooth-hciuart.scc +include features/wifi/wifi-sdio.scc diff --git a/recipes-kernel/linux/linux-mainline/sunxi-kmeta/features/bluetooth/bluetooth-hciuart.cfg b/recipes-kernel/linux/linux-mainline/sunxi-kmeta/features/bluetooth/bluetooth-hciuart.cfg new file mode 100644 index 0000000..1d1a3f7 --- /dev/null +++ b/recipes-kernel/linux/linux-mainline/sunxi-kmeta/features/bluetooth/bluetooth-hciuart.cfg @@ -0,0 +1,9 @@ +# SPDX-License-Identifier: MIT + +# Dependencies +CONFIG_SERIAL_DEV_BUS=y +CONFIG_SERIAL_DEV_CTRL_TTYPORT=y + +CONFIG_BT_HCIUART=m +CONFIG_BT_HCIUART_SERDEV=y +CONFIG_BT_HCIUART_BCM=y diff --git a/recipes-kernel/linux/linux-mainline/sunxi-kmeta/features/bluetooth/bluetooth-hciuart.scc b/recipes-kernel/linux/linux-mainline/sunxi-kmeta/features/bluetooth/bluetooth-hciuart.scc new file mode 100644 index 0000000..44516bd --- /dev/null +++ b/recipes-kernel/linux/linux-mainline/sunxi-kmeta/features/bluetooth/bluetooth-hciuart.scc @@ -0,0 +1,3 @@ +# SPDX-License-Identifier: MIT + +kconf hardware bluetooth-hciuart.cfg diff --git a/recipes-kernel/linux/linux-mainline/sunxi-kmeta/features/wifi/broadcom-sdio.cfg b/recipes-kernel/linux/linux-mainline/sunxi-kmeta/features/wifi/broadcom-sdio.cfg new file mode 100644 index 0000000..744c4e3 --- /dev/null +++ b/recipes-kernel/linux/linux-mainline/sunxi-kmeta/features/wifi/broadcom-sdio.cfg @@ -0,0 +1,7 @@ +# SPDX-License-Identifier: MIT +CONFIG_WLAN_VENDOR_BROADCOM=y + +# brcm80211 +CONFIG_BRCMUTIL=m +CONFIG_BRCMFMAC=m +CONFIG_BRCMFMAC_SDIO=y diff --git a/recipes-kernel/linux/linux-mainline/sunxi-kmeta/features/wifi/wifi-sdio.scc b/recipes-kernel/linux/linux-mainline/sunxi-kmeta/features/wifi/wifi-sdio.scc new file mode 100644 index 0000000..412382e --- /dev/null +++ b/recipes-kernel/linux/linux-mainline/sunxi-kmeta/features/wifi/wifi-sdio.scc @@ -0,0 +1,5 @@ +# SPDX-License-Identifier: MIT +define KFEATURE_DESCRIPTION "Enable SDIO WiFi Drivers" +define KFEATURE_COMPATIBILITY board + +kconf hardware broadcom-sdio.cfg diff --git a/recipes-kernel/linux/linux-mainline_5.15.91.bb b/recipes-kernel/linux/linux-mainline_5.15.91.bb deleted file mode 100644 index 4b44a93..0000000 --- a/recipes-kernel/linux/linux-mainline_5.15.91.bb +++ /dev/null @@ -1,7 +0,0 @@ -require linux-mainline.inc - -DESCRIPTION = "Mainline Longterm Linux kernel" - -LIC_FILES_CHKSUM = "file://COPYING;md5=6bc538ed5bd9a7fc9398086aedcd7e46" - -SRC_URI[sha256sum] = "a63c2bb1beb15f1aea9c63cf80559f5b7ab58afd2da2fa5e7670c515ebe1fe80" diff --git a/recipes-kernel/linux/linux-mainline_6.1.9.bb b/recipes-kernel/linux/linux-mainline_6.1.9.bb deleted file mode 100644 index 40abfa6..0000000 --- a/recipes-kernel/linux/linux-mainline_6.1.9.bb +++ /dev/null @@ -1,23 +0,0 @@ -require linux-mainline.inc - -DESCRIPTION = "Mainline Longterm Linux kernel" - -LIC_FILES_CHKSUM = "file://COPYING;md5=6bc538ed5bd9a7fc9398086aedcd7e46" - -SRC_URI[sha256sum] = "d60cf185693c386e7acd9f3eb3a94ae30ffbfee0a9447a20e83711e0bdf5922b" - -SRC_URI:append:orange-pi-zero2 = " \ - file://defconfig \ - file://0001-drv-wireless-add-uwe5622-wifi-driver.patch \ - file://0002-drv-wireless-driver-for-uwe5622-allwinner-bugfix.patch \ - file://0003-drv-fix-incldue-path-for-unisocwcn.patch \ - file://0004-drv-wireless-adapt-uwe5622-wifi-driver-to-kernel-6.1.patch \ - file://0005-drv-fix-setting-mac-address-for-netdev-in-uwe5622.patch \ - file://0006-drv-add-dump_reg-and-sunxi-sysinfo-drivers.patch \ - file://0007-drv-add-sunxi_get_soc_chipid-and-sunxi_get_serial.patch \ - file://0008-drv-add-sunxi-addr-driver.patch \ - file://0009-dts-add-addr_mgt-device-tree-node.patch \ - file://0010-dts-add-wifi-power-regulator.patch \ - file://0011-dts-add-usb-to-h616.patch \ - file://0012-dts-orange-pi-zero2.patch \ -" diff --git a/recipes-kernel/linux/linux-mainline_6.5.11.bb b/recipes-kernel/linux/linux-mainline_6.5.11.bb deleted file mode 100644 index fcc7ae2..0000000 --- a/recipes-kernel/linux/linux-mainline_6.5.11.bb +++ /dev/null @@ -1,8 +0,0 @@ -require linux-mainline.inc - -DESCRIPTION = "Mainline Longterm Linux kernel" - -LIC_FILES_CHKSUM = "file://COPYING;md5=6bc538ed5bd9a7fc9398086aedcd7e46" - -SRC_URI[sha256sum] = "2ee24af9282b80923b2da56b70aad7df2e8ee4e3f076452e05ba66be2059b519" - diff --git a/recipes-kernel/linux/linux-mainline_6.6.28.bb b/recipes-kernel/linux/linux-mainline_6.6.28.bb deleted file mode 100644 index 5150523..0000000 --- a/recipes-kernel/linux/linux-mainline_6.6.28.bb +++ /dev/null @@ -1,8 +0,0 @@ -require linux-mainline.inc - -DESCRIPTION = "Mainline Longterm Linux kernel" - -LIC_FILES_CHKSUM = "file://COPYING;md5=6bc538ed5bd9a7fc9398086aedcd7e46" - -SRC_URI[sha256sum] = "818716ed13e7dba6aaeae24e3073993e260812ed128d10272e94b922ee6d3394" - diff --git a/recipes-kernel/linux/linux-mainline_6.6.85.bb b/recipes-kernel/linux/linux-mainline_6.6.85.bb new file mode 100644 index 0000000..993b1ce --- /dev/null +++ b/recipes-kernel/linux/linux-mainline_6.6.85.bb @@ -0,0 +1,14 @@ +require linux-mainline.inc + +DESCRIPTION = "Mainline Longterm Linux kernel" + +LIC_FILES_CHKSUM = "file://COPYING;md5=6bc538ed5bd9a7fc9398086aedcd7e46" + +SRC_URI += "https://www.kernel.org/pub/linux/kernel/v${KRELEASE}.x/linux-${PV}.tar.xz \ + file://sunxi-kmeta;type=kmeta;name=sunxi-kmeta;destsuffix=sunxi-kmeta \ + " +SRC_URI[sha256sum] = "5ebaccf4ca3428cd26817bae62171f4efd270eed866a3e3d0a1d9e970b7b7529" + + +KERNEL_FEATURES:append:orange-pi-3lts = " bsp/orange-pi-3lts/orange-pi-3lts-6_5.scc bsp/uwe5622/uwe5622-6_6.scc bsp/orange-pi-3lts/fix-rtc.scc" +KERNEL_FEATURES:append:orange-pi-zero2 = " bsp/h61x/orangepi-zero2-6_6.scc bsp/uwe5622/uwe5622-6_6.scc" diff --git a/recipes-kernel/uwe5622-firmware/uwe5622-firmware.bb b/recipes-kernel/uwe5622-firmware/uwe5622-firmware.bb index 2033ca3..06a3868 100644 --- a/recipes-kernel/uwe5622-firmware/uwe5622-firmware.bb +++ b/recipes-kernel/uwe5622-firmware/uwe5622-firmware.bb @@ -4,7 +4,7 @@ LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/${LICENSE};md5=0ceb3372c9595f0a S = "${WORKDIR}" -COMPATIBLE_MACHINE = "orange-pi-zero2" +COMPATIBLE_MACHINE = "(orange-pi-zero2|orange-pi-3lts)" SRC_URI:append = " \ file://wcnmodem.bin \ @@ -19,4 +19,4 @@ do_install() { FILES:${PN} = "${base_libdir}/*" -PACKAGES = "${PN}" \ No newline at end of file +PACKAGES = "${PN}" diff --git a/recipes-kernel/xradio-firmware/xradio-firmware.bb b/recipes-kernel/xradio-firmware/xradio-firmware.bb index b6389e3..e48dcd0 100644 --- a/recipes-kernel/xradio-firmware/xradio-firmware.bb +++ b/recipes-kernel/xradio-firmware/xradio-firmware.bb @@ -9,7 +9,7 @@ SRCREV = "761658e1701c77a0a84706754e6db1a25ee60b82" COMPATIBLE_MACHINE = "orange-pi-zero" -SRC_URI = "git://github.com/armbian/firmware.git;protocol=https" +SRC_URI = "git://github.com/armbian/firmware.git;protocol=https;branch=master" S = "${WORKDIR}/git"