https://svn.code.sf.net/p/edk2/code/trunk/edk2/, which are for MinnowBoard MAX open source project. Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: David Wei <david.wei@intel.com> Reviewed-by: Mike Wu <mike.wu@intel.com> Reviewed-by: Hot Tian <hot.tian@intel.com> git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@16599 6f19259b-4bc3-4df7-8a09-765794883524
		
			
				
	
	
		
			617 lines
		
	
	
		
			15 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			617 lines
		
	
	
		
			15 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
| /**************************************************************************;
 | |
| ;*                                                                        *;
 | |
| ;*                                                                        *;
 | |
| ;*    Intel Corporation - ACPI Reference Code for the Baytrail            *;
 | |
| ;*    Family of Customer Reference Boards.                                *;
 | |
| ;*                                                                        *;
 | |
| ;*                                                                        *;
 | |
| ;*    Copyright (c) 2012  - 2014, Intel Corporation. All rights reserved    *;
 | |
| ;
 | |
| ; This program and the accompanying materials are licensed and made available under
 | |
| ; the terms and conditions of the BSD License that accompanies this distribution.
 | |
| ; The full text of the license may be found at
 | |
| ; http://opensource.org/licenses/bsd-license.php.
 | |
| ;
 | |
| ; THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
 | |
| ; WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
 | |
| ;
 | |
| ;*                                                                        *;
 | |
| ;*                                                                        *;
 | |
| ;**************************************************************************/
 | |
| Device (PEPD)
 | |
| {
 | |
|   Name (_HID, "INT3396")
 | |
|   Name(_CID, 0x800dd041)
 | |
|   Name (_UID, 0x1)
 | |
| 
 | |
|   // Indicates if the platform PEP has loaded
 | |
|   Name(PEPP, Zero)
 | |
| 
 | |
|   // Devices score-boarded by the PEP, Rev0 format
 | |
|   Name (DEVS, Package() {0})
 | |
| 
 | |
|   // Devices score-boarded by the PEP, Rev1 format
 | |
|   Name(DEVX, Package()
 | |
|   {
 | |
|     Package () {"\\_SB.PCI0.XHC1", 0x1},
 | |
|     Package () {"\\_SB.PCI0.EHC1", 0x1},
 | |
|     Package () {"\\_SB.PCI0.GFX0", 0x1},
 | |
|     Package () {"\\_SB.PCI0.GFX0.ISP0", 0x1},
 | |
|     Package () {"\\_SB.PCI0.SEC0", 0x1},
 | |
|     Package () {"\\_SB.I2C1", 0x1},
 | |
|     Package () {"\\_SB.I2C2", 0x1},
 | |
|     Package () {"\\_SB.I2C3", 0x1},
 | |
|     Package () {"\\_SB.I2C4", 0x1},
 | |
|     Package () {"\\_SB.I2C5", 0x1},
 | |
|     Package () {"\\_SB.I2C6", 0x1},
 | |
|     Package () {"\\_SB.I2C7", 0x1},
 | |
|     Package () {"\\_SB.SDHA", 0x1},
 | |
|     Package () {"\\_SB.SDHB", 0x1},
 | |
|     Package () {"\\_SB.SDHC", 0x1},
 | |
|     Package () {"\\_SB.SPI1", 0x1},
 | |
|     Package () {"\\_SB.URT1", 0x1},
 | |
|     Package () {"\\_SB.URT2", 0x1},
 | |
|   })
 | |
|   // Crashdump device package
 | |
|   Name(CDMP, Package(2) {})
 | |
|   // Device dependency for uPEP
 | |
|   Name(DEVY, Package()
 | |
|   {
 | |
|     Package() {"\\_PR.CPU0", 0x1, Package() {Package() {0xFF, 0}}},
 | |
|     Package() {"\\_PR.CPU1", 0x1, Package() {Package() {0xFF, 0}}},
 | |
|     Package() {"\\_PR.CPU2", 0x1, Package() {Package() {0xFF, 0}}},
 | |
|     Package() {"\\_PR.CPU3", 0x1, Package() {Package() {0xFF, 0}}},
 | |
|     Package() {"\\_SB.I2C1", 0x1, Package() {Package() {0xFF,3}}},
 | |
|     Package() {"\\_SB.I2C2", 0x1, Package() {Package() {0xFF,3}}},
 | |
|     Package() {"\\_SB.I2C3", 0x1, Package() {Package() {0xFF,3}}},
 | |
|     Package() {"\\_SB.I2C4", 0x1, Package() {Package() {0xFF,3}}},
 | |
|     Package() {"\\_SB.I2C5", 0x1, Package() {Package() {0xFF,3}}},
 | |
|     Package() {"\\_SB.I2C6", 0x1, Package() {Package() {0xFF,3}}},
 | |
|     Package() {"\\_SB.I2C7", 0x1, Package() {Package() {0xFF,3}}},
 | |
|     Package() {"\\_SB.PCI0.GFX0", 0x1, Package() {Package() {0xFF,3}}},
 | |
|     Package() {"\\_SB.PCI0.SEC0", 0x1, Package() {Package() {0xFF,3}}},
 | |
|     Package() {"\\_SB.PCI0.XHC1", 0x1, Package() {Package() {0xFF,3}}},
 | |
|     Package() {"\\_SB.PCI0.GFX0.ISP0", 0x1, Package() {Package() {0xFF,3}}},
 | |
|     Package() {"\\_SB.LPEA", 0x1, Package() {Package() {0x0,3}, Package() {0x1,0}, Package() {0x2,3}, Package() {0x3,3}}},
 | |
|     Package() {"\\_SB.SDHA", 0x1, Package() {Package() {0xFF,3}}},
 | |
|     Package() {"\\_SB.SDHB", 0x1, Package() {Package() {0xFF,3}}},
 | |
|     Package() {"\\_SB.SDHC", 0x1, Package() {Package() {0xFF,3}}},
 | |
|     Package() {"\\_SB.SPI1", 0x1, Package() {Package() {0xFF,3}}},
 | |
|     Package() {"\\_SB.URT1", 0x1, Package() {Package() {0xFF,3}}},
 | |
|     Package() {"\\_SB.URT2", 0x1, Package() {Package() {0xFF,3}}}
 | |
|   })
 | |
|   // BCCD crashdump information
 | |
|   Name(BCCD, Package()
 | |
|   {
 | |
|     Package()
 | |
|     {
 | |
|       "\\_SB.SDHA",
 | |
|       Package()
 | |
|       {
 | |
|         Package() { Package() {0, 32, 0,  3, 0xFFFFFFFFFFFFFFFF}, Package() {0xFFFFFFFC, 0x0, 0x4}, 0}
 | |
|       }
 | |
|     }
 | |
|   })
 | |
| 
 | |
|   Method(_STA, 0x0, NotSerialized)
 | |
|   {
 | |
|     Return(0xf)
 | |
|   }
 | |
| 
 | |
|   Method(_DSM, 0x4, Serialized)
 | |
|   {
 | |
|     If(LEqual(Arg0,ToUUID("B8FEBFE0-BAF8-454b-AECD-49FB91137B21")))
 | |
|     {
 | |
| 
 | |
|       // Number of fn IDs supported
 | |
|       If(LEqual(Arg2, Zero))
 | |
|       {
 | |
|         Return(Buffer(One)
 | |
|         {
 | |
|           0xf
 | |
|         })
 | |
|       }
 | |
| 
 | |
|       // Pep presence
 | |
|       If(LEqual(Arg2, One))
 | |
|       {
 | |
|         Store(0x1, PEPP)
 | |
|         Return(0xf)
 | |
|       }
 | |
| 
 | |
|       // Mitigation devices
 | |
|       If(LEqual(Arg2, 0x2))
 | |
|       {
 | |
|         If(LEqual(Arg1, 0x0))
 | |
|         {
 | |
|           // Rev0
 | |
|           Return(DEVS)
 | |
|         }
 | |
|         If(LEqual(Arg1, 0x1))
 | |
|         {
 | |
|           // Rev1
 | |
|           Return(DEVX)
 | |
|         }
 | |
|       }
 | |
| 
 | |
|       // Crashdump device data
 | |
|       If(LEqual(Arg2, 0x3))
 | |
|       {
 | |
|         Store("\\_SB.SDHA", Index(CDMP,0))
 | |
|         Store(EM1A, Index(CDMP,1))
 | |
|         Return(CDMP)
 | |
|       }
 | |
|     }
 | |
|     // New UUID for built-in uPEP
 | |
|     If(LEqual(Arg0,ToUUID("C4EB40A0-6CD2-11E2-BCFD-0800200C9A66")))
 | |
|     {
 | |
| 
 | |
|       // Number of fn IDs supported
 | |
|       If(LEqual(Arg2, Zero))
 | |
|       {
 | |
|         Return(Buffer(One)
 | |
|         {
 | |
|           0x7
 | |
|         })
 | |
|       }
 | |
|       // LPI device dependencies
 | |
|       If(LEqual(Arg2, 0x1))
 | |
|       {
 | |
|         Return(DEVY)
 | |
|       }
 | |
|       // Crashdump device data
 | |
|       If(LEqual(Arg2, 0x2))
 | |
|       {
 | |
|         Store(EM1A, Local0)
 | |
|         Add(Local0, 0x84, Local0)
 | |
|         Store(Local0, Index(DerefOf(Index(DerefOf(Index(DerefOf(Index(DerefOf(Index(BCCD, Zero, )), One, )), Zero, )), Zero, )), 0x4, ))
 | |
|         Return(BCCD)
 | |
|       }
 | |
|     }
 | |
| 
 | |
|     Return(One)
 | |
|   }
 | |
| }
 | |
| 
 | |
| //
 | |
| // eMMC 4.41
 | |
| //
 | |
| Device(SDHA)
 | |
| {
 | |
|   Name (_ADR, 0)
 | |
|   Name (_HID, "80860F14")
 | |
|   Name (_CID, "PNP0D40")
 | |
|   Name (_DDN, "Intel(R) eMMC Controller - 80860F14")
 | |
|   Name (_UID, 1)
 | |
|   Name(_DEP, Package(0x1)
 | |
|   {
 | |
|     PEPD
 | |
|   })
 | |
| 
 | |
|   Name (RBF1, ResourceTemplate ()
 | |
|   {
 | |
|     Memory32Fixed (ReadWrite, 0x00000000, 0x00001000, BAR0)
 | |
|     Interrupt (ResourceConsumer, Level, ActiveLow, Exclusive, , , ) {45}  // eMMC 4.41 IRQ
 | |
|   })
 | |
| 
 | |
|   Method (_CRS, 0x0, NotSerialized)
 | |
|   {
 | |
|     // Update the Base address for BAR0 of eMMC 4.41
 | |
|     CreateDwordField(^RBF1, ^BAR0._BAS, B0B1)
 | |
|     CreateDwordField(^RBF1, ^BAR0._LEN, B0L1)
 | |
|     Store(eM0A, B0B1)
 | |
|     Store(eM0L, B0L1)
 | |
|     Return (RBF1)
 | |
|   }
 | |
|   Method (_STA, 0x0, NotSerialized)
 | |
|   {
 | |
|     //
 | |
|     // PCIM>> 0:ACPI mode            1:PCI mode
 | |
|     // SD1D>> 0:eMMC 4.41 enable     1:eMMC 4.41 disable
 | |
|     //
 | |
|     If (LAnd(LEqual(PCIM, 0), LEqual(SD1D, 0)))
 | |
|     {
 | |
|       Return (0xF)
 | |
|     }
 | |
|     Else
 | |
|     {
 | |
|       Return (0x0)
 | |
|     }
 | |
|   }
 | |
| 
 | |
| 
 | |
|   Method (_PS3, 0, NotSerialized)
 | |
|   {
 | |
|     OR(PSAT, 0x00000003, PSAT)
 | |
|     OR(PSAT, 0X00000000, PSAT)
 | |
|     //
 | |
|     // If not B1, still keep 2 ms w/a
 | |
|     //
 | |
|     If(LLess(SOCS, 0x03))
 | |
|     {
 | |
|       Sleep(2)
 | |
|     }
 | |
|   }
 | |
|   Method (_PS0, 0, NotSerialized)
 | |
|   {
 | |
|     And(PSAT, 0xfffffffC, PSAT)
 | |
|     OR(PSAT, 0X00000000, PSAT)
 | |
|     //
 | |
|     // If not B1, still keep 2 ms w/a
 | |
|     //
 | |
|     If(LLess(SOCS, 0x03))
 | |
|     {
 | |
|       Sleep(2)
 | |
|     }
 | |
|   }
 | |
| 
 | |
|   OperationRegion (KEYS, SystemMemory, eM1A, 0x100)
 | |
|   Field (KEYS, DWordAcc, NoLock, WriteAsZeros)
 | |
|   {
 | |
|     Offset (0x84),
 | |
|            PSAT,  32
 | |
|   }
 | |
| 
 | |
|          Method (_DIS, 0x0, NotSerialized)
 | |
|   {
 | |
|     //Adding dummy disable methods for device EMM0
 | |
|   }
 | |
| 
 | |
|   Device (EMMD)
 | |
|   {
 | |
|     Name (_ADR, 0x00000008) // Slot 0, Function 8
 | |
|     Method (_RMV, 0, NotSerialized)
 | |
|     {
 | |
|       Return (0x0)
 | |
|     }
 | |
|   }
 | |
| }
 | |
| 
 | |
| 
 | |
| //
 | |
| // eMMC 4.5
 | |
| //
 | |
| Device(SDHD)
 | |
| {
 | |
|   Name (_ADR, 0)
 | |
|   Name (_HID, "80860F14")
 | |
|   Name (_CID, "PNP0D40")
 | |
|   Name (_DDN, "Intel(R) eMMC Controller - 80860F14")
 | |
|   Name (_UID, 1)
 | |
|   Name(_DEP, Package(0x1)
 | |
|   {
 | |
|     PEPD
 | |
|   })
 | |
| 
 | |
|   Name (RBF1, ResourceTemplate ()
 | |
|   {
 | |
|     Memory32Fixed (ReadWrite, 0x00000000, 0x00001000, BAR0)
 | |
|     Interrupt (ResourceConsumer, Level, ActiveLow, Exclusive, , , ) {44}  // eMMC 4.5 IRQ
 | |
|   })
 | |
|   Method (_CRS, 0x0, NotSerialized)
 | |
|   {
 | |
|     CreateDwordField(^RBF1, ^BAR0._BAS, B0B1)
 | |
|     CreateDwordField(^RBF1, ^BAR0._LEN, B0L1)
 | |
|     Store(eM0A, B0B1)
 | |
|     Store(eM0L, B0L1)
 | |
|     Return (RBF1)
 | |
|   }
 | |
|   Method (_STA, 0x0, NotSerialized)
 | |
|   {
 | |
|     //
 | |
|     // PCIM>> 0:ACPI mode           1:PCI mode
 | |
|     // HSID>> 0:eMMC 4.5 enable     1:eMMC 4.5 disable
 | |
|     //
 | |
|     If (LAnd(LEqual(PCIM, 0), LEqual(HSID, 0)))
 | |
|     {
 | |
|       Return (0xF)
 | |
|     }
 | |
|     Else
 | |
|     {
 | |
|       Return (0x0)
 | |
|     }
 | |
|   }
 | |
| 
 | |
| 
 | |
|   Method (_PS3, 0, NotSerialized)
 | |
|   {
 | |
|     OR(PSAT, 0x00000003, PSAT)
 | |
|     OR(PSAT, 0X00000000, PSAT)
 | |
|     //
 | |
|     // If not B1, still keep 2 ms w/a
 | |
|     //
 | |
|     If(LLess(SOCS, 0x03))
 | |
|     {
 | |
|       Sleep(2)
 | |
|     }
 | |
|   }
 | |
|   Method (_PS0, 0, NotSerialized)
 | |
|   {
 | |
|     And(PSAT, 0xfffffffC, PSAT)
 | |
|     OR(PSAT, 0X00000000, PSAT)
 | |
|     //
 | |
|     // If not B1, still keep 2 ms w/a
 | |
|     //
 | |
|     If(LLess(SOCS, 0x03))
 | |
|     {
 | |
|       Sleep(2)
 | |
|     }
 | |
|   }
 | |
| 
 | |
|   OperationRegion (KEYS, SystemMemory, eM1A, 0x100)
 | |
|   Field (KEYS, DWordAcc, NoLock, WriteAsZeros)
 | |
|   {
 | |
|     Offset (0x84),
 | |
|            PSAT,  32
 | |
|   }
 | |
| 
 | |
|          Method (_DIS, 0x0, NotSerialized)
 | |
|   {
 | |
|     //Adding dummy disable methods for device EMM0
 | |
|   }
 | |
| 
 | |
|   Device (EM45)
 | |
|   {
 | |
|     Name (_ADR, 0x00000008) // Slot 0, Function 8
 | |
|     Method (_RMV, 0, NotSerialized)
 | |
|     {
 | |
|       Return (0x0)
 | |
|     }
 | |
|   }
 | |
| }
 | |
| 
 | |
| 
 | |
| //
 | |
| // SDIO
 | |
| //
 | |
| Device(SDHB)
 | |
| {
 | |
|   Name (_ADR, 0)
 | |
|   Name (_HID, "INT33BB")
 | |
|   Name (_CID, "PNP0D40")
 | |
|   Name (_DDN, "Intel(R) SDIO Controller - 80860F15")
 | |
|   Name (_UID, 2)
 | |
|   Name (_HRV, 2)
 | |
|   Name(_DEP, Package(0x01)
 | |
|   {
 | |
|     PEPD
 | |
|   })
 | |
|   Name (PSTS, 0x0)
 | |
| 
 | |
|   Name (RBUF, ResourceTemplate ()
 | |
|   {
 | |
|     Memory32Fixed (ReadWrite, 0x00000000, 0x00001000, BAR0)
 | |
|     Interrupt (ResourceConsumer, Level, ActiveLow, Exclusive, , , ) {46}  // SDIO IRQ
 | |
|   })
 | |
| 
 | |
|   Method (_CRS, 0x0, NotSerialized)
 | |
|   {
 | |
| 
 | |
|     CreateDwordField(^RBUF, ^BAR0._BAS, B0BA)
 | |
|     CreateDwordField(^RBUF, ^BAR0._LEN, B0LN)
 | |
|     Store(SI0A, B0BA)
 | |
|     Store(SI0L, B0LN)
 | |
|     Return (RBUF)
 | |
|   }
 | |
|   Method (_STA, 0x0, NotSerialized)
 | |
|   {
 | |
|     If (LLessEqual(STEP, 0x04))
 | |
|     {
 | |
|       //A stepping
 | |
|       Store(SDMD, _HRV)
 | |
|     }
 | |
| 
 | |
|     //
 | |
|     // PCIM>> 0:ACPI mode           1:PCI mode
 | |
|     //
 | |
|     If (LEqual(PCIM, 1)) {
 | |
|       Return (0x0)
 | |
|     }
 | |
| 
 | |
|     If (LOr(LEqual(SI0A, 0), LEqual(SD2D, 1)))
 | |
|     {
 | |
|       Return (0x0)
 | |
|     }
 | |
|     Return (0xF)
 | |
|   }
 | |
|   Method (_DIS, 0x0, NotSerialized)
 | |
|   {
 | |
|     //Adding dummy disable methods for device EMM0
 | |
|   }
 | |
| 
 | |
|   Method (_PS3, 0, NotSerialized)
 | |
|   {
 | |
|     OR(PSAT, 0x00000003, PSAT)
 | |
|     OR(PSAT, 0X00000000, PSAT)
 | |
|   }
 | |
|   Method (_PS0, 0, NotSerialized)
 | |
|   {
 | |
|     And(PSAT, 0xfffffffC, PSAT)
 | |
|     OR(PSAT, 0X00000000, PSAT)
 | |
| 
 | |
|     if(LEqual(\_SB.SDHB.PSTS,0x0))
 | |
|     {
 | |
|       if(LEqual (\_SB.GPO2.AVBL, 1))
 | |
|       {
 | |
|         Store( 0x01, \_SB.GPO2.WFD3 ) // WL_WIFI_REQ_ON = 1 put the device to normal state
 | |
|         Store( 0x01, \_SB.SDHB.PSTS)  // indicates that the device powered ON
 | |
|       }
 | |
|     }
 | |
| 
 | |
| 
 | |
|   }
 | |
|   OperationRegion (KEYS, SystemMemory, SI1A, 0x100)
 | |
|   Field (KEYS, DWordAcc, NoLock, WriteAsZeros)
 | |
|   {
 | |
|     Offset (0x84),
 | |
|            PSAT,   32
 | |
|   }
 | |
| 
 | |
| 
 | |
|          Device (BRCM)
 | |
|   {
 | |
|     Name (_ADR, 0x01)                 //SlotNumber + Function
 | |
|     Name (_DEP, Package() {\_SB.GPO2})
 | |
| 
 | |
|     Method (_RMV, 0, NotSerialized)
 | |
|     {
 | |
|       Return (0x0)
 | |
|     }
 | |
|     Name (_PRW, Package() {0, 0})
 | |
|     Name (_S4W, 2)
 | |
| 
 | |
|     Method (_CRS, 0, Serialized)
 | |
|     {
 | |
|       Name (RBUF, ResourceTemplate ()
 | |
|       {
 | |
|         Interrupt (ResourceConsumer, Edge, ActiveHigh, ExclusiveAndWake, , , ) {73}
 | |
|       })
 | |
|       Return (RBUF)
 | |
|     }
 | |
| 
 | |
|     Method (_PS3, 0, NotSerialized)
 | |
|     {
 | |
|       if(LEqual (\_SB.GPO2.AVBL, 1))
 | |
|       {
 | |
|         Store( 0x00, \_SB.GPO2.WFD3 ) // WL_WIFI_REQ_ON = 0 puts the device in reset state
 | |
|         Store( 0x00, \_SB.SDHB.PSTS) //Indicates that the device is powered off
 | |
|       }
 | |
| 
 | |
|     }
 | |
|     Method (_PS0, 0, NotSerialized)
 | |
|     {
 | |
|       if(LEqual(\_SB.SDHB.PSTS,0x0))
 | |
|       {
 | |
|         if(LEqual (\_SB.GPO2.AVBL, 1))
 | |
|         {
 | |
|           Store( 0x01, \_SB.GPO2.WFD3 ) // WL_WIFI_REQ_ON = 1 put the device to normal state
 | |
|           Store( 0x01, \_SB.SDHB.PSTS)     // indicates that the device powered ON
 | |
|         }
 | |
|       }
 | |
|     }
 | |
|   } // Device (BRCM)
 | |
|   //
 | |
|   // Secondary Broadcom WIFI function
 | |
|   //
 | |
|   Device(BRC2)
 | |
|   {
 | |
|     Name(_ADR, 0x2) // function 2
 | |
|     Name(_STA, 0xf)
 | |
|     //
 | |
|     // The device is not removable. This must be a method.
 | |
|     //
 | |
|     Method(_RMV, 0x0, NotSerialized)
 | |
|     {
 | |
|       Return(0x0)
 | |
|     }
 | |
| 
 | |
|     //
 | |
|     // Describe a vendor-defined connection between this device and the
 | |
|     // primary wifi device
 | |
|     //
 | |
| 
 | |
|     Method(_CRS)
 | |
|     {
 | |
|       Name(NAM, Buffer() {"\\_SB.SDHB.BRCM"})
 | |
|       Name(SPB, Buffer()
 | |
|       {
 | |
|         0x8E,       // SPB Descriptor
 | |
|         0x18, 0x00, // Length including NAM above
 | |
|         0x01,       // +0x00 SPB Descriptor Revision
 | |
|         0x00,       // +0x01 Resource Source Index
 | |
|         0xc0,       // +0x02 Bus type - vendor defined
 | |
|         0x02,       // +0x03 Consumer + controller initiated
 | |
|         0x00, 0x00, // +0x04 Type specific flags
 | |
|         0x01,       // +0x06 Type specific revision
 | |
|         0x00, 0x00  // +0x07 type specific data length
 | |
|         // +0x09 - 0xf bytes for NULL-terminated NAM
 | |
|         // Length = 0x18
 | |
|       })
 | |
| 
 | |
|       Name(END, Buffer() {0x79, 0x00})
 | |
|       Concatenate(SPB, NAM, Local0)
 | |
|       Concatenate(Local0, END, Local1)
 | |
|       Return(Local1)
 | |
|     }
 | |
|   }
 | |
| 
 | |
| }
 | |
| 
 | |
| //
 | |
| // SD Card
 | |
| //
 | |
| Device(SDHC)
 | |
| {
 | |
|   Name (_ADR, 0)
 | |
|   Name (_HID, "80860F16")
 | |
|   Name (_CID, "PNP0D40")
 | |
|   Name (_DDN, "Intel(R) SD Card Controller - 80860F16")
 | |
|   Name (_UID, 3)
 | |
|   Name(_DEP, Package(0x01)
 | |
|   {
 | |
|     PEPD
 | |
|   })
 | |
|   Name (RBUF, ResourceTemplate ()
 | |
|   {
 | |
|     Memory32Fixed (ReadWrite, 0x00000000, 0x00001000, BAR0)
 | |
|     Interrupt (ResourceConsumer, Level, ActiveLow, Exclusive, , , ) {47}  // SD Card IRQ
 | |
|   })
 | |
|   Method (_CRS, 0x0, NotSerialized)
 | |
|   {
 | |
|     CreateDwordField(^RBUF, ^BAR0._BAS, B0BA)
 | |
|     CreateDwordField(^RBUF, ^BAR0._LEN, B0LN)
 | |
|     Store(SD0A, B0BA)
 | |
|     Store(SD0L, B0LN)
 | |
|     Return (RBUF)
 | |
|   }
 | |
|   Method (_STA, 0x0, NotSerialized)
 | |
|   {
 | |
|     //
 | |
|     // PCIM>> 0:ACPI mode           1:PCI mode
 | |
|     //
 | |
|     If (LEqual(PCIM, 1)) {
 | |
|       Return (0x0)
 | |
|     }
 | |
| 
 | |
|     If (LOr(LEqual(SD0A, 0), LEqual(SD3D, 1)))
 | |
|     {
 | |
|       Return (0x0)
 | |
|     }
 | |
|     Return (0xF)
 | |
|   }
 | |
| 
 | |
|   Method (_PS3, 0, NotSerialized)
 | |
|   {
 | |
|     OR(PSAT, 0x00000003, PSAT)
 | |
|     OR(PSAT, 0X00000000, PSAT)
 | |
|   }
 | |
|   Method (_PS0, 0, NotSerialized)
 | |
|   {
 | |
|     And(PSAT, 0xfffffffC, PSAT)
 | |
|     OR(PSAT, 0X00000000, PSAT)
 | |
|   }
 | |
|   OperationRegion (KEYS, SystemMemory, SD1A, 0x100)
 | |
|   Field (KEYS, DWordAcc, NoLock, WriteAsZeros)
 | |
|   {
 | |
|     Offset (0x84),
 | |
|            PSAT,   32
 | |
|   }
 | |
| 
 | |
|   Device (CARD)
 | |
|   {
 | |
|     Name (_ADR, 0x00000008)
 | |
|     Method(_RMV, 0x0, NotSerialized)
 | |
|     {
 | |
|       // SDRM = 0 non-removable;
 | |
|       If (LEqual(SDRM, 0))
 | |
|       {
 | |
|         Return (0)
 | |
|       }
 | |
| 
 | |
|       Return (1)
 | |
|     }
 | |
|   }
 | |
| 
 | |
| }
 | |
| 
 |