diff --git a/patch/kernel/sun8i-dev/add-xradio-wireless-driver.patch.disabled b/patch/kernel/sun8i-dev/add-xradio-wireless-driver.patch.disabled index 049737cfe..e0867d6d3 100644 --- a/patch/kernel/sun8i-dev/add-xradio-wireless-driver.patch.disabled +++ b/patch/kernel/sun8i-dev/add-xradio-wireless-driver.patch.disabled @@ -1,3 +1,35 @@ +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 e94f196..209d742 100644 +--- a/arch/arm/boot/dts/sun8i-h2-plus-orangepi-zero.dts ++++ b/arch/arm/boot/dts/sun8i-h2-plus-orangepi-zero.dts +@@ -114,6 +123,14 @@ + status = "okay"; + }; + ++&pio { ++ wifi_wake_xr819: wifi_wake_xr819@0 { ++ allwinner,pins = "PG10"; ++ allwinner,function = "irq"; ++ allwinner,pull = <SUN4I_PINCTRL_NO_PULL>; ++ }; ++}; ++ + &mmc1 { + pinctrl-names = "default"; + pinctrl-0 = <&mmc1_pins_a>; +@@ -129,6 +146,12 @@ + */ + xr819: sdio_wifi@1 { + reg = <1>; ++ compatible = "xradio,xr819"; ++ pinctrl-names = "default"; ++ pinctrl-0 = <&wifi_wake_xr819>; ++ interrupt-parent = <&pio>; ++ interrupts = <6 10 IRQ_TYPE_EDGE_RISING>; ++ interrupt-names = "host-wake"; + }; + }; + diff --git a/drivers/net/wireless/Kconfig b/drivers/net/wireless/Kconfig index 8c8edaf1..122b980b 100644 --- a/drivers/net/wireless/Kconfig @@ -1899,7 +1931,7 @@ new file mode 100644 index 00000000..220f85a2 --- /dev/null +++ b/drivers/net/wireless/xradio/bh.c -@@ -0,0 +1,880 @@ +@@ -0,0 +1,884 @@ +/* + * Data Transmission thread implementation for XRadio drivers + * @@ -1920,6 +1952,10 @@ index 00000000..220f85a2 +#include "wsm.h" +#include "sdio.h" + ++struct sched_param { ++ int sched_priority; ++}; ++ +/* TODO: Verify these numbers with WSM specification. */ +#define DOWNLOAD_BLOCK_SIZE_WR (0x1000 - 4) +/* an SPI message cannot be bigger than (2"12-1)*2 bytes @@ -1945,7 +1981,6 @@ index 00000000..220f85a2 +int xradio_register_bh(struct xradio_common *hw_priv) +{ + int err = 0; -+ struct sched_param param = { .sched_priority = 1 }; + + SYS_BUG(hw_priv->bh_thread); + atomic_set(&hw_priv->bh_tx, 0); @@ -1961,6 +1996,7 @@ index 00000000..220f85a2 + err = PTR_ERR(hw_priv->bh_thread); + hw_priv->bh_thread = NULL; + } else { ++ struct sched_param param = { .sched_priority = 1 }; + SYS_WARN(sched_setscheduler(hw_priv->bh_thread, SCHED_FIFO, ¶m)); +#ifdef HAS_PUT_TASK_STRUCT + get_task_struct(hw_priv->bh_thread); @@ -12073,7 +12109,7 @@ new file mode 100644 index 00000000..70218423 --- /dev/null +++ b/drivers/net/wireless/xradio/sdio.c -@@ -0,0 +1,266 @@ +@@ -0,0 +1,267 @@ +/* + * SDIO driver for XRadio drivers + * @@ -12090,6 +12126,7 @@ index 00000000..70218423 +#include <linux/mmc/card.h> +#include <linux/mmc/sdio.h> +#include <asm/mach-types.h> ++#include <linux/module.h> +#include <linux/of.h> +#include <linux/of_irq.h> + @@ -13598,7 +13635,7 @@ index 00000000..e9820b8a + NL80211_CQM_RSSI_THRESHOLD_EVENT_LOW : + NL80211_CQM_RSSI_THRESHOLD_EVENT_HIGH; + sta_printk(XRADIO_DBG_NIY, "[CQM] RSSI event: %d", rcpiRssi); -+ ieee80211_cqm_rssi_notify(priv->vif, cqm_evt, ++ ieee80211_cqm_rssi_notify(priv->vif, cqm_evt, rcpiRssi, + GFP_KERNEL); + break; + }