cpsw.h 18 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378
  1. /**
  2. * \file cpsw.h
  3. *
  4. * \brief CPSW APIs and macros.
  5. *
  6. * This file contains the driver API prototypes and macro definitions.
  7. */
  8. /*
  9. * Copyright (C) 2010 Texas Instruments Incorporated - http://www.ti.com/
  10. */
  11. /*
  12. * Redistribution and use in source and binary forms, with or without
  13. * modification, are permitted provided that the following conditions
  14. * are met:
  15. *
  16. * Redistributions of source code must retain the above copyright
  17. * notice, this list of conditions and the following disclaimer.
  18. *
  19. * Redistributions in binary form must reproduce the above copyright
  20. * notice, this list of conditions and the following disclaimer in the
  21. * documentation and/or other materials provided with the
  22. * distribution.
  23. *
  24. * Neither the name of Texas Instruments Incorporated nor the names of
  25. * its contributors may be used to endorse or promote products derived
  26. * from this software without specific prior written permission.
  27. *
  28. * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
  29. * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
  30. * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
  31. * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
  32. * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
  33. * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
  34. * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
  35. * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
  36. * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
  37. * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
  38. * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  39. *
  40. */
  41. #ifndef __CPSW_H__
  42. #define __CPSW_H__
  43. #include "hw_cpsw_ale.h"
  44. #include "hw_cpsw_cpdma.h"
  45. #include "hw_cpsw_port.h"
  46. #include "hw_cpsw_sl.h"
  47. #include "hw_cpsw_ss.h"
  48. #include "hw_cpsw_wr.h"
  49. #ifdef __cplusplus
  50. extern "C" {
  51. #endif
  52. /*****************************************************************************/
  53. /*
  54. ** Macros which can be used as 'mode' to pass to the API CPSWSlTransferModeSet
  55. */
  56. #define CPSW_SLIVER_NON_GIG_FULL_DUPLEX CPSW_SL_MACCONTROL_FULLDUPLEX
  57. #define CPSW_SLIVER_NON_GIG_HALF_DUPLEX (0x00u)
  58. #define CPSW_SLIVER_GIG_FULL_DUPLEX CPSW_SL_MACCONTROL_GIG
  59. #define CPSW_SLIVER_INBAND CPSW_SL_MACCONTROL_EXT_EN
  60. /*
  61. ** Macros which can be used as 'statFlag' to the API CPSWSlMACStatusGet
  62. */
  63. #define CPSW_SLIVER_STATE CPSW_SL_MACSTATUS_IDLE
  64. #define CPSW_SLIVER_EXT_GIG_INPUT_BIT CPSW_SL_MACSTATUS_EXT_GIG
  65. #define CPSW_SLIVER_EXT_FULL_DUPLEX_BIT CPSW_SL_MACSTATUS_EXT_FULLDUPLEX
  66. #define CPSW_SLIVER_RX_FLOWCTRL CPSW_SL_MACSTATUS_RX_FLOW_ACT
  67. #define CPSW_SLIVER_TX_FLOWCTRL CPSW_SL_MACSTATUS_TX_FLOW_ACT
  68. /*
  69. ** Macros returned by API CPSWSlMACStatusGet
  70. */
  71. #define CPSW_SLIVER_STATE_IDLE CPSW_SL_MACSTATUS_IDLE
  72. #define CPSW_SLIVER_EXT_GIG_INPUT_HIGH CPSW_SL_MACSTATUS_EXT_GIG
  73. #define CPSW_SLIVER_EXT_FULL_DUPLEX_HIGH CPSW_SL_MACSTATUS_EXT_FULLDUPLEX
  74. #define CPSW_SLIVER_RX_FLOWCTRL_ACTIVE CPSW_SL_MACSTATUS_RX_FLOW_ACT
  75. #define CPSW_SLIVER_TX_FLOWCTRL_ACTIVE CPSW_SL_MACSTATUS_TX_FLOW_ACT
  76. /*
  77. ** Macros which can be passed asi 'intFlag' to the API CPSWWrCoreIntEnable
  78. ** , CPSWWrCoreIntDisable and CPSWWrCoreIntStatusGet
  79. */
  80. #define CPSW_CORE_INT_RX_THRESH (0x00u)
  81. #define CPSW_CORE_INT_RX_PULSE (0x04u)
  82. #define CPSW_CORE_INT_TX_PULSE (0x08u)
  83. #define CPSW_CORE_INT_MISC (0x0Cu)
  84. /*
  85. ** Macros which can be passed as 'statFlag' to the API CPSWWrRGMIIStatusGet
  86. */
  87. #define CPSW_RGMII2_DUPLEX CPSW_WR_RGMII_CTL_RGMII2_FULLDUPLEX
  88. #define CPSW_RGMII2_SPEED CPSW_WR_RGMII_CTL_RGMII2_SPEED
  89. #define CPSW_RGMII2_LINK_STAT CPSW_WR_RGMII_CTL_RGMII2_LINK
  90. #define CPSW_RGMII1_DUPLEX CPSW_WR_RGMII_CTL_RGMII1_FULLDUPLEX
  91. #define CPSW_RGMII1_SPEED CPSW_WR_RGMII_CTL_RGMII1_SPEED
  92. #define CPSW_RGMII1_LINK_STAT CPSW_WR_RGMII_CTL_RGMII1_LINK
  93. /* The values, one of which will be returned by CPSWWrRGMIIStatusGet */
  94. #define CPSW_RGMII2_DUPLEX_FULL CPSW_WR_RGMII_CTL_RGMII2_FULLDUPLEX
  95. #define CPSW_RGMII2_DUPLEX_HALF (0x00u)
  96. #define CPSW_RGMII2_SPEED_10M (0x00u << CPSW_WR_RGMII_CTL_RGMII2_SPEED_SHIFT)
  97. #define CPSW_RGMII2_SPEED_100M (0x01u << CPSW_WR_RGMII_CTL_RGMII2_SPEED_SHIFT)
  98. #define CPSW_RGMII2_SPEED_1000M (0x02u << CPSW_WR_RGMII_CTL_RGMII2_SPEED_SHIFT)
  99. #define CPSW_RGMII2_LINK_UP CPSW_WR_RGMII_CTL_RGMII2_LINK
  100. #define CPSW_RGMII2_LINK_DOWN (0x00u)
  101. #define CPSW_RGMII1_DUPLEX_FULL CPSW_WR_RGMII_CTL_RGMII1_FULLDUPLEX
  102. #define CPSW_RGMII1_DUPLEX_HALF (0x00u)
  103. #define CPSW_RGMII1_SPEED_10M (0x00u << CPSW_WR_RGMII_CTL_RGMII1_SPEED_SHIFT)
  104. #define CPSW_RGMII1_SPEED_100M (0x01u << CPSW_WR_RGMII_CTL_RGMII1_SPEED_SHIFT)
  105. #define CPSW_RGMII1_SPEED_1000M (0x02u << CPSW_WR_RGMII_CTL_RGMII1_SPEED_SHIFT)
  106. #define CPSW_RGMII1_LINK_UP CPSW_WR_RGMII_CTL_RGMII1_LINK
  107. #define CPSW_RGMII1_LINK_DOWN (0x00u)
  108. /*
  109. ** Macros which can be passed as 'pacFlag' to the API CPSWWrIntPacingEnable
  110. ** CPSWWrIntPacingDisable
  111. */
  112. #define CPSW_INT_PACING_C0_RX_PULSE (0x01 << CPSW_WR_INT_CONTROL_INT_PACE_EN_SHIFT)
  113. #define CPSW_INT_PACING_C0_TX_PULSE (0x02 << CPSW_WR_INT_CONTROL_INT_PACE_EN_SHIFT)
  114. #define CPSW_INT_PACING_C1_RX_PULSE (0x04 << CPSW_WR_INT_CONTROL_INT_PACE_EN_SHIFT)
  115. #define CPSW_INT_PACING_C1_TX_PULSE (0x08 << CPSW_WR_INT_CONTROL_INT_PACE_EN_SHIFT)
  116. #define CPSW_INT_PACING_C2_RX_PULSE (0x10 << CPSW_WR_INT_CONTROL_INT_PACE_EN_SHIFT)
  117. #define CPSW_INT_PACING_C2_TX_PULSE (0x20 << CPSW_WR_INT_CONTROL_INT_PACE_EN_SHIFT)
  118. /*
  119. ** Macros which can be passed as 'portState' to CPSWALEPortStateSet
  120. */
  121. #define CPSW_ALE_PORT_STATE_FWD (0x03u)
  122. #define CPSW_ALE_PORT_STATE_LEARN (0x02u)
  123. #define CPSW_ALE_PORT_STATE_BLOCKED (0x01u)
  124. #define CPSW_ALE_PORT_STATE_DISABLED (0x00u)
  125. /*
  126. ** Macros which can be passed as 'eoiFlag' to CPSWCPDMAEndOfIntVectorWrite
  127. */
  128. #define CPSW_EOI_TX_PULSE (0x02u)
  129. #define CPSW_EOI_RX_PULSE (0x01u)
  130. #define CPSW_EOI_RX_THRESH_PULSE (0x00u)
  131. #define CPSW_EOI_MISC_PULSE (0x03u)
  132. /*
  133. ** Macro which can be passed as 'statFlag' to CPSWCPDMAStatusGet
  134. ** The same value can be used to compare against the idle status
  135. */
  136. #define CPDMA_STAT_IDLE (CPSW_CPDMA_DMASTATUS_IDLE)
  137. /*
  138. ** Macro which can be passed as 'statFlag' to CPSWCPDMAStatusGet
  139. */
  140. #define CPDMA_STAT_TX_HOST_ERR_CODE (CPSW_CPDMA_DMASTATUS_TX_HOST_ERR_CODE)
  141. /* The return values for the above 'statFlag' */
  142. #define CPDMA_STAT_TX_NO_ERR (0x00u << CPSW_CPDMA_DMASTATUS_TX_HOST_ERR_CODE_SHIFT)
  143. #define CPDMA_STAT_TX_SOP_ERR (0x01u << CPSW_CPDMA_DMASTATUS_TX_HOST_ERR_CODE_SHIFT)
  144. #define CPDMA_STAT_TX_OWN_ERR (0x02u << CPSW_CPDMA_DMASTATUS_TX_HOST_ERR_CODE_SHIFT)
  145. #define CPDMA_STAT_TX_ZERO_DESC (0x03u << CPSW_CPDMA_DMASTATUS_TX_HOST_ERR_CODE_SHIFT)
  146. #define CPDMA_STAT_TX_ZERO_BUF_PTR (0x04u << CPSW_CPDMA_DMASTATUS_TX_HOST_ERR_CODE_SHIFT)
  147. #define CPDMA_STAT_TX_ZERO_BUF_LEN (0x05u << CPSW_CPDMA_DMASTATUS_TX_HOST_ERR_CODE_SHIFT)
  148. #define CPDMA_STAT_TX_PKT_LEN_ERR (0x06u << CPSW_CPDMA_DMASTATUS_TX_HOST_ERR_CODE_SHIFT)
  149. /*
  150. ** Macro which can be passed as 'statFlag' to CPSWCPDMAStatusGet
  151. */
  152. #define CPDMA_STAT_RX_HOST_ERR_CODE (CPSW_CPDMA_DMASTATUS_RX_HOST_ERR_CODE)
  153. /* The return values for the above 'statFlag' */
  154. #define CPDMA_STAT_RX_NO_ERR (0x00u << CPSW_CPDMA_DMASTATUS_RX_HOST_ERR_CODE_SHIFT)
  155. #define CPDMA_STAT_RX_OWN_NOT_SET (0x02u << CPSW_CPDMA_DMASTATUS_RX_HOST_ERR_CODE_SHIFT)
  156. #define CPDMA_STAT_RX_ZERO_BUF_PTR (0x04u << CPSW_CPDMA_DMASTATUS_RX_HOST_ERR_CODE_SHIFT)
  157. #define CPDMA_STAT_RX_ZERO_BUF_LEN (0x05u << CPSW_CPDMA_DMASTATUS_RX_HOST_ERR_CODE_SHIFT)
  158. #define CPDMA_STAT_RX_SOP_BUF_LEN_ERR (0x06u << CPSW_CPDMA_DMASTATUS_RX_HOST_ERR_CODE_SHIFT)
  159. /*
  160. ** Macros which can be passed as 'statFlag' to CPSWCPDMAStatusGet
  161. */
  162. #define CPDMA_STAT_TX_HOST_ERR_CHAN (CPSW_CPDMA_DMASTATUS_TX_ERR_CH | 0x10u)
  163. #define CPDMA_STAT_RX_HOST_ERR_CHAN (CPSW_CPDMA_DMASTATUS_RX_ERR_CH | 0x08u)
  164. /*
  165. ** Macro which can be passed as 'cfg' to the API CPSWCPDMAConfig
  166. ** The values for individual fields are also listed below.
  167. */
  168. #define CPDMA_CFG(tx_rlim, rx_cef, cmd_idle, rx_offlen_blk, rx_own, tx_ptype) \
  169. (tx_rlim | rx_cef | cmd_idle | rx_offlen_blk | rx_own | tx_ptype)
  170. /* Values for 'tx_rlim' */
  171. #define CPDMA_CFG_TX_RATE_LIM_CH_7 (0x80u << CPSW_CPDMA_DMACONTROL_TX_RLIM_SHIFT)
  172. #define CPDMA_CFG_TX_RATE_LIM_CH_7_TO_6 (0xC0u << CPSW_CPDMA_DMACONTROL_TX_RLIM_SHIFT)
  173. #define CPDMA_CFG_TX_RATE_LIM_CH_7_TO_5 (0xE0u << CPSW_CPDMA_DMACONTROL_TX_RLIM_SHIFT)
  174. #define CPDMA_CFG_TX_RATE_LIM_CH_7_TO_4 (0xF0u << CPSW_CPDMA_DMACONTROL_TX_RLIM_SHIFT)
  175. #define CPDMA_CFG_TX_RATE_LIM_CH_7_TO_3 (0xF8u << CPSW_CPDMA_DMACONTROL_TX_RLIM_SHIFT)
  176. #define CPDMA_CFG_TX_RATE_LIM_CH_7_TO_2 (0xFCu << CPSW_CPDMA_DMACONTROL_TX_RLIM_SHIFT)
  177. #define CPDMA_CFG_TX_RATE_LIM_CH_7_TO_1 (0xFEu << CPSW_CPDMA_DMACONTROL_TX_RLIM_SHIFT)
  178. #define CPDMA_CFG_TX_RATE_LIM_CH_7_TO_0 (0xFFu << CPSW_CPDMA_DMACONTROL_TX_RLIM_SHIFT)
  179. /* Values for 'rx_cef' */
  180. #define CPDMA_CFG_COPY_ERR_FRAMES (CPSW_CPDMA_DMACONTROL_RX_CEF)
  181. #define CPDMA_CFG_NO_COPY_ERR_FRAMES (0x00u)
  182. /* Values for 'cmd_idle' */
  183. #define CPDMA_CFG_IDLE_COMMAND (CPSW_CPDMA_DMACONTROL_CMD_IDLE)
  184. #define CPDMA_CFG_IDLE_COMMAND_NONE (0x00u)
  185. /* Values for 'rx_offlen_blk' */
  186. #define CPDMA_CFG_BLOCK_RX_OFF_LEN_WRITE (CPSW_CPDMA_DMACONTROL_RX_OFFLEN_BLOCK)
  187. #define CPDMA_CFG_NOT_BLOCK_RX_OFF_LEN_WRITE (0x00u)
  188. /* Values for 'rx_own' */
  189. #define CPDMA_CFG_RX_OWN_1 (CPSW_CPDMA_DMACONTROL_RX_OWNERSHIP)
  190. #define CPDMA_CFG_RX_OWN_0 (0x00u)
  191. /* Values for 'tx_ptype' */
  192. #define CPDMA_CFG_TX_PRI_ROUND_ROBIN (CPSW_CPDMA_DMACONTROL_TX_PTYPE)
  193. #define CPDMA_CFG_TX_PRI_FIXED (0x00u)
  194. /*
  195. ** Macros which can be passed as 'intType' to CPSWCPDMARxIntStatRawGet
  196. ** and CPSWCPDMARxIntStatMaskedGet
  197. */
  198. #define CPDMA_RX_INT_THRESH_PEND (0x08u)
  199. #define CPDMA_RX_INT_PULSE_PEND (0x00u)
  200. #define CPSW_MAX_NUM_ALE_ENTRY (1024)
  201. #define CPSW_SIZE_CPPI_RAM (8192)
  202. /*
  203. ** Structure to save CPSW context
  204. */
  205. typedef struct cpswContext {
  206. unsigned int aleBase;
  207. unsigned int ssBase;
  208. unsigned int port1Base;
  209. unsigned int port2Base;
  210. unsigned int cpdmaBase;
  211. unsigned int cppiRamBase;
  212. unsigned int wrBase;
  213. unsigned int sl1Base;
  214. unsigned int sl2Base;
  215. unsigned int aleCtrl;
  216. unsigned int alePortCtl[3];
  217. unsigned int aleEntry[CPSW_MAX_NUM_ALE_ENTRY * 3];
  218. unsigned int ssStatPortEn;
  219. unsigned int port1SaHi;
  220. unsigned int port1SaLo;
  221. unsigned int port2SaHi;
  222. unsigned int port2SaLo;
  223. unsigned int port1TxInCtl;
  224. unsigned int port1Vlan;
  225. unsigned int port2TxInCtl;
  226. unsigned int port2Vlan;
  227. unsigned int cpdmaRxFB;
  228. unsigned int cpdmaTxCtl;
  229. unsigned int cpdmaRxCtl;
  230. unsigned int cpdmaRxHdp;
  231. unsigned int txIntMaskSet;
  232. unsigned int rxIntMaskSet;
  233. unsigned int wrCoreIntTxPulse;
  234. unsigned int wrCoreIntRxPulse;
  235. unsigned int sl1MacCtl;
  236. unsigned int sl2MacCtl;
  237. unsigned int cppiRam[CPSW_SIZE_CPPI_RAM];
  238. } CPSWCONTEXT;
  239. /*****************************************************************************/
  240. /*
  241. ** Prototypes for the APIs
  242. */
  243. extern void CPSWSSReset(unsigned int baseAddr);
  244. extern void CPSWSlControlExtEnable(unsigned int baseAddr);
  245. extern void CPSWSlGigModeForceEnable(unsigned int baseAddr);
  246. extern void CPSWSlGigModeForceDisable(unsigned int baseAddr);
  247. extern void CPSWSlTransferModeSet(unsigned int baseAddr, unsigned int mode);
  248. extern unsigned int CPSWSlMACStatusGet(unsigned int baseAddr, unsigned int statFlag);
  249. extern void CPSWSlReset(unsigned int baseAddr);
  250. extern void CPSWSlRxMaxLenSet(unsigned int baseAddr, unsigned int rxMaxLen);
  251. extern void CPSWSlGMIIEnable(unsigned int baseAddr);
  252. extern void CPSWSlRGMIIEnable(unsigned int baseAddr);
  253. extern void CPSWWrReset(unsigned int baseAddr);
  254. extern void CPSWWrControlRegReset(unsigned int baseAddr);
  255. extern void CPSWWrCoreIntEnable(unsigned int baseAddr, unsigned int core,
  256. unsigned int channel, unsigned int intFlag);
  257. extern void CPSWWrCoreIntDisable(unsigned int baseAddr, unsigned int core,
  258. unsigned int channel, unsigned int intFlag);
  259. extern unsigned int CPSWWrCoreIntStatusGet(unsigned int baseAddr, unsigned int core,
  260. unsigned int channel, unsigned int intFlag);
  261. extern unsigned int CPSWWrRGMIIStatusGet(unsigned int baseAddr, unsigned int statFlag);
  262. extern void CPSWALEInit(unsigned int baseAddr);
  263. extern void CPSWALEPortStateSet(unsigned int baseAddr, unsigned int portNum,
  264. unsigned int portState);
  265. extern void CPSWALETableEntrySet(unsigned int baseAddr, unsigned int aleTblIdx,
  266. unsigned int *aleEntryPtr);
  267. extern void CPSWALETableEntryGet(unsigned int baseAddr, unsigned int aleTblIdx,
  268. unsigned int *aleEntryPtr);
  269. extern unsigned int CPSWALEPrescaleGet(unsigned int baseAddr);
  270. extern void CPSWALEPrescaleSet(unsigned int baseAddr, unsigned int psVal);
  271. extern void CPSWALEBypassEnable(unsigned int baseAddr);
  272. extern void CPSWALEBypassDisable(unsigned int baseAddr);
  273. extern void CPSWRxFlowControlEnable(unsigned int baseAddr, unsigned int portNum);
  274. extern void CPSWRxFlowControlDisable(unsigned int baseAddr, unsigned int portNum);
  275. extern void CPSWSoftwareIdleEnable(unsigned int baseAddr);
  276. extern void CPSWSoftwareIdleDisable(unsigned int baseAddr, unsigned int portNum);
  277. extern void CPSWStatisticsEnable(unsigned int baseAddr);
  278. extern void CPSWVLANAwareEnable(unsigned int baseAddr);
  279. extern void CPSWVLANAwareDisable(unsigned int baseAddr);
  280. extern void CPSWPortSrcAddrSet(unsigned int baseAddr, unsigned char *ethAddr);
  281. extern unsigned int CPSWStatisticsGet(unsigned int baseAddr, unsigned int statReg);
  282. extern void CPSWCPDMAReset(unsigned int baseAddr);
  283. extern void CPSWCPDMACmdIdleEnable(unsigned int baseAddr);
  284. extern void CPSWCPDMACmdIdleDisable(unsigned int baseAddr);
  285. extern void CPSWCPDMATxIntEnable(unsigned int baseAddr, unsigned int channel);
  286. extern void CPSWCPDMARxIntEnable(unsigned int baseAddr, unsigned int channel);
  287. extern void CPSWCPDMATxIntDisable(unsigned int baseAddr, unsigned int channel);
  288. extern void CPSWCPDMARxIntDisable(unsigned int baseAddr, unsigned int channel);
  289. extern void CPSWCPDMATxEnable(unsigned int baseAddr);
  290. extern void CPSWCPDMARxEnable(unsigned int baseAddr);
  291. extern void CPSWCPDMATxHdrDescPtrWrite(unsigned int baseAddr, unsigned int descHdr,
  292. unsigned int channel);
  293. extern void CPSWCPDMARxHdrDescPtrWrite(unsigned int baseAddr, unsigned int descHdr,
  294. unsigned int channel);
  295. extern void CPSWCPDMAEndOfIntVectorWrite(unsigned int baseAddr, unsigned int eoiFlag);
  296. extern void CPSWCPDMATxCPWrite(unsigned int baseAddr, unsigned int channel,
  297. unsigned int comPtr);
  298. extern void CPSWCPDMARxCPWrite(unsigned int baseAddr, unsigned int channel,
  299. unsigned int comPtr);
  300. extern void CPSWCPDMANumFreeBufSet(unsigned int baseAddr, unsigned int channel,
  301. unsigned int nBuf);
  302. extern unsigned int CPSWCPDMAStatusGet(unsigned int baseAddr, unsigned int statFlag);
  303. extern void CPSWCPDMAConfig(unsigned int baseAddr, unsigned int cfg);
  304. extern void CPSWCPDMARxBufOffsetSet(unsigned int baseAddr, unsigned int bufOff);
  305. extern unsigned int CPSWCPDMATxIntStatRawGet(unsigned int baseAddr,
  306. unsigned int chanMask);
  307. extern unsigned int CPSWCPDMATxIntStatMaskedGet(unsigned int baseAddr,
  308. unsigned int chanMask);
  309. extern unsigned int CPSWCPDMARxIntStatRawGet(unsigned int baseAddr,
  310. unsigned int chanMask,
  311. unsigned int intType);
  312. extern unsigned int CPSWCPDMARxIntStatMaskedGet(unsigned int baseAddr,
  313. unsigned int channel,
  314. unsigned int intFlag);
  315. extern void CPSWContextSave(CPSWCONTEXT *contextPtr);
  316. extern void CPSWContextRestore(CPSWCONTEXT *contextPtr);
  317. extern void CPSWHostPortDualMacModeSet(unsigned int baseAddr);
  318. extern void CPSWALEVLANAwareSet(unsigned int baseAddr);
  319. extern void CPSWALEVLANAwareClear(unsigned int baseAddr);
  320. extern void CPSWPortVLANConfig(unsigned int baseAddr, unsigned int vlanId,
  321. unsigned int cfiBit, unsigned int vlanPri);
  322. extern void CPSWALERateLimitTXMode(unsigned int baseAddr);
  323. extern void CPSWALERateLimitRXMode(unsigned int baseAddr);
  324. extern void CPSWALERateLimitEnable(unsigned int baseAddr);
  325. extern void CPSWALERateLimitDisable(unsigned int baseAddr);
  326. extern void CPSWALEAUTHModeSet(unsigned int baseAddr);
  327. extern void CPSWALEAUTHModeClear(unsigned int baseAddr);
  328. extern void CPSWALEUnknownUntaggedEgressSet(unsigned int baseAddr,
  329. unsigned int ueVal);
  330. extern void CPSWALEUnknownRegFloodMaskSet(unsigned int baseAddr,
  331. unsigned int rfmVal);
  332. extern void CPSWALEUnknownUnRegFloodMaskSet(unsigned int baseAddr,
  333. unsigned int ufmVal);
  334. extern void CPSWALEUnknownMemberListSet(unsigned int baseAddr,
  335. unsigned int mlVal);
  336. extern void CPSWALEBroadcastRateLimitSet(unsigned int baseAddr,
  337. unsigned int portNum,
  338. unsigned int bplVal);
  339. extern void CPSWALEMulticastRateLimitSet(unsigned int baseAddr,
  340. unsigned int portNum,
  341. unsigned int mplVal);
  342. extern void CPSWALEVIDIngressCheckSet(unsigned int baseAddr,
  343. unsigned int portNum);
  344. extern void CPSWALEAgeOut(unsigned int baseAddr);
  345. #ifdef __cplusplus
  346. }
  347. #endif
  348. #endif /* __CPSW_H__ */