Summary: enable activation of southern islands radeon cards without blobs
authorlxoliva <lxoliva@559672b5-ba27-0410-b829-e8f1faed8b1b>
Fri, 6 Dec 2019 13:35:52 +0000 (13:35 +0000)
committerlxoliva <lxoliva@559672b5-ba27-0410-b829-e8f1faed8b1b>
Fri, 6 Dec 2019 13:35:52 +0000 (13:35 +0000)
The si.c file also needed to be patched to avoid the following probe
failure due to the missing MC firmrware:
  [drm:si_startup [radeon]] *ERROR* Failed to load MC firmware!
  radeon 0000:02:00.0: disabling GPU acceleration
  radeon 0000:02:00.0: 00000000b8c27aec unpin not necessary
  [drm:si_init [radeon]] *ERROR* radeon: MC ucode required for NI+.
  radeon 0000:02:00.0: Fatal error during GPU init
  [...]
  radeon: probe of 0000:02:00.0 failed with error -22

This has been tested with the following GPU:
  02:00.0 VGA compatible controller: Advanced Micro Devices, Inc.
  [AMD/ATI] Cape Verde PRO [Radeon HD 7750/8740 / R7 250E] [1002:683f]

Xorg, lightdm, xfce4, mplayer and wesnoth have been tested and work
fine, though in mplayer the OSD has some light artefacts.

Signed-off-by: Denis 'GNUtoo' Carikli <GNUtoo@no-log.org>
git-svn-id: http://www.fsfla.org/svn/fsfla/software/linux-libre/scripts@17089 559672b5-ba27-0410-b829-e8f1faed8b1b

deblob-5.4

index 9b9ac8d8357de5e23fe6729e729be53020a7785f..615b17544851a8a5220690b87f3b811b8c9feaa4 100755 (executable)
@@ -882,6 +882,8 @@ reject_firmware drivers/gpu/drm/radeon/r600.c
 clean_blob drivers/gpu/drm/radeon/r600.c
 reject_firmware drivers/gpu/drm/radeon/ni.c
 clean_blob drivers/gpu/drm/radeon/ni.c
+reject_firmware drivers/gpu/drm/radeon/si.c
+clean_blob drivers/gpu/drm/radeon/si.c
 # Something like this might work on other radeon cards too.  If you
 # have such cards, please give it a try, and report back either way,
 # so that we can make more cards work, or at least add comments so
@@ -899,8 +901,12 @@ clean_sed '
 clean_sed '
 /r = ni_init_microcode(rdev);/,/}/ s,return r;,/*(DEBLOBBED)*/,
 ' drivers/gpu/drm/radeon/ni.c 'enable blobless activation'
-reject_firmware drivers/gpu/drm/radeon/si.c
-clean_blob drivers/gpu/drm/radeon/si.c
+clean_sed '
+/r = si_init_microcode(rdev);/,/}/ s,return r;,/*(DEBLOBBED)*/,
+' drivers/gpu/drm/radeon/si.c 'enable blobless activation'
+clean_sed '
+/if (!rdev->mc_fw) {/,/}/ s,return -EINVAL;,/*(DEBLOBBED)*/,
+' drivers/gpu/drm/radeon/si.c 'enable blobless activation'
 reject_firmware drivers/gpu/drm/radeon/cik.c
 clean_blob drivers/gpu/drm/radeon/cik.c
 reject_firmware drivers/gpu/drm/radeon/radeon_uvd.c