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);