Allows eMMC in PCI mode to be seen/used by Windows. Test: boot Windows installer on google/edgar, observe internal eMMC storage available for installation when eMMC in PCI (vs ACPI) mode. Change-Id: I4272c198e5e675f451a1f4de5d46e3cd96371446 Signed-off-by: Matt DeVillier <matt.devillier@gmail.com> Reviewed-on: https://review.coreboot.org/24988 Tested-by: build bot (Jenkins) <no-reply@coreboot.org> Reviewed-by: Aaron Durbin <adurbin@chromium.org>
220 lines
3.6 KiB
Text
220 lines
3.6 KiB
Text
/*
|
|
* This file is part of the coreboot project.
|
|
*
|
|
* Copyright (C) 2013 Google Inc.
|
|
*
|
|
* This program is free software; you can redistribute it and/or
|
|
* modify it under the terms of the GNU General Public License as
|
|
* published by the Free Software Foundation; version 2 of
|
|
* the License.
|
|
*
|
|
* This program is distributed in the hope that it will be useful,
|
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
* GNU General Public License for more details.
|
|
*/
|
|
|
|
Device (EMMC)
|
|
{
|
|
Name (_HID, "80860F14")
|
|
Name (_CID, "PNP0D40")
|
|
Name (_UID, 1)
|
|
Name (_DDN, "eMMC Controller 4.5")
|
|
|
|
Name (RBUF, ResourceTemplate()
|
|
{
|
|
Memory32Fixed (ReadWrite, 0, 0x1000, BAR0)
|
|
Interrupt (ResourceConsumer, Level, ActiveLow, Exclusive,,,)
|
|
{
|
|
SCC_EMMC_IRQ
|
|
}
|
|
})
|
|
|
|
Method (_CRS)
|
|
{
|
|
CreateDwordField (^RBUF, ^BAR0._BAS, RBAS)
|
|
Store (\C0B0, RBAS)
|
|
Return (^RBUF)
|
|
}
|
|
|
|
Method (_STA)
|
|
{
|
|
If (LEqual (\C0EN, 1)) {
|
|
Return (0xF)
|
|
} Else {
|
|
Return (0x0)
|
|
}
|
|
}
|
|
|
|
OperationRegion (KEYS, SystemMemory, C0B1, 0x100)
|
|
Field (KEYS, DWordAcc, NoLock, WriteAsZeros)
|
|
{
|
|
Offset (0x84),
|
|
PSAT, 32,
|
|
}
|
|
|
|
Method (_PS3)
|
|
{
|
|
Or (PSAT, 0x00000003, PSAT)
|
|
Or (PSAT, 0x00000000, PSAT)
|
|
}
|
|
|
|
Method (_PS0)
|
|
{
|
|
And (PSAT, 0xfffffffc, PSAT)
|
|
Or (PSAT, 0x00000000, PSAT)
|
|
}
|
|
|
|
Device (EM45)
|
|
{
|
|
/* Slot 0, Function 8 */
|
|
Name (_ADR, 0x8)
|
|
|
|
Method (_RMV, 0, NotSerialized)
|
|
{
|
|
Return (0)
|
|
}
|
|
}
|
|
}
|
|
|
|
Device (PEMC)
|
|
{
|
|
Name (_ADR, 0x00100000) // _ADR: Address
|
|
|
|
OperationRegion (SDIO, PCI_Config, 0x84, 0x04)
|
|
Field (SDIO, WordAcc, NoLock, Preserve)
|
|
{
|
|
Offset (0x01),
|
|
PMEE, 1,
|
|
, 6,
|
|
PMES, 1
|
|
}
|
|
|
|
Method (_STA, 0, NotSerialized)
|
|
{
|
|
If (LEqual (\C0EN, 1)) {
|
|
Return (0x0)
|
|
}
|
|
Else
|
|
{
|
|
Return (0xF)
|
|
}
|
|
}
|
|
|
|
Method (_DSW, 3, NotSerialized)
|
|
{
|
|
}
|
|
|
|
Device (CARD)
|
|
{
|
|
Name (_ADR, 0x08)
|
|
Method (_RMV, 0, NotSerialized)
|
|
{
|
|
Return (Zero)
|
|
}
|
|
}
|
|
}
|
|
|
|
Device (SDIO)
|
|
{
|
|
Name (_HID, "INT33BB")
|
|
Name (_CID, "PNP0D40")
|
|
Name (_UID, 2)
|
|
Name (_DDN, "SDIO Controller")
|
|
|
|
Name (RBUF, ResourceTemplate()
|
|
{
|
|
Memory32Fixed (ReadWrite, 0, 0x1000, BAR0)
|
|
Interrupt (ResourceConsumer, Level, ActiveLow, Exclusive,,,)
|
|
{
|
|
SCC_SDIO_IRQ
|
|
}
|
|
})
|
|
|
|
Method (_CRS)
|
|
{
|
|
CreateDwordField (^RBUF, ^BAR0._BAS, RBAS)
|
|
Store (\C1B0, RBAS)
|
|
Return (^RBUF)
|
|
}
|
|
|
|
Method (_STA)
|
|
{
|
|
If (LEqual (\C1EN, 1)) {
|
|
Return (0xF)
|
|
} Else {
|
|
Return (0x0)
|
|
}
|
|
}
|
|
|
|
OperationRegion (KEYS, SystemMemory, C1B1, 0x100)
|
|
Field (KEYS, DWordAcc, NoLock, WriteAsZeros)
|
|
{
|
|
Offset (0x84),
|
|
PSAT, 32,
|
|
}
|
|
|
|
Method (_PS3)
|
|
{
|
|
Or (PSAT, 0x00000003, PSAT)
|
|
Or (PSAT, 0x00000000, PSAT)
|
|
}
|
|
|
|
Method (_PS0)
|
|
{
|
|
And (PSAT, 0xfffffffc, PSAT)
|
|
Or (PSAT, 0x00000000, PSAT)
|
|
}
|
|
}
|
|
|
|
Device (SDCD)
|
|
{
|
|
Name (_HID, "INT33BB")
|
|
Name (_CID, "PNP0D40")
|
|
Name (_UID, 3)
|
|
Name (_DDN, "SD Card Controller")
|
|
|
|
Name (RBUF, ResourceTemplate()
|
|
{
|
|
Memory32Fixed (ReadWrite, 0x00000000, 0x00001000, BAR0)
|
|
Interrupt(ResourceConsumer, Level, ActiveLow, Exclusive, , , )
|
|
{SCC_SD_IRQ} /* SD Card IRQ */
|
|
GpioInt(Edge, ActiveBoth, SharedAndWake, PullNone, 10000, "\\_SB.GPSE", 0, ResourceConsumer, , )
|
|
{SDCARD_CD} /* SE81 */
|
|
})
|
|
|
|
Method (_CRS)
|
|
{
|
|
CreateDwordField (^RBUF, ^BAR0._BAS, RBAS)
|
|
Store (\C2B0, RBAS)
|
|
Return (^RBUF)
|
|
}
|
|
|
|
Method (_STA)
|
|
{
|
|
If (LEqual (\C2EN, 1)) {
|
|
Return (0xF)
|
|
} Else {
|
|
Return (0x0)
|
|
}
|
|
}
|
|
|
|
OperationRegion (KEYS, SystemMemory, C2B1, 0x100)
|
|
Field (KEYS, DWordAcc, NoLock, WriteAsZeros)
|
|
{
|
|
Offset (0x84),
|
|
PSAT, 32,
|
|
}
|
|
|
|
Method (_PS3)
|
|
{
|
|
Or (PSAT, 0x00000003, PSAT)
|
|
Or (PSAT, 0x00000000, PSAT)
|
|
}
|
|
|
|
Method (_PS0)
|
|
{
|
|
And (PSAT, 0xfffffffc, PSAT)
|
|
Or (PSAT, 0x00000000, PSAT)
|
|
}
|
|
}
|