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 0000000000..dc044c90e3 Binary files /dev/null and b/src/mainboard/lenovo/x200/data_ccfl.vbt differ diff --git a/src/mainboard/lenovo/x200/data_led.vbt b/src/mainboard/lenovo/x200/data_led.vbt new file mode 100644 index 0000000000..bcd6c300c1 Binary files /dev/null and b/src/mainboard/lenovo/x200/data_led.vbt differ