MCPcopy Create free account
hub / github.com/RT-Thread/rt-thread / tx_descs_init

Function tx_descs_init

bsp/cvitek/drivers/libraries/eth/dw_eth_mac.c:76–128  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

74}
75
76static void tx_descs_init(eth_mac_handle_t handle)
77{
78 gmac_dev_t *mac_dev = (gmac_dev_t *)handle;
79 struct dw_gmac_priv *priv = mac_dev->priv;
80 struct dw_gmac_dma_regs *dma_reg = priv->dma_regs_p;
81 struct dmamacdescr *desc_table_p = &priv->tx_mac_descrtable[0];
82 char *txbuffs = &priv->txbuffs[0];
83 struct dmamacdescr *desc_p;
84 uint32_t idx;
85
86 for (idx = 0; idx < CVI_CONFIG_TX_DESCR_NUM; idx ++) {
87 desc_p = &desc_table_p[idx];
88#ifdef RT_USING_SMART
89 desc_p->dmamac_addr = (unsigned long)rt_kmem_v2p((void *)&txbuffs[idx * CVI_CONFIG_ETH_BUFSIZE]);
90 desc_p->dmamac_next = (unsigned long)rt_kmem_v2p((void *)&desc_table_p[idx + 1]);
91#else
92 desc_p->dmamac_addr = (unsigned long)&txbuffs[idx * CVI_CONFIG_ETH_BUFSIZE];
93 desc_p->dmamac_next = (unsigned long)&desc_table_p[idx + 1];
94#endif
95
96#if defined(CONFIG_DW_ALTDESCRIPTOR)
97 desc_p->txrx_status &= ~(CVI_DESC_TXSTS_TXINT | CVI_DESC_TXSTS_TXLAST |
98 CVI_DESC_TXSTS_TXFIRST | CVI_DESC_TXSTS_TXCRCDIS |
99 CVI_DESC_TXSTS_TXCHECKINSCTRL |
100 CVI_DESC_TXSTS_TXRINGEND | CVI_DESC_TXSTS_TXPADDIS);
101
102 desc_p->txrx_status |= CVI_DESC_TXSTS_TXCHAIN;
103 desc_p->dmamac_cntl = 0;
104 desc_p->txrx_status &= ~(CVI_DESC_TXSTS_MSK | CVI_DESC_TXSTS_OWNBYDMA);
105#else
106 desc_p->dmamac_cntl = CVI_DESC_TXCTRL_TXCHAIN;
107 desc_p->txrx_status = 0;
108#endif
109 }
110
111 /* Correcting the last pointer of the chain */
112 #ifdef RT_USING_SMART
113 desc_p->dmamac_next = (unsigned long)rt_kmem_v2p((void *)&desc_table_p[0]);
114 #else
115 desc_p->dmamac_next = (unsigned long)&desc_table_p[0];
116 #endif
117
118 /* Flush all Tx buffer descriptors at once */
119 rt_hw_cpu_dcache_clean((void *)priv->tx_mac_descrtable, sizeof(priv->tx_mac_descrtable));
120
121#ifdef RT_USING_SMART
122 dma_reg->txdesclistaddr = (rt_ubase_t)rt_kmem_v2p((void *)&desc_table_p[0]);
123#else
124 dma_reg->txdesclistaddr = (reg_type)&desc_table_p[0];
125#endif
126
127 priv->tx_currdescnum = 0;
128}
129
130static void rx_descs_init(eth_mac_handle_t handle)
131{

Callers 1

designware_eth_initFunction · 0.85

Calls 2

rt_kmem_v2pFunction · 0.85
rt_hw_cpu_dcache_cleanFunction · 0.50

Tested by

no test coverage detected