]> git.proxmox.com Git - mirror_edk2.git/blobdiff - OvmfPkg/LsiScsiDxe/LsiScsi.c
OvmfPkg/LsiScsiDxe: Install the skeleton of driver binding
[mirror_edk2.git] / OvmfPkg / LsiScsiDxe / LsiScsi.c
index 9c90941688edcd03fa0a24b869c591d2cbbe9873..79a2af4fee73e2ef09c83e9a9da1bdbc835fceec 100644 (file)
@@ -9,8 +9,71 @@
 \r
 **/\r
 \r
+#include <Library/UefiLib.h>\r
 #include <Uefi/UefiSpec.h>\r
 \r
+#include "LsiScsi.h"\r
+\r
+//\r
+// Probe, start and stop functions of this driver, called by the DXE core for\r
+// specific devices.\r
+//\r
+// The following specifications document these interfaces:\r
+// - Driver Writer's Guide for UEFI 2.3.1 v1.01, 9 Driver Binding Protocol\r
+// - UEFI Spec 2.3.1 + Errata C, 10.1 EFI Driver Binding Protocol\r
+//\r
+\r
+EFI_STATUS\r
+EFIAPI\r
+LsiScsiControllerSupported (\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
+EFI_STATUS\r
+EFIAPI\r
+LsiScsiControllerStart (\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_SUCCESS;\r
+}\r
+\r
+EFI_STATUS\r
+EFIAPI\r
+LsiScsiControllerStop (\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_SUCCESS;\r
+}\r
+\r
+//\r
+// The static object that groups the Supported() (ie. probe), Start() and\r
+// Stop() functions of the driver together. Refer to UEFI Spec 2.3.1 + Errata\r
+// C, 10.1 EFI Driver Binding Protocol.\r
+//\r
+STATIC\r
+EFI_DRIVER_BINDING_PROTOCOL gDriverBinding = {\r
+  &LsiScsiControllerSupported,\r
+  &LsiScsiControllerStart,\r
+  &LsiScsiControllerStop,\r
+  0x10, // Version, must be in [0x10 .. 0xFFFFFFEF] for IHV-developed drivers\r
+  NULL, // ImageHandle, to be overwritten by\r
+        // EfiLibInstallDriverBindingComponentName2() in LsiScsiEntryPoint()\r
+  NULL  // DriverBindingHandle, ditto\r
+};\r
+\r
+\r
 //\r
 // Entry point of this driver\r
 //\r
@@ -21,5 +84,12 @@ LsiScsiEntryPoint (
   IN EFI_SYSTEM_TABLE *SystemTable\r
   )\r
 {\r
-  return EFI_UNSUPPORTED;\r
+  return EfiLibInstallDriverBindingComponentName2 (\r
+           ImageHandle,\r
+           SystemTable,\r
+           &gDriverBinding,\r
+           ImageHandle, // The handle to install onto\r
+           NULL, // TODO Component name\r
+           NULL  // TODO Component name\r
+           );\r
 }\r