Source-Changes-HG archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
[src/trunk]: src/sys/dev/fdt Keep the backlight off while the lid is closed.
details: https://anonhg.NetBSD.org/src/rev/b3a7e3a38399
branches: trunk
changeset: 832421:b3a7e3a38399
user: jmcneill <jmcneill%NetBSD.org@localhost>
date: Thu May 10 13:11:21 2018 +0000
description:
Keep the backlight off while the lid is closed.
diffstat:
sys/dev/fdt/pwm_backlight.c | 36 +++++++++++++++++++++++++++++++++---
1 files changed, 33 insertions(+), 3 deletions(-)
diffs (85 lines):
diff -r 9b9a1dd42e5d -r b3a7e3a38399 sys/dev/fdt/pwm_backlight.c
--- a/sys/dev/fdt/pwm_backlight.c Thu May 10 13:05:18 2018 +0000
+++ b/sys/dev/fdt/pwm_backlight.c Thu May 10 13:11:21 2018 +0000
@@ -1,4 +1,4 @@
-/* $NetBSD: pwm_backlight.c,v 1.3 2018/05/07 12:58:58 jmcneill Exp $ */
+/* $NetBSD: pwm_backlight.c,v 1.4 2018/05/10 13:11:21 jmcneill Exp $ */
/*-
* Copyright (c) 2018 Jared McNeill <jmcneill%invisible.ca@localhost>
@@ -27,7 +27,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: pwm_backlight.c,v 1.3 2018/05/07 12:58:58 jmcneill Exp $");
+__KERNEL_RCSID(0, "$NetBSD: pwm_backlight.c,v 1.4 2018/05/10 13:11:21 jmcneill Exp $");
#include <sys/param.h>
#include <sys/bus.h>
@@ -50,6 +50,8 @@
u_int sc_nlevels;
char *sc_levelstr;
+
+ bool sc_lid_state;
};
static int pwm_backlight_match(device_t, cfdata_t, void *);
@@ -122,6 +124,8 @@
aprint_verbose(">");
aprint_normal("\n");
+ sc->sc_lid_state = true;
+
if (of_getprop_uint32(phandle, "default-brightness-level", &default_level) == 0) {
/* set the default level now */
pwm_backlight_set(sc, default_level);
@@ -247,7 +251,7 @@
{
struct pwm_backlight_softc * const sc = device_private(dev);
- if (sc->sc_pin)
+ if (sc->sc_pin && sc->sc_lid_state)
fdtbus_gpio_write(sc->sc_pin, 1);
}
@@ -261,6 +265,28 @@
}
static void
+pwm_backlight_chassis_lid_open(device_t dev)
+{
+ struct pwm_backlight_softc * const sc = device_private(dev);
+
+ sc->sc_lid_state = true;
+
+ if (sc->sc_pin)
+ fdtbus_gpio_write(sc->sc_pin, 1);
+}
+
+static void
+pwm_backlight_chassis_lid_close(device_t dev)
+{
+ struct pwm_backlight_softc * const sc = device_private(dev);
+
+ sc->sc_lid_state = false;
+
+ if (sc->sc_pin)
+ fdtbus_gpio_write(sc->sc_pin, 0);
+}
+
+static void
pwm_backlight_display_brightness_up(device_t dev)
{
struct pwm_backlight_softc * const sc = device_private(dev);
@@ -289,6 +315,10 @@
pwm_backlight_display_on, true);
pmf_event_register(sc->sc_dev, PMFE_DISPLAY_OFF,
pwm_backlight_display_off, true);
+ pmf_event_register(sc->sc_dev, PMFE_CHASSIS_LID_OPEN,
+ pwm_backlight_chassis_lid_open, true);
+ pmf_event_register(sc->sc_dev, PMFE_CHASSIS_LID_CLOSE,
+ pwm_backlight_chassis_lid_close, true);
pmf_event_register(sc->sc_dev, PMFE_DISPLAY_BRIGHTNESS_UP,
pwm_backlight_display_brightness_up, true);
pmf_event_register(sc->sc_dev, PMFE_DISPLAY_BRIGHTNESS_DOWN,
Home |
Main Index |
Thread Index |
Old Index