soc/intel/adl: Replace dt `HeciEnabled` by `HECI1 disable` config

Since Tiger Lake platform, the HECI1 device can be disabled on
Alder Lake platform using two different mechanism:
A. Using PMC IPC command 0xA9.
B. Sending SBI message under SMM.

In current scope of Alder Lake the default implementation is using
(B) sending sbi message under SMM. A follow up patch to add the
possible options and let platform to choose the applicable one.

List of changes:
1. Drop `HeciEnabled` from dt and dt chip configuration.
2. Replace all logic that disables HECI1 based on the `HeciEnabled`
chip config with `DISABLE_HECI1_AT_PRE_BOOT` config.
3. Default enable HECI1 device in `chipset.cb` to ensure the HECI1
device can undergo the PCI enumeration and later based on the
mainboard policy the HECI1 device can be disabled.

Mainboards that choose to make HECI1 enable during boot don't override
`DISABLE_HECI1_AT_PRE_BOOT` config.

Signed-off-by: Subrata Banik <subratabanik@google.com>
Change-Id: Ie673e634fbc0bdece419c379d417b08dfb4819e2
Reviewed-on: https://review.coreboot.org/c/coreboot/+/60731
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
Reviewed-by: Lean Sheng Tan <sheng.tan@9elements.com>
Reviewed-by: Angel Pons <th3fanbus@gmail.com>
This commit is contained in:
Subrata Banik 2022-01-03 19:17:34 +00:00 committed by Felix Held
parent ff99f1246f
commit 7f8ab005ca
10 changed files with 4 additions and 30 deletions

View File

@ -17,9 +17,6 @@ chip soc/intel/alderlake
# DPTF enable # DPTF enable
register "dptf_enable" = "1" register "dptf_enable" = "1"
# Enable heci communication
register "HeciEnabled" = "1"
# Enable CNVi BT # Enable CNVi BT
register "CnviBtCore" = "true" register "CnviBtCore" = "true"

View File

@ -19,9 +19,6 @@ chip soc/intel/alderlake
register "tcc_offset" = "10" # TCC of 90 register "tcc_offset" = "10" # TCC of 90
# Enable heci communication
register "HeciEnabled" = "1"
# Enable CNVi BT # Enable CNVi BT
register "CnviBtCore" = "true" register "CnviBtCore" = "true"

View File

@ -8,9 +8,6 @@ chip soc/intel/alderlake
register "pmc_gpe0_dw1" = "GPP_D" register "pmc_gpe0_dw1" = "GPP_D"
register "pmc_gpe0_dw2" = "GPP_E" register "pmc_gpe0_dw2" = "GPP_E"
# Enable HECI1 interface
register "HeciEnabled" = "1"
# FSP configuration # FSP configuration
# Enable CNVi BT # Enable CNVi BT

View File

@ -18,9 +18,6 @@ chip soc/intel/alderlake
register "pmc_gpe0_dw1" = "GPP_D" register "pmc_gpe0_dw1" = "GPP_D"
register "pmc_gpe0_dw2" = "GPP_E" register "pmc_gpe0_dw2" = "GPP_E"
# Enable HECI1 communication
register "HeciEnabled" = "1"
# FSP configuration # FSP configuration
register "usb2_ports[0]" = "USB2_PORT_MID(OC1)" # Type-C port 0 register "usb2_ports[0]" = "USB2_PORT_MID(OC1)" # Type-C port 0
register "usb2_ports[1]" = "USB2_PORT_MID(OC1)" # Type-C port 1 register "usb2_ports[1]" = "USB2_PORT_MID(OC1)" # Type-C port 1

View File

@ -8,9 +8,6 @@ chip soc/intel/alderlake
register "pmc_gpe0_dw1" = "GPP_D" register "pmc_gpe0_dw1" = "GPP_D"
register "pmc_gpe0_dw2" = "GPP_E" register "pmc_gpe0_dw2" = "GPP_E"
# Enable HECI1 interface
register "HeciEnabled" = "1"
# FSP configuration # FSP configuration
# Enable CNVi BT # Enable CNVi BT

View File

@ -16,9 +16,6 @@ chip soc/intel/alderlake
register "TcssAuxOri" = "1" register "TcssAuxOri" = "1"
register "typec_aux_bias_pads[0]" = "{.pad_auxp_dc = GPP_A5, .pad_auxn_dc = GPP_A6}" register "typec_aux_bias_pads[0]" = "{.pad_auxp_dc = GPP_A5, .pad_auxn_dc = GPP_A6}"
# Enable heci communication
register "HeciEnabled" = "1"
# Enable CNVi Bluetooth # Enable CNVi Bluetooth
register "CnviBtCore" = "true" register "CnviBtCore" = "true"

View File

@ -8,9 +8,6 @@ chip soc/intel/alderlake
register "pmc_gpe0_dw1" = "GPP_D" register "pmc_gpe0_dw1" = "GPP_D"
register "pmc_gpe0_dw2" = "GPP_E" register "pmc_gpe0_dw2" = "GPP_E"
# Enable HECI1 interface
register "HeciEnabled" = "1"
device domain 0 on device domain 0 on
device ref pcie5 on end device ref pcie5 on end
device ref igpu on end device ref igpu on end

View File

@ -314,10 +314,6 @@ struct soc_intel_alderlake_config {
} IgdDvmt50PreAlloc; } IgdDvmt50PreAlloc;
uint8_t SkipExtGfxScan; uint8_t SkipExtGfxScan;
/* HeciEnabled decides the state of Heci1 at end of boot
* Setting to 0 (default) disables Heci1 and hides the device from OS */
uint8_t HeciEnabled;
/* Enable/Disable EIST. 1b:Enabled, 0b:Disabled */ /* Enable/Disable EIST. 1b:Enabled, 0b:Disabled */
uint8_t eist_enable; uint8_t eist_enable;

View File

@ -175,7 +175,7 @@ chip soc/intel/alderlake
device pci 15.1 alias i2c1 off end device pci 15.1 alias i2c1 off end
device pci 15.2 alias i2c2 off end device pci 15.2 alias i2c2 off end
device pci 15.3 alias i2c3 off end device pci 15.3 alias i2c3 off end
device pci 16.0 alias heci1 off end device pci 16.0 alias heci1 on end
device pci 16.1 alias heci2 off end device pci 16.1 alias heci2 off end
device pci 16.2 alias ide_r off end device pci 16.2 alias ide_r off end
device pci 16.3 alias kt off end device pci 16.3 alias kt off end

View File

@ -16,11 +16,10 @@
*/ */
void smihandler_soc_at_finalize(void) void smihandler_soc_at_finalize(void)
{ {
const struct soc_intel_alderlake_config *config; if (!CONFIG(HECI_DISABLE_USING_SMM))
return;
config = config_of_soc(); if (CONFIG(DISABLE_HECI1_AT_PRE_BOOT))
if (!config->HeciEnabled && CONFIG(HECI_DISABLE_USING_SMM))
heci_disable(); heci_disable();
} }