diff options
| author | Vladimir Kondratyev <wulf@FreeBSD.org> | 2020-11-20 00:13:30 +0000 |
|---|---|---|
| committer | Vladimir Kondratyev <wulf@FreeBSD.org> | 2020-11-20 00:13:30 +0000 |
| commit | b33ba834704eed574b752e1f97a8fb075514ab78 (patch) | |
| tree | 9f843b37de973de9b1b1f806eebbf4794d9ca0f9 /sys/dev | |
| parent | 65c207758a9586116a023dea8eb3d173e85cb0a9 (diff) | |
Notes
Diffstat (limited to 'sys/dev')
| -rw-r--r-- | sys/dev/atkbdc/atkbdc.c | 2 | ||||
| -rw-r--r-- | sys/dev/atkbdc/atkbdcreg.h | 1 | ||||
| -rw-r--r-- | sys/dev/atkbdc/psm.c | 5 |
3 files changed, 6 insertions, 2 deletions
diff --git a/sys/dev/atkbdc/atkbdc.c b/sys/dev/atkbdc/atkbdc.c index 692330754294..068faeeb9565 100644 --- a/sys/dev/atkbdc/atkbdc.c +++ b/sys/dev/atkbdc/atkbdc.c @@ -117,6 +117,8 @@ static struct atkbdc_quirks quirks[] = { {"coreboot", NULL, NULL, KBDC_QUIRK_KEEP_ACTIVATED | KBDC_QUIRK_IGNORE_PROBE_RESULT | KBDC_QUIRK_RESET_AFTER_PROBE | KBDC_QUIRK_SETLEDS_ON_INIT}, + /* KBDC hangs on Lenovo X120e and X121e after disabling AUX MUX */ + {NULL, "LENOVO", NULL, KBDC_QUIRK_DISABLE_MUX_PROBE}, {NULL, NULL, NULL, 0} }; diff --git a/sys/dev/atkbdc/atkbdcreg.h b/sys/dev/atkbdc/atkbdcreg.h index 8d02489c9f3a..956861b657d6 100644 --- a/sys/dev/atkbdc/atkbdcreg.h +++ b/sys/dev/atkbdc/atkbdcreg.h @@ -211,6 +211,7 @@ typedef struct atkbdc_softc { #define KBDC_QUIRK_IGNORE_PROBE_RESULT (1 << 1) #define KBDC_QUIRK_RESET_AFTER_PROBE (1 << 2) #define KBDC_QUIRK_SETLEDS_ON_INIT (1 << 3) +#define KBDC_QUIRK_DISABLE_MUX_PROBE (1 << 4) int aux_mux_enabled; /* active PS/2 multiplexing is enabled */ int aux_mux_port; /* current aux mux port */ } atkbdc_softc_t; diff --git a/sys/dev/atkbdc/psm.c b/sys/dev/atkbdc/psm.c index ca1ab6178f20..f2c4cc71e242 100644 --- a/sys/dev/atkbdc/psm.c +++ b/sys/dev/atkbdc/psm.c @@ -517,7 +517,7 @@ static int verbose = PSM_DEBUG; static int synaptics_support = 1; static int trackpoint_support = 1; static int elantech_support = 1; -static int mux_disabled = 0; +static int mux_disabled = -1; /* for backward compatibility */ #define OLD_MOUSE_GETHWINFO _IOR('M', 1, old_mousehw_t) @@ -6292,7 +6292,8 @@ enable_synaptics_mux(struct psm_softc *sc, enum probearg arg) int active_ports_count = 0; int active_ports_mask = 0; - if (mux_disabled != 0) + if (mux_disabled == 1 || (mux_disabled == -1 && + (kbdc->quirks & KBDC_QUIRK_DISABLE_MUX_PROBE) != 0)) return (FALSE); version = enable_aux_mux(kbdc); |
