From 1e8648f6113691366729bbffc3412bcf3a27ece2 Mon Sep 17 00:00:00 2001 From: Michael Brown Date: Fri, 16 Oct 2020 15:11:16 +0100 Subject: [usbblk] Allow USB block device to be described using an EFI device path Signed-off-by: Michael Brown --- src/drivers/usb/usbblk.c | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/src/drivers/usb/usbblk.c b/src/drivers/usb/usbblk.c index a68e3ced5..5a086d3f8 100644 --- a/src/drivers/usb/usbblk.c +++ b/src/drivers/usb/usbblk.c @@ -31,6 +31,7 @@ FILE_LICENCE ( GPL2_OR_LATER_OR_UBDL ); #include #include #include +#include #include "usbblk.h" /** @file @@ -702,11 +703,25 @@ static void usbblk_scsi_close ( struct usbblk_device *usbblk, int rc ) { usbblk->opened = 0; } +/** + * Describe as an EFI device path + * + * @v usbblk USB block device + * @ret path EFI device path, or NULL on error + */ +static EFI_DEVICE_PATH_PROTOCOL * +usbblk_efi_describe ( struct usbblk_device *usbblk ) { + + return efi_usb_path ( usbblk->func ); +} + /** SCSI command interface operations */ static struct interface_operation usbblk_scsi_operations[] = { INTF_OP ( scsi_command, struct usbblk_device *, usbblk_scsi_command ), INTF_OP ( xfer_window, struct usbblk_device *, usbblk_scsi_window ), INTF_OP ( intf_close, struct usbblk_device *, usbblk_scsi_close ), + EFI_INTF_OP ( efi_describe, struct usbblk_device *, + usbblk_efi_describe ), }; /** SCSI command interface descriptor */ -- cgit