]> git.proxmox.com Git - mirror_edk2.git/blob - OvmfPkg/MptScsiDxe/MptScsi.c
581d3909b84d39cad550070370df06de17259821
[mirror_edk2.git] / OvmfPkg / MptScsiDxe / MptScsi.c
1 /** @file
2
3 This driver produces Extended SCSI Pass Thru Protocol instances for
4 LSI Fusion MPT SCSI devices.
5
6 Copyright (C) 2020, Oracle and/or its affiliates.
7
8 SPDX-License-Identifier: BSD-2-Clause-Patent
9
10 **/
11
12 #include <Library/UefiLib.h>
13 #include <Uefi/UefiSpec.h>
14
15 //
16 // Higher versions will be used before lower, 0x10-0xffffffef is the version
17 // range for IVH (Indie Hardware Vendors)
18 //
19 #define MPT_SCSI_BINDING_VERSION 0x10
20
21 //
22 // Driver Binding
23 //
24
25 STATIC
26 EFI_STATUS
27 EFIAPI
28 MptScsiControllerSupported (
29 IN EFI_DRIVER_BINDING_PROTOCOL *This,
30 IN EFI_HANDLE ControllerHandle,
31 IN EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath OPTIONAL
32 )
33 {
34 return EFI_UNSUPPORTED;
35 }
36
37 STATIC
38 EFI_STATUS
39 EFIAPI
40 MptScsiControllerStart (
41 IN EFI_DRIVER_BINDING_PROTOCOL *This,
42 IN EFI_HANDLE ControllerHandle,
43 IN EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath OPTIONAL
44 )
45 {
46 return EFI_UNSUPPORTED;
47 }
48
49 STATIC
50 EFI_STATUS
51 EFIAPI
52 MptScsiControllerStop (
53 IN EFI_DRIVER_BINDING_PROTOCOL *This,
54 IN EFI_HANDLE ControllerHandle,
55 IN UINTN NumberOfChildren,
56 IN EFI_HANDLE *ChildHandleBuffer
57 )
58 {
59 return EFI_UNSUPPORTED;
60 }
61
62 STATIC
63 EFI_DRIVER_BINDING_PROTOCOL mMptScsiDriverBinding = {
64 &MptScsiControllerSupported,
65 &MptScsiControllerStart,
66 &MptScsiControllerStop,
67 MPT_SCSI_BINDING_VERSION,
68 NULL, // ImageHandle, filled by EfiLibInstallDriverBindingComponentName2
69 NULL, // DriverBindingHandle, filled as well
70 };
71
72 //
73 // Entry Point
74 //
75
76 EFI_STATUS
77 EFIAPI
78 MptScsiEntryPoint (
79 IN EFI_HANDLE ImageHandle,
80 IN EFI_SYSTEM_TABLE *SystemTable
81 )
82 {
83 return EfiLibInstallDriverBindingComponentName2 (
84 ImageHandle,
85 SystemTable,
86 &mMptScsiDriverBinding,
87 ImageHandle, // The handle to install onto
88 NULL, // TODO Component name
89 NULL // TODO Component name
90 );
91 }