1294
static void ath_ant_div_conf_fast_divbias(struct ath_hw_antcomb_conf *ant_conf)
1320
static void ath_ant_div_conf_fast_divbias(struct ath_hw_antcomb_conf *ant_conf,
1321
struct ath_ant_comb *antcomb, int alt_ratio)
1296
/* Adjust the fast_div_bias based on main and alt lna conf */
1297
switch ((ant_conf->main_lna_conf << 4) | ant_conf->alt_lna_conf) {
1298
case (0x01): /* A-B LNA2 */
1299
ant_conf->fast_div_bias = 0x3b;
1301
case (0x02): /* A-B LNA1 */
1302
ant_conf->fast_div_bias = 0x3d;
1304
case (0x03): /* A-B A+B */
1305
ant_conf->fast_div_bias = 0x1;
1307
case (0x10): /* LNA2 A-B */
1308
ant_conf->fast_div_bias = 0x7;
1310
case (0x12): /* LNA2 LNA1 */
1311
ant_conf->fast_div_bias = 0x2;
1313
case (0x13): /* LNA2 A+B */
1314
ant_conf->fast_div_bias = 0x7;
1316
case (0x20): /* LNA1 A-B */
1317
ant_conf->fast_div_bias = 0x6;
1319
case (0x21): /* LNA1 LNA2 */
1320
ant_conf->fast_div_bias = 0x0;
1322
case (0x23): /* LNA1 A+B */
1323
ant_conf->fast_div_bias = 0x6;
1325
case (0x30): /* A+B A-B */
1326
ant_conf->fast_div_bias = 0x1;
1328
case (0x31): /* A+B LNA2 */
1329
ant_conf->fast_div_bias = 0x3b;
1331
case (0x32): /* A+B LNA1 */
1332
ant_conf->fast_div_bias = 0x3d;
1323
if (ant_conf->div_group == 0) {
1324
/* Adjust the fast_div_bias based on main and alt lna conf */
1325
switch ((ant_conf->main_lna_conf << 4) |
1326
ant_conf->alt_lna_conf) {
1327
case (0x01): /* A-B LNA2 */
1328
ant_conf->fast_div_bias = 0x3b;
1330
case (0x02): /* A-B LNA1 */
1331
ant_conf->fast_div_bias = 0x3d;
1333
case (0x03): /* A-B A+B */
1334
ant_conf->fast_div_bias = 0x1;
1336
case (0x10): /* LNA2 A-B */
1337
ant_conf->fast_div_bias = 0x7;
1339
case (0x12): /* LNA2 LNA1 */
1340
ant_conf->fast_div_bias = 0x2;
1342
case (0x13): /* LNA2 A+B */
1343
ant_conf->fast_div_bias = 0x7;
1345
case (0x20): /* LNA1 A-B */
1346
ant_conf->fast_div_bias = 0x6;
1348
case (0x21): /* LNA1 LNA2 */
1349
ant_conf->fast_div_bias = 0x0;
1351
case (0x23): /* LNA1 A+B */
1352
ant_conf->fast_div_bias = 0x6;
1354
case (0x30): /* A+B A-B */
1355
ant_conf->fast_div_bias = 0x1;
1357
case (0x31): /* A+B LNA2 */
1358
ant_conf->fast_div_bias = 0x3b;
1360
case (0x32): /* A+B LNA1 */
1361
ant_conf->fast_div_bias = 0x3d;
1366
} else if (ant_conf->div_group == 2) {
1367
/* Adjust the fast_div_bias based on main and alt_lna_conf */
1368
switch ((ant_conf->main_lna_conf << 4) |
1369
ant_conf->alt_lna_conf) {
1370
case (0x01): /* A-B LNA2 */
1371
ant_conf->fast_div_bias = 0x1;
1372
ant_conf->main_gaintb = 0;
1373
ant_conf->alt_gaintb = 0;
1375
case (0x02): /* A-B LNA1 */
1376
ant_conf->fast_div_bias = 0x1;
1377
ant_conf->main_gaintb = 0;
1378
ant_conf->alt_gaintb = 0;
1380
case (0x03): /* A-B A+B */
1381
ant_conf->fast_div_bias = 0x1;
1382
ant_conf->main_gaintb = 0;
1383
ant_conf->alt_gaintb = 0;
1385
case (0x10): /* LNA2 A-B */
1386
if (!(antcomb->scan) &&
1387
(alt_ratio > ATH_ANT_DIV_COMB_ALT_ANT_RATIO))
1388
ant_conf->fast_div_bias = 0x1;
1390
ant_conf->fast_div_bias = 0x2;
1391
ant_conf->main_gaintb = 0;
1392
ant_conf->alt_gaintb = 0;
1394
case (0x12): /* LNA2 LNA1 */
1395
ant_conf->fast_div_bias = 0x1;
1396
ant_conf->main_gaintb = 0;
1397
ant_conf->alt_gaintb = 0;
1399
case (0x13): /* LNA2 A+B */
1400
if (!(antcomb->scan) &&
1401
(alt_ratio > ATH_ANT_DIV_COMB_ALT_ANT_RATIO))
1402
ant_conf->fast_div_bias = 0x1;
1404
ant_conf->fast_div_bias = 0x2;
1405
ant_conf->main_gaintb = 0;
1406
ant_conf->alt_gaintb = 0;
1408
case (0x20): /* LNA1 A-B */
1409
if (!(antcomb->scan) &&
1410
(alt_ratio > ATH_ANT_DIV_COMB_ALT_ANT_RATIO))
1411
ant_conf->fast_div_bias = 0x1;
1413
ant_conf->fast_div_bias = 0x2;
1414
ant_conf->main_gaintb = 0;
1415
ant_conf->alt_gaintb = 0;
1417
case (0x21): /* LNA1 LNA2 */
1418
ant_conf->fast_div_bias = 0x1;
1419
ant_conf->main_gaintb = 0;
1420
ant_conf->alt_gaintb = 0;
1422
case (0x23): /* LNA1 A+B */
1423
if (!(antcomb->scan) &&
1424
(alt_ratio > ATH_ANT_DIV_COMB_ALT_ANT_RATIO))
1425
ant_conf->fast_div_bias = 0x1;
1427
ant_conf->fast_div_bias = 0x2;
1428
ant_conf->main_gaintb = 0;
1429
ant_conf->alt_gaintb = 0;
1431
case (0x30): /* A+B A-B */
1432
ant_conf->fast_div_bias = 0x1;
1433
ant_conf->main_gaintb = 0;
1434
ant_conf->alt_gaintb = 0;
1436
case (0x31): /* A+B LNA2 */
1437
ant_conf->fast_div_bias = 0x1;
1438
ant_conf->main_gaintb = 0;
1439
ant_conf->alt_gaintb = 0;
1441
case (0x32): /* A+B LNA1 */
1442
ant_conf->fast_div_bias = 0x1;
1443
ant_conf->main_gaintb = 0;
1444
ant_conf->alt_gaintb = 0;
1339
1454
/* Antenna diversity and combining */