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