Bug 212279

Summary: AMDGPU doesn’t expose any way of setting the full RGB range [ryzen+ mobile]
Product: Drivers Reporter: Nelson G (konoha02)
Component: Video(DRI - non Intel)Assignee: drivers_video-dri
Status: NEW ---    
Severity: enhancement CC: alexdeucher
Priority: P1    
Hardware: All   
OS: Linux   
Kernel Version: all Subsystem:
Regression: No Bisected commit-id:
Attachments: edid-decode
edited edid with wxedid

Description Nelson G 2021-03-14 23:44:38 UTC
Hello,  I'd like to address that there's no way to set full RGB range to HDMI for my Thinkpad E495 (AMD Ryzen 5 3500U). 
I tried editing the edid.bin with wxedid but had no luck.

Is there a plan to enable this in the near future?. 

Thanks.
Comment 1 Alex Deucher 2021-03-15 17:58:29 UTC
IIRC, the driver sets full or limited range automatically based on the EDID.
Comment 2 Nelson G 2021-03-15 18:25:48 UTC
Created attachment 295873 [details]
edid-decode

Here is the edid file for my TV (works full rgb range with windows 10)
I will try to edit the file with wxEDID now, but, it would be less tedious if it were automatic as you say.
Comment 3 Nelson G 2021-03-15 21:06:53 UTC
Created attachment 295875 [details]
edited edid with wxedid

Got it!
I failed at editing the file first because it was a 0 byte file (didn't had my TV connected lol!)
So.  I followed this video https://www.youtube.com/watch?v=tYYMiX7dlak
And basically did the following in my debian sid partition (I will describe it for anyone interested): 

To find my TV edid
$ find /sys/devices/pci*/ -name edid 
Grab/copy the desired edid file to my home folder
$ cp /sys/devices/pci0000:00/0000:00:08.1/0000:05:00.0/drm/card0/card0-HDMI-A-1/edid ~/edid.bin

Then edited that file with wxedid to change the following:
SPF: Supported features = vsig_format to 0b00
CHD: CEA-861 header = YCbCr 4:2:2 to 0
CHD: CEA-861 header = YCbCr 4:4:4 to 0
VSD: Vendor Specific Data Block = DC_Y444 to 0

Then before saving the file I clicked Options > Recalc checksum (otherwise the system will not use your edited edid!), after that I did saved the file, and copied that new modified edid file to /lib/firmware/edid/edid.bin 
To use the new edid, I added 'drm_kms_helper.edid_firmware=HDMI-A-1:edid/edid.bin' to /etc/default/grub (to the line GRUB_CMDLINE_LINUX="foo")
updated initramfs with 'sudo update-initramfs -u' and then updated grub as well with 'sudo update-grub'.

Note:  I compiled the latest wxedid from sourceforge, and, 'options > recalc checksum' option is MISSING at least for me.  That's why the process was failing for me.  Luckily for me debian has a wxedid in their repo that has the recalc checksum option.  


Now...  bit of work ain't it?  I don't know if this happens because of my TV,  I haven't tried with other monitors/televisions.  But a bit of improvement in the matter would be GREAT.