3 This driver produces Extended SCSI Pass Thru Protocol instances for
6 Copyright (C) 2020, Oracle and/or its affiliates.
8 SPDX-License-Identifier: BSD-2-Clause-Patent
12 #include <Library/UefiLib.h>
13 #include <Uefi/UefiSpec.h>
16 // Higher versions will be used before lower, 0x10-0xffffffef is the version
17 // range for IHV (Indie Hardware Vendors)
19 #define PVSCSI_BINDING_VERSION 0x10
28 PvScsiDriverBindingSupported (
29 IN EFI_DRIVER_BINDING_PROTOCOL
*This
,
30 IN EFI_HANDLE ControllerHandle
,
31 IN EFI_DEVICE_PATH_PROTOCOL
*RemainingDevicePath OPTIONAL
34 return EFI_UNSUPPORTED
;
40 PvScsiDriverBindingStart (
41 IN EFI_DRIVER_BINDING_PROTOCOL
*This
,
42 IN EFI_HANDLE ControllerHandle
,
43 IN EFI_DEVICE_PATH_PROTOCOL
*RemainingDevicePath OPTIONAL
46 return EFI_UNSUPPORTED
;
52 PvScsiDriverBindingStop (
53 IN EFI_DRIVER_BINDING_PROTOCOL
*This
,
54 IN EFI_HANDLE ControllerHandle
,
55 IN UINTN NumberOfChildren
,
56 IN EFI_HANDLE
*ChildHandleBuffer
59 return EFI_UNSUPPORTED
;
62 STATIC EFI_DRIVER_BINDING_PROTOCOL mPvScsiDriverBinding
= {
63 &PvScsiDriverBindingSupported
,
64 &PvScsiDriverBindingStart
,
65 &PvScsiDriverBindingStop
,
66 PVSCSI_BINDING_VERSION
,
67 NULL
, // ImageHandle, filled by EfiLibInstallDriverBindingComponentName2()
68 NULL
// DriverBindingHandle, filled as well
75 STATIC EFI_UNICODE_STRING_TABLE mDriverNameTable
[] = {
76 { "eng;en", L
"PVSCSI Host Driver" },
80 STATIC EFI_COMPONENT_NAME_PROTOCOL mComponentName
;
86 IN EFI_COMPONENT_NAME_PROTOCOL
*This
,
88 OUT CHAR16
**DriverName
91 return LookupUnicodeString2 (
93 This
->SupportedLanguages
,
96 (BOOLEAN
)(This
== &mComponentName
) // Iso639Language
103 PvScsiGetDeviceName (
104 IN EFI_COMPONENT_NAME_PROTOCOL
*This
,
105 IN EFI_HANDLE DeviceHandle
,
106 IN EFI_HANDLE ChildHandle
,
108 OUT CHAR16
**ControllerName
111 return EFI_UNSUPPORTED
;
114 STATIC EFI_COMPONENT_NAME_PROTOCOL mComponentName
= {
115 &PvScsiGetDriverName
,
116 &PvScsiGetDeviceName
,
117 "eng" // SupportedLanguages, ISO 639-2 language codes
120 STATIC EFI_COMPONENT_NAME2_PROTOCOL mComponentName2
= {
121 (EFI_COMPONENT_NAME2_GET_DRIVER_NAME
) &PvScsiGetDriverName
,
122 (EFI_COMPONENT_NAME2_GET_CONTROLLER_NAME
) &PvScsiGetDeviceName
,
123 "en" // SupportedLanguages, RFC 4646 language codes
133 IN EFI_HANDLE ImageHandle
,
134 IN EFI_SYSTEM_TABLE
*SystemTable
137 return EfiLibInstallDriverBindingComponentName2 (
140 &mPvScsiDriverBinding
,