1ceb26445SVasanthakumar Thiagarajan /* 25b68138eSSujith Manoharan * Copyright (c) 2010-2011 Atheros Communications Inc. 3ceb26445SVasanthakumar Thiagarajan * 4ceb26445SVasanthakumar Thiagarajan * Permission to use, copy, modify, and/or distribute this software for any 5ceb26445SVasanthakumar Thiagarajan * purpose with or without fee is hereby granted, provided that the above 6ceb26445SVasanthakumar Thiagarajan * copyright notice and this permission notice appear in all copies. 7ceb26445SVasanthakumar Thiagarajan * 8ceb26445SVasanthakumar Thiagarajan * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES 9ceb26445SVasanthakumar Thiagarajan * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF 10ceb26445SVasanthakumar Thiagarajan * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR 11ceb26445SVasanthakumar Thiagarajan * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES 12ceb26445SVasanthakumar Thiagarajan * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN 13ceb26445SVasanthakumar Thiagarajan * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF 14ceb26445SVasanthakumar Thiagarajan * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. 15ceb26445SVasanthakumar Thiagarajan */ 16ceb26445SVasanthakumar Thiagarajan 17ceb26445SVasanthakumar Thiagarajan #ifndef AR9003_MAC_H 18ceb26445SVasanthakumar Thiagarajan #define AR9003_MAC_H 19ceb26445SVasanthakumar Thiagarajan 20ad7b8060SVasanthakumar Thiagarajan #define AR_DescId 0xffff0000 21ad7b8060SVasanthakumar Thiagarajan #define AR_DescId_S 16 22ad7b8060SVasanthakumar Thiagarajan #define AR_CtrlStat 0x00004000 23994089dbSVasanthakumar Thiagarajan #define AR_CtrlStat_S 14 24ad7b8060SVasanthakumar Thiagarajan #define AR_TxRxDesc 0x00008000 25994089dbSVasanthakumar Thiagarajan #define AR_TxRxDesc_S 15 26994089dbSVasanthakumar Thiagarajan #define AR_TxQcuNum 0x00000f00 27994089dbSVasanthakumar Thiagarajan #define AR_TxQcuNum_S 8 28994089dbSVasanthakumar Thiagarajan 29994089dbSVasanthakumar Thiagarajan #define AR_BufLen 0x0fff0000 30994089dbSVasanthakumar Thiagarajan #define AR_BufLen_S 16 31994089dbSVasanthakumar Thiagarajan 32994089dbSVasanthakumar Thiagarajan #define AR_TxDescId 0xffff0000 33994089dbSVasanthakumar Thiagarajan #define AR_TxDescId_S 16 34994089dbSVasanthakumar Thiagarajan #define AR_TxPtrChkSum 0x0000ffff 35994089dbSVasanthakumar Thiagarajan 36994089dbSVasanthakumar Thiagarajan #define AR_LowRxChain 0x00004000 37994089dbSVasanthakumar Thiagarajan 38994089dbSVasanthakumar Thiagarajan #define AR_Not_Sounding 0x20000000 39ad7b8060SVasanthakumar Thiagarajan 40717f6bedSFelix Fietkau /* ctl 12 */ 41717f6bedSFelix Fietkau #define AR_PAPRDChainMask 0x00000e00 42717f6bedSFelix Fietkau #define AR_PAPRDChainMask_S 9 43717f6bedSFelix Fietkau 446c84ce08SVasanthakumar Thiagarajan #define MAP_ISR_S2_CST 6 456c84ce08SVasanthakumar Thiagarajan #define MAP_ISR_S2_GTT 6 466c84ce08SVasanthakumar Thiagarajan #define MAP_ISR_S2_TIM 3 476c84ce08SVasanthakumar Thiagarajan #define MAP_ISR_S2_CABEND 0 486c84ce08SVasanthakumar Thiagarajan #define MAP_ISR_S2_DTIMSYNC 7 496c84ce08SVasanthakumar Thiagarajan #define MAP_ISR_S2_DTIM 7 506c84ce08SVasanthakumar Thiagarajan #define MAP_ISR_S2_TSFOOR 4 51aea702b7SLuis R. Rodriguez #define MAP_ISR_S2_BB_WATCHDOG 6 526c84ce08SVasanthakumar Thiagarajan 53994089dbSVasanthakumar Thiagarajan #define AR9003TXC_CONST(_ds) ((const struct ar9003_txc *) _ds) 54994089dbSVasanthakumar Thiagarajan 55ceb26445SVasanthakumar Thiagarajan struct ar9003_rxs { 56ceb26445SVasanthakumar Thiagarajan u32 ds_info; 57ceb26445SVasanthakumar Thiagarajan u32 status1; 58ceb26445SVasanthakumar Thiagarajan u32 status2; 59ceb26445SVasanthakumar Thiagarajan u32 status3; 60ceb26445SVasanthakumar Thiagarajan u32 status4; 61ceb26445SVasanthakumar Thiagarajan u32 status5; 62ceb26445SVasanthakumar Thiagarajan u32 status6; 63ceb26445SVasanthakumar Thiagarajan u32 status7; 64ceb26445SVasanthakumar Thiagarajan u32 status8; 65ceb26445SVasanthakumar Thiagarajan u32 status9; 66ceb26445SVasanthakumar Thiagarajan u32 status10; 67ceb26445SVasanthakumar Thiagarajan u32 status11; 68ada9f1caSFelix Fietkau } __packed __aligned(4); 69ceb26445SVasanthakumar Thiagarajan 70162c3be3SVasanthakumar Thiagarajan /* Transmit Control Descriptor */ 71162c3be3SVasanthakumar Thiagarajan struct ar9003_txc { 72162c3be3SVasanthakumar Thiagarajan u32 info; /* descriptor information */ 73162c3be3SVasanthakumar Thiagarajan u32 link; /* link pointer */ 74162c3be3SVasanthakumar Thiagarajan u32 data0; /* data pointer to 1st buffer */ 75162c3be3SVasanthakumar Thiagarajan u32 ctl3; /* DMA control 3 */ 76162c3be3SVasanthakumar Thiagarajan u32 data1; /* data pointer to 2nd buffer */ 77162c3be3SVasanthakumar Thiagarajan u32 ctl5; /* DMA control 5 */ 78162c3be3SVasanthakumar Thiagarajan u32 data2; /* data pointer to 3rd buffer */ 79162c3be3SVasanthakumar Thiagarajan u32 ctl7; /* DMA control 7 */ 80162c3be3SVasanthakumar Thiagarajan u32 data3; /* data pointer to 4th buffer */ 81162c3be3SVasanthakumar Thiagarajan u32 ctl9; /* DMA control 9 */ 82162c3be3SVasanthakumar Thiagarajan u32 ctl10; /* DMA control 10 */ 83162c3be3SVasanthakumar Thiagarajan u32 ctl11; /* DMA control 11 */ 84162c3be3SVasanthakumar Thiagarajan u32 ctl12; /* DMA control 12 */ 85162c3be3SVasanthakumar Thiagarajan u32 ctl13; /* DMA control 13 */ 86162c3be3SVasanthakumar Thiagarajan u32 ctl14; /* DMA control 14 */ 87162c3be3SVasanthakumar Thiagarajan u32 ctl15; /* DMA control 15 */ 88162c3be3SVasanthakumar Thiagarajan u32 ctl16; /* DMA control 16 */ 89162c3be3SVasanthakumar Thiagarajan u32 ctl17; /* DMA control 17 */ 90162c3be3SVasanthakumar Thiagarajan u32 ctl18; /* DMA control 18 */ 91162c3be3SVasanthakumar Thiagarajan u32 ctl19; /* DMA control 19 */ 92162c3be3SVasanthakumar Thiagarajan u32 ctl20; /* DMA control 20 */ 93162c3be3SVasanthakumar Thiagarajan u32 ctl21; /* DMA control 21 */ 94162c3be3SVasanthakumar Thiagarajan u32 ctl22; /* DMA control 22 */ 95*9da27232SSujith Manoharan u32 ctl23; /* DMA control 23 */ 96*9da27232SSujith Manoharan u32 pad[8]; /* pad to cache line (128 bytes/32 dwords) */ 97ada9f1caSFelix Fietkau } __packed __aligned(4); 98162c3be3SVasanthakumar Thiagarajan 99744d4025SVasanthakumar Thiagarajan struct ar9003_txs { 100744d4025SVasanthakumar Thiagarajan u32 ds_info; 101744d4025SVasanthakumar Thiagarajan u32 status1; 102744d4025SVasanthakumar Thiagarajan u32 status2; 103744d4025SVasanthakumar Thiagarajan u32 status3; 104744d4025SVasanthakumar Thiagarajan u32 status4; 105744d4025SVasanthakumar Thiagarajan u32 status5; 106744d4025SVasanthakumar Thiagarajan u32 status6; 107744d4025SVasanthakumar Thiagarajan u32 status7; 108744d4025SVasanthakumar Thiagarajan u32 status8; 109ada9f1caSFelix Fietkau } __packed __aligned(4); 110744d4025SVasanthakumar Thiagarajan 111ae3bb6d4SVasanthakumar Thiagarajan void ar9003_hw_attach_mac_ops(struct ath_hw *hw); 112ad7b8060SVasanthakumar Thiagarajan void ath9k_hw_set_rx_bufsize(struct ath_hw *ah, u16 buf_size); 113ad7b8060SVasanthakumar Thiagarajan void ath9k_hw_addrxbuf_edma(struct ath_hw *ah, u32 rxdp, 114ad7b8060SVasanthakumar Thiagarajan enum ath9k_rx_qtype qtype); 115ad7b8060SVasanthakumar Thiagarajan 116ad7b8060SVasanthakumar Thiagarajan int ath9k_hw_process_rxdesc_edma(struct ath_hw *ah, 117ad7b8060SVasanthakumar Thiagarajan struct ath_rx_status *rxs, 118ad7b8060SVasanthakumar Thiagarajan void *buf_addr); 119744d4025SVasanthakumar Thiagarajan void ath9k_hw_reset_txstatus_ring(struct ath_hw *ah); 120744d4025SVasanthakumar Thiagarajan void ath9k_hw_setup_statusring(struct ath_hw *ah, void *ts_start, 121744d4025SVasanthakumar Thiagarajan u32 ts_paddr_start, 122016c2177SRajkumar Manoharan u16 size); 123ceb26445SVasanthakumar Thiagarajan #endif 124