Home | History | Annotate | Download | only in linux
      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 /**********************************************************************
     24 Rotation 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 /**********************************************************************
     54 Rotation 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 /**********************************************************************
     68 configuration structures
     69 **********************************************************************/
     70 struct mdp_rotation_buf_info {
     71 	uint32_t width;
     72 	uint32_t height;
     73 	uint32_t format;
     74 	struct mult_factor comp_ratio;
     75 };
     76 
     77 struct 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 
     87 struct 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 
    128 struct 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