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 -- [email protected]
To unsubscribe send an email to [email protected]