1#ifndef _UAPI_MDSS_ROTATOR_H_ 2#define _UAPI_MDSS_ROTATOR_H_ 3 4#include <linux/msm_mdp_ext.h> 5 6#define MDSS_ROTATOR_IOCTL_MAGIC 'w' 7 8/* open a rotation session */ 9#define MDSS_ROTATION_OPEN \ 10 _IOWR(MDSS_ROTATOR_IOCTL_MAGIC, 1, struct mdp_rotation_config *) 11 12/* change the rotation session configuration */ 13#define MDSS_ROTATION_CONFIG \ 14 _IOWR(MDSS_ROTATOR_IOCTL_MAGIC, 2, struct mdp_rotation_config *) 15 16/* queue the rotation request */ 17#define MDSS_ROTATION_REQUEST \ 18 _IOWR(MDSS_ROTATOR_IOCTL_MAGIC, 3, struct mdp_rotation_request *) 19 20/* close a rotation session with the specified rotation session ID */ 21#define MDSS_ROTATION_CLOSE _IOW(MDSS_ROTATOR_IOCTL_MAGIC, 4, unsigned int) 22 23/********************************************************************** 24Rotation request flag 25**********************************************************************/ 26/* no rotation flag, i.e. color space conversion */ 27#define MDP_ROTATION_NOP 0x01 28 29/* left/right flip */ 30#define MDP_ROTATION_FLIP_LR 0x02 31 32/* up/down flip */ 33#define MDP_ROTATION_FLIP_UD 0x04 34 35/* rotate 90 degree */ 36#define MDP_ROTATION_90 0x08 37 38/* rotate 180 degre */ 39#define MDP_ROTATION_180 (MDP_ROTATION_FLIP_LR | MDP_ROTATION_FLIP_UD) 40 41/* rotate 270 degree */ 42#define MDP_ROTATION_270 (MDP_ROTATION_90 | MDP_ROTATION_180) 43 44/* format is interlaced */ 45#define MDP_ROTATION_DEINTERLACE 0x10 46 47/* enable bwc */ 48#define MDP_ROTATION_BWC_EN 0x40 49 50/* secure data */ 51#define MDP_ROTATION_SECURE 0x80 52 53/********************************************************************** 54Rotation commit flag 55**********************************************************************/ 56/* Flag indicates to validate the rotation request */ 57#define MDSS_ROTATION_REQUEST_VALIDATE 0x01 58 59#define MDP_ROTATION_REQUEST_VERSION_1_0 0x00010000 60 61/* 62 * Client can let driver to allocate the hardware resources with 63 * this particular hw resource id. 64 */ 65#define MDSS_ROTATION_HW_ANY 0xFFFFFFFF 66 67/********************************************************************** 68configuration structures 69**********************************************************************/ 70struct mdp_rotation_buf_info { 71 uint32_t width; 72 uint32_t height; 73 uint32_t format; 74 struct mult_factor comp_ratio; 75}; 76 77struct mdp_rotation_config { 78 uint32_t version; 79 uint32_t session_id; 80 struct mdp_rotation_buf_info input; 81 struct mdp_rotation_buf_info output; 82 uint32_t frame_rate; 83 uint32_t flags; 84 uint32_t reserved[6]; 85}; 86 87struct mdp_rotation_item { 88 /* rotation request flag */ 89 uint32_t flags; 90 91 /* Source crop rectangle */ 92 struct mdp_rect src_rect; 93 94 /* Destination rectangle */ 95 struct mdp_rect dst_rect; 96 97 /* Input buffer for the request */ 98 struct mdp_layer_buffer input; 99 100 /* The output buffer for the request */ 101 struct mdp_layer_buffer output; 102 103 /* 104 * DMA pipe selection for this request by client: 105 * 0: DMA pipe 0 106 * 1: DMA pipe 1 107 * or MDSS_ROTATION_HW_ANY if client wants 108 * driver to allocate any that is available 109 */ 110 uint32_t pipe_idx; 111 112 /* 113 * Write-back block selection for this request by client: 114 * 0: Write-back block 0 115 * 1: Write-back block 1 116 * or MDSS_ROTATION_HW_ANY if client wants 117 * driver to allocate any that is available 118 */ 119 uint32_t wb_idx; 120 121 /* Which session ID is this request scheduled on */ 122 uint32_t session_id; 123 124 /* 32bits reserved value for future usage */ 125 uint32_t reserved[6]; 126}; 127 128struct mdp_rotation_request { 129 /* 32bit version indicates the request structure */ 130 uint32_t version; 131 132 uint32_t flags; 133 134 /* Number of rotation request items in the list */ 135 uint32_t count; 136 137 /* Pointer to a list of rotation request items */ 138 struct mdp_rotation_item __user *list; 139 140 /* 32bits reserved value for future usage*/ 141 uint32_t reserved[6]; 142}; 143 144#endif /*_UAPI_MDSS_ROTATOR_H_*/ 145