soc/intel/cannonlake: Report driver strength by _DSM in eMMC ACPI device
According to doc 621880, it suggests setting 40 ohm in byte 185 in extCSD. This commit provides _DSM method for driver to query driving strength. TEST=mmc extcsd read |grep HS_TIMING and found bit[7:4] is set to 4 BUG=b:154159888 Signed-off-by: Kane Chen <kane.chen@intel.com> Change-Id: I1b4df8b0d1d2cad3a7f521ad47ee5a4b3320c767 Reviewed-on: https://review.coreboot.org/c/coreboot/+/40467 Tested-by: build bot (Jenkins) <no-reply@coreboot.org> Reviewed-by: Tim Wawrzynczak <twawrzynczak@chromium.org>
This commit is contained in:
parent
007faee948
commit
d2b2be3929
|
@ -20,9 +20,12 @@ Scope (\_SB.PCI0) {
|
|||
Name(_ADR, 0x001A0000)
|
||||
Name (_DDN, "eMMC Controller")
|
||||
Name (TEMP, 0)
|
||||
Name (DSUU, ToUUID("f6c13ea5-65cd-461f-ab7a-29f7e8d5bd61"))
|
||||
|
||||
OperationRegion(SCSR, PCI_Config, 0x00, 0x100)
|
||||
Field(SCSR, WordAcc, NoLock, Preserve) {
|
||||
Offset (0x0), /* PCI VID DID */
|
||||
VDID, 32,
|
||||
Offset (0x84), /* PMECTRLSTATUS */
|
||||
PMCR, 16,
|
||||
Offset (0xA2), /* PG_CONFIG */
|
||||
|
@ -64,6 +67,59 @@ Scope (\_SB.PCI0) {
|
|||
Return (0)
|
||||
}
|
||||
}
|
||||
/* _DSM x86 Device Specific Method
|
||||
* Arg0: UUID Unique function identifier
|
||||
* Arg1: Integer Revision Level
|
||||
* Arg2: Integer Function Index (0 = Return Supported Functions)
|
||||
* Arg3: Package Parameters
|
||||
*/
|
||||
Method (_DSM, 4)
|
||||
{
|
||||
If (LEqual (Arg0, ^DSUU)) {
|
||||
/* Check the revision */
|
||||
If (LGreaterEqual (Arg1, Zero)) {
|
||||
/*
|
||||
* Function Index 0 the return value is a buffer
|
||||
* containing one bit for each function index, starting
|
||||
* with zero.
|
||||
* Bit 0 - Indicates whether there is support for any
|
||||
* functions other than function 0
|
||||
* Bit 1 - Indicates support to clear power control
|
||||
* register
|
||||
* Bit 2 - Indicates support to set power control
|
||||
* register
|
||||
* Bit 3 - Indicates support to set 1.8V signalling
|
||||
* Bit 4 - Indicates support to set 3.3V signalling
|
||||
* Bit 5 - Indicates support for HS200 mode
|
||||
* Bit 6 - Indicates support for HS400 mode
|
||||
* Bit 9 - Indicates eMMC I/O Driver Strength
|
||||
*/
|
||||
If (LEqual (Arg2, Zero)) {
|
||||
If (Lequal (VDID, 0x02c48086) ) {
|
||||
/*
|
||||
* Set bit 9 for CML eMMC to indicate
|
||||
* eMMC I/O driver strength is supported
|
||||
*/
|
||||
Return(Buffer() {0x0, 0x02})
|
||||
}
|
||||
|
||||
}
|
||||
/*
|
||||
* Function Index 9, the return value is preferred eMMC
|
||||
* driver strength
|
||||
* 0 - 50 ohm
|
||||
* 1 - 33 ohm
|
||||
* 2 - 66 ohm
|
||||
* 3 - 100 ohm
|
||||
* 4 - 40 ohm
|
||||
*/
|
||||
If (LEqual (Arg2, 9)) {
|
||||
Return(Buffer() {0x4})
|
||||
}
|
||||
}
|
||||
}
|
||||
Return(Buffer() { 0x0 })
|
||||
}
|
||||
}
|
||||
|
||||
/* SD CARD */
|
||||
|
|
Loading…
Reference in New Issue