Lines Matching refs:pcd
149 static void au1x_pcm_dbdma_free(struct au1xpsc_audio_dmadata *pcd)
151 if (pcd->ddma_chan) {
152 au1xxx_dbdma_stop(pcd->ddma_chan);
153 au1xxx_dbdma_reset(pcd->ddma_chan);
154 au1xxx_dbdma_chan_free(pcd->ddma_chan);
155 pcd->ddma_chan = 0;
156 pcd->msbits = 0;
165 static int au1x_pcm_dbdma_realloc(struct au1xpsc_audio_dmadata *pcd,
173 if ((pcd->ddma_chan) && (msbits == pcd->msbits))
176 au1x_pcm_dbdma_free(pcd);
179 pcd->ddma_chan = au1xxx_dbdma_chan_alloc(pcd->ddma_id,
181 au1x_pcm_dmarx_cb, (void *)pcd);
183 pcd->ddma_chan = au1xxx_dbdma_chan_alloc(DSCR_CMD0_ALWAYS,
184 pcd->ddma_id,
185 au1x_pcm_dmatx_cb, (void *)pcd);
187 if (!pcd->ddma_chan)
190 au1xxx_dbdma_set_devwidth(pcd->ddma_chan, msbits);
191 au1xxx_dbdma_ring_alloc(pcd->ddma_chan, 2);
193 pcd->msbits = msbits;
195 au1xxx_dbdma_stop(pcd->ddma_chan);
196 au1xxx_dbdma_reset(pcd->ddma_chan);
206 struct au1xpsc_audio_dmadata *pcd;
214 pcd = au1xpsc_audio_pcmdma[stype];
225 ret = au1x_pcm_dbdma_realloc(pcd, stype, params->msbits);
231 pcd->substream = substream;
232 pcd->period_bytes = params_period_bytes(params);
233 pcd->periods = params_periods(params);
234 pcd->dma_area_s = pcd->dma_area = runtime->dma_addr;
235 pcd->q_period = 0;
236 pcd->curr_period = 0;
237 pcd->pos = 0;
252 struct au1xpsc_audio_dmadata *pcd =
255 au1xxx_dbdma_reset(pcd->ddma_chan);
258 au1x_pcm_queue_rx(pcd);
259 au1x_pcm_queue_rx(pcd);
261 au1x_pcm_queue_tx(pcd);
262 au1x_pcm_queue_tx(pcd);