Page MenuHomeFreeBSD

acpi_system76: Add backlight(9) support for keyboard
ClosedPublic

Authored by pouria on Sat, Mar 7, 11:03 PM.
Tags
None
Referenced Files
F147298749: D55716.diff
Mon, Mar 9, 7:05 PM
Unknown Object (File)
Sun, Mar 8, 9:04 AM
Unknown Object (File)
Sun, Mar 8, 7:05 AM
Unknown Object (File)
Sat, Mar 7, 11:37 PM
Subscribers
None

Details

Summary

Add backlight(9) support for keyboard brightness.

Test Plan

To set keyboard backlight via backlight(8)

% backlight -f /dev/backlight/backlight1 84
% sysctl hw.acpi.s76.keyboard_backlight
hw.acpi.s76.keyboard_backlight: 224
% backlight -f /dev/backlight/backlight1 0
% sysctl hw.acpi.s76.keyboard_backlight
hw.acpi.s76.keyboard_backlight: 0
% backlight -f /dev/backlight/backlight1 incr
% backlight -f /dev/backlight/backlight1
brightness: 6
levels: 0 6 12 18 24 30 36 42 48 54 60 66 72 78 84 100
% backlight -f /dev/backlight/backlight1 decr
% backlight -f /dev/backlight/backlight1
brightness: 0
levels: 0 6 12 18 24 30 36 42 48 54 60 66 72 78 84 100

Diff Detail

Repository
rG FreeBSD src repository
Lint
Lint Not Applicable
Unit
Tests Not Applicable

Event Timeline

pouria created this revision.
sys/dev/acpi_support/acpi_system76.c
470

That is not enough to store only hardware value of brightness. You should keep users i.e. obtained via backlight(9) value too and convert one to another every time it has changed.

Imagine that user's software increases brightness in 2 pct steps through backlight(9) interface. It wont work with current code as minimal step is 6 pct.

sys/dev/acpi_support/acpi_system76.c
470

You're right.
Just a question.
The System76 keyboard uses a PWM mechanism to power its keyboard backlight.
It really supports 0 to 255 different levels.
I don't like to manually fill the acpi_system76_backlight_levels with values from 0 to 100 since that will fill the stack too so using a macro won't help much neigher.
What do you recommend in that regard?

sys/dev/acpi_support/acpi_system76.c
470

IIRC setting of number of levels to zero enables all of them.

Address @wulf comments.
Test:

% backlight -f /dev/backlight/backlight1
brightness: 0
levels: 0 6 12 18 24 30 36 42 48 54 60 66 72 78 84 100
% backlight -f /dev/backlight/backlight1 + 5
% backlight -qf /dev/backlight/backlight1
brightness: 5
% sysctl hw.acpi.s76.keyboard_backlight
hw.acpi.s76.keyboard_backlight: 0
% backlight -f /dev/backlight/backlight1 + 1
% sysctl hw.acpi.s76.keyboard_backlight
hw.acpi.s76.keyboard_backlight: 16
% backlight -f /dev/backlight/backlight1 44
% backlight -qf /dev/backlight/backlight1
brightness: 44
% sysctl hw.acpi.s76.keyboard_backlight
hw.acpi.s76.keyboard_backlight: 112
% sysctl hw.acpi.s76.keyboard_backlight=81
hw.acpi.s76.keyboard_backlight: 112 -> 81
% backlight -qf /dev/backlight/backlight1
brightness: 30

Also add suspend, resume, shutdown method.
suspend and resume depends on this revision.
shutdown is added to avoid panics AcpiNotify after kldunload.

This revision is now accepted and ready to land.Sun, Mar 8, 8:29 PM