diff --git a/board/hx20/keyboard_customization.c b/board/hx20/keyboard_customization.c
index 2b91f2e0c..9a5050a0f 100644
--- a/board/hx20/keyboard_customization.c
+++ b/board/hx20/keyboard_customization.c
@@ -249,6 +249,23 @@ int fn_table_set(int8_t pressed, uint32_t fn_bit)
return false;
}
+static void hx20_update_fnkey_led(void) {
+ /* Turn the capslock light into a fn-lock light */
+ gpio_set_level(GPIO_CAP_LED_L, (Fn_key & FN_LOCKED) ? 1 : 0);
+}
+
+/* Set the fn-lock light to the correct setting when the system resumes */
+void hx20_fnkey_resume(void) {
+ hx20_update_fnkey_led();
+}
+DECLARE_HOOK(HOOK_CHIPSET_RESUME, hx20_fnkey_resume, HOOK_PRIO_DEFAULT);
+
+/* Disable the fn-lock light on suspend */
+void hx20_fnkey_suspend(void) {
+ gpio_set_level(GPIO_CAP_LED_L, 0);
+}
+DECLARE_HOOK(HOOK_CHIPSET_SUSPEND, hx20_fnkey_suspend, HOOK_PRIO_DEFAULT);
+
void fnkey_shutdown(void) {
uint8_t current_kb = 0;
@@ -420,6 +437,7 @@ int functional_hotkey(uint16_t *key_code, int8_t pressed)
Fn_key &= ~FN_LOCKED;
else
Fn_key |= FN_LOCKED;
+ hx20_update_fnkey_led();
}
return EC_ERROR_UNIMPLEMENTED;
}