]> git.proxmox.com Git - mirror_edk2.git/commitdiff
OvmfPkg/MptScsiDxe: Install DriverBinding Protocol
authorNikita Leshenko <nikita.leshchenko@oracle.com>
Mon, 4 May 2020 21:05:57 +0000 (00:05 +0300)
committermergify[bot] <37929162+mergify[bot]@users.noreply.github.com>
Tue, 5 May 2020 20:43:02 +0000 (20:43 +0000)
In order to probe and connect to the MptScsi device we need this
protocol. Currently it does nothing.

Ref: https://bugzilla.tianocore.org/show_bug.cgi?id=2390
Signed-off-by: Nikita Leshenko <nikita.leshchenko@oracle.com>
Reviewed-by: Laszlo Ersek <lersek@redhat.com>
Reviewed-by: Liran Alon <liran.alon@oracle.com>
Message-Id: <20200504210607.144434-3-nikita.leshchenko@oracle.com>

OvmfPkg/MptScsiDxe/MptScsi.c
OvmfPkg/MptScsiDxe/MptScsiDxe.inf

index c6c8142dfde666e001bb639608c86d56604c9797..581d3909b84d39cad550070370df06de17259821 100644 (file)
@@ -9,8 +9,66 @@
 \r
 **/\r
 \r
+#include <Library/UefiLib.h>\r
 #include <Uefi/UefiSpec.h>\r
 \r
+//\r
+// Higher versions will be used before lower, 0x10-0xffffffef is the version\r
+// range for IVH (Indie Hardware Vendors)\r
+//\r
+#define MPT_SCSI_BINDING_VERSION 0x10\r
+\r
+//\r
+// Driver Binding\r
+//\r
+\r
+STATIC\r
+EFI_STATUS\r
+EFIAPI\r
+MptScsiControllerSupported (\r
+  IN EFI_DRIVER_BINDING_PROTOCOL            *This,\r
+  IN EFI_HANDLE                             ControllerHandle,\r
+  IN EFI_DEVICE_PATH_PROTOCOL               *RemainingDevicePath OPTIONAL\r
+  )\r
+{\r
+  return EFI_UNSUPPORTED;\r
+}\r
+\r
+STATIC\r
+EFI_STATUS\r
+EFIAPI\r
+MptScsiControllerStart (\r
+  IN EFI_DRIVER_BINDING_PROTOCOL            *This,\r
+  IN EFI_HANDLE                             ControllerHandle,\r
+  IN EFI_DEVICE_PATH_PROTOCOL               *RemainingDevicePath OPTIONAL\r
+  )\r
+{\r
+  return EFI_UNSUPPORTED;\r
+}\r
+\r
+STATIC\r
+EFI_STATUS\r
+EFIAPI\r
+MptScsiControllerStop (\r
+  IN EFI_DRIVER_BINDING_PROTOCOL            *This,\r
+  IN  EFI_HANDLE                            ControllerHandle,\r
+  IN  UINTN                                 NumberOfChildren,\r
+  IN  EFI_HANDLE                            *ChildHandleBuffer\r
+  )\r
+{\r
+  return EFI_UNSUPPORTED;\r
+}\r
+\r
+STATIC\r
+EFI_DRIVER_BINDING_PROTOCOL mMptScsiDriverBinding = {\r
+  &MptScsiControllerSupported,\r
+  &MptScsiControllerStart,\r
+  &MptScsiControllerStop,\r
+  MPT_SCSI_BINDING_VERSION,\r
+  NULL, // ImageHandle, filled by EfiLibInstallDriverBindingComponentName2\r
+  NULL, // DriverBindingHandle, filled as well\r
+};\r
+\r
 //\r
 // Entry Point\r
 //\r
@@ -22,5 +80,12 @@ MptScsiEntryPoint (
   IN EFI_SYSTEM_TABLE *SystemTable\r
   )\r
 {\r
-  return EFI_UNSUPPORTED;\r
+  return EfiLibInstallDriverBindingComponentName2 (\r
+           ImageHandle,\r
+           SystemTable,\r
+           &mMptScsiDriverBinding,\r
+           ImageHandle, // The handle to install onto\r
+           NULL, // TODO Component name\r
+           NULL // TODO Component name\r
+           );\r
 }\r
index b4006a7c2d97f8419474c90cf1d79f6308f6a7dc..53585068684f8b29aa852af9350abb498e503771 100644 (file)
@@ -24,3 +24,4 @@
 \r
 [LibraryClasses]\r
   UefiDriverEntryPoint\r
+  UefiLib\r