Skip to content

Commit b7019b2

Browse files
alexdeucherairlied
authored andcommitted
drm/radeon: SI tiling fixes for display
- Use the correct union for getting the tiling info - Properly init the PIPE_CONFIG field for SI Signed-off-by: Alex Deucher <[email protected]> Reviewed-by: Michel Dänzer <[email protected]> Signed-off-by: Dave Airlie <[email protected]>
1 parent fb09185 commit b7019b2

File tree

2 files changed

+81
-1
lines changed

2 files changed

+81
-1
lines changed

drivers/gpu/drm/radeon/atombios_crtc.c

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1149,7 +1149,9 @@ static int dce4_crtc_do_set_base(struct drm_crtc *crtc,
11491149
}
11501150

11511151
if (tiling_flags & RADEON_TILING_MACRO) {
1152-
if (rdev->family >= CHIP_CAYMAN)
1152+
if (rdev->family >= CHIP_TAHITI)
1153+
tmp = rdev->config.si.tile_config;
1154+
else if (rdev->family >= CHIP_CAYMAN)
11531155
tmp = rdev->config.cayman.tile_config;
11541156
else
11551157
tmp = rdev->config.evergreen.tile_config;
@@ -1177,6 +1179,12 @@ static int dce4_crtc_do_set_base(struct drm_crtc *crtc,
11771179
} else if (tiling_flags & RADEON_TILING_MICRO)
11781180
fb_format |= EVERGREEN_GRPH_ARRAY_MODE(EVERGREEN_GRPH_ARRAY_1D_TILED_THIN1);
11791181

1182+
if ((rdev->family == CHIP_TAHITI) ||
1183+
(rdev->family == CHIP_PITCAIRN))
1184+
fb_format |= SI_GRPH_PIPE_CONFIG(SI_ADDR_SURF_P8_32x32_8x16);
1185+
else if (rdev->family == CHIP_VERDE)
1186+
fb_format |= SI_GRPH_PIPE_CONFIG(SI_ADDR_SURF_P4_8x16);
1187+
11801188
switch (radeon_crtc->crtc_id) {
11811189
case 0:
11821190
WREG32(AVIVO_D1VGA_CONTROL, 0);

drivers/gpu/drm/radeon/si_reg.h

Lines changed: 72 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,4 +30,76 @@
3030
#define SI_DC_GPIO_HPD_EN 0x65b8
3131
#define SI_DC_GPIO_HPD_Y 0x65bc
3232

33+
#define SI_GRPH_CONTROL 0x6804
34+
# define SI_GRPH_DEPTH(x) (((x) & 0x3) << 0)
35+
# define SI_GRPH_DEPTH_8BPP 0
36+
# define SI_GRPH_DEPTH_16BPP 1
37+
# define SI_GRPH_DEPTH_32BPP 2
38+
# define SI_GRPH_NUM_BANKS(x) (((x) & 0x3) << 2)
39+
# define SI_ADDR_SURF_2_BANK 0
40+
# define SI_ADDR_SURF_4_BANK 1
41+
# define SI_ADDR_SURF_8_BANK 2
42+
# define SI_ADDR_SURF_16_BANK 3
43+
# define SI_GRPH_Z(x) (((x) & 0x3) << 4)
44+
# define SI_GRPH_BANK_WIDTH(x) (((x) & 0x3) << 6)
45+
# define SI_ADDR_SURF_BANK_WIDTH_1 0
46+
# define SI_ADDR_SURF_BANK_WIDTH_2 1
47+
# define SI_ADDR_SURF_BANK_WIDTH_4 2
48+
# define SI_ADDR_SURF_BANK_WIDTH_8 3
49+
# define SI_GRPH_FORMAT(x) (((x) & 0x7) << 8)
50+
/* 8 BPP */
51+
# define SI_GRPH_FORMAT_INDEXED 0
52+
/* 16 BPP */
53+
# define SI_GRPH_FORMAT_ARGB1555 0
54+
# define SI_GRPH_FORMAT_ARGB565 1
55+
# define SI_GRPH_FORMAT_ARGB4444 2
56+
# define SI_GRPH_FORMAT_AI88 3
57+
# define SI_GRPH_FORMAT_MONO16 4
58+
# define SI_GRPH_FORMAT_BGRA5551 5
59+
/* 32 BPP */
60+
# define SI_GRPH_FORMAT_ARGB8888 0
61+
# define SI_GRPH_FORMAT_ARGB2101010 1
62+
# define SI_GRPH_FORMAT_32BPP_DIG 2
63+
# define SI_GRPH_FORMAT_8B_ARGB2101010 3
64+
# define SI_GRPH_FORMAT_BGRA1010102 4
65+
# define SI_GRPH_FORMAT_8B_BGRA1010102 5
66+
# define SI_GRPH_FORMAT_RGB111110 6
67+
# define SI_GRPH_FORMAT_BGR101111 7
68+
# define SI_GRPH_BANK_HEIGHT(x) (((x) & 0x3) << 11)
69+
# define SI_ADDR_SURF_BANK_HEIGHT_1 0
70+
# define SI_ADDR_SURF_BANK_HEIGHT_2 1
71+
# define SI_ADDR_SURF_BANK_HEIGHT_4 2
72+
# define SI_ADDR_SURF_BANK_HEIGHT_8 3
73+
# define SI_GRPH_TILE_SPLIT(x) (((x) & 0x7) << 13)
74+
# define SI_ADDR_SURF_TILE_SPLIT_64B 0
75+
# define SI_ADDR_SURF_TILE_SPLIT_128B 1
76+
# define SI_ADDR_SURF_TILE_SPLIT_256B 2
77+
# define SI_ADDR_SURF_TILE_SPLIT_512B 3
78+
# define SI_ADDR_SURF_TILE_SPLIT_1KB 4
79+
# define SI_ADDR_SURF_TILE_SPLIT_2KB 5
80+
# define SI_ADDR_SURF_TILE_SPLIT_4KB 6
81+
# define SI_GRPH_MACRO_TILE_ASPECT(x) (((x) & 0x3) << 18)
82+
# define SI_ADDR_SURF_MACRO_TILE_ASPECT_1 0
83+
# define SI_ADDR_SURF_MACRO_TILE_ASPECT_2 1
84+
# define SI_ADDR_SURF_MACRO_TILE_ASPECT_4 2
85+
# define SI_ADDR_SURF_MACRO_TILE_ASPECT_8 3
86+
# define SI_GRPH_ARRAY_MODE(x) (((x) & 0x7) << 20)
87+
# define SI_GRPH_ARRAY_LINEAR_GENERAL 0
88+
# define SI_GRPH_ARRAY_LINEAR_ALIGNED 1
89+
# define SI_GRPH_ARRAY_1D_TILED_THIN1 2
90+
# define SI_GRPH_ARRAY_2D_TILED_THIN1 4
91+
# define SI_GRPH_PIPE_CONFIG(x) (((x) & 0x1f) << 24)
92+
# define SI_ADDR_SURF_P2 0
93+
# define SI_ADDR_SURF_P4_8x16 4
94+
# define SI_ADDR_SURF_P4_16x16 5
95+
# define SI_ADDR_SURF_P4_16x32 6
96+
# define SI_ADDR_SURF_P4_32x32 7
97+
# define SI_ADDR_SURF_P8_16x16_8x16 8
98+
# define SI_ADDR_SURF_P8_16x32_8x16 9
99+
# define SI_ADDR_SURF_P8_32x32_8x16 10
100+
# define SI_ADDR_SURF_P8_16x32_16x16 11
101+
# define SI_ADDR_SURF_P8_32x32_16x16 12
102+
# define SI_ADDR_SURF_P8_32x32_16x32 13
103+
# define SI_ADDR_SURF_P8_32x64_32x32 14
104+
33105
#endif

0 commit comments

Comments
 (0)