1 /* SPDX-License-Identifier: GPL-2.0-only WITH Linux-syscall-note */
2 /*
3  * Copyright (c) 2017-2018, The Linux Foundation. All rights reserved.
4  */
5 
6 #ifndef __UAPI_MSM_SDE_ROTATOR_H__
7 #define __UAPI_MSM_SDE_ROTATOR_H__
8 
9 #include <linux/videodev2.h>
10 #include <linux/types.h>
11 #include <linux/ioctl.h>
12 
13 /* SDE Rotator pixel format definitions */
14 #define SDE_PIX_FMT_XRGB_8888		V4L2_PIX_FMT_XBGR32
15 #define SDE_PIX_FMT_ARGB_8888		V4L2_PIX_FMT_ABGR32
16 #define SDE_PIX_FMT_ABGR_8888		V4L2_PIX_FMT_SDE_ABGR_8888
17 #define SDE_PIX_FMT_RGBA_8888		V4L2_PIX_FMT_SDE_RGBA_8888
18 #define SDE_PIX_FMT_BGRA_8888		V4L2_PIX_FMT_ARGB32
19 #define SDE_PIX_FMT_RGBX_8888		V4L2_PIX_FMT_SDE_RGBX_8888
20 #define SDE_PIX_FMT_BGRX_8888		V4L2_PIX_FMT_XRGB32
21 #define SDE_PIX_FMT_XBGR_8888		V4L2_PIX_FMT_SDE_XBGR_8888
22 #define SDE_PIX_FMT_RGBA_5551		V4L2_PIX_FMT_SDE_RGBA_5551
23 #define SDE_PIX_FMT_ARGB_1555		V4L2_PIX_FMT_ARGB555
24 #define SDE_PIX_FMT_ABGR_1555		V4L2_PIX_FMT_SDE_ABGR_1555
25 #define SDE_PIX_FMT_BGRA_5551		V4L2_PIX_FMT_SDE_BGRA_5551
26 #define SDE_PIX_FMT_BGRX_5551		V4L2_PIX_FMT_SDE_BGRX_5551
27 #define SDE_PIX_FMT_RGBX_5551		V4L2_PIX_FMT_SDE_RGBX_5551
28 #define SDE_PIX_FMT_XBGR_1555		V4L2_PIX_FMT_SDE_XBGR_1555
29 #define SDE_PIX_FMT_XRGB_1555		V4L2_PIX_FMT_XRGB555
30 #define SDE_PIX_FMT_ARGB_4444		V4L2_PIX_FMT_ARGB444
31 #define SDE_PIX_FMT_RGBA_4444		V4L2_PIX_FMT_SDE_RGBA_4444
32 #define SDE_PIX_FMT_BGRA_4444		V4L2_PIX_FMT_SDE_BGRA_4444
33 #define SDE_PIX_FMT_ABGR_4444		V4L2_PIX_FMT_SDE_ABGR_4444
34 #define SDE_PIX_FMT_RGBX_4444		V4L2_PIX_FMT_SDE_RGBX_4444
35 #define SDE_PIX_FMT_XRGB_4444		V4L2_PIX_FMT_XRGB444
36 #define SDE_PIX_FMT_BGRX_4444		V4L2_PIX_FMT_SDE_BGRX_4444
37 #define SDE_PIX_FMT_XBGR_4444		V4L2_PIX_FMT_SDE_XBGR_4444
38 #define SDE_PIX_FMT_RGB_888		V4L2_PIX_FMT_RGB24
39 #define SDE_PIX_FMT_BGR_888		V4L2_PIX_FMT_BGR24
40 #define SDE_PIX_FMT_RGB_565		V4L2_PIX_FMT_RGB565
41 #define SDE_PIX_FMT_BGR_565		V4L2_PIX_FMT_SDE_BGR_565
42 #define SDE_PIX_FMT_Y_CB_CR_H2V2	V4L2_PIX_FMT_YUV420
43 #define SDE_PIX_FMT_Y_CR_CB_H2V2	V4L2_PIX_FMT_YVU420
44 #define SDE_PIX_FMT_Y_CR_CB_GH2V2	V4L2_PIX_FMT_SDE_Y_CR_CB_GH2V2
45 #define SDE_PIX_FMT_Y_CBCR_H2V2		V4L2_PIX_FMT_NV12
46 #define SDE_PIX_FMT_Y_CRCB_H2V2		V4L2_PIX_FMT_NV21
47 #define SDE_PIX_FMT_Y_CBCR_H1V2		V4L2_PIX_FMT_SDE_Y_CBCR_H1V2
48 #define SDE_PIX_FMT_Y_CRCB_H1V2		V4L2_PIX_FMT_SDE_Y_CRCB_H1V2
49 #define SDE_PIX_FMT_Y_CBCR_H2V1		V4L2_PIX_FMT_NV16
50 #define SDE_PIX_FMT_Y_CRCB_H2V1		V4L2_PIX_FMT_NV61
51 #define SDE_PIX_FMT_YCBYCR_H2V1		V4L2_PIX_FMT_YUYV
52 #define SDE_PIX_FMT_Y_CBCR_H2V2_VENUS	V4L2_PIX_FMT_SDE_Y_CBCR_H2V2_VENUS
53 #define SDE_PIX_FMT_Y_CRCB_H2V2_VENUS	V4L2_PIX_FMT_SDE_Y_CRCB_H2V2_VENUS
54 #define SDE_PIX_FMT_RGBA_8888_UBWC	V4L2_PIX_FMT_RGBA8888_UBWC
55 #define SDE_PIX_FMT_RGBX_8888_UBWC	V4L2_PIX_FMT_SDE_RGBX_8888_UBWC
56 #define SDE_PIX_FMT_RGB_565_UBWC	V4L2_PIX_FMT_SDE_RGB_565_UBWC
57 #define SDE_PIX_FMT_Y_CBCR_H2V2_UBWC	V4L2_PIX_FMT_NV12_UBWC
58 #define SDE_PIX_FMT_RGBA_1010102	V4L2_PIX_FMT_SDE_RGBA_1010102
59 #define SDE_PIX_FMT_RGBX_1010102	V4L2_PIX_FMT_SDE_RGBX_1010102
60 #define SDE_PIX_FMT_ARGB_2101010	V4L2_PIX_FMT_SDE_ARGB_2101010
61 #define SDE_PIX_FMT_XRGB_2101010	V4L2_PIX_FMT_SDE_XRGB_2101010
62 #define SDE_PIX_FMT_BGRA_1010102	V4L2_PIX_FMT_SDE_BGRA_1010102
63 #define SDE_PIX_FMT_BGRX_1010102	V4L2_PIX_FMT_SDE_BGRX_1010102
64 #define SDE_PIX_FMT_ABGR_2101010	V4L2_PIX_FMT_SDE_ABGR_2101010
65 #define SDE_PIX_FMT_XBGR_2101010	V4L2_PIX_FMT_SDE_XBGR_2101010
66 #define SDE_PIX_FMT_RGBA_1010102_UBWC	V4L2_PIX_FMT_SDE_RGBA_1010102_UBWC
67 #define SDE_PIX_FMT_RGBX_1010102_UBWC	V4L2_PIX_FMT_SDE_RGBX_1010102_UBWC
68 #define SDE_PIX_FMT_Y_CBCR_H2V2_P010	V4L2_PIX_FMT_SDE_Y_CBCR_H2V2_P010
69 #define SDE_PIX_FMT_Y_CBCR_H2V2_P010_VENUS \
70 	V4L2_PIX_FMT_SDE_Y_CBCR_H2V2_P010_VENUS
71 #define SDE_PIX_FMT_Y_CBCR_H2V2_TP10	V4L2_PIX_FMT_SDE_Y_CBCR_H2V2_TP10
72 #define SDE_PIX_FMT_Y_CBCR_H2V2_TP10_UBWC	V4L2_PIX_FMT_NV12_TP10_UBWC
73 #define SDE_PIX_FMT_Y_CBCR_H2V2_P010_UBWC	V4L2_PIX_FMT_NV12_P010_UBWC
74 
75 /*
76  * struct msm_sde_rotator_fence - v4l2 buffer fence info
77  * @index: id number of the buffer
78  * @type: enum v4l2_buf_type; buffer type
79  * @fd: file descriptor of the fence associated with this buffer
80  */
81 struct msm_sde_rotator_fence {
82 	__u32	index;
83 	__u32	type;
84 	__s32	fd;
85 	__u32	reserved[5];
86 };
87 
88 /*
89  * struct msm_sde_rotator_comp_ratio - v4l2 buffer compression ratio
90  * @index: id number of the buffer
91  * @type: enum v4l2_buf_type; buffer type
92  * @numer: numerator of the ratio
93  * @denom: denominator of the ratio
94  */
95 struct msm_sde_rotator_comp_ratio {
96 	__u32	index;
97 	__u32	type;
98 	__u32	numer;
99 	__u32	denom;
100 	__u32	reserved[4];
101 };
102 
103 /* SDE Rotator private ioctl ID */
104 #define VIDIOC_G_SDE_ROTATOR_FENCE \
105 	_IOWR('V', BASE_VIDIOC_PRIVATE + 10, struct msm_sde_rotator_fence)
106 #define VIDIOC_S_SDE_ROTATOR_FENCE \
107 	_IOWR('V', BASE_VIDIOC_PRIVATE + 11, struct msm_sde_rotator_fence)
108 #define VIDIOC_G_SDE_ROTATOR_COMP_RATIO \
109 	_IOWR('V', BASE_VIDIOC_PRIVATE + 12, struct msm_sde_rotator_comp_ratio)
110 #define VIDIOC_S_SDE_ROTATOR_COMP_RATIO \
111 	_IOWR('V', BASE_VIDIOC_PRIVATE + 13, struct msm_sde_rotator_comp_ratio)
112 
113 /* SDE Rotator private control ID's */
114 #define V4L2_CID_SDE_ROTATOR_SECURE	(V4L2_CID_USER_BASE + 0x1000)
115 
116 /*
117  * This control Id indicates this context is associated with the
118  * secure camera.
119  */
120 #define V4L2_CID_SDE_ROTATOR_SECURE_CAMERA	(V4L2_CID_USER_BASE + 0x2000)
121 
122 #endif /* __UAPI_MSM_SDE_ROTATOR_H__ */
123