From e2bb059187cb98d9c7e21294e54089cbbcde0311 Mon Sep 17 00:00:00 2001 From: Kevin Chiu Date: Tue, 12 Sep 2017 09:13:41 +0800 Subject: ec/google: Add command to set APU SKU ID to EC EC needs to have command to set SKU ID from APU to support specific feature (ex: keyboard backlight) for variant board. BUG=b:65359225 BRANCH=reef TEST=emerge-snappy coreboot Change-Id: I8cd3b8f646d4134d6bfff2869f6df2d9c615c157 Signed-off-by: Kevin Chiu Reviewed-on: https://review.coreboot.org/21504 Tested-by: build bot (Jenkins) Reviewed-by: Aaron Durbin --- src/ec/google/chromeec/ec.c | 23 ++++++++++++++++++++++- src/ec/google/chromeec/ec.h | 1 + src/ec/google/chromeec/ec_commands.h | 5 ++++- 3 files changed, 27 insertions(+), 2 deletions(-) diff --git a/src/ec/google/chromeec/ec.c b/src/ec/google/chromeec/ec.c index 4d47982aa6..03d4c3bc6d 100644 --- a/src/ec/google/chromeec/ec.c +++ b/src/ec/google/chromeec/ec.c @@ -263,6 +263,27 @@ int google_chromeec_check_feature(int feature) return r.flags[feature / 32] & EC_FEATURE_MASK_0(feature); } +int google_chromeec_set_sku_id(u32 skuid) +{ + struct chromeec_command cmd; + struct ec_sku_id_info set_skuid = { + .sku_id = skuid + }; + + cmd.cmd_code = EC_CMD_SET_SKU_ID; + cmd.cmd_version = 0; + cmd.cmd_size_in = sizeof(set_skuid); + cmd.cmd_data_in = &set_skuid; + cmd.cmd_data_out = NULL; + cmd.cmd_size_out = 0; + cmd.cmd_dev_index = 0; + + if (google_chromeec_command(&cmd) != 0) + return -1; + + return 0; +} + #if IS_ENABLED(CONFIG_EC_GOOGLE_CHROMEEC_RTC) int rtc_get(struct rtc_time *time) { @@ -389,7 +410,7 @@ u16 google_chromeec_get_board_version(void) u32 google_chromeec_get_sku_id(void) { struct chromeec_command cmd; - struct ec_response_sku_id sku_v; + struct ec_sku_id_info sku_v; cmd.cmd_code = EC_CMD_GET_SKU_ID; cmd.cmd_version = 0; diff --git a/src/ec/google/chromeec/ec.h b/src/ec/google/chromeec/ec.h index 60d5a323b7..3a7cadd506 100644 --- a/src/ec/google/chromeec/ec.h +++ b/src/ec/google/chromeec/ec.h @@ -50,6 +50,7 @@ int google_chromeec_check_feature(int feature); uint8_t google_chromeec_calc_checksum(const uint8_t *data, int size); u16 google_chromeec_get_board_version(void); u32 google_chromeec_get_sku_id(void); +int google_chromeec_set_sku_id(u32 skuid); u32 google_chromeec_get_events_b(void); int google_chromeec_clear_events_b(u32 mask); int google_chromeec_kbbacklight(int percent); diff --git a/src/ec/google/chromeec/ec_commands.h b/src/ec/google/chromeec/ec_commands.h index 46ab905e8f..c5d27d2149 100644 --- a/src/ec/google/chromeec/ec_commands.h +++ b/src/ec/google/chromeec/ec_commands.h @@ -1124,7 +1124,10 @@ struct __ec_align4 ec_response_get_features { /* Get the board's SKU ID from EC */ #define EC_CMD_GET_SKU_ID 0x000E -struct __ec_align4 ec_response_sku_id { +/* Set SKU ID from AP */ +#define EC_CMD_SET_SKU_ID 0x000F + +struct __ec_align4 ec_sku_id_info { uint32_t sku_id; }; -- cgit v1.2.3