1/* SPDX-License-Identifier: GPL-2.0 */
2/*
3 * Register definition header for NPCM video driver
4 *
5 * Copyright (C) 2022 Nuvoton Technologies
6 */
7
8#ifndef _NPCM_REGS_H
9#define _NPCM_REGS_H
10
11/* VCD Registers */
12#define VCD_DIFF_TBL 0x0000
13#define VCD_FBA_ADR 0x8000
14#define VCD_FBB_ADR 0x8004
15
16#define VCD_FB_LP 0x8008
17#define VCD_FBA_LP GENMASK(15, 0)
18#define VCD_FBB_LP GENMASK(31, 16)
19
20#define VCD_CAP_RES 0x800c
21#define VCD_CAP_RES_VERT_RES GENMASK(10, 0)
22#define VCD_CAP_RES_HOR_RES GENMASK(26, 16)
23
24#define VCD_MODE 0x8014
25#define VCD_MODE_VCDE BIT(0)
26#define VCD_MODE_CM565 BIT(1)
27#define VCD_MODE_IDBC BIT(3)
28#define VCD_MODE_KVM_BW_SET BIT(16)
29
30#define VCD_CMD 0x8018
31#define VCD_CMD_GO BIT(0)
32#define VCD_CMD_RST BIT(1)
33#define VCD_CMD_OPERATION GENMASK(6, 4)
34#define VCD_CMD_OPERATION_CAPTURE 0
35#define VCD_CMD_OPERATION_COMPARE 2
36
37#define VCD_STAT 0x801c
38#define VCD_STAT_DONE BIT(0)
39#define VCD_STAT_IFOT BIT(2)
40#define VCD_STAT_IFOR BIT(3)
41#define VCD_STAT_VHT_CHG BIT(5)
42#define VCD_STAT_HAC_CHG BIT(8)
43#define VCD_STAT_BUSY BIT(30)
44#define VCD_STAT_CLEAR 0x3fff
45
46#define VCD_INTE 0x8020
47#define VCD_INTE_DONE_IE BIT(0)
48#define VCD_INTE_IFOT_IE BIT(2)
49#define VCD_INTE_IFOR_IE BIT(3)
50#define VCD_INTE_VHT_IE BIT(5)
51#define VCD_INTE_HAC_IE BIT(8)
52
53#define VCD_RCHG 0x8028
54#define VCD_RCHG_IG_CHG0 GENMASK(2, 0)
55#define VCD_RCHG_TIM_PRSCL GENMASK(12, 9)
56
57#define VCD_VER_HI_TIM 0x8044
58#define VCD_VER_HI_TIME GENMASK(23, 0)
59
60#define VCD_VER_HI_LST 0x8048
61#define VCD_VER_HI_LAST GENMASK(23, 0)
62
63#define VCD_HOR_AC_TIM 0x804c
64#define VCD_HOR_AC_TIME GENMASK(13, 0)
65
66#define VCD_HOR_AC_LST 0x8050
67#define VCD_HOR_AC_LAST GENMASK(13, 0)
68
69#define VCD_FIFO 0x805c
70#define VCD_FIFO_TH 0x100350ff
71
72#define VCD_FB_SIZE 0x500000 /* support up to 1920 x 1200 */
73#define VCD_KVM_BW_PCLK 120000000UL
74#define VCD_TIMEOUT_US 300000
75
76/* ECE Registers */
77#define ECE_DDA_CTRL 0x0000
78#define ECE_DDA_CTRL_ECEEN BIT(0)
79#define ECE_DDA_CTRL_INTEN BIT(8)
80
81#define ECE_DDA_STS 0x0004
82#define ECE_DDA_STS_CDREADY BIT(8)
83#define ECE_DDA_STS_ACDRDY BIT(10)
84
85#define ECE_FBR_BA 0x0008
86#define ECE_ED_BA 0x000c
87#define ECE_RECT_XY 0x0010
88
89#define ECE_RECT_DIMEN 0x0014
90#define ECE_RECT_DIMEN_WR GENMASK(10, 0)
91#define ECE_RECT_DIMEN_WLTR GENMASK(14, 11)
92#define ECE_RECT_DIMEN_HR GENMASK(26, 16)
93#define ECE_RECT_DIMEN_HLTR GENMASK(30, 27)
94
95#define ECE_RESOL 0x001c
96#define ECE_RESOL_FB_LP_512 0
97#define ECE_RESOL_FB_LP_1024 1
98#define ECE_RESOL_FB_LP_2048 2
99#define ECE_RESOL_FB_LP_2560 3
100#define ECE_RESOL_FB_LP_4096 4
101
102#define ECE_HEX_CTRL 0x0040
103#define ECE_HEX_CTRL_ENCDIS BIT(0)
104#define ECE_HEX_CTRL_ENC_GAP GENMASK(12, 8)
105
106#define ECE_HEX_RECT_OFFSET 0x0048
107#define ECE_HEX_RECT_OFFSET_MASK GENMASK(22, 0)
108
109#define ECE_TILE_W 16
110#define ECE_TILE_H 16
111#define ECE_POLL_TIMEOUT_US 300000
112
113/* GCR Registers */
114#define INTCR 0x3c
115#define INTCR_GFXIFDIS GENMASK(9, 8)
116#define INTCR_DEHS BIT(27)
117
118#define INTCR2 0x60
119#define INTCR2_GIRST2 BIT(2)
120#define INTCR2_GIHCRST BIT(5)
121#define INTCR2_GIVCRST BIT(6)
122
123/* GFXI Register */
124#define DISPST 0x00
125#define DISPST_HSCROFF BIT(1)
126#define DISPST_MGAMODE BIT(7)
127
128#define HVCNTL 0x10
129#define HVCNTL_MASK GENMASK(7, 0)
130
131#define HVCNTH 0x14
132#define HVCNTH_MASK GENMASK(2, 0)
133
134#define VVCNTL 0x20
135#define VVCNTL_MASK GENMASK(7, 0)
136
137#define VVCNTH 0x24
138#define VVCNTH_MASK GENMASK(2, 0)
139
140#define GPLLINDIV 0x40
141#define GPLLINDIV_MASK GENMASK(5, 0)
142#define GPLLINDIV_GPLLFBDV8 BIT(7)
143
144#define GPLLFBDIV 0x44
145#define GPLLFBDIV_MASK GENMASK(7, 0)
146
147#define GPLLST 0x48
148#define GPLLST_PLLOTDIV1 GENMASK(2, 0)
149#define GPLLST_PLLOTDIV2 GENMASK(5, 3)
150#define GPLLST_GPLLFBDV109 GENMASK(7, 6)
151
152#endif /* _NPCM_REGS_H */
153

source code of linux/drivers/media/platform/nuvoton/npcm-regs.h