ar5416_misc.c (221535) | ar5416_misc.c (221580) |
---|---|
1/* 2 * Copyright (c) 2002-2008 Sam Leffler, Errno Consulting 3 * Copyright (c) 2002-2008 Atheros Communications, Inc. 4 * 5 * Permission to use, copy, modify, and/or distribute this software for any 6 * purpose with or without fee is hereby granted, provided that the above 7 * copyright notice and this permission notice appear in all copies. 8 * 9 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES 10 * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF 11 * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR 12 * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES 13 * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN 14 * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF 15 * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. 16 * | 1/* 2 * Copyright (c) 2002-2008 Sam Leffler, Errno Consulting 3 * Copyright (c) 2002-2008 Atheros Communications, Inc. 4 * 5 * Permission to use, copy, modify, and/or distribute this software for any 6 * purpose with or without fee is hereby granted, provided that the above 7 * copyright notice and this permission notice appear in all copies. 8 * 9 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES 10 * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF 11 * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR 12 * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES 13 * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN 14 * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF 15 * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. 16 * |
17 * $FreeBSD: head/sys/dev/ath/ath_hal/ar5416/ar5416_misc.c 221535 2011-05-06 15:33:56Z adrian $ | 17 * $FreeBSD: head/sys/dev/ath/ath_hal/ar5416/ar5416_misc.c 221580 2011-05-07 06:45:35Z adrian $ |
18 */ 19#include "opt_ah.h" 20 21#include "ah.h" 22#include "ah_internal.h" 23#include "ah_devid.h" 24#ifdef AH_DEBUG 25#include "ah_desc.h" /* NB: for HAL_PHYERR* */ --- 252 unchanged lines hidden (view full) --- 278 uint32_t capability, uint32_t *result) 279{ 280 switch (type) { 281 case HAL_CAP_GTXTO: 282 return HAL_OK; /* All AR5416+ supports Global TX Timeout */ 283 case HAL_CAP_BB_HANG: 284 switch (capability) { 285 case HAL_BB_HANG_RIFS: | 18 */ 19#include "opt_ah.h" 20 21#include "ah.h" 22#include "ah_internal.h" 23#include "ah_devid.h" 24#ifdef AH_DEBUG 25#include "ah_desc.h" /* NB: for HAL_PHYERR* */ --- 252 unchanged lines hidden (view full) --- 278 uint32_t capability, uint32_t *result) 279{ 280 switch (type) { 281 case HAL_CAP_GTXTO: 282 return HAL_OK; /* All AR5416+ supports Global TX Timeout */ 283 case HAL_CAP_BB_HANG: 284 switch (capability) { 285 case HAL_BB_HANG_RIFS: |
286 return AR_SREV_SOWL(ah) ? HAL_OK : HAL_ENOTSUPP; | 286 return (AR_SREV_HOWL(ah) || AR_SREV_SOWL(ah)) ? HAL_OK : HAL_ENOTSUPP; |
287 case HAL_BB_HANG_DFS: | 287 case HAL_BB_HANG_DFS: |
288 return AR_SREV_SOWL(ah) ? HAL_OK : HAL_ENOTSUPP; | 288 return (AR_SREV_HOWL(ah) || AR_SREV_SOWL(ah)) ? HAL_OK : HAL_ENOTSUPP; |
289 case HAL_BB_HANG_RX_CLEAR: 290 return AR_SREV_MERLIN(ah) ? HAL_OK : HAL_ENOTSUPP; 291 } 292 break; 293 case HAL_CAP_MAC_HANG: 294 return ((ah->ah_macVersion == AR_XSREV_VERSION_OWL_PCI) || 295 (ah->ah_macVersion == AR_XSREV_VERSION_OWL_PCIE) || | 289 case HAL_BB_HANG_RX_CLEAR: 290 return AR_SREV_MERLIN(ah) ? HAL_OK : HAL_ENOTSUPP; 291 } 292 break; 293 case HAL_CAP_MAC_HANG: 294 return ((ah->ah_macVersion == AR_XSREV_VERSION_OWL_PCI) || 295 (ah->ah_macVersion == AR_XSREV_VERSION_OWL_PCIE) || |
296 AR_SREV_SOWL(ah)) ? | 296 AR_SREV_HOWL(ah) || AR_SREV_SOWL(ah)) ? |
297 HAL_OK : HAL_ENOTSUPP; 298 case HAL_CAP_DIVERSITY: /* disable classic fast diversity */ 299 return HAL_ENXIO; 300 default: 301 break; 302 } 303 return ar5212GetCapability(ah, type, capability, result); 304} --- 156 unchanged lines hidden (view full) --- 461 return 0; 462 } 463 464 if (ar5416CompareDbgHang(ah, &mac_dbg, &hang_sig1)) 465 return HAL_MAC_HANG_SIG1; 466 if (ar5416CompareDbgHang(ah, &mac_dbg, &hang_sig2)) 467 return HAL_MAC_HANG_SIG2; 468 | 297 HAL_OK : HAL_ENOTSUPP; 298 case HAL_CAP_DIVERSITY: /* disable classic fast diversity */ 299 return HAL_ENXIO; 300 default: 301 break; 302 } 303 return ar5212GetCapability(ah, type, capability, result); 304} --- 156 unchanged lines hidden (view full) --- 461 return 0; 462 } 463 464 if (ar5416CompareDbgHang(ah, &mac_dbg, &hang_sig1)) 465 return HAL_MAC_HANG_SIG1; 466 if (ar5416CompareDbgHang(ah, &mac_dbg, &hang_sig2)) 467 return HAL_MAC_HANG_SIG2; 468 |
469 HALDEBUG(ah, HAL_DEBUG_ANY, "%s Found an unknown MAC hang signature " | 469 HALDEBUG(ah, HAL_DEBUG_HANG, "%s Found an unknown MAC hang signature " |
470 "DMADBG_3=0x%x DMADBG_4=0x%x DMADBG_5=0x%x DMADBG_6=0x%x\n", 471 __func__, mac_dbg.dma_dbg_3, mac_dbg.dma_dbg_4, mac_dbg.dma_dbg_5, 472 mac_dbg.dma_dbg_6); 473 474 return HAL_MAC_HANG_UNKNOWN; 475} 476 477/* --- 32 unchanged lines hidden (view full) --- 510 511 hang_sig = OS_REG_READ(ah, AR_OBSERV_1); 512 for (i = 1; i <= NUM_STATUS_READS; i++) { 513 if (hang_sig != OS_REG_READ(ah, AR_OBSERV_1)) 514 return 0; 515 } 516 for (i = 0; i < N(hang_list); i++) 517 if ((hang_sig & hang_list[i].mask) == hang_list[i].val) { | 470 "DMADBG_3=0x%x DMADBG_4=0x%x DMADBG_5=0x%x DMADBG_6=0x%x\n", 471 __func__, mac_dbg.dma_dbg_3, mac_dbg.dma_dbg_4, mac_dbg.dma_dbg_5, 472 mac_dbg.dma_dbg_6); 473 474 return HAL_MAC_HANG_UNKNOWN; 475} 476 477/* --- 32 unchanged lines hidden (view full) --- 510 511 hang_sig = OS_REG_READ(ah, AR_OBSERV_1); 512 for (i = 1; i <= NUM_STATUS_READS; i++) { 513 if (hang_sig != OS_REG_READ(ah, AR_OBSERV_1)) 514 return 0; 515 } 516 for (i = 0; i < N(hang_list); i++) 517 if ((hang_sig & hang_list[i].mask) == hang_list[i].val) { |
518 HALDEBUG(ah, HAL_DEBUG_ANY, | 518 HALDEBUG(ah, HAL_DEBUG_HANG, |
519 "%s BB hang, signature 0x%x, code 0x%x\n", 520 __func__, hang_sig, hang_list[i].code); 521 return hang_list[i].code; 522 } 523 | 519 "%s BB hang, signature 0x%x, code 0x%x\n", 520 __func__, hang_sig, hang_list[i].code); 521 return hang_list[i].code; 522 } 523 |
524 HALDEBUG(ah, HAL_DEBUG_ANY, "%s Found an unknown BB hang signature! " | 524 HALDEBUG(ah, HAL_DEBUG_HANG, "%s Found an unknown BB hang signature! " |
525 "<0x806c>=0x%x\n", __func__, hang_sig); 526 527 return HAL_BB_HANG_UNKNOWN; 528#undef N 529} 530#undef NUM_STATUS_READS | 525 "<0x806c>=0x%x\n", __func__, hang_sig); 526 527 return HAL_BB_HANG_UNKNOWN; 528#undef N 529} 530#undef NUM_STATUS_READS |