• Home
  • Raw
  • Download

Lines Matching refs:dma

17 	struct stm32_i2c_dma *dma;  in stm32_i2c_dma_request()  local
21 dma = devm_kzalloc(dev, sizeof(*dma), GFP_KERNEL); in stm32_i2c_dma_request()
22 if (!dma) in stm32_i2c_dma_request()
26 dma->chan_tx = dma_request_chan(dev, "tx"); in stm32_i2c_dma_request()
27 if (IS_ERR(dma->chan_tx)) { in stm32_i2c_dma_request()
29 ret = PTR_ERR(dma->chan_tx); in stm32_i2c_dma_request()
38 ret = dmaengine_slave_config(dma->chan_tx, &dma_sconfig); in stm32_i2c_dma_request()
45 dma->chan_rx = dma_request_chan(dev, "rx"); in stm32_i2c_dma_request()
46 if (IS_ERR(dma->chan_rx)) { in stm32_i2c_dma_request()
48 ret = PTR_ERR(dma->chan_rx); in stm32_i2c_dma_request()
57 ret = dmaengine_slave_config(dma->chan_rx, &dma_sconfig); in stm32_i2c_dma_request()
63 init_completion(&dma->dma_complete); in stm32_i2c_dma_request()
66 dma_chan_name(dma->chan_tx), dma_chan_name(dma->chan_rx)); in stm32_i2c_dma_request()
68 return dma; in stm32_i2c_dma_request()
71 dma_release_channel(dma->chan_rx); in stm32_i2c_dma_request()
73 dma_release_channel(dma->chan_tx); in stm32_i2c_dma_request()
75 devm_kfree(dev, dma); in stm32_i2c_dma_request()
81 void stm32_i2c_dma_free(struct stm32_i2c_dma *dma) in stm32_i2c_dma_free() argument
83 dma->dma_buf = 0; in stm32_i2c_dma_free()
84 dma->dma_len = 0; in stm32_i2c_dma_free()
86 dma_release_channel(dma->chan_tx); in stm32_i2c_dma_free()
87 dma->chan_tx = NULL; in stm32_i2c_dma_free()
89 dma_release_channel(dma->chan_rx); in stm32_i2c_dma_free()
90 dma->chan_rx = NULL; in stm32_i2c_dma_free()
92 dma->chan_using = NULL; in stm32_i2c_dma_free()
95 int stm32_i2c_prep_dma_xfer(struct device *dev, struct stm32_i2c_dma *dma, in stm32_i2c_prep_dma_xfer() argument
105 dma->chan_using = dma->chan_rx; in stm32_i2c_prep_dma_xfer()
106 dma->dma_transfer_dir = DMA_DEV_TO_MEM; in stm32_i2c_prep_dma_xfer()
107 dma->dma_data_dir = DMA_FROM_DEVICE; in stm32_i2c_prep_dma_xfer()
109 dma->chan_using = dma->chan_tx; in stm32_i2c_prep_dma_xfer()
110 dma->dma_transfer_dir = DMA_MEM_TO_DEV; in stm32_i2c_prep_dma_xfer()
111 dma->dma_data_dir = DMA_TO_DEVICE; in stm32_i2c_prep_dma_xfer()
114 dma->dma_len = len; in stm32_i2c_prep_dma_xfer()
115 chan_dev = dma->chan_using->device->dev; in stm32_i2c_prep_dma_xfer()
117 dma->dma_buf = dma_map_single(chan_dev, buf, dma->dma_len, in stm32_i2c_prep_dma_xfer()
118 dma->dma_data_dir); in stm32_i2c_prep_dma_xfer()
119 if (dma_mapping_error(chan_dev, dma->dma_buf)) { in stm32_i2c_prep_dma_xfer()
124 txdesc = dmaengine_prep_slave_single(dma->chan_using, dma->dma_buf, in stm32_i2c_prep_dma_xfer()
125 dma->dma_len, in stm32_i2c_prep_dma_xfer()
126 dma->dma_transfer_dir, in stm32_i2c_prep_dma_xfer()
134 reinit_completion(&dma->dma_complete); in stm32_i2c_prep_dma_xfer()
144 dma_async_issue_pending(dma->chan_using); in stm32_i2c_prep_dma_xfer()
149 dma_unmap_single(chan_dev, dma->dma_buf, dma->dma_len, in stm32_i2c_prep_dma_xfer()
150 dma->dma_data_dir); in stm32_i2c_prep_dma_xfer()