xref: /linux/drivers/gpu/drm/verisilicon/vs_crtc_regs.h (revision 0fc8f6200d2313278fbf4539bbab74677c685531)
1*dbf21777SIcenowy Zheng /* SPDX-License-Identifier: GPL-2.0-only */
2*dbf21777SIcenowy Zheng /*
3*dbf21777SIcenowy Zheng  * Copyright (C) 2025 Icenowy Zheng <uwu@icenowy.me>
4*dbf21777SIcenowy Zheng  *
5*dbf21777SIcenowy Zheng  * Based on vs_dc_hw.h, which is:
6*dbf21777SIcenowy Zheng  *   Copyright (C) 2023 VeriSilicon Holdings Co., Ltd.
7*dbf21777SIcenowy Zheng  */
8*dbf21777SIcenowy Zheng 
9*dbf21777SIcenowy Zheng #ifndef _VS_CRTC_REGS_H_
10*dbf21777SIcenowy Zheng #define _VS_CRTC_REGS_H_
11*dbf21777SIcenowy Zheng 
12*dbf21777SIcenowy Zheng #include <linux/bits.h>
13*dbf21777SIcenowy Zheng 
14*dbf21777SIcenowy Zheng #define VSDC_DISP_DITHER_CONFIG(n)		(0x1410 + 0x4 * (n))
15*dbf21777SIcenowy Zheng 
16*dbf21777SIcenowy Zheng #define VSDC_DISP_DITHER_TABLE_LOW(n)		(0x1420 + 0x4 * (n))
17*dbf21777SIcenowy Zheng #define VSDC_DISP_DITHER_TABLE_LOW_DEFAULT	0x7B48F3C0
18*dbf21777SIcenowy Zheng 
19*dbf21777SIcenowy Zheng #define VSDC_DISP_DITHER_TABLE_HIGH(n)		(0x1428 + 0x4 * (n))
20*dbf21777SIcenowy Zheng #define VSDC_DISP_DITHER_TABLE_HIGH_DEFAULT	0x596AD1E2
21*dbf21777SIcenowy Zheng 
22*dbf21777SIcenowy Zheng #define VSDC_DISP_HSIZE(n)			(0x1430 + 0x4 * (n))
23*dbf21777SIcenowy Zheng #define VSDC_DISP_HSIZE_DISP_MASK		GENMASK(14, 0)
24*dbf21777SIcenowy Zheng #define VSDC_DISP_HSIZE_DISP(v)			((v) << 0)
25*dbf21777SIcenowy Zheng #define VSDC_DISP_HSIZE_TOTAL_MASK		GENMASK(30, 16)
26*dbf21777SIcenowy Zheng #define VSDC_DISP_HSIZE_TOTAL(v)		((v) << 16)
27*dbf21777SIcenowy Zheng 
28*dbf21777SIcenowy Zheng #define VSDC_DISP_HSYNC(n)			(0x1438 + 0x4 * (n))
29*dbf21777SIcenowy Zheng #define VSDC_DISP_HSYNC_START_MASK		GENMASK(14, 0)
30*dbf21777SIcenowy Zheng #define VSDC_DISP_HSYNC_START(v)		((v) << 0)
31*dbf21777SIcenowy Zheng #define VSDC_DISP_HSYNC_END_MASK		GENMASK(29, 15)
32*dbf21777SIcenowy Zheng #define VSDC_DISP_HSYNC_END(v)			((v) << 15)
33*dbf21777SIcenowy Zheng #define VSDC_DISP_HSYNC_EN			BIT(30)
34*dbf21777SIcenowy Zheng #define VSDC_DISP_HSYNC_POL			BIT(31)
35*dbf21777SIcenowy Zheng 
36*dbf21777SIcenowy Zheng #define VSDC_DISP_VSIZE(n)			(0x1440 + 0x4 * (n))
37*dbf21777SIcenowy Zheng #define VSDC_DISP_VSIZE_DISP_MASK		GENMASK(14, 0)
38*dbf21777SIcenowy Zheng #define VSDC_DISP_VSIZE_DISP(v)			((v) << 0)
39*dbf21777SIcenowy Zheng #define VSDC_DISP_VSIZE_TOTAL_MASK		GENMASK(30, 16)
40*dbf21777SIcenowy Zheng #define VSDC_DISP_VSIZE_TOTAL(v)		((v) << 16)
41*dbf21777SIcenowy Zheng 
42*dbf21777SIcenowy Zheng #define VSDC_DISP_VSYNC(n)			(0x1448 + 0x4 * (n))
43*dbf21777SIcenowy Zheng #define VSDC_DISP_VSYNC_START_MASK		GENMASK(14, 0)
44*dbf21777SIcenowy Zheng #define VSDC_DISP_VSYNC_START(v)		((v) << 0)
45*dbf21777SIcenowy Zheng #define VSDC_DISP_VSYNC_END_MASK		GENMASK(29, 15)
46*dbf21777SIcenowy Zheng #define VSDC_DISP_VSYNC_END(v)			((v) << 15)
47*dbf21777SIcenowy Zheng #define VSDC_DISP_VSYNC_EN			BIT(30)
48*dbf21777SIcenowy Zheng #define VSDC_DISP_VSYNC_POL			BIT(31)
49*dbf21777SIcenowy Zheng 
50*dbf21777SIcenowy Zheng #define VSDC_DISP_CURRENT_LOCATION(n)		(0x1450 + 0x4 * (n))
51*dbf21777SIcenowy Zheng 
52*dbf21777SIcenowy Zheng #define VSDC_DISP_GAMMA_INDEX(n)		(0x1458 + 0x4 * (n))
53*dbf21777SIcenowy Zheng 
54*dbf21777SIcenowy Zheng #define VSDC_DISP_GAMMA_DATA(n)			(0x1460 + 0x4 * (n))
55*dbf21777SIcenowy Zheng 
56*dbf21777SIcenowy Zheng #define VSDC_DISP_IRQ_STA			0x147C
57*dbf21777SIcenowy Zheng 
58*dbf21777SIcenowy Zheng #define VSDC_DISP_IRQ_EN			0x1480
59*dbf21777SIcenowy Zheng 
60*dbf21777SIcenowy Zheng #endif /* _VS_CRTC_REGS_H_ */
61