From patchwork Thu Oct 10 21:36:55 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Heinrich Schuchardt X-Patchwork-Id: 1174814 X-Patchwork-Delegate: marek.vasut@gmail.com Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=none (mailfrom) smtp.mailfrom=lists.denx.de (client-ip=81.169.180.215; helo=lists.denx.de; envelope-from=u-boot-bounces@lists.denx.de; receiver=) Authentication-Results: ozlabs.org; dmarc=none (p=none dis=none) header.from=gmx.de Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (1024-bit key; secure) header.d=gmx.net header.i=@gmx.net header.b="ENtwRqpo"; dkim-atps=neutral Received: from lists.denx.de (dione.denx.de [81.169.180.215]) by ozlabs.org (Postfix) with ESMTP id 46q4Hd0qpbz9s7T for ; Fri, 11 Oct 2019 08:39:57 +1100 (AEDT) Received: by lists.denx.de (Postfix, from userid 105) id C9A0BC21E52; Thu, 10 Oct 2019 21:38:16 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on lists.denx.de X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=FREEMAIL_FROM, T_DKIM_INVALID autolearn=unavailable autolearn_force=no version=3.4.0 Received: from lists.denx.de (localhost [IPv6:::1]) by lists.denx.de (Postfix) with ESMTP id 89B1DC21E79; Thu, 10 Oct 2019 21:37:23 +0000 (UTC) Received: by lists.denx.de (Postfix, from userid 105) id 02784C21CB1; Thu, 10 Oct 2019 21:37:17 +0000 (UTC) Received: from mout.gmx.net (mout.gmx.net [212.227.17.22]) by lists.denx.de (Postfix) with ESMTPS id 09F4FC21DFD for ; Thu, 10 Oct 2019 21:37:15 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=gmx.net; s=badeba3b8450; t=1570743425; bh=DT7C+kwHxb5wVPcd8ErNUox8cQhBfrG2uWiBbT9LQQI=; h=X-UI-Sender-Class:From:To:Cc:Subject:Date:In-Reply-To:References; b=ENtwRqpo9uf/K/7EhkrM5dMvWmL+emSqNnrVF9tjSNApt1cTesPYbn9Ae4Fvh1mhQ 2IJOCmAdQr0gL2Xz9wvN6aQXHrIItDaibfLGCsTigBnTYKqLGc9k8yf93rUkpquwL6 20FlkQyf/7pLapbEN0jEKj2HobT8G5q3cOqpzqX4= X-UI-Sender-Class: 01bb95c1-4bf8-414a-932a-4f6e2808ef9c Received: from LT02.fritz.box ([84.118.154.222]) by mail.gmx.com (mrgmx104 [212.227.17.174]) with ESMTPSA (Nemesis) id 1M8hZJ-1iE1QG1EBt-004k6r; Thu, 10 Oct 2019 23:37:05 +0200 From: Heinrich Schuchardt To: Marek Vasut Date: Thu, 10 Oct 2019 23:36:55 +0200 Message-Id: <20191010213659.13522-2-xypron.glpk@gmx.de> X-Mailer: git-send-email 2.23.0 In-Reply-To: <20191010213659.13522-1-xypron.glpk@gmx.de> References: <20191010213659.13522-1-xypron.glpk@gmx.de> MIME-Version: 1.0 X-Provags-ID: V03:K1:3izrWhGrSmtrtASijSAwoan+wJOFqgnolq2BLgNKAg+l6t+oc3g 4PHC2XNg6nqEHg0m5fmE9zEKnClA80TbGAZyh4JNbbIstYMQRxViIy411TwyA60UACvjbcw vSYWmuofDMkrwJ7FmTW5tJz5pHhg2IjnVlrVbqcTUF8K/1eBUBx1Y2INm9rC3p/SQ1hbEyB yoxlZkLeuZfqZIXMyxt1g== X-UI-Out-Filterresults: notjunk:1; V03:K0:wgK9Na0L1Ss=:4U9ar4sSST5GbqKbSkG95M vbzJ7X6G/NCyGqg5tdIQuu6xFinE8y41Zsyxi5euuHrwNvjUyZ2wJnrx5mCPWUXp4st0G+w+T R1w9BykxhHXsdFe2U055xRUdD8UAytjyVaIzUdTJh3dwVgvckq2kidKRxCFbgUJEBCc5T0snA tUV+MHNP2DXxm0806EONgmMLDEaYsLBf/rsEkEVU+KJEwJmo3LCs/1aOglB1sQtJl/xJb5URL xGYP6nta1V8tLRVbNQ2B31/Dm+4rkIKK0KDWq3VQHCQmEi6NDoE0ko9D2oMf4T+8RGr74tk3n Pt7MfGyGvnt8P5WooXVsyjHHHqxid9T4QbbDwfob+iZ7jGXQTkVxJERM46VAjYTAQB6MRGRd2 MY1bkxzDs294V6CB87IJL9kK5/WUOI4yJbELZYT/AbjWCub7hZ6u+7e7jb5OiPw68tOsCIc6O 2vJ1sVIHqkQwBdSSVDbf0A9CDWIsL3wkNUS6WFO9/md4zE4HgMA95C0Jh4Qp6+etrBflJ9/3y ZuAkoU+lQgVNPUP8BOQK5Vj60oYKOZg3VN13kzWX+lbvsb95Omr0UpQ/cldTDJ17FNGqV+GF8 Ob0rxHB5WCPmgZPEzCpY+Tfvafv1DhYjQR7CxW1xI0Xr91jzZHGHY7nTMOKYfuiF9mJahCHyt ipRoIs8ihZSpSzaefgCfQCY8nHGvNq6ifXPiRQZn/pFUkJg5KfzM10ZMMIKDtPtwaV9+O3wQu 6HxAB/Sjw3eGD65RnDfjCmLgNB+NfcB5pgJ0UWGBmKZr82VbiB0JKY34nXSw78CQRYgINot2E 5c2ssEwpcSZJwGfN2vigEnPjZaPMjiR8lqBmXdZP2BDwLcepmpi1X6zUzHGx3GoJPOFZuPNq6 /pcKtlfxK+RBKMSmqJ41mMF5ypSOWIZDAfkNpsfFKr8rK64wb0yVINKHGY58i0ozOhe6Tkmsb Nl7VBaKAIuVE9n2FURtZSF0DqiKvTGIKs80Ftg1bfXI1G8qi79+uImwVgD61Qh+OKgiK1NuUq gxIeSj+rKLH3BiMQ4E0WecW5FPoYfGCu8e5QEfCGEjaMzW/pIdFaZs/ATbfcBiX0R6nsCsfbr c7/efaiVL1cjNlQnYofxKzsf4DBPnVi78gz7Wv5Rd4si52Vhqyqnwqyl0XizH55+Hnql+q4pL OlkFKD2dL8L+GL/yL7ZLcUotiy+JlnzsYhM0V5AoFRwvgD0eWY2BTCALqaNorcTDBklt7JLML Ib7RHv31C8u+GZTBlsW2r83HdTcNpOSd+HtZRySoMwCmhXXk3IurHG6Edx+E= Cc: u-boot@lists.denx.de, Andre Przywara , Joe Hershberger , Sven Schwermer , Heinrich Schuchardt , Michal Suchanek Subject: [U-Boot] [PATCH v3 1/5] usb: kbd: simplify coding for arrow keys X-BeenThere: u-boot@lists.denx.de X-Mailman-Version: 2.1.18 Precedence: list List-Id: U-Boot discussion List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: u-boot-bounces@lists.denx.de Sender: "U-Boot" Avoid duplicate translation of arrow key codes. Signed-off-by: Heinrich Schuchardt Reviewed-by: Simon Glass --- v3: no change v2: no change --- common/usb_kbd.c | 31 +++++++++---------------------- 1 file changed, 9 insertions(+), 22 deletions(-) -- 2.23.0 diff --git a/common/usb_kbd.c b/common/usb_kbd.c index d178af248a..7510a210be 100644 --- a/common/usb_kbd.c +++ b/common/usb_kbd.c @@ -75,15 +75,6 @@ static const unsigned char usb_kbd_num_keypad[] = { '.', 0, 0, 0, '=' }; -/* - * map arrow keys to ^F/^B ^N/^P, can't really use the proper - * ANSI sequence for arrow keys because the queuing code breaks - * when a single keypress expands to 3 queue elements - */ -static const unsigned char usb_kbd_arrow[] = { - 0x6, 0x2, 0xe, 0x10 -}; - /* * NOTE: It's important for the NUM, CAPS, SCROLL-lock bits to be in this * order. See usb_kbd_setled() function! @@ -214,10 +205,6 @@ static int usb_kbd_translate(struct usb_kbd_pdata *data, unsigned char scancode, keycode = usb_kbd_numkey[scancode - 0x1e]; } - /* Arrow keys */ - if ((scancode >= 0x4f) && (scancode <= 0x52)) - keycode = usb_kbd_arrow[scancode - 0x4f]; - /* Numeric keypad */ if ((scancode >= 0x54) && (scancode <= 0x67)) keycode = usb_kbd_num_keypad[scancode - 0x54]; @@ -245,19 +232,19 @@ static int usb_kbd_translate(struct usb_kbd_pdata *data, unsigned char scancode, if (keycode) debug("%c", keycode); - switch (keycode) { - case 0x0e: /* Down arrow key */ - usb_kbd_put_sequence(data, "\e[B"); - break; - case 0x10: /* Up arrow key */ - usb_kbd_put_sequence(data, "\e[A"); - break; - case 0x06: /* Right arrow key */ + switch (scancode) { + case 0x4f: /* Right arrow key */ usb_kbd_put_sequence(data, "\e[C"); break; - case 0x02: /* Left arrow key */ + case 0x50: /* Left arrow key */ usb_kbd_put_sequence(data, "\e[D"); break; + case 0x51: /* Down arrow key */ + usb_kbd_put_sequence(data, "\e[B"); + break; + case 0x52: /* Up arrow key */ + usb_kbd_put_sequence(data, "\e[A"); + break; default: usb_kbd_put_queue(data, keycode); break; From patchwork Thu Oct 10 21:36:56 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Heinrich Schuchardt X-Patchwork-Id: 1174811 X-Patchwork-Delegate: marek.vasut@gmail.com Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=none (mailfrom) smtp.mailfrom=lists.denx.de (client-ip=81.169.180.215; helo=lists.denx.de; envelope-from=u-boot-bounces@lists.denx.de; receiver=) Authentication-Results: ozlabs.org; dmarc=none (p=none dis=none) header.from=gmx.de Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (1024-bit key; secure) header.d=gmx.net header.i=@gmx.net header.b="jKKJv1V/"; dkim-atps=neutral Received: from lists.denx.de (dione.denx.de [81.169.180.215]) by ozlabs.org (Postfix) with ESMTP id 46q4G06hqwz9sCJ for ; Fri, 11 Oct 2019 08:38:32 +1100 (AEDT) Received: by lists.denx.de (Postfix, from userid 105) id 79869C21E45; Thu, 10 Oct 2019 21:37:55 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on lists.denx.de X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=FREEMAIL_FROM, T_DKIM_INVALID autolearn=unavailable autolearn_force=no version=3.4.0 Received: from lists.denx.de (localhost [IPv6:::1]) by lists.denx.de (Postfix) with ESMTP id 75E9AC21E4E; Thu, 10 Oct 2019 21:37:16 +0000 (UTC) Received: by lists.denx.de (Postfix, from userid 105) id 6344BC21C4A; Thu, 10 Oct 2019 21:37:13 +0000 (UTC) Received: from mout.gmx.net (mout.gmx.net [212.227.17.20]) by lists.denx.de (Postfix) with ESMTPS id C1484C21C27 for ; Thu, 10 Oct 2019 21:37:12 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=gmx.net; s=badeba3b8450; t=1570743425; bh=tw8HOok44jDGUnSVe6oeCkTbWxJwHD1YMo1JfPhR/6M=; h=X-UI-Sender-Class:From:To:Cc:Subject:Date:In-Reply-To:References; b=jKKJv1V/UVaEW+R0LJU4Tq1x9lfFUYNmOqmMX2RowmcrBe64NYzHZESzU0nSQE6uy pcZIU83FZPJGrvXFp6QWFNY0m0c6lPixzU0PDqCrNVwhf+N/26VQG0pJDL0VAiqPFR j3yzU/9qvGO57/+Gn3+oPi2yav9yBd+HrlkKQPXU= X-UI-Sender-Class: 01bb95c1-4bf8-414a-932a-4f6e2808ef9c Received: from LT02.fritz.box ([84.118.154.222]) by mail.gmx.com (mrgmx104 [212.227.17.174]) with ESMTPSA (Nemesis) id 1MmULx-1hrplA2tJx-00iWv3; Thu, 10 Oct 2019 23:37:05 +0200 From: Heinrich Schuchardt To: Marek Vasut Date: Thu, 10 Oct 2019 23:36:56 +0200 Message-Id: <20191010213659.13522-3-xypron.glpk@gmx.de> X-Mailer: git-send-email 2.23.0 In-Reply-To: <20191010213659.13522-1-xypron.glpk@gmx.de> References: <20191010213659.13522-1-xypron.glpk@gmx.de> MIME-Version: 1.0 X-Provags-ID: V03:K1:kqI+Ik8cFDZPI2QlIxOJB2P94KP+/pYKKJTUqe6P8LF3NiIKd10 aIPzy7Rx7AAbeP0qHW/C3WzR9imHSOID6oza7Ts/QTcLoWflX6UxjOUR74SrTLouBIvntKW DHq+Xe8l9AxN3c5VeaQWiRyPje4Ws9Yn/LA+vBO1mT6W7CrFRz3M6QeezOx5g1HiLJwshy+ 9+wgpOkVxHUxuNVG0VNQw== X-UI-Out-Filterresults: notjunk:1; V03:K0:WUo5twFxwV8=:8ynjwO7uztIkayOW05pf3F rRN4jK1F0VRIoGZkS3Ff8UfUdgdGcWfmcP0lM1ZXgoydYranY9IgupXc/hpv60co5a77/GmIW J2/fHIxfF7mTK3B9eKTszsQcKOnVMPJFckwlBi1OHcJzC3Bb1mzmmd+jFjnKvexQW777QKGTa 77sMf1IukWOxfjBmMBAYL2vuBJ5uGVDO7oLGUD2UGIweS8/pP3ef1cJcv22ocukgO0e7mq8fZ 3imj+P+Iit0hj2jFSpzTwBwiC+VSVWlJoZS1Kso1B7nF326yqGSrWTGpJySNSDP/39m1MBd2h MtUGJZfgf3r6P7kj8uR/F2hyPknIxXUA/0mNSTF1vfCs2HWQMEn4ypEs5+DV/SnAjZUo5i64x XvMQUUqfk0KEO7tGVTzVZ2nmVQ9Uo/Oo9JQ//lnzbiMg/9bGMWAffd50dK5kCvow9viyGKzcW eiKHWvp8PPaKSJxVIcnGq1U2KNzy+MDqH6y+OSRFXbCZwgv3kqepP3bmZIrfKWoxoZWUJS5Fg RV1luK8+tUa2W9f6DtMZ+F5uSNTE0tafHDYk+JfpDbv3TIUAirlMIUh1r0GRCreF05hvMqGsQ 9dcKenALdgD5EK4Qa+IjtZIlX5Cg1pqfV1JyCYB4VcZywi2yW2k9+IaWzME1T/9pp+4r1tIAx LQkr+3TJIXceuLJJLfz/xe+qAq7QDtZch3p0+kMDeK5fRoAAa1N1UsshuE8EsHPvi589ua6XP 7kpfetD5bGG6chy97eCl0gCGonwjSbjMg5LNX9NmqFqfG9JLBqTn3qaBsj4aO6R64aoY2QFa3 ImuXVm7me7KvbnZ9ePGRMK0ZHODNOlhda0GaRFXZKJhaVSiZOI35BF/mA4MPzuG6ANWZ2vCJu zzAR536GOiCPxTQ0irdfv0uVVohk6qncQSeeoehZ2qfXlk+zPjwzjuEiEfrGiVn+GZj6A7784 jKUT3qpuuKbMl5VGmT1Mb3B6fk6V1uxrqelGdsLSQEMPo6NJJ8NXBnG6AFEvWywAT4FPo08VP qGZ4RXwko5dGl7ZypXMQniSa4BCEuxk9uHSiiKd32j080DglfSPwACXp7jYV/SX6huhkT6bXl dmD+idXNDbxjD+0hBDYMakhGvUMb7ZGj6plp0h73pGsoh0mjDYraRtY9eUIBwgz7sYUy84j3+ XBxUwNUSgjJxbn71qrgokzP6vd/PJg04fLVa8OrK5lAIaCm/V9c4ai0qIj/9BCESpn8hTkDvv VuIWTgd2W+6CJYxaEmeMplSxCiddQAFcq9WlmD2NqmfZPAudsm3Tyt/yBgts= Cc: u-boot@lists.denx.de, Andre Przywara , Joe Hershberger , Sven Schwermer , Heinrich Schuchardt , Michal Suchanek Subject: [U-Boot] [PATCH v3 2/5] usb: kbd: implement special keys X-BeenThere: u-boot@lists.denx.de X-Mailman-Version: 2.1.18 Precedence: list List-Id: U-Boot discussion List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: u-boot-bounces@lists.denx.de Sender: "U-Boot" Provide support for F1-F12, Insert, Delete, Home, End, Page Up, Page Down. Signed-off-by: Heinrich Schuchardt Reviewed-by: Simon Glass --- v3: no change v2: no change --- common/usb_kbd.c | 54 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 54 insertions(+) -- 2.23.0 diff --git a/common/usb_kbd.c b/common/usb_kbd.c index 7510a210be..a42b792dd9 100644 --- a/common/usb_kbd.c +++ b/common/usb_kbd.c @@ -233,6 +233,60 @@ static int usb_kbd_translate(struct usb_kbd_pdata *data, unsigned char scancode, debug("%c", keycode); switch (scancode) { + case 0x3a: /* F1 */ + usb_kbd_put_sequence(data, "\eOP"); + break; + case 0x3b: /* F2 */ + usb_kbd_put_sequence(data, "\eOQ"); + break; + case 0x3c: /* F3 */ + usb_kbd_put_sequence(data, "\eOR"); + break; + case 0x3d: /* F4 */ + usb_kbd_put_sequence(data, "\eOS"); + break; + case 0x3e: /* F5 */ + usb_kbd_put_sequence(data, "\e[15~"); + break; + case 0x3f: /* F6 */ + usb_kbd_put_sequence(data, "\e[17~"); + break; + case 0x40: /* F7 */ + usb_kbd_put_sequence(data, "\e[18~"); + break; + case 0x41: /* F8 */ + usb_kbd_put_sequence(data, "\e[19~"); + break; + case 0x42: /* F9 */ + usb_kbd_put_sequence(data, "\e[20~"); + break; + case 0x43: /* F10 */ + usb_kbd_put_sequence(data, "\e[21~"); + break; + case 0x44: /* F11 */ + usb_kbd_put_sequence(data, "\e[23~"); + break; + case 0x45: /* F12 */ + usb_kbd_put_sequence(data, "\e[24~"); + break; + case 0x49: /* INSERT */ + usb_kbd_put_sequence(data, "\e[2~"); + break; + case 0x4a: /* HOME */ + usb_kbd_put_sequence(data, "\e[H"); + break; + case 0x4b: /* PAGE UP */ + usb_kbd_put_sequence(data, "\e[5~"); + break; + case 0x4c: /* DELETE */ + usb_kbd_put_sequence(data, "\e[3~"); + break; + case 0x4d: /* END */ + usb_kbd_put_sequence(data, "\e[F"); + break; + case 0x4e: /* PAGE DOWN */ + usb_kbd_put_sequence(data, "\e[6~"); + break; case 0x4f: /* Right arrow key */ usb_kbd_put_sequence(data, "\e[C"); break; From patchwork Thu Oct 10 21:36:57 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Heinrich Schuchardt X-Patchwork-Id: 1174812 X-Patchwork-Delegate: marek.vasut@gmail.com Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=none (mailfrom) smtp.mailfrom=lists.denx.de (client-ip=81.169.180.215; helo=lists.denx.de; envelope-from=u-boot-bounces@lists.denx.de; receiver=) Authentication-Results: ozlabs.org; dmarc=none (p=none dis=none) header.from=gmx.de Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (1024-bit key; secure) header.d=gmx.net header.i=@gmx.net header.b="J7r20+rz"; dkim-atps=neutral Received: from lists.denx.de (dione.denx.de [81.169.180.215]) by ozlabs.org (Postfix) with ESMTP id 46q4Gn2hsXz9s7T for ; Fri, 11 Oct 2019 08:39:13 +1100 (AEDT) Received: by lists.denx.de (Postfix, from userid 105) id 0FF17C21E62; Thu, 10 Oct 2019 21:37:46 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on lists.denx.de X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=FREEMAIL_FROM, T_DKIM_INVALID autolearn=unavailable autolearn_force=no version=3.4.0 Received: from lists.denx.de (localhost [IPv6:::1]) by lists.denx.de (Postfix) with ESMTP id AC9E5C21E38; Thu, 10 Oct 2019 21:37:15 +0000 (UTC) Received: by lists.denx.de (Postfix, from userid 105) id 52445C21C57; Thu, 10 Oct 2019 21:37:13 +0000 (UTC) Received: from mout.gmx.net (mout.gmx.net [212.227.17.22]) by lists.denx.de (Postfix) with ESMTPS id 45A29C21C57 for ; Thu, 10 Oct 2019 21:37:12 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=gmx.net; s=badeba3b8450; t=1570743426; bh=x/HuTFcI+lzF0JIwOvNZkrx3s3z5bBq1lmH9piTXlvs=; h=X-UI-Sender-Class:From:To:Cc:Subject:Date:In-Reply-To:References; b=J7r20+rzUeD2pJ5nXoIw6N1/HPY8m+CWCtrRXjy2aNBJprfQsH3IOU768h5dUrhpS 4oMrWd1gA9tTQoDnNBhsQ4UOgx2liLurS2bk8WvCUAknnxccZoC7bLWj/k6AJcIYPi Fawb+xkFi8T0zL/OtACB/FYE+Th4CYqCl7SlsElk= X-UI-Sender-Class: 01bb95c1-4bf8-414a-932a-4f6e2808ef9c Received: from LT02.fritz.box ([84.118.154.222]) by mail.gmx.com (mrgmx104 [212.227.17.174]) with ESMTPSA (Nemesis) id 1MY6Cb-1ib9xP0H9B-00YQ3R; Thu, 10 Oct 2019 23:37:06 +0200 From: Heinrich Schuchardt To: Marek Vasut Date: Thu, 10 Oct 2019 23:36:57 +0200 Message-Id: <20191010213659.13522-4-xypron.glpk@gmx.de> X-Mailer: git-send-email 2.23.0 In-Reply-To: <20191010213659.13522-1-xypron.glpk@gmx.de> References: <20191010213659.13522-1-xypron.glpk@gmx.de> MIME-Version: 1.0 X-Provags-ID: V03:K1:57CWxJQvZUSlG6zgJnToVgZ/sP3MRRh006R/LE1Z5unEcNMQm5f P65TDy+XZqF+eZz2t6S6l76AEPWhecawHO/I685Z1WSHT00h2bAVnvrmCYaReuJOykhSm1M dOfOyXroSDf9oD27V6RMPMSAQrACdkXc54UEpGpdlok4sGt1Bo6CeOL7TBjtQ/r3G8p6DJf KhuMBbFo6F5FzU3JO4OZw== X-UI-Out-Filterresults: notjunk:1; V03:K0:H2ao/+YHa58=:AhFR6j4VzHmsCY8dL+hsnK 0mVx15aHptqQNwe/AV6UDN8o87s3E3vaM4LIe6tVDh0uriuo71M/aeOP8jsqYlQT+Igez33Wn cEAvHJfqqEPnzVZspg55BMlouDZa0aUi/XDe/yN8Zat+qdLfYttoXSiV0fdxf31fS+rnlkWCU hHR8JDjMh0z5WbhG2b5eMNPF5QVBEmLLT7moSHY1n5Q+dOJluOsbhLfZE2Ab7vjO9p8KvlSVL eTwXLH4YcDXIMOEy4uYEv5SphoQr6afUp23E7zp0OLaQ82pm54Utq0ApWfyG4S3v25nn9P0x7 su3n+dv3ihNKOYBSjRBs6CE2Grwb/SjbC39UxV8gXJGMFGcAZ51qKuTZRGlvi2gUg2Fdm0bsa H8TgbCz8o8uiMn6JzHEpuOG/Uwooa/6fdHHa9PoqG7w/j+R2OuU6V/Fo8RHxAgGsyk2zF3+LJ ahgo5VD92D/Yw7nv4jWLxaXvjjXwnHd8+kEwX5+HKfl9CLFH7X0IEu2tgyRCSzfvY4QVQxI90 ltDUHc/lAJjlbVspo5hkKwsY0Q3U1ww5JInnsu0uDyR1c/n3oxhSpUV8i4d9E7iqHdF/Y60eR Dc0zj3IqQJEPuAT72iZ0TA8JwVnlD6zuduFXxIANvNXbasvh1uOGygMXhCjfHP/dHwkkCtWOH CZb+KF0LdTs9JshOs8TzF77w3wXcss+GQayIp6kVxFjoKG36RT7y07TzF6yM7D90wU17KJT4C JFdL8kbrjSMOz7YwFPgSlwl3ZslGMejZ8kehdJC6iQoT/zCRQfX06MRg9vz+vysP1O2yDDgaV 2X+lJVXsexDOrYdcMDUc3cFjlOCXEuwLmdsff+EWZWAkBzB/L2rf5/TvdAMX8HfNrYd5ie3i7 fypVvGfks6wc1yC9/rTGF/bWsbLG7Pfuw3OYNcJCUxShQbkm/yTwjpIjoRs5xFFg0Ym9lqJbX TmOyJFz3WRH3mbdOqsOQgXF6ZG4/8gda/8kYiCYq+5DGVQCPamvg0oYxG7om6EpM49BkDXVl3 k/5IdTSvsYgrIiGMQB6pUYGuY4Fk7nIwvm7bV8pKQ0bmHpsx7Zmkl7s50VqYsCT6H0+2MR8gm w+HakIDKvMh8LtKSQqXvQD2JFuy0U0H1kkbLd2eyXs7qzoKABfIbCVZd4GINlX8Z90P3E0Ih3 eBqZL1U+DXZGQ95nOtU5sDbsi1UHFm9tTJUsCFM7eiz2T3f6JOnyOEW0ctvObTYBBilAJrZhm pBtQ1J375QiH/ZNjP3Mpvre/g9/3SXwkeTYk+Bg== Cc: u-boot@lists.denx.de, Andre Przywara , Joe Hershberger , Sven Schwermer , Heinrich Schuchardt , Michal Suchanek Subject: [U-Boot] [PATCH v3 3/5] usb: kbd: fix typo X-BeenThere: u-boot@lists.denx.de X-Mailman-Version: 2.1.18 Precedence: list List-Id: U-Boot discussion List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: u-boot-bounces@lists.denx.de Sender: "U-Boot" %s/a interrupt/an interrupt/ Signed-off-by: Heinrich Schuchardt Reviewed-by: Simon Glass --- v3: rebased v2: new patch --- common/usb_kbd.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) -- 2.23.0 diff --git a/common/usb_kbd.c b/common/usb_kbd.c index a42b792dd9..3f84c28201 100644 --- a/common/usb_kbd.c +++ b/common/usb_kbd.c @@ -380,7 +380,7 @@ static inline void usb_kbd_poll_for_event(struct usb_device *dev) #if defined(CONFIG_SYS_USB_EVENT_POLL) struct usb_kbd_pdata *data = dev->privptr; - /* Submit a interrupt transfer request */ + /* Submit an interrupt transfer request */ if (usb_int_msg(dev, data->intpipe, &data->new[0], data->intpktsize, data->intinterval, true) >= 0) usb_kbd_irq_worker(dev); From patchwork Thu Oct 10 21:36:58 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Heinrich Schuchardt X-Patchwork-Id: 1174813 X-Patchwork-Delegate: marek.vasut@gmail.com Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=none (mailfrom) smtp.mailfrom=lists.denx.de (client-ip=81.169.180.215; helo=lists.denx.de; envelope-from=u-boot-bounces@lists.denx.de; receiver=) Authentication-Results: ozlabs.org; dmarc=none (p=none dis=none) header.from=gmx.de Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (1024-bit key; secure) header.d=gmx.net header.i=@gmx.net header.b="D6Y3oJaw"; dkim-atps=neutral Received: from lists.denx.de (dione.denx.de [81.169.180.215]) by ozlabs.org (Postfix) with ESMTP id 46q4Gw6R9Fz9s7T for ; Fri, 11 Oct 2019 08:39:20 +1100 (AEDT) Received: by lists.denx.de (Postfix, from userid 105) id 9011FC21E36; Thu, 10 Oct 2019 21:38:06 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on lists.denx.de X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=FREEMAIL_FROM, T_DKIM_INVALID autolearn=unavailable autolearn_force=no version=3.4.0 Received: from lists.denx.de (localhost [IPv6:::1]) by lists.denx.de (Postfix) with ESMTP id 11029C21E08; Thu, 10 Oct 2019 21:37:18 +0000 (UTC) Received: by lists.denx.de (Postfix, from userid 105) id 84019C21C27; Thu, 10 Oct 2019 21:37:13 +0000 (UTC) Received: from mout.gmx.net (mout.gmx.net [212.227.17.21]) by lists.denx.de (Postfix) with ESMTPS id 22100C21CB1 for ; Thu, 10 Oct 2019 21:37:13 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=gmx.net; s=badeba3b8450; t=1570743426; bh=VNwbG71KWZQBcv5Z93/H3WF4znK+JYyJA3gS4BgONLM=; h=X-UI-Sender-Class:From:To:Cc:Subject:Date:In-Reply-To:References; b=D6Y3oJawvFvn2g69TzRaSxTvVxOoc53SGOX5E1GhVQuYy1ILBjcHdGCUsxYVzz4W3 km9XKP8w1okdo2nuzPQmy51cu6wLuOT7ccDHm8LVbieUIItF+Or1vVF4bKNooneOTD VO8GjxCIumO3VFmBeAH/ZL9H4qzF1GbWorXflqoc= X-UI-Sender-Class: 01bb95c1-4bf8-414a-932a-4f6e2808ef9c Received: from LT02.fritz.box ([84.118.154.222]) by mail.gmx.com (mrgmx104 [212.227.17.174]) with ESMTPSA (Nemesis) id 1MVNB1-1ihBYr1sIx-00SNeB; Thu, 10 Oct 2019 23:37:06 +0200 From: Heinrich Schuchardt To: Marek Vasut Date: Thu, 10 Oct 2019 23:36:58 +0200 Message-Id: <20191010213659.13522-5-xypron.glpk@gmx.de> X-Mailer: git-send-email 2.23.0 In-Reply-To: <20191010213659.13522-1-xypron.glpk@gmx.de> References: <20191010213659.13522-1-xypron.glpk@gmx.de> MIME-Version: 1.0 X-Provags-ID: V03:K1:D+sRWHLOZJeXj3H8AfYlyB3ApwZNpugkDdt2jrudYsCr8Fv4X/a uTka5EgcLx14bTbODZM7ftiEBYv1OD6YdV2sAuWP5fmpfT0f1mMV0PE10MO9No7JHxjEAEy 9VKp15Fgn6Ofe5jKNJXGutCKlXZpzPVg4EkJ7eI/yhRxK56Yj0sGUqzOLByv5E1ZvwMmOre 9tzSW/X/BK2JwW4i+cYVw== X-UI-Out-Filterresults: notjunk:1; V03:K0:O82pfn7pxNk=:OUEfqmPb7NTRy79LYT2+Pi DoqQeWr0gAa13NjJUQW/Oz2JYZ0TurhGQbPViFUnQZq9XtGF0SLJ3mVQr6N8PgBbrh1DbqmJg Pq0TeyfotDvxINQV0IzldGUjhjmIpkVCwuaABp10ZamMCKyUMhiW9yya5Bi4gk0OAyjoK0vx5 Ts+KbhYNmFcsdgPxfSOwxTor1itkfshRCdaMBYL0/6xMVvKv06ejI0GX+21xOUPHrb2ewd58l F16myhkjs93cfEY2abwAUHwjjjnZMIeaopnYzfoyNlD7Ixdd7KlOshYRB+eiiNC3Swx2NagMk sn3a+ntZthLBYLBcm+yiZoJyJoW3P3PBjjYmzA7xEtG4UBnXNvbIapRuObZHwINxriXA/MQ+A el8fnsoMjuAVZxFqLmNW5eSIvBBgvGEenennVuxd3I+VM0x3r4w55fv5zU1Gqz445+tX4B+V/ 82j7J7GNzVRjF/F2kehuA9o9KCz45N+YBKfJtb6hU7ZFguvzBMY2WJ+xY9Cpv/5L0uV7YT8N5 v5l+pOenm2VrjN8mUEdTTfJOSDO/jHl+PhSXbZHaOilyF7cG9mEiH4VDMTLtKtc01rirb4ZvN uhPn9VBaWrVCpaGIQu9vu1PWVY/4zaLARNVaeawES4NYgk+WtF+or2yxlLmEUL7nLOPDeE3VN lmAS61PNyVTq5ZOzLPzmQCYLRX4Z1qgAmq/XTBPK0XcshmRE869Foh+BevnoNB8vDiYTMVQq3 E6Tn+E3OK6P17WF0ZlO0GnuhfsBLkkdubdLtz3bEGDQR2KAJAeNfhD0mZY+CC5xiMRGtubLKm BhQRhBYoOlQLlS6hDw8HoNuXBIt1DyqUGF0s4WKJh4W5FVGmSGq8fQNR1Sq6gKlBbItlAjwUI t6P59bbKkrlKBkA2VQ09NbMeZkx7j7JNzEfUARpuI40e54naSbkq53XFsReztAsTiKlfGT7i5 gSFhC/FmiVkkMMM8J/a7X9hfJiGW6xwxlNawBQFvFcvg83OUFulnVhg56Rq+sYZSUlkABkNMi NZvOly9vQDKT0SGrUUGmlY83CJnRa6vfirjhU4V4EYgSlph6Ka9cnZXe0fX+DaDd2asQJ9OwZ oLyrAkHaG7VNU0AQ97atEYzoC8s/8M/hL7J5XOPnCv4iPjumNUIihtdrBDD4jKJq51KzjKrfB JI+1HJXTfOMoK1eVymfBlkdCuMjtOfXrCgy0QsbrATFZijE44v0lUnrVZp24wtFZjfaGU3ii7 gF7BwylyBz/jzesAtSWJq0TfESnm+VazaIRxziQ940HVmjnsyqLu/4tC2C60= Cc: u-boot@lists.denx.de, Andre Przywara , Joe Hershberger , Sven Schwermer , Heinrich Schuchardt , Michal Suchanek Subject: [U-Boot] [PATCH v3 4/5] usb: kbd: move USB_KBD_BOOT_REPORT_SIZE to usb.h X-BeenThere: u-boot@lists.denx.de X-Mailman-Version: 2.1.18 Precedence: list List-Id: U-Boot discussion List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: u-boot-bounces@lists.denx.de Sender: "U-Boot" Move constant USB_KBD_BOOT_REPORT_SIZE. This allows us to reuse it. Signed-off-by: Heinrich Schuchardt Reviewed-by: Simon Glass --- v3: no change v2: new patch --- common/usb_kbd.c | 6 ------ include/usb.h | 6 ++++++ 2 files changed, 6 insertions(+), 6 deletions(-) -- 2.23.0 diff --git a/common/usb_kbd.c b/common/usb_kbd.c index 3f84c28201..d4e7ef6210 100644 --- a/common/usb_kbd.c +++ b/common/usb_kbd.c @@ -87,12 +87,6 @@ static const unsigned char usb_kbd_num_keypad[] = { #define USB_KBD_LEDMASK \ (USB_KBD_NUMLOCK | USB_KBD_CAPSLOCK | USB_KBD_SCROLLLOCK) -/* - * USB Keyboard reports are 8 bytes in boot protocol. - * Appendix B of HID Device Class Definition 1.11 - */ -#define USB_KBD_BOOT_REPORT_SIZE 8 - struct usb_kbd_pdata { unsigned long intpipe; int intpktsize; diff --git a/include/usb.h b/include/usb.h index bcad552f85..efb67ea33f 100644 --- a/include/usb.h +++ b/include/usb.h @@ -242,6 +242,12 @@ int usb_host_eth_scan(int mode); #ifdef CONFIG_USB_KEYBOARD +/* + * USB Keyboard reports are 8 bytes in boot protocol. + * Appendix B of HID Device Class Definition 1.11 + */ +#define USB_KBD_BOOT_REPORT_SIZE 8 + int drv_usb_kbd_init(void); int usb_kbd_deregister(int force); From patchwork Thu Oct 10 21:36:59 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Heinrich Schuchardt X-Patchwork-Id: 1174810 X-Patchwork-Delegate: marek.vasut@gmail.com Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=none (mailfrom) smtp.mailfrom=lists.denx.de (client-ip=81.169.180.215; helo=lists.denx.de; envelope-from=u-boot-bounces@lists.denx.de; receiver=) Authentication-Results: ozlabs.org; dmarc=none (p=none dis=none) header.from=gmx.de Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (1024-bit key; secure) header.d=gmx.net header.i=@gmx.net header.b="ln+ru/sA"; dkim-atps=neutral Received: from lists.denx.de (dione.denx.de [81.169.180.215]) by ozlabs.org (Postfix) with ESMTP id 46q4Dr3Tbzz9s7T for ; Fri, 11 Oct 2019 08:37:32 +1100 (AEDT) Received: by lists.denx.de (Postfix, from userid 105) id 029F3C21E6A; Thu, 10 Oct 2019 21:37:26 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on lists.denx.de X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=FREEMAIL_FROM, T_DKIM_INVALID autolearn=unavailable autolearn_force=no version=3.4.0 Received: from lists.denx.de (localhost [IPv6:::1]) by lists.denx.de (Postfix) with ESMTP id 09183C21DF8; Thu, 10 Oct 2019 21:37:15 +0000 (UTC) Received: by lists.denx.de (Postfix, from userid 105) id 3DB66C21D4A; Thu, 10 Oct 2019 21:37:13 +0000 (UTC) Received: from mout.gmx.net (mout.gmx.net [212.227.17.21]) by lists.denx.de (Postfix) with ESMTPS id 320C6C21C4A for ; Thu, 10 Oct 2019 21:37:12 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=gmx.net; s=badeba3b8450; t=1570743427; bh=cBw6V/FYfxPtogAk7P+Rm8+fnn5uSjKMh/1oP4oWVKk=; h=X-UI-Sender-Class:From:To:Cc:Subject:Date:In-Reply-To:References; b=ln+ru/sASeVM7UUl7/Lvn+3BOYXrWHAvcfS/g1mt8vc7T9pNBg0/ymCGoHTJ5gzh9 V5H8VdtPJ84U+7PKogqzWTwC3ze8dbPqBHtNmis5KQfdqpMlLtNoSVDgYy2U40lCvB L8ADzYDvWnlzPTXBdUdWF3PRcNd0eosnY3r4Osbo= X-UI-Sender-Class: 01bb95c1-4bf8-414a-932a-4f6e2808ef9c Received: from LT02.fritz.box ([84.118.154.222]) by mail.gmx.com (mrgmx104 [212.227.17.174]) with ESMTPSA (Nemesis) id 1MQ5rU-1iVxoY3TnM-00Lzyi; Thu, 10 Oct 2019 23:37:06 +0200 From: Heinrich Schuchardt To: Marek Vasut Date: Thu, 10 Oct 2019 23:36:59 +0200 Message-Id: <20191010213659.13522-6-xypron.glpk@gmx.de> X-Mailer: git-send-email 2.23.0 In-Reply-To: <20191010213659.13522-1-xypron.glpk@gmx.de> References: <20191010213659.13522-1-xypron.glpk@gmx.de> MIME-Version: 1.0 X-Provags-ID: V03:K1:C0RVfbrSOrCm2SGWUTbMYxT0wb4ibZC0vHpAl982zVezTDsk1Ja 0T+V6g0dZlDRv024fVxo4k6GJi1mhi1G1Fnu7LJGMSdkhi7pAJ+Uv7hj6uqtsHWNZ9pW4mj aaF4VJhSgaX+m5SBOJ2/j0hKKjjmja6jXlTLjVPHfFGQuJX5Z1i0UXqiZ/myHR9beK6SnQu oT06D9IQTgCRCPj8Z5nZA== X-UI-Out-Filterresults: notjunk:1; V03:K0:bjstLKgWBeo=:P+/3peBYQ/xf+3iTga2oZw p+baAzcK0SAPQfnaJu5tJDyIgK9Ks+JavUH9oMXB45AWoNKzpTTqJUTsboZA3H6fecOvukc6c WnMPmceC55c9AQIEiLk5YxZVjcK0gn+5hnnd9qgN0fkg6Zdv4LXNanyEW8Ta9EIenfpHZW3CJ zCY9h3SYCtOmN9aRdN5k7e5d4GuxiXfafQK6wF1tbj0eAUzjqMurqkd2VVhxi8TTBJVdMNWOi kzzVHGFVnadJWqEaqJeEZePTQxIKOys1chJ+tewVEroVPjRBgkz0O1CeoovnlB2aZmVkTgOZS jLbE1hPDphspQ9SxoEEsNUZVcow2IqsARXuJuKURM5zgcPdjyHsBTdI8qkm9xVeGmQ0Yebf7b jhSbPnXu06ekFLNUYBJYrkQG+JSsYl+QaiRfVt00vzZ0gtmTTcwPijdk58k1KIwQZghh41cT+ DezeEz3d3AchFHCEQMQpmEzCQS9JF6JWHB3jAdX7y1sYUtHJY4QOhxEK3gaCyz7e1vhEetMEC YDM+c/nyZsOiQHrYjFUaEaruVCrpPZgOVaXHV3IwKfkZtHGfKW+fTZVz+W29dUXIE0bpGgGer ueUBIR92i9/PFwVh13wQ2q76UmJmkD7/LE8GQl/uF2N+Yz71Pqrq96s+aBOXxNYaK7Aw2etUp Z8jP0cPBCVnUTa1f/FCyuBMj6+KXeAf/3cXaKTGBagEHi9TQUZig6SzpFU9dYt5717WcHsDCZ Kx0tvshT8Sc30i3lIIpIQBNZ9Dm2bLlCXlEaqkeXxuG2Ip9pQrQhJNnPrFoS+4vvfwVwhx2UW SUBKeNZJiq9UQ/6+69u8a6gJ3VCTsvko4Ww/Hx5iLeDoTUqJWOHFr5dWdm4qZ017s65A4Itkt CFmPtfRyWC/MUJhtGcy2R4lgeInC2XjlqMyohx1FHtGgodxMYbmq5/HnV0hCOceZD8L9DZevA YXDdVdYY/7ukklGqvQsX2XMjL9MCNsY3j2i4GtM8ace7xn/ogGl+SqQ00pIz+pwBtaFCEMq48 C6PE+k5FwjuNmAWAUYDtsZMGxaPWATmVH0N0Mu//iZA5Mixv9GJLRNuzJH2a6xFRHbLvf/I4y 7IsBpq20txDe3nlSz3W1DOhwZ9JnLaClB3bWzKPSs3+os9I+3HeOObk5utuUs5ltbsKEdMBQ3 CUwLBvKWuQmda4+0voO7ZSjFIO9vzOjOvhaX72Y3O/pIr2X9Suy6cygzYM0T8A4gCzY9rFFPu dJPetFCoMKh2TyKyfuKSfcn6hXXcSLmznHIhgDOF7vWFoLu7Jy7juDWm0Sdo= Cc: u-boot@lists.denx.de, Andre Przywara , Joe Hershberger , Sven Schwermer , Heinrich Schuchardt , Michal Suchanek Subject: [U-Boot] [PATCH v3 5/5] dm: test: usb: rework keyboard test X-BeenThere: u-boot@lists.denx.de X-Mailman-Version: 2.1.18 Precedence: list List-Id: U-Boot discussion List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: u-boot-bounces@lists.denx.de Sender: "U-Boot" Allow the unit test to pass full 8 byte scan code sequences to the USB keyboard emulation driver and to parse multi-byte escape sequences. The following features are not yet tested: * LED status * caps-lock * num-lock * numerical pad keys The following features are not yet implemented by the USB keyboard driver and therefore not tested: * modifiers for non-alpha-numeric keys, e.g. and * some special keys, e.g. * some modifiers, e.g. and * alternative keyboard layouts Signed-off-by: Heinrich Schuchardt Reviewed-by: Simon Glass --- v3: no change v2: new patch --- drivers/usb/emul/sandbox_keyb.c | 27 +-- test/dm/usb.c | 283 +++++++++++++++++++++++++++++++- 2 files changed, 292 insertions(+), 18 deletions(-) -- 2.23.0 diff --git a/drivers/usb/emul/sandbox_keyb.c b/drivers/usb/emul/sandbox_keyb.c index dc43880d27..32bc9a1698 100644 --- a/drivers/usb/emul/sandbox_keyb.c +++ b/drivers/usb/emul/sandbox_keyb.c @@ -155,14 +155,20 @@ static void *keyb_desc_list[] = { NULL, }; -int sandbox_usb_keyb_add_string(struct udevice *dev, const char *str) +/** + * sandbox_usb_keyb_add_string() - provide a USB scancode buffer + * + * @dev: the keyboard emulation device + * @scancode: scancode buffer with USB_KBD_BOOT_REPORT_SIZE bytes + */ +int sandbox_usb_keyb_add_string(struct udevice *dev, + const char scancode[USB_KBD_BOOT_REPORT_SIZE]) { struct sandbox_keyb_priv *priv = dev_get_priv(dev); - int len, ret; + int ret; - len = strlen(str); - ret = membuff_put(&priv->in, str, len); - if (ret != len) + ret = membuff_put(&priv->in, scancode, USB_KBD_BOOT_REPORT_SIZE); + if (ret != USB_KBD_BOOT_REPORT_SIZE) return -ENOSPC; return 0; @@ -183,12 +189,12 @@ static int sandbox_keyb_interrupt(struct udevice *dev, struct usb_device *udev, { struct sandbox_keyb_priv *priv = dev_get_priv(dev); uint8_t *data = buffer; - int ch; memset(data, '\0', length); - ch = membuff_getbyte(&priv->in); - if (ch != -1) - data[2] = 4 + ch - 'a'; + if (length < USB_KBD_BOOT_REPORT_SIZE) + return 0; + + membuff_get(&priv->in, buffer, USB_KBD_BOOT_REPORT_SIZE); return 0; } @@ -213,7 +219,8 @@ static int sandbox_keyb_probe(struct udevice *dev) { struct sandbox_keyb_priv *priv = dev_get_priv(dev); - return membuff_new(&priv->in, 256); + /* Provide an 80 character keyboard buffer */ + return membuff_new(&priv->in, 80 * USB_KBD_BOOT_REPORT_SIZE); } static const struct dm_usb_ops sandbox_usb_keyb_ops = { diff --git a/test/dm/usb.c b/test/dm/usb.c index ef454b0ae5..6420b6efdc 100644 --- a/test/dm/usb.c +++ b/test/dm/usb.c @@ -15,6 +15,12 @@ #include #include +struct keyboard_test_data { + const char modifiers; + const char scancode; + const char result[6]; +}; + /* Test that sandbox USB works correctly */ static int dm_test_usb_base(struct unit_test_state *uts) { @@ -115,9 +121,262 @@ static int dm_test_usb_stop(struct unit_test_state *uts) } DM_TEST(dm_test_usb_stop, DM_TESTF_SCAN_PDATA | DM_TESTF_SCAN_FDT); +/** + * dm_test_usb_keyb() - test USB keyboard driver + * + * This test copies USB keyboard scan codes into the key buffer of the USB + * keyboard emulation driver. These are picked up during emulated interrupts + * by the USB keyboard driver and converted to characters and escape sequences. + * The test then reads and verifies these characters and escape sequences from + * the standard input. + * + * TODO: The following features are not yet tested: + * + * * LED status + * * caps-lock + * * num-lock + * * numerical pad keys + * + * TODO: The following features are not yet implemented by the USB keyboard + * driver and therefore not tested: + * + * * modifiers for non-alpha-numeric keys, e.g. and + * * some special keys, e.g. + * * some modifiers, e.g. and + * * alternative keyboard layouts + * + * @uts: unit test state + * Return: 0 on success + */ static int dm_test_usb_keyb(struct unit_test_state *uts) { struct udevice *dev; + const struct keyboard_test_data *pos; + const struct keyboard_test_data kbd_test_data[] = { + /* */ + {0x00, 0x04, "a"}, + /* */ + {0x00, 0x05, "b"}, + /* */ + {0x00, 0x06, "c"}, + /* */ + {0x00, 0x07, "d"}, + /* */ + {0x00, 0x08, "e"}, + /* */ + {0x00, 0x09, "f"}, + /* */ + {0x00, 0x0a, "g"}, + /* */ + {0x00, 0x0b, "h"}, + /* */ + {0x00, 0x0c, "i"}, + /* */ + {0x00, 0x0d, "j"}, + /* */ + {0x00, 0x0e, "k"}, + /* */ + {0x00, 0x0f, "l"}, + /* */ + {0x00, 0x10, "m"}, + /* */ + {0x00, 0x11, "n"}, + /* */ + {0x00, 0x12, "o"}, + /*

*/ + {0x00, 0x13, "p"}, + /* */ + {0x00, 0x14, "q"}, + /* */ + {0x00, 0x15, "r"}, + /* */ + {0x00, 0x16, "s"}, + /* */ + {0x00, 0x17, "t"}, + /* */ + {0x00, 0x18, "u"}, + /* */ + {0x00, 0x19, "v"}, + /* */ + {0x00, 0x1a, "w"}, + /* */ + {0x00, 0x1b, "x"}, + /* */ + {0x00, 0x1c, "y"}, + /* */ + {0x00, 0x1d, "z"}, + + /* */ + {0x02, 0x04, "A"}, + /* */ + {0x20, 0x1d, "Z"}, + + /* */ + {0x01, 0x04, "\x01"}, + /* */ + {0x10, 0x1d, "\x1a"}, + + /* <1> */ + {0x00, 0x1e, "1"}, + /* <2> */ + {0x00, 0x1f, "2"}, + /* <3> */ + {0x00, 0x20, "3"}, + /* <4> */ + {0x00, 0x21, "4"}, + /* <5> */ + {0x00, 0x22, "5"}, + /* <6> */ + {0x00, 0x23, "6"}, + /* <7> */ + {0x00, 0x24, "7"}, + /* <8> */ + {0x00, 0x25, "8"}, + /* <9> */ + {0x00, 0x26, "9"}, + /* <0> */ + {0x00, 0x27, "0"}, + + /* <1> */ + {0x02, 0x1e, "!"}, + /* <2> */ + {0x20, 0x1f, "@"}, + /* <3> */ + {0x02, 0x20, "#"}, + /* <4> */ + {0x20, 0x21, "$"}, + /* <5> */ + {0x02, 0x22, "%"}, + /* <6> */ + {0x20, 0x23, "^"}, + /* <7> */ + {0x02, 0x24, "&"}, + /* <8> */ + {0x20, 0x25, "*"}, + /* <9> */ + {0x02, 0x26, "("}, + /* <0> */ + {0x20, 0x27, ")"}, + + /* */ + {0x00, 0x28, "\r"}, + /* */ + {0x00, 0x29, "\x1b"}, + /* */ + {0x00, 0x2a, "\x08"}, + /* */ + {0x00, 0x2b, "\x09"}, + /* */ + {0x00, 0x2c, " "}, + /* */ + {0x00, 0x2d, "-"}, + /* */ + {0x00, 0x2e, "="}, + /* */ + {0x00, 0x2f, "["}, + /* */ + {0x00, 0x30, "]"}, + /* */ + {0x00, 0x31, "\\"}, + /* */ + {0x00, 0x32, "#"}, + /* */ + {0x00, 0x33, ";"}, + /* */ + {0x00, 0x34, "'"}, + /* */ + {0x00, 0x35, "`"}, + /* */ + {0x00, 0x36, ","}, + /* */ + {0x00, 0x37, "."}, + /* */ + {0x00, 0x38, "/"}, + + /* */ + {0x02, 0x28, "\r"}, + /* */ + {0x20, 0x29, "\x1b"}, + /* */ + {0x02, 0x2a, "\x08"}, + /* */ + {0x20, 0x2b, "\x09"}, + /* */ + {0x02, 0x2c, " "}, + /* */ + {0x20, 0x2d, "_"}, + /* */ + {0x02, 0x2e, "+"}, + /* */ + {0x20, 0x2f, "{"}, + /* */ + {0x02, 0x30, "}"}, + /* */ + {0x20, 0x31, "|"}, + /* */ + {0x02, 0x32, "~"}, + /* */ + {0x20, 0x33, ":"}, + /* */ + {0x02, 0x34, "\""}, + /* */ + {0x20, 0x35, "~"}, + /* */ + {0x02, 0x36, "<"}, + /* */ + {0x20, 0x37, ">"}, + /* */ + {0x02, 0x38, "?"}, + + /* */ + {0x00, 0x3a, "\x1bOP"}, + /* */ + {0x00, 0x3b, "\x1bOQ"}, + /* */ + {0x00, 0x3c, "\x1bOR"}, + /* */ + {0x00, 0x3d, "\x1bOS"}, + /* */ + {0x00, 0x3e, "\x1b[15~"}, + /* */ + {0x00, 0x3f, "\x1b[17~"}, + /* */ + {0x00, 0x40, "\x1b[18~"}, + /* */ + {0x00, 0x41, "\x1b[19~"}, + /* */ + {0x00, 0x42, "\x1b[20~"}, + /* */ + {0x00, 0x43, "\x1b[21~"}, + /* */ + {0x00, 0x44, "\x1b[23~"}, + /* */ + {0x00, 0x45, "\x1b[24~"}, + /* */ + {0x00, 0x49, "\x1b[2~"}, + /* */ + {0x00, 0x4a, "\x1b[H"}, + /* */ + {0x00, 0x4b, "\x1b[5~"}, + /* */ + {0x00, 0x4c, "\x1b[3~"}, + /* */ + {0x00, 0x4d, "\x1b[F"}, + /* */ + {0x00, 0x4e, "\x1b[6~"}, + /* */ + {0x00, 0x4f, "\x1b[C"}, + /* */ + {0x00, 0x50, "\x1b[D"}, + /* */ + {0x00, 0x51, "\x1b[B"}, + /* */ + {0x00, 0x52, "\x1b[A"}, + + /* End of list */ + {0x00, 0x00, "\0"} + }; + state_set_skip_delays(true); ut_assertok(usb_init()); @@ -129,16 +388,24 @@ static int dm_test_usb_keyb(struct unit_test_state *uts) &dev)); /* - * Add a string to the USB keyboard buffer - it should appear in - * stdin + * Add scan codes to the USB keyboard buffer. They should appear as + * corresponding characters and escape sequences in stdin. */ - ut_assertok(sandbox_usb_keyb_add_string(dev, "ab")); - ut_asserteq(1, tstc()); - ut_asserteq('a', getc()); - ut_asserteq(1, tstc()); - ut_asserteq('b', getc()); - ut_asserteq(0, tstc()); + for (pos = kbd_test_data; pos->scancode; ++pos) { + const char *c; + char scancodes[USB_KBD_BOOT_REPORT_SIZE] = {0}; + scancodes[0] = pos->modifiers; + scancodes[2] = pos->scancode; + + ut_assertok(sandbox_usb_keyb_add_string(dev, scancodes)); + + for (c = pos->result; *c; ++c) { + ut_asserteq(1, tstc()); + ut_asserteq(*c, getc()); + } + ut_asserteq(0, tstc()); + } ut_assertok(usb_stop()); return 0;