Group: Hardware/Components/GPUs/radeon

From LibrePlanet
< Group:Hardware‎ | Components‎ | GPUs
Revision as of 09:20, 20 October 2019 by GNUtoo (talk | contribs) (Status in the Xorg radeon driver)
Jump to: navigation, search

Introduction

The radeon driver has code like that for many GPU families:

if (!rdev->me_fw) {
        r = r100_cp_init_microcode(rdev);
        if (r) {
                DRM_ERROR("Failed to load firmware!\n");
                return r;
        }
}

The result of that is that without the nonfree firmware, the radeon driver doesn't load.

Being able to use that driver, even if the 3D acceleration doesn't work without the nonfree firmware is very interesting:

  • it can enable native resolution
  • It supports multi-displays

Status in linux-libre

family file commit introducing the driver .remove() code linux-libre status
r100 r100.c
70967ab9c0c9 radeon: Use request_firmware()
if (!rdev->me_fw) {
        r = r100_cp_init_microcode(rdev);
        if (r) {
                DRM_ERROR("Failed to load firmware!\n");
                return r;
        }
}
Patch not enabled
r600 (KMS) r600.c Always there:
3ce0a23d2d25 drm/radeon/kms: add r600 KMS support
if (!rdev->me_fw || !rdev->pfp_fw || !rdev->rlc_fw) {
        r = r600_init_microcode(rdev);
        if (r) {
                DRM_ERROR("Failed to load firmware!\n");
                return r;
        }
}
Working:
clean_sed '
/r = r600_init_microcode(rdev);/,/}/ s,return r;,/*(DEBLOBBED)*/,
' drivers/gpu/drm/radeon/r600.c 'enable blobless activation'
r600 (UMS) r600_cp.c
70967ab9c0c9 radeon: Use request_firmware()
UMS support has been removed in:
8333f607a631 drm/radeon: remove UMS support
Evergreen evergreen.c Working:
clean_sed '
/r = r600_init_microcode(rdev);/,/}/ s,return r;,/*(DEBLOBBED)*/,
' drivers/gpu/drm/radeon/evergreen.c 'enable blobless activation'
rv770 rv770.c Working:
clean_sed '
/r = r600_init_microcode(rdev);/,/}/ s,return r;,/*(DEBLOBBED)*/,
' drivers/gpu/drm/radeon/rv770.c 'enable blobless activation'
Northern Islands ni.c Maybe this commit or before (not clear):
0af62b016804 drm/radeon/kms: add ucode loader for NI
if (rdev->flags & RADEON_IS_IGP) {
        if (!rdev->me_fw || !rdev->pfp_fw || !rdev->rlc_fw) {
                r = ni_init_microcode(rdev);
                if (r) {
                        DRM_ERROR("Failed to load firmware!\n");
                        return r;
                }
        }
} else {
        if (!rdev->me_fw || !rdev->pfp_fw || !rdev->rlc_fw || !rdev->mc_fw) {
                r = ni_init_microcode(rdev);
                if (r) {
                        DRM_ERROR("Failed to load firmware!\n");
                        return r;
                }
        }
}
Patch sent to linux-libre, doesn't appear yet in mailman archives

TODO:

  • ni_dpm.c
  • si.c
  • si_dpm.c
  • cik.c
  • radeon_uvd.c
  • radeon_vce.c
  • btc_dpm.c
  • ci_dpm.c
  • cik.c
  • cik_sdma.c

Status in the Xorg radeon driver

family distribution and version information configuration files status
Northern Islands Parabola, TODO TODO TODO

External links