From nobody Thu Sep 4 21:08:07 2025 X-Original-To: dev-commits-src-main@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4cHsWr0Bklz66WVT; Thu, 04 Sep 2025 21:08:08 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R12" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4cHsWq5kR5z3lFQ; Thu, 04 Sep 2025 21:08:07 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1757020087; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=3keDLJ/AW1uEosyUYylayVOXFWdLNci37yXsKxNzcUk=; b=B3LayWdOHm7K6sk0SRwpdlsQhXERieUgckJdXVSv8BREH/NgXFYlVfv9Gh6jrGn9ZH+4Dl pAh6RXJCS63D+X+c1modifBquIL8b/n/X2HlPuPIwnebkgo6DPa0h5/IMdlOvH1MzN3eJ9 NWFMkBTVzGiRsXp607xlcDphRa85APLyKUsid5jnXn6sMUVoA+t/y4gdNHcJYnTSBB4iQ2 QbINHQuJ1JjAjTQp9SsM5Z+13SQPOmwHDScgmunuYp2sZsCugWp4SDngVCqOFuKMXBZypK 1j6j60jUTUyBkQ9rHerdLaufaeaVlk9Dz6EksXwg8R9PL/qfqCoDmrlsvVsM5A== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1757020087; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=3keDLJ/AW1uEosyUYylayVOXFWdLNci37yXsKxNzcUk=; b=GaAO69jCd7DlOLtHRgze7d2jTYiVM3fwweJ9SdDxIH4f3ev02H5p4jjmoZySn9xpXV58F2 kuGnitRkyDUj/RccZ/u8EcQyrKcyXdXB7tY2hHDEH1x4bp/5hGAMRDah3tdzTFyNjI7eqb HPZeI9Po4JzAvRJ3OMV68cekFUY5P+wxgj2U5i4Xky4zjCldXfu3ydc39R+ZUsVPi8ZeJq vI49mzfm0rRLqbFmFEKvhAZ+peEAzpX2khKxqyC9EWC/K9ne9Rh7AjSJYd9pMF4D86hC0f v16Uvnuan0R3TETRcgxOyH+pWtybN2Mr4kN+lXQNuz0UinIwhoauueekqVLqNA== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1757020087; a=rsa-sha256; cv=none; b=WLvX9cSZOkoEKDkVjYbv5zhJ3lhy/umQn/To288swVG+bOrWZP7ZssMvjszF5AVzcDKDCm foY+hi8CXA2qL6A/qVJPOpffG6mOBr4XgKedYiyKmu6FCozlFvidcVcnof4xk9Tymc0SLm s9amr/QM+pfySpERV7DQSI84HWwEm9NBXP2Yr8uUN0yTLyLlWhAMssol/TA9W7hhuOBZQi 3cicTWc+8rybtl5/9NcDTdAcrSQyVY1g58dZiEOg4CpV1tCCunyuMRgvBnJimjMVLZlkB7 gBsqfRNUu8BYzZ4Ee9vo9OJrkN84TFdQ4nqQQLHN+NESWKn3xxu60YaO/AeZNg== ARC-Authentication-Results: i=1; mx1.freebsd.org; none Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4cHsWq5Bkpz48N; Thu, 04 Sep 2025 21:08:07 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 584L87PF060980; Thu, 4 Sep 2025 21:08:07 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 584L87n2060977; Thu, 4 Sep 2025 21:08:07 GMT (envelope-from git) Date: Thu, 4 Sep 2025 21:08:07 GMT Message-Id: <202509042108.584L87n2060977@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Vladimir Kondratyev Subject: git: 641f525a87c9 - main - cyapa(4): Add support for reporting data with sysmouse protocol List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: wulf X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 641f525a87c9a32635ce51a102ebb5c0aa9ff921 Auto-Submitted: auto-generated The branch main has been updated by wulf: URL: https://cgit.FreeBSD.org/src/commit/?id=641f525a87c9a32635ce51a102ebb5c0aa9ff921 commit 641f525a87c9a32635ce51a102ebb5c0aa9ff921 Author: Vladimir Kondratyev AuthorDate: 2025-09-04 21:07:25 +0000 Commit: Vladimir Kondratyev CommitDate: 2025-09-04 21:07:25 +0000 cyapa(4): Add support for reporting data with sysmouse protocol Earlier only intellimouse protocol was supported. --- sys/dev/cyapa/cyapa.c | 95 ++++++++++++++++++++++++++++++++------------------- 1 file changed, 59 insertions(+), 36 deletions(-) diff --git a/sys/dev/cyapa/cyapa.c b/sys/dev/cyapa/cyapa.c index 50fa4faa560a..ed755f992949 100644 --- a/sys/dev/cyapa/cyapa.c +++ b/sys/dev/cyapa/cyapa.c @@ -761,42 +761,60 @@ again: /* * Generate report */ - c0 = 0; - if (delta_x < 0) - c0 |= 0x10; - if (delta_y < 0) - c0 |= 0x20; - c0 |= 0x08; - if (but & CYAPA_FNGR_LEFT) - c0 |= 0x01; - if (but & CYAPA_FNGR_MIDDLE) - c0 |= 0x04; - if (but & CYAPA_FNGR_RIGHT) - c0 |= 0x02; - - fifo_write_char(sc, &sc->rfifo, c0); - fifo_write_char(sc, &sc->rfifo, (uint8_t)delta_x); - fifo_write_char(sc, &sc->rfifo, (uint8_t)delta_y); - switch(sc->zenabled) { - case 1: - /* Z axis all 8 bits */ - fifo_write_char(sc, &sc->rfifo, (uint8_t)delta_z); - break; - case 2: - /* - * Z axis low 4 bits + 4th button and 5th button - * (high 2 bits must be left 0). Auto-scale - * delta_z to fit to avoid a wrong-direction - * overflow (don't try to retain the remainder). - */ - while (delta_z > 7 || delta_z < -8) - delta_z >>= 1; - c0 = (uint8_t)delta_z & 0x0F; + if (sc->mode.level == 1) { + c0 = MOUSE_SYS_SYNC; + if (but & CYAPA_FNGR_LEFT) + c0 |= MOUSE_SYS_BUTTON1UP; + if (but & CYAPA_FNGR_MIDDLE) + c0 |= MOUSE_SYS_BUTTON2UP; + if (but & CYAPA_FNGR_RIGHT) + c0 |= MOUSE_SYS_BUTTON3UP; fifo_write_char(sc, &sc->rfifo, c0); - break; - default: - /* basic PS/2 */ - break; + fifo_write_char(sc, &sc->rfifo, delta_x >> 1); + fifo_write_char(sc, &sc->rfifo, delta_y >> 1); + fifo_write_char(sc, &sc->rfifo, delta_x - (delta_x >> 1)); + fifo_write_char(sc, &sc->rfifo, delta_y - (delta_y >> 1)); + fifo_write_char(sc, &sc->rfifo, delta_z >> 1); + fifo_write_char(sc, &sc->rfifo, delta_z - (delta_z >> 1)); + fifo_write_char(sc, &sc->rfifo, MOUSE_SYS_EXTBUTTONS); + } else { + c0 = 0; + if (delta_x < 0) + c0 |= 0x10; + if (delta_y < 0) + c0 |= 0x20; + c0 |= 0x08; + if (but & CYAPA_FNGR_LEFT) + c0 |= 0x01; + if (but & CYAPA_FNGR_MIDDLE) + c0 |= 0x04; + if (but & CYAPA_FNGR_RIGHT) + c0 |= 0x02; + + fifo_write_char(sc, &sc->rfifo, c0); + fifo_write_char(sc, &sc->rfifo, (uint8_t)delta_x); + fifo_write_char(sc, &sc->rfifo, (uint8_t)delta_y); + switch(sc->zenabled) { + case 1: + /* Z axis all 8 bits */ + fifo_write_char(sc, &sc->rfifo, (uint8_t)delta_z); + break; + case 2: + /* + * Z axis low 4 bits + 4th button and 5th button + * (high 2 bits must be left 0). Auto-scale + * delta_z to fit to avoid a wrong-direction + * overflow (don't try to retain the remainder). + */ + while (delta_z > 7 || delta_z < -8) + delta_z >>= 1; + c0 = (uint8_t)delta_z & 0x0F; + fifo_write_char(sc, &sc->rfifo, c0); + break; + default: + /* basic PS/2 */ + break; + } } cyapa_notify(sc); } @@ -1205,6 +1223,11 @@ cyapaioctl(struct cdev *dev, u_long cmd, caddr_t data, int fflag, struct thread ((mousemode_t *)data)->packetsize = MOUSE_PS2_PACKETSIZE; break; + case 1: + ((mousemode_t *)data)->protocol = MOUSE_PROTO_SYSMOUSE; + ((mousemode_t *)data)->packetsize = + MOUSE_SYS_PACKETSIZE; + break; case 2: ((mousemode_t *)data)->protocol = MOUSE_PROTO_PS2; ((mousemode_t *)data)->packetsize = @@ -1223,7 +1246,7 @@ cyapaioctl(struct cdev *dev, u_long cmd, caddr_t data, int fflag, struct thread error = EINVAL; break; } - sc->mode.level = *(int *)data ? 2 : 0; + sc->mode.level = *(int *)data; sc->zenabled = sc->mode.level ? 1 : 0; break;