A T460s looking good over here. Regards!
El jue., 7 mar. 2019 a las 17:05, James Turner (<[email protected]>) escribió: > > On Thu, Mar 07, 2019 at 01:31:59PM +0000, Stuart Henderson wrote: > > On 2019/03/06 20:55, joshua stein wrote: > > > sthen found that the HKEY version metric failed on the x260 where it > > > reports version 1 but requires the new ACPI method of changing > > > backlight. > > > > > > This diff tries to do the ACPI method on all machines and falls back > > > to the CMOS method if that fails. > > > > > > Can all those that tried the previous diff (which has been > > > committed) try this one and make sure nothing broke? > > > > > > This also unmasks the microphone mute event which helps mixerctl > > > stay in sync on the x260 (it has no effect on my x1c6, but probably > > > can't hurt). > > > > > > > > X280 is still happy with this diff. The microphone mute button doesn't > seem to do anything tho. > > > > Index: sys/dev/acpi/acpithinkpad.c > > > > The patch in the mail doesn't apply cleanly for me due to some > > whitespace issues, if anyone else is having problems with that here's > > a regenerated version: > > > > > > Index: acpithinkpad.c > > =================================================================== > > RCS file: /cvs/src/sys/dev/acpi/acpithinkpad.c,v > > retrieving revision 1.63 > > diff -u -p -r1.63 acpithinkpad.c > > --- acpithinkpad.c 6 Mar 2019 15:36:30 -0000 1.63 > > +++ acpithinkpad.c 7 Mar 2019 13:29:46 -0000 > > @@ -124,6 +124,7 @@ > > #define THINKPAD_ADAPTIVE_MODE_HOME 1 > > #define THINKPAD_ADAPTIVE_MODE_FUNCTION 3 > > > > +#define THINKPAD_MASK_MIC_MUTE (1 << 14) > > #define THINKPAD_MASK_BRIGHTNESS_UP (1 << 15) > > #define THINKPAD_MASK_BRIGHTNESS_DOWN (1 << 16) > > #define THINKPAD_MASK_KBD_BACKLIGHT (1 << 17) > > @@ -171,8 +172,8 @@ int thinkpad_get_kbd_backlight(struct ws > > int thinkpad_set_kbd_backlight(struct wskbd_backlight *); > > extern int (*wskbd_get_backlight)(struct wskbd_backlight *); > > extern int (*wskbd_set_backlight)(struct wskbd_backlight *); > > -void thinkpad_get_brightness(struct acpithinkpad_softc *); > > -void thinkpad_set_brightness(void *, int); > > +int thinkpad_get_brightness(struct acpithinkpad_softc *); > > +int thinkpad_set_brightness(void *, int); > > int thinkpad_get_param(struct wsdisplay_param *); > > int thinkpad_set_param(struct wsdisplay_param *); > > extern int (*ws_get_param)(struct wsdisplay_param *); > > @@ -345,7 +346,9 @@ thinkpad_enable_events(struct acpithinkp > > } > > > > /* Enable events we need to know about */ > > - mask |= (THINKPAD_MASK_BRIGHTNESS_UP | THINKPAD_MASK_BRIGHTNESS_DOWN | > > + mask |= (THINKPAD_MASK_MIC_MUTE | > > + THINKPAD_MASK_BRIGHTNESS_UP | > > + THINKPAD_MASK_BRIGHTNESS_DOWN | > > THINKPAD_MASK_KBD_BACKLIGHT); > > > > DPRINTF(("%s: setting event mask to 0x%llx\n", DEVNAME(sc), mask)); > > @@ -555,8 +558,7 @@ thinkpad_brightness_up(struct acpithinkp > > { > > int b; > > > > - if (sc->sc_hkey_version == THINKPAD_HKEY_VERSION2) { > > - thinkpad_get_brightness(sc); > > + if (thinkpad_get_brightness(sc) == 0) { > > b = sc->sc_brightness & 0xff; > > if (b < ((sc->sc_brightness >> 8) & 0xff)) { > > sc->sc_brightness = b + 1; > > @@ -573,8 +575,7 @@ thinkpad_brightness_down(struct acpithin > > { > > int b; > > > > - if (sc->sc_hkey_version == THINKPAD_HKEY_VERSION2) { > > - thinkpad_get_brightness(sc); > > + if (thinkpad_get_brightness(sc) == 0) { > > b = sc->sc_brightness & 0xff; > > if (b > 0) { > > sc->sc_brightness = b - 1; > > @@ -701,30 +702,39 @@ thinkpad_set_kbd_backlight(struct wskbd_ > > return 0; > > } > > > > -void > > +int > > thinkpad_get_brightness(struct acpithinkpad_softc *sc) > > { > > - aml_evalinteger(sc->sc_acpi, sc->sc_devnode, > > - "PBLG", 0, NULL, &sc->sc_brightness); > > + int ret; > > + > > + ret = aml_evalinteger(sc->sc_acpi, sc->sc_devnode, "PBLG", 0, NULL, > > + &sc->sc_brightness); > > > > DPRINTF(("%s: %s: 0x%llx\n", DEVNAME(sc), __func__, > > sc->sc_brightness)); > > + > > + return ret; > > } > > > > -void > > +int > > thinkpad_set_brightness(void *arg0, int arg1) > > { > > struct acpithinkpad_softc *sc = arg0; > > struct aml_value arg; > > + int ret; > > > > DPRINTF(("%s: %s: 0x%llx\n", DEVNAME(sc), __func__, > > sc->sc_brightness)); > > > > memset(&arg, 0, sizeof(arg)); > > arg.type = AML_OBJTYPE_INTEGER; > > arg.v_integer = sc->sc_brightness & 0xff; > > - aml_evalname(sc->sc_acpi, sc->sc_devnode, > > - "PBLS", 1, &arg, NULL); > > + ret = aml_evalname(sc->sc_acpi, sc->sc_devnode, "PBLS", 1, &arg, > > NULL); > > + > > + if (ret) > > + return ret; > > > > thinkpad_get_brightness(sc); > > + > > + return 0; > > } > > > > int > > @@ -765,7 +775,8 @@ thinkpad_set_param(struct wsdisplay_para > > dp->curval = maxval; > > sc->sc_brightness &= ~0xff; > > sc->sc_brightness |= dp->curval; > > - acpi_addtask(sc->sc_acpi, thinkpad_set_brightness, sc, 0); > > + acpi_addtask(sc->sc_acpi, (void *)thinkpad_set_brightness, sc, > > + 0); > > acpi_wakeup(sc->sc_acpi); > > return 0; > > default: > > > > -- > James Turner >
