Thanks a lot for your pointers! I am going to try all of them especially DDI_HDMI_Buffer_Translation override.
interesting. AFAIR, you are the first to ask about integrating it
somewhere else :) I am sorry I just I assumed that I can use the library for internal development. The pre-OS graphics driver that I wrote in C based on information from Skylake PRM is not working so I turned to Libgfx to see what i am missing. I hope thats ok? We can not use libgfxinit in the product that we deliver.
On Fri, May 10, 2019 at 2:14 AM Nico Huber nico.h@gmx.de wrote:
Hi,
On 09.05.19 12:03, madeeha@gmail.com wrote:
I am using Libgfxinit built for Skylake platform to enable early graphics from within a baremetal application.
interesting. AFAIR, you are the first to ask about integrating it somewhere else :)
The platform connects to an LCD via HDMI.
Just to be sure is this a regular external display, or something embedded? External HDMI displays usually just work. If there is a signal coming, they pick it up and power on. At least that's my experience.
Enabling debug log in Libgfxinit, I get the following from which it seems that the initialization completed successfully but the LCD remains powered off (orange light). Is there anything outside of this mode set sequence that I need to do to enable the display?
There might be, I'm not sure.
First, what is not visible from the log is if you set up the frame- buffer. The Intel GPU has an MMU called graphics translator table (GTT). If nothing is mapped at address 0 (which is set in your frame- buffer config), it might be that the pipe doesn't deliver any pixels and therefore no signal is delivered. If you haven't done that yet, have a look at HW.GFX.GMA.Setup_Default_FB(). It sets up a framebuffer in the preallocated graphics memory (aka. stolen memory).
Second, there's a hardware option to tweak the HDMI signal. I have never needed it so far, so it's still hard coded to the default, but an override is prepared: DDI_HDMI_Buffer_Translation in common/hw-gfx- gma-config.ads.template). The correct value for your device should be visible in the VBT (Video BIOS Table for Intel).
What often helps to debug things is a log of a working program. If you can boot Linux on your platform, that would be most easy, just add `drm.debug=0xe` to your kernel command line. And there is `gfx_test` in the libgfxinit source code (see README.md). It's best to boot with `i915.modeset=0` to disable the Intel graphics driver, and control the machine via network or a serial console.
Hope that helps, Nico