Return-path: Received: from mail-lb0-f174.google.com ([209.85.217.174]:34994 "EHLO mail-lb0-f174.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1754226Ab2DWJ4X convert rfc822-to-8bit (ORCPT ); Mon, 23 Apr 2012 05:56:23 -0400 Received: by lbom4 with SMTP id m4so5481421lbo.19 for ; Mon, 23 Apr 2012 02:56:21 -0700 (PDT) MIME-Version: 1.0 In-Reply-To: <20120423095001.50af46cf@destiny.ordissimo> References: <1334759039-24349-1-git-send-email-anisse@astier.eu> <20120423095001.50af46cf@destiny.ordissimo> Date: Mon, 23 Apr 2012 11:56:21 +0200 Message-ID: (sfid-20120423_115627_163286_A1D209B9) Subject: Re: [PATCH] rt2800: add chipset revision RT5390R support From: Gertjan van Wingerde To: Anisse Astier Cc: "linux-wireless@vger.kernel.org" , "users@rt2x00.serialmonkey.com" , Julian Calaby , "linville@tuxdriver.com" , RA-ShiangTu , Ivo van Doorn , Helmut Schaa , Kevin Chou , John Li , RA-Jay Hung Content-Type: text/plain; charset=ISO-8859-1 Sender: linux-wireless-owner@vger.kernel.org List-ID: On Mon, Apr 23, 2012 at 9:50 AM, Anisse Astier wrote: > On Fri, 20 Apr 2012 19:07:38 +0200, Gertjan van Wingerde wrote : > >> Hi Anisse, >> >> >> On 18 apr. 2012, at 16:23, Anisse Astier wrote: >> >> > About 70% of the chips with revision RT5390R initialize incorrectly, using >> > the auxiliary antenna instead of the main one. The net result is that >> > signal reception is very poor (no AP further than 1M). >> > >> > This chipset differs from RT5390 and RT5390F by its support of hardware >> > antenna diversity. Therefore antenna selection should be done >> > differently, by disabling software features and previously selected >> > antenna. >> > >> > This changeset does just that, and makes all RT5390R work properly. >> > >> > This is based on Ralink's 2012_03_22_RT5572_Linux_STA_v2.6.0.0_DPO >> > driver. >> > >> > Signed-off-by: Anisse Astier >> > --- >> > drivers/net/wireless/rt2x00/rt2800.h ? ?| ? ?1 + >> > drivers/net/wireless/rt2x00/rt2800lib.c | ? 10 ++++++++++ >> > 2 files changed, 11 insertions(+) >> > >> > diff --git a/drivers/net/wireless/rt2x00/rt2800.h b/drivers/net/wireless/rt2x00/rt2800.h >> > index 063bfa8..1ce2634 100644 >> > --- a/drivers/net/wireless/rt2x00/rt2800.h >> > +++ b/drivers/net/wireless/rt2x00/rt2800.h >> > @@ -83,6 +83,7 @@ >> > #define REV_RT3090E ? ? ? ? ? ?0x0211 >> > #define REV_RT3390E ? ? ? ? ? ?0x0211 >> > #define REV_RT5390F ? ? ? ? ? ?0x0502 >> > +#define REV_RT5390R ? ? ? ? ? ?0x1502 >> > >> > /* >> > ?* Signal information. >> > diff --git a/drivers/net/wireless/rt2x00/rt2800lib.c b/drivers/net/wireless/rt2x00/rt2800lib.c >> > index bd19802..6c95101 100644 >> > --- a/drivers/net/wireless/rt2x00/rt2800lib.c >> > +++ b/drivers/net/wireless/rt2x00/rt2800lib.c >> > @@ -3356,6 +3356,16 @@ static int rt2800_init_bbp(struct rt2x00_dev *rt2x00dev) >> > ? ? ? ? ? ?rt2800_register_write(rt2x00dev, GPIO_CTRL_CFG, reg); >> > ? ? ? ?} >> > >> > + ? ? ? ?/* This chip has hardware antenna diversity*/ >> > + ? ? ? ?if (rt2x00_rt_rev_gte(rt2x00dev, RT5390, REV_RT5390R)) { >> > + ? ? ? ? ? ?rt2x00dev->default_ant.tx = ANTENNA_HW_DIVERSITY; /* Unused */ >> > + ? ? ? ? ? ?rt2x00dev->default_ant.rx = ANTENNA_HW_DIVERSITY; /* Unused */ >> > + >> > + ? ? ? ? ? ?rt2800_bbp_write(rt2x00dev, 150, 0); /* Disable Antenna Software OFDM */ >> > + ? ? ? ? ? ?rt2800_bbp_write(rt2x00dev, 151, 0); /* Disable Antenna Software CCK */ >> > + ? ? ? ? ? ?rt2800_bbp_write(rt2x00dev, 154, 0); /* Clear previously selected antenna */ >> > + ? ? ? ?} >> > + >> > ? ? ? ?rt2800_bbp_read(rt2x00dev, 152, &value); >> > ? ? ? ?if (ant == 0) >> > ? ? ? ? ? ?rt2x00_set_field8(&value, BBP152_RX_DEFAULT_ANT, 1); >> >> Thanks for figuring this out. However, I think the default_ant initializations should be put at the place where the other initializations for the same field are (I believe that is somewhere in the rt2800_init_eeprom function (or a function with a similar name). > > I'm not even sure those are needed. I put them there in case someone > would want to use them in the future. What do you think ? > I would still include them, if only to signal that for these devices we are using HW antenna diversity. However, as indicated, please put them at the right spot in the code. --- Gertjan