Module Name: src Committed By: nat Date: Sat Sep 14 20:59:46 UTC 2024
Modified Files: src/sys/arch/mac68k/dev: aed.c pm_direct.c pm_direct.h Log Message: Add support for brightness control on Powerbook 1xx. To generate a diff of this commit: cvs rdiff -u -r1.39 -r1.40 src/sys/arch/mac68k/dev/aed.c cvs rdiff -u -r1.32 -r1.33 src/sys/arch/mac68k/dev/pm_direct.c cvs rdiff -u -r1.1 -r1.2 src/sys/arch/mac68k/dev/pm_direct.h 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.39 src/sys/arch/mac68k/dev/aed.c:1.40 --- src/sys/arch/mac68k/dev/aed.c:1.39 Wed Jun 5 11:01:47 2024 +++ src/sys/arch/mac68k/dev/aed.c Sat Sep 14 20:59:45 2024 @@ -1,6 +1,9 @@ -/* $NetBSD: aed.c,v 1.39 2024/06/05 11:01:47 nat Exp $ */ +/* $NetBSD: aed.c,v 1.40 2024/09/14 20:59:45 nat Exp $ */ /* + * Copyright (c) 2024 Nathanial Sloss <nathanialsl...@yahoo.com.au> + * All rights reserved. + * * Copyright (C) 1994 Bradley A. Grantham * All rights reserved. * @@ -26,7 +29,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: aed.c,v 1.39 2024/06/05 11:01:47 nat Exp $"); +__KERNEL_RCSID(0, "$NetBSD: aed.c,v 1.40 2024/09/14 20:59:45 nat Exp $"); #include "opt_adb.h" @@ -48,6 +51,11 @@ __KERNEL_RCSID(0, "$NetBSD: aed.c,v 1.39 #include <mac68k/dev/adbvar.h> #include <mac68k/dev/aedvar.h> #include <mac68k/dev/akbdvar.h> +#include <mac68k/dev/pm_direct.h> + +#define BRIGHTNESS_MAX 31 +#define BRIGHTNESS_MIN 0 +#define BRIGHTNESS_STEP 4 /* * Function declarations. @@ -60,11 +68,15 @@ static void aed_dokeyupdown(adb_event_t static void aed_handoff(adb_event_t *); static void aed_enqevent(adb_event_t *); +static void aed_brightness_down(device_t); +static void aed_brightness_up(device_t); + /* * Local variables. */ static struct aed_softc *aed_sc; static int aed_options = 0 | AED_MSEMUL; +static int brightness = BRIGHTNESS_MAX; /* Driver definition */ CFATTACH_DECL_NEW(aed, sizeof(struct aed_softc), @@ -139,6 +151,11 @@ aedattach(device_t parent, device_t self aed_sc = sc; + pmf_event_register(self, PMFE_DISPLAY_BRIGHTNESS_UP, + aed_brightness_up, TRUE); + pmf_event_register(self, PMFE_DISPLAY_BRIGHTNESS_DOWN, + aed_brightness_down, TRUE); + printf("ADB Event device\n"); return; @@ -268,6 +285,12 @@ aed_emulate_mouse(adb_event_t *event) microtime(&new_event.timestamp); aed_handoff(&new_event); break; + case ADBK_KEYUP(ADBK_UP): + pmf_event_inject(NULL, PMFE_DISPLAY_BRIGHTNESS_UP); + break; + case ADBK_KEYUP(ADBK_DOWN): + pmf_event_inject(NULL, PMFE_DISPLAY_BRIGHTNESS_DOWN); + break; case ADBK_KEYUP(ADBK_SHIFT): case ADBK_KEYDOWN(ADBK_SHIFT): case ADBK_KEYUP(ADBK_CONTROL): @@ -628,3 +651,33 @@ aedkqfilter(dev_t dev, struct knote *kn) return (0); } + +static void +aed_brightness_down(device_t dev) +{ + int level, step; + + level = brightness; + if (level <= 4) /* logarithmic brightness curve. */ + step = 1; + else + step = BRIGHTNESS_STEP; + + level = uimax(BRIGHTNESS_MIN, level - step); + brightness = pm_set_brightness(level); +} + +static void +aed_brightness_up(device_t dev) +{ + int level, step; + + level = brightness; + if (level <= 4) /* logarithmic brightness curve. */ + step = 1; + else + step = BRIGHTNESS_STEP; + + level = uimin(BRIGHTNESS_MAX, level + step); + brightness = pm_set_brightness(level); +} Index: src/sys/arch/mac68k/dev/pm_direct.c diff -u src/sys/arch/mac68k/dev/pm_direct.c:1.32 src/sys/arch/mac68k/dev/pm_direct.c:1.33 --- src/sys/arch/mac68k/dev/pm_direct.c:1.32 Sun Jun 2 13:28:45 2024 +++ src/sys/arch/mac68k/dev/pm_direct.c Sat Sep 14 20:59:45 2024 @@ -1,6 +1,9 @@ -/* $NetBSD: pm_direct.c,v 1.32 2024/06/02 13:28:45 andvar Exp $ */ +/* $NetBSD: pm_direct.c,v 1.33 2024/09/14 20:59:45 nat Exp $ */ /* + * Copyright (c) 2024 Nathanial Sloss <nathanialsl...@yahoo.com.au> + * All rights reserved. + * * Copyright (C) 1997 Takashi Hamada * All rights reserved. * @@ -32,7 +35,7 @@ /* From: pm_direct.c 1.3 03/18/98 Takashi Hamada */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: pm_direct.c,v 1.32 2024/06/02 13:28:45 andvar Exp $"); +__KERNEL_RCSID(0, "$NetBSD: pm_direct.c,v 1.33 2024/09/14 20:59:45 nat Exp $"); #include "opt_adb.h" @@ -845,18 +848,8 @@ pm_intr_pm2(void *arg) rval = pm_pmgrop_pm2(&pmdata); pm_printerr("#33", rval, pmdata.num_data, pmdata.data); */ - /* this is an experimental code */ - pmdata.command = 0x41; - pmdata.num_data = 1; - pmdata.s_buf = pmdata.data; - pmdata.r_buf = pmdata.data; - pm_LCD_brightness = 0x7f - pm_LCD_brightness / 2; - if (pm_LCD_brightness < 0x25) - pm_LCD_brightness = 0x25; - if (pm_LCD_brightness > 0x5a) - pm_LCD_brightness = 0x7f; - pmdata.data[0] = pm_LCD_brightness; - rval = pm_pmgrop_pm2(&pmdata); + pm_LCD_brightness = + pm_set_brightness(pm_LCD_brightness); break; case 0x10: /* ADB data that were requested by TALK command */ case 0x14: @@ -1158,3 +1151,42 @@ pm_adb_poll_next_device_pm1(PMData *pmda tmp_pmdata.data[2] = 0x00; pmgrop(&tmp_pmdata); } +u_int +pm_set_brightness(u_int brightness) +{ + PMData pmdata; + + pmdata.num_data = 1; + pmdata.s_buf = pmdata.data; + pmdata.r_buf = pmdata.data; + + switch (pmHardware) { + case PM_HW_PB5XX: + /* this is an experimental code */ + pmdata.command = 0x41; + brightness = 0x7f - brightness / 2; + if (brightness < 0x25) + brightness = 0x25; + if (brightness > 0x5a) + brightness = 0x7f; + pmdata.data[0] = brightness; + (void)pm_pmgrop_pm2(&pmdata); + break; + case PM_HW_PB1XX: + /* this is an experimental code also */ + pmdata.command = 0x40; + if ((int)brightness < 0) + brightness = 0; + if ((int)brightness > 31) + brightness = 31; + pmdata.data[0] = 31 - brightness; + (void)pm_pmgrop_pm1(&pmdata); + break; + default: + + return 0; + break; + } + + return brightness; +} Index: src/sys/arch/mac68k/dev/pm_direct.h diff -u src/sys/arch/mac68k/dev/pm_direct.h:1.1 src/sys/arch/mac68k/dev/pm_direct.h:1.2 --- src/sys/arch/mac68k/dev/pm_direct.h:1.1 Tue Apr 8 03:11:38 1997 +++ src/sys/arch/mac68k/dev/pm_direct.h Sat Sep 14 20:59:45 2024 @@ -1,6 +1,9 @@ -/* $NetBSD: pm_direct.h,v 1.1 1997/04/08 03:11:38 scottr Exp $ */ +/* $NetBSD: pm_direct.h,v 1.2 2024/09/14 20:59:45 nat Exp $ */ /* + * Copyright (c) 2024 Nathanial Sloss <nathanialsl...@yahoo.com.au> + * All rights reserved. + * * Copyright (C) 1997 Takashi Hamada * All rights reserved. * @@ -45,3 +48,4 @@ typedef struct { } PMData; int pmgrop(PMData *); +u_int pm_set_brightness(u_int);