149 lines
4.6 KiB
C
149 lines
4.6 KiB
C
|
/*****************************************************************************
|
||
|
*All Winner Tech, All Right Reserved. 2014-2015 Copyright (c)
|
||
|
*
|
||
|
*File name : sunxi_tr.h
|
||
|
*
|
||
|
*Description : display engine 2.0 rotation processing base functions implement
|
||
|
*
|
||
|
*History : 2014/04/08 iptang v0.1 Initial version
|
||
|
|
||
|
*****************************************************************************/
|
||
|
|
||
|
#ifndef __SUNXI_TR_H__
|
||
|
#define __SUNXI_TR_H__
|
||
|
|
||
|
extern u32 dbg_info;
|
||
|
|
||
|
#define TR_INFO_MSG(fmt, args...) \
|
||
|
do {\
|
||
|
if (dbg_info)\
|
||
|
pr_info("[TR-%s] line:%d: " fmt, __func__, __LINE__, ##args);\
|
||
|
} while (0)
|
||
|
|
||
|
typedef enum {
|
||
|
TR_FORMAT_ARGB_8888 = 0x00,/* MSB A-R-G-B LSB */
|
||
|
TR_FORMAT_ABGR_8888 = 0x01,
|
||
|
TR_FORMAT_RGBA_8888 = 0x02,
|
||
|
TR_FORMAT_BGRA_8888 = 0x03,
|
||
|
TR_FORMAT_XRGB_8888 = 0x04,
|
||
|
TR_FORMAT_XBGR_8888 = 0x05,
|
||
|
TR_FORMAT_RGBX_8888 = 0x06,
|
||
|
TR_FORMAT_BGRX_8888 = 0x07,
|
||
|
TR_FORMAT_RGB_888 = 0x08,
|
||
|
TR_FORMAT_BGR_888 = 0x09,
|
||
|
TR_FORMAT_RGB_565 = 0x0a,
|
||
|
TR_FORMAT_BGR_565 = 0x0b,
|
||
|
TR_FORMAT_ARGB_4444 = 0x0c,
|
||
|
TR_FORMAT_ABGR_4444 = 0x0d,
|
||
|
TR_FORMAT_RGBA_4444 = 0x0e,
|
||
|
TR_FORMAT_BGRA_4444 = 0x0f,
|
||
|
TR_FORMAT_ARGB_1555 = 0x10,
|
||
|
TR_FORMAT_ABGR_1555 = 0x11,
|
||
|
TR_FORMAT_RGBA_5551 = 0x12,
|
||
|
TR_FORMAT_BGRA_5551 = 0x13,
|
||
|
|
||
|
/* SP: semi-planar, P:planar, I:interleaved
|
||
|
* UVUV: U in the LSBs; VUVU: V in the LSBs
|
||
|
*/
|
||
|
/*MSB A-Y-U-V LSB, reserved*/
|
||
|
TR_FORMAT_YUV444_I_AYUV = 0x40,
|
||
|
TR_FORMAT_YUV444_I_VUYA = 0x41,/*MSB V-U-Y-A LSB*/
|
||
|
TR_FORMAT_YUV422_I_YVYU = 0x42,/*MSB Y-V-Y-U LSB*/
|
||
|
TR_FORMAT_YUV422_I_YUYV = 0x43,/*MSB Y-U-Y-V LSB*/
|
||
|
TR_FORMAT_YUV422_I_UYVY = 0x44,/*MSB U-Y-V-Y LSB*/
|
||
|
TR_FORMAT_YUV422_I_VYUY = 0x45,/*MSB V-Y-U-Y LSB*/
|
||
|
/*MSB P3-2-1-0 LSB, YYYY UUUU VVVV, reserved*/
|
||
|
TR_FORMAT_YUV444_P = 0x46,
|
||
|
/*MSB P3-2-1-0 LSB YYYY UU VV*/
|
||
|
TR_FORMAT_YUV422_P = 0x47,
|
||
|
/*MSB P3-2-1-0 LSB YYYY U V*/
|
||
|
TR_FORMAT_YUV420_P = 0x48,
|
||
|
/*MSB P3-2-1-0 LSB YYYY U V*/
|
||
|
TR_FORMAT_YUV411_P = 0x49,
|
||
|
TR_FORMAT_YUV422_SP_UVUV = 0x4a,/*MSB V-U-V-U LSB*/
|
||
|
TR_FORMAT_YUV422_SP_VUVU = 0x4b,/*MSB U-V-U-V LSB*/
|
||
|
TR_FORMAT_YUV420_SP_UVUV = 0x4c,
|
||
|
TR_FORMAT_YUV420_SP_VUVU = 0x4d,
|
||
|
TR_FORMAT_YUV411_SP_UVUV = 0x4e,
|
||
|
TR_FORMAT_YUV411_SP_VUVU = 0x4f,
|
||
|
TR_FORMAT_MAX,
|
||
|
} tr_pixel_format;
|
||
|
|
||
|
typedef enum {
|
||
|
TR_ROT_0 = 0x0,/*rotate clockwise 0 ROTgree*/
|
||
|
TR_ROT_90 = 0x1,/*rotate clockwise 90 ROTgree*/
|
||
|
TR_ROT_180 = 0x2,/*rotate clockwise 180 ROTgree*/
|
||
|
TR_ROT_270 = 0x3,/*rotate clockwise 270 ROTgree*/
|
||
|
TR_HFLIP = 0x4,/*horizontal flip*/
|
||
|
/*first rotate clockwise 90 ROTgree then horizontal flip*/
|
||
|
TR_HFLIP_ROT_90 = 0x5,
|
||
|
TR_VFLIP = 0x6,/*vertical flip*/
|
||
|
/*first rotate clockwise 90 ROTgree then vertical flip*/
|
||
|
TR_VFLIP_ROT_90 = 0x7,
|
||
|
} tr_mode;
|
||
|
|
||
|
typedef struct {
|
||
|
int x;
|
||
|
int y;
|
||
|
unsigned int w;
|
||
|
unsigned int h;
|
||
|
} tr_rect;
|
||
|
|
||
|
typedef struct {
|
||
|
unsigned char fmt;
|
||
|
unsigned char haddr[3];
|
||
|
unsigned int laddr[3];
|
||
|
unsigned int pitch[3]; /* line stride of fb */
|
||
|
unsigned int height[3];
|
||
|
int fd;
|
||
|
} tr_frame;
|
||
|
|
||
|
typedef struct {
|
||
|
tr_mode mode;
|
||
|
|
||
|
tr_frame src_frame;
|
||
|
tr_rect src_rect;
|
||
|
|
||
|
tr_frame dst_frame;
|
||
|
tr_rect dst_rect;
|
||
|
|
||
|
int fd;
|
||
|
} tr_info;
|
||
|
|
||
|
typedef enum tag_TR_CMD {
|
||
|
TR_REQUEST = 0x03,
|
||
|
TR_RELEASE = 0x04,
|
||
|
TR_COMMIT = 0x05,
|
||
|
TR_QUERY = 0x06,
|
||
|
TR_SET_TIMEOUT = 0x07,
|
||
|
} tr_cmd_t;
|
||
|
|
||
|
/* tr_format_attr - tr format attribute
|
||
|
*
|
||
|
* @format: pixel format
|
||
|
* @bits: bits of each component
|
||
|
* @hor_rsample_u: reciprocal of horizontal sample rate
|
||
|
* @hor_rsample_v: reciprocal of horizontal sample rate
|
||
|
* @ver_rsample_u: reciprocal of vertical sample rate
|
||
|
* @hor_rsample_v: reciprocal of vertical sample rate
|
||
|
* @uvc: 1: u & v component combined
|
||
|
* @interleave: 0: progressive, 1: interleave
|
||
|
* @factor & div: bytes of pixel = factor / div (bytes)
|
||
|
*
|
||
|
* @addr[out]: address for each plane
|
||
|
* @trd_addr[out]: address for each plane of right eye buffer
|
||
|
*/
|
||
|
struct tr_format_attr {
|
||
|
tr_pixel_format format;
|
||
|
unsigned int bits;
|
||
|
unsigned int hor_rsample_u;
|
||
|
unsigned int hor_rsample_v;
|
||
|
unsigned int ver_rsample_u;
|
||
|
unsigned int ver_rsample_v;
|
||
|
unsigned int uvc;
|
||
|
unsigned int interleave;
|
||
|
unsigned int factor;
|
||
|
unsigned int div;
|
||
|
};
|
||
|
#endif
|