Module Name: src
Committed By: nat
Date: Mon Dec 9 10:32:53 UTC 2024
Modified Files:
src/sys/arch/mac68k/dev: aed.c genfb_grfbus.c
Log Message:
Add support for backlight control.
Currently it is only supported on PowerBooks.
The backlight can be turned off or on via pmf(9) events on wsdisplay(4)
devices.
To generate a diff of this commit:
cvs rdiff -u -r1.40 -r1.41 src/sys/arch/mac68k/dev/aed.c
cvs rdiff -u -r1.2 -r1.3 src/sys/arch/mac68k/dev/genfb_grfbus.c
Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.
Modified files:
Index: src/sys/arch/mac68k/dev/aed.c
diff -u src/sys/arch/mac68k/dev/aed.c:1.40 src/sys/arch/mac68k/dev/aed.c:1.41
--- src/sys/arch/mac68k/dev/aed.c:1.40 Sat Sep 14 20:59:45 2024
+++ src/sys/arch/mac68k/dev/aed.c Mon Dec 9 10:32:53 2024
@@ -1,4 +1,4 @@
-/* $NetBSD: aed.c,v 1.40 2024/09/14 20:59:45 nat Exp $ */
+/* $NetBSD: aed.c,v 1.41 2024/12/09 10:32:53 nat Exp $ */
/*
* Copyright (c) 2024 Nathanial Sloss <[email protected]>
@@ -29,7 +29,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: aed.c,v 1.40 2024/09/14 20:59:45 nat Exp $");
+__KERNEL_RCSID(0, "$NetBSD: aed.c,v 1.41 2024/12/09 10:32:53 nat Exp $");
#include "opt_adb.h"
@@ -68,6 +68,8 @@ static void aed_dokeyupdown(adb_event_t
static void aed_handoff(adb_event_t *);
static void aed_enqevent(adb_event_t *);
+static void aed_display_on(device_t);
+static void aed_display_off(device_t);
static void aed_brightness_down(device_t);
static void aed_brightness_up(device_t);
@@ -151,6 +153,10 @@ aedattach(device_t parent, device_t self
aed_sc = sc;
+ pmf_event_register(self, PMFE_DISPLAY_ON,
+ aed_display_on, TRUE);
+ pmf_event_register(self, PMFE_DISPLAY_OFF,
+ aed_display_off, TRUE);
pmf_event_register(self, PMFE_DISPLAY_BRIGHTNESS_UP,
aed_brightness_up, TRUE);
pmf_event_register(self, PMFE_DISPLAY_BRIGHTNESS_DOWN,
@@ -681,3 +687,15 @@ aed_brightness_up(device_t dev)
level = uimin(BRIGHTNESS_MAX, level + step);
brightness = pm_set_brightness(level);
}
+
+static void
+aed_display_on(device_t dev)
+{
+ (void)pm_set_brightness(brightness);
+}
+
+static void
+aed_display_off(device_t dev)
+{
+ (void)pm_set_brightness(0);
+}
Index: src/sys/arch/mac68k/dev/genfb_grfbus.c
diff -u src/sys/arch/mac68k/dev/genfb_grfbus.c:1.2 src/sys/arch/mac68k/dev/genfb_grfbus.c:1.3
--- src/sys/arch/mac68k/dev/genfb_grfbus.c:1.2 Wed Oct 21 11:15:18 2020
+++ src/sys/arch/mac68k/dev/genfb_grfbus.c Mon Dec 9 10:32:53 2024
@@ -1,4 +1,4 @@
-/* $NetBSD: genfb_grfbus.c,v 1.2 2020/10/21 11:15:18 rin Exp $ */
+/* $NetBSD: genfb_grfbus.c,v 1.3 2024/12/09 10:32:53 nat Exp $ */
/* NetBSD: simplefb.c,v 1.7 2019/01/30 00:55:04 jmcneill Exp */
/*-
@@ -61,7 +61,7 @@
#include "opt_wsdisplay_compat.h"
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: genfb_grfbus.c,v 1.2 2020/10/21 11:15:18 rin Exp $");
+__KERNEL_RCSID(0, "$NetBSD: genfb_grfbus.c,v 1.3 2024/12/09 10:32:53 nat Exp $");
#include <sys/param.h>
#include <sys/bus.h>
@@ -134,6 +134,7 @@ genfb_grfbus_ioctl(void *v, void *vs, u_
struct wsdisplayio_fbinfo *fbi;
struct rasops_info *ri;
int error;
+ u_int video;
switch (cmd) {
case WSDISPLAYIO_GTYPE:
@@ -158,6 +159,15 @@ genfb_grfbus_ioctl(void *v, void *vs, u_
fbi->fbi_fboffset = m68k_page_offset(sc->sc_paddr);
}
return error;
+ case WSDISPLAYIO_SVIDEO:
+ video = *(u_int *)data;
+ if (video == WSDISPLAYIO_VIDEO_OFF)
+ pmf_event_inject(NULL, PMFE_DISPLAY_OFF);
+ else if (video == WSDISPLAYIO_VIDEO_ON)
+ pmf_event_inject(NULL, PMFE_DISPLAY_ON);
+ else
+ return EINVAL;
+ return 0;
default:
return EPASSTHROUGH;
}