diff options
author | Parth Malkan <parthmalkan@google.com> | 2021-07-12 17:47:22 +0000 |
---|---|---|
committer | Commit Bot <commit-bot@chromium.org> | 2021-07-19 18:19:51 +0000 |
commit | c9127f57b3d9f4837202c2d94e985ae36e53778f (patch) | |
tree | 38b19dbc6905be631ce3ee0f2325105973007b35 /board/waddledoo2 | |
parent | acc12b843cb90e117374a2395f5b318e336db338 (diff) | |
download | chrome-ec-c9127f57b3d9f4837202c2d94e985ae36e53778f.tar.gz |
dedede: Make scope of SSFC definition per board
SSFC bit definition started diverging between coreboot and EC. To
avoid conflicts move the definitions of SSFC bits within EC to per
board instead of at a baseboard level.
Base sensor and Lid sensor components are common across all boards
Base Sensor - bits 0-2
Lid Sensor - bits 3-5
In addition, Sasuke uses bits 6-8 for usb superspeed mux
Cret board uses bits 9-11 in coreboot for audio codec
BRANCH=firmware-dedede-13606.B
BUG=b:187694527
TEST=make buildall
Signed-off-by: Parth Malkan <parthmalkan@google.com>
Change-Id: Ib0f732e5d41668135ff180c545ff4bb6a1cb1427
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/3021932
Reviewed-by: YH Lin <yueherngl@chromium.org>
Reviewed-by: Marco Chen <marcochen@chromium.org>
Diffstat (limited to 'board/waddledoo2')
-rw-r--r-- | board/waddledoo2/build.mk | 2 | ||||
-rw-r--r-- | board/waddledoo2/cbi_ssfc.c | 36 | ||||
-rw-r--r-- | board/waddledoo2/cbi_ssfc.h | 60 |
3 files changed, 97 insertions, 1 deletions
diff --git a/board/waddledoo2/build.mk b/board/waddledoo2/build.mk index a83e321ccf..b012d8d502 100644 --- a/board/waddledoo2/build.mk +++ b/board/waddledoo2/build.mk @@ -11,4 +11,4 @@ CHIP_FAMILY:=npcx7 CHIP_VARIANT:=npcx7m7fc BASEBOARD:=keeby -board-y=board.o battery.o led.o usb_pd_policy.o +board-y=board.o battery.o cbi_ssfc.o led.o usb_pd_policy.o diff --git a/board/waddledoo2/cbi_ssfc.c b/board/waddledoo2/cbi_ssfc.c new file mode 100644 index 0000000000..c4b859f133 --- /dev/null +++ b/board/waddledoo2/cbi_ssfc.c @@ -0,0 +1,36 @@ +/* Copyright 2021 The Chromium OS Authors. All rights reserved. + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ + +#include "cbi_ssfc.h" +#include "common.h" +#include "console.h" +#include "cros_board_info.h" +#include "hooks.h" + +#define CPRINTS(format, args...) cprints(CC_SYSTEM, format, ##args) + +/* Cache SSFC on init since we don't expect it to change in runtime */ +static union dedede_cbi_ssfc cached_ssfc; +BUILD_ASSERT(sizeof(cached_ssfc) == sizeof(uint32_t)); + +static void cbi_ssfc_init(void) +{ + if (cbi_get_ssfc(&cached_ssfc.raw_value) != EC_SUCCESS) + /* Default to 0 when CBI isn't populated */ + cached_ssfc.raw_value = 0; + + CPRINTS("Read CBI SSFC : 0x%04X", cached_ssfc.raw_value); +} +DECLARE_HOOK(HOOK_INIT, cbi_ssfc_init, HOOK_PRIO_FIRST); + +enum ec_ssfc_base_sensor get_cbi_ssfc_base_sensor(void) +{ + return (enum ec_ssfc_base_sensor) cached_ssfc.base_sensor; +} + +enum ec_ssfc_lid_sensor get_cbi_ssfc_lid_sensor(void) +{ + return (enum ec_ssfc_lid_sensor) cached_ssfc.lid_sensor; +} diff --git a/board/waddledoo2/cbi_ssfc.h b/board/waddledoo2/cbi_ssfc.h new file mode 100644 index 0000000000..935049b6ae --- /dev/null +++ b/board/waddledoo2/cbi_ssfc.h @@ -0,0 +1,60 @@ +/* Copyright 2021 The Chromium OS Authors. All rights reserved. + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ + +#ifndef _DEDEDE_CBI_SSFC__H_ +#define _DEDEDE_CBI_SSFC__H_ + +#include "stdint.h" + +/**************************************************************************** + * Dedede CBI Second Source Factory Cache + */ + +/* + * Base Sensor (Bits 0-2) + */ +enum ec_ssfc_base_sensor { + SSFC_SENSOR_BASE_DEFAULT = 0, + SSFC_SENSOR_BMI160 = 1, + SSFC_SENSOR_ICM426XX = 2, + SSFC_SENSOR_LSM6DSM = 3, + SSFC_SENSOR_ICM42607 = 4 +}; + +/* + * Lid Sensor (Bits 3-5) + */ +enum ec_ssfc_lid_sensor { + SSFC_SENSOR_LID_DEFAULT = 0, + SSFC_SENSOR_BMA255 = 1, + SSFC_SENSOR_KX022 = 2, + SSFC_SENSOR_LIS2DWL = 3 +}; + +union dedede_cbi_ssfc { + struct { + uint32_t base_sensor : 3; + uint32_t lid_sensor : 3; + uint32_t reserved_2 : 26; + }; + uint32_t raw_value; +}; + +/** + * Get the Base sensor type from SSFC_CONFIG. + * + * @return the Base sensor board type. + */ +enum ec_ssfc_base_sensor get_cbi_ssfc_base_sensor(void); + +/** + * Get the Lid sensor type from SSFC_CONFIG. + * + * @return the Lid sensor board type. + */ +enum ec_ssfc_lid_sensor get_cbi_ssfc_lid_sensor(void); + + +#endif /* _DEDEDE_CBI_SSFC__H_ */ |