1
0
Fork 0
mirror of synced 2025-03-06 20:59:54 +01:00

drm/amd: Move microcode init from sw_init to early_init for SDMA v2.4

As part of IP discovery early_init is run for all HW IP blocks.
During this phase all firmware is supposed to be identified that may
be missing so that the driver can avoid releasing resources used by
the EFI framebuffer or simpledrm until the last possible moment.

Move microcode loading from sw_init to early_init.

Signed-off-by: Mario Limonciello <mario.limonciello@amd.com>
Reviewed-by: Alex Deucher <alexander.deucher@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
This commit is contained in:
Mario Limonciello 2023-09-25 14:02:10 -05:00 committed by Alex Deucher
parent cc76630483
commit 751e293f2c

View file

@ -816,6 +816,11 @@ static void sdma_v2_4_ring_emit_wreg(struct amdgpu_ring *ring,
static int sdma_v2_4_early_init(void *handle)
{
struct amdgpu_device *adev = (struct amdgpu_device *)handle;
int r;
r = sdma_v2_4_init_microcode(adev);
if (r)
return r;
adev->sdma.num_instances = SDMA_MAX_INSTANCE;
@ -851,10 +856,6 @@ static int sdma_v2_4_sw_init(void *handle)
if (r)
return r;
r = sdma_v2_4_init_microcode(adev);
if (r)
return r;
for (i = 0; i < adev->sdma.num_instances; i++) {
ring = &adev->sdma.instance[i].ring;
ring->ring_obj = NULL;