Download raw body.
sys/ihidev: enforce polling for Dell Inspiron 5505 Touchpad
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.
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
>
sys/ihidev: enforce polling for Dell Inspiron 5505 Touchpad