1da6df07794d92cd159e28e2cb1947d8b33913e2fDaniel Walker/* include/linux/msm_mdp.h
2da6df07794d92cd159e28e2cb1947d8b33913e2fDaniel Walker *
3da6df07794d92cd159e28e2cb1947d8b33913e2fDaniel Walker * Copyright (C) 2007 Google Incorporated
4da6df07794d92cd159e28e2cb1947d8b33913e2fDaniel Walker *
5da6df07794d92cd159e28e2cb1947d8b33913e2fDaniel Walker * This software is licensed under the terms of the GNU General Public
6da6df07794d92cd159e28e2cb1947d8b33913e2fDaniel Walker * License version 2, as published by the Free Software Foundation, and
7da6df07794d92cd159e28e2cb1947d8b33913e2fDaniel Walker * may be copied, distributed, and modified under those terms.
8da6df07794d92cd159e28e2cb1947d8b33913e2fDaniel Walker *
9da6df07794d92cd159e28e2cb1947d8b33913e2fDaniel Walker * This program is distributed in the hope that it will be useful,
10da6df07794d92cd159e28e2cb1947d8b33913e2fDaniel Walker * but WITHOUT ANY WARRANTY; without even the implied warranty of
11da6df07794d92cd159e28e2cb1947d8b33913e2fDaniel Walker * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
12da6df07794d92cd159e28e2cb1947d8b33913e2fDaniel Walker * GNU General Public License for more details.
13da6df07794d92cd159e28e2cb1947d8b33913e2fDaniel Walker */
14da6df07794d92cd159e28e2cb1947d8b33913e2fDaniel Walker#ifndef _MSM_MDP_H_
15da6df07794d92cd159e28e2cb1947d8b33913e2fDaniel Walker#define _MSM_MDP_H_
16da6df07794d92cd159e28e2cb1947d8b33913e2fDaniel Walker
17da6df07794d92cd159e28e2cb1947d8b33913e2fDaniel Walker#include <linux/types.h>
18da6df07794d92cd159e28e2cb1947d8b33913e2fDaniel Walker
19da6df07794d92cd159e28e2cb1947d8b33913e2fDaniel Walker#define MSMFB_IOCTL_MAGIC 'm'
20da6df07794d92cd159e28e2cb1947d8b33913e2fDaniel Walker#define MSMFB_GRP_DISP          _IOW(MSMFB_IOCTL_MAGIC, 1, unsigned int)
21da6df07794d92cd159e28e2cb1947d8b33913e2fDaniel Walker#define MSMFB_BLIT              _IOW(MSMFB_IOCTL_MAGIC, 2, unsigned int)
22da6df07794d92cd159e28e2cb1947d8b33913e2fDaniel Walker
23da6df07794d92cd159e28e2cb1947d8b33913e2fDaniel Walkerenum {
24da6df07794d92cd159e28e2cb1947d8b33913e2fDaniel Walker	MDP_RGB_565,		/* RGB 565 planar */
25da6df07794d92cd159e28e2cb1947d8b33913e2fDaniel Walker	MDP_XRGB_8888,		/* RGB 888 padded */
26da6df07794d92cd159e28e2cb1947d8b33913e2fDaniel Walker	MDP_Y_CBCR_H2V2,	/* Y and CbCr, pseudo planar w/ Cb is in MSB */
27da6df07794d92cd159e28e2cb1947d8b33913e2fDaniel Walker	MDP_ARGB_8888,		/* ARGB 888 */
28da6df07794d92cd159e28e2cb1947d8b33913e2fDaniel Walker	MDP_RGB_888,		/* RGB 888 planar */
29da6df07794d92cd159e28e2cb1947d8b33913e2fDaniel Walker	MDP_Y_CRCB_H2V2,	/* Y and CrCb, pseudo planar w/ Cr is in MSB */
30da6df07794d92cd159e28e2cb1947d8b33913e2fDaniel Walker	MDP_YCRYCB_H2V1,	/* YCrYCb interleave */
31da6df07794d92cd159e28e2cb1947d8b33913e2fDaniel Walker	MDP_Y_CRCB_H2V1,	/* Y and CrCb, pseduo planar w/ Cr is in MSB */
32da6df07794d92cd159e28e2cb1947d8b33913e2fDaniel Walker	MDP_Y_CBCR_H2V1,	/* Y and CrCb, pseduo planar w/ Cr is in MSB */
33da6df07794d92cd159e28e2cb1947d8b33913e2fDaniel Walker	MDP_RGBA_8888,		/* ARGB 888 */
34da6df07794d92cd159e28e2cb1947d8b33913e2fDaniel Walker	MDP_BGRA_8888,		/* ABGR 888 */
35a8d380f30a7d8cc507fd5cc84b2dc5ee2b2144d7Dima Zavin	MDP_RGBX_8888,		/* RGBX 888 */
36da6df07794d92cd159e28e2cb1947d8b33913e2fDaniel Walker	MDP_IMGTYPE_LIMIT	/* Non valid image type after this enum */
37da6df07794d92cd159e28e2cb1947d8b33913e2fDaniel Walker};
38da6df07794d92cd159e28e2cb1947d8b33913e2fDaniel Walker
39da6df07794d92cd159e28e2cb1947d8b33913e2fDaniel Walkerenum {
40da6df07794d92cd159e28e2cb1947d8b33913e2fDaniel Walker	PMEM_IMG,
41da6df07794d92cd159e28e2cb1947d8b33913e2fDaniel Walker	FB_IMG,
42da6df07794d92cd159e28e2cb1947d8b33913e2fDaniel Walker};
43da6df07794d92cd159e28e2cb1947d8b33913e2fDaniel Walker
44da6df07794d92cd159e28e2cb1947d8b33913e2fDaniel Walker/* flag values */
45da6df07794d92cd159e28e2cb1947d8b33913e2fDaniel Walker#define MDP_ROT_NOP	0
46da6df07794d92cd159e28e2cb1947d8b33913e2fDaniel Walker#define MDP_FLIP_LR	0x1
47da6df07794d92cd159e28e2cb1947d8b33913e2fDaniel Walker#define MDP_FLIP_UD	0x2
48da6df07794d92cd159e28e2cb1947d8b33913e2fDaniel Walker#define MDP_ROT_90	0x4
49da6df07794d92cd159e28e2cb1947d8b33913e2fDaniel Walker#define MDP_ROT_180	(MDP_FLIP_UD|MDP_FLIP_LR)
50da6df07794d92cd159e28e2cb1947d8b33913e2fDaniel Walker#define MDP_ROT_270	(MDP_ROT_90|MDP_FLIP_UD|MDP_FLIP_LR)
51da6df07794d92cd159e28e2cb1947d8b33913e2fDaniel Walker#define MDP_DITHER	0x8
52da6df07794d92cd159e28e2cb1947d8b33913e2fDaniel Walker#define MDP_BLUR	0x10
53da6df07794d92cd159e28e2cb1947d8b33913e2fDaniel Walker
54da6df07794d92cd159e28e2cb1947d8b33913e2fDaniel Walker#define MDP_TRANSP_NOP	0xffffffff
55da6df07794d92cd159e28e2cb1947d8b33913e2fDaniel Walker#define MDP_ALPHA_NOP	0xff
56da6df07794d92cd159e28e2cb1947d8b33913e2fDaniel Walker
57da6df07794d92cd159e28e2cb1947d8b33913e2fDaniel Walkerstruct mdp_rect {
58da6df07794d92cd159e28e2cb1947d8b33913e2fDaniel Walker	u32 x, y, w, h;
59da6df07794d92cd159e28e2cb1947d8b33913e2fDaniel Walker};
60da6df07794d92cd159e28e2cb1947d8b33913e2fDaniel Walker
61da6df07794d92cd159e28e2cb1947d8b33913e2fDaniel Walkerstruct mdp_img {
62da6df07794d92cd159e28e2cb1947d8b33913e2fDaniel Walker	u32 width, height, format, offset;
63da6df07794d92cd159e28e2cb1947d8b33913e2fDaniel Walker	int memory_id;		/* the file descriptor */
64da6df07794d92cd159e28e2cb1947d8b33913e2fDaniel Walker};
65da6df07794d92cd159e28e2cb1947d8b33913e2fDaniel Walker
66da6df07794d92cd159e28e2cb1947d8b33913e2fDaniel Walkerstruct mdp_blit_req {
67da6df07794d92cd159e28e2cb1947d8b33913e2fDaniel Walker	struct mdp_img src;
68da6df07794d92cd159e28e2cb1947d8b33913e2fDaniel Walker	struct mdp_img dst;
69da6df07794d92cd159e28e2cb1947d8b33913e2fDaniel Walker	struct mdp_rect src_rect;
70da6df07794d92cd159e28e2cb1947d8b33913e2fDaniel Walker	struct mdp_rect dst_rect;
71da6df07794d92cd159e28e2cb1947d8b33913e2fDaniel Walker	u32 alpha, transp_mask, flags;
72da6df07794d92cd159e28e2cb1947d8b33913e2fDaniel Walker};
73da6df07794d92cd159e28e2cb1947d8b33913e2fDaniel Walker
74da6df07794d92cd159e28e2cb1947d8b33913e2fDaniel Walkerstruct mdp_blit_req_list {
75da6df07794d92cd159e28e2cb1947d8b33913e2fDaniel Walker	u32 count;
76da6df07794d92cd159e28e2cb1947d8b33913e2fDaniel Walker	struct mdp_blit_req req[];
77da6df07794d92cd159e28e2cb1947d8b33913e2fDaniel Walker};
78da6df07794d92cd159e28e2cb1947d8b33913e2fDaniel Walker
79da6df07794d92cd159e28e2cb1947d8b33913e2fDaniel Walker#endif /* _MSM_MDP_H_ */
80