summaryrefslogtreecommitdiff
path: root/extra
Commit message (Collapse)AuthorAgeFilesLines
* usb_updater: always reboot cr50 in the end of the updatestabilize-8872.70.Bstabilize-8872.6.Bstabilize-8872.40.Bstabilize-8872.15.Brelease-R55-8872.BVadim Bendebury2016-10-061-2/+2
| | | | | | | | | | | | | | | | | | | With the recent modification of the tpm reset processing the only way to get the cr50 restart is to reset it internally. Make sure that usb_updater triggers the cr50 reset in the end of the update. BRANCH=none BUG=none TEST=with the corresponding init script changes the update on reef happens as expected. Change-Id: Ib49b81c4ef6d12d0b877a8a63493cf4d6d5aaeb0 Signed-off-by: Vadim Bendebury <vbendeb@chromium.org> Reviewed-on: https://chromium-review.googlesource.com/394255 Reviewed-by: Mary Ruthven <mruthven@chromium.org>
* usb_updater: add missing help message sectionVadim Bendebury2016-10-061-0/+2
| | | | | | | | | | | | | | | The previously added '-b' command line option was left out from the help message. This patch fixes it. BRANCH=none BUG=none TEST=verified that -b command line option description is included in the help message. Change-Id: I71117a8653ae5094fd0bf3909c8715d6ec25259d Signed-off-by: Vadim Bendebury <vbendeb@chromium.org> Reviewed-on: https://chromium-review.googlesource.com/394254 Reviewed-by: Bill Richardson <wfrichar@chromium.org>
* sweetberry: add usb fw updateNick Sanders2016-09-021-0/+14
| | | | | | | | | | | | | | | Port USB firmware update to stm32f4 dwc usb from st usb. This includes usb dwc usb stream inplementation, generic endpoint interfaces, and the sweetberry test case. BUG=chromium:608039 TEST=usb update works BRANCH=None Change-Id: Ia26e4f7e990ee64991468799c99b036f5f32190f Signed-off-by: Nick Sanders <nsanders@chromium.org> Reviewed-on: https://chromium-review.googlesource.com/377520 Reviewed-by: Randall Spangler <rspangler@chromium.org>
* usb_updater: option to report image versionsVadim Bendebury2016-08-261-2/+35
| | | | | | | | | | | | | | | | | | It is sometimes necessary to find out headers' version of a cr50 binary blob. This patch adds this ability. BRANCH=none BUG=none TEST=build the new tool image and try it: $ ./extra/usb_updater/usb_updater -b /build/kevin-tpm2/opt/google/cr50/firmware/cr50.bin read 524288(0x80000) bytes from /build/kevin-tpm2/opt/google/cr50/firmware/cr50.bin RO_A:0.0.8 RW_A:0.0.4 RO_B:0.0.8 RW_B:0.0.4 $ Change-Id: I367ca94346484410f785fb56a941c8558ab57634 Signed-off-by: Vadim Bendebury <vbendeb@chromium.org> Reviewed-on: https://chromium-review.googlesource.com/374085 Reviewed-by: Bill Richardson <wfrichar@chromium.org>
* usb_updater: move to protocol version 4Vadim Bendebury2016-08-261-61/+279
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Trying to use usb_updater in the upstart script made its shortcomings very obvious: it is difficult to tell if the cr50 needs to have both RO and RW updated, and if so - if it is even capable of updating RW. Also, it is not clear that the target should erase its backup sections as soon as it receives the transfer originating PDU. It is not known in advance if the host has a newer RW section, of if the host is even going to transfer the RO section. These issues are addressed by version 4 of the image transfer protocol. The target now reports versions of its currently active RO and RW sections back to the host. The host compares versions running on the target with the versions retrieved from the image prepared for the update and decides which sections, if any, need to be transferred. The host also takes into account protocol version currently running by the target's RW: versions below 3 do not allow RO updates. In the development environment USB transfer ends with the target reset. This is not desirable when the update is happening on a Chromebook running production code. Also, in the development environment there could exist multiple versions of the image with the same signer header version fields, with only difference in the timestamp. We want to be able to update using these images in development environment, but in production we want to rely to the header version fields. These two mode (dev versus production) are now controlled by the -u/--upstart command line flag. The updater now can return four different exit values: - 0 means that the update was not required, the device is already running the current code. - 1 means update was completed, the target must be reset for the update to kick in. - 2 means that the RW transfer was completed, but the RO transfer could bot be attempted, because the target is running an early protocol version and is not capable of the RO updates. This exit value is the indicator that the utility needs to be run again after target restated, so that the new RW version can accept an RO update. - 3 means the update failed due to some internal error. BRANCH=none BUG=chrome-os-partner:49954 TEST=updates of targets running earlier protocol version still work fine. Change-Id: Ia56f63072eaf88dcdefebf621b7341535748c7d7 Signed-off-by: Vadim Bendebury <vbendeb@chromium.org> Reviewed-on: https://chromium-review.googlesource.com/374759 Reviewed-by: Bill Richardson <wfrichar@chromium.org>
* usb_updater: allow to build for gdb debuggingVadim Bendebury2016-08-241-2/+7
| | | | | | | | | | | | | | | | | | | | | The code should be compiled with -O0 for gdb use, otherwise various optimizations make it very difficult to follow the execution flow. With this patch adding DEBUG=1 to the environment or make command line causes the usb_updater utility built with -O0 instead of -O3. The debug flag is being changed to -g from -g3 as this code is not going to be able to benefit from the g3 features, especially when built inside chroot. BRANCH=none BUG=none TEST=verified that gdb can properly control execution when make is invoked with DEBUG=1 Change-Id: I50d8df46a7dd04d4d253b34146dde95f5388287d Signed-off-by: Vadim Bendebury <vbendeb@chromium.org> Reviewed-on: https://chromium-review.googlesource.com/374758 Reviewed-by: Bill Richardson <wfrichar@chromium.org>
* usb_updater: host side support protocol version 3Vadim Bendebury2016-08-211-70/+241
| | | | | | | | | | | | | | | | | | | | | This patch introduces support for the cr50 firmware update protocol version 3. It is described in more details in the comment in the patch, the bottom line is that both RO and RW updates are supported, and SPI and USB modes use the same protocol now. The notions of PDU (protocol data unit) passed between the host and the programming function on the CR50 is introduced, and USB mode framing is described. BRANCH=none BUG=chrome-os-partner:55789 TEST=verified that version 1 and 2 updates still work. Version 3 mode was tested later, when the device side patches were applied. Change-Id: If51854b6a0b140730e85853bc42039233550fe8c Signed-off-by: Vadim Bendebury <vbendeb@chromium.org> Reviewed-on: https://chromium-review.googlesource.com/371509 Reviewed-by: Bill Richardson <wfrichar@chromium.org>
* Change transfer_endpoint to transfer_descriptorVadim Bendebury2016-08-211-24/+24
| | | | | | | | | | | | | | | | | | | | In preparation to cr50 update protocol enhancements allowing to update both RO and RW sections this patch is changing the name of the structure containing communications endpoint information. In the upcoming patches more fields are going to be added to this structure, it is cleaner to change its name and existing use before adding new features. BRANCH=none BUG=chrome-os-partner:55789 TEST=make -C extra/usb_updater Change-Id: I5ca0b6da75067a4f01ea80b6a6ca49a50e1136ab Signed-off-by: Vadim Bendebury <vbendeb@chromium.org> Reviewed-on: https://chromium-review.googlesource.com/371508 Reviewed-by: Bill Richardson <wfrichar@chromium.org> Reviewed-by: Mary Ruthven <mruthven@chromium.org>
* g: usb_updater: add command line option to allow updating the RO sectionVadim Bendebury2016-08-211-1/+7
| | | | | | | | | | | | | | | | | | | | | This just adds the new command line option and a help message for it. This option will be used to signal that the RO section update is required along with the RW section update when invoking usb_updater. The flag indicating presence of the option will be saved in the endpoint structure so it is available at different layers of the code. BRANCH=none BUG=chrome-os-partner:55789 TEST=built usb_updater and invoked it with --help option, observed the new option showing up in the output. Change-Id: Ief35a553651d29ca39c42c5af7294d3aba223b02 Signed-off-by: Vadim Bendebury <vbendeb@chromium.org> Reviewed-on: https://chromium-review.googlesource.com/369160 Reviewed-by: Bill Richardson <wfrichar@chromium.org> Reviewed-by: Mary Ruthven <mruthven@chromium.org>
* g: usb_updater: clean up update protocol handlingVadim Bendebury2016-08-211-30/+5
| | | | | | | | | | | | | | | | | | | | | | In preparation of introducing new update protocol version this patch cleans up the existing implementation. The receive and transmit PDU headers are separated into their own structures and are now shared between the server and client sides. Some comments have been added to better explain different protocol versions' details. BRANCH=none BUG=chrome-os-partner:55789 TEST=verified that it is still possible to update RW_A and RW_B on a Kevin CR50, works using both USB and SPI. Change-Id: Ied65b2c2a7800bae045f1d2dd64e58dd5e793d27 Signed-off-by: Vadim Bendebury <vbendeb@chromium.org> Reviewed-on: https://chromium-review.googlesource.com/368989 Reviewed-by: Bill Richardson <wfrichar@chromium.org> Reviewed-by: Mary Ruthven <mruthven@chromium.org>
* usb_updater: refactor section transfer into a functionVadim Bendebury2016-08-161-61/+84
| | | | | | | | | | | | | | | | | | | In preparation to RW and RO cr50 updates, separate the code transferring an image section (an RW section currently) into a function. This will allow to add RO transfer by invoking the same function with different address and size parameters. BRANCH=none BUG=chrome-os-partner:55789 TEST=verified that it is still possible to update to RW_A and RW_B both over USB and SPI. Change-Id: Ia41317e0eefe114bac41e73c7e715b1a5cb6549c Signed-off-by: Vadim Bendebury <vbendeb@chromium.org> Reviewed-on: https://chromium-review.googlesource.com/368988 Reviewed-by: Aseda Aboagye <aaboagye@chromium.org>
* usb_updater: use size_t for variables determining transfer sizeVadim Bendebury2016-08-151-9/+9
| | | | | | | | | | | | | | This is a mostly cosmetic change, use size_t as the type for variables which are used to pass around number of bytes received or transmitted. BRANCH=none BUG=chrome-os-partner:55789 TEST=verified that usb_updater still works both over USB and SPI. Change-Id: I2cc726315d613ee42937fb494745cf7e0ea66622 Signed-off-by: Vadim Bendebury <vbendeb@chromium.org> Reviewed-on: https://chromium-review.googlesource.com/368987 Reviewed-by: Scott Collyer <scollyer@chromium.org>
* Cr50: Tweak debug messages in extra/usb_updater/Bill Richardson2016-08-021-2/+13
| | | | | | | | | | | | | | | Print the reply bytes, be more consistent between %d and %x. BUG=none BRANCH=none TEST=manual Build debug version, verify that it prints more stuff. Change-Id: I8c8a983360f4895ccc72b73ed67ce2d45a461bad Signed-off-by: Bill Richardson <wfrichar@chromium.org> Reviewed-on: https://chromium-review.googlesource.com/365120 Reviewed-by: Vadim Bendebury <vbendeb@google.com>
* servo_v4: add python firmware update scriptNick Sanders2016-07-213-0/+446
| | | | | | | | | | | | | | | | | This script is more flexible for updating multiple targets, including servo_v4, servo_micro, and sweetberry. The command takes a json config file that specifies flash layout, USB ID, and size. BUG=chromium:571476 TEST=./fw_update.py -b servo_v4.json -f ec.bin; both RW, RO BRANCH=none Change-Id: Ic9dcee2c23484bb28c8bfaf1882c578314534116 Signed-off-by: Nick Sanders <nsanders@chromium.org> Reviewed-on: https://chromium-review.googlesource.com/361835 Reviewed-by: Aseda Aboagye <aaboagye@chromium.org>
* extra: usb_serial: correct doc pointerBrian Norris2016-07-151-1/+1
| | | | | | | | | | | BUG=none TEST=none BRANCH=none Change-Id: I64ac1c13fca055c6f7149744754ffe51d28383ff Signed-off-by: Brian Norris <briannorris@chromium.org> Reviewed-on: https://chromium-review.googlesource.com/360665 Reviewed-by: Vadim Bendebury <vbendeb@chromium.org>
* cr50: Modify USB updater to allow updates over /dev/tmp0 tooSimon Glass2016-07-151-23/+174
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | A new option is being added to the set of command line options, '-s', once it is specified, the utility tries to update the CR50 using /dev/tpm0. BRANCH=none BUG=chrome-os-partner:54992 TEST=emerge-gru ec-utils, copy /build/kevin/usr/sbin/usb_updater and ~/trunk/src/platform/ec/build/cr50/ec.bin to the DUT, try running the update command on the DUT: $ <path to>/usb_updater -s <path to>/ec.bin observe in the end of the log: vvvvvvvvvvvvvvvvvvvvvvvvvvvvv ------- update complete bye ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ restart the cr50 and verify that it is running the new image. Change-Id: Idb755328f911f3065f01df420488c7a1b4a32500 Signed-off-by: Simon Glass <sjg@chromium.org> Signed-off-by: Vadim Bendebury <vbendeb@chromium.org> Reviewed-on: https://chromium-review.googlesource.com/358967 Reviewed-by: Andrey Pronin <apronin@chromium.org>
* usb_updater: allow to define target environmentVadim Bendebury2016-06-161-3/+5
| | | | | | | | | | | | | | | | | | | | | | | | It is necessary to be able to build usb_updater for both host and board environments. When building for board environments the appropriate compiler and binutils are defined in the environment. Allow the environment definitions to take precedence over local definitions. BUG=none TEST=inside and outside chroot: . ran 'make clean; make; verified that command can be run on the host. inside chroot: . ran 'emerge-kevin ec-utils' and verified using the 'file' utility that the executable in /build/kevin/usr/sbin/usb_updater is built for arm Change-Id: If2ac4a4e7f7ece188eba5ff917a510363c6d1990 Signed-off-by: Vadim Bendebury <vbendeb@chromium.org> Reviewed-on: https://chromium-review.googlesource.com/353165 Reviewed-by: Bill Richardson <wfrichar@chromium.org>
* USB Serial: Add README and update CCD docsAnton Staaf2016-06-151-0/+4
| | | | | | | | | | | | | | | | | | | | The README points the reader back to the docs directory where the CCD documentation lives. I've added information about the install script, and about how the raiden module identifies a CCD serial console. Signed-off-by: Anton Staaf <robotboy@chromium.org> BRANCH=None BUG=None TEST=make buildall -j Change-Id: I8714dffcad0b8c30f46529a8f2d670b5d432cda6 Reviewed-on: https://chromium-review.googlesource.com/352787 Commit-Ready: Anton Staaf <robotboy@chromium.org> Tested-by: Anton Staaf <robotboy@chromium.org> Reviewed-by: Anton Staaf <robotboy@chromium.org> Reviewed-by: Vadim Bendebury <vbendeb@chromium.org>
* USB Serial: Add fallback rule and scriptAnton Staaf2016-06-153-7/+114
| | | | | | | | | | | | | | | | | | | | | | This rule makes it easier to use CCD devices when the raiden module can't be installed for some reason. The rule informs the usbserial module that it should handle anything that looks like a simple serial port for any CCD compatible USB devices. The install script now detects failure when building and installing the raiden module and offers the --fallback option in that case. Signed-off-by: Anton Staaf <robotboy@chromium.org> BRANCH=None BUG=None TEST=make buildall -j Change-Id: I617bbdfb4c5cb9e9803f4088c651f84e3f72bd28 Reviewed-on: https://chromium-review.googlesource.com/351873 Commit-Ready: Anton Staaf <robotboy@chromium.org> Tested-by: Anton Staaf <robotboy@chromium.org> Reviewed-by: Vincent Palatin <vpalatin@chromium.org>
* USB Serial: Add simple install scriptAnton Staaf2016-05-251-0/+19
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | The install script builds and installs the raiden module, it also copies the udev rules file into /etc/udev/rules.d and updates the module alias and dependency information. The install script will also retrigger udev to process rules for all devices that have the Google Vendor ID (0x18d1). This ensures that any devices that are connected when the install is run will immediately be available for use (as opposed to requiring that these devices be unplugged and replugged before use). Signed-off-by: Anton Staaf <robotboy@chromium.org> BRANCH=None BUG=None TEST=Remove udev rules file Remove raiden.ko module, aliases, and dependency information Reboot workstation Run ./install Plug in CCD capable device ls /dev/google Change-Id: I7bcb02f05ee84738a6259800afc4d0c69bea9e69 Reviewed-on: https://chromium-review.googlesource.com/347092 Commit-Ready: Anton Staaf <robotboy@chromium.org> Tested-by: Anton Staaf <robotboy@chromium.org> Reviewed-by: Vadim Bendebury <vbendeb@chromium.org>
* usb_serial: ignore make byproductsVadim Bendebury2016-05-241-0/+12
| | | | | | | | | | | | | | It is not trivial to direct output of this make file into a different directory, let's just add the byproducts to a local .gitignore. BRANCH=none BUG=none TEST='git status' after running make does not show any junk any more. Change-Id: Id04822102d788c6883cff36f26fd8f9d50c996aa Signed-off-by: Vadim Bendebury <vbendeb@chromium.org> Reviewed-on: https://chromium-review.googlesource.com/346746 Reviewed-by: Anton Staaf <robotboy@chromium.org>
* usb_updater: retransmit upgrade blocks if target does not replyVadim Bendebury2016-05-021-25/+50
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | When the target is running upgrade protocol version 2, it is capable of processing multiple transfer attempts of the same block. This patch allows timeouts when expecting the target acknowledges. If the acknowledge does not arrive in time, the host reports the timeout on the console and retransmits the same block to the target. BRANCH=none BUG=chrome-os-partner:52856 TEST=it is now possible to successfully upgrade cr50 on Kevin in one go: $ ./extra/usb_updater/usb_updater build/cr50/ec.bin read 0x80000 bytes from build/cr50/ec.bin open_device 18d1:5014 found interface 4 endpoint 5, chunk_len 64 READY ------- erase Target running protocol version 2 Updating at offset 0x00004000 sending 0x29620/0x3c000 bytes Timeout! Timeout! Timeout! Timeout! ------- update complete reboot bye Change-Id: Ib1c3179cb3a02c0ae6e5e949476553ae28b6a295 Signed-off-by: Vadim Bendebury <vbendeb@chromium.org> Reviewed-on: https://chromium-review.googlesource.com/341583 Reviewed-by: Mary Ruthven <mruthven@chromium.org>
* g: introduce versioning and backwards compatibility of usb_upgradeVadim Bendebury2016-05-021-6/+59
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The original version of usb_upgrade does not provide for any error recovery and also does not support any protocol version notion. Real life experience has shown that error recovery is essential, it needs to be introduced as a protocol enhancement. We want to stay backwards compatible though, so there is a need for protocol versioning. In the original version of the protocol target response is always the same: a 4 byte number which is the error code (and zero means no error). This patch modifies response to the very first packet from the host, the startup packet. The startup response is 8 bytes long. The first 4 bytes is still the same as before, the second 4 bytes carry the protocol version supported by the target, an integer in network byte order. Thus, receiving a 4 byte reply to the startup message tells the host that the target is running protocol version zero, 8 byte reply carries the actual version number in the last 4 bytes. The USB transfer function on the host is enhanced to accept responses shorter then expected, when allowed. BRANCH=none BUG=chrome-os-partner:52856 TEST=usb_updater can successfully update both old and new cr50 images, properly reporting protocol version as 0 or 1 respectively. Change-Id: I9920d2708b21f29615282161fc0eb027018f9378 Signed-off-by: Vadim Bendebury <vbendeb@chromium.org> Reviewed-on: https://chromium-review.googlesource.com/341617 Reviewed-by: Mary Ruthven <mruthven@chromium.org>
* usb_updater: shut down on errors more gracefully and simplify APIsVadim Bendebury2016-05-021-55/+53
| | | | | | | | | | | | | | | | | | | It might not matter much, but it is a good practice to explicitly release USB resources when terminating the app which used them. Also, make function signatures around the file simpler by introducing a structure to carry common USB endpoint properties: device handle, endpoint number and chunk size. BRANCH=none BUG=chrome-os-partner:52856 TEST=no change in functionality, upgrades on B1 still work fine, upgrades on Kevin still very unreliable Change-Id: I9157774a2f5591c70701ba822f20db6ba02e7029 Signed-off-by: Vadim Bendebury <vbendeb@chromium.org> Reviewed-on: https://chromium-review.googlesource.com/341616 Reviewed-by: Mary Ruthven <mruthven@chromium.org>
* Cr50: Update the USB VID:PID:subclass constantsBill Richardson2016-04-152-10/+19
| | | | | | | | | | | | | | | | | | | | | | | The device-specific subclass used for Non-HC firmware updates is in the spreadsheet now, so we can rename the macros to be "official". BUG=chrome-os-partner:49962 BRANCH=none TEST=make buildall; test on cr50 make BOARD=cr50 (plus whatever signing magic works for you) make -C extra/usb_updater ./extra/usb_updater/usb_updater build/cr50/ec.bin (sudo if needed) Note that you may need to rebuild ec.bin in order to see any difference after the update. If the A & B images are identical, the RO bootloader always picks A. Change-Id: I385ce89a9abe2059d52da2d82a0b92b9b3e3c93f Signed-off-by: Bill Richardson <wfrichar@chromium.org> Reviewed-on: https://chromium-review.googlesource.com/339220 Reviewed-by: Vadim Bendebury <vbendeb@chromium.org>
* Cr50: Add userspace tool to update RW FW over USBBill Richardson2016-04-123-0/+492
| | | | | | | | | | | | | | | | | | | | | | | This adds a standalone linux utility to deliver RW firmware updates to the Cr50 over USB. It prepares update blocks required by the firmware upgrader, and then fragments and transfers the blocks though the USB channel. The blocks are reassembled on the target and passed to the upgrade module for integrity verification and programming. BUG=chrome-os-partner:50712 BRANCH=none TEST=make buildall; test on Cr50 as follows: sudo extra/usb_updater/usb_updater build/cr50/ec.bin The Cr50 doesn't yet accept firmware updates that way, so there's no functionality to test just yet. Change-Id: I1c698fd0c553c936d58ff16a2acaa05ae05bc857 Signed-off-by: Bill Richardson <wfrichar@chromium.org> Signed-off-by: Vadim Bendebury <vbendeb@chromium.org> Reviewed-on: https://chromium-review.googlesource.com/338088
* servo_micro: add initial servo_micro buildNick Sanders2016-03-161-0/+140
| | | | | | | | | | | | | | | | | | * Update flash_ec to allow flashing servo_micro * Add servo_micro build BUG=chromium:571477 BRANCH=None TEST=updated servod is able to control gpio, gpio extender, SPI flash, ec uart, ap uart on test yoshi Signed-off-by: Nick Sanders <nsanders@google.com> Change-Id: I4d69c83ae581cb41da928a27c39b7152475d7ca8 Reviewed-on: https://chromium-review.googlesource.com/327214 Commit-Ready: Nick Sanders <nsanders@chromium.org> Tested-by: Nick Sanders <nsanders@chromium.org> Reviewed-by: Aseda Aboagye <aaboagye@chromium.org>
* cleanup: ignore compiled executable in extra/Bill Richardson2015-11-051-0/+1
| | | | | | | | | | | | | | | | | | This just adds a .gitignore entry so that git doesn't complain about the executable you may have built in the extra/usb_console/ directory. BUG=none BRANCH=none TEST=make buildall This has no effect on the EC code at all. The things in the extra/ directory are optional and unsupported. Change-Id: Ib4915f712f9d14caf7418ef4b03aa41e8764fd36 Signed-off-by: Bill Richardson <wfrichar@chromium.org> Reviewed-on: https://chromium-review.googlesource.com/310840 Reviewed-by: Vadim Bendebury <vbendeb@chromium.org>
* Cr50: Fix spshc console commandBill Richardson2015-08-151-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The SPS RX FIFO handler prototype changed from passing cs_enabled to cs_disabled, but the callback function for the spshc command didn't. Now it does. The spshc command switches the protocol on the SPI Slave bus to expect EC Host Commands. BUG=none BRANCH=none TEST=manual At the EC console: spstpm off spshc On the build machine, with an FTDI cable connected to the SPS input: cd extra/ftdi_hostcmd make ./test_cmds Change-Id: I69294a977b83854c5f6348904330bf74416cc6ec Signed-off-by: Bill Richardson <wfrichar@chromium.org> Reviewed-on: https://chromium-review.googlesource.com/293619 Reviewed-by: Vadim Bendebury <vbendeb@chromium.org>
* Cr50: Add extra/sps_errs/ test programBill Richardson2015-07-114-0/+513
| | | | | | | | | | | | | | | | | | | | | | | | | This adds another test program to use with the EC connected to the build host via an FTDI USB-to-SPI adapater, This program sends an EC_CMD_HELLO host command to the EC. Options exist to display the bytes transferred over the SPI interface, and to truncate the message before its complete, to see how the EC reacts. BUG=chrome-os-partner:40969 BRANCH=none TEST=make buildall To try out the new test program: cd extra/sps_errs make ./prog ./prog -v ./prog -v -c 22 Change-Id: I1d370ecdbae047d9504bc6e5f73949d4e3aed9d9 Signed-off-by: Bill Richardson <wfrichar@chromium.org> Reviewed-on: https://chromium-review.googlesource.com/284865 Reviewed-by: Vadim Bendebury <vbendeb@google.com>
* Cr50: Add verbose & range options to extra/ftdi_hostcmd/Bill Richardson2015-07-101-13/+61
| | | | | | | | | | | | | This just helps debug the SPI traffic. BUG=none BRANCH=none TEST=make buildall Change-Id: I09c2f0e0fed9a9f7d0b4cbcea6719c73cdf61068 Signed-off-by: Bill Richardson <wfrichar@chromium.org> Reviewed-on: https://chromium-review.googlesource.com/284409 Reviewed-by: Randall Spangler <rspangler@chromium.org>
* Cr50: Enable host commands over SPI busBill Richardson2015-07-094-0/+617
| | | | | | | | | | | | | | | | | | | | | | This enables the feature that lets the Cr50 receive host commands via the SPI (slave) interface. BUG=chrome-os-partner:40969 BRANCH=none TEST=make buildall CQ-DEPEND=CL:283998 This CL also adds a test example in the extra/ftdi_hostcmd/ directory. To use it, you need the Cr50 attached to the build host via an FTDI USB-to-SPI adapter. cd extra/ftdi_hostcmd make ./test_cmds Change-Id: Ia719b1c898afc45b3105a9cd573a8492178d9be2 Signed-off-by: Bill Richardson <wfrichar@chromium.org> Reviewed-on: https://chromium-review.googlesource.com/284001
* cleanup: fix all the header guardsBill Richardson2015-06-181-3/+3
| | | | | | | | | | | | | | | This unifies all the EC header files to use __CROS_EC_FILENAME_H as the include guard. Well, except for test/ util/ and extra/ which use __TEST_ __UTIL_ and __EXTRA_ prefixes respectively. BUG=chromium:496895 BRANCH=none TEST=make buildall -j Signed-off-by: Bill Richardson <wfrichar@chromium.org> Change-Id: Iea71b3a08bdec94a11239de810a2b2e152b15029 Reviewed-on: https://chromium-review.googlesource.com/278121 Reviewed-by: Randall Spangler <rspangler@chromium.org>
* discovery-stm32f072: Blink the LEDsBill Richardson2015-06-181-3/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This just makes the LEDs blink continually, because I have a development board sitting on my desk and I like to see it doing something. You can still force the GPIOs on and off using the tool in extra/usb_gpio/. BUG=none BRANCH=none TEST=make buildall Try it: sudo make BOARD=discovery-stm32f072 flash The LEDs blink. Force them on and off with: cd extra/usb_gpio make ./usb_gpio write -1 0 ./usb_gpio write 0 -1 ./usb_gpio write 2 0 ./usb_gpio write 4 2 To resume blinking, use ./usb_gpio write 0 0 Change-Id: Iadbe7436c02de5b6eae81885d95bad154ca3692c Signed-off-by: Bill Richardson <wfrichar@chromium.org> Reviewed-on: https://chromium-review.googlesource.com/274131 Reviewed-by: Anton Staaf <robotboy@chromium.org>
* extra: add simple USB console app for discovery-stm32f072Bill Richardson2015-05-272-0/+491
| | | | | | | | | | | | | | | | | | | | | | | This provides a very simple console interface for talking to the discovery-stm32f072 board over its USB connection. It's a simpler way to check that the board is working than configuring udev and/or various drivers to recognize USB device 18d1:500f as a serial console. BUG=none BRANCH=none TEST=manual Connect a discovery-stm32f072, then cd extra/usb_console make ./usb_console Change-Id: Ib25baebe5b4f3a930cdc3a1367d6d20d05b70c56 Signed-off-by: Bill Richardson <wfrichar@chromium.org> Reviewed-on: https://chromium-review.googlesource.com/273570 Reviewed-by: Anton Staaf <robotboy@chromium.org>
* CCD: Disable ModemManager for CCD USB consolesAnton Staaf2015-05-062-14/+33
| | | | | | | | | | | | | | | | | | | | | | | | ModemManager likes to play with serial ports it shouldn't play with, mark our serial ports as off limits. This also bumps the ordering of this rules file just past the udev default rules because it uses environment variables populated by that file. Signed-off-by: Anton Staaf <robotboy@chromium.org> BRANCH=None BUG=None TEST=install new rules file, delete old rules file verify that symlinks to TTY's are still created verify that ModemManager leaves them alone now Change-Id: I4ded95192d78b5b1bbc661ca5b762e18307d2d60 Reviewed-on: https://chromium-review.googlesource.com/269743 Trybot-Ready: Anton Staaf <robotboy@chromium.org> Tested-by: Anton Staaf <robotboy@chromium.org> Reviewed-by: Bill Richardson <wfrichar@chromium.org> Commit-Queue: Anton Staaf <robotboy@chromium.org>
* USB: Add udev rule to handle CCD devicesAnton Staaf2015-03-161-0/+14
| | | | | | | | | | | | | | | | | | | | | | | | | This udev rule creates a directory in /dev/google for each device attached. The name of the directory is unique to the device and is prefixed with the device product name. Within the directory there is a serial directory that contains symlinks to each USB serial port exposed by the device. The symlinks are named based on the USB interface name provided by the EC. Additional subdirectories can be added for I2C, JTAG, GPIOs, and SPI as needed. Signed-off-by: Anton Staaf <robotboy@chromium.org> BRANCH=None BUG=None TEST=Verify that two different CCD devices generate uniquely named entries. Change-Id: I7e6f2ace29b7302c7c072bcf6aab7c8f060b993a Reviewed-on: https://chromium-review.googlesource.com/260420 Trybot-Ready: Anton Staaf <robotboy@chromium.org> Tested-by: Anton Staaf <robotboy@chromium.org> Reviewed-by: Vincent Palatin <vpalatin@chromium.org> Commit-Queue: Anton Staaf <robotboy@chromium.org>
* USB-console: Add Linux USB serial kernel moduleAnton Staaf2014-10-292-0/+56
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | This is a simple kernel module and Makefile for building it out of tree. This module just uses the existing kernel usb serial driver and probes for the Google VID/Class/SubClass/Protocol that identifies a valid simple serial interface. This code should be rolled into the existing kernel driver at: drivers/usb/serial/usb-serial-simple.c While that happens, this module is still useful to developers. Signed-off-by: Anton Staaf <robotboy@chromium.org> BRANCH=None BUG=None TEST=cd extra/usb_serial; make; sudo insmod raiden.ko Connect the discovery-stm32f072 over USB and see that its console is discovered and works. Change-Id: I83661b816643c43b3e2dc9fdc825bc3a796af2f4 Reviewed-on: https://chromium-review.googlesource.com/225923 Reviewed-by: Olof Johansson <olofj@chromium.org> Reviewed-by: Vincent Palatin <vpalatin@chromium.org> Tested-by: Anton Staaf <robotboy@chromium.org> Commit-Queue: Anton Staaf <robotboy@chromium.org>
* lightbar: interpreter additions to encode other patternsEric Caruso2014-10-1522-1/+187
| | | | | | | | | | | | | | | | | | | | Makes a significant encoding change to existing opcodes and adds several opcodes to allow for encoding the more complicated patterns that we have on the lightbar (S0, etc.) as well as condense the ones we technically could encode but couldn't fit in the 192-byte footprint allotted to us (KONAMI). We need this to remove sequences from the EC code. BUG=chrome-os-partner:32203 BRANCH=ToT TEST=run test programs on hardware and lightbar simulator Signed-off-by: Eric Caruso <ejcaruso@chromium.org> Change-Id: I12fe908d3a43a924aa39f24ad66adbe53f7f38e1 Reviewed-on: https://chromium-review.googlesource.com/222949 Reviewed-by: Randall Spangler <rspangler@chromium.org> Reviewed-by: Bill Richardson <wfrichar@chromium.org>
* lightbar: bring the TAP sequence in graduallyBill Richardson2014-10-151-0/+1
| | | | | | | | | | | | | | | | | | | With only four LED segments, it's confusing to indicate a power percentage by dimming the top segment unless you can see the indicator smoothly ramping up from all-off. This does that. Kind of pretty, if I say so myself. BUG=chrome-os-partner:29041 BRANCH=ToT, Samus TEST=make buildall Run "ectool lightbar demo on", then press the T key to invoke the pattern and the arrow keys to fake the charge state. Change-Id: Ib6a56aea56078b8c1fc9edddda469d7f41735ff7 Signed-off-by: Bill Richardson <wfrichar@chromium.org> Reviewed-on: https://chromium-review.googlesource.com/223300 Reviewed-by: Alec Berg <alecaberg@chromium.org>
* discovery-stm32f072: discovery USB GPIO testAnton Staaf2014-10-143-0/+193
| | | | | | | | | | | | | | | | | | | | | | Wire up the discovery's four LEDs and one user button as GPIOs that can be written and read using the new USB GPIO driver. This also adds an extra tool called usb_gpio that provides control of GPIOs from the linux command line. Signed-off-by: Anton Staaf <robotboy@chromium.org> BRANCH=None BUG=None TEST=cd board/discovery-stm32f072 ; make flash cd extra/usb_gpio ; make usb_gpio write 0x1e 0x00 Change-Id: I15115f82b15b6c35d1a34b83b7114a6bfa6a3d67 Reviewed-on: https://chromium-review.googlesource.com/218270 Reviewed-by: Anton Staaf <robotboy@chromium.org> Commit-Queue: Anton Staaf <robotboy@chromium.org> Tested-by: Anton Staaf <robotboy@chromium.org>
* lightbar: Rename structs and macros for kernel cros_ec_commandsEric Caruso2014-10-092-5/+5
| | | | | | | | | | | | | | | This prepends EC_ a macro exposed in ec_commands.h, moves a macro into lbcc that is not used elsewhere, and changes lb_program structs to lightbar_program. BUG=None BRANCH=ToT TEST=make buildall -j Change-Id: I481562da72d91f846c64cf9af40338027641462c Signed-off-by: Eric Caruso <ejcaruso@chromium.org> Reviewed-on: https://chromium-review.googlesource.com/222406 Reviewed-by: Bill Richardson <wfrichar@chromium.org>
* lightbar: extra test programEric Caruso2014-10-091-0/+0
| | | | | | | | | | | | | | Gets a little more coverage on the SET_COLOR control operand. BUG=None BRANCH=ToT TEST=On hardware and simulator. Should appear exactly the same as rainbow-shift.bin. Change-Id: Id9c9948ae178884180e4d42e4fcceb58218423f8 Signed-off-by: Eric Caruso <ejcaruso@chromium.org> Reviewed-on: https://chromium-review.googlesource.com/222004 Reviewed-by: Bill Richardson <wfrichar@chromium.org>
* Remove PULSE and TEST sequences from lightbar moduleVic Yang2014-10-081-1/+0
| | | | | | | | | | | | | | | PULSE and TEST sequences are not used anywhere. Remove them to save flash space. Also, fix msleep(MSEC) calls in the unit test; it's essentially usleep(SECOND) written in an incorrect way. BUG=chrome-os-partner:32203 TEST=make buildall BRANCH=None Change-Id: I61ba897df632538eb89364a4c913d5fee87f3864 Signed-off-by: Vic Yang <victoryang@chromium.org> Reviewed-on: https://chromium-review.googlesource.com/220711 Reviewed-by: Bill Richardson <wfrichar@chromium.org>
* lightbar: test programs for seq type PROGRAMEric Caruso2014-09-268-0/+3
| | | | | | | | | | | | | | | | | | | | | | | | These programs test various bytecode interpreter functions. rainbow-shift, red-green-blink and green-pulse produce visual effects, whereas the other three programs test error cases. bad-jump makes sure the interpreter stops if the PC goes out of bounds. bad-opcode makes sure the interpreter stops if it does not understand the instructions it is decoding. infinite-jump makes sure that sticking a tight loop in the EC (i.e., one not perforated with any DELAYs, RAMP_ONCEs, or CYCLE*s) does not cause it to hang or crash. bad-decode-8 and -32 test that malformed instructions are detected while decoding the instruction's immediate data. BUG=None BRANCH=ToT TEST=In simulator/scp files to device and test Change-Id: I6c189997a13e7c6196daa28eb74d5506b5288f2b Signed-off-by: Eric Caruso <ejcaruso@chromium.org> Reviewed-on: https://chromium-review.googlesource.com/219565 Reviewed-by: Bill Richardson <wfrichar@chromium.org>
* lightbar: add seq type PROGRAM for user-programmable sequencesEric Caruso2014-09-252-0/+38
| | | | | | | | | | | | | | | | | | | | | | | | This diff allows the user to send small programs to the EC and gain control of the lightbar. Right now, this is only exposed through ectool, and sysfs support will come later. To send a program to the EC, use $ ectool lightbar program /path/to/program.bin and then start running the program with $ ectool lightbar seq program BUG=None BRANCH=ToT TEST=Using the above steps with hand-assembled programs. Checked that infinite bytecode loops do not hang the EC. Checked that bad opcodes exit with an error. Stress tested pushing programs and changing sequences. Signed-off-by: Eric Caruso <ejcaruso@chromium.org> Change-Id: I635fb041a5dc5c403f7c26fb9a41b5563be9b6b7 Reviewed-on: https://chromium-review.googlesource.com/219558 Reviewed-by: Bill Richardson <wfrichar@chromium.org> Reviewed-by: Randall Spangler <rspangler@chromium.org>
* extra: Move lightbar simulator into subdirectoryAnton Staaf2014-09-118-43/+41
| | | | | | | | | | | | | | | | | This clears the top level extra directory for additional extras. Signed-off-by: Anton Staaf <robotboy@chromium.org> BRANCH=None BUG=None TEST=cd extra/lightbar; make; lightbar Change-Id: If05a768e4d33cbf21b2ce47a056c960a95728558 Reviewed-on: https://chromium-review.googlesource.com/217537 Tested-by: Anton Staaf <robotboy@chromium.org> Reviewed-by: Bill Richardson <wfrichar@chromium.org> Commit-Queue: Anton Staaf <robotboy@chromium.org>
* Make lightbar simulation compile againBill Richardson2014-08-203-10/+34
| | | | | | | | | | | | | | | | | | | This just brings the competely unsupported but occasionally useful lightbar simulation tool up to date with the rest of the source tree so it will compile and run again. BUG=none BRANCH=ToT TEST=manual cd extra make ./lightbar Change-Id: Iafeaaa5ac56a4b711c63d2c64d8c51ab4b324104 Signed-off-by: Bill Richardson <wfrichar@chromium.org> Reviewed-on: https://chromium-review.googlesource.com/213206 Reviewed-by: Randall Spangler <rspangler@chromium.org>
* Tweaks to lightbar simulationBill Richardson2014-06-054-4/+69
| | | | | | | | | | | | | | | | | Improve the get_time() function, add support for GNU readline if desired. BUG=none BRANCH=ToT TEST=manual cd extra make ./lightbar Change-Id: Iedf84253b0e616a6a1b502415a487a2e6248cb2e Signed-off-by: Bill Richardson <wfrichar@chromium.org> Reviewed-on: https://chromium-review.googlesource.com/202698 Reviewed-by: Randall Spangler <rspangler@chromium.org>
* Add standalone lightbar simulation toolBill Richardson2014-05-157-0/+766
This adds an "extra/" directory to hold various experiments and optional programs. With this change, we add a tool that can simulate the lightbar behavior on the build machine. That can be used to experment with variations in the lightbar pattern code without needing to reflash a Pixel with a new EC to see the effect. There is no functional change to the EC code, just a couple of #ifdefs to allow common/lightbar.c to be compiled separately from the EC. BUG=none BRANCH=ToT TEST=make buildall -j cd extra make ./lightbar You may need to install the libxcb1-dev package on your build machine. Change-Id: I847ce7ea97cae792b1de1b91f488819e873b6555 Signed-off-by: Bill Richardson <wfrichar@chromium.org> Reviewed-on: https://chromium-review.googlesource.com/199883