soc/intel/tigerlake: Update TCSS PM flow

There is requirement to change PM flow for S0ix along with TBT firmware
update under device attached and no device attached scenarios. This
change invokes D3CE and D3CX in DMA _PS3 and _PS0 respectively.

BUG=b:158777291
TEST=Validated s0ix cycles for USB4 device attached and no device
attached test cases along with updated TBT firmware rev35.

Signed-off-by: John Zhao <john.zhao@intel.com>
Change-Id: Iebc8065fe4c8600960d089577608890ab12a95fc
Reviewed-on: https://review.coreboot.org/c/coreboot/+/45014
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
Reviewed-by: Duncan Laurie <dlaurie@chromium.org>
Reviewed-by: Tim Wawrzynczak <twawrzynczak@chromium.org>
This commit is contained in:
John Zhao 2020-09-01 15:04:18 -07:00 committed by Duncan Laurie
parent ab2ad3f2f9
commit 6e8d38ec4e
2 changed files with 29 additions and 23 deletions

View File

@ -32,20 +32,12 @@ Method (_S0W, 0x0)
Method (_PR0)
{
If (DUID == 0) {
Return (Package() { \_SB.PCI0.D3C, \_SB.PCI0.TBT0 })
} Else {
Return (Package() { \_SB.PCI0.D3C, \_SB.PCI0.TBT1 })
}
Return (Package() { \_SB.PCI0.D3C })
}
Method (_PR3)
{
If (DUID == 0) {
Return (Package() { \_SB.PCI0.D3C, \_SB.PCI0.TBT0 })
} Else {
Return (Package() { \_SB.PCI0.D3C, \_SB.PCI0.TBT1 })
}
Return (Package() { \_SB.PCI0.D3C })
}
/*
@ -72,6 +64,24 @@ Method (D3CE, 0, Serialized)
*/
Name (SD3C, 0)
Method (_PS0, 0, Serialized)
{
If (DUID == 0) {
\_SB.PCI0.TBT0._ON()
} Else {
\_SB.PCI0.TBT1._ON()
}
}
Method (_PS3, 0, Serialized)
{
If (DUID == 0) {
\_SB.PCI0.TBT0._OFF()
} Else {
\_SB.PCI0.TBT1._OFF()
}
}
Method (_DSW, 3)
{
/* If entering Sx (Arg1 > 1), need to skip TCSS D3Cold & TBT RTD3/D3Cold. */

View File

@ -76,10 +76,14 @@ Device (PXSX)
Method (_DSW, 3)
{
C2PM (Arg0, Arg1, Arg2, DCPM)
/* If entering Sx (Arg1 > 1), need to skip TCSS D3Cold & TBT RTD3/D3Cold. */
\_SB.PCI0.TDM0.SD3C = Arg1
\_SB.PCI0.TDM1.SD3C = Arg1
If ((TUID == 0) || (TUID == 1)) {
\_SB.PCI0.TDM0.SD3C = Arg1
} Else {
\_SB.PCI0.TDM1.SD3C = Arg1
}
C2PM (Arg0, Arg1, Arg2, DCPM)
}
Method (_PRW, 0)
@ -302,20 +306,12 @@ Method (_S0W, 0x0, NotSerialized)
Method (_PR0)
{
If ((TUID == 0) || (TUID == 1)) {
Return (Package() { \_SB.PCI0.D3C, \_SB.PCI0.TBT0 })
} Else {
Return (Package() { \_SB.PCI0.D3C, \_SB.PCI0.TBT1 })
}
Return (Package() { \_SB.PCI0.D3C })
}
Method (_PR3)
{
If ((TUID == 0) || (TUID == 1)) {
Return (Package() { \_SB.PCI0.D3C, \_SB.PCI0.TBT0 })
} Else {
Return (Package() { \_SB.PCI0.D3C, \_SB.PCI0.TBT1 })
}
Return (Package() { \_SB.PCI0.D3C })
}
/*