]> git.proxmox.com Git - mirror_edk2.git/blame - OvmfPkg/PvScsiDxe/PvScsi.c
OvmfPkg/PvScsiDxe: Report name of driver
[mirror_edk2.git] / OvmfPkg / PvScsiDxe / PvScsi.c
CommitLineData
478c07d4
LA
1/** @file\r
2\r
3 This driver produces Extended SCSI Pass Thru Protocol instances for\r
4 pvscsi devices.\r
5\r
6 Copyright (C) 2020, Oracle and/or its affiliates.\r
7\r
8 SPDX-License-Identifier: BSD-2-Clause-Patent\r
9\r
10**/\r
11\r
ed08c571 12#include <Library/UefiLib.h>\r
478c07d4
LA
13#include <Uefi/UefiSpec.h>\r
14\r
ed08c571
LA
15//\r
16// Higher versions will be used before lower, 0x10-0xffffffef is the version\r
17// range for IHV (Indie Hardware Vendors)\r
18//\r
19#define PVSCSI_BINDING_VERSION 0x10\r
20\r
21//\r
22// Driver Binding\r
23//\r
24\r
25STATIC\r
26EFI_STATUS\r
27EFIAPI\r
28PvScsiDriverBindingSupported (\r
29 IN EFI_DRIVER_BINDING_PROTOCOL *This,\r
30 IN EFI_HANDLE ControllerHandle,\r
31 IN EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath OPTIONAL\r
32 )\r
33{\r
34 return EFI_UNSUPPORTED;\r
35}\r
36\r
37STATIC\r
38EFI_STATUS\r
39EFIAPI\r
40PvScsiDriverBindingStart (\r
41 IN EFI_DRIVER_BINDING_PROTOCOL *This,\r
42 IN EFI_HANDLE ControllerHandle,\r
43 IN EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath OPTIONAL\r
44 )\r
45{\r
46 return EFI_UNSUPPORTED;\r
47}\r
48\r
49STATIC\r
50EFI_STATUS\r
51EFIAPI\r
52PvScsiDriverBindingStop (\r
53 IN EFI_DRIVER_BINDING_PROTOCOL *This,\r
54 IN EFI_HANDLE ControllerHandle,\r
55 IN UINTN NumberOfChildren,\r
56 IN EFI_HANDLE *ChildHandleBuffer\r
57 )\r
58{\r
59 return EFI_UNSUPPORTED;\r
60}\r
61\r
62STATIC EFI_DRIVER_BINDING_PROTOCOL mPvScsiDriverBinding = {\r
63 &PvScsiDriverBindingSupported,\r
64 &PvScsiDriverBindingStart,\r
65 &PvScsiDriverBindingStop,\r
66 PVSCSI_BINDING_VERSION,\r
67 NULL, // ImageHandle, filled by EfiLibInstallDriverBindingComponentName2()\r
68 NULL // DriverBindingHandle, filled as well\r
69};\r
70\r
419b30d6
LA
71//\r
72// Component Name\r
73//\r
74\r
75STATIC EFI_UNICODE_STRING_TABLE mDriverNameTable[] = {\r
76 { "eng;en", L"PVSCSI Host Driver" },\r
77 { NULL, NULL }\r
78};\r
79\r
80STATIC EFI_COMPONENT_NAME_PROTOCOL mComponentName;\r
81\r
82STATIC\r
83EFI_STATUS\r
84EFIAPI\r
85PvScsiGetDriverName (\r
86 IN EFI_COMPONENT_NAME_PROTOCOL *This,\r
87 IN CHAR8 *Language,\r
88 OUT CHAR16 **DriverName\r
89 )\r
90{\r
91 return LookupUnicodeString2 (\r
92 Language,\r
93 This->SupportedLanguages,\r
94 mDriverNameTable,\r
95 DriverName,\r
96 (BOOLEAN)(This == &mComponentName) // Iso639Language\r
97 );\r
98}\r
99\r
100STATIC\r
101EFI_STATUS\r
102EFIAPI\r
103PvScsiGetDeviceName (\r
104 IN EFI_COMPONENT_NAME_PROTOCOL *This,\r
105 IN EFI_HANDLE DeviceHandle,\r
106 IN EFI_HANDLE ChildHandle,\r
107 IN CHAR8 *Language,\r
108 OUT CHAR16 **ControllerName\r
109 )\r
110{\r
111 return EFI_UNSUPPORTED;\r
112}\r
113\r
114STATIC EFI_COMPONENT_NAME_PROTOCOL mComponentName = {\r
115 &PvScsiGetDriverName,\r
116 &PvScsiGetDeviceName,\r
117 "eng" // SupportedLanguages, ISO 639-2 language codes\r
118};\r
119\r
120STATIC EFI_COMPONENT_NAME2_PROTOCOL mComponentName2 = {\r
121 (EFI_COMPONENT_NAME2_GET_DRIVER_NAME) &PvScsiGetDriverName,\r
122 (EFI_COMPONENT_NAME2_GET_CONTROLLER_NAME) &PvScsiGetDeviceName,\r
123 "en" // SupportedLanguages, RFC 4646 language codes\r
124};\r
125\r
478c07d4
LA
126//\r
127// Entry Point\r
128//\r
129\r
130EFI_STATUS\r
131EFIAPI\r
132PvScsiEntryPoint (\r
133 IN EFI_HANDLE ImageHandle,\r
134 IN EFI_SYSTEM_TABLE *SystemTable\r
135 )\r
136{\r
ed08c571
LA
137 return EfiLibInstallDriverBindingComponentName2 (\r
138 ImageHandle,\r
139 SystemTable,\r
140 &mPvScsiDriverBinding,\r
141 ImageHandle,\r
419b30d6
LA
142 &mComponentName,\r
143 &mComponentName2\r
ed08c571 144 );\r
478c07d4 145}\r