xref: /freebsd/libexec/rc/rc.d/backlight (revision a259b98fa211ed87bfee58c575de4e2de94ee0fa)
1#!/bin/sh -
2#
3# Copyright (c) 2026 Kyle Evans <kevans@FreeBSD.org>
4#
5# SPDX-License-Identifier: BSD-2-Clause
6#
7
8# PROVIDE: backlight
9# REQUIRE: FILESYSTEMS kld
10# KEYWORD: nojail shutdown
11
12. /etc/rc.subr
13
14name="backlight"
15desc="Save and restore backlight values"
16rcvar="backlight_enable"
17stop_cmd="backlight_stop"
18start_cmd="backlight_start"
19reload_cmd="backlight_start"
20extra_commands="reload"
21
22backlightdb="/var/db/backlight"
23
24#
25# List current backlight devices to stdout.
26#
27list_backlights()
28{
29	( cd /dev/backlight ; ls backlight* 2>/dev/null )
30}
31
32#
33# Save state of an individual backlight specified as $1
34#
35backlight_save()
36{
37	local dev
38
39	dev="/dev/backlight/$1"
40	if [ -r "$dev" ]; then
41		/usr/bin/backlight -f "$dev" -q > "$backlightdb/$1-state" 2>/dev/null
42	fi
43}
44
45#
46# Restore the state of an individual backlight specified as $1
47#
48backlight_restore()
49{
50	local file dev
51
52	dev="/dev/backlight/$1"
53	file="$backlightdb/$1-state"
54	if [ -r "$dev" -a -r "$file" ]; then
55		/usr/bin/backlight -f "$dev" $(cat "$file") > /dev/null
56	fi
57}
58
59#
60# Restore state of all backlights
61#
62backlight_start()
63{
64	local backlight
65
66	for backlight in $(list_backlights); do
67		backlight_restore "$backlight"
68	done
69}
70
71#
72# Save the state of all backlights
73#
74backlight_stop()
75{
76	local backlight
77
78	for backlight in $(list_backlights); do
79		backlight_save "$backlight"
80	done
81}
82
83load_rc_config $name
84
85# doesn't make sense to run in a svcj: config setting
86backlight_svcj="NO"
87
88run_rc_command "$1"
89