| Commit message (Collapse) | Author | Age | Files | Lines |
... | |
|
|
|
|
|
|
|
|
|
| |
BUG=none
TEST=none
Change-Id: I33ad7debedb98f8ff90b4e8eaff96e25c73da4cd
Signed-off-by: Mary Ruthven <mruthven@chromium.org>
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/2180880
Reviewed-by: Vadim Bendebury <vbendeb@chromium.org>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This python script will be run in a Chrome OS factory image, with
limited availability of chromite libraries.
The command line parameters of the script are a set of AP firmware
address ranges and FMAP section names.
The script does the following:
- use flashrom to read the FMAP area from the AP flash and dump_fmap
to generate the flash map description.
- verify that section names passed in as parameters (if any) are
indeed are present in the flash map.
- verify that all passed in ranges and sections fit into the WP_RO
area of the flash (as defined if the flash map).
- prepare a layout file to instruct flashrom to read only the
sections of interest (as defined by ranges and section names
passed in the command line).
- use flashrom again to read the required sections of the AP flash
into a file.
- read the file and and pass the required sections through the
sha256 hash calculation.
- prepare the Cr50 vendor command to pass information about the
flash ranges and the sha256 sum to Cr50 and send the command.
A unit test is also being added.
BUG=b:153764696
TEST=./util/test_ap_ro_hash.py succeeds.
with the rest of the patches added end to end AP RO verification
procedure also succeeds.
Signed-off-by: Vadim Bendebury <vbendeb@chromium.org>
Change-Id: Ic0fa3759b3a32db8cf521be28c3c7dfe0cd35278
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/2161576
Reviewed-by: Mary Ruthven <mruthven@chromium.org>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The recent interrupt pulse extension brought to fore an old bug where
the AP_INT_L pulse is generated by the SPS driver before the
controller is actually ready to accept the next SPI frame.
This patch rearranges the code to make sure that the pulse is
generated after all controller clean up.
BUG=b:154458891
TEST=verified that Atlas device is still booting fine. Will test it on
other devices which seemed to be triggering the bug.
Signed-off-by: Vadim Bendebury <vbendeb@chromium.org>
Change-Id: I480760b4afea24295f96abde2fc75c414017c27f
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/2171452
Reviewed-by: Namyoon Woo <namyoon@chromium.org>
Reviewed-by: Andrey Pronin <apronin@chromium.org>
|
|
|
|
|
|
|
|
|
|
| |
BUG=none
TEST=none
Change-Id: Ic84368d12832dc5bb08d7085090ad727130c3114
Signed-off-by: Mary Ruthven <mruthven@chromium.org>
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/2171517
Reviewed-by: Vadim Bendebury <vbendeb@chromium.org>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This patch fixes cr50 to set the TPM VC response size as zero before it
returns an error code upon VENDOR_CC_GET_BOOT_MODE or
VENDOR_CC_RESET_EC.
BUG=b:155214584
TEST=ran 'gsctool --getbootmode' on atlas where the board property does
not contain BOARD_EC_CR50_COMM_SUPPORT.
[cr50]
> brdprop
properties = 0x1041
[Before the fix]
$ gsctool --getbootmode
finding_device 18d1:5014
Found device.
found interface 3 endpoint 4, chunk_len 64
READY
-------
../../util/usb_if.c:209, libusb_bulk_transfer returned -8 (Overflow)
[After the fix]
$ gsctool -g
finding_device 18d1:5014
Found device.
found interface 3 endpoint 4, chunk_len 64
READY
-------
Error 8 in Getting boot mode
Signed-off-by: Namyoon Woo <namyoon@google.com>
Change-Id: Ic1d9b261415487f0a3a0690e6090cbb5387ddd64
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/2171167
Tested-by: Namyoon Woo <namyoon@chromium.org>
Reviewed-by: Mary Ruthven <mruthven@chromium.org>
Reviewed-by: Vadim Bendebury <vbendeb@chromium.org>
Commit-Queue: Namyoon Woo <namyoon@chromium.org>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This patch sorts the list of the suppressed messages alphanumerically
and adds 'missing-print-function' to the list, as this error does not
apply to Python3.
BUG=none
TEST=linter error message
R: 1, 0: Missing "from __future__ import print_function...
is not reported any more, the rest of the linter output did not
change.
Signed-off-by: Vadim Bendebury <vbendeb@chromium.org>
Change-Id: Ie97d88fcecfa70a89323d9122c3781e3da23f533
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/2161575
Reviewed-by: Mary Ruthven <mruthven@chromium.org>
|
|
|
|
|
|
|
|
|
|
|
|
| |
BUG=b:123686979
TEST=make buildall -j
Change-Id: I1fc49f44c6f1be3bcacb26662862cb68899be299
Signed-off-by: Louis Collard <louiscollard@chromium.org>
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/2102092
Tested-by: Leo Lai <cylai@google.com>
Reviewed-by: Vadim Bendebury <vbendeb@chromium.org>
Commit-Queue: Leo Lai <cylai@google.com>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
BUG=b:123686979
TEST=make buildall -j
Cq-Depend: chromium:2051792
Signed-off-by: Louis Collard <louiscollard@chromium.org>
Change-Id: I9558ebcf5a83ae8a422a43b776147bececea70ba
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/2102091
Tested-by: Leo Lai <cylai@google.com>
Reviewed-by: Vadim Bendebury <vbendeb@chromium.org>
Reviewed-by: Andrey Pronin <apronin@chromium.org>
Commit-Queue: Leo Lai <cylai@google.com>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Also replaces uses of 'unsigned' with 'unsigned int'
BUG=b:123686979
TEST=make buildall -j
Change-Id: I2c7a861540f4ca3491b78f0c87e77ed01f57f0a0
Signed-off-by: Louis Collard <louiscollard@chromium.org>
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/2102090
Tested-by: Leo Lai <cylai@google.com>
Reviewed-by: Vadim Bendebury <vbendeb@chromium.org>
Commit-Queue: Leo Lai <cylai@google.com>
|
|
|
|
|
|
|
|
|
|
|
|
| |
BUG=b:123686979
TEST=make buildall -j
Signed-off-by: Louis Collard <louiscollard@chromium.org>
Change-Id: I646483719d5b97bf9622bbdd2f78ec3dce995d4a
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/2102089
Tested-by: Leo Lai <cylai@google.com>
Reviewed-by: Vadim Bendebury <vbendeb@chromium.org>
Commit-Queue: Leo Lai <cylai@google.com>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This patch makes use of the modification of the vendor command
VENDOR_CC_WP, which allows to enable WP.
BUG=b:153881773
TEST=verified that attempts to enable WP when running the unmodified
Cr50 image fail with error message "Early Cr50 versions do not
support setting WP", and that the updated Cr50 image allows to
enable WP using 'gsctool -a -w enable'
Signed-off-by: Vadim Bendebury <vbendeb@chromium.org>
Change-Id: Ie28c1c9b171dd6ea2e3edc0ae624f953cb4fa4fe
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/2149526
Reviewed-by: Mary Ruthven <mruthven@chromium.org>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The gsctool utility allows to examine the device WP status, but does
not allow to set it. It would be useful to provide the user with a
means of enabling WP at any time.
This patch extends the existing vendor command VENDOR_CC_WP
implementation to allow an optional one byte parameter. If the
parameter is present, the Cr50 will unconditionally invoke
set_wp_state(1) when processing the command.
BUG=b:153881773
TEST=with the corresponding gsctool.c changes coming up in the next
patch verified that attempts to enable WP when running the
unmodified Cr50 image fail with error message "Early Cr50
versions do not support setting WP", and that the updated Cr50
image allows to enable WP using 'gsctool -a -w enable'
Signed-off-by: Vadim Bendebury <vbendeb@chromium.org>
Change-Id: I75c200bbb9085e9f74c227ef80f782defdaaa29e
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/2149519
Reviewed-by: Mary Ruthven <mruthven@chromium.org>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
When supported, the AP RO verification would be triggered by the
operator pressing and keeping pressed the power button and then
pressing and releasing a few times the refresh key.
As proposed in this patch, to trigger the verification the operator
must complete the sequence within 3 seconds by pressing the refresh
key three times.
The sequences is controlled by periodic polling. Enabling refresh key
press interrupts was investigated, the issue is that the key generates
plenty of interrupts due to dribbling, to the tune of a hundred each
time it is pressed. It is much cheaper to just poll every 20 ms.
The CONFIG_AP_RO_VERIFICATION config flag controls enabling of this
feature.
BUG=b:141191727
TEST=enabled the new feature and verified proper operation by both
detecting the trigger and abandoning the sequence due to released
power button or not enough times pressed refresh key.
Signed-off-by: Vadim Bendebury <vbendeb@chromium.org>
Change-Id: I55376a87009d6f8020358ad11db1e47d0b8393ed
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/2144944
Reviewed-by: Mary Ruthven <mruthven@chromium.org>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Cr50 used to read GPIO_EN_PP3300_INA_L value to detect if USB_I2C is
enabled. However it requires an external pullup. Instead, this patch
adds a sw flag to indicate USB_I2C status, so that it can keep
USB_I2C status regardless external HW factors.
BUG=b:152946978
TEST=ran flash_ec on waddledee, ampton, and dragonegg.
Signed-off-by: Namyoon Woo <namyoon@chromium.org>
Change-Id: Ie1a3a8c790e9643a3b49b6c519167ee3bdecc650
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/2140535
Reviewed-by: Vadim Bendebury <vbendeb@chromium.org>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
It turns out that the Cr50 not shutting off the AP UART quickly enough
causes violation of the JSL power sequence requirements due to the
leakage caused by the active UART lines.
Let's speed up AP state polling when CCD is active. When CCD is not
active the UART is shut of to start with.
BUG=b:152446186
TEST=running the new image verified that that timing constraints are
not violated any more. Also verified reliable UART=>USB bridging
operation.
Signed-off-by: Vadim Bendebury <vbendeb@chromium.org>
Change-Id: Iffb7f8bc33c4516bb7cf5cbf58c5ced277cd1aec
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/2139732
Reviewed-by: Mary Ruthven <mruthven@chromium.org>
|
|
|
|
|
|
|
|
|
|
| |
BUG=none
TEST=none
Change-Id: Ib0a272579ea750ab439a1bbede4e3ac9cc1380e6
Signed-off-by: Mary Ruthven <mruthven@chromium.org>
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/2142450
Reviewed-by: Vadim Bendebury <vbendeb@chromium.org>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This patch make sure that cr50 attempts to read ECRW hash from
TPM nvmem only if the board supports EC-EFS2. Though this attempt
is not critical, it prints an read error message in console, which
could mislead the reader.
BUG=none
TEST=none
Signed-off-by: Namyoon Woo <namyoon@chromium.org>
Change-Id: I95e8407b19259fd62e0d1858efdd2696042dcd95
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/2138601
Reviewed-by: Mary Ruthven <mruthven@chromium.org>
|
|
|
|
|
|
|
|
|
|
| |
BUG=none
TEST=none
Change-Id: Ia5c4b11ef217bad279b865a91c1618d9b6571c17
Signed-off-by: Mary Ruthven <mruthven@chromium.org>
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/2137911
Reviewed-by: Vadim Bendebury <vbendeb@chromium.org>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
If UART-EC TX is disabled, the USB input data used to be ignored in
UART-EC TX interrupt handler, but it neglected to call uartn_tx_stop(),
which was a defect. In this patch, those data shall be ignored when they
arrive from USB (in USB RX stream handler), which is earlier than
UART-EC TX interrupt, and uartn_tx_start() won't be called.
BUG=b:153198965
TEST=Repeated to lock and open CCD, and checked EC-UART is RO or RW.
Checked EC-EFS2 working, and uart_stress_tester as well.
Signed-off-by: Namyoon Woo <namyoon@google.com>
Change-Id: I1c3c2c5a7626850f6389616bbe1f69188d5eca6d
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/2135140
Tested-by: Namyoon Woo <namyoon@chromium.org>
Reviewed-by: Vadim Bendebury <vbendeb@chromium.org>
Commit-Queue: Namyoon Woo <namyoon@chromium.org>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
When a string parameter __func__ ie encountered in the source code,
the function name is saved in the format strings dictionary, and then
packet is prepared, instead of sending the string, a byte of 0xff is
sent and then the four byte value which is the string index.
But two bytes is enough to send the string index, as it is a 16 bit
value by design.
This patch modifies both transmit and receive sides to start using 2
byte indices for __func__.
BUG=b:149964350
TEST=built the new image, tried running it, observed correct function
names in the console output.
Signed-off-by: Vadim Bendebury <vbendeb@chromium.org>
Change-Id: I682dd18cb4dd434e6982d33f1918ef398d5caa20
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/2131046
Reviewed-by: Randall Spangler <rspangler@chromium.org>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Most strings in the Cr50 image are not going to change any time soon,
the most likely change is the addition of new strings.
With this in mind, it makes sense to keep the string dictionary around
and just keep updating it when building a new image, maybe adding new
strings, or most often just reusing the ones already in the blob.
This patch tries reading the blob before processing the inputs, and if
the blob is read and unzipped/unpickled successfully, its contents are
used to seed the string dictionary before the inputs are processed.
With this approach 100% compatibility between the Cr50 image and the
blob is not required, most of the strings would be interpreted
properly even with older blobs.
A test case is being added to verify this behavior.
BUG=b:149964350
TEST=./util/test_util_precompile.py
Signed-off-by: Vadim Bendebury <vbendeb@chromium.org>
Change-Id: I761d6b043dfc85b54352aadaa66d24d4027e95f8
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/2119144
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
One of the difference between Acropora and Cr50 is such that in case
of Acropora the format strings are transferred within packets, and in
case of Cr50 only the index of the string is passed in the packet, the
string itself is obtained from the list prepared by running
util_precompile.py.
Another difference is that in Acropora each console packet message
represents a full line, in Cr50 the message could be representing just
a part of the line, down to a single character.
These differences require modifications of the packet header on the
DUT side and modifications of the Packet class in Acroterm.
Cr50Packet class inherits from Packet, to abstract header structure
differences a class specific method of unpack_ph() is being added. The
new method extracts packet fields, returning fields common for both
packet formats, and saving the class unique values in the object
attributes.
This allows to consolidate the packet validation function and only
divert processing when decode_packet() is invoked. Cr50Packet
constructor is passed the list of format strings, the str_index field
from packet header is the index of the format string in the list.
The Cr50Term class inherits from Acroterm, the only difference is that
Cr50Term uses Cr50Packet for packet processing, and prepares the list
of strings, retrieving it from the blob created by util_precompile.py.
Two new command line options are being added:
--cr50_mode enables Cr50 packet mode console support
--cr50_str_blob points at the strings blob, by default
build/cr50/RW/str_blob is used.
Note that on the DUT the Cr50 packet mode is disabled by default. To
start using console packet one needs to add the line
to board/cr50/board.h and rebuild the image.
BUG=b:149964350
TEST=./util/test_acroterm.py succeeds.
When Cr50 is built with the suggested modification of
board/cr50/board.h, acroterm invoked as
$ util/acroterm.py --tty /dev/ttyUSBx --cr50_mode
allows to open terminal sessions with USB and UART consoles.
Change-Id: I301a5515a0994dba91f2cb40a77c4b59c3becd45
Signed-off-by: Vadim Bendebury <vbendeb@chromium.org>
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/2116277
Reviewed-by: Randall Spangler <rspangler@chromium.org>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
A very few changes are needed to support the packet mode:
- provide functions to report how much room is left in USB/UART
transmit buffers;
- compile out cprintf/cprints/cputs just in case to be able to catch
cases where util_precompile.py fails to convert them for whatever
reason;
- do not add CR to every LF, this messes up packet transmissions, and
the terminal is doing the right thing anyways
- there is a problem with the USB channel in packet mode: the device
reboots as soon as an attempt to send something to the host is
undertaken. The problem can be rectified by disabling the deferred
function path in the Cr50 console USB channel. A bug was open to
track it down, but in packet mode using deferred function in this
path is less critical, as the amount of sent data always is at
least as much as the packet header size
BUG=b:149964350, b:152116489
TEST=with the rest of the patches applied packet mode console works
fine. When packet mode is disabled the conventional mode console
works fine.
Change-Id: Ib010cede36adc87cf80f49e5d76ec9e274d9e608
Signed-off-by: Vadim Bendebury <vbendeb@chromium.org>
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/2114238
Reviewed-by: Randall Spangler <rspangler@chromium.org>
Reviewed-by: Namyoon Woo <namyoon@chromium.org>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This patch adds a console driver for packet mode.
The driver processes information prepared by util_precomplie.py when
processing printf invocations in the source code. Each invocation is
replaced by a cmsgX function, where X is the number of format
arguments.
cmsgX functions prepare an array of parameters of size X and invoke a
common function, passing it the array and an integer value, consisting
of up to 8 4 bit fields, describing the parameters.
Since both console drivers need to be able to filter logical console
channels, the channel_mask variable is made global.
BUG=b:149964350
TEST=with the rest of patches applied and packet mode enabled,
verified proper operation of both Cr50 consoles (USB and UART).
Signed-off-by: Vadim Bendebury <vbendeb@chromium.org>
Change-Id: I1f6ef5ea50bffbe14d3e3850fff0191c54f37033
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/2113931
Reviewed-by: Randall Spangler <rspangler@chromium.org>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
For the upcoming introduction of transitioning Cr50 console
communications to packet mode, there is a need to be able to replace
all print function invocations in the code with calls to packet
sending function.
This replacement is easiest to make in C preprocessor outputs, as
there all macros are replaced with actual function invocations.
This patch adds a configuration option CONFIG_EXTRACT_PRINTF_STRINGS,
when enabled, building of the image object files starts happening in
three steps instead of one, instead of .c => .o transition, the steps
are .c => .E => .Ep => .o, where .E is the C preprocessor output, and
.Ep is result of post processing by ./util/util_precompile.py.
BUG=b:149964350
TEST=image layout does not change if CONFIG_EXTRACT_PRINTF_STRINGS is
not defined. With the rest of the patches applied defining the
above config option allows to build a Cr50 image supporting
packet console communications mode.
Signed-off-by: Vadim Bendebury <vbendeb@chromium.org>
Change-Id: I20b8ba7c5d13cb54ac6adbdbce856d92023ce997
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/2113122
Reviewed-by: Randall Spangler <rspangler@chromium.org>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This script is customized to be used in Chrome OS EC codebase, where
functions cprintf(), cprints() and cputs()are used to generate console
output.
The operation of the script is extensively described in the docstring
of the file, a unit test is provided to verify basic functionality.
BUG=b:149964350
TEST=./util/test_util_precompile.py succeeds with the rest of the
patches applied built a Cr50 image, verified that using a
verified version of Acroterm one can communicate with Cr50
console the same way it works today over regular UART.
Change-Id: I2c92088a8b08dcf7fdb606a01fbc94ab0d2df6e6
Signed-off-by: Vadim Bendebury <vbendeb@chromium.org>
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/2106863
Reviewed-by: Randall Spangler <rspangler@chromium.org>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
'ec_comm corrupt' used to corrupt a copy of EC-RW hash in ec_efs.c for
test purpose. This patch makes it corrupt the copy stored in the TPM
NVMEM cache first, and then read it into the cache in ec_efs.c.
'corrupt' option is available for regular image as well onl if CCD is
opened.
'reload' option is obsolete.
BUG=b:150650877
TEST=checked the behavior in the sequence below:
0. program regular image
cr50> ec_comm corrupt
CCD is not opened
Access Denied
Usage: ec_comm [corrupt]
1. open ccd.
2. Checked the original hash code.
cr50> ec_comm
...
ec_hash_sec_data : /* original hash code, Hm. */
3. Corrupt the hash code.
cr50> ec_comm corrupt
...
ec_hash_sec_data : /* corrupted hash code, Hc. */
4. Reboot EC.
ec> reboot ap-off
5. Check the boot mode is NO_BOOT mode.
chroot$ gsctool --getbootmode
...
Boot mode = 0x01: NO_BOOT
6. Turn on AP by tapping the power button.
Check AP rewrites the secdata, and Cr50 reloads it.
cr50> ec_comm
...
ec_hash_sec_data : /* original hash code, Hm. */
Signed-off-by: Namyoon Woo <namyoon@google.com>
Change-Id: Id34239911da204e1eacd285fa601a9b5db03c4ee
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/2119130
Reviewed-by: Daisuke Nojiri <dnojiri@chromium.org>
Reviewed-by: Mary Ruthven <mruthven@chromium.org>
Commit-Queue: Namyoon Woo <namyoon@chromium.org>
Tested-by: Namyoon Woo <namyoon@chromium.org>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This patch makes ec_comm uart command to display EC-EFS2 boot mode,
either 'NORMAL' or 'NO_BOOT'. This shall be used for test purpose.
BUG=b:150650877
TEST=manually checked on uart.
> ec_comm
...
ec_hash : LOADED
secdata_error_code : 0x00000000
boot_mode : NORMAL
Signed-off-by: Namyoon Woo <namyoon@google.com>
Change-Id: Ia2ac1bf9fdecc641558856754f9df2c917434d95
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/2125155
Tested-by: Namyoon Woo <namyoon@chromium.org>
Reviewed-by: Mary Ruthven <mruthven@chromium.org>
Commit-Queue: Namyoon Woo <namyoon@chromium.org>
|
|
|
|
|
|
|
|
|
|
| |
BUG=none
TEST=none
Change-Id: I67d8c30ee7ee1bfb9e75cee478a67f46feb19f88
Signed-off-by: Mary Ruthven <mruthven@chromium.org>
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/2124951
Reviewed-by: Vadim Bendebury <vbendeb@chromium.org>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This is a renamed copy of the recommended
platform/dev/contrib/pylintrc@8021dab with a single addition:
12a13
> max-line-length = 80
replacing default limit of 100 chars.
BUG=none
TEST='cros lint <py file>'
Signed-off-by: Vadim Bendebury <vbendeb@chromium.org>
Change-Id: Ie9647f5b38faf39a4839b9b9fdefa8bd85f483ab
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/2122768
Reviewed-by: Mary Ruthven <mruthven@chromium.org>
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
acroterm.py is a copy taken as if from Acropora core tree at sha
80bf39f and modified to add the Chromium OS authors headers.
BUG=b:149964350
TEST=./util/test_acroterm.py
Change-Id: I48e866e205ef62f6e776e6c50b0f970c9df5202a
Signed-off-by: Vadim Bendebury <vbendeb@chromium.org>
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/2114240
Reviewed-by: Mary Ruthven <mruthven@chromium.org>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Drop the unused function and use ccprintf() instead of uart_printf().
Using ccprintf() will make it easier to use this code when packet mode
is enabled.
Used tabs in the changed lines s to pacify repo upload.
BUG=b:149964350
TEST=make buildall -j
Signed-off-by: Vadim Bendebury <vbendeb@chromium.org>
Change-Id: I97522e9278a4393ef75b9a6a90e6995ba2449f30
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/2114237
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
BUG=none
BRANCH=cr50
TEST=git-clang-format
Signed-off-by: Louis Collard <louiscollard@chromium.org>
Change-Id: I2618d7b6d731200e605e207bc7343930e4701293
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/2111912
Tested-by: Vadim Bendebury <vbendeb@chromium.org>
Reviewed-by: Vadim Bendebury <vbendeb@chromium.org>
Commit-Queue: Vadim Bendebury <vbendeb@chromium.org>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
To avoid some sort of race in private-cr52 endpoint initialization,
which results in a reboot loop.
Calling usb_console_enable() in HOOK_LAST instead appears stable,
at cost of missing some early console output.
While at it, reduce some SRAM usage and improve legibility
by moving to bool from int.
Strictly opt-in; behavior unchanged for existing code.
BUG=chromium:1063240
BRANCH=cr50
TEST=make buildall; cr52 build w/ usb_console now enumerates w/o resets.
Signed-off-by: mschilder@google.com
Change-Id: I352edb4c045df401cb99573da5765b88deb45d0d
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/2111450
Reviewed-by: Vadim Bendebury <vbendeb@chromium.org>
Reviewed-by: Marius Schilder <mschilder@chromium.org>
Reviewed-by: Namyoon Woo <namyoon@chromium.org>
Commit-Queue: Marius Schilder <mschilder@chromium.org>
Tested-by: Marius Schilder <mschilder@chromium.org>
Auto-Submit: Marius Schilder <mschilder@chromium.org>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
While working on a different issue it was discovered that
$(out)/RW/board/cr50/board.o is rebuilt every time make is ran, even
if there has been no changes. Further investigation has shown that the
problem is that $(out)/RW/board/cr50/board.o depends on
$(out)/ec_version.h, which is not rebuilt unless something changed,
but is declared .PHONY in Makefile.rules
Turns out the declaration is supposed to be conditional on actual
change in ec_version.h, but the condition is always True. This in turn
was due to the fact that when checking if there is a change, some
relevant make variables (CR50_DEV, CR50_SQA, and CRYPTO_TEST) were not
set when invoking ./util/getversion.sh.
When the variables are set, ec_version.h is not decalred PHONY, no
unnecessary compilation is invoked.
BUG=none
TEST=repetitive running of
make BOARD=cr50 CR50_DEV=1 build/cr50/RW/board/cr50/board.o
does not trigger recompilation of board.o any more
Signed-off-by: Vadim Bendebury <vbendeb@chromium.org>
Change-Id: Ibe75bcda9a774e748f973d85841bbde9c29fd104
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/2108920
Reviewed-by: Namyoon Woo <namyoon@chromium.org>
Reviewed-by: Andrey Pronin <apronin@chromium.org>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This is the cr50_stab branch, pretty much all patches will have to be
cherry picked into cr50-prepvt and cr50-mp, no need to add noise to
patch descriptions.
BUG=none
TEST='repo upload' does not complain about missing BRANCH= in the
patch descriptions.
Signed-off-by: Vadim Bendebury <vbendeb@chromium.org>
Change-Id: Iaac7c4576317025c750872fb6b9c56e64c82cc15
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/2108719
Reviewed-by: Namyoon Woo <namyoon@chromium.org>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This path removes CONFIG_USB_HID_KEYBOARD support and
CONFIG_USB_UPDATE support because they are not used in any cr5X
board configuration.
Ths patch also removes some subsidiary configs as upload hook script
guides.
> CONFIG_USB_PAIRING
> CONFIG_TOUCHPAD_VIRTUAL_OFF
> CONFIG_USB_CONSOLE_READ
BUG=none
BRANCH=cr50
TEST=make buildall
Signed-off-by: Namyoon Woo <namyoon@google.com>
Change-Id: Iafa553fdf58772744b1d9a5c7f5460f42264f468
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/2103045
Tested-by: Namyoon Woo <namyoon@chromium.org>
Reviewed-by: Mary Ruthven <mruthven@chromium.org>
Commit-Queue: Namyoon Woo <namyoon@chromium.org>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This patch reprioritizes ec_comm_init() and ec_efs_init() so that
they won't be executed prior to board_init(), which executes
nvmem_init().
BUG=b:151187315
BRANCH=cr50
TEST=let cr50 reboot a few times, and checked the console message
and the ec_comm command output that Kernel secdata was reloaded
without error. Swapped cr50 image from normal to dev, vice versa,
and repeated the rebooting.
[Reset cause: hard]
[0.003799 Inits done]
strap pin readings: a1:2 a9:3 a6:0 a12:0
[0.005893 Valid strap: 0xe properties: 0xa00041]
[0.007991 init_jittery_clock_locking_optional: run level high, ...
[0.045539 init took 29953]
[0.051185 tpm_rst_asserted]
[0.052074 EC-COMM: Initializtion]
Console is enabled; type HELP for help.
...
> ec_comm
...
response : 0xec00
ec_hash : LOADED
secdata_error_code : 0x00000000
>
Change-Id: Ia695896986374ac9d23ac111fe0086ec6a13923e
Signed-off-by: Namyoon Woo <namyoon@chromium.org>
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/2093102
Reviewed-by: Vadim Bendebury <vbendeb@chromium.org>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Two new options for 'ec_comm' are for test usage only.
- ec_comm corrupt: it corrupts the ECRW hash in ec_comm module.
Hash corruption will cause EC-FW verification failure. It can be
useful to check how AP firmware performs software sync on this
failure.
- ec_comm reload: it forces Cr50 to reload ECRW hash from tpm nvmem.
This is to restore the EC EFS2 status in Cr50 from corrupted status.
BUG=b:150650877
BRANCH=cr50
TEST=manually ran 'ec_comm corrupt' or 'ec_comm reload' with dev image.
Checked cr50 normal image refuses those command lines.
Signed-off-by: Namyoon Woo <namyoon@chromium.org>
Change-Id: Ib4aa9532132e1ee786e623bd658a68987e4681dc
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/2094781
Reviewed-by: Vadim Bendebury <vbendeb@chromium.org>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This patch adds a test case for EC-EFS functions.
BUG=b:150650877
BRANCH=cr50
TEST=make run-ec_comm
make runhosttests
make buildall -j
Signed-off-by: Namyoon Woo <namyoon@chromium.org>
Change-Id: I90cdc3aa73cf8946da4cf094de5ca0adfaaa0a7c
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/2096338
Reviewed-by: Vadim Bendebury <vbendeb@chromium.org>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
usart.h doesn't need to be included in ec_comm.c.
This patch also fixes nit output format in cprints.
BUG=none
BRANCH=cr50
TEST=make run-ec_comm
Signed-off-by: Namyoon Woo <namyoon@chromium.org>
Change-Id: Icadf0d860cee8d3cf882cdb4571aaa2bc325adf9
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/2094751
Reviewed-by: Vadim Bendebury <vbendeb@chromium.org>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This patch allows the repeating SET_BOOT_MODE command except one case
that attempts to change the boot mode from NO_BOOT to NORMAL.
Cr50 resets EC on those violating commands.
This patch adds error handling for an unknown boot mode parameter.
BUG=none
BRANCH=cr50
TEST=ran unittest, 'make run-ec_comm'.
Signed-off-by: Namyoon Woo <namyoon@chromium.org>
Change-Id: Ib6c97596ed9c7b7563fbe5e6497cbd668f57a474
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/2096840
Reviewed-by: Mary Ruthven <mruthven@chromium.org>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
With the upcoming transition to handling console traffic in packet
mode it is very expensive to be shipping one character at a time, each
character results in sending a packet of 16 or so bytes.
This patch modifies print_build_string() such that it splits the long
build version string into manageable substrings and prints them
instead of printing one character at a time.
BRANCH=cr50, cr50-mp
BUG=b:149964350
TEST=built a Cr50 image, verified that build string is printed as
expected.
Signed-off-by: Vadim Bendebury <vbendeb@chromium.org>
Change-Id: I743205932892b0f14c161ade5ea856a658fb26e6
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/2097444
Reviewed-by: Mary Ruthven <mruthven@chromium.org>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The extended GPIO state support command uses a lot of format elements
when trying to report properties of the GPIOs.
The upcoming source code processing scripts do not support more than
eight format elements per format string. On top of that there is no
need to even try to generate the string in case extended GPIO command
mode is supported.
Let's move generating the string with properties into the
conditionally compiled section, to make sure that it is
generated/processed only when needed, and let's use snprintf() first
to reduce the number of format elements in the following ccprintf
invocation.
BRANCH=cr50, cr50-mp
BUG=b:149964350
TEST=verified proper 'gpiog' command output when code is compiled both
with and without CONFIG_CMD_GPIO_EXTENDED
Change-Id: I0836a350d1f787c84d2079f10de3652523a8a5a9
Signed-off-by: Vadim Bendebury <vbendeb@chromium.org>
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/2097442
Reviewed-by: Mary Ruthven <mruthven@chromium.org>
Reviewed-by: Namyoon Woo <namyoon@chromium.org>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This patch moves ec_comm.c and ec_efs.c from board/cr50 to common/,
so that they can be shared with other board configuration (like host).
This is to build unittest for those files.
BUG=none
BRANCH=cr50
TEST=make buildall -j
Signed-off-by: Namyoon Woo <namyoon@chromium.org>
Change-Id: I67ac313054ebe4604848a176f0a42e3483957e74
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/2094076
Reviewed-by: Vadim Bendebury <vbendeb@chromium.org>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This patch changes fixes the pre-condition to check before
it processes the command, SET_BOOT_MODE. It should check if the
current boot mode is NORMAL mode, but it used to check if the input
parameter value is NORMAL mode.
BUG=none
BRANCH=cr50
TEST=make buildall -j
Signed-off-by: Namyoon Woo <namyoon@chromium.org>
Change-Id: I85e0a3a1ed27a276262a7b9d3889c826cca14d19
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/2094075
Reviewed-by: Daisuke Nojiri <dnojiri@chromium.org>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Add a flash_cr50 script for updating cr50. The script supports updating
through gsctool and cr50-rescue.
BUG=b:144048851
BRANCH=none
TEST=manual
python util/flash_cr50.py -i $IMAGE -p 9999 -c cr50-rescue
on octopus.
python util/flash_cr50.py -i $IMAGE -p 9999
--method=cr50_reset_odl -c cr50-rescue
python util/flash_cr50.py -i $IMAGE -c 'sudo gsctool'
python util/flash_cr50.py -i $IMAGE -s $SERIAL
Change-Id: Ibdd213446fea4cb66f77c6b7249c02914bd0712a
Signed-off-by: Mary Ruthven <mruthven@chromium.org>
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/1907469
Reviewed-by: Vadim Bendebury <vbendeb@chromium.org>
(cherry picked from commit ba216cfef2a005717938b28ceab15b79406f7f3b)
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/2092916
Tested-by: Vadim Bendebury <vbendeb@chromium.org>
Commit-Queue: Vadim Bendebury <vbendeb@chromium.org>
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
BUG=none
BRANCH=none
TEST=manual
sudo CR50_BOARD_ID="FFFF:0:10" H1_DEVIDS="${DEVID}" ./util/signer/bs
Change-Id: I54f149bf5c0248a8672514258b596455d442ef69
Signed-off-by: Mary Ruthven <mruthven@chromium.org>
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/2088552
Reviewed-by: Namyoon Woo <namyoon@chromium.org>
Reviewed-by: Vadim Bendebury <vbendeb@chromium.org>
|
|
|
|
|
|
|
|
|
|
|
| |
BUG=none
BRANCH=none
TEST=none
Change-Id: I63a586c946f1b69547197767753e60f3319aad90
Signed-off-by: Mary Ruthven <mruthven@chromium.org>
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/2092211
Reviewed-by: Namyoon Woo <namyoon@chromium.org>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
gsctool -g or --getbootmode can get the current system boot mode.
BUG=b:141578322
BRANCH=cr50
TEST=ran on helios.
$ ./extra/usb_updater/gsctool --getbootmode
finding_device 18d1:5014
Found device.
found interface 3 endpoint 4, chunk_len 64
READY
-------
Boot mode = 0x00: NORMAL
$ ./extra/usb_updater/gsctool -g
finding_device 18d1:5014
Found device.
found interface 3 endpoint 4, chunk_len 64
READY
-------
Getting boot mode
Boot mode = 0x00: NORMAL
Change-Id: Id024ac94fb08b680bd5e190bc7eeb2de301b70a2
Signed-off-by: Namyoon Woo <namyoon@chromium.org>
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/2058128
Reviewed-by: Mary Ruthven <mruthven@chromium.org>
Reviewed-by: Vadim Bendebury <vbendeb@chromium.org>
|