Index | Thread | Search

From:
Kirill A. Korinsky <kirill@korins.ky>
Subject:
Re: sys/ihidev: enforce polling for Dell Inspiron 5505 Touchpad
To:
Jason McIntyre <jmc@kerhand.co.uk>
Cc:
tech@openbsd.org, jmc@openbsd.org
Date:
Fri, 17 Jan 2025 18:04:09 +0100

Download raw body.

Thread
On Fri, 17 Jan 2025 17:45:46 +0100,
Jason McIntyre <jmc@kerhand.co.uk> wrote:
> 
> [1  <text/plain; utf-8 (quoted-printable)>]
> hi.
> 
> i think there's a misunderstanding: it is not changing mode while running. i run it with a kernel  change to enforce polling, because of the mouse freeze issue.
>

Probably a wrong wording on my side, thanks to make it clear.

I mean that it seems that your touchpad / mouse had changes internal
thinking that it should works in polling mode after some time.

> jmc
> 
> On 17 January 2025 16:01:11 GMT, "Kirill A. Korinsky" <kirill@korins.ky> wrote:
> >tech@,
> >
> >Here a diff which introduced a new qurik to enforce polling on some
> >devices. The first device is Dell Inspiron 5505 Touchpad. jmc@ had
> >reported that his touchpad on that machine may started at non-polling
> >mode, but changing the mode in flight.
> >
> >Tested on HONOR MagicBook Art 14 Touchpad, without regression.
> >
> >Tests? Ok?
> >
> >Index: sys/dev/i2c/ihidev.c
> >===================================================================
> >RCS file: /home/cvs/src/sys/dev/i2c/ihidev.c,v
> >diff -u -p -r1.39 ihidev.c
> >--- sys/dev/i2c/ihidev.c	13 Jan 2025 15:33:34 -0000	1.39
> >+++ sys/dev/i2c/ihidev.c	17 Jan 2025 15:45:29 -0000
> >@@ -77,6 +77,7 @@ int	ihidev_print(void *aux, const char *
> > int	ihidev_submatch(struct device *parent, void *cf, void *aux);
> >
> > #define IHIDEV_QUIRK_RE_POWER_ON	0x1
> >+#define IHIDEV_QUIRK_ONLY_POLLING	0x2
> >
> > const struct ihidev_quirks {
> > 	uint16_t		ihq_vid;
> >@@ -85,6 +86,8 @@ const struct ihidev_quirks {
> > } ihidev_devs[] = {
> > 	/* HONOR MagicBook Art 14 Touchpad (QTEC0002) */
> > 	{ 0x35cc, 0x0104, IHIDEV_QUIRK_RE_POWER_ON },
> >+	/* Dell Inspiron 5505 Touchpad (DELL0A1E) */
> >+	{ 0x4f3, 0x3147, IHIDEV_QUIRK_ONLY_POLLING },
> > };
> >
> > const struct cfattach ihidev_ca = {
> >@@ -171,7 +174,7 @@ ihidev_attach(struct device *parent, str
> > 	}
> > 	sc->sc_ibuf = malloc(sc->sc_isize, M_DEVBUF, M_WAITOK | M_ZERO);
> >
> >-	if (ia->ia_intr) {
> >+	if (ia->ia_intr && !(sc->sc_quirks & IHIDEV_QUIRK_ONLY_POLLING)) {
> > 		printf(" %s", iic_intr_string(sc->sc_tag, ia->ia_intr));
> >
> > 		sc->sc_ih = iic_intr_establish(sc->sc_tag, ia->ia_intr,
> >
> >--
> >wbr, Kirill
> >
> [2  <text/html; utf-8 (quoted-printable)>]

-- 
wbr, Kirill