]> git.proxmox.com Git - mirror_edk2.git/blob - OvmfPkg/MptScsiDxe/MptScsi.c
OvmfPkg/MptScsiDxe: Report name of driver
[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 // Component Name
74 //
75
76 STATIC
77 EFI_UNICODE_STRING_TABLE mDriverNameTable[] = {
78 { "eng;en", L"LSI Fusion MPT SCSI Driver" },
79 { NULL, NULL }
80 };
81
82 STATIC
83 EFI_COMPONENT_NAME_PROTOCOL mComponentName;
84
85 EFI_STATUS
86 EFIAPI
87 MptScsiGetDriverName (
88 IN EFI_COMPONENT_NAME_PROTOCOL *This,
89 IN CHAR8 *Language,
90 OUT CHAR16 **DriverName
91 )
92 {
93 return LookupUnicodeString2 (
94 Language,
95 This->SupportedLanguages,
96 mDriverNameTable,
97 DriverName,
98 (BOOLEAN)(This == &mComponentName) // Iso639Language
99 );
100 }
101
102 EFI_STATUS
103 EFIAPI
104 MptScsiGetDeviceName (
105 IN EFI_COMPONENT_NAME_PROTOCOL *This,
106 IN EFI_HANDLE DeviceHandle,
107 IN EFI_HANDLE ChildHandle,
108 IN CHAR8 *Language,
109 OUT CHAR16 **ControllerName
110 )
111 {
112 return EFI_UNSUPPORTED;
113 }
114
115 STATIC
116 EFI_COMPONENT_NAME_PROTOCOL mComponentName = {
117 &MptScsiGetDriverName,
118 &MptScsiGetDeviceName,
119 "eng" // SupportedLanguages, ISO 639-2 language codes
120 };
121
122 STATIC
123 EFI_COMPONENT_NAME2_PROTOCOL mComponentName2 = {
124 (EFI_COMPONENT_NAME2_GET_DRIVER_NAME) &MptScsiGetDriverName,
125 (EFI_COMPONENT_NAME2_GET_CONTROLLER_NAME) &MptScsiGetDeviceName,
126 "en" // SupportedLanguages, RFC 4646 language codes
127 };
128
129 //
130 // Entry Point
131 //
132
133 EFI_STATUS
134 EFIAPI
135 MptScsiEntryPoint (
136 IN EFI_HANDLE ImageHandle,
137 IN EFI_SYSTEM_TABLE *SystemTable
138 )
139 {
140 return EfiLibInstallDriverBindingComponentName2 (
141 ImageHandle,
142 SystemTable,
143 &mMptScsiDriverBinding,
144 ImageHandle, // The handle to install onto
145 &mComponentName,
146 &mComponentName2
147 );
148 }