15d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#ifndef _UAPI_MDSS_ROTATOR_H_ 25d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define _UAPI_MDSS_ROTATOR_H_ 35d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 45d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#include <linux/msm_mdp_ext.h> 55d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 65d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define MDSS_ROTATOR_IOCTL_MAGIC 'w' 75d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 85d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin/* open a rotation session */ 95d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define MDSS_ROTATION_OPEN \ 105d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin _IOWR(MDSS_ROTATOR_IOCTL_MAGIC, 1, struct mdp_rotation_config *) 115d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 125d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin/* change the rotation session configuration */ 135d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define MDSS_ROTATION_CONFIG \ 145d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin _IOWR(MDSS_ROTATOR_IOCTL_MAGIC, 2, struct mdp_rotation_config *) 155d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 165d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin/* queue the rotation request */ 175d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define MDSS_ROTATION_REQUEST \ 185d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin _IOWR(MDSS_ROTATOR_IOCTL_MAGIC, 3, struct mdp_rotation_request *) 195d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 205d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin/* close a rotation session with the specified rotation session ID */ 215d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define MDSS_ROTATION_CLOSE _IOW(MDSS_ROTATOR_IOCTL_MAGIC, 4, unsigned int) 225d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 235d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin/********************************************************************** 245d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick TjinRotation request flag 255d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin**********************************************************************/ 265d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin/* no rotation flag, i.e. color space conversion */ 275d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define MDP_ROTATION_NOP 0x01 285d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 295d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin/* left/right flip */ 305d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define MDP_ROTATION_FLIP_LR 0x02 315d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 325d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin/* up/down flip */ 335d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define MDP_ROTATION_FLIP_UD 0x04 345d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 355d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin/* rotate 90 degree */ 365d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define MDP_ROTATION_90 0x08 375d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 385d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin/* rotate 180 degre */ 395d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define MDP_ROTATION_180 (MDP_ROTATION_FLIP_LR | MDP_ROTATION_FLIP_UD) 405d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 415d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin/* rotate 270 degree */ 425d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define MDP_ROTATION_270 (MDP_ROTATION_90 | MDP_ROTATION_180) 435d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 445d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin/* format is interlaced */ 455d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define MDP_ROTATION_DEINTERLACE 0x10 465d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 475d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin/* enable bwc */ 485d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define MDP_ROTATION_BWC_EN 0x40 495d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 505d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin/* secure data */ 515d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define MDP_ROTATION_SECURE 0x80 525d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 535d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin/********************************************************************** 545d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick TjinRotation commit flag 555d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin**********************************************************************/ 565d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin/* Flag indicates to validate the rotation request */ 575d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define MDSS_ROTATION_REQUEST_VALIDATE 0x01 585d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 595d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define MDP_ROTATION_REQUEST_VERSION_1_0 0x00010000 605d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 615d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin/* 625d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin * Client can let driver to allocate the hardware resources with 635d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin * this particular hw resource id. 645d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin */ 655d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define MDSS_ROTATION_HW_ANY 0xFFFFFFFF 665d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 675d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin/********************************************************************** 685d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinconfiguration structures 695d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin**********************************************************************/ 705d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinstruct mdp_rotation_buf_info { 715d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint32_t width; 725d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint32_t height; 735d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint32_t format; 745d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin struct mult_factor comp_ratio; 755d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin}; 765d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 775d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinstruct mdp_rotation_config { 785d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint32_t version; 795d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint32_t session_id; 805d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin struct mdp_rotation_buf_info input; 815d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin struct mdp_rotation_buf_info output; 825d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint32_t frame_rate; 835d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint32_t flags; 845d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint32_t reserved[6]; 855d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin}; 865d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 875d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinstruct mdp_rotation_item { 885d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin /* rotation request flag */ 895d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint32_t flags; 905d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 915d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin /* Source crop rectangle */ 925d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin struct mdp_rect src_rect; 935d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 945d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin /* Destination rectangle */ 955d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin struct mdp_rect dst_rect; 965d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 975d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin /* Input buffer for the request */ 985d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin struct mdp_layer_buffer input; 995d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 1005d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin /* The output buffer for the request */ 1015d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin struct mdp_layer_buffer output; 1025d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 1035d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin /* 1045d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin * DMA pipe selection for this request by client: 1055d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin * 0: DMA pipe 0 1065d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin * 1: DMA pipe 1 1075d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin * or MDSS_ROTATION_HW_ANY if client wants 1085d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin * driver to allocate any that is available 1095d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin */ 1105d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint32_t pipe_idx; 1115d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 1125d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin /* 1135d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin * Write-back block selection for this request by client: 1145d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin * 0: Write-back block 0 1155d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin * 1: Write-back block 1 1165d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin * or MDSS_ROTATION_HW_ANY if client wants 1175d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin * driver to allocate any that is available 1185d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin */ 1195d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint32_t wb_idx; 1205d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 1215d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin /* Which session ID is this request scheduled on */ 1225d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint32_t session_id; 1235d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 1245d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin /* 32bits reserved value for future usage */ 1255d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint32_t reserved[6]; 1265d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin}; 1275d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 1285d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinstruct mdp_rotation_request { 1295d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin /* 32bit version indicates the request structure */ 1305d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint32_t version; 1315d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 1325d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint32_t flags; 1335d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 1345d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin /* Number of rotation request items in the list */ 1355d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint32_t count; 1365d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 1375d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin /* Pointer to a list of rotation request items */ 1385d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin struct mdp_rotation_item __user *list; 1395d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 1405d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin /* 32bits reserved value for future usage*/ 1415d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint32_t reserved[6]; 1425d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin}; 1435d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 1445d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#endif /*_UAPI_MDSS_ROTATOR_H_*/ 145