Răsfoiți Sursa

sopine wrk, mit drvgfa der fast funktioniert

Reinhard Russinger 2 ani în urmă
părinte
comite
b30b6ea78f

+ 2 - 5
Make-bb-kernel.sh

@@ -4,10 +4,7 @@ cd ..
 rm -rf buildroot
 git clone https://gogs.reru.org/PUBLIC_REPOS/buildroot.git ./buildroot
 cd buildroot
-##git checkout fa3267bd460095eb9e1478b27d9cb8fa80f96163
-##git checkout 2020.05
-git checkout 2021.08.1
-##git checkout 0bec4c8a4a90cde57ccd46dcad4b9a860c71ffde
+#git checkout 2021.08
 #
 for i in ../GfA/patches/*.patch
 do
@@ -19,6 +16,6 @@ chmod a+x *.sh
 cp ../GfA/configs/* ./configs
 git add .
 git commit -m "GfA wrk changes and setup"
-make BR2_EXTERNAL=../GfA SOPINEA64_L50_Qt5.15_defconfig
+make BR2_EXTERNAL=../GfA SOPINEA64_L50_Qt5.15_WRK_defconfig
 cd $GFAWRKDIR
 #------

+ 1 - 1
board/GfA/Display001/BUILD

@@ -1 +1 @@
-750
+754

+ 7 - 0
board/GfA/Display001/DTS_5.0/SOPINEA64.dts

@@ -236,6 +236,13 @@
 
 &spi0 {
 	status = "okay";
+	flash@0 {
+		#address-cells = <1>;
+		#size-cells = <1>;
+		compatible = "jedec,spi-nor";
+		reg = <0>;
+		spi-max-frequency = <40000000>;
+	};
 };
 
 &spi1 {

+ 47 - 11
board/GfA/Display001/SOPINEA64_defconfig

@@ -2,14 +2,15 @@
 # Automatically generated file; DO NOT EDIT.
 # Linux/arm64 5.8.7 Kernel Configuration
 #
-CONFIG_CC_VERSION_TEXT="aarch64-buildroot-linux-gnu-gcc.br_real (Buildroot 2020.08-672-g9af7dbf6b4) 8.4.0"
+CONFIG_CC_VERSION_TEXT="aarch64-buildroot-linux-gnu-gcc.br_real (Buildroot 2022.11-1420-gddd3224) 11.3.0"
 CONFIG_CC_IS_GCC=y
-CONFIG_GCC_VERSION=80400
-CONFIG_LD_VERSION=233010000
+CONFIG_GCC_VERSION=110300
+CONFIG_LD_VERSION=238000000
 CONFIG_CLANG_VERSION=0
 CONFIG_CC_CAN_LINK=y
 CONFIG_CC_CAN_LINK_STATIC=y
 CONFIG_CC_HAS_ASM_GOTO=y
+CONFIG_CC_HAS_ASM_GOTO_OUTPUT=y
 CONFIG_CC_HAS_ASM_INLINE=y
 CONFIG_IRQ_WORK=y
 CONFIG_BUILDTIME_TABLE_SORT=y
@@ -426,8 +427,10 @@ CONFIG_ARM64_CNP=y
 # ARMv8.3 architectural features
 #
 CONFIG_ARM64_PTR_AUTH=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
 
 #
@@ -440,6 +443,8 @@ CONFIG_ARM64_AMU_EXTN=y
 # ARMv8.5 architectural features
 #
 CONFIG_ARM64_BTI=y
+CONFIG_ARM64_BTI_KERNEL=y
+CONFIG_CC_HAS_BRANCH_PROT_PAC_RET_BTI=y
 CONFIG_ARM64_E0PD=y
 CONFIG_ARCH_RANDOM=y
 # end of ARMv8.5 architectural features
@@ -449,6 +454,8 @@ 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
 # end of Kernel Features
 
 #
@@ -778,7 +785,6 @@ CONFIG_ARCH_HAS_GCOV_PROFILE_ALL=y
 # end of GCOV-based kernel profiling
 
 CONFIG_HAVE_GCC_PLUGINS=y
-# CONFIG_GCC_PLUGINS is not set
 # end of General architecture-dependent options
 
 CONFIG_RT_MUTEXES=y
@@ -1523,7 +1529,8 @@ CONFIG_VEXPRESS_CONFIG=y
 # CONFIG_MHI_BUS is not set
 # end of Bus devices
 
-# CONFIG_CONNECTOR is not set
+CONFIG_CONNECTOR=y
+CONFIG_PROC_EVENTS=y
 # CONFIG_GNSS is not set
 CONFIG_MTD=y
 # CONFIG_MTD_TESTS is not set
@@ -1939,7 +1946,12 @@ CONFIG_PATA_OF_PLATFORM=y
 # CONFIG_ATA_GENERIC is not set
 # CONFIG_PATA_LEGACY is not set
 # CONFIG_MD is not set
-# CONFIG_TARGET_CORE is not set
+CONFIG_TARGET_CORE=y
+# CONFIG_TCM_IBLOCK is not set
+# CONFIG_TCM_FILEIO is not set
+# CONFIG_TCM_PSCSI is not set
+# CONFIG_LOOPBACK_TARGET is not set
+# CONFIG_ISCSI_TARGET is not set
 # CONFIG_FUSION is not set
 
 #
@@ -2664,8 +2676,8 @@ CONFIG_TOUCHSCREEN_ATMEL_MXT=m
 # CONFIG_TOUCHSCREEN_CYTTSP4_CORE is not set
 # CONFIG_TOUCHSCREEN_DYNAPRO is not set
 # CONFIG_TOUCHSCREEN_HAMPSHIRE is not set
-# CONFIG_TOUCHSCREEN_EETI is not set
-# CONFIG_TOUCHSCREEN_EGALAX is not set
+CONFIG_TOUCHSCREEN_EETI=m
+CONFIG_TOUCHSCREEN_EGALAX=m
 # CONFIG_TOUCHSCREEN_EGALAX_SERIAL is not set
 # CONFIG_TOUCHSCREEN_EXC3000 is not set
 # CONFIG_TOUCHSCREEN_FUJITSU is not set
@@ -2689,13 +2701,31 @@ CONFIG_TOUCHSCREEN_GOODIX=m
 # CONFIG_TOUCHSCREEN_INEXIO is not set
 # CONFIG_TOUCHSCREEN_MK712 is not set
 # CONFIG_TOUCHSCREEN_PENMOUNT is not set
-# CONFIG_TOUCHSCREEN_EDT_FT5X06 is not set
+CONFIG_TOUCHSCREEN_EDT_FT5X06=m
 # CONFIG_TOUCHSCREEN_RASPBERRYPI_FW is not set
 # CONFIG_TOUCHSCREEN_TOUCHRIGHT is not set
 # CONFIG_TOUCHSCREEN_TOUCHWIN is not set
 # CONFIG_TOUCHSCREEN_PIXCIR is not set
 # CONFIG_TOUCHSCREEN_WDT87XX_I2C is not set
-# CONFIG_TOUCHSCREEN_USB_COMPOSITE is not set
+CONFIG_TOUCHSCREEN_USB_COMPOSITE=m
+CONFIG_TOUCHSCREEN_USB_EGALAX=y
+CONFIG_TOUCHSCREEN_USB_PANJIT=y
+CONFIG_TOUCHSCREEN_USB_3M=y
+CONFIG_TOUCHSCREEN_USB_ITM=y
+CONFIG_TOUCHSCREEN_USB_ETURBO=y
+CONFIG_TOUCHSCREEN_USB_GUNZE=y
+CONFIG_TOUCHSCREEN_USB_DMC_TSC10=y
+CONFIG_TOUCHSCREEN_USB_IRTOUCH=y
+CONFIG_TOUCHSCREEN_USB_IDEALTEK=y
+CONFIG_TOUCHSCREEN_USB_GENERAL_TOUCH=y
+CONFIG_TOUCHSCREEN_USB_GOTOP=y
+CONFIG_TOUCHSCREEN_USB_JASTEC=y
+CONFIG_TOUCHSCREEN_USB_ELO=y
+CONFIG_TOUCHSCREEN_USB_E2I=y
+CONFIG_TOUCHSCREEN_USB_ZYTRONIC=y
+CONFIG_TOUCHSCREEN_USB_ETT_TC45USB=y
+CONFIG_TOUCHSCREEN_USB_NEXIO=y
+CONFIG_TOUCHSCREEN_USB_EASYTOUCH=y
 # CONFIG_TOUCHSCREEN_TOUCHIT213 is not set
 # CONFIG_TOUCHSCREEN_TSC_SERIO is not set
 # CONFIG_TOUCHSCREEN_TSC2004 is not set
@@ -2703,7 +2733,7 @@ CONFIG_TOUCHSCREEN_GOODIX=m
 # CONFIG_TOUCHSCREEN_TSC2007 is not set
 # CONFIG_TOUCHSCREEN_RM_TS is not set
 # CONFIG_TOUCHSCREEN_SILEAD is not set
-# CONFIG_TOUCHSCREEN_SIS_I2C is not set
+CONFIG_TOUCHSCREEN_SIS_I2C=m
 # CONFIG_TOUCHSCREEN_ST1232 is not set
 # CONFIG_TOUCHSCREEN_STMFTS is not set
 # CONFIG_TOUCHSCREEN_SUN4I is not set
@@ -4584,6 +4614,7 @@ CONFIG_FB_ARMCLCD=y
 # CONFIG_FB_CYBER2000 is not set
 # CONFIG_FB_ASILIANT is not set
 # CONFIG_FB_IMSTT is not set
+# CONFIG_FB_UVESA is not set
 # CONFIG_FB_EFI is not set
 # CONFIG_FB_OPENCORES is not set
 # CONFIG_FB_S1D13XXX is not set
@@ -5463,6 +5494,7 @@ CONFIG_USB_CONFIGFS_F_MIDI=y
 CONFIG_USB_CONFIGFS_F_HID=y
 CONFIG_USB_CONFIGFS_F_UVC=y
 CONFIG_USB_CONFIGFS_F_PRINTER=y
+# CONFIG_USB_CONFIGFS_F_TCM is not set
 
 #
 # USB Gadget precomposed configurations
@@ -5479,6 +5511,7 @@ CONFIG_USB_FUNCTIONFS_ETH=y
 CONFIG_USB_FUNCTIONFS_RNDIS=y
 CONFIG_USB_FUNCTIONFS_GENERIC=y
 CONFIG_USB_MASS_STORAGE=m
+# CONFIG_USB_GADGET_TARGET is not set
 CONFIG_USB_G_SERIAL=m
 CONFIG_USB_MIDI_GADGET=m
 CONFIG_USB_G_PRINTER=m
@@ -5875,6 +5908,7 @@ CONFIG_VIRTIO_MMIO=y
 # CONFIG_VDPA is not set
 CONFIG_VHOST_MENU=y
 # CONFIG_VHOST_NET is not set
+# CONFIG_VHOST_SCSI is not set
 # CONFIG_VHOST_CROSS_ENDIAN_LEGACY is not set
 
 #
@@ -5899,6 +5933,7 @@ CONFIG_XEN_GRANT_DEV_ALLOC=y
 CONFIG_SWIOTLB_XEN=y
 # CONFIG_XEN_PVCALLS_FRONTEND is not set
 # CONFIG_XEN_PVCALLS_BACKEND is not set
+# CONFIG_XEN_SCSI_BACKEND is not set
 CONFIG_XEN_PRIVCMD=y
 CONFIG_XEN_EFI=y
 CONFIG_XEN_AUTO_XLATE=y
@@ -7955,6 +7990,7 @@ CONFIG_DEBUG_MEMORY_INIT=y
 CONFIG_HAVE_ARCH_KASAN=y
 CONFIG_HAVE_ARCH_KASAN_SW_TAGS=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_KASAN_STACK=1

+ 1 - 1
board/GfA/Display001/sopine/boot.cmd

@@ -1,4 +1,4 @@
-setenv bootargs console=ttyS0,115200 cma=256M drm_kms_helper.edid_firmware=GfA/GfAHDMI.bin earlyprintk root=/dev/mmcblk0p2 rootwait
+setenv bootargs console=tty1 cma=256M drm_kms_helper.edid_firmware=GfA/GfAHDMI.bin earlyprintk root=/dev/mmcblk0p2 rootwait
 
 fatload mmc 0 $kernel_addr_r Image
 fatload mmc 0 $fdt_addr_r SOPINEA64.dtb

+ 442 - 0
configs/SOPINEA64_L50_Qt5.15_WRK_defconfig

@@ -0,0 +1,442 @@
+BR2_aarch64=y
+BR2_ARM_FPU_VFPV4=y
+BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_5_8=y
+BR2_TOOLCHAIN_BUILDROOT_CXX=y
+BR2_PACKAGE_HOST_GDB=y
+BR2_PACKAGE_HOST_GDB_TUI=y
+BR2_PACKAGE_HOST_GDB_PYTHON3=y
+BR2_TOOLCHAIN_GLIBC_GCONV_LIBS_COPY=y
+BR2_DL_DIR="~/buildroot_dl_A64"
+BR2_HOST_DIR="/opt/GfA/TC_A64_L58_C1130_QT515"
+BR2_TARGET_GENERIC_HOSTNAME="GfA"
+BR2_TARGET_GENERIC_ISSUE="Welcome to GfA Display001"
+BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_EUDEV=y
+BR2_ROOTFS_DEVICE_TABLE="system/device_table.txt ../GfA/board/GfA/Display001/device_table.txt"
+BR2_TARGET_GENERIC_ROOT_PASSWD="root"
+BR2_TARGET_GENERIC_GETTY_PORT="ttyO0"
+BR2_TARGET_GENERIC_GETTY_BAUDRATE_115200=y
+# BR2_ENABLE_LOCALE_PURGE is not set
+BR2_GENERATE_LOCALE="en_US en_GB de_DE de_AT de_CH fr_FR it_IT es_ES sv_FI sv_SE nb_NO nn_NO se_NO da_DK zh_CN"
+BR2_TARGET_LOCALTIME="Europe/Vienna"
+BR2_ROOTFS_POST_BUILD_SCRIPT="../GfA/board/GfA/Display001/post-build_4.4.sh"
+BR2_ROOTFS_POST_IMAGE_SCRIPT="support/scripts/genimage.sh"
+BR2_ROOTFS_POST_SCRIPT_ARGS="-c ../GfA/board/GfA/Display001/sopine/genimage.cfg"
+BR2_LINUX_KERNEL=y
+BR2_LINUX_KERNEL_CUSTOM_VERSION=y
+BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="5.8.7"
+BR2_LINUX_KERNEL_PATCH="../GfA/board/GfA/Display001/Linux-5.8"
+BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y
+BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="../GfA/board/GfA/Display001/SOPINEA64_defconfig"
+BR2_LINUX_KERNEL_DTS_SUPPORT=y
+BR2_LINUX_KERNEL_CUSTOM_DTS_PATH="../GfA/board/GfA/Display001/DTS_5.0/SOPINEA64.dts"
+BR2_LINUX_KERNEL_NEEDS_HOST_OPENSSL=y
+BR2_PACKAGE_BUSYBOX_CONFIG="../GfA/board/GfA/Display001/busybox.config"
+BR2_PACKAGE_BUSYBOX_SHOW_OTHERS=y
+BR2_PACKAGE_ALSA_UTILS=y
+BR2_PACKAGE_ALSA_UTILS_ALSACONF=y
+BR2_PACKAGE_ALSA_UTILS_ACONNECT=y
+# BR2_PACKAGE_ALSA_UTILS_ALSACTL is not set
+BR2_PACKAGE_ALSA_UTILS_APLAY=y
+BR2_PACKAGE_ALSA_UTILS_SPEAKER_TEST=y
+BR2_PACKAGE_BLUEZ_ALSA=y
+BR2_PACKAGE_BLUEZ_ALSA_HCITOP=y
+BR2_PACKAGE_BLUEZ_ALSA_RFCOMM=y
+BR2_PACKAGE_FFMPEG_GPL=y
+BR2_PACKAGE_FFMPEG_NONFREE=y
+BR2_PACKAGE_FFMPEG_FFPLAY=y
+BR2_PACKAGE_FFMPEG_FFPROBE=y
+BR2_PACKAGE_FFMPEG_AVRESAMPLE=y
+BR2_PACKAGE_FFMPEG_POSTPROC=y
+BR2_PACKAGE_GSTREAMER1=y
+BR2_PACKAGE_GST1_PLUGINS_GOOD=y
+BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_RTP=y
+BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_RTPMANAGER=y
+BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_RTSP=y
+BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_SMPTE=y
+BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_UDP=y
+BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_VIDEOBOX=y
+BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_VIDEOCROP=y
+BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_Y4M=y
+BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_V4L2=y
+BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_V4L2_PROBE=y
+BR2_PACKAGE_GST1_PLUGINS_BAD=y
+BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_OPENH264=y
+BR2_PACKAGE_MPV=y
+BR2_PACKAGE_PULSEAUDIO=y
+BR2_PACKAGE_WAVPACK=y
+BR2_PACKAGE_GZIP=y
+BR2_PACKAGE_LZIP=y
+BR2_PACKAGE_LZOP=y
+BR2_PACKAGE_P7ZIP=y
+BR2_PACKAGE_UNRAR=y
+BR2_PACKAGE_UNZIP=y
+BR2_PACKAGE_ZIP=y
+BR2_PACKAGE_GDB=y
+BR2_PACKAGE_GDB_SERVER=y
+BR2_PACKAGE_GDB_DEBUGGER=y
+BR2_PACKAGE_GDB_TUI=y
+BR2_PACKAGE_STRACE=y
+BR2_PACKAGE_BINUTILS=y
+BR2_PACKAGE_BINUTILS_TARGET=y
+BR2_PACKAGE_CMAKE_CTEST=y
+BR2_PACKAGE_GETTEXT=y
+BR2_PACKAGE_GIT=y
+BR2_PACKAGE_MAKE=y
+BR2_PACKAGE_PATCH=y
+BR2_PACKAGE_SED=y
+BR2_PACKAGE_TREE=y
+BR2_PACKAGE_CIFS_UTILS=y
+BR2_PACKAGE_DOSFSTOOLS=y
+BR2_PACKAGE_DOSFSTOOLS_FATLABEL=y
+BR2_PACKAGE_DOSFSTOOLS_FSCK_FAT=y
+BR2_PACKAGE_DOSFSTOOLS_MKFS_FAT=y
+BR2_PACKAGE_E2FSPROGS=y
+BR2_PACKAGE_E2FSPROGS_DEBUGFS=y
+BR2_PACKAGE_E2FSPROGS_RESIZE2FS=y
+BR2_PACKAGE_EXFAT=y
+BR2_PACKAGE_EXFAT_UTILS=y
+BR2_PACKAGE_F2FS_TOOLS=y
+BR2_PACKAGE_FLASHBENCH=y
+BR2_PACKAGE_MMC_UTILS=y
+BR2_PACKAGE_MTD=y
+BR2_PACKAGE_MTD_MKFSUBIFS=y
+BR2_PACKAGE_MTD_MTDPART=y
+BR2_PACKAGE_DEJAVU=y
+BR2_PACKAGE_FONT_AWESOME=y
+BR2_PACKAGE_MESA3D_DEMOS=y
+BR2_PACKAGE_FB_TEST_APP=y
+BR2_PACKAGE_FBTERM=y
+BR2_PACKAGE_FBV=y
+BR2_PACKAGE_MESA3D=y
+BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_LIMA=y
+BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_PANFROST=y
+BR2_PACKAGE_MESA3D_OPENGL_EGL=y
+BR2_PACKAGE_MESA3D_OPENGL_ES=y
+BR2_PACKAGE_PSPLASH=y
+BR2_PACKAGE_SDL=y
+BR2_PACKAGE_SDL_GFX=y
+BR2_PACKAGE_SDL_IMAGE=y
+BR2_PACKAGE_SDL_MIXER=y
+BR2_PACKAGE_SDL_MIXER_MIDI_TIMIDITY=y
+BR2_PACKAGE_SDL_NET=y
+BR2_PACKAGE_SDL_SOUND=y
+BR2_PACKAGE_SDL_SOUND_PLAYSOUND=y
+BR2_PACKAGE_SDL_TTF=y
+BR2_PACKAGE_SDL2_KMSDRM=y
+BR2_PACKAGE_SDL2_OPENGLES=y
+BR2_PACKAGE_SDL2_GFX=y
+BR2_PACKAGE_SDL2_IMAGE=y
+BR2_PACKAGE_SDL2_MIXER=y
+BR2_PACKAGE_SDL2_NET=y
+BR2_PACKAGE_SDL2_TTF=y
+BR2_PACKAGE_QT5=y
+BR2_PACKAGE_QT5BASE_MYSQL=y
+BR2_PACKAGE_QT5BASE_SQLITE_SYSTEM=y
+BR2_PACKAGE_QT5BASE_EGLFS=y
+BR2_PACKAGE_QT5BASE_FONTCONFIG=y
+BR2_PACKAGE_QT5BASE_HARFBUZZ=y
+BR2_PACKAGE_QT5BASE_GIF=y
+BR2_PACKAGE_QT5BASE_JPEG=y
+BR2_PACKAGE_QT5BASE_PNG=y
+BR2_PACKAGE_QT5BASE_ICU=y
+BR2_PACKAGE_QT5CHARTS=y
+BR2_PACKAGE_QT5COAP=y
+BR2_PACKAGE_QT5CONNECTIVITY=y
+BR2_PACKAGE_QT5ENGINIO=y
+BR2_PACKAGE_QT5GRAPHICALEFFECTS=y
+BR2_PACKAGE_QT5IMAGEFORMATS=y
+BR2_PACKAGE_QT5MQTT=y
+BR2_PACKAGE_QT5QUICKCONTROLS=y
+BR2_PACKAGE_QT5QUICKCONTROLS2=y
+BR2_PACKAGE_QT5QUICKTIMELINE=y
+BR2_PACKAGE_QT5SCRIPT=y
+BR2_PACKAGE_QT5SCXML=y
+BR2_PACKAGE_QT5SENSORS=y
+BR2_PACKAGE_QT5SERIALBUS=y
+BR2_PACKAGE_QT5WAYLAND=y
+BR2_PACKAGE_QT5WAYLAND_COMPOSITOR=y
+BR2_PACKAGE_QT5XMLPATTERNS=y
+BR2_PACKAGE_QJSON=y
+BR2_PACKAGE_QWT=y
+BR2_PACKAGE_QWT_SVG=y
+BR2_PACKAGE_QWT_MATHML=y
+BR2_PACKAGE_QWT_OPENGL=y
+BR2_PACKAGE_SIMPLE_MAIL=y
+BR2_PACKAGE_WESTON=y
+BR2_PACKAGE_WESTON_RDP=y
+BR2_PACKAGE_WESTON_WAYLAND=y
+BR2_PACKAGE_WESTON_DEMO_CLIENTS=y
+BR2_PACKAGE_XORG7=y
+BR2_PACKAGE_LINUX_FIRMWARE=y
+BR2_PACKAGE_LINUX_FIRMWARE_IBT=y
+BR2_PACKAGE_LINUX_FIRMWARE_ATHEROS_6002=y
+BR2_PACKAGE_LINUX_FIRMWARE_ATHEROS_6003=y
+BR2_PACKAGE_LINUX_FIRMWARE_ATHEROS_6004=y
+BR2_PACKAGE_LINUX_FIRMWARE_ATHEROS_7010=y
+BR2_PACKAGE_LINUX_FIRMWARE_ATHEROS_9170=y
+BR2_PACKAGE_LINUX_FIRMWARE_ATHEROS_9271=y
+BR2_PACKAGE_LINUX_FIRMWARE_BRCM_BCM43XX=y
+BR2_PACKAGE_LINUX_FIRMWARE_BRCM_BCM43XXX=y
+BR2_PACKAGE_LINUX_FIRMWARE_IWLWIFI_3160=y
+BR2_PACKAGE_LINUX_FIRMWARE_IWLWIFI_3168=y
+BR2_PACKAGE_LINUX_FIRMWARE_IWLWIFI_5000=y
+BR2_PACKAGE_LINUX_FIRMWARE_IWLWIFI_6000G2A=y
+BR2_PACKAGE_LINUX_FIRMWARE_IWLWIFI_6000G2B=y
+BR2_PACKAGE_LINUX_FIRMWARE_IWLWIFI_7260=y
+BR2_PACKAGE_LINUX_FIRMWARE_IWLWIFI_7265D=y
+BR2_PACKAGE_LINUX_FIRMWARE_IWLWIFI_8000C=y
+BR2_PACKAGE_LINUX_FIRMWARE_IWLWIFI_8265=y
+BR2_PACKAGE_LINUX_FIRMWARE_LIBERTAS_SD8686_V8=y
+BR2_PACKAGE_LINUX_FIRMWARE_LIBERTAS_SD8686_V9=y
+BR2_PACKAGE_LINUX_FIRMWARE_LIBERTAS_SD8688=y
+BR2_PACKAGE_LINUX_FIRMWARE_MWIFIEX_SD8787=y
+BR2_PACKAGE_LINUX_FIRMWARE_MWIFIEX_SD8797=y
+BR2_PACKAGE_LINUX_FIRMWARE_MWIFIEX_USB8797=y
+BR2_PACKAGE_LINUX_FIRMWARE_MWIFIEX_USB8801=y
+BR2_PACKAGE_LINUX_FIRMWARE_MWIFIEX_SD8887=y
+BR2_PACKAGE_LINUX_FIRMWARE_MWIFIEX_SD8897=y
+BR2_PACKAGE_LINUX_FIRMWARE_MWIFIEX_USB8897=y
+BR2_PACKAGE_LINUX_FIRMWARE_MWIFIEX_PCIE8897=y
+BR2_PACKAGE_LINUX_FIRMWARE_MEDIATEK_MT7601U=y
+BR2_PACKAGE_LINUX_FIRMWARE_RALINK_RT61=y
+BR2_PACKAGE_LINUX_FIRMWARE_RALINK_RT73=y
+BR2_PACKAGE_LINUX_FIRMWARE_RALINK_RT2XX=y
+BR2_PACKAGE_LINUX_FIRMWARE_RTL_81XX=y
+BR2_PACKAGE_LINUX_FIRMWARE_RTL_87XX=y
+BR2_PACKAGE_LINUX_FIRMWARE_RTL_88XX=y
+BR2_PACKAGE_LINUX_FIRMWARE_TI_WL127X=y
+BR2_PACKAGE_LINUX_FIRMWARE_TI_WL128X=y
+BR2_PACKAGE_LINUX_FIRMWARE_TI_WL18XX=y
+BR2_PACKAGE_LINUX_FIRMWARE_BNX2X=y
+BR2_PACKAGE_LINUX_FIRMWARE_CXGB4_T4=y
+BR2_PACKAGE_LINUX_FIRMWARE_CXGB4_T5=y
+BR2_PACKAGE_LINUX_FIRMWARE_RTL_8169=y
+BR2_PACKAGE_EDID_DECODE=y
+BR2_PACKAGE_EVTEST=y
+BR2_PACKAGE_I2C_TOOLS=y
+BR2_PACKAGE_KBD=y
+BR2_PACKAGE_LIBUIO=y
+BR2_PACKAGE_LINUXCONSOLETOOLS=y
+BR2_PACKAGE_LSUIO=y
+BR2_PACKAGE_MINICOM=y
+BR2_PACKAGE_PARTED=y
+BR2_PACKAGE_READ_EDID=y
+BR2_PACKAGE_RS485CONF=y
+BR2_PACKAGE_SISPMCTL=y
+BR2_PACKAGE_SPI_TOOLS=y
+BR2_PACKAGE_UBOOT_TOOLS=y
+BR2_PACKAGE_UBOOT_TOOLS_FIT_SUPPORT=y
+BR2_PACKAGE_UBOOT_TOOLS_FIT_SIGNATURE_SUPPORT=y
+BR2_PACKAGE_UBOOT_TOOLS_FIT_CHECK_SIGN=y
+BR2_PACKAGE_USB_MODESWITCH_DATA=y
+BR2_PACKAGE_USBMOUNT=y
+BR2_PACKAGE_USBUTILS=y
+BR2_PACKAGE_LUAJIT=y
+BR2_PACKAGE_LUAEXPAT=y
+BR2_PACKAGE_LUAFILESYSTEM=y
+BR2_PACKAGE_LUAPOSIX=y
+BR2_PACKAGE_LUASOCKET=y
+BR2_PACKAGE_TCL=y
+BR2_PACKAGE_EXPECT=y
+BR2_PACKAGE_TCLLIB=y
+BR2_PACKAGE_LIBCDIO=y
+BR2_PACKAGE_LIBMAD=y
+BR2_PACKAGE_LIBMPD=y
+BR2_PACKAGE_LIBSAMPLERATE=y
+BR2_PACKAGE_OPUS=y
+BR2_PACKAGE_TAGLIB=y
+BR2_PACKAGE_LIBZIP=y
+BR2_PACKAGE_MINIZIP=y
+BR2_PACKAGE_SNAPPY=y
+BR2_PACKAGE_SZIP=y
+BR2_PACKAGE_GNUTLS_TOOLS=y
+BR2_PACKAGE_LIBNSS=y
+BR2_PACKAGE_LIBSHA1=y
+BR2_PACKAGE_LIBSSH2=y
+BR2_PACKAGE_ORACLE_MYSQL_SERVER=y
+BR2_PACKAGE_SQLITE_NO_SYNC=y
+BR2_PACKAGE_LIBCONFIG=y
+BR2_PACKAGE_KMSXX=y
+BR2_PACKAGE_KMSXX_INSTALL_TESTS=y
+BR2_PACKAGE_LCMS2=y
+BR2_PACKAGE_LIBDRM_INSTALL_TESTS=y
+BR2_PACKAGE_LIBEPOXY=y
+BR2_PACKAGE_LIBSVG=y
+BR2_PACKAGE_WEBP=y
+BR2_PACKAGE_WEBP_DEMUX=y
+BR2_PACKAGE_WEBP_MUX=y
+BR2_PACKAGE_LIBCEC=y
+BR2_PACKAGE_LIBHID=y
+BR2_PACKAGE_LIBIIO=y
+BR2_PACKAGE_LIBQMI=y
+BR2_PACKAGE_LIBV4L=y
+BR2_PACKAGE_TSLIB=y
+BR2_PACKAGE_JANSSON=y
+BR2_PACKAGE_LIBXSLT=y
+BR2_PACKAGE_RAPIDJSON=y
+BR2_PACKAGE_TINYXML=y
+BR2_PACKAGE_LIBMPEG2=y
+BR2_PACKAGE_LIBVPX=y
+BR2_PACKAGE_LIBYUV=y
+BR2_PACKAGE_LIBCURL_CURL=y
+BR2_PACKAGE_LIBGSASL=y
+BR2_PACKAGE_LIBIDN=y
+BR2_PACKAGE_LIBIDN_BINARY=y
+BR2_PACKAGE_LIBMBUS=y
+BR2_PACKAGE_LIBMICROHTTPD=y
+BR2_PACKAGE_LIBMICROHTTPD_SSL=y
+BR2_PACKAGE_LIBMODBUS=y
+BR2_PACKAGE_LIBPJSIP=y
+BR2_PACKAGE_LIBRSYNC=y
+BR2_PACKAGE_LIBSOUP=y
+BR2_PACKAGE_LIBVNCSERVER=y
+BR2_PACKAGE_LIBVNCSERVER_TIGHTPNG=y
+BR2_PACKAGE_NEON=y
+BR2_PACKAGE_NEON_ZLIB=y
+BR2_PACKAGE_NEON_SSL=y
+BR2_PACKAGE_NEON_LIBXML2=y
+BR2_PACKAGE_NSS_PAM_LDAPD=y
+BR2_PACKAGE_NSS_PAM_LDAPD_UTILITIES=y
+BR2_PACKAGE_PAHO_MQTT_C=y
+BR2_PACKAGE_ZEROMQ=y
+BR2_PACKAGE_ZEROMQ_NORM=y
+BR2_PACKAGE_ZEROMQ_PGM=y
+BR2_PACKAGE_BOOST=y
+BR2_PACKAGE_BOOST_CONTAINER=y
+BR2_PACKAGE_BOOST_EXCEPTION=y
+BR2_PACKAGE_BOOST_GRAPH=y
+BR2_PACKAGE_BOOST_GRAPH_PARALLEL=y
+BR2_PACKAGE_BOOST_IOSTREAMS=y
+BR2_PACKAGE_BOOST_LOCALE=y
+BR2_PACKAGE_BOOST_LOG=y
+BR2_PACKAGE_BOOST_MATH=y
+BR2_PACKAGE_BOOST_MPI=y
+BR2_PACKAGE_BOOST_PROGRAM_OPTIONS=y
+BR2_PACKAGE_BOOST_RANDOM=y
+BR2_PACKAGE_BOOST_SERIALIZATION=y
+BR2_PACKAGE_BOOST_TIMER=y
+BR2_PACKAGE_BOOST_TYPE_ERASURE=y
+BR2_PACKAGE_BOOST_WAVE=y
+BR2_PACKAGE_ELFUTILS=y
+BR2_PACKAGE_FLATBUFFERS=y
+BR2_PACKAGE_LIBCROSSGUID=y
+BR2_PACKAGE_LIBPLIST=y
+BR2_PACKAGE_LIBSIGC=y
+BR2_PACKAGE_LLVM=y
+BR2_PACKAGE_POCO=y
+BR2_PACKAGE_POCO_DATA_MYSQL=y
+BR2_PACKAGE_POCO_DATA_SQLITE=y
+BR2_PACKAGE_POCO_NETSSL_OPENSSL=y
+BR2_PACKAGE_POCO_ZIP=y
+BR2_PACKAGE_PROTOBUF=y
+BR2_PACKAGE_PROTOBUF_C=y
+BR2_PACKAGE_FSTRCMP=y
+BR2_PACKAGE_NCURSES_WCHAR=y
+BR2_PACKAGE_NCURSES_TARGET_PROGS=y
+BR2_PACKAGE_RE2=y
+BR2_PACKAGE_FETCHMAIL=y
+BR2_PACKAGE_HEIRLOOM_MAILX=y
+BR2_PACKAGE_LIBESMTP=y
+BR2_PACKAGE_MSMTP=y
+BR2_PACKAGE_MUTT=y
+BR2_PACKAGE_MUTT_IMAP=y
+BR2_PACKAGE_MUTT_POP3=y
+BR2_PACKAGE_BLUEZ_TOOLS=y
+BR2_PACKAGE_BLUEZ5_UTILS_OBEX=y
+BR2_PACKAGE_BLUEZ5_UTILS_CLIENT=y
+BR2_PACKAGE_BLUEZ5_UTILS_DEPRECATED=y
+BR2_PACKAGE_BRIDGE_UTILS=y
+BR2_PACKAGE_CAN_UTILS=y
+BR2_PACKAGE_CIVETWEB=y
+BR2_PACKAGE_CONNTRACK_TOOLS=y
+BR2_PACKAGE_CRDA=y
+BR2_PACKAGE_DNSMASQ=y
+BR2_PACKAGE_ETHTOOL=y
+BR2_PACKAGE_GESFTPSERVER=y
+BR2_PACKAGE_HOSTAPD=y
+BR2_PACKAGE_HOSTAPD_EAP=y
+BR2_PACKAGE_HOSTAPD_WPS=y
+BR2_PACKAGE_HTTPING=y
+BR2_PACKAGE_HTTPING_TFO=y
+BR2_PACKAGE_IFTOP=y
+BR2_PACKAGE_IFUPDOWN=y
+BR2_PACKAGE_IPROUTE2=y
+BR2_PACKAGE_IPTABLES=y
+BR2_PACKAGE_IW=y
+BR2_PACKAGE_LRZSZ=y
+BR2_PACKAGE_MINIDLNA=y
+BR2_PACKAGE_MJPG_STREAMER=y
+BR2_PACKAGE_MOSQUITTO=y
+BR2_PACKAGE_NETPLUG=y
+BR2_PACKAGE_NTP=y
+BR2_PACKAGE_NTP_NTPDATE=y
+BR2_PACKAGE_NTP_NTPTIME=y
+BR2_PACKAGE_OPENSSH=y
+BR2_PACKAGE_OPENVPN=y
+BR2_PACKAGE_OPENVPN_SMALL=y
+BR2_PACKAGE_PPPD=y
+BR2_PACKAGE_PPPD_FILTER=y
+BR2_PACKAGE_PPPD_RADIUS=y
+BR2_PACKAGE_PPTP_LINUX=y
+BR2_PACKAGE_RSYNC=y
+BR2_PACKAGE_SER2NET=y
+BR2_PACKAGE_TFTPD=y
+BR2_PACKAGE_TINC=y
+BR2_PACKAGE_WGET=y
+BR2_PACKAGE_WIRELESS_TOOLS=y
+BR2_PACKAGE_WIRELESS_TOOLS_LIB=y
+BR2_PACKAGE_WPA_SUPPLICANT=y
+BR2_PACKAGE_WPA_SUPPLICANT_AP_SUPPORT=y
+BR2_PACKAGE_WPA_SUPPLICANT_WIFI_DISPLAY=y
+BR2_PACKAGE_WPA_SUPPLICANT_AUTOSCAN=y
+BR2_PACKAGE_WPA_SUPPLICANT_HOTSPOT=y
+BR2_PACKAGE_WPA_SUPPLICANT_DEBUG_SYSLOG=y
+BR2_PACKAGE_WPA_SUPPLICANT_WPS=y
+BR2_PACKAGE_WPA_SUPPLICANT_CLI=y
+BR2_PACKAGE_WPA_SUPPLICANT_WPA_CLIENT_SO=y
+BR2_PACKAGE_WPA_SUPPLICANT_PASSPHRASE=y
+BR2_PACKAGE_WPA_SUPPLICANT_DBUS=y
+BR2_PACKAGE_WPA_SUPPLICANT_DBUS_INTROSPECTION=y
+BR2_PACKAGE_BASH=y
+BR2_PACKAGE_SCREEN=y
+BR2_PACKAGE_SUDO=y
+BR2_PACKAGE_ATTR=y
+BR2_PACKAGE_HTOP=y
+BR2_PACKAGE_KEYUTILS=y
+BR2_PACKAGE_POLKIT=y
+BR2_PACKAGE_UTIL_LINUX_BINARIES=y
+BR2_PACKAGE_UTIL_LINUX_PARTX=y
+BR2_PACKAGE_UTIL_LINUX_SETTERM=y
+BR2_PACKAGE_UTIL_LINUX_WIPEFS=y
+BR2_PACKAGE_JOE=y
+BR2_TARGET_ROOTFS_EXT2=y
+BR2_TARGET_ROOTFS_EXT2_4=y
+BR2_TARGET_ROOTFS_EXT2_SIZE="1800M"
+BR2_TARGET_ROOTFS_TAR_GZIP=y
+BR2_TARGET_ARM_TRUSTED_FIRMWARE=y
+BR2_TARGET_ARM_TRUSTED_FIRMWARE_PLATFORM="sun50i_a64"
+BR2_TARGET_ARM_TRUSTED_FIRMWARE_BL31_UBOOT=y
+BR2_TARGET_UBOOT=y
+BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y
+BR2_TARGET_UBOOT_CUSTOM_VERSION=y
+BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2019.01"
+BR2_TARGET_UBOOT_BOARD_DEFCONFIG="sopine_baseboard"
+BR2_TARGET_UBOOT_NEEDS_DTC=y
+BR2_TARGET_UBOOT_NEEDS_PYLIBFDT=y
+BR2_TARGET_UBOOT_NEEDS_ATF_BL31=y
+BR2_TARGET_UBOOT_FORMAT_CUSTOM=y
+BR2_TARGET_UBOOT_FORMAT_CUSTOM_NAME="u-boot.itb"
+BR2_TARGET_UBOOT_SPL=y
+BR2_TARGET_UBOOT_SPL_NAME="spl/sunxi-spl.bin"
+BR2_PACKAGE_HOST_DOSFSTOOLS=y
+BR2_PACKAGE_HOST_GENIMAGE=y
+BR2_PACKAGE_HOST_MTOOLS=y
+BR2_PACKAGE_HOST_UBOOT_TOOLS=y
+BR2_PACKAGE_HOST_UBOOT_TOOLS_BOOT_SCRIPT=y
+BR2_PACKAGE_HOST_UBOOT_TOOLS_BOOT_SCRIPT_SOURCE="../GfA/board/GfA/Display001/sopine/boot.cmd"
+# BR2_PACKAGE_LIBGFAIPC is not set
+# BR2_PACKAGE_LIBGFATIMER is not set
+BR2_PACKAGE_GFANET=y
+BR2_PACKAGE_DRVGFASPI=y
+BR2_PACKAGE_GFASPISTUB=y
+BR2_PACKAGE_LIBULFIUS=y

+ 169 - 0
package/drvgfaspi/0001-kernel-4-14.patch

@@ -0,0 +1,169 @@
+diff --git a/drvmain.c b/drvmain.c
+index 337b175..9ac1688 100644
+--- a/drvmain.c
++++ b/drvmain.c
+@@ -91,8 +91,14 @@ static void _SetTimerRunning(bool bRunning)
+ 
+ /////////////////////////////////////////////////////////////////////////////
+ 
+-static void _WorkScheduler(unsigned long ptr)
++
++#if LINUX_VERSION_CODE < KERNEL_VERSION(4,14,0)
++void _WorkScheduler(unsigned long ptr)
++ {
++#else
++void _WorkScheduler(struct timer_list *ptr)
+ {
++#endif
+ 	static unsigned int nPass = 0;
+ 	static WorkerState ws = WS_SysFs;
+ 
+@@ -322,7 +328,7 @@ static void _FwUploadWorkProc(struct work_struct *work)
+ 
+ 				if(i && !(i % 64))
+ 				{
+-					KALERT("%s: %zu Blocks sent.\n", __FUNCTION__, i);
++					KALERT("%s: %d Blocks sent.\n", __FUNCTION__, i);
+ 				}
+ 
+ //				ksync_sleep_jiffies(1);
+@@ -344,7 +350,7 @@ static void _FwUploadWorkProc(struct work_struct *work)
+ //				ksync_sleep_jiffies(1);
+ 			}
+ 
+-			KALERT("%s: %zu Blocks sent.\n", __FUNCTION__, i);
++			KALERT("%s: %d Blocks sent.\n", __FUNCTION__, i);
+ 			ksync_sleep_jiffies(_SLEEP_DELAY_JIFFIES);
+ 
+ 			/////////////////////////////////////////////////////////////////
+@@ -813,11 +819,16 @@ static int drv_init(void)
+ 
+ 		/////////////////////////////////////////////////////////////////////
+ 
+-		init_timer(&g_timer_list);
+-		g_timer_list.function = _WorkScheduler;
+-		g_timer_list.data = 0;
+-		g_timer_list.expires = _TIMER_INTERVAL;
+-		add_timer(&g_timer_list);
++#if LINUX_VERSION_CODE < KERNEL_VERSION(4,14,0)
++                init_timer(&g_timer_list);
++                g_timer_list.function = _WorkScheduler;
++                g_timer_list.data = 0;
++                g_timer_list.expires = _TIMER_INTERVAL;
++                add_timer(&g_timer_list);
++#else
++               g_timer_list.expires = _TIMER_INTERVAL;
++               timer_setup(&g_timer_list, _WorkScheduler, 0);
++#endif
+ 		_SetTimerRunning(true);
+ 
+ 		/////////////////////////////////////////////////////////////////////
+diff --git a/kfile.c b/kfile.c
+index 5a42c59..7a9d549 100644
+--- a/kfile.c
++++ b/kfile.c
+@@ -1,3 +1,4 @@
++#include <linux/version.h>
+ #include <linux/kernel.h>    // printk()
+ #include <linux/syscalls.h>
+ #include "defines.h"
+@@ -32,7 +33,13 @@ struct file* kf_open(const char *path, int flags, int rights)
+     int err = 0;
+ 
+     oldfs = get_fs();
++    
++#if LINUX_VERSION_CODE < KERNEL_VERSION(4,14,0)
+     set_fs(get_ds());
++#else
++    set_fs(KERNEL_DS);
++#endif
++    
+     pf = filp_open(path, flags, rights);
+     set_fs(oldfs);
+ 
+@@ -82,9 +89,18 @@ int kf_read(struct file *pf, unsigned long long offset, unsigned char *data, uns
+ 	mm_segment_t oldfs;
+ 
+ 	oldfs = get_fs();
++	
++#if LINUX_VERSION_CODE < KERNEL_VERSION(4,14,0)
+ 	set_fs(get_ds());
++#else
++	set_fs(KERNEL_DS);
++#endif
+ 
+-	ret = vfs_read(pf, data, size, &offset);
++#if LINUX_VERSION_CODE < KERNEL_VERSION(4,14,0)
++        ret = vfs_read(pf, data, size, &offset);
++#else
++        ret = kernel_read(pf, data, size, &offset);
++#endif
+ 
+ 	set_fs(oldfs);
+ 	return ret;
+@@ -98,9 +114,19 @@ int kf_write(struct file *pf, unsigned long long offset, unsigned char *data, un
+ 	mm_segment_t oldfs;
+ 
+ 	oldfs = get_fs();
++
++#if LINUX_VERSION_CODE < KERNEL_VERSION(4,14,0)
+ 	set_fs(get_ds());
++#else
++	set_fs(KERNEL_DS);
++#endif
++
+ 
+-	ret = vfs_write(pf, data, size, &offset);
++#if LINUX_VERSION_CODE < KERNEL_VERSION(4,14,0)
++        ret = vfs_write(pf, data, size, &offset);
++#else
++        ret = kernel_write(pf, data, size, &offset);
++#endif
+ 
+ 	set_fs(oldfs);
+ 	return ret;
+@@ -114,7 +140,11 @@ long kf_ioctl(struct file *pf, unsigned int cmd, unsigned long arg)
+ 	mm_segment_t oldfs;
+ 
+ 	oldfs = get_fs();
++#if LINUX_VERSION_CODE < KERNEL_VERSION(4,14,0)
+ 	set_fs(get_ds());
++#else
++	set_fs(KERNEL_DS);
++#endif
+ 
+ 	ret = _vfs_ioctl(pf, cmd, arg);
+ 
+diff --git a/kfirmware.c b/kfirmware.c
+index 8aa168b..3844f02 100644
+--- a/kfirmware.c
++++ b/kfirmware.c
+@@ -165,7 +165,7 @@ int KfwOnDataDropped(const void *pData, size_t nCbData, LPKFW_DROP_CTX pdc)
+ 		if(nCbData == pdc->pkih->nImgLength)
+ 		{
+ 			dwCRC32 = _CalcImgCRC32(pData, pdc->pkih);
+-			KALERT("%s: DataLen: %zu, ImgLen: %zu\n", __FUNCTION__, nCbData, pdc->pkih->nImgLength);
++			KALERT("%s: DataLen: %zu, ImgLen: %d\n", __FUNCTION__, nCbData, pdc->pkih->nImgLength);
+ 			KALERT("%s: DataCRC: %08X, ImgCRC: %08X\n", __FUNCTION__, dwCRC32, pdc->pkih->nImgCRC32);
+ 			
+ 			if(pdc->pkih->nImgCRC32 != dwCRC32)
+diff --git a/timeconv.c b/timeconv.c
+index 7d718b5..c333397 100644
+--- a/timeconv.c
++++ b/timeconv.c
+@@ -31,6 +31,7 @@
+ #include <linux/time.h>
+ #include <linux/module.h>
+ 
++#if LINUX_VERSION_CODE < KERNEL_VERSION(4,14,0)
+ s64 div_s64_rem(s64 dividend, s32 divisor, s32 *remainder)
+ {
+     u64 quotient;
+@@ -47,6 +48,7 @@ s64 div_s64_rem(s64 dividend, s32 divisor, s32 *remainder)
+     }
+     return quotient;
+ }
++#endif
+ /*
+  * Nonzero if YEAR is a leap year (every 4 years,
+  * except every 100th isn't, and every 400th is).

+ 12 - 0
package/drvgfaspi/0002-kernel-4-14.patch

@@ -0,0 +1,12 @@
+diff --git a/timeconv.c b/timeconv.c
+index c333397..ad707c7 100644
+--- a/timeconv.c
++++ b/timeconv.c
+@@ -28,6 +28,7 @@
+  *   Moved from glibc-2.6 to kernel by Zhaolei<zhaolei@cn.fujitsu.com>
+  */
+ 
++#include <linux/version.h>
+ #include <linux/time.h>
+ #include <linux/module.h>
+ 

+ 1 - 1
package/drvgfaspi/drvgfaspi.mk

@@ -4,7 +4,7 @@
 #
 ################################################################################
 
-DRVGFASPI_VERSION = 2021.10.12
+DRVGFASPI_VERSION = 2022.04.25
 DRVGFASPI_SITE = https://gogs.reru.org/GfA/drvgfaspi.git
 DRVGFASPI_SITE_METHOD = git
 

+ 12 - 0
package/gfasysinfo/0001-cmath-include.patch

@@ -0,0 +1,12 @@
+diff --git a/gfasysinfo/src/procfile.cpp b/gfasysinfo/src/procfile.cpp
+index 1f7fb88..8f375c9 100644
+--- a/gfasysinfo/src/procfile.cpp
++++ b/gfasysinfo/src/procfile.cpp
+@@ -4,6 +4,7 @@
+ #include <fstream>
+ #include <sstream>
+ #include <regex>
++#include <cmath>
+ #include "procfile.h"
+ 
+ /////////////////////////////////////////////////////////////////////////////

+ 0 - 46
patches/0106-libmodbus-GfA.patch

@@ -1,46 +0,0 @@
-diff --git a/package/libmodbus/Config.in b/package/libmodbus/Config.in
-index 642b57c..ccf1190 100644
---- a/package/libmodbus/Config.in
-+++ b/package/libmodbus/Config.in
-@@ -1,8 +1,8 @@
- config BR2_PACKAGE_LIBMODBUS
- 	bool "libmodbus"
- 	help
--	  libmodbus is a free software library to send/receive data
--	  according to the Modbus protocol. This library is written in C
--	  and supports RTU (serial) and TCP (Ethernet) communications.
-+	  libmodbus is a free software library to send/receive data according
-+	  to the Modbus protocol. This library is written in C and supports
-+	  RTU (serial) and TCP (Ethernet) communications.
- 
- 	  http://libmodbus.org
-diff --git a/package/libmodbus/libmodbus.hash b/package/libmodbus/libmodbus.hash
-deleted file mode 100644
-index 2931f3f..0000000
---- a/package/libmodbus/libmodbus.hash
-+++ /dev/null
-@@ -1,3 +0,0 @@
--# Locally computed
--sha256  d7d9fa94a16edb094e5fdf5d87ae17a0dc3f3e3d687fead81835d9572cf87c16  libmodbus-3.1.6.tar.gz
--sha256  dc626520dcd53a22f727af3ee42c770e56c97a64fe3adb063799d8ab032fe551  COPYING.LESSER
-diff --git a/package/libmodbus/libmodbus.mk b/package/libmodbus/libmodbus.mk
-index 584ac75..13b9b26 100644
---- a/package/libmodbus/libmodbus.mk
-+++ b/package/libmodbus/libmodbus.mk
-@@ -4,11 +4,12 @@
- #
- ################################################################################
- 
--LIBMODBUS_VERSION = 3.1.6
--LIBMODBUS_SITE = http://libmodbus.org/releases
--LIBMODBUS_LICENSE = LGPL-2.1+
-+LIBMODBUS_VERSION = GfATest
-+LIBMODBUS_SITE = https://gogs.reru.org/GfA/libmodbus.git
-+LIBMODBUS_SITE_METHOD = git
-+LIBMODBUS_LICENSE = LGPLv2.1+
- LIBMODBUS_LICENSE_FILES = COPYING.LESSER
-+LIBMODBUS_AUTORECONF = YES
- LIBMODBUS_INSTALL_STAGING = YES
--LIBMODBUS_CONF_OPTS = --without-documentation --disable-tests
- 
- $(eval $(autotools-package))

+ 0 - 19
patches/0109-qt5webengine_add_dependencies.patch

@@ -1,19 +0,0 @@
-diff --git a/package/qt5/qt5webengine/qt5webengine.mk b/package/qt5/qt5webengine/qt5webengine.mk
-index 64c9c96..cd6c2d9 100644
---- a/package/qt5/qt5webengine/qt5webengine.mk
-+++ b/package/qt5/qt5webengine/qt5webengine.mk
-@@ -29,6 +29,14 @@ endif
- 
- QT5WEBENGINE_DEPENDENCIES += host-libpng host-libnss libnss
- 
-+ifeq ($(BR2_PACKAGE_QT5BASE_FONTCONFIG),y)
-+       QT5WEBENGINE_DEPENDENCIES += host-freetype
-+endif
-+
-+ifeq ($(BR2_PACKAGE_QT5BASE_JPEG),y)
-+       QT5WEBENGINE_DEPENDENCIES += host-libjpeg
-+endif
-+
- QT5WEBENGINE_CONF_OPTS += WEBENGINE_CONFIG+=use_system_ffmpeg
- 
- ifeq ($(BR2_PACKAGE_QT5WEBENGINE_PROPRIETARY_CODECS),y)