diff options
author | Bill XIE <persmule@hardenedlinux.org> | 2023-04-04 10:45:49 +0800 |
---|---|---|
committer | Felix Singer <felixsinger@posteo.net> | 2023-04-11 11:47:07 +0000 |
commit | fa38535a20bdfcf0a27862fc13d2e02a09da8ef8 (patch) | |
tree | 8e7b3f8b744adbd30203af0c733bcc6744f0f081 /src/mainboard | |
parent | cc4ca5ec94a112b6d585dcbd14c71f182131fed8 (diff) |
mb/lenovo/x200: Read EDID in mainboard_vbt_filename()
mainboard_vbt_filename() used to assume that it is called after a call
to get_blc_pwm_freq_value() with a valid parameter, but currently it
is the first call of get_blc_pwm_freq_value(NULL), and will return 0,
so "data_led.vbt" is always returned, regardless of the actual type of
the panel.
Combined with the previous commit, in this commit
mainboard_vbt_filename() will explicitly read EDID string via
gm45_get_lvds_edid_str() and use this string to call
get_blc_pwm_freq_value().
Resolves: https://ticket.coreboot.org/issues/475
Tested on my x200s with LTD121EQ3B (LED), and x200 with LTD121EWVB
(CCFL).
Signed-off-by: Bill XIE <persmule@hardenedlinux.org>
Change-Id: I2e080b29321b6989d1f26b6c67876b3d703042f4
Reviewed-on: https://review.coreboot.org/c/coreboot/+/74181
Reviewed-by: Swift Geek (Sebastian Grzywna) <swiftgeek@gmail.com>
Reviewed-by: Angel Pons <th3fanbus@gmail.com>
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
Reviewed-by: Felix Singer <felixsinger@posteo.net>
Diffstat (limited to 'src/mainboard')
-rw-r--r-- | src/mainboard/lenovo/x200/blc.c | 6 |
1 files changed, 3 insertions, 3 deletions
diff --git a/src/mainboard/lenovo/x200/blc.c b/src/mainboard/lenovo/x200/blc.c index ef2dbb1e59..c03b3e9ee7 100644 --- a/src/mainboard/lenovo/x200/blc.c +++ b/src/mainboard/lenovo/x200/blc.c @@ -4,6 +4,7 @@ #include <commonlib/helpers.h> #include <console/console.h> #include <northbridge/intel/gm45/gm45.h> +#include <device/pci.h> #include <drivers/intel/gma/opregion.h> static const struct blc_pwm_t blc_entries[] = { @@ -36,9 +37,8 @@ int get_blc_values(const struct blc_pwm_t **entries) const char *mainboard_vbt_filename(void) { - u16 pwm_freq; - - pwm_freq = get_blc_pwm_freq_value(NULL); + struct device *gma = pcidev_path_on_root(PCI_DEVFN(0x2, 0)); + u16 pwm_freq = gma ? get_blc_pwm_freq_value(gm45_get_lvds_edid_str(gma)) : 0; if (pwm_freq == 0) { printk(BIOS_DEBUG, |