• Home
  • Raw
  • Download

Lines Matching refs:chan

142 static void pasemi_free_tx_chan(int chan)  in pasemi_free_tx_chan()  argument
144 BUG_ON(test_bit(chan, txch_free)); in pasemi_free_tx_chan()
145 set_bit(chan, txch_free); in pasemi_free_tx_chan()
161 static void pasemi_free_rx_chan(int chan) in pasemi_free_rx_chan() argument
163 BUG_ON(test_bit(chan, rxch_free)); in pasemi_free_rx_chan()
164 set_bit(chan, rxch_free); in pasemi_free_rx_chan()
186 struct pasemi_dmachan *chan; in pasemi_dma_alloc_chan() local
195 chan = buf + offset; in pasemi_dma_alloc_chan()
197 chan->priv = buf; in pasemi_dma_alloc_chan()
202 chan->chno = chno; in pasemi_dma_alloc_chan()
203 chan->irq = irq_create_mapping(NULL, in pasemi_dma_alloc_chan()
205 chan->status = &dma_status->rx_sta[chno]; in pasemi_dma_alloc_chan()
209 chan->chno = chno; in pasemi_dma_alloc_chan()
210 chan->irq = irq_create_mapping(NULL, base_hw_irq + chno); in pasemi_dma_alloc_chan()
211 chan->status = &dma_status->tx_sta[chno]; in pasemi_dma_alloc_chan()
215 chan->chan_type = type; in pasemi_dma_alloc_chan()
217 return chan; in pasemi_dma_alloc_chan()
227 void pasemi_dma_free_chan(struct pasemi_dmachan *chan) in pasemi_dma_free_chan() argument
229 if (chan->ring_virt) in pasemi_dma_free_chan()
230 pasemi_dma_free_ring(chan); in pasemi_dma_free_chan()
232 switch (chan->chan_type & (RXCHAN|TXCHAN)) { in pasemi_dma_free_chan()
234 pasemi_free_rx_chan(chan->chno); in pasemi_dma_free_chan()
237 pasemi_free_tx_chan(chan->chno); in pasemi_dma_free_chan()
241 kfree(chan->priv); in pasemi_dma_free_chan()
253 int pasemi_dma_alloc_ring(struct pasemi_dmachan *chan, int ring_size) in pasemi_dma_alloc_ring() argument
255 BUG_ON(chan->ring_virt); in pasemi_dma_alloc_ring()
257 chan->ring_size = ring_size; in pasemi_dma_alloc_ring()
259 chan->ring_virt = dma_alloc_coherent(&dma_pdev->dev, in pasemi_dma_alloc_ring()
261 &chan->ring_dma, GFP_KERNEL); in pasemi_dma_alloc_ring()
263 if (!chan->ring_virt) in pasemi_dma_alloc_ring()
266 memset(chan->ring_virt, 0, ring_size * sizeof(u64)); in pasemi_dma_alloc_ring()
277 void pasemi_dma_free_ring(struct pasemi_dmachan *chan) in pasemi_dma_free_ring() argument
279 BUG_ON(!chan->ring_virt); in pasemi_dma_free_ring()
281 dma_free_coherent(&dma_pdev->dev, chan->ring_size * sizeof(u64), in pasemi_dma_free_ring()
282 chan->ring_virt, chan->ring_dma); in pasemi_dma_free_ring()
283 chan->ring_virt = NULL; in pasemi_dma_free_ring()
284 chan->ring_size = 0; in pasemi_dma_free_ring()
285 chan->ring_dma = 0; in pasemi_dma_free_ring()
295 void pasemi_dma_start_chan(const struct pasemi_dmachan *chan, const u32 cmdsta) in pasemi_dma_start_chan() argument
297 if (chan->chan_type == RXCHAN) in pasemi_dma_start_chan()
298 pasemi_write_dma_reg(PAS_DMA_RXCHAN_CCMDSTA(chan->chno), in pasemi_dma_start_chan()
301 pasemi_write_dma_reg(PAS_DMA_TXCHAN_TCMDSTA(chan->chno), in pasemi_dma_start_chan()
319 int pasemi_dma_stop_chan(const struct pasemi_dmachan *chan) in pasemi_dma_stop_chan() argument
324 if (chan->chan_type == RXCHAN) { in pasemi_dma_stop_chan()
325 reg = PAS_DMA_RXCHAN_CCMDSTA(chan->chno); in pasemi_dma_stop_chan()
336 reg = PAS_DMA_TXCHAN_TCMDSTA(chan->chno); in pasemi_dma_stop_chan()
362 void *pasemi_dma_alloc_buf(struct pasemi_dmachan *chan, int size, in pasemi_dma_alloc_buf() argument
376 void pasemi_dma_free_buf(struct pasemi_dmachan *chan, int size, in pasemi_dma_free_buf() argument