| // SPDX-License-Identifier: (GPL-2.0-only OR BSD-3-Clause) |
| // |
| // This file is provided under a dual BSD/GPLv2 license. When using or |
| // redistributing this file, you may do so under either license. |
| // |
| // Copyright(c) 2021 Intel Corporation. All rights reserved. |
| // |
| // |
| |
| #include "sof-priv.h" |
| #include "ipc3-ops.h" |
| |
| static int sof_ipc3_ctx_ipc(struct snd_sof_dev *sdev, int cmd) |
| { |
| struct sof_ipc_pm_ctx pm_ctx = { |
| .hdr.size = sizeof(pm_ctx), |
| .hdr.cmd = SOF_IPC_GLB_PM_MSG | cmd, |
| }; |
| struct sof_ipc_reply reply; |
| |
| /* send ctx save ipc to dsp */ |
| return sof_ipc_tx_message(sdev->ipc, pm_ctx.hdr.cmd, &pm_ctx, |
| sizeof(pm_ctx), &reply, sizeof(reply)); |
| } |
| |
| static int sof_ipc3_ctx_save(struct snd_sof_dev *sdev) |
| { |
| return sof_ipc3_ctx_ipc(sdev, SOF_IPC_PM_CTX_SAVE); |
| } |
| |
| static int sof_ipc3_ctx_restore(struct snd_sof_dev *sdev) |
| { |
| return sof_ipc3_ctx_ipc(sdev, SOF_IPC_PM_CTX_RESTORE); |
| } |
| |
| static const struct sof_ipc_pm_ops ipc3_pm_ops = { |
| .ctx_save = sof_ipc3_ctx_save, |
| .ctx_restore = sof_ipc3_ctx_restore, |
| }; |
| |
| const struct sof_ipc_ops ipc3_ops = { |
| .tplg = &ipc3_tplg_ops, |
| .pm = &ipc3_pm_ops, |
| .pcm = &ipc3_pcm_ops, |
| }; |