mtk_mdp_ipi.h (2601B)
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 13enum 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 */ 31struct 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 */ 44struct 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 */ 59struct 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 */ 81struct 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 95struct 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 101struct 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 108struct 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__ */