2 Provide EFI_SIMPLE_FILE_SYSTEM_PROTOCOL instances on virtio-fs devices.
4 Copyright (C) 2020, Red Hat, Inc.
6 SPDX-License-Identifier: BSD-2-Clause-Patent
9 #include <Library/BaseLib.h> // AsciiStrCmp()
10 #include <Library/UefiBootServicesTableLib.h> // gBS
11 #include <Protocol/ComponentName2.h> // EFI_COMPONENT_NAME2_PROTOCOL
12 #include <Protocol/DriverBinding.h> // EFI_DRIVER_BINDING_PROTOCOL
15 // UEFI Driver Model protocol instances.
17 STATIC EFI_DRIVER_BINDING_PROTOCOL mDriverBinding
;
18 STATIC EFI_COMPONENT_NAME2_PROTOCOL mComponentName2
;
21 // UEFI Driver Model protocol member functions.
25 VirtioFsBindingSupported (
26 IN EFI_DRIVER_BINDING_PROTOCOL
*This
,
27 IN EFI_HANDLE ControllerHandle
,
28 IN EFI_DEVICE_PATH_PROTOCOL
*RemainingDevicePath OPTIONAL
31 return EFI_UNSUPPORTED
;
36 VirtioFsBindingStart (
37 IN EFI_DRIVER_BINDING_PROTOCOL
*This
,
38 IN EFI_HANDLE ControllerHandle
,
39 IN EFI_DEVICE_PATH_PROTOCOL
*RemainingDevicePath OPTIONAL
42 return EFI_DEVICE_ERROR
;
48 IN EFI_DRIVER_BINDING_PROTOCOL
*This
,
49 IN EFI_HANDLE ControllerHandle
,
50 IN UINTN NumberOfChildren
,
51 IN EFI_HANDLE
*ChildHandleBuffer OPTIONAL
54 return EFI_DEVICE_ERROR
;
59 VirtioFsGetDriverName (
60 IN EFI_COMPONENT_NAME2_PROTOCOL
*This
,
62 OUT CHAR16
**DriverName
65 if (AsciiStrCmp (Language
, "en") != 0) {
66 return EFI_UNSUPPORTED
;
68 *DriverName
= L
"Virtio Filesystem Driver";
74 VirtioFsGetControllerName (
75 IN EFI_COMPONENT_NAME2_PROTOCOL
*This
,
76 IN EFI_HANDLE ControllerHandle
,
77 IN EFI_HANDLE ChildHandle OPTIONAL
,
79 OUT CHAR16
**ControllerName
82 return EFI_UNSUPPORTED
;
86 // Entry point of this driver.
91 IN EFI_HANDLE ImageHandle
,
92 IN EFI_SYSTEM_TABLE
*SystemTable
97 mDriverBinding
.Supported
= VirtioFsBindingSupported
;
98 mDriverBinding
.Start
= VirtioFsBindingStart
;
99 mDriverBinding
.Stop
= VirtioFsBindingStop
;
100 mDriverBinding
.Version
= 0x10;
101 mDriverBinding
.ImageHandle
= ImageHandle
;
102 mDriverBinding
.DriverBindingHandle
= ImageHandle
;
104 mComponentName2
.GetDriverName
= VirtioFsGetDriverName
;
105 mComponentName2
.GetControllerName
= VirtioFsGetControllerName
;
106 mComponentName2
.SupportedLanguages
= "en";
108 Status
= gBS
->InstallMultipleProtocolInterfaces (&ImageHandle
,
109 &gEfiDriverBindingProtocolGuid
, &mDriverBinding
,
110 &gEfiComponentName2ProtocolGuid
, &mComponentName2
, NULL
);