In preparation of adding support for the Chaoskey USB stick to the UEFI stub, import the USB I/O protocol declarations and related types to linux/efi.h. Signed-off-by: Ard Biesheuvel <ard.biesheuvel@xxxxxxxxxx> --- include/linux/efi.h | 66 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 66 insertions(+) diff --git a/include/linux/efi.h b/include/linux/efi.h index 12e05118657c..253749cd9b62 100644 --- a/include/linux/efi.h +++ b/include/linux/efi.h @@ -22,6 +22,7 @@ #include <linux/pstore.h> #include <linux/range.h> #include <linux/reboot.h> +#include <linux/usb/ch9.h> #include <linux/uuid.h> #include <linux/screen_info.h> @@ -622,6 +623,7 @@ void efi_native_runtime_setup(void); #define EFI_MEMORY_ATTRIBUTES_TABLE_GUID EFI_GUID(0xdcfa911d, 0x26eb, 0x469f, 0xa2, 0x20, 0x38, 0xb7, 0xdc, 0x46, 0x12, 0x20) #define EFI_CONSOLE_OUT_DEVICE_GUID EFI_GUID(0xd3b36f2c, 0xd551, 0x11d4, 0x9a, 0x46, 0x00, 0x90, 0x27, 0x3f, 0xc1, 0x4d) #define APPLE_PROPERTIES_PROTOCOL_GUID EFI_GUID(0x91bd12fe, 0xf6c3, 0x44fb, 0xa5, 0xb7, 0x51, 0x22, 0xab, 0x30, 0x3a, 0xe0) +#define EFI_USB_IO_PROTOCOL_GUID EFI_GUID(0x2b2f68d6, 0x0cd2, 0x44cf, 0x8e, 0x8b, 0xbb, 0xa2, 0x0b, 0x1b, 0x5b, 0x75) #define EFI_IMAGE_SECURITY_DATABASE_GUID EFI_GUID(0xd719b2cb, 0x3d3a, 0x4596, 0xa3, 0xbc, 0xda, 0xd0, 0x0e, 0x67, 0x65, 0x6f) #define EFI_SHIM_LOCK_GUID EFI_GUID(0x605dab50, 0xe046, 0x4300, 0xab, 0xb6, 0x3d, 0xd8, 0x10, 0xdd, 0x8b, 0x23) @@ -1569,4 +1571,68 @@ struct linux_efi_random_seed { u8 bits[]; }; +typedef enum { + EfiUsbDataIn, + EfiUsbDataOut, + EfiUsbNoData +} efi_usb_data_direction_t; + +#define EFI_USB_NOERROR 0x0000 +#define EFI_USB_ERR_NOTEXECUTE 0x0001 +#define EFI_USB_ERR_STALL 0x0002 +#define EFI_USB_ERR_BUFFER 0x0004 +#define EFI_USB_ERR_BABBLE 0x0008 +#define EFI_USB_ERR_NAK 0x0010 +#define EFI_USB_ERR_CRC 0x0020 +#define EFI_USB_ERR_TIMEOUT 0x0040 +#define EFI_USB_ERR_BITSTUFF 0x0080 +#define EFI_USB_ERR_SYSTEM 0x0100 + +typedef struct { + u8 request_type; + u8 request; + u16 value; + u16 index; + u16 length; +} efi_usb_device_request_t; + +typedef efi_status_t (*efi_async_usb_transfer_callback_t)(void *, unsigned long, + void *, u32); + +typedef struct efi_usb_io_protocol { + efi_status_t (*control_transfer)(struct efi_usb_io_protocol *, + efi_usb_device_request_t *, + efi_usb_data_direction_t, + u32, void *, unsigned long, u32 *); + efi_status_t (*bulk_transfer)(struct efi_usb_io_protocol *, u8, void *, + unsigned long *, unsigned long, u32 *); + efi_status_t (*async_int_transfer)(struct efi_usb_io_protocol *, u8, + efi_bool_t, unsigned long, + unsigned long, + efi_async_usb_transfer_callback_t, + void *); + efi_status_t (*sync_int_transfer)(struct efi_usb_io_protocol *, u8, + void *, unsigned long *, + unsigned long, u32 *); + efi_status_t (*isoc_transfer)(struct efi_usb_io_protocol *, u8, void *, + unsigned long, u32 *); + efi_status_t (*async_isoc_transfer)(struct efi_usb_io_protocol *, u8 *, + void *, unsigned long, + efi_async_usb_transfer_callback_t, + void *); + efi_status_t (*get_device_descriptor)(struct efi_usb_io_protocol *, + struct usb_device_descriptor *); + efi_status_t (*get_config_descriptor)(struct efi_usb_io_protocol *, + struct usb_config_descriptor *); + efi_status_t (*get_iface_descriptor)(struct efi_usb_io_protocol *, + struct usb_interface_descriptor *); + efi_status_t (*get_ep_descriptor)(struct efi_usb_io_protocol *, u8, + struct usb_endpoint_descriptor *); + efi_status_t (*get_string_descriptor)(struct efi_usb_io_protocol *, + u16, u8, efi_char16_t **); + efi_status_t (*get_supported_languages)(struct efi_usb_io_protocol *, + u16 **, u16 *); + efi_status_t (*port_reset)(struct efi_usb_io_protocol *); +} efi_usb_io_protocol_t; + #endif /* _LINUX_EFI_H */ -- 2.11.0 -- To unsubscribe from this list: send the line "unsubscribe linux-efi" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html