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