From 82e4ac67acf3c75084be37a52ae14147135437fa Mon Sep 17 00:00:00 2001 From: Bill Richardson Date: Thu, 18 Aug 2016 15:39:57 -0700 Subject: [PATCH] Cr50: Add "wp" console command to control EC_WP_L BUG=chrome-os-partner:49959 BRANCH=none TEST=manual On the Cr50 console, use the "wp" command to get/set the desired state. On the EC console, use "gpioget wp_l" to watch it change. Change-Id: I5978e6116ad0a07a7a61a8356dc1daf79e2397d0 Signed-off-by: Bill Richardson Reviewed-on: https://chromium-review.googlesource.com/373618 Reviewed-by: Vadim Bendebury --- board/cr50/build.mk | 1 + board/cr50/wp.c | 32 ++++++++++++++++++++++++++++++++ 2 files changed, 33 insertions(+) create mode 100644 board/cr50/wp.c diff --git a/board/cr50/build.mk b/board/cr50/build.mk index 8710d11e41..8f9acd1522 100644 --- a/board/cr50/build.mk +++ b/board/cr50/build.mk @@ -49,6 +49,7 @@ board-y += tpm2/rsa.o board-y += tpm2/stubs.o board-y += tpm2/trng.o board-y += tpm2/upgrade.o +board-y += wp.o # Build and link with an external library EXTLIB := $(realpath ../../third_party/tpm2) diff --git a/board/cr50/wp.c b/board/cr50/wp.c new file mode 100644 index 0000000000..e32ce2189a --- /dev/null +++ b/board/cr50/wp.c @@ -0,0 +1,32 @@ +/* Copyright 2016 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 "common.h" +#include "console.h" +#include "registers.h" + +static int command_wp(int argc, char **argv) +{ + int val; + + if (argc > 1) { + if (!parse_bool(argv[1], &val)) + return EC_ERROR_PARAM1; + + /* Invert, because active low */ + GREG32(RBOX, EC_WP_L) = !val; + } + + /* Invert, because active low */ + val = !GREG32(RBOX, EC_WP_L); + + ccprintf("Flash WP is %s\n", val ? "enabled" : "disabled"); + + return EC_SUCCESS; +} +DECLARE_CONSOLE_COMMAND(wp, command_wp, + "[bool]", + "Get/set the flash HW write-protect signal", + NULL);