Lines Matching refs:pair
46 struct fsl_asrc_pair *pair = runtime->private_data;
48 pair->pos += snd_pcm_lib_period_bytes(substream);
49 if (pair->pos >= snd_pcm_lib_buffer_bytes(substream))
50 pair->pos = 0;
60 struct fsl_asrc_pair *pair = runtime->private_data;
68 pair->pos = 0;
69 pair->desc[!dir] = dmaengine_prep_dma_cyclic(
70 pair->dma_chan[!dir], runtime->dma_addr,
74 if (!pair->desc[!dir]) {
79 pair->desc[!dir]->callback = fsl_asrc_dma_complete;
80 pair->desc[!dir]->callback_param = substream;
82 dmaengine_submit(pair->desc[!dir]);
85 pair->desc[dir] = dmaengine_prep_dma_cyclic(
86 pair->dma_chan[dir], 0xffff, 64, 64, DMA_DEV_TO_DEV, 0);
87 if (!pair->desc[dir]) {
92 dmaengine_submit(pair->desc[dir]);
101 struct fsl_asrc_pair *pair = runtime->private_data;
111 dma_async_issue_pending(pair->dma_chan[IN]);
112 dma_async_issue_pending(pair->dma_chan[OUT]);
117 dmaengine_terminate_async(pair->dma_chan[OUT]);
118 dmaengine_terminate_async(pair->dma_chan[IN]);
138 struct fsl_asrc_pair *pair = runtime->private_data;
141 struct fsl_asrc *asrc = pair->asrc;
144 enum asrc_pair_index index = pair->index;
180 pair->dma_chan[!dir] = asrc->get_dma_channel(pair, !dir);
181 if (!pair->dma_chan[!dir]) {
192 ret = dmaengine_slave_config(pair->dma_chan[!dir], &config_fe);
229 pair->dma_data.dma_request = tmp_data->dma_request;
235 tmp_chan = asrc->get_dma_channel(pair, dir);
237 pair->dma_data.dma_request2 = tmp_data->dma_request;
238 pair->dma_data.peripheral_type = tmp_data->peripheral_type;
239 pair->dma_data.priority = tmp_data->priority;
242 of_dma_node = pair->dma_chan[!dir]->device->dev->of_node;
243 pair->dma_chan[dir] =
244 __dma_request_channel(&mask, filter, &pair->dma_data,
246 pair->req_dma_chan = true;
248 pair->dma_chan[dir] = tmp_chan;
250 pair->req_dma_chan = !be_chan;
253 if (!pair->dma_chan[dir]) {
297 ret = dmaengine_slave_config(pair->dma_chan[dir], &config_be);
300 if (pair->req_dma_chan)
301 dma_release_channel(pair->dma_chan[dir]);
313 struct fsl_asrc_pair *pair = runtime->private_data;
316 if (pair->dma_chan[!dir])
317 dma_release_channel(pair->dma_chan[!dir]);
320 if (pair->dma_chan[dir] && pair->req_dma_chan)
321 dma_release_channel(pair->dma_chan[dir]);
323 pair->dma_chan[!dir] = NULL;
324 pair->dma_chan[dir] = NULL;
338 struct fsl_asrc_pair *pair;
351 pair = kzalloc(sizeof(*pair) + asrc->pair_priv_size, GFP_KERNEL);
352 if (!pair)
355 pair->asrc = asrc;
356 pair->private = (void *)pair + sizeof(struct fsl_asrc_pair);
358 runtime->private_data = pair;
360 /* Request a dummy pair, which will be released later.
361 * Request pair function needs channel num as input, for this
362 * dummy pair, we just request "1" channel temporarily.
364 ret = asrc->request_pair(1, pair);
366 dev_err(dev, "failed to request asrc pair\n");
371 tmp_chan = asrc->get_dma_channel(pair, dir);
397 asrc->release_pair(pair);
401 kfree(pair);
410 struct fsl_asrc_pair *pair = runtime->private_data;
413 if (!pair)
416 asrc = pair->asrc;
418 if (asrc->pair[pair->index] == pair)
419 asrc->pair[pair->index] = NULL;
421 kfree(pair);
431 struct fsl_asrc_pair *pair = runtime->private_data;
433 return bytes_to_frames(substream->runtime, pair->pos);