xref: /OK3568_Linux_fs/kernel/drivers/video/rockchip/vehicle/vehicle_flinger.h (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1 /* SPDX-License-Identifier: GPL-2.0 */
2 /*
3  * drivers/video/rockchip/flinger/flinger.c
4  *
5  * Copyright (C) 2022 Rockchip Electronics Co.Ltd
6  *
7  */
8 #ifndef __VEHICLE_FLINGER_H
9 #define __VEHICLE_FLINGER_H
10 
11 #include "vehicle_cfg.h"
12 #include "../rga3/include/rga.h"
13 #include <linux/types.h>
14 #include <linux/dma-mapping.h>
15 
16 int vehicle_flinger_init(struct device *dev, struct vehicle_cfg *v_cfg);
17 int vehicle_flinger_deinit(void);
18 int vehicle_flinger_reverse_open(struct vehicle_cfg *cfg,
19 				bool android_already);
20 int vehicle_flinger_reverse_close(bool android_already);
21 unsigned long vehicle_flinger_request_cif_buffer(void);
22 void vehicle_flinger_commit_cif_buffer(u32 buf_phy_addr);
23 
24 enum {
25 	RGA_TRANSFORM_ROT_MASK   =   0x0000000F,
26 	RGA_TRANSFORM_ROT_0      =   0x00000000,
27 	RGA_TRANSFORM_ROT_90     =   0x00000001,
28 	RGA_TRANSFORM_ROT_180    =   0x00000002,
29 	RGA_TRANSFORM_ROT_270    =   0x00000004,
30 
31 	RGA_TRANSFORM_FLIP_MASK  =   0x000000F0,
32 	RGA_TRANSFORM_FLIP_H     =   0x00000020,
33 	RGA_TRANSFORM_FLIP_V     =   0x00000010,
34 };
35 /*
36  * pixel format definitions,this is copy from android/system/core/include/system/graphics.h
37  */
38 enum {
39 	HAL_PIXEL_FORMAT_RGBA_8888 = 1,
40 	HAL_PIXEL_FORMAT_RGBX_8888 = 2,
41 	HAL_PIXEL_FORMAT_RGB_888 = 3,
42 	HAL_PIXEL_FORMAT_RGB_565 = 4,
43 	HAL_PIXEL_FORMAT_BGRA_8888 = 5,
44 	HAL_PIXEL_FORMAT_RGBA_5551 = 6,
45 	HAL_PIXEL_FORMAT_RGBA_4444 = 7,
46 
47 	/* 0x8 - 0xFF range unavailable */
48 
49 	/*
50 	 * 0x100 - 0x1FF
51 	 *
52 	 * This range is reserved for pixel formats that are specific to the HAL
53 	 * implementation.  Implementations can use any value in this range to
54 	 * communicate video pixel formats between their HAL modules.  These formats
55 	 * must not have an alpha channel.  Additionally, an EGLimage created from a
56 	 * gralloc buffer of one of these formats must be supported for use with the
57 	 * GL_OES_EGL_image_external OpenGL ES extension.
58 	 */
59 
60 	/*
61 	 * Android YUV format:
62 	 *
63 	 * This format is exposed outside of the HAL to software decoders and
64 	 * applications.  EGLImageKHR must support it in conjunction with the
65 	 * OES_EGL_image_external extension.
66 	 *
67 	 * YV12 is a 4:2:0 YCrCb planar format comprised of a WxH Y plane followed
68 	 * by (W/2) x (H/2) Cr and Cb planes.
69 	 *
70 	 * This format assumes
71 	 * - an even width
72 	 * - an even height
73 	 * - a horizontal stride multiple of 16 pixels
74 	 * - a vertical stride equal to the height
75 	 *
76 	 *   y_size = stride * height
77 	 *   c_size = ALIGN(stride/2, 16) * height/2
78 	 *   size = y_size + c_size * 2
79 	 *   cr_offset = y_size
80 	 *   cb_offset = y_size + c_size
81 	 *
82 	 */
83 	HAL_PIXEL_FORMAT_YV12 = 0x32315659, // YCrCb 4:2:0 Planar
84 
85 	/* Legacy formats (deprecated), used by ImageFormat.java */
86 
87 	/*
88 	 *YCbCr format default is BT601.
89 	 */
90 	HAL_PIXEL_FORMAT_YCbCr_422_SP = 0x10,   // NV16
91 	HAL_PIXEL_FORMAT_YCrCb_420_SP = 0x11,   // NV21
92 	HAL_PIXEL_FORMAT_YCbCr_422_I = 0x14,    // YUY2
93 	HAL_PIXEL_FORMAT_YCrCb_NV12 = 0x20, // YUY2
94 	HAL_PIXEL_FORMAT_YCrCb_NV12_VIDEO = 0x21,   // YUY2
95 
96 	HAL_PIXEL_FORMAT_YCrCb_NV12_10      = 0x22, // YUV420_1obit
97 	HAL_PIXEL_FORMAT_YCbCr_422_SP_10    = 0x23, // YUV422_1obit
98 	HAL_PIXEL_FORMAT_YCrCb_444_SP_10    = 0x24, //YUV444_1obit
99 
100 	HAL_PIXEL_FORMAT_YCrCb_444 = 0x25,  //yuv444
101 	HAL_PIXEL_FORMAT_FBDC_RGB565    = 0x26,
102 	HAL_PIXEL_FORMAT_FBDC_U8U8U8U8  = 0x27, /*ARGB888*/
103 	HAL_PIXEL_FORMAT_FBDC_U8U8U8    = 0x28, /*RGBP888*/
104 	HAL_PIXEL_FORMAT_FBDC_RGBA888   = 0x29, /*ABGR888*/
105 	HAL_PIXEL_FORMAT_BGRX_8888 = 0x30,
106 	HAL_PIXEL_FORMAT_BGR_888 = 0x31,
107 	HAL_PIXEL_FORMAT_BGR_565 = 0x32,
108 
109 	HAL_PIXEL_FORMAT_YUYV422 = 0x33,
110 	HAL_PIXEL_FORMAT_YUYV420 = 0x34,
111 	HAL_PIXEL_FORMAT_UYVY422 = 0x35,
112 	HAL_PIXEL_FORMAT_UYVY420 = 0x36,
113 };
114 
115 #endif
116