Linux kernel mirror (for testing)
git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel
os
linux
1/* SPDX-License-Identifier: GPL-2.0 */
2/*
3 * Copyright (c) 2016 MediaTek Inc.
4 * Author: PC Chen <pc.chen@mediatek.com>
5 */
6
7#ifndef _VDEC_IPI_MSG_H_
8#define _VDEC_IPI_MSG_H_
9
10/*
11 * enum vdec_ipi_msgid - message id between AP and VPU
12 * @AP_IPIMSG_XXX : AP to VPU cmd message id
13 * @VPU_IPIMSG_XXX_ACK : VPU ack AP cmd message id
14 */
15enum vdec_ipi_msgid {
16 AP_IPIMSG_DEC_INIT = 0xA000,
17 AP_IPIMSG_DEC_START = 0xA001,
18 AP_IPIMSG_DEC_END = 0xA002,
19 AP_IPIMSG_DEC_DEINIT = 0xA003,
20 AP_IPIMSG_DEC_RESET = 0xA004,
21 AP_IPIMSG_DEC_CORE = 0xA005,
22 AP_IPIMSG_DEC_CORE_END = 0xA006,
23 AP_IPIMSG_DEC_GET_PARAM = 0xA007,
24
25 VPU_IPIMSG_DEC_INIT_ACK = 0xB000,
26 VPU_IPIMSG_DEC_START_ACK = 0xB001,
27 VPU_IPIMSG_DEC_END_ACK = 0xB002,
28 VPU_IPIMSG_DEC_DEINIT_ACK = 0xB003,
29 VPU_IPIMSG_DEC_RESET_ACK = 0xB004,
30 VPU_IPIMSG_DEC_CORE_ACK = 0xB005,
31 VPU_IPIMSG_DEC_CORE_END_ACK = 0xB006,
32 VPU_IPIMSG_DEC_GET_PARAM_ACK = 0xB007,
33};
34
35/**
36 * struct vdec_ap_ipi_cmd - generic AP to VPU ipi command format
37 * @msg_id : vdec_ipi_msgid
38 * @vpu_inst_addr : VPU decoder instance address. Used if ABI version < 2.
39 * @inst_id : instance ID. Used if the ABI version >= 2.
40 * @codec_type : codec fourcc
41 * @reserved : reserved param
42 */
43struct vdec_ap_ipi_cmd {
44 uint32_t msg_id;
45 union {
46 uint32_t vpu_inst_addr;
47 uint32_t inst_id;
48 };
49 u32 codec_type;
50 u32 reserved;
51};
52
53/**
54 * struct vdec_vpu_ipi_ack - generic VPU to AP ipi command format
55 * @msg_id : vdec_ipi_msgid
56 * @status : VPU exeuction result
57 * @ap_inst_addr : AP video decoder instance address
58 */
59struct vdec_vpu_ipi_ack {
60 uint32_t msg_id;
61 int32_t status;
62 uint64_t ap_inst_addr;
63};
64
65/**
66 * struct vdec_ap_ipi_init - for AP_IPIMSG_DEC_INIT
67 * @msg_id : AP_IPIMSG_DEC_INIT
68 * @codec_type : codec fourcc
69 * @ap_inst_addr : AP video decoder instance address
70 */
71struct vdec_ap_ipi_init {
72 uint32_t msg_id;
73 u32 codec_type;
74 uint64_t ap_inst_addr;
75};
76
77/**
78 * struct vdec_ap_ipi_dec_start - for AP_IPIMSG_DEC_START
79 * @msg_id : AP_IPIMSG_DEC_START
80 * @vpu_inst_addr : VPU decoder instance address. Used if ABI version < 2.
81 * @inst_id : instance ID. Used if the ABI version >= 2.
82 * @data : Header info
83 * H264 decoder [0]:buf_sz [1]:nal_start
84 * VP8 decoder [0]:width/height
85 * VP9 decoder [0]:profile, [1][2] width/height
86 * @codec_type : codec fourcc
87 */
88struct vdec_ap_ipi_dec_start {
89 uint32_t msg_id;
90 union {
91 uint32_t vpu_inst_addr;
92 uint32_t inst_id;
93 };
94 uint32_t data[3];
95 u32 codec_type;
96};
97
98/**
99 * struct vdec_vpu_ipi_init_ack - for VPU_IPIMSG_DEC_INIT_ACK
100 * @msg_id : VPU_IPIMSG_DEC_INIT_ACK
101 * @status : VPU exeuction result
102 * @ap_inst_addr : AP vcodec_vpu_inst instance address
103 * @vpu_inst_addr : VPU decoder instance address
104 * @vdec_abi_version: ABI version of the firmware. Kernel can use it to
105 * ensure that it is compatible with the firmware.
106 * This field is not valid for MT8173 and must not be
107 * accessed for this chip.
108 * @inst_id : instance ID. Valid only if the ABI version >= 2.
109 */
110struct vdec_vpu_ipi_init_ack {
111 uint32_t msg_id;
112 int32_t status;
113 uint64_t ap_inst_addr;
114 uint32_t vpu_inst_addr;
115 uint32_t vdec_abi_version;
116 uint32_t inst_id;
117};
118
119/**
120 * struct vdec_ap_ipi_get_param - for AP_IPIMSG_DEC_GET_PARAM
121 * @msg_id : AP_IPIMSG_DEC_GET_PARAM
122 * @inst_id : instance ID. Used if the ABI version >= 2.
123 * @data : picture information
124 * @param_type : get param type
125 * @codec_type : Codec fourcc
126 */
127struct vdec_ap_ipi_get_param {
128 u32 msg_id;
129 u32 inst_id;
130 u32 data[4];
131 u32 param_type;
132 u32 codec_type;
133};
134
135/**
136 * struct vdec_vpu_ipi_get_param_ack - for VPU_IPIMSG_DEC_GET_PARAM_ACK
137 * @msg_id : VPU_IPIMSG_DEC_GET_PARAM_ACK
138 * @status : VPU execution result
139 * @ap_inst_addr : AP vcodec_vpu_inst instance address
140 * @data : picture information from SCP.
141 * @param_type : get param type
142 * @reserved : reserved param
143 */
144struct vdec_vpu_ipi_get_param_ack {
145 u32 msg_id;
146 s32 status;
147 u64 ap_inst_addr;
148 u32 data[4];
149 u32 param_type;
150 u32 reserved;
151};
152
153#endif