Jump to content

E7270 Framebuffer patching for e-port plus dock in OpenCore


scram69

Recommended Posts

I am attempting to patch the Whatevergreen Framebuffer for my E7270 (Skylake, 0x19160000) in BigSur/Opencore to support both DVI connectors on the E-port plus PR02X dock.

I have tried to follow Herve's example for the same dock, but his post is for Haswell under HighSierra/Clover.

 

The default for this Framebuffer has the internal display as con0 on busID 00, a DP connector as con1 on busID 05, and a DP connector as con2 on busID 04.

Jake Lo's config.plist for the e7270 changes the display type from DP to HDMI for con1, enabling the HDMI connector on the laptop itself.

The problem is that either DP on the dock shows up as busID 04; plugging DP monitors into both dock ports will not get two separate displays, only one display that is mirrored.

 

As Herve did in his post, I tried adding an additional port/busID (0306) to both con1 (results in kernel panic) or con2 (nothing happens).  I tried changing con1 back to DP, but that still did not enable the 2nd dock DP as a separate display.

Has anyone been successful in enabling both dock DP ports as separate displays under OpenCore?

Link to comment
Share on other sites

  • Administrators

Hooked my E7270 to my E-Port PR03X docking station (it's the smaller dock model with 1 x DP, 1 x DVI and 1 x VGA, I no longer have the wide PR02X model for testing, sorry).

Plugged an external Dell monitor to the DVI port and immediately obtained DVI output on con2, no SKL framebuffer patching required. I did not need to close the LID to get both screens active like it is necessary with HDMI.

 

I also tried DP output out of the E-Port DP port with DP-to-HDMI + HDMI-to-DVI coupled adapters and that also worked OOB and through con2.

 

E7270_DualScreen_DVI.jpg

 

E7270_DVI_Dock.jpg

 

Given that -as is usually the case with most Dell laptops-:

  1. con0 is built-in LCD (LVDS/eDP)
  2. con1 is HDMI output
  3. con2 is DP/DVI output

and that SKL FB 0x19160000 is a 3 x port layout, maybe you would need to patch the SKL framebuffer to convert it to 4 x port layout.

 

SKL FB 0x19160000 is defined as follows:

ID: 19160000, STOLEN: 34 MB, FBMEM: 21 MB, VRAM: 1536 MB, Flags: 0x0000090F
TOTAL STOLEN: 56 MB, TOTAL CURSOR: 1 MB (1572864 bytes), MAX STOLEN: 124 MB, MAX OVERALL: 125 MB (131608576 bytes)
Model name: Intel HD Graphics SKL CRB
Camellia: CamelliaDisabled (0), Freq: 1388 Hz, FreqMax: 1388 Hz
Mobile: 1, PipeCount: 3, PortCount: 3, FBMemoryCount: 3
[0] busId: 0x00, pipe: 8, type: 0x00000002, flags: 0x00000098 - ConnectorLVDS
[1] busId: 0x05, pipe: 9, type: 0x00000400, flags: 0x00000187 - ConnectorDP
[2] busId: 0x04, pipe: 10, type: 0x00000400, flags: 0x00000187 - ConnectorDP
00000800 02000000 98000000
01050900 00040000 87010000
02040A00 00040000 87010000

 

You could experiment with the following additional properties in your bootloader config for your iGPU:

framebuffer-portcount        4        NUMBER
framebuffer-memorycount      4        NUMBER
framebuffer-con3-enable      1        NUMBER
framebuffer-con3-alldata     03060A000004000087010000        DATA

 

I don't know what you meant by "adding an additional port/busID (0306) to both con1 (results in kernel panic) or con2 (nothing happens)", probably just an error of vocabulary because you cannot add anything to con1 or con2, you can only change their settings, whether BusID, pipe, connector-type or flags. The 1st octet of each connector lines 0000/0105/0204/0306 is the connector index, indicating con0/con1/con2/con3.

 

You may also use and experiment with the 4 x port SKL mobile layout 0x193b0005 (I booted successfully with it):

ID: 193B0005, STOLEN: 34 MB, FBMEM: 0 bytes, VRAM: 1536 MB, Flags: 0x0023130A
TOTAL STOLEN: 35 MB, TOTAL CURSOR: 1 MB (1572864 bytes), MAX STOLEN: 137 MB, MAX OVERALL: 138 MB (145244160 bytes)
Model name: Intel Iris Pro Graphics 580
Camellia: CamelliaDisabled (0), Freq: 1388 Hz, FreqMax: 1388 Hz
Mobile: 1, PipeCount: 3, PortCount: 4, FBMemoryCount: 4
[0] busId: 0x00, pipe: 8, type: 0x00000002, flags: 0x00000098 - ConnectorLVDS
[1] busId: 0x05, pipe: 9, type: 0x00000400, flags: 0x000001C7 - ConnectorDP
[2] busId: 0x04, pipe: 10, type: 0x00000400, flags: 0x000001C7 - ConnectorDP
[3] busId: 0x06, pipe: 10, type: 0x00000400, flags: 0x000001C7 - ConnectorDP
00000800 02000000 98000000
01050900 00040000 C7010000
02040A00 00040000 C7010000
03060A00 00040000 C7010000

 

I've tried HDMI (directly out of the laptop) + DVI (out of the PR03X dock) and got triple display with the default SKL framebuffer 0x19160000, the only patch in place was con1 type set to HDMI (for usual HDMI audio purposes):

E7270_TripleDisplay.jpg

 

E7270_3xScreens_FB@0.jpg

 

E7270_3xScreens_FB@1.jpg

 

E7270_3xScreens_FB@2.jpg

 

I disconnected the HDMI monitor and connected a 2nd DVI screen to the DP port of the PR03X dock (with the DP-to-HDMI + HDMI-to-DVI coupled adapters) and both external screens were active as long as they used commonly supported resolutions (one is 1920x1080, the other 1680x1050) given that they only acted mirrored, proving that they run off that same con2 port. In that mode of operation, the Display PrefPane only showed dual, not triple displays. DVI screen appeared to take precedence and if I chose a resolution not supported by the smaller screen, it would go dark in power save mode with an (expected) "Out of range signal" error message.

 

I was not able to get the DVI and DP screens working independently, whether through adding a 4th connector con3 to SKL framebuffer 0x19160000 or running with 4 x port SKL framebuffer 0x193b0005. You may find interesting to know that VGA worked OOB out of the PR03X dock (off con2). As a 2nd independent display alongside the built-in LCD or as a mirror of the DVI/DP output.

 

Without the correct hardware to test further, I cannot say whether dual independent DVI is something achievable or not but it does not look that way.

Link to comment
Share on other sites

On 5/10/2021 at 6:25 AM, Hervé said:

I don't know what you meant by "adding an additional port/busID (0306) to both con1 (results in kernel panic) or con2 (nothing happens)", probably just an error of vocabulary because you cannot add anything to con1 or con2, you can only change their settings

I was referring to the example in dortania's OpenCore guide for the IvyBridge Laptop config.plist, where he adds 0304 and 0406 entries to the "alldata" entry for 0205 for framebuffer 04006601.

 

Unfortunately I had no luck with either method you suggested (adding con3 to 0x19160000 or booting with 0x193B0005).  Either way, I could only get the 2nd DVI port to act as a mirror of the first.  For either attempt Hackintool also reported only the two external connectors - con1 and con2, never a con3.

 

So I will try your other suggestion and see if I can scrounge up a monitor that still has a VGA port.

Link to comment
Share on other sites

  • Administrators

Don't get confused with the patching of Capri layout 0x01660004; it's a single-port (LVDS/eDP) framebuffer so those laptops with HiRes screen that use it have to add ports for any HDMI/DP/DVI outputs. It's a little different for 3-ports SKL framebuffers though the principles remain the same.

 

I don't have any mini DP adapter but if you have 2 x DVI monitors, I'd say you should be able to get them working concurrently through mDP + HDMI with specific adapters directly off the laptop; therefore no need for the docking station.

Link to comment
Share on other sites

  • Administrators

@scram69 Just got an mDP-to-DVI adapter for pennies. I can confirm that mDP output works OOB and out of con2. I could therefore get built-in LCD + mDP-to-DVI + HDMI-to-DVI outputs all working together in a triple display mode with 2 x DVI monitors. You may want to consider this as an alternative to dual-DVI out of your docking station which does not appear to be achievable.

Link to comment
Share on other sites

Herve,

 

Thanks for the update.  I do like the convenience of all the peripherals connected via the dock.  However, with the e7270 there is plenty of room behind the laptop when it is connected in the PR02X/3X.  So I have ended up using the DP on the dock connected to one monitor (con2) together with an HDMI cable from the 2nd monitor directly connected to the laptop while still in the dock (con1).  It's a compromise that minimizes the number of cables that need to be disconnected/reconnected when I move away from the desk.

Link to comment
Share on other sites

×
×
  • Create New...