Commit Graph

1673 Commits

Author SHA1 Message Date
Sridhar Siricilla
ad6d3128f8 soc/intel/common: Use enum cb_err values
The patch uses cb_err enum values as return values for below functions:

1. cse_hmrfpo_enable()
2. cse_boot_to_ro()
3. cse_prep_for_rw_update()
4. cse_sub_part_get_target_rdev()
5. cse_get_sub_part_fw_version()
6. cse_prep_for_component_update()

Signed-off-by: Sridhar Siricilla <sridhar.siricilla@intel.com>
Change-Id: I1bdb7d6b2051a69f1021673d464bfad63dd39431
Reviewed-on: https://review.coreboot.org/c/coreboot/+/71823
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
Reviewed-by: Martin L Roth <gaumless@gmail.com>
2023-01-15 01:56:23 +00:00
Sridhar Siricilla
8f9c1535a4 soc/intel : Use 'enum cb_err' values
Use 'enum cb_err' values for below cse lite functions instead of true or
false.

Functions whose return values updated in this patch:
 1. cse_set_next_boot_partition()
 2. cse_data_clear_request()
 3. cse_set_and_boot_from_next_bp()
 4. cse_boot_to_rw()
 5. cse_fix_data_failure_err()

TEST= Do boot test on Gimble.

Signed-off-by: Sridhar Siricilla <sridhar.siricilla@intel.com>
Change-Id: I7fec530aeb617bab87304aae85ed248e51a6966b
Reviewed-on: https://review.coreboot.org/c/coreboot/+/71822
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
Reviewed-by: Eric Lai <eric_lai@quanta.corp-partner.google.com>
2023-01-13 04:51:15 +00:00
Sridhar Siricilla
4b6e8ca3a1 soc/intel: Use 'enum cb_err' instead of bool
The patch uses 'enum cb_err' values as return values for
cse_get_bp_info() function.

TEST=Build the code for Gimble

Signed-off-by: Sridhar Siricilla <sridhar.siricilla@intel.com>
Change-Id: I900e40b699de344f497e61d974bca3fee7f6ecbf
Reviewed-on: https://review.coreboot.org/c/coreboot/+/71821
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
Reviewed-by: Eric Lai <eric_lai@quanta.corp-partner.google.com>
2023-01-13 04:50:59 +00:00
Sridhar Siricilla
0ae7a8b765 soc/intel/common: Use enum csme_failure_reason
The patch updates return type for below functions as they uses
'enum csme_failure_reason' type return values.

 1. cse_sub_part_trigger_update()
 2. handle_cse_sub_part_fw_update_rv()
 3. cse_sub_part_fw_update()

TEST=Build coreboot code for Gimble

Signed-off-by: Sridhar Siricilla <sridhar.siricilla@intel.com>
Change-Id: I43bc2d518a275894860e4d3c930c3c4d9685fb3a
Reviewed-on: https://review.coreboot.org/c/coreboot/+/71792
Reviewed-by: Eric Lai <eric_lai@quanta.corp-partner.google.com>
Reviewed-by: Krishna P Bhat D <krishna.p.bhat.d@intel.com>
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
2023-01-12 05:44:24 +00:00
Jeremy Compostella
ba2cef5b54 soc/intel/common/block/early_graphics: Introduce a 200 ms delay
It has been reported that the PEIM graphics driver may temporarily
fail communication with the display if the time between libgfxinit
turning off the displays and the PEIM driver initialization is too
short. 200 ms has been identified as a safe delay.

This is a temporary workaround and an investigation is in progress to
come up with a better and long term solution.

BUG=b:264526798
BRANCH=firmware-brya-14505.B
TEST=Developer screen is systematically seen

Change-Id: I4ea15123eed1a4355c5ff7d815925032d4151de1
Signed-off-by: Jeremy Compostella <jeremy.compostella@intel.com>
Reviewed-on: https://review.coreboot.org/c/coreboot/+/71656
Reviewed-by: Tarun Tuli <taruntuli@google.com>
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
2023-01-12 03:02:02 +00:00
Jeremy Compostella
47f154c8e5 soc/intel/common/block: Add Intel VGA early graphics support
This patch introduces an early graphics driver which can be used in
romstage in cache-as-ram mode. The implementation relies on
`libgfxinit' and provide VGA text mode support.

SoCs wanting to take advantage of this driver must implement the
`early_graphics_soc_panel_init' function to set the panel power
sequence timing parameters.

BUG=b:252792591
BRANCH=firmware-brya-14505.B
TEST=Graphics bring up observed on skolas with extra patches

Change-Id: Ie4ad1215e5fadd0adc1271b6bd6ddb0ea258cb5b
Signed-off-by: Jeremy Compostella <jeremy.compostella@intel.com>
Reviewed-on: https://review.coreboot.org/c/coreboot/+/70299
Reviewed-by: Tarun Tuli <taruntuli@google.com>
Reviewed-by: Subrata Banik <subratabanik@google.com>
Reviewed-by: Maulik Vaghela <maulikvaghela@google.com>
Reviewed-by: Kapil Porwal <kapilporwal@google.com>
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
2023-01-12 02:54:09 +00:00
Jeremy Compostella
765e5df0dd drivers/intel/gma: Hook up libgfxinit in romstage
A mainboard port needs to:

- select `CONFIG_MAINBOARD_HAS_EARLY_LIBGFXINIT'

- implement the Ada package `GMA.Mainboard' with a single function
  `ports' that returns a list of ports to be probed for displays.

- set the desired `GFX_GMA_DEFAULT_MMIO' IO memory address to use
  in romstage (and ramstage) for the graphic device.

BUG=b:252792591
BRANCH=firmware-brya-14505.B
TEST=libgfxinit compiles in romstage.
     libgfxinit successfully executes in romstage and ramstage using
     the requested MMIO setting on skolas.

Change-Id: I3c2101de10dc5df54fe873e43bbe0f1c4dccff44
Signed-off-by: Jeremy Compostella <jeremy.compostella@intel.com>
Reviewed-on: https://review.coreboot.org/c/coreboot/+/70276
Reviewed-by: Tarun Tuli <taruntuli@google.com>
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
2023-01-11 13:59:54 +00:00
Sridhar Siricilla
d9c82695f5 soc/intel: Add Kconfigs to define scaling factor for cores
The patch adds Kconfigs to define scaling factor for Efficient and
Performance cores instead of using hard coded values in the soc code.
Also, the patches uses the Kconfigs directly to calculate the core's
nominal performance. So, we don't need to implement soc function
soc_get_scaling_factor() to get the scaling factor data for different
core types. Hence, soc_get_scaling_factor() function is removed.

TEST=Build the code for Gimble and Rex. Also, I have verified that
build system logs error when the Kconfigs are undefined.

Signed-off-by: Sridhar Siricilla <sridhar.siricilla@intel.com>
Change-Id: I55e4d815116ef40c5f33be64ab495e942bf35ee8
Reviewed-on: https://review.coreboot.org/c/coreboot/+/71687
Reviewed-by: Subrata Banik <subratabanik@google.com>
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
2023-01-10 13:53:24 +00:00
Sridhar Siricilla
205437b759 soc/intel/common: Fix cpu index calculation
get_cpu_index() helper function returns cpu's index based on it's APIC
id position from the ascending order list of cpus' APIC IDs.
In order to calculate the cpu's index, the helper function needs to
traverse through each cpu node to find their APIC IDs. So, the function
traverse the CPU node list from the cpu whose APIC ID is 0 assuming it
is the first cpu node in the list. This logic works fine where BSP's
APIC ID is 0. But, starting from MTL, APIC ID for BSP need not be 0 as
APIC ID numbering first get assigned for CPU Die Efficient cores, then
Performance cores.
Please refer section# 6.1 of doc#643504 for more details on APIC IDs.

Considering the APIC Id allotment for MTL cores, as existing code
traversing begins from the cpu that has APIC Id#0 which may not be the
first cpu node in the list so index calculation results in wrong value.

The patch addresses above described issue by traversing all the CPU
nodes to calculate the cpu index. Also, prevents inconsistent report
of /sys/devices/system/cpu/cpu*/cpufreq/* and
/sys/devices/system/cpu/cpuXX/acpi_cppc  on each reboot.

TEST=Verified that the get_cpu_index helper function returns the correct
index id for a CPU on Rex.

The coreboot log with code instrumentation, before this patch:

[DEBUG]   my_apic_id:0x10 cpu_index: 0x6
[DEBUG]   my_apic_id:0x11 cpu_index: 0x6
[DEBUG]   my_apic_id:0x42 cpu_index: 0x6
[DEBUG]   my_apic_id:0x21 cpu_index: 0x6
[DEBUG]   my_apic_id:0x40 cpu_index: 0x6
[DEBUG]   my_apic_id:0x31 cpu_index: 0x6
[DEBUG]   my_apic_id:0x39 cpu_index: 0x6
[DEBUG]   my_apic_id:0xa cpu_index: 0x3
[DEBUG]   my_apic_id:0x0 cpu_index: 0x0
[DEBUG]   my_apic_id:0x8 cpu_index: 0x2
[DEBUG]   my_apic_id:0x4 cpu_index: 0x2
[DEBUG]   my_apic_id:0x28 cpu_index: 0x6
[DEBUG]   my_apic_id:0x2 cpu_index: 0x1
[DEBUG]   my_apic_id:0x38 cpu_index: 0x6
[DEBUG]   my_apic_id:0x29 cpu_index: 0x6
[DEBUG]   my_apic_id:0xe cpu_index: 0x5
[DEBUG]   my_apic_id:0x6 cpu_index: 0x2
[DEBUG]   my_apic_id:0x20 cpu_index: 0x6
[DEBUG]   my_apic_id:0x30 cpu_index: 0x6
[DEBUG]   my_apic_id:0x19 cpu_index: 0x6
[DEBUG]   my_apic_id:0xc cpu_index: 0x4
[DEBUG]   my_apic_id:0x18 cpu_index: 0x6

We can see same cpu_index for multiple cores before fix.

After this patch..
[DEBUG]   my_apic_id:0x10 cpu_index: 0x8
[DEBUG]   my_apic_id:019 cpu_index: 0xb
[DEBUG]   my_apic_id:0x11 cpu_index: 0x9
[DEBUG]   my_apic_id:0x18 cpu_index: 0xa
[DEBUG]   my_apic_id:0x40 cpu_index: 0x14
[DEBUG]   my_apic_id:0x30 cpu_index: 0x10
[DEBUG]   my_apic_id:0x42 cpu_index: 0x15
[DEBUG]   my_apic_id:0xc cpu_index: 0x6
[DEBUG]   my_apic_id:0x2 cpu_index: 0x1
[DEBUG]   my_apic_id:0x29 cpu_index: 0xf
[DEBUG]   my_apic_id:0xe cpu_index: 0x7
[DEBUG]   my_apic_id:0x20 cpu_index: 0xc
[DEBUG]   my_apic_id:0x0 cpu_index: 0x0
[DEBUG]   my_apic_id:0x31 cpu_index: 0x11
[DEBUG]   my_apic_id:0x28 cpu_index: 0xe
[DEBUG]   my_apic_id:0x21 cpu_index: 0xd
[DEBUG]   my_apic_id:0xa cpu_index: 0x5
[DEBUG]   my_apic_id:0x38 cpu_index: 0x12
[DEBUG]   my_apic_id:0x8 cpu_index:  0x4
[DEBUG]   my_apic_id:0x4 cpu_index: 0x2
[DEBUG]   my_apic_id:0x39 cpu_index: 0x13

Change-Id: I69e5e6231dd18b43d439340aaed50eb9edeca3b7
Signed-off-by: Sridhar Siricilla <sridhar.siricilla@intel.com>
Reviewed-on: https://review.coreboot.org/c/coreboot/+/70751
Reviewed-by: Arthur Heymans <arthur@aheymans.xyz>
Reviewed-by: Kapil Porwal <kapilporwal@google.com>
Reviewed-by: Sukumar Ghorai <sukumar.ghorai@intel.com>
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
2023-01-09 04:44:00 +00:00
Pratikkumar Prajapati
bd26394496 soc/intel/common: Untie PRMRR from SGX
PRMRR is used by many Intel SOC features, not just Intel SGX.
As of now SGX and Key Locker are the features that need PRMRR.
Untie it from Intel SGX specific files and move to common cpulib.
Also rename PRMRR size config option. Use the renamed PRMRR size
config option to set the PRMRR size.

TEST=Able to set PRMRR size using config.

Signed-off-by: Pratikkumar Prajapati <pratikkumar.v.prajapati@intel.com>
Change-Id: I0cd49a87be0293530705802fd9b830201a5863c2
Reviewed-on: https://review.coreboot.org/c/coreboot/+/70819
Reviewed-by: Kapil Porwal <kapilporwal@google.com>
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
Reviewed-by: Sridhar Siricilla <sridhar.siricilla@intel.com>
2023-01-08 19:36:43 +00:00
Sridhar Siricilla
4c3014feb2 soc/intel/: Rename small and big cores references
The patch addresses Intel heterogeneous cores as `Efficient` and
`Performance` cores instead of `small` and `big` cores. It is to ensure
coreboot code has uniform reference to the heterogeneous cores. So, the
patch renames all `small` and `big` core references to `efficient` (eff)
and `performance` (perf) cores respectively.

TEST=Build the code for Brya and Rex boards

Signed-off-by: Sridhar Siricilla <sridhar.siricilla@intel.com>
Change-Id: I98c9c0ed86b211d736a0a1738b47410faa13a39f
Reviewed-on: https://review.coreboot.org/c/coreboot/+/71639
Reviewed-by: Kapil Porwal <kapilporwal@google.com>
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
Reviewed-by: Arthur Heymans <arthur@aheymans.xyz>
2023-01-06 21:34:54 +00:00
Pratikkumar Prajapati
63fcc4acc2 soc/intel/common: Check PRMRR dependent features
Add below mentioned functions:

is_sgx_configured_and_supported():
	Checks if SGX is configured and supported
is_keylocker_configured_and_supported():
	Checks if Key Locker is configured and supported
check_prm_features_enabled():
	Checks if any of the features that need PRM are configured
	and supported. As of now SGX and Key Locker are the only
	features that need PRM.

Also, call check_prm_features_enabled() from get_valid_prmrr_size()
to make sure PRM dependent features are enabled and configured before
returning PRMRR size.

Signed-off-by: Pratikkumar Prajapati <pratikkumar.v.prajapati@intel.com>
Change-Id: I51d3c144c410ce4c736f10e3759c7b7603ec3de9
Reviewed-on: https://review.coreboot.org/c/coreboot/+/71569
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
Reviewed-by: Kapil Porwal <kapilporwal@google.com>
2023-01-06 19:19:34 +00:00
Pratikkumar Prajapati
dd63dc1dc5 soc/intel/common: Add Kconfig option for Intel Key Locker
Add INTEL_KEYLOCKER Kconfig option. Disable it by default. The
specification of Key Locker can be found via document #343965
on Intel's site.

Signed-off-by: Pratikkumar Prajapati <pratikkumar.v.prajapati@intel.com>
Change-Id: Ia78e9bfe7ba2fd4e45b4821c95b19b8e580dccab
Reviewed-on: https://review.coreboot.org/c/coreboot/+/71118
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
Reviewed-by: Sridhar Siricilla <sridhar.siricilla@intel.com>
2023-01-06 19:19:03 +00:00
Pratikkumar Prajapati
17c847b5ea soc/intel/common: Use CPUID_STRUCT_EXTENDED_FEATURE_FLAGS macro
Use CPUID_STRUCT_EXTENDED_FEATURE_FLAGS macro to get extended CPU
capabilities flags using cpuid_ext inline function.

Signed-off-by: Pratikkumar Prajapati <pratikkumar.v.prajapati@intel.com>
Change-Id: If680ffff64e2e1dabded8c03c4042d349a11b635
Reviewed-on: https://review.coreboot.org/c/coreboot/+/71646
Reviewed-by: Subrata Banik <subratabanik@google.com>
Reviewed-by: Sridhar Siricilla <sridhar.siricilla@intel.com>
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
2023-01-06 03:38:18 +00:00
Kapil Porwal
9395cf9a2f soc/intel: Create common function to check PCH slot
BUG=none
TEST=Build and boot to google/taniks. Check dmesg and make sure that
there is no regression.

Also confirm that there is no change in ACPI _PRT and IO-APCI interrupt
assignment.

IO-APIC interrupts before and after this patch:
  1: IO-APIC 1-edge i8042
  8: IO-APIC 8-edge rtc0
  9: IO-APIC 9-fasteoi acpi
 14: IO-APIC 14-fasteoi INTC1055:00
 23: IO-APIC 23-fasteoi idma64.5, ttyS0
 37: IO-APIC 37-fasteoi idma64.0, i2c_designware.0
 38: IO-APIC 38-fasteoi idma64.1, i2c_designware.1
 40: IO-APIC 40-fasteoi idma64.2, i2c_designware.2
 41: IO-APIC 41-fasteoi idma64.3, i2c_designware.3
 42: IO-APIC 42-fasteoi idma64.4, i2c_designware.4
 45: IO-APIC 45-fasteoi idma64.6, pxa2xx-spi.6
 77: IO-APIC 77-edge cr50_i2c
 100: IO-APIC 100-fasteoi ELAN0000:00
 103: IO-APIC 103-fasteoi chromeos-ec

_PRT before and after this patch:
  Package (0x04) ==> 0x0001FFFF, 0x00, 0x00, 0x00000010
  Package (0x04) ==> 0x0002FFFF, 0x00, 0x00, 0x00000011
  Package (0x04) ==> 0x0004FFFF, 0x00, 0x00, 0x00000012
  Package (0x04) ==> 0x0005FFFF, 0x00, 0x00, 0x00000010
  Package (0x04) ==> 0x0006FFFF, 0x00, 0x00, 0x00000010
  Package (0x04) ==> 0x0006FFFF, 0x02, 0x00, 0x00000012
  Package (0x04) ==> 0x0007FFFF, 0x00, 0x00, 0x00000013
  Package (0x04) ==> 0x0007FFFF, 0x01, 0x00, 0x00000014
  Package (0x04) ==> 0x0007FFFF, 0x02, 0x00, 0x00000015
  Package (0x04) ==> 0x0007FFFF, 0x03, 0x00, 0x00000016
  Package (0x04) ==> 0x0008FFFF, 0x00, 0x00, 0x00000017
  Package (0x04) ==> 0x000DFFFF, 0x00, 0x00, 0x00000011
  Package (0x04) ==> 0x000DFFFF, 0x01, 0x00, 0x00000013
  Package (0x04) ==> 0x0010FFFF, 0x00, 0x00, 0x00000018
  Package (0x04) ==> 0x0010FFFF, 0x01, 0x00, 0x00000019
  Package (0x04) ==> 0x0010FFFF, 0x02, 0x00, 0x00000014
  Package (0x04) ==> 0x0010FFFF, 0x03, 0x00, 0x00000015
  Package (0x04) ==> 0x0011FFFF, 0x00, 0x00, 0x0000001A
  Package (0x04) ==> 0x0011FFFF, 0x01, 0x00, 0x0000001B
  Package (0x04) ==> 0x0011FFFF, 0x02, 0x00, 0x0000001C
  Package (0x04) ==> 0x0011FFFF, 0x03, 0x00, 0x0000001D
  Package (0x04) ==> 0x0012FFFF, 0x00, 0x00, 0x0000001E
  Package (0x04) ==> 0x0012FFFF, 0x01, 0x00, 0x0000001F
  Package (0x04) ==> 0x0012FFFF, 0x02, 0x00, 0x00000016
  Package (0x04) ==> 0x0013FFFF, 0x00, 0x00, 0x00000020
  Package (0x04) ==> 0x0013FFFF, 0x01, 0x00, 0x00000021
  Package (0x04) ==> 0x0013FFFF, 0x02, 0x00, 0x00000022
  Package (0x04) ==> 0x0013FFFF, 0x03, 0x00, 0x00000023
  Package (0x04) ==> 0x0014FFFF, 0x01, 0x00, 0x00000017
  Package (0x04) ==> 0x0014FFFF, 0x00, 0x00, 0x00000024
  Package (0x04) ==> 0x0014FFFF, 0x02, 0x00, 0x00000011
  Package (0x04) ==> 0x0015FFFF, 0x00, 0x00, 0x00000025
  Package (0x04) ==> 0x0015FFFF, 0x01, 0x00, 0x00000026
  Package (0x04) ==> 0x0015FFFF, 0x02, 0x00, 0x00000027
  Package (0x04) ==> 0x0015FFFF, 0x03, 0x00, 0x00000028
  Package (0x04) ==> 0x0016FFFF, 0x00, 0x00, 0x00000012
  Package (0x04) ==> 0x0016FFFF, 0x01, 0x00, 0x00000013
  Package (0x04) ==> 0x0016FFFF, 0x02, 0x00, 0x00000014
  Package (0x04) ==> 0x0016FFFF, 0x03, 0x00, 0x00000015
  Package (0x04) ==> 0x0017FFFF, 0x00, 0x00, 0x00000016
  Package (0x04) ==> 0x0019FFFF, 0x00, 0x00, 0x00000029
  Package (0x04) ==> 0x0019FFFF, 0x01, 0x00, 0x0000002A
  Package (0x04) ==> 0x0019FFFF, 0x02, 0x00, 0x0000002B
  Package (0x04) ==> 0x001CFFFF, 0x00, 0x00, 0x00000010
  Package (0x04) ==> 0x001CFFFF, 0x01, 0x00, 0x00000011
  Package (0x04) ==> 0x001CFFFF, 0x02, 0x00, 0x00000012
  Package (0x04) ==> 0x001CFFFF, 0x03, 0x00, 0x00000013
  Package (0x04) ==> 0x001DFFFF, 0x00, 0x00, 0x00000010
  Package (0x04) ==> 0x001DFFFF, 0x01, 0x00, 0x00000011
  Package (0x04) ==> 0x001DFFFF, 0x02, 0x00, 0x00000012
  Package (0x04) ==> 0x001DFFFF, 0x03, 0x00, 0x00000013
  Package (0x04) ==> 0x001EFFFF, 0x00, 0x00, 0x00000017
  Package (0x04) ==> 0x001EFFFF, 0x01, 0x00, 0x00000014
  Package (0x04) ==> 0x001EFFFF, 0x02, 0x00, 0x0000002C
  Package (0x04) ==> 0x001EFFFF, 0x03, 0x00, 0x0000002D
  Package (0x04) ==> 0x001FFFFF, 0x01, 0x00, 0x00000016
  Package (0x04) ==> 0x001FFFFF, 0x02, 0x00, 0x00000017
  Package (0x04) ==> 0x001FFFFF, 0x03, 0x00, 0x00000014
  Package (0x04) ==> 0x001FFFFF, 0x00, 0x00, 0x00000015

Signed-off-by: Kapil Porwal <kapilporwal@google.com>
Change-Id: Ib4fc850228b7ddbf84e2feb2433adff5e4002033
Reviewed-on: https://review.coreboot.org/c/coreboot/+/71236
Reviewed-by: Subrata Banik <subratabanik@google.com>
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
2023-01-04 14:12:29 +00:00
Kapil Porwal
a2a9e8ea8f soc/intel/common/block/fast_spi: Hook up pci_dev_ops_pci to set SSID
BUG=none
TEST=Verify presence of subsystem ID for fast_spi device on google/rex.

lspci output before this patch:
00:1f.5 Serial bus controller [0c80]: Intel Corporation Device [8086:7e23]

lspci output after this patch:
00:1f.5 Serial bus controller [0c80]: Intel Corporation Device [8086:7e23]
        Subsystem: Intel Corporation Device [8086:7e23]

Note: UPD SiSkipSsidProgramming was set to 1 for above test.

Signed-off-by: Kapil Porwal <kapilporwal@google.com>
Change-Id: I08c7a5a3fdc7389b315e85180c16d1ec335fbba2
Reviewed-on: https://review.coreboot.org/c/coreboot/+/71275
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
Reviewed-by: Paul Menzel <paulepanter@mailbox.org>
Reviewed-by: Subrata Banik <subratabanik@google.com>
2023-01-04 04:50:56 +00:00
Pratikkumar Prajapati
08e8067a58 soc/intel/common: Add API to check Key Locker support
Add is_keylocker_supported() API in common cpulib.

This function checks if the CPU supports Key Locker feature.
Returns true if Key Locker feature is supported otherwise false.

Change-Id: Ide9e59a4f11a63df48838eab02c2c584cced12e1
Signed-off-by: Pratikkumar Prajapati <pratikkumar.v.prajapati@intel.com>
Reviewed-on: https://review.coreboot.org/c/coreboot/+/71117
Reviewed-by: Sridhar Siricilla <sridhar.siricilla@intel.com>
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
2023-01-04 03:41:39 +00:00
Pratikkumar Prajapati
e51978f26f soc/intel/common: Move SGX supported API to cpulib
Move is_sgx_supported() API to common cpulib code, so that
this function can be used by other code without enabling
SOC_INTEL_COMMON_BLOCK_SGX_ENABLE config option.

Change-Id: Ib630ac451152ae2471c862fced992dde3b49d05d
Signed-off-by: Pratikkumar Prajapati <pratikkumar.v.prajapati@intel.com>
Reviewed-on: https://review.coreboot.org/c/coreboot/+/71116
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
Reviewed-by: Subrata Banik <subratabanik@google.com>
Reviewed-by: Sridhar Siricilla <sridhar.siricilla@intel.com>
2023-01-02 03:55:04 +00:00
Felix Singer
9df60d36b2 tree/acpi: Replace constant "Zero" with actual number
Change-Id: I5a3e3506415f424bf0fdd48fc449520a76622af5
Signed-off-by: Felix Singer <felixsinger@posteo.net>
Reviewed-on: https://review.coreboot.org/c/coreboot/+/71525
Reviewed-by: Subrata Banik <subratabanik@google.com>
Reviewed-by: Elyes Haouas <ehaouas@noos.fr>
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
2022-12-27 09:06:47 +00:00
Felix Singer
7b8ac0030c {acpi,arch,soc}/acpi: Replace constant "One" with actual number
Change-Id: I3dfd7dd1de3bd27c35c195bd43c4a5b8c5a2dc53
Signed-off-by: Felix Singer <felixsinger@posteo.net>
Reviewed-on: https://review.coreboot.org/c/coreboot/+/71522
Reviewed-by: Eric Lai <eric_lai@quanta.corp-partner.google.com>
Reviewed-by: Elyes Haouas <ehaouas@noos.fr>
Reviewed-by: Subrata Banik <subratabanik@google.com>
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
2022-12-27 09:05:15 +00:00
Dinesh Gehlot
d4f2d14d52 soc/intel: Move max speed API to common
This patch moves API "smbios_cpu_get_max_speed_mhz()"
to common code from board specific. This API was made
generic in 'commit d34364bdea ("soc/intel/alderlake:
Utilize `CPU_BCLK_MHZ` over dedicated macro")'

BUG=NONE
TEST=Boot and verified that SMBIOS max speed value is
correct on brya and rex.
(brya) dmidecode -t : "Max Speed: 4400 MHz"
(rex) dmidecode -t : "Max Speed: 3400 MHz"

Signed-off-by: Dinesh Gehlot <digehlot@google.com>
Change-Id: I87040ab23319097287e191d7fc9579f16d716e62
Reviewed-on: https://review.coreboot.org/c/coreboot/+/70879
Reviewed-by: Johnny Lin <Johnny_Lin@wiwynn.com>
Reviewed-by: Eric Lai <eric_lai@quanta.corp-partner.google.com>
Reviewed-by: Subrata Banik <subratabanik@google.com>
Reviewed-by: Kapil Porwal <kapilporwal@google.com>
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
2022-12-25 15:24:36 +00:00
Tim Chu
96b49b5acb soc/intel/cmn/block/pmc: Add pmc_or_mmio32 utility function
Change-Id: I5f9845dd3ea098d990710eaaa2d5db495f876cdd
Signed-off-by: Tim Chu <Tim.Chu@quantatw.com>
Signed-off-by: Johnny Lin <johnny_lin@wiwynn.com>
Reviewed-on: https://review.coreboot.org/c/coreboot/+/71099
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
Reviewed-by: Angel Pons <th3fanbus@gmail.com>
2022-12-23 14:22:57 +00:00
Marx Wang
39ede0af15 soc/intel/alderlake: Add Raptor Lake device IDs
Add system agent ID for RPL QDF#Q2MB/Q2PS

TEST=able to build coreboot successfully

Signed-off-by: Marx Wang <marx.wang@intel.com>
Change-Id: I169c8bc51cdf7fbfcdb1996d93afa4a352e2fddf
Reviewed-on: https://review.coreboot.org/c/coreboot/+/71121
Reviewed-by: Subrata Banik <subratabanik@google.com>
Reviewed-by: Tarun Tuli <taruntuli@google.com>
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
Reviewed-by: Eric Lai <eric_lai@quanta.corp-partner.google.com>
2022-12-22 18:47:50 +00:00
Kapil Porwal
0dd4494063 soc/intel/cmn/block/cnvi: Add missing CNVI IDs for ADL
Add missing CNVI IDs for ADL -
ADL-P: 0x51f2, 0x51f3
ADL-S: 0x7af1, 0x7af2, 0x7af3

Signed-off-by: Kapil Porwal <kapilporwal@google.com>
Change-Id: I189be9a8c8895a93d98886e6591e771bbce5f564
Reviewed-on: https://review.coreboot.org/c/coreboot/+/71078
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
Reviewed-by: Subrata Banik <subratabanik@google.com>
Reviewed-by: Eric Lai <eric_lai@quanta.corp-partner.google.com>
Reviewed-by: Reka Norman <rekanorman@chromium.org>
2022-12-20 15:48:41 +00:00
Elyes Haouas
17a9849010 soc/intel/*/crashlog.[ch]: Remove unused includes
Change-Id: I126d49c27302e1ed2e00ff491d59cadda7101d12
Signed-off-by: Elyes Haouas <ehaouas@noos.fr>
Reviewed-on: https://review.coreboot.org/c/coreboot/+/70924
Reviewed-by: Subrata Banik <subratabanik@google.com>
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
2022-12-20 12:35:57 +00:00
Elyes Haouas
1201fb9a91 src/soc: Remove unneeded <assert.h>
As _Static_assert() is a compiler built-in, <assert.h> is not needed.

Change-Id: I578b4bf286538d0606569d19ec760a1846c8145b
Signed-off-by: Elyes Haouas <ehaouas@noos.fr>
Reviewed-on: https://review.coreboot.org/c/coreboot/+/70904
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
Reviewed-by: Eric Lai <eric_lai@quanta.corp-partner.google.com>
2022-12-20 12:07:46 +00:00
Johnny Lin
a3e68c9f95 soc/intel/cmn: Clear interrupt status after HECI-1 has been received
According to Intel doc#630774, BIOS should clear Host Interrupt Status
if it has read all the slots of the message from the ME circular buffer.
Since this is not found in client ME document, add a Kconfig
SOC_INTEL_CSE_SERVER_SKU that only clears interrupt status for Server
ME SKU.

On SPR-SP, if mainboard calls get_me_fw_version via HECI-1, with the
change can avoid seeing below Linux warning during boot with Linux
v5.12:
[   17.868929] irq 16: nobody cared (try booting with the "irqpoll" option)
[   17.883819] CPU: 10 PID: 0 Comm: swapper/10 Not tainted 5.12.0
[   17.902412] Hardware name: Wiwynn Crater Lake EVT2/Crater Lake-Class1
[   17.922327] Call Trace:
[   17.927780]  <IRQ>
[   17.932253]  dump_stack+0x64/0x7c
[   17.939640]  __report_bad_irq+0x37/0xb1
[   17.948206]  note_interrupt.cold.11+0xa/0x63
[   17.957713]  handle_irq_event_percpu+0x6a/0x80
[   17.967626]  handle_irq_event+0x2a/0x50
[   17.976163]  handle_fasteoi_irq+0x9e/0x140
[   17.985305]  __common_interrupt+0x38/0x90
[   17.994255]  common_interrupt+0x7a/0xa0
[   18.002821]  </IRQ>
[   18.007514]  asm_common_interrupt+0x1e/0x40

Change-Id: I1cf21112870e53a11134d43e461b735ead239717
Signed-off-by: Johnny Lin <johnny_lin@wiwynn.com>
Reviewed-on: https://review.coreboot.org/c/coreboot/+/66579
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
Reviewed-by: Tim Wawrzynczak <inforichland@gmail.com>
2022-12-17 20:44:10 +00:00
Sean Rhodes
e56a812a6a soc/intel/common: Remove read-only from chip_get_common_soc_structure
Remove the `const` property from chip_get_common_soc_structure so that
the returned values can be overwritten as required.

Cc: th3fanbus@gmail.com
Signed-off-by: Sean Rhodes <sean@starlabs.systems>
Change-Id: I7d3db0bc119cd9b9b276abd68754e750e06a788c
Reviewed-on: https://review.coreboot.org/c/coreboot/+/70774
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
Reviewed-by: Angel Pons <th3fanbus@gmail.com>
2022-12-17 20:23:55 +00:00
Arthur Heymans
2834d98f52 cpu/intel: Fix clearing MTRR for clang 64bit
Clang generates R_X86_64_32S symbols that get truncated.

TESTED:
- prodrive/hermes boots with GCC and clang
- MTRR are properly cleared (tested by filling in both
MTRR_FIX_64K_00000 and MTRR_FIX_4K_F8000 before clearing)

Change-Id: I6a5139f7029b6f35b44377f105dded06f6d9cbf9
Signed-off-by: Arthur Heymans <arthur@aheymans.xyz>
Reviewed-on: https://review.coreboot.org/c/coreboot/+/69388
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
Reviewed-by: Angel Pons <th3fanbus@gmail.com>
2022-12-16 17:20:32 +00:00
Sridhar Siricilla
b739fd287d soc/intel/common: Drop unreferenced DP related macros
The patch drops the unreferenced DP related timeout macros.

TEST=Build code for Rex

Signed-off-by: Sridhar Siricilla <sridhar.siricilla@intel.com>
Change-Id: I3f4c7733a92d1b7cb107410fedaca20ede040050
Reviewed-on: https://review.coreboot.org/c/coreboot/+/70663
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
Reviewed-by: Angel Pons <th3fanbus@gmail.com>
2022-12-16 17:06:52 +00:00
Eran Mitrani
4c9440c673 soc/intel/{adl, common}: provide a list of D-states to enter LPM
This was done previously for ADL. moving the code to common so
it can be leveraged for other platforms (e.g. MTL)

TEST=Built and tested on anahera by verifying SSDT contents

Change-Id: I45eded3868a4987cb5eb0676c50378ac52ec3752
Signed-off-by: Eran Mitrani <mitrani@google.com>
Reviewed-on: https://review.coreboot.org/c/coreboot/+/70166
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
Reviewed-by: Subrata Banik <subratabanik@google.com>
Reviewed-by: Kapil Porwal <kapilporwal@google.com>
2022-12-15 16:53:51 +00:00
Elyes Haouas
315d3264b6 treewide: Remove unused 'include <arch/io.h>'
Change-Id: I6f1d7625eb457084ba893b25518fdfdb59cf64db
Signed-off-by: Elyes Haouas <ehaouas@noos.fr>
Reviewed-on: https://review.coreboot.org/c/coreboot/+/70693
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
Reviewed-by: Kapil Porwal <kapilporwal@google.com>
Reviewed-by: Kyösti Mälkki <kyosti.malkki@gmail.com>
2022-12-15 13:37:41 +00:00
Subrata Banik
5dfec71829 soc/intel/{adl, cmn/pcie}: Fix ASPM configuration enum definitions
As per PCI Express Base Specification 5.0 section 5.4.1.3 ASPM
Configuration

+-----------------------+-------------------------------+
|    Field Description  |       ASPM Support            |
+-----------------------+-------------------------------+
|     00b               |       No ASPM support         |
+-----------------------+-------------------------------+
|     01b               |       L0s Supported           |
+-----------------------+-------------------------------+
|     10b               |       L1 Supported            |
+-----------------------+-------------------------------+
|     11b               |       L0s and L1 Supported    |
+-----------------------+-------------------------------+

100b aka 0x4 is added by FSP to allow auto configuration (to avoid
conflicting with the PCI specification defined values).

Additionally, changed enum definition which is now meeting the FSP expectations better.

Signed-off-by: Subrata Banik <subratabanik@google.com>
Change-Id: I8c9055f721e144f2ff5055e5f99ea641efc4d268
Reviewed-on: https://review.coreboot.org/c/coreboot/+/70719
Reviewed-by: Kapil Porwal <kapilporwal@google.com>
Reviewed-by: Werner Zeh <werner.zeh@siemens.com>
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
2022-12-15 08:11:30 +00:00
Sridhar Siricilla
f9ee35ea34 soc/intel/common: Add helper function to get DP mode
The patch adds helper function to get the DP mode.

TEST=Build the code for Rex

Signed-off-by: Sridhar Siricilla <sridhar.siricilla@intel.com>
Change-Id: I02ed1f818e77c37ead8ce962fa12fddfdc8efeb6
Reviewed-on: https://review.coreboot.org/c/coreboot/+/70507
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
Reviewed-by: Subrata Banik <subratabanik@google.com>
2022-12-14 13:35:36 +00:00
Jeff Li
3de39fa36f soc/intel/common/block: add definition of GPIO configuration
Add two macros:
 - PAD_CFG_NF_OWNERSHIP()
 - PAD_CFG_GPIO_OWNERSHIP()

to support setting the Host Software Ownership (own) fields.

Signed-off-by: lichenchen.carl <lichenchen.carl@bytedance.com>
Change-Id: Ia3f2ad8658b751156456b69366fa4b1badb8b595
Reviewed-on: https://review.coreboot.org/c/coreboot/+/70421
Reviewed-by: Subrata Banik <subratabanik@google.com>
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
Reviewed-by: Jonathan Zhang <jonzhang@fb.com>
2022-12-13 17:42:03 +00:00
Subrata Banik
97a45e6a2a soc/intel/cmn/tcss: Skip sending CONN IPC command during S3 resume
This patch skips sending CONN IPC command to PMC if system is resuming
from S3.

Sending CONN IPC command as part of `tcss_configure_dp_mode()` function
results into ERROR while system is resuming from S3.

Additionally, skip `configure_aux_bias_pads()` during S3 resume.

BUG=b:260984500
TEST=Able to test on Google/Rex.

Without this patch:
[ERROR]  pmc_send_ipc_cmd status: fatal
[ERROR]  Port 1 connect request failed
[SPEW ]  [TCSS] TcssInit() - End

With this patch:
No error seen during S3 resume.

Signed-off-by: Subrata Banik <subratabanik@google.com>
Change-Id: I1dab7dc8b4ad76ca0c9630456803c1b9a320fe40
Reviewed-on: https://review.coreboot.org/c/coreboot/+/70222
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
Reviewed-by: Eric Lai <eric_lai@quanta.corp-partner.google.com>
Reviewed-by: Kapil Porwal <kapilporwal@google.com>
2022-12-13 14:36:50 +00:00
Kapil Porwal
843699e3cf drivers/wifi: Move ADL-P CNVi IDs from generic to IA common code CNVi driver
BUG=b:259716145
TEST=Dump SSDT and see that _PRW and _DSD for CNVi device contains
the value from the devicetree on google/redrix.

Before:
    Scope (\_SB.PCI0.WFA3)
    {
        Name (_PRW, Package (0x02)  // _PRW: Power Resources for Wake
        {
            0x6D,
            0x03
        })
        Name (_DSD, Package (0x02)  // _DSD: Device-Specific Data
        {
            ToUUID ("70d24161-6dd5-4c9e-8070-705531292865"),
            Package (0x01)
            {
                Package (0x02)
                {
                    "DmaProperty",
                    One
                }
            }
        })
    ...
    }

After:
    Scope (\_SB.PCI0.CNVW)
    {
        Name (_PRW, Package (0x02)  // _PRW: Power Resources for Wake
        {
            0x6D,
            0x03
        })
        Name (_DSD, Package (0x02)  // _DSD: Device-Specific Data
        {
            ToUUID ("70d24161-6dd5-4c9e-8070-705531292865"),
            Package (0x01)
            {
                Package (0x02)
                {
                    "DmaProperty",
                    One
                }
            }
        })
    ...
    }

Signed-off-by: Kapil Porwal <kapilporwal@google.com>
Change-Id: Ia4ffedcb53afe350694eb03a144d12f714190cc4
Reviewed-on: https://review.coreboot.org/c/coreboot/+/70447
Reviewed-by: Subrata Banik <subratabanik@google.com>
Reviewed-by: Tarun Tuli <taruntuli@google.com>
Reviewed-by: Eric Lai <eric_lai@quanta.corp-partner.google.com>
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
2022-12-12 01:31:48 +00:00
Subrata Banik
ff433b7176 soc/intel: Move TCSS FW latency macros to IA common tcss.h
This patch moves TCSS firmware latency related macros from SoC
specific tcss.h to IA common tcss.h

Additionally, ensure other structure definitions belonging to the
IA common code tcss.h are not causing compilation issues for ASL files
(due to including FW latency macros) hence, guarded against
`!defined(__ACPI__)`.

TEST=Able to build and boot Google/Rex and Google/Kano.

Change-Id: Id51545ef714979c6ba09a2b468231b1f4bab0be7
Signed-off-by: Subrata Banik <subratabanik@google.com>
Reviewed-on: https://review.coreboot.org/c/coreboot/+/70487
Reviewed-by: Eric Lai <eric_lai@quanta.corp-partner.google.com>
Reviewed-by: Ivy Jian <ivy.jian@quanta.corp-partner.google.com>
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
2022-12-10 08:02:42 +00:00
Kyösti Mälkki
2c3ebd8b9d mb,sb,soc/intel: Drop useless IO trap handlers
There are four requirements for the SMI to hit a printk()
this commit now removes.

Build must have DEBUG_SMI=y, otherwise any printk() is a no-op
inside SMM.
ASL must have a TRAP() with argument 0x99 or 0x32 for SMIF value.
Platform needs to have IO Trap #3 enabled at IO 0x800.
The SMI monitor must call io_trap_handler for IO Trap #3.

At the moment, only getac/p470 would meet the above criteria
with TRAP(0x32) in its DSDT _INI method. The ASL ignores any
return value of TRAP() calls made.

A mainboard IO trap handler should have precedence over
a southbridge IO trap handler. At the moment we seem to have
no cases of the latter to support, so remove the latter.

Change-Id: I3a3298c8d9814db8464fbf7444c6e0e6ac6ac008
Signed-off-by: Kyösti Mälkki <kyosti.malkki@gmail.com>
Reviewed-on: https://review.coreboot.org/c/coreboot/+/70365
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
Reviewed-by: Angel Pons <th3fanbus@gmail.com>
Reviewed-by: Arthur Heymans <arthur@aheymans.xyz>
2022-12-07 11:23:15 +00:00
Kyösti Mälkki
a0720431b4 sb,soc/intel: Fix SMI handler IO trap data mask
Shift is done in multiples of 8 (1 << 3) bits.
It was fixed already for i82801ix/jx.

Change-Id: I5e1c2b3bf4ba68f34eb43e59fe783d5cd6e0a39a
Signed-off-by: Kyösti Mälkki <kyosti.malkki@gmail.com>
Reviewed-on: https://review.coreboot.org/c/coreboot/+/70361
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
Reviewed-by: Angel Pons <th3fanbus@gmail.com>
2022-12-07 04:50:40 +00:00
Elyes Haouas
c4fbeacd01 soc/intel/common/block: Use readXXp/writeXXp()
Change-Id: I83d05ce0b26b01fdfc95d1442a4c930ed77bf25c
Signed-off-by: Elyes Haouas <ehaouas@noos.fr>
Reviewed-on: https://review.coreboot.org/c/coreboot/+/70294
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
Reviewed-by: Sridhar Siricilla <sridhar.siricilla@intel.com>
Reviewed-by: Felix Held <felix-coreboot@felixheld.de>
2022-12-06 19:53:34 +00:00
Arthur Heymans
8a3e2b8364 soc/intel/xeon_sp: Read ioapic configuration from hardware
This is more robust than hardcoding whathever FSP has set up and is a
lot less code.

Change-Id: I6423ddc139d742879d791b054ea082768749c0a7
Signed-off-by: Arthur Heymans <arthur@aheymans.xyz>
Reviewed-on: https://review.coreboot.org/c/coreboot/+/70265
Reviewed-by: Jonathan Zhang <jonzhang@fb.com>
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
2022-12-06 17:06:35 +00:00
Michał Kopeć
9c4ae9131c soc/intel/alderlake: make SOC_INTEL_CSE_SEND_EOP_EARLY per-board configurable
SOC_INTEL_CSE_SEND_EOP_EARLY breaks soft ME disable, which works using
a HECI message that needs to be sent before EOP. Make the option
configurable to allow soft ME disable on alderlake.

Change-Id: I7febf7c029e7eac94052cc3a8142949d6813c1bc
Signed-off-by: Michał Kopeć <michal.kopec@3mdeb.com>
Reviewed-on: https://review.coreboot.org/c/coreboot/+/69953
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
Reviewed-by: Michał Żygowski <michal.zygowski@3mdeb.com>
Reviewed-by: Subrata Banik <subratabanik@google.com>
2022-12-06 15:18:45 +00:00
Arthur Heymans
34a7e66faa util/cbfstool: Add a new mechanism to provide a memory map
This replaces the mechanism with --ext-win-base --ext-win-size with a
more generic mechanism where cbfstool can be provided with an arbitrary
memory map.

This will be useful for AMD platforms with flash sizes larger than 16M
where only the lower 16M half gets memory mapped below 4G. Also on Intel
system the IFD allows for a memory map where the "top of flash" !=
"below 4G". This is for instance the case by default on Intel APL.

TEST: google/brya build for chromeos which used --ext-win-base remains
the same after this change with BUILD_TIMELESS=1.

Change-Id: I38ab4c369704497f711e14ecda3ff3a8cdc0d089
Signed-off-by: Arthur Heymans <arthur@aheymans.xyz>
Reviewed-on: https://review.coreboot.org/c/coreboot/+/68160
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
Reviewed-by: Julius Werner <jwerner@chromium.org>
2022-12-06 15:09:09 +00:00
Angel Pons
69a8a53005 soc/intel/common/block/uart: Show ACPI UART in OS
Do not hide UARTs in ACPI mode from the OS, as this prevents using them
on at least Windows. Currently, the driver is only used on the Prodrive
Hermes mainboard.

Change-Id: I01bdccff1b11e1862970c924fd5fc7718a2d6ce9
Signed-off-by: Angel Pons <th3fanbus@gmail.com>
Reviewed-on: https://review.coreboot.org/c/coreboot/+/70155
Reviewed-by: Arthur Heymans <arthur@aheymans.xyz>
Reviewed-by: Lean Sheng Tan <sheng.tan@9elements.com>
Reviewed-by: Patrick Rudolph <patrick.rudolph@9elements.com>
Reviewed-by: Paul Menzel <paulepanter@mailbox.org>
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
2022-12-05 16:05:44 +00:00
Kapil Porwal
65bcb57eea soc/intel/cmn/block/{pcie/rtd3,usb4}: Use helper functions for _DSD
BUG=b:259716145
TEST=Verified SSDT on google/rex.

Signed-off-by: Kapil Porwal <kapilporwal@google.com>
Change-Id: Ib57dea9b16e4590ca2d75ac1512fdaf773ec50f6
Reviewed-on: https://review.coreboot.org/c/coreboot/+/70065
Reviewed-by: Tarun Tuli <taruntuli@google.com>
Reviewed-by: Subrata Banik <subratabanik@google.com>
Reviewed-by: Eric Lai <eric_lai@quanta.corp-partner.google.com>
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
2022-12-05 14:32:04 +00:00
Subrata Banik
adbef6d2b3 soc/intel/cmn/cse: Allow to perform essential CSE operations post EOP
This patch allows to send late EOP cmd to CSE (after CSE .final)
using boot state machine (either BS_PAYLOAD_BOOT or BS_PAYLOAD_LOAD)
if the SoC user selects SOC_INTEL_CSE_SEND_EOP_LATE config.

Rename `set_cse_end_of_post()` to `send_cse_eop_with_late_finalize()`
to make the function name more meaningful with its operation.

BUG=b:260041679
TEST=Able to boot Google/Rex after sending CSE EOP late.

Signed-off-by: Subrata Banik <subratabanik@google.com>
Change-Id: If4c4564befcd38732368b21f1ca3e24b68c30e0c
Reviewed-on: https://review.coreboot.org/c/coreboot/+/69978
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
Reviewed-by: Kapil Porwal <kapilporwal@google.com>
Reviewed-by: Lean Sheng Tan <sheng.tan@9elements.com>
2022-12-02 07:51:58 +00:00
Subrata Banik
17a3da8b99 soc/intel/cmn/cse: API to perform essential CSE operations post EOP
This patch creates an API that can perform essential CSE operation
after sending the late EOP command to the CSE and prior booting to OS.

Lists of operation are
- Perform global reset lock
- Put HECI1 to D0i3 and disable the HECI1 if the user selects
- Set D0I3 for all HECI devices.

BUG=b:260041679
TEST=Able to boot Google/Rex after sending CSE EOP late.

Signed-off-by: Subrata Banik <subratabanik@google.com>
Change-Id: I10131ea9b553a62f0d632783c4dbad96d35d6563
Reviewed-on: https://review.coreboot.org/c/coreboot/+/69977
Reviewed-by: Kapil Porwal <kapilporwal@google.com>
Reviewed-by: Lean Sheng Tan <sheng.tan@9elements.com>
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
2022-12-02 07:51:52 +00:00
Subrata Banik
5214c4091f soc/intel/cmn/cse: Send EOP cmd from .final aka cse_final()
This patch refactors common code to allow cse_final() function to send
EOP cmd if the SoC user selects `SOC_INTEL_CSE_SET_EOP` kconfig.

This patch helps cse_final_ready_to_boot() and
cse_final_end_of_firmware() function for being meaningful with its
operation and let cse_final() being that outer layer to perform three
operations based on the selected kconfig.

1. send cse eop command
2. perform cse_final_ready_to_boot() operations
3. perform cse_final_end_of_firmware() operations

Additionally, ensures the platform that choose to send EOP late
(like JSL and TGL) is not being impacted due to this code refactoring
hence, skip calling into CSE.final if SoC selects
`SOC_INTEL_CSE_SEND_EOP_LATE` config.

BUG=b:260041679
TEST=Able to send EOP command successfully for Google/Taeko.

Signed-off-by: Subrata Banik <subratabanik@google.com>
Change-Id: I412291c9378011509d3825f9b01e81bfced53303
Reviewed-on: https://review.coreboot.org/c/coreboot/+/69975
Reviewed-by: Kapil Porwal <kapilporwal@google.com>
Reviewed-by: Lean Sheng Tan <sheng.tan@9elements.com>
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
2022-12-02 07:51:42 +00:00
Subrata Banik
bed82b0c40 soc/intel/cmn/cse: Create another config for sending CSE EOP cmd late
Presently, coreboot supports two instances of sending EOP cmd to
the Intel CSE.

1. Sending EOP cmd to CSE during `.final` operation from cse pci driver.
2. Starting with Alder Lake, the recommendation was to send EOP to CSE
earlier than CSE `.final` operation. Since then it's referred to as
`Sending EOP Early`. This method helped to save the CSE EOP
response time significantly.

During Meteor Lake platform, CSE EOP response time has become
non-deterministic and we have figured that sending EOP command later
than CSE .final operation is actually helping to optimize the boot time
significantly (around ~150ms savings compared to sending from `.final`
ops and ~5sec compared to sending CSE early).

Hence, this patch intended to create yet another kconfig for sending
CSE late (specifically after `.final` operation). The idea for this
newer config is to use the boot state machine for sending CSE EOP cmd.

The patch train in this series would add the specific changes to allow
sending EOP late and perform other essential operations required prior
booting to OS as coreboot decided to skip calling into FSP Notify phase.

Starting with Jasper Lake, coreboot sends EOP before loading payload
hence, this config is applicable for those platforms.

The current plan is that Intel Jasper Lake, Tiger Lake and Meteor Lake
platform will select this newer config from SoC code.

BUG=b:260041679
TEST=Able to send EOP command successfully for Google/Taeko.

Signed-off-by: Subrata Banik <subratabanik@google.com>
Change-Id: Iea512cd5b79d61dd5d5a962079baf525027c831f
Reviewed-on: https://review.coreboot.org/c/coreboot/+/69976
Reviewed-by: Kapil Porwal <kapilporwal@google.com>
Reviewed-by: Lean Sheng Tan <sheng.tan@9elements.com>
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
2022-12-02 07:51:36 +00:00