Index: pwm_backlight.c =================================================================== RCS file: /cvsroot/src/sys/dev/fdt/pwm_backlight.c,v retrieving revision 1.6 diff -p -u -r1.6 pwm_backlight.c --- pwm_backlight.c 4 Jan 2020 12:09:54 -0000 1.6 +++ pwm_backlight.c 21 Jan 2020 23:01:00 -0000 @@ -60,7 +60,7 @@ static void pwm_backlight_attach(device_ static void pwm_backlight_sysctl_init(struct pwm_backlight_softc *); static void pwm_backlight_pmf_init(struct pwm_backlight_softc *); -static void pwm_backlight_set(struct pwm_backlight_softc *, u_int); +static void pwm_backlight_set(struct pwm_backlight_softc *, u_int, bool); static u_int pwm_backlight_get(struct pwm_backlight_softc *); static const char *compatible[] = { @@ -129,7 +129,7 @@ pwm_backlight_attach(device_t parent, de if (of_getprop_uint32(phandle, "default-brightness-level", &default_level) == 0) { /* set the default level now */ - pwm_backlight_set(sc, default_level); + pwm_backlight_set(sc, default_level, true); } sc->sc_curlevel = pwm_backlight_get(sc); @@ -139,7 +139,7 @@ pwm_backlight_attach(device_t parent, de } static void -pwm_backlight_set(struct pwm_backlight_softc *sc, u_int index) +pwm_backlight_set(struct pwm_backlight_softc *sc, u_int index, bool set_default) { struct pwm_config conf; @@ -153,6 +153,9 @@ pwm_backlight_set(struct pwm_backlight_s conf.duty_cycle = (conf.period * sc->sc_levels[index]) / sc->sc_levels[sc->sc_nlevels - 1]; pwm_set_config(sc->sc_pwm, &conf); pwm_enable(sc->sc_pwm); + + if (set_default) + sc->sc_curlevel = index; } static u_int @@ -193,7 +196,7 @@ pwm_backlight_sysctl_helper(SYSCTLFN_ARG for (n = 0; n < sc->sc_nlevels; n++) { if (sc->sc_levels[n] == level) { - pwm_backlight_set(sc, n); + pwm_backlight_set(sc, n, true); return 0; } } @@ -255,7 +258,7 @@ pwm_backlight_enable(struct pwm_backligh if (sc->sc_pin) fdtbus_gpio_write(sc->sc_pin, enable); else - pwm_backlight_set(sc, enable ? sc->sc_curlevel : 0); + pwm_backlight_set(sc, enable ? sc->sc_curlevel : 0, false); } static void @@ -303,7 +306,7 @@ pwm_backlight_display_brightness_up(devi n = pwm_backlight_get(sc); if (n < sc->sc_nlevels - 1) - pwm_backlight_set(sc, n + 1); + pwm_backlight_set(sc, n + 1, true); } static void @@ -314,7 +317,7 @@ pwm_backlight_display_brightness_down(de n = pwm_backlight_get(sc); if (n > 0) - pwm_backlight_set(sc, n - 1); + pwm_backlight_set(sc, n - 1, true); } static void