[rt2x00-users] [RFC/RFT] rt2x00: use rt2800_config_channel_rt3x for rt2872
Alban Browaeys
prahal at yahoo.com
Thu Apr 15 00:52:14 UTC 2010
Does this happens at first load ? If not this patch may fix this (Coudl
you try it nevertheless ?). Also mind that if you loaded the legacy
driver before the rt2800pci one you will not have any interrupts.
What make me not confident is that I have only tested my tree against
2.6.34-rc3 wireless-testing and also without
helmut patches (but a tester reported that merging both gives him a
working driver. I and other tester had a
working driver too even without the fix ... I bet this had to do with
the txwi behing not modified or such in
between the writes thus the issue was hidden. Thanks helmut for fixing
this one).
Patch :
From: Alban Browaeys<prahal at yahoo.com>
Date: Sat, 28 Nov 2009 11:21:15 +0000 (+0100)
Subject: rt2x00: registers reset (PCI only)
X-Git-Url: http://git.prahal.homelinux.net/?p=rt2x00.git;a=commitdiff_plain;h=b0690e29ab78ddb79d3f793e89775e58d864206a
rt2x00: registers reset (PCI only)
---
diff --git a/drivers/net/wireless/rt2x00/rt2800lib.c b/drivers/net/wireless/rt2x00/rt2800lib.c
index 18d4d8e..2b86fd8 100644
--- a/drivers/net/wireless/rt2x00/rt2800lib.c
+++ b/drivers/net/wireless/rt2x00/rt2800lib.c
@@ -1424,6 +1424,11 @@ int rt2800_init_registers(struct rt2x00_dev *rt2x00dev)
rt2800_register_read(rt2x00dev, TX_STA_CNT1,®);
rt2800_register_read(rt2x00dev, TX_STA_CNT2,®);
+ if (rt2x00_intf_is_pci(rt2x00dev)) {
+ rt2800_register_write(rt2x00dev, H2M_MAILBOX_STATUS, ~0);
+ rt2800_register_write(rt2x00dev, H2M_MAILBOX_CID, ~0);
+ }
+
return 0;
}
EXPORT_SYMBOL_GPL(rt2800_init_registers);
diff --git a/drivers/net/wireless/rt2x00/rt2800pci.c b/drivers/net/wireless/rt2x00/rt2800pci.c
index 316beb0..100b59e 100644
--- a/drivers/net/wireless/rt2x00/rt2800pci.c
+++ b/drivers/net/wireless/rt2x00/rt2800pci.c
@@ -458,6 +458,19 @@ static int rt2800pci_enable_radio(struct rt2x00_dev *rt2x00dev)
u32 reg;
u16 word;
+ rt2800_register_read(rt2x00dev, WPDMA_RST_IDX,®);
+ rt2x00_set_field32(®, WPDMA_RST_IDX_DTX_IDX0, 1);
+ rt2x00_set_field32(®, WPDMA_RST_IDX_DTX_IDX1, 1);
+ rt2x00_set_field32(®, WPDMA_RST_IDX_DTX_IDX2, 1);
+ rt2x00_set_field32(®, WPDMA_RST_IDX_DTX_IDX3, 1);
+ rt2x00_set_field32(®, WPDMA_RST_IDX_DTX_IDX4, 1);
+ rt2x00_set_field32(®, WPDMA_RST_IDX_DTX_IDX5, 1);
+ rt2x00_set_field32(®, WPDMA_RST_IDX_DRX_IDX0, 1);
+ rt2800_register_write(rt2x00dev, WPDMA_RST_IDX, reg);
+
+ rt2800_register_write(rt2x00dev, PBF_SYS_CTRL, 0x00000e1f);
+ rt2800_register_write(rt2x00dev, PBF_SYS_CTRL, 0x00000e00);
+
/*
* Initialize all registers.
*/
More information about the users
mailing list