diff options
Diffstat (limited to 'src/drivers')
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, ¶ms, + 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, + ¶ms, 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, ¶ms, 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> |