From 3fd9815ef932f7bd2f83d9914168ca3301e3a686 Mon Sep 17 00:00:00 2001
From: Marc Jones <marc.jones@scarletltd.com>
Date: Wed, 11 Jul 2018 16:13:13 -0600
Subject: [PATCH] edk2-SdMMcPciHcDxe: Add Bayhub support

Adds Bayhub support to the general SD driver.
Source has been provided by Bayhub.

BUG=109777514
TEST=Id and boot chromeos on the emmc.

Change-Id: I3f001f9021d9577720e2fe18e99d67eee17b6468
Signed-off-by: Marc Jones <marc.jones@scarletltd.com>
---
 MdeModulePkg/Bus/Pci/SdMmcPciHcDxe/EmmcDevice.c    |  8 +++-
 MdeModulePkg/Bus/Pci/SdMmcPciHcDxe/SdDevice.c      |  2 +-
 MdeModulePkg/Bus/Pci/SdMmcPciHcDxe/SdMmcPciHcDxe.c |  2 +-
 MdeModulePkg/Bus/Pci/SdMmcPciHcDxe/SdMmcPciHci.c   | 54 ++++++++++++++++++++--
 MdeModulePkg/Bus/Pci/SdMmcPciHcDxe/SdMmcPciHci.h   | 14 ++++++
 5 files changed, 74 insertions(+), 6 deletions(-)
 mode change 100755 => 100644 MdeModulePkg/Bus/Pci/SdMmcPciHcDxe/EmmcDevice.c

diff --git a/MdeModulePkg/Bus/Pci/SdMmcPciHcDxe/EmmcDevice.c b/MdeModulePkg/Bus/Pci/SdMmcPciHcDxe/EmmcDevice.c
old mode 100755
new mode 100644
index c5fd214..8b6e802
--- a/MdeModulePkg/Bus/Pci/SdMmcPciHcDxe/EmmcDevice.c
+++ b/MdeModulePkg/Bus/Pci/SdMmcPciHcDxe/EmmcDevice.c
@@ -51,6 +51,7 @@ EmmcReset (
   SdMmcCmdBlk.ResponseType = 0;
   SdMmcCmdBlk.CommandArgument = 0;
 
+
   gBS->Stall (1000);
 
   Status = SdMmcPassThruPassThru (PassThru, Slot, &Packet, NULL);
@@ -1125,7 +1126,12 @@ EmmcSetBusMode (
     //
     // Execute HS200 timing switch procedure
     //
-    Status = EmmcSwitchToHS200 (PciIo, PassThru, Slot, Rca, ClockFreq, BusWidth);
+	if (!VendorPciSupport(PciIo)){
+   	 	Status = EmmcSwitchToHS200 (PciIo, PassThru, Slot, Rca, ClockFreq, 4);
+		Status = EmmcSwitchBusWidth (PciIo, PassThru, Slot, Rca, FALSE, 8);
+	}else{
+		Status = EmmcSwitchToHS200 (PciIo, PassThru, Slot, Rca, ClockFreq, 8);
+		}
   } else {
     //
     // Execute High Speed timing switch procedure
diff --git a/MdeModulePkg/Bus/Pci/SdMmcPciHcDxe/SdDevice.c b/MdeModulePkg/Bus/Pci/SdMmcPciHcDxe/SdDevice.c
index 9e70de9..cc8924c 100644
--- a/MdeModulePkg/Bus/Pci/SdMmcPciHcDxe/SdDevice.c
+++ b/MdeModulePkg/Bus/Pci/SdMmcPciHcDxe/SdDevice.c
@@ -1085,7 +1085,7 @@ SdCardIdentification (
     return Status;
   }
 
-  if ((ControllerVer & 0xFF) == 2) {
+  if (((ControllerVer & 0xFF) == 2) || ((ControllerVer & 0xFF) == 3)) {
     S18r = TRUE;
   } else if (((ControllerVer & 0xFF) == 0) || ((ControllerVer & 0xFF) == 1)) {
     S18r = FALSE;
diff --git a/MdeModulePkg/Bus/Pci/SdMmcPciHcDxe/SdMmcPciHcDxe.c b/MdeModulePkg/Bus/Pci/SdMmcPciHcDxe/SdMmcPciHcDxe.c
index 23faec5..6cd2fc2 100644
--- a/MdeModulePkg/Bus/Pci/SdMmcPciHcDxe/SdMmcPciHcDxe.c
+++ b/MdeModulePkg/Bus/Pci/SdMmcPciHcDxe/SdMmcPciHcDxe.c
@@ -115,7 +115,7 @@ InitializeSdMmcPciHcDxe (
   )
 {
   EFI_STATUS           Status;
-
+  Print(L"Install SdMmcPciHcDxe Driver");
   Status = EfiLibInstallDriverBindingComponentName2 (
              ImageHandle,
              SystemTable,
diff --git a/MdeModulePkg/Bus/Pci/SdMmcPciHcDxe/SdMmcPciHci.c b/MdeModulePkg/Bus/Pci/SdMmcPciHcDxe/SdMmcPciHci.c
index aa75aa8..e59a9f5 100644
--- a/MdeModulePkg/Bus/Pci/SdMmcPciHcDxe/SdMmcPciHci.c
+++ b/MdeModulePkg/Bus/Pci/SdMmcPciHcDxe/SdMmcPciHci.c
@@ -741,7 +741,7 @@ SdMmcHcClockSupply (
   //
   // Set SDCLK Frequency Select and Internal Clock Enable fields in Clock Control register.
   //
-  if ((ControllerVer & 0xFF) == 2) {
+  if (((ControllerVer & 0xFF) == 2) || ((ControllerVer & 0xFF) == 3)) {
     ASSERT (Divisor <= 0x3FF);
     ClockCtrl = ((Divisor & 0xFF) << 8) | ((Divisor & 0x300) >> 2);
   } else if (((ControllerVer & 0xFF) == 0) || ((ControllerVer & 0xFF) == 1)) {
@@ -987,6 +987,15 @@ SdMmcHcInitPowerVoltage (
   //
   Status = SdMmcHcPowerControl (PciIo, Slot, MaxVoltage);
 
+  if (!VendorPciSupport(PciIo)){
+  HostCtrl2  = BIT3;
+  Status = SdMmcHcOrMmio (PciIo, Slot, SD_MMC_HC_HOST_CTRL2, sizeof (HostCtrl2), &HostCtrl2);
+  gBS->Stall (5000);
+  if (EFI_ERROR (Status)) {
+	return Status;
+  	}
+  }
+
   return Status;
 }
 
@@ -1037,15 +1046,24 @@ SdMmcHcInitHost (
   )
 {
   EFI_STATUS       Status;
+  
+  if (!VendorPciSupport(PciIo)){
+  Status = SdMmcHcInitPowerVoltage (PciIo, Slot, Capability);
+	  if (EFI_ERROR (Status)) {
+	    return Status;
+ 	 }
+  }
 
   Status = SdMmcHcInitClockFreq (PciIo, Slot, Capability);
   if (EFI_ERROR (Status)) {
     return Status;
   }
 
+  if (VendorPciSupport(PciIo)){
   Status = SdMmcHcInitPowerVoltage (PciIo, Slot, Capability);
-  if (EFI_ERROR (Status)) {
-    return Status;
+	  if (EFI_ERROR (Status)) {
+	    return Status;
+ 	 }
   }
 
   Status = SdMmcHcInitTimeoutCtrl (PciIo, Slot);
@@ -1929,3 +1947,33 @@ SdMmcWaitTrbResult (
   return EFI_TIMEOUT;
 }
 
+
+int VendorPciSupport(EFI_PCI_IO_PROTOCOL *PciIo)
+{
+  PCI_TYPE00	  Pci;
+
+  PciIo->Pci.Read (PciIo, EfiPciIoWidthUint32,		  
+				0, sizeof Pci / sizeof (UINT32), &Pci);
+  
+  Print(L"check device %04x:%04x\n", Pci.Hdr.VendorId, Pci.Hdr.DeviceId);
+
+  if (Pci.Hdr.VendorId != 0x1217)
+	  goto end;
+
+  switch (Pci.Hdr.DeviceId)
+  {
+	  case 0x8420:    //PCI_DEV_ID_SDS0
+	  case 0x8421:    //PCI_DEV_ID_SDS1
+	  case 0x8520:    //PCI_DEV_ID_FJ2
+	  case 0x8620:    //PCI_DEV_ID_SB0
+	  case 0x8621:    //PCI_DEV_ID_SB1
+		  return 0;
+	  default:
+		  break;
+  }
+
+end:
+  return -1;
+}
+
+
diff --git a/MdeModulePkg/Bus/Pci/SdMmcPciHcDxe/SdMmcPciHci.h b/MdeModulePkg/Bus/Pci/SdMmcPciHcDxe/SdMmcPciHci.h
index fb62758..9c42eb4 100644
--- a/MdeModulePkg/Bus/Pci/SdMmcPciHcDxe/SdMmcPciHci.h
+++ b/MdeModulePkg/Bus/Pci/SdMmcPciHcDxe/SdMmcPciHci.h
@@ -542,5 +542,19 @@ SdMmcHcInitHost (
   IN UINT8                  Slot,
   IN SD_MMC_HC_SLOT_CAP     Capability
   );
+/**
+Through Device ID and Vendor ID to decide if Controller should run as default 
+or special defined
+
+@param[in] PciIo          The PCI IO protocol instance.
+
+@retval 0            The host controller should run as special defined.
+@retval Others       The host controller should run as default.
+
+**/
+
+int 
+VendorPciSupport(EFI_PCI_IO_PROTOCOL *PciIo);
+
 
 #endif
-- 
2.7.4

