summaryrefslogtreecommitdiff
path: root/Platform
diff options
context:
space:
mode:
authorzwei4 <david.wei@intel.com>2017-01-17 14:04:07 +0800
committerzwei4 <david.wei@intel.com>2017-01-17 14:04:07 +0800
commit27921733ae8943697330dd13b5486dbacd50698a (patch)
tree1bd8f55e57119e752a7c188e26d32298e1ac1a8b /Platform
parentd0d640c6fcd9647fa6fe2a8a09bcc65558a0884a (diff)
downloadedk2-platforms-27921733ae8943697330dd13b5486dbacd50698a.tar.xz
Enable SD card.
Fixed the issue that SD card cannot be detected by BIOS. Add SD host and device drivers. Signed-off-by: zwei4 <david.wei@intel.com> Cc: Mike Wu <mike.wu@intel.com> Cc: Benjamin You <benjamin.you@intel.com> Cc: Mang Guo <mang.guo@intel.com> Cc: Shifei Lu <shifeix.a.lu@intel.com> Cc: Ruth Li <ruth.li@intel.com>
Diffstat (limited to 'Platform')
-rw-r--r--Platform/BroxtonPlatformPkg/Common/PlatformSettings/PlatformDxe/Platform.c47
-rw-r--r--Platform/BroxtonPlatformPkg/Common/PlatformSettings/PlatformDxe/PlatformDxe.inf1
-rw-r--r--Platform/BroxtonPlatformPkg/PlatformDsc/Components.dsc4
-rw-r--r--Platform/BroxtonPlatformPkg/PlatformPkg.fdf3
4 files changed, 55 insertions, 0 deletions
diff --git a/Platform/BroxtonPlatformPkg/Common/PlatformSettings/PlatformDxe/Platform.c b/Platform/BroxtonPlatformPkg/Common/PlatformSettings/PlatformDxe/Platform.c
index e034e6ed82..02dcc27502 100644
--- a/Platform/BroxtonPlatformPkg/Common/PlatformSettings/PlatformDxe/Platform.c
+++ b/Platform/BroxtonPlatformPkg/Common/PlatformSettings/PlatformDxe/Platform.c
@@ -641,6 +641,50 @@ InitPlatformResolution (
PcdSet32S (PcdVideoVerticalResolution, PanelResolution[mSystemConfiguration.IgdFlatPanel].VerticalResolution);
}
+VOID
+OverrideSdCardPresence (
+ VOID
+ )
+{
+ UINT32 PciP2sbBar0RegOffset;
+ UINT32 P2sbMmioBar;
+ UINT32 Gpio177PadConfigDW0RegAdd;
+ UINT32 Gpio177RxState;
+
+ PciP2sbBar0RegOffset = (UINT32) MmPciAddress (
+ 0,
+ DEFAULT_PCI_BUS_NUMBER_SC,
+ PCI_DEVICE_NUMBER_P2SB,
+ PCI_FUNCTION_NUMBER_P2SB,
+ R_P2SB_BASE
+ );
+ //
+ // Read back P2SB MMIO BAR Base Addr
+ //
+ P2sbMmioBar = MmioRead32 (PciP2sbBar0RegOffset);
+ if (P2sbMmioBar == 0xFFFFFFFF) {
+ //
+ // P2SB has been hidden, read it from Pcd
+ //
+ P2sbMmioBar = PcdGet32 (PcdP2SBBaseAddress);
+ } else {
+ P2sbMmioBar &= B_P2SB_BAR_BA;
+ }
+
+ Gpio177PadConfigDW0RegAdd = P2SB_MMIO_ADDR (P2sbMmioBar, SOUTHWEST, 0x5D0);
+ Gpio177RxState = MmioRead32(Gpio177PadConfigDW0RegAdd) & BIT1;
+ DEBUG ((DEBUG_INFO, "Gpio177PadConfigDW0RegAdd: 0x%X\n", Gpio177PadConfigDW0RegAdd));
+ DEBUG ((DEBUG_INFO, "Gpio177RxState: 0x%X\n", Gpio177RxState));
+
+ if (Gpio177RxState == 0x00) {
+ SideBandAndThenOr32 (
+ 0xD6,
+ 0x0600 + 0x08,
+ 0xFFFFFFFF,
+ BIT5
+ );
+ };
+}
/**
This is the standard EFI driver point for the Driver. This
@@ -872,6 +916,9 @@ InitializePlatform (
&EfiExitBootServicesEvent
);
+
+ OverrideSdCardPresence();
+
return EFI_SUCCESS;
}
diff --git a/Platform/BroxtonPlatformPkg/Common/PlatformSettings/PlatformDxe/PlatformDxe.inf b/Platform/BroxtonPlatformPkg/Common/PlatformSettings/PlatformDxe/PlatformDxe.inf
index e00588170e..c2714a6ae9 100644
--- a/Platform/BroxtonPlatformPkg/Common/PlatformSettings/PlatformDxe/PlatformDxe.inf
+++ b/Platform/BroxtonPlatformPkg/Common/PlatformSettings/PlatformDxe/PlatformDxe.inf
@@ -127,6 +127,7 @@
gEfiBxtTokenSpaceGuid.PcdPmcGcrBaseAddress
gPlatformModuleTokenSpaceGuid.PcdPBTNDisableInterval
gEfiIntelFrameworkModulePkgTokenSpaceGuid.PcdFastPS2Detection
+ gEfiBxtTokenSpaceGuid.PcdP2SBBaseAddress
[Depex]
gEfiPciRootBridgeIoProtocolGuid AND
diff --git a/Platform/BroxtonPlatformPkg/PlatformDsc/Components.dsc b/Platform/BroxtonPlatformPkg/PlatformDsc/Components.dsc
index 53658cf795..0edcd98678 100644
--- a/Platform/BroxtonPlatformPkg/PlatformDsc/Components.dsc
+++ b/Platform/BroxtonPlatformPkg/PlatformDsc/Components.dsc
@@ -353,6 +353,10 @@
$(PLATFORM_SI_PACKAGE)/SouthCluster/Sdio/Dxe/MMC/MmcHostDxe/MmcHostDxe.inf
$(PLATFORM_SI_PACKAGE)/SouthCluster/Sdio/Dxe/MMC/MmcMediaDeviceDxe/MmcMediaDeviceDxe.inf
+
+ $(PLATFORM_SI_PACKAGE)/SouthCluster/Sdio/Dxe/SD/SdControllerDxe/SdControllerDxe.inf
+ $(PLATFORM_SI_PACKAGE)/SouthCluster/Sdio/Dxe/SD/SdMediaDeviceDxe/SdMediaDeviceDxe.inf
+
!if $(ACPI50_ENABLE) == TRUE
MdeModulePkg/Universal/SmmCommunicationBufferDxe/SmmCommunicationBufferDxe.inf
diff --git a/Platform/BroxtonPlatformPkg/PlatformPkg.fdf b/Platform/BroxtonPlatformPkg/PlatformPkg.fdf
index 0d9a087f3c..404efd1568 100644
--- a/Platform/BroxtonPlatformPkg/PlatformPkg.fdf
+++ b/Platform/BroxtonPlatformPkg/PlatformPkg.fdf
@@ -447,6 +447,9 @@ APRIORI DXE {
INF $(PLATFORM_SI_PACKAGE)/SouthCluster/Sdio/Dxe/MMC/MmcMediaDeviceDxe/MmcMediaDeviceDxe.inf
!endif
+ INF $(PLATFORM_SI_PACKAGE)/SouthCluster/Sdio/Dxe/SD/SdControllerDxe/SdControllerDxe.inf
+ INF $(PLATFORM_SI_PACKAGE)/SouthCluster/Sdio/Dxe/SD/SdMediaDeviceDxe/SdMediaDeviceDxe.inf
+
INF IntelFrameworkModulePkg/Universal/Acpi/AcpiS3SaveDxe/AcpiS3SaveDxe.inf
#