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; }