mb/lenovo/t440p: Enable dGPU on Lenovo T440P
Enable the dGPU on the Lenovo T440P. It uses the same code (roughly) of the T430S. By default, it is set to be disabled however it can be enabled via the nvram option enable_dual_graphics. Removed hybrid graphics options too as they are not valid for the T440p. Tested on a T440P with Ubuntu 18.04.4 with Kernel 5.3.0-29 (successful). Tested on same machine with Windows 10 1909 (machine check exception bluescreen). Change-Id: Idf8c2c0d1ae34bda8736448d3e350396e3cf7a93 Signed-off-by: Chris Morgan <macromorgan@hotmail.com> Reviewed-on: https://review.coreboot.org/c/coreboot/+/38723 Tested-by: build bot (Jenkins) <no-reply@coreboot.org> Reviewed-by: Patrick Rudolph <siro@das-labor.org>
This commit is contained in:
parent
75372e5a75
commit
f8a13d5a22
|
@ -10,4 +10,5 @@ f1_to_f12_as_primary=Enable
|
||||||
sticky_fn=Disable
|
sticky_fn=Disable
|
||||||
trackpoint=Enable
|
trackpoint=Enable
|
||||||
backlight=Keyboard
|
backlight=Keyboard
|
||||||
|
enable_dual_graphics=Disable
|
||||||
usb_always_on=Disable
|
usb_always_on=Disable
|
||||||
|
|
|
@ -69,7 +69,7 @@ entries
|
||||||
424 1 e 1 f1_to_f12_as_primary
|
424 1 e 1 f1_to_f12_as_primary
|
||||||
|
|
||||||
# coreboot config options: northbridge
|
# coreboot config options: northbridge
|
||||||
#435 2 e 12 hybrid_graphics_mode
|
435 1 e 1 enable_dual_graphics
|
||||||
#437 3 r 0 unused
|
#437 3 r 0 unused
|
||||||
440 8 h 0 volume
|
440 8 h 0 volume
|
||||||
|
|
||||||
|
@ -108,9 +108,6 @@ enumerations
|
||||||
10 1 Keyboard
|
10 1 Keyboard
|
||||||
#10 2 Thinklight only
|
#10 2 Thinklight only
|
||||||
10 3 None
|
10 3 None
|
||||||
#12 0 Integrated Only
|
|
||||||
#12 1 Discrete Only
|
|
||||||
#12 2 Dual Graphics
|
|
||||||
13 0 Disable
|
13 0 Disable
|
||||||
13 1 AC and battery
|
13 1 AC and battery
|
||||||
13 2 AC only
|
13 2 AC only
|
||||||
|
|
|
@ -22,6 +22,9 @@
|
||||||
#include <northbridge/intel/haswell/pei_data.h>
|
#include <northbridge/intel/haswell/pei_data.h>
|
||||||
#include <southbridge/intel/common/gpio.h>
|
#include <southbridge/intel/common/gpio.h>
|
||||||
#include <southbridge/intel/lynxpoint/pch.h>
|
#include <southbridge/intel/lynxpoint/pch.h>
|
||||||
|
#include <option.h>
|
||||||
|
#include <ec/lenovo/pmh7/pmh7.h>
|
||||||
|
#include <device/pci_ops.h>
|
||||||
|
|
||||||
static const struct rcba_config_instruction rcba_config[] = {
|
static const struct rcba_config_instruction rcba_config[] = {
|
||||||
RCBA_SET_REG_16(D31IR, DIR_ROUTE(PIRQA, PIRQD, PIRQC, PIRQA)),
|
RCBA_SET_REG_16(D31IR, DIR_ROUTE(PIRQA, PIRQD, PIRQC, PIRQA)),
|
||||||
|
@ -100,4 +103,21 @@ void mainboard_romstage_entry(void)
|
||||||
};
|
};
|
||||||
|
|
||||||
romstage_common(&romstage_params);
|
romstage_common(&romstage_params);
|
||||||
|
|
||||||
|
u8 enable_peg;
|
||||||
|
if (get_option(&enable_peg, "enable_dual_graphics") != CB_SUCCESS)
|
||||||
|
enable_peg = 0;
|
||||||
|
|
||||||
|
bool power_en = pmh7_dgpu_power_state();
|
||||||
|
|
||||||
|
if (enable_peg != power_en)
|
||||||
|
pmh7_dgpu_power_enable(!power_en);
|
||||||
|
|
||||||
|
if (!enable_peg) {
|
||||||
|
// Hide disabled dGPU device
|
||||||
|
u32 reg32 = pci_read_config32(PCI_DEV(0, 0, 0), DEVEN);
|
||||||
|
reg32 &= ~DEVEN_D1F0EN;
|
||||||
|
|
||||||
|
pci_write_config32(PCI_DEV(0, 0, 0), DEVEN, reg32);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue