summaryrefslogtreecommitdiff
path: root/board/metaknight/cbi_ssfc.c
diff options
context:
space:
mode:
authorParth Malkan <parthmalkan@google.com>2021-07-12 17:47:22 +0000
committerCommit Bot <commit-bot@chromium.org>2021-07-19 18:19:51 +0000
commitc9127f57b3d9f4837202c2d94e985ae36e53778f (patch)
tree38b19dbc6905be631ce3ee0f2325105973007b35 /board/metaknight/cbi_ssfc.c
parentacc12b843cb90e117374a2395f5b318e336db338 (diff)
downloadchrome-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/metaknight/cbi_ssfc.c')
-rw-r--r--board/metaknight/cbi_ssfc.c36
1 files changed, 36 insertions, 0 deletions
diff --git a/board/metaknight/cbi_ssfc.c b/board/metaknight/cbi_ssfc.c
new file mode 100644
index 0000000000..c4b859f133
--- /dev/null
+++ b/board/metaknight/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;
+}