xref: /OK3568_Linux_fs/kernel/include/sound/sof/pm.h (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1*4882a593Smuzhiyun /* SPDX-License-Identifier: (GPL-2.0-only OR BSD-3-Clause) */
2*4882a593Smuzhiyun /*
3*4882a593Smuzhiyun  * This file is provided under a dual BSD/GPLv2 license.  When using or
4*4882a593Smuzhiyun  * redistributing this file, you may do so under either license.
5*4882a593Smuzhiyun  *
6*4882a593Smuzhiyun  * Copyright(c) 2018 Intel Corporation. All rights reserved.
7*4882a593Smuzhiyun  */
8*4882a593Smuzhiyun 
9*4882a593Smuzhiyun #ifndef __INCLUDE_SOUND_SOF_PM_H__
10*4882a593Smuzhiyun #define __INCLUDE_SOUND_SOF_PM_H__
11*4882a593Smuzhiyun 
12*4882a593Smuzhiyun #include <sound/sof/header.h>
13*4882a593Smuzhiyun 
14*4882a593Smuzhiyun /*
15*4882a593Smuzhiyun  * PM
16*4882a593Smuzhiyun  */
17*4882a593Smuzhiyun 
18*4882a593Smuzhiyun /* PM context element */
19*4882a593Smuzhiyun struct sof_ipc_pm_ctx_elem {
20*4882a593Smuzhiyun 	struct sof_ipc_hdr hdr;
21*4882a593Smuzhiyun 	uint32_t type;
22*4882a593Smuzhiyun 	uint32_t size;
23*4882a593Smuzhiyun 	uint64_t addr;
24*4882a593Smuzhiyun }  __packed;
25*4882a593Smuzhiyun 
26*4882a593Smuzhiyun /*
27*4882a593Smuzhiyun  * PM context - SOF_IPC_PM_CTX_SAVE, SOF_IPC_PM_CTX_RESTORE,
28*4882a593Smuzhiyun  * SOF_IPC_PM_CTX_SIZE
29*4882a593Smuzhiyun  */
30*4882a593Smuzhiyun struct sof_ipc_pm_ctx {
31*4882a593Smuzhiyun 	struct sof_ipc_cmd_hdr hdr;
32*4882a593Smuzhiyun 	struct sof_ipc_host_buffer buffer;
33*4882a593Smuzhiyun 	uint32_t num_elems;
34*4882a593Smuzhiyun 	uint32_t size;
35*4882a593Smuzhiyun 
36*4882a593Smuzhiyun 	/* reserved for future use */
37*4882a593Smuzhiyun 	uint32_t reserved[8];
38*4882a593Smuzhiyun 
39*4882a593Smuzhiyun 	struct sof_ipc_pm_ctx_elem elems[];
40*4882a593Smuzhiyun } __packed;
41*4882a593Smuzhiyun 
42*4882a593Smuzhiyun /* enable or disable cores - SOF_IPC_PM_CORE_ENABLE */
43*4882a593Smuzhiyun struct sof_ipc_pm_core_config {
44*4882a593Smuzhiyun 	struct sof_ipc_cmd_hdr hdr;
45*4882a593Smuzhiyun 	uint32_t enable_mask;
46*4882a593Smuzhiyun } __packed;
47*4882a593Smuzhiyun 
48*4882a593Smuzhiyun struct sof_ipc_pm_gate {
49*4882a593Smuzhiyun 	struct sof_ipc_cmd_hdr hdr;
50*4882a593Smuzhiyun 	uint32_t flags;	/* platform specific */
51*4882a593Smuzhiyun 
52*4882a593Smuzhiyun 	/* reserved for future use */
53*4882a593Smuzhiyun 	uint32_t reserved[5];
54*4882a593Smuzhiyun } __packed;
55*4882a593Smuzhiyun 
56*4882a593Smuzhiyun #endif
57