From patchwork Wed Sep 14 21:57:42 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?Herv=C3=A9_Poussineau?= X-Patchwork-Id: 670132 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) (using TLSv1 with cipher AES256-SHA (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 3sZFpq0qWfz9sDG for ; Thu, 15 Sep 2016 08:00:35 +1000 (AEST) Received: from localhost ([::1]:58957 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1bkIEK-0001P0-LE for incoming@patchwork.ozlabs.org; Wed, 14 Sep 2016 18:00:32 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:56278) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1bkICL-00087j-IT for qemu-devel@nongnu.org; Wed, 14 Sep 2016 17:58:30 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1bkICH-0008G3-G7 for qemu-devel@nongnu.org; Wed, 14 Sep 2016 17:58:28 -0400 Received: from smtp2-g21.free.fr ([212.27.42.2]:53611) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1bkICH-00089H-9w for qemu-devel@nongnu.org; Wed, 14 Sep 2016 17:58:25 -0400 Received: from localhost.localdomain (unknown [82.227.227.196]) by smtp2-g21.free.fr (Postfix) with ESMTP id 9449E200355; Wed, 14 Sep 2016 23:57:56 +0200 (CEST) From: =?UTF-8?q?Herv=C3=A9=20Poussineau?= To: qemu-devel@nongnu.org Date: Wed, 14 Sep 2016 23:57:42 +0200 Message-Id: <1473890265-3304-3-git-send-email-hpoussin@reactos.org> X-Mailer: git-send-email 2.1.4 In-Reply-To: <1473890265-3304-1-git-send-email-hpoussin@reactos.org> References: <1473890265-3304-1-git-send-email-hpoussin@reactos.org> MIME-Version: 1.0 X-detected-operating-system: by eggs.gnu.org: Windows NT kernel [generic] [fuzzy] X-Received-From: 212.27.42.2 Subject: [Qemu-devel] [PATCH 2/5] ps2: correctly handle 'get/set scancode' command X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: =?UTF-8?q?Herv=C3=A9=20Poussineau?= , "Michael S. Tsirkin" Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: "Qemu-devel" When getting scancode, current scancode must be preceded from reply ack. When setting scancode, we must reject invalid scancodes. Signed-off-by: Hervé Poussineau --- hw/input/ps2.c | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/hw/input/ps2.c b/hw/input/ps2.c index 00a1792..2105e51 100644 --- a/hw/input/ps2.c +++ b/hw/input/ps2.c @@ -296,16 +296,18 @@ void ps2_write_keyboard(void *opaque, int val) break; case KBD_CMD_SCANCODE: if (val == 0) { + ps2_queue(&s->common, KBD_REPLY_ACK); if (s->scancode_set == 1) ps2_put_keycode(s, 0x43); else if (s->scancode_set == 2) ps2_put_keycode(s, 0x41); else if (s->scancode_set == 3) ps2_put_keycode(s, 0x3f); - } else { - if (val >= 1 && val <= 3) - s->scancode_set = val; + } else if (val >= 1 && val <= 3) { + s->scancode_set = val; ps2_queue(&s->common, KBD_REPLY_ACK); + } else { + ps2_queue(&s->common, KBD_REPLY_RESEND); } s->common.write_cmd = -1; break;