]> git.proxmox.com Git - mirror_edk2.git/commitdiff
OvmfPkg/LsiScsiDxe: Install the skeleton of driver binding
authorGary Lin <glin@suse.com>
Fri, 17 Jul 2020 06:11:21 +0000 (14:11 +0800)
committermergify[bot] <37929162+mergify[bot]@users.noreply.github.com>
Fri, 17 Jul 2020 20:51:55 +0000 (20:51 +0000)
Implement the dummy functions for EFI Driver Binding protocol.

v2: Remove "STATIC" from LsiScsiControllerSupported()

Cc: Jordan Justen <jordan.l.justen@intel.com>
Cc: Laszlo Ersek <lersek@redhat.com>
Cc: Ard Biesheuvel <ard.biesheuvel@arm.com>
Signed-off-by: Gary Lin <glin@suse.com>
Reviewed-by: Laszlo Ersek <lersek@redhat.com>
Message-Id: <20200717061130.8881-3-glin@suse.com>

OvmfPkg/LsiScsiDxe/LsiScsi.c
OvmfPkg/LsiScsiDxe/LsiScsi.h [new file with mode: 0644]
OvmfPkg/LsiScsiDxe/LsiScsiDxe.inf

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
diff --git a/OvmfPkg/LsiScsiDxe/LsiScsi.h b/OvmfPkg/LsiScsiDxe/LsiScsi.h
new file mode 100644 (file)
index 0000000..328bd28
--- /dev/null
@@ -0,0 +1,49 @@
+/** @file\r
+\r
+  Internal definitions for the LSI 53C895A SCSI driver, which produces\r
+  Extended SCSI Pass Thru Protocol instances for LSI 53C895A SCSI devices.\r
+\r
+  Copyright (C) 2020, SUSE LLC.\r
+\r
+  SPDX-License-Identifier: BSD-2-Clause-Patent\r
+\r
+**/\r
+\r
+#ifndef _LSI_SCSI_DXE_H_\r
+#define _LSI_SCSI_DXE_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
+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
+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
+#endif // _LSI_SCSI_DXE_H_\r
index 8b6dccaff3ebd5356a856059a7ea73e533e8b9c0..5cb15c4565492fd348f6a6b1bffcf5a5dcb88598 100644 (file)
 \r
 [Sources]\r
   LsiScsi.c\r
+  LsiScsi.h\r
 \r
 [Packages]\r
   MdePkg/MdePkg.dec\r
 \r
 [LibraryClasses]\r
   UefiDriverEntryPoint\r
+  UefiLib\r