[usbblk] Allow USB block device to be described using an EFI device path

Signed-off-by: Michael Brown <mcb30@ipxe.org>
pull/171/head
Michael Brown 2020-10-16 15:11:16 +01:00
parent 87e39a9c93
commit 1e8648f611
1 changed files with 15 additions and 0 deletions

View File

@ -31,6 +31,7 @@ FILE_LICENCE ( GPL2_OR_LATER_OR_UBDL );
#include <ipxe/xfer.h>
#include <ipxe/uri.h>
#include <ipxe/open.h>
#include <ipxe/efi/efi_path.h>
#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 */