Welcome! This is my implementation of an existing patch for increasing the amount of bandwidth available through the HDMI port on old Radeon graphics cards.
This original issue thread and patch can be found here.
The original issue is that when trying to use a high resolution monitor on an old Radeon graphics card, it either works at a low refresh rate, or doesn't work at all. This is because the Radeon driver limits the frequency of the pixel clock for the HDMI port to 165MHz, which isn't enough for much over 1920x1200 60Hz (which requires ~148MHz). The GPU I am using is a Radeon HD 6570 (my current primary GPU is a HD 7870 Tahiti LE which is not supported under any current Linux drivers 🙁. There are many threads on the issue, this seems to be the main one, but here are some more: 1, 2, 3, 4). Under Windows, the pixel clock is higher than 165MHz, but lower than ~241MHz. I know this because my 1440p monitor works at 1440p 50Hz by default using the AMD drivers, but doesn't allow 60Hz. This in itself is a bit strange because the GPUs HDMI port is only rated to 1920x1200, which is what is set by default under Linux, but it shows that AMD thinks the hardware can do it.
The patch linked above is a modification that allows the 165MHz limit to be overridden using a kernel parameter. This repository holds my version of the patch, which was built for kernel version 5.8. I took the basic idea from the patch and went about it in my own way, as I felt I could improve the modification. This is mainly because the patch did not limit itself to only overclocking the HDMI port, it would apply to all connections. Also, in radeon_dig_monitor_is_duallink
, it would return false if hdmimhz
was set at all, presumably disabling the use of dual-link DVI (or HDMI, if you have some oddball piece of kit that uses it) while the mod is active (i.e. kernel paramter set).
I also extended the mod to allow the clock for the DVI port to be overridden too (though only for HDMI connections through the DVI port, as single-link DVI was never rated to go above 165MHz). Under Windows, it would not allow any resolution over 1200p through the DVI port when using single-link (with a passive DVI to HDMI adapter), though it is rated to 2560x1600 when using dual-link.
This mod adds the original radeon.hdmimhz
kernel parameter that, if set, will override the default limit found in the Radeon kernel module with the given value. This mod also adds the radeon.apply_hdmimhz_to_dvid
parameter. If set to 1
, the override specified by radeon.hdmimhz
will also apply to the DVI port when there is a monitor connected to it using HDMI (with a passive converter).