Lines Matching full:pcm
74 /* use the same workqueue-based solution as for PCM, cf. snd_sof_pcm_elapsed */
172 struct sof_ipc_pcm_params *pcm;
195 if (sizeof(*pcm) + ext_data_size > sdev->ipc->max_payload_size)
206 pcm = kzalloc(sizeof(*pcm) + ext_data_size, GFP_KERNEL);
207 if (!pcm)
220 pcm->params.buffer.pages = PFN_UP(crtd->dma_bytes);
221 pcm->hdr.size = sizeof(*pcm) + ext_data_size;
222 pcm->hdr.cmd = SOF_IPC_GLB_STREAM_MSG | SOF_IPC_STREAM_PCM_PARAMS;
224 pcm->comp_id = spcm->stream[cstream->direction].comp_id;
225 pcm->params.hdr.size = sizeof(pcm->params) + ext_data_size;
226 pcm->params.buffer.phy_addr = spcm->stream[cstream->direction].page_table.addr;
227 pcm->params.buffer.size = crtd->dma_bytes;
228 pcm->params.direction = cstream->direction;
229 pcm->params.channels = params->codec.ch_out;
230 pcm->params.rate = params->codec.sample_rate;
231 pcm->params.buffer_fmt = SOF_IPC_BUFFER_INTERLEAVED;
232 pcm->params.frame_fmt = SOF_IPC_FRAME_S32_LE;
233 pcm->params.sample_container_bytes =
235 pcm->params.host_period_bytes = params->buffer.fragment_size;
236 pcm->params.ext_data_length = ext_data_size;
238 memcpy((u8 *)pcm->params.ext_data, ¶ms->codec, ext_data_size);
240 ret = sof_ipc_tx_message(sdev->ipc, pcm, sizeof(*pcm) + ext_data_size,
251 le32_to_cpu(spcm->pcm.pcm_id));
257 sstream->sample_container_bytes = pcm->params.sample_container_bytes;
263 kfree(pcm);