Monday, October 14, 2024

Re: Mouselaggingandstopping

On Sun, Oct 13, 2024 at 05:36:05PM GMT, Isaac Meerleo wrote:
> Confirmed working in latest snapshot.
> Thank you!
>

We have tested a ihidev patch in snapshots that I suspect might have been
responsible for the regression you saw. I sent an updated version of that
patch to tech@ at: https://marc.info/?l=openbsd-tech&m=172873754328565&w=2

Could you please test the diff below and see if that still causes issues
on your machines? If yes we might have to add a quirk to exclude your devices
or find a better way to solve this.

diff 502b52cbdf550ec88ed0fcdac323f77049e93d3d 56627129dafdc9ab5465cdd1d777aa09e63460c1
commit - 502b52cbdf550ec88ed0fcdac323f77049e93d3d
commit + 56627129dafdc9ab5465cdd1d777aa09e63460c1
blob - 4e65a4bf350b37ad5567a0c8d6535bd4e3c9cdbe
blob + f6b8cc7b3436dc6c9bff99c817d4e5e2a45c3f44
--- sys/dev/i2c/ihidev.c
+++ sys/dev/i2c/ihidev.c
@@ -67,6 +67,7 @@ int ihidev_activate(struct device *, int);

int ihidev_hid_command(struct ihidev_softc *, int, void *);
int ihidev_intr(void *);
+int ihidev_poweron(struct ihidev_softc *);
int ihidev_reset(struct ihidev_softc *);
int ihidev_hid_desc_parse(struct ihidev_softc *);

@@ -248,7 +249,7 @@ ihidev_activate(struct device *self, int act)
sc->sc_dev.dv_xname);
break;
case DVACT_WAKEUP:
- ihidev_reset(sc);
+ ihidev_poweron(sc);
sc->sc_dying = 0;
if (sc->sc_poll && timeout_initialized(&sc->sc_timer))
timeout_add(&sc->sc_timer, 2000);
@@ -525,7 +526,7 @@ ihidev_hid_command(struct ihidev_softc *sc, int hidcmd
}

int
-ihidev_reset(struct ihidev_softc *sc)
+ihidev_poweron(struct ihidev_softc *sc)
{
DPRINTF(("%s: resetting\n", sc->sc_dev.dv_xname));

@@ -536,6 +537,16 @@ ihidev_reset(struct ihidev_softc *sc)

ihidev_sleep(sc, 100);

+ return 0;
+}
+
+
+int
+ihidev_reset(struct ihidev_softc *sc)
+{
+ if (ihidev_poweron(sc))
+ return (1);
+
if (ihidev_hid_command(sc, I2C_HID_CMD_RESET, 0)) {
printf("%s: failed to reset hardware\n", sc->sc_dev.dv_xname);

@@ -784,7 +795,7 @@ ihidev_open(struct ihidev *scd)
return (0);

/* power on */
- ihidev_reset(sc);
+ ihidev_poweron(sc);

if (sc->sc_poll) {
if (!timeout_initialized(&sc->sc_timer))

No comments:

Post a Comment