xref: /openbmc/linux/drivers/gpu/drm/meson/meson_viu.h (revision 8dd06ef34b6e2f41b29fbf5fc1663780f2524285)
11ccea77eSThomas Gleixner /* SPDX-License-Identifier: GPL-2.0-or-later */
2bbbe775eSNeil Armstrong /*
3bbbe775eSNeil Armstrong  * Copyright (C) 2016 BayLibre, SAS
4bbbe775eSNeil Armstrong  * Author: Neil Armstrong <narmstrong@baylibre.com>
5bbbe775eSNeil Armstrong  */
6bbbe775eSNeil Armstrong 
7bbbe775eSNeil Armstrong /* Video Input Unit */
8bbbe775eSNeil Armstrong 
9bbbe775eSNeil Armstrong #ifndef __MESON_VIU_H
10bbbe775eSNeil Armstrong #define __MESON_VIU_H
11bbbe775eSNeil Armstrong 
12bbbe775eSNeil Armstrong /* OSDx_BLKx_CFG */
1326a7abd4SNeil Armstrong #define OSD_MALI_SRC_EN		BIT(30)
1426a7abd4SNeil Armstrong 
15bbbe775eSNeil Armstrong #define OSD_CANVAS_SEL		16
16bbbe775eSNeil Armstrong 
17bbbe775eSNeil Armstrong #define OSD_ENDIANNESS_LE	BIT(15)
18bbbe775eSNeil Armstrong #define OSD_ENDIANNESS_BE	(0)
19bbbe775eSNeil Armstrong 
20bbbe775eSNeil Armstrong #define OSD_BLK_MODE_422	(0x03 << 8)
21bbbe775eSNeil Armstrong #define OSD_BLK_MODE_16		(0x04 << 8)
22bbbe775eSNeil Armstrong #define OSD_BLK_MODE_32		(0x05 << 8)
23bbbe775eSNeil Armstrong #define OSD_BLK_MODE_24		(0x07 << 8)
24bbbe775eSNeil Armstrong 
25bbbe775eSNeil Armstrong #define OSD_OUTPUT_COLOR_RGB	BIT(7)
26bbbe775eSNeil Armstrong #define OSD_OUTPUT_COLOR_YUV	(0)
27bbbe775eSNeil Armstrong 
28bbbe775eSNeil Armstrong #define OSD_COLOR_MATRIX_32_RGBA	(0x00 << 2)
29bbbe775eSNeil Armstrong #define OSD_COLOR_MATRIX_32_ARGB	(0x01 << 2)
30bbbe775eSNeil Armstrong #define OSD_COLOR_MATRIX_32_ABGR	(0x02 << 2)
31bbbe775eSNeil Armstrong #define OSD_COLOR_MATRIX_32_BGRA	(0x03 << 2)
32bbbe775eSNeil Armstrong 
33bbbe775eSNeil Armstrong #define OSD_COLOR_MATRIX_24_RGB		(0x00 << 2)
34bbbe775eSNeil Armstrong 
35bbbe775eSNeil Armstrong #define OSD_COLOR_MATRIX_16_RGB655	(0x00 << 2)
36bbbe775eSNeil Armstrong #define OSD_COLOR_MATRIX_16_RGB565	(0x04 << 2)
37bbbe775eSNeil Armstrong 
3826a7abd4SNeil Armstrong #define OSD_MALI_COLOR_MODE_R8		(0 << 8)
3926a7abd4SNeil Armstrong #define OSD_MALI_COLOR_MODE_YUV422	(1 << 8)
4026a7abd4SNeil Armstrong #define OSD_MALI_COLOR_MODE_RGB565	(2 << 8)
4126a7abd4SNeil Armstrong #define OSD_MALI_COLOR_MODE_RGBA5551	(3 << 8)
4226a7abd4SNeil Armstrong #define OSD_MALI_COLOR_MODE_RGBA4444	(4 << 8)
4326a7abd4SNeil Armstrong #define OSD_MALI_COLOR_MODE_RGBA8888	(5 << 8)
4426a7abd4SNeil Armstrong #define OSD_MALI_COLOR_MODE_RGB888	(7 << 8)
4526a7abd4SNeil Armstrong #define OSD_MALI_COLOR_MODE_YUV422_10B	(8 << 8)
4626a7abd4SNeil Armstrong #define OSD_MALI_COLOR_MODE_RGBA1010102	(9 << 8)
4726a7abd4SNeil Armstrong 
48bbbe775eSNeil Armstrong #define OSD_INTERLACE_ENABLED	BIT(1)
49bbbe775eSNeil Armstrong #define OSD_INTERLACE_ODD	BIT(0)
50bbbe775eSNeil Armstrong #define OSD_INTERLACE_EVEN	(0)
51bbbe775eSNeil Armstrong 
52bbbe775eSNeil Armstrong /* OSDx_CTRL_STAT */
53bbbe775eSNeil Armstrong #define OSD_ENABLE		BIT(21)
5426a7abd4SNeil Armstrong #define OSD_MEM_LINEAR_ADDR	BIT(2)
55bbbe775eSNeil Armstrong #define OSD_BLK0_ENABLE		BIT(0)
56bbbe775eSNeil Armstrong 
57bbbe775eSNeil Armstrong #define OSD_GLOBAL_ALPHA_SHIFT	12
58bbbe775eSNeil Armstrong 
59bbbe775eSNeil Armstrong /* OSDx_CTRL_STAT2 */
6026a7abd4SNeil Armstrong #define OSD_DPATH_MALI_AFBCD	BIT(15)
61bbbe775eSNeil Armstrong #define OSD_REPLACE_EN		BIT(14)
62bbbe775eSNeil Armstrong #define OSD_REPLACE_SHIFT	6
6326a7abd4SNeil Armstrong #define OSD_PENDING_STAT_CLEAN	BIT(1)
64bbbe775eSNeil Armstrong 
653a936bc2SNeil Armstrong void meson_viu_osd1_reset(struct meson_drm *priv);
66*1b85270fSNeil Armstrong void meson_viu_g12a_enable_osd1_afbc(struct meson_drm *priv);
67*1b85270fSNeil Armstrong void meson_viu_g12a_disable_osd1_afbc(struct meson_drm *priv);
68*1b85270fSNeil Armstrong void meson_viu_gxm_enable_osd1_afbc(struct meson_drm *priv);
69*1b85270fSNeil Armstrong void meson_viu_gxm_disable_osd1_afbc(struct meson_drm *priv);
70bbbe775eSNeil Armstrong void meson_viu_init(struct meson_drm *priv);
71bbbe775eSNeil Armstrong 
72bbbe775eSNeil Armstrong #endif /* __MESON_VIU_H */
73