xref: /linux/drivers/net/wireless/ath/ath9k/ar9003_mac.h (revision e5451c8f8330e03ad3cfa16048b4daf961af434f)
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