Skip to content

--kblight: Fix on some early systems#285

Open
JohnAZoidberg wants to merge 1 commit intomainfrom
hx30-kblight
Open

--kblight: Fix on some early systems#285
JohnAZoidberg wants to merge 1 commit intomainfrom
hx30-kblight

Conversation

@JohnAZoidberg
Copy link
Member

@JohnAZoidberg JohnAZoidberg commented Mar 13, 2026

Tested on:

  • Framework Laptop 13 Intel 13th Gen (previously not working)
  • Framework Laptop 13 AMD Ryzen AI 300 (previously working)

I tested on Laptop 13 Intel 13th gen and kblight didn't work.

Signed-off-by: Daniel Schaefer <dhs@frame.work>
Copy link

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Fixes --kblight on certain early Framework systems by detecting whether the EC supports PwmType::KbLight and falling back to an alternative PWM mapping when it does not.

Changes:

  • Added a capability probe (has_pwmtype_kblight()) based on PwmGetDuty.
  • Updated set_keyboard_backlight() to fall back to PwmType::Generic with a different index when KbLight isn’t supported.
  • Updated get_keyboard_backlight() to use the same fallback logic.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

You can also share your feedback on Copilot code review. Take the survey.

Comment on lines +726 to +734
fn has_pwmtype_kblight(&self) -> bool {
// Returns EcError::Response(EcResponseStatus::InvalidParameter) on some early systems
EcRequestPwmGetDuty {
pwm_type: PwmType::KbLight as u8,
index: 0,
}
.send_command(self)
.is_ok()
}
Comment on lines 741 to 755
debug_assert!(percent <= 100);
let res = EcRequestPwmSetDuty {
duty: percent as u16 * (PWM_MAX_DUTY / 100),
pwm_type: PwmType::KbLight as u8,
index: 0,
let res = if self.has_pwmtype_kblight() {
EcRequestPwmSetDuty {
duty: percent as u16 * (PWM_MAX_DUTY / 100),
pwm_type: PwmType::KbLight as u8,
index: 0,
}
} else {
EcRequestPwmSetDuty {
duty: percent as u16 * (PWM_MAX_DUTY / 100),
pwm_type: PwmType::Generic as u8,
index: 1,
}
}
.send_command(self);
Comment on lines +749 to +753
EcRequestPwmSetDuty {
duty: percent as u16 * (PWM_MAX_DUTY / 100),
pwm_type: PwmType::Generic as u8,
index: 1,
}
Comment on lines +742 to +750
let res = if self.has_pwmtype_kblight() {
EcRequestPwmSetDuty {
duty: percent as u16 * (PWM_MAX_DUTY / 100),
pwm_type: PwmType::KbLight as u8,
index: 0,
}
} else {
EcRequestPwmSetDuty {
duty: percent as u16 * (PWM_MAX_DUTY / 100),
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants