📄 ah_os.c.svn-base
字号:
case 0x808c: static_label = "AR5K_RTS_FAIL_5211"; break; case 0x8090: static_label = "AR5K_ACK_FAIL_5211"; break; case 0x8094: static_label = "AR5K_FCS_FAIL_5211"; break; case 0x8098: static_label = "AR5K_BEACON_CNT_5211"; break; case 0x80c0: static_label = "AR5K_XRMODE"; break; case 0x80c4: static_label = "AR5K_XRDELAY"; break; case 0x80c8: static_label = "AR5K_XRTIMEOUT"; break; case 0x80cc: static_label = "AR5K_XRCHIRP"; break; case 0x80d0: static_label = "AR5K_XRSTOMP"; break; case 0x80d4: static_label = "AR5K_SLEEP0"; break; case 0x80d8: static_label = "AR5K_SLEEP1"; break; case 0x80dc: static_label = "AR5K_SLEEP2"; break; case 0x80e0: static_label = "AR5K_BSS_IDM0"; break; case 0x80e4: static_label = "AR5K_BSS_IDM1"; break; case 0x80e8: static_label = "AR5K_TXPC"; break; case 0x80ec: static_label = "AR5K_PROFCNT_TX"; break; case 0x80f0: static_label = "AR5K_PROFCNT_RX"; break; case 0x80f4: static_label = "AR5K_PROFCNT_RXCLR"; break; case 0x80f8: static_label = "AR5K_PROFCNT_CYCLE"; break; case 0x8104: static_label = "AR5K_TSF_PARM"; break; case 0x810c: static_label = "AR5K_PHY_ERR_FIL"; break; case 0x9800: static_label = "AR5K_PHY"; break; case 0x9804: static_label = "AR5K_PHY_TURBO"; break; case 0x9808: static_label = "AR5K_PHY_AGC"; break; case 0x9814: static_label = "AR5K_PHY_TIMING_3"; break; case 0x9818: static_label = "AR5K_PHY_CHIP_ID"; break; case 0x981c: static_label = "AR5K_PHY_ACT"; break; case 0x9858: static_label = "AR5K_PHY_SIG"; break; case 0x985c: static_label = "AR5K_PHY_AGCCOARSE"; break; case 0x9860: static_label = "AR5K_PHY_AGCCTL"; break; case 0x9864: static_label = "AR5K_PHY_NF"; break; case 0x9870: static_label = "AR5K_PHY_SCR"; break; case 0x9874: static_label = "AR5K_PHY_SLMT"; break; case 0x9878: static_label = "AR5K_PHY_SCAL"; break; case 0x987c: static_label = "AR5K_PHY_PLL"; break; case 0x989c: static_label = "AR5K_RF_BUFFER"; break; case 0x98c0: static_label = "AR5K_RF_BUFFER_CONTROL_0"; break; case 0x98c4: static_label = "AR5K_RF_BUFFER_CONTROL_1"; break; case 0x98cc: static_label = "AR5K_RF_BUFFER_CONTROL_2"; break; case 0x98d0: static_label = "AR5K_RF_BUFFER_CONTROL_3"; break; case 0x98d4: static_label = "AR5K_RF_BUFFER_CONTROL_4"; break; case 0x98d8: static_label = "AR5K_RF_BUFFER_CONTROL_5"; break; case 0x98dc: static_label = "AR5K_RF_BUFFER_CONTROL_6"; break; case 0x9914: static_label = "AR5K_PHY_RX_DELAY"; break; case 0x9920: static_label = "AR5K_PHY_IQ"; break; case 0x9930: static_label = "AR5K_PHY_PAPD_PROBE"; break; case 0x9934: static_label = "AR5K_PHY_TXPOWER_RATE1"; break; case 0x9938: static_label = "AR5K_PHY_TXPOWER_RATE2"; break; case 0x993c: static_label = "AR5K_PHY_TXPOWER_RATE_MAX"; break; case 0x9944: static_label = "AR5K_PHY_FRAME_CTL_5211"; break; case 0x9954: static_label = "AR5K_PHY_RADAR"; break; case 0x99f0: static_label = "AR5K_PHY_SCLOCK"; break; case 0x99f4: static_label = "AR5K_PHY_SDELAY"; break; case 0x99f8: static_label = "AR5K_PHY_SPENDING"; break; case 0x9c10: static_label = "AR5K_PHY_IQRES_CAL_PWR_I"; break; case 0x9c14: static_label = "AR5K_PHY_IQRES_CAL_PWR_Q"; break; case 0x9c18: static_label = "AR5K_PHY_IQRES_CAL_CORR"; break; case 0x9c1c: static_label = "AR5K_PHY_CURRENT_RSSI"; break; case 0xa204: static_label = "AR5K_PHY_CCKTXCTL"; break; case 0xa20c: static_label = "AR5K_PHY_GAIN_2GHZ"; break; case 0xa234: static_label = "AR5K_PHY_TXPOWER_RATE3"; break; case 0xa238: static_label = "AR5K_PHY_TXPOWER_RATE4"; break; case 0x9850: static_label = "AR5K_PHY_AGCSIZE"; break; case 0x9924: static_label = "AR5K_PHY_SPUR"; break; default: break; } if (static_label) { if (strncmp(static_label, "ATH5K_", 6) == 0) static_label += 6; snprintf(buf, buflen, "%s", static_label); return AH_TRUE; } /* Handle Key Table */ if ((address >= 0x8800) && (address < 0x9800)) {#define keytable_entry_reg_count (8)#define keytable_entry_size (keytable_entry_reg_count * sizeof(u_int32_t)) int key = ((address - 0x8800) / keytable_entry_size); int reg = ((address - 0x8800) % keytable_entry_size) / sizeof(u_int32_t); char *format = NULL; switch (reg) { case 0: format = "KEY(%3d).KEYBITS[031:000]"; break; case 1: format = "KEY(%3d).KEYBITS[047:032]"; break; case 2: format = "KEY(%3d).KEYBITS[079:048]"; break; case 3: format = "KEY(%3d).KEYBITS[095:080]"; break; case 4: format = "KEY(%3d).KEYBITS[127:096]"; break; case 5: format = "KEY(%3d).TYPE............"; break; case 6: format = "KEY(%3d).MAC[32:01]......"; break; case 7: format = "KEY(%3d).MAC[47:33]......"; break; default: BUG(); } snprintf(buf, buflen, format, key);#undef keytable_entry_reg_count#undef keytable_entry_size return AH_TRUE; } if (address >= 0x0800 && address <= 0x082c) { snprintf(buf, buflen, "AR5K_QUEUE_TXDP_%d", (u_int32_t)((address - 0x0800) / sizeof(u_int32_t))); return AH_TRUE; } if (address >= 0x08c0 && address <= 0x08ec) { snprintf(buf, buflen, "AR5K_QUEUE_CBRCFG_%d", (u_int32_t)((address - 0x08c0) / sizeof(u_int32_t))); return AH_TRUE; } if (address >= 0x0900 && address <= 0x092c) { snprintf(buf, buflen, "AR5K_QUEUE_RDYTIMECFG_%d", (u_int32_t)((address - 0x0900) / sizeof(u_int32_t))); return AH_TRUE; } if (address >= 0x09c0 && address <= 0x09ec) { snprintf(buf, buflen, "AR5K_QUEUE_MISC_%d", (u_int32_t)((address - 0x09c0) / sizeof(u_int32_t))); return AH_TRUE; } if (address >= 0x0a00 && address <= 0x0a2c) { snprintf(buf, buflen, "AR5K_QUEUE_STATUS_%d", (u_int32_t)((address - 0x0a00) / sizeof(u_int32_t))); return AH_TRUE; } if (address >= 0x1000 && address <= 0x102c) { snprintf(buf, buflen, "AR5K_QUEUE_QCUMASK_%d", (u_int32_t)((address - 0x1000) / sizeof(u_int32_t))); return AH_TRUE; } if (address >= 0x1040 && address <= 0x106c) { snprintf(buf, buflen, "AR5K_QUEUE_DFS_LOCAL_IFS_%d", (u_int32_t)((address - 0x1040) / sizeof(u_int32_t))); return AH_TRUE; } if (address >= 0x1080 && address <= 0x10ac) { snprintf(buf, buflen, "AR5K_QUEUE_DFS_RETRY_LIMIT_%d", (u_int32_t)((address - 0x1080) / sizeof(u_int32_t))); return AH_TRUE; } if (address >= 0x10c0 && address <= 0x10ec) { snprintf(buf, buflen, "AR5K_QUEUE_DFS_CHANNEL_TIME_%d", (u_int32_t)((address - 0x10c0) / sizeof(u_int32_t))); return AH_TRUE; } if (address >= 0x1100 && address <= 0x112c) { snprintf(buf, buflen, "AR5K_QUEUE_DFS_MISC_%d", (u_int32_t)((address - 0x1100) / sizeof(u_int32_t))); return AH_TRUE; } if (address >= 0x1140 && address <= 0x116c) { snprintf(buf, buflen, "AR5K_QUEUE_DFS_SEQNUM_%d", (u_int32_t)((address - 0x1140) / sizeof(u_int32_t))); return AH_TRUE; } if (address >= 0x4000 && address <= 0x5000) { snprintf(buf, buflen, "(PCI_TIMING)_%d", (u_int32_t)((address - 0x4000) / sizeof(u_int32_t))); return AH_TRUE; } if (address >= 0x8700 && address <= 0x877c) { snprintf(buf, buflen, "AR5K_RATE_DUR_%d", (u_int32_t)((address - 0x8700) / sizeof(u_int32_t))); return AH_TRUE; } if (address >= 0x8800 && address <= 0x9800) { snprintf(buf, buflen, "AR5K_KEYTABLE_0_5211_%d", (u_int32_t)((address - 0x8800) / sizeof(u_int32_t))); return AH_TRUE; } if (address >= 0x9a00 && address <= 0x9afc) { snprintf(buf, buflen, "AR5K_RF_GAIN_%d", (u_int32_t)((address - 0x9a00) / sizeof(u_int32_t))); return AH_TRUE; } if (address >= 0x9b00 && address <= 0x9bfc) { snprintf(buf, buflen, "AR5K_BB_GAIN_%d", (u_int32_t)((address - 0x9b00) / sizeof(u_int32_t))); return AH_TRUE; } if (address >= 0xa180 && address <= 0xa1fc) { snprintf(buf, buflen, "AR5K_PHY_PCDAC_TXPOWER_%d", (u_int32_t)((address - 0xa180) / sizeof(u_int32_t))); return AH_TRUE; } } /* Everything else... */ snprintf(buf, buflen, "(unknown)"); return AH_FALSE;}EXPORT_SYMBOL(ath_hal_lookup_register_name);static void_print_decoded_register_delta(struct ath_hal *ah, const char *device_name, HAL_BOOL prefer_alq, int regop, u_int32_t address, u_int32_t v_old, u_int32_t v_new, HAL_BOOL verbose){#define BIT_UNCHANGED_ON "1"#define BIT_UNCHANGED_OFF "."#define BIT_CHANGED_ON "+"#define BIT_CHANGED_OFF "-"#define NYBBLE_SEPARATOR ""#define BYTE_SEPARATOR " "#define BIT_STATUS(_shift) \ (((v_old & (1 << _shift)) == (v_new & (1 << _shift))) ? \ (v_new & (1 << _shift) ? \ BIT_UNCHANGED_ON : BIT_UNCHANGED_OFF) : \ (v_new & (1 << _shift) ? \ BIT_CHANGED_ON : BIT_CHANGED_OFF)) char name[64] = ""; ath_hal_lookup_register_name(ah, name, sizeof(name), address); ath_hal_printf(ah, prefer_alq, "%s%s%s%23s:0x%04x:0x%08x:%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s" "%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s:%s\n", device_name ? device_name : "", device_name ? ":" : "", (regop == REGOP_READ ? "R:" : (regop == REGOP_WRITE ? "W:" : "")), (0 < strlen(name)) ? name : "(unknown)", address, v_new, BIT_STATUS(31), BIT_STATUS(30), BIT_STATUS(29), BIT_STATUS(28), NYBBLE_SEPARATOR, BIT_STATUS(27), BIT_STATUS(26), BIT_STATUS(25), BIT_STATUS(24), BYTE_SEPARATOR, BIT_STATUS(23), BIT_STATUS(22), BIT_STATUS(21), BIT_STATUS(20), NYBBLE_SEPARATOR, BIT_STATUS(19), BIT_STATUS(18), BIT_STATUS(17), BIT_STATUS(16), BYTE_SEPARATOR, BIT_STATUS(15), BIT_STATUS(14), BIT_STATUS(13), BIT_STATUS(12), NYBBLE_SEPARATOR, BIT_STATUS(11), BIT_STATUS(10), BIT_STATUS( 9), BIT_STATUS( 8), BYTE_SEPARATOR, BIT_STATUS( 7), BIT_STATUS( 6), BIT_STATUS( 5), BIT_STATUS( 4), NYBBLE_SEPARATOR, BIT_STATUS( 3), BIT_STATUS( 2), BIT_STATUS( 1), BIT_STATUS( 0), (ath_hal_func ?: "unknown") );#undef BIT_UNCHANGED_ON#undef BIT_UNCHANGED_OFF#undef BIT_CHANGED_ON#undef BIT_CHANGED_OFF#undef NYBBLE_SEPARATOR#undef BYTE_SEPARATOR#undef BIT_STATUS}/* For any addresses we wish to get a symbolic representation of (i.e. flag * names) we can add it to this helper function and a subsequent line is * printed with the status in symbolic form. */static void_print_decoded_register_bitfields(struct ath_hal *ah, const char *device_name, HAL_BOOL prefer_alq, int regop, u_int32_t address, u_int32_t old_v, u_int32_t v, HAL_BOOL verbose){/* constants from openhal ar5212reg.h */#define AR5K_AR5212_PHY_ERR_FIL 0x810c#define AR5K_AR5212_PHY_ERR_FIL_RADAR 0x00000020#define AR5K_AR5212_PHY_ERR_FIL_OFDM 0x00020000#define AR5K_AR5212_PHY_ERR_FIL_CCK 0x02000000#define AR5K_AR5212_PIMR 0x00a0#define AR5K_AR5212_PISR 0x0080#define AR5K_AR5212_PIMR_RXOK 0x00000001#define AR5K_AR5212_PIMR_RXDESC 0x00000002#define AR5K_AR5212_PIMR_RXERR 0x00000004#define AR5K_AR5212_PIMR_RXNOFRM 0x00000008#define AR5K_AR5212_PIMR_RXEOL 0x00000010#define AR5K_AR5212_PIMR_RXORN 0x00000020#define AR5K_AR5212_PIMR_TXOK 0x00000040#define AR5K_AR5212_PIMR_TXDESC 0x00000080#define AR5K_AR5212_PIMR_TXERR 0x00000100#define AR5K_AR5212_PIMR_TXNOFRM 0x00000200#define AR5K_AR5212_PIMR_TXEOL 0x00000400#define AR5K_AR5212_PIMR_TXURN 0x00000800#define AR5K_AR5212_PIMR_MIB 0x00001000#define AR5K_AR5212_PIMR_SWI 0x00002000#define AR5K_AR5212_PIMR_RXPHY 0x00004000#define AR5K_AR5212_PIMR_RXKCM 0x00008000#define AR5K_AR5212_PIMR_SWBA 0x00010000#define AR5K_AR5212_PIMR_BRSSI 0x00020000#define AR5K_AR5212_PIMR_BMISS 0x00040000#define AR5K_AR5212_PIMR_HIUERR 0x00080000#define AR5K_AR5212_PIMR_BNR 0x00100000#define AR5K_AR5212_PIMR_RXCHIRP 0x00200000#define AR5K_AR5212_PIMR_TIM 0x00800000#define AR5K_AR5212_PIMR_BCNMISC 0x00800000#define AR5K_AR5212_PIMR_GPIO 0x01000000#define AR5K_AR5212_PIMR_QCBRORN 0x02000000#define AR5K_AR5212_PIMR_QCBRURN 0x04000000#define AR5K_AR5212_PIMR_QTRIG 0x08000000 char name[128]; ath_hal_lookup_register_name(ah, name, sizeof(name), address); if (address == AR5K_AR5212_PHY_ERR_FIL) { ath_hal_printf(ah, prefer_alq, "%s%s%s%18s info:%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s" "%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s:%s\n", device_name ? device_name : "", device_name ? ":" : "", (regop == REGOP_READ ? "R:" : (regop == REGOP_WRITE ? "W:" : "")), (0 < strlen(name)) ? name : "(unknown)", (v & (1 << 31) ? " (1 << 31)" : ""), (v & (1 << 30) ? " (1 << 30)" : ""), (v & (1 << 29) ? " (1 << 29)" : ""), (v & (1 << 28) ? " (1 << 28)" : ""), (v & (1 << 27) ? " (1 << 27)" : ""), (v & (1 << 26) ? " (1 << 26)" : ""), (v & AR5K_AR5212_PHY_ERR_FIL_CCK ? " CCK" : ""), (v & (1 << 24) ? " (1 << 24)" : ""), (v & (1 << 23) ? " (1 << 23)" : ""), (v & (1 << 22) ? " (1 << 22)" : ""), (v & (1 << 21) ? " (1 << 21)" : ""), (v & (1 << 20) ? " (1 << 20)" : ""), (v & (1 << 19) ? " (1 << 19)" : ""), (v & (1 << 18) ? " (1 << 18)" : ""), (v & AR5K_AR5212_PHY_ERR_FIL_OFDM ? " OFDM" : ""), (v & (1 << 16) ? " (1 << 16)" : ""), (v & (1 << 15) ? " (1 << 15)" : ""), (v & (1 << 14) ? " (1 << 14)" : ""), (v & (1 << 13) ? " (1 << 13)" : ""), (v & (1 << 12) ? " (1 << 12)" : ""), (v & (1 << 11) ? " (1 << 11)" : ""), (v & (1 << 10) ? " (1 << 10)" : ""), (v & (1 << 9) ? " (1 << 9)" : ""), (v & (1 << 8) ? " (1 << 8)" : ""), (v & (1 << 7) ? " (1 << 7)" : ""), (v & (1 << 6) ? " (1 << 6)" : ""), (v & AR5K_AR5212_PHY_ERR_FIL_RADAR ? " RADAR" : ""), (v & (1 << 4) ? " (1 << 4)" : ""), (v & (1 << 3) ? " (1 << 3)" : ""), (v & (1 << 2) ? " (1 << 2)" : ""), (v & (1 << 1) ? " (1 << 1)" : ""), (v & (1 << 0) ? " (1 << 0)" : ""), (ath_hal_func ?: "unknown") ); } if (address == AR5K_AR5212_PISR || address == AR5K_AR5212_PIMR) { ath_hal_printf(ah, prefer_alq, "%s%s%s%18s info:%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s" "%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s:%s\n", device_name ? device_name : "", device_name ? ":" : "", (regop == REGOP_READ ? "R:" : (regop == REGOP_WRITE ? "W:" : "")), (0 < strlen(name)) ? name : "(unknown)", (v & HAL_INT_GLOBAL ? " HAL_INT_GLOBAL" : ""), (v & HAL_INT_FATAL ? " HAL_INT_FATAL" : ""), (v & (1 << 29) ? " (1 << 29)" : ""), (v & (1 << 28) ? " (1 << 28)" : ""), (v & AR5K_AR5212_PIMR_RXOK ? " RXOK" : ""),
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -