Hello,
Using the instructions in the old Wiki page [1] I have used the UEFI method and UEFI tool to extract the video BIOS from the standard binary that comes with the board.
I have followed the layout of some of the other Kconfig files in the mainboard directory and added the following to my boards Kconfig:
config BOARD_SPECIFIC_OPTIONS ... select VGA_BIOS ...
config VGA_BIOS_ID string default "8086,0406"
config VGA_BIOS_FILE string default "pci8086,0406.rom"
When I try to build with that I get an error:
make: *** No rule to make target 'pci8086,0406.rom', needed by 'build/coreboot.pre'. Stop.
The other mainboards that use this methodology all seem to have “select GFX_GMA_PANEL_1_ON_LVDS” but as my display is connected directly to the eDP port I added “select GFX_GMA_PANEL_1_ON_EDP”. This in turn appears to need “select GFX_GMA”. Now when I try to build I get:
warning: (BOARD_SPECIFIC_OPTIONS) selects GFX_GMA which has unmet direct dependencies ((NORTHBRIDGE_INTEL_GM45 || NORTHBRIDGE_INTEL_X4X || NORTHBRIDGE_INTEL_IRONLAKE || NORTHBRIDGE_INTEL_SANDYBRIDGE || NORTHBRIDGE_INTEL_HASWELL || SOC_INTEL_BROADWELL || SOC_INTEL_SKYLAKE || SOC_INTEL_APOLLOLAKE || SOC_INTEL_KABYLAKE || SOC_INTEL_COFFEELAKE || SOC_INTEL_WHISKEYLAKE) && (MAINBOARD_USE_LIBGFXINIT || INTEL_GMA_LIBGFXINIT_EDID))
The board I am working with uses Comet Lake so I have "select SOC_INTEL_COMETLAKE” in the board specific options.
Am I going about this the wrong way or does the depends on list for GFX_GMA in src/drivers/intel/gma/Kconfig need SOC_INTEL_COMETLAKE adding to the list?
-Andy.
1. vga bios: You need to rename the extracted vga bios binary to pci8086,ABCD.rom . Here ABCD is device ID of Integrated Graphic of the cometlake SoC To get the device ID, just run lspci -vvvk -s 00:02.0 # This is typically bus 0, dev 2 func 0. Also place the file in the coreboot folder & not in another directory or sundirectory.
2. Open file -> vim src/drivers/intel/gma/Kconfig +90 Add like so that it looks like: || SOC_INTEL_WHISKEYLAKE || SOC_INTEL_COMETLAKE I haven't tested it for build so give it a try.
Good luck!
Regards, Naresh G Solanki
On Wed, Nov 11, 2020 at 8:20 PM Andy Pont andy.pont@sdcsystems.com wrote:
Hello,
Using the instructions in the old Wiki page [1] I have used the UEFI method and UEFI tool to extract the video BIOS from the standard binary that comes with the board.
I have followed the layout of some of the other Kconfig files in the mainboard directory and added the following to my boards Kconfig:
config BOARD_SPECIFIC_OPTIONS ... select VGA_BIOS ...
config VGA_BIOS_ID string default "8086,0406"
config VGA_BIOS_FILE string default "pci8086,0406.rom"
When I try to build with that I get an error:
make: *** No rule to make target 'pci8086,0406.rom', needed by 'build/coreboot.pre'. Stop.
The other mainboards that use this methodology all seem to have “select GFX_GMA_PANEL_1_ON_LVDS” but as my display is connected directly to the eDP port I added “select GFX_GMA_PANEL_1_ON_EDP”. This in turn appears to need “select GFX_GMA”. Now when I try to build I get:
warning: (BOARD_SPECIFIC_OPTIONS) selects GFX_GMA which has unmet direct dependencies ((NORTHBRIDGE_INTEL_GM45 || NORTHBRIDGE_INTEL_X4X || NORTHBRIDGE_INTEL_IRONLAKE || NORTHBRIDGE_INTEL_SANDYBRIDGE || NORTHBRIDGE_INTEL_HASWELL || SOC_INTEL_BROADWELL || SOC_INTEL_SKYLAKE || SOC_INTEL_APOLLOLAKE || SOC_INTEL_KABYLAKE || SOC_INTEL_COFFEELAKE || SOC_INTEL_WHISKEYLAKE) && (MAINBOARD_USE_LIBGFXINIT || INTEL_GMA_LIBGFXINIT_EDID))
The board I am working with uses Comet Lake so I have "select SOC_INTEL_COMETLAKE” in the board specific options.
Am I going about this the wrong way or does the depends on list for GFX_GMA in src/drivers/intel/gma/Kconfig need SOC_INTEL_COMETLAKE adding to the list?
-Andy.
[1] - https://www.coreboot.org/VGA_support _______________________________________________ coreboot mailing list -- coreboot@coreboot.org To unsubscribe send an email to coreboot-leave@coreboot.org
Naresh wrote…
- Open file ->
vim src/drivers/intel/gma/Kconfig +90 Add like so that it looks like: || SOC_INTEL_WHISKEYLAKE || SOC_INTEL_COMETLAKE
So, I have made the change to src/drivers/intel/gma/Kconfig and when I run the build it now gives the error:
warning: (BOARD_SPECIFIC_OPTIONS) selects GFX_GMA which has unmet direct dependencies ((NORTHBRIDGE_INTEL_GM45 || NORTHBRIDGE_INTEL_X4X || NORTHBRIDGE_INTEL_IRONLAKE || NORTHBRIDGE_INTEL_SANDYBRIDGE || NORTHBRIDGE_INTEL_HASWELL || SOC_INTEL_BROADWELL || SOC_INTEL_SKYLAKE || SOC_INTEL_APOLLOLAKE || SOC_INTEL_KABYLAKE || SOC_INTEL_COFFEELAKE || SOC_INTEL_WHISKEYLAKE || SOC_INTEL_COMETLAKE) && (MAINBOARD_USE_LIBGFXINIT || INTEL_GMA_LIBGFXINIT_EDID))
As there is a && in the middle of the expression I have tried adding the MAINBOARD_USE_LIBGFXINIT option but that doesn’t fix the build either!
-Andy.
Looking at kconfig, the mainboard should select MAINBOARD_HAS_LIBGFXINIT. For example see "grep -rsn MAINBOARD_HAS_LIBGFXINIT src/"
I haven't used this, so not sure what else might be needed.
On Wed, Nov 11, 2020 at 9:18 PM Andy Pont andy.pont@sdcsystems.com wrote:
Naresh wrote…
- Open file ->
vim src/drivers/intel/gma/Kconfig +90 Add like so that it looks like: || SOC_INTEL_WHISKEYLAKE || SOC_INTEL_COMETLAKE
So, I have made the change to src/drivers/intel/gma/Kconfig and when I run the build it now gives the error:
warning: (BOARD_SPECIFIC_OPTIONS) selects GFX_GMA which has unmet direct dependencies ((NORTHBRIDGE_INTEL_GM45 || NORTHBRIDGE_INTEL_X4X || NORTHBRIDGE_INTEL_IRONLAKE || NORTHBRIDGE_INTEL_SANDYBRIDGE || NORTHBRIDGE_INTEL_HASWELL || SOC_INTEL_BROADWELL || SOC_INTEL_SKYLAKE || SOC_INTEL_APOLLOLAKE || SOC_INTEL_KABYLAKE || SOC_INTEL_COFFEELAKE || SOC_INTEL_WHISKEYLAKE || SOC_INTEL_COMETLAKE) && (MAINBOARD_USE_LIBGFXINIT || INTEL_GMA_LIBGFXINIT_EDID))
As there is a && in the middle of the expression I have tried adding the MAINBOARD_USE_LIBGFXINIT option but that doesn’t fix the build either!
-Andy.
Naresh wrote…
Looking at kconfig, the mainboard should select MAINBOARD_HAS_LIBGFXINIT. For example see "grep -rsn MAINBOARD_HAS_LIBGFXINIT src/"
I haven't used this, so not sure what else might be needed.
In order to get the build to progress I have needed to select MAINBOARD_HAS_LIBGFXINIT and MAINBOARD_USE_LIBGFXINIT. The build now fails during compilation with:
GCC ramstage/libgfxinit/common/dyncpu/hw-gfx-gma-config.o hw-gfx-gma-config.ads:19:32: missing operand Makefile:356: recipe for target 'build/ramstage/libgfxinit/common/dyncpu/hw-gfx-gma-config.o’ failed
This feels like a rabbit hold down which I don’t want to find myself!
-Andy.
Hi Andy, Naresh,
On Wed, Nov 11, 2020 at 5:10 PM Andy Pont andy.pont@sdcsystems.com wrote:
Naresh wrote…
Looking at kconfig, the mainboard should select MAINBOARD_HAS_LIBGFXINIT. For example see "grep -rsn MAINBOARD_HAS_LIBGFXINIT src/"
I haven't used this, so not sure what else might be needed.
In order to get the build to progress I have needed to select MAINBOARD_HAS_LIBGFXINIT and MAINBOARD_USE_LIBGFXINIT. The build now fails during compilation with:
This means you're going to use libgfxinit instead of a video BIOS. libgfxinit is a graphics modesetting library written in SPARK, a subset of Ada with formal verification properties. You can read more about it here: https://doc.coreboot.org/gfx/libgfxinit.html
I've made it work on Whiskey Lake (the immediate predecessor of Comet Lake), but I needed to implement a few workarounds to prevent system lock-ups. My board is a Librem Mini, which does not have an integrated LCD (unlike laptops), so I don't know if the backlight part needs special handling. Here's the relevant changes in Gerrit: https://review.coreboot.org/q/topic:%22librem_whl_lgi"
GCC ramstage/libgfxinit/common/dyncpu/hw-gfx-gma-config.o
hw-gfx-gma-config.ads:19:32: missing operand Makefile:356: recipe for target 'build/ramstage/libgfxinit/common/dyncpu/hw-gfx-gma-config.o’ failed
This feels like a rabbit hold down which I don’t want to find myself!
Sounds like the sedprocessor (libgfxinit is configured using some sed-fu to fill in config parameters as constants) replaces `<<GEN>>` (the graphics generation, which is an enumerated type) with an empty string, which is why the compiler complains about a missing operand.
-Andy.
coreboot mailing list -- coreboot@coreboot.org To unsubscribe send an email to coreboot-leave@coreboot.org
Best regards, Angel
Angel wrote…
This means you're going to use libgfxinit instead of a video BIOS. libgfxinit is a graphics modesetting library written in SPARK, a
OK, so that isn’t the way I want to go (I don’t think). Using the romheaders utility on the file I have extracted gives me:
Image 1: PCI Expansion ROM Header: Signature: 0x55aa (Ok) CPU unique data: 0x80 0xe9 0x92 0xf9 0x30 0x30 0x30 0x30 0x30 0x30 0x30 0x30 0x30 0x30 0x30 0x30 Pointer to PCI Data Structure: 0x0040
PCI Data Structure: Signature: 0x50434952 'PCIR' (Ok) Vendor ID: 0x8086 Device ID: 0x0406 Vital Product Data: 0x001c PCI Data Structure Length: 0x001c (28 bytes) PCI Data Structure Revision: 0x03 Class Code: 0x030000 (VGA Display controller) Image Length: 0x0080 blocks (65536 bytes) Revision Level of Code/Data: 0x0000 Code Type: 0x00 (Intel x86) Last-Image Flag: 0x80 (last image in rom) Reserved: 0x8000
Platform specific data for x86 compliant option rom: Initialization Size: 0x80 (65536 bytes) Entry point for INIT function: 0xf998
I don’t know at this point in the project what the payload will be - it might be SeaBIOS, TianoCore or GRUB2 so do I need to give the video BIOS a normal file name and select VGA_ROM_RUN?
-Andy.
Hi, Personally, I would recommend to use the FSP GOP, which should/could work with even the stock VBT in "*FspBinPkg/SampleCode/Vbt/". You can also customise it for your board using Intel BMP (Binary Modification Program) available online.
However, if you want to use the VGABIOS, you shouldn't need to set more than `VGA_BIOS_ID` in the mainboard config (as far as I know) and perhaps `VGA_BIOS_FILE`. Leave the VGABIOS in the appropriate folder and `VGA_ROM_RUN` can be set by menuconfig.
I can think of two issues: 1. The VGABIOSes all have the DID "0x0406," but this is not the DID of the iGFX. 2. The VGABIOS may issue interrupts. You can see if it does by opening it in Intel BMP if you have the corresponding BSF script file. If it does, you should `select INTEL_INT15` and have the mainboard install the handler (for examples, see the Thinkpad's' "mainboard.c"). However, coreboot's handler does not handle all interrupts. I haven't tried this myself.
Best regards, Benjamin
Yes I had faced problem with VGA bios for Atom Z520 platform due to the interrupt dependency. so had to move graphic init to SeaBios. Also VBT is good option since you are already using fsps for silicon init.
On Thu, 12 Nov, 2020, 11:56 am Benjamin Doron, benjamin.doron00@gmail.com wrote:
Hi, Personally, I would recommend to use the FSP GOP, which should/could work with even the stock VBT in "*FspBinPkg/SampleCode/Vbt/". You can also customise it for your board using Intel BMP (Binary Modification Program) available online.
However, if you want to use the VGABIOS, you shouldn't need to set more than `VGA_BIOS_ID` in the mainboard config (as far as I know) and perhaps `VGA_BIOS_FILE`. Leave the VGABIOS in the appropriate folder and `VGA_ROM_RUN` can be set by menuconfig.
I can think of two issues:
- The VGABIOSes all have the DID "0x0406," but this is not the DID of the
iGFX. 2. The VGABIOS may issue interrupts. You can see if it does by opening it in Intel BMP if you have the corresponding BSF script file. If it does, you should `select INTEL_INT15` and have the mainboard install the handler (for examples, see the Thinkpad's' "mainboard.c"). However, coreboot's handler does not handle all interrupts. I haven't tried this myself.
Best regards, Benjamin _______________________________________________ coreboot mailing list -- coreboot@coreboot.org To unsubscribe send an email to coreboot-leave@coreboot.org