diff options
author | Jonathon Hall <jonathon.hall@puri.sm> | 2023-07-13 16:54:41 -0400 |
---|---|---|
committer | Felix Held <felix-coreboot@felixheld.de> | 2023-10-02 16:24:54 +0000 |
commit | b63017fb719cefaa0dcec750048da352a31956c5 (patch) | |
tree | a15ab23f26b97727dbacfecd0fb4d177670c3a05 /src/acpi/acpigen_ps2_keybd.c | |
parent | 1af3e3c5f809fa39db9e727bcb41f4996f58202f (diff) |
acpi/acpigen_ps2_keybd: Reduce minimum keys, optional alpha/num/punct
Librem 11's volume keys act as a PS/2 keyboard with only those two
keys. Reduce the minimum number of top-row keys to 2. Make the
"rest of keys" (alphanumerics, punctuation, etc.) optional.
Change-Id: Idf80b184ec816043138750ee0a869b23f1e6dcf2
Signed-off-by: Jonathon Hall <jonathon.hall@puri.sm>
Reviewed-on: https://review.coreboot.org/c/coreboot/+/78095
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
Reviewed-by: Tim Wawrzynczak <inforichland@gmail.com>
Reviewed-by: Matt DeVillier <matt.devillier@gmail.com>
Diffstat (limited to 'src/acpi/acpigen_ps2_keybd.c')
-rw-r--r-- | src/acpi/acpigen_ps2_keybd.c | 20 |
1 files changed, 13 insertions, 7 deletions
diff --git a/src/acpi/acpigen_ps2_keybd.c b/src/acpi/acpigen_ps2_keybd.c index 7928dad9da..67e92a9a3b 100644 --- a/src/acpi/acpigen_ps2_keybd.c +++ b/src/acpi/acpigen_ps2_keybd.c @@ -209,7 +209,8 @@ static void ssdt_generate_keymap(struct acpi_dp *dp, uint8_t num_top_row_keys, enum ps2_action_key action_keys[], bool can_send_function_keys, bool has_numeric_keypad, - bool has_scrnlock_key) + bool has_scrnlock_key, + bool has_alpha_num_punct_keys) { struct acpi_dp *dp_array; enum ps2_action_key key; @@ -261,10 +262,14 @@ static void ssdt_generate_keymap(struct acpi_dp *dp, uint8_t num_top_row_keys, total++; } - /* Write out keymap for rest of keys */ - for (i = 0; i < ARRAY_SIZE(rest_of_keymaps); i++) { - keymap = rest_of_keymaps[i]; - acpi_dp_add_integer(dp_array, NULL, keymap); + /* Provide alphanumeric and punctuation keys (rest of the keyboard) if + * present + */ + if (has_alpha_num_punct_keys) { + for (i = 0; i < ARRAY_SIZE(rest_of_keymaps); i++) { + keymap = rest_of_keymaps[i]; + acpi_dp_add_integer(dp_array, NULL, keymap); + } } total += ARRAY_SIZE(rest_of_keymaps); @@ -277,7 +282,8 @@ void acpigen_ps2_keyboard_dsd(const char *scope, uint8_t num_top_row_keys, enum ps2_action_key action_keys[], bool can_send_function_keys, bool has_numeric_keypad, - bool has_scrnlock_key) + bool has_scrnlock_key, + bool has_alpha_num_punct_keys) { struct acpi_dp *dsd; @@ -298,7 +304,7 @@ void acpigen_ps2_keyboard_dsd(const char *scope, uint8_t num_top_row_keys, ssdt_generate_physmap(dsd, num_top_row_keys, action_keys); ssdt_generate_keymap(dsd, num_top_row_keys, action_keys, can_send_function_keys, has_numeric_keypad, - has_scrnlock_key); + has_scrnlock_key, has_alpha_num_punct_keys); acpi_dp_write(dsd); acpigen_pop_len(); /* Scope */ } |