Lines Matching refs:ipc
34 /* disables further sending of ipc's */
206 static int tx_wait_done(struct snd_sof_ipc *ipc, struct snd_sof_ipc_msg *msg,
209 struct snd_sof_dev *sdev = ipc->sdev;
218 dev_err(sdev->dev, "error: ipc timed out for 0x%x size %d\n",
220 snd_sof_handle_fw_exception(ipc->sdev);
225 dev_err(sdev->dev, "error: ipc error for 0x%x size %zu\n",
228 ipc_log_header(sdev->dev, "ipc tx succeeded", hdr->cmd);
240 static int sof_ipc_tx_message_unlocked(struct snd_sof_ipc *ipc, u32 header,
244 struct snd_sof_dev *sdev = ipc->sdev;
248 if (ipc->disable_ipc_tx)
258 msg = &ipc->msg;
280 "error: ipc tx failed with error %d\n",
285 ipc_log_header(sdev->dev, "ipc tx", msg->header);
289 ret = tx_wait_done(ipc, msg, reply_data);
295 int sof_ipc_tx_message(struct snd_sof_ipc *ipc, u32 header,
305 ret = snd_sof_dsp_set_power_state(ipc->sdev, &target_state);
307 dev_err(ipc->sdev->dev, "error: resuming DSP %d\n", ret);
311 return sof_ipc_tx_message_no_pm(ipc, header, msg_data, msg_bytes,
321 int sof_ipc_tx_message_no_pm(struct snd_sof_ipc *ipc, u32 header,
332 mutex_lock(&ipc->tx_mutex);
334 ret = sof_ipc_tx_message_unlocked(ipc, header, msg_data, msg_bytes,
337 mutex_unlock(&ipc->tx_mutex);
346 struct snd_sof_ipc_msg *msg = &sdev->ipc->msg;
370 ipc_log_header(sdev->dev, "ipc rx", hdr.cmd);
378 dev_err(sdev->dev, "error: ipc reply unknown\n");
410 ipc_log_header(sdev->dev, "ipc rx done", hdr.cmd);
533 err = sof_ipc_tx_message(sdev->ipc,
591 /* allocate max ipc size because we have at least one */
614 mutex_lock(&sdev->ipc->tx_mutex);
628 err = sof_ipc_tx_message_unlocked(sdev->ipc,
643 mutex_unlock(&sdev->ipc->tx_mutex);
721 /* send normal size ipc in one part */
723 err = sof_ipc_tx_message(sdev->ipc, cdata->rhdr.hdr.cmd, cdata,
728 dev_err(sdev->dev, "error: set/get ctrl ipc comp %d\n",
734 /* data is bigger than max ipc size, chop into smaller pieces */
735 dev_dbg(sdev->dev, "large ipc size %u, control size %u\n",
747 dev_err(sdev->dev, "error: set/get large ctrl ipc comp %d\n",
823 struct snd_sof_ipc *ipc;
826 ipc = devm_kzalloc(sdev->dev, sizeof(*ipc), GFP_KERNEL);
827 if (!ipc)
830 mutex_init(&ipc->tx_mutex);
831 ipc->sdev = sdev;
832 msg = &ipc->msg;
850 return ipc;
856 struct snd_sof_ipc *ipc = sdev->ipc;
858 if (!ipc)
861 /* disable sending of ipc's */
862 mutex_lock(&ipc->tx_mutex);
863 ipc->disable_ipc_tx = true;
864 mutex_unlock(&ipc->tx_mutex);