Linux kernel mirror (for testing)
git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel
os
linux
1/*
2 * Copyright 2016 Linaro Ltd.
3 * Copyright 2016 ZTE Corporation.
4 *
5 * This program is free software; you can redistribute it and/or modify
6 * it under the terms of the GNU General Public License version 2 as
7 * published by the Free Software Foundation.
8 *
9 */
10
11#ifndef __ZX_PLANE_REGS_H__
12#define __ZX_PLANE_REGS_H__
13
14/* GL registers */
15#define GL_CTRL0 0x00
16#define GL_UPDATE BIT(5)
17#define GL_CTRL1 0x04
18#define GL_DATA_FMT_SHIFT 0
19#define GL_DATA_FMT_MASK (0xf << GL_DATA_FMT_SHIFT)
20#define GL_FMT_ARGB8888 0
21#define GL_FMT_RGB888 1
22#define GL_FMT_RGB565 2
23#define GL_FMT_ARGB1555 3
24#define GL_FMT_ARGB4444 4
25#define GL_CTRL2 0x08
26#define GL_GLOBAL_ALPHA_SHIFT 8
27#define GL_GLOBAL_ALPHA_MASK (0xff << GL_GLOBAL_ALPHA_SHIFT)
28#define GL_CTRL3 0x0c
29#define GL_SCALER_BYPASS_MODE BIT(0)
30#define GL_STRIDE 0x18
31#define GL_ADDR 0x1c
32#define GL_SRC_SIZE 0x38
33#define GL_SRC_W_SHIFT 16
34#define GL_SRC_W_MASK (0x3fff << GL_SRC_W_SHIFT)
35#define GL_SRC_H_SHIFT 0
36#define GL_SRC_H_MASK (0x3fff << GL_SRC_H_SHIFT)
37#define GL_POS_START 0x9c
38#define GL_POS_END 0xa0
39#define GL_POS_X_SHIFT 16
40#define GL_POS_X_MASK (0x1fff << GL_POS_X_SHIFT)
41#define GL_POS_Y_SHIFT 0
42#define GL_POS_Y_MASK (0x1fff << GL_POS_Y_SHIFT)
43
44#define GL_SRC_W(x) (((x) << GL_SRC_W_SHIFT) & GL_SRC_W_MASK)
45#define GL_SRC_H(x) (((x) << GL_SRC_H_SHIFT) & GL_SRC_H_MASK)
46#define GL_POS_X(x) (((x) << GL_POS_X_SHIFT) & GL_POS_X_MASK)
47#define GL_POS_Y(x) (((x) << GL_POS_Y_SHIFT) & GL_POS_Y_MASK)
48
49/* VL registers */
50#define VL_CTRL0 0x00
51#define VL_UPDATE BIT(3)
52#define VL_CTRL1 0x04
53#define VL_YUV420_PLANAR BIT(5)
54#define VL_YUV422_SHIFT 3
55#define VL_YUV422_YUYV (0 << VL_YUV422_SHIFT)
56#define VL_YUV422_YVYU (1 << VL_YUV422_SHIFT)
57#define VL_YUV422_UYVY (2 << VL_YUV422_SHIFT)
58#define VL_YUV422_VYUY (3 << VL_YUV422_SHIFT)
59#define VL_FMT_YUV420 0
60#define VL_FMT_YUV422 1
61#define VL_FMT_YUV420_P010 2
62#define VL_FMT_YUV420_HANTRO 3
63#define VL_FMT_YUV444_8BIT 4
64#define VL_FMT_YUV444_10BIT 5
65#define VL_CTRL2 0x08
66#define VL_SCALER_BYPASS_MODE BIT(0)
67#define VL_STRIDE 0x0c
68#define LUMA_STRIDE_SHIFT 16
69#define LUMA_STRIDE_MASK (0xffff << LUMA_STRIDE_SHIFT)
70#define CHROMA_STRIDE_SHIFT 0
71#define CHROMA_STRIDE_MASK (0xffff << CHROMA_STRIDE_SHIFT)
72#define VL_SRC_SIZE 0x10
73#define VL_Y 0x14
74#define VL_POS_START 0x30
75#define VL_POS_END 0x34
76
77#define LUMA_STRIDE(x) (((x) << LUMA_STRIDE_SHIFT) & LUMA_STRIDE_MASK)
78#define CHROMA_STRIDE(x) (((x) << CHROMA_STRIDE_SHIFT) & CHROMA_STRIDE_MASK)
79
80/* CSC registers */
81#define CSC_CTRL0 0x30
82#define CSC_COV_MODE_SHIFT 16
83#define CSC_COV_MODE_MASK (0xffff << CSC_COV_MODE_SHIFT)
84#define CSC_BT601_IMAGE_RGB2YCBCR 0
85#define CSC_BT601_IMAGE_YCBCR2RGB 1
86#define CSC_BT601_VIDEO_RGB2YCBCR 2
87#define CSC_BT601_VIDEO_YCBCR2RGB 3
88#define CSC_BT709_IMAGE_RGB2YCBCR 4
89#define CSC_BT709_IMAGE_YCBCR2RGB 5
90#define CSC_BT709_VIDEO_RGB2YCBCR 6
91#define CSC_BT709_VIDEO_YCBCR2RGB 7
92#define CSC_BT2020_IMAGE_RGB2YCBCR 8
93#define CSC_BT2020_IMAGE_YCBCR2RGB 9
94#define CSC_BT2020_VIDEO_RGB2YCBCR 10
95#define CSC_BT2020_VIDEO_YCBCR2RGB 11
96#define CSC_WORK_ENABLE BIT(0)
97
98/* RSZ registers */
99#define RSZ_SRC_CFG 0x00
100#define RSZ_DEST_CFG 0x04
101#define RSZ_ENABLE_CFG 0x14
102
103#define RSZ_VL_LUMA_HOR 0x08
104#define RSZ_VL_LUMA_VER 0x0c
105#define RSZ_VL_CHROMA_HOR 0x10
106#define RSZ_VL_CHROMA_VER 0x14
107#define RSZ_VL_CTRL_CFG 0x18
108#define RSZ_VL_FMT_SHIFT 3
109#define RSZ_VL_FMT_MASK (0x3 << RSZ_VL_FMT_SHIFT)
110#define RSZ_VL_FMT_YCBCR420 (0x0 << RSZ_VL_FMT_SHIFT)
111#define RSZ_VL_FMT_YCBCR422 (0x1 << RSZ_VL_FMT_SHIFT)
112#define RSZ_VL_FMT_YCBCR444 (0x2 << RSZ_VL_FMT_SHIFT)
113#define RSZ_VL_ENABLE_CFG 0x1c
114
115#define RSZ_VER_SHIFT 16
116#define RSZ_VER_MASK (0xffff << RSZ_VER_SHIFT)
117#define RSZ_HOR_SHIFT 0
118#define RSZ_HOR_MASK (0xffff << RSZ_HOR_SHIFT)
119
120#define RSZ_VER(x) (((x) << RSZ_VER_SHIFT) & RSZ_VER_MASK)
121#define RSZ_HOR(x) (((x) << RSZ_HOR_SHIFT) & RSZ_HOR_MASK)
122
123#define RSZ_DATA_STEP_SHIFT 16
124#define RSZ_DATA_STEP_MASK (0xffff << RSZ_DATA_STEP_SHIFT)
125#define RSZ_PARA_STEP_SHIFT 0
126#define RSZ_PARA_STEP_MASK (0xffff << RSZ_PARA_STEP_SHIFT)
127
128#define RSZ_DATA_STEP(x) (((x) << RSZ_DATA_STEP_SHIFT) & RSZ_DATA_STEP_MASK)
129#define RSZ_PARA_STEP(x) (((x) << RSZ_PARA_STEP_SHIFT) & RSZ_PARA_STEP_MASK)
130
131/* HBSC registers */
132#define HBSC_SATURATION 0x00
133#define HBSC_HUE 0x04
134#define HBSC_BRIGHT 0x08
135#define HBSC_CONTRAST 0x0c
136#define HBSC_THRESHOLD_COL1 0x10
137#define HBSC_THRESHOLD_COL2 0x14
138#define HBSC_THRESHOLD_COL3 0x18
139#define HBSC_CTRL0 0x28
140#define HBSC_CTRL_EN BIT(2)
141
142#endif /* __ZX_PLANE_REGS_H__ */