blob: 1d85e0e664daeb521886d188e4461a1518e56faa [file] [log] [blame]
yuezonghe824eb0c2024-06-27 02:32:26 -07001/*******************************************************************************
2 * Copyright by ZTE Corporation.
3 *
4 * File Name:
5 * File Mark:
6 * Description:
7 * Others:
8 * Version: v0.1
9 * Author: wuhui
10 * Date: 2016-12-17
11 * History 1:
12 * Date:
13 * Version:
14 * Author:
15 * Modification:
16 * History 2:
17 ********************************************************************************/
18
19#ifndef _DRVS_VOU_REF_H
20#define _DRVS_VOU_REF_H
21
22
23
24/****************************************************************************
25* Include files
26****************************************************************************/
27#include "drvs_chip_cfg.h"
28#include "drvs_sys.h"
29#include "drvs_vou.h"
30
31
32/****************************************************************************
33* Macros
34****************************************************************************/
35#define MAIN_CHANNEL 0
36#define MCU_LCD 1
37
38//BASE ADDRESSS
39#define OSD_CSC_BASE (VOU_CTRL_BASE+0x0000)
40#define OSD_GLOBAL_BASE (VOU_CTRL_BASE+0x2000)
41
42#define OSD_VL_CFG_BASE (OSD_GLOBAL_BASE+0x024)
43#define OSD_GL_CFG_BASE (OSD_GLOBAL_BASE+0x090)
44#define OSD_MAIN_CHANL_BASE (OSD_GLOBAL_BASE+0x114)
45#define OSD_WB_CFG_BASE (OSD_GLOBAL_BASE+0x14C)
46
47/*VOU CLK CFG ADDRESS*/
48#define VOU_DIF_CFG_BASE (SOC_CRM_REG_BASE+0x164)
49#define VOU_DIF_CTRL_OFFSET 16
50
51#define MAX_OSD_OUTSTAND_DEPTH 15
52#define OSD_VALID_FMARK_OFFSET 18
53#define OSDCTRL1_H_BLANK_OFFSET 2
54#define OSDCTRL1_V_BLANK_OFFSET 10
55#define OSDCTRL1_BLANK_SIZE 8
56#define OSDCTRL1_MCU_OFFSET 0
57
58#define OSDCTRL0_OUTSTAND_DEPTH_OFFSET 16
59#define OSDCTRL0_OUTSTAND_DEPTH_SIZE 4
60#define OSDCTRL0_VL_ENABLE_OFFSET 11
61#define OSDCTRL0_VL_CHANNEL_OFFSET 10
62#define OSDVL0CTRL0_VL_PRIO_OFFSET 24
63#define OSDVL0CTRL0_VL_PRIO_SIZE 3
64#define OSDVL0CTRL0_VL_STARTX_OFFSET 12
65#define OSDVL0CTRL0_VL_STARTXY_SIZE 12
66#define OSDVL0CTRL0_VL_STARTY_OFFSET 0
67#define OSDVL0CTRL0_VL_YUV420PLA_OFFSET 24
68#define OSDVL0CTRL0_VL_YUV422ENABLE_OFFSET 25
69#define OSDVL0CTRL0_VL_YUV422SEQ_OFFSET 26
70#define OSDVL0CTRL0_VL_YUV422SEQ_SIZE 2
71#define OSDVL0STRI_VL_LUMASTR_OFFSET 16
72#define OSDVL0STRI_VL_STR_SIZE 16
73#define OSDVL0STRI_VL_CHROMSTR_OFFSET 0
74#define OSDVL0SRCHW_VL_SRCW_OFFSET 16
75#define OSDVL0SRCHW_VL_SRCHW_SIZE 14
76#define OSDVL0SRCHW_VL_SRCH_OFFSET 0
77#define OSDVL0ALP_VL_GALPENABLE_OFFSET 0
78#define OSDVL0ALP_VL_GALPVAL_OFFSET 8
79#define OSDVL0ALP_VL_GALPVAL_SIZE 8
80
81#define OSDCTRL0_GL_ENABLE_OFFSET 5
82#define OSDCTRL0_GL_CHANNEL_OFFSET 4
83#define OSDGL0CTRL0_GL_PRIO_OFFSET 24
84#define OSDGL0CTRL0_GL_PRIO_SIZE 3
85#define OSDCTRL0_GL_ENDIANSEL_OFFSET 27
86#define OSDGL0CTRL0_GL_POSX_OFFSET 12
87#define OSDGL0CTRL0_GL_POSXY_SIZE 12
88#define OSDGL0CTRL0_GL_POSY_OFFSET 0
89#define OSDGL0CTRL1_GL_FORMAT_OFFSET 24
90#define OSDGL0CTRL1_GL_FORMAT_SIZE 4
91#define OSDGL0CTRL2_GL_ALP_A0RGB1555_OFFSET 24
92#define OSDGL0CTRL2_GL_ALP_VAL_SIZE 8
93#define OSDGL0CTRL2_GL_ALP_A1RGB1555_OFFSET 16
94#define OSDGL0CTRL2_GL_GALP_OFFSET 8
95#define OSDGL0CTRL2_GL_ALPRANG_OFFSET 3
96#define OSDGL0CTRL2_GL_ALPMODE_OFFSET 4
97#define OSDGL0CTRL2_GL_ALPMODE_SIZE 2
98#define OSDGL0CTRL2_GL_EXTDIR_OFFSET 2
99#define OSDGL0CTRL2_GL_EXTTYPE_OFFSET 0
100#define OSDGL0CTRL2_GL_EXTTYPE_SIZE 2
101#define OSDGL0STRI_GL_STRI_OFFSET 0
102#define OSDGL0STRI_GL_STRI_SIZE 14
103#define OSDGL0KEY_GL_CKALP_OFFSET 24
104#define OSDGL0KEY_GL_CKALP_SIZE 8
105#define OSDGL0KEY_GL_CKRGB_SIZE 8
106#define OSDGL0KEY_GL_CKR_OFFSET 16
107#define OSDGL0KEY_GL_CKG_OFFSET 8
108#define OSDGL0KEY_GL_CKB_OFFSET 0
109#define OSDGL0KEYMIN1_GL_CKREG1_ENABLE_OFFSET 31
110#define OSDMCTRL1_MC_SCRW_OFFSET 20
111#define OSDMCTRL1_MC_SCRWH_SIZE 12
112#define OSDMCTRL1_MC_SCRH_OFFSET 8
113#define OSDMBGCTRL_MC_R_OFFSET 16
114#define OSDMBGCTRL_MC_G_OFFSET 8
115#define OSDMBGCTRL_MC_B_OFFSET 0
116#define OSDMBGCTRL_MC_RGB_SIZE 8
117#define OSDMCTRL0_MC_ENABLE_OFFSET 0
118#define OSDMUPT_ENABLE_OFFSET 0
119
120
121#define OSDWBCTRL0_WB_STRIDE_OFFSET 12
122#define OSDWBCTRL0_WB_STRIDE_SIZE 16
123#define OSDWBCTRL0_WB_ENABLE_OFFSET 0
124#define OSDWBCTRL0_WB_BUFNUM_OFFSET 10
125#define OSDWBCTRL0_WB_BUFNUM_SIZE 2
126#define OSDWBCTRL0_WB_PERIOD_OFFSET 7
127#define OSDWBCTRL0_WB_PERIOD_SIZE 3
128#define OSDWBCTRL0_WB_FORMAT_OFFSET1 3
129#define OSDWBCTRL0_WB_FORMAT_OFFSET2 4
130
131#define CSC_ENABLE_OFFSET 16
132#define CSC_MODE_OFFSET 0
133#define CSC_MODE_SIZE 16
134#define CSC_AC_OFFSET 16
135#define CSC_BD_OFFSET 0
136#define CSC_ACBD_SIZE 16
137#define CSC_SPACE_FLOOR_OFFSET 16
138#define CSC_SPACE_TOP_OFFSET 0
139#define CSC_SPACE_LEVEL_SIZE 8
140
141/*OSD interrupt status bit offset*/
142#define OSD_MC_FINISH_OFFSET 0
143#define OSD_CFG_ERROR_OFFSET 2
144#define OSD_BUS_ERROR_OFFSET 3
145#define OSD_VL_BWLOW_OFFSET 7
146#define OSD_GL_BWLOW_OFFSET 10
147#define OSD_MC_REGUPT_OFFSET 13
148#define OSD_WR_FINISH_OFFSET 24
149#define OSD_WR_OVERFLOW_OFFSET 25
150
151#define set_reg_bit(regName, bitAddr, bitValue) \
152do{ \
153 if(bitValue == TRUE) \
154 reg32(regName) |= (0x1<<bitAddr); \
155 else \
156 reg32(regName) &= ~(0x1<<bitAddr); \
157}while(0)
158
159#define set_reg_bits(regName, bitsAddr, bitsLen, bitsValue) \
160do{ \
161 reg32(regName) = (reg32(regName)&(~(((0x1<<bitsLen)-0x1)<<bitsAddr)))|(bitsValue<<bitsAddr);\
162}while(0)
163
164
165/****************************************************************************
166* Types
167****************************************************************************/
168typedef enum
169{
170 EPOSEDGE_VALID = 0,
171 eNEGEDGE_VALID = 1,
172 MAX_POLARITY_TYPE =2
173}E_MCU_FMARK_POLARITY;
174
175typedef volatile struct _T_OSDGlobal_Regs
176{
177 UINT32 OSD_VER; //0x00
178 UINT32 OSD_INT_STA; //0x04
179 UINT32 OSD_CLRINT_STA; //0x08
180 UINT32 OSD_INT_MSK; //0x0C
181 UINT32 OSD_CTRL0; //0x10
182}T_OSDGlobal_Regs;
183
184typedef volatile struct _T_OSD_VL_Regs
185{
186 UINT32 OSD_VL0_CTRL0; //0x024
187 UINT32 OSD_VL0_CTRL1; //0x028
188 UINT32 RESERVED0;
189 UINT32 OSD_VL0_STRI; //0x30
190 UINT32 OSD_VL0_SRC_HW; //0x34
191 UINT32 OSD_VL0_Y; //0x38
192 UINT32 OSD_VL0_U; //0x3C
193 UINT32 OSD_VL0_V; //0x40
194 UINT32 OSD_VL0_ALP; //0x44
195}T_OSD_VL_Regs;
196
197typedef volatile struct _T_OSD_GL_Regs
198{
199 UINT32 OSD_GL0_CTRL0; //0x090
200 UINT32 OSD_GL0_CTRL1; //0x094
201 UINT32 OSD_GL0_CTRL2; //0x098
202 UINT32 RESERVED0; //0x09C
203 UINT32 OSD_GL0_STRI; //0x0A0
204 UINT32 OSD_GL0_ADDR; //0x0A4
205 UINT32 RESERVED1; //0x0A8
206 UINT32 OSD_GL0_KEY_MIN0; //0x0AC
207 UINT32 OSD_GL0_KEY_MAX0; //0x0B0
208 UINT32 OSD_GL0_KEY_MIN1; //0x0B4
209 UINT32 OSD_GL0_KEY_MAX1; //0x0B8
210}T_OSD_GL_Regs;
211
212typedef volatile struct _T_OSD_MainChanel_Regs
213{
214 UINT32 OSD_MAIN_CHANL_CTRL0; //0x114
215 UINT32 OSD_MAIN_CHANL_CTRL1; //0x118
216 UINT32 OSD_MAIN_CHANL_UPT; //0x11C
217 UINT32 RESERVED0; //0x120
218 UINT32 OSD_MAIN_BG_CTRL; //0x124
219 UINT32 RESERVED[5]; //0x128~0x138
220 UINT32 OSD_CTRL1; //0x13C
221}T_OSD_MainChanel_Regs;
222
223typedef volatile struct _T_OSD_WB_Regs
224{
225 UINT32 OSD_WB_CTRL0; //0x14C
226 UINT32 OSD_WB_CTRL1; //0x150
227 UINT32 OSD_WB_ADDR0; //0x154
228 UINT32 OSD_WB_ADDR1; //0x158
229 UINT32 OSD_WB_ADDR2; //0x15C
230 UINT32 OSD_WB_ADDR3; //0x160
231}T_OSD_WB_Regs;
232
233typedef volatile struct _T_OSD_CSC_Regs
234{
235 UINT32 OSD_CSC_MODE; //0x00
236 UINT32 OSD_A1_B1; //0x04
237 UINT32 OSD_C1_D1; //0x08
238 UINT32 OSD_A2_B2; //0x0C
239 UINT32 OSD_C2_D2; //0x10
240 UINT32 OSD_A3_B3; //0x14
241 UINT32 OSD_C3_D3; //0x18
242 UINT32 OSD_SPACE_IN1; //0x1C
243 UINT32 OSD_SPACE_IN2; //0x20
244 UINT32 OSD_SPACE_IN3; //0x24
245 UINT32 OSD_SPACE_OUT1; //0x28
246 UINT32 OSD_SPACE_OUT2; //0x2C
247 UINT32 OSD_SPACE_OUT3; //0x30
248}T_CSC_Regs;
249
250typedef volatile struct _T_VOU_Regs
251{
252 T_OSDGlobal_Regs *ptOSDGlobal;
253 T_OSD_VL_Regs *ptOSDVL;
254 T_OSD_GL_Regs *ptOSDGL;
255 T_OSD_MainChanel_Regs *ptOSDMC;
256 T_OSD_WB_Regs *ptOSDWB;
257 T_CSC_Regs *ptOSDCSC;
258}T_VOU_Regs;
259
260/****************************************************************************
261* Constants
262****************************************************************************/
263
264/****************************************************************************
265* Global Variables
266****************************************************************************/
267
268/****************************************************************************
269* Function Prototypes
270****************************************************************************/
271SINT32 zDrvVOU_Open(void);
272void zDrvVOU_GetDevInfo(T_ZDrv_OSDInfo *ptDevInfo);
273SINT32 zDrvVOU_Close(VOID);
274SINT32 zDrvVOU_OneFrame(T_ZDrv_VOU_OSDPara *ptOSDPara);
275SINT32 zDrvVOU_WBParaUpdate(T_ZDrv_VOU_WBPara *ptWBPara);
276void zDrvVOU_ClkCtrl(T_ZDrvSysClk_Gate ClkCtrl);
277
278
279
280#endif/*_FILENAME_H*/
281