1 /* SPDX-License-Identifier: GPL-2.0-only */ 2 /* 3 * Copyright (c) 2015-2016 MediaTek Inc. 4 * Author: Houlong Wei <houlong.wei@mediatek.com> 5 * Ming Hsiu Tsai <minghsiu.tsai@mediatek.com> 6 */ 7 8 #ifndef __MTK_MDP_IPI_H__ 9 #define __MTK_MDP_IPI_H__ 10 11 #define MTK_MDP_MAX_NUM_PLANE 3 12 13 enum mdp_ipi_msgid { 14 AP_MDP_INIT = 0xd000, 15 AP_MDP_DEINIT = 0xd001, 16 AP_MDP_PROCESS = 0xd002, 17 18 VPU_MDP_INIT_ACK = 0xe000, 19 VPU_MDP_DEINIT_ACK = 0xe001, 20 VPU_MDP_PROCESS_ACK = 0xe002 21 }; 22 23 #pragma pack(push, 4) 24 25 /** 26 * struct mdp_ipi_init - for AP_MDP_INIT 27 * @msg_id : AP_MDP_INIT 28 * @ipi_id : IPI_MDP 29 * @ap_inst : AP mtk_mdp_vpu address 30 */ 31 struct mdp_ipi_init { 32 uint32_t msg_id; 33 uint32_t ipi_id; 34 uint64_t ap_inst; 35 }; 36 37 /** 38 * struct mdp_ipi_comm - for AP_MDP_PROCESS, AP_MDP_DEINIT 39 * @msg_id : AP_MDP_PROCESS, AP_MDP_DEINIT 40 * @ipi_id : IPI_MDP 41 * @ap_inst : AP mtk_mdp_vpu address 42 * @vpu_inst_addr : VPU MDP instance address 43 */ 44 struct mdp_ipi_comm { 45 uint32_t msg_id; 46 uint32_t ipi_id; 47 uint64_t ap_inst; 48 uint32_t vpu_inst_addr; 49 }; 50 51 /** 52 * struct mdp_ipi_comm_ack - for VPU_MDP_DEINIT_ACK, VPU_MDP_PROCESS_ACK 53 * @msg_id : VPU_MDP_DEINIT_ACK, VPU_MDP_PROCESS_ACK 54 * @ipi_id : IPI_MDP 55 * @ap_inst : AP mtk_mdp_vpu address 56 * @vpu_inst_addr : VPU MDP instance address 57 * @status : VPU exeuction result 58 */ 59 struct mdp_ipi_comm_ack { 60 uint32_t msg_id; 61 uint32_t ipi_id; 62 uint64_t ap_inst; 63 uint32_t vpu_inst_addr; 64 int32_t status; 65 }; 66 67 /** 68 * struct mdp_config - configured for source/destination image 69 * @x : left 70 * @y : top 71 * @w : width 72 * @h : height 73 * @w_stride : bytes in horizontal 74 * @h_stride : bytes in vertical 75 * @crop_x : cropped left 76 * @crop_y : cropped top 77 * @crop_w : cropped width 78 * @crop_h : cropped height 79 * @format : color format 80 */ 81 struct mdp_config { 82 int32_t x; 83 int32_t y; 84 int32_t w; 85 int32_t h; 86 int32_t w_stride; 87 int32_t h_stride; 88 int32_t crop_x; 89 int32_t crop_y; 90 int32_t crop_w; 91 int32_t crop_h; 92 int32_t format; 93 }; 94 95 struct mdp_buffer { 96 uint64_t addr_mva[MTK_MDP_MAX_NUM_PLANE]; 97 int32_t plane_size[MTK_MDP_MAX_NUM_PLANE]; 98 int32_t plane_num; 99 }; 100 101 struct mdp_config_misc { 102 int32_t orientation; /* 0, 90, 180, 270 */ 103 int32_t hflip; /* 1 will enable the flip */ 104 int32_t vflip; /* 1 will enable the flip */ 105 int32_t alpha; /* global alpha */ 106 }; 107 108 struct mdp_process_vsi { 109 struct mdp_config src_config; 110 struct mdp_buffer src_buffer; 111 struct mdp_config dst_config; 112 struct mdp_buffer dst_buffer; 113 struct mdp_config_misc misc; 114 }; 115 116 #pragma pack(pop) 117 118 #endif /* __MTK_MDP_IPI_H__ */ 119