All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH 1/4] rt2800: radio 3xxx: reprogram only lower bits of RF_R3
@ 2012-01-30 15:17 Stanislaw Gruszka
  2012-01-30 15:17 ` [PATCH 2/4] rt2800: radio 3xxx: program RF_R1 during channel switch Stanislaw Gruszka
                   ` (3 more replies)
  0 siblings, 4 replies; 14+ messages in thread
From: Stanislaw Gruszka @ 2012-01-30 15:17 UTC (permalink / raw)
  To: John W. Linville; +Cc: linux-wireless, users, Stanislaw Gruszka

Synchronize code with Ralink driver:
2011_0719_RT3070_RT3370_RT5370_RT5372_Linux_STA_V2.5.0.3_DPO
(functions: RT33xx_ChipSwitchChannel() and RT30xx_ChipSwitchChannel())

Acked-by: Gertjan van Wingerde <gwingerde@gmail.com>
Signed-off-by: Stanislaw Gruszka <sgruszka@redhat.com>
---
 drivers/net/wireless/rt2x00/rt2800.h    |    5 +++++
 drivers/net/wireless/rt2x00/rt2800lib.c |    5 ++++-
 2 files changed, 9 insertions(+), 1 deletions(-)

diff --git a/drivers/net/wireless/rt2x00/rt2800.h b/drivers/net/wireless/rt2x00/rt2800.h
index 2571a2f..abf2ae5 100644
--- a/drivers/net/wireless/rt2x00/rt2800.h
+++ b/drivers/net/wireless/rt2x00/rt2800.h
@@ -1796,6 +1796,11 @@ struct mac_iveiv_entry {
 #define RFCSR2_RESCAL_EN		FIELD8(0x80)
 
 /*
+ * RFCSR 3:
+ */
+#define RFCSR3_K			FIELD8(0x0f)
+
+/*
  * FRCSR 5:
  */
 #define RFCSR5_R1			FIELD8(0x0c)
diff --git a/drivers/net/wireless/rt2x00/rt2800lib.c b/drivers/net/wireless/rt2x00/rt2800lib.c
index 22a1a8f..6edf566 100644
--- a/drivers/net/wireless/rt2x00/rt2800lib.c
+++ b/drivers/net/wireless/rt2x00/rt2800lib.c
@@ -1649,7 +1649,10 @@ static void rt2800_config_channel_rf3xxx(struct rt2x00_dev *rt2x00dev,
 	u8 rfcsr;
 
 	rt2800_rfcsr_write(rt2x00dev, 2, rf->rf1);
-	rt2800_rfcsr_write(rt2x00dev, 3, rf->rf3);
+
+	rt2800_rfcsr_read(rt2x00dev, 3, &rfcsr);
+	rt2x00_set_field8(&rfcsr, RFCSR3_K, rf->rf3);
+	rt2800_rfcsr_write(rt2x00dev, 3, rfcsr);
 
 	rt2800_rfcsr_read(rt2x00dev, 6, &rfcsr);
 	rt2x00_set_field8(&rfcsr, RFCSR6_R1, rf->rf2);
-- 
1.7.1


^ permalink raw reply related	[flat|nested] 14+ messages in thread

* [PATCH 2/4] rt2800: radio 3xxx: program RF_R1 during channel switch
  2012-01-30 15:17 [PATCH 1/4] rt2800: radio 3xxx: reprogram only lower bits of RF_R3 Stanislaw Gruszka
@ 2012-01-30 15:17 ` Stanislaw Gruszka
  2012-01-30 22:06   ` [rt2x00-users] " Gertjan van Wingerde
  2012-01-30 15:17 ` [PATCH 3/4] rt2800: radio 3xxx: add channel switch calibration routines Stanislaw Gruszka
                   ` (2 subsequent siblings)
  3 siblings, 1 reply; 14+ messages in thread
From: Stanislaw Gruszka @ 2012-01-30 15:17 UTC (permalink / raw)
  To: John W. Linville; +Cc: linux-wireless, users, Stanislaw Gruszka

Synchronize code with Ralink driver:
2011_0719_RT3070_RT3370_RT5370_RT5372_Linux_STA_V2.5.0.3_DPO
Based on functions:
RT33xx_ChipSwitchChannel
RT30xx_ChipSwitchChannel
RT33xx_Init

Signed-off-by: Stanislaw Gruszka <sgruszka@redhat.com>
---
 drivers/net/wireless/rt2x00/rt2800lib.c |   34 +++++++++++++++++++++++++++++++
 1 files changed, 34 insertions(+), 0 deletions(-)

diff --git a/drivers/net/wireless/rt2x00/rt2800lib.c b/drivers/net/wireless/rt2x00/rt2800lib.c
index 6edf566..a841918 100644
--- a/drivers/net/wireless/rt2x00/rt2800lib.c
+++ b/drivers/net/wireless/rt2x00/rt2800lib.c
@@ -1666,6 +1666,40 @@ static void rt2800_config_channel_rf3xxx(struct rt2x00_dev *rt2x00dev,
 	rt2x00_set_field8(&rfcsr, RFCSR13_TX_POWER, info->default_power2);
 	rt2800_rfcsr_write(rt2x00dev, 13, rfcsr);
 
+	rt2800_rfcsr_read(rt2x00dev, 1, &rfcsr);
+	rt2x00_set_field8(&rfcsr, RFCSR1_RX0_PD, 0);
+	rt2x00_set_field8(&rfcsr, RFCSR1_TX0_PD, 0);
+	if (rt2x00_rt(rt2x00dev, RT3390)) {
+		rt2x00_set_field8(&rfcsr, RFCSR1_RX1_PD,
+				  rt2x00dev->default_ant.rx_chain_num == 1);
+		rt2x00_set_field8(&rfcsr, RFCSR1_TX1_PD,
+				  rt2x00dev->default_ant.tx_chain_num == 1);
+	} else {
+		rt2x00_set_field8(&rfcsr, RFCSR1_RX1_PD, 0);
+		rt2x00_set_field8(&rfcsr, RFCSR1_TX1_PD, 0);
+		rt2x00_set_field8(&rfcsr, RFCSR1_RX2_PD, 0);
+		rt2x00_set_field8(&rfcsr, RFCSR1_TX2_PD, 0);
+
+		switch (rt2x00dev->default_ant.tx_chain_num) {
+		case 1:
+			rt2x00_set_field8(&rfcsr, RFCSR1_TX1_PD, 1);
+			/* fall through */
+		case 2:
+			rt2x00_set_field8(&rfcsr, RFCSR1_TX2_PD, 1);
+			break;
+		}
+
+		switch (rt2x00dev->default_ant.rx_chain_num) {
+		case 1:
+			rt2x00_set_field8(&rfcsr, RFCSR1_RX1_PD, 1);
+			/* fall through */
+		case 2:
+			rt2x00_set_field8(&rfcsr, RFCSR1_RX2_PD, 1);
+			break;
+		}
+	}
+	rt2800_rfcsr_write(rt2x00dev, 1, rfcsr);
+
 	rt2800_rfcsr_read(rt2x00dev, 23, &rfcsr);
 	rt2x00_set_field8(&rfcsr, RFCSR23_FREQ_OFFSET, rt2x00dev->freq_offset);
 	rt2800_rfcsr_write(rt2x00dev, 23, rfcsr);
-- 
1.7.1


^ permalink raw reply related	[flat|nested] 14+ messages in thread

* [PATCH 3/4] rt2800: radio 3xxx: add channel switch calibration routines
  2012-01-30 15:17 [PATCH 1/4] rt2800: radio 3xxx: reprogram only lower bits of RF_R3 Stanislaw Gruszka
  2012-01-30 15:17 ` [PATCH 2/4] rt2800: radio 3xxx: program RF_R1 during channel switch Stanislaw Gruszka
@ 2012-01-30 15:17 ` Stanislaw Gruszka
  2012-02-01 10:30   ` Helmut Schaa
  2012-01-30 15:17 ` [PATCH 4/4] rt2800: radio 3xxxx: channel switch RX/TX calibration fixes Stanislaw Gruszka
  2012-02-01 10:27 ` [PATCH 1/4] rt2800: radio 3xxx: reprogram only lower bits of RF_R3 Helmut Schaa
  3 siblings, 1 reply; 14+ messages in thread
From: Stanislaw Gruszka @ 2012-01-30 15:17 UTC (permalink / raw)
  To: John W. Linville; +Cc: linux-wireless, users, Stanislaw Gruszka

Synchronize code with Ralink driver:
2011_0719_RT3070_RT3370_RT5370_RT5372_Linux_STA_V2.5.0.3_DPO
Based on functions:
RT33xx_ChipSwitchChannel
RT30xx_ChipSwitchChannel

Acked-by: Gertjan van Wingerde <gwingerde@gmail.com>
Signed-off-by: Stanislaw Gruszka <sgruszka@redhat.com>
---
 drivers/net/wireless/rt2x00/rt2800lib.c |   14 ++++++++++++++
 1 files changed, 14 insertions(+), 0 deletions(-)

diff --git a/drivers/net/wireless/rt2x00/rt2800lib.c b/drivers/net/wireless/rt2x00/rt2800lib.c
index a841918..b5dcc48 100644
--- a/drivers/net/wireless/rt2x00/rt2800lib.c
+++ b/drivers/net/wireless/rt2x00/rt2800lib.c
@@ -1700,6 +1700,13 @@ static void rt2800_config_channel_rf3xxx(struct rt2x00_dev *rt2x00dev,
 	}
 	rt2800_rfcsr_write(rt2x00dev, 1, rfcsr);
 
+	rt2800_rfcsr_read(rt2x00dev, 30, &rfcsr);
+	rt2x00_set_field8(&rfcsr, RFCSR30_RF_CALIBRATION, 1);
+	rt2800_rfcsr_write(rt2x00dev, 30, rfcsr);
+	msleep(1);
+	rt2x00_set_field8(&rfcsr, RFCSR30_RF_CALIBRATION, 0);
+	rt2800_rfcsr_write(rt2x00dev, 30, rfcsr);
+
 	rt2800_rfcsr_read(rt2x00dev, 23, &rfcsr);
 	rt2x00_set_field8(&rfcsr, RFCSR23_FREQ_OFFSET, rt2x00dev->freq_offset);
 	rt2800_rfcsr_write(rt2x00dev, 23, rfcsr);
@@ -1710,6 +1717,13 @@ static void rt2800_config_channel_rf3xxx(struct rt2x00_dev *rt2x00dev,
 	rt2800_rfcsr_read(rt2x00dev, 7, &rfcsr);
 	rt2x00_set_field8(&rfcsr, RFCSR7_RF_TUNING, 1);
 	rt2800_rfcsr_write(rt2x00dev, 7, rfcsr);
+
+	rt2800_rfcsr_read(rt2x00dev, 30, &rfcsr);
+	rt2x00_set_field8(&rfcsr, RFCSR30_RF_CALIBRATION, 1);
+	rt2800_rfcsr_write(rt2x00dev, 30, rfcsr);
+	msleep(1);
+	rt2x00_set_field8(&rfcsr, RFCSR30_RF_CALIBRATION, 0);
+	rt2800_rfcsr_write(rt2x00dev, 30, rfcsr);
 }
 
 static void rt2800_config_channel_rf3052(struct rt2x00_dev *rt2x00dev,
-- 
1.7.1


^ permalink raw reply related	[flat|nested] 14+ messages in thread

* [PATCH 4/4] rt2800: radio 3xxxx: channel switch RX/TX calibration fixes
  2012-01-30 15:17 [PATCH 1/4] rt2800: radio 3xxx: reprogram only lower bits of RF_R3 Stanislaw Gruszka
  2012-01-30 15:17 ` [PATCH 2/4] rt2800: radio 3xxx: program RF_R1 during channel switch Stanislaw Gruszka
  2012-01-30 15:17 ` [PATCH 3/4] rt2800: radio 3xxx: add channel switch calibration routines Stanislaw Gruszka
@ 2012-01-30 15:17 ` Stanislaw Gruszka
  2012-01-30 22:12   ` [rt2x00-users] " Gertjan van Wingerde
  2012-02-01 15:17   ` [PATCH 5/4] rt2800: document RF_R03 register bits [7:4] Stanislaw Gruszka
  2012-02-01 10:27 ` [PATCH 1/4] rt2800: radio 3xxx: reprogram only lower bits of RF_R3 Helmut Schaa
  3 siblings, 2 replies; 14+ messages in thread
From: Stanislaw Gruszka @ 2012-01-30 15:17 UTC (permalink / raw)
  To: John W. Linville; +Cc: linux-wireless, users, Stanislaw Gruszka

Synchronize code with Ralink driver:
2011_0719_RT3070_RT3370_RT5370_RT5372_Linux_STA_V2.5.0.3_DPO
Based on functions:
RT30xx_ChipSwitchChannel
RT33xx_ChipSwitchChannel
NICInitRT3370RFRegisters
and defines from:
include/chip/rt33xx.h

Signed-off-by: Stanislaw Gruszka <sgruszka@redhat.com>
---
 drivers/net/wireless/rt2x00/rt2800.h    |    8 ++++++++
 drivers/net/wireless/rt2x00/rt2800lib.c |   19 ++++++++++++++++---
 2 files changed, 24 insertions(+), 3 deletions(-)

diff --git a/drivers/net/wireless/rt2x00/rt2800.h b/drivers/net/wireless/rt2x00/rt2800.h
index abf2ae5..c92fb2e 100644
--- a/drivers/net/wireless/rt2x00/rt2800.h
+++ b/drivers/net/wireless/rt2x00/rt2800.h
@@ -1872,6 +1872,13 @@ struct mac_iveiv_entry {
 #define RFCSR23_FREQ_OFFSET		FIELD8(0x7f)
 
 /*
+ * RFCSR 24:
+ */
+#define RFCSR24_TX_AGC_FC		FIELD8(0x1f)
+#define RFCSR24_TX_H20M			FIELD8(0x20)
+#define RFCSR24_TX_CALIB		FIELD8(0x7f)
+
+/*
  * RFCSR 27:
  */
 #define RFCSR27_R1			FIELD8(0x03)
@@ -1892,6 +1899,7 @@ struct mac_iveiv_entry {
  */
 #define RFCSR31_RX_AGC_FC		FIELD8(0x1f)
 #define RFCSR31_RX_H20M			FIELD8(0x20)
+#define RFCSR31_RX_CALIB		FIELD8(0x7f)
 
 /*
  * RFCSR 38:
diff --git a/drivers/net/wireless/rt2x00/rt2800lib.c b/drivers/net/wireless/rt2x00/rt2800lib.c
index b5dcc48..13d83ab 100644
--- a/drivers/net/wireless/rt2x00/rt2800lib.c
+++ b/drivers/net/wireless/rt2x00/rt2800lib.c
@@ -1646,7 +1646,7 @@ static void rt2800_config_channel_rf3xxx(struct rt2x00_dev *rt2x00dev,
 					 struct rf_channel *rf,
 					 struct channel_info *info)
 {
-	u8 rfcsr;
+	u8 rfcsr, calib_tx, calib_rx;
 
 	rt2800_rfcsr_write(rt2x00dev, 2, rf->rf1);
 
@@ -1711,8 +1711,21 @@ static void rt2800_config_channel_rf3xxx(struct rt2x00_dev *rt2x00dev,
 	rt2x00_set_field8(&rfcsr, RFCSR23_FREQ_OFFSET, rt2x00dev->freq_offset);
 	rt2800_rfcsr_write(rt2x00dev, 23, rfcsr);
 
-	rt2800_rfcsr_write(rt2x00dev, 24,
-			      rt2x00dev->calibration[conf_is_ht40(conf)]);
+	if (rt2x00_rt(rt2x00dev, RT3390)) {
+		calib_tx = conf_is_ht40(conf) ? 0x68 : 0x4f;
+		calib_rx = conf_is_ht40(conf) ? 0x6f : 0x4f;
+	} else {
+		calib_tx = rt2x00dev->calibration[conf_is_ht40(conf)];
+		calib_rx = rt2x00dev->calibration[conf_is_ht40(conf)];
+	}
+
+	rt2800_rfcsr_read(rt2x00dev, 24, &rfcsr);
+	rt2x00_set_field8(&rfcsr, RFCSR24_TX_CALIB, calib_tx);
+	rt2800_rfcsr_write(rt2x00dev, 24, rfcsr);
+
+	rt2800_rfcsr_read(rt2x00dev, 31, &rfcsr);
+	rt2x00_set_field8(&rfcsr, RFCSR31_RX_CALIB, calib_rx);
+	rt2800_rfcsr_write(rt2x00dev, 31, rfcsr);
 
 	rt2800_rfcsr_read(rt2x00dev, 7, &rfcsr);
 	rt2x00_set_field8(&rfcsr, RFCSR7_RF_TUNING, 1);
-- 
1.7.1


^ permalink raw reply related	[flat|nested] 14+ messages in thread

* Re: [rt2x00-users] [PATCH 2/4] rt2800: radio 3xxx: program RF_R1 during channel switch
  2012-01-30 15:17 ` [PATCH 2/4] rt2800: radio 3xxx: program RF_R1 during channel switch Stanislaw Gruszka
@ 2012-01-30 22:06   ` Gertjan van Wingerde
  2012-01-31  8:14     ` Stanislaw Gruszka
  0 siblings, 1 reply; 14+ messages in thread
From: Gertjan van Wingerde @ 2012-01-30 22:06 UTC (permalink / raw)
  To: Stanislaw Gruszka; +Cc: John W. Linville, linux-wireless, users

On 01/30/12 16:17, Stanislaw Gruszka wrote:
> Synchronize code with Ralink driver:
> 2011_0719_RT3070_RT3370_RT5370_RT5372_Linux_STA_V2.5.0.3_DPO
> Based on functions:
> RT33xx_ChipSwitchChannel
> RT30xx_ChipSwitchChannel
> RT33xx_Init
> 
> Signed-off-by: Stanislaw Gruszka <sgruszka@redhat.com>

> ---
>  drivers/net/wireless/rt2x00/rt2800lib.c |   34 +++++++++++++++++++++++++++++++
>  1 files changed, 34 insertions(+), 0 deletions(-)
> 
> diff --git a/drivers/net/wireless/rt2x00/rt2800lib.c b/drivers/net/wireless/rt2x00/rt2800lib.c
> index 6edf566..a841918 100644
> --- a/drivers/net/wireless/rt2x00/rt2800lib.c
> +++ b/drivers/net/wireless/rt2x00/rt2800lib.c
> @@ -1666,6 +1666,40 @@ static void rt2800_config_channel_rf3xxx(struct rt2x00_dev *rt2x00dev,
>  	rt2x00_set_field8(&rfcsr, RFCSR13_TX_POWER, info->default_power2);
>  	rt2800_rfcsr_write(rt2x00dev, 13, rfcsr);
>  
> +	rt2800_rfcsr_read(rt2x00dev, 1, &rfcsr);
> +	rt2x00_set_field8(&rfcsr, RFCSR1_RX0_PD, 0);
> +	rt2x00_set_field8(&rfcsr, RFCSR1_TX0_PD, 0);
> +	if (rt2x00_rt(rt2x00dev, RT3390)) {
> +		rt2x00_set_field8(&rfcsr, RFCSR1_RX1_PD,
> +				  rt2x00dev->default_ant.rx_chain_num == 1);
> +		rt2x00_set_field8(&rfcsr, RFCSR1_TX1_PD,
> +				  rt2x00dev->default_ant.tx_chain_num == 1);
> +	} else {
> +		rt2x00_set_field8(&rfcsr, RFCSR1_RX1_PD, 0);
> +		rt2x00_set_field8(&rfcsr, RFCSR1_TX1_PD, 0);
> +		rt2x00_set_field8(&rfcsr, RFCSR1_RX2_PD, 0);
> +		rt2x00_set_field8(&rfcsr, RFCSR1_TX2_PD, 0);
> +
> +		switch (rt2x00dev->default_ant.tx_chain_num) {
> +		case 1:
> +			rt2x00_set_field8(&rfcsr, RFCSR1_TX1_PD, 1);
> +			/* fall through */
> +		case 2:
> +			rt2x00_set_field8(&rfcsr, RFCSR1_TX2_PD, 1);
> +			break;
> +		}
> +
> +		switch (rt2x00dev->default_ant.rx_chain_num) {
> +		case 1:
> +			rt2x00_set_field8(&rfcsr, RFCSR1_RX1_PD, 1);
> +			/* fall through */
> +		case 2:
> +			rt2x00_set_field8(&rfcsr, RFCSR1_RX2_PD, 1);
> +			break;
> +		}
> +	}
> +	rt2800_rfcsr_write(rt2x00dev, 1, rfcsr);
> +
>  	rt2800_rfcsr_read(rt2x00dev, 23, &rfcsr);
>  	rt2x00_set_field8(&rfcsr, RFCSR23_FREQ_OFFSET, rt2x00dev->freq_offset);
>  	rt2800_rfcsr_write(rt2x00dev, 23, rfcsr);

To be honest, I think that this can be simplied to a single case for
both RT30xx and RT33xx. Just take the RT30xx branch of the added
if-statement and it should just work fine on both chipset families.

Yes, I am aware the Ralink driver has slightly different code here, but
that just seems to be because they work with knowledge of the
limitations of RT33xx, which ensures that tx_chain_num and rx_chain_num
can never be 2 on that chipset, but still handling it doesn't harm. It
would merely result in better readable code.

---
Gertjan

^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: [rt2x00-users] [PATCH 4/4] rt2800: radio 3xxxx: channel switch RX/TX calibration fixes
  2012-01-30 15:17 ` [PATCH 4/4] rt2800: radio 3xxxx: channel switch RX/TX calibration fixes Stanislaw Gruszka
@ 2012-01-30 22:12   ` Gertjan van Wingerde
  2012-02-01 15:17   ` [PATCH 5/4] rt2800: document RF_R03 register bits [7:4] Stanislaw Gruszka
  1 sibling, 0 replies; 14+ messages in thread
From: Gertjan van Wingerde @ 2012-01-30 22:12 UTC (permalink / raw)
  To: Stanislaw Gruszka; +Cc: John W. Linville, linux-wireless, users

On 01/30/12 16:17, Stanislaw Gruszka wrote:
> Synchronize code with Ralink driver:
> 2011_0719_RT3070_RT3370_RT5370_RT5372_Linux_STA_V2.5.0.3_DPO
> Based on functions:
> RT30xx_ChipSwitchChannel
> RT33xx_ChipSwitchChannel
> NICInitRT3370RFRegisters
> and defines from:
> include/chip/rt33xx.h
> 
> Signed-off-by: Stanislaw Gruszka <sgruszka@redhat.com>

Acked-by: Gertjan van Wingerde <gwingerde@gmail.com>

> ---
>  drivers/net/wireless/rt2x00/rt2800.h    |    8 ++++++++
>  drivers/net/wireless/rt2x00/rt2800lib.c |   19 ++++++++++++++++---
>  2 files changed, 24 insertions(+), 3 deletions(-)
> 
> diff --git a/drivers/net/wireless/rt2x00/rt2800.h b/drivers/net/wireless/rt2x00/rt2800.h
> index abf2ae5..c92fb2e 100644
> --- a/drivers/net/wireless/rt2x00/rt2800.h
> +++ b/drivers/net/wireless/rt2x00/rt2800.h
> @@ -1872,6 +1872,13 @@ struct mac_iveiv_entry {
>  #define RFCSR23_FREQ_OFFSET		FIELD8(0x7f)
>  
>  /*
> + * RFCSR 24:
> + */
> +#define RFCSR24_TX_AGC_FC		FIELD8(0x1f)
> +#define RFCSR24_TX_H20M			FIELD8(0x20)
> +#define RFCSR24_TX_CALIB		FIELD8(0x7f)
> +
> +/*
>   * RFCSR 27:
>   */
>  #define RFCSR27_R1			FIELD8(0x03)
> @@ -1892,6 +1899,7 @@ struct mac_iveiv_entry {
>   */
>  #define RFCSR31_RX_AGC_FC		FIELD8(0x1f)
>  #define RFCSR31_RX_H20M			FIELD8(0x20)
> +#define RFCSR31_RX_CALIB		FIELD8(0x7f)
>  
>  /*
>   * RFCSR 38:
> diff --git a/drivers/net/wireless/rt2x00/rt2800lib.c b/drivers/net/wireless/rt2x00/rt2800lib.c
> index b5dcc48..13d83ab 100644
> --- a/drivers/net/wireless/rt2x00/rt2800lib.c
> +++ b/drivers/net/wireless/rt2x00/rt2800lib.c
> @@ -1646,7 +1646,7 @@ static void rt2800_config_channel_rf3xxx(struct rt2x00_dev *rt2x00dev,
>  					 struct rf_channel *rf,
>  					 struct channel_info *info)
>  {
> -	u8 rfcsr;
> +	u8 rfcsr, calib_tx, calib_rx;
>  
>  	rt2800_rfcsr_write(rt2x00dev, 2, rf->rf1);
>  
> @@ -1711,8 +1711,21 @@ static void rt2800_config_channel_rf3xxx(struct rt2x00_dev *rt2x00dev,
>  	rt2x00_set_field8(&rfcsr, RFCSR23_FREQ_OFFSET, rt2x00dev->freq_offset);
>  	rt2800_rfcsr_write(rt2x00dev, 23, rfcsr);
>  
> -	rt2800_rfcsr_write(rt2x00dev, 24,
> -			      rt2x00dev->calibration[conf_is_ht40(conf)]);
> +	if (rt2x00_rt(rt2x00dev, RT3390)) {
> +		calib_tx = conf_is_ht40(conf) ? 0x68 : 0x4f;
> +		calib_rx = conf_is_ht40(conf) ? 0x6f : 0x4f;
> +	} else {
> +		calib_tx = rt2x00dev->calibration[conf_is_ht40(conf)];
> +		calib_rx = rt2x00dev->calibration[conf_is_ht40(conf)];
> +	}
> +
> +	rt2800_rfcsr_read(rt2x00dev, 24, &rfcsr);
> +	rt2x00_set_field8(&rfcsr, RFCSR24_TX_CALIB, calib_tx);
> +	rt2800_rfcsr_write(rt2x00dev, 24, rfcsr);
> +
> +	rt2800_rfcsr_read(rt2x00dev, 31, &rfcsr);
> +	rt2x00_set_field8(&rfcsr, RFCSR31_RX_CALIB, calib_rx);
> +	rt2800_rfcsr_write(rt2x00dev, 31, rfcsr);
>  
>  	rt2800_rfcsr_read(rt2x00dev, 7, &rfcsr);
>  	rt2x00_set_field8(&rfcsr, RFCSR7_RF_TUNING, 1);


-- 
---
Gertjan

^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: [rt2x00-users] [PATCH 2/4] rt2800: radio 3xxx: program RF_R1 during channel switch
  2012-01-30 22:06   ` [rt2x00-users] " Gertjan van Wingerde
@ 2012-01-31  8:14     ` Stanislaw Gruszka
  2012-01-31 17:00       ` Gertjan van Wingerde
  0 siblings, 1 reply; 14+ messages in thread
From: Stanislaw Gruszka @ 2012-01-31  8:14 UTC (permalink / raw)
  To: Gertjan van Wingerde; +Cc: John W. Linville, linux-wireless, users

On Mon, Jan 30, 2012 at 11:06:49PM +0100, Gertjan van Wingerde wrote:
> On 01/30/12 16:17, Stanislaw Gruszka wrote:
> > +	rt2800_rfcsr_read(rt2x00dev, 1, &rfcsr);
> > +	rt2x00_set_field8(&rfcsr, RFCSR1_RX0_PD, 0);
> > +	rt2x00_set_field8(&rfcsr, RFCSR1_TX0_PD, 0);
> > +	if (rt2x00_rt(rt2x00dev, RT3390)) {
> > +		rt2x00_set_field8(&rfcsr, RFCSR1_RX1_PD,
> > +				  rt2x00dev->default_ant.rx_chain_num == 1);
> > +		rt2x00_set_field8(&rfcsr, RFCSR1_TX1_PD,
> > +				  rt2x00dev->default_ant.tx_chain_num == 1);
> > +	} else {
> > +		rt2x00_set_field8(&rfcsr, RFCSR1_RX1_PD, 0);
> > +		rt2x00_set_field8(&rfcsr, RFCSR1_TX1_PD, 0);
> > +		rt2x00_set_field8(&rfcsr, RFCSR1_RX2_PD, 0);
> > +		rt2x00_set_field8(&rfcsr, RFCSR1_TX2_PD, 0);
> > +
> > +		switch (rt2x00dev->default_ant.tx_chain_num) {
> > +		case 1:
> > +			rt2x00_set_field8(&rfcsr, RFCSR1_TX1_PD, 1);
> > +			/* fall through */
> > +		case 2:
> > +			rt2x00_set_field8(&rfcsr, RFCSR1_TX2_PD, 1);
> > +			break;
> > +		}
> > +
> > +		switch (rt2x00dev->default_ant.rx_chain_num) {
> > +		case 1:
> > +			rt2x00_set_field8(&rfcsr, RFCSR1_RX1_PD, 1);
> > +			/* fall through */
> > +		case 2:
> > +			rt2x00_set_field8(&rfcsr, RFCSR1_RX2_PD, 1);
> > +			break;
> > +		}
> > +	}
> > +	rt2800_rfcsr_write(rt2x00dev, 1, rfcsr);
> > +
> >  	rt2800_rfcsr_read(rt2x00dev, 23, &rfcsr);
> >  	rt2x00_set_field8(&rfcsr, RFCSR23_FREQ_OFFSET, rt2x00dev->freq_offset);
> >  	rt2800_rfcsr_write(rt2x00dev, 23, rfcsr);
> 
> To be honest, I think that this can be simplied to a single case for
> both RT30xx and RT33xx. Just take the RT30xx branch of the added
> if-statement and it should just work fine on both chipset families.
> 
> Yes, I am aware the Ralink driver has slightly different code here, but
> that just seems to be because they work with knowledge of the
> limitations of RT33xx, which ensures that tx_chain_num and rx_chain_num
> can never be 2 on that chipset, but still handling it doesn't harm. It
> would merely result in better readable code.

Not only the code is different, but RF_R1 register value we program
is different for 30xx and 33xx when chain_num == 1 (changed by
RFCSR1_{RX2,TX2)_PD bit).

I'm not against merging these two cases and program different values
into register than Ralink driver do, but maybe in the next linux
release (counting from release of that change), so any breakage
eventually caused by that merge could be easily detected.

Stanislaw

^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: [rt2x00-users] [PATCH 2/4] rt2800: radio 3xxx: program RF_R1 during channel switch
  2012-01-31  8:14     ` Stanislaw Gruszka
@ 2012-01-31 17:00       ` Gertjan van Wingerde
  2012-02-01 15:21         ` Stanislaw Gruszka
  0 siblings, 1 reply; 14+ messages in thread
From: Gertjan van Wingerde @ 2012-01-31 17:00 UTC (permalink / raw)
  To: Stanislaw Gruszka; +Cc: John W. Linville, linux-wireless, users

On Tue, Jan 31, 2012 at 9:14 AM, Stanislaw Gruszka <sgruszka@redhat.com> wrote:
> On Mon, Jan 30, 2012 at 11:06:49PM +0100, Gertjan van Wingerde wrote:
>> On 01/30/12 16:17, Stanislaw Gruszka wrote:
>> > +   rt2800_rfcsr_read(rt2x00dev, 1, &rfcsr);
>> > +   rt2x00_set_field8(&rfcsr, RFCSR1_RX0_PD, 0);
>> > +   rt2x00_set_field8(&rfcsr, RFCSR1_TX0_PD, 0);
>> > +   if (rt2x00_rt(rt2x00dev, RT3390)) {
>> > +           rt2x00_set_field8(&rfcsr, RFCSR1_RX1_PD,
>> > +                             rt2x00dev->default_ant.rx_chain_num == 1);
>> > +           rt2x00_set_field8(&rfcsr, RFCSR1_TX1_PD,
>> > +                             rt2x00dev->default_ant.tx_chain_num == 1);
>> > +   } else {
>> > +           rt2x00_set_field8(&rfcsr, RFCSR1_RX1_PD, 0);
>> > +           rt2x00_set_field8(&rfcsr, RFCSR1_TX1_PD, 0);
>> > +           rt2x00_set_field8(&rfcsr, RFCSR1_RX2_PD, 0);
>> > +           rt2x00_set_field8(&rfcsr, RFCSR1_TX2_PD, 0);
>> > +
>> > +           switch (rt2x00dev->default_ant.tx_chain_num) {
>> > +           case 1:
>> > +                   rt2x00_set_field8(&rfcsr, RFCSR1_TX1_PD, 1);
>> > +                   /* fall through */
>> > +           case 2:
>> > +                   rt2x00_set_field8(&rfcsr, RFCSR1_TX2_PD, 1);
>> > +                   break;
>> > +           }
>> > +
>> > +           switch (rt2x00dev->default_ant.rx_chain_num) {
>> > +           case 1:
>> > +                   rt2x00_set_field8(&rfcsr, RFCSR1_RX1_PD, 1);
>> > +                   /* fall through */
>> > +           case 2:
>> > +                   rt2x00_set_field8(&rfcsr, RFCSR1_RX2_PD, 1);
>> > +                   break;
>> > +           }
>> > +   }
>> > +   rt2800_rfcsr_write(rt2x00dev, 1, rfcsr);
>> > +
>> >     rt2800_rfcsr_read(rt2x00dev, 23, &rfcsr);
>> >     rt2x00_set_field8(&rfcsr, RFCSR23_FREQ_OFFSET, rt2x00dev->freq_offset);
>> >     rt2800_rfcsr_write(rt2x00dev, 23, rfcsr);
>>
>> To be honest, I think that this can be simplied to a single case for
>> both RT30xx and RT33xx. Just take the RT30xx branch of the added
>> if-statement and it should just work fine on both chipset families.
>>
>> Yes, I am aware the Ralink driver has slightly different code here, but
>> that just seems to be because they work with knowledge of the
>> limitations of RT33xx, which ensures that tx_chain_num and rx_chain_num
>> can never be 2 on that chipset, but still handling it doesn't harm. It
>> would merely result in better readable code.
>
> Not only the code is different, but RF_R1 register value we program
> is different for 30xx and 33xx when chain_num == 1 (changed by
> RFCSR1_{RX2,TX2)_PD bit).
>
> I'm not against merging these two cases and program different values
> into register than Ralink driver do, but maybe in the next linux
> release (counting from release of that change), so any breakage
> eventually caused by that merge could be easily detected.

OK. Indeed let's do this in a different commit, at least. I don't know
if it has to be a
different kernel release, as long as we are able to bisect it.

Acked-by: Gertjan van Wingerde <gwingerde@gmail.com>

for this patch as well.

---
Gertjan

^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: [PATCH 1/4] rt2800: radio 3xxx: reprogram only lower bits of RF_R3
  2012-01-30 15:17 [PATCH 1/4] rt2800: radio 3xxx: reprogram only lower bits of RF_R3 Stanislaw Gruszka
                   ` (2 preceding siblings ...)
  2012-01-30 15:17 ` [PATCH 4/4] rt2800: radio 3xxxx: channel switch RX/TX calibration fixes Stanislaw Gruszka
@ 2012-02-01 10:27 ` Helmut Schaa
  3 siblings, 0 replies; 14+ messages in thread
From: Helmut Schaa @ 2012-02-01 10:27 UTC (permalink / raw)
  To: Stanislaw Gruszka; +Cc: John W. Linville, linux-wireless, users

On Mon, Jan 30, 2012 at 4:17 PM, Stanislaw Gruszka <sgruszka@redhat.com> wrote:
> -       rt2800_rfcsr_write(rt2x00dev, 3, rf->rf3);
> +
> +       rt2800_rfcsr_read(rt2x00dev, 3, &rfcsr);
> +       rt2x00_set_field8(&rfcsr, RFCSR3_K, rf->rf3);
> +       rt2800_rfcsr_write(rt2x00dev, 3, rfcsr);

Mind to add the same/similar comment here as the legacy driver does?
It seems as if this only applies to RT3370 and newer while the change
doesn't affect older chipsets:

RT3370/RT3390 RF version is 0x3320 RF_R3 [7:4] is not reserved bits
RF_R3[6:4] (pa1_bc_cck) : PA1 Bias CCK
RF_R3[7] (pa2_cc_cck) : PA2 Cascode Bias CCK

Thanks,
Helmut

^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: [PATCH 3/4] rt2800: radio 3xxx: add channel switch calibration routines
  2012-01-30 15:17 ` [PATCH 3/4] rt2800: radio 3xxx: add channel switch calibration routines Stanislaw Gruszka
@ 2012-02-01 10:30   ` Helmut Schaa
  0 siblings, 0 replies; 14+ messages in thread
From: Helmut Schaa @ 2012-02-01 10:30 UTC (permalink / raw)
  To: Stanislaw Gruszka; +Cc: John W. Linville, linux-wireless, users

On Mon, Jan 30, 2012 at 4:17 PM, Stanislaw Gruszka <sgruszka@redhat.com> wrote:
> Synchronize code with Ralink driver:
> 2011_0719_RT3070_RT3370_RT5370_RT5372_Linux_STA_V2.5.0.3_DPO
> Based on functions:
> RT33xx_ChipSwitchChannel
> RT30xx_ChipSwitchChannel
>
> Acked-by: Gertjan van Wingerde <gwingerde@gmail.com>
> Signed-off-by: Stanislaw Gruszka <sgruszka@redhat.com>
> ---
>  drivers/net/wireless/rt2x00/rt2800lib.c |   14 ++++++++++++++
>  1 files changed, 14 insertions(+), 0 deletions(-)
>
> diff --git a/drivers/net/wireless/rt2x00/rt2800lib.c b/drivers/net/wireless/rt2x00/rt2800lib.c
> index a841918..b5dcc48 100644
> --- a/drivers/net/wireless/rt2x00/rt2800lib.c
> +++ b/drivers/net/wireless/rt2x00/rt2800lib.c
> @@ -1700,6 +1700,13 @@ static void rt2800_config_channel_rf3xxx(struct rt2x00_dev *rt2x00dev,
>        }
>        rt2800_rfcsr_write(rt2x00dev, 1, rfcsr);
>
> +       rt2800_rfcsr_read(rt2x00dev, 30, &rfcsr);
> +       rt2x00_set_field8(&rfcsr, RFCSR30_RF_CALIBRATION, 1);
> +       rt2800_rfcsr_write(rt2x00dev, 30, rfcsr);
> +       msleep(1);
> +       rt2x00_set_field8(&rfcsr, RFCSR30_RF_CALIBRATION, 0);
> +       rt2800_rfcsr_write(rt2x00dev, 30, rfcsr);
> +
>        rt2800_rfcsr_read(rt2x00dev, 23, &rfcsr);
>        rt2x00_set_field8(&rfcsr, RFCSR23_FREQ_OFFSET, rt2x00dev->freq_offset);
>        rt2800_rfcsr_write(rt2x00dev, 23, rfcsr);
> @@ -1710,6 +1717,13 @@ static void rt2800_config_channel_rf3xxx(struct rt2x00_dev *rt2x00dev,
>        rt2800_rfcsr_read(rt2x00dev, 7, &rfcsr);
>        rt2x00_set_field8(&rfcsr, RFCSR7_RF_TUNING, 1);
>        rt2800_rfcsr_write(rt2x00dev, 7, rfcsr);
> +
> +       rt2800_rfcsr_read(rt2x00dev, 30, &rfcsr);
> +       rt2x00_set_field8(&rfcsr, RFCSR30_RF_CALIBRATION, 1);
> +       rt2800_rfcsr_write(rt2x00dev, 30, rfcsr);
> +       msleep(1);
> +       rt2x00_set_field8(&rfcsr, RFCSR30_RF_CALIBRATION, 0);
> +       rt2800_rfcsr_write(rt2x00dev, 30, rfcsr);
>  }

This was also introduced for later chipsets only but since Ralink left the
code in for all chipsets I guess this is ok ...

Helmut

^ permalink raw reply	[flat|nested] 14+ messages in thread

* [PATCH 5/4] rt2800: document RF_R03 register bits [7:4]
  2012-01-30 15:17 ` [PATCH 4/4] rt2800: radio 3xxxx: channel switch RX/TX calibration fixes Stanislaw Gruszka
  2012-01-30 22:12   ` [rt2x00-users] " Gertjan van Wingerde
@ 2012-02-01 15:17   ` Stanislaw Gruszka
  2012-02-01 17:00     ` Helmut Schaa
  2012-02-01 19:11     ` [rt2x00-users] " Gertjan van Wingerde
  1 sibling, 2 replies; 14+ messages in thread
From: Stanislaw Gruszka @ 2012-02-01 15:17 UTC (permalink / raw)
  To: John W. Linville; +Cc: linux-wireless, users, Helmut Schaa

Taken from:
2011_0719_RT3070_RT3370_RT5370_RT5372_Linux_STA_V2.5.0.3_DPO
(based on function RT33xx_ChipSwitchChannel)

Signed-off-by: Stanislaw Gruszka <sgruszka@redhat.com>
---
 drivers/net/wireless/rt2x00/rt2800.h |    3 +++
 1 files changed, 3 insertions(+), 0 deletions(-)

diff --git a/drivers/net/wireless/rt2x00/rt2800.h b/drivers/net/wireless/rt2x00/rt2800.h
index c92fb2e..fac9ece 100644
--- a/drivers/net/wireless/rt2x00/rt2800.h
+++ b/drivers/net/wireless/rt2x00/rt2800.h
@@ -1799,6 +1799,9 @@ struct mac_iveiv_entry {
  * RFCSR 3:
  */
 #define RFCSR3_K			FIELD8(0x0f)
+/* Bits [7-4] for RF3320 (RT3370/RT3390), on other chipsets reserved */
+#define RFCSR3_PA1_BIAS_CCK		FIELD8(0x70);
+#define RFCSR3_PA2_CASCODE_BIAS_CCKK	FIELD8(0x80);
 
 /*
  * FRCSR 5:
-- 
1.7.1


^ permalink raw reply related	[flat|nested] 14+ messages in thread

* Re: [rt2x00-users] [PATCH 2/4] rt2800: radio 3xxx: program RF_R1 during channel switch
  2012-01-31 17:00       ` Gertjan van Wingerde
@ 2012-02-01 15:21         ` Stanislaw Gruszka
  0 siblings, 0 replies; 14+ messages in thread
From: Stanislaw Gruszka @ 2012-02-01 15:21 UTC (permalink / raw)
  To: Gertjan van Wingerde; +Cc: John W. Linville, linux-wireless, users

On Tue, Jan 31, 2012 at 06:00:09PM +0100, Gertjan van Wingerde wrote:
> > Not only the code is different, but RF_R1 register value we program
> > is different for 30xx and 33xx when chain_num == 1 (changed by
> > RFCSR1_{RX2,TX2)_PD bit).
> >
> > I'm not against merging these two cases and program different values
> > into register than Ralink driver do, but maybe in the next linux
> > release (counting from release of that change), so any breakage
> > eventually caused by that merge could be easily detected.
> 
> OK. Indeed let's do this in a different commit, at least. I don't know
> if it has to be a
> different kernel release, as long as we are able to bisect it.

Average users are using only released stuff, so if this patch fix
any practical problem i.e. throughput, and merging code will break
that again, fix and new breakage will stay unnoticed.

> Acked-by: Gertjan van Wingerde <gwingerde@gmail.com>
> 
> for this patch as well.

Thanks
Stanislaw

^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: [PATCH 5/4] rt2800: document RF_R03 register bits [7:4]
  2012-02-01 15:17   ` [PATCH 5/4] rt2800: document RF_R03 register bits [7:4] Stanislaw Gruszka
@ 2012-02-01 17:00     ` Helmut Schaa
  2012-02-01 19:11     ` [rt2x00-users] " Gertjan van Wingerde
  1 sibling, 0 replies; 14+ messages in thread
From: Helmut Schaa @ 2012-02-01 17:00 UTC (permalink / raw)
  To: Stanislaw Gruszka; +Cc: John W. Linville, linux-wireless, users

On Wed, Feb 1, 2012 at 4:17 PM, Stanislaw Gruszka <sgruszka@redhat.com> wrote:
> Taken from:
> 2011_0719_RT3070_RT3370_RT5370_RT5372_Linux_STA_V2.5.0.3_DPO
> (based on function RT33xx_ChipSwitchChannel)

Nice, thanks a lot!

> Signed-off-by: Stanislaw Gruszka <sgruszka@redhat.com>
> ---
>  drivers/net/wireless/rt2x00/rt2800.h |    3 +++
>  1 files changed, 3 insertions(+), 0 deletions(-)
>
> diff --git a/drivers/net/wireless/rt2x00/rt2800.h b/drivers/net/wireless/rt2x00/rt2800.h
> index c92fb2e..fac9ece 100644
> --- a/drivers/net/wireless/rt2x00/rt2800.h
> +++ b/drivers/net/wireless/rt2x00/rt2800.h
> @@ -1799,6 +1799,9 @@ struct mac_iveiv_entry {
>  * RFCSR 3:
>  */
>  #define RFCSR3_K                       FIELD8(0x0f)
> +/* Bits [7-4] for RF3320 (RT3370/RT3390), on other chipsets reserved */
> +#define RFCSR3_PA1_BIAS_CCK            FIELD8(0x70);
> +#define RFCSR3_PA2_CASCODE_BIAS_CCKK   FIELD8(0x80);
>
>  /*
>  * FRCSR 5:
> --
> 1.7.1
>

^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: [rt2x00-users] [PATCH 5/4] rt2800: document RF_R03 register bits [7:4]
  2012-02-01 15:17   ` [PATCH 5/4] rt2800: document RF_R03 register bits [7:4] Stanislaw Gruszka
  2012-02-01 17:00     ` Helmut Schaa
@ 2012-02-01 19:11     ` Gertjan van Wingerde
  1 sibling, 0 replies; 14+ messages in thread
From: Gertjan van Wingerde @ 2012-02-01 19:11 UTC (permalink / raw)
  To: Stanislaw Gruszka; +Cc: John W. Linville, linux-wireless, users

On 1 feb. 2012, at 16:17, Stanislaw Gruszka <sgruszka@redhat.com> wrote:

> Taken from:
> 2011_0719_RT3070_RT3370_RT5370_RT5372_Linux_STA_V2.5.0.3_DPO
> (based on function RT33xx_ChipSwitchChannel)
> 
> Signed-off-by: Stanislaw Gruszka <sgruszka@redhat.com>

Acked-by: Gertjan van Wingerde <gwingerde@gmail.com>

> ---
> drivers/net/wireless/rt2x00/rt2800.h |    3 +++
> 1 files changed, 3 insertions(+), 0 deletions(-)
> 
> diff --git a/drivers/net/wireless/rt2x00/rt2800.h b/drivers/net/wireless/rt2x00/rt2800.h
> index c92fb2e..fac9ece 100644
> --- a/drivers/net/wireless/rt2x00/rt2800.h
> +++ b/drivers/net/wireless/rt2x00/rt2800.h
> @@ -1799,6 +1799,9 @@ struct mac_iveiv_entry {
>  * RFCSR 3:
>  */
> #define RFCSR3_K            FIELD8(0x0f)
> +/* Bits [7-4] for RF3320 (RT3370/RT3390), on other chipsets reserved */
> +#define RFCSR3_PA1_BIAS_CCK        FIELD8(0x70);
> +#define RFCSR3_PA2_CASCODE_BIAS_CCKK    FIELD8(0x80);
> 
> /*
>  * FRCSR 5:
> -- 
> 1.7.1
> 
> 
> _______________________________________________
> users mailing list
> users@rt2x00.serialmonkey.com
> http://rt2x00.serialmonkey.com/mailman/listinfo/users_rt2x00.serialmonkey.com

^ permalink raw reply	[flat|nested] 14+ messages in thread

end of thread, other threads:[~2012-02-01 19:12 UTC | newest]

Thread overview: 14+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2012-01-30 15:17 [PATCH 1/4] rt2800: radio 3xxx: reprogram only lower bits of RF_R3 Stanislaw Gruszka
2012-01-30 15:17 ` [PATCH 2/4] rt2800: radio 3xxx: program RF_R1 during channel switch Stanislaw Gruszka
2012-01-30 22:06   ` [rt2x00-users] " Gertjan van Wingerde
2012-01-31  8:14     ` Stanislaw Gruszka
2012-01-31 17:00       ` Gertjan van Wingerde
2012-02-01 15:21         ` Stanislaw Gruszka
2012-01-30 15:17 ` [PATCH 3/4] rt2800: radio 3xxx: add channel switch calibration routines Stanislaw Gruszka
2012-02-01 10:30   ` Helmut Schaa
2012-01-30 15:17 ` [PATCH 4/4] rt2800: radio 3xxxx: channel switch RX/TX calibration fixes Stanislaw Gruszka
2012-01-30 22:12   ` [rt2x00-users] " Gertjan van Wingerde
2012-02-01 15:17   ` [PATCH 5/4] rt2800: document RF_R03 register bits [7:4] Stanislaw Gruszka
2012-02-01 17:00     ` Helmut Schaa
2012-02-01 19:11     ` [rt2x00-users] " Gertjan van Wingerde
2012-02-01 10:27 ` [PATCH 1/4] rt2800: radio 3xxx: reprogram only lower bits of RF_R3 Helmut Schaa

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.