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 <[email protected]>
+ * 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 <[email protected]>
+ * 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 <[email protected]>
+ * 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);