mb/google/brya/var/nereid: Configure descriptor for either Type-C or HDMI
Some bytes in the descriptor need to be set differently for Type-C and HDMI. To allow using a single firmware variant for both cases, update the descriptor at runtime based on fw_config. This is a temporary workaround while we find a better solution. The byte values were determined by changing the following CSE strap and comparing the generated descriptors: Type-C: TypeCPort2Config = "No Thunderbolt" HDMI: TypeCPort2Config = "DP Fixed Connection" The default value before updating the descriptor is Type-C, but this was chosen arbitrarily. BUG=b:226848617 TEST=Type-C and HDMI both work on nereid with fw_config set correctly. Change-Id: I2cc230e3bd35816c81989ae7e01df5d2c152062e Signed-off-by: Reka Norman <rekanorman@google.com> Reviewed-on: https://review.coreboot.org/c/coreboot/+/63366 Tested-by: build bot (Jenkins) <no-reply@coreboot.org> Reviewed-by: Eric Lai <eric_lai@quanta.corp-partner.google.com> Reviewed-by: Sam McNally <sammc@google.com>
This commit is contained in:
parent
e790f929bd
commit
a6de947a6b
@ -90,6 +90,7 @@ config BOARD_GOOGLE_NIVVIKS
|
||||
|
||||
config BOARD_GOOGLE_NEREID
|
||||
bool "-> Nereid"
|
||||
select ALDERLAKE_CONFIGURE_DESCRIPTOR
|
||||
select BOARD_GOOGLE_BASEBOARD_NISSA
|
||||
|
||||
config BOARD_GOOGLE_PRIMUS
|
||||
|
@ -10,3 +10,10 @@ void bootblock_mainboard_early_init(void)
|
||||
pads = variant_early_gpio_table(&num);
|
||||
gpio_configure_pads(pads, num);
|
||||
}
|
||||
|
||||
void bootblock_mainboard_init(void)
|
||||
{
|
||||
variant_update_descriptor();
|
||||
}
|
||||
|
||||
void __weak variant_update_descriptor(void) {}
|
||||
|
@ -34,6 +34,8 @@ void variant_generate_s0ix_hook(enum s0ix_entry);
|
||||
/* Modify devictree settings during ramstage */
|
||||
void variant_devtree_update(void);
|
||||
|
||||
void variant_update_descriptor(void);
|
||||
|
||||
struct cpu_power_limits {
|
||||
uint16_t mchid;
|
||||
u8 cpu_tdp;
|
||||
|
@ -1,5 +1,6 @@
|
||||
# SPDX-License-Identifier: GPL-2.0-only
|
||||
bootblock-y += gpio.c
|
||||
bootblock-y += variant.c
|
||||
|
||||
romstage-y += gpio.c
|
||||
romstage-y += memory.c
|
||||
|
@ -1,7 +1,10 @@
|
||||
/* SPDX-License-Identifier: GPL-2.0-or-later */
|
||||
|
||||
#include <baseboard/variants.h>
|
||||
#include <console/console.h>
|
||||
#include <drivers/intel/gma/opregion.h>
|
||||
#include <fw_config.h>
|
||||
#include <soc/bootblock.h>
|
||||
|
||||
const char *mainboard_vbt_filename(void)
|
||||
{
|
||||
@ -10,3 +13,30 @@ const char *mainboard_vbt_filename(void)
|
||||
|
||||
return "vbt.bin";
|
||||
}
|
||||
|
||||
void variant_update_descriptor(void)
|
||||
{
|
||||
/* TypeCPort2Config = "No Thunderbolt" */
|
||||
struct descriptor_byte typec_bytes[] = {
|
||||
{ 0xc76, 0xb7 },
|
||||
{ 0xc77, 0xb6 },
|
||||
{ 0xc7c, 0xee },
|
||||
{ 0xca0, 0x0c },
|
||||
};
|
||||
|
||||
/* TypeCPort2Config = "DP Fixed Connection" */
|
||||
struct descriptor_byte hdmi_bytes[] = {
|
||||
{ 0xc76, 0x75 },
|
||||
{ 0xc77, 0xc4 },
|
||||
{ 0xc7c, 0x1e },
|
||||
{ 0xca0, 0x0e },
|
||||
};
|
||||
|
||||
if (fw_config_probe(FW_CONFIG(DB_USB, DB_1A_HDMI))) {
|
||||
printk(BIOS_INFO, "Configuring descriptor for HDMI\n");
|
||||
configure_descriptor(hdmi_bytes, ARRAY_SIZE(hdmi_bytes));
|
||||
} else {
|
||||
printk(BIOS_INFO, "Configuring descriptor for Type-C\n");
|
||||
configure_descriptor(typec_bytes, ARRAY_SIZE(typec_bytes));
|
||||
}
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user