📄 ar5xxx.h
字号:
#define AR5K_INIT_ACK_CTS_TIMEOUT_TURBO 0x08000800#define AR5K_INIT_SIFS 560#define AR5K_INIT_SIFS_TURBO 480#define AR5K_INIT_SH_RETRY 10#define AR5K_INIT_LG_RETRY AR5K_INIT_SH_RETRY#define AR5K_INIT_SSH_RETRY 32#define AR5K_INIT_SLG_RETRY AR5K_INIT_SSH_RETRY#define AR5K_INIT_TX_RETRY 10#define AR5K_INIT_TOPS 8#define AR5K_INIT_RXNOFRM 8#define AR5K_INIT_RPGTO 0#define AR5K_INIT_TXNOFRM 0#define AR5K_INIT_BEACON_PERIOD 65535#define AR5K_INIT_TIM_OFFSET 0#define AR5K_INIT_BEACON_EN 0#define AR5K_INIT_RESET_TSF 0#define AR5K_INIT_TRANSMIT_LATENCY ( \ (AR5K_INIT_TX_LATENCY << 14) | (AR5K_INIT_USEC_32 << 7) | \ (AR5K_INIT_USEC) \)#define AR5K_INIT_TRANSMIT_LATENCY_TURBO ( \ (AR5K_INIT_TX_LATENCY << 14) | (AR5K_INIT_USEC_32 << 7) | \ (AR5K_INIT_USEC_TURBO) \)#define AR5K_INIT_PROTO_TIME_CNTRL ( \ (AR5K_INIT_CARR_SENSE_EN << 26) | (AR5K_INIT_EIFS << 12) | \ (AR5K_INIT_PROG_IFS) \)#define AR5K_INIT_PROTO_TIME_CNTRL_TURBO ( \ (AR5K_INIT_CARR_SENSE_EN << 26) | (AR5K_INIT_EIFS_TURBO << 12) |\ (AR5K_INIT_PROG_IFS_TURBO) \)#define AR5K_INIT_BEACON_CONTROL ( \ (AR5K_INIT_RESET_TSF << 24) | (AR5K_INIT_BEACON_EN << 23) | \ (AR5K_INIT_TIM_OFFSET << 16) | (AR5K_INIT_BEACON_PERIOD) \)/* * AR5k register access *//*O.S. dependent functions are located in ah_osdep.h*/#define AR5K_REG_SM(_val, _flags) \ (((_val) << _flags##_S) & (_flags))#define AR5K_REG_MS(_val, _flags) \ (((_val) & (_flags)) >> _flags##_S)#define AR5K_REG_WRITE_BITS(_reg, _flags, _val) \ AR5K_REG_WRITE(_reg, (AR5K_REG_READ(_reg) &~ (_flags)) | \ (((_val) << _flags##_S) & (_flags)))#define AR5K_REG_MASKED_BITS(_reg, _flags, _mask) \ AR5K_REG_WRITE(_reg, (AR5K_REG_READ(_reg) & (_mask)) | (_flags))#define AR5K_REG_ENABLE_BITS(_reg, _flags) \ AR5K_REG_WRITE(_reg, AR5K_REG_READ(_reg) | (_flags))#define AR5K_REG_DISABLE_BITS(_reg, _flags) \ AR5K_REG_WRITE(_reg, AR5K_REG_READ(_reg) &~ (_flags))#define AR5K_PHY_WRITE(_reg, _val) \ AR5K_REG_WRITE(hal->ah_phy + ((_reg) << 2), _val)#define AR5K_PHY_READ(_reg) \ AR5K_REG_READ(hal->ah_phy + ((_reg) << 2))#define AR5K_REG_WAIT(_i) \ if (_i % 64) \ AR5K_DELAY(1);#define AR5K_EEPROM_READ(_o, _v) { \ if ((ret = hal->ah_eeprom_read(hal, (_o), \ &(_v))) != 0) \ return (ret); \}#define AR5K_EEPROM_READ_HDR(_o, _v) \ AR5K_EEPROM_READ(_o, hal->ah_capabilities.cap_eeprom._v); \/* Read status of selected queue */#define AR5K_REG_READ_Q(_reg, _queue) \ (AR5K_REG_READ(_reg) & (1 << _queue)) \#define AR5K_REG_WRITE_Q(_reg, _queue) \ AR5K_REG_WRITE(_reg, (1 << _queue))#define AR5K_Q_ENABLE_BITS(_reg, _queue) do { \ _reg |= 1 << _queue; \} while (0)#define AR5K_Q_DISABLE_BITS(_reg, _queue) do { \ _reg &= ~(1 << _queue); \} while (0)/* * Unaligned little endian access */#define AR5K_LE_READ_2(_p) \ (((const u_int8_t *)(_p))[0] | (((const u_int8_t *)(_p))[1] << 8))#define AR5K_LE_READ_4(_p) \ (((const u_int8_t *)(_p))[0] | \ (((const u_int8_t *)(_p))[1] << 8) | \ (((const u_int8_t *)(_p))[2] << 16) | \ (((const u_int8_t *)(_p))[3] << 24))#define AR5K_LE_WRITE_2(_p, _val) \ ((((u_int8_t *)(_p))[0] = ((u_int32_t)(_val) & 0xff)), \ (((u_int8_t *)(_p))[1] = (((u_int32_t)(_val) >> 8) & 0xff)))#define AR5K_LE_WRITE_4(_p, _val) \ ((((u_int8_t *)(_p))[0] = ((u_int32_t)(_val) & 0xff)), \ (((u_int8_t *)(_p))[1] = (((u_int32_t)(_val) >> 8) & 0xff)), \ (((u_int8_t *)(_p))[2] = (((u_int32_t)(_val) >> 16) & 0xff)), \ (((u_int8_t *)(_p))[3] = (((u_int32_t)(_val) >> 24) & 0xff)))/* * Initial register values */struct ar5k_ini { u_int16_t ini_register; u_int32_t ini_value; enum { AR5K_INI_WRITE = 0, AR5K_INI_READ = 1, } ini_mode;};#define AR5K_INI_VAL_11A 0#define AR5K_INI_VAL_11A_TURBO 1#define AR5K_INI_VAL_11B 2#define AR5K_INI_VAL_11G 3#define AR5K_INI_VAL_11G_TURBO 4#define AR5K_INI_VAL_XR 0#define AR5K_INI_VAL_MAX 5#define AR5K_INI_PHY_5111 0#define AR5K_INI_PHY_5112 1#define AR5K_INI_PHY_511X 1#define AR5K_AR5111_INI_RF_MAX_BANKS AR5K_MAX_RF_BANKS#define AR5K_AR5112_INI_RF_MAX_BANKS AR5K_MAX_RF_BANKSstruct ar5k_ini_rf { u_int8_t rf_bank; u_int16_t rf_register; u_int32_t rf_value[5];};#define AR5K_AR5111_INI_RF { \ { 0, 0x989c, \ { 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000 } }, \ { 0, 0x989c, \ { 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000 } }, \ { 0, 0x989c, \ { 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000 } }, \ { 0, 0x989c, \ { 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000 } }, \ { 0, 0x989c, \ { 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000 } }, \ { 0, 0x989c, \ { 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000 } }, \ { 0, 0x989c, \ { 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000 } }, \ { 0, 0x989c, \ { 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000 } }, \ { 0, 0x989c, \ { 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000 } }, \ { 0, 0x989c, \ { 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000 } }, \ { 0, 0x989c, \ { 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000 } }, \ { 0, 0x989c, \ { 0x00380000, 0x00380000, 0x00380000, 0x00380000, 0x00380000 } }, \ { 0, 0x989c, \ { 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000 } }, \ { 0, 0x989c, \ { 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000 } }, \ { 0, 0x989c, \ { 0x00000000, 0x00000000, 0x000000c0, 0x00000080, 0x00000080 } }, \ { 0, 0x989c, \ { 0x000400f9, 0x000400f9, 0x000400ff, 0x000400fd, 0x000400fd } }, \ { 0, 0x98d4, \ { 0x00000000, 0x00000000, 0x00000004, 0x00000004, 0x00000004 } }, \ { 1, 0x98d4, \ { 0x00000020, 0x00000020, 0x00000020, 0x00000020, 0x00000020 } }, \ { 2, 0x98d4, \ { 0x00000010, 0x00000014, 0x00000010, 0x00000010, 0x00000014 } }, \ { 3, 0x98d8, \ { 0x00601068, 0x00601068, 0x00601068, 0x00601068, 0x00601068 } }, \ { 6, 0x989c, \ { 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000 } }, \ { 6, 0x989c, \ { 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000 } }, \ { 6, 0x989c, \ { 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000 } }, \ { 6, 0x989c, \ { 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000 } }, \ { 6, 0x989c, \ { 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000 } }, \ { 6, 0x989c, \ { 0x10000000, 0x10000000, 0x10000000, 0x10000000, 0x10000000 } }, \ { 6, 0x989c, \ { 0x04000000, 0x04000000, 0x04000000, 0x04000000, 0x04000000 } }, \ { 6, 0x989c, \ { 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000 } }, \ { 6, 0x989c, \ { 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000 } }, \ { 6, 0x989c, \ { 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000 } }, \ { 6, 0x989c, \ { 0x00000000, 0x00000000, 0x0a000000, 0x00000000, 0x00000000 } }, \ { 6, 0x989c, \ { 0x003800c0, 0x00380080, 0x023800c0, 0x003800c0, 0x003800c0 } }, \ { 6, 0x989c, \ { 0x00020006, 0x00020006, 0x00000006, 0x00020006, 0x00020006 } }, \ { 6, 0x989c, \ { 0x00000089, 0x00000089, 0x00000089, 0x00000089, 0x00000089 } }, \ { 6, 0x989c, \ { 0x000000a0, 0x000000a0, 0x000000a0, 0x000000a0, 0x000000a0 } }, \ { 6, 0x989c, \ { 0x00040007, 0x00040007, 0x00040007, 0x00040007, 0x00040007 } }, \ { 6, 0x98d4, \ { 0x0000001a, 0x0000001a, 0x0000001a, 0x0000001a, 0x0000001a } }, \ { 7, 0x989c, \ { 0x00000040, 0x00000048, 0x00000040, 0x00000040, 0x00000040 } }, \ { 7, 0x989c, \ { 0x00000010, 0x00000010, 0x00000010, 0x00000010, 0x00000010 } }, \ { 7, 0x989c, \ { 0x00000008, 0x00000008, 0x00000008, 0x00000008, 0x00000008 } }, \ { 7, 0x989c, \ { 0x0000004f, 0x0000004f, 0x0000004f, 0x0000004f, 0x0000004f } }, \ { 7, 0x989c, \ { 0x000000f1, 0x000000f1, 0x00000061, 0x000000f1, 0x000000f1 } }, \ { 7, 0x989c, \ { 0x0000904f, 0x0000904f, 0x0000904c, 0x0000904f, 0x0000904f } }, \ { 7, 0x989c, \ { 0x0000125a, 0x0000125a, 0x0000129a, 0x0000125a, 0x0000125a } }, \ { 7, 0x98cc, \ { 0x0000000e, 0x0000000e, 0x0000000f, 0x0000000e, 0x0000000e } }, \}#define AR5K_AR5112_INI_RF { \ { 1, 0x98d4, \ { 0x00000020, 0x00000020, 0x00000020, 0x00000020, 0x00000020 } }, \ { 2, 0x98d0, \ { 0x03060408, 0x03070408, 0x03060408, 0x03060408, 0x03070408 } }, \ { 3, 0x98dc, \ { 0x00a0c0c0, 0x00a0c0c0, 0x00e0c0c0, 0x00e0c0c0, 0x00e0c0c0 } }, \ { 6, 0x989c, \ { 0x00a00000, 0x00a00000, 0x00a00000, 0x00a00000, 0x00a00000 } }, \ { 6, 0x989c, \ { 0x000a0000, 0x000a0000, 0x000a0000, 0x000a0000, 0x000a0000 } }, \ { 6, 0x989c, \ { 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000 } }, \ { 6, 0x989c, \ { 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000 } }, \ { 6, 0x989c, \ { 0x00660000, 0x00660000, 0x00660000, 0x00660000, 0x00660000 } }, \ { 6, 0x989c, \ { 0x00db0000, 0x00db0000, 0x00db0000, 0x00db0000, 0x00db0000 } }, \ { 6, 0x989c, \ { 0x00f10000, 0x00f10000, 0x00f10000, 0x00f10000, 0x00f10000 } }, \ { 6, 0x989c, \ { 0x00120000, 0x00120000, 0x00120000, 0x00120000, 0x00120000 } }, \ { 6, 0x989c, \ { 0x00120000, 0x00120000, 0x00120000, 0x00120000, 0x00120000 } }, \ { 6, 0x989c, \ { 0x00730000, 0x00730000, 0x00730000, 0x00730000, 0x00730000 } }, \ { 6, 0x989c, \ { 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000 } }, \ { 6, 0x989c, \ { 0x000c0000, 0x000c0000, 0x000c0000, 0x000c0000, 0x000c0000 } }, \ { 6, 0x989c, \ { 0x00ff0000, 0x00ff0000, 0x00ff0000, 0x00ff0000, 0x00ff0000 } }, \ { 6, 0x989c, \ { 0x00ff0000, 0x00ff0000, 0x00ff0000, 0x00ff0000, 0x00ff0000 } }, \ { 6, 0x989c, \ { 0x008b0000, 0x008b0000, 0x008b0000, 0x008b0000, 0x008b0000 } }, \ { 6, 0x989c, \ { 0x00600000, 0x00600000, 0x00600000, 0x00600000, 0x00600000 } }, \ { 6, 0x989c, \ { 0x000c0000, 0x000c0000, 0x000c0000, 0x000c0000, 0x000c0000 } }, \ { 6, 0x989c, \ { 0x00840000, 0x00840000, 0x00840000, 0x00840000, 0x00840000 } }, \ { 6, 0x989c, \ { 0x00640000, 0x00640000, 0x00640000, 0x00640000, 0x00640000 } }, \ { 6, 0x989c, \ { 0x00200000, 0x00200000, 0x00200000, 0x00200000, 0x00200000 } }, \ { 6, 0x989c, \ { 0x00240000, 0x00240000, 0x00240000, 0x00240000, 0x00240000 } }, \ { 6, 0x989c, \ { 0x00250000, 0x00250000, 0x00250000, 0x00250000, 0x00250000 } }, \ { 6, 0x989c, \ { 0x00110000, 0x00110000, 0x00110000, 0x00110000, 0x00110000 } }, \ { 6, 0x989c, \ { 0x00110000, 0x00110000, 0x00110000, 0x00110000, 0x00110000 } }, \ { 6, 0x989c, \ { 0x00510000, 0x00510000, 0x00510000, 0x00510000, 0x00510000 } }, \ { 6, 0x989c, \ { 0x1c040000, 0x1c040000, 0x1c040000, 0x1c040000, 0x1c040000 } }, \ { 6, 0x989c, \ { 0x000a0000, 0x000a0000, 0x000a0000, 0x000a0000, 0x000a0000 } }, \ { 6, 0x989c, \ { 0x00a10000, 0x00a10000, 0x00a10000, 0x00a10000, 0x00a10000 } }, \ { 6, 0x989c, \ { 0x00400000, 0x00400000, 0x00400000, 0x00400000, 0x00400000 } }, \ { 6, 0x989c, \ { 0x03090000, 0x03090000, 0x03090000, 0x03090000, 0x03090000 } }, \ { 6, 0x989c, \ { 0x06000000, 0x06000000, 0x06000000, 0x06000000, 0x06000000 } }, \ { 6, 0x989c, \ { 0x000000b0, 0x000000b0, 0x000000a8, 0x000000a8, 0x000000a8 } }, \ { 6, 0x989c, \ { 0x0000002e, 0x0000002e, 0x0000002e, 0x0000002e, 0x0000002e } }, \ { 6, 0x989c, \ { 0x006c4a41, 0x006c4a41, 0x006c4af1, 0x006c4a61, 0x006c4a61 } }, \ { 6, 0x989c, \ { 0x0050892a, 0x0050892a, 0x0050892b, 0x0050892b, 0x0050892b } }, \ { 6, 0x989c, \ { 0x00842400, 0x00842400, 0x00842400, 0x00842400, 0x00842400 } }, \ { 6, 0x989c, \ { 0x00c69200, 0x00c69200, 0x00c69200, 0x00c69200, 0x00c69200 } }, \ { 6, 0x98d0, \ { 0x0002000c, 0x0002000c, 0x0002000c, 0x0002000c, 0x0002000c } }, \ { 7, 0x989c, \ { 0x00000094, 0x00000094, 0x00000094, 0x00000094, 0x00000094 } }, \ { 7, 0x989c, \ { 0x00000091, 0x00000091, 0x00000091, 0x00000091, 0x00000091 } }, \ { 7, 0x989c, \ { 0x0000000a, 0x0000000a, 0x00000012, 0x00000012, 0x00000012 } }, \ { 7, 0x989c, \ { 0x00000080, 0x00000080, 0x00000080, 0x00000080, 0x00000080 } }, \ { 7, 0x989c, \ { 0x000000c1, 0x000000c1, 0x000000c1, 0x000000c1, 0x000000c1 } }, \ { 7, 0x989c, \ { 0x00000060, 0x00000060, 0x00000060, 0x00000060, 0x00000060 } }, \ { 7, 0x989c, \ { 0x000000f0, 0x000000f0, 0x000000f0, 0x000000f0, 0x000000f0 } }, \ { 7, 0x989c, \ { 0x00000022, 0x00000022, 0x00000022, 0x00000022, 0x00000022 } }, \ { 7, 0x989c, \ { 0x00000092, 0x00000092, 0x00000092, 0x00000092, 0x00000092 } }, \ { 7, 0x989c, \ { 0x000000d4, 0x000000d4, 0x000000d4, 0x000000d4, 0x000000d4 } }, \ { 7, 0x989c, \ { 0x000014cc, 0x000014cc, 0x000014cc, 0x000014cc, 0x000014cc } }, \ { 7, 0x989c, \ { 0x0000048c, 0x0000048c, 0x0000048c, 0x0000048c, 0x0000048c } }, \ { 7, 0x98c4, \ { 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003 } }, \ } #define AR5K_AR5112A_INI_RF { \ { 1, 0x98d4, \ { 0x00000020, 0x00000020, 0x00000020, 0x00000020, 0x00000020 } }, \ { 2, 0x98d0, \ { 0x03060408, 0x03070408, 0x03060408, 0x03060408, 0x03070408 } }, \ { 3, 0x98dc, \ { 0x00a0c0c0, 0x00a0c0c0, 0x00e0c0c0, 0x00e0c0c0, 0x00e0c0c0 } }, \ { 6, 0x989c, \ { 0x0f000000, 0x0f000000, 0x0f000000, 0x0f000000, 0x0f000000 } }, \ { 6, 0x989c, \ { 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000 } }, \ { 6, 0x989c, \ { 0x00800000, 0x00800000, 0x00800000, 0x00800000, 0x00800000 } }, \ { 6, 0x989c, \ { 0x002a0000, 0x002a0000, 0x002a0000, 0x002a0000, 0x002a0000 } }, \ { 6, 0x989c, \ { 0x00010000, 0x00010000, 0x00010000, 0x00010000, 0x00010000 } }, \ { 6, 0x989c, \ { 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000 } }, \ { 6, 0x989c, \ { 0x00180000, 0x00180000, 0x00180000, 0x00180000, 0x00180000 } }, \ { 6, 0x989c, \ { 0x00600
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -