#ifndef _MDSS_ROTATOR_H_ #define _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 *list; /* 32bits reserved value for future usage*/ uint32_t reserved[6]; }; #endif /* _MDSS_ROTATOR_H_*/