Hi Tobias,

Thank you for this. On Sunday, a snapshot got it working again, but I
can still test this out if you'd like.

Thanks,

Claudio Miranda

On Mon, Oct 14, 2024 at 7:30 AM Tobias Heider <[email protected]> wrote:
>
> On Fri, Oct 11, 2024 at 02:48:52PM GMT, Claudio Miranda wrote:
> > Duly noted, thank you!
> >
> > Cheers,
> > Claudio Miranda
> >
> > On Fri, Oct 11, 2024 at 2:32 PM Theo de Raadt <[email protected]> wrote:
> > >
> > > Snaps contain a diff which fixes another machine.  There is some effort
> > > to find a solution which fixes it, but doesn't break those like yours.
> > > Wait a bit.
> >
>
> Hey Claudio,
>
> I sent out a new revision of my diff that probably broke your machine to tech@
> at https://marc.info/?l=openbsd-tech&m=172873754328565&w=2
>
> If you could help test this and tell us if your trackpad is still broken with
> this version we can figure out if we need to add a quirk for your device.
>
> diff below
>
> 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))
>

Reply via email to