Rajat Jain has uploaded this change for review. ( https://review.coreboot.org/c/coreboot/+/39889 )
Change subject: google/hatch/jinlon: Enable top row keys ......................................................................
google/hatch/jinlon: Enable top row keys
Enable SSDT generation for the top row keys for PS2 internal keyboard.
Change-Id: Icbf27454845b0de210afc86dae98428d4aa645f5 Signed-off-by: Rajat Jain rajatja@google.com --- M src/mainboard/google/hatch/variants/jinlon/mainboard.c M src/mainboard/google/hatch/variants/jinlon/overridetree.cb 2 files changed, 61 insertions(+), 0 deletions(-)
git pull ssh://review.coreboot.org:29418/coreboot refs/changes/89/39889/1
diff --git a/src/mainboard/google/hatch/variants/jinlon/mainboard.c b/src/mainboard/google/hatch/variants/jinlon/mainboard.c index 0777585..73e14f8 100644 --- a/src/mainboard/google/hatch/variants/jinlon/mainboard.c +++ b/src/mainboard/google/hatch/variants/jinlon/mainboard.c @@ -6,11 +6,14 @@ */ #include <baseboard/variants.h> #include <bootstate.h> +#include <ec/google/chromeec/chip.h> #include <ec/google/chromeec/ec.h> #include <device/device.h> #include <drivers/gfx/generic/chip.h> #include <variant/sku.h>
+extern struct chip_operations ec_google_chromeec_ops; + static bool eps_sku(uint32_t sku_id) { /* @@ -45,10 +48,48 @@ gfx_dev->enabled = 0; }
+static struct device *find_chromeec_dev(void) +{ + struct device *dev; + + for (dev = all_devices; dev; dev = dev->next) { + if (dev->chip_ops && dev->chip_ops == &ec_google_chromeec_ops) + return dev; + } + return NULL; +} + +static void check_for_keyboard_layout(uint32_t sku_id) +{ + struct device *chromeec; + struct ec_google_chromeec_config *config; + struct ec_google_chromeec_ps2k_config *ps2k; + + /* Default layout is already set for EPS SKU in overridetree.cb */ + if (eps_sku(sku_id)) + return; + + chromeec = find_chromeec_dev(); + if (!chromeec || !chromeec->chip_info) { + printk(BIOS_ERR, "Error! No chromeec config! Can't change KBD layout\n"); + return; + } + + printk(BIOS_INFO, "Changing PS2 KBD layout for SKU ID %u\n", sku_id); + config = chromeec->chip_info; + ps2k = &config->ps2_keyboard; + ps2k->top_row.keys[7] = TK_KBD_BKLIGHT_DOWN; /* T8 */ + ps2k->top_row.keys[8] = TK_KBD_BKLIGHT_UP; /* T9 */ + ps2k->top_row.keys[9] = TK_PLAY_PAUSE; /* T10 */ +} + void variant_devtree_update(void) { uint32_t sku_id = google_chromeec_get_board_sku();
/* Disable EPS on SKUs that do not support it */ check_for_eps(sku_id); + + /* Change Keyboard layout if needed */ + check_for_keyboard_layout(sku_id); } diff --git a/src/mainboard/google/hatch/variants/jinlon/overridetree.cb b/src/mainboard/google/hatch/variants/jinlon/overridetree.cb index 7cf434d..1b4afe0 100644 --- a/src/mainboard/google/hatch/variants/jinlon/overridetree.cb +++ b/src/mainboard/google/hatch/variants/jinlon/overridetree.cb @@ -176,6 +176,26 @@ device spi 1 on end end # FPMCU end # GSPI #1 + device pci 1f.0 on + chip ec/google/chromeec + register "ps2_keyboard.custom_top_row" = "true" + register "ps2_keyboard.top_row.num_top_row_keys" = "13" + register "ps2_keyboard.top_row.keys[0]" = "TK_BACK" #T1 + register "ps2_keyboard.top_row.keys[1]" = "TK_REFRESH" #T2 + register "ps2_keyboard.top_row.keys[2]" = "TK_FULLSCREEN" #T3 + register "ps2_keyboard.top_row.keys[3]" = "TK_OVERVIEW" #T4 + register "ps2_keyboard.top_row.keys[4]" = "TK_SNIP" #T5 + register "ps2_keyboard.top_row.keys[5]" = "TK_BRIGHTNESS_DOWN" #T6 + register "ps2_keyboard.top_row.keys[6]" = "TK_BRIGHTNESS_UP" #T7 + register "ps2_keyboard.top_row.keys[7]" = "TK_PRIVACY_SCRN_TOGGLE" #T8 + register "ps2_keyboard.top_row.keys[8]" = "TK_KBD_BKLIGHT_DOWN" #T9 + register "ps2_keyboard.top_row.keys[9]" = "TK_KBD_BKLIGHT_UP" #T10 + register "ps2_keyboard.top_row.keys[10]" = "TK_VOL_MUTE" #T11 + register "ps2_keyboard.top_row.keys[11]" = "TK_VOL_DOWN" #T12 + register "ps2_keyboard.top_row.keys[12]" = "TK_VOL_UP" #T13 + device pnp 0c09.0 on end + end + end # eSPI Interface device pci 1f.3 on chip drivers/generic/max98357a register "hid" = ""MX98357A""