Lines Matching refs:dma

110 	struct at91_twi_dma dma;  member
177 struct at91_twi_dma *dma = &dev->dma; in at91_twi_dma_cleanup() local
181 if (dma->xfer_in_progress) { in at91_twi_dma_cleanup()
182 if (dma->direction == DMA_FROM_DEVICE) in at91_twi_dma_cleanup()
183 dmaengine_terminate_all(dma->chan_rx); in at91_twi_dma_cleanup()
185 dmaengine_terminate_all(dma->chan_tx); in at91_twi_dma_cleanup()
186 dma->xfer_in_progress = false; in at91_twi_dma_cleanup()
188 if (dma->buf_mapped) { in at91_twi_dma_cleanup()
189 dma_unmap_single(dev->dev, sg_dma_address(&dma->sg), in at91_twi_dma_cleanup()
190 dev->buf_len, dma->direction); in at91_twi_dma_cleanup()
191 dma->buf_mapped = false; in at91_twi_dma_cleanup()
217 dma_unmap_single(dev->dev, sg_dma_address(&dev->dma.sg), in at91_twi_write_data_dma_callback()
235 struct at91_twi_dma *dma = &dev->dma; in at91_twi_write_data_dma() local
236 struct dma_chan *chan_tx = dma->chan_tx; in at91_twi_write_data_dma()
241 dma->direction = DMA_TO_DEVICE; in at91_twi_write_data_dma()
250 dma->buf_mapped = true; in at91_twi_write_data_dma()
252 sg_dma_len(&dma->sg) = dev->buf_len; in at91_twi_write_data_dma()
253 sg_dma_address(&dma->sg) = dma_addr; in at91_twi_write_data_dma()
255 txdesc = dmaengine_prep_slave_sg(chan_tx, &dma->sg, 1, DMA_MEM_TO_DEV, in at91_twi_write_data_dma()
265 dma->xfer_in_progress = true; in at91_twi_write_data_dma()
316 dma_unmap_single(dev->dev, sg_dma_address(&dev->dma.sg), in at91_twi_read_data_dma_callback()
329 struct at91_twi_dma *dma = &dev->dma; in at91_twi_read_data_dma() local
330 struct dma_chan *chan_rx = dma->chan_rx; in at91_twi_read_data_dma()
332 dma->direction = DMA_FROM_DEVICE; in at91_twi_read_data_dma()
342 dma->buf_mapped = true; in at91_twi_read_data_dma()
344 dma->sg.dma_address = dma_addr; in at91_twi_read_data_dma()
345 sg_dma_len(&dma->sg) = dev->buf_len - 2; in at91_twi_read_data_dma()
347 rxdesc = dmaengine_prep_slave_sg(chan_rx, &dma->sg, 1, DMA_DEV_TO_MEM, in at91_twi_read_data_dma()
357 dma->xfer_in_progress = true; in at91_twi_read_data_dma()
359 dma_async_issue_pending(dma->chan_rx); in at91_twi_read_data_dma()
668 struct at91_twi_dma *dma = &dev->dma; in at91_twi_configure_dma() local
679 dma->chan_tx = dma_request_slave_channel_reason(dev->dev, "tx"); in at91_twi_configure_dma()
680 if (IS_ERR(dma->chan_tx)) { in at91_twi_configure_dma()
681 ret = PTR_ERR(dma->chan_tx); in at91_twi_configure_dma()
682 dma->chan_tx = NULL; in at91_twi_configure_dma()
686 dma->chan_rx = dma_request_slave_channel_reason(dev->dev, "rx"); in at91_twi_configure_dma()
687 if (IS_ERR(dma->chan_rx)) { in at91_twi_configure_dma()
688 ret = PTR_ERR(dma->chan_rx); in at91_twi_configure_dma()
689 dma->chan_rx = NULL; in at91_twi_configure_dma()
694 if (dmaengine_slave_config(dma->chan_tx, &slave_config)) { in at91_twi_configure_dma()
701 if (dmaengine_slave_config(dma->chan_rx, &slave_config)) { in at91_twi_configure_dma()
707 sg_init_table(&dma->sg, 1); in at91_twi_configure_dma()
708 dma->buf_mapped = false; in at91_twi_configure_dma()
709 dma->xfer_in_progress = false; in at91_twi_configure_dma()
713 dma_chan_name(dma->chan_tx), dma_chan_name(dma->chan_rx)); in at91_twi_configure_dma()
720 if (dma->chan_rx) in at91_twi_configure_dma()
721 dma_release_channel(dma->chan_rx); in at91_twi_configure_dma()
722 if (dma->chan_tx) in at91_twi_configure_dma()
723 dma_release_channel(dma->chan_tx); in at91_twi_configure_dma()