Hi Anisse, On 05/03/12 18:10, Anisse Astier wrote: > Hi, > > Any opinon on the patch below ? > Since the patch has already been merged by John I didn't think it was necessary anymore to comment, as I has no issues with the patch anymore. > On Mon, 23 Apr 2012 12:33:11 +0200, Anisse Astier <anisse@xxxxxxxxx> 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 <anisse@xxxxxxxxx> >> --- >> Changes since v1: >> - moved default_ant inits to proper function, thanks to Gertjan van Wingerde ! >> >> --- >> drivers/net/wireless/rt2x00/rt2800.h | 1 + >> drivers/net/wireless/rt2x00/rt2800lib.c | 12 ++++++++++++ >> 2 files changed, 13 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..1cd16b4 100644 >> --- a/drivers/net/wireless/rt2x00/rt2800lib.c >> +++ b/drivers/net/wireless/rt2x00/rt2800lib.c >> @@ -3356,6 +3356,13 @@ 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)) { >> + 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); >> @@ -4291,6 +4298,11 @@ int rt2800_init_eeprom(struct rt2x00_dev *rt2x00dev) >> rt2x00dev->default_ant.rx = ANTENNA_A; >> } >> >> + 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 */ >> + } >> + >> /* >> * Determine external LNA informations. >> */ > > > Regards, > > Anisse -- --- Gertjan -- To unsubscribe from this list: send the line "unsubscribe linux-wireless" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html