Implement the dummy functions for EFI Driver Binding protocol.

v2: Remove "STATIC" from LsiScsiControllerSupported()

Cc: Jordan Justen <jordan.l.jus...@intel.com>
Cc: Laszlo Ersek <ler...@redhat.com>
Cc: Ard Biesheuvel <ard.biesheu...@arm.com>
Signed-off-by: Gary Lin <g...@suse.com>
Reviewed-by: Laszlo Ersek <ler...@redhat.com>
---
 OvmfPkg/LsiScsiDxe/LsiScsi.c      | 72 ++++++++++++++++++++++++++++++-
 OvmfPkg/LsiScsiDxe/LsiScsi.h      | 49 +++++++++++++++++++++
 OvmfPkg/LsiScsiDxe/LsiScsiDxe.inf |  2 +
 3 files changed, 122 insertions(+), 1 deletion(-)
 create mode 100644 OvmfPkg/LsiScsiDxe/LsiScsi.h

diff --git a/OvmfPkg/LsiScsiDxe/LsiScsi.c b/OvmfPkg/LsiScsiDxe/LsiScsi.c
index 9c90941688ed..79a2af4fee73 100644
--- a/OvmfPkg/LsiScsiDxe/LsiScsi.c
+++ b/OvmfPkg/LsiScsiDxe/LsiScsi.c
@@ -9,8 +9,71 @@
 

 **/

 

+#include <Library/UefiLib.h>

 #include <Uefi/UefiSpec.h>

 

+#include "LsiScsi.h"

+

+//

+// Probe, start and stop functions of this driver, called by the DXE core for

+// specific devices.

+//

+// The following specifications document these interfaces:

+// - Driver Writer's Guide for UEFI 2.3.1 v1.01, 9 Driver Binding Protocol

+// - UEFI Spec 2.3.1 + Errata C, 10.1 EFI Driver Binding Protocol

+//

+

+EFI_STATUS

+EFIAPI

+LsiScsiControllerSupported (

+  IN EFI_DRIVER_BINDING_PROTOCOL *This,

+  IN EFI_HANDLE                  ControllerHandle,

+  IN EFI_DEVICE_PATH_PROTOCOL    *RemainingDevicePath OPTIONAL

+  )

+{

+  return EFI_UNSUPPORTED;

+}

+

+EFI_STATUS

+EFIAPI

+LsiScsiControllerStart (

+  IN EFI_DRIVER_BINDING_PROTOCOL *This,

+  IN EFI_HANDLE                  ControllerHandle,

+  IN EFI_DEVICE_PATH_PROTOCOL    *RemainingDevicePath OPTIONAL

+  )

+{

+  return EFI_SUCCESS;

+}

+

+EFI_STATUS

+EFIAPI

+LsiScsiControllerStop (

+  IN EFI_DRIVER_BINDING_PROTOCOL *This,

+  IN EFI_HANDLE                  ControllerHandle,

+  IN UINTN                       NumberOfChildren,

+  IN EFI_HANDLE                  *ChildHandleBuffer

+  )

+{

+  return EFI_SUCCESS;

+}

+

+//

+// The static object that groups the Supported() (ie. probe), Start() and

+// Stop() functions of the driver together. Refer to UEFI Spec 2.3.1 + Errata

+// C, 10.1 EFI Driver Binding Protocol.

+//

+STATIC

+EFI_DRIVER_BINDING_PROTOCOL gDriverBinding = {

+  &LsiScsiControllerSupported,

+  &LsiScsiControllerStart,

+  &LsiScsiControllerStop,

+  0x10, // Version, must be in [0x10 .. 0xFFFFFFEF] for IHV-developed drivers

+  NULL, // ImageHandle, to be overwritten by

+        // EfiLibInstallDriverBindingComponentName2() in LsiScsiEntryPoint()

+  NULL  // DriverBindingHandle, ditto

+};

+

+

 //

 // Entry point of this driver

 //

@@ -21,5 +84,12 @@ LsiScsiEntryPoint (
   IN EFI_SYSTEM_TABLE *SystemTable

   )

 {

-  return EFI_UNSUPPORTED;

+  return EfiLibInstallDriverBindingComponentName2 (

+           ImageHandle,

+           SystemTable,

+           &gDriverBinding,

+           ImageHandle, // The handle to install onto

+           NULL, // TODO Component name

+           NULL  // TODO Component name

+           );

 }

diff --git a/OvmfPkg/LsiScsiDxe/LsiScsi.h b/OvmfPkg/LsiScsiDxe/LsiScsi.h
new file mode 100644
index 000000000000..328bd289b8e8
--- /dev/null
+++ b/OvmfPkg/LsiScsiDxe/LsiScsi.h
@@ -0,0 +1,49 @@
+/** @file

+

+  Internal definitions for the LSI 53C895A SCSI driver, which produces

+  Extended SCSI Pass Thru Protocol instances for LSI 53C895A SCSI devices.

+

+  Copyright (C) 2020, SUSE LLC.

+

+  SPDX-License-Identifier: BSD-2-Clause-Patent

+

+**/

+

+#ifndef _LSI_SCSI_DXE_H_

+#define _LSI_SCSI_DXE_H_

+

+//

+// Probe, start and stop functions of this driver, called by the DXE core for

+// specific devices.

+//

+// The following specifications document these interfaces:

+// - Driver Writer's Guide for UEFI 2.3.1 v1.01, 9 Driver Binding Protocol

+// - UEFI Spec 2.3.1 + Errata C, 10.1 EFI Driver Binding Protocol

+//

+

+EFI_STATUS

+EFIAPI

+LsiScsiControllerSupported (

+  IN EFI_DRIVER_BINDING_PROTOCOL *This,

+  IN EFI_HANDLE                  ControllerHandle,

+  IN EFI_DEVICE_PATH_PROTOCOL    *RemainingDevicePath OPTIONAL

+  );

+

+EFI_STATUS

+EFIAPI

+LsiScsiControllerStart (

+  IN EFI_DRIVER_BINDING_PROTOCOL *This,

+  IN EFI_HANDLE                  ControllerHandle,

+  IN EFI_DEVICE_PATH_PROTOCOL    *RemainingDevicePath OPTIONAL

+  );

+

+EFI_STATUS

+EFIAPI

+LsiScsiControllerStop (

+  IN EFI_DRIVER_BINDING_PROTOCOL *This,

+  IN EFI_HANDLE                  ControllerHandle,

+  IN UINTN                       NumberOfChildren,

+  IN EFI_HANDLE                  *ChildHandleBuffer

+  );

+

+#endif // _LSI_SCSI_DXE_H_

diff --git a/OvmfPkg/LsiScsiDxe/LsiScsiDxe.inf 
b/OvmfPkg/LsiScsiDxe/LsiScsiDxe.inf
index 8b6dccaff3eb..5cb15c456549 100644
--- a/OvmfPkg/LsiScsiDxe/LsiScsiDxe.inf
+++ b/OvmfPkg/LsiScsiDxe/LsiScsiDxe.inf
@@ -18,9 +18,11 @@ [Defines]
 

 [Sources]

   LsiScsi.c

+  LsiScsi.h

 

 [Packages]

   MdePkg/MdePkg.dec

 

 [LibraryClasses]

   UefiDriverEntryPoint

+  UefiLib

-- 
2.25.1


-=-=-=-=-=-=-=-=-=-=-=-
Groups.io Links: You receive all messages sent to this group.

View/Reply Online (#62723): https://edk2.groups.io/g/devel/message/62723
Mute This Topic: https://groups.io/mt/75607029/21656
Group Owner: devel+ow...@edk2.groups.io
Unsubscribe: https://edk2.groups.io/g/devel/unsub  [arch...@mail-archive.com]
-=-=-=-=-=-=-=-=-=-=-=-

Reply via email to