0e7c5880e867ae435011a2907e88dd97903e8558
[platform/kernel/linux-starfive.git] / drivers / gpu / drm / amd / display / dc / inc / hw / cursor_reg_cache.h
1 /* Copyright © 2022 Advanced Micro Devices, Inc. All rights reserved. */
2
3 #ifndef __DAL_CURSOR_CACHE_H__
4 #define __DAL_CURSOR_CACHE_H__
5
6 union reg_cursor_control_cfg {
7         struct {
8                 uint32_t     cur_enable: 1;
9                 uint32_t         reser0: 3;
10                 uint32_t cur_2x_magnify: 1;
11                 uint32_t         reser1: 3;
12                 uint32_t           mode: 3;
13                 uint32_t         reser2: 5;
14                 uint32_t          pitch: 2;
15                 uint32_t         reser3: 6;
16                 uint32_t line_per_chunk: 5;
17                 uint32_t         reser4: 3;
18         } bits;
19         uint32_t raw;
20 };
21 struct cursor_position_cache_hubp {
22         union reg_cursor_control_cfg cur_ctl;
23         union reg_position_cfg {
24                 struct {
25                         uint32_t x_pos: 16;
26                         uint32_t y_pos: 16;
27                 } bits;
28                 uint32_t raw;
29         } position;
30         union reg_hot_spot_cfg {
31                 struct {
32                         uint32_t x_hot: 16;
33                         uint32_t y_hot: 16;
34                 } bits;
35                 uint32_t raw;
36         } hot_spot;
37         union reg_dst_offset_cfg {
38                 struct {
39                         uint32_t dst_x_offset: 13;
40                         uint32_t     reserved: 19;
41                 } bits;
42                 uint32_t raw;
43         } dst_offset;
44 };
45
46 struct cursor_attribute_cache_hubp {
47         uint32_t SURFACE_ADDR_HIGH;
48         uint32_t SURFACE_ADDR;
49         union    reg_cursor_control_cfg  cur_ctl;
50         union    reg_cursor_size_cfg {
51                 struct {
52                         uint32_t  width: 16;
53                         uint32_t height: 16;
54                 } bits;
55                 uint32_t raw;
56         } size;
57         union    reg_cursor_settings_cfg {
58                 struct {
59                         uint32_t     dst_y_offset: 8;
60                         uint32_t chunk_hdl_adjust: 2;
61                         uint32_t         reserved: 22;
62                 } bits;
63                 uint32_t raw;
64         } settings;
65 };
66
67 struct cursor_rect {
68         uint32_t x;
69         uint32_t y;
70         uint32_t w;
71         uint32_t h;
72 };
73
74 union reg_cur0_control_cfg {
75         struct {
76                 uint32_t     cur0_enable: 1;
77                 uint32_t  expansion_mode: 1;
78                 uint32_t          reser0: 1;
79                 uint32_t     cur0_rom_en: 1;
80                 uint32_t            mode: 3;
81                 uint32_t        reserved: 25;
82         } bits;
83         uint32_t raw;
84 };
85 struct cursor_position_cache_dpp {
86         union reg_cur0_control_cfg cur0_ctl;
87 };
88
89 struct cursor_attribute_cache_dpp {
90         union reg_cur0_control_cfg cur0_ctl;
91 };
92
93 struct cursor_attributes_cfg {
94         struct  cursor_attribute_cache_hubp aHubp;
95         struct  cursor_attribute_cache_dpp  aDpp;
96 };
97
98 #endif