[PATCH 2/3] rt2x00: Fix firmware loading regression on x86_64.

Seth Forshee seth.forshee at canonical.com
Wed Feb 16 21:44:15 UTC 2011

From: Wolfgang Kufner <wolfgang.kufner at gmail.com>

BugLink: http://bugs.launchpad.net/bugs/659143

Commit 6175ddf06b6172046a329e3abfd9c901a43efd2e changes the way
memcpy_toio() works for x86_64, causing firmware loading to fail for
some Ralink WLAN devices with the rt2800pci driver since linux 2.6.34.
This causes the log message: "phy0 -> rt2800pci_load_firmware: Error -
PBF system register not ready.".

Fix this by using __iowrite32_copy instead of memcpy_toio().

Signed-off-by: Wolfgang Kufner <wolfgang.kufner at gmail.com>
Signed-off-by: Ivo van Doorn <IvDoorn at gmail.com>
Signed-off-by: John W. Linville <linville at tuxdriver.com>
(cherry-picked from commit 412b31334b831a8c2909afaca017c5a236ac2dd0 upstream)
Signed-off-by: Seth Forshee <seth.forshee at canonical.com>
 drivers/net/wireless/rt2x00/rt2x00pci.h |    2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)

diff --git a/drivers/net/wireless/rt2x00/rt2x00pci.h b/drivers/net/wireless/rt2x00/rt2x00pci.h
index 51bcef3..93e7bd2 100644
--- a/drivers/net/wireless/rt2x00/rt2x00pci.h
+++ b/drivers/net/wireless/rt2x00/rt2x00pci.h
@@ -64,7 +64,7 @@ static inline void rt2x00pci_register_multiwrite(struct rt2x00_dev *rt2x00dev,
 						 const void *value,
 						 const u32 length)
-	memcpy_toio(rt2x00dev->csr.base + offset, value, length);
+	__iowrite32_copy(rt2x00dev->csr.base + offset, value, length >> 2);

More information about the kernel-team mailing list