On Tue, Sep 17, 2013 at 02:59:19PM +0200, frantisek holop wrote:
> hmm, on Tue, Sep 17, 2013 at 02:56:30PM +0200, Stefan Sperling said that
> > On Tue, Sep 17, 2013 at 02:36:25PM +0200, frantisek holop wrote:
> > > as it seems like this is a legit regression,
> > > could this backed out please?
> > 
> > Which commit exactly needs to be backed out?
> 
> my guess would be the ones done after aug 19..
> that one was working.

Guesses won't help much. We need facts to figure out what's wrong. 

This diff backs out r1.46. Does it help?

Index: pms.c
===================================================================
RCS file: /cvs/src/sys/dev/pckbc/pms.c,v
retrieving revision 1.47
diff -u -p -r1.47 pms.c
--- pms.c       3 Sep 2013 09:29:35 -0000       1.47
+++ pms.c       17 Sep 2013 14:06:03 -0000
@@ -910,11 +910,6 @@ synaptics_get_hwinfo(struct pms_softc *s
        if (SYNAPTICS_EXT_MODEL_BUTTONS(syn->ext_model) > 8)
                syn->ext_model &= ~0xf000;
 
-       if ((syn->model & SYNAPTICS_MODEL_NEWABS) == 0) {
-               printf("%s: don't support Synaptics OLDABS\n", DEVNAME(sc));
-               return (-1);
-       }
-
        return (0);
 }
 
@@ -990,9 +985,12 @@ pms_enable_synaptics(struct pms_softc *s
                        goto err;
                }
 
-               if (synaptics_get_hwinfo(sc)) {
-                       free(sc->synaptics, M_DEVBUF);
-                       sc->synaptics = NULL;
+               if (synaptics_get_hwinfo(sc))
+                       goto err;
+
+               if ((syn->model & SYNAPTICS_MODEL_NEWABS) == 0) {
+                       printf("%s: don't support Synaptics OLDABS\n",
+                           DEVNAME(sc));
                        goto err;
                }
 
@@ -1030,6 +1028,11 @@ pms_enable_synaptics(struct pms_softc *s
        return (1);
 
 err:
+       if (sc->synaptics) {
+               free(sc->synaptics, M_DEVBUF);
+               sc->synaptics = NULL;
+       }
+
        pms_reset(sc);
 
        return (0);
@@ -1272,11 +1275,8 @@ pms_enable_alps(struct pms_softc *sc)
                        goto err;
                }
 
-               if (alps_get_hwinfo(sc)) {
-                       free(sc->alps, M_DEVBUF);
-                       sc->alps = NULL;
+               if (alps_get_hwinfo(sc))
                        goto err;
-               }
 
                printf("%s: ALPS %s, version 0x%04x\n", DEVNAME(sc),
                    (alps->model & ALPS_DUALPOINT ? "Dualpoint" : "Glidepoint"),
@@ -1339,6 +1339,11 @@ pms_enable_alps(struct pms_softc *sc)
        return (1);
 
 err:
+       if (sc->alps) {
+               free(sc->alps, M_DEVBUF);
+               sc->alps = NULL;
+       }
+
        pms_reset(sc);
 
        return (0);
@@ -1829,11 +1834,8 @@ pms_enable_elantech_v1(struct pms_softc 
                        goto err;
                }
 
-               if (elantech_get_hwinfo_v1(sc)) {
-                       free(sc->elantech, M_DEVBUF);
-                       sc->elantech = NULL;
+               if (elantech_get_hwinfo_v1(sc))
                        goto err;
-               }
 
                printf("%s: Elantech Touchpad, version %d\n", DEVNAME(sc), 1);
        } else if (elantech_set_absolute_mode_v1(sc))
@@ -1845,6 +1847,11 @@ pms_enable_elantech_v1(struct pms_softc 
        return (1);
 
 err:
+       if (sc->elantech) {
+               free(sc->elantech, M_DEVBUF);
+               sc->elantech = NULL;
+       }
+
        pms_reset(sc);
 
        return (0);
@@ -1867,11 +1874,8 @@ pms_enable_elantech_v2(struct pms_softc 
                        goto err;
                }
 
-               if (elantech_get_hwinfo_v2(sc)) {
-                       free(sc->elantech, M_DEVBUF);
-                       sc->elantech = NULL;
+               if (elantech_get_hwinfo_v2(sc))
                        goto err;
-               }
 
                printf("%s: Elantech Touchpad, version %d\n", DEVNAME(sc), 2);
        } else if (elantech_set_absolute_mode_v2(sc))
@@ -1880,6 +1884,11 @@ pms_enable_elantech_v2(struct pms_softc 
        return (1);
 
 err:
+       if (sc->elantech) {
+               free(sc->elantech, M_DEVBUF);
+               sc->elantech = NULL;
+       }
+
        pms_reset(sc);
 
        return (0);
@@ -1902,11 +1911,8 @@ pms_enable_elantech_v3(struct pms_softc 
                        goto err;
                }
 
-               if (elantech_get_hwinfo_v3(sc)) {
-                       free(sc->elantech, M_DEVBUF);
-                       sc->elantech = NULL;
+               if (elantech_get_hwinfo_v3(sc))
                        goto err;
-               }
 
                printf("%s: Elantech Touchpad, version %d\n", DEVNAME(sc), 3);
        } else if (elantech_set_absolute_mode_v3(sc))
@@ -1915,6 +1921,11 @@ pms_enable_elantech_v3(struct pms_softc 
        return (1);
 
 err:
+       if (sc->elantech) {
+               free(sc->elantech, M_DEVBUF);
+               sc->elantech = NULL;
+       }
+
        pms_reset(sc);
 
        return (0);
@@ -1937,11 +1948,8 @@ pms_enable_elantech_v4(struct pms_softc 
                        goto err;
                }
 
-               if (elantech_get_hwinfo_v4(sc)) {
-                       free(sc->elantech, M_DEVBUF);
-                       sc->elantech = NULL;
+               if (elantech_get_hwinfo_v4(sc))
                        goto err;
-               }
 
                printf("%s: Elantech Clickpad, version %d\n", DEVNAME(sc), 4);
        } else if (elantech_set_absolute_mode_v4(sc))
@@ -1950,6 +1958,11 @@ pms_enable_elantech_v4(struct pms_softc 
        return (1);
 
 err:
+       if (sc->elantech) {
+               free(sc->elantech, M_DEVBUF);
+               sc->elantech = NULL;
+       }
+
        pms_reset(sc);
 
        return (0);

Reply via email to