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
F147818580: D55716.diff
Fri, Mar 13, 9:52 PM
F147727115: D55716.id173319.diff
Fri, Mar 13, 5:55 AM
Unknown Object (File)
Thu, Mar 12, 10:07 PM
Unknown Object (File)
Thu, Mar 12, 8:30 PM
Unknown Object (File)
Thu, Mar 12, 8:28 PM
Unknown Object (File)
Thu, Mar 12, 3:17 PM
Unknown Object (File)
Thu, Mar 12, 7:54 AM
Unknown Object (File)
Wed, Mar 11, 8:22 AM
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 Passed
Unit
No Test Coverage
Build Status
Buildable 71250
Build 68133: arc lint + arc unit

Event Timeline

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

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
454

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
454

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