icE1usb fw: Expose error conditions from E1 driver
This will allow the USB interface code to report the errors to the
host PC.
Related: OS#4674
Change-Id: Iba3e00a2b28a2fef6dbd986bfc706c1619c3a3ed
diff --git a/firmware/ice40-riscv/icE1usb/usb_desc_app.c b/firmware/ice40-riscv/icE1usb/usb_desc_app.c
index 9fe3968..153d70e 100644
--- a/firmware/ice40-riscv/icE1usb/usb_desc_app.c
+++ b/firmware/ice40-riscv/icE1usb/usb_desc_app.c
@@ -28,12 +28,14 @@
struct usb_ep_desc ep_data_in;
struct usb_ep_desc ep_data_out;
struct usb_ep_desc ep_fb;
+ struct usb_ep_desc ep_interrupt;
} __attribute__ ((packed)) off;
struct {
struct usb_intf_desc intf;
struct usb_ep_desc ep_data_in;
struct usb_ep_desc ep_data_out;
struct usb_ep_desc ep_fb;
+ struct usb_ep_desc ep_interrupt;
} __attribute__ ((packed)) on;
} __attribute__ ((packed)) e1;
@@ -79,7 +81,7 @@
.bDescriptorType = USB_DT_INTF,
.bInterfaceNumber = 0,
.bAlternateSetting = 0,
- .bNumEndpoints = 3,
+ .bNumEndpoints = 4,
.bInterfaceClass = 0xff,
.bInterfaceSubClass = 0xe1,
.bInterfaceProtocol = 0x00,
@@ -109,6 +111,14 @@
.wMaxPacketSize = 0,
.bInterval = 3,
},
+ .ep_interrupt = {
+ .bLength = sizeof(struct usb_ep_desc),
+ .bDescriptorType = USB_DT_EP,
+ .bEndpointAddress = 0x83,
+ .bmAttributes = 0x03,
+ .wMaxPacketSize = 10,
+ .bInterval = 3,
+ },
},
.on = {
.intf = {
@@ -116,7 +126,7 @@
.bDescriptorType = USB_DT_INTF,
.bInterfaceNumber = 0,
.bAlternateSetting = 1,
- .bNumEndpoints = 3,
+ .bNumEndpoints = 4,
.bInterfaceClass = 0xff,
.bInterfaceSubClass = 0xe1,
.bInterfaceProtocol = 0x00,
@@ -146,6 +156,14 @@
.wMaxPacketSize = 8,
.bInterval = 3,
},
+ .ep_interrupt = {
+ .bLength = sizeof(struct usb_ep_desc),
+ .bDescriptorType = USB_DT_EP,
+ .bEndpointAddress = 0x83,
+ .bmAttributes = 0x03,
+ .wMaxPacketSize = 10,
+ .bInterval = 3,
+ },
},
},
#if 0