1*8c4ae218SIcenowy Zheng /* SPDX-License-Identifier: GPL-2.0-or-later */ 2*8c4ae218SIcenowy Zheng /* 3*8c4ae218SIcenowy Zheng * Copyright (C) 2025 Icenowy Zheng <uwu@icenowy.me> 4*8c4ae218SIcenowy Zheng * 5*8c4ae218SIcenowy Zheng * Based on vs_dc_hw.h, which is: 6*8c4ae218SIcenowy Zheng * Copyright (C) 2023 VeriSilicon Holdings Co., Ltd. 7*8c4ae218SIcenowy Zheng */ 8*8c4ae218SIcenowy Zheng 9*8c4ae218SIcenowy Zheng #ifndef _VS_CURSOR_PLANE_REGS_H_ 10*8c4ae218SIcenowy Zheng #define _VS_CURSOR_PLANE_REGS_H_ 11*8c4ae218SIcenowy Zheng 12*8c4ae218SIcenowy Zheng #include <linux/bits.h> 13*8c4ae218SIcenowy Zheng 14*8c4ae218SIcenowy Zheng #define VSDC_CURSOR_CONFIG(n) (0x1468 + 0x1080 * (n)) 15*8c4ae218SIcenowy Zheng #define VSDC_CURSOR_CONFIG_FMT_MASK GENMASK(1, 0) 16*8c4ae218SIcenowy Zheng #define VSDC_CURSOR_CONFIG_FMT_ARGB8888 (0x2 << 0) 17*8c4ae218SIcenowy Zheng #define VSDC_CURSOR_CONFIG_FMT_OFF (0x0 << 0) 18*8c4ae218SIcenowy Zheng #define VSDC_CURSOR_CONFIG_IMG_UPDATE BIT(2) 19*8c4ae218SIcenowy Zheng #define VSDC_CURSOR_CONFIG_COMMIT BIT(3) 20*8c4ae218SIcenowy Zheng #define VSDC_CURSOR_CONFIG_SIZE_MASK GENMASK(7, 5) 21*8c4ae218SIcenowy Zheng #define VSDC_CURSOR_CONFIG_SIZE_32 (0x0 << 5) 22*8c4ae218SIcenowy Zheng #define VSDC_CURSOR_CONFIG_SIZE_64 (0x1 << 5) 23*8c4ae218SIcenowy Zheng #define VSDC_CURSOR_CONFIG_SIZE_128 (0x2 << 5) 24*8c4ae218SIcenowy Zheng #define VSDC_CURSOR_CONFIG_SIZE_256 (0x3 << 5) 25*8c4ae218SIcenowy Zheng #define VSDC_CURSOR_CONFIG_Y_OFF_MASK GENMASK(12, 8) 26*8c4ae218SIcenowy Zheng #define VSDC_CURSOR_CONFIG_Y_OFF(v) ((v) << 8) 27*8c4ae218SIcenowy Zheng #define VSDC_CURSOR_CONFIG_X_OFF_MASK GENMASK(20, 16) 28*8c4ae218SIcenowy Zheng #define VSDC_CURSOR_CONFIG_X_OFF(v) ((v) << 16) 29*8c4ae218SIcenowy Zheng 30*8c4ae218SIcenowy Zheng #define VSDC_CURSOR_ADDRESS(n) (0x146C + 0x1080 * (n)) 31*8c4ae218SIcenowy Zheng 32*8c4ae218SIcenowy Zheng #define VSDC_CURSOR_LOCATION(n) (0x1470 + 0x1080 * (n)) 33*8c4ae218SIcenowy Zheng #define VSDC_CURSOR_LOCATION_X_MASK GENMASK(14, 0) 34*8c4ae218SIcenowy Zheng #define VSDC_CURSOR_LOCATION_X(v) ((v) << 0) 35*8c4ae218SIcenowy Zheng #define VSDC_CURSOR_LOCATION_Y_MASK GENMASK(30, 16) 36*8c4ae218SIcenowy Zheng #define VSDC_CURSOR_LOCATION_Y(v) ((v) << 16) 37*8c4ae218SIcenowy Zheng 38*8c4ae218SIcenowy Zheng #define VSDC_CURSOR_BACKGROUND(n) (0x1474 + 0x1080 * (n)) 39*8c4ae218SIcenowy Zheng #define VSDC_CURSOR_BACKGRUOND_DEFAULT 0x00FFFFFF 40*8c4ae218SIcenowy Zheng 41*8c4ae218SIcenowy Zheng #define VSDC_CURSOR_FOREGROUND(n) (0x1478 + 0x1080 * (n)) 42*8c4ae218SIcenowy Zheng #define VSDC_CURSOR_FOREGRUOND_DEFAULT 0x00AAAAAA 43*8c4ae218SIcenowy Zheng 44*8c4ae218SIcenowy Zheng #endif /* _VS_CURSOR_PLANE_REGS_H_ */ 45