From 1517ad18391314d5169ce52c68226ca4c1cf9fae Mon Sep 17 00:00:00 2001 From: Zoltan HERPAI Date: Fri, 7 Feb 2025 00:18:22 +0100 Subject: [PATCH] xr819: add driver for XR819 wireless devices SDIO-based wireless devices for which the driver was never upstreamed. It is used on various SBCs like the OrangePi Zero Plus (ARM). Signed-off-by: Zoltan HERPAI --- package/kernel/xr819/Makefile | 51 +++++++++++++++++++ .../patches/001-activate-all-backports.patch | 48 +++++++++++++++++ 2 files changed, 99 insertions(+) create mode 100644 package/kernel/xr819/Makefile create mode 100644 package/kernel/xr819/patches/001-activate-all-backports.patch diff --git a/package/kernel/xr819/Makefile b/package/kernel/xr819/Makefile new file mode 100644 index 0000000000..5426276b0b --- /dev/null +++ b/package/kernel/xr819/Makefile @@ -0,0 +1,51 @@ +include $(TOPDIR)/rules.mk + +PKG_NAME:=xr819 +PKG_RELEASE=1 + +PKG_LICENSE:=GPLv2 +PKG_LICENSE_FILES:= + +PKG_SOURCE_URL:=https://github.com/fifteenhex/xradio.git +PKG_SOURCE_PROTO:=git +PKG_SOURCE_DATE:=2025-02-06 +PKG_SOURCE_VERSION:=180aafb14191c78c1529d5a28ca58c7c9dcf2c55 +PKG_HASH:=e879304ce6c443b4e733d9c8049eba31178190d9590e524457146c58660af083 + +PKG_BUILD_PARALLEL:=1 + +include $(INCLUDE_DIR)/kernel.mk +include $(INCLUDE_DIR)/package.mk + +define KernelPackage/xr819 + SUBMENU:=Wireless Drivers + TITLE:=Xradio XR819 support + DEPENDS:=@TARGET_sunxi +kmod-mac80211 +xr819-firmware +@DRIVER_11N_SUPPORT + KCONFIG:= \ + CONFIG_WLAN_VENDOR_XRADIO=m \ + CONFIG_XRADIO_USE_EXTENSIONS=y + FILES:=$(PKG_BUILD_DIR)/xradio_wlan.ko + AUTOLOAD:=$(call AutoProbe,xradio_wlan) +endef + +NOSTDINC_FLAGS = \ + -I$(PKG_BUILD_DIR) \ + -I$(STAGING_DIR)/usr/include/mac80211-backport/uapi \ + -I$(STAGING_DIR)/usr/include/mac80211-backport \ + -I$(STAGING_DIR)/usr/include/mac80211/uapi \ + -I$(STAGING_DIR)/usr/include/mac80211 \ + -include backport/autoconf.h \ + -include backport/backport.h \ + -Wno-error=address \ + -Wno-error=stringop-overread + +define Build/Compile + +$(MAKE) $(PKG_JOBS) -C "$(LINUX_DIR)" \ + $(KERNEL_MAKE_FLAGS) \ + $(PKG_MAKE_FLAGS) \ + M="$(PKG_BUILD_DIR)" \ + NOSTDINC_FLAGS="$(NOSTDINC_FLAGS)" \ + modules +endef + +$(eval $(call KernelPackage,xr819)) diff --git a/package/kernel/xr819/patches/001-activate-all-backports.patch b/package/kernel/xr819/patches/001-activate-all-backports.patch new file mode 100644 index 0000000000..742eeedee1 --- /dev/null +++ b/package/kernel/xr819/patches/001-activate-all-backports.patch @@ -0,0 +1,48 @@ +diff -ruN xr819.orig/main.c xr819-2025.02.06~180aafb1/main.c +--- xr819.orig/main.c 2024-12-06 11:27:17.000000000 +0100 ++++ xr819-2025.02.06~180aafb1/main.c 2025-02-11 23:21:02.799915833 +0100 +@@ -166,7 +166,7 @@ + #if (LINUX_VERSION_CODE >= KERNEL_VERSION(6, 2, 0)) + .wake_tx_queue = ieee80211_handle_wake_tx_queue, + #endif +-#if (LINUX_VERSION_CODE >= KERNEL_VERSION(6, 9, 0)) ++#if (LINUX_VERSION_CODE >= KERNEL_VERSION(6, 9, 0)) || 1 + .add_chanctx = ieee80211_emulate_add_chanctx, + .remove_chanctx = ieee80211_emulate_remove_chanctx, + .change_chanctx = ieee80211_emulate_change_chanctx, +diff -ruN xr819.orig/sta.c xr819-2025.02.06~180aafb1/sta.c +--- xr819.orig/sta.c 2024-12-06 11:27:17.000000000 +0100 ++++ xr819-2025.02.06~180aafb1/sta.c 2025-02-11 23:21:20.715764839 +0100 +@@ -117,7 +117,7 @@ + return ret; + } + +-#if (LINUX_VERSION_CODE >= KERNEL_VERSION(6, 11, 0)) ++#if (LINUX_VERSION_CODE >= KERNEL_VERSION(6, 11, 0)) || 1 + void xradio_stop(struct ieee80211_hw *dev, bool suspend) + #else + void xradio_stop(struct ieee80211_hw *dev) +diff -ruN xr819.orig/sta.h xr819-2025.02.06~180aafb1/sta.h +--- xr819.orig/sta.h 2024-12-06 11:27:17.000000000 +0100 ++++ xr819-2025.02.06~180aafb1/sta.h 2025-02-11 23:21:13.835822818 +0100 +@@ -31,7 +31,7 @@ + /* mac80211 API */ + + int xradio_start(struct ieee80211_hw *dev); +-#if (LINUX_VERSION_CODE >= KERNEL_VERSION(6, 11, 0)) ++#if (LINUX_VERSION_CODE >= KERNEL_VERSION(6, 11, 0)) || 1 + void xradio_stop(struct ieee80211_hw *dev, bool suspend); + #else + void xradio_stop(struct ieee80211_hw *dev); +diff -ruN xr819.orig/tx.c xr819-2025.02.06~180aafb1/tx.c +--- xr819.orig/tx.c 2024-12-06 11:27:17.000000000 +0100 ++++ xr819-2025.02.06~180aafb1/tx.c 2025-02-11 23:20:50.052023304 +0100 +@@ -1268,7 +1268,7 @@ + txpriv->raw_link_id, txpriv->tid); + tx_policy_put(hw_priv, txpriv->rate_id); + } +-#if (LINUX_VERSION_CODE >= KERNEL_VERSION(6, 7, 0)) ++#if (LINUX_VERSION_CODE >= KERNEL_VERSION(6, 7, 0)) || 1 + ieee80211_tx_status_skb(hw_priv->hw, skb); + #else + ieee80211_tx_status(hw_priv->hw, skb); -- 2.30.2