[PATCH] bcm43xx: OFDM fix for rev 1 cards
Nearly all of the writes to the bcm43xx internal lookup tables (ilt) involve 16-bit quantities. Accordingly, the ilt_write routine was coded to pass a u16 value. For one early GPHY chip, 32-bit quantities are needed. For those writes, the value was clipped to 16 bits. This patch adds an ilt_write32 routine that receives a 32-bit quantity and writes it to the appropriate locations. Signed-off-by: Larry Finger<Larry.Finger@lwfinger.net> Signed-off-by: John W. Linville <linville@tuxdriver.com>
This commit is contained in:
committed by
John W. Linville
parent
740ac4fb08
commit
a5d79d1e4f
@ -344,7 +344,7 @@ static void bcm43xx_phy_setupg(struct bcm43xx_private *bcm)
|
||||
for (i = 0; i < BCM43xx_ILT_NOISEG1_SIZE; i++)
|
||||
bcm43xx_ilt_write(bcm, 0x1800 + i, bcm43xx_ilt_noiseg1[i]);
|
||||
for (i = 0; i < BCM43xx_ILT_ROTOR_SIZE; i++)
|
||||
bcm43xx_ilt_write(bcm, 0x2000 + i, bcm43xx_ilt_rotor[i]);
|
||||
bcm43xx_ilt_write32(bcm, 0x2000 + i, bcm43xx_ilt_rotor[i]);
|
||||
} else {
|
||||
/* nrssi values are signed 6-bit values. Not sure why we write 0x7654 here... */
|
||||
bcm43xx_nrssi_hw_write(bcm, 0xBA98, (s16)0x7654);
|
||||
@ -384,7 +384,7 @@ static void bcm43xx_phy_setupg(struct bcm43xx_private *bcm)
|
||||
|
||||
if (phy->rev == 1) {
|
||||
for (i = 0; i < BCM43xx_ILT_RETARD_SIZE; i++)
|
||||
bcm43xx_ilt_write(bcm, 0x2400 + i, bcm43xx_ilt_retard[i]);
|
||||
bcm43xx_ilt_write32(bcm, 0x2400 + i, bcm43xx_ilt_retard[i]);
|
||||
for (i = 0; i < 4; i++) {
|
||||
bcm43xx_ilt_write(bcm, 0x5404 + i, 0x0020);
|
||||
bcm43xx_ilt_write(bcm, 0x5408 + i, 0x0020);
|
||||
@ -507,10 +507,10 @@ static void bcm43xx_phy_setupa(struct bcm43xx_private *bcm)
|
||||
for (i = 0; i < BCM43xx_ILT_NOISEA2_SIZE; i++)
|
||||
bcm43xx_ilt_write(bcm, 0x1800 + i, bcm43xx_ilt_noisea2[i]);
|
||||
for (i = 0; i < BCM43xx_ILT_ROTOR_SIZE; i++)
|
||||
bcm43xx_ilt_write(bcm, 0x2000 + i, bcm43xx_ilt_rotor[i]);
|
||||
bcm43xx_ilt_write32(bcm, 0x2000 + i, bcm43xx_ilt_rotor[i]);
|
||||
bcm43xx_phy_init_noisescaletbl(bcm);
|
||||
for (i = 0; i < BCM43xx_ILT_RETARD_SIZE; i++)
|
||||
bcm43xx_ilt_write(bcm, 0x2400 + i, bcm43xx_ilt_retard[i]);
|
||||
bcm43xx_ilt_write32(bcm, 0x2400 + i, bcm43xx_ilt_retard[i]);
|
||||
break;
|
||||
case 3:
|
||||
for (i = 0; i < 64; i++)
|
||||
|
Reference in New Issue
Block a user