From 9e05e4b52ac9dafa60d40c4af9ff2043bfa07ca8 Mon Sep 17 00:00:00 2001
From: juhosg <juhosg@3c298f89-4303-0410-b956-a3cf2f4a3e73>
Date: Thu, 1 Apr 2010 15:39:23 +0000
Subject: [PATCH] mac80211: remove MCU requests for SoC platforms in the rt2x00
 driver

The ralink SoC platforms do not have an MCU.

Signed-off-by: Luis Correia <luis.f.correia@gmail.com>


git-svn-id: svn://svn.openwrt.org/openwrt/trunk@20650 3c298f89-4303-0410-b956-a3cf2f4a3e73
---
 package/mac80211/Makefile                     |  2 +-
 ...2-rt2x00-remove-mcu-requests-for-soc.patch | 59 +++++++++++++++++++
 2 files changed, 60 insertions(+), 1 deletion(-)
 create mode 100644 package/mac80211/patches/602-rt2x00-remove-mcu-requests-for-soc.patch

diff --git a/package/mac80211/Makefile b/package/mac80211/Makefile
index d7fde6b25..d93c982f6 100644
--- a/package/mac80211/Makefile
+++ b/package/mac80211/Makefile
@@ -11,7 +11,7 @@ include $(INCLUDE_DIR)/kernel.mk
 PKG_NAME:=mac80211
 
 PKG_VERSION:=2010-03-24
-PKG_RELEASE:=4
+PKG_RELEASE:=5
 PKG_SOURCE_URL:=http://mirror2.openwrt.org/sources
 #	http://www.orbit-lab.org/kernel/compat-wireless-2.6/2010/11 \
 #	http://wireless.kernel.org/download/compat-wireless-2.6
diff --git a/package/mac80211/patches/602-rt2x00-remove-mcu-requests-for-soc.patch b/package/mac80211/patches/602-rt2x00-remove-mcu-requests-for-soc.patch
new file mode 100644
index 000000000..9cecf3a03
--- /dev/null
+++ b/package/mac80211/patches/602-rt2x00-remove-mcu-requests-for-soc.patch
@@ -0,0 +1,59 @@
+The ralink SoC platforms do not have an MCU.
+
+Signed-off-by: Luis Correia <luis.f.correia@gmail.com>
+---
+
+--- a/drivers/net/wireless/rt2x00/rt2800lib.c
++++ b/drivers/net/wireless/rt2x00/rt2800lib.c
+@@ -221,9 +221,9 @@ void rt2800_mcu_request(struct rt2x00_de
+ 	u32 reg;
+ 
+ 	/*
+-	 * SOC devices don't support MCU requests.
++	 * some devices don't support MCU requests.
+ 	 */
+-	if (rt2x00_is_soc(rt2x00dev))
++	if (!test_bit(DRIVER_REQUIRE_MCU, &rt2x00dev->flags))
+ 		return;
+ 
+ 	mutex_lock(&rt2x00dev->csr_mutex);
+--- a/drivers/net/wireless/rt2x00/rt2800pci.c
++++ b/drivers/net/wireless/rt2x00/rt2800pci.c
+@@ -60,6 +60,12 @@ static void rt2800pci_mcu_status(struct 
+ 	unsigned int i;
+ 	u32 reg;
+ 
++	/*
++	 * some devices don't support MCU requests.
++	 */
++	if (!test_bit(DRIVER_REQUIRE_MCU, &rt2x00dev->flags))
++		return;
++
+ 	for (i = 0; i < 200; i++) {
+ 		rt2800_register_read(rt2x00dev, H2M_MAILBOX_CID, &reg);
+ 
+@@ -1098,10 +1104,12 @@ static int rt2800pci_probe_hw(struct rt2
+ 	__set_bit(DRIVER_SUPPORT_CONTROL_FILTER_PSPOLL, &rt2x00dev->flags);
+ 
+ 	/*
+-	 * This device requires firmware.
++	 * This device requires firmware and MCU access.
+ 	 */
+-	if (!rt2x00_is_soc(rt2x00dev))
++	if (!rt2x00_is_soc(rt2x00dev)){
+ 		__set_bit(DRIVER_REQUIRE_FIRMWARE, &rt2x00dev->flags);
++		__set_bit(DRIVER_REQUIRE_MCU, &rt2x00dev->flags);
++	}
+ 	__set_bit(DRIVER_REQUIRE_DMA, &rt2x00dev->flags);
+ 	__set_bit(DRIVER_REQUIRE_L2PAD, &rt2x00dev->flags);
+ 	if (!modparam_nohwcrypt)
+--- a/drivers/net/wireless/rt2x00/rt2x00.h
++++ b/drivers/net/wireless/rt2x00/rt2x00.h
+@@ -631,6 +631,7 @@ enum rt2x00_flags {
+ 	 * Driver requirements
+ 	 */
+ 	DRIVER_REQUIRE_FIRMWARE,
++	DRIVER_REQUIRE_MCU,
+ 	DRIVER_REQUIRE_BEACON_GUARD,
+ 	DRIVER_REQUIRE_ATIM_QUEUE,
+ 	DRIVER_REQUIRE_DMA,
-- 
2.20.1