Skip to content

Commit

Permalink
Add virio keyboard device hooks
Browse files Browse the repository at this point in the history
This commit adds:
- missing virtio subsystem ID for input device
- PrepareVirtioKeyboardDevicePath() handler to boot manager library

Signed-off-by: Paweł Poławski <ppolawsk@redhat.com>
  • Loading branch information
elkoniu committed Nov 15, 2024
1 parent 843f0c1 commit 8d1e351
Show file tree
Hide file tree
Showing 2 changed files with 30 additions and 0 deletions.
1 change: 1 addition & 0 deletions OvmfPkg/Include/IndustryStandard/Virtio10.h
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@
// Subsystem Device IDs (to be) introduced in VirtIo 1.0
//
#define VIRTIO_SUBSYSTEM_GPU_DEVICE 16
#define VIRTIO_SUBSYSTEM_INPUT 18
//
// Subsystem Device IDs from the VirtIo spec at git commit 87fa6b5d8155;
// <https://github.com/oasis-tcs/virtio-spec/tree/87fa6b5d8155>.
Expand Down
29 changes: 29 additions & 0 deletions OvmfPkg/Library/PlatformBootManagerLib/BdsPlatform.c
Original file line number Diff line number Diff line change
Expand Up @@ -1058,6 +1058,28 @@ PrepareVirtioSerialDevicePath (
return EFI_SUCCESS;
}

EFI_STATUS
PrepareVirtioKeyboardDevicePath (
IN EFI_HANDLE DeviceHandle
)
{
EFI_STATUS Status;
EFI_DEVICE_PATH_PROTOCOL *DevicePath;

DevicePath = NULL;
Status = gBS->HandleProtocol (
DeviceHandle,
&gEfiDevicePathProtocolGuid,
(VOID *)&DevicePath
);
if (EFI_ERROR (Status)) {
return Status;
}

EfiBootManagerUpdateConsoleVariable (ConIn, DevicePath, NULL);
return EFI_SUCCESS;
}

EFI_STATUS
VisitAllInstancesOfProtocol (
IN EFI_GUID *Id,
Expand Down Expand Up @@ -1234,6 +1256,13 @@ DetectAndPreparePlatformPciDevicePath (
return EFI_SUCCESS;
}

if ((Pci->Hdr.VendorId == 0x1af4) && (Pci->Hdr.DeviceId == 0x1052))
{
DEBUG ((DEBUG_INFO, "Found virtio keyboard device\n"));
PrepareVirtioKeyboardDevicePath (Handle);
return EFI_SUCCESS;
}

return Status;
}

Expand Down

0 comments on commit 8d1e351

Please sign in to comment.