Angel Pons | 89ab250 | 2020-04-03 01:22:28 +0200 | [diff] [blame] | 1 | /* SPDX-License-Identifier: GPL-2.0-only */ |
Arthur Heymans | 20cb85f | 2017-04-29 14:31:32 +0200 | [diff] [blame] | 2 | |
| 3 | #include <stdint.h> |
| 4 | #include <commonlib/helpers.h> |
Arthur Heymans | 4cdb2b9 | 2018-11-28 16:57:15 +0100 | [diff] [blame] | 5 | #include <console/console.h> |
Arthur Heymans | 20cb85f | 2017-04-29 14:31:32 +0200 | [diff] [blame] | 6 | #include <northbridge/intel/gm45/gm45.h> |
Bill XIE | fa38535 | 2023-04-04 10:45:49 +0800 | [diff] [blame] | 7 | #include <device/pci.h> |
Arthur Heymans | 4cdb2b9 | 2018-11-28 16:57:15 +0100 | [diff] [blame] | 8 | #include <drivers/intel/gma/opregion.h> |
Arthur Heymans | 20cb85f | 2017-04-29 14:31:32 +0200 | [diff] [blame] | 9 | |
| 10 | static const struct blc_pwm_t blc_entries[] = { |
Nico Huber | 36dafd8 | 2017-05-22 19:23:39 +0200 | [diff] [blame] | 11 | /* corrected to 320MHz CDClk, vendor set 753; works fine at both: */ |
| 12 | {"LTD121EQ3B", 447}, |
Arthur Heymans | 20cb85f | 2017-04-29 14:31:32 +0200 | [diff] [blame] | 13 | {"LTD121EWVB", 165}, |
Peter Lemenkov | 6b7d40a | 2020-01-22 11:40:16 +0100 | [diff] [blame] | 14 | {"LTD133EQ1B", 264}, /* Found on an X301 */ |
Arthur Heymans | 20cb85f | 2017-04-29 14:31:32 +0200 | [diff] [blame] | 15 | {"B121EW03 V6 ", 165}, |
| 16 | /* datasheets: between 100 and 20k, typical 200 */ |
| 17 | /* TESTED: works best at 400 */ |
| 18 | {"B121EW09 V3 ", 400}, |
| 19 | {"HV121WX4-120", 110}, /* Aftermarket AFFS lcd, works well at low pwm */ |
| 20 | {"LTN121AT03001", 110}, |
Bill XIE | ad02589 | 2023-04-04 10:02:39 +0800 | [diff] [blame^] | 21 | {"LTN121AT07L02", 750}, /* Its part name is LTN121AT07-L02 */ |
Arthur Heymans | 20cb85f | 2017-04-29 14:31:32 +0200 | [diff] [blame] | 22 | {"LTN121AP03001", 750}, |
| 23 | /* TODO: untested panels found on thinkwiki */ |
| 24 | /* Generally CCFL runs best at lower PWM */ |
| 25 | /* {"B121EW09 V2 ", 450}, */ |
| 26 | /* {"N121IB-L05", 450}, */ |
| 27 | {"LP121WX3-TLC1", 400}, /* TESTED to work best at this value */ |
| 28 | /* {"LP121WX3-TLA1" 450}, */ |
| 29 | /* {"B121EW03 V3 " 110}, */ |
| 30 | /* {"LTN121AP02001" 110}, */ |
| 31 | }; |
| 32 | |
| 33 | int get_blc_values(const struct blc_pwm_t **entries) |
| 34 | { |
| 35 | *entries = blc_entries; |
| 36 | return ARRAY_SIZE(blc_entries); |
| 37 | } |
Arthur Heymans | 4cdb2b9 | 2018-11-28 16:57:15 +0100 | [diff] [blame] | 38 | |
| 39 | const char *mainboard_vbt_filename(void) |
| 40 | { |
Bill XIE | fa38535 | 2023-04-04 10:45:49 +0800 | [diff] [blame] | 41 | struct device *gma = pcidev_path_on_root(PCI_DEVFN(0x2, 0)); |
| 42 | u16 pwm_freq = gma ? get_blc_pwm_freq_value(gm45_get_lvds_edid_str(gma)) : 0; |
Arthur Heymans | 4cdb2b9 | 2018-11-28 16:57:15 +0100 | [diff] [blame] | 43 | |
| 44 | if (pwm_freq == 0) { |
| 45 | printk(BIOS_DEBUG, |
| 46 | "GMA: Display backlight type not found, assuming LED\n"); |
| 47 | return "data_led.vbt"; |
| 48 | } else if (pwm_freq > 200) { |
| 49 | printk(BIOS_DEBUG, "GMA: Using LED backlight VBT\n"); |
| 50 | return "data_led.vbt"; |
| 51 | } else { |
| 52 | printk(BIOS_DEBUG, "GMA: Using CCFL backlight VBT\n"); |
| 53 | return "data_ccfl.vbt"; |
| 54 | } |
| 55 | } |