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