From fa38535a20bdfcf0a27862fc13d2e02a09da8ef8 Mon Sep 17 00:00:00 2001 From: Bill XIE Date: Tue, 4 Apr 2023 10:45:49 +0800 Subject: [PATCH] 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 Change-Id: I2e080b29321b6989d1f26b6c67876b3d703042f4 Reviewed-on: https://review.coreboot.org/c/coreboot/+/74181 Reviewed-by: Swift Geek (Sebastian Grzywna) Reviewed-by: Angel Pons Tested-by: build bot (Jenkins) Reviewed-by: Felix Singer --- src/mainboard/lenovo/x200/blc.c | 6 +++--- 1 file 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 #include #include +#include #include 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,