diff options
author | Ben Cahill <ben.m.cahill@intel.com> | 2007-11-28 22:10:03 -0500 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2008-01-28 18:05:28 -0500 |
commit | aad141433b630e3e28bab1e27606a688b22dbcc1 (patch) | |
tree | 461f8a983c3609c25551191558ca8ac7833c589d /drivers/net/wireless/iwlwifi/iwl-4965-hw.h | |
parent | 0c434c5a7f9983c8ee3c8943924db8c5fb1d12bd (diff) |
iwlwifi: document keep-warm buffer
Document keep-warm buffer
Consolidate flow handler address definitions
Signed-off-by: Ben Cahill <ben.m.cahill@intel.com>
Signed-off-by: Zhu Yi <yi.zhu@intel.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
Diffstat (limited to 'drivers/net/wireless/iwlwifi/iwl-4965-hw.h')
-rw-r--r-- | drivers/net/wireless/iwlwifi/iwl-4965-hw.h | 39 |
1 files changed, 28 insertions, 11 deletions
diff --git a/drivers/net/wireless/iwlwifi/iwl-4965-hw.h b/drivers/net/wireless/iwlwifi/iwl-4965-hw.h index 4a2fa80acff7..8698bf77fd0b 100644 --- a/drivers/net/wireless/iwlwifi/iwl-4965-hw.h +++ b/drivers/net/wireless/iwlwifi/iwl-4965-hw.h | |||
@@ -1282,20 +1282,37 @@ enum { | |||
1282 | 1282 | ||
1283 | /********************* END TXPOWER *****************************************/ | 1283 | /********************* END TXPOWER *****************************************/ |
1284 | 1284 | ||
1285 | /****************************/ | ||
1285 | /* Flow Handler Definitions */ | 1286 | /* Flow Handler Definitions */ |
1287 | /****************************/ | ||
1286 | 1288 | ||
1287 | /**********************/ | 1289 | /* |
1288 | /* Addresses */ | 1290 | * This I/O area is directly read/writable by driver (e.g. Linux uses writel()) |
1289 | /**********************/ | 1291 | * Addresses are offsets from device's PCI hardware base address. |
1290 | 1292 | */ | |
1291 | #define FH_MEM_LOWER_BOUND (0x1000) | 1293 | #define FH_MEM_LOWER_BOUND (0x1000) |
1292 | #define FH_MEM_UPPER_BOUND (0x1EF0) | 1294 | #define FH_MEM_UPPER_BOUND (0x1EF0) |
1293 | 1295 | ||
1294 | #define IWL_FH_REGS_LOWER_BOUND (0x1000) | 1296 | /** |
1295 | #define IWL_FH_REGS_UPPER_BOUND (0x2000) | 1297 | * Keep-Warm (KW) buffer base address. |
1296 | 1298 | * | |
1299 | * Driver must allocate a 4KByte buffer that is used by 4965 for keeping the | ||
1300 | * host DRAM powered on (via dummy accesses to DRAM) to maintain low-latency | ||
1301 | * DRAM access when 4965 is Txing or Rxing. The dummy accesses prevent host | ||
1302 | * from going into a power-savings mode that would cause higher DRAM latency, | ||
1303 | * and possible data over/under-runs, before all Tx/Rx is complete. | ||
1304 | * | ||
1305 | * Driver loads IWL_FH_KW_MEM_ADDR_REG with the physical address (bits 35:4) | ||
1306 | * of the buffer, which must be 4K aligned. Once this is set up, the 4965 | ||
1307 | * automatically invokes keep-warm accesses when normal accesses might not | ||
1308 | * be sufficient to maintain fast DRAM response. | ||
1309 | * | ||
1310 | * Bit fields: | ||
1311 | * 31-0: Keep-warm buffer physical base address [35:4], must be 4K aligned | ||
1312 | */ | ||
1297 | #define IWL_FH_KW_MEM_ADDR_REG (FH_MEM_LOWER_BOUND + 0x97C) | 1313 | #define IWL_FH_KW_MEM_ADDR_REG (FH_MEM_LOWER_BOUND + 0x97C) |
1298 | 1314 | ||
1315 | |||
1299 | /* CBBC Area - Circular buffers base address cache pointers table */ | 1316 | /* CBBC Area - Circular buffers base address cache pointers table */ |
1300 | #define FH_MEM_CBBC_LOWER_BOUND (FH_MEM_LOWER_BOUND + 0x9D0) | 1317 | #define FH_MEM_CBBC_LOWER_BOUND (FH_MEM_LOWER_BOUND + 0x9D0) |
1301 | #define FH_MEM_CBBC_UPPER_BOUND (FH_MEM_LOWER_BOUND + 0xA10) | 1318 | #define FH_MEM_CBBC_UPPER_BOUND (FH_MEM_LOWER_BOUND + 0xA10) |
@@ -1326,16 +1343,16 @@ enum { | |||
1326 | #define FH_MEM_RSSR_RX_ENABLE_ERR_IRQ2DRV (FH_MEM_RSSR_LOWER_BOUND + 0x008) | 1343 | #define FH_MEM_RSSR_RX_ENABLE_ERR_IRQ2DRV (FH_MEM_RSSR_LOWER_BOUND + 0x008) |
1327 | 1344 | ||
1328 | /* TCSR */ | 1345 | /* TCSR */ |
1329 | #define IWL_FH_TCSR_LOWER_BOUND (IWL_FH_REGS_LOWER_BOUND + 0xD00) | 1346 | #define IWL_FH_TCSR_LOWER_BOUND (FH_MEM_LOWER_BOUND + 0xD00) |
1330 | #define IWL_FH_TCSR_UPPER_BOUND (IWL_FH_REGS_LOWER_BOUND + 0xE60) | 1347 | #define IWL_FH_TCSR_UPPER_BOUND (FH_MEM_LOWER_BOUND + 0xE60) |
1331 | 1348 | ||
1332 | #define IWL_FH_TCSR_CHNL_TX_CONFIG_REG(_chnl) \ | 1349 | #define IWL_FH_TCSR_CHNL_TX_CONFIG_REG(_chnl) \ |
1333 | (IWL_FH_TCSR_LOWER_BOUND + 0x20 * _chnl) | 1350 | (IWL_FH_TCSR_LOWER_BOUND + 0x20 * _chnl) |
1334 | 1351 | ||
1335 | /* TSSR Area - Tx shared status registers */ | 1352 | /* TSSR Area - Tx shared status registers */ |
1336 | /* TSSR */ | 1353 | /* TSSR */ |
1337 | #define IWL_FH_TSSR_LOWER_BOUND (IWL_FH_REGS_LOWER_BOUND + 0xEA0) | 1354 | #define IWL_FH_TSSR_LOWER_BOUND (FH_MEM_LOWER_BOUND + 0xEA0) |
1338 | #define IWL_FH_TSSR_UPPER_BOUND (IWL_FH_REGS_LOWER_BOUND + 0xEC0) | 1355 | #define IWL_FH_TSSR_UPPER_BOUND (FH_MEM_LOWER_BOUND + 0xEC0) |
1339 | 1356 | ||
1340 | #define IWL_FH_TSSR_TX_STATUS_REG (IWL_FH_TSSR_LOWER_BOUND + 0x010) | 1357 | #define IWL_FH_TSSR_TX_STATUS_REG (IWL_FH_TSSR_LOWER_BOUND + 0x010) |
1341 | 1358 | ||