Ana Carolina Cabral has uploaded this change for review. ( https://review.coreboot.org/c/coreboot/+/85374?usp=email )
Change subject: mb/amd/birman_plus: Factor out get_dd1_type ......................................................................
mb/amd/birman_plus: Factor out get_dd1_type
Use the now common get_ddi1_type function to update the connector type of the DDI1 port to match the display output extension card plugged into the reference board.
Change-Id: I6277b10a01f2913e7308e456a34fa28470adcb8e Signed-off-by: Ana Carolina Cabral ana.cabral@amd.com --- M src/mainboard/amd/birman_plus/Kconfig M src/mainboard/amd/birman_plus/port_descriptors_glinda.c M src/mainboard/amd/birman_plus/port_descriptors_phoenix.c 3 files changed, 6 insertions(+), 80 deletions(-)
git pull ssh://review.coreboot.org:29418/coreboot refs/changes/74/85374/1
diff --git a/src/mainboard/amd/birman_plus/Kconfig b/src/mainboard/amd/birman_plus/Kconfig index 462fece..df8f055 100644 --- a/src/mainboard/amd/birman_plus/Kconfig +++ b/src/mainboard/amd/birman_plus/Kconfig @@ -14,7 +14,7 @@ select SOC_AMD_COMMON_BLOCK_ESPI_RETAIN_PORT80_EN if !SOC_AMD_COMMON_BLOCK_SIMNOW_BUILD select SOC_AMD_COMMON_BLOCK_SIMNOW_SUPPORTED select SPI_FLASH_EXIT_4_BYTE_ADDR_MODE - + select DRIVERS_AMD_NOVA_CARD
config BOARD_AMD_BIRMANPLUS_PHOENIX select BOARD_AMD_BIRMANPLUS_COMMON diff --git a/src/mainboard/amd/birman_plus/port_descriptors_glinda.c b/src/mainboard/amd/birman_plus/port_descriptors_glinda.c index ae6f668..db4d657 100644 --- a/src/mainboard/amd/birman_plus/port_descriptors_glinda.c +++ b/src/mainboard/amd/birman_plus/port_descriptors_glinda.c @@ -6,6 +6,7 @@ #include <soc/platform_descriptors.h> #include <types.h>
+#include <drivers/amd/nova/chip.h>
#define glinda_mxm_dxio_descriptor { \ .engine_type = PCIE_ENGINE, \ @@ -124,49 +125,11 @@ } };
-static uint8_t get_ddi1_type(void) -{ - const uint8_t eeprom_i2c_bus = 2; - const uint8_t eeprom_i2c_address = 0x55; - const uint16_t eeprom_connector_type_offset = 2; - uint8_t eeprom_connector_type_data[2]; - uint16_t connector_type; - - if (i2c_2ba_read_bytes(eeprom_i2c_bus, eeprom_i2c_address, - eeprom_connector_type_offset, eeprom_connector_type_data, - sizeof(eeprom_connector_type_data))) { - printk(BIOS_NOTICE, - "Display connector type couldn't be determined. Disabling DDI1.\n"); - return DDI_UNUSED_TYPE; - } - - connector_type = eeprom_connector_type_data[1] | eeprom_connector_type_data[0] << 8; - - switch (connector_type) { - case 0x0c: - printk(BIOS_DEBUG, "Configuring DDI1 as HDMI.\n"); - return DDI_HDMI; - case 0x13: - printk(BIOS_DEBUG, "Configuring DDI1 as DP.\n"); - return DDI_DP; - case 0x14: - printk(BIOS_DEBUG, "Configuring DDI1 as eDP.\n"); - return DDI_EDP; - case 0x17: - printk(BIOS_DEBUG, "Configuring DDI1 as USB-C.\n"); - return DDI_DP_W_TYPEC; - default: - printk(BIOS_WARNING, "Unexpected display connector type %x. Disabling DDI1.\n", - connector_type); - return DDI_UNUSED_TYPE; - } -} - void mainboard_get_dxio_ddi_descriptors( const fsp_dxio_descriptor **dxio_descs, size_t *dxio_num, const fsp_ddi_descriptor **ddi_descs, size_t *ddi_num) { - birmanplus_glinda_ddi_descriptors[1].connector_type = get_ddi1_type(); + birmanplus_glinda_ddi_descriptors[1].connector_type = get_ddi1_type(NOVA_CARD_EEPROM_I2C_BUS, NOVA_CARD_EEPROM_I2C_ADDRESS);
static const fsp_dxio_descriptor birmanplus_glinda_dxio_descriptors[] = { glinda_mxm_dxio_descriptor, diff --git a/src/mainboard/amd/birman_plus/port_descriptors_phoenix.c b/src/mainboard/amd/birman_plus/port_descriptors_phoenix.c index dc23790..2e298e9 100644 --- a/src/mainboard/amd/birman_plus/port_descriptors_phoenix.c +++ b/src/mainboard/amd/birman_plus/port_descriptors_phoenix.c @@ -6,6 +6,8 @@ #include <soc/platform_descriptors.h> #include <types.h>
+#include <drivers/amd/nova/chip.h> + #define phx_mxm_dxio_descriptor { \ .engine_type = PCIE_ENGINE, \ .port_present = CONFIG(ENABLE_EVAL_CARD), \ @@ -138,50 +140,11 @@ } };
-static uint8_t get_ddi1_type(void) -{ - const uint8_t eeprom_i2c_bus = 2; - const uint8_t eeprom_i2c_address = 0x55; - const uint16_t eeprom_connector_type_offset = 2; - uint8_t eeprom_connector_type_data[2]; - uint16_t connector_type; - - if (i2c_2ba_read_bytes(eeprom_i2c_bus, eeprom_i2c_address, - eeprom_connector_type_offset, eeprom_connector_type_data, - sizeof(eeprom_connector_type_data))) { - printk(BIOS_NOTICE, - "Display connector type couldn't be determined. Disabling DDI1.\n"); - return DDI_UNUSED_TYPE; - } - - connector_type = eeprom_connector_type_data[1] | eeprom_connector_type_data[0] << 8; - - switch (connector_type) { - case 0x0c: - printk(BIOS_DEBUG, "Configuring DDI1 as HDMI.\n"); - return DDI_HDMI; - case 0x13: - printk(BIOS_DEBUG, "Configuring DDI1 as DP.\n"); - return DDI_DP; - case 0x14: - printk(BIOS_DEBUG, "Configuring DDI1 as eDP.\n"); - return DDI_EDP; - case 0x17: - printk(BIOS_DEBUG, "Configuring DDI1 as USB-C.\n"); - return DDI_DP_W_TYPEC; - default: - printk(BIOS_WARNING, "Unexpected display connector type %x. Disabling DDI1.\n", - connector_type); - return DDI_UNUSED_TYPE; - } -} - - void mainboard_get_dxio_ddi_descriptors( const fsp_dxio_descriptor **dxio_descs, size_t *dxio_num, const fsp_ddi_descriptor **ddi_descs, size_t *ddi_num) { - birmanplus_ddi_descriptors[1].connector_type = get_ddi1_type(); + birmanplus_ddi_descriptors[1].connector_type = get_ddi1_type(NOVA_CARD_EEPROM_I2C_BUS, NOVA_CARD_EEPROM_I2C_ADDRESS);
printk(BIOS_DEBUG, "Using Birmanplus PHX DXIO\n"); static const fsp_dxio_descriptor birmanplus_phx_dxio_descriptors[] = {