Jump to content

Now... for a real challenge. Dell M4800 eDP (no iGPU, just dGPU)


Recommended Posts

Posted (edited)

Hi all.

I've been trying to make this laptop work and all is doable and working but the dGPU (nVidia K2100M - Kepler). The laptop has no iGPU, nor does it have any GPU-related options in the BIOS. Dell has made sure to disable the iGPU if a QHD+ or UHD LED screen was installed on the laptop which sadly is my case (I got the QHD+ 3200x1800).

Tried with 10.13 + WebDrivers and 10.14.4 and no luck.

If I boot with nv_disable=1, the internal screen works (no QE/CI)

If I boot without it (and no injection), only external screens work (HDMI and DisplayPort). (HDMI shows up as @4,Display@D and DP with HDMI adapter shows as @2,Display@B

Researching more into the issue, I found that the laptop has 8 "heads" internally. 1 for VGA, one for the Panel (eDP) and 2 for each other port (2 for the external DP, 2 for the external HDMI and 2 for a 3rd unknown port (might be one at the dock which I don't have). Those heads, connectors, and signal types are all defined in the DCB table inside the GPU's bios.

According to this post on InsanelyMac, the driver runs thru the heads (might be more than one head per port as it is in my case). And then AppleGraphicsPolicy.kext (which now has a similar name) tries to pull the EDID from each port and as such defines the ports with working monitors. So, the Linux DCB table looks like this.

SauQi92.png

You see a "Mac DCB#" column at the beginning. That was obtained by opening the GPU's bios with an old mac utility called "NvidiaInfo" which sadly hasn't got full support for newer bios, but most of what it shows checks out with the Linux-obtained info.

F0CR3DI.png

This information is good for figuring the @display-cfg variable for each screen and also the NVCAP value. According to the same topic, the display-cfg value is composed of:

BYTE: Display-Number

BYTE: I2C Read Offset

BYTE: DCB Entry OR (guessing)

BYTE: 0x03

So for my case, it'd be 0x00110403 for eDP panel as the first screen. (we have to reverse the hex to inect tho, so it'll actually be 0x03041100

Strangely, the nvidia info utility I used on linux (envytools from nouveau against the official nvidia driver), show up a connected on head 0.

CONN table at 0x5d2d version 4.0
CONN 0: type 0x40 [LVDS] tag 0 <--
CONN 4: type 0x46 [DP] tag 4 HPD_4
CONN 5: type 0x46 [DP] tag 5 HPD_5
CONN 7: type 0x46 [DP] tag 7 HPD_2
CONN 8: type 0x47 [EDP] tag 8 HPD_3
CONN 9: type 0x00 [VGA] tag 9

The connectors that show up on IORegistryExplorer are 0, 4, 5 and 7.

I think my problem is due to the kext not finding\using the Connector 8.

Does anyone have any idea on how to make it show up?

 

Edited by Xeon3D

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now


×
×
  • Create New...