Merge "USB: ci13xxx_udc: Add support for UI interrupts counting"
diff --git a/drivers/usb/gadget/ci13xxx_udc.c b/drivers/usb/gadget/ci13xxx_udc.c
index 30a678b..ad0e464 100644
--- a/drivers/usb/gadget/ci13xxx_udc.c
+++ b/drivers/usb/gadget/ci13xxx_udc.c
@@ -2295,6 +2295,7 @@
udc->configured = 0;
spin_unlock_irqrestore(udc->lock, flags);
+ gadget->xfer_isr_count = 0;
gadget->b_hnp_enable = 0;
gadget->a_hnp_support = 0;
gadget->host_request = 0;
@@ -3688,6 +3689,7 @@
isr_statistics.uei++;
if (USBi_UI & intr) {
isr_statistics.ui++;
+ udc->gadget.xfer_isr_count++;
isr_tr_complete_handler(udc);
}
if (USBi_SLI & intr) {
diff --git a/include/linux/usb/gadget.h b/include/linux/usb/gadget.h
index 3844f41..1a94910 100644
--- a/include/linux/usb/gadget.h
+++ b/include/linux/usb/gadget.h
@@ -509,6 +509,7 @@
* @usb_core_id: Identifies the usb core controlled by this usb_gadget.
* Used in case of more then one core operates concurrently.
* @streaming_enabled: Enable streaming mode with usb core.
+ * @xfer_isr_count: UI (transfer complete) interrupts count
*
* Gadgets have a mostly-portable "gadget driver" implementing device
* functions, handling all usb configurations and interfaces. Gadget
@@ -548,6 +549,7 @@
u8 usb_core_id;
bool l1_supported;
bool streaming_enabled;
+ u32 xfer_isr_count;
};
static inline void set_gadget_data(struct usb_gadget *gadget, void *data)