From nobody Fri May 17 15:26:32 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=gmx.de ARC-Seal: i=1; a=rsa-sha256; t=1662921669; cv=none; d=zohomail.com; s=zohoarc; b=JWo0hZiiQ4AiKm6PFE0K1MyERrUq41QjymoMLd0sQpoC1Xh4/uqb5WLPBmtKftAHrZIvljKxp4rLLKrlBv25s9Tsus7E2a4zS6q4QLzy30EAHlygVIgwZ31JWXFVL+bq0MIettVPyhIB4PJkAW3167NBAPZG1vLOxSJ36kGO6mA= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1662921669; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=dvGhsjKfH/6uBIXVzF/0HviFUPi3fcdzclqKZ1+7Us0=; b=Vbyb9Tg0CCs3GIE17YwLOVMqYGSC7Ay0KVGmMzx0dGelw8bb2ScF7XsLjfjUrFLBHxcm3VXO5V3ORLlV+bhMJ/I2m/6qHzqg772mgTeZiTuyCBSoipaPgF7L9A0BUvorYP/3pEM4n/TN2N6OM0eTJFNCP9h5NPGe4usAr8FP6qo= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1662921669974744.4356767439033; Sun, 11 Sep 2022 11:41:09 -0700 (PDT) Received: from localhost ([::1]:39090 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1oXRtE-0005GZ-WE for importer@patchew.org; Sun, 11 Sep 2022 14:41:09 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:48194) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1oXRZ0-0005OL-QI; Sun, 11 Sep 2022 14:20:14 -0400 Received: from mout.gmx.net ([212.227.15.18]:41053) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1oXRYy-0003Tm-Rj; Sun, 11 Sep 2022 14:20:14 -0400 Received: from btm-mobil4.fritz.box ([178.8.103.147]) by mail.gmx.net (mrgmx005 [212.227.17.190]) with ESMTPSA (Nemesis) id 1MN5eR-1ooHan0JOf-00IzGd; Sun, 11 Sep 2022 20:20:08 +0200 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=gmx.net; s=badeba3b8450; t=1662920408; bh=UtF0BPLI6AKxkQWay5ut7m72rH2xhRa4EgDH/2mF2T4=; h=X-UI-Sender-Class:From:To:Cc:Subject:Date:In-Reply-To:References; b=OcSCEPQSZ1KeUK5XrLA/gvf5XFEF36eAE0CqEhhyoQ6FY8KugSHJUZ62O2Ru7UoLz HIXiDhqvLg8Q3rm4+uDYquTQWHxRbvXUWaaLGs7umIOZ42wAXvbrd6f7ZzuKiji8ra 5j5II4guGInaxwEbE7sVbwLqYap5d/O7jiisXtSM= X-UI-Sender-Class: 01bb95c1-4bf8-414a-932a-4f6e2808ef9c From: Arwed Meyer To: qemu-devel@nongnu.org Cc: qemu-stable@nongnu.org, Arwed Meyer , =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= , Paolo Bonzini Subject: [PATCH v3 1/5] msmouse: Handle mouse reset Date: Sun, 11 Sep 2022 20:18:36 +0200 Message-Id: <20220911181840.8933-2-arwed.meyer@gmx.de> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20220911181840.8933-1-arwed.meyer@gmx.de> References: <20220911181840.8933-1-arwed.meyer@gmx.de> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Provags-ID: V03:K1:CqJvLQ1vOZGvRlbL9DQIaTt9qhPrKQJdRgmw/gy+c0LIXfqshLv mOD1YPd5+D2p5LjOyPGe+dqkZDjKsSewjaY0gqobJQijT4x/jNAUs+0AZjjGF+fKD6DaCHr pd0kIUHZkGo637xFtvaS1LX+eSkDXP2UPMekWUa5FxAzOwZvheL2vAmlGEMW/MIgrkSthBm RLkjT4Wxlr5prmD+o7fcg== X-UI-Out-Filterresults: notjunk:1;V03:K0:ulZ4SY0t2xI=:v+pgCkMXT7DLsDxa5nvhEG euqcDrNrXptty1T0ajKP9Nk5Tsdno9xJfRUftV+d6du0Seq6Tsxgf44B+8uW/NsPrF3ih8lrI XBsQSCjgTKYsVJkkJbuOH/R1qMJ07dn1aE+1gH01sexjZMO60msvq+Srt2WsmhyUbGkiKNKQZ p/n8QTjyUecvS61yCfDgrTzpLGXKMTmVafi4hFfpGuIkqkU/k/OsCrumHmchnmuWdt3nq4KRc EgvHBaRfOMHhzgA+BVBHa3bHRbXaMThExXk9zT4wPyU24K+ArzwtzaQFv23Z8l+BDkNLuwf9M lRW3evhiK8+a88xNY3x4v29vfASGsGSP8CNte4nAXEL5wNfl1vyBg2q4ULzHA9pvXk/ove/ua 1HwO0sIueFOWkwkDTuxnCf+Jj+84ynPh7bo00k8BECBXu4LGvtLoMx/FxWLSPRiTeiN00HjnJ ImW3v9tDyGZ64859PFjyRHqDBP3CHCBbrSpfSez+n3ORgAoJffG4fuJhIBaGAyHmSISmtuEs3 jRcVuNHCG01kS6yccLfMbGRkoT+wXEPmF3k79/4dXR9aLJ3+dZd0LERmPoKILLFF640TxHjOr bmjkW5btuQb6SQ6NlxMxVoFmaKKKo22k2UPEMVV3xiLY547aa9mXa8FLlaI0qERGQfAlAB0CI VyqunZA0T1HRhcPUtUG3laFYoqoVqZn0k0aoLtnKaywRxIjgQvLMlceXEP6GPUFYX08Fe3H1+ CfHJ+mgEMv9j5PamhjtbHBScvkT9Ib8JjlcVULMdXUg9U6b1/dAv/6UFZNplFfeWpqTl8xjT8 f4opF787KqbwFCSvVFrAVHX9XJ1uxlIQlHyrTsWLYjgjclY+VHyCrgwrul5T81+xVizvoGsK9 dbNu6TUAi7jiJDVlDm6anUjfFzjBSeFJ+hbCSoGKto1ZXHAg5a3K4Zmc2ZDUj0Bb3XcjO76En ROyLHQlXMZplyHjOk2Oj9W9fVkJ5EF5jI/0cDWcJjnc7rwYGgLyT9orX/H3vVMF33bbDZGbW2 M/RIgllM0/LMs99BKFaE0O2JbfaEOUFuUez74LblCCMg6OFl9kRA+y1piOnRRw8pelTrKzVaB GylP3UeKSgePd0s7BYRg9GHgDzY4uWeoHmfJOy8m9kQ4S7GIBiiVWPi1vJJw5y21q2cuRugpY Isfi70ADZQjVnJqgtAIUmpZRJX Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=212.227.15.18; envelope-from=arwed.meyer@gmx.de; helo=mout.gmx.net X-Spam_score_int: -25 X-Spam_score: -2.6 X-Spam_bar: -- X-Spam_report: (-2.6 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_LOW=-0.7, RCVD_IN_MSPIKE_H2=-0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: pass (identity @gmx.net) X-ZM-MESSAGEID: 1662921670752100001 Content-Type: text/plain; charset="utf-8" Detect mouse reset via RTS or DTR line: Don't send or process anything while in reset. When coming out of reset, send ID sequence first thing. This allows msmouse to be detected by common mouse drivers. Resolves: https://gitlab.com/qemu-project/qemu/-/issues/77 Signed-off-by: Arwed Meyer Acked-by: Marc-Andr=C3=A9 Lureau --- chardev/msmouse.c | 63 +++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 61 insertions(+), 2 deletions(-) diff --git a/chardev/msmouse.c b/chardev/msmouse.c index eb9231dcdb..95fa488339 100644 --- a/chardev/msmouse.c +++ b/chardev/msmouse.c @@ -25,17 +25,20 @@ #include "qemu/osdep.h" #include "qemu/module.h" #include "chardev/char.h" +#include "chardev/char-serial.h" #include "ui/console.h" #include "ui/input.h" #include "qom/object.h" -#define MSMOUSE_LO6(n) ((n) & 0x3f) -#define MSMOUSE_HI2(n) (((n) & 0xc0) >> 6) +#define MSMOUSE_LO6(n) ((n) & 0x3f) +#define MSMOUSE_HI2(n) (((n) & 0xc0) >> 6) +#define MSMOUSE_PWR(cm) (cm & (CHR_TIOCM_RTS | CHR_TIOCM_DTR)) struct MouseChardev { Chardev parent; QemuInputHandlerState *hs; + int tiocm; int axis[INPUT_AXIS__MAX]; bool btns[INPUT_BUTTON__MAX]; bool btnc[INPUT_BUTTON__MAX]; @@ -109,6 +112,11 @@ static void msmouse_input_event(DeviceState *dev, Qemu= Console *src, InputMoveEvent *move; InputBtnEvent *btn; + /* Ignore events if serial mouse powered down. */ + if (!MSMOUSE_PWR(mouse->tiocm)) { + return; + } + switch (evt->type) { case INPUT_EVENT_KIND_REL: move =3D evt->u.rel.data; @@ -132,6 +140,11 @@ static void msmouse_input_sync(DeviceState *dev) MouseChardev *mouse =3D MOUSE_CHARDEV(dev); Chardev *chr =3D CHARDEV(dev); + /* Ignore events if serial mouse powered down. */ + if (!MSMOUSE_PWR(mouse->tiocm)) { + return; + } + msmouse_queue_event(mouse); msmouse_chr_accept_input(chr); } @@ -142,6 +155,50 @@ static int msmouse_chr_write(struct Chardev *s, const = uint8_t *buf, int len) return len; } +static int msmouse_ioctl(Chardev *chr, int cmd, void *arg) +{ + MouseChardev *mouse =3D MOUSE_CHARDEV(chr); + int c; + int *targ =3D (int *)arg; + + switch (cmd) { + case CHR_IOCTL_SERIAL_SET_TIOCM: + c =3D mouse->tiocm; + mouse->tiocm =3D *(int *)arg; + if (MSMOUSE_PWR(mouse->tiocm)) { + if (!MSMOUSE_PWR(c)) { + /* + * Power on after reset: send "M3" + * cause we behave like a 3 button logitech + * mouse. + */ + mouse->outbuf[0] =3D 'M'; + mouse->outbuf[1] =3D '3'; + mouse->outlen =3D 2; + /* Start sending data to serial. */ + msmouse_chr_accept_input(chr); + } + break; + } + /* + * Reset mouse buffers on power down. + * Mouse won't send anything without power. + */ + mouse->outlen =3D 0; + memset(mouse->axis, 0, sizeof(mouse->axis)); + memset(mouse->btns, false, sizeof(mouse->btns)); + memset(mouse->btnc, false, sizeof(mouse->btns)); + break; + case CHR_IOCTL_SERIAL_GET_TIOCM: + /* Remember line control status. */ + *targ =3D mouse->tiocm; + break; + default: + return -ENOTSUP; + } + return 0; +} + static void char_msmouse_finalize(Object *obj) { MouseChardev *mouse =3D MOUSE_CHARDEV(obj); @@ -166,6 +223,7 @@ static void msmouse_chr_open(Chardev *chr, *be_opened =3D false; mouse->hs =3D qemu_input_handler_register((DeviceState *)mouse, &msmouse_handler); + mouse->tiocm =3D 0; } static void char_msmouse_class_init(ObjectClass *oc, void *data) @@ -175,6 +233,7 @@ static void char_msmouse_class_init(ObjectClass *oc, vo= id *data) cc->open =3D msmouse_chr_open; cc->chr_write =3D msmouse_chr_write; cc->chr_accept_input =3D msmouse_chr_accept_input; + cc->chr_ioctl =3D msmouse_ioctl; } static const TypeInfo char_msmouse_type_info =3D { -- 2.34.1 From nobody Fri May 17 15:26:32 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=gmx.de ARC-Seal: i=1; a=rsa-sha256; t=1662921811; cv=none; d=zohomail.com; s=zohoarc; b=lZR2ivqOHSeDpMD9VoM5wkE6npGPXXzerVHQc/V1MVGso3xm+BF7VJ2HdFcU7+Ac0h/vd620kJoo87EQ5Pehu881+PtdZcVnBmApFqNEUvNgrYKtd/7+WQxRzcFsVwjh6heUJadbE4YjgQHIOXb58+ll8mkRZmwMRhf3DpVEyFw= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1662921811; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=T+bEDm3IjKr5tyWndM9HBTT/er74/IFZzuedE+t6Uaw=; b=cJZOx3OsdQYlFDuLKgOrohfYkgkqbUgWN0tylEnjjh78394K6h7MMDgvYZwihk5XhawCPHGv9X/OVCljnPn3lG1HNdD6rf9bsXBCA1m5edTuQSCXaiWtzA8E8X2Rsu4tolEhAvwim2Ou/rxjxmqwlJeG2LJNc0m65ZbvW9gGpw8= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1662921811467748.0511820822433; Sun, 11 Sep 2022 11:43:31 -0700 (PDT) Received: from localhost ([::1]:59462 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1oXRvU-0008DY-NN for importer@patchew.org; Sun, 11 Sep 2022 14:43:28 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:48196) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1oXRZ1-0005Ps-8E; Sun, 11 Sep 2022 14:20:15 -0400 Received: from mout.gmx.net ([212.227.15.19]:50979) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1oXRYz-0003Tx-B4; Sun, 11 Sep 2022 14:20:14 -0400 Received: from btm-mobil4.fritz.box ([178.8.103.147]) by mail.gmx.net (mrgmx005 [212.227.17.190]) with ESMTPSA (Nemesis) id 1MGyxN-1obYAV3zDn-00E9gz; Sun, 11 Sep 2022 20:20:09 +0200 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=gmx.net; s=badeba3b8450; t=1662920409; bh=apaOk+iHU5I8xklbSY7HRDjINHyWilhq5B2KR+YX0Sg=; h=X-UI-Sender-Class:From:To:Cc:Subject:Date:In-Reply-To:References; b=EsQX2hLbsvb88Qw4BWIm0lUBSf0BZzegci2S/B+nuUcLuu3Yu0KEQTsB36aZn1HUW SSvaJsAu/cGI3dPcsD20a4EVGY4WW1i0lp6Z3e3FCm9665bfso6rvlwRhy+uC1QIqe 7jE8aomUD91UTCB58qu9EPjVwMUCrGYlchLp72/U= X-UI-Sender-Class: 01bb95c1-4bf8-414a-932a-4f6e2808ef9c From: Arwed Meyer To: qemu-devel@nongnu.org Cc: qemu-stable@nongnu.org, Arwed Meyer , =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= , Paolo Bonzini , Pavel Dovgalyuk Subject: [PATCH v3 2/5] chardev: src buffer const for write functions Date: Sun, 11 Sep 2022 20:18:37 +0200 Message-Id: <20220911181840.8933-3-arwed.meyer@gmx.de> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20220911181840.8933-1-arwed.meyer@gmx.de> References: <20220911181840.8933-1-arwed.meyer@gmx.de> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Provags-ID: V03:K1:794fAuD/Ua4fCaYxi2tOTLg6utLAMXarptY5Zbo2yR2EwXJJPg0 elZgUfLR9zXgac6GpH0SNn9jWj9FllUGf7X9pqgqXk3S8cobQ8Niggl43n5B/h43hF24lLk qNdmQTo+CZKh3YTuyXzkUtj5Ahzx0C5rfrKyCZMHyQiAEWEP8ictUVUfxRpbOYQZYhAwrJf //93FBRSk+etulD+Y0vgQ== X-UI-Out-Filterresults: notjunk:1;V03:K0:2l9NviKshLw=:wQIUnOV5/B92FQHW84x7lg Bo+yYMwVA4HsoLrr8jxTTrk2MNAAiSQJX6Zxzw/fE1EjGfhVgmNq83tcWtcWzvVECKw/eYR20 oHLqkeMFZ894P82HQPgSbODb4PhF2cjdQoEBJvIjkSkf4EnY3yHFpd3t6C6CwpZ64qTMQP6k6 59YZtLaYoqJ1eYsshqfT/IoclPX3wIn1u03VUF6yZnRiDpbm8aS/b7LXM/3A1SbvVYllqvE3O ML/vi9Hd59I33sdyhvZLTGFr+3cNBnJgDvaOu/JtHfnH9QPpx7NOrJxwa3lx1Z0SSVHQ+9crl MQbVnm/bpvDFdFR6YX2Qe6OlQnZgORkQ9BRij3qoXz66PB/IOGzIST/NufIR9MzrCbxw8Nuj+ GGOKXzA1B1Ekko0VBVP25Ry6EamIpw2of46bRs02wABtnA86oKYh6wMo+X3JSIRFKFHid3Kon 7QnSm4LZJS9rf/NSD/0Rwse5f4TqKSITy06dwyeFL26+DsUQAhMa5M4KsW/kFbYqXkcgmfrwQ j1EdOec+prpOZAvi5WCtIGfjqwx2mBywY8Gq/+Okz5JUdQIL+m6NfgtuGJz/TJcq8xixNTzf4 yr8MDpZ/ZHnPvFk8hFJN8okSNCz2zd2iLOmTvJMAg7lJ1186s5t1+SyZc0isRoxmWe3Zl1y28 Ic0KttkZJqdeyKeGNurYZECPR3FLdBDO6ZWJIYfQ2ZJJX7/pne+0oPEb8oNhY1CjJMsMnWJD1 OcE+mmSeqoz+gTe6LdcoyK43lmC6HE65dR8kXNv786sc15EkIOrGV/9CpGIF1AhjHZ1ZTSx+T ouK4utwmqK7OY8b1P8CHLj9bcWAYi11HhFam8O2LGwCCjyZYn0RIdHsqVpQ4jt/Im6UHSwaxz 8pdhdKXefJnukA415H8G+7VkT+q3ItVrJb4f3bdXou4tacccSFLfSBfnDNgiQMBMIqOqlmRGx X5LDM6ZEWsqJxhmDHeaspPrIN2ap5w3ndxt45a/s+2UN0+ugBpEp91swpXCAox+uuxgkqUbqn 7NoJVOuM8EQ6I22BT1rDETT1CuAytKqF3cXyszgIYpjk+xpeKCgMMOMS6ruKE8sj6d1lbmblH WCsZfAhrHGGPHXoQtfdL2DDf+Oc5xHF9NxY0a3KIdaL/id3MFRAw1d5nMGgr3En4EyzF2wf4I PkYKLQp6gPTyryQjmFAW1a7GS+ Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=212.227.15.19; envelope-from=arwed.meyer@gmx.de; helo=mout.gmx.net X-Spam_score_int: -25 X-Spam_score: -2.6 X-Spam_bar: -- X-Spam_report: (-2.6 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_LOW=-0.7, RCVD_IN_MSPIKE_H2=-0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: pass (identity @gmx.net) X-ZM-MESSAGEID: 1662921813656100001 Content-Type: text/plain; charset="utf-8" Make source buffers const for char be write functions. This allows using buffers returned by fifo as buf parameter and source buff= er should not be changed by write functions anyway. Signed-off-by: Arwed Meyer Reviewed-by: Marc-Andr=C3=A9 Lureau --- chardev/char.c | 4 ++-- include/chardev/char.h | 4 ++-- include/sysemu/replay.h | 2 +- replay/replay-char.c | 2 +- stubs/replay-tools.c | 2 +- 5 files changed, 7 insertions(+), 7 deletions(-) diff --git a/chardev/char.c b/chardev/char.c index 0169d8dde4..b005df3ccf 100644 --- a/chardev/char.c +++ b/chardev/char.c @@ -193,7 +193,7 @@ int qemu_chr_be_can_write(Chardev *s) return be->chr_can_read(be->opaque); } -void qemu_chr_be_write_impl(Chardev *s, uint8_t *buf, int len) +void qemu_chr_be_write_impl(Chardev *s, const uint8_t *buf, int len) { CharBackend *be =3D s->be; @@ -202,7 +202,7 @@ void qemu_chr_be_write_impl(Chardev *s, uint8_t *buf, i= nt len) } } -void qemu_chr_be_write(Chardev *s, uint8_t *buf, int len) +void qemu_chr_be_write(Chardev *s, const uint8_t *buf, int len) { if (qemu_chr_replay(s)) { if (replay_mode =3D=3D REPLAY_MODE_PLAY) { diff --git a/include/chardev/char.h b/include/chardev/char.h index a319b5fdff..44cd82e405 100644 --- a/include/chardev/char.h +++ b/include/chardev/char.h @@ -186,7 +186,7 @@ int qemu_chr_be_can_write(Chardev *s); * the caller should call @qemu_chr_be_can_write to determine how much data * the front end can currently accept. */ -void qemu_chr_be_write(Chardev *s, uint8_t *buf, int len); +void qemu_chr_be_write(Chardev *s, const uint8_t *buf, int len); /** * qemu_chr_be_write_impl: @@ -195,7 +195,7 @@ void qemu_chr_be_write(Chardev *s, uint8_t *buf, int le= n); * * Implementation of back end writing. Used by replay module. */ -void qemu_chr_be_write_impl(Chardev *s, uint8_t *buf, int len); +void qemu_chr_be_write_impl(Chardev *s, const uint8_t *buf, int len); /** * qemu_chr_be_update_read_handlers: diff --git a/include/sysemu/replay.h b/include/sysemu/replay.h index 73dee9ccdf..7ec0882b50 100644 --- a/include/sysemu/replay.h +++ b/include/sysemu/replay.h @@ -198,7 +198,7 @@ uint64_t blkreplay_next_id(void); /*! Registers char driver to save it's events */ void replay_register_char_driver(struct Chardev *chr); /*! Saves write to char device event to the log */ -void replay_chr_be_write(struct Chardev *s, uint8_t *buf, int len); +void replay_chr_be_write(struct Chardev *s, const uint8_t *buf, int len); /*! Writes char write return value to the replay log. */ void replay_char_write_event_save(int res, int offset); /*! Reads char write return value from the replay log. */ diff --git a/replay/replay-char.c b/replay/replay-char.c index d2025948cf..a31aded032 100644 --- a/replay/replay-char.c +++ b/replay/replay-char.c @@ -48,7 +48,7 @@ void replay_register_char_driver(Chardev *chr) char_drivers[drivers_count++] =3D chr; } -void replay_chr_be_write(Chardev *s, uint8_t *buf, int len) +void replay_chr_be_write(Chardev *s, const uint8_t *buf, int len) { CharEvent *event =3D g_new0(CharEvent, 1); diff --git a/stubs/replay-tools.c b/stubs/replay-tools.c index f2e72bb225..3e8ca3212d 100644 --- a/stubs/replay-tools.c +++ b/stubs/replay-tools.c @@ -53,7 +53,7 @@ void replay_register_char_driver(struct Chardev *chr) { } -void replay_chr_be_write(struct Chardev *s, uint8_t *buf, int len) +void replay_chr_be_write(struct Chardev *s, const uint8_t *buf, int len) { abort(); } -- 2.34.1 From nobody Fri May 17 15:26:32 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=gmx.de ARC-Seal: i=1; a=rsa-sha256; t=1662921425; cv=none; d=zohomail.com; s=zohoarc; b=eK7x0u2L48tpcV8D8NDhspYgk4L7N7BhN1jZMEZImO7odk5XUKDUV/6IVisfg5Q/eu+DbvWYGbxX750VfrDmIXJqZo53CnnhlKWDlx9sDZZphyHRwd4d/9Rl3FV2XewGTPy1PDe3z3N7H2W/yAMtXefRraiNkB5Q4tCZE7shyNg= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1662921425; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=HjG9W1tkm1fX0NspNBcf86CbP3xhMxN5FJpNg+KOyEY=; b=fwqKFI3ZPVDeAw3HrdT0+KGzq6oYmjQA61Xy8tE/6L7oEe6EJFhrFc1ISeg3s1A2aNY3ScdfT1NYPHU39dZqGEz5qiRbrVVhcID1VqliMgue0mZhBXL4XvBEI1anoPpxCUByKXYkPdJM5PTbU0qgpOPasjkHJMQMCOfDssZZE4I= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1662921425940272.91733236316657; Sun, 11 Sep 2022 11:37:05 -0700 (PDT) Received: from localhost ([::1]:45732 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1oXRpI-00067A-J0 for importer@patchew.org; Sun, 11 Sep 2022 14:37:04 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:49134) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1oXRZ2-0005TZ-8F; Sun, 11 Sep 2022 14:20:16 -0400 Received: from mout.gmx.net ([212.227.15.18]:52783) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1oXRZ0-0003UH-C8; Sun, 11 Sep 2022 14:20:15 -0400 Received: from btm-mobil4.fritz.box ([178.8.103.147]) by mail.gmx.net (mrgmx005 [212.227.17.190]) with ESMTPSA (Nemesis) id 1MFsUv-1oYFqY2gAx-00HS0f; Sun, 11 Sep 2022 20:20:09 +0200 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=gmx.net; s=badeba3b8450; t=1662920410; bh=6D2n6vt7vPa8OcErSCHndf2SWlv4bAa6GeHMV0v/ui8=; h=X-UI-Sender-Class:From:To:Cc:Subject:Date:In-Reply-To:References; b=lniC+4Ci8G4rO7qgtPV7jmod95o+JcQDCOthXDrF8fi3cGfLFYer69Z7Uk1TDsvZa aDoR9DJeaunzygATnssBQFqPM3VoXjc0YXhsihwmqYKVPdxJJL6LB8D2gdBq/EgppV af9kSZlem1qEPceMHwpeKnqgpaopRXs6UD9p+1L4= X-UI-Sender-Class: 01bb95c1-4bf8-414a-932a-4f6e2808ef9c From: Arwed Meyer To: qemu-devel@nongnu.org Cc: qemu-stable@nongnu.org, Arwed Meyer , =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= , Paolo Bonzini Subject: [PATCH v3 3/5] msmouse: Use fifo8 instead of array Date: Sun, 11 Sep 2022 20:18:38 +0200 Message-Id: <20220911181840.8933-4-arwed.meyer@gmx.de> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20220911181840.8933-1-arwed.meyer@gmx.de> References: <20220911181840.8933-1-arwed.meyer@gmx.de> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Provags-ID: V03:K1:hbiNUpFGzGCEhFcR1lJbo7tZcJjqaKaKzJaxuYIyZD+g5dDnDXB gqMeQ/RYSYO817d8eUfmE/o6ZCQU7Z8kvbD0q8T+sC8pWVRmXdza1xw/JJlRYU8JXIRuJth gaT1kZaI/iA8UtDY4qGDPdJVPaamlVLGyDCMkVCEtnApRD6s6XepOQJT6hNkq5UE8LDDo3d Zkrh9leNN2fFivc7slSUA== X-UI-Out-Filterresults: notjunk:1;V03:K0:UmwsYnUG2cc=:NeJnG1RJ+pNaJZfSd46bgm p0LrfN5RfwIboD8uwCaHnkRAswVfU+0UPT33VdLM1SoHq5fQppl4lOVVtyIpHf+1PMKFcm7G4 uPzToZ6PT/0U9i0BiIvh6scetcx9CdMpVC/hYXIai7oZ/qWb7SATtRGqbo+VJJ5MUFaS2OdkE iNc0+r5UkZQEMhjCNeVcIA1kcnhjJUi199/ORdlSwWQItzOndU97JL+hntdl4C+ddRrR+cqHy zTiyfsZ+J38YxGfxHj+DWtjKSSyDNwhDbPjCEn7YOnh1kivN4jqom0lfHp7yZyUacPQRXl1uT Z94k7JYsggKvxwKOXOxDKXBCZ+7Ve8wujCInRvPISQ8R75L2KQ6HneUa3KgndA4CDDRCoNXFu RNgVsrDFRmB3d45eKoYaNtOutlIDNLoxQiNj6BCerLAEtbs4aLKudV5Y0AF5jGo4CR9TinTVa Dp8IRKTfyYZmo2VmN5HYRlk+JJSHJDI02QUmhkmb90DOx67KuY9BLDjETlHz6ACnEzMT4vMH6 PjwAMC5pfJTfaGI9h9ctc+KvtUhTI3s18Cg+3Gdz+hBhwDV6Q4WloLCKXAunsvB3L4NjvkWmC tbE051h4Mg6A/tjkoBB5HZDOVAzsjKcdNElMJbuiZ5kDUHuTtZI7ET2XJGrht+FyU+/ROi9iT AfRYnkHEycxM2QXGkoOTU2Kds6IoOAFmqdWq7duUMhkENvJI8y2ayQ8r5E5w6VCABJjLyimis 8nc6GGZV59FND5tKBdt5gVNUjOX/sviSMntaHuXm7D/hOBUDOF9YS5Si+Un+d5xGOkcBd0GZH lo5D+u0YG0wPm5Dyfc+c3kcQF1jglyonggd4UngTa/zUZ4BzKjmKllaV1BHifTjLN6cHMdfvp SHYd6yxdEGiWuZ7Q3kJVHQo5EMMqrKezRICta5tbYNcQ/cJ3sljiQ1VDY7vixAhJwmpJR7vgr PWOxvLSnx69CldhhDz9+ydQUpEKn2D7XDNCQP4JlpCp/jmrdu47Cuyz3RImL+chqVZiNNpjdz 9vlHGkr+i34Zo5J51cV7JfuB43eIM+H0HxsWXffKZZotwtoh4umvuOjqIEYZeL0Jsc1htgOsQ MVvN6QQ+ab2hET+q2Ke+2Uy35JVBc2svrI2ckQBJRTFlnf81cBu7Zhn06462TU5DnHxxhMLyZ t6R0pvk7YhdYOCHTNiiJba2CSf Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=212.227.15.18; envelope-from=arwed.meyer@gmx.de; helo=mout.gmx.net X-Spam_score_int: -25 X-Spam_score: -2.6 X-Spam_bar: -- X-Spam_report: (-2.6 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_LOW=-0.7, RCVD_IN_MSPIKE_H2=-0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: pass (identity @gmx.net) X-ZM-MESSAGEID: 1662921426642100001 Content-Type: text/plain; charset="utf-8" Make use of fifo8 functions instead of implementing own fifo code. This makes the code more readable and reduces risk of bugs. Signed-off-by: Arwed Meyer Reviewed-by: Marc-Andr=C3=A9 Lureau --- chardev/msmouse.c | 47 +++++++++++++++++++++++++---------------------- 1 file changed, 25 insertions(+), 22 deletions(-) diff --git a/chardev/msmouse.c b/chardev/msmouse.c index 95fa488339..5982c15df6 100644 --- a/chardev/msmouse.c +++ b/chardev/msmouse.c @@ -24,6 +24,7 @@ #include "qemu/osdep.h" #include "qemu/module.h" +#include "qemu/fifo8.h" #include "chardev/char.h" #include "chardev/char-serial.h" #include "ui/console.h" @@ -34,6 +35,12 @@ #define MSMOUSE_HI2(n) (((n) & 0xc0) >> 6) #define MSMOUSE_PWR(cm) (cm & (CHR_TIOCM_RTS | CHR_TIOCM_DTR)) +/* Serial fifo size. */ +#define MSMOUSE_BUF_SZ 64 + +/* Mouse ID: Send "M3" cause we behave like a 3 button logitech mouse. */ +const uint8_t mouse_id[] =3D {'M', '3'}; + struct MouseChardev { Chardev parent; @@ -42,8 +49,7 @@ struct MouseChardev { int axis[INPUT_AXIS__MAX]; bool btns[INPUT_BUTTON__MAX]; bool btnc[INPUT_BUTTON__MAX]; - uint8_t outbuf[32]; - int outlen; + Fifo8 outbuf; }; typedef struct MouseChardev MouseChardev; @@ -54,20 +60,18 @@ DECLARE_INSTANCE_CHECKER(MouseChardev, MOUSE_CHARDEV, static void msmouse_chr_accept_input(Chardev *chr) { MouseChardev *mouse =3D MOUSE_CHARDEV(chr); - int len; + uint32_t len, avail; len =3D qemu_chr_be_can_write(chr); - if (len > mouse->outlen) { - len =3D mouse->outlen; - } - if (!len) { - return; - } - - qemu_chr_be_write(chr, mouse->outbuf, len); - mouse->outlen -=3D len; - if (mouse->outlen) { - memmove(mouse->outbuf, mouse->outbuf + len, mouse->outlen); + avail =3D fifo8_num_used(&mouse->outbuf); + while (len > 0 && avail > 0) { + const uint8_t *buf; + uint32_t size; + + buf =3D fifo8_pop_buf(&mouse->outbuf, MIN(len, avail), &size); + qemu_chr_be_write(chr, buf, size); + len =3D qemu_chr_be_can_write(chr); + avail -=3D size; } } @@ -94,12 +98,11 @@ static void msmouse_queue_event(MouseChardev *mouse) mouse->btnc[INPUT_BUTTON_MIDDLE]) { bytes[3] |=3D (mouse->btns[INPUT_BUTTON_MIDDLE] ? 0x20 : 0x00); mouse->btnc[INPUT_BUTTON_MIDDLE] =3D false; - count =3D 4; + count++; } - if (mouse->outlen <=3D sizeof(mouse->outbuf) - count) { - memcpy(mouse->outbuf + mouse->outlen, bytes, count); - mouse->outlen +=3D count; + if (fifo8_num_free(&mouse->outbuf) >=3D count) { + fifo8_push_all(&mouse->outbuf, bytes, count); } else { /* queue full -> drop event */ } @@ -172,9 +175,7 @@ static int msmouse_ioctl(Chardev *chr, int cmd, void *a= rg) * cause we behave like a 3 button logitech * mouse. */ - mouse->outbuf[0] =3D 'M'; - mouse->outbuf[1] =3D '3'; - mouse->outlen =3D 2; + fifo8_push_all(&mouse->outbuf, mouse_id, sizeof(mouse_id)); /* Start sending data to serial. */ msmouse_chr_accept_input(chr); } @@ -184,7 +185,7 @@ static int msmouse_ioctl(Chardev *chr, int cmd, void *a= rg) * Reset mouse buffers on power down. * Mouse won't send anything without power. */ - mouse->outlen =3D 0; + fifo8_reset(&mouse->outbuf); memset(mouse->axis, 0, sizeof(mouse->axis)); memset(mouse->btns, false, sizeof(mouse->btns)); memset(mouse->btnc, false, sizeof(mouse->btns)); @@ -204,6 +205,7 @@ static void char_msmouse_finalize(Object *obj) MouseChardev *mouse =3D MOUSE_CHARDEV(obj); qemu_input_handler_unregister(mouse->hs); + fifo8_destroy(&mouse->outbuf); } static QemuInputHandler msmouse_handler =3D { @@ -224,6 +226,7 @@ static void msmouse_chr_open(Chardev *chr, mouse->hs =3D qemu_input_handler_register((DeviceState *)mouse, &msmouse_handler); mouse->tiocm =3D 0; + fifo8_create(&mouse->outbuf, MSMOUSE_BUF_SZ); } static void char_msmouse_class_init(ObjectClass *oc, void *data) -- 2.34.1 From nobody Fri May 17 15:26:32 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=gmx.de ARC-Seal: i=1; a=rsa-sha256; t=1662921186; cv=none; d=zohomail.com; s=zohoarc; b=VCZPaVEYZjlBYxtJ1aRHHh8WD4GE99pYaJMMk+SWO2vtkm6Ox2jGgMfj8T2y90EVTKpjKqYt5H/84j51lbv2srS+96v73oGtVzlRghu11UednRF7dn/+zcjbzB1QdK4ZGBNzQR1SLNfwh1CccIrZOb96QwISisNMvGxjQHBJ75Y= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1662921186; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=PmkfutiaNL3U9jVa54uhbt75A6aWhPViPwyk+iPs4bQ=; b=gGXQIr3kLuP+ml2d1pXIT1dKj1t0XOBLts7RuDEYBCYRn/yssROClwgsoK2IT25fDC+Xjz+Mj97oDl0HRJtO+yZZCxtEETzY/9b30NYSTp9RyjUOf8x5vc8G05jmmkEbrZFXvMCp1OGzCsAJ2tlQoUMPM7eWGWUJmYT/4ioyKzE= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1662921186087908.4654973035174; Sun, 11 Sep 2022 11:33:06 -0700 (PDT) Received: from localhost ([::1]:34636 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1oXRlM-0001yY-OM for importer@patchew.org; Sun, 11 Sep 2022 14:33:01 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:49136) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1oXRZ2-0005Vt-MY; Sun, 11 Sep 2022 14:20:16 -0400 Received: from mout.gmx.net ([212.227.15.19]:60679) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1oXRZ0-0003V8-Sh; Sun, 11 Sep 2022 14:20:16 -0400 Received: from btm-mobil4.fritz.box ([178.8.103.147]) by mail.gmx.net (mrgmx005 [212.227.17.190]) with ESMTPSA (Nemesis) id 1MowKi-1p7JTw1uOM-00qViC; Sun, 11 Sep 2022 20:20:10 +0200 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=gmx.net; s=badeba3b8450; t=1662920410; bh=e4vlNlcI1oCuqYZ/cqmws4Wte8dT3gjwomXBDaL+ROI=; h=X-UI-Sender-Class:From:To:Cc:Subject:Date:In-Reply-To:References; b=RTuI72su24CIvFRR3ilA5GrkEhtPjAWEWRGyd0VfIMm9u3DLzXf1OXZysuuKEAH/c F5yMMA6q6gdt0fDoUw89q+eky7KrmKFFSIXKsGOv2ZBdJoQ6IclSjHcH2iJR2TtjPc 10M/TEME0GJwRonAn4H20g8gIfTVtuAN+pP7whcI= X-UI-Sender-Class: 01bb95c1-4bf8-414a-932a-4f6e2808ef9c From: Arwed Meyer To: qemu-devel@nongnu.org Cc: qemu-stable@nongnu.org, Arwed Meyer , =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= , Paolo Bonzini Subject: [PATCH v3 4/5] msmouse: Add pnp data Date: Sun, 11 Sep 2022 20:18:39 +0200 Message-Id: <20220911181840.8933-5-arwed.meyer@gmx.de> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20220911181840.8933-1-arwed.meyer@gmx.de> References: <20220911181840.8933-1-arwed.meyer@gmx.de> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Provags-ID: V03:K1:uHkoRgtGUSNB1vtVr8JRbN7TjtrmF6iHztnBPzNIQ4vnUZ+ajvh JK43gioHyclx4EIuJL3T2oLILtP8SBvvOVZs8AHMFz380xEjXogBtury57dLv8LBDAozauZ yVzZtvkCc08iJ3djjmqMuqAnCqTEoWDBJ3s9UUS87Q5i5IlFBF0sV4go6Pjr+ZaJmgiwJ48 7G4zUv0w4gtnvTvTMkyKA== X-UI-Out-Filterresults: notjunk:1;V03:K0:EFYGU6LLg0o=:gw4XXW4toJAl1cifxWUZ9Q Os60e8Jv3eiV0Yt2Lx2OYQ46abE72Wit0VL7duiYUM9TZrcwsb1tXR29Wc3d40m8FhkzzIaQT OrxLsrzC0MTyLqlQPohkmEYpuQozP2kWIpWcqDx4GeIyygTnoJy4f5nY9TjSZr6o64n8woXLy tNkK68ScdOveDQtNTDJbGtZV5B9JqXG7Pvp0Q52DEB+V1yRrzff1ieAWedCBNgQLhrussduIQ xzcSfU54FxEb3SqG7ZzqHIcWJwyIegZkgXmf9A7SHvnni2xoKs3UhkzydV6iLDK0d0IRZqobw 97nCpFSqAPGEK5euinvQ3P/X5MVMZv+MR63TNROME6vTjQSGTdahUc5DfPpzY2oIDSxbJxywr EPYps87FrynjKwQzHccceKVUQTa0NT0A+LAr0KqBUEAppqEYE8tOYbn0BWgibK7Y3/Gb96JFH Z+ptvAvo1OmEUqU0rMMNjpK1VZTRPoc4WzbmVFVJ+DTqQZ3FOBQLnHzQNiDpDo2SG47p21C5A JkVWi2lZ0D8tVBBAwnjdehcd+ciUP4I7HCZp37MmEHBgyS+FzYYi7uDyw+uhesMJ3LNLM/LDt AM5Ud4flvEIF3I3QDFZ+hgBhnTGORvjI44nxSDnxaTlrHXXJ9+QGsDOf+qWUoyyhyLqdkkg9P XvrPW7NJSWMggaQepLtwQdQavMb7cLAWZm1mm0lQvE0vJl/deA0J7kfiL18Aq0OF66S8Ne9vf iohb7SQxA4SYgGklIxkKQhYt2qhAwSL1I+dStGB9+f6Xm28E2q5RyrhHZBUohonfnT4+Y7dnN bDVYliBP6QI3pOLp8RC+vRYTcab5MXh3VCxqYC1JkVXnmF9xU93HNMnfPIzqxwDuaVA/UYYwH d7EJe+WZ5Qz3VeUakateD2mY7N4P+vauCUNK/VxRVfW3hg7t2AF6GuDdChs8HAEOfcJts8B5m mmBmeqVBqJhWUQFNzxPRllMzTPNxrn5RZVLd36byqeTVeqoxlC8/AbtZq18RcsW5DJMoFIiXD Klvv1trV0ZHpnUvPt1cYY70Ox/EOz1T1/6eKypQBYUlQSB7ODvnYa87uyr2/Sev156jacgUi0 XHjBfxTUolhSz/KImIl+ActyUdZPzW4Rh0Jiv4k1rDXy90OvXbmxFp85OFs2Vv8jfPOjLE1RY 72jpHvonwxRwdYRdbOEjLyOUL7 Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=212.227.15.19; envelope-from=arwed.meyer@gmx.de; helo=mout.gmx.net X-Spam_score_int: -25 X-Spam_score: -2.6 X-Spam_bar: -- X-Spam_report: (-2.6 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_LOW=-0.7, RCVD_IN_MSPIKE_H2=-0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: pass (identity @gmx.net) X-ZM-MESSAGEID: 1662921188228100001 Content-Type: text/plain; charset="utf-8" Make msmouse send serial pnp data. Enables you to see nice qemu device name in Win9x. Signed-off-by: Arwed Meyer Reviewed-by: Marc-Andr=C3=A9 Lureau --- chardev/msmouse.c | 58 ++++++++++++++++++++++++++++++++++++++--------- 1 file changed, 47 insertions(+), 11 deletions(-) diff --git a/chardev/msmouse.c b/chardev/msmouse.c index 5982c15df6..9006703023 100644 --- a/chardev/msmouse.c +++ b/chardev/msmouse.c @@ -35,11 +35,24 @@ #define MSMOUSE_HI2(n) (((n) & 0xc0) >> 6) #define MSMOUSE_PWR(cm) (cm & (CHR_TIOCM_RTS | CHR_TIOCM_DTR)) +/* Serial PnP for 6 bit devices/mice sends all ASCII chars - 0x20 */ +#define M(c) (c - 0x20) /* Serial fifo size. */ #define MSMOUSE_BUF_SZ 64 /* Mouse ID: Send "M3" cause we behave like a 3 button logitech mouse. */ const uint8_t mouse_id[] =3D {'M', '3'}; +/* + * PnP start "(", PnP version (1.0), vendor ID, product ID, '\\', + * serial ID (omitted), '\\', MS class name, '\\', driver ID (omitted), '\= \', + * product description, checksum, ")" + * Missing parts are inserted later. + */ +const uint8_t pnp_data[] =3D {M('('), 1, '$', M('Q'), M('M'), M('U'), + M('0'), M('0'), M('0'), M('1'), + M('\\'), M('\\'), + M('M'), M('O'), M('U'), M('S'), M('E'), + M('\\'), M('\\')}; struct MouseChardev { Chardev parent; @@ -158,11 +171,22 @@ static int msmouse_chr_write(struct Chardev *s, const= uint8_t *buf, int len) return len; } +static QemuInputHandler msmouse_handler =3D { + .name =3D "QEMU Microsoft Mouse", + .mask =3D INPUT_EVENT_MASK_BTN | INPUT_EVENT_MASK_REL, + .event =3D msmouse_input_event, + .sync =3D msmouse_input_sync, +}; + static int msmouse_ioctl(Chardev *chr, int cmd, void *arg) { MouseChardev *mouse =3D MOUSE_CHARDEV(chr); - int c; + int c, i, j; + uint8_t bytes[MSMOUSE_BUF_SZ / 2]; int *targ =3D (int *)arg; + const uint8_t hexchr[16] =3D {M('0'), M('1'), M('2'), M('3'), M('4'), = M('5'), + M('6'), M('7'), M('8'), M('9'), M('A'), M('B'= ), + M('C'), M('D'), M('E'), M('F')}; switch (cmd) { case CHR_IOCTL_SERIAL_SET_TIOCM: @@ -171,11 +195,30 @@ static int msmouse_ioctl(Chardev *chr, int cmd, void = *arg) if (MSMOUSE_PWR(mouse->tiocm)) { if (!MSMOUSE_PWR(c)) { /* - * Power on after reset: send "M3" - * cause we behave like a 3 button logitech - * mouse. + * Power on after reset: Send ID and PnP data + * No need to check fifo space as it is empty at this poin= t. */ fifo8_push_all(&mouse->outbuf, mouse_id, sizeof(mouse_id)); + /* Add PnP data: */ + fifo8_push_all(&mouse->outbuf, pnp_data, sizeof(pnp_data)); + /* + * Add device description from qemu handler name. + * Make sure this all fits into the queue beforehand! + */ + c =3D M(')'); + for (i =3D 0; msmouse_handler.name[i]; i++) { + bytes[i] =3D M(msmouse_handler.name[i]); + c +=3D bytes[i]; + } + /* Calc more of checksum */ + for (j =3D 0; j < sizeof(pnp_data); j++) { + c +=3D pnp_data[j]; + } + c &=3D 0xff; + bytes[i++] =3D hexchr[c >> 4]; + bytes[i++] =3D hexchr[c & 0x0f]; + bytes[i++] =3D M(')'); + fifo8_push_all(&mouse->outbuf, bytes, i); /* Start sending data to serial. */ msmouse_chr_accept_input(chr); } @@ -208,13 +251,6 @@ static void char_msmouse_finalize(Object *obj) fifo8_destroy(&mouse->outbuf); } -static QemuInputHandler msmouse_handler =3D { - .name =3D "QEMU Microsoft Mouse", - .mask =3D INPUT_EVENT_MASK_BTN | INPUT_EVENT_MASK_REL, - .event =3D msmouse_input_event, - .sync =3D msmouse_input_sync, -}; - static void msmouse_chr_open(Chardev *chr, ChardevBackend *backend, bool *be_opened, -- 2.34.1 From nobody Fri May 17 15:26:32 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=gmx.de ARC-Seal: i=1; a=rsa-sha256; t=1662921991; cv=none; d=zohomail.com; s=zohoarc; b=OQeXkwczRGLOtVAMIjzeQnRwiv5nkfOSdSjWrZha4a6iGVzYXIP51emSfVLq0GjQ9CLoyt0qKr+xGpuljK847trZRMKiC8KowcZAat+ty0jPDK8lGJ+yNGlDtBbLPEziSqfZHd2lJxdOio1hNqGBT8kmUMI/7RhxvFjUYtWsbKU= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1662921991; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=olegijg/zzmn/qwcpcwSdoRjn/mieoR+9bXcKiUMyYg=; b=QyyHlJSUA8P7y5qw+nTnWoMgYhJ4O8KDiVAhBe93uz0Sx4XcWl0Dz5CJkfcZDpSJasOEqMcjEwYxgh/gKbh5kAIZQwFcmxwjOQ4Wd9VjnPx799DqlXtvH/WyRlPqHXDNsXQnEF9+/qu/SyxR4zxBXM4XnGt2zKzRhPBARyowqD8= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 166292199130876.44694153977889; Sun, 11 Sep 2022 11:46:31 -0700 (PDT) Received: from localhost ([::1]:55020 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1oXRyQ-00030N-BW for importer@patchew.org; Sun, 11 Sep 2022 14:46:30 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:49138) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1oXRZ3-0005YR-BS; Sun, 11 Sep 2022 14:20:17 -0400 Received: from mout.gmx.net ([212.227.15.18]:50139) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1oXRZ1-0003Vf-5a; Sun, 11 Sep 2022 14:20:17 -0400 Received: from btm-mobil4.fritz.box ([178.8.103.147]) by mail.gmx.net (mrgmx005 [212.227.17.190]) with ESMTPSA (Nemesis) id 1N5VHM-1pQ5Jp077i-016w8S; Sun, 11 Sep 2022 20:20:11 +0200 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=gmx.net; s=badeba3b8450; t=1662920411; bh=6tNsnvyALQCekAEnGgE4v3vfbs9lSzguI1+wfNRfGJU=; h=X-UI-Sender-Class:From:To:Cc:Subject:Date:In-Reply-To:References; b=A1fkn5Dwfx2CvPKl0keA+eyZ7RAJ+WRIWrQgBTa6LgW23ot0n8IRR9d3uGZDyf/dv ERWtlstHK0Y9aq65tkdkVfhLxJGrFS+xY6FxBPispegmiu9U/ZP9z8QaLUAdF0o7ka JIMcvTBNUO+ALfu9VMnzml6K6DPzpWweVlarh/XY= X-UI-Sender-Class: 01bb95c1-4bf8-414a-932a-4f6e2808ef9c From: Arwed Meyer To: qemu-devel@nongnu.org Cc: qemu-stable@nongnu.org, Arwed Meyer , "Michael S. Tsirkin" , Paolo Bonzini , =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= Subject: [PATCH v3 5/5] serial: Allow unaligned i/o access Date: Sun, 11 Sep 2022 20:18:40 +0200 Message-Id: <20220911181840.8933-6-arwed.meyer@gmx.de> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20220911181840.8933-1-arwed.meyer@gmx.de> References: <20220911181840.8933-1-arwed.meyer@gmx.de> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Provags-ID: V03:K1:qU94FYFuIO0wuh8O2fL7EaCNs8iDWdHktmifAvJD8N4EdvpIcx4 o98fPRWcuuIMx84Dkp4wJCPRbJqKvXrD1OJ6+WoAHgpGcY2nlBeXmBvIFIvVeRVdgF07Wa9 7L4JxDp1QA6Nufj4X1E8Sm3NGnYtrYA2T5hvXd5uVQYhtfwSDgjTGDQ9O4zkJpS9sRfL7Ka xeOwqt2dJfASRZC6au3ug== X-UI-Out-Filterresults: notjunk:1;V03:K0:LY/N6H4Dsys=:yseZBKgfw8KD4vbg2cRyfj BxAY2RWiaFRGFF5jZOpPd2P9nyVpT+9BhEQMDGk63+jeH+LVBzucW9Az8ag5FGu7P0UsEg3ot R9s6p/G7Yxj+erX0Codt0MQyL2Tpr12q/duIalpN6+UkDx/9NnKuL4aKZMurdcuVejHNY7OVQ A0OX7SVhLTxl4ZmXpockeXT6loSw/KW27CY6xnvaeDHX+xMykcWwFoUqpUM1E637f382W335w GdPoe+sCxr8Z3i58vqvNsgkMr9CJ/W/FGFZzV7a0AdtpGfYyRG3o0EunGmrn5d5u16B/wXiyJ 0Z4pn6GqIjtUABsK57ZJnyRiO/LIfGfa164kXEhpaDX2A738reZKwptY+ugYVM8kkKWr6G7Xu GG+AgDDxUvBmnwL6zHJevy3CwzphBU60lgBX0z8LOlv5rP3ZM6xpedkUMHSFdEofkdOlZbK7L YNAVLziQJHVC8O6b+N89VaVr61HEOSuqJ9LBbHjDgpKhYbpNdtfJi0Y+8W534Gj4lFelPbhi5 rOM3XlLVLmkhwMCbZTSoUrjDw1rDlQJyKwRbA7mkLwFXtnrTdn2FUpuOWmaiJN/1IRSJQEWHH +IvzwO4MwlA6lega9NbA3TtTr2f5b8rPCd8aMNsobQG2iIph1TmNRfSeEUWpkZLFb0kUoUlw+ ySIODtTS1FPBrt4LFTh6Vkc0O9drSlgr9Vy+E1fTLymPSIT4tttLXsMAqo7GSbPFjEr5r0I9E ut0YnihFi4hzcoI9kOaTLACi9co73MszXQU20r784MsDfnlfT3yJlVoqJ1bFrBfOVCX9IAo7q xdQ8SPETNXi9qKuKscR0qh5oyNguXymvY2A82pmb9exyzNygLXA8/2M/phmJnq55Ei94o+uAH /AjlVPti0aYOXVF8ZcXDBParo341yzjosTE0KVE8mKSDNqD/fAcZL1AKcQg4KMSDV64kWNO6S oP4JSmYteallDgDp8aBAOecGe8OwM2L4BRv4JKRTB2qf1EW2XxgaQ/V/sMnSo2epUuXYT4cvo lA7mLDpb94Mb2oPKn9EPZb/yk5Wfe7DYyagpoTyWE9gG9mATMQmd5W3kQ6CnxqmIKLNEXJ3AU JQtthP8guak5EGICXHO7Pci6tWca/pZwMAzgvFbxSwkRKYIx19kpFS3p2lwN6ObRnED1oevuo b2Te2mBUlFhyHCNJHewRdfqC7e Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=212.227.15.18; envelope-from=arwed.meyer@gmx.de; helo=mout.gmx.net X-Spam_score_int: -25 X-Spam_score: -2.6 X-Spam_bar: -- X-Spam_report: (-2.6 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_LOW=-0.7, RCVD_IN_MSPIKE_H2=-0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: pass (identity @gmx.net) X-ZM-MESSAGEID: 1662921992601100001 Content-Type: text/plain; charset="utf-8" Unaligned i/o access on serial UART works on real PCs. This is used for example by FreeDOS CTMouse driver. Without this it can't reset and detect serial mice. Resolves: https://gitlab.com/qemu-project/qemu/-/issues/77 Signed-off-by: Arwed Meyer Reviewed-by: Marc-Andr=C3=A9 Lureau --- hw/char/serial.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/hw/char/serial.c b/hw/char/serial.c index 7061aacbce..41b5e61977 100644 --- a/hw/char/serial.c +++ b/hw/char/serial.c @@ -961,6 +961,9 @@ void serial_set_frequency(SerialState *s, uint32_t freq= uency) const MemoryRegionOps serial_io_ops =3D { .read =3D serial_ioport_read, .write =3D serial_ioport_write, + .valid =3D { + .unaligned =3D 1, + }, .impl =3D { .min_access_size =3D 1, .max_access_size =3D 1, -- 2.34.1