Skip to content

Commit 995a146

Browse files
committed
Merge tag 'amd-drm-fixes-5.14-2021-07-21' of https://gitlab.freedesktop.org/agd5f/linux into drm-fixes
amd-drm-fixes-5.14-2021-07-21: amdgpu: - Yellow Carp updates - Add some Yellow Carp DIDs - Beige Goby updates - CIK 10bit 4K regression fix - GFX10 golden settings updates - eDP panel regression fix - Misc display fixes - Aldebaran fix Signed-off-by: Dave Airlie <airlied@redhat.com> From: Alex Deucher <alexander.deucher@amd.com> Link: https://patchwork.freedesktop.org/patch/msgid/20210721215800.17590-1-alexander.deucher@amd.com
2 parents 2734d6c + d80cded commit 995a146

29 files changed

+288
-483
lines changed

drivers/gpu/drm/amd/amdgpu/amdgpu.h

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -619,6 +619,13 @@ struct amdgpu_video_codec_info {
619619
u32 max_level;
620620
};
621621

622+
#define codec_info_build(type, width, height, level) \
623+
.codec_type = type,\
624+
.max_width = width,\
625+
.max_height = height,\
626+
.max_pixels_per_frame = height * width,\
627+
.max_level = level,
628+
622629
struct amdgpu_video_codecs {
623630
const u32 codec_count;
624631
const struct amdgpu_video_codec_info *codec_array;

drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1190,6 +1190,10 @@ static const struct pci_device_id pciidlist[] = {
11901190
/* Van Gogh */
11911191
{0x1002, 0x163F, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_VANGOGH|AMD_IS_APU},
11921192

1193+
/* Yellow Carp */
1194+
{0x1002, 0x164D, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_YELLOW_CARP|AMD_IS_APU},
1195+
{0x1002, 0x1681, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_YELLOW_CARP|AMD_IS_APU},
1196+
11931197
/* Navy_Flounder */
11941198
{0x1002, 0x73C0, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_NAVY_FLOUNDER},
11951199
{0x1002, 0x73C1, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_NAVY_FLOUNDER},

drivers/gpu/drm/amd/amdgpu/gfx_v10_0.c

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3300,6 +3300,7 @@ static const struct soc15_reg_golden golden_settings_gc_10_3[] =
33003300
SOC15_REG_GOLDEN_VALUE(GC, 0, mmSQ_PERFCOUNTER7_SELECT, 0xf0f001ff, 0x00000000),
33013301
SOC15_REG_GOLDEN_VALUE(GC, 0, mmSQ_PERFCOUNTER8_SELECT, 0xf0f001ff, 0x00000000),
33023302
SOC15_REG_GOLDEN_VALUE(GC, 0, mmSQ_PERFCOUNTER9_SELECT, 0xf0f001ff, 0x00000000),
3303+
SOC15_REG_GOLDEN_VALUE(GC, 0, mmSX_DEBUG_1, 0x00010000, 0x00010020),
33033304
SOC15_REG_GOLDEN_VALUE(GC, 0, mmTA_CNTL_AUX, 0xfff7ffff, 0x01030000),
33043305
SOC15_REG_GOLDEN_VALUE(GC, 0, mmUTCL1_CTRL, 0xffbfffff, 0x00a00000)
33053306
};
@@ -3379,6 +3380,7 @@ static const struct soc15_reg_golden golden_settings_gc_10_3_vangogh[] =
33793380
SOC15_REG_GOLDEN_VALUE(GC, 0, mmPA_SC_ENHANCE_2, 0xffffffbf, 0x00000020),
33803381
SOC15_REG_GOLDEN_VALUE(GC, 0, mmSPI_CONFIG_CNTL_1_Vangogh, 0xffffffff, 0x00070103),
33813382
SOC15_REG_GOLDEN_VALUE(GC, 0, mmSQG_CONFIG, 0x000017ff, 0x00001000),
3383+
SOC15_REG_GOLDEN_VALUE(GC, 0, mmSX_DEBUG_1, 0x00010000, 0x00010020),
33823384
SOC15_REG_GOLDEN_VALUE(GC, 0, mmTA_CNTL_AUX, 0xfff7ffff, 0x01030000),
33833385
SOC15_REG_GOLDEN_VALUE(GC, 0, mmUTCL1_CTRL, 0xffffffff, 0x00400000),
33843386
SOC15_REG_GOLDEN_VALUE(GC, 0, mmVGT_GS_MAX_WAVE_ID, 0x00000fff, 0x000000ff),
@@ -3445,6 +3447,7 @@ static const struct soc15_reg_golden golden_settings_gc_10_3_4[] =
34453447
SOC15_REG_GOLDEN_VALUE(GC, 0, mmSQ_PERFCOUNTER7_SELECT, 0xf0f001ff, 0x00000000),
34463448
SOC15_REG_GOLDEN_VALUE(GC, 0, mmSQ_PERFCOUNTER8_SELECT, 0xf0f001ff, 0x00000000),
34473449
SOC15_REG_GOLDEN_VALUE(GC, 0, mmSQ_PERFCOUNTER9_SELECT, 0xf0f001ff, 0x00000000),
3450+
SOC15_REG_GOLDEN_VALUE(GC, 0, mmSX_DEBUG_1, 0x00010000, 0x00010020),
34483451
SOC15_REG_GOLDEN_VALUE(GC, 0, mmTA_CNTL_AUX, 0x01030000, 0x01030000),
34493452
SOC15_REG_GOLDEN_VALUE(GC, 0, mmUTCL1_CTRL, 0x03a00000, 0x00a00000),
34503453
SOC15_REG_GOLDEN_VALUE(GC, 0, mmLDS_CONFIG, 0x00000020, 0x00000020)

drivers/gpu/drm/amd/amdgpu/nv.c

Lines changed: 50 additions & 198 deletions
Original file line numberDiff line numberDiff line change
@@ -64,32 +64,13 @@
6464
#include "smuio_v11_0.h"
6565
#include "smuio_v11_0_6.h"
6666

67-
#define codec_info_build(type, width, height, level) \
68-
.codec_type = type,\
69-
.max_width = width,\
70-
.max_height = height,\
71-
.max_pixels_per_frame = height * width,\
72-
.max_level = level,
73-
7467
static const struct amd_ip_funcs nv_common_ip_funcs;
7568

7669
/* Navi */
7770
static const struct amdgpu_video_codec_info nv_video_codecs_encode_array[] =
7871
{
79-
{
80-
.codec_type = AMDGPU_INFO_VIDEO_CAPS_CODEC_IDX_MPEG4_AVC,
81-
.max_width = 4096,
82-
.max_height = 2304,
83-
.max_pixels_per_frame = 4096 * 2304,
84-
.max_level = 0,
85-
},
86-
{
87-
.codec_type = AMDGPU_INFO_VIDEO_CAPS_CODEC_IDX_HEVC,
88-
.max_width = 4096,
89-
.max_height = 2304,
90-
.max_pixels_per_frame = 4096 * 2304,
91-
.max_level = 0,
92-
},
72+
{codec_info_build(AMDGPU_INFO_VIDEO_CAPS_CODEC_IDX_MPEG4_AVC, 4096, 2304, 0)},
73+
{codec_info_build(AMDGPU_INFO_VIDEO_CAPS_CODEC_IDX_HEVC, 4096, 2304, 0)},
9374
};
9475

9576
static const struct amdgpu_video_codecs nv_video_codecs_encode =
@@ -101,55 +82,13 @@ static const struct amdgpu_video_codecs nv_video_codecs_encode =
10182
/* Navi1x */
10283
static const struct amdgpu_video_codec_info nv_video_codecs_decode_array[] =
10384
{
104-
{
105-
.codec_type = AMDGPU_INFO_VIDEO_CAPS_CODEC_IDX_MPEG2,
106-
.max_width = 4096,
107-
.max_height = 4096,
108-
.max_pixels_per_frame = 4096 * 4096,
109-
.max_level = 3,
110-
},
111-
{
112-
.codec_type = AMDGPU_INFO_VIDEO_CAPS_CODEC_IDX_MPEG4,
113-
.max_width = 4096,
114-
.max_height = 4096,
115-
.max_pixels_per_frame = 4096 * 4096,
116-
.max_level = 5,
117-
},
118-
{
119-
.codec_type = AMDGPU_INFO_VIDEO_CAPS_CODEC_IDX_MPEG4_AVC,
120-
.max_width = 4096,
121-
.max_height = 4096,
122-
.max_pixels_per_frame = 4096 * 4096,
123-
.max_level = 52,
124-
},
125-
{
126-
.codec_type = AMDGPU_INFO_VIDEO_CAPS_CODEC_IDX_VC1,
127-
.max_width = 4096,
128-
.max_height = 4096,
129-
.max_pixels_per_frame = 4096 * 4096,
130-
.max_level = 4,
131-
},
132-
{
133-
.codec_type = AMDGPU_INFO_VIDEO_CAPS_CODEC_IDX_HEVC,
134-
.max_width = 8192,
135-
.max_height = 4352,
136-
.max_pixels_per_frame = 8192 * 4352,
137-
.max_level = 186,
138-
},
139-
{
140-
.codec_type = AMDGPU_INFO_VIDEO_CAPS_CODEC_IDX_JPEG,
141-
.max_width = 4096,
142-
.max_height = 4096,
143-
.max_pixels_per_frame = 4096 * 4096,
144-
.max_level = 0,
145-
},
146-
{
147-
.codec_type = AMDGPU_INFO_VIDEO_CAPS_CODEC_IDX_VP9,
148-
.max_width = 8192,
149-
.max_height = 4352,
150-
.max_pixels_per_frame = 8192 * 4352,
151-
.max_level = 0,
152-
},
85+
{codec_info_build(AMDGPU_INFO_VIDEO_CAPS_CODEC_IDX_MPEG2, 4096, 4906, 3)},
86+
{codec_info_build(AMDGPU_INFO_VIDEO_CAPS_CODEC_IDX_MPEG4, 4096, 4906, 5)},
87+
{codec_info_build(AMDGPU_INFO_VIDEO_CAPS_CODEC_IDX_MPEG4_AVC, 4096, 4906, 52)},
88+
{codec_info_build(AMDGPU_INFO_VIDEO_CAPS_CODEC_IDX_VC1, 4096, 4906, 4)},
89+
{codec_info_build(AMDGPU_INFO_VIDEO_CAPS_CODEC_IDX_HEVC, 8192, 4352, 186)},
90+
{codec_info_build(AMDGPU_INFO_VIDEO_CAPS_CODEC_IDX_JPEG, 4096, 4096, 0)},
91+
{codec_info_build(AMDGPU_INFO_VIDEO_CAPS_CODEC_IDX_VP9, 8192, 4352, 0)},
15392
};
15493

15594
static const struct amdgpu_video_codecs nv_video_codecs_decode =
@@ -161,62 +100,14 @@ static const struct amdgpu_video_codecs nv_video_codecs_decode =
161100
/* Sienna Cichlid */
162101
static const struct amdgpu_video_codec_info sc_video_codecs_decode_array[] =
163102
{
164-
{
165-
.codec_type = AMDGPU_INFO_VIDEO_CAPS_CODEC_IDX_MPEG2,
166-
.max_width = 4096,
167-
.max_height = 4096,
168-
.max_pixels_per_frame = 4096 * 4096,
169-
.max_level = 3,
170-
},
171-
{
172-
.codec_type = AMDGPU_INFO_VIDEO_CAPS_CODEC_IDX_MPEG4,
173-
.max_width = 4096,
174-
.max_height = 4096,
175-
.max_pixels_per_frame = 4096 * 4096,
176-
.max_level = 5,
177-
},
178-
{
179-
.codec_type = AMDGPU_INFO_VIDEO_CAPS_CODEC_IDX_MPEG4_AVC,
180-
.max_width = 4096,
181-
.max_height = 4096,
182-
.max_pixels_per_frame = 4096 * 4096,
183-
.max_level = 52,
184-
},
185-
{
186-
.codec_type = AMDGPU_INFO_VIDEO_CAPS_CODEC_IDX_VC1,
187-
.max_width = 4096,
188-
.max_height = 4096,
189-
.max_pixels_per_frame = 4096 * 4096,
190-
.max_level = 4,
191-
},
192-
{
193-
.codec_type = AMDGPU_INFO_VIDEO_CAPS_CODEC_IDX_HEVC,
194-
.max_width = 8192,
195-
.max_height = 4352,
196-
.max_pixels_per_frame = 8192 * 4352,
197-
.max_level = 186,
198-
},
199-
{
200-
.codec_type = AMDGPU_INFO_VIDEO_CAPS_CODEC_IDX_JPEG,
201-
.max_width = 4096,
202-
.max_height = 4096,
203-
.max_pixels_per_frame = 4096 * 4096,
204-
.max_level = 0,
205-
},
206-
{
207-
.codec_type = AMDGPU_INFO_VIDEO_CAPS_CODEC_IDX_VP9,
208-
.max_width = 8192,
209-
.max_height = 4352,
210-
.max_pixels_per_frame = 8192 * 4352,
211-
.max_level = 0,
212-
},
213-
{
214-
.codec_type = AMDGPU_INFO_VIDEO_CAPS_CODEC_IDX_AV1,
215-
.max_width = 8192,
216-
.max_height = 4352,
217-
.max_pixels_per_frame = 8192 * 4352,
218-
.max_level = 0,
219-
},
103+
{codec_info_build(AMDGPU_INFO_VIDEO_CAPS_CODEC_IDX_MPEG2, 4096, 4906, 3)},
104+
{codec_info_build(AMDGPU_INFO_VIDEO_CAPS_CODEC_IDX_MPEG4, 4096, 4906, 5)},
105+
{codec_info_build(AMDGPU_INFO_VIDEO_CAPS_CODEC_IDX_MPEG4_AVC, 4096, 4906, 52)},
106+
{codec_info_build(AMDGPU_INFO_VIDEO_CAPS_CODEC_IDX_VC1, 4096, 4906, 4)},
107+
{codec_info_build(AMDGPU_INFO_VIDEO_CAPS_CODEC_IDX_HEVC, 8192, 4352, 186)},
108+
{codec_info_build(AMDGPU_INFO_VIDEO_CAPS_CODEC_IDX_JPEG, 4096, 4096, 0)},
109+
{codec_info_build(AMDGPU_INFO_VIDEO_CAPS_CODEC_IDX_VP9, 8192, 4352, 0)},
110+
{codec_info_build(AMDGPU_INFO_VIDEO_CAPS_CODEC_IDX_AV1, 8192, 4352, 0)},
220111
};
221112

222113
static const struct amdgpu_video_codecs sc_video_codecs_decode =
@@ -228,80 +119,20 @@ static const struct amdgpu_video_codecs sc_video_codecs_decode =
228119
/* SRIOV Sienna Cichlid, not const since data is controlled by host */
229120
static struct amdgpu_video_codec_info sriov_sc_video_codecs_encode_array[] =
230121
{
231-
{
232-
.codec_type = AMDGPU_INFO_VIDEO_CAPS_CODEC_IDX_MPEG4_AVC,
233-
.max_width = 4096,
234-
.max_height = 2304,
235-
.max_pixels_per_frame = 4096 * 2304,
236-
.max_level = 0,
237-
},
238-
{
239-
.codec_type = AMDGPU_INFO_VIDEO_CAPS_CODEC_IDX_HEVC,
240-
.max_width = 4096,
241-
.max_height = 2304,
242-
.max_pixels_per_frame = 4096 * 2304,
243-
.max_level = 0,
244-
},
122+
{codec_info_build(AMDGPU_INFO_VIDEO_CAPS_CODEC_IDX_MPEG4_AVC, 4096, 2304, 0)},
123+
{codec_info_build(AMDGPU_INFO_VIDEO_CAPS_CODEC_IDX_HEVC, 4096, 2304, 0)},
245124
};
246125

247126
static struct amdgpu_video_codec_info sriov_sc_video_codecs_decode_array[] =
248127
{
249-
{
250-
.codec_type = AMDGPU_INFO_VIDEO_CAPS_CODEC_IDX_MPEG2,
251-
.max_width = 4096,
252-
.max_height = 4096,
253-
.max_pixels_per_frame = 4096 * 4096,
254-
.max_level = 3,
255-
},
256-
{
257-
.codec_type = AMDGPU_INFO_VIDEO_CAPS_CODEC_IDX_MPEG4,
258-
.max_width = 4096,
259-
.max_height = 4096,
260-
.max_pixels_per_frame = 4096 * 4096,
261-
.max_level = 5,
262-
},
263-
{
264-
.codec_type = AMDGPU_INFO_VIDEO_CAPS_CODEC_IDX_MPEG4_AVC,
265-
.max_width = 4096,
266-
.max_height = 4096,
267-
.max_pixels_per_frame = 4096 * 4096,
268-
.max_level = 52,
269-
},
270-
{
271-
.codec_type = AMDGPU_INFO_VIDEO_CAPS_CODEC_IDX_VC1,
272-
.max_width = 4096,
273-
.max_height = 4096,
274-
.max_pixels_per_frame = 4096 * 4096,
275-
.max_level = 4,
276-
},
277-
{
278-
.codec_type = AMDGPU_INFO_VIDEO_CAPS_CODEC_IDX_HEVC,
279-
.max_width = 8192,
280-
.max_height = 4352,
281-
.max_pixels_per_frame = 8192 * 4352,
282-
.max_level = 186,
283-
},
284-
{
285-
.codec_type = AMDGPU_INFO_VIDEO_CAPS_CODEC_IDX_JPEG,
286-
.max_width = 4096,
287-
.max_height = 4096,
288-
.max_pixels_per_frame = 4096 * 4096,
289-
.max_level = 0,
290-
},
291-
{
292-
.codec_type = AMDGPU_INFO_VIDEO_CAPS_CODEC_IDX_VP9,
293-
.max_width = 8192,
294-
.max_height = 4352,
295-
.max_pixels_per_frame = 8192 * 4352,
296-
.max_level = 0,
297-
},
298-
{
299-
.codec_type = AMDGPU_INFO_VIDEO_CAPS_CODEC_IDX_AV1,
300-
.max_width = 8192,
301-
.max_height = 4352,
302-
.max_pixels_per_frame = 8192 * 4352,
303-
.max_level = 0,
304-
},
128+
{codec_info_build(AMDGPU_INFO_VIDEO_CAPS_CODEC_IDX_MPEG2, 4096, 4906, 3)},
129+
{codec_info_build(AMDGPU_INFO_VIDEO_CAPS_CODEC_IDX_MPEG4, 4096, 4906, 5)},
130+
{codec_info_build(AMDGPU_INFO_VIDEO_CAPS_CODEC_IDX_MPEG4_AVC, 4096, 4906, 52)},
131+
{codec_info_build(AMDGPU_INFO_VIDEO_CAPS_CODEC_IDX_VC1, 4096, 4906, 4)},
132+
{codec_info_build(AMDGPU_INFO_VIDEO_CAPS_CODEC_IDX_HEVC, 8192, 4352, 186)},
133+
{codec_info_build(AMDGPU_INFO_VIDEO_CAPS_CODEC_IDX_JPEG, 4096, 4096, 0)},
134+
{codec_info_build(AMDGPU_INFO_VIDEO_CAPS_CODEC_IDX_VP9, 8192, 4352, 0)},
135+
{codec_info_build(AMDGPU_INFO_VIDEO_CAPS_CODEC_IDX_AV1, 8192, 4352, 0)},
305136
};
306137

307138
static struct amdgpu_video_codecs sriov_sc_video_codecs_encode =
@@ -333,6 +164,19 @@ static const struct amdgpu_video_codecs bg_video_codecs_encode = {
333164
.codec_array = NULL,
334165
};
335166

167+
/* Yellow Carp*/
168+
static const struct amdgpu_video_codec_info yc_video_codecs_decode_array[] = {
169+
{codec_info_build(AMDGPU_INFO_VIDEO_CAPS_CODEC_IDX_MPEG4_AVC, 4096, 4906, 52)},
170+
{codec_info_build(AMDGPU_INFO_VIDEO_CAPS_CODEC_IDX_HEVC, 8192, 4352, 186)},
171+
{codec_info_build(AMDGPU_INFO_VIDEO_CAPS_CODEC_IDX_VP9, 8192, 4352, 0)},
172+
{codec_info_build(AMDGPU_INFO_VIDEO_CAPS_CODEC_IDX_JPEG, 4096, 4096, 0)},
173+
};
174+
175+
static const struct amdgpu_video_codecs yc_video_codecs_decode = {
176+
.codec_count = ARRAY_SIZE(yc_video_codecs_decode_array),
177+
.codec_array = yc_video_codecs_decode_array,
178+
};
179+
336180
static int nv_query_video_codecs(struct amdgpu_device *adev, bool encode,
337181
const struct amdgpu_video_codecs **codecs)
338182
{
@@ -353,12 +197,17 @@ static int nv_query_video_codecs(struct amdgpu_device *adev, bool encode,
353197
case CHIP_NAVY_FLOUNDER:
354198
case CHIP_DIMGREY_CAVEFISH:
355199
case CHIP_VANGOGH:
356-
case CHIP_YELLOW_CARP:
357200
if (encode)
358201
*codecs = &nv_video_codecs_encode;
359202
else
360203
*codecs = &sc_video_codecs_decode;
361204
return 0;
205+
case CHIP_YELLOW_CARP:
206+
if (encode)
207+
*codecs = &nv_video_codecs_encode;
208+
else
209+
*codecs = &yc_video_codecs_decode;
210+
return 0;
362211
case CHIP_BEIGE_GOBY:
363212
if (encode)
364213
*codecs = &bg_video_codecs_encode;
@@ -1387,7 +1236,10 @@ static int nv_common_early_init(void *handle)
13871236
AMD_PG_SUPPORT_VCN |
13881237
AMD_PG_SUPPORT_VCN_DPG |
13891238
AMD_PG_SUPPORT_JPEG;
1390-
adev->external_rev_id = adev->rev_id + 0x01;
1239+
if (adev->pdev->device == 0x1681)
1240+
adev->external_rev_id = adev->rev_id + 0x19;
1241+
else
1242+
adev->external_rev_id = adev->rev_id + 0x01;
13911243
break;
13921244
default:
13931245
/* FIXME: not supported yet */

0 commit comments

Comments
 (0)