linux-wireless.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Gabor Juhos <juhosg@openwrt.org>
To: stf_xl@wp.pl
Cc: "" <linville@tuxdriver.com>,
	linux-wireless@vger.kernel.org, users@rt2x00.serialmonkey.com
Subject: Re: [PATCH 02/11] rt2800: move rf init calibration code
Date: Wed, 10 Apr 2013 09:12:22 +0200	[thread overview]
Message-ID: <516510D6.5090700@openwrt.org> (raw)
In-Reply-To: <1365519930-3230-3-git-send-email-stf_xl@wp.pl>

Hi Stanislaw,

> From: Stanislaw Gruszka <stf_xl@wp.pl>
> 
> Add separate functions for rf init calibration code and use it in
> proper init rf routines.
> 
> Signed-off-by: Stanislaw Gruszka <stf_xl@wp.pl>
> ---
>  drivers/net/wireless/rt2x00/rt2800lib.c |   53 ++++++++++++++++++-------------
>  1 files changed, 31 insertions(+), 22 deletions(-)
> 
> diff --git a/drivers/net/wireless/rt2x00/rt2800lib.c b/drivers/net/wireless/rt2x00/rt2800lib.c
> index d092b47..334973a 100644
> --- a/drivers/net/wireless/rt2x00/rt2800lib.c
> +++ b/drivers/net/wireless/rt2x00/rt2800lib.c
> @@ -4425,6 +4425,18 @@ static void rt2800_normal_mode_setup_5xxx(struct rt2x00_dev *rt2x00dev)
>  	rt2800_rfcsr_write(rt2x00dev, 30, reg);
>  }
>  
> +static void rt2800_rf_init_calibration_53xx(struct rt2x00_dev *rt2x00dev)
> +{
> +	u8 rfcsr;
> +
> +	rt2800_rfcsr_read(rt2x00dev, 2, &rfcsr);
> +	rt2x00_set_field8(&rfcsr, RFCSR2_RESCAL_EN, 1);
> +	rt2800_rfcsr_write(rt2x00dev, 2, rfcsr);
> +	msleep(1);
> +	rt2x00_set_field8(&rfcsr, RFCSR2_RESCAL_EN, 0);
> +	rt2800_rfcsr_write(rt2x00dev, 2, rfcsr);
> +}
> +
>  static void rt2800_init_rfcsr_305x_soc(struct rt2x00_dev *rt2x00dev)
>  {
>  	rt2800_rfcsr_write(rt2x00dev, 0, 0x50);
> @@ -4463,6 +4475,19 @@ static void rt2800_init_rfcsr_305x_soc(struct rt2x00_dev *rt2x00dev)
>  
>  static void rt2800_init_rfcsr_30xx(struct rt2x00_dev *rt2x00dev)
>  {
> +	u8 rfcsr;
> +
> +	/*
> +	 * Init RF calibration.
> +	 * XXX: vendor driver do this only for 3070 ?
> +	 */
> +	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_write(rt2x00dev, 4, 0x40);
>  	rt2800_rfcsr_write(rt2x00dev, 5, 0x03);
>  	rt2800_rfcsr_write(rt2x00dev, 6, 0x02);
> @@ -4486,6 +4511,8 @@ static void rt2800_init_rfcsr_30xx(struct rt2x00_dev *rt2x00dev)
>  
>  static void rt2800_init_rfcsr_3290(struct rt2x00_dev *rt2x00dev)
>  {
> +	rt2800_rf_init_calibration_53xx(rt2x00dev);
> +
>  	rt2800_rfcsr_write(rt2x00dev, 1, 0x0f);
>  	rt2800_rfcsr_write(rt2x00dev, 2, 0x80);
>  	rt2800_rfcsr_write(rt2x00dev, 3, 0x08);
> @@ -4674,6 +4701,8 @@ static void rt2800_init_rfcsr_3572(struct rt2x00_dev *rt2x00dev)
>  
>  static void rt2800_init_rfcsr_5390(struct rt2x00_dev *rt2x00dev)
>  {
> +	rt2800_rf_init_calibration_53xx(rt2x00dev);
> +
>  	rt2800_rfcsr_write(rt2x00dev, 1, 0x0f);
>  	rt2800_rfcsr_write(rt2x00dev, 2, 0x80);
>  	rt2800_rfcsr_write(rt2x00dev, 3, 0x88);
> @@ -4760,6 +4789,8 @@ static void rt2800_init_rfcsr_5390(struct rt2x00_dev *rt2x00dev)
>  
>  static void rt2800_init_rfcsr_5392(struct rt2x00_dev *rt2x00dev)
>  {
> +	rt2800_rf_init_calibration_53xx(rt2x00dev);
> +
>  	rt2800_rfcsr_write(rt2x00dev, 1, 0x17);
>  	rt2800_rfcsr_write(rt2x00dev, 2, 0x80);
>  	rt2800_rfcsr_write(rt2x00dev, 3, 0x88);
> @@ -4882,28 +4913,6 @@ static int rt2800_init_rfcsr(struct rt2x00_dev *rt2x00dev)
>  	    !rt2800_is_305x_soc(rt2x00dev))
>  		return 0;
>  
> -	/*
> -	 * Init RF calibration.
> -	 */
> -
> -	if (rt2x00_rt(rt2x00dev, RT3290) ||
> -	    rt2x00_rt(rt2x00dev, RT5390) ||
> -	    rt2x00_rt(rt2x00dev, RT5392)) {
> -		rt2800_rfcsr_read(rt2x00dev, 2, &rfcsr);
> -		rt2x00_set_field8(&rfcsr, RFCSR2_RESCAL_EN, 1);
> -		rt2800_rfcsr_write(rt2x00dev, 2, rfcsr);
> -		msleep(1);
> -		rt2x00_set_field8(&rfcsr, RFCSR2_RESCAL_EN, 0);
> -		rt2800_rfcsr_write(rt2x00dev, 2, rfcsr);
> -	} else {
> -		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);
> -	}

The code in the else branch is required by the 305x_soc devices. However the
change moves it into the 'rt2800_init_rfcsr_30xx' function and that is only
called for RT3070, RT3071, RT3090.

Either add the code into the 'rt2800_init_rfcsr_305x_soc function' as well or
create a helper function and call that from 'rt2800_init_rfcsr_30xx' and from
'rt2800_init_rfcsr_305x_soc'.

> -
>  	if (rt2800_is_305x_soc(rt2x00dev)) {
>  		rt2800_init_rfcsr_305x_soc(rt2x00dev);
>  		return 0;
> 

-Gabor

  reply	other threads:[~2013-04-10  7:12 UTC|newest]

Thread overview: 26+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-04-09 15:05 [PATCH 0/11] rt2800: cleanup rfcsr init procedures stf_xl
2013-04-09 15:05 ` [PATCH 01/11] rt2800: merge 5xxx normal mode setup stf_xl
     [not found]   ` <3B6ED6A8-A24C-4F0C-941C-7A24F55172DA@gmail.com>
2013-04-14 20:20     ` Gertjan van Wingerde
2013-04-09 15:05 ` [PATCH 02/11] rt2800: move rf init calibration code stf_xl
2013-04-10  7:12   ` Gabor Juhos [this message]
2013-04-10 15:15     ` Stanislaw Gruszka
     [not found]   ` <F57510E7-8DE6-4BA4-8256-2144DDE5B30D@gmail.com>
2013-04-14 20:14     ` Gertjan van Wingerde
2013-04-09 15:05 ` [PATCH 03/11] rt2800: move RFCSR29_RSSI_GAIN to 3290 specific rfcsr init stf_xl
     [not found]   ` <413EC3EA-0BB4-42CC-A95A-52468DC35C67@gmail.com>
2013-04-14 20:15     ` Gertjan van Wingerde
2013-04-09 15:05 ` [PATCH 04/11] rt2800: move 30xx common rf init code stf_xl
     [not found]   ` <A636A59B-CC0A-41E2-98A8-0165993938FA@gmail.com>
2013-04-14 20:15     ` Gertjan van Wingerde
2013-04-09 15:05 ` [PATCH 05/11] rt2800: move GPIO_SWITCH setup to 3390 specific rfcsr init stf_xl
     [not found]   ` <5FA86BE2-7773-4D09-B891-6B1C80DCED72@gmail.com>
2013-04-14 20:16     ` Gertjan van Wingerde
2013-04-09 15:05 ` [PATCH 06/11] rt2800: move RFCSR6_R2 & LDO_CFG0 setup to 3572 " stf_xl
     [not found]   ` <66918CCA-AAE0-47BF-B989-58A019810AC7@gmail.com>
2013-04-14 20:17     ` Gertjan van Wingerde
2013-04-09 15:05 ` [PATCH 07/11] rt2800: add rt2800_rx_filter_calibration procedure stf_xl
     [not found]   ` <948863C1-A75D-4625-A880-5589875479D0@gmail.com>
2013-04-14 20:17     ` Gertjan van Wingerde
2013-04-17  8:23       ` Stanislaw Gruszka
2013-04-09 15:05 ` [PATCH 08/11] rt2800: move RF_R27 setup to individual rfcsr init subroutines stf_xl
     [not found]   ` <742363D2-2E4F-40E5-81BB-69252F998D43@gmail.com>
2013-04-14 20:18     ` Gertjan van Wingerde
2013-04-09 15:05 ` [PATCH 09/11] rt2800: add rt2800_led_open_drain_enable subroutine stf_xl
     [not found]   ` <0E1FF2EE-1777-42C7-9052-51895C784968@gmail.com>
2013-04-14 20:18     ` Gertjan van Wingerde
2013-04-09 15:05 ` [PATCH 10/11] rt2800: add rt2800_normal_mode_setup_3xxx subroutine stf_xl
     [not found]   ` <D7DE287D-EED7-4657-B388-ADCCDB823A8B@gmail.com>
2013-04-14 20:19     ` Gertjan van Wingerde
2013-04-09 15:05 ` [PATCH 11/11] rt2800: cleanup rt2800_init_rfcsr stf_xl
     [not found]   ` <35BCCCCF-97E2-42EE-839F-89DB7542719B@gmail.com>
2013-04-14 20:20     ` Gertjan van Wingerde

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=516510D6.5090700@openwrt.org \
    --to=juhosg@openwrt.org \
    --cc=linux-wireless@vger.kernel.org \
    --cc=linville@tuxdriver.com \
    --cc=stf_xl@wp.pl \
    --cc=users@rt2x00.serialmonkey.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).