From 4cdb2b9b75fe2cf722b0409652a0d660b58fecfd Mon Sep 17 00:00:00 2001 From: Arthur Heymans Date: Wed, 28 Nov 2018 16:57:15 +0100 Subject: [PATCH] mb/intel/x200: Add data.vbt There are 2 vendor BIOS's for the Lenovo X200 with the difference being the settings in the VBT blob to accommodate different backlight frequencies. Linux however sticks with the setting set by the firmware. Tested on Lenovo X200 with CCFL backlight. Change-Id: I4c4a7011ce03cdd511fa2e2160c2f006ba2707ba Signed-off-by: Arthur Heymans Reviewed-on: https://review.coreboot.org/c/29904 Reviewed-by: Nico Huber Tested-by: build bot (Jenkins) --- src/mainboard/lenovo/x200/Makefile.inc | 9 +++++++++ src/mainboard/lenovo/x200/blc.c | 21 +++++++++++++++++++++ src/mainboard/lenovo/x200/data_ccfl.vbt | Bin 0 -> 3854 bytes src/mainboard/lenovo/x200/data_led.vbt | Bin 0 -> 3863 bytes 4 files changed, 30 insertions(+) create mode 100644 src/mainboard/lenovo/x200/data_ccfl.vbt create mode 100644 src/mainboard/lenovo/x200/data_led.vbt diff --git a/src/mainboard/lenovo/x200/Makefile.inc b/src/mainboard/lenovo/x200/Makefile.inc index c10bc70e67..5e9832dcce 100644 --- a/src/mainboard/lenovo/x200/Makefile.inc +++ b/src/mainboard/lenovo/x200/Makefile.inc @@ -19,3 +19,12 @@ ramstage-y += blc.c romstage-y += gpio.c ramstage-$(CONFIG_MAINBOARD_USE_LIBGFXINIT) += gma-mainboard.ads + +add_vbt_to_cbfs= \ + $(eval cbfs-files-y += $1) \ + $(eval $1-file := $2) \ + $(eval $1-type := raw) \ + $(eval $1-compression := lzma) + +$(call add_vbt_to_cbfs, data_ccfl.vbt, data_ccfl.vbt) +$(call add_vbt_to_cbfs, data_led.vbt, data_led.vbt) diff --git a/src/mainboard/lenovo/x200/blc.c b/src/mainboard/lenovo/x200/blc.c index 3f8aadb637..6c5779a0b2 100644 --- a/src/mainboard/lenovo/x200/blc.c +++ b/src/mainboard/lenovo/x200/blc.c @@ -15,7 +15,9 @@ #include #include +#include #include +#include static const struct blc_pwm_t blc_entries[] = { /* corrected to 320MHz CDClk, vendor set 753; works fine at both: */ @@ -43,3 +45,22 @@ int get_blc_values(const struct blc_pwm_t **entries) *entries = blc_entries; return ARRAY_SIZE(blc_entries); } + +const char *mainboard_vbt_filename(void) +{ + u16 pwm_freq; + + pwm_freq = get_blc_pwm_freq_value(NULL); + + if (pwm_freq == 0) { + printk(BIOS_DEBUG, + "GMA: Display backlight type not found, assuming LED\n"); + return "data_led.vbt"; + } else if (pwm_freq > 200) { + printk(BIOS_DEBUG, "GMA: Using LED backlight VBT\n"); + return "data_led.vbt"; + } else { + printk(BIOS_DEBUG, "GMA: Using CCFL backlight VBT\n"); + return "data_ccfl.vbt"; + } +} diff --git a/src/mainboard/lenovo/x200/data_ccfl.vbt b/src/mainboard/lenovo/x200/data_ccfl.vbt new file mode 100644 index 0000000000000000000000000000000000000000..dc044c90e3452c3f708aef88dc3c8c88f995afaa GIT binary patch literal 3854 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 X>cH78X8_w<_5Ve_e+hmt=P3UGbeAj? literal 0 HcmV?d00001