diff options
author | Sujith <Sujith.Manoharan@atheros.com> | 2009-03-12 23:25:55 -0400 |
---|---|---|
committer | John W. Linville <linville@tuxdriver.com> | 2009-03-27 20:12:47 -0400 |
commit | 7d01b221b338ef2a5b1ffa9c60645c0bdcce191e (patch) | |
tree | 48ca1335ace7f9256182a326ba77b9eeaa5c9bd4 /drivers/net/wireless/ath9k | |
parent | b572b24c578ab1be9d1fcb11d2d8244878757a66 (diff) |
ath9k: Miscellaneous EEPROM handling cleanup
Print the EEPROM version/revision on init.
Choose appropriate debug masks on error conditions,
and remove useless print messages.
Signed-off-by: John W. Linville <linville@tuxdriver.com>
Diffstat (limited to 'drivers/net/wireless/ath9k')
-rw-r--r-- | drivers/net/wireless/ath9k/eeprom.c | 75 | ||||
-rw-r--r-- | drivers/net/wireless/ath9k/hw.c | 4 |
2 files changed, 28 insertions, 51 deletions
diff --git a/drivers/net/wireless/ath9k/eeprom.c b/drivers/net/wireless/ath9k/eeprom.c index 183c949bcca1..6c9bc5fdb04a 100644 --- a/drivers/net/wireless/ath9k/eeprom.c +++ b/drivers/net/wireless/ath9k/eeprom.c | |||
@@ -342,8 +342,7 @@ static int ath9k_hw_4k_get_eeprom_rev(struct ath_hw *ah) | |||
342 | static bool ath9k_hw_4k_fill_eeprom(struct ath_hw *ah) | 342 | static bool ath9k_hw_4k_fill_eeprom(struct ath_hw *ah) |
343 | { | 343 | { |
344 | #define SIZE_EEPROM_4K (sizeof(struct ar5416_eeprom_4k) / sizeof(u16)) | 344 | #define SIZE_EEPROM_4K (sizeof(struct ar5416_eeprom_4k) / sizeof(u16)) |
345 | struct ar5416_eeprom_4k *eep = &ah->eeprom.map4k; | 345 | u16 *eep_data = (u16 *)&ah->eeprom.map4k; |
346 | u16 *eep_data; | ||
347 | int addr, eep_start_loc = 0; | 346 | int addr, eep_start_loc = 0; |
348 | 347 | ||
349 | eep_start_loc = 64; | 348 | eep_start_loc = 64; |
@@ -353,8 +352,6 @@ static bool ath9k_hw_4k_fill_eeprom(struct ath_hw *ah) | |||
353 | "Reading from EEPROM, not flash\n"); | 352 | "Reading from EEPROM, not flash\n"); |
354 | } | 353 | } |
355 | 354 | ||
356 | eep_data = (u16 *)eep; | ||
357 | |||
358 | for (addr = 0; addr < SIZE_EEPROM_4K; addr++) { | 355 | for (addr = 0; addr < SIZE_EEPROM_4K; addr++) { |
359 | if (!ath9k_hw_nvram_read(ah, addr + eep_start_loc, eep_data)) { | 356 | if (!ath9k_hw_nvram_read(ah, addr + eep_start_loc, eep_data)) { |
360 | DPRINTF(ah->ah_sc, ATH_DBG_EEPROM, | 357 | DPRINTF(ah->ah_sc, ATH_DBG_EEPROM, |
@@ -363,6 +360,7 @@ static bool ath9k_hw_4k_fill_eeprom(struct ath_hw *ah) | |||
363 | } | 360 | } |
364 | eep_data++; | 361 | eep_data++; |
365 | } | 362 | } |
363 | |||
366 | return true; | 364 | return true; |
367 | #undef SIZE_EEPROM_4K | 365 | #undef SIZE_EEPROM_4K |
368 | } | 366 | } |
@@ -379,16 +377,15 @@ static int ath9k_hw_4k_check_eeprom(struct ath_hw *ah) | |||
379 | 377 | ||
380 | 378 | ||
381 | if (!ath9k_hw_use_flash(ah)) { | 379 | if (!ath9k_hw_use_flash(ah)) { |
382 | |||
383 | if (!ath9k_hw_nvram_read(ah, AR5416_EEPROM_MAGIC_OFFSET, | 380 | if (!ath9k_hw_nvram_read(ah, AR5416_EEPROM_MAGIC_OFFSET, |
384 | &magic)) { | 381 | &magic)) { |
385 | DPRINTF(ah->ah_sc, ATH_DBG_EEPROM, | 382 | DPRINTF(ah->ah_sc, ATH_DBG_FATAL, |
386 | "Reading Magic # failed\n"); | 383 | "Reading Magic # failed\n"); |
387 | return false; | 384 | return false; |
388 | } | 385 | } |
389 | 386 | ||
390 | DPRINTF(ah->ah_sc, ATH_DBG_EEPROM, | 387 | DPRINTF(ah->ah_sc, ATH_DBG_EEPROM, |
391 | "Read Magic = 0x%04X\n", magic); | 388 | "Read Magic = 0x%04X\n", magic); |
392 | 389 | ||
393 | if (magic != AR5416_EEPROM_MAGIC) { | 390 | if (magic != AR5416_EEPROM_MAGIC) { |
394 | magic2 = swab16(magic); | 391 | magic2 = swab16(magic); |
@@ -401,16 +398,9 @@ static int ath9k_hw_4k_check_eeprom(struct ath_hw *ah) | |||
401 | temp = swab16(*eepdata); | 398 | temp = swab16(*eepdata); |
402 | *eepdata = temp; | 399 | *eepdata = temp; |
403 | eepdata++; | 400 | eepdata++; |
404 | |||
405 | DPRINTF(ah->ah_sc, ATH_DBG_EEPROM, | ||
406 | "0x%04X ", *eepdata); | ||
407 | |||
408 | if (((addr + 1) % 6) == 0) | ||
409 | DPRINTF(ah->ah_sc, | ||
410 | ATH_DBG_EEPROM, "\n"); | ||
411 | } | 401 | } |
412 | } else { | 402 | } else { |
413 | DPRINTF(ah->ah_sc, ATH_DBG_EEPROM, | 403 | DPRINTF(ah->ah_sc, ATH_DBG_FATAL, |
414 | "Invalid EEPROM Magic. " | 404 | "Invalid EEPROM Magic. " |
415 | "endianness mismatch.\n"); | 405 | "endianness mismatch.\n"); |
416 | return -EINVAL; | 406 | return -EINVAL; |
@@ -441,7 +431,7 @@ static int ath9k_hw_4k_check_eeprom(struct ath_hw *ah) | |||
441 | u16 word; | 431 | u16 word; |
442 | 432 | ||
443 | DPRINTF(ah->ah_sc, ATH_DBG_EEPROM, | 433 | DPRINTF(ah->ah_sc, ATH_DBG_EEPROM, |
444 | "EEPROM Endianness is not native.. Changing \n"); | 434 | "EEPROM Endianness is not native.. Changing\n"); |
445 | 435 | ||
446 | word = swab16(eep->baseEepHeader.length); | 436 | word = swab16(eep->baseEepHeader.length); |
447 | eep->baseEepHeader.length = word; | 437 | eep->baseEepHeader.length = word; |
@@ -483,7 +473,7 @@ static int ath9k_hw_4k_check_eeprom(struct ath_hw *ah) | |||
483 | 473 | ||
484 | if (sum != 0xffff || ah->eep_ops->get_eeprom_ver(ah) != AR5416_EEP_VER || | 474 | if (sum != 0xffff || ah->eep_ops->get_eeprom_ver(ah) != AR5416_EEP_VER || |
485 | ah->eep_ops->get_eeprom_rev(ah) < AR5416_EEP_NO_BACK_VER) { | 475 | ah->eep_ops->get_eeprom_rev(ah) < AR5416_EEP_NO_BACK_VER) { |
486 | DPRINTF(ah->ah_sc, ATH_DBG_EEPROM, | 476 | DPRINTF(ah->ah_sc, ATH_DBG_FATAL, |
487 | "Bad EEPROM checksum 0x%x or revision 0x%04x\n", | 477 | "Bad EEPROM checksum 0x%x or revision 0x%04x\n", |
488 | sum, ah->eep_ops->get_eeprom_ver(ah)); | 478 | sum, ah->eep_ops->get_eeprom_ver(ah)); |
489 | return -EINVAL; | 479 | return -EINVAL; |
@@ -1295,9 +1285,6 @@ static bool ath9k_hw_4k_set_board_values(struct ath_hw *ah, | |||
1295 | db2[4] = ((pModal->db2_234 >> 8) & 0xf); | 1285 | db2[4] = ((pModal->db2_234 >> 8) & 0xf); |
1296 | 1286 | ||
1297 | } else if (pModal->version == 1) { | 1287 | } else if (pModal->version == 1) { |
1298 | |||
1299 | DPRINTF(ah->ah_sc, ATH_DBG_EEPROM, | ||
1300 | "EEPROM Model version is set to 1 \n"); | ||
1301 | ob[0] = (pModal->ob_01 & 0xf); | 1288 | ob[0] = (pModal->ob_01 & 0xf); |
1302 | ob[1] = ob[2] = ob[3] = ob[4] = (pModal->ob_01 >> 4) & 0xf; | 1289 | ob[1] = ob[2] = ob[3] = ob[4] = (pModal->ob_01 >> 4) & 0xf; |
1303 | db1[0] = (pModal->db1_01 & 0xf); | 1290 | db1[0] = (pModal->db1_01 & 0xf); |
@@ -1464,16 +1451,13 @@ static int ath9k_hw_def_get_eeprom_rev(struct ath_hw *ah) | |||
1464 | static bool ath9k_hw_def_fill_eeprom(struct ath_hw *ah) | 1451 | static bool ath9k_hw_def_fill_eeprom(struct ath_hw *ah) |
1465 | { | 1452 | { |
1466 | #define SIZE_EEPROM_DEF (sizeof(struct ar5416_eeprom_def) / sizeof(u16)) | 1453 | #define SIZE_EEPROM_DEF (sizeof(struct ar5416_eeprom_def) / sizeof(u16)) |
1467 | struct ar5416_eeprom_def *eep = &ah->eeprom.def; | 1454 | u16 *eep_data = (u16 *)&ah->eeprom.def; |
1468 | u16 *eep_data; | ||
1469 | int addr, ar5416_eep_start_loc = 0x100; | 1455 | int addr, ar5416_eep_start_loc = 0x100; |
1470 | 1456 | ||
1471 | eep_data = (u16 *)eep; | ||
1472 | |||
1473 | for (addr = 0; addr < SIZE_EEPROM_DEF; addr++) { | 1457 | for (addr = 0; addr < SIZE_EEPROM_DEF; addr++) { |
1474 | if (!ath9k_hw_nvram_read(ah, addr + ar5416_eep_start_loc, | 1458 | if (!ath9k_hw_nvram_read(ah, addr + ar5416_eep_start_loc, |
1475 | eep_data)) { | 1459 | eep_data)) { |
1476 | DPRINTF(ah->ah_sc, ATH_DBG_EEPROM, | 1460 | DPRINTF(ah->ah_sc, ATH_DBG_FATAL, |
1477 | "Unable to read eeprom region\n"); | 1461 | "Unable to read eeprom region\n"); |
1478 | return false; | 1462 | return false; |
1479 | } | 1463 | } |
@@ -1492,17 +1476,14 @@ static int ath9k_hw_def_check_eeprom(struct ath_hw *ah) | |||
1492 | bool need_swap = false; | 1476 | bool need_swap = false; |
1493 | int i, addr, size; | 1477 | int i, addr, size; |
1494 | 1478 | ||
1495 | if (!ath9k_hw_nvram_read(ah, AR5416_EEPROM_MAGIC_OFFSET, | 1479 | if (!ath9k_hw_nvram_read(ah, AR5416_EEPROM_MAGIC_OFFSET, &magic)) { |
1496 | &magic)) { | 1480 | DPRINTF(ah->ah_sc, ATH_DBG_FATAL, "Reading Magic # failed\n"); |
1497 | DPRINTF(ah->ah_sc, ATH_DBG_EEPROM, | ||
1498 | "Reading Magic # failed\n"); | ||
1499 | return false; | 1481 | return false; |
1500 | } | 1482 | } |
1501 | 1483 | ||
1502 | if (!ath9k_hw_use_flash(ah)) { | 1484 | if (!ath9k_hw_use_flash(ah)) { |
1503 | |||
1504 | DPRINTF(ah->ah_sc, ATH_DBG_EEPROM, | 1485 | DPRINTF(ah->ah_sc, ATH_DBG_EEPROM, |
1505 | "Read Magic = 0x%04X\n", magic); | 1486 | "Read Magic = 0x%04X\n", magic); |
1506 | 1487 | ||
1507 | if (magic != AR5416_EEPROM_MAGIC) { | 1488 | if (magic != AR5416_EEPROM_MAGIC) { |
1508 | magic2 = swab16(magic); | 1489 | magic2 = swab16(magic); |
@@ -1516,18 +1497,11 @@ static int ath9k_hw_def_check_eeprom(struct ath_hw *ah) | |||
1516 | temp = swab16(*eepdata); | 1497 | temp = swab16(*eepdata); |
1517 | *eepdata = temp; | 1498 | *eepdata = temp; |
1518 | eepdata++; | 1499 | eepdata++; |
1519 | |||
1520 | DPRINTF(ah->ah_sc, ATH_DBG_EEPROM, | ||
1521 | "0x%04X ", *eepdata); | ||
1522 | |||
1523 | if (((addr + 1) % 6) == 0) | ||
1524 | DPRINTF(ah->ah_sc, | ||
1525 | ATH_DBG_EEPROM, "\n"); | ||
1526 | } | 1500 | } |
1527 | } else { | 1501 | } else { |
1528 | DPRINTF(ah->ah_sc, ATH_DBG_EEPROM, | 1502 | DPRINTF(ah->ah_sc, ATH_DBG_FATAL, |
1529 | "Invalid EEPROM Magic. " | 1503 | "Invalid EEPROM Magic. " |
1530 | "endianness mismatch.\n"); | 1504 | "Endianness mismatch.\n"); |
1531 | return -EINVAL; | 1505 | return -EINVAL; |
1532 | } | 1506 | } |
1533 | } | 1507 | } |
@@ -1556,7 +1530,7 @@ static int ath9k_hw_def_check_eeprom(struct ath_hw *ah) | |||
1556 | u16 word; | 1530 | u16 word; |
1557 | 1531 | ||
1558 | DPRINTF(ah->ah_sc, ATH_DBG_EEPROM, | 1532 | DPRINTF(ah->ah_sc, ATH_DBG_EEPROM, |
1559 | "EEPROM Endianness is not native.. Changing \n"); | 1533 | "EEPROM Endianness is not native.. Changing.\n"); |
1560 | 1534 | ||
1561 | word = swab16(eep->baseEepHeader.length); | 1535 | word = swab16(eep->baseEepHeader.length); |
1562 | eep->baseEepHeader.length = word; | 1536 | eep->baseEepHeader.length = word; |
@@ -1602,7 +1576,7 @@ static int ath9k_hw_def_check_eeprom(struct ath_hw *ah) | |||
1602 | 1576 | ||
1603 | if (sum != 0xffff || ah->eep_ops->get_eeprom_ver(ah) != AR5416_EEP_VER || | 1577 | if (sum != 0xffff || ah->eep_ops->get_eeprom_ver(ah) != AR5416_EEP_VER || |
1604 | ah->eep_ops->get_eeprom_rev(ah) < AR5416_EEP_NO_BACK_VER) { | 1578 | ah->eep_ops->get_eeprom_rev(ah) < AR5416_EEP_NO_BACK_VER) { |
1605 | DPRINTF(ah->ah_sc, ATH_DBG_EEPROM, | 1579 | DPRINTF(ah->ah_sc, ATH_DBG_FATAL, |
1606 | "Bad EEPROM checksum 0x%x or revision 0x%04x\n", | 1580 | "Bad EEPROM checksum 0x%x or revision 0x%04x\n", |
1607 | sum, ah->eep_ops->get_eeprom_ver(ah)); | 1581 | sum, ah->eep_ops->get_eeprom_ver(ah)); |
1608 | return -EINVAL; | 1582 | return -EINVAL; |
@@ -1855,8 +1829,6 @@ static bool ath9k_hw_def_set_board_values(struct ath_hw *ah, | |||
1855 | AR_AN_TOP2_LOCALBIAS, | 1829 | AR_AN_TOP2_LOCALBIAS, |
1856 | AR_AN_TOP2_LOCALBIAS_S, | 1830 | AR_AN_TOP2_LOCALBIAS_S, |
1857 | pModal->local_bias); | 1831 | pModal->local_bias); |
1858 | DPRINTF(ah->ah_sc, ATH_DBG_EEPROM, "ForceXPAon: %d\n", | ||
1859 | pModal->force_xpaon); | ||
1860 | REG_RMW_FIELD(ah, AR_PHY_XPA_CFG, AR_PHY_FORCE_XPA_CFG, | 1832 | REG_RMW_FIELD(ah, AR_PHY_XPA_CFG, AR_PHY_FORCE_XPA_CFG, |
1861 | pModal->force_xpaon); | 1833 | pModal->force_xpaon); |
1862 | } | 1834 | } |
@@ -1882,6 +1854,7 @@ static bool ath9k_hw_def_set_board_values(struct ath_hw *ah, | |||
1882 | 1854 | ||
1883 | REG_RMW_FIELD(ah, AR_PHY_RF_CTL3, AR_PHY_TX_END_TO_A2_RX_ON, | 1855 | REG_RMW_FIELD(ah, AR_PHY_RF_CTL3, AR_PHY_TX_END_TO_A2_RX_ON, |
1884 | pModal->txEndToRxOn); | 1856 | pModal->txEndToRxOn); |
1857 | |||
1885 | if (AR_SREV_9280_10_OR_LATER(ah)) { | 1858 | if (AR_SREV_9280_10_OR_LATER(ah)) { |
1886 | REG_RMW_FIELD(ah, AR_PHY_CCA, AR9280_PHY_CCA_THRESH62, | 1859 | REG_RMW_FIELD(ah, AR_PHY_CCA, AR9280_PHY_CCA_THRESH62, |
1887 | pModal->thresh62); | 1860 | pModal->thresh62); |
@@ -1912,10 +1885,10 @@ static bool ath9k_hw_def_set_board_values(struct ath_hw *ah, | |||
1912 | } | 1885 | } |
1913 | 1886 | ||
1914 | if (AR_SREV_9280_20_OR_LATER(ah) && | 1887 | if (AR_SREV_9280_20_OR_LATER(ah) && |
1915 | AR5416_VER_MASK >= AR5416_EEP_MINOR_VER_19) | 1888 | AR5416_VER_MASK >= AR5416_EEP_MINOR_VER_19) |
1916 | REG_RMW_FIELD(ah, AR_PHY_CCK_TX_CTRL, | 1889 | REG_RMW_FIELD(ah, AR_PHY_CCK_TX_CTRL, |
1917 | AR_PHY_CCK_TX_CTRL_TX_DAC_SCALE_CCK, | 1890 | AR_PHY_CCK_TX_CTRL_TX_DAC_SCALE_CCK, |
1918 | pModal->miscBits); | 1891 | pModal->miscBits); |
1919 | 1892 | ||
1920 | 1893 | ||
1921 | if (AR_SREV_9280_20(ah) && AR5416_VER_MASK >= AR5416_EEP_MINOR_VER_20) { | 1894 | if (AR_SREV_9280_20(ah) && AR5416_VER_MASK >= AR5416_EEP_MINOR_VER_20) { |
@@ -1926,14 +1899,14 @@ static bool ath9k_hw_def_set_board_values(struct ath_hw *ah, | |||
1926 | REG_RMW_FIELD(ah, AR_AN_TOP1, AR_AN_TOP1_DACIPMODE, 0); | 1899 | REG_RMW_FIELD(ah, AR_AN_TOP1, AR_AN_TOP1_DACIPMODE, 0); |
1927 | else | 1900 | else |
1928 | REG_RMW_FIELD(ah, AR_AN_TOP1, AR_AN_TOP1_DACIPMODE, | 1901 | REG_RMW_FIELD(ah, AR_AN_TOP1, AR_AN_TOP1_DACIPMODE, |
1929 | eep->baseEepHeader.dacLpMode); | 1902 | eep->baseEepHeader.dacLpMode); |
1930 | 1903 | ||
1931 | REG_RMW_FIELD(ah, AR_PHY_FRAME_CTL, AR_PHY_FRAME_CTL_TX_CLIP, | 1904 | REG_RMW_FIELD(ah, AR_PHY_FRAME_CTL, AR_PHY_FRAME_CTL_TX_CLIP, |
1932 | pModal->miscBits >> 2); | 1905 | pModal->miscBits >> 2); |
1933 | 1906 | ||
1934 | REG_RMW_FIELD(ah, AR_PHY_TX_PWRCTRL9, | 1907 | REG_RMW_FIELD(ah, AR_PHY_TX_PWRCTRL9, |
1935 | AR_PHY_TX_DESIRED_SCALE_CCK, | 1908 | AR_PHY_TX_DESIRED_SCALE_CCK, |
1936 | eep->baseEepHeader.desiredScaleCCK); | 1909 | eep->baseEepHeader.desiredScaleCCK); |
1937 | } | 1910 | } |
1938 | 1911 | ||
1939 | return true; | 1912 | return true; |
diff --git a/drivers/net/wireless/ath9k/hw.c b/drivers/net/wireless/ath9k/hw.c index d494e98ba971..3dd054b21f5a 100644 --- a/drivers/net/wireless/ath9k/hw.c +++ b/drivers/net/wireless/ath9k/hw.c | |||
@@ -588,6 +588,10 @@ static int ath9k_hw_post_attach(struct ath_hw *ah) | |||
588 | ecode = ath9k_hw_eeprom_attach(ah); | 588 | ecode = ath9k_hw_eeprom_attach(ah); |
589 | if (ecode != 0) | 589 | if (ecode != 0) |
590 | return ecode; | 590 | return ecode; |
591 | |||
592 | DPRINTF(ah->ah_sc, ATH_DBG_CONFIG, "Eeprom VER: %d, REV: %d\n", | ||
593 | ah->eep_ops->get_eeprom_ver(ah), ah->eep_ops->get_eeprom_rev(ah)); | ||
594 | |||
591 | ecode = ath9k_hw_rfattach(ah); | 595 | ecode = ath9k_hw_rfattach(ah); |
592 | if (ecode != 0) | 596 | if (ecode != 0) |
593 | return ecode; | 597 | return ecode; |