Hi Jorge,

On 03.12.19 15:13, Jose Trujillo wrote:
>>> This is my first try in booting coreboot on a LVDS panel.
>>> This is a Sandybridge-M system using video option ROM and VBT extracted 
>>> from the original FW.
>>
>> if you ever want to get open-source gfx init running instead, let me know. 
>> It would only need a few more lines to force a specific mode with 
>> libgfxinit, maybe that is enough. And as you run the VBIOS ROM within 
>> coreboot, you are probably not interested in a resident VBIOS, are you?
> [JT]->[Nico] I would prefer to do it with just libgfxinit but I don't have a 
> remote idea in how to initialize the LVDS panel.
> [JT]->[Nico] With a desktop monitor libgfxinit just work in this system but 
> not a sign of activity on the panel.
> [JT]->[Nico] I would like to know how to initialize the panel with just 
> coreboot, so, please show me how.

first, you have to

    select GFX_GMA_INTERNAL_IS_LVDS

in your mainboard's Kconfig.

As you mentioned, your panel doesn't have an EDID EEPROM. Hence, you'll
have to hard-code your panel's native mode. Below is a POC patch how
that could look like (allows combinations with LVDS and additional auto-
detected displays). You'll have to find your own panel's timings. Either
from the datasheet, or you can try to fetch them from the VBT, e.g.

  $ intel_vbt_decode lenovo/t430s/variants/t431s/data.vbt | grep timings
  Underscan support for VGA timings: no
          timings: 1600 1648 1680 1940 900 903 908 926 107800.00 (good)

Note: The clock is given in kHz in the VBT, but libgfxinit expects Hz.
BPC (bits per color) is almost always 6 for LVDS panels, and I guess
sync high/low doesn't matter for LVDS.

If you get that working, we can try to design a reasonable API for pre-
defined modes. For instance, the `gma-mainboard.ads` could provide a
set of Pipe_Configs and we'd only scan for additional displays. That
would also be useful to skip EDID reading to speed things up ;)

Nico

diff --git a/src/drivers/intel/gma/hires_fb/gma-gfx_init.adb
b/src/drivers/intel/gma/hires_fb/gma-gfx_init.adb
index 1393784d7b..b828e4ba28 100644
--- a/src/drivers/intel/gma/hires_fb/gma-gfx_init.adb
+++ b/src/drivers/intel/gma/hires_fb/gma-gfx_init.adb
@@ -73,7 +73,32 @@ is

       if success then
          ports := Mainboard.ports;
-         HW.GFX.GMA.Display_Probing.Scan_Ports (configs, ports);
+         HW.GFX.GMA.Display_Probing.Scan_Ports
+           (Configs  => configs,
+            Ports    => ports,
+            Max_Pipe => Secondary); -- limit to 2 auto-detected displays
+
+         -- move auto-detected displays
+         configs (Tertiary)   := configs (Secondary);
+         configs (Secondary)  := configs (Primary);
+         -- and use primary pipe for LVDS
+         configs (Primary) :=
+           (Port        => Internal,
+            Framebuffer => Default_FB, -- will be overridden below
+            Cursor      => Default_Cursor,
+            Mode        => -- this matters
+              (H_Visible      => 1920,
+               H_Sync_Begin   => 2008,
+               H_Sync_End     => 2052,
+               H_Total        => 2185,
+               V_Visible      => 1080,
+               V_Sync_Begin   => 1084,
+               V_Sync_End     => 1089,
+               V_Total        => 1135,
+               Dotclock       => 60 * 2185 * 1135, -- 60Hz * H_Total *
V_Total
+               BPC            => 6,
+               H_Sync_Active_High   => False,
+               V_Sync_Active_High   => False));

          if configs (Primary).Port /= Disabled then
             for i in Pipe_Index loop
_______________________________________________
coreboot mailing list -- coreboot@coreboot.org
To unsubscribe send an email to coreboot-le...@coreboot.org

Reply via email to