ce_assignment.h 51 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365
  1. /*
  2. * Copyright (c) 2014-2020 The Linux Foundation. All rights reserved.
  3. *
  4. * Permission to use, copy, modify, and/or distribute this software for
  5. * any purpose with or without fee is hereby granted, provided that the
  6. * above copyright notice and this permission notice appear in all
  7. * copies.
  8. *
  9. * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL
  10. * WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED
  11. * WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE
  12. * AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL
  13. * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR
  14. * PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
  15. * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
  16. * PERFORMANCE OF THIS SOFTWARE.
  17. */
  18. /*
  19. * Implementation of the Host-side Host InterFace (HIF) API
  20. * for a Host/Target interconnect using Copy Engines over PCIe.
  21. */
  22. #ifndef __HIF_PCI_INTERNAL_H__
  23. #define __HIF_PCI_INTERNAL_H__
  24. #ifndef PEER_CACHEING_HOST_ENABLE
  25. #define PEER_CACHEING_HOST_ENABLE 0
  26. #endif
  27. #define HIF_PCI_DEBUG ATH_DEBUG_MAKE_MODULE_MASK(0)
  28. #define HIF_PCI_IPA_UC_ASSIGNED_CE 5
  29. #if defined(WLAN_DEBUG) || defined(DEBUG)
  30. static ATH_DEBUG_MASK_DESCRIPTION g_hif_debug_description[] = {
  31. {HIF_PCI_DEBUG, "hif_pci"},
  32. };
  33. ATH_DEBUG_INSTANTIATE_MODULE_VAR(hif, "hif", "PCIe Host Interface",
  34. ATH_DEBUG_MASK_DEFAULTS | ATH_DEBUG_INFO,
  35. ATH_DEBUG_DESCRIPTION_COUNT
  36. (g_hif_debug_description),
  37. g_hif_debug_description);
  38. #endif
  39. #ifdef CONFIG_ATH_PCIE_ACCESS_DEBUG
  40. /* globals are initialized to 0 by the compiler */;
  41. spinlock_t pcie_access_log_lock;
  42. unsigned int pcie_access_log_seqnum;
  43. struct HIF_ACCESS_LOG pcie_access_log[PCIE_ACCESS_LOG_NUM];
  44. static void hif_target_dump_access_log(void);
  45. #endif
  46. /*
  47. * Host software's Copy Engine configuration.
  48. * This table is derived from the CE_PCI TABLE, above.
  49. */
  50. #ifdef BIG_ENDIAN_HOST
  51. #define CE_ATTR_FLAGS CE_ATTR_BYTE_SWAP_DATA
  52. #else
  53. #define CE_ATTR_FLAGS 0
  54. #endif
  55. /* Maximum number of Copy Engine's supported */
  56. #define CE_HTT_H2T_MSG_SRC_NENTRIES 2048
  57. #define CE_HTT_H2T_MSG_SRC_NENTRIES_QCA6390 256
  58. #define CE_HTT_H2T_MSG_SRC_NENTRIES_QCA6490 256
  59. #define CE_HTT_H2T_MSG_SRC_NENTRIES_AR900B 4096
  60. #define CE_HTT_H2T_MSG_SRC_NENTRIES_QCN7605 4096
  61. #define EPPING_CE_FLAGS_POLL \
  62. (CE_ATTR_DISABLE_INTR|CE_ATTR_ENABLE_POLL|CE_ATTR_FLAGS)
  63. #define CE_ATTR_DIAG_FLAGS \
  64. (CE_ATTR_FLAGS | CE_ATTR_DIAG)
  65. #ifdef QCN7605_SUPPORT
  66. #define QCN7605_CE_COUNT 9
  67. static struct CE_attr host_ce_config_wlan_qcn7605[] = {
  68. /* host->target HTC control and raw streams & WMI Control*/
  69. { /* CE0 */ CE_ATTR_FLAGS, 0, 16, 2048, 0, NULL,},
  70. /* target->host HTT + HTC control */
  71. { /* CE1 */ CE_ATTR_FLAGS, 0, 0, 2048, 512, NULL,},
  72. /* target->host WMI */
  73. { /* CE2 */ CE_ATTR_FLAGS, 0, 0, 2048, 512, NULL,},
  74. /* target->host HTT */
  75. { /* CE3 */ CE_ATTR_FLAGS, 0, 0, 2048, 512, NULL,},
  76. /* host->target HTT */
  77. { /* CE4 */ (CE_ATTR_FLAGS | CE_ATTR_DISABLE_INTR), 0,
  78. CE_HTT_H2T_MSG_SRC_NENTRIES_QCN7605, 256, 0, NULL,},
  79. #ifdef IPA_OFFLOAD
  80. /* ipa_uc->target HTC control */
  81. { /* CE5 */ (CE_ATTR_FLAGS | CE_ATTR_DISABLE_INTR), 0,
  82. CE_HTT_H2T_MSG_SRC_NENTRIES, 512, 0, NULL,},
  83. #else
  84. /* unused */
  85. { /* CE5 */ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL,},
  86. #endif
  87. /* Target autonomous HIF_memcpy */
  88. { /* CE6 */ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL,},
  89. #ifdef REMOVE_PKT_LOG
  90. /* unused */
  91. { /* CE7 */ 0, 0, 0, 0, 0, NULL,},
  92. #else
  93. /* target->host PKTLOG */
  94. { /* CE7 */ CE_ATTR_FLAGS, 0, 0, 2048, 512, NULL,},
  95. #endif
  96. #ifdef IPA_OFFLOAD
  97. /* Target to uMC */
  98. { /* CE8 */ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL,},
  99. #else
  100. /* target->host HTT*/
  101. { /* CE8 */ CE_ATTR_FLAGS, 0, 0, 2048, 512, NULL,},
  102. #endif
  103. /* CE 9, 10, 11 belong to CoreBsp & MHI driver */
  104. };
  105. static struct CE_pipe_config target_ce_config_wlan_qcn7605[] = {
  106. /* host->target HTC control and raw streams */
  107. { /* CE0 */ 0, PIPEDIR_OUT, 4, 2048, CE_ATTR_FLAGS, 0,},
  108. /* target->host HTT */
  109. { /* CE1 */ 1, PIPEDIR_IN, 32, 2048, CE_ATTR_FLAGS, 0,},
  110. /* target->host WMI + HTC control */
  111. { /* CE2 */ 2, PIPEDIR_IN, 32, 2048, CE_ATTR_FLAGS, 0,},
  112. /* target->host HTT */
  113. { /* CE3 */ 3, PIPEDIR_IN, 32, 2048, CE_ATTR_FLAGS, 0,},
  114. /* host->target HTT */
  115. { /* CE4 */ 4, PIPEDIR_OUT, 128, 256,
  116. (CE_ATTR_FLAGS | CE_ATTR_DISABLE_INTR), 0,},
  117. /* NB: 50% of src nentries, since tx has 2 frags */
  118. #ifdef IPA_OFFLOAD
  119. /* ipa_uc->target */
  120. { /* CE5 */ 5, PIPEDIR_OUT, 128, 256,
  121. (CE_ATTR_FLAGS | CE_ATTR_DISABLE_INTR), 0,},
  122. #else
  123. /* unused */
  124. { /* CE5 */ 5, PIPEDIR_INOUT_H2H, 0, 0, 0, 0,},
  125. #endif
  126. /* Reserved for target autonomous HIF_memcpy */
  127. { /* CE6 */ 6, PIPEDIR_INOUT, 32, 16384, CE_ATTR_FLAGS, 0,},
  128. #ifdef REMOVE_PKT_LOG
  129. /* unused */
  130. { /* CE7 */ 7, PIPEDIR_IN, 2, 2048, CE_ATTR_FLAGS, 0,},
  131. #else
  132. /* Target -> host PKTLOG */
  133. { /* CE7 */ 7, PIPEDIR_IN, 32, 2048, CE_ATTR_FLAGS, 0,},
  134. #endif
  135. #ifdef IPA_OFFLOAD
  136. /* CE8 used only by IPA */
  137. { /* CE8 */ 8, PIPEDIR_IN, 128, 4096, CE_ATTR_FLAGS, 0,},
  138. #else
  139. /* target->host HTT*/
  140. { /* CE8 */ 8, PIPEDIR_IN, 32, 2048, CE_ATTR_FLAGS, 0,},
  141. #endif
  142. /* CE 9, 10, 11 belong to CoreBsp & MHI driver */
  143. };
  144. #endif
  145. #ifdef QCA_WIFI_3_0
  146. static struct CE_attr host_ce_config_wlan[] = {
  147. /* host->target HTC control and raw streams */
  148. { /* CE0 */ CE_ATTR_FLAGS, 0, 16, 2048, 0, NULL,},
  149. /* target->host HTT + HTC control */
  150. { /* CE1 */ CE_ATTR_FLAGS, 0, 0, 2048, 512, NULL,},
  151. /* target->host WMI */
  152. { /* CE2 */ CE_ATTR_FLAGS, 0, 0, 2048, 128, NULL,},
  153. /* host->target WMI */
  154. { /* CE3 */ CE_ATTR_FLAGS, 0, 32, 2048, 0, NULL,},
  155. /* host->target HTT */
  156. { /* CE4 */ (CE_ATTR_FLAGS | CE_ATTR_DISABLE_INTR), 0,
  157. CE_HTT_H2T_MSG_SRC_NENTRIES, 256, 0, NULL,},
  158. /* ipa_uc->target HTC control */
  159. { /* CE5 */ (CE_ATTR_FLAGS | CE_ATTR_DISABLE_INTR), 0,
  160. CE_HTT_H2T_MSG_SRC_NENTRIES, 512, 0, NULL,},
  161. /* Target autonomous HIF_memcpy */
  162. { /* CE6 */ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL,},
  163. /* ce_diag, the Diagnostic Window */
  164. { /* CE7 */ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL,},
  165. /* Target to uMC */
  166. { /* CE8 */ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL,},
  167. /* target->host HTT */
  168. { /* CE9 */ CE_ATTR_FLAGS, 0, 0, 2048, 512, NULL,},
  169. /* target->host HTT */
  170. { /* CE10 */ CE_ATTR_FLAGS, 0, 0, 2048, 512, NULL,},
  171. /* target -> host PKTLOG */
  172. { /* CE11 */ CE_ATTR_FLAGS, 0, 0, 2048, 512, NULL,},
  173. };
  174. static struct CE_pipe_config target_ce_config_wlan[] = {
  175. /* host->target HTC control and raw streams */
  176. { /* CE0 */ 0, PIPEDIR_OUT, 32, 2048, CE_ATTR_FLAGS, 0,},
  177. /* target->host HTT */
  178. { /* CE1 */ 1, PIPEDIR_IN, 32, 2048, CE_ATTR_FLAGS, 0,},
  179. /* target->host WMI + HTC control */
  180. { /* CE2 */ 2, PIPEDIR_IN, 64, 2048, CE_ATTR_FLAGS, 0,},
  181. /* host->target WMI */
  182. { /* CE3 */ 3, PIPEDIR_OUT, 32, 2048, CE_ATTR_FLAGS, 0,},
  183. /* host->target HTT */
  184. { /* CE4 */ 4, PIPEDIR_OUT, 256, 256,
  185. (CE_ATTR_FLAGS | CE_ATTR_DISABLE_INTR), 0,},
  186. /* NB: 50% of src nentries, since tx has 2 frags */
  187. /* ipa_uc->target */
  188. { /* CE5 */ 5, PIPEDIR_OUT, 1024, 64,
  189. (CE_ATTR_FLAGS | CE_ATTR_DISABLE_INTR), 0,},
  190. /* Reserved for target autonomous HIF_memcpy */
  191. { /* CE6 */ 6, PIPEDIR_INOUT, 32, 16384, CE_ATTR_FLAGS, 0,},
  192. /* CE7 used only by Host */
  193. { /* CE7 */ 7, PIPEDIR_INOUT_H2H, 0, 0,
  194. (CE_ATTR_FLAGS | CE_ATTR_DISABLE_INTR), 0,},
  195. /* CE8 used only by IPA */
  196. { /* CE8 */ 8, PIPEDIR_IN, 32, 2048, CE_ATTR_FLAGS, 0,},
  197. /* CE9 target->host HTT */
  198. { /* CE9 */ 9, PIPEDIR_IN, 32, 2048, CE_ATTR_FLAGS, 0,},
  199. /* CE10 target->host HTT */
  200. { /* CE10 */ 10, PIPEDIR_IN, 32, 2048, CE_ATTR_FLAGS, 0,},
  201. /* Target -> host PKTLOG */
  202. { /* CE11 */ 11, PIPEDIR_IN, 32, 2048, CE_ATTR_FLAGS, 0,},
  203. };
  204. #ifdef WLAN_FEATURE_EPPING
  205. static struct CE_attr host_ce_config_wlan_epping_poll[] = {
  206. /* host->target HTC control and raw streams */
  207. { /* CE0 */ CE_ATTR_FLAGS, 0, 16, 2048, 0, NULL,},
  208. /* target->host EP-ping */
  209. { /* CE1 */ EPPING_CE_FLAGS_POLL, 0, 0, 2048, 128, NULL,},
  210. /* target->host EP-ping */
  211. { /* CE2 */ EPPING_CE_FLAGS_POLL, 0, 0, 2048, 128, NULL,},
  212. /* host->target EP-ping */
  213. { /* CE3 */ CE_ATTR_FLAGS, 0, 128, 2048, 0, NULL,},
  214. /* host->target EP-ping */
  215. { /* CE4 */ CE_ATTR_FLAGS, 0, 128, 2048, 0, NULL,},
  216. /* EP-ping heartbeat */
  217. { /* CE5 */ CE_ATTR_FLAGS, 0, 0, 2048, 128, NULL,},
  218. /* unused */
  219. { /* CE6 */ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL,},
  220. /* ce_diag, the Diagnostic Window */
  221. { /* CE7 */ CE_ATTR_DIAG_FLAGS, 0, 2, DIAG_TRANSFER_LIMIT, 2, NULL,},
  222. };
  223. #ifdef QCN7605_SUPPORT
  224. static struct CE_attr host_ce_config_wlan_epping_irq[] = {
  225. /* host->target HTC control and raw streams */
  226. { /* CE0 */ CE_ATTR_FLAGS, 0, 16, 2048, 0, NULL,},
  227. /* target->host EP-ping */
  228. { /* CE1 */ CE_ATTR_FLAGS, 0, 0, 2048, 32, NULL,},
  229. /* target->host EP-ping */
  230. { /* CE2 */ CE_ATTR_FLAGS, 0, 0, 2048, 32, NULL,},
  231. /* host->target EP-ping */
  232. { /* CE3 */ CE_ATTR_FLAGS, 0, 32, 2048, 0, NULL,},
  233. /* host->target EP-ping */
  234. { /* CE4 */ CE_ATTR_FLAGS, 0, 32, 2048, 0, NULL,},
  235. /* EP-ping heartbeat */
  236. { /* CE5 */ CE_ATTR_FLAGS, 0, 0, 2048, 16, NULL,},
  237. /* unused */
  238. { /* CE6 */ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL,},
  239. /* ce_diag, the Diagnostic Window */
  240. { /* CE7 */ CE_ATTR_DIAG_FLAGS, 0, 2, DIAG_TRANSFER_LIMIT, 2, NULL,},
  241. };
  242. /*
  243. * EP-ping firmware's CE configuration
  244. */
  245. static struct CE_pipe_config target_ce_config_wlan_epping[] = {
  246. /* host->target HTC control and raw streams */
  247. { /* CE0 */ 0, PIPEDIR_OUT, 16, 2048, CE_ATTR_FLAGS, 0,},
  248. /* target->host EP-ping */
  249. { /* CE1 */ 1, PIPEDIR_IN, 32, 2048, CE_ATTR_FLAGS, 0,},
  250. /* target->host EP-ping */
  251. { /* CE2 */ 2, PIPEDIR_IN, 32, 2048, CE_ATTR_FLAGS, 0,},
  252. /* host->target EP-ping */
  253. { /* CE3 */ 3, PIPEDIR_OUT, 32, 2048, CE_ATTR_FLAGS, 0,},
  254. /* host->target EP-ping */
  255. { /* CE4 */ 4, PIPEDIR_OUT, 32, 2048, CE_ATTR_FLAGS, 0,},
  256. /* EP-ping heartbeat */
  257. { /* CE5 */ 5, PIPEDIR_IN, 16, 2048, CE_ATTR_FLAGS, 0,},
  258. /* unused */
  259. { /* CE6 */ 6, PIPEDIR_INOUT, 0, 0, CE_ATTR_FLAGS, 0,},
  260. /* CE7 used only by Host */
  261. { /* CE7 */ 7, PIPEDIR_INOUT_H2H, 0, 0, 0, 0,},
  262. /* CE8 used only by IPA */
  263. { /* CE8 */ 8, PIPEDIR_IN, 4, 2048, CE_ATTR_FLAGS, 0,}
  264. };
  265. #else
  266. static struct CE_attr host_ce_config_wlan_epping_irq[] = {
  267. /* host->target HTC control and raw streams */
  268. { /* CE0 */ CE_ATTR_FLAGS, 0, 16, 2048, 0, NULL,},
  269. /* target->host EP-ping */
  270. { /* CE1 */ CE_ATTR_FLAGS, 0, 0, 2048, 128, NULL,},
  271. /* target->host EP-ping */
  272. { /* CE2 */ CE_ATTR_FLAGS, 0, 0, 2048, 128, NULL,},
  273. /* host->target EP-ping */
  274. { /* CE3 */ CE_ATTR_FLAGS, 0, 128, 2048, 0, NULL,},
  275. /* host->target EP-ping */
  276. { /* CE4 */ CE_ATTR_FLAGS, 0, 128, 2048, 0, NULL,},
  277. /* EP-ping heartbeat */
  278. { /* CE5 */ CE_ATTR_FLAGS, 0, 0, 2048, 128, NULL,},
  279. /* unused */
  280. { /* CE6 */ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL,},
  281. /* ce_diag, the Diagnostic Window */
  282. { /* CE7 */ CE_ATTR_DIAG_FLAGS, 0, 2, DIAG_TRANSFER_LIMIT, 2, NULL,},
  283. };
  284. /*
  285. * EP-ping firmware's CE configuration
  286. */
  287. static struct CE_pipe_config target_ce_config_wlan_epping[] = {
  288. /* host->target HTC control and raw streams */
  289. { /* CE0 */ 0, PIPEDIR_OUT, 16, 2048, CE_ATTR_FLAGS, 0,},
  290. /* target->host EP-ping */
  291. { /* CE1 */ 1, PIPEDIR_IN, 128, 2048, CE_ATTR_FLAGS, 0,},
  292. /* target->host EP-ping */
  293. { /* CE2 */ 2, PIPEDIR_IN, 128, 2048, CE_ATTR_FLAGS, 0,},
  294. /* host->target EP-ping */
  295. { /* CE3 */ 3, PIPEDIR_OUT, 128, 2048, CE_ATTR_FLAGS, 0,},
  296. /* host->target EP-ping */
  297. { /* CE4 */ 4, PIPEDIR_OUT, 128, 2048, CE_ATTR_FLAGS, 0,},
  298. /* EP-ping heartbeat */
  299. { /* CE5 */ 5, PIPEDIR_IN, 128, 2048, CE_ATTR_FLAGS, 0,},
  300. /* unused */
  301. { /* CE6 */ 6, PIPEDIR_INOUT, 0, 0, CE_ATTR_FLAGS, 0,},
  302. /* CE7 used only by Host */
  303. { /* CE7 */ 7, PIPEDIR_INOUT_H2H, 0, 0, 0, 0,},
  304. /* CE8 used only by IPA */
  305. { /* CE8 */ 8, PIPEDIR_IN, 32, 2048, CE_ATTR_FLAGS, 0,}
  306. };
  307. #endif
  308. #endif
  309. #else
  310. static struct CE_attr host_ce_config_wlan[] = {
  311. /* host->target HTC control and raw streams */
  312. { /* CE0 */ CE_ATTR_FLAGS, 0, 16, 256, 0, NULL,},
  313. /* target->host HTT + HTC control */
  314. { /* CE1 */ CE_ATTR_FLAGS, 0, 0, 2048, 512, NULL,},
  315. /* target->host WMI */
  316. { /* CE2 */ CE_ATTR_FLAGS, 0, 0, 2048, 32, NULL,},
  317. /* host->target WMI */
  318. { /* CE3 */ CE_ATTR_FLAGS, 0, 32, 2048, 0, NULL,},
  319. /* host->target HTT */
  320. { /* CE4 */ CE_ATTR_FLAGS | CE_ATTR_DISABLE_INTR, 0,
  321. CE_HTT_H2T_MSG_SRC_NENTRIES, 256, 0, NULL,},
  322. /* ipa_uc->target HTC control */
  323. { /* CE5 */ CE_ATTR_FLAGS | CE_ATTR_DISABLE_INTR, 0,
  324. 1024, 512, 0, NULL,},
  325. /* Target autonomous HIF_memcpy */
  326. { /* CE6 */ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL,},
  327. /* ce_diag, the Diagnostic Window */
  328. { /* CE7 */ (CE_ATTR_DIAG_FLAGS | CE_ATTR_DISABLE_INTR),
  329. 0, 2, DIAG_TRANSFER_LIMIT, 2, NULL,},
  330. };
  331. static struct CE_pipe_config target_ce_config_wlan[] = {
  332. /* host->target HTC control and raw streams */
  333. { /* CE0 */ 0, PIPEDIR_OUT, 32, 256, CE_ATTR_FLAGS, 0,},
  334. /* target->host HTT + HTC control */
  335. { /* CE1 */ 1, PIPEDIR_IN, 32, 2048, CE_ATTR_FLAGS, 0,},
  336. /* target->host WMI */
  337. { /* CE2 */ 2, PIPEDIR_IN, 32, 2048, CE_ATTR_FLAGS, 0,},
  338. /* host->target WMI */
  339. { /* CE3 */ 3, PIPEDIR_OUT, 32, 2048, CE_ATTR_FLAGS, 0,},
  340. /* host->target HTT */
  341. { /* CE4 */ 4, PIPEDIR_OUT, 256, 256, CE_ATTR_FLAGS, 0,},
  342. /* NB: 50% of src nentries, since tx has 2 frags */
  343. /* ipa_uc->target HTC control */
  344. { /* CE5 */ 5, PIPEDIR_OUT, 1024, 64, CE_ATTR_FLAGS, 0,},
  345. /* Reserved for target autonomous HIF_memcpy */
  346. { /* CE6 */ 6, PIPEDIR_INOUT, 32, 4096, CE_ATTR_FLAGS, 0,},
  347. /* CE7 used only by Host */
  348. { /* CE7 */ 7, PIPEDIR_INOUT_H2H, 0, 0, 0, 0,},
  349. /* CE8 used only by IPA */
  350. { /* CE8 */ 8, PIPEDIR_IN, 32, 2048, CE_ATTR_FLAGS, 0,}
  351. };
  352. #ifdef WLAN_FEATURE_EPPING
  353. static struct CE_attr host_ce_config_wlan_epping_poll[] = {
  354. /* host->target HTC control and raw streams */
  355. { /* CE0 */ CE_ATTR_FLAGS, 0, 16, 256, 0, NULL,},
  356. /* target->host EP-ping */
  357. { /* CE1 */ EPPING_CE_FLAGS_POLL, 0, 0, 2048, 128, NULL,},
  358. /* target->host EP-ping */
  359. { /* CE2 */ EPPING_CE_FLAGS_POLL, 0, 0, 2048, 128, NULL,},
  360. /* host->target EP-ping */
  361. { /* CE3 */ CE_ATTR_FLAGS, 0, 128, 2048, 0, NULL,},
  362. /* host->target EP-ping */
  363. { /* CE4 */ CE_ATTR_FLAGS, 0, 128, 2048, 0, NULL,},
  364. /* EP-ping heartbeat */
  365. { /* CE5 */ CE_ATTR_FLAGS, 0, 0, 2048, 128, NULL,},
  366. /* unused */
  367. { /* CE6 */ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL,},
  368. /* ce_diag, the Diagnostic Window */
  369. { /* CE7 */ CE_ATTR_DIAG_FLAGS, 0, 2, DIAG_TRANSFER_LIMIT, 2, NULL,},
  370. { /* CE8 */ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL,},
  371. /* The following CEs are not being used yet */
  372. { /* CE9 */ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL,},
  373. { /* CE10 */ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL,},
  374. { /* CE11 */ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL,},
  375. };
  376. static struct CE_attr host_ce_config_wlan_epping_irq[] = {
  377. /* host->target HTC control and raw streams */
  378. { /* CE0 */ CE_ATTR_FLAGS, 0, 16, 256, 0, NULL,},
  379. /* target->host EP-ping */
  380. { /* CE1 */ CE_ATTR_FLAGS, 0, 0, 2048, 128, NULL,},
  381. /* target->host EP-ping */
  382. { /* CE2 */ CE_ATTR_FLAGS, 0, 0, 2048, 128, NULL,},
  383. /* host->target EP-ping */
  384. { /* CE3 */ CE_ATTR_FLAGS, 0, 128, 2048, 0, NULL,},
  385. /* host->target EP-ping */
  386. { /* CE4 */ CE_ATTR_FLAGS, 0, 128, 2048, 0, NULL,},
  387. /* EP-ping heartbeat */
  388. { /* CE5 */ CE_ATTR_FLAGS, 0, 0, 2048, 128, NULL,},
  389. /* unused */
  390. { /* CE6 */ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL,},
  391. /* ce_diag, the Diagnostic Window */
  392. { /* CE7 */ CE_ATTR_DIAG_FLAGS, 0, 2, DIAG_TRANSFER_LIMIT, 2, NULL,},
  393. { /* CE8 */ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL,},
  394. /* The following CEs are not being used yet */
  395. { /* CE9 */ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL,},
  396. { /* CE10 */ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL,},
  397. { /* CE11 */ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL,},
  398. };
  399. /*
  400. * EP-ping firmware's CE configuration
  401. */
  402. static struct CE_pipe_config target_ce_config_wlan_epping[] = {
  403. /* host->target HTC control and raw streams */
  404. { /* CE0 */ 0, PIPEDIR_OUT, 16, 256, CE_ATTR_FLAGS, 0,},
  405. /* target->host EP-ping */
  406. { /* CE1 */ 1, PIPEDIR_IN, 128, 2048, CE_ATTR_FLAGS, 0,},
  407. /* target->host EP-ping */
  408. { /* CE2 */ 2, PIPEDIR_IN, 128, 2048, CE_ATTR_FLAGS, 0,},
  409. /* host->target EP-ping */
  410. { /* CE3 */ 3, PIPEDIR_OUT, 128, 2048, CE_ATTR_FLAGS, 0,},
  411. /* host->target EP-ping */
  412. { /* CE4 */ 4, PIPEDIR_OUT, 128, 2048, CE_ATTR_FLAGS, 0,},
  413. /* EP-ping heartbeat */
  414. { /* CE5 */ 5, PIPEDIR_IN, 128, 2048, CE_ATTR_FLAGS, 0,},
  415. /* unused */
  416. { /* CE6 */ 6, PIPEDIR_INOUT, 0, 0, CE_ATTR_FLAGS, 0,},
  417. /* CE7 used only by Host */
  418. { /* CE7 */ 7, PIPEDIR_INOUT_H2H, 0, 0, 0, 0,},
  419. /* CE8 used only by IPA */
  420. { /* CE8 */ 8, PIPEDIR_IN, 32, 2048, CE_ATTR_FLAGS, 0,},
  421. { /* CE9 */ 9, PIPEDIR_IN, 0, 0, CE_ATTR_FLAGS, 0,},
  422. { /* CE10 */ 10, PIPEDIR_IN, 0, 0, CE_ATTR_FLAGS, 0,},
  423. { /* CE11 */ 11, PIPEDIR_IN, 0, 0, CE_ATTR_FLAGS, 0,},
  424. };
  425. #endif
  426. #endif
  427. static struct CE_attr host_ce_config_wlan_ar9888[] = {
  428. /* host->target HTC control and raw streams */
  429. { /* CE0 */ CE_ATTR_FLAGS, 0, 16, 256, 0, NULL, },
  430. /* target->host BMI + HTC control */
  431. /* could be moved to share CE3 */
  432. { /* CE1 */ CE_ATTR_FLAGS, 0, 0, 512, 512, NULL, },
  433. /* target->host WMI */
  434. { /* CE2 */ CE_ATTR_FLAGS, 0, 0, 2048, 128, NULL, },
  435. /* host->target WMI */
  436. { /* CE3 */ CE_ATTR_FLAGS, 0, 32, 2048, 0, NULL, },
  437. /* host->target HTT */
  438. { /* CE4 */ CE_ATTR_FLAGS | CE_ATTR_DISABLE_INTR, 0,
  439. CE_HTT_H2T_MSG_SRC_NENTRIES_AR900B, 256, 0, NULL, },
  440. #ifdef WLAN_FEATURE_FASTPATH
  441. /* target->host HTT messages */
  442. { /* CE5 */ CE_ATTR_FLAGS, 0, 0, 512, 512, NULL, },
  443. #else /* WLAN_FEATURE_FASTPATH */
  444. /* unused */
  445. { /* CE5 */ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL, },
  446. #endif /* WLAN_FEATURE_FASTPATH */
  447. /* Target autonomous HIF_memcpy */
  448. { /* CE6 */ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL, },
  449. /* ce_diag, the Diagnostic Window */
  450. { /* CE7 */ CE_ATTR_DIAG_FLAGS, 0, 2, DIAG_TRANSFER_LIMIT, 2, NULL, },
  451. /* Target autonomous HIF_memcpy */
  452. { /* CE8 */ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL, },
  453. };
  454. static struct CE_attr host_ce_config_wlan_ar900b[] = {
  455. /* host->target HTC control and raw streams */
  456. { /* CE0 */ CE_ATTR_FLAGS, 0, 16, 256, 0, NULL, },
  457. /* target->host BMI + HTC control */
  458. /* could be moved to share CE3 */
  459. { /* CE1 */ CE_ATTR_FLAGS, 0, 0, 512, 512, NULL, },
  460. /* target->host WMI */
  461. { /* CE2 */ CE_ATTR_FLAGS, 0, 0, 2048, 128, NULL, },
  462. /* host->target WMI */
  463. { /* CE3 */ CE_ATTR_FLAGS, 0, 32, 2048, 0, NULL, },
  464. /* host->target HTT */
  465. { /* CE4 */ CE_ATTR_FLAGS | CE_ATTR_DISABLE_INTR, 0,
  466. CE_HTT_H2T_MSG_SRC_NENTRIES_AR900B, 256, 0, NULL, },
  467. #ifdef WLAN_FEATURE_FASTPATH
  468. /* target->host HTT messages */
  469. { /* CE5 */ CE_ATTR_FLAGS, 0, 0, 512, 512, NULL, },
  470. #else /* WLAN_FEATURE_FASTPATH */
  471. /* unused */
  472. { /* CE5 */ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL, },
  473. #endif /* WLAN_FEATURE_FASTPATH */
  474. /* Target autonomous HIF_memcpy */
  475. { /* CE6 */ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL, },
  476. /* ce_diag, the Diagnostic Window */
  477. { /* CE7 */ CE_ATTR_DIAG_FLAGS, 0, 2, DIAG_TRANSFER_LIMIT, 2, NULL, },
  478. /* target->host pktlog */
  479. { /* CE8 */ CE_ATTR_FLAGS, 0, 0, 2048, 128, NULL, },
  480. /* Target autonomous HIF_memcpy */
  481. { /* CE9 */ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL, },
  482. /* Target autonomous HIF_memcpy */
  483. { /* CE10 */ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL, },
  484. /* Target autonomous HIF_memcpy */
  485. { /* CE11 */ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL, },
  486. };
  487. static struct CE_attr host_lowdesc_ce_cfg_wlan_ar9888[] = {
  488. /* host->target HTC control and raw streams */
  489. { /* CE0 */ CE_ATTR_FLAGS, 0, 16, 256, 0, NULL, },
  490. /* could be moved to share CE3 */
  491. #ifdef WLAN_FEATURE_FASTPATH
  492. /* target->host BMI + HTC control */
  493. { /* CE1 */ CE_ATTR_FLAGS, 0, 0, 512, 64, NULL, },
  494. #else
  495. /* target->host BMI + HTC control */
  496. { /* CE1 */ CE_ATTR_FLAGS, 0, 0, 512, 512, NULL, },
  497. #endif
  498. /* target->host WMI */
  499. { /* CE2 */ CE_ATTR_FLAGS, 0, 0, 2048, 128, NULL, },
  500. /* host->target WMI */
  501. { /* CE3 */ CE_ATTR_FLAGS, 0, 32, 2048, 0, NULL, },
  502. /* host->target HTT */
  503. { /* CE4 */ CE_ATTR_FLAGS | CE_ATTR_DISABLE_INTR, 0,
  504. CE_HTT_H2T_MSG_SRC_NENTRIES_AR900B, 256, 0, NULL, },
  505. #ifdef WLAN_FEATURE_FASTPATH
  506. /* target->host HTT messages */
  507. { /* CE5 */ CE_ATTR_FLAGS, 0, 0, 512, 512, NULL, },
  508. #else /* WLAN_FEATURE_FASTPATH */
  509. /* unused */
  510. { /* CE5 */ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL, },
  511. #endif /* WLAN_FEATURE_FASTPATH */
  512. /* Target autonomous HIF_memcpy */
  513. { /* CE6 */ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL, },
  514. /* ce_diag, the Diagnostic Window */
  515. { /* CE7 */ CE_ATTR_DIAG_FLAGS, 0, 2, DIAG_TRANSFER_LIMIT, 2, NULL, },
  516. /* Target autonomous HIF_memcpy */
  517. { /* CE8 */ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL, },
  518. };
  519. static struct CE_attr host_lowdesc_ce_cfg_wlan_ar900b[] = {
  520. /* host->target HTC control and raw streams */
  521. { /* CE0 */ CE_ATTR_FLAGS, 0, 16, 256, 0, NULL, },
  522. /* could be moved to share CE3 */
  523. #ifdef WLAN_FEATURE_FASTPATH
  524. /* target->host BMI + HTC control */
  525. { /* CE1 */ CE_ATTR_FLAGS, 0, 0, 512, 64, NULL, },
  526. #else
  527. /* target->host BMI + HTC control */
  528. { /* CE1 */ CE_ATTR_FLAGS, 0, 0, 512, 512, NULL, },
  529. #endif
  530. /* target->host WMI */
  531. { /* CE2 */ CE_ATTR_FLAGS, 0, 0, 2048, 128, NULL, },
  532. /* host->target WMI */
  533. { /* CE3 */ CE_ATTR_FLAGS, 0, 32, 2048, 0, NULL, },
  534. /* host->target HTT */
  535. { /* CE4 */ CE_ATTR_FLAGS | CE_ATTR_DISABLE_INTR, 0,
  536. CE_HTT_H2T_MSG_SRC_NENTRIES_AR900B, 256, 0, NULL, },
  537. #ifdef WLAN_FEATURE_FASTPATH
  538. /* target->host HTT messages */
  539. { /* CE5 */ CE_ATTR_FLAGS, 0, 0, 512, 512, NULL, },
  540. #else /* WLAN_FEATURE_FASTPATH */
  541. /* unused */
  542. { /* CE5 */ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL, },
  543. #endif /* WLAN_FEATURE_FASTPATH */
  544. /* Target autonomous HIF_memcpy */
  545. { /* CE6 */ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL, },
  546. /* ce_diag, the Diagnostic Window */
  547. { /* CE7 */ CE_ATTR_DIAG_FLAGS, 0, 2, DIAG_TRANSFER_LIMIT, 2, NULL, },
  548. /* target->host pktlog */
  549. { /* CE8 */ CE_ATTR_FLAGS, 0, 0, 2048, 128, NULL, },
  550. /* Target autonomous HIF_memcpy */
  551. { /* CE9 */ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL, },
  552. /* Target autonomous HIF_memcpy */
  553. { /* CE10 */ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL, },
  554. /* Target autonomous HIF_memcpy */
  555. { /* CE11 */ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL, },
  556. };
  557. static struct CE_attr host_lowdesc_ce_cfg_wlan_ar900b_nopktlog[] = {
  558. /* host->target HTC control and raw streams */
  559. { /* CE0 */ CE_ATTR_FLAGS, 0, 16, 256, 0, NULL, },
  560. /* could be moved to share CE3 */
  561. #ifdef WLAN_FEATURE_FASTPATH
  562. /* target->host BMI + HTC control */
  563. { /* CE1 */ CE_ATTR_FLAGS, 0, 0, 512, 64, NULL, },
  564. #else
  565. /* target->host BMI + HTC control */
  566. { /* CE1 */ CE_ATTR_FLAGS, 0, 0, 512, 512, NULL, },
  567. #endif
  568. /* target->host WMI */
  569. { /* CE2 */ CE_ATTR_FLAGS, 0, 0, 2048, 128, NULL, },
  570. /* host->target WMI */
  571. { /* CE3 */ CE_ATTR_FLAGS, 0, 32, 2048, 0, NULL, },
  572. /* host->target HTT */
  573. { /* CE4 */ CE_ATTR_FLAGS | CE_ATTR_DISABLE_INTR, 0,
  574. CE_HTT_H2T_MSG_SRC_NENTRIES_AR900B, 256, 0, NULL, },
  575. #ifdef WLAN_FEATURE_FASTPATH
  576. /* target->host HTT messages */
  577. { /* CE5 */ CE_ATTR_FLAGS, 0, 0, 512, 512, NULL, },
  578. #else /* WLAN_FEATURE_FASTPATH */
  579. /* unused */
  580. { /* CE5 */ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL, },
  581. #endif /* WLAN_FEATURE_FASTPATH */
  582. /* Target autonomous HIF_memcpy */
  583. { /* CE6 */ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL, },
  584. /* ce_diag, the Diagnostic Window */
  585. { /* CE7 */ CE_ATTR_DIAG_FLAGS, 0, 2, DIAG_TRANSFER_LIMIT, 2, NULL, },
  586. /* target->host pktlog */
  587. { /* CE8 */ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL, },
  588. /* Target autonomous HIF_memcpy */
  589. { /* CE9 */ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL, },
  590. /* Target autonomous HIF_memcpy */
  591. { /* CE10 */ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL, },
  592. /* Target autonomous HIF_memcpy */
  593. { /* CE11 */ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL, },
  594. };
  595. static struct CE_pipe_config target_ce_config_wlan_ar9888[] = {
  596. /* host->target HTC control and raw streams */
  597. { /* CE0 */ 0, PIPEDIR_OUT, 32, 256, CE_ATTR_FLAGS, 0, },
  598. /* target->host HTC control */
  599. { /* CE1 */ 1, PIPEDIR_IN, 32, 512, CE_ATTR_FLAGS, 0, },
  600. /* target->host WMI */
  601. { /* CE2 */ 2, PIPEDIR_IN, 64, 2048, CE_ATTR_FLAGS, 0, },
  602. /* host->target WMI */
  603. { /* CE3 */ 3, PIPEDIR_OUT, 32, 2048, CE_ATTR_FLAGS, 0, },
  604. /* host->target HTT */
  605. { /* CE4 */ 4, PIPEDIR_OUT, 256, 256, CE_ATTR_FLAGS, 0, },
  606. /* NB: 50% of src nentries, since tx has 2 frags */
  607. #ifdef WLAN_FEATURE_FASTPATH
  608. /* target->host HTT */
  609. { /* CE5 */ 5, PIPEDIR_IN, 32, 512, CE_ATTR_FLAGS, 0, },
  610. #else
  611. /* unused */
  612. { /* CE5 */ 5, PIPEDIR_OUT, 32, 2048, CE_ATTR_FLAGS, 0, },
  613. #endif
  614. /* Reserved for target autonomous HIF_memcpy */
  615. { /* CE6 */ 6, PIPEDIR_INOUT, 32, 4096, CE_ATTR_FLAGS, 0, },
  616. /* CE7 used only by Host */
  617. };
  618. static struct CE_pipe_config target_ce_config_wlan_ar900b[] = {
  619. /* host->target HTC control and raw streams */
  620. { /* CE0 */ 0, PIPEDIR_OUT, 32, 256, CE_ATTR_FLAGS, 0, },
  621. /* target->host HTC control */
  622. { /* CE1 */ 1, PIPEDIR_IN, 32, 512, CE_ATTR_FLAGS, 0, },
  623. /* target->host WMI */
  624. { /* CE2 */ 2, PIPEDIR_IN, 64, 2048, CE_ATTR_FLAGS, 0, },
  625. /* host->target WMI */
  626. { /* CE3 */ 3, PIPEDIR_OUT, 32, 2048, CE_ATTR_FLAGS, 0, },
  627. /* host->target HTT */
  628. { /* CE4 */ 4, PIPEDIR_OUT, 256, 256, CE_ATTR_FLAGS, 0, },
  629. /* NB: 50% of src nentries, since tx has 2 frags */
  630. #ifdef WLAN_FEATURE_FASTPATH
  631. /* target->host HTT */
  632. { /* CE5 */ 5, PIPEDIR_IN, 32, 512, CE_ATTR_FLAGS, 0, },
  633. #else
  634. /* unused */
  635. { /* CE5 */ 5, PIPEDIR_OUT, 32, 2048, CE_ATTR_FLAGS, 0, },
  636. #endif
  637. /* Reserved for target autonomous HIF_memcpy */
  638. { /* CE6 */ 6, PIPEDIR_INOUT, 32, 4096, CE_ATTR_FLAGS, 0, },
  639. /* CE7 used only by Host */
  640. { /* CE7 */ 7, PIPEDIR_INOUT, 0, 0, 0, 0, },
  641. { /* CE8 */ 8, PIPEDIR_IN, 64, 2048, CE_ATTR_FLAGS
  642. /* target->host packtlog */
  643. | CE_ATTR_DISABLE_INTR, 0, },
  644. #if PEER_CACHEING_HOST_ENABLE
  645. /* target autonomous qcache memcpy */
  646. { /* CE9 */ 9, PIPEDIR_INOUT, 32, 2048, CE_ATTR_FLAGS |
  647. CE_ATTR_DISABLE_INTR, 0, },
  648. #endif
  649. };
  650. static struct CE_attr host_ce_config_wlan_qca8074[] = {
  651. /* host->target HTC control and raw streams */
  652. { /* CE0 */ CE_ATTR_FLAGS, 0, 16, 2048, 0, NULL,},
  653. /* target->host HTT + HTC control */
  654. { /* CE1 */ CE_ATTR_FLAGS, 0, 0, 2048, 512, NULL,},
  655. /* target->host WMI */
  656. { /* CE2 */ CE_ATTR_FLAGS, 0, 0, 2048, 512, NULL,},
  657. /* host->target WMI (mac0) */
  658. { /* CE3 */ CE_ATTR_FLAGS, 0, 32, 2048, 0, NULL,},
  659. /* host->target HTT */
  660. { /* CE4 */ (CE_ATTR_FLAGS | CE_ATTR_DISABLE_INTR), 0,
  661. CE_HTT_H2T_MSG_SRC_NENTRIES, 256, 0, NULL,},
  662. /* target -> host PKTLOG */
  663. #ifdef REMOVE_PKT_LOG
  664. { /* CE5 */ 0, 0, 0, 0, 0, NULL,},
  665. #else
  666. { /* CE5 */ CE_ATTR_FLAGS, 0, 0, 2048, 512, NULL,},
  667. #endif
  668. /* Target autonomous HIF_memcpy */
  669. { /* CE6 */ CE_ATTR_FLAGS | CE_ATTR_DISABLE_INTR, 0, 0,
  670. 0, 0, NULL,},
  671. /* host->target WMI (mac1) */
  672. { /* CE7 */ CE_ATTR_FLAGS, 0, 32, 2048, 0, NULL,},
  673. /* Target to uMC */
  674. { /* CE8 */ CE_ATTR_FLAGS | CE_ATTR_DISABLE_INTR, 0, 0, 0, 0, NULL,},
  675. /* host->target WMI (mac2) */
  676. { /* CE9 */ CE_ATTR_FLAGS, 0, 32, 2048, 0, NULL,},
  677. /* target->host HTT */
  678. { /* CE10 unused */ 0, 0, 0, 0, 0, NULL,},
  679. { /* CE11 unused */ 0, 0, 0, 0, 0, NULL,},
  680. };
  681. #if defined(QCA_LOWMEM_CONFIG) || defined(QCA_512M_CONFIG)
  682. #define T2H_WMI_RING_SIZE 32
  683. #else
  684. #define T2H_WMI_RING_SIZE 512
  685. #endif
  686. static struct CE_pipe_config target_ce_config_wlan_qca8074[] = {
  687. /* host->target HTC control and raw streams */
  688. { /* CE0 */ 0, PIPEDIR_OUT, 32, 2048, CE_ATTR_FLAGS, 0,},
  689. /* target->host HTT */
  690. { /* CE1 */ 1, PIPEDIR_IN, 32, 2048, CE_ATTR_FLAGS, 0,},
  691. /* target->host WMI + HTC control */
  692. { /* CE2 */ 2, PIPEDIR_IN, T2H_WMI_RING_SIZE, 2048, CE_ATTR_FLAGS, 0,},
  693. /* host->target WMI */
  694. { /* CE3 */ 3, PIPEDIR_OUT, 32, 2048, CE_ATTR_FLAGS, 0,},
  695. /* host->target HTT */
  696. { /* CE4 */ 4, PIPEDIR_OUT, 256, 256,
  697. (CE_ATTR_FLAGS | CE_ATTR_DISABLE_INTR), 0,},
  698. /* NB: 50% of src nentries, since tx has 2 frags */
  699. /* Target -> host PKTLOG */
  700. #ifdef REMOVE_PKT_LOG
  701. { /* CE5 */ 5, PIPEDIR_NONE, 0, 0, 0, 0,},
  702. #else
  703. { /* CE5 */ 5, PIPEDIR_IN, 32, 2048, 0, 0,},
  704. #endif
  705. /* Reserved for target autonomous HIF_memcpy */
  706. { /* CE6 */ 6, PIPEDIR_INOUT, 32, 65535, 64, 0,},
  707. /* CE7 used only by Host */
  708. { /* CE7 */ 7, PIPEDIR_OUT, 32, 2048,
  709. 8192, 0,},
  710. /* CE8 used only by IPA */
  711. { /* CE8 */ 8, PIPEDIR_INOUT, 32, 65535, 112, 0,},
  712. /* CE9 target->host HTT */
  713. { /* CE9 */ 9, PIPEDIR_OUT, 32, 2048, 8192, 0,},
  714. /* CE10 target->host HTT */
  715. {/* CE10 unused */10, PIPEDIR_NONE, 0, 0, 0, 0,},
  716. {/* CE11 unused */11, PIPEDIR_NONE, 0, 0, 0, 0,},
  717. };
  718. static struct CE_attr host_ce_config_wlan_qca8074_pci[] = {
  719. /* host->target HTC control and raw streams */
  720. { /* CE0 */ EPPING_CE_FLAGS_POLL, 0, 16, 2048, 0, NULL,},
  721. /* target->host HTT + HTC control */
  722. { /* CE1 */ EPPING_CE_FLAGS_POLL, 0, 0, 2048, 512, NULL,},
  723. /* target->host WMI */
  724. { /* CE2 */ EPPING_CE_FLAGS_POLL, 0, 0, 2048, 256, NULL,},
  725. /* host->target WMI (mac0) */
  726. { /* CE3 */ EPPING_CE_FLAGS_POLL, 0, 32, 2048, 0, NULL,},
  727. /* host->target HTT */
  728. { /* CE4 */ (CE_ATTR_FLAGS | CE_ATTR_DISABLE_INTR), 0,
  729. CE_HTT_H2T_MSG_SRC_NENTRIES, 256, 0, NULL,},
  730. /* target -> host PKTLOG */
  731. #ifdef REMOVE_PKT_LOG
  732. { /* CE5 */ 0, 0, 0, 0, 0, NULL,},
  733. #else
  734. { /* CE5 */ EPPING_CE_FLAGS_POLL, 0, 0, 2048, 512, NULL,},
  735. #endif
  736. /* Target autonomous HIF_memcpy */
  737. { /* CE6 */ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL,},
  738. /* host->target WMI (mac1) */
  739. { /* CE7 */ EPPING_CE_FLAGS_POLL, 0, 32, 2048, 0, NULL,},
  740. /* Target to uMC */
  741. { /* CE8 */ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL,},
  742. /* host->target WMI (mac2) */
  743. { /* CE9 */ EPPING_CE_FLAGS_POLL, 0, 32, 2048, 0, NULL,},
  744. /* target->host HTT */
  745. { /* CE10 unused */ 0, 0, 0, 0, 0, NULL,},
  746. { /* CE11 unused */ 0, 0, 0, 0, 0, NULL,},
  747. };
  748. static struct CE_pipe_config target_ce_config_wlan_qca8074_pci[] = {
  749. /* host->target HTC control and raw streams */
  750. { /* CE0 */ 0, PIPEDIR_OUT, 32, 2048, CE_ATTR_FLAGS, 0,},
  751. /* target->host HTT */
  752. { /* CE1 */ 1, PIPEDIR_IN, 32, 2048, CE_ATTR_FLAGS, 0,},
  753. /* target->host WMI + HTC control */
  754. { /* CE2 */ 2, PIPEDIR_IN, 32, 2048, CE_ATTR_FLAGS, 0,},
  755. /* host->target WMI */
  756. { /* CE3 */ 3, PIPEDIR_OUT, 32, 2048, CE_ATTR_FLAGS, 0,},
  757. /* host->target HTT */
  758. { /* CE4 */ 4, PIPEDIR_OUT, 256, 256,
  759. (CE_ATTR_FLAGS | CE_ATTR_DISABLE_INTR), 0,},
  760. /* NB: 50% of src nentries, since tx has 2 frags */
  761. /* ipa_uc->target */
  762. { /* CE5 */ 5, PIPEDIR_OUT, 1024, 64,
  763. (CE_ATTR_FLAGS | CE_ATTR_DISABLE_INTR), 0,},
  764. /* Reserved for target autonomous HIF_memcpy */
  765. { /* CE6 */ 6, PIPEDIR_INOUT, 32, 16384, CE_ATTR_FLAGS, 0,},
  766. /* CE7 used only by Host */
  767. { /* CE7 */ 7, PIPEDIR_INOUT_H2H, 0, 0,
  768. (CE_ATTR_FLAGS | CE_ATTR_DISABLE_INTR), 0,},
  769. /* CE8 used only by IPA */
  770. { /* CE8 */ 8, PIPEDIR_IN, 32, 2048, CE_ATTR_FLAGS, 0,},
  771. /* CE9 target->host HTT */
  772. { /* CE9 */ 9, PIPEDIR_IN, 32, 2048, CE_ATTR_FLAGS, 0,},
  773. /* CE10 target->host HTT */
  774. { /* CE10 */ 10, PIPEDIR_IN, 32, 2048, CE_ATTR_FLAGS, 0,},
  775. /* Target -> host PKTLOG */
  776. { /* CE11 */ 11, PIPEDIR_IN, 32, 2048, CE_ATTR_FLAGS, 0,},
  777. };
  778. static struct CE_attr host_lowdesc_ce_config_wlan_adrastea_nopktlog[] = {
  779. /* host->target HTC control and raw streams */
  780. { /* CE0 */ CE_ATTR_FLAGS, 0, 16, 2048, 0, NULL,},
  781. /* target->host HTT + HTC control */
  782. { /* CE1 */ CE_ATTR_FLAGS, 0, 0, 2048, 256, NULL,},
  783. /* target->host WMI */
  784. { /* CE2 */ CE_ATTR_FLAGS, 0, 0, 2048, 64, NULL,},
  785. /* host->target WMI */
  786. { /* CE3 */ CE_ATTR_FLAGS, 0, 32, 2048, 0, NULL,},
  787. /* host->target HTT */
  788. { /* CE4 */ (CE_ATTR_FLAGS | CE_ATTR_DISABLE_INTR), 0,
  789. CE_HTT_H2T_MSG_SRC_NENTRIES, 256, 0, NULL,},
  790. /* ipa_uc->target HTC control */
  791. { /* CE5 */ (CE_ATTR_FLAGS | CE_ATTR_DISABLE_INTR), 0,
  792. CE_HTT_H2T_MSG_SRC_NENTRIES, 512, 0, NULL,},
  793. /* Target autonomous HIF_memcpy */
  794. { /* CE6 */ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL,},
  795. /* ce_diag, the Diagnostic Window */
  796. { /* CE7 */ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL,},
  797. /* Target to uMC */
  798. { /* CE8 */ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL,},
  799. /* target->host HTT */
  800. { /* CE9 */ CE_ATTR_FLAGS, 0, 0, 2048, 64, NULL,},
  801. /* target->host HTT */
  802. { /* CE10 */ CE_ATTR_FLAGS, 0, 0, 2048, 64, NULL,},
  803. /* target -> host PKTLOG */
  804. { /* CE11 */ (CE_ATTR_FLAGS | CE_ATTR_DISABLE_INTR), 0,
  805. 0, 2048, 0, NULL,},
  806. };
  807. static struct CE_attr host_ce_config_wlan_adrastea[] = {
  808. /* host->target HTC control and raw streams */
  809. { /* CE0 */ CE_ATTR_FLAGS, 0, 16, 2048, 0, NULL,},
  810. /* target->host HTT + HTC control */
  811. { /* CE1 */ CE_ATTR_FLAGS, 0, 0, 2048, 512, NULL,},
  812. /* target->host WMI */
  813. { /* CE2 */ CE_ATTR_FLAGS, 0, 0, 2048, 128, NULL,},
  814. /* host->target WMI */
  815. { /* CE3 */ CE_ATTR_FLAGS, 0, 32, 2048, 0, NULL,},
  816. /* host->target HTT */
  817. { /* CE4 */ (CE_ATTR_FLAGS | CE_ATTR_DISABLE_INTR), 0,
  818. CE_HTT_H2T_MSG_SRC_NENTRIES, 256, 0, NULL,},
  819. /* ipa_uc->target HTC control */
  820. { /* CE5 */ (CE_ATTR_FLAGS | CE_ATTR_DISABLE_INTR), 0,
  821. CE_HTT_H2T_MSG_SRC_NENTRIES, 512, 0, NULL,},
  822. /* Target autonomous HIF_memcpy */
  823. { /* CE6 */ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL,},
  824. /* ce_diag, the Diagnostic Window */
  825. { /* CE7 */ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL,},
  826. /* Target to uMC */
  827. { /* CE8 */ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL,},
  828. /* target->host HTT */
  829. { /* CE9 */ CE_ATTR_FLAGS, 0, 0, 2048, 512, NULL,},
  830. /* target->host HTT */
  831. { /* CE10 */ CE_ATTR_FLAGS, 0, 0, 2048, 512, NULL,},
  832. /* target -> host PKTLOG */
  833. { /* CE11 */ CE_ATTR_FLAGS, 0, 0, 2048, 512, NULL,},
  834. };
  835. static struct CE_pipe_config
  836. target_lowdesc_ce_config_wlan_adrastea_nopktlog[] = {
  837. /* host->target HTC control and raw streams */
  838. { /* CE0 */ 0, PIPEDIR_OUT, 32, 2048, CE_ATTR_FLAGS, 0,},
  839. /* target->host HTT */
  840. { /* CE1 */ 1, PIPEDIR_IN, 32, 2048, CE_ATTR_FLAGS, 0,},
  841. /* target->host WMI + HTC control */
  842. { /* CE2 */ 2, PIPEDIR_IN, 64, 2048, CE_ATTR_FLAGS, 0,},
  843. /* host->target WMI */
  844. { /* CE3 */ 3, PIPEDIR_OUT, 32, 2048, CE_ATTR_FLAGS, 0,},
  845. /* host->target HTT */
  846. { /* CE4 */ 4, PIPEDIR_OUT, 256, 256,
  847. (CE_ATTR_FLAGS | CE_ATTR_DISABLE_INTR), 0,},
  848. /* NB: 50% of src nentries, since tx has 2 frags */
  849. /* ipa_uc->target */
  850. { /* CE5 */ 5, PIPEDIR_OUT, 1024, 64,
  851. (CE_ATTR_FLAGS | CE_ATTR_DISABLE_INTR), 0,},
  852. /* Reserved for target autonomous HIF_memcpy */
  853. { /* CE6 */ 6, PIPEDIR_INOUT, 32, 16384, CE_ATTR_FLAGS, 0,},
  854. /* CE7 used only by Host */
  855. { /* CE7 */ 7, PIPEDIR_INOUT_H2H, 0, 0,
  856. (CE_ATTR_FLAGS | CE_ATTR_DISABLE_INTR), 0,},
  857. /* CE8 used only by IPA */
  858. { /* CE8 */ 8, PIPEDIR_IN, 32, 2048, CE_ATTR_FLAGS, 0,},
  859. /* CE9 target->host HTT */
  860. { /* CE9 */ 9, PIPEDIR_IN, 32, 2048, CE_ATTR_FLAGS, 0,},
  861. /* CE10 target->host HTT */
  862. { /* CE10 */ 10, PIPEDIR_IN, 32, 2048, CE_ATTR_FLAGS, 0,},
  863. /* Target -> host PKTLOG */
  864. { /* CE11 */ 11, PIPEDIR_IN, 32, 2048,
  865. (CE_ATTR_FLAGS | CE_ATTR_DISABLE_INTR), 0,},
  866. };
  867. static struct CE_pipe_config target_ce_config_wlan_adrastea[] = {
  868. /* host->target HTC control and raw streams */
  869. { /* CE0 */ 0, PIPEDIR_OUT, 32, 2048, CE_ATTR_FLAGS, 0,},
  870. /* target->host HTT */
  871. { /* CE1 */ 1, PIPEDIR_IN, 32, 2048, CE_ATTR_FLAGS, 0,},
  872. /* target->host WMI + HTC control */
  873. { /* CE2 */ 2, PIPEDIR_IN, 64, 2048, CE_ATTR_FLAGS, 0,},
  874. /* host->target WMI */
  875. { /* CE3 */ 3, PIPEDIR_OUT, 32, 2048, CE_ATTR_FLAGS, 0,},
  876. /* host->target HTT */
  877. { /* CE4 */ 4, PIPEDIR_OUT, 256, 256,
  878. (CE_ATTR_FLAGS | CE_ATTR_DISABLE_INTR), 0,},
  879. /* NB: 50% of src nentries, since tx has 2 frags */
  880. /* ipa_uc->target */
  881. { /* CE5 */ 5, PIPEDIR_OUT, 1024, 64,
  882. (CE_ATTR_FLAGS | CE_ATTR_DISABLE_INTR), 0,},
  883. /* Reserved for target autonomous HIF_memcpy */
  884. { /* CE6 */ 6, PIPEDIR_INOUT, 32, 16384, CE_ATTR_FLAGS, 0,},
  885. /* CE7 used only by Host */
  886. { /* CE7 */ 7, PIPEDIR_INOUT_H2H, 0, 0,
  887. (CE_ATTR_FLAGS | CE_ATTR_DISABLE_INTR), 0,},
  888. /* CE8 used only by IPA */
  889. { /* CE8 */ 8, PIPEDIR_IN, 32, 2048, CE_ATTR_FLAGS, 0,},
  890. /* CE9 target->host HTT */
  891. { /* CE9 */ 9, PIPEDIR_IN, 32, 2048, CE_ATTR_FLAGS, 0,},
  892. /* CE10 target->host HTT */
  893. { /* CE10 */ 10, PIPEDIR_IN, 32, 2048, CE_ATTR_FLAGS, 0,},
  894. /* Target -> host PKTLOG */
  895. { /* CE11 */ 11, PIPEDIR_IN, 32, 2048, CE_ATTR_FLAGS, 0,},
  896. };
  897. #define QCN_9100_CE_COUNT 6
  898. static struct CE_attr host_ce_config_wlan_qcn9100[] = {
  899. /* host->target HTC control and raw streams */
  900. {/*CE0*/ (CE_ATTR_FLAGS), 0, 16, 2048, 0, NULL,},
  901. /* target->host HTT + HTC control */
  902. {/*CE1*/ (CE_ATTR_FLAGS), 0, 0, 2048,
  903. 512, NULL,},
  904. /* target->host WMI */
  905. {/*CE2*/ (CE_ATTR_FLAGS), 0, 0, 2048,
  906. 128, NULL,},
  907. /* host->target WMI */
  908. {/*CE3*/ (CE_ATTR_FLAGS), 0, 32, 2048, 0, NULL,},
  909. /* host->target HTT */
  910. {/*CE4*/ (CE_ATTR_FLAGS | CE_ATTR_DISABLE_INTR), 0,
  911. CE_HTT_H2T_MSG_SRC_NENTRIES, 256, 0, NULL,},
  912. /* target -> host PKTLOG */
  913. {/*CE5*/ (CE_ATTR_FLAGS), 0, 0, 2048,
  914. 512, NULL,},
  915. /* Target autonomous HIF_memcpy */
  916. {/*CE6*/ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL,},
  917. /* host->target WMI (mac1) */
  918. {/*CE7*/ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL,},
  919. /* Reserved for target */
  920. {/*CE8*/ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL,},
  921. /* CE 9, 10, 11 belong to CoreBsp & MHI driver */
  922. };
  923. static struct CE_pipe_config target_ce_config_wlan_qcn9100[] = {
  924. /* host->target HTC control and raw streams */
  925. { /* CE0 */ 0, PIPEDIR_OUT, 32, 2048, CE_ATTR_FLAGS, 0,},
  926. /* target->host HTT */
  927. { /* CE1 */ 1, PIPEDIR_IN, 32, 2048, CE_ATTR_FLAGS, 0,},
  928. /* target->host WMI + HTC control */
  929. { /* CE2 */ 2, PIPEDIR_IN, 32, 2048, CE_ATTR_FLAGS, 0,},
  930. /* host->target WMI */
  931. { /* CE3 */ 3, PIPEDIR_OUT, 32, 2048, CE_ATTR_FLAGS, 0,},
  932. /* host->target HTT */
  933. { /* CE4 */ 4, PIPEDIR_OUT, 256, 256,
  934. (CE_ATTR_FLAGS | CE_ATTR_DISABLE_INTR), 0,},
  935. /* Target -> host PKTLOG */
  936. { /* CE5 */ 5, PIPEDIR_IN, 32, 2048, CE_ATTR_FLAGS, 0,},
  937. /* Reserved for target autonomous HIF_memcpy */
  938. { /* CE6 */ 6, PIPEDIR_INOUT, 32, 16384, CE_ATTR_FLAGS, 0,},
  939. /* CE7 used only by Host */
  940. { /* CE7 */ 7, PIPEDIR_OUT, 32, 2048,
  941. 8192, 0,},
  942. /* Reserved for target */
  943. { /* CE8 */ 8, PIPEDIR_INOUT, 32, 16384, CE_ATTR_FLAGS, 0,},
  944. /* CE 9, 10, 11 belong to CoreBsp & MHI driver */
  945. };
  946. #define QCA_5018_CE_COUNT 6
  947. static struct CE_attr host_ce_config_wlan_qca5018[] = {
  948. /* host->target HTC control and raw streams */
  949. {/*CE0*/ (CE_ATTR_FLAGS), 0, 16, 2048, 0, NULL,},
  950. /* target->host HTT + HTC control */
  951. {/*CE1*/ (CE_ATTR_FLAGS), 0, 0, 2048,
  952. 512, NULL,},
  953. /* target->host WMI */
  954. {/*CE2*/ (CE_ATTR_FLAGS), 0, 0, 2048,
  955. 128, NULL,},
  956. /* host->target WMI */
  957. {/*CE3*/ (CE_ATTR_FLAGS), 0, 32, 2048, 0, NULL,},
  958. /* host->target HTT */
  959. {/*CE4*/ (CE_ATTR_FLAGS | CE_ATTR_DISABLE_INTR), 0,
  960. CE_HTT_H2T_MSG_SRC_NENTRIES, 256, 0, NULL,},
  961. /* target -> host PKTLOG */
  962. #ifdef REMOVE_PKT_LOG
  963. { /* CE5 */ 0, 0, 0, 0, 0, NULL,},
  964. #else
  965. {/*CE5*/ (CE_ATTR_FLAGS), 0, 0, 2048,
  966. 512, NULL,},
  967. #endif
  968. /* Target autonomous HIF_memcpy */
  969. {/*CE6*/ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL,},
  970. /* host->target WMI (mac1) */
  971. {/*CE7*/ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL,},
  972. /* Reserved for target */
  973. {/*CE8*/ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL,},
  974. /* CE 9, 10, 11 belong to CoreBsp & MHI driver */
  975. };
  976. static struct CE_pipe_config target_ce_config_wlan_qca5018[] = {
  977. /* host->target HTC control and raw streams */
  978. { /* CE0 */ 0, PIPEDIR_OUT, 32, 2048, CE_ATTR_FLAGS, 0,},
  979. /* target->host HTT */
  980. { /* CE1 */ 1, PIPEDIR_IN, 32, 2048, CE_ATTR_FLAGS, 0,},
  981. /* target->host WMI + HTC control */
  982. { /* CE2 */ 2, PIPEDIR_IN, 32, 2048, CE_ATTR_FLAGS, 0,},
  983. /* host->target WMI */
  984. { /* CE3 */ 3, PIPEDIR_OUT, 32, 2048, CE_ATTR_FLAGS, 0,},
  985. /* host->target HTT */
  986. { /* CE4 */ 4, PIPEDIR_OUT, 256, 256,
  987. (CE_ATTR_FLAGS | CE_ATTR_DISABLE_INTR), 0,},
  988. /* Target -> host PKTLOG */
  989. { /* CE5 */ 5, PIPEDIR_IN, 32, 2048, CE_ATTR_FLAGS, 0,},
  990. /* Reserved for target autonomous HIF_memcpy */
  991. { /* CE6 */ 6, PIPEDIR_INOUT, 32, 16384, CE_ATTR_FLAGS, 0,},
  992. /* CE7 used only by Host */
  993. { /* CE7 */ 7, PIPEDIR_OUT, 32, 2048,
  994. 8192, 0,},
  995. /* Reserved for target */
  996. { /* CE8 */ 8, PIPEDIR_INOUT, 32, 16384, CE_ATTR_FLAGS, 0,},
  997. /* CE 9, 10, 11 belong to CoreBsp & MHI driver */
  998. };
  999. #define QCN_9000_CE_COUNT 6
  1000. /* QCN9000 enable polling mode */
  1001. static struct CE_attr host_ce_config_wlan_qcn9000[] = {
  1002. /* host->target HTC control and raw streams */
  1003. {/*CE0*/ (CE_ATTR_FLAGS), 0, 16, 2048, 0, NULL,},
  1004. /* target->host HTT + HTC control */
  1005. {/*CE1*/ (CE_ATTR_FLAGS), 0, 0, 2048,
  1006. 512, NULL,},
  1007. /* target->host WMI */
  1008. {/*CE2*/ (CE_ATTR_FLAGS), 0, 0, 2048,
  1009. 128, NULL,},
  1010. /* host->target WMI */
  1011. {/*CE3*/ (CE_ATTR_FLAGS), 0, 32, 2048, 0, NULL,},
  1012. /* host->target HTT */
  1013. {/*CE4*/ (CE_ATTR_FLAGS | CE_ATTR_DISABLE_INTR), 0,
  1014. CE_HTT_H2T_MSG_SRC_NENTRIES, 256, 0, NULL,},
  1015. /* target -> host PKTLOG */
  1016. #ifdef REMOVE_PKT_LOG
  1017. { /* CE5 */ 0, 0, 0, 0, 0, NULL,},
  1018. #else
  1019. {/*CE5*/ (CE_ATTR_FLAGS), 0, 0, 2048,
  1020. 512, NULL,},
  1021. #endif
  1022. /* Target autonomous HIF_memcpy */
  1023. {/*CE6*/ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL,},
  1024. /* host->target WMI (mac1) */
  1025. {/*CE7*/ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL,},
  1026. /* Reserved for target */
  1027. {/*CE8*/ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL,},
  1028. /* CE 9, 10, 11 belong to CoreBsp & MHI driver */
  1029. };
  1030. static struct CE_pipe_config target_ce_config_wlan_qcn9000[] = {
  1031. /* host->target HTC control and raw streams */
  1032. { /* CE0 */ 0, PIPEDIR_OUT, 32, 2048, CE_ATTR_FLAGS, 0,},
  1033. /* target->host HTT */
  1034. { /* CE1 */ 1, PIPEDIR_IN, 32, 2048, CE_ATTR_FLAGS, 0,},
  1035. /* target->host WMI + HTC control */
  1036. { /* CE2 */ 2, PIPEDIR_IN, 32, 2048, CE_ATTR_FLAGS, 0,},
  1037. /* host->target WMI */
  1038. { /* CE3 */ 3, PIPEDIR_OUT, 32, 2048, CE_ATTR_FLAGS, 0,},
  1039. /* host->target HTT */
  1040. { /* CE4 */ 4, PIPEDIR_OUT, 256, 256,
  1041. (CE_ATTR_FLAGS | CE_ATTR_DISABLE_INTR), 0,},
  1042. /* Target -> host PKTLOG */
  1043. { /* CE5 */ 5, PIPEDIR_IN, 32, 2048, CE_ATTR_FLAGS, 0,},
  1044. /* Reserved for target autonomous HIF_memcpy */
  1045. { /* CE6 */ 6, PIPEDIR_INOUT, 32, 16384, CE_ATTR_FLAGS, 0,},
  1046. /* CE7 used only by Host */
  1047. { /* CE7 */ 7, PIPEDIR_OUT, 32, 2048,
  1048. 8192, 0,},
  1049. /* Reserved for target */
  1050. { /* CE8 */ 8, PIPEDIR_INOUT, 32, 16384, CE_ATTR_FLAGS, 0,},
  1051. /* CE 9, 10, 11 belong to CoreBsp & MHI driver */
  1052. };
  1053. #define QCA_6290_CE_COUNT 9
  1054. #ifdef QCA_6290_AP_MODE
  1055. static struct CE_attr host_ce_config_wlan_qca6290[] = {
  1056. /* host->target HTC control and raw streams */
  1057. { /* CE0 */ CE_ATTR_FLAGS, 0, 16, 2048, 0, NULL,},
  1058. /* target->host HTT + HTC control */
  1059. { /* CE1 */ (CE_ATTR_FLAGS | CE_ATTR_ENABLE_POLL), 0, 0, 2048,
  1060. 512, NULL,},
  1061. /* target->host WMI */
  1062. { /* CE2 */ (CE_ATTR_FLAGS | CE_ATTR_ENABLE_POLL), 0, 0, 2048,
  1063. 32, NULL,},
  1064. /* host->target WMI */
  1065. { /* CE3 */ CE_ATTR_FLAGS, 0, 32, 2048, 0, NULL,},
  1066. /* host->target HTT */
  1067. { /* CE4 */ (CE_ATTR_FLAGS | CE_ATTR_DISABLE_INTR), 0,
  1068. CE_HTT_H2T_MSG_SRC_NENTRIES, 256, 0, NULL,},
  1069. /* target -> host PKTLOG */
  1070. { /* CE5 */ (CE_ATTR_FLAGS | CE_ATTR_ENABLE_POLL), 0, 0, 2048,
  1071. 512, NULL,},
  1072. /* Target autonomous HIF_memcpy */
  1073. { /* CE6 */ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL,},
  1074. /* host->target WMI (mac1) */
  1075. { /* CE7 */ CE_ATTR_FLAGS, 0, 32, 2048, 0, NULL,},
  1076. /* Reserved for target */
  1077. { /* CE8 */ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL,},
  1078. /* CE 9, 10, 11 belong to CoreBsp & MHI driver */
  1079. };
  1080. static struct CE_pipe_config target_ce_config_wlan_qca6290[] = {
  1081. /* host->target HTC control and raw streams */
  1082. { /* CE0 */ 0, PIPEDIR_OUT, 32, 2048, CE_ATTR_FLAGS, 0,},
  1083. /* target->host HTT */
  1084. { /* CE1 */ 1, PIPEDIR_IN, 32, 2048, CE_ATTR_FLAGS, 0,},
  1085. /* target->host WMI + HTC control */
  1086. { /* CE2 */ 2, PIPEDIR_IN, 32, 2048, CE_ATTR_FLAGS, 0,},
  1087. /* host->target WMI */
  1088. { /* CE3 */ 3, PIPEDIR_OUT, 32, 2048, CE_ATTR_FLAGS, 0,},
  1089. /* host->target HTT */
  1090. { /* CE4 */ 4, PIPEDIR_OUT, 256, 256,
  1091. (CE_ATTR_FLAGS | CE_ATTR_DISABLE_INTR), 0,},
  1092. /* Target -> host PKTLOG */
  1093. { /* CE5 */ 5, PIPEDIR_IN, 32, 2048, CE_ATTR_FLAGS, 0,},
  1094. /* Reserved for target autonomous HIF_memcpy */
  1095. { /* CE6 */ 6, PIPEDIR_INOUT, 32, 16384, CE_ATTR_FLAGS, 0,},
  1096. /* CE7 used only by Host */
  1097. { /* CE7 */ 7, PIPEDIR_OUT, 32, 2048,
  1098. 8192, 0,},
  1099. /* Reserved for target */
  1100. { /* CE8 */ 8, PIPEDIR_INOUT, 32, 16384, CE_ATTR_FLAGS, 0,},
  1101. /* CE 9, 10, 11 belong to CoreBsp & MHI driver */
  1102. };
  1103. #else
  1104. static struct CE_attr host_ce_config_wlan_qca6290[] = {
  1105. /* host->target HTC control and raw streams */
  1106. { /* CE0 */ CE_ATTR_FLAGS, 0, 16, 2048, 0, NULL,},
  1107. /* target->host HTT + HTC control */
  1108. { /* CE1 */ CE_ATTR_FLAGS, 0, 0, 2048, 512, NULL,},
  1109. /* target->host WMI */
  1110. { /* CE2 */ CE_ATTR_FLAGS, 0, 0, 2048, 32, NULL,},
  1111. /* host->target WMI */
  1112. { /* CE3 */ CE_ATTR_FLAGS, 0, 32, 2048, 0, NULL,},
  1113. /* host->target HTT */
  1114. { /* CE4 */ (CE_ATTR_FLAGS | CE_ATTR_DISABLE_INTR), 0,
  1115. CE_HTT_H2T_MSG_SRC_NENTRIES, 256, 0, NULL,},
  1116. /* target -> host PKTLOG */
  1117. { /* CE5 */ CE_ATTR_FLAGS, 0, 0, 2048, 512, NULL,},
  1118. /* Target autonomous HIF_memcpy */
  1119. { /* CE6 */ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL,},
  1120. /* ce_diag, the Diagnostic Window */
  1121. { /* CE7 */ (CE_ATTR_DIAG_FLAGS | CE_ATTR_DISABLE_INTR), 0,
  1122. 2, DIAG_TRANSFER_LIMIT, 2, NULL,},
  1123. /* Reserved for target */
  1124. { /* CE8 */ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL,},
  1125. /* CE 9, 10, 11 belong to CoreBsp & MHI driver */
  1126. };
  1127. static struct CE_pipe_config target_ce_config_wlan_qca6290[] = {
  1128. /* host->target HTC control and raw streams */
  1129. { /* CE0 */ 0, PIPEDIR_OUT, 32, 2048, CE_ATTR_FLAGS, 0,},
  1130. /* target->host HTT */
  1131. { /* CE1 */ 1, PIPEDIR_IN, 32, 2048, CE_ATTR_FLAGS, 0,},
  1132. /* target->host WMI + HTC control */
  1133. { /* CE2 */ 2, PIPEDIR_IN, 32, 2048, CE_ATTR_FLAGS, 0,},
  1134. /* host->target WMI */
  1135. { /* CE3 */ 3, PIPEDIR_OUT, 32, 2048, CE_ATTR_FLAGS, 0,},
  1136. /* host->target HTT */
  1137. { /* CE4 */ 4, PIPEDIR_OUT, 256, 256,
  1138. (CE_ATTR_FLAGS | CE_ATTR_DISABLE_INTR), 0,},
  1139. /* Target -> host PKTLOG */
  1140. { /* CE5 */ 5, PIPEDIR_IN, 32, 2048, CE_ATTR_FLAGS, 0,},
  1141. /* Reserved for target autonomous HIF_memcpy */
  1142. { /* CE6 */ 6, PIPEDIR_INOUT, 32, 16384, CE_ATTR_FLAGS, 0,},
  1143. /* CE7 used only by Host */
  1144. { /* CE7 */ 7, PIPEDIR_INOUT_H2H, 0, 0,
  1145. (CE_ATTR_FLAGS | CE_ATTR_DISABLE_INTR), 0,},
  1146. /* Reserved for target */
  1147. { /* CE8 */ 8, PIPEDIR_INOUT, 32, 16384, CE_ATTR_FLAGS, 0,},
  1148. /* CE 9, 10, 11 belong to CoreBsp & MHI driver */
  1149. };
  1150. #endif
  1151. #define QCA_6390_CE_COUNT 9
  1152. static struct CE_attr host_ce_config_wlan_qca6390[] = {
  1153. /* host->target HTC control and raw streams */
  1154. { /* CE0 */ CE_ATTR_FLAGS, 0, 16, 2048, 0, NULL,},
  1155. /* target->host HTT + HTC control */
  1156. #ifdef REMOVE_PKT_LOG
  1157. { /* CE1 */ CE_ATTR_FLAGS, 0, 0, 2048, 512, NULL,},
  1158. #else
  1159. { /* CE1 */ CE_ATTR_FLAGS, 0, 0, 2048, 256, NULL,},
  1160. #endif
  1161. /* target->host WMI */
  1162. { /* CE2 */ CE_ATTR_FLAGS, 0, 0, 2048, 32, NULL,},
  1163. /* host->target WMI */
  1164. { /* CE3 */ CE_ATTR_FLAGS, 0, 32, 2048, 0, NULL,},
  1165. /* host->target HTT */
  1166. { /* CE4 */ (CE_ATTR_FLAGS | CE_ATTR_DISABLE_INTR), 0,
  1167. CE_HTT_H2T_MSG_SRC_NENTRIES_QCA6390, 256, 0, NULL,},
  1168. /* target -> host PKTLOG */
  1169. #ifdef REMOVE_PKT_LOG
  1170. { /* CE5 */ 0, 0, 0, 0, 0, NULL,},
  1171. #else
  1172. { /* CE5 */ CE_ATTR_FLAGS, 0, 0, 2048, 512, NULL,},
  1173. #endif
  1174. /* Target autonomous HIF_memcpy */
  1175. { /* CE6 */ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL,},
  1176. /* ce_diag, the Diagnostic Window */
  1177. { /* CE7 */ (CE_ATTR_DIAG_FLAGS | CE_ATTR_DISABLE_INTR), 0,
  1178. 0, DIAG_TRANSFER_LIMIT, 0, NULL,},
  1179. /* Reserved for target */
  1180. { /* CE8 */ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL,},
  1181. /* CE 9, 10, 11 belong to CoreBsp & MHI driver */
  1182. };
  1183. static struct CE_pipe_config target_ce_config_wlan_qca6390[] = {
  1184. /* host->target HTC control and raw streams */
  1185. { /* CE0 */ 0, PIPEDIR_OUT, 32, 2048, CE_ATTR_FLAGS, 0,},
  1186. /* target->host HTT */
  1187. { /* CE1 */ 1, PIPEDIR_IN, 32, 2048, CE_ATTR_FLAGS, 0,},
  1188. /* target->host WMI + HTC control */
  1189. { /* CE2 */ 2, PIPEDIR_IN, 32, 2048, CE_ATTR_FLAGS, 0,},
  1190. /* host->target WMI */
  1191. { /* CE3 */ 3, PIPEDIR_OUT, 32, 2048, CE_ATTR_FLAGS, 0,},
  1192. /* host->target HTT */
  1193. { /* CE4 */ 4, PIPEDIR_OUT, 256, 256,
  1194. (CE_ATTR_FLAGS | CE_ATTR_DISABLE_INTR), 0,},
  1195. /* Target -> host PKTLOG */
  1196. #ifdef REMOVE_PKT_LOG
  1197. { /* CE5 */ 5, PIPEDIR_IN, 2, 2048, CE_ATTR_FLAGS, 0,},
  1198. #else
  1199. { /* CE5 */ 5, PIPEDIR_IN, 32, 2048, CE_ATTR_FLAGS, 0,},
  1200. #endif
  1201. /* Reserved for target autonomous HIF_memcpy */
  1202. { /* CE6 */ 6, PIPEDIR_INOUT, 32, 16384, CE_ATTR_FLAGS, 0,},
  1203. /* CE7 used only by Host */
  1204. { /* CE7 */ 7, PIPEDIR_INOUT_H2H, 0, 0,
  1205. (CE_ATTR_FLAGS | CE_ATTR_DISABLE_INTR), 0,},
  1206. /* Reserved for target */
  1207. { /* CE8 */ 8, PIPEDIR_INOUT, 32, 16384, CE_ATTR_FLAGS, 0,},
  1208. /* CE 9, 10, 11 belong to CoreBsp & MHI driver */
  1209. };
  1210. #define QCA_6490_CE_COUNT 9
  1211. static struct CE_attr host_ce_config_wlan_qca6490[] = {
  1212. /* host->target HTC control and raw streams */
  1213. { /* CE0 */ CE_ATTR_FLAGS, 0, 16, 2048, 0, NULL,},
  1214. /* target->host HTT + HTC control */
  1215. { /* CE1 */ CE_ATTR_FLAGS, 0, 0, 2048, 512, NULL,},
  1216. /* target->host WMI */
  1217. { /* CE2 */ CE_ATTR_FLAGS, 0, 0, 3200, 64, NULL,},
  1218. /* host->target WMI */
  1219. { /* CE3 */ CE_ATTR_FLAGS, 0, 32, 2048, 0, NULL,},
  1220. /* host->target HTT */
  1221. { /* CE4 */ (CE_ATTR_FLAGS | CE_ATTR_DISABLE_INTR), 0,
  1222. CE_HTT_H2T_MSG_SRC_NENTRIES_QCA6490, 256, 0, NULL,},
  1223. /* target -> host PKTLOG */
  1224. { /* CE5 */ CE_ATTR_FLAGS, 0, 0, 2048, 512, NULL,},
  1225. /* Target autonomous HIF_memcpy */
  1226. { /* CE6 */ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL,},
  1227. /* ce_diag, the Diagnostic Window */
  1228. { /* CE7 */ (CE_ATTR_DIAG_FLAGS | CE_ATTR_DISABLE_INTR), 0,
  1229. 0, DIAG_TRANSFER_LIMIT, 0, NULL,},
  1230. /* Reserved for target */
  1231. { /* CE8 */ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL,},
  1232. /* CE 9, 10, 11 belong to CoreBsp & MHI driver */
  1233. };
  1234. static struct CE_pipe_config target_ce_config_wlan_qca6490[] = {
  1235. /* host->target HTC control and raw streams */
  1236. { /* CE0 */ 0, PIPEDIR_OUT, 32, 2048, CE_ATTR_FLAGS, 0,},
  1237. /* target->host HTT */
  1238. { /* CE1 */ 1, PIPEDIR_IN, 32, 2048, CE_ATTR_FLAGS, 0,},
  1239. /* target->host WMI + HTC control */
  1240. { /* CE2 */ 2, PIPEDIR_IN, 32, 3200, CE_ATTR_FLAGS, 0,},
  1241. /* host->target WMI */
  1242. { /* CE3 */ 3, PIPEDIR_OUT, 32, 2048, CE_ATTR_FLAGS, 0,},
  1243. /* host->target HTT */
  1244. { /* CE4 */ 4, PIPEDIR_OUT, 256, 256,
  1245. (CE_ATTR_FLAGS | CE_ATTR_DISABLE_INTR), 0,},
  1246. /* Target -> host PKTLOG */
  1247. { /* CE5 */ 5, PIPEDIR_IN, 32, 2048, CE_ATTR_FLAGS, 0,},
  1248. /* Reserved for target autonomous HIF_memcpy */
  1249. { /* CE6 */ 6, PIPEDIR_INOUT, 32, 16384, CE_ATTR_FLAGS, 0,},
  1250. /* CE7 used only by Host */
  1251. { /* CE7 */ 7, PIPEDIR_INOUT_H2H, 0, 0,
  1252. (CE_ATTR_FLAGS | CE_ATTR_DISABLE_INTR), 0,},
  1253. /* Reserved for target */
  1254. { /* CE8 */ 8, PIPEDIR_INOUT, 32, 16384, CE_ATTR_FLAGS, 0,},
  1255. /* CE 9, 10, 11 belong to CoreBsp & MHI driver */
  1256. };
  1257. #define QCA_6750_CE_COUNT 9
  1258. static struct CE_attr host_ce_config_wlan_qca6750[] = {
  1259. /* host->target HTC control and raw streams */
  1260. { /* CE0 */ CE_ATTR_FLAGS, 0, 16, 2048, 0, NULL,},
  1261. /* target->host HTT + HTC control */
  1262. { /* CE1 */ CE_ATTR_FLAGS, 0, 0, 2048, 512, NULL,},
  1263. /* target->host WMI */
  1264. { /* CE2 */ CE_ATTR_FLAGS, 0, 0, 2048, 32, NULL,},
  1265. /* host->target WMI */
  1266. { /* CE3 */ CE_ATTR_FLAGS, 0, 32, 2048, 0, NULL,},
  1267. /* host->target HTT */
  1268. { /* CE4 */ (CE_ATTR_FLAGS | CE_ATTR_DISABLE_INTR), 0,
  1269. CE_HTT_H2T_MSG_SRC_NENTRIES, 256, 0, NULL,},
  1270. /* target -> host PKTLOG */
  1271. { /* CE5 */ CE_ATTR_FLAGS, 0, 0, 2048, 512, NULL,},
  1272. /* Target autonomous HIF_memcpy */
  1273. { /* CE6 */ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL,},
  1274. #ifdef WLAN_FEATURE_WMI_DIAG_OVER_CE7
  1275. /* target->host WMI_DIAG */
  1276. { /* CE7 */ CE_ATTR_FLAGS, 0, 0, 2048, 32, NULL,},
  1277. #else
  1278. /* ce_diag, the Diagnostic Window */
  1279. { /* CE7 */ (CE_ATTR_DIAG_FLAGS | CE_ATTR_DISABLE_INTR), 0,
  1280. 0, DIAG_TRANSFER_LIMIT, 0, NULL,},
  1281. #endif
  1282. /* Reserved for target */
  1283. { /* CE8 */ CE_ATTR_FLAGS, 0, 0, 0, 0, NULL,},
  1284. /* CE 9, 10, 11 belong to CoreBsp & MHI driver */
  1285. };
  1286. static struct CE_pipe_config target_ce_config_wlan_qca6750[] = {
  1287. /* host->target HTC control and raw streams */
  1288. { /* CE0 */ 0, PIPEDIR_OUT, 32, 2048, CE_ATTR_FLAGS, 0,},
  1289. /* target->host HTT */
  1290. { /* CE1 */ 1, PIPEDIR_IN, 32, 2048, CE_ATTR_FLAGS, 0,},
  1291. /* target->host WMI + HTC control */
  1292. { /* CE2 */ 2, PIPEDIR_IN, 32, 2048, CE_ATTR_FLAGS, 0,},
  1293. /* host->target WMI */
  1294. { /* CE3 */ 3, PIPEDIR_OUT, 32, 2048, CE_ATTR_FLAGS, 0,},
  1295. /* host->target HTT */
  1296. { /* CE4 */ 4, PIPEDIR_OUT, 256, 256,
  1297. (CE_ATTR_FLAGS | CE_ATTR_DISABLE_INTR), 0,},
  1298. /* Target -> host PKTLOG */
  1299. { /* CE5 */ 5, PIPEDIR_IN, 32, 2048, CE_ATTR_FLAGS, 0,},
  1300. /* Reserved for target autonomous HIF_memcpy */
  1301. { /* CE6 */ 6, PIPEDIR_INOUT, 32, 16384, CE_ATTR_FLAGS, 0,},
  1302. #ifdef WLAN_FEATURE_WMI_DIAG_OVER_CE7
  1303. /* target->host WMI_DIAG */
  1304. { /* CE7 */ 7, PIPEDIR_IN, 32, 2048, CE_ATTR_FLAGS, 0,},
  1305. #else
  1306. /* CE7 used only by Host */
  1307. { /* CE7 */ 7, PIPEDIR_INOUT_H2H, 0, 0,
  1308. (CE_ATTR_FLAGS | CE_ATTR_DISABLE_INTR), 0,},
  1309. #endif
  1310. /* Reserved for target */
  1311. { /* CE8 */ 8, PIPEDIR_INOUT, 32, 16384, CE_ATTR_FLAGS, 0,},
  1312. /* CE 9, 10, 11 belong to CoreBsp & MHI driver */
  1313. };
  1314. #endif /* __HIF_PCI_INTERNAL_H__ */