From a62b41819ceda4108b3a97cf72f55fc470347d58 Mon Sep 17 00:00:00 2001 From: Nick Vaccaro Date: Fri, 1 Oct 2021 13:12:59 -0700 Subject: coreboot tables: Add type-c port info to coreboot table This change adds type-c port information for USB Type-C ports to the coreboot table. This allows depthcharge to know the usb2 and usb3 port number assignments for each available port, as well as the SBU and data line orientation for the board. BUG=b:149830546 TEST='emerge-volteer coreboot chromeos-bootimage' and verify it builds successfully. Cherry-pick CL to enable this feature for volteer, flash and boot volteer2 to kernel, log in and check cbmem for type-c info exported to the payload: localhost ~ # cbmem -c | grep type-c added type-c port0 info to cbmem: usb2:9 usb3:1 sbu:0 data:0 added type-c port1 info to cbmem: usb2:4 usb3:2 sbu:1 data:0 Signed-off-by: Nick Vaccaro Change-Id: Ice732be2fa634dbf31ec620552b383c4a5b41451 Reviewed-on: https://review.coreboot.org/c/coreboot/+/57069 Tested-by: build bot (Jenkins) Reviewed-by: Nico Huber Reviewed-by: Furquan Shaikh Reviewed-by: Tim Wawrzynczak --- payloads/libpayload/include/coreboot_tables.h | 22 ++++++++++++++++++++++ payloads/libpayload/include/sysinfo.h | 2 ++ 2 files changed, 24 insertions(+) (limited to 'payloads/libpayload/include') diff --git a/payloads/libpayload/include/coreboot_tables.h b/payloads/libpayload/include/coreboot_tables.h index 91f848654f..a841e0326f 100644 --- a/payloads/libpayload/include/coreboot_tables.h +++ b/payloads/libpayload/include/coreboot_tables.h @@ -82,6 +82,7 @@ enum { CB_TAG_SMMSTOREV2 = 0x0039, CB_TAG_BOARD_CONFIG = 0x0040, CB_TAG_ACPI_CNVS = 0x0041, + CB_TAG_TYPE_C_INFO = 0x0042, CB_TAG_CMOS_OPTION_TABLE = 0x00c8, CB_TAG_OPTION = 0x00c9, CB_TAG_OPTION_ENUM = 0x00ca, @@ -142,6 +143,27 @@ struct cb_mainboard { u8 strings[0]; }; +struct type_c_port_info { + /* + * usb2_port_number and usb3_port_number are expected to be + * the port numbers as seen by the USB controller in the SoC. + */ + uint8_t usb2_port_number; + uint8_t usb3_port_number; + + /* + * Valid sbu_orientation and data_orientation values will be of + * type enum type_c_orienation. + */ + uint8_t sbu_orientation; + uint8_t data_orientation; +}; + +struct type_c_info { + u32 port_count; + struct type_c_port_info port_info[0]; +}; + struct cb_string { u32 tag; u32 size; diff --git a/payloads/libpayload/include/sysinfo.h b/payloads/libpayload/include/sysinfo.h index 26dece7ce1..b34476d25e 100644 --- a/payloads/libpayload/include/sysinfo.h +++ b/payloads/libpayload/include/sysinfo.h @@ -148,6 +148,8 @@ struct sysinfo_t { #if CONFIG(LP_PCI) struct pci_access pacc; #endif + /* USB Type-C Port Configuration Info */ + uintptr_t type_c_info; }; extern struct sysinfo_t lib_sysinfo; -- cgit v1.2.3