]> git.proxmox.com Git - mirror_edk2.git/commitdiff
OvmfPkg/PvScsiDxe: Install DriverBinding protocol
authorLiran Alon <liran.alon@oracle.com>
Sat, 28 Mar 2020 20:00:45 +0000 (23:00 +0300)
committermergify[bot] <37929162+mergify[bot]@users.noreply.github.com>
Mon, 30 Mar 2020 16:45:07 +0000 (16:45 +0000)
In order to probe and connect to the PvScsi device we need this
protocol. Currently it does nothing.

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

index 1ae4de9869c1e3e7e7b4926caa522b4ff744fcb3..77b28b326784284e84af999a3d6361cd4bd63c93 100644 (file)
@@ -9,8 +9,65 @@
 \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 IHV (Indie Hardware Vendors)\r
+//\r
+#define PVSCSI_BINDING_VERSION      0x10\r
+\r
+//\r
+// Driver Binding\r
+//\r
+\r
+STATIC\r
+EFI_STATUS\r
+EFIAPI\r
+PvScsiDriverBindingSupported (\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
+PvScsiDriverBindingStart (\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
+PvScsiDriverBindingStop (\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 EFI_DRIVER_BINDING_PROTOCOL mPvScsiDriverBinding = {\r
+  &PvScsiDriverBindingSupported,\r
+  &PvScsiDriverBindingStart,\r
+  &PvScsiDriverBindingStop,\r
+  PVSCSI_BINDING_VERSION,\r
+  NULL, // ImageHandle, filled by EfiLibInstallDriverBindingComponentName2()\r
+  NULL  // DriverBindingHandle, filled as well\r
+};\r
+\r
 //\r
 // Entry Point\r
 //\r
@@ -22,5 +79,12 @@ PvScsiEntryPoint (
   IN EFI_SYSTEM_TABLE *SystemTable\r
   )\r
 {\r
-  return EFI_UNSUPPORTED;\r
+  return EfiLibInstallDriverBindingComponentName2 (\r
+           ImageHandle,\r
+           SystemTable,\r
+           &mPvScsiDriverBinding,\r
+           ImageHandle,\r
+           NULL, // TODO Component name\r
+           NULL  // TODO Component name\r
+           );\r
 }\r
index 093cc0171338db445eb29bedbb673d0de660602b..d1d0e963f96df2f4d5ea8ca9846e0a56bb11cb8f 100644 (file)
@@ -25,3 +25,4 @@
 \r
 [LibraryClasses]\r
   UefiDriverEntryPoint\r
+  UefiLib\r