Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

ath9k: add fast_div_bias configuration for diversity group 1

The patch adds the missing configuration code for diversity
group 1.

Signed-off-by: Gabor Juhos <juhosg@openwrt.org>
Signed-off-by: John W. Linville <linville@tuxdriver.com>

authored by

Gabor Juhos and committed by
John W. Linville
e7ef5bc0 223c5a87

+83
+83
drivers/net/wireless/ath/ath9k/recv.c
··· 1364 1364 default: 1365 1365 break; 1366 1366 } 1367 + } else if (ant_conf->div_group == 1) { 1368 + /* Adjust the fast_div_bias based on main and alt_lna_conf */ 1369 + switch ((ant_conf->main_lna_conf << 4) | 1370 + ant_conf->alt_lna_conf) { 1371 + case 0x01: /* A-B LNA2 */ 1372 + ant_conf->fast_div_bias = 0x1; 1373 + ant_conf->main_gaintb = 0; 1374 + ant_conf->alt_gaintb = 0; 1375 + break; 1376 + case 0x02: /* A-B LNA1 */ 1377 + ant_conf->fast_div_bias = 0x1; 1378 + ant_conf->main_gaintb = 0; 1379 + ant_conf->alt_gaintb = 0; 1380 + break; 1381 + case 0x03: /* A-B A+B */ 1382 + ant_conf->fast_div_bias = 0x1; 1383 + ant_conf->main_gaintb = 0; 1384 + ant_conf->alt_gaintb = 0; 1385 + break; 1386 + case 0x10: /* LNA2 A-B */ 1387 + if (!(antcomb->scan) && 1388 + (alt_ratio > ATH_ANT_DIV_COMB_ALT_ANT_RATIO)) 1389 + ant_conf->fast_div_bias = 0x3f; 1390 + else 1391 + ant_conf->fast_div_bias = 0x1; 1392 + ant_conf->main_gaintb = 0; 1393 + ant_conf->alt_gaintb = 0; 1394 + break; 1395 + case 0x12: /* LNA2 LNA1 */ 1396 + ant_conf->fast_div_bias = 0x1; 1397 + ant_conf->main_gaintb = 0; 1398 + ant_conf->alt_gaintb = 0; 1399 + break; 1400 + case 0x13: /* LNA2 A+B */ 1401 + if (!(antcomb->scan) && 1402 + (alt_ratio > ATH_ANT_DIV_COMB_ALT_ANT_RATIO)) 1403 + ant_conf->fast_div_bias = 0x3f; 1404 + else 1405 + ant_conf->fast_div_bias = 0x1; 1406 + ant_conf->main_gaintb = 0; 1407 + ant_conf->alt_gaintb = 0; 1408 + break; 1409 + case 0x20: /* LNA1 A-B */ 1410 + if (!(antcomb->scan) && 1411 + (alt_ratio > ATH_ANT_DIV_COMB_ALT_ANT_RATIO)) 1412 + ant_conf->fast_div_bias = 0x3f; 1413 + else 1414 + ant_conf->fast_div_bias = 0x1; 1415 + ant_conf->main_gaintb = 0; 1416 + ant_conf->alt_gaintb = 0; 1417 + break; 1418 + case 0x21: /* LNA1 LNA2 */ 1419 + ant_conf->fast_div_bias = 0x1; 1420 + ant_conf->main_gaintb = 0; 1421 + ant_conf->alt_gaintb = 0; 1422 + break; 1423 + case 0x23: /* LNA1 A+B */ 1424 + if (!(antcomb->scan) && 1425 + (alt_ratio > ATH_ANT_DIV_COMB_ALT_ANT_RATIO)) 1426 + ant_conf->fast_div_bias = 0x3f; 1427 + else 1428 + ant_conf->fast_div_bias = 0x1; 1429 + ant_conf->main_gaintb = 0; 1430 + ant_conf->alt_gaintb = 0; 1431 + break; 1432 + case 0x30: /* A+B A-B */ 1433 + ant_conf->fast_div_bias = 0x1; 1434 + ant_conf->main_gaintb = 0; 1435 + ant_conf->alt_gaintb = 0; 1436 + break; 1437 + case 0x31: /* A+B LNA2 */ 1438 + ant_conf->fast_div_bias = 0x1; 1439 + ant_conf->main_gaintb = 0; 1440 + ant_conf->alt_gaintb = 0; 1441 + break; 1442 + case 0x32: /* A+B LNA1 */ 1443 + ant_conf->fast_div_bias = 0x1; 1444 + ant_conf->main_gaintb = 0; 1445 + ant_conf->alt_gaintb = 0; 1446 + break; 1447 + default: 1448 + break; 1449 + } 1367 1450 } else if (ant_conf->div_group == 2) { 1368 1451 /* Adjust the fast_div_bias based on main and alt_lna_conf */ 1369 1452 switch ((ant_conf->main_lna_conf << 4) |