Linux Audio

Check our new training course

Loading...
  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__ */