summaryrefslogtreecommitdiff
path: root/test/cbi_wp.c
diff options
context:
space:
mode:
authorAseda Aboagye <aaboagye@google.com>2021-07-22 16:41:59 -0700
committerCommit Bot <commit-bot@chromium.org>2021-07-29 20:36:11 +0000
commitdd9b5de765fd683a2e25cbfe83925d71fe524be2 (patch)
treea7967998b1d539c49256008a4eafa9f9777740c0 /test/cbi_wp.c
parent5e07ac82ecf51aff07a8def8a4bae1330c426b22 (diff)
downloadchrome-ec-dd9b5de765fd683a2e25cbfe83925d71fe524be2.tar.gz
cbi: Add CONFIG_EEPROM_CBI_WP
This commit adds the config option, CONFIG_EEPROM_CBI_WP. It is to be defined when the EC directly controls the CBI EEPROM WP signal. The EC will set the WP according to the result of `system_is_locked()`. Note that once the WP is set, the EC must be reset via EC_RST_ODL in order for the WP to become unset. This is enabled by the accompanying hardware. BUG=b:181769483 BRANCH=None TEST=`make -j buildall` Signed-off-by: Aseda Aboagye <aaboagye@google.com> Change-Id: If490594ab4dd24af98119b01299215b997913b66 Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/3046412 Tested-by: Aseda Aboagye <aaboagye@chromium.org> Auto-Submit: Aseda Aboagye <aaboagye@chromium.org> Reviewed-by: Daisuke Nojiri <dnojiri@chromium.org> Commit-Queue: Aseda Aboagye <aaboagye@chromium.org>
Diffstat (limited to 'test/cbi_wp.c')
-rw-r--r--test/cbi_wp.c56
1 files changed, 56 insertions, 0 deletions
diff --git a/test/cbi_wp.c b/test/cbi_wp.c
new file mode 100644
index 0000000000..7bdfa4b0c8
--- /dev/null
+++ b/test/cbi_wp.c
@@ -0,0 +1,56 @@
+/* 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.
+ *
+ * Test CBI EEPROM WP
+ */
+
+#include "common.h"
+#include "console.h"
+#include "cros_board_info.h"
+#include "gpio.h"
+#include "system.h"
+#include "test_util.h"
+#include "util.h"
+
+static int system_locked;
+
+static void test_setup(void)
+{
+ /* Make sure that write protect is disabled */
+ gpio_set_level(GPIO_WP, 0);
+ gpio_set_level(GPIO_EC_CBI_WP, 0);
+ system_locked = 0;
+}
+
+static void test_teardown(void)
+{
+}
+
+int system_is_locked(void)
+{
+ return system_locked;
+}
+
+DECLARE_EC_TEST(test_wp)
+{
+ int cbi_wp;
+
+ cbi_wp = gpio_get_level(GPIO_EC_CBI_WP);
+ zassert_equal(cbi_wp, 0, NULL);
+
+ cbi_latch_eeprom_wp();
+ cbi_wp = gpio_get_level(GPIO_EC_CBI_WP);
+ zassert_equal(cbi_wp, 1, NULL);
+
+ return EC_SUCCESS;
+}
+
+TEST_SUITE(test_suite_cbi_wp)
+{
+ ztest_test_suite(test_cbi_wp,
+ ztest_unit_test_setup_teardown(test_wp,
+ test_setup,
+ test_teardown));
+ ztest_run_test_suite(test_cbi_wp);
+}