soc/intel/tigerlake: Remove IOM Mctp command from TCSS ASL
Port fix from Alder Lake to not set/reset IOM MCTP during
D3 cold entry or exit.
Ports 5008d340033d ("soc/intel/adl: Remove IOM Mctp command from TCSS
ASL"):
> Recently as part of s0ix hang issue, it was found that sending IOM
> MCTP command as part of TCSS D3 Cold enter-exit sequence created an
> issue.
> We discovered that due to change in hardware sequence, ADL should not
> set/reset IOM MCTP during D3 cold entry or exit. This patch removes
> the bit setting from ASL file to prevent hang in the system.
> This patch also removes obsolete Pcode mailbox communication which
> is no longer required for ADL.
> BUG=b:220796339
> BRANCH=firmware-brya-14505.B
> TEST=Check if hang issue is resolved with the CL and no other
> regression
> observed
> https://review.coreboot.org/c/coreboot/+/62861
Test: build/boot drobit to Win11. Verify TCSS XHCI power management
working and USB Root Hub doesn't Code 43 in device manager
Change-Id: I40a537fd2b0c821caf282f52aaff1874f54325f1
Signed-off-by: CoolStar <coolstarorganization@gmail.com>
Reviewed-on: https://review.coreboot.org/c/coreboot/+/80719
Reviewed-by: Matt DeVillier <matt.devillier@gmail.com>
Reviewed-by: Paul Menzel <paulepanter@mailbox.org>
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
diff --git a/src/soc/intel/tigerlake/acpi/tcss.asl b/src/soc/intel/tigerlake/acpi/tcss.asl
index 608b464..588ed5e 100644
--- a/src/soc/intel/tigerlake/acpi/tcss.asl
+++ b/src/soc/intel/tigerlake/acpi/tcss.asl
@@ -363,12 +363,6 @@
Offset(0x10),
RBAR, 64 /* RegBar, offset 0x7110 in MCHBAR */
}
- Field (MBAR, DWordAcc, NoLock, Preserve)
- {
- Offset(0x304), /* PRIMDN_MASK1_0_0_0_MCHBAR_IMPH, offset 0x7404 */
- , 31,
- TCD3, 1 /* [31:31] TCSS IN D3 bit */
- }
/*
* Operation region defined to access the pCode mailbox interface. Get the MCHBAR
@@ -405,101 +399,6 @@
}
/*
- * Method to send pCode MailBox command TCSS_DEVEN_MAILBOX_SUBCMD_GET_STATUS
- *
- * Result will be updated in DATA[1:0]
- * DATA[0:0] TCSS_DEVEN_CURRENT_STATE:
- * 0 - TCSS Deven in normal state.
- * 1 - TCSS Deven is cleared by BIOS Mailbox request.
- * DATA[1:1] TCSS_DEVEN_REQUEST_STATUS:
- * 0 - IDLE. TCSS DEVEN has reached its final requested state.
- * 1 - In Progress. TCSS DEVEN is currently in progress of switching state
- * according to given request (bit 0 reflects source state).
- *
- * Return 0x00 - TCSS Deven in normal state
- * 0x01 - TCSS Deven is cleared by BIOS Mailbox request
- * 0x1x - TCSS Deven is in progress of switching state according to given request
- * 0xFE - Command timeout
- * 0xFF - Command corrupt
- */
- Method (DSGS, 0)
- {
- If ((PMBY () == 0)) {
- PMBC = MAILBOX_BIOS_CMD_TCSS_DEVEN_INTERFACE
- PSCM = TCSS_DEVEN_MAILBOX_SUBCMD_GET_STATUS
- PMBR = 1
- If (PMBY () == 0) {
- Local0 = PMBD
- Local1 = PMBC
- Stall (10)
- If ((Local0 != PMBD) || (Local1 != PMBC)) {
- Printf("pCode MailBox is corrupt.")
- Return (0xFF)
- }
- Return (Local0)
- } Else {
- Printf("pCode MailBox is not ready.")
- Return (0xFE)
- }
- } Else {
- Printf("pCode MailBox is not ready.")
- Return (0xFE)
- }
- }
-
- /*
- * Method to send pCode MailBox command TCSS_DEVEN_MAILBOX_SUBCMD_TCSS_CHANGE_REQ
- *
- * Arg0 : 0 - Restore to previously saved value of TCSS DEVEN
- * 1 - Save current TCSS DEVEN value and clear it
- *
- * Return 0x00 - MAILBOX_BIOS_CMD_CLEAR_TCSS_DEVEN command completed
- * 0xFD - Input argument is invalid
- * 0xFE - Command timeout
- * 0xFF - Command corrupt
- */
- Method (DSCR, 1)
- {
- If (Arg0 > 1) {
- Printf("pCode MailBox is corrupt.")
- Return (0xFD)
- }
- If ((PMBY () == 0)) {
- PMBC = MAILBOX_BIOS_CMD_TCSS_DEVEN_INTERFACE
- PSCM = TCSS_DEVEN_MAILBOX_SUBCMD_TCSS_CHANGE_REQ
- PMBD = Arg0
- PMBR = 1
- If ((PMBY () == 0)) {
- Local0 = PMBD
- Local1 = PMBC
- Stall (10)
- If ((Local0 != PMBD) || (Local1 != PMBC)) {
- Printf("pCode MailBox is corrupt.")
- Return (0xFF)
- }
- /* Poll TCSS_DEVEN_REQUEST_STATUS, timeout value is 10ms. */
- Local0 = 0
- While ((DSGS () & 0x10) && (Local0 < 100)) {
- Stall (100)
- Local0++
- }
- If (Local0 == 100) {
- Printf("pCode MailBox is not ready.")
- Return (0xFE)
- } Else {
- Return (0x00)
- }
- } Else {
- Printf("pCode MailBox is not ready.")
- Return (0xFE)
- }
- } Else {
- Printf("pCode MailBox is not ready.")
- Return (0xFE)
- }
- }
-
- /*
* IOM REG BAR Base address is in offset 0x7110 in MCHBAR.
*/
Method (IOMA, 0)
@@ -707,26 +606,7 @@
}
Else
{
- /*
- * Program IOP MCTP Drop (TCSS_IN_D3) after D3 cold exit and
- * acknowledgement by IOM.
- */
- TCD3 = 0
- /*
- * If the TCSS Deven is cleared by BIOS Mailbox request, then
- * restore to previously saved value of TCSS DEVNE.
- */
- Local0 = 0
- While (\_SB.PCI0.TXHC.VDID == 0xFFFFFFFF) {
- If (DSGS () == 1) {
- DSCR (0)
- }
- Local0++
- If (Local0 == 5) {
- Printf("pCode mailbox command failed.")
- Break
- }
- }
+ Printf("TCSS D3 exit.");
}
}
Else {
@@ -743,27 +623,6 @@
Return
}
- /*
- * If the TCSS Deven in normal state, then Save current TCSS DEVEN value and
- * clear it.
- */
- Local0 = 0
- While (\_SB.PCI0.TXHC.VDID != 0xFFFFFFFF) {
- If (DSGS () == 0) {
- DSCR (1)
- }
- Local0++
- If (Local0 == 5) {
- Printf("pCode mailbox command failed.")
- Break
- }
- }
-
- /*
- * Program IOM MCTP Drop (TCSS_IN_D3) in D3Cold entry before entering D3 cold.
- */
- TCD3 = 1
-
/* Request IOM for D3 cold entry sequence. */
TD3C = 1
}