diff options
author | Ramon Fried <rfried@codeaurora.org> | 2018-03-11 08:01:18 -0400 |
---|---|---|
committer | Kalle Valo <kvalo@codeaurora.org> | 2018-03-26 11:26:31 -0400 |
commit | e5d04670904ffe21591573e1aa76a0158f939241 (patch) | |
tree | 98b174574f1dde227da97fa102a8a548dcfb0852 | |
parent | 6ced7958168fa77bdf9cca2ee8c7dcef5965a5cf (diff) |
wcn36xx: calculate DXE default channel values
DXE channel defaults used hardcoded magic values.
Added bit definitions of the control register and
calculate this values in compilation for clarity.
Signed-off-by: Ramon Fried <rfried@codeaurora.org>
Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
-rw-r--r-- | drivers/net/wireless/ath/wcn36xx/dxe.h | 104 |
1 files changed, 99 insertions, 5 deletions
diff --git a/drivers/net/wireless/ath/wcn36xx/dxe.h b/drivers/net/wireless/ath/wcn36xx/dxe.h index 73a14953920d..feb3cb7ee81f 100644 --- a/drivers/net/wireless/ath/wcn36xx/dxe.h +++ b/drivers/net/wireless/ath/wcn36xx/dxe.h | |||
@@ -140,12 +140,106 @@ H2H_TEST_RX_TX = DMA2 | |||
140 | #define WCN36XX_DXE_WQ_RX_L 0xB | 140 | #define WCN36XX_DXE_WQ_RX_L 0xB |
141 | #define WCN36XX_DXE_WQ_RX_H 0x4 | 141 | #define WCN36XX_DXE_WQ_RX_H 0x4 |
142 | 142 | ||
143 | /* TODO This must calculated properly but not hardcoded */ | 143 | /* Channel enable or restart */ |
144 | #define WCN36xx_DXE_CH_CTRL_EN BIT(0) | ||
145 | /* End of packet bit */ | ||
146 | #define WCN36xx_DXE_CH_CTRL_EOP BIT(3) | ||
147 | /* BD Handling bit */ | ||
148 | #define WCN36xx_DXE_CH_CTRL_BDH BIT(4) | ||
149 | /* Source is queue */ | ||
150 | #define WCN36xx_DXE_CH_CTRL_SIQ BIT(5) | ||
151 | /* Destination is queue */ | ||
152 | #define WCN36xx_DXE_CH_CTRL_DIQ BIT(6) | ||
153 | /* Pointer descriptor is queue */ | ||
154 | #define WCN36xx_DXE_CH_CTRL_PIQ BIT(7) | ||
155 | /* Relase PDU when done */ | ||
156 | #define WCN36xx_DXE_CH_CTRL_PDU_REL BIT(8) | ||
157 | /* Stop channel processing */ | ||
158 | #define WCN36xx_DXE_CH_CTRL_STOP BIT(16) | ||
159 | /* Enable external descriptor interrupt */ | ||
160 | #define WCN36xx_DXE_CH_CTRL_INE_ED BIT(17) | ||
161 | /* Enable channel interrupt on errors */ | ||
162 | #define WCN36xx_DXE_CH_CTRL_INE_ERR BIT(18) | ||
163 | /* Enable Channel interrupt when done */ | ||
164 | #define WCN36xx_DXE_CH_CTRL_INE_DONE BIT(19) | ||
165 | /* External descriptor enable */ | ||
166 | #define WCN36xx_DXE_CH_CTRL_EDEN BIT(20) | ||
167 | /* Wait for valid bit */ | ||
168 | #define WCN36xx_DXE_CH_CTRL_EDVEN BIT(21) | ||
169 | /* Endianness is little endian*/ | ||
170 | #define WCN36xx_DXE_CH_CTRL_ENDIANNESS BIT(26) | ||
171 | /* Abort transfer */ | ||
172 | #define WCN36xx_DXE_CH_CTRL_ABORT BIT(27) | ||
173 | /* Long descriptor format */ | ||
174 | #define WCN36xx_DXE_CH_CTRL_DFMT BIT(28) | ||
175 | /* Endian byte swap enable */ | ||
176 | #define WCN36xx_DXE_CH_CTRL_SWAP BIT(31) | ||
177 | |||
178 | /* Transfer type */ | ||
179 | #define WCN36xx_DXE_CH_CTRL_XTYPE_SHIFT 1 | ||
180 | #define WCN36xx_DXE_CH_CTRL_XTYPE_MASK GENMASK(2, WCN36xx_DXE_CH_CTRL_XTYPE_SHIFT) | ||
181 | #define WCN36xx_DXE_CH_CTRL_XTYPE_SET(x) ((x) << WCN36xx_DXE_CH_CTRL_XTYPE_SHIFT) | ||
182 | |||
183 | /* Channel BMU Threshold select */ | ||
184 | #define WCN36xx_DXE_CH_CTRL_BTHLD_SEL_SHIFT 9 | ||
185 | #define WCN36xx_DXE_CH_CTRL_BTHLD_SEL_MASK GENMASK(12, WCN36xx_DXE_CH_CTRL_BTHLD_SEL_SHIFT) | ||
186 | #define WCN36xx_DXE_CH_CTRL_BTHLD_SEL_SET(x) ((x) << WCN36xx_DXE_CH_CTRL_BTHLD_SEL_SHIFT) | ||
187 | |||
188 | /* Channel Priority */ | ||
189 | #define WCN36xx_DXE_CH_CTRL_PRIO_SHIFT 13 | ||
190 | #define WCN36xx_DXE_CH_CTRL_PRIO_MASK GENMASK(15, WCN36xx_DXE_CH_CTRL_PRIO_SHIFT) | ||
191 | #define WCN36xx_DXE_CH_CTRL_PRIO_SET(x) ((x) << WCN36xx_DXE_CH_CTRL_PRIO_SHIFT) | ||
192 | |||
193 | /* Counter select */ | ||
194 | #define WCN36xx_DXE_CH_CTRL_SEL_SHIFT 22 | ||
195 | #define WCN36xx_DXE_CH_CTRL_SEL_MASK GENMASK(25, WCN36xx_DXE_CH_CTRL_SEL_SHIFT) | ||
196 | #define WCN36xx_DXE_CH_CTRL_SEL_SET(x) ((x) << WCN36xx_DXE_CH_CTRL_SEL_SHIFT) | ||
197 | |||
198 | /* Channel BD template index */ | ||
199 | #define WCN36xx_DXE_CH_CTRL_BDT_IDX_SHIFT 29 | ||
200 | #define WCN36xx_DXE_CH_CTRL_BDT_IDX_MASK GENMASK(30, WCN36xx_DXE_CH_CTRL_BDT_IDX_SHIFT) | ||
201 | #define WCN36xx_DXE_CH_CTRL_BDT_IDX_SET(x) ((x) << WCN36xx_DXE_CH_CTRL_BDT_IDX_SHIFT) | ||
202 | |||
144 | /* DXE default control register values */ | 203 | /* DXE default control register values */ |
145 | #define WCN36XX_DXE_CH_DEFAULT_CTL_RX_L 0x847EAD2F | 204 | #define WCN36XX_DXE_CH_DEFAULT_CTL_RX_L (WCN36xx_DXE_CH_CTRL_EN | \ |
146 | #define WCN36XX_DXE_CH_DEFAULT_CTL_RX_H 0x84FED12F | 205 | WCN36xx_DXE_CH_CTRL_XTYPE_SET(WCN36xx_DXE_XTYPE_B2H) | \ |
147 | #define WCN36XX_DXE_CH_DEFAULT_CTL_TX_H 0x853ECF4D | 206 | WCN36xx_DXE_CH_CTRL_EOP | WCN36xx_DXE_CH_CTRL_SIQ | \ |
148 | #define WCN36XX_DXE_CH_DEFAULT_CTL_TX_L 0x843e8b4d | 207 | WCN36xx_DXE_CH_CTRL_PDU_REL | WCN36xx_DXE_CH_CTRL_BTHLD_SEL_SET(6) | \ |
208 | WCN36xx_DXE_CH_CTRL_PRIO_SET(5) | WCN36xx_DXE_CH_CTRL_INE_ED | \ | ||
209 | WCN36xx_DXE_CH_CTRL_INE_ERR | WCN36xx_DXE_CH_CTRL_INE_DONE | \ | ||
210 | WCN36xx_DXE_CH_CTRL_EDEN | WCN36xx_DXE_CH_CTRL_EDVEN | \ | ||
211 | WCN36xx_DXE_CH_CTRL_SEL_SET(1) | WCN36xx_DXE_CH_CTRL_ENDIANNESS | \ | ||
212 | WCN36xx_DXE_CH_CTRL_SWAP) | ||
213 | |||
214 | #define WCN36XX_DXE_CH_DEFAULT_CTL_RX_H (WCN36xx_DXE_CH_CTRL_EN | \ | ||
215 | WCN36xx_DXE_CH_CTRL_XTYPE_SET(WCN36xx_DXE_XTYPE_B2H) | \ | ||
216 | WCN36xx_DXE_CH_CTRL_EOP | WCN36xx_DXE_CH_CTRL_SIQ | \ | ||
217 | WCN36xx_DXE_CH_CTRL_PDU_REL | WCN36xx_DXE_CH_CTRL_BTHLD_SEL_SET(8) | \ | ||
218 | WCN36xx_DXE_CH_CTRL_PRIO_SET(6) | WCN36xx_DXE_CH_CTRL_INE_ED | \ | ||
219 | WCN36xx_DXE_CH_CTRL_INE_ERR | WCN36xx_DXE_CH_CTRL_INE_DONE | \ | ||
220 | WCN36xx_DXE_CH_CTRL_EDEN | WCN36xx_DXE_CH_CTRL_EDVEN | \ | ||
221 | WCN36xx_DXE_CH_CTRL_SEL_SET(3) | WCN36xx_DXE_CH_CTRL_ENDIANNESS | \ | ||
222 | WCN36xx_DXE_CH_CTRL_SWAP) | ||
223 | |||
224 | #define WCN36XX_DXE_CH_DEFAULT_CTL_TX_H (WCN36xx_DXE_CH_CTRL_EN | \ | ||
225 | WCN36xx_DXE_CH_CTRL_XTYPE_SET(WCN36xx_DXE_XTYPE_H2B) | \ | ||
226 | WCN36xx_DXE_CH_CTRL_EOP | WCN36xx_DXE_CH_CTRL_DIQ | \ | ||
227 | WCN36xx_DXE_CH_CTRL_PDU_REL | WCN36xx_DXE_CH_CTRL_BTHLD_SEL_SET(7) | \ | ||
228 | WCN36xx_DXE_CH_CTRL_PRIO_SET(6) | WCN36xx_DXE_CH_CTRL_INE_ED | \ | ||
229 | WCN36xx_DXE_CH_CTRL_INE_ERR | WCN36xx_DXE_CH_CTRL_INE_DONE | \ | ||
230 | WCN36xx_DXE_CH_CTRL_EDEN | WCN36xx_DXE_CH_CTRL_EDVEN | \ | ||
231 | WCN36xx_DXE_CH_CTRL_SEL_SET(4) | WCN36xx_DXE_CH_CTRL_ENDIANNESS | \ | ||
232 | WCN36xx_DXE_CH_CTRL_SWAP) | ||
233 | |||
234 | #define WCN36XX_DXE_CH_DEFAULT_CTL_TX_L (WCN36xx_DXE_CH_CTRL_EN | \ | ||
235 | WCN36xx_DXE_CH_CTRL_XTYPE_SET(WCN36xx_DXE_XTYPE_H2B) | \ | ||
236 | WCN36xx_DXE_CH_CTRL_EOP | WCN36xx_DXE_CH_CTRL_DIQ | \ | ||
237 | WCN36xx_DXE_CH_CTRL_PDU_REL | WCN36xx_DXE_CH_CTRL_BTHLD_SEL_SET(5) | \ | ||
238 | WCN36xx_DXE_CH_CTRL_PRIO_SET(4) | WCN36xx_DXE_CH_CTRL_INE_ED | \ | ||
239 | WCN36xx_DXE_CH_CTRL_INE_ERR | WCN36xx_DXE_CH_CTRL_INE_DONE | \ | ||
240 | WCN36xx_DXE_CH_CTRL_EDEN | WCN36xx_DXE_CH_CTRL_EDVEN | \ | ||
241 | WCN36xx_DXE_CH_CTRL_SEL_SET(0) | WCN36xx_DXE_CH_CTRL_ENDIANNESS | \ | ||
242 | WCN36xx_DXE_CH_CTRL_SWAP) | ||
149 | 243 | ||
150 | /* Common DXE registers */ | 244 | /* Common DXE registers */ |
151 | #define WCN36XX_DXE_MEM_CSR (WCN36XX_DXE_MEM_REG + 0x00) | 245 | #define WCN36XX_DXE_MEM_CSR (WCN36XX_DXE_MEM_REG + 0x00) |