diff options
Diffstat (limited to 'drivers/net/wireless/iwlwifi/iwl-prph.h')
| -rw-r--r-- | drivers/net/wireless/iwlwifi/iwl-prph.h | 93 | 
1 files changed, 51 insertions, 42 deletions
| diff --git a/drivers/net/wireless/iwlwifi/iwl-prph.h b/drivers/net/wireless/iwlwifi/iwl-prph.h index f00d188b2cfc..2f267b8aabbb 100644 --- a/drivers/net/wireless/iwlwifi/iwl-prph.h +++ b/drivers/net/wireless/iwlwifi/iwl-prph.h @@ -168,6 +168,7 @@   * the scheduler (especially for queue #4/#9, the command queue, otherwise   * the driver can't issue commands!):   */ +#define SCD_MEM_LOWER_BOUND		(0x0000)  /**   * Max Tx window size is the max number of contiguous TFDs that the scheduler @@ -177,53 +178,61 @@  #define SCD_WIN_SIZE				64  #define SCD_FRAME_LIMIT				64 -#define IWL_SCD_TXFIFO_POS_TID			(0) -#define IWL_SCD_TXFIFO_POS_RA			(4) -#define IWL_SCD_QUEUE_RA_TID_MAP_RATID_MSK	(0x01FF) +#define SCD_TXFIFO_POS_TID			(0) +#define SCD_TXFIFO_POS_RA			(4) +#define SCD_QUEUE_RA_TID_MAP_RATID_MSK	(0x01FF)  /* agn SCD */ -#define IWLAGN_SCD_QUEUE_STTS_REG_POS_TXF	(0) -#define IWLAGN_SCD_QUEUE_STTS_REG_POS_ACTIVE	(3) -#define IWLAGN_SCD_QUEUE_STTS_REG_POS_WSL	(4) -#define IWLAGN_SCD_QUEUE_STTS_REG_POS_SCD_ACT_EN (19) -#define IWLAGN_SCD_QUEUE_STTS_REG_MSK		(0x00FF0000) - -#define IWLAGN_SCD_QUEUE_CTX_REG1_CREDIT_POS		(8) -#define IWLAGN_SCD_QUEUE_CTX_REG1_CREDIT_MSK		(0x00FFFF00) -#define IWLAGN_SCD_QUEUE_CTX_REG1_SUPER_CREDIT_POS	(24) -#define IWLAGN_SCD_QUEUE_CTX_REG1_SUPER_CREDIT_MSK	(0xFF000000) -#define IWLAGN_SCD_QUEUE_CTX_REG2_WIN_SIZE_POS		(0) -#define IWLAGN_SCD_QUEUE_CTX_REG2_WIN_SIZE_MSK		(0x0000007F) -#define IWLAGN_SCD_QUEUE_CTX_REG2_FRAME_LIMIT_POS	(16) -#define IWLAGN_SCD_QUEUE_CTX_REG2_FRAME_LIMIT_MSK	(0x007F0000) - -#define IWLAGN_SCD_CONTEXT_DATA_OFFSET		(0x600) -#define IWLAGN_SCD_TX_STTS_BITMAP_OFFSET		(0x7B1) -#define IWLAGN_SCD_TRANSLATE_TBL_OFFSET		(0x7E0) - -#define IWLAGN_SCD_CONTEXT_QUEUE_OFFSET(x)\ -	(IWLAGN_SCD_CONTEXT_DATA_OFFSET + ((x) * 8)) - -#define IWLAGN_SCD_TRANSLATE_TBL_OFFSET_QUEUE(x) \ -	((IWLAGN_SCD_TRANSLATE_TBL_OFFSET + ((x) * 2)) & 0xfffc) - -#define IWLAGN_SCD_QUEUECHAIN_SEL_ALL(priv)	\ +#define SCD_QUEUE_STTS_REG_POS_TXF	(0) +#define SCD_QUEUE_STTS_REG_POS_ACTIVE	(3) +#define SCD_QUEUE_STTS_REG_POS_WSL	(4) +#define SCD_QUEUE_STTS_REG_POS_SCD_ACT_EN (19) +#define SCD_QUEUE_STTS_REG_MSK		(0x00FF0000) + +#define SCD_QUEUE_CTX_REG1_CREDIT_POS		(8) +#define SCD_QUEUE_CTX_REG1_CREDIT_MSK		(0x00FFFF00) +#define SCD_QUEUE_CTX_REG1_SUPER_CREDIT_POS	(24) +#define SCD_QUEUE_CTX_REG1_SUPER_CREDIT_MSK	(0xFF000000) +#define SCD_QUEUE_CTX_REG2_WIN_SIZE_POS		(0) +#define SCD_QUEUE_CTX_REG2_WIN_SIZE_MSK		(0x0000007F) +#define SCD_QUEUE_CTX_REG2_FRAME_LIMIT_POS	(16) +#define SCD_QUEUE_CTX_REG2_FRAME_LIMIT_MSK	(0x007F0000) + +/* Context Data */ +#define SCD_CONTEXT_MEM_LOWER_BOUND	(SCD_MEM_LOWER_BOUND + 0x600) +#define SCD_CONTEXT_MEM_UPPER_BOUND	(SCD_MEM_LOWER_BOUND + 0x6A0) + +/* Tx status */ +#define SCD_TX_STTS_MEM_LOWER_BOUND	(SCD_MEM_LOWER_BOUND + 0x6A0) +#define SCD_TX_STTS_MEM_UPPER_BOUND	(SCD_MEM_LOWER_BOUND + 0x7E0) + +/* Translation Data */ +#define SCD_TRANS_TBL_MEM_LOWER_BOUND	(SCD_MEM_LOWER_BOUND + 0x7E0) +#define SCD_TRANS_TBL_MEM_UPPER_BOUND	(SCD_MEM_LOWER_BOUND + 0x808) + +#define SCD_CONTEXT_QUEUE_OFFSET(x)\ +	(SCD_CONTEXT_MEM_LOWER_BOUND + ((x) * 8)) + +#define SCD_TRANS_TBL_OFFSET_QUEUE(x) \ +	((SCD_TRANS_TBL_MEM_LOWER_BOUND + ((x) * 2)) & 0xfffc) + +#define SCD_QUEUECHAIN_SEL_ALL(priv)	\  	(((1<<(priv)->hw_params.max_txq_num) - 1) &\  	(~(1<<(priv)->cmd_queue))) -#define IWLAGN_SCD_BASE			(PRPH_BASE + 0xa02c00) - -#define IWLAGN_SCD_SRAM_BASE_ADDR	(IWLAGN_SCD_BASE + 0x0) -#define IWLAGN_SCD_DRAM_BASE_ADDR	(IWLAGN_SCD_BASE + 0x8) -#define IWLAGN_SCD_AIT			(IWLAGN_SCD_BASE + 0x0c) -#define IWLAGN_SCD_TXFACT		(IWLAGN_SCD_BASE + 0x10) -#define IWLAGN_SCD_ACTIVE		(IWLAGN_SCD_BASE + 0x14) -#define IWLAGN_SCD_QUEUE_WRPTR(x)	(IWLAGN_SCD_BASE + 0x18 + (x) * 4) -#define IWLAGN_SCD_QUEUE_RDPTR(x)	(IWLAGN_SCD_BASE + 0x68 + (x) * 4) -#define IWLAGN_SCD_QUEUECHAIN_SEL	(IWLAGN_SCD_BASE + 0xe8) -#define IWLAGN_SCD_AGGR_SEL		(IWLAGN_SCD_BASE + 0x248) -#define IWLAGN_SCD_INTERRUPT_MASK	(IWLAGN_SCD_BASE + 0x108) -#define IWLAGN_SCD_QUEUE_STATUS_BITS(x)	(IWLAGN_SCD_BASE + 0x10c + (x) * 4) +#define SCD_BASE			(PRPH_BASE + 0xa02c00) + +#define SCD_SRAM_BASE_ADDR	(SCD_BASE + 0x0) +#define SCD_DRAM_BASE_ADDR	(SCD_BASE + 0x8) +#define SCD_AIT			(SCD_BASE + 0x0c) +#define SCD_TXFACT		(SCD_BASE + 0x10) +#define SCD_ACTIVE		(SCD_BASE + 0x14) +#define SCD_QUEUE_WRPTR(x)	(SCD_BASE + 0x18 + (x) * 4) +#define SCD_QUEUE_RDPTR(x)	(SCD_BASE + 0x68 + (x) * 4) +#define SCD_QUEUECHAIN_SEL	(SCD_BASE + 0xe8) +#define SCD_AGGR_SEL		(SCD_BASE + 0x248) +#define SCD_INTERRUPT_MASK	(SCD_BASE + 0x108) +#define SCD_QUEUE_STATUS_BITS(x)	(SCD_BASE + 0x10c + (x) * 4)  /*********************** END TX SCHEDULER *************************************/ | 
