That diff will not go into the tree now, for the same reason it didn't
go in two years ago.

BECAUSE IT IS WRONG.

> Two years ago Marco issued a patch in order to prevent incorrect
> reading acpitz on HP Compaq (or any HP laptops with acpiec madness) by
> adding some delays to have data prepared to read/write.
> 
> It has been tested and works perfectly fine on some HP laptops: 6510b,
> 8510p/w, 8710p/w.
> 
> Please add this patch into the source tree to have it by default.
> 
> Index: acpiec.c
> ===================================================================
> RCS file: /cvs/src/sys/dev/acpi/acpiec.c,v
> retrieving revision 1.43
> diff -u -p -r1.43 acpiec.c
> --- acpiec.c    8 Aug 2010 17:25:41 -0000       1.43
> +++ acpiec.c    29 Sep 2010 04:24:13 -0000
> @@ -92,7 +92,7 @@ void
>  acpiec_wait(struct acpiec_softc *sc, u_int8_t mask, u_int8_t val)
>  {
>         static int acpiecnowait;
> -       u_int8_t                stat;
> +       volatile u_int8_t stat;
> 
>         dnprintf(40, "%s: EC wait_ns for: %b == %02x\n",
>             DEVNAME(sc), (int)mask,
> @@ -104,8 +104,14 @@ acpiec_wait(struct acpiec_softc *sc, u_i
>                 if (cold || (stat & EC_STAT_BURST))
>                         delay(1);
>                 else
> -                       tsleep(&acpiecnowait, PWAIT, "acpiec", 1);
> +                       tsleep(&acpiecnowait, PWAIT, "ecstat", 1);
>         }
> +
> +       /* delay to make sure the data is actually ready */
> +       if (cold)
> +               delay(10);
> +       else
> +               tsleep(&acpiecnowait, PWAIT, "ecout", 1);
> 
>         dnprintf(40, "%s: EC wait_ns, stat: %b\n", DEVNAME(sc), (int)stat,
>             "\20\x8IGN\x7SMI\x6SCI\05BURST\04CMD\03IGN\02IBF\01OBF");

Reply via email to