Hello Mike Banon,
I'd like you to do a code review. Please visit
https://review.coreboot.org/c/coreboot/+/31450
to review the following change.
Change subject: lenovo/g505s: Add the discrete VGA support for AMD Lenovo G505S laptop ......................................................................
lenovo/g505s: Add the discrete VGA support for AMD Lenovo G505S laptop
Make it possible to enable CONFIG_MULTIPLE_VGA_ADAPTERS option for G505S which is currently not used by any of coreboot-supported boards. Also enable the discrete graphics PCI bus leading to HD 8570M (1002,6663) or R5 M230 (1002,6665) discrete VGA and add the G505S-specific workaround for PCI resource allocation problems to AMD AGESA vendorcode.
Based on the original patches by Hans Jürgen Kitter eforname@freemail.hu.
Signed-off-by: Mike Banon mikebdp2@gmail.com Signed-off-by: Hans Jürgen Kitter eforname@freemail.hu Change-Id: I98793fa3b1ad8ee7d0b7962a328f7d5c1b0c2f88 --- M src/device/Kconfig M src/mainboard/lenovo/g505s/devicetree.cb M src/vendorcode/amd/agesa/f15tn/Proc/Mem/NB/TN/mntn.c 3 files changed, 17 insertions(+), 3 deletions(-)
git pull ssh://review.coreboot.org:29418/coreboot refs/changes/50/31450/1
diff --git a/src/device/Kconfig b/src/device/Kconfig index 33c1e5b3..5d2087e 100644 --- a/src/device/Kconfig +++ b/src/device/Kconfig @@ -247,8 +247,15 @@ Enable this option for a good compromise between security and speed.
config MULTIPLE_VGA_ADAPTERS + prompt "Multiple VGA Adapters" bool + depends on BOARD_LENOVO_G505S default n + help + Some motherboards may have more than one VGA adapter - for example, + there are versions of Lenovo G505S that have a discrete VGA adapter + in addition to its' integrated VGA adapter which is a part of APU. + Enable this option to try to initialize this discrete VGA adapter.
menu "Display" depends on HAVE_VGA_TEXT_FRAMEBUFFER || HAVE_LINEAR_FRAMEBUFFER diff --git a/src/mainboard/lenovo/g505s/devicetree.cb b/src/mainboard/lenovo/g505s/devicetree.cb index 99f42d6..1f33c27 100644 --- a/src/mainboard/lenovo/g505s/devicetree.cb +++ b/src/mainboard/lenovo/g505s/devicetree.cb @@ -27,7 +27,7 @@ device pci 0.2 on end # IOMMU device pci 1.0 on end # Internal Graphics P2P bridge 0x99XX device pci 1.1 on end # Internal Multimedia - device pci 2.0 off end + device pci 2.0 on end # Discrete Graphics PCI bus 0x666X device pci 3.0 off end device pci 4.0 on end # PCIE MINI0 device pci 5.0 on end # PCIE MINI1 diff --git a/src/vendorcode/amd/agesa/f15tn/Proc/Mem/NB/TN/mntn.c b/src/vendorcode/amd/agesa/f15tn/Proc/Mem/NB/TN/mntn.c index c566061..ee6d2c2 100644 --- a/src/vendorcode/amd/agesa/f15tn/Proc/Mem/NB/TN/mntn.c +++ b/src/vendorcode/amd/agesa/f15tn/Proc/Mem/NB/TN/mntn.c @@ -437,8 +437,15 @@ RefPtr = MemPtr->ParameterListPtr;
// Memory Map/Mgt. - // Mask Bottom IO with 0xF8 to force hole size to have granularity of 128MB - RefPtr->BottomIo = 0xE0; + if ((IS_ENABLED(CONFIG_BOARD_LENOVO_G505S)) && + (IS_ENABLED(CONFIG_MULTIPLE_VGA_ADAPTERS))) { + // Set to 0xD0 instead of 0xE0 to avoid the PCI resource allocation problems + RefPtr->BottomIo = 0xD0; + } + else { + // Mask Bottom IO with 0xF8 to force hole size to have granularity of 128MB + RefPtr->BottomIo = 0xE0; + } RefPtr->UmaMode = UserOptions.CfgUmaMode; RefPtr->UmaSize = UserOptions.CfgUmaSize; RefPtr->MemHoleRemapping = TRUE;