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