Skip to content

Commit 0395cde

Browse files
frank98753alexdeucher
authored andcommitted
drm/amdgpu: add kicker fws loading for gfx12/smu14/psp14
1. Add kicker firmwares loading for gfx12/smu14/psp14 2. Register additional MODULE_FIRMWARE entries for kicker fws - gc_12_0_1_rlc_kicker.bin - gc_12_0_1_imu_kicker.bin - psp_14_0_3_sos_kicker.bin - psp_14_0_3_ta_kicker.bin - smu_14_0_3_kicker.bin Signed-off-by: Frank Min <[email protected]> Reviewed-by: Gui Chengming <[email protected]> Signed-off-by: Alex Deucher <[email protected]> Cc: [email protected]
1 parent 8e0d1ed commit 0395cde

File tree

5 files changed

+29
-10
lines changed

5 files changed

+29
-10
lines changed

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

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@
3232

3333
static const struct kicker_device kicker_device_list[] = {
3434
{0x744B, 0x00},
35+
{0x7551, 0xC8}
3536
};
3637

3738
static void amdgpu_ucode_print_common_hdr(const struct common_firmware_header *hdr)

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

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -79,6 +79,7 @@ MODULE_FIRMWARE("amdgpu/gc_12_0_1_pfp.bin");
7979
MODULE_FIRMWARE("amdgpu/gc_12_0_1_me.bin");
8080
MODULE_FIRMWARE("amdgpu/gc_12_0_1_mec.bin");
8181
MODULE_FIRMWARE("amdgpu/gc_12_0_1_rlc.bin");
82+
MODULE_FIRMWARE("amdgpu/gc_12_0_1_rlc_kicker.bin");
8283
MODULE_FIRMWARE("amdgpu/gc_12_0_1_toc.bin");
8384

8485
static const struct amdgpu_hwip_reg_entry gc_reg_list_12_0[] = {
@@ -586,7 +587,7 @@ static int gfx_v12_0_init_toc_microcode(struct amdgpu_device *adev, const char *
586587

587588
static int gfx_v12_0_init_microcode(struct amdgpu_device *adev)
588589
{
589-
char ucode_prefix[15];
590+
char ucode_prefix[30];
590591
int err;
591592
const struct rlc_firmware_header_v2_0 *rlc_hdr;
592593
uint16_t version_major;
@@ -613,9 +614,14 @@ static int gfx_v12_0_init_microcode(struct amdgpu_device *adev)
613614
amdgpu_gfx_cp_init_microcode(adev, AMDGPU_UCODE_ID_CP_RS64_ME_P0_STACK);
614615

615616
if (!amdgpu_sriov_vf(adev)) {
616-
err = amdgpu_ucode_request(adev, &adev->gfx.rlc_fw,
617-
AMDGPU_UCODE_REQUIRED,
618-
"amdgpu/%s_rlc.bin", ucode_prefix);
617+
if (amdgpu_is_kicker_fw(adev))
618+
err = amdgpu_ucode_request(adev, &adev->gfx.rlc_fw,
619+
AMDGPU_UCODE_REQUIRED,
620+
"amdgpu/%s_rlc_kicker.bin", ucode_prefix);
621+
else
622+
err = amdgpu_ucode_request(adev, &adev->gfx.rlc_fw,
623+
AMDGPU_UCODE_REQUIRED,
624+
"amdgpu/%s_rlc.bin", ucode_prefix);
619625
if (err)
620626
goto out;
621627
rlc_hdr = (const struct rlc_firmware_header_v2_0 *)adev->gfx.rlc_fw->data;

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

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -34,21 +34,26 @@
3434

3535
MODULE_FIRMWARE("amdgpu/gc_12_0_0_imu.bin");
3636
MODULE_FIRMWARE("amdgpu/gc_12_0_1_imu.bin");
37+
MODULE_FIRMWARE("amdgpu/gc_12_0_1_imu_kicker.bin");
3738

3839
#define TRANSFER_RAM_MASK 0x001c0000
3940

4041
static int imu_v12_0_init_microcode(struct amdgpu_device *adev)
4142
{
42-
char ucode_prefix[15];
43+
char ucode_prefix[30];
4344
int err;
4445
const struct imu_firmware_header_v1_0 *imu_hdr;
4546
struct amdgpu_firmware_info *info = NULL;
4647

4748
DRM_DEBUG("\n");
4849

4950
amdgpu_ucode_ip_version_decode(adev, GC_HWIP, ucode_prefix, sizeof(ucode_prefix));
50-
err = amdgpu_ucode_request(adev, &adev->gfx.imu_fw, AMDGPU_UCODE_REQUIRED,
51-
"amdgpu/%s_imu.bin", ucode_prefix);
51+
if (amdgpu_is_kicker_fw(adev))
52+
err = amdgpu_ucode_request(adev, &adev->gfx.imu_fw, AMDGPU_UCODE_REQUIRED,
53+
"amdgpu/%s_imu_kicker.bin", ucode_prefix);
54+
else
55+
err = amdgpu_ucode_request(adev, &adev->gfx.imu_fw, AMDGPU_UCODE_REQUIRED,
56+
"amdgpu/%s_imu.bin", ucode_prefix);
5257
if (err)
5358
goto out;
5459

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

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,9 @@
3434
MODULE_FIRMWARE("amdgpu/psp_14_0_2_sos.bin");
3535
MODULE_FIRMWARE("amdgpu/psp_14_0_2_ta.bin");
3636
MODULE_FIRMWARE("amdgpu/psp_14_0_3_sos.bin");
37+
MODULE_FIRMWARE("amdgpu/psp_14_0_3_sos_kicker.bin");
3738
MODULE_FIRMWARE("amdgpu/psp_14_0_3_ta.bin");
39+
MODULE_FIRMWARE("amdgpu/psp_14_0_3_ta_kicker.bin");
3840
MODULE_FIRMWARE("amdgpu/psp_14_0_5_toc.bin");
3941
MODULE_FIRMWARE("amdgpu/psp_14_0_5_ta.bin");
4042

drivers/gpu/drm/amd/pm/swsmu/smu14/smu_v14_0.c

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -62,13 +62,14 @@ const int decoded_link_width[8] = {0, 1, 2, 4, 8, 12, 16, 32};
6262

6363
MODULE_FIRMWARE("amdgpu/smu_14_0_2.bin");
6464
MODULE_FIRMWARE("amdgpu/smu_14_0_3.bin");
65+
MODULE_FIRMWARE("amdgpu/smu_14_0_3_kicker.bin");
6566

6667
#define ENABLE_IMU_ARG_GFXOFF_ENABLE 1
6768

6869
int smu_v14_0_init_microcode(struct smu_context *smu)
6970
{
7071
struct amdgpu_device *adev = smu->adev;
71-
char ucode_prefix[15];
72+
char ucode_prefix[30];
7273
int err = 0;
7374
const struct smc_firmware_header_v1_0 *hdr;
7475
const struct common_firmware_header *header;
@@ -79,8 +80,12 @@ int smu_v14_0_init_microcode(struct smu_context *smu)
7980
return 0;
8081

8182
amdgpu_ucode_ip_version_decode(adev, MP1_HWIP, ucode_prefix, sizeof(ucode_prefix));
82-
err = amdgpu_ucode_request(adev, &adev->pm.fw, AMDGPU_UCODE_REQUIRED,
83-
"amdgpu/%s.bin", ucode_prefix);
83+
if (amdgpu_is_kicker_fw(adev))
84+
err = amdgpu_ucode_request(adev, &adev->pm.fw, AMDGPU_UCODE_REQUIRED,
85+
"amdgpu/%s_kicker.bin", ucode_prefix);
86+
else
87+
err = amdgpu_ucode_request(adev, &adev->pm.fw, AMDGPU_UCODE_REQUIRED,
88+
"amdgpu/%s.bin", ucode_prefix);
8489
if (err)
8590
goto out;
8691

0 commit comments

Comments
 (0)