Ver código fonte

Merge branch 'CR_8007_Merge_3repo_to_1repo_Andy.hu' into 'jh7110-master'

CR_8007: Merge 3repo to 1repo and use one branch

See merge request sdk/buildroot!146
andy.hu 6 meses atrás
pai
commit
41161633ed
69 arquivos alterados com 1051 adições e 162 exclusões
  1. 0 2
      README.md
  2. 19 0
      package/alsa-lib/0004-setting-hdmi-output-as-alsa-default.patch
  3. 38 0
      package/bluez5_utils-headers/0001-bluez5_utils-fix-the-compiler-issue-for-gcc-12.2.0.patch
  4. 1 1
      package/bluez5_utils-headers/bluez5_utils-headers.mk
  5. 38 0
      package/bluez5_utils/0001-bluez5_utils-fix-the-compiler-issue-for-gcc-12.2.0.patch
  6. 0 33
      package/bluez5_utils/0001-tools-mesh-cfgtest-include-limits.h.patch
  7. 29 66
      package/bluez5_utils/Config.in
  8. 1 2
      package/bluez5_utils/bluez5_utils.hash
  9. 3 49
      package/bluez5_utils/bluez5_utils.mk
  10. 1 0
      package/hostapd/hostapd.mk
  11. 33 0
      package/libnspr/0001-Bug-1765100-fix-build-on-mips-musl-libc.patch
  12. 2 2
      package/libnspr/libnspr.hash
  13. 1 1
      package/libnspr/libnspr.mk
  14. 1 2
      package/linux-firmware/linux-firmware.mk
  15. 1 1
      package/qt5/Config.in
  16. 2 2
      package/qt5/qt5base/qt5base.mk
  17. 1 1
      package/qt5/qt5webengine/Config.in
  18. 96 0
      package/qt5/qt5webkit/0010-add-riscv-support.patch
  19. 122 0
      package/qt5/qt5webkit/0011-fix-the-compile-gobject-issue.patch
  20. 25 0
      package/qt5/qt5webkit/0012-Fix-the-qt5webkit-example-compile-issue.patch
  21. 3 0
      package/starfive/Config.in
  22. 5 0
      package/starfive/hifi4-sof/Config.in
  23. 32 0
      package/starfive/hifi4-sof/hifi4-sof.mk
  24. 6 0
      package/starfive/qt_test/Config.in
  25. 15 0
      package/starfive/qt_test/qt_test.mk
  26. 11 0
      package/starfive/qt_test/src/main.cpp
  27. 21 0
      package/starfive/qt_test/src/mainwindow.cpp
  28. 25 0
      package/starfive/qt_test/src/mainwindow.h
  29. 95 0
      package/starfive/qt_test/src/mainwindow.ui
  30. 31 0
      package/starfive/qt_test/src/qt_test.pro
  31. 46 0
      package/starfive/starfive-firmware/Config.in
  32. BIN
      package/starfive/starfive-firmware/ECR6600U-usb-wifi/ECR6600U_transport.bin
  33. 30 0
      package/starfive/starfive-firmware/aic8800-usb-wifi/aic8800/aic_userconfig.txt
  34. BIN
      package/starfive/starfive-firmware/aic8800-usb-wifi/aic8800/fmacfw.bin
  35. BIN
      package/starfive/starfive-firmware/aic8800-usb-wifi/aic8800/fmacfw_m2d.bin
  36. BIN
      package/starfive/starfive-firmware/aic8800-usb-wifi/aic8800/fmacfw_no_msg_ep.bin
  37. BIN
      package/starfive/starfive-firmware/aic8800-usb-wifi/aic8800/fmacfw_no_msg_ep_rf.bin
  38. BIN
      package/starfive/starfive-firmware/aic8800-usb-wifi/aic8800/fmacfw_rf.bin
  39. BIN
      package/starfive/starfive-firmware/aic8800-usb-wifi/aic8800/fw_adid.bin
  40. BIN
      package/starfive/starfive-firmware/aic8800-usb-wifi/aic8800/fw_adid_rf.bin
  41. BIN
      package/starfive/starfive-firmware/aic8800-usb-wifi/aic8800/fw_adid_u03.bin
  42. BIN
      package/starfive/starfive-firmware/aic8800-usb-wifi/aic8800/fw_ble_scan.bin
  43. BIN
      package/starfive/starfive-firmware/aic8800-usb-wifi/aic8800/fw_patch.bin
  44. BIN
      package/starfive/starfive-firmware/aic8800-usb-wifi/aic8800/fw_patch_rf.bin
  45. BIN
      package/starfive/starfive-firmware/aic8800-usb-wifi/aic8800/fw_patch_table.bin
  46. BIN
      package/starfive/starfive-firmware/aic8800-usb-wifi/aic8800/fw_patch_table_u03.bin
  47. BIN
      package/starfive/starfive-firmware/aic8800-usb-wifi/aic8800/fw_patch_u03.bin
  48. BIN
      package/starfive/starfive-firmware/aic8800-usb-wifi/aic8800/m2d_ota.bin
  49. 60 0
      package/starfive/starfive-firmware/aic8800-usb-wifi/aic8800DC/aic_userconfig_8800dc.txt
  50. BIN
      package/starfive/starfive-firmware/aic8800-usb-wifi/aic8800DC/fmacfw_patch_8800dc.bin
  51. BIN
      package/starfive/starfive-firmware/aic8800-usb-wifi/aic8800DC/fmacfw_patch_8800dc_ipc.bin
  52. BIN
      package/starfive/starfive-firmware/aic8800-usb-wifi/aic8800DC/fmacfw_patch_8800dc_ipc_u02.bin
  53. BIN
      package/starfive/starfive-firmware/aic8800-usb-wifi/aic8800DC/fmacfw_patch_8800dc_u02.bin
  54. BIN
      package/starfive/starfive-firmware/aic8800-usb-wifi/aic8800DC/fmacfw_patch_tbl_8800dc_ipc_u02.bin
  55. BIN
      package/starfive/starfive-firmware/aic8800-usb-wifi/aic8800DC/fmacfw_patch_tbl_8800dc_u02.bin
  56. BIN
      package/starfive/starfive-firmware/aic8800-usb-wifi/aic8800DC/fmacfw_rf_patch_8800dc.bin
  57. BIN
      package/starfive/starfive-firmware/aic8800-usb-wifi/aic8800DC/fw_patch_8800dc.bin
  58. BIN
      package/starfive/starfive-firmware/aic8800-usb-wifi/aic8800DC/fw_patch_8800dc_u02.bin
  59. BIN
      package/starfive/starfive-firmware/aic8800-usb-wifi/aic8800DC/fw_patch_table_8800dc.bin
  60. BIN
      package/starfive/starfive-firmware/aic8800-usb-wifi/aic8800DC/fw_patch_table_8800dc_u02.bin
  61. BIN
      package/starfive/starfive-firmware/aic8800-usb-wifi/aic8800DC/lmacfw_rf_8800dc.bin
  62. BIN
      package/starfive/starfive-firmware/ap6256-bluetooth/BCM4345C5.hcd
  63. 41 0
      package/starfive/starfive-firmware/ap6256-bluetooth/S36ap6256-bluetooth
  64. BIN
      package/starfive/starfive-firmware/ap6256-sdio-wifi/fw_bcm43456c5_ag.bin
  65. 142 0
      package/starfive/starfive-firmware/ap6256-sdio-wifi/nvram_ap6256.txt
  66. BIN
      package/starfive/starfive-firmware/rtl8852bu-bluetooth/rtl8852bu_config
  67. BIN
      package/starfive/starfive-firmware/rtl8852bu-bluetooth/rtl8852bu_fw
  68. 63 0
      package/starfive/starfive-firmware/starfive-firmware.mk
  69. 11 0
      system/skeleton/init

+ 0 - 2
README.md

@@ -1,2 +0,0 @@
-# sft-riscvpi-buildroot
-

+ 19 - 0
package/alsa-lib/0004-setting-hdmi-output-as-alsa-default.patch

@@ -0,0 +1,19 @@
+Setting card:1 device:0 as alsa default config for DevKit.
+
+Signed-off-by: Leo Lu <leo.lu@starfivetech.com>
+
+
+diff -purN a/src/conf/alsa.conf b/src/conf/alsa.conf
+--- a/src/conf/alsa.conf	2021-06-14 18:28:44.000000000 +0800
++++ b/src/conf/alsa.conf	2023-04-20 16:17:08.532675092 +0800
+@@ -102,8 +102,8 @@ defaults.namehint.basic on
+ # show extended name hints
+ defaults.namehint.extended off
+ #
+-defaults.ctl.card 0
+-defaults.pcm.card 0
++defaults.ctl.card 1
++defaults.pcm.card 1
+ defaults.pcm.device 0
+ defaults.pcm.subdevice -1
+ defaults.pcm.nonblock 1

+ 38 - 0
package/bluez5_utils-headers/0001-bluez5_utils-fix-the-compiler-issue-for-gcc-12.2.0.patch

@@ -0,0 +1,38 @@
+From 5f74b142f1bcb8003d6e84f71c7b958818756f3c Mon Sep 17 00:00:00 2001
+From: Andy Hu <andy.hu@starfivetech.com>
+Date: Fri, 19 May 2023 23:30:56 +0800
+Subject: [PATCH] bluez5_utils: fix the compiler issue for gcc 12.2.0
+
+fix the conflicting types for 'pause'; have '_Bool(void *)'
+which had defined in /usr/include/unistd.h is 'int pause (void)'
+
+Signed-off-by: Andy Hu <andy.hu@starfivetech.com>
+---
+ profiles/audio/media.c | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/profiles/audio/media.c b/profiles/audio/media.c
+index 02bf82a..0892532 100644
+--- a/profiles/audio/media.c
++++ b/profiles/audio/media.c
+@@ -1280,7 +1280,7 @@ static bool stop(void *user_data)
+ 	return media_player_send(mp, "Stop");
+ }
+ 
+-static bool pause(void *user_data)
++static bool func_pause(void *user_data)
+ {
+ 	struct media_player *mp = user_data;
+ 
+@@ -1330,7 +1330,7 @@ static struct avrcp_player_cb player_cb = {
+ 	.set_volume = set_volume,
+ 	.play = play,
+ 	.stop = stop,
+-	.pause = pause,
++	.pause = func_pause,
+ 	.next = next,
+ 	.previous = previous,
+ };
+-- 
+2.34.1
+

+ 1 - 1
package/bluez5_utils-headers/bluez5_utils-headers.mk

@@ -5,7 +5,7 @@
 ################################################################################
 
 # Keep the version and patches in sync with bluez5_utils
-BLUEZ5_UTILS_HEADERS_VERSION = 5.62
+BLUEZ5_UTILS_HEADERS_VERSION = 5.55
 BLUEZ5_UTILS_HEADERS_SOURCE = bluez-$(BLUEZ5_UTILS_VERSION).tar.xz
 BLUEZ5_UTILS_HEADERS_SITE = $(BR2_KERNEL_MIRROR)/linux/bluetooth
 BLUEZ5_UTILS_HEADERS_DL_SUBDIR = bluez5_utils

+ 38 - 0
package/bluez5_utils/0001-bluez5_utils-fix-the-compiler-issue-for-gcc-12.2.0.patch

@@ -0,0 +1,38 @@
+From 5f74b142f1bcb8003d6e84f71c7b958818756f3c Mon Sep 17 00:00:00 2001
+From: Andy Hu <andy.hu@starfivetech.com>
+Date: Fri, 19 May 2023 23:30:56 +0800
+Subject: [PATCH] bluez5_utils: fix the compiler issue for gcc 12.2.0
+
+fix the conflicting types for 'pause'; have '_Bool(void *)'
+which had defined in /usr/include/unistd.h is 'int pause (void)'
+
+Signed-off-by: Andy Hu <andy.hu@starfivetech.com>
+---
+ profiles/audio/media.c | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/profiles/audio/media.c b/profiles/audio/media.c
+index 02bf82a..0892532 100644
+--- a/profiles/audio/media.c
++++ b/profiles/audio/media.c
+@@ -1280,7 +1280,7 @@ static bool stop(void *user_data)
+ 	return media_player_send(mp, "Stop");
+ }
+ 
+-static bool pause(void *user_data)
++static bool func_pause(void *user_data)
+ {
+ 	struct media_player *mp = user_data;
+ 
+@@ -1330,7 +1330,7 @@ static struct avrcp_player_cb player_cb = {
+ 	.set_volume = set_volume,
+ 	.play = play,
+ 	.stop = stop,
+-	.pause = pause,
++	.pause = func_pause,
+ 	.next = next,
+ 	.previous = previous,
+ };
+-- 
+2.34.1
+

+ 0 - 33
package/bluez5_utils/0001-tools-mesh-cfgtest-include-limits.h.patch

@@ -1,33 +0,0 @@
-From 5158827fded7cb4daf550a5956aff0c74f6c38fc Mon Sep 17 00:00:00 2001
-From: Michael Nosthoff <bluez@heine.tech>
-Date: Thu, 22 Jul 2021 21:36:13 +0200
-Subject: [PATCH BlueZ] tools/mesh-cfgtest: include limits.h
-
-mesh-cfgtest.c uses PATH_MAX so it should include limits.h.
-
-fixes compilation error when enabling mesh support with musl-based
-toolchains observed in buildroot autobuilders.
-
-http://autobuild.buildroot.net/results/20cc47f54de0b0d4bdf108c3715c590ae8ab476f/
-http://autobuild.buildroot.net/results/003968b25906579dbcf5a95d1e43fec0ab504ef5/
-
-Signed-off-by: Michael Nosthoff <buildroot@heine.tech>
----
- tools/mesh-cfgtest.c | 1 +
- 1 file changed, 1 insertion(+)
-
-diff --git a/tools/mesh-cfgtest.c b/tools/mesh-cfgtest.c
-index fa0474faa..116ab7f16 100644
---- a/tools/mesh-cfgtest.c
-+++ b/tools/mesh-cfgtest.c
-@@ -21,6 +21,7 @@
- #include <ftw.h>
- #include <getopt.h>
- #include <libgen.h>
-+#include <limits.h>
- #include <signal.h>
- #include <stdio.h>
- #include <time.h>
--- 
-2.32.0
-

+ 29 - 66
package/bluez5_utils/Config.in

@@ -1,5 +1,5 @@
 config BR2_PACKAGE_BLUEZ5_UTILS
-	bool "bluez-utils"
+	bool "bluez-utils 5.x"
 	depends on BR2_USE_WCHAR # libglib2
 	depends on BR2_TOOLCHAIN_HAS_THREADS # dbus, libglib2
 	depends on BR2_USE_MMU # dbus
@@ -9,12 +9,17 @@ config BR2_PACKAGE_BLUEZ5_UTILS
 	select BR2_PACKAGE_DBUS
 	select BR2_PACKAGE_LIBGLIB2
 	help
-	  BlueZ utils
+	  bluez utils version 5.x
 
-	  Provides Stack, Library and Tooling for Bluetooth Classic
-	  and Bluetooth LE.
+	  With this release BlueZ only supports the new Bluetooth
+	  Management kernel interface (introduced in Linux 3.4).
 
-	  BlueZ utils will use systemd and/or udev if enabled.
+	  For Low Energy support at least kernel version 3.5 is
+	  needed.
+
+	  The API is not backward compatible with BlueZ 4.
+
+	  Bluez utils will use systemd and/or udev if enabled.
 
 	  http://www.bluez.org
 	  http://www.kernel.org/pub/linux/bluetooth
@@ -26,7 +31,7 @@ config BR2_PACKAGE_BLUEZ5_UTILS_OBEX
 	depends on BR2_INSTALL_LIBSTDCPP
 	select BR2_PACKAGE_LIBICAL
 	help
-	  Enable OBEX support.
+	  Enable the OBEX support in Bluez 5.x.
 
 comment "OBEX support needs a toolchain w/ C++"
 	depends on !BR2_INSTALL_LIBSTDCPP
@@ -35,117 +40,75 @@ config BR2_PACKAGE_BLUEZ5_UTILS_CLIENT
 	bool "build CLI client"
 	select BR2_PACKAGE_READLINE
 	help
-	  Build the command line client "bluetoothctl".
-
-config BR2_PACKAGE_BLUEZ5_UTILS_MONITOR
-	bool "build monitor utility"
-	help
-	  Build monitor utility btmon.
-
-config BR2_PACKAGE_BLUEZ5_UTILS_TOOLS
-	bool "build tools"
-	help
-	  Build tools like bluemoon, btattach, hex2hcd, l2test,
-	  l2ping, mpris-proxy, rctest.
+	  Enable the Bluez 5.x command line client.
 
 config BR2_PACKAGE_BLUEZ5_UTILS_DEPRECATED
-	bool "install deprecated tools"
-	depends on BR2_PACKAGE_BLUEZ5_UTILS_CLIENT || BR2_PACKAGE_BLUEZ5_UTILS_TOOLS
+	bool "install deprecated tool"
+	depends on BR2_PACKAGE_BLUEZ5_UTILS_CLIENT
 	help
-	  Build deprecated tools.
-
-	  When "build tools" is selected these tools are installed:
+	  Build BlueZ 5.x deprecated tools. These currently include:
 	  hciattach, hciconfig, hcitool, hcidump, rfcomm, sdptool,
-	  ciptool.
-
-	  When CLI client is enabled "gatttool" is installed.
+	  ciptool, gatttool.
 
 config BR2_PACKAGE_BLUEZ5_UTILS_EXPERIMENTAL
-	bool "build experimental tools"
+	bool "build experimental obexd plugin"
 	help
-	  Build experimental tools. This is currently only the
-	  "Nokia OBEX PC Suite tool". So, only if OBEX support is
-	  enabled this option has an effect.
-
-config BR2_PACKAGE_BLUEZ5_UTILS_PLUGINS_AUDIO
-	bool "build audio plugins (a2dp and avrcp)"
-	help
-	  Build plugins for audio profiles (for A2DP and AVRCP).
+	  Build BlueZ 5.x experimental Nokia OBEX PC Suite plugin
 
 config BR2_PACKAGE_BLUEZ5_UTILS_PLUGINS_HEALTH
 	bool "build health plugin"
 	help
-	  Build plugin for health profiles.
-
-config BR2_PACKAGE_BLUEZ5_UTILS_PLUGINS_HID
-	bool "build hid plugin"
-	select BR2_PACKAGE_BLUEZ5_UTILS_PLUGINS_HOG
-	help
-	  Build plugin for HID (input) profiles.
-
-config BR2_PACKAGE_BLUEZ5_UTILS_PLUGINS_HOG
-	bool "build hog plugin"
-	help
-	  Build plugin for HoG (input) profiles.
+	  Build BlueZ 5.x health plugin
 
 config BR2_PACKAGE_BLUEZ5_UTILS_PLUGINS_MESH
-	bool "build mesh plugin"
+	bool "build mesh profile"
 	depends on BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_12 # ell
 	select BR2_PACKAGE_ELL
 	select BR2_PACKAGE_JSON_C
 	select BR2_PACKAGE_READLINE
 	help
-	  Build plugin for Mesh support.
+	  Build BlueZ 5.x mesh plugin
 
 comment "mesh profile needs a toolchain w/ headers >= 4.12"
 	depends on !BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_12
 
 config BR2_PACKAGE_BLUEZ5_UTILS_PLUGINS_MIDI
-	bool "build midi plugin"
+	bool "build midi profile"
 	select BR2_PACKAGE_ALSA_LIB
 	select BR2_PACKAGE_ALSA_LIB_SEQ
 	help
-	  Build MIDI support via ALSA sequencer.
-
-config BR2_PACKAGE_BLUEZ5_UTILS_PLUGINS_NETWORK
-	bool "build network plugin"
-	default y
-	help
-	  Build plugin for PANU, NAP, GN profiles.
+	  Build BlueZ 5.x midi plugin
 
 config BR2_PACKAGE_BLUEZ5_UTILS_PLUGINS_NFC
 	bool "build nfc plugin"
 	help
-	  Build plugin for NFC pairing.
+	  Build BlueZ 5.x nfc plugin
 
 config BR2_PACKAGE_BLUEZ5_UTILS_PLUGINS_SAP
 	bool "build sap plugin"
 	help
-	  Build plugin for SAP profile.
+	  Build BlueZ 5.x sap plugin
 
 config BR2_PACKAGE_BLUEZ5_UTILS_PLUGINS_SIXAXIS
 	bool "build sixaxis plugin"
 	depends on BR2_PACKAGE_HAS_UDEV
-	select BR2_PACKAGE_BLUEZ5_UTILS_PLUGINS_HID # runtime
 	help
-	  Build sixaxis plugin (support Sony Dualshock
+	  Build BlueZ 5.x sixaxis plugin (support Sony Dualshock
 	  controller)
 
 comment "sixaxis plugin needs udev /dev management"
 	depends on !BR2_PACKAGE_HAS_UDEV
 
 config BR2_PACKAGE_BLUEZ5_UTILS_TEST
-	bool "install test scripts"
+	bool "build tests"
 	help
-	  Install the python test scripts from the "test" directory.
+	  Build BlueZ 5.x tests
 
 config BR2_PACKAGE_BLUEZ5_UTILS_TOOLS_HID2HCI
 	bool "build hid2hci tool"
 	depends on BR2_PACKAGE_HAS_UDEV
-	select BR2_PACKAGE_BLUEZ5_UTILS_PLUGINS_HID # runtime
-	select BR2_PACKAGE_BLUEZ5_UTILS_TOOLS
 	help
-	  Build hid2hci tool
+	  Build BlueZ 5.x hid2hci tool
 
 comment "hid2hci tool needs udev /dev management"
 	depends on !BR2_PACKAGE_HAS_UDEV

+ 1 - 2
package/bluez5_utils/bluez5_utils.hash

@@ -1,5 +1,4 @@
 # From https://www.kernel.org/pub/linux/bluetooth/sha256sums.asc:
-sha256  38090a5b750e17fc08d3e52178ed8d3254c5f4bd2c48830d5c1955b88e3bc0c2  bluez-5.62.tar.xz
-# Locally computed
+sha256  8863717113c4897e2ad3271fc808ea245319e6fd95eed2e934fae8e0894e9b88  bluez-5.55.tar.xz
 sha256  b499eddebda05a8859e32b820a64577d91f1de2b52efa2a1575a2cb4000bc259  COPYING
 sha256  ec60b993835e2c6b79e6d9226345f4e614e686eb57dc13b6420c15a33a8996e5  COPYING.LIB

+ 3 - 49
package/bluez5_utils/bluez5_utils.mk

@@ -5,14 +5,12 @@
 ################################################################################
 
 # Keep the version and patches in sync with bluez5_utils-headers
-BLUEZ5_UTILS_VERSION = 5.62
+BLUEZ5_UTILS_VERSION = 5.55
 BLUEZ5_UTILS_SOURCE = bluez-$(BLUEZ5_UTILS_VERSION).tar.xz
 BLUEZ5_UTILS_SITE = $(BR2_KERNEL_MIRROR)/linux/bluetooth
 BLUEZ5_UTILS_INSTALL_STAGING = YES
 BLUEZ5_UTILS_LICENSE = GPL-2.0+, LGPL-2.1+
 BLUEZ5_UTILS_LICENSE_FILES = COPYING COPYING.LIB
-BLUEZ5_UTILS_CPE_ID_VENDOR = bluez
-BLUEZ5_UTILS_CPE_ID_PRODUCT = bluez
 
 BLUEZ5_UTILS_DEPENDENCIES = \
 	$(if $(BR2_PACKAGE_BLUEZ5_UTILS_HEADERS),bluez5_utils-headers) \
@@ -20,9 +18,9 @@ BLUEZ5_UTILS_DEPENDENCIES = \
 	libglib2
 
 BLUEZ5_UTILS_CONF_OPTS = \
+	--enable-tools \
 	--enable-library \
 	--disable-cups \
-	--disable-manpages \
 	--with-dbusconfdir=/etc
 
 ifeq ($(BR2_PACKAGE_BLUEZ5_UTILS_OBEX),y)
@@ -39,18 +37,6 @@ else
 BLUEZ5_UTILS_CONF_OPTS += --disable-client
 endif
 
-ifeq ($(BR2_PACKAGE_BLUEZ5_UTILS_MONITOR),y)
-BLUEZ5_UTILS_CONF_OPTS += --enable-monitor
-else
-BLUEZ5_UTILS_CONF_OPTS += --disable-monitor
-endif
-
-ifeq ($(BR2_PACKAGE_BLUEZ5_UTILS_TOOLS),y)
-BLUEZ5_UTILS_CONF_OPTS += --enable-tools
-else
-BLUEZ5_UTILS_CONF_OPTS += --disable-tools
-endif
-
 # experimental plugins
 ifeq ($(BR2_PACKAGE_BLUEZ5_UTILS_EXPERIMENTAL),y)
 BLUEZ5_UTILS_CONF_OPTS += --enable-experimental
@@ -58,13 +44,6 @@ else
 BLUEZ5_UTILS_CONF_OPTS += --disable-experimental
 endif
 
-# enable audio plugins (a2dp and avrcp)
-ifeq ($(BR2_PACKAGE_BLUEZ5_UTILS_PLUGINS_AUDIO),y)
-BLUEZ5_UTILS_CONF_OPTS += --enable-a2dp --enable-avrcp
-else
-BLUEZ5_UTILS_CONF_OPTS += --disable-a2dp --disable-avrcp
-endif
-
 # enable health plugin
 ifeq ($(BR2_PACKAGE_BLUEZ5_UTILS_PLUGINS_HEALTH),y)
 BLUEZ5_UTILS_CONF_OPTS += --enable-health
@@ -72,20 +51,6 @@ else
 BLUEZ5_UTILS_CONF_OPTS += --disable-health
 endif
 
-# enable hid plugin
-ifeq ($(BR2_PACKAGE_BLUEZ5_UTILS_PLUGINS_HID),y)
-BLUEZ5_UTILS_CONF_OPTS += --enable-hid
-else
-BLUEZ5_UTILS_CONF_OPTS += --disable-hid
-endif
-
-# enable hog plugin
-ifeq ($(BR2_PACKAGE_BLUEZ5_UTILS_PLUGINS_HOG),y)
-BLUEZ5_UTILS_CONF_OPTS += --enable-hog
-else
-BLUEZ5_UTILS_CONF_OPTS += --disable-hog
-endif
-
 # enable mesh profile
 ifeq ($(BR2_PACKAGE_BLUEZ5_UTILS_PLUGINS_MESH),y)
 BLUEZ5_UTILS_CONF_OPTS += --enable-external-ell --enable-mesh
@@ -102,13 +67,6 @@ else
 BLUEZ5_UTILS_CONF_OPTS += --disable-midi
 endif
 
-# enable network plugin
-ifeq ($(BR2_PACKAGE_BLUEZ5_UTILS_PLUGINS_NETWORK),y)
-BLUEZ5_UTILS_CONF_OPTS += --enable-network
-else
-BLUEZ5_UTILS_CONF_OPTS += --disable-network
-endif
-
 # enable nfc plugin
 ifeq ($(BR2_PACKAGE_BLUEZ5_UTILS_PLUGINS_NFC),y)
 BLUEZ5_UTILS_CONF_OPTS += --enable-nfc
@@ -130,16 +88,12 @@ else
 BLUEZ5_UTILS_CONF_OPTS += --disable-sixaxis
 endif
 
-ifeq ($(BR2_PACKAGE_BLUEZ5_UTILS_DEPRECATED),y)
 # install gatttool (For some reason upstream choose not to do it by default)
-# gattool depends on the client for readline
-ifeq ($(BR2_PACKAGE_BLUEZ5_UTILS_CLIENT),y)
+ifeq ($(BR2_PACKAGE_BLUEZ5_UTILS_DEPRECATED),y)
 define BLUEZ5_UTILS_INSTALL_GATTTOOL
 	$(INSTALL) -D -m 0755 $(@D)/attrib/gatttool $(TARGET_DIR)/usr/bin/gatttool
 endef
 BLUEZ5_UTILS_POST_INSTALL_TARGET_HOOKS += BLUEZ5_UTILS_INSTALL_GATTTOOL
-endif
-
 # hciattach_bcm43xx defines default firmware path in `/etc/firmware`, but
 # Broadcom firmware blobs are usually located in `/lib/firmware`.
 BLUEZ5_UTILS_CONF_ENV += \

+ 1 - 0
package/hostapd/hostapd.mk

@@ -74,6 +74,7 @@ HOSTAPD_CONFIG_ENABLE += \
 	CONFIG_IEEE80211AC \
 	CONFIG_IEEE80211N \
 	CONFIG_IEEE80211R \
+	CONFIG_IEEE80211AX \
 	CONFIG_INTERWORKING
 endif
 

+ 33 - 0
package/libnspr/0001-Bug-1765100-fix-build-on-mips-musl-libc.patch

@@ -0,0 +1,33 @@
+From 00e5b818f2d9f3264107801fc2fcff33a9355a78 Mon Sep 17 00:00:00 2001
+From: Giulio Benetti <giulio.benetti@benettiengineering.com>
+Date: Sun, 17 Apr 2022 23:55:26 +0200
+Subject: [PATCH] Bug 1765100 - fix build on mips+musl libc
+
+This patch fix build failure on mips with musl libc by using Linux
+<asm/sgidefs.h> instead of the one provided by libc since musl doesn't
+provide <sgidefs.h>.
+
+Signed-off-by: Giulio Benetti <giulio.benetti@benettiengineering.com>
+---
+This patch is pending upstream:
+https://bugzilla.mozilla.org/show_bug.cgi?id=1765100
+---
+ nspr/pr/include/md/_linux.cfg | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/nspr/pr/include/md/_linux.cfg b/pr/include/md/_linux.cfg
+index 23b160fd..dbc0d40e 100644
+--- a/nspr/pr/include/md/_linux.cfg
++++ b/nspr/pr/include/md/_linux.cfg
+@@ -499,7 +499,7 @@
+ #elif defined(__mips__)
+ 
+ /* For _ABI64 */
+-#include <sgidefs.h>
++#include <asm/sgidefs.h>
+ 
+ #ifdef __MIPSEB__
+ #define IS_BIG_ENDIAN 1
+-- 
+2.25.1
+

+ 2 - 2
package/libnspr/libnspr.hash

@@ -1,4 +1,4 @@
-# From https://ftp.mozilla.org/pub/nspr/releases/v4.32/src/SHA256SUMS
-sha256  bb6bf4f534b9559cf123dcdc6f9cd8167de950314a90a88b2a329c16836e7f6c  nspr-4.32.tar.gz
+# From https://ftp.mozilla.org/pub/nspr/releases/v4.34/src/SHA256SUMS
+sha256  beef011cd15d8f40794984d17014366513cec5719bf1a78f5e8a3e3a1cebf99c  nspr-4.34.tar.gz
 # Locally calculated
 sha256  fab3dd6bdab226f1c08630b1dd917e11fcb4ec5e1e020e2c16f83a0a13863e85  nspr/LICENSE

+ 1 - 1
package/libnspr/libnspr.mk

@@ -4,7 +4,7 @@
 #
 ################################################################################
 
-LIBNSPR_VERSION = 4.32
+LIBNSPR_VERSION = 4.34
 LIBNSPR_SOURCE = nspr-$(LIBNSPR_VERSION).tar.gz
 LIBNSPR_SITE = https://ftp.mozilla.org/pub/mozilla.org/nspr/releases/v$(LIBNSPR_VERSION)/src
 LIBNSPR_SUBDIR = nspr

+ 1 - 2
package/linux-firmware/linux-firmware.mk

@@ -82,8 +82,7 @@ LINUX_FIRMWARE_FILES += \
 	rtl_bt/rtl8821c_config.bin rtl_bt/rtl8821c_fw.bin \
 	rtl_bt/rtl8822b_config.bin rtl_bt/rtl8822b_fw.bin \
 	rtl_bt/rtl8822cs_config.bin rtl_bt/rtl8822cs_fw.bin \
-	rtl_bt/rtl8822cu_config.bin rtl_bt/rtl8822cu_fw.bin \
-	rtl_bt/rtl8852bu_config.bin rtl_bt/rtl8852bu_fw.bin
+	rtl_bt/rtl8822cu_config.bin rtl_bt/rtl8822cu_fw.bin
 LINUX_FIRMWARE_ALL_LICENSE_FILES += LICENCE.rtlwifi_firmware.txt
 endif
 

+ 1 - 1
package/qt5/Config.in

@@ -7,7 +7,7 @@ config BR2_PACKAGE_QT5_JSCORE_AVAILABLE
 	bool
 	default y
 	# Javascript engine is only available on certain architectures
-	depends on BR2_arm || BR2_aarch64 || BR2_i386 || BR2_x86_64 || BR2_mipsel
+	depends on BR2_arm || BR2_aarch64 || BR2_i386 || BR2_x86_64 || BR2_mipsel || BR2_riscv
 	# ARM needs BLX, so v5t+
 	depends on !BR2_ARM_CPU_ARMV4
 

+ 2 - 2
package/qt5/qt5base/qt5base.mk

@@ -232,8 +232,8 @@ QT5BASE_DEPENDENCIES   += $(if $(BR2_PACKAGE_QT5BASE_ICU),icu)
 QT5BASE_CONFIGURE_OPTS += $(if $(BR2_PACKAGE_QT5BASE_EXAMPLES),-make,-nomake) examples
 
 ifeq ($(BR2_PACKAGE_LIBINPUT),y)
-QT5BASE_CONFIGURE_OPTS += -libinput
-QT5BASE_DEPENDENCIES += libinput
+QT5BASE_CONFIGURE_OPTS += -libinput -xkbcommon
+QT5BASE_DEPENDENCIES += libinput libxkbcommon
 else
 QT5BASE_CONFIGURE_OPTS += -no-libinput
 endif

+ 1 - 1
package/qt5/qt5webengine/Config.in

@@ -2,7 +2,7 @@ config BR2_PACKAGE_QT5WEBENGINE_ARCH_SUPPORTS
 	bool
 	default y if BR2_aarch64 || BR2_arm || \
 		BR2_i386 || BR2_x86_64 || \
-		BR2_mips || BR2_mips64
+		BR2_mips || BR2_mips64 || BR2_riscv
 	# -m32 flag is used for 32bit builds and host tools have
 	# limited architecture support
 	depends on BR2_HOSTARCH = "x86_64" || BR2_HOSTARCH = "x86"

+ 96 - 0
package/qt5/qt5webkit/0010-add-riscv-support.patch

@@ -0,0 +1,96 @@
+From ec4c0b5e652ce1080c72e9f527af6c586925ba6f Mon Sep 17 00:00:00 2001
+From: Andy Hu <andy.hu@starfivetech.com>
+Date: Wed, 12 Jul 2023 12:29:11 +0800
+Subject: [PATCH 1/2] add riscv support
+
+---
+ Source/JavaScriptCore/CMakeLists.txt |  1 +
+ Source/WTF/wtf/Platform.h            | 12 ++++++++++--
+ Source/WTF/wtf/dtoa/utils.h          |  6 +++---
+ 3 files changed, 14 insertions(+), 5 deletions(-)
+ mode change 100644 => 100755 Source/JavaScriptCore/CMakeLists.txt
+ mode change 100644 => 100755 Source/WTF/wtf/Platform.h
+ mode change 100644 => 100755 Source/WTF/wtf/dtoa/utils.h
+
+diff --git a/Source/JavaScriptCore/CMakeLists.txt b/Source/JavaScriptCore/CMakeLists.txt
+old mode 100644
+new mode 100755
+index 73917eb5..479b7d3c
+--- a/Source/JavaScriptCore/CMakeLists.txt
++++ b/Source/JavaScriptCore/CMakeLists.txt
+@@ -535,6 +535,7 @@ if (WTF_CPU_ARM)
+ 
+         list(APPEND JavaScriptCore_SOURCES ${DERIVED_SOURCES_DIR}/GeneratedJITStubs.obj)
+     endif ()
++elseif (WTF_CPU_RISCV64)
+ elseif (WTF_CPU_MIPS)
+ elseif (WTF_CPU_X86)
+ elseif (WTF_CPU_X86_64)
+diff --git a/Source/WTF/wtf/Platform.h b/Source/WTF/wtf/Platform.h
+old mode 100644
+new mode 100755
+index 9cf65684..e3956824
+--- a/Source/WTF/wtf/Platform.h
++++ b/Source/WTF/wtf/Platform.h
+@@ -357,7 +357,14 @@
+ #endif
+ #endif
+ 
+-#if CPU(ARM) || CPU(MIPS) || CPU(SH4) || CPU(SPARC) || CPU(MIPS64)
++#if defined(__riscv)
++#define WTF_CPU_RISCV 1
++#if __riscv_xlen == 64
++#define WTF_CPU_RISCV64 1
++#endif
++#endif
++
++#if CPU(ARM) || CPU(MIPS) || CPU(SH4) || CPU(SPARC) || CPU(MIPS64) || CPU(RISCV)
+ #define WTF_CPU_NEEDS_ALIGNED_ACCESS 1
+ #endif
+ 
+@@ -761,7 +768,8 @@
+     || CPU(S390X) \
+     || CPU(AARCH64) \
+     || CPU(MIPS64) \
+-    || CPU(PPC64)
++    || CPU(PPC64) \
++    || CPU(RISCV64)
+ #define WTF_USE_JSVALUE64 1
+ #else
+ #define WTF_USE_JSVALUE32_64 1
+diff --git a/Source/WTF/wtf/dtoa/utils.h b/Source/WTF/wtf/dtoa/utils.h
+old mode 100644
+new mode 100755
+index 298bf4d9..07032773
+--- a/Source/WTF/wtf/dtoa/utils.h
++++ b/Source/WTF/wtf/dtoa/utils.h
+@@ -49,7 +49,7 @@
+ defined(__ARMEL__) || \
+ defined(_MIPS_ARCH_MIPS32R2)
+ #define DOUBLE_CONVERSION_CORRECT_DOUBLE_OPERATIONS 1
+-#elif CPU(MIPS) || CPU(PPC) || CPU(PPC64) || OS(WINCE) || CPU(SH4) || CPU(S390) || CPU(S390X) || CPU(IA64) || CPU(SPARC) || CPU(ALPHA) || CPU(MIPS64) || CPU(AARCH64) || CPU(HPPA)
++#elif CPU(MIPS) || CPU(PPC) || CPU(PPC64) || OS(WINCE) || CPU(SH4) || CPU(S390) || CPU(S390X) || CPU(IA64) || CPU(SPARC) || CPU(ALPHA) || CPU(MIPS64) || CPU(AARCH64) || CPU(HPPA) || CPU(RISCV)
+ #define DOUBLE_CONVERSION_CORRECT_DOUBLE_OPERATIONS 1
+ #elif defined(_M_IX86) || defined(__i386__)
+ #if defined(_WIN32)
+@@ -151,7 +151,7 @@ namespace double_conversion {
+         // spanning from and including 'from', to but not including 'to'.
+         BufferReference<T> SubBufferReference(int from, int to) {
+             ASSERT(to <= length_);
+-            ASSERT(from < to);
++            ASSERT_WITH_SECURITY_IMPLICATION(from < to);
+             ASSERT(0 <= from);
+             return BufferReference<T>(start() + from, to - from);
+         }
+@@ -292,7 +292,7 @@ namespace double_conversion {
+     inline Dest BitCast(const Source& source) {
+         // Compile time assertion: sizeof(Dest) == sizeof(Source)
+         // A compile error here means your Dest and Source have different sizes.
+-        typedef char VerifySizesAreEqual[sizeof(Dest) == sizeof(Source) ? 1 : -1];
++        static_assert(sizeof(Dest) == sizeof(Source), "Source and destination sizes must be equal");
+         
+         Dest dest;
+         memcpy(&dest, &source, sizeof(dest));
+-- 
+2.41.0
+

+ 122 - 0
package/qt5/qt5webkit/0011-fix-the-compile-gobject-issue.patch

@@ -0,0 +1,122 @@
+From 9770a62d43bce6381fe9d047146eb271be3c5ce1 Mon Sep 17 00:00:00 2001
+From: Andy Hu <andy.hu@starfivetech.com>
+Date: Wed, 12 Jul 2023 12:31:50 +0800
+Subject: [PATCH 2/2] fix the compile gobject issue
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+/space/code/visionfive_qtwebkit/work/buildroot_initramfs/host/riscv64-buildroot-linux-gnu/sysroot/usr/include/glib-2.0/glib/gmacros.h:247:24: error: expected unqualified-id before ‘typename’
+  247 | #define glib_typeof(t) typename std::remove_reference<decltype (t)>::type
+      |                        ^~~~~~~~
+/space/code/visionfive_qtwebkit/work/buildroot_initramfs/host/riscv64-buildroot-linux-gnu/sysroot/usr/include/glib-2.0/gobject/gobject.h:524:34: note: in expansion of macro ‘glib_typeof’
+  524 | #define g_object_ref_sink(Obj) ((glib_typeof (Obj)) (g_object_ref_sink) (Obj))
+      |                                  ^~~~~~~~~~~
+../WTF/wtf/gobject/GRefPtr.h:32:21: note: in expansion of macro ‘g_object_ref_sink’
+   32 | extern C gpointer g_object_ref_sink(gpointer);
+---
+ Source/WTF/wtf/dtoa/strtod.cc    | 13 ++++++++++---
+ Source/WTF/wtf/gobject/GRefPtr.h |  6 ++++--
+ include/QtWebKit/QtWebKit        |  1 +
+ 3 files changed, 15 insertions(+), 5 deletions(-)
+ mode change 100644 => 100755 Source/WTF/wtf/dtoa/strtod.cc
+
+diff --git a/Source/WTF/wtf/dtoa/strtod.cc b/Source/WTF/wtf/dtoa/strtod.cc
+old mode 100644
+new mode 100755
+index 5f63b22a..5270c3e5
+--- a/Source/WTF/wtf/dtoa/strtod.cc
++++ b/Source/WTF/wtf/dtoa/strtod.cc
+@@ -38,11 +38,13 @@
+ namespace WTF {
+ 
+ namespace double_conversion {
+-    
++
++#if defined(DOUBLE_CONVERSION_CORRECT_DOUBLE_OPERATIONS)
+     // 2^53 = 9007199254740992.
+     // Any integer with at most 15 decimal digits will hence fit into a double
+     // (which has a 53bit significand) without loss of precision.
+     static const int kMaxExactDoubleIntegerDecimalDigits = 15;
++#endif
+     // 2^64 = 18446744073709551616 > 10^19
+     static const int kMaxUint64DecimalDigits = 19;
+     
+@@ -58,7 +60,7 @@ namespace double_conversion {
+     // 2^64 = 18446744073709551616
+     static const uint64_t kMaxUint64 = UINT64_2PART_C(0xFFFFFFFF, FFFFFFFF);
+     
+-    
++#if defined(DOUBLE_CONVERSION_CORRECT_DOUBLE_OPERATIONS)
+     static const double exact_powers_of_ten[] = {
+         1.0,  // 10^0
+         10.0,
+@@ -86,6 +88,7 @@ namespace double_conversion {
+         10000000000000000000000.0
+     };
+     static const int kExactPowersOfTenSize = ARRAY_SIZE(exact_powers_of_ten);
++#endif
+     
+     // Maximum number of significant digits in the decimal representation.
+     // In fact the value is 772 (see conversions.cc), but to give us some margin
+@@ -177,6 +180,9 @@ namespace double_conversion {
+                              int exponent,
+                              double* result) {
+ #if !defined(DOUBLE_CONVERSION_CORRECT_DOUBLE_OPERATIONS)
++        UNUSED_PARAM(trimmed);
++        UNUSED_PARAM(exponent);
++        UNUSED_PARAM(result);
+         // On x86 the floating-point stack can be 64 or 80 bits wide. If it is
+         // 80 bits wide (as is the case on Linux) then double-rounding occurs and the
+         // result is not accurate.
+@@ -184,7 +190,7 @@ namespace double_conversion {
+         // Note that the ARM simulator is compiled for 32bits. It therefore exhibits
+         // the same problem.
+         return false;
+-#endif
++#else
+         if (trimmed.length() <= kMaxExactDoubleIntegerDecimalDigits) {
+             int read_digits;
+             // The trimmed input fits into a double.
+@@ -222,6 +228,7 @@ namespace double_conversion {
+             }
+         }
+         return false;
++#endif
+     }
+     
+     
+diff --git a/Source/WTF/wtf/gobject/GRefPtr.h b/Source/WTF/wtf/gobject/GRefPtr.h
+index 6c50f4da..2715df86 100644
+--- a/Source/WTF/wtf/gobject/GRefPtr.h
++++ b/Source/WTF/wtf/gobject/GRefPtr.h
+@@ -25,11 +25,13 @@
+ 
+ #if USE(GLIB)
+ 
++#include <glib-object.h>
++
+ #include <wtf/RefPtr.h>
+ #include <algorithm>
+ 
+-extern "C" void g_object_unref(gpointer);
+-extern "C" gpointer g_object_ref_sink(gpointer);
++//extern "C" void g_object_unref(gpointer);
++//extern "C" gpointer g_object_ref_sink(gpointer);
+ 
+ namespace WTF {
+ 
+diff --git a/include/QtWebKit/QtWebKit b/include/QtWebKit/QtWebKit
+index 9bc17d32..8b162a5f 100644
+--- a/include/QtWebKit/QtWebKit
++++ b/include/QtWebKit/QtWebKit
+@@ -10,5 +10,6 @@
+ #include "qwebpluginfactory.h"
+ #include "qwebsecurityorigin.h"
+ #include "qwebsettings.h"
++#include "util.h"
+ #include "qtwebkitversion.h"
+ #endif
+-- 
+2.41.0
+

+ 25 - 0
package/qt5/qt5webkit/0012-Fix-the-qt5webkit-example-compile-issue.patch

@@ -0,0 +1,25 @@
+From e86ba68cddb9bcae8c63885af810d3563907d087 Mon Sep 17 00:00:00 2001
+From: Andy Hu <andy.hu@starfivetech.com>
+Date: Wed, 12 Jul 2023 19:39:13 +0800
+Subject: [PATCH] Fix the qt5webkit-example compile issue
+
+when compile qt5webkit-example had the below issue:
+work/buildroot_initramfs/host/riscv64-buildroot-linux-gnu/sysroot/usr/include/qt5/QtWebKit/QtWebKit:13:10: fatal error: util.h: No such file or directory
+---
+ include/QtWebKit/QtWebKit | 1 -
+ 1 file changed, 1 deletion(-)
+
+diff --git a/include/QtWebKit/QtWebKit b/include/QtWebKit/QtWebKit
+index 8b162a5f..9bc17d32 100644
+--- a/include/QtWebKit/QtWebKit
++++ b/include/QtWebKit/QtWebKit
+@@ -10,6 +10,5 @@
+ #include "qwebpluginfactory.h"
+ #include "qwebsecurityorigin.h"
+ #include "qwebsettings.h"
+-#include "util.h"
+ #include "qtwebkitversion.h"
+ #endif
+-- 
+2.41.0
+

+ 3 - 0
package/starfive/Config.in

@@ -15,3 +15,6 @@ source "package/starfive/img-gpu-powervr/Config.in"
 source "package/starfive/drm_test/Config.in"
 source "package/starfive/pm/Config.in"
 source "package/starfive/v4l2_dec_test/Config.in"
+source "package/starfive/starfive-firmware/Config.in"
+source "package/starfive/qt_test/Config.in"
+source "package/starfive/hifi4-sof/Config.in"

+ 5 - 0
package/starfive/hifi4-sof/Config.in

@@ -0,0 +1,5 @@
+config BR2_PACKAGE_HIFI4_SOF
+	bool "hifi4-sof"
+	help
+	 hifi4-sof package
+

+ 32 - 0
package/starfive/hifi4-sof/hifi4-sof.mk

@@ -0,0 +1,32 @@
+# SPDX-License-Identifier: GPL-2.0
+#
+# Copyright (C) 2022 StarFive Technology Co., Ltd.
+#
+# Description: HIFI4_SOF
+#
+HIFI4_SOF_VERSION:=1.0.0
+HIFI4_SOF_SITE=$(TOPDIR)/../soft_3rdpart/HiFi4
+HIFI4_SOF_SITE_METHOD=local
+
+define HIFI4_SOF_BUILD_CMDS
+
+endef
+
+define HIFI4_SOF_CLEAN_CMDS
+
+endef
+
+define HIFI4_SOF_INSTALL_TARGET_CMDS
+	mkdir -p $(TARGET_DIR)/lib/firmware/sof
+	$(INSTALL) -m 0755 $(@D)/sof-vf2.ri $(TARGET_DIR)/lib/firmware/sof/sof-vf2.ri
+	$(INSTALL) -m 0755 $(@D)/sof-vf2-wm8960-aec.tplg $(TARGET_DIR)/lib/firmware/sof/sof-vf2-wm8960-aec.tplg
+	$(INSTALL) -m 0755 $(@D)/sof-vf2-wm8960-mixer.tplg $(TARGET_DIR)/lib/firmware/sof/sof-vf2-wm8960-mixer.tplg
+	$(INSTALL) -m 0755 $(@D)/sof-vf2-wm8960.tplg $(TARGET_DIR)/lib/firmware/sof/sof-vf2-wm8960.tplg
+endef
+
+define HIFI4_SOF_UNINSTALL_TARGET_CMDS
+
+endef
+
+$(eval $(generic-package))
+

+ 6 - 0
package/starfive/qt_test/Config.in

@@ -0,0 +1,6 @@
+comment "qt test package"
+
+config BR2_PACKAGE_QT_TEST
+	bool "qt_test"
+	help
+	  Utility for testing qt project

+ 15 - 0
package/starfive/qt_test/qt_test.mk

@@ -0,0 +1,15 @@
+################################################################################
+#
+# qttest
+#
+################################################################################
+QT_TEST_VERSION:=1.0.0
+QT_TEST_SITE=$(TOPDIR)/package/starfive/qt_test/src
+QT_TEST_SITE_METHOD=local
+QT_TEST_DEPENDENCIES = qt5base
+
+define QT_TEST_INSTALL_TARGET_CMDS
+	cd $(@D); $(TARGET_MAKE_ENV) $(MAKE) INSTALL_ROOT=$(TARGET_DIR) install
+endef
+
+$(eval $(qmake-package))

+ 11 - 0
package/starfive/qt_test/src/main.cpp

@@ -0,0 +1,11 @@
+#include "mainwindow.h"
+
+#include <QApplication>
+
+int main(int argc, char *argv[])
+{
+    QApplication a(argc, argv);
+    MainWindow w;
+    w.show();
+    return a.exec();
+}

+ 21 - 0
package/starfive/qt_test/src/mainwindow.cpp

@@ -0,0 +1,21 @@
+#include "mainwindow.h"
+#include "ui_mainwindow.h"
+#include <QMessageBox>
+
+MainWindow::MainWindow(QWidget *parent)
+    : QMainWindow(parent)
+    , ui(new Ui::MainWindow)
+{
+    ui->setupUi(this);
+}
+
+MainWindow::~MainWindow()
+{
+    delete ui;
+}
+
+void MainWindow::on_pushButton1_clicked()
+{
+    QMessageBox::information(this , "information" , "Welcome to Riscv World!",
+                QMessageBox::Ok|QMessageBox::Default );
+}

+ 25 - 0
package/starfive/qt_test/src/mainwindow.h

@@ -0,0 +1,25 @@
+#ifndef MAINWINDOW_H
+#define MAINWINDOW_H
+
+#include <QMainWindow>
+
+QT_BEGIN_NAMESPACE
+namespace Ui { class MainWindow; }
+QT_END_NAMESPACE
+
+class MainWindow : public QMainWindow
+{
+    Q_OBJECT
+
+public:
+    MainWindow(QWidget *parent = nullptr);
+    ~MainWindow();
+
+private:
+    Ui::MainWindow *ui;
+
+private slots:
+    void on_pushButton1_clicked();
+
+};
+#endif // MAINWINDOW_H

+ 95 - 0
package/starfive/qt_test/src/mainwindow.ui

@@ -0,0 +1,95 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ui version="4.0">
+ <class>MainWindow</class>
+ <widget class="QMainWindow" name="MainWindow">
+  <property name="geometry">
+   <rect>
+    <x>0</x>
+    <y>0</y>
+    <width>800</width>
+    <height>600</height>
+   </rect>
+  </property>
+  <property name="windowTitle">
+   <string>MainWindow</string>
+  </property>
+  <widget class="QWidget" name="centralwidget">
+   <widget class="QPushButton" name="pushButton1">
+    <property name="geometry">
+     <rect>
+      <x>310</x>
+      <y>220</y>
+      <width>106</width>
+      <height>30</height>
+     </rect>
+    </property>
+    <property name="text">
+     <string>PushButton</string>
+    </property>
+   </widget>
+   <widget class="QCheckBox" name="checkBox">
+    <property name="geometry">
+     <rect>
+      <x>520</x>
+      <y>220</y>
+      <width>110</width>
+      <height>27</height>
+     </rect>
+    </property>
+    <property name="text">
+     <string>CheckBox</string>
+    </property>
+   </widget>
+   <widget class="QRadioButton" name="radioButton">
+    <property name="geometry">
+     <rect>
+      <x>520</x>
+      <y>280</y>
+      <width>133</width>
+      <height>27</height>
+     </rect>
+    </property>
+    <property name="text">
+     <string>RadioButton</string>
+    </property>
+   </widget>
+  </widget>
+  <widget class="QMenuBar" name="menubar">
+   <property name="geometry">
+    <rect>
+     <x>0</x>
+     <y>0</y>
+     <width>800</width>
+     <height>26</height>
+    </rect>
+   </property>
+   <widget class="QMenu" name="menuMenu">
+    <property name="title">
+     <string>Menu</string>
+    </property>
+    <addaction name="actionLangue"/>
+   </widget>
+   <widget class="QMenu" name="menuSetting">
+    <property name="title">
+     <string>Setting</string>
+    </property>
+    <addaction name="actionAbout"/>
+   </widget>
+   <addaction name="menuMenu"/>
+   <addaction name="menuSetting"/>
+  </widget>
+  <widget class="QStatusBar" name="statusbar"/>
+  <action name="actionLangue">
+   <property name="text">
+    <string>Langue</string>
+   </property>
+  </action>
+  <action name="actionAbout">
+   <property name="text">
+    <string>About</string>
+   </property>
+  </action>
+ </widget>
+ <resources/>
+ <connections/>
+</ui>

+ 31 - 0
package/starfive/qt_test/src/qt_test.pro

@@ -0,0 +1,31 @@
+QT       += core gui
+
+greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
+
+CONFIG += c++11
+
+# The following define makes your compiler emit warnings if you use
+# any Qt feature that has been marked deprecated (the exact warnings
+# depend on your compiler). Please consult the documentation of the
+# deprecated API in order to know how to port your code away from it.
+DEFINES += QT_DEPRECATED_WARNINGS
+
+# You can also make your code fail to compile if it uses deprecated APIs.
+# In order to do so, uncomment the following line.
+# You can also select to disable deprecated APIs only up to a certain version of Qt.
+#DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x060000    # disables all the APIs deprecated before Qt 6.0.0
+
+SOURCES += \
+    main.cpp \
+    mainwindow.cpp
+
+HEADERS += \
+    mainwindow.h
+
+FORMS += \
+    mainwindow.ui
+
+# Default rules for deployment.
+qnx: target.path = /tmp/$${TARGET}/bin
+else: unix:!android: target.path = /root/bin
+!isEmpty(target.path): INSTALLS += target

+ 46 - 0
package/starfive/starfive-firmware/Config.in

@@ -0,0 +1,46 @@
+# starfive firmware packages
+
+config BR2_PACKAGE_STARFIVE_FIRMWARE
+	bool "starfive-firmware"
+	help
+	  This package provides additional various binary firmware files
+	  based on BR2_PACKAGE_LINUX_FIRMWARE (closed binary blobs) for
+	  such devices like bluetooth, wifi cards etc.
+
+if BR2_PACKAGE_STARFIVE_FIRMWARE
+
+menu "Starfive Bluetooth firmware"
+
+config BR2_PACKAGE_STARFIVE_FIRMWARE_AP6256_BLUETOOTH
+	bool "AP6256 Bluetooth"
+	help
+	  Firmware files for AP6256 Wireless bluetooth support.
+
+config BR2_PACKAGE_STARFIVE_FIRMWARE_RTL8852BU_BLUETOOTH
+        bool "RTL8852BU Bluetooth"
+        help
+          Firmware files for RTL8852BU Wireless bluetooth support.
+
+endmenu # Bluetooth
+
+
+menu "Starfive WiFi firmware"
+
+config BR2_PACKAGE_STARFIVE_FIRMWARE_AP6256_SDIO_WIFI
+	bool "AP6256 SDIO Wifi"
+	help
+	  Firmware files for the AP6256 Wifi module on SDIO.
+
+config BR2_PACKAGE_STARFIVE_FIRMWARE_ECR6600U_USB_WIFI
+	bool "ECR6600U USB Wifi"
+	help
+	  Firmware files for the ECR6600U USB Wifi module.
+
+config BR2_PACKAGE_STARFIVE_FIRMWARE_AIC8800_USB_WIFI
+	bool "AIC8800 and AIC8800DC USB Wifi"
+	help
+	  Firmware files for the AIC8800 and AIC8800DC USB Wifi module.
+
+endmenu # WiFi
+
+endif # BR2_PACKAGE_STARFIVE_FIRMWARE

BIN
package/starfive/starfive-firmware/ECR6600U-usb-wifi/ECR6600U_transport.bin


+ 30 - 0
package/starfive/starfive-firmware/aic8800-usb-wifi/aic8800/aic_userconfig.txt

@@ -0,0 +1,30 @@
+# AIC USERCONFIG 2021/0911/2127
+
+# txpwr_idx
+enable=1
+dsss=9
+ofdmlowrate_2g4=10
+ofdm64qam_2g4=10
+ofdm256qam_2g4=9
+ofdm1024qam_2g4=8
+ofdmlowrate_5g=10
+ofdm64qam_5g=9
+ofdm256qam_5g=9
+ofdm1024qam_5g=8
+
+# txpwr_ofst
+ofst_enable=0
+ofst_chan_1_4=0
+ofst_chan_5_9=0
+ofst_chan_10_13=0
+ofst_chan_36_64=0
+ofst_chan_100_120=0
+ofst_chan_122_140=0
+ofst_chan_142_165=0
+
+# xtal cap
+xtal_enable=0
+xtal_cap=24
+xtal_cap_fine=31
+
+# END

BIN
package/starfive/starfive-firmware/aic8800-usb-wifi/aic8800/fmacfw.bin


BIN
package/starfive/starfive-firmware/aic8800-usb-wifi/aic8800/fmacfw_m2d.bin


BIN
package/starfive/starfive-firmware/aic8800-usb-wifi/aic8800/fmacfw_no_msg_ep.bin


BIN
package/starfive/starfive-firmware/aic8800-usb-wifi/aic8800/fmacfw_no_msg_ep_rf.bin


BIN
package/starfive/starfive-firmware/aic8800-usb-wifi/aic8800/fmacfw_rf.bin


BIN
package/starfive/starfive-firmware/aic8800-usb-wifi/aic8800/fw_adid.bin


BIN
package/starfive/starfive-firmware/aic8800-usb-wifi/aic8800/fw_adid_rf.bin


BIN
package/starfive/starfive-firmware/aic8800-usb-wifi/aic8800/fw_adid_u03.bin


BIN
package/starfive/starfive-firmware/aic8800-usb-wifi/aic8800/fw_ble_scan.bin


BIN
package/starfive/starfive-firmware/aic8800-usb-wifi/aic8800/fw_patch.bin


BIN
package/starfive/starfive-firmware/aic8800-usb-wifi/aic8800/fw_patch_rf.bin


BIN
package/starfive/starfive-firmware/aic8800-usb-wifi/aic8800/fw_patch_table.bin


BIN
package/starfive/starfive-firmware/aic8800-usb-wifi/aic8800/fw_patch_table_u03.bin


BIN
package/starfive/starfive-firmware/aic8800-usb-wifi/aic8800/fw_patch_u03.bin


BIN
package/starfive/starfive-firmware/aic8800-usb-wifi/aic8800/m2d_ota.bin


+ 60 - 0
package/starfive/starfive-firmware/aic8800-usb-wifi/aic8800DC/aic_userconfig_8800dc.txt

@@ -0,0 +1,60 @@
+# AIC USERCONFIG 2022/0803/1707
+
+# txpwr_lvl
+enable=1
+lvl_11b_11ag_1m_2g4=20
+lvl_11b_11ag_2m_2g4=20
+lvl_11b_11ag_5m5_2g4=20
+lvl_11b_11ag_11m_2g4=20
+lvl_11b_11ag_6m_2g4=20
+lvl_11b_11ag_9m_2g4=20
+lvl_11b_11ag_12m_2g4=20
+lvl_11b_11ag_18m_2g4=20
+lvl_11b_11ag_24m_2g4=18
+lvl_11b_11ag_36m_2g4=18
+lvl_11b_11ag_48m_2g4=16
+lvl_11b_11ag_54m_2g4=16
+lvl_11n_11ac_mcs0_2g4=20
+lvl_11n_11ac_mcs1_2g4=20
+lvl_11n_11ac_mcs2_2g4=20
+lvl_11n_11ac_mcs3_2g4=20
+lvl_11n_11ac_mcs4_2g4=18
+lvl_11n_11ac_mcs5_2g4=18
+lvl_11n_11ac_mcs6_2g4=16
+lvl_11n_11ac_mcs7_2g4=16
+lvl_11n_11ac_mcs8_2g4=16
+lvl_11n_11ac_mcs9_2g4=16
+lvl_11ax_mcs0_2g4=20
+lvl_11ax_mcs1_2g4=20
+lvl_11ax_mcs2_2g4=20
+lvl_11ax_mcs3_2g4=20
+lvl_11ax_mcs4_2g4=18
+lvl_11ax_mcs5_2g4=18
+lvl_11ax_mcs6_2g4=16
+lvl_11ax_mcs7_2g4=16
+lvl_11ax_mcs8_2g4=16
+lvl_11ax_mcs9_2g4=16
+lvl_11ax_mcs10_2g4=15
+lvl_11ax_mcs11_2g4=15
+
+# txpwr_loss
+loss_enable=0
+loss_value=2
+
+# txpwr_ofst
+ofst_enable=0
+ofst_chan_1_4=0
+ofst_chan_5_9=0
+ofst_chan_10_13=0
+ofst_chan_36_64=0
+ofst_chan_100_120=0
+ofst_chan_122_140=0
+ofst_chan_142_165=0
+
+# xtal cap
+xtal_enable=0
+xtal_cap=24
+xtal_cap_fine=31
+
+
+

BIN
package/starfive/starfive-firmware/aic8800-usb-wifi/aic8800DC/fmacfw_patch_8800dc.bin


BIN
package/starfive/starfive-firmware/aic8800-usb-wifi/aic8800DC/fmacfw_patch_8800dc_ipc.bin


BIN
package/starfive/starfive-firmware/aic8800-usb-wifi/aic8800DC/fmacfw_patch_8800dc_ipc_u02.bin


BIN
package/starfive/starfive-firmware/aic8800-usb-wifi/aic8800DC/fmacfw_patch_8800dc_u02.bin


BIN
package/starfive/starfive-firmware/aic8800-usb-wifi/aic8800DC/fmacfw_patch_tbl_8800dc_ipc_u02.bin


BIN
package/starfive/starfive-firmware/aic8800-usb-wifi/aic8800DC/fmacfw_patch_tbl_8800dc_u02.bin


BIN
package/starfive/starfive-firmware/aic8800-usb-wifi/aic8800DC/fmacfw_rf_patch_8800dc.bin


BIN
package/starfive/starfive-firmware/aic8800-usb-wifi/aic8800DC/fw_patch_8800dc.bin


BIN
package/starfive/starfive-firmware/aic8800-usb-wifi/aic8800DC/fw_patch_8800dc_u02.bin


BIN
package/starfive/starfive-firmware/aic8800-usb-wifi/aic8800DC/fw_patch_table_8800dc.bin


BIN
package/starfive/starfive-firmware/aic8800-usb-wifi/aic8800DC/fw_patch_table_8800dc_u02.bin


BIN
package/starfive/starfive-firmware/aic8800-usb-wifi/aic8800DC/lmacfw_rf_8800dc.bin


BIN
package/starfive/starfive-firmware/ap6256-bluetooth/BCM4345C5.hcd


+ 41 - 0
package/starfive/starfive-firmware/ap6256-bluetooth/S36ap6256-bluetooth

@@ -0,0 +1,41 @@
+#!/bin/sh
+#
+# This shell script to loading the ap6256 bluetooth firmware
+#   and set gpio52 to reset the bluetooth hardware.
+#
+DESC="loading ap6256 bluetooth firmware and reset bluetooth"
+
+[ -e /lib/firmware/BCM4345C5.hcd ] || exit
+
+case "$1" in
+  start)
+	echo "Starting $DESC: "
+	echo 52 > /sys/class/gpio/export
+	echo out > /sys/class/gpio/gpio52/direction
+
+	echo 0 > /sys/class/gpio/gpio52/value
+	sleep 1
+	echo 1 > /sys/class/gpio/gpio52/value
+
+	brcm_patchram_plus --enable_hci --no2bytes --tosleep 200000 --baudrate 1500000 --patchram /lib/firmware/BCM4345C5.hcd /dev/ttyS1 &
+	;;
+  stop)
+	echo "Stopping $DESC: "
+	echo 0 > /sys/class/gpio/gpio52/value
+	echo 52 > /sys/class/gpio/unexport
+	killall brcm_patchram_plus
+	;;
+  restart|force-reload)
+	echo "Restarting $DESC: "
+	$0 stop
+	sleep 1
+	$0 start
+	;;
+
+  *)
+	echo "Usage: $0 {start|stop|restart|force-reload}" >&2
+	exit 1
+	;;
+esac
+
+exit 0

BIN
package/starfive/starfive-firmware/ap6256-sdio-wifi/fw_bcm43456c5_ag.bin


+ 142 - 0
package/starfive/starfive-firmware/ap6256-sdio-wifi/nvram_ap6256.txt

@@ -0,0 +1,142 @@
+#AP6256_NVRAM_V1.4_06112021
+# Cloned from bcm94345wlpagb_p2xx.txt 
+NVRAMRev=$Rev: 498373 $
+sromrev=11
+vendid=0x14e4
+devid=0x43ab
+manfid=0x2d0
+prodid=0x06e4
+macaddr=00:90:4c:c5:12:38
+nocrc=1
+boardtype=0x6e4
+boardrev=0x1304
+
+#XTAL 37.4MHz
+xtalfreq=37400
+btc_mode=1
+
+#-----------------------------------------
+#boardflags: 5GHz eTR switch by default
+#            2.4GHz eTR switch by default
+#            bit1 for btcoex
+boardflags=0x00480201
+boardflags2=0x40800000
+boardflags3=0x48200100
+phycal_tempdelta=15
+rxchain=1
+txchain=1
+aa2g=1
+aa5g=1
+tssipos5g=1
+tssipos2g=1
+femctrl=0
+AvVmid_c0=1,165,2,100,2,100,2,100,2,100
+
+pa2ga0=-154,5722,-656
+
+#1pa2ga0=-195,5558,-672
+pa2ga1=-118,4850,-635
+pa5ga0=-193,6098,-740,-192,6095,-738,-199,5996,-730,-182,6148,-741
+
+
+#3pa5ga0=-214,6002,-737,-209,6102,-746,-209,6024,-738,-200,6149,-747
+#2pa5ga0=-203,5495,-683,-205,5489,-682,-207,5494,-678,-208,5549,-683
+#1pa5ga0=-203,5495,-683,-205,5489,-682,-207,5494,-678,-185,6130,-740
+pa5ga1=-142,4930,-655,-150,4859,-646,-156,4887,-644,-158,4864,-641
+
+
+
+itrsw=1
+pdoffset2g40ma0=10
+pdoffset40ma0=0xaaaa
+pdoffset80ma0=0xaaaa
+extpagain5g=2
+extpagain2g=2
+tworangetssi2g=0
+tworangetssi5g=0
+# LTECX flags
+# WCI2
+ltecxmux=0
+ltecxpadnum=0x0504
+ltecxfnsel=0x22
+ltecxgcigpio=0x32
+
+maxp2ga0=78
+cckbw202gpo=0x5555
+cckbw20ul2gpo=0x5555
+
+ofdmlrbw202gpo=0x2244
+dot11agofdmhrbw202gpo=0x7744
+ccode=DE
+regrev=0
+
+
+mcsbw202gpo=0x98886422
+mcsbw402gpo=0x98777755
+
+maxp5ga0=75,75,75,76
+
+#5GHz_20MHz Offset
+mcsbw205glpo=0xba753311
+mcsbw205gmpo=0xba753311
+mcsbw205ghpo=0xba753311
+
+#5GHz_40MHz Offset
+mcsbw405glpo=0xe8753311
+mcsbw405gmpo=0xe8753311
+mcsbw405ghpo=0xd9753311
+
+#5GHz_80MHz Offset
+mcsbw805glpo=0xea633311
+mcsbw805gmpo=0xe7422211
+mcsbw805ghpo=0xda632211
+
+
+swctrlmap_2g=0x00000000,0x00000000,0x00000000,0x010000,0x3ff
+swctrlmap_5g=0x00100010,0x00200020,0x00200020,0x010000,0x3fe
+swctrlmapext_5g=0x00000000,0x00000000,0x00000000,0x000000,0x3
+swctrlmapext_2g=0x00000000,0x00000000,0x00000000,0x000000,0x3
+
+vcodivmode=1
+deadman_to=481500000
+ed_thresh2g=-54
+ed_thresh5g=-54
+eu_edthresh2g=-54
+eu_edthresh5g=-54
+
+#ed_thresh2g=-69
+#ed_thresh5g=-69
+#eu_edthresh2g=-69
+#eu_edthresh5g=-69
+ldo1=4
+rawtempsense=0x1ff
+cckPwrIdxCorr=3
+cckTssiDelay=150
+ofdmTssiDelay=150
+txpwr2gAdcScale=1
+txpwr5gAdcScale=1
+dot11b_opts=0x3aa85
+cbfilttype=0
+#fdsslevel_ch1=6
+#fdsslevel_ch11=4
+#btc_mode=1  
+
+muxenab=0x10
+
+cckdigfilttype=5
+
+fdss_level_2g=6
+#fdss_level_5g=6
+#pacalshift5g=0,0,1
+
+tempthresh=102
+
+
+
+
+pa2ga0_tsmc=-154,5722,-656
+pa2g40a0_tsmc=-199,6126,-732
+pa5ga0_tsmc=-193,6098,-740,-192,6095,-738,-199,5996,-730,-182,6148,-741
+pa5g40a0_tsmc=-193,6098,-740,-192,6095,-738,-199,5996,-730,-182,6148,-741
+pa5g80a0_tsmc=-193,6098,-740,-192,6095,-738,-199,5996,-730,-182,6148,-741
+fdss_level_5g=4

BIN
package/starfive/starfive-firmware/rtl8852bu-bluetooth/rtl8852bu_config


BIN
package/starfive/starfive-firmware/rtl8852bu-bluetooth/rtl8852bu_fw


+ 63 - 0
package/starfive/starfive-firmware/starfive-firmware.mk

@@ -0,0 +1,63 @@
+################################################################################
+#
+# starfive-firmware
+#
+################################################################################
+STARFIVE_FIRMWARE_LICENSE = Proprietary
+
+# AP6256 Bluetooth
+ifeq ($(BR2_PACKAGE_STARFIVE_FIRMWARE_AP6256_BLUETOOTH),y)
+define STARFIVE_FIRMWARE_INSTALL_AP6256_BLUETOOTH
+	@echo "install AP6256 BLUETOOTH firmware ..."
+	$(INSTALL) -m 0755 -D $(STARFIVE_FIRMWARE_PKGDIR)/ap6256-bluetooth/BCM4345C5.hcd $(TARGET_DIR)/lib/firmware/
+	$(INSTALL) -m 0755 -D $(STARFIVE_FIRMWARE_PKGDIR)/ap6256-bluetooth/S36ap6256-bluetooth $(TARGET_DIR)/etc/init.d/
+endef
+endif
+
+# AP6256 SDIO Wifi
+ifeq ($(BR2_PACKAGE_STARFIVE_FIRMWARE_AP6256_SDIO_WIFI),y)
+define STARFIVE_FIRMWARE_INSTALL_AP6256_SDIO_WIFI
+	@echo "install AP6256_SDIO_WIFI firmware ..."
+	$(INSTALL) -m 0755 -D $(STARFIVE_FIRMWARE_PKGDIR)/ap6256-sdio-wifi/fw_bcm43456c5_ag.bin $(TARGET_DIR)/lib/firmware/
+	$(INSTALL) -m 0755 -D $(STARFIVE_FIRMWARE_PKGDIR)/ap6256-sdio-wifi/nvram_ap6256.txt $(TARGET_DIR)/lib/firmware/
+endef
+endif
+
+# RTL8852BU Bluetooth
+ifeq ($(BR2_PACKAGE_STARFIVE_FIRMWARE_RTL8852BU_BLUETOOTH),y)
+define STARFIVE_FIRMWARE_INSTALL_RTL8852BU
+	@echo "install RTL8852BU bluetooth firmware ..."
+	$(INSTALL) -m 0755 -D $(STARFIVE_FIRMWARE_PKGDIR)/rtl8852bu-bluetooth/rtl8852bu_config $(TARGET_DIR)/lib/firmware/
+	$(INSTALL) -m 0755 -D $(STARFIVE_FIRMWARE_PKGDIR)/rtl8852bu-bluetooth/rtl8852bu_fw $(TARGET_DIR)/lib/firmware/
+endef
+endif
+
+# ECR6600U USB Wifi
+ifeq ($(BR2_PACKAGE_STARFIVE_FIRMWARE_ECR6600U_USB_WIFI),y)
+define STARFIVE_FIRMWARE_INSTALL_ECR6600U
+	@echo "install ECR6600U firmware ..."
+	$(INSTALL) -m 0755 -D $(STARFIVE_FIRMWARE_PKGDIR)/ECR6600U-usb-wifi/ECR6600U_transport.bin $(TARGET_DIR)/lib/firmware/
+endef
+endif
+
+# AIC8800 or AIC8800DC USB Wifi
+ifeq ($(BR2_PACKAGE_STARFIVE_FIRMWARE_AIC8800_USB_WIFI),y)
+define STARFIVE_FIRMWARE_INSTALL_AIC8800
+	@echo "install AIC8800 firmware ..."
+	$(INSTALL) -m 0755 -d $(TARGET_DIR)/lib/firmware/aic8800
+	$(INSTALL) -m 0644 -t $(TARGET_DIR)/lib/firmware/aic8800 $(STARFIVE_FIRMWARE_PKGDIR)/aic8800-usb-wifi/aic8800/*
+	$(INSTALL) -m 0755 -d $(TARGET_DIR)/lib/firmware/aic8800DC
+	$(INSTALL) -m 0644 -t $(TARGET_DIR)/lib/firmware/aic8800DC $(STARFIVE_FIRMWARE_PKGDIR)/aic8800-usb-wifi/aic8800DC/*
+endef
+endif
+
+# install more firmware here
+define STARFIVE_FIRMWARE_INSTALL_TARGET_CMDS
+	$(STARFIVE_FIRMWARE_INSTALL_AP6256_BLUETOOTH)
+	$(STARFIVE_FIRMWARE_INSTALL_AP6256_SDIO_WIFI)
+	$(STARFIVE_FIRMWARE_INSTALL_RTL8852BU)
+	$(STARFIVE_FIRMWARE_INSTALL_ECR6600U)
+	$(STARFIVE_FIRMWARE_INSTALL_AIC8800)
+endef
+
+$(eval $(generic-package))

+ 11 - 0
system/skeleton/init

@@ -40,6 +40,17 @@ if [ $ROOT == "/dev/nfs" ] && [ "x${NFSROOT}" != "x" ];then
 	/sbin/ifup -a
 	mount -t nfs -o nolock $NFSROOT /rootfs
 else
+	cnt=0
+	while [ $cnt -lt 100 ]
+	do
+		if [ ! -e $ROOT ];then
+			sleep 0.1
+		else
+			echo "find $ROOT: $cnt"
+			break
+		fi
+		let cnt++
+	done
 	mount $ROOT /rootfs/
 	if [ ! -e /rootfs/dev/console ]; then
 		/bin/mknod /rootfs/dev/console c 5 1