summaryrefslogtreecommitdiffstats
path: root/src/drivers
diff options
context:
space:
mode:
Diffstat (limited to 'src/drivers')
-rw-r--r--src/drivers/acpi/thermal_zone/thermal_zone.c2
-rw-r--r--src/drivers/amd/i2s_machine_dev/i2s_machine_dev.c3
-rw-r--r--src/drivers/generic/gpio_keys/gpio_keys.c2
-rw-r--r--src/drivers/gfx/generic/generic.c6
-rw-r--r--src/drivers/i2c/cs35l53/cs35l53.c1
-rw-r--r--src/drivers/i2c/generic/generic.c3
-rw-r--r--src/drivers/i2c/gpiomux/bus/bus.c2
-rw-r--r--src/drivers/i2c/gpiomux/mux/mux.c2
-rw-r--r--src/drivers/i2c/hid/hid.c3
-rw-r--r--src/drivers/i2c/max98390/max98390.c1
-rw-r--r--src/drivers/i2c/max98396/max98396.c1
-rw-r--r--src/drivers/i2c/rt1011/rt1011.c1
-rw-r--r--src/drivers/i2c/rt5645/rt5645.c2
-rw-r--r--src/drivers/i2c/sx9310/sx9310.c3
-rw-r--r--src/drivers/i2c/sx9324/sx9324.c3
-rw-r--r--src/drivers/i2c/sx9360/sx9360.c3
-rw-r--r--src/drivers/i2c/tpm/cr50.c8
-rw-r--r--src/drivers/intel/dptf/dptf.c1
-rw-r--r--src/drivers/intel/fsp2_0/Kconfig6
-rw-r--r--src/drivers/intel/fsp2_0/include/fsp/info_header.h4
-rw-r--r--src/drivers/intel/fsp2_0/include/fsp/soc_binding.h3
-rw-r--r--src/drivers/intel/fsp2_0/memory_init.c2
-rw-r--r--src/drivers/intel/fsp2_0/ppi/mp_service_ppi.c37
-rw-r--r--src/drivers/intel/fsp2_0/silicon_init.c14
-rw-r--r--src/drivers/intel/fsp2_0/util.c1
-rw-r--r--src/drivers/intel/gma/acpi.c3
-rw-r--r--src/drivers/intel/ish/ish.c1
-rw-r--r--src/drivers/intel/mipi_camera/camera.c8
-rw-r--r--src/drivers/intel/mipi_camera/chip.h3
-rw-r--r--src/drivers/intel/pmc_mux/conn/conn.c26
-rw-r--r--src/drivers/intel/usb4/retimer/retimer.c3
-rw-r--r--src/drivers/mipi/panel-IVO_T109NW41.c17
-rw-r--r--src/drivers/nxp/uwb/uwb.c3
-rw-r--r--src/drivers/ocp/dmi/smbios.c1
-rw-r--r--src/drivers/ocp/include/vpd.h2
-rw-r--r--src/drivers/ocp/vpd/Makefile.mk11
-rw-r--r--src/drivers/ocp/vpd/xeonsp_cxl.c17
-rw-r--r--src/drivers/spi/acpi/acpi.c3
-rw-r--r--src/drivers/spi/tpm/tpm.c1
-rw-r--r--src/drivers/tpm/cr50.c3
-rw-r--r--src/drivers/uart/acpi/acpi.c3
-rw-r--r--src/drivers/uart/oxpcie_early.c1
-rw-r--r--src/drivers/usb/hub/acpi.c1
-rw-r--r--src/drivers/usb/pci_xhci/pci_xhci.c1
-rw-r--r--src/drivers/wifi/generic/Makefile.mk6
-rw-r--r--src/drivers/wifi/generic/acpi.c1
46 files changed, 178 insertions, 51 deletions
diff --git a/src/drivers/acpi/thermal_zone/thermal_zone.c b/src/drivers/acpi/thermal_zone/thermal_zone.c
index ef95bed23a8c..e491f751ff43 100644
--- a/src/drivers/acpi/thermal_zone/thermal_zone.c
+++ b/src/drivers/acpi/thermal_zone/thermal_zone.c
@@ -5,8 +5,8 @@
#include <commonlib/bsd/helpers.h>
#include <console/console.h>
#include <device/device.h>
+#include <stdio.h>
#include <stdlib.h>
-#include <string.h>
#include "chip.h"
diff --git a/src/drivers/amd/i2s_machine_dev/i2s_machine_dev.c b/src/drivers/amd/i2s_machine_dev/i2s_machine_dev.c
index 16ae48dd4b2a..5f43e4f51594 100644
--- a/src/drivers/amd/i2s_machine_dev/i2s_machine_dev.c
+++ b/src/drivers/amd/i2s_machine_dev/i2s_machine_dev.c
@@ -3,7 +3,8 @@
#include <acpi/acpi_device.h>
#include <acpi/acpigen.h>
#include <device/device.h>
-#include <string.h>
+#include <stdio.h>
+
#include "chip.h"
#include <console/console.h>
diff --git a/src/drivers/generic/gpio_keys/gpio_keys.c b/src/drivers/generic/gpio_keys/gpio_keys.c
index 37b90cabd9b3..f5df0c45bce6 100644
--- a/src/drivers/generic/gpio_keys/gpio_keys.c
+++ b/src/drivers/generic/gpio_keys/gpio_keys.c
@@ -3,7 +3,7 @@
#include <acpi/acpi_device.h>
#include <acpi/acpigen.h>
#include <device/device.h>
-#include <string.h>
+#include <stdio.h>
#include "chip.h"
diff --git a/src/drivers/gfx/generic/generic.c b/src/drivers/gfx/generic/generic.c
index f07a4710ff91..f3c12d14a244 100644
--- a/src/drivers/gfx/generic/generic.c
+++ b/src/drivers/gfx/generic/generic.c
@@ -119,10 +119,8 @@ static void gfx_fill_ssdt_generator(const struct device *dev)
if (!config->device[i].addr && config->device[i].type)
/* Though not strictly necessary, set the display index and
port attachment to the device index, to ensure uniqueness */
- config->device[i].addr = DOD_DID_STD | DOD_FW_DETECT |
- (config->device[i].type << 8) |
- (i << 4) | (i);
- acpigen_write_dword(config->device[i].addr);
+ config->device[i].addr = (config->device[i].type << 8) | (i << 4) | (i);
+ acpigen_write_dword(DOD_DID_STD | DOD_FW_DETECT | config->device[i].addr);
}
acpigen_pop_len(); /* End Package. */
acpigen_pop_len(); /* End Method. */
diff --git a/src/drivers/i2c/cs35l53/cs35l53.c b/src/drivers/i2c/cs35l53/cs35l53.c
index 479ef7fdcd2b..974a647705d7 100644
--- a/src/drivers/i2c/cs35l53/cs35l53.c
+++ b/src/drivers/i2c/cs35l53/cs35l53.c
@@ -6,6 +6,7 @@
#include <console/console.h>
#include <device/i2c_simple.h>
#include <device/device.h>
+#include <stdio.h>
#include "chip.h"
diff --git a/src/drivers/i2c/generic/generic.c b/src/drivers/i2c/generic/generic.c
index a2d510bcf2aa..98c59e6a05e4 100644
--- a/src/drivers/i2c/generic/generic.c
+++ b/src/drivers/i2c/generic/generic.c
@@ -7,7 +7,8 @@
#include <device/i2c_simple.h>
#include <device/device.h>
#include <gpio.h>
-#include <string.h>
+#include <stdio.h>
+
#include "chip.h"
#if CONFIG(HAVE_ACPI_TABLES)
diff --git a/src/drivers/i2c/gpiomux/bus/bus.c b/src/drivers/i2c/gpiomux/bus/bus.c
index 5487f6df91c7..2e2d6858d260 100644
--- a/src/drivers/i2c/gpiomux/bus/bus.c
+++ b/src/drivers/i2c/gpiomux/bus/bus.c
@@ -4,7 +4,7 @@
#include <acpi/acpigen.h>
#include <console/console.h>
#include <device/device.h>
-#include <string.h>
+#include <stdio.h>
#include "chip.h"
diff --git a/src/drivers/i2c/gpiomux/mux/mux.c b/src/drivers/i2c/gpiomux/mux/mux.c
index 91d4ebf1df56..1e1ea45c74f4 100644
--- a/src/drivers/i2c/gpiomux/mux/mux.c
+++ b/src/drivers/i2c/gpiomux/mux/mux.c
@@ -4,7 +4,7 @@
#include <acpi/acpigen.h>
#include <console/console.h>
#include <device/device.h>
-#include <string.h>
+#include <stdio.h>
#include "chip.h"
diff --git a/src/drivers/i2c/hid/hid.c b/src/drivers/i2c/hid/hid.c
index fb3a439a53b5..c91b04a922ff 100644
--- a/src/drivers/i2c/hid/hid.c
+++ b/src/drivers/i2c/hid/hid.c
@@ -4,7 +4,8 @@
#include <acpi/acpi_device.h>
#include <assert.h>
#include <device/device.h>
-#include <string.h>
+#include <stdio.h>
+
#include "chip.h"
#include <gpio.h>
#include <console/console.h>
diff --git a/src/drivers/i2c/max98390/max98390.c b/src/drivers/i2c/max98390/max98390.c
index f4912c17df54..dced1202ff87 100644
--- a/src/drivers/i2c/max98390/max98390.c
+++ b/src/drivers/i2c/max98390/max98390.c
@@ -7,6 +7,7 @@
#include <device/device.h>
#include <identity.h>
#include <stdint.h>
+#include <stdio.h>
#include <vendorcode/google/dsm_calib.h>
#include "chip.h"
diff --git a/src/drivers/i2c/max98396/max98396.c b/src/drivers/i2c/max98396/max98396.c
index ca07dbdd4bd6..f71873a26d3f 100644
--- a/src/drivers/i2c/max98396/max98396.c
+++ b/src/drivers/i2c/max98396/max98396.c
@@ -5,6 +5,7 @@
#include <console/console.h>
#include <device/i2c_simple.h>
#include <device/device.h>
+#include <stdio.h>
#include "chip.h"
diff --git a/src/drivers/i2c/rt1011/rt1011.c b/src/drivers/i2c/rt1011/rt1011.c
index e8ee8dfdf971..08a0fac7d3c2 100644
--- a/src/drivers/i2c/rt1011/rt1011.c
+++ b/src/drivers/i2c/rt1011/rt1011.c
@@ -6,6 +6,7 @@
#include <device/i2c.h>
#include <device/device.h>
#include <stdint.h>
+#include <stdio.h>
#include <vendorcode/google/dsm_calib.h>
#include "chip.h"
diff --git a/src/drivers/i2c/rt5645/rt5645.c b/src/drivers/i2c/rt5645/rt5645.c
index 28434ee456a1..ea3837f7245d 100644
--- a/src/drivers/i2c/rt5645/rt5645.c
+++ b/src/drivers/i2c/rt5645/rt5645.c
@@ -4,6 +4,8 @@
#include <acpi/acpigen.h>
#include <console/console.h>
#include <device/device.h>
+#include <stdio.h>
+
#include "chip.h"
#define RT5645_ACPI_NAME "RT58"
diff --git a/src/drivers/i2c/sx9310/sx9310.c b/src/drivers/i2c/sx9310/sx9310.c
index e5142bca3686..19eda301ee8c 100644
--- a/src/drivers/i2c/sx9310/sx9310.c
+++ b/src/drivers/i2c/sx9310/sx9310.c
@@ -5,7 +5,8 @@
#include <console/console.h>
#include <device/i2c_simple.h>
#include <device/device.h>
-#include <string.h>
+#include <stdio.h>
+
#include "chip.h"
#define I2C_SX9310_ACPI_ID "STH9310"
diff --git a/src/drivers/i2c/sx9324/sx9324.c b/src/drivers/i2c/sx9324/sx9324.c
index 966726fc8d3e..f2753ea52441 100644
--- a/src/drivers/i2c/sx9324/sx9324.c
+++ b/src/drivers/i2c/sx9324/sx9324.c
@@ -5,7 +5,8 @@
#include <console/console.h>
#include <device/i2c_simple.h>
#include <device/device.h>
-#include <string.h>
+#include <stdio.h>
+
#include "chip.h"
#define I2C_SX9324_ACPI_ID "STH9324"
diff --git a/src/drivers/i2c/sx9360/sx9360.c b/src/drivers/i2c/sx9360/sx9360.c
index df154f4ab73e..63180c7dc10f 100644
--- a/src/drivers/i2c/sx9360/sx9360.c
+++ b/src/drivers/i2c/sx9360/sx9360.c
@@ -5,7 +5,8 @@
#include <console/console.h>
#include <device/i2c_simple.h>
#include <device/device.h>
-#include <string.h>
+#include <stdio.h>
+
#include "chip.h"
#define I2C_SX9360_ACPI_ID "STH9360"
diff --git a/src/drivers/i2c/tpm/cr50.c b/src/drivers/i2c/tpm/cr50.c
index 5973d337d0f0..5f5ca66d5f11 100644
--- a/src/drivers/i2c/tpm/cr50.c
+++ b/src/drivers/i2c/tpm/cr50.c
@@ -34,7 +34,8 @@
#define CR50_TIMEOUT_LONG_MS 2000 /* Long timeout while waiting for TPM */
#define CR50_TIMEOUT_SHORT_MS 2 /* Short timeout during transactions */
#define CR50_DID_VID 0x00281ae0L
-#define TI50_DID_VID 0x504a6666L
+#define TI50_DT_DID_VID 0x504a6666L
+#define TI50_OT_DID_VID 0x50666666L
struct tpm_inf_dev {
int bus;
@@ -449,7 +450,8 @@ static tpm_result_t cr50_i2c_probe(uint32_t *did_vid)
rc = cr50_i2c_read(TPM_DID_VID(0), (uint8_t *)did_vid, 4);
/* Exit once DID and VID verified */
- if (!rc && (*did_vid == CR50_DID_VID || *did_vid == TI50_DID_VID)) {
+ if (!rc && (*did_vid == CR50_DID_VID || *did_vid == TI50_DT_DID_VID ||
+ *did_vid == TI50_OT_DID_VID)) {
printk(BIOS_INFO, "done! DID_VID 0x%08x\n", *did_vid);
return TPM_SUCCESS;
}
@@ -498,7 +500,7 @@ tpm_result_t tpm_vendor_init(struct tpm_chip *chip, unsigned int bus, uint32_t d
if (rc)
return rc;
- printk(BIOS_DEBUG, "cr50 TPM 2.0 (i2c %u:0x%02x id %#x)\n",
+ printk(BIOS_DEBUG, "GSC TPM 2.0 (i2c %u:0x%02x id %#x)\n",
bus, dev_addr, did_vid >> 16);
if (tpm_first_access_this_boot()) {
diff --git a/src/drivers/intel/dptf/dptf.c b/src/drivers/intel/dptf/dptf.c
index 5bbbc1bb7fe7..b6f5005d7230 100644
--- a/src/drivers/intel/dptf/dptf.c
+++ b/src/drivers/intel/dptf/dptf.c
@@ -5,6 +5,7 @@
#include <console/console.h>
#include <device/device.h>
#include <intelblocks/pmc_ipc.h>
+#include <stdio.h>
#include <soc/dptf.h>
#include <soc/pci_devs.h>
#include "chip.h"
diff --git a/src/drivers/intel/fsp2_0/Kconfig b/src/drivers/intel/fsp2_0/Kconfig
index 754b04af419b..9ea1526e84e3 100644
--- a/src/drivers/intel/fsp2_0/Kconfig
+++ b/src/drivers/intel/fsp2_0/Kconfig
@@ -55,10 +55,12 @@ if PLATFORM_USES_FSP2_0
config PLATFORM_USES_FSP2_X86_32
bool
+ default n if PLATFORM_USES_FSP2_4
default y
help
- The FSP 2.0 runs in x86_32 protected mode.
- Once there's a x86_64 FSP this needs to default to n.
+ Specify if the FSP binaries are 32-bits (yes) or 64-bits
+ (no). By default, 64-bit should be used starting with FSP
+ specification 2.4
config HAVE_INTEL_FSP_REPO
bool
diff --git a/src/drivers/intel/fsp2_0/include/fsp/info_header.h b/src/drivers/intel/fsp2_0/include/fsp/info_header.h
index f495822e19cc..a553436166eb 100644
--- a/src/drivers/intel/fsp2_0/include/fsp/info_header.h
+++ b/src/drivers/intel/fsp2_0/include/fsp/info_header.h
@@ -12,7 +12,6 @@
#define FSP_HDR_ATTRIB_FSPS 3
#define FSP_IMAGE_ID_LENGTH 8
-#if CONFIG(PLATFORM_USES_FSP2_X86_32)
struct fsp_header {
uint32_t signature; //FSPH
uint32_t header_length;
@@ -40,9 +39,6 @@ struct fsp_header {
uint32_t fsp_multi_phase_mem_init_entry_offset;
uint32_t res5;
} __packed;
-#else
-#error You need to implement this struct for x86_64 FSP
-#endif
enum cb_err fsp_identify(struct fsp_header *hdr, const void *fsp_blob);
diff --git a/src/drivers/intel/fsp2_0/include/fsp/soc_binding.h b/src/drivers/intel/fsp2_0/include/fsp/soc_binding.h
index ba3e2894ff0b..2adfaf3d65a4 100644
--- a/src/drivers/intel/fsp2_0/include/fsp/soc_binding.h
+++ b/src/drivers/intel/fsp2_0/include/fsp/soc_binding.h
@@ -7,6 +7,8 @@
#pragma pack(push)
+#include <efi/efi_datatype.h>
+
/**
* These includes are required to include headers that are missing in
* the FSP headers. Import order matter for the correct PiHob definition
@@ -24,7 +26,6 @@
* This file is a implementation specific header. i.e. different
* FSP implementations for different chipsets.
*/
-#include <Base.h>
#include <FspmUpd.h>
#include <FspsUpd.h>
#if CONFIG(MRC_CACHE_USING_MRC_VERSION)
diff --git a/src/drivers/intel/fsp2_0/memory_init.c b/src/drivers/intel/fsp2_0/memory_init.c
index 31ae21336c6a..7e9676c666a4 100644
--- a/src/drivers/intel/fsp2_0/memory_init.c
+++ b/src/drivers/intel/fsp2_0/memory_init.c
@@ -34,7 +34,7 @@ void __weak platform_fsp_memory_multi_phase_init_cb(uint32_t phase_index)
/* Leave for the SoC/Mainboard to implement if necessary. */
}
-static uint8_t temp_ram[CONFIG_FSP_TEMP_RAM_SIZE] __aligned(sizeof(uint64_t));
+static uint8_t temp_ram[CONFIG_FSP_TEMP_RAM_SIZE] __aligned(16);
/*
* Helper function to store the MRC cache version into CBMEM
diff --git a/src/drivers/intel/fsp2_0/ppi/mp_service_ppi.c b/src/drivers/intel/fsp2_0/ppi/mp_service_ppi.c
index a891ba010981..41fccd6a523f 100644
--- a/src/drivers/intel/fsp2_0/ppi/mp_service_ppi.c
+++ b/src/drivers/intel/fsp2_0/ppi/mp_service_ppi.c
@@ -12,6 +12,18 @@
#define BSP_CPU_SLOT 0
+struct efi_ap_procedure_caller_params {
+ efi_ap_procedure procedure;
+ void *argument;
+};
+
+static void efi_ap_procedure_caller(void *arg)
+{
+ struct efi_ap_procedure_caller_params *params =
+ (struct efi_ap_procedure_caller_params *)arg;
+ params->procedure(params->argument);
+}
+
efi_return_status_t mp_get_number_of_processors(efi_uintn_t *number_of_processors,
efi_uintn_t *number_of_enabled_processors)
{
@@ -58,14 +70,19 @@ efi_return_status_t mp_get_processor_info(efi_uintn_t processor_number,
efi_return_status_t mp_startup_all_aps(efi_ap_procedure procedure,
bool run_serial, efi_uintn_t timeout_usec, void *argument)
{
+ struct efi_ap_procedure_caller_params params = {
+ .procedure = procedure,
+ .argument = argument
+ };
+
if (!cpu_info())
return FSP_DEVICE_ERROR;
if (procedure == NULL)
return FSP_INVALID_PARAMETER;
- if (mp_run_on_all_aps((void *)procedure, argument, timeout_usec, !run_serial) !=
- CB_SUCCESS) {
+ if (mp_run_on_all_aps((void *)efi_ap_procedure_caller, &params,
+ timeout_usec, !run_serial) != CB_SUCCESS) {
printk(BIOS_DEBUG, "%s: Exit with Failure\n", __func__);
return FSP_NOT_STARTED;
}
@@ -76,6 +93,11 @@ efi_return_status_t mp_startup_all_aps(efi_ap_procedure procedure,
efi_return_status_t mp_startup_all_cpus(efi_ap_procedure procedure,
efi_uintn_t timeout_usec, void *argument)
{
+ struct efi_ap_procedure_caller_params params = {
+ .procedure = procedure,
+ .argument = argument
+ };
+
if (!cpu_info())
return FSP_DEVICE_ERROR;
@@ -99,8 +121,8 @@ efi_return_status_t mp_startup_all_cpus(efi_ap_procedure procedure,
* due to lack of acquiring a spin lock while accessing common data structure in
* multiprocessor environment.
*/
- if (mp_run_on_all_aps((void *)procedure, argument, timeout_usec, false) !=
- CB_SUCCESS) {
+ if (mp_run_on_all_aps((void *)efi_ap_procedure_caller,
+ &params, timeout_usec, false) != CB_SUCCESS) {
printk(BIOS_DEBUG, "%s: Exit with Failure\n", __func__);
return FSP_NOT_STARTED;
}
@@ -111,6 +133,11 @@ efi_return_status_t mp_startup_all_cpus(efi_ap_procedure procedure,
efi_return_status_t mp_startup_this_ap(efi_ap_procedure procedure,
efi_uintn_t processor_number, efi_uintn_t timeout_usec, void *argument)
{
+ struct efi_ap_procedure_caller_params params = {
+ .procedure = procedure,
+ .argument = argument
+ };
+
if (!cpu_info())
return FSP_DEVICE_ERROR;
@@ -123,7 +150,7 @@ efi_return_status_t mp_startup_this_ap(efi_ap_procedure procedure,
if (procedure == NULL)
return FSP_INVALID_PARAMETER;
- if (mp_run_on_aps((void *)procedure, argument,
+ if (mp_run_on_aps((void *)efi_ap_procedure_caller, &params,
processor_number, timeout_usec) != CB_SUCCESS) {
printk(BIOS_DEBUG, "%s: Exit with Failure\n", __func__);
return FSP_NOT_STARTED;
diff --git a/src/drivers/intel/fsp2_0/silicon_init.c b/src/drivers/intel/fsp2_0/silicon_init.c
index 52d714d50394..cea894c24542 100644
--- a/src/drivers/intel/fsp2_0/silicon_init.c
+++ b/src/drivers/intel/fsp2_0/silicon_init.c
@@ -2,6 +2,7 @@
#include <arch/null_breakpoint.h>
#include <bootsplash.h>
+#include <bootstate.h>
#include <cbfs.h>
#include <cbmem.h>
#include <commonlib/fsp.h>
@@ -76,7 +77,7 @@ bool fsp_is_multi_phase_init_enabled(void)
static void fsp_fill_common_arch_params(FSPS_UPD *supd)
{
-#if CONFIG(FSPS_HAS_ARCH_UPD)
+#if (CONFIG(FSPS_HAS_ARCH_UPD) && !CONFIG(PLATFORM_USES_FSP2_4))
FSPS_ARCHx_UPD *s_arch_cfg = &supd->FspsArchUpd;
s_arch_cfg->EnableMultiPhaseSiliconInit = fsp_is_multi_phase_init_enabled();
#endif
@@ -142,9 +143,6 @@ static void do_silicon_init(struct fsp_header *hdr)
timestamp_add_now(TS_FSP_SILICON_INIT_END);
post_code(POSTCODE_FSP_SILICON_EXIT);
- if (CONFIG(BMP_LOGO))
- bmp_release_logo();
-
fsp_debug_after_silicon_init(status);
fsps_return_value_handler(FSP_SILICON_INIT_API, status);
@@ -261,3 +259,11 @@ void fsp_silicon_init(void)
}
__weak void soc_load_logo(FSPS_UPD *supd) { }
+
+static void release_logo(void *arg_unused)
+{
+ if (CONFIG(BMP_LOGO))
+ bmp_release_logo();
+}
+
+BOOT_STATE_INIT_ENTRY(BS_PAYLOAD_LOAD, BS_ON_EXIT, release_logo, NULL);
diff --git a/src/drivers/intel/fsp2_0/util.c b/src/drivers/intel/fsp2_0/util.c
index 47dc3e822998..d09b39b711ce 100644
--- a/src/drivers/intel/fsp2_0/util.c
+++ b/src/drivers/intel/fsp2_0/util.c
@@ -8,6 +8,7 @@
#include <commonlib/fsp.h>
#include <console/console.h>
#include <fsp/util.h>
+#include <stdio.h>
#include <string.h>
#include <types.h>
#include <assert.h>
diff --git a/src/drivers/intel/gma/acpi.c b/src/drivers/intel/gma/acpi.c
index 2ee1d63a8e24..9211100bc4c2 100644
--- a/src/drivers/intel/gma/acpi.c
+++ b/src/drivers/intel/gma/acpi.c
@@ -1,7 +1,8 @@
/* SPDX-License-Identifier: GPL-2.0-or-later */
#include <acpi/acpigen.h>
-#include <string.h>
+#include <stdio.h>
+
#include "i915.h"
void
diff --git a/src/drivers/intel/ish/ish.c b/src/drivers/intel/ish/ish.c
index 0ad0bb86d078..7d332e1fd2c4 100644
--- a/src/drivers/intel/ish/ish.c
+++ b/src/drivers/intel/ish/ish.c
@@ -79,6 +79,7 @@ static const struct device_operations pci_ish_device_ops = {
};
static const unsigned short pci_device_ids[] = {
+ PCI_DID_INTEL_PTL_ISHB,
PCI_DID_INTEL_LNL_ISHB,
PCI_DID_INTEL_MTL_ISHB,
PCI_DID_INTEL_CNL_ISHB,
diff --git a/src/drivers/intel/mipi_camera/camera.c b/src/drivers/intel/mipi_camera/camera.c
index 92c45a8aead8..63a409a30010 100644
--- a/src/drivers/intel/mipi_camera/camera.c
+++ b/src/drivers/intel/mipi_camera/camera.c
@@ -9,8 +9,14 @@
#include <device/i2c_simple.h>
#include <device/device.h>
#include <device/pci_def.h>
+#include <stdio.h>
+
#include "chip.h"
+#define CSI2_DATA_STREAM_INTERFACE_GUID \
+ GUID_INIT(0x8A395669, 0x11F7, 0x4EA9, \
+ 0x9C, 0x7D, 0x20, 0xEE, 0x0A, 0xB5, 0xCA, 0x40)
+
#define SENSOR_NAME_UUID "822ace8f-2814-4174-a56b-5f029fe079ee"
#define SENSOR_TYPE_UUID "26257549-9271-4ca4-bb43-c4899d5a4881"
#define DEFAULT_ENDPOINT 0
@@ -285,6 +291,8 @@ static void camera_fill_ssdb_defaults(struct drivers_intel_mipi_camera_config *c
if (config->disable_ssdb_defaults)
return;
+ guidcpy(&config->ssdb.csi2_data_stream_interface, &CSI2_DATA_STREAM_INTERFACE_GUID);
+
if (!config->ssdb.bdf_value)
config->ssdb.bdf_value = PCI_DEVFN(CIO2_PCI_DEV, CIO2_PCI_FN);
diff --git a/src/drivers/intel/mipi_camera/chip.h b/src/drivers/intel/mipi_camera/chip.h
index ecf371458b6d..9aba729b3226 100644
--- a/src/drivers/intel/mipi_camera/chip.h
+++ b/src/drivers/intel/mipi_camera/chip.h
@@ -5,6 +5,7 @@
#include <stdint.h>
#include <acpi/acpi_pld.h>
+#include <uuid.h>
#define DEFAULT_LINK_FREQ 450000000
#define MAX_PWDB_ENTRIES 12
@@ -143,7 +144,7 @@ struct operation_seq {
struct intel_ssdb {
uint8_t version; /* Current version */
uint8_t sensor_card_sku; /* CRD Board type */
- uint8_t csi2_data_stream_interface[16]; /* CSI2 data stream GUID */
+ guid_t csi2_data_stream_interface; /* CSI2 data stream GUID */
uint16_t bdf_value; /* Bus number of the host
controller */
uint32_t dphy_link_en_fuses; /* Host controller's fuses
diff --git a/src/drivers/intel/pmc_mux/conn/conn.c b/src/drivers/intel/pmc_mux/conn/conn.c
index c2c719991be8..dda1fe0e4b00 100644
--- a/src/drivers/intel/pmc_mux/conn/conn.c
+++ b/src/drivers/intel/pmc_mux/conn/conn.c
@@ -1,10 +1,13 @@
/* SPDX-License-Identifier: GPL-2.0-or-later */
+#include <acpi/acpi_pld.h>
#include <acpi/acpigen.h>
#include <boot/coreboot_tables.h>
#include <cbmem.h>
#include <console/console.h>
+#include <drivers/usb/acpi/chip.h>
#include <intelblocks/acpi.h>
+#include <stdio.h>
#include "chip.h"
@@ -94,12 +97,31 @@ static const char *orientation_to_str(enum type_c_orientation ori)
}
}
+static void get_pld_from_usb_ports(struct acpi_pld *pld,
+ struct device *usb2_port, struct device *usb3_port)
+{
+ struct drivers_usb_acpi_config *config = NULL;
+
+ if (usb3_port)
+ config = usb3_port->chip_info;
+ else if (usb2_port)
+ config = usb2_port->chip_info;
+
+ if (config) {
+ if (config->use_custom_pld)
+ *pld = config->custom_pld;
+ else
+ acpi_pld_fill_usb(pld, config->type, &config->group);
+ }
+}
+
static void conn_fill_ssdt(const struct device *dev)
{
struct drivers_intel_pmc_mux_conn_config *config = dev->chip_info;
struct acpi_dp *dsd;
const char *scope;
const char *name;
+ struct acpi_pld pld = {0};
/* Reference the existing scope and write CONx device */
scope = acpi_device_scope(dev);
@@ -131,6 +153,10 @@ static void conn_fill_ssdt(const struct device *dev)
acpi_dp_write(dsd);
+ /* Copy _PLD from USB ports */
+ get_pld_from_usb_ports(&pld, config->usb2_port, config->usb3_port);
+ acpigen_write_pld(&pld);
+
acpigen_pop_len(); /* CONx Device */
acpigen_pop_len(); /* Scope */
diff --git a/src/drivers/intel/usb4/retimer/retimer.c b/src/drivers/intel/usb4/retimer/retimer.c
index 9e627de3485d..3769fc9193f1 100644
--- a/src/drivers/intel/usb4/retimer/retimer.c
+++ b/src/drivers/intel/usb4/retimer/retimer.c
@@ -7,7 +7,8 @@
#include <device/device.h>
#include <drivers/usb/acpi/chip.h>
#include <gpio.h>
-#include <string.h>
+#include <stdio.h>
+
#include "chip.h"
#include "retimer.h"
diff --git a/src/drivers/mipi/panel-IVO_T109NW41.c b/src/drivers/mipi/panel-IVO_T109NW41.c
index 21e1029e1c05..97a69d3ea303 100644
--- a/src/drivers/mipi/panel-IVO_T109NW41.c
+++ b/src/drivers/mipi/panel-IVO_T109NW41.c
@@ -21,14 +21,13 @@ struct panel_serializable_data IVO_T109NW41 = {
.init = {
PANEL_DELAY(60),
PANEL_DCS(0xB9, 0x83, 0x10, 0x21, 0x55, 0x00),
- PANEL_DCS(0xB1, 0x2C, 0xED, 0xED, 0x27, 0xE7, 0x42, 0xF5, 0x39,
+ PANEL_DCS(0xB1, 0x2C, 0xED, 0xED, 0x0F, 0xCF, 0x42, 0xF5, 0x39,
0x36, 0x36, 0x36, 0x36, 0x32, 0x8B, 0x11, 0x65, 0x00, 0x88,
0xFA, 0xFF, 0xFF, 0x8F, 0xFF, 0x08, 0xD6, 0x33),
PANEL_DCS(0xB2, 0x00, 0x47, 0xB0, 0x80, 0x00, 0x12, 0x71, 0x3C,
0xA3, 0x22, 0x20, 0x00, 0x00, 0x88, 0x01),
PANEL_DCS(0xB4, 0x35, 0x35, 0x43, 0x43, 0x35, 0x35, 0x30, 0x7A,
0x30, 0x7A, 0x01, 0x9D),
- PANEL_DCS(0xB6, 0x34, 0x34, 0x03),
PANEL_DCS(0xE9, 0xCD),
PANEL_DCS(0xBA, 0x84),
PANEL_DCS(0xE9, 0x3F),
@@ -40,6 +39,9 @@ struct panel_serializable_data IVO_T109NW41 = {
PANEL_DCS(0xE9, 0xCC),
PANEL_DCS(0xC7, 0x80),
PANEL_DCS(0xE9, 0x3F),
+ PANEL_DCS(0xE9, 0xD3),
+ PANEL_DCS(0xC7, 0x22),
+ PANEL_DCS(0xE9, 0x3F),
PANEL_DCS(0xE9, 0xC6),
PANEL_DCS(0xC8, 0x97),
PANEL_DCS(0xE9, 0x3F),
@@ -56,19 +58,25 @@ struct panel_serializable_data IVO_T109NW41 = {
0x00, 0x02, 0x00, 0x02, 0x00, 0x00),
PANEL_DCS(0xD5, 0x25, 0x24, 0x25, 0x24, 0x18, 0x18, 0x18, 0x18,
0x07, 0x06, 0x07, 0x06, 0x05, 0x04, 0x05, 0x04, 0x03, 0x02,
- 0x03, 0x02, 0x01, 0x00, 0x01, 0x00, 0xA8, 0xA8, 0xA8, 0xA8,
- 0x29, 0x29, 0x29, 0x29, 0x21, 0x20, 0x21, 0x20, 0x18, 0x18,
+ 0x03, 0x02, 0x01, 0x00, 0x01, 0x00, 0x1E, 0x1E, 0x1E, 0x1E,
+ 0x1F, 0x1F, 0x1F, 0x1F, 0x21, 0x20, 0x21, 0x20, 0x18, 0x18,
0x18, 0x18, 0x18, 0x18, 0x18, 0x18),
PANEL_DCS(0xD8, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xA0, 0xAA, 0xAA,
0xAA, 0xAA, 0xAA, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00),
+ PANEL_DCS(0xE0, 0x04, 0X04, 0X06, 0X0A, 0X0A, 0X05, 0X12, 0X14,
+ 0X17, 0X13, 0X2C, 0X33, 0X39, 0X4B, 0X4C, 0X56, 0X61, 0X78,
+ 0X7A, 0X41, 0X50, 0X68, 0X73, 0X04, 0X04, 0X06, 0X0A, 0X0A,
+ 0X05, 0X12, 0X14, 0X17, 0X13, 0X2C, 0X33, 0X39, 0X4B, 0X4C,
+ 0X56, 0X61, 0X78, 0X7A, 0X41, 0X50, 0X68, 0X73),
PANEL_DCS(0xE7, 0x07, 0x10, 0x10, 0x1A, 0x26, 0x9E, 0x00, 0x4F,
0xA0, 0x14, 0x14, 0x00, 0x00, 0x00, 0x00, 0x12, 0x0A, 0x02,
0x02, 0x00, 0x33, 0x02, 0x04, 0x18, 0x01),
PANEL_DCS(0xBD, 0x01),
PANEL_DCS(0xB1, 0x01, 0x7F, 0x11, 0xFD),
PANEL_DCS(0xCB, 0x86),
+ PANEL_DCS(0xD3, 0x00, 0X00, 0X04, 0X00, 0X00),
PANEL_DCS(0xD8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xA0,
0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xA0, 0x00, 0x00, 0x00, 0x00,
@@ -94,6 +102,7 @@ struct panel_serializable_data IVO_T109NW41 = {
PANEL_DCS(0xE9, 0x3F),
PANEL_DCS(0xE1, 0x00),
PANEL_DCS(0xBD, 0x00),
+ PANEL_DCS(0xD2, 0xFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF),
PANEL_DCS(0xE9, 0xC4),
PANEL_DCS(0xBA, 0x96),
PANEL_DCS(0xE9, 0x3F),
diff --git a/src/drivers/nxp/uwb/uwb.c b/src/drivers/nxp/uwb/uwb.c
index 590b3f5154d5..8a451c4103d3 100644
--- a/src/drivers/nxp/uwb/uwb.c
+++ b/src/drivers/nxp/uwb/uwb.c
@@ -6,7 +6,8 @@
#include <device/device.h>
#include <device/spi.h>
#include <spi-generic.h>
-#include <string.h>
+#include <stdio.h>
+
#include "chip.h"
static int spi_acpi_get_bus(const struct device *dev)
diff --git a/src/drivers/ocp/dmi/smbios.c b/src/drivers/ocp/dmi/smbios.c
index ead9b4d134fa..0ac33347519b 100644
--- a/src/drivers/ocp/dmi/smbios.c
+++ b/src/drivers/ocp/dmi/smbios.c
@@ -6,6 +6,7 @@
#include <delay.h>
#include <cpu/x86/mp.h>
#include <timer.h>
+#include <stdio.h>
#include <string.h>
#include <soc/soc_util.h>
#include <soc/util.h>
diff --git a/src/drivers/ocp/include/vpd.h b/src/drivers/ocp/include/vpd.h
index 8ed6a56cee3f..bf0bc9265e2d 100644
--- a/src/drivers/ocp/include/vpd.h
+++ b/src/drivers/ocp/include/vpd.h
@@ -3,6 +3,8 @@
#ifndef OCP_VPD_H
#define OCP_VPD_H
+#include <include/types.h>
+
/* VPD variable for enabling/disabling FRB2 timer. 1/0: Enable/disable */
#define FRB2_TIMER "frb2_timer_enable"
#define FRB2_TIMER_DEFAULT 1 /* Default value when the VPD variable is not found */
diff --git a/src/drivers/ocp/vpd/Makefile.mk b/src/drivers/ocp/vpd/Makefile.mk
index 1cdc63b524f0..29aad05374df 100644
--- a/src/drivers/ocp/vpd/Makefile.mk
+++ b/src/drivers/ocp/vpd/Makefile.mk
@@ -1,7 +1,14 @@
## SPDX-License-Identifier: GPL-2.0-only
-romstage-$(CONFIG_OCP_VPD) += vpd_util.c
-ramstage-$(CONFIG_OCP_VPD) += vpd_util.c
+ifeq ($(CONFIG_OCP_VPD),y)
+romstage-y += vpd_util.c
+ramstage-y += vpd_util.c
+ifeq ($(CONFIG_XEON_SP_COMMON_BASE),y)
+romstage-$(CONFIG_SOC_INTEL_HAS_CXL) += xeonsp_cxl.c
+ramstage-$(CONFIG_SOC_INTEL_HAS_CXL) += xeonsp_cxl.c
+endif
+endif
+
ramstage-$(CONFIG_LINUXPAYLOAD_CMDLINE_VPD_OVERWRITE) += vpd_cmdline.c
ifeq ($(CONFIG_VPD),y)
all-$(CONFIG_CONSOLE_OVERRIDE_LOGLEVEL) += loglevel_vpd.c
diff --git a/src/drivers/ocp/vpd/xeonsp_cxl.c b/src/drivers/ocp/vpd/xeonsp_cxl.c
new file mode 100644
index 000000000000..92a8eba0f8d1
--- /dev/null
+++ b/src/drivers/ocp/vpd/xeonsp_cxl.c
@@ -0,0 +1,17 @@
+/* SPDX-License-Identifier: GPL-2.0-only */
+
+#include <drivers/ocp/include/vpd.h>
+#include <soc/config.h>
+
+enum xeonsp_cxl_mode get_cxl_mode(void)
+{
+ int ocp_cxl_mode = get_cxl_mode_from_vpd();
+ switch (ocp_cxl_mode) {
+ case CXL_SYSTEM_MEMORY:
+ return XEONSP_CXL_SYS_MEM;
+ case CXL_SPM:
+ return XEONSP_CXL_SP_MEM;
+ default:
+ return XEONSP_CXL_DISABLED;
+ }
+}
diff --git a/src/drivers/spi/acpi/acpi.c b/src/drivers/spi/acpi/acpi.c
index e87946f31b5c..6d927766833e 100644
--- a/src/drivers/spi/acpi/acpi.c
+++ b/src/drivers/spi/acpi/acpi.c
@@ -6,7 +6,8 @@
#include <device/device.h>
#include <device/spi.h>
#include <spi-generic.h>
-#include <string.h>
+#include <stdio.h>
+
#include "chip.h"
static int spi_acpi_get_bus(const struct device *dev)
diff --git a/src/drivers/spi/tpm/tpm.c b/src/drivers/spi/tpm/tpm.c
index d9c3a6dc1cfe..f74dfffe01ee 100644
--- a/src/drivers/spi/tpm/tpm.c
+++ b/src/drivers/spi/tpm/tpm.c
@@ -391,6 +391,7 @@ static enum cb_err tpm2_claim_locality(void)
static const uint32_t supported_did_vids[] = {
0x00281ae0, /* H1 based Cr50 security chip. */
0x504a6666, /* H1D3C based Ti50 security chip. */
+ 0x50666666, /* OpenTitan based Ti50 security chip. */
0x0000104a /* ST33HTPH2E32 */
};
diff --git a/src/drivers/tpm/cr50.c b/src/drivers/tpm/cr50.c
index 5618b9db5d35..d77ad48d8f87 100644
--- a/src/drivers/tpm/cr50.c
+++ b/src/drivers/tpm/cr50.c
@@ -8,7 +8,8 @@
#include <types.h>
#define CR50_DID_VID 0x00281ae0L
-#define TI50_DID_VID 0x504a6666L
+#define TI50_DT_DID_VID 0x504a6666L
+#define TI50_OT_DID_VID 0x50666666L
#define CR50_BOARD_CFG_LOCKBIT_MASK 0x80000000U
#define CR50_BOARD_CFG_FEATUREBITS_MASK 0x3FFFFFFFU
diff --git a/src/drivers/uart/acpi/acpi.c b/src/drivers/uart/acpi/acpi.c
index a245f2cf0e8d..bfa50c6ccfb1 100644
--- a/src/drivers/uart/acpi/acpi.c
+++ b/src/drivers/uart/acpi/acpi.c
@@ -3,7 +3,8 @@
#include <acpi/acpi_device.h>
#include <acpi/acpigen.h>
#include <console/console.h>
-#include <string.h>
+#include <stdio.h>
+
#include "chip.h"
static bool uart_acpi_add_gpios_to_crs(struct drivers_uart_acpi_config *config)
diff --git a/src/drivers/uart/oxpcie_early.c b/src/drivers/uart/oxpcie_early.c
index 206f54d1a51a..7cc908cc37c5 100644
--- a/src/drivers/uart/oxpcie_early.c
+++ b/src/drivers/uart/oxpcie_early.c
@@ -1,7 +1,6 @@
/* SPDX-License-Identifier: GPL-2.0-only */
#include <stdint.h>
-#include <stddef.h>
#include <device/pci_ops.h>
#include <console/uart.h>
#include <device/pci.h>
diff --git a/src/drivers/usb/hub/acpi.c b/src/drivers/usb/hub/acpi.c
index ebbe4b2cf52a..15732a8616ba 100644
--- a/src/drivers/usb/hub/acpi.c
+++ b/src/drivers/usb/hub/acpi.c
@@ -2,6 +2,7 @@
#include <acpi/acpigen.h>
#include <acpi/acpi_device.h>
+#include <stdio.h>
#include "chip.h"
diff --git a/src/drivers/usb/pci_xhci/pci_xhci.c b/src/drivers/usb/pci_xhci/pci_xhci.c
index 47f69c046c3f..b898642f12ea 100644
--- a/src/drivers/usb/pci_xhci/pci_xhci.c
+++ b/src/drivers/usb/pci_xhci/pci_xhci.c
@@ -7,6 +7,7 @@
#include <device/pci.h>
#include <device/pci_ids.h>
#include <device/xhci.h>
+#include <stdio.h>
#include <stdlib.h>
#define PCI_XHCI_CLASSCODE 0x0c0330 /* USB3.0 xHCI controller */
diff --git a/src/drivers/wifi/generic/Makefile.mk b/src/drivers/wifi/generic/Makefile.mk
index 2231115f7630..4ccc934edb1a 100644
--- a/src/drivers/wifi/generic/Makefile.mk
+++ b/src/drivers/wifi/generic/Makefile.mk
@@ -20,12 +20,12 @@ wifi_sar_defaults.hex-type := raw
endif
-CONFIG_MTCL_CBFS_FILEPATH := $(call strip_quotes,$(CONFIG_MTCL_CBFS_FILEPATH))
+CONFIG_WIFI_MTCL_CBFS_FILEPATH := $(call strip_quotes,$(CONFIG_WIFI_MTCL_CBFS_FILEPATH))
-ifneq ($(CONFIG_MTCL_CBFS_FILEPATH),)
+ifneq ($(CONFIG_WIFI_MTCL_CBFS_FILEPATH),)
cbfs-files-$(CONFIG_USE_MTCL) += wifi_mtcl.bin
-wifi_mtcl.bin-file := $(CONFIG_MTCL_CBFS_FILEPATH)
+wifi_mtcl.bin-file := $(CONFIG_WIFI_MTCL_CBFS_FILEPATH)
wifi_mtcl.bin-type := raw
endif
diff --git a/src/drivers/wifi/generic/acpi.c b/src/drivers/wifi/generic/acpi.c
index 9e2936d037c1..fd1da0693419 100644
--- a/src/drivers/wifi/generic/acpi.c
+++ b/src/drivers/wifi/generic/acpi.c
@@ -7,6 +7,7 @@
#include <device/pci_ids.h>
#include <mtcl.h>
#include <sar.h>
+#include <stdio.h>
#include <stdlib.h>
#include <wrdd.h>