android_kernel_oneplus_msm8998/include/uapi/linux/mdss_rotator.h
Terence Hampson cc7c1fe8ec uapi: msm: mdss: add flag to indicate if content is interlaced
When rotation session involves an interlaced layer that is intended to be
deinterlaced by MDP, client is expected to pass in flag indicating rotator
needs to deinterlace content.

Change-Id: I27c009e32cd82e00713c20b3accb2efbe5587344
Signed-off-by: Terence Hampson <thampson@codeaurora.org>
2016-03-23 20:45:57 -07:00

144 lines
3.6 KiB
C

#ifndef _UAPI_MDSS_ROTATOR_H_
#define _UAPI_MDSS_ROTATOR_H_
#include <linux/msm_mdp_ext.h>
#define MDSS_ROTATOR_IOCTL_MAGIC 'w'
/* open a rotation session */
#define MDSS_ROTATION_OPEN \
_IOWR(MDSS_ROTATOR_IOCTL_MAGIC, 1, struct mdp_rotation_config *)
/* change the rotation session configuration */
#define MDSS_ROTATION_CONFIG \
_IOWR(MDSS_ROTATOR_IOCTL_MAGIC, 2, struct mdp_rotation_config *)
/* queue the rotation request */
#define MDSS_ROTATION_REQUEST \
_IOWR(MDSS_ROTATOR_IOCTL_MAGIC, 3, struct mdp_rotation_request *)
/* close a rotation session with the specified rotation session ID */
#define MDSS_ROTATION_CLOSE _IOW(MDSS_ROTATOR_IOCTL_MAGIC, 4, unsigned int)
/**********************************************************************
Rotation request flag
**********************************************************************/
/* no rotation flag, i.e. color space conversion */
#define MDP_ROTATION_NOP 0x01
/* left/right flip */
#define MDP_ROTATION_FLIP_LR 0x02
/* up/down flip */
#define MDP_ROTATION_FLIP_UD 0x04
/* rotate 90 degree */
#define MDP_ROTATION_90 0x08
/* rotate 180 degre */
#define MDP_ROTATION_180 (MDP_ROTATION_FLIP_LR | MDP_ROTATION_FLIP_UD)
/* rotate 270 degree */
#define MDP_ROTATION_270 (MDP_ROTATION_90 | MDP_ROTATION_180)
/* format is interlaced */
#define MDP_ROTATION_DEINTERLACE 0x10
/* enable bwc */
#define MDP_ROTATION_BWC_EN 0x40
/* secure data */
#define MDP_ROTATION_SECURE 0x80
/**********************************************************************
Rotation commit flag
**********************************************************************/
/* Flag indicates to validate the rotation request */
#define MDSS_ROTATION_REQUEST_VALIDATE 0x01
#define MDP_ROTATION_REQUEST_VERSION_1_0 0x00010000
/*
* Client can let driver to allocate the hardware resources with
* this particular hw resource id.
*/
#define MDSS_ROTATION_HW_ANY 0xFFFFFFFF
/**********************************************************************
configuration structures
**********************************************************************/
struct mdp_rotation_buf_info {
uint32_t width;
uint32_t height;
uint32_t format;
struct mult_factor comp_ratio;
};
struct mdp_rotation_config {
uint32_t version;
uint32_t session_id;
struct mdp_rotation_buf_info input;
struct mdp_rotation_buf_info output;
uint32_t frame_rate;
uint32_t flags;
uint32_t reserved[6];
};
struct mdp_rotation_item {
/* rotation request flag */
uint32_t flags;
/* Source crop rectangle */
struct mdp_rect src_rect;
/* Destination rectangle */
struct mdp_rect dst_rect;
/* Input buffer for the request */
struct mdp_layer_buffer input;
/* The output buffer for the request */
struct mdp_layer_buffer output;
/*
* DMA pipe selection for this request by client:
* 0: DMA pipe 0
* 1: DMA pipe 1
* or MDSS_ROTATION_HW_ANY if client wants
* driver to allocate any that is available
*/
uint32_t pipe_idx;
/*
* Write-back block selection for this request by client:
* 0: Write-back block 0
* 1: Write-back block 1
* or MDSS_ROTATION_HW_ANY if client wants
* driver to allocate any that is available
*/
uint32_t wb_idx;
/* Which session ID is this request scheduled on */
uint32_t session_id;
/* 32bits reserved value for future usage */
uint32_t reserved[6];
};
struct mdp_rotation_request {
/* 32bit version indicates the request structure */
uint32_t version;
uint32_t flags;
/* Number of rotation request items in the list */
uint32_t count;
/* Pointer to a list of rotation request items */
struct mdp_rotation_item __user *list;
/* 32bits reserved value for future usage*/
uint32_t reserved[6];
};
#endif /*_UAPI_MDSS_ROTATOR_H_*/