Deleted Added
full compact
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