dma: ti: k3-udma: Switch to k3_ringacc_request_rings_pair
We only request ring pairs via K3 DMA driver, switch to use the new k3_ringacc_request_rings_pair() to simplify the code. As a good side effect, all boot stages now use exposed RING mode which avoid maintaining proxy mode for 32 bit R5 core. Signed-off-by: Vignesh Raghavendra <vigneshr@ti.com>
This commit is contained in:
		
							parent
							
								
									7be5121719
								
							
						
					
					
						commit
						ddcf5318af
					
				|  | @ -32,12 +32,6 @@ | |||
| #include "k3-udma-hwdef.h" | ||||
| #include "k3-psil-priv.h" | ||||
| 
 | ||||
| #if BITS_PER_LONG == 64 | ||||
| #define RINGACC_RING_USE_PROXY	(0) | ||||
| #else | ||||
| #define RINGACC_RING_USE_PROXY	(1) | ||||
| #endif | ||||
| 
 | ||||
| #define K3_UDMA_MAX_RFLOWS 1024 | ||||
| 
 | ||||
| struct udma_chan; | ||||
|  | @ -796,21 +790,14 @@ static int udma_alloc_tx_resources(struct udma_chan *uc) | |||
| 	if (ret) | ||||
| 		return ret; | ||||
| 
 | ||||
| 	uc->tchan->t_ring = k3_nav_ringacc_request_ring( | ||||
| 				ud->ringacc, uc->tchan->id, | ||||
| 				RINGACC_RING_USE_PROXY); | ||||
| 	if (!uc->tchan->t_ring) { | ||||
| 	ret = k3_nav_ringacc_request_rings_pair(ud->ringacc, uc->tchan->id, -1, | ||||
| 						&uc->tchan->t_ring, | ||||
| 						&uc->tchan->tc_ring); | ||||
| 	if (ret) { | ||||
| 		ret = -EBUSY; | ||||
| 		goto err_tx_ring; | ||||
| 	} | ||||
| 
 | ||||
| 	uc->tchan->tc_ring = k3_nav_ringacc_request_ring( | ||||
| 				ud->ringacc, -1, RINGACC_RING_USE_PROXY); | ||||
| 	if (!uc->tchan->tc_ring) { | ||||
| 		ret = -EBUSY; | ||||
| 		goto err_txc_ring; | ||||
| 	} | ||||
| 
 | ||||
| 	memset(&ring_cfg, 0, sizeof(ring_cfg)); | ||||
| 	ring_cfg.size = 16; | ||||
| 	ring_cfg.elm_size = K3_NAV_RINGACC_RING_ELSIZE_8; | ||||
|  | @ -827,7 +814,6 @@ static int udma_alloc_tx_resources(struct udma_chan *uc) | |||
| err_ringcfg: | ||||
| 	k3_nav_ringacc_ring_free(uc->tchan->tc_ring); | ||||
| 	uc->tchan->tc_ring = NULL; | ||||
| err_txc_ring: | ||||
| 	k3_nav_ringacc_ring_free(uc->tchan->t_ring); | ||||
| 	uc->tchan->t_ring = NULL; | ||||
| err_tx_ring: | ||||
|  | @ -857,6 +843,7 @@ static int udma_alloc_rx_resources(struct udma_chan *uc) | |||
| { | ||||
| 	struct k3_nav_ring_cfg ring_cfg; | ||||
| 	struct udma_dev *ud = uc->ud; | ||||
| 	struct udma_rflow *rflow; | ||||
| 	int fd_ring_id; | ||||
| 	int ret; | ||||
| 
 | ||||
|  | @ -876,40 +863,31 @@ static int udma_alloc_rx_resources(struct udma_chan *uc) | |||
| 
 | ||||
| 	fd_ring_id = ud->tchan_cnt + ud->echan_cnt + uc->rchan->id; | ||||
| 
 | ||||
| 	uc->rflow->fd_ring = k3_nav_ringacc_request_ring( | ||||
| 				ud->ringacc, fd_ring_id, | ||||
| 				RINGACC_RING_USE_PROXY); | ||||
| 	if (!uc->rflow->fd_ring) { | ||||
| 	rflow = uc->rflow; | ||||
| 	ret = k3_nav_ringacc_request_rings_pair(ud->ringacc, fd_ring_id, -1, | ||||
| 						&rflow->fd_ring, &rflow->r_ring); | ||||
| 	if (ret) { | ||||
| 		ret = -EBUSY; | ||||
| 		goto err_rx_ring; | ||||
| 	} | ||||
| 
 | ||||
| 	uc->rflow->r_ring = k3_nav_ringacc_request_ring( | ||||
| 				ud->ringacc, -1, RINGACC_RING_USE_PROXY); | ||||
| 	if (!uc->rflow->r_ring) { | ||||
| 		ret = -EBUSY; | ||||
| 		goto err_rxc_ring; | ||||
| 	} | ||||
| 
 | ||||
| 	memset(&ring_cfg, 0, sizeof(ring_cfg)); | ||||
| 	ring_cfg.size = 16; | ||||
| 	ring_cfg.elm_size = K3_NAV_RINGACC_RING_ELSIZE_8; | ||||
| 	ring_cfg.mode = K3_NAV_RINGACC_RING_MODE_RING; | ||||
| 
 | ||||
| 	ret = k3_nav_ringacc_ring_cfg(uc->rflow->fd_ring, &ring_cfg); | ||||
| 	ret |= k3_nav_ringacc_ring_cfg(uc->rflow->r_ring, &ring_cfg); | ||||
| 
 | ||||
| 	ret = k3_nav_ringacc_ring_cfg(rflow->fd_ring, &ring_cfg); | ||||
| 	ret |= k3_nav_ringacc_ring_cfg(rflow->r_ring, &ring_cfg); | ||||
| 	if (ret) | ||||
| 		goto err_ringcfg; | ||||
| 
 | ||||
| 	return 0; | ||||
| 
 | ||||
| err_ringcfg: | ||||
| 	k3_nav_ringacc_ring_free(uc->rflow->r_ring); | ||||
| 	uc->rflow->r_ring = NULL; | ||||
| err_rxc_ring: | ||||
| 	k3_nav_ringacc_ring_free(uc->rflow->fd_ring); | ||||
| 	uc->rflow->fd_ring = NULL; | ||||
| 	k3_nav_ringacc_ring_free(rflow->r_ring); | ||||
| 	rflow->r_ring = NULL; | ||||
| 	k3_nav_ringacc_ring_free(rflow->fd_ring); | ||||
| 	rflow->fd_ring = NULL; | ||||
| err_rx_ring: | ||||
| 	udma_put_rflow(uc); | ||||
| err_rflow: | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue