Angel Pons | 89ab250 | 2020-04-03 01:22:28 +0200 | [diff] [blame] | 1 | /* SPDX-License-Identifier: GPL-2.0-only */ |
Timothy Pearson | 4b373c9 | 2015-04-05 17:54:08 -0500 | [diff] [blame] | 2 | |
Timothy Pearson | 4b373c9 | 2015-04-05 17:54:08 -0500 | [diff] [blame] | 3 | #include <console/console.h> |
Arthur Heymans | 4496a2e | 2018-09-16 15:58:36 +0200 | [diff] [blame] | 4 | #include <southbridge/intel/common/gpio.h> |
Timothy Pearson | 4b373c9 | 2015-04-05 17:54:08 -0500 | [diff] [blame] | 5 | #include <northbridge/intel/gm45/gm45.h> |
Patrick Rudolph | 24680d0 | 2017-07-25 18:18:57 +0200 | [diff] [blame] | 6 | #include <drivers/lenovo/hybrid_graphics/hybrid_graphics.h> |
Timothy Pearson | 4b373c9 | 2015-04-05 17:54:08 -0500 | [diff] [blame] | 7 | |
Patrick Rudolph | 24680d0 | 2017-07-25 18:18:57 +0200 | [diff] [blame] | 8 | static void hybrid_graphics_init(sysinfo_t *sysinfo) |
| 9 | { |
| 10 | bool peg, igd; |
| 11 | |
| 12 | early_hybrid_graphics(&igd, &peg); |
| 13 | |
| 14 | sysinfo->enable_igd = igd; |
| 15 | sysinfo->enable_peg = peg; |
| 16 | } |
Arthur Heymans | f9d5308 | 2017-01-02 16:16:45 +0100 | [diff] [blame] | 17 | |
Patrick Georgi | 40b8f01 | 2021-05-12 14:52:12 +0200 | [diff] [blame] | 18 | void get_mb_spd_addrmap(u8 spd_addrmap[4]) |
Arthur Heymans | 3b0eb60 | 2019-01-31 22:47:09 +0100 | [diff] [blame] | 19 | { |
| 20 | spd_addrmap[0] = 0x50; |
| 21 | spd_addrmap[2] = 0x51; |
| 22 | } |
Timothy Pearson | 4b373c9 | 2015-04-05 17:54:08 -0500 | [diff] [blame] | 23 | |
Arthur Heymans | 3b0eb60 | 2019-01-31 22:47:09 +0100 | [diff] [blame] | 24 | void mb_pre_raminit_setup(sysinfo_t *sysinfo) |
| 25 | { |
Arthur Heymans | 0318021 | 2018-09-16 18:55:28 +0200 | [diff] [blame] | 26 | if (CONFIG(BOARD_LENOVO_R500)) { |
| 27 | int use_integrated = get_gpio(21); |
| 28 | printk(BIOS_DEBUG, "R500 variant found with an %s GPU\n", |
| 29 | use_integrated ? "integrated" : "discrete"); |
| 30 | if (use_integrated) { |
| 31 | sysinfo->enable_igd = 1; |
| 32 | sysinfo->enable_peg = 0; |
| 33 | } else { |
| 34 | sysinfo->enable_igd = 0; |
| 35 | sysinfo->enable_peg = 1; |
| 36 | } |
| 37 | } else { |
| 38 | hybrid_graphics_init(sysinfo); |
| 39 | } |
Arthur Heymans | 3b0eb60 | 2019-01-31 22:47:09 +0100 | [diff] [blame] | 40 | } |
Timothy Pearson | 4b373c9 | 2015-04-05 17:54:08 -0500 | [diff] [blame] | 41 | |
Arthur Heymans | 3b0eb60 | 2019-01-31 22:47:09 +0100 | [diff] [blame] | 42 | void mb_post_raminit_setup(void) |
| 43 | { |
| 44 | /* FIXME: make a proper SMBUS mux support. */ |
| 45 | /* Set the SMBUS mux to the eeprom */ |
Arthur Heymans | 32a414f | 2019-01-31 22:53:09 +0100 | [diff] [blame] | 46 | set_gpio(42, GPIO_LEVEL_LOW); |
Timothy Pearson | 4b373c9 | 2015-04-05 17:54:08 -0500 | [diff] [blame] | 47 | } |