File 0013-usb_kdb-only-process-events-success.patch of Package u-boot-pineh64

From 2a332dbdb3258831e16eabb9e89204c6bb041067 Mon Sep 17 00:00:00 2001
From: Michal Suchanek <msuchanek@suse.de>
Date: Sun, 18 Aug 2019 10:55:24 +0200
Subject: [PATCH] usb_kdb: only process events successfully received

Causes unbound key repeat on error otherwise.

Signed-off-by: Michal Suchanek <msuchanek@suse.de>
(cherry picked from commit 3e816a2424c428f452f2003aff105511dc0cd9d4)
Signed-off-by: Matthias Brugger <mbrugger@suse.com>
---
 common/usb_kbd.c | 7 +++----
 1 file changed, 3 insertions(+), 4 deletions(-)

diff --git a/common/usb_kbd.c b/common/usb_kbd.c
index 020f0d4117..b793dbe1f6 100644
--- a/common/usb_kbd.c
+++ b/common/usb_kbd.c
@@ -317,10 +317,9 @@ static inline void usb_kbd_poll_for_event(struct usb_device *dev)
 	struct usb_kbd_pdata *data = dev->privptr;
 
 	/* Submit a interrupt transfer request */
-	usb_submit_int_msg(dev, data->intpipe, &data->new[0], data->intpktsize,
-			   data->intinterval);
-
-	usb_kbd_irq_worker(dev);
+	if (usb_submit_int_msg(dev, data->intpipe, &data->new[0],
+			       data->intpktsize, data->intinterval) >= 0)
+		usb_kbd_irq_worker(dev);
 #elif defined(CONFIG_SYS_USB_EVENT_POLL_VIA_CONTROL_EP) || \
       defined(CONFIG_SYS_USB_EVENT_POLL_VIA_INT_QUEUE)
 #if defined(CONFIG_SYS_USB_EVENT_POLL_VIA_CONTROL_EP)
openSUSE Build Service is sponsored by