Lines Matching refs:dma
35 static int gmac_disable_dma(struct eth_dma *dma, int dir);
36 static int gmac_enable_dma(struct eth_dma *dma, int dir);
95 static void dma_tx_dump(struct eth_dma *dma) in dma_tx_dump() argument
112 descp = (dma64dd_t *)(dma->tx_desc_aligned) + i; in dma_tx_dump()
121 bufp = (uint8_t *)(dma->tx_buf + i * TX_BUF_SIZE_ALIGNED); in dma_tx_dump()
127 static void dma_rx_dump(struct eth_dma *dma) in dma_rx_dump() argument
144 descp = (dma64dd_t *)(dma->rx_desc_aligned) + i; in dma_rx_dump()
152 bufp = dma->rx_buf + i * RX_BUF_SIZE_ALIGNED; in dma_rx_dump()
159 static int dma_tx_init(struct eth_dma *dma) in dma_tx_init() argument
169 memset((void *)(dma->tx_desc_aligned), 0, in dma_tx_init()
171 memset(dma->tx_buf, 0, TX_BUF_NUM * TX_BUF_SIZE_ALIGNED); in dma_tx_init()
175 descp = (dma64dd_t *)(dma->tx_desc_aligned) + i; in dma_tx_init()
176 bufp = dma->tx_buf + i * TX_BUF_SIZE_ALIGNED; in dma_tx_init()
191 descp = dma->tx_desc_aligned; in dma_tx_init()
192 bufp = dma->tx_buf; in dma_tx_init()
201 writel((uint32_t)(dma->tx_desc_aligned), GMAC0_DMA_TX_ADDR_LOW_ADDR); in dma_tx_init()
205 writel(((uint32_t)(dma->tx_desc_aligned)) & D64_XP_LD_MASK, in dma_tx_init()
211 static int dma_rx_init(struct eth_dma *dma) in dma_rx_init() argument
222 memset((void *)(dma->rx_desc_aligned), 0, in dma_rx_init()
225 memset(dma->rx_buf, 0, RX_BUF_NUM * RX_BUF_SIZE_ALIGNED); in dma_rx_init()
229 descp = (dma64dd_t *)(dma->rx_desc_aligned) + i; in dma_rx_init()
230 bufp = dma->rx_buf + i * RX_BUF_SIZE_ALIGNED; in dma_rx_init()
244 descp = dma->rx_desc_aligned; in dma_rx_init()
245 bufp = dma->rx_buf; in dma_rx_init()
264 static int dma_init(struct eth_dma *dma) in dma_init() argument
281 dma_tx_init(dma); in dma_init()
282 dma_rx_init(dma); in dma_init()
292 static int dma_deinit(struct eth_dma *dma) in dma_deinit() argument
296 gmac_disable_dma(dma, MAC_DMA_RX); in dma_deinit()
297 gmac_disable_dma(dma, MAC_DMA_TX); in dma_deinit()
299 free(dma->tx_buf); in dma_deinit()
300 dma->tx_buf = NULL; in dma_deinit()
301 free(dma->tx_desc_aligned); in dma_deinit()
302 dma->tx_desc_aligned = NULL; in dma_deinit()
304 free(dma->rx_buf); in dma_deinit()
305 dma->rx_buf = NULL; in dma_deinit()
306 free(dma->rx_desc_aligned); in dma_deinit()
307 dma->rx_desc_aligned = NULL; in dma_deinit()
312 int gmac_tx_packet(struct eth_dma *dma, void *packet, int length) in gmac_tx_packet() argument
314 uint8_t *bufp = dma->tx_buf + dma->cur_tx_index * TX_BUF_SIZE_ALIGNED; in gmac_tx_packet()
318 int txout = dma->cur_tx_index; in gmac_tx_packet()
322 uint32_t last_desc = (((uint32_t)dma->tx_desc_aligned) + in gmac_tx_packet()
344 last_desc = ((uint32_t)(dma->tx_desc_aligned)) & D64_XP_LD_MASK; in gmac_tx_packet()
348 descp = ((dma64dd_t *)(dma->tx_desc_aligned)) + txout; in gmac_tx_packet()
355 flush_dcache_range((unsigned long)dma->tx_desc_aligned, in gmac_tx_packet()
356 (unsigned long)dma->tx_desc_aligned + in gmac_tx_packet()
367 dma->cur_tx_index = (txout + 1) & (TX_BUF_NUM - 1); in gmac_tx_packet()
372 bool gmac_check_tx_done(struct eth_dma *dma) in gmac_check_tx_done() argument
395 int gmac_check_rx_done(struct eth_dma *dma, uint8_t *buf) in gmac_check_rx_done() argument
416 index = dma->cur_rx_index; in gmac_check_rx_done()
417 offset = (uint32_t)(dma->rx_desc_aligned); in gmac_check_rx_done()
434 bufp = dma->rx_buf + index * RX_BUF_SIZE_ALIGNED; in gmac_check_rx_done()
436 descp = (dma64dd_t *)(dma->rx_desc_aligned) + index; in gmac_check_rx_done()
438 flush_dcache_range((unsigned long)dma->rx_desc_aligned, in gmac_check_rx_done()
439 (unsigned long)dma->rx_desc_aligned + in gmac_check_rx_done()
452 dma->cur_rx_index = (index + 1) & (RX_BUF_NUM - 1); in gmac_check_rx_done()
470 flush_dcache_range((unsigned long)dma->rx_desc_aligned, in gmac_check_rx_done()
471 (unsigned long)dma->rx_desc_aligned + in gmac_check_rx_done()
480 static int gmac_disable_dma(struct eth_dma *dma, int dir) in gmac_disable_dma() argument
525 static int gmac_enable_dma(struct eth_dma *dma, int dir) in gmac_enable_dma() argument
532 dma->cur_tx_index = 0; in gmac_enable_dma()
549 writel((uint32_t)(dma->tx_desc_aligned), in gmac_enable_dma()
553 dma->cur_rx_index = 0; in gmac_enable_dma()
582 writel(((uint32_t)(dma->rx_desc_aligned) + in gmac_enable_dma()
774 struct eth_dma *dma = &(eth->dma); in gmac_mac_init() local
822 if (dma_init(dma) < 0) { in gmac_mac_init()
892 dma_deinit(dma); in gmac_mac_init()
899 struct eth_dma *dma = &(eth->dma); in gmac_add() local
912 dma->tx_desc_aligned = (void *)tmp; in gmac_add()
914 dma->tx_desc_aligned, DESCP_SIZE_ALIGNED * TX_BUF_NUM); in gmac_add()
919 free(dma->tx_desc_aligned); in gmac_add()
922 dma->tx_buf = (uint8_t *)tmp; in gmac_add()
924 dma->tx_buf, TX_BUF_SIZE_ALIGNED * TX_BUF_NUM); in gmac_add()
930 free(dma->tx_desc_aligned); in gmac_add()
931 free(dma->tx_buf); in gmac_add()
934 dma->rx_desc_aligned = (void *)tmp; in gmac_add()
936 dma->rx_desc_aligned, DESCP_SIZE_ALIGNED * RX_BUF_NUM); in gmac_add()
941 free(dma->tx_desc_aligned); in gmac_add()
942 free(dma->tx_buf); in gmac_add()
943 free(dma->rx_desc_aligned); in gmac_add()
946 dma->rx_buf = (uint8_t *)tmp; in gmac_add()
948 dma->rx_buf, RX_BUF_SIZE_ALIGNED * RX_BUF_NUM); in gmac_add()
954 dma->tx_packet = gmac_tx_packet; in gmac_add()
955 dma->check_tx_done = gmac_check_tx_done; in gmac_add()
957 dma->check_rx_done = gmac_check_rx_done; in gmac_add()
959 dma->enable_dma = gmac_enable_dma; in gmac_add()
960 dma->disable_dma = gmac_disable_dma; in gmac_add()