You might want to think about cleaning up the contents of your OC EFI, as you have a number of unused and unnecessary SSDT's, Kexts and Tools in your EFI folder.
This is a view of your EFI folder contents.
Current EFI folder contents
SSDT's:
SSDT-GPI0.aml and SSDT-XOSI.aml are not supposed to be used together. SSDT-XOSI.aml will do nothing for your system if you don't include the ACPI patch to enable the SSDT.
You have SSDT-EC-USBX-Laptop.aml and SSDT-EC-USBX.aml in your setup, but only the later is active. These ACPI tables are not identical, as you sure you are using the right table for your system? Why don't you generate a custom SSDT-EC.aml using your system DSDT.aml and Corpnewt's SSDTTime script.
You have SSDT-RHUB-OFF.aml and SSDT-RHUB.aml in your setup, these two ACPI tables are identical so why are they both in your /EFI/OC/ACPI folder?
Your Ice Lake system doesn't require SSDT-PMC.aml, as far as the OC ACPI guide goes, it shows the SSDT-PMC.aml table is only required for Coffee Lake systems.
You have SSDT_data.aml present in your ACPI sub-folder. You do not have CPUFriend.kext present in your Kexts folder. One without the other does nothing useful for your system.
Kexts:
When using USBPorts.kext, you shouldn't add SSDT-UIAC.aml or USBMap.kext to your OC setup. The USBPorts.kext will do all that is necessary, assuming it has been configured correctly. The other two entries just confuse matters.
CtlnaAHCIPort.kext doesn't contain an IOMatch for your laptops SATA controller (8086:34ED), so it does nothing for your system.
Tools:
You only need retain these three Tools.
- ClearNvram.efi
- OpenShell.efi
- ResetSystem.efi
Your revised EFI folder would look like this when edited according to the issues raised above.
Revised/cleaned up EFI folder contents
There is a huge difference between the IGPU Framebuffer in your config.plist and the one you posted above.
Your current IGPU framebuffer settings where the internal display works are as follows:
The alternative IGPU framebuffer settings where the HDMI connector work are as follows:
They are not at all similar, they don't even use the same Framebuffer - AAPL, ig-platform-id <0200528A> vs <0000568A>.
This is the main reason the Internal display doesn't work with the alternative IGPU Framebuffer DeviceProperties.
To be honest neither set of IGPU Framebuffer DeviceProperties look correct. But by using/joining the two sets together, you may be able to create something that works.
The 'framebuffer-con0-alldata' entry in the alternative IGPU framebuffer DeviceProperties contains too many entries. I wouldn't be surprised to discover this entry contains the connector properties for 'framebuffer-con1' and 'con2'.
When Framebuffer-conX-alldata is used it normally contains a maximum of 5 sets of data, each 8 digits long.
Alternatively the following individual entries may be used.
framebuffer-conX-index
framebuffer-conX-busid
framebuffer-conX-pipe
framebuffer-conX-type
framebuffer-conX-flags
'Port Count' and 'framebuffer-portcount' are the same, so only one is required.
I think you have enough to be going on with at the moment. See what you can do with this additional information.