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 <nathanialsl...@yahoo.com.au>
@@ -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;
 	}

Reply via email to