summaryrefslogtreecommitdiff
path: root/docs
diff options
context:
space:
mode:
Diffstat (limited to 'docs')
-rw-r--r--docs/ap-ec-comm.md152
-rw-r--r--docs/case_closed_debugging.md2
-rw-r--r--docs/case_closed_debugging_cr50.md2
-rw-r--r--docs/ccd_howtos.md2
-rw-r--r--docs/code_coverage.md50
-rw-r--r--docs/code_reviews.md54
-rw-r--r--docs/configuration/ap_power_sequencing.md253
-rw-r--r--docs/configuration/cbi.md39
-rw-r--r--docs/configuration/config_ap_to_ec_comm.md73
-rw-r--r--docs/configuration/ec_chipset.md116
-rw-r--r--docs/configuration/gpio.md160
-rw-r--r--docs/configuration/i2c.md203
-rw-r--r--docs/configuration/keyboard.md87
-rw-r--r--docs/configuration/leds.md88
-rw-r--r--docs/configuration/motion_sensors.md50
-rw-r--r--docs/configuration/template.md51
-rw-r--r--docs/core_runtime.md329
-rw-r--r--docs/detachable_base_verified_boot.md432
-rw-r--r--docs/ec-3po-design.md326
-rw-r--r--docs/ec-3po.md82
-rw-r--r--docs/ec_terms.md248
-rw-r--r--docs/fingerprint/OWNERS1
-rw-r--r--docs/fingerprint/fingerprint-authentication-design-doc.md772
-rw-r--r--docs/fingerprint/fingerprint-debugging.md254
-rw-r--r--docs/fingerprint/fingerprint-dev-for-partners.md657
-rw-r--r--docs/fingerprint/fingerprint-factory-quick-guide.md97
-rw-r--r--docs/fingerprint/fingerprint-factory-requirements.md502
-rw-r--r--docs/fingerprint/fingerprint-firmware-testing-for-partners.md112
-rw-r--r--docs/fingerprint/fingerprint-tpm-seed.md324
-rw-r--r--docs/fingerprint/fingerprint.md590
-rw-r--r--docs/getting_started_quickly.md125
-rw-r--r--docs/hammer.md199
-rw-r--r--docs/i2c-debugging.md51
-rw-r--r--docs/ide-support.md57
-rw-r--r--docs/images/CQ_Prototype_Environment.jpgbin204245 -> 0 bytes
-rw-r--r--docs/images/TCPMv2-ExampleStates.pngbin13779 -> 0 bytes
-rw-r--r--docs/images/TCPMv2-ExampleTransitions.pngbin58779 -> 0 bytes
-rw-r--r--docs/images/TCPMv2-TaskLayers.pngbin47867 -> 0 bytes
-rw-r--r--docs/images/TCPMv2-TaskLoop.pngbin16282 -> 0 bytes
-rw-r--r--docs/images/alternate_example.pngbin35864 -> 0 bytes
-rw-r--r--docs/images/cros_fingerprint_architecture_diagram.pngbin42757 -> 0 bytes
-rw-r--r--docs/images/cros_fingerprint_decryption_flowchart.pngbin29095 -> 0 bytes
-rw-r--r--docs/images/cros_fingerprint_encryption_flowchart.pngbin30345 -> 0 bytes
-rw-r--r--docs/images/cros_fingerprint_tpm_seed.pngbin85879 -> 0 bytes
-rw-r--r--docs/images/dartmonkey.jpgbin95827 -> 0 bytes
-rw-r--r--docs/images/dragonclaw.jpgbin95575 -> 0 bytes
-rw-r--r--docs/images/dragonclaw_rev_0.2.jpgbin253742 -> 0 bytes
-rw-r--r--docs/images/dragonclaw_rev_0.2_1.8v_load_switch_rework.pdfbin278650 -> 0 bytes
-rw-r--r--docs/images/dragonclaw_rev_0.2_1.8v_rework.jpgbin94686 -> 0 bytes
-rw-r--r--docs/images/dragonclaw_servo_fix.jpgbin128337 -> 0 bytes
-rw-r--r--docs/images/dragonclaw_with_10_pin_swd.jpgbin257502 -> 0 bytes
-rw-r--r--docs/images/dragonclaw_with_20_pin_swd.jpgbin224680 -> 0 bytes
-rw-r--r--docs/images/dragonclaw_withfix.jpgbin237987 -> 0 bytes
-rw-r--r--docs/images/dragonclaw_yoshi_flex_header.jpgbin179485 -> 0 bytes
-rw-r--r--docs/images/dragonclaw_yoshi_flex_header2.jpgbin175872 -> 0 bytes
-rw-r--r--docs/images/ec-3po-high-level-design.pngbin11602 -> 0 bytes
-rw-r--r--docs/images/ec-3po-internal-design.pngbin21027 -> 0 bytes
-rw-r--r--docs/images/gpio_example.pngbin34201 -> 0 bytes
-rw-r--r--docs/images/gpio_int_example.pngbin30677 -> 0 bytes
-rw-r--r--docs/images/i2c_example.pngbin62991 -> 0 bytes
-rw-r--r--docs/images/icetower_with_20_pin_swd.jpgbin206558 -> 0 bytes
-rw-r--r--docs/images/servo_micro.jpgbin246653 -> 0 bytes
-rw-r--r--docs/images/servo_v2.jpgbin190457 -> 0 bytes
-rw-r--r--docs/images/servo_v2_jtag_header.jpgbin250567 -> 0 bytes
-rw-r--r--docs/images/servo_v2_with_micro_usb.jpgbin215185 -> 0 bytes
-rw-r--r--docs/images/servo_v2_with_yoshi_flex.jpgbin144728 -> 0 bytes
-rw-r--r--docs/images/servo_v2_with_yoshi_flex2.jpgbin85034 -> 0 bytes
-rw-r--r--docs/images/servomicro_dragonclaw.jpgbin237922 -> 0 bytes
-rw-r--r--docs/images/usb_source_port_balancing.pngbin48705 -> 0 bytes
-rw-r--r--docs/images/yoshi_flex.jpgbin38188 -> 0 bytes
-rw-r--r--docs/images/yoshi_flex_swd_rework.jpgbin102197 -> 0 bytes
-rw-r--r--docs/low_battery_startup.md420
-rw-r--r--docs/new_board_checklist.md179
-rw-r--r--docs/reducing_ec_image_size.md459
-rw-r--r--docs/schematics/dragonclaw/LICENSE318
-rw-r--r--docs/schematics/dragonclaw/README.md10
-rw-r--r--docs/schematics/dragonclaw/dragonclaw_v0.2.brdbin4869452 -> 0 bytes
-rw-r--r--docs/schematics/dragonclaw/dragonclaw_v0.2.html7087
-rw-r--r--docs/schematics/dragonclaw/dragonclaw_v0.2_bom.csv26
-rw-r--r--docs/sitemap.md79
-rw-r--r--docs/unit_tests.md232
-rw-r--r--docs/usb-c.md219
-rw-r--r--docs/usb-tcpmv2.md221
-rw-r--r--docs/usb_power.md277
-rw-r--r--docs/usb_updater.md201
-rw-r--r--docs/write_protection.md307
-rw-r--r--docs/zephyr_build.md164
-rw-r--r--docs/zephyr_init.md53
-rw-r--r--docs/zephyr_poc_device_bringup.md52
-rw-r--r--docs/zephyr_shim.md381
-rw-r--r--docs/ztest.md200
91 files changed, 0 insertions, 17425 deletions
diff --git a/docs/ap-ec-comm.md b/docs/ap-ec-comm.md
deleted file mode 100644
index 5cd6fd82d9..0000000000
--- a/docs/ap-ec-comm.md
+++ /dev/null
@@ -1,152 +0,0 @@
-# Application Processor to EC communication
-
-[TOC]
-
-## Overview
-
-The Application Processor (sometimes called the host) communicates with the EC
-by issuing *host commands*, which are identified by a command ID and version
-number, and then reading a response. When a host command is issued through
-`ectool`, two or three software components are involved:
-
-* `ectool`, the user-space binary,
-* normally the `cros-ec` Kernel driver, and
-* the code on the EC itself. This can be thought of as two parts:
- * a chip-specific driver for the appropriate transport, and
- * the generic host command handling code (mostly in the
- [host command task]).
-
-We'll go into detail of each of these, as well as the traffic on the wire, in
-the following sections.
-
-### `ectool`
-
-`ectool` contains wrapper functions for the host commands exposed by the EC,
-providing a CLI. They call one of the transport-specific `ec_command`
-implementations in the `util/comm-*.c` files to send and receive from the EC.
-
-### EC kernel driver
-
-In most cases, `ectool` communicates via the [`cros-ec` Kernel driver], rather
-than directly from userspace. It sends raw commands to the Kernel driver, which
-sends them on to the EC, bypassing a lot of the other Kernel driver
-functionality.
-
-There are other CrOS EC-related Kernel drivers, which use host commands to act
-as adapters to existing Linux APIs. For example, sensors from the EC are mapped
-to the Linux [Industrial I/O] system.
-
-### On the wire
-
-Now we come to the protocol itself. All transactions take this general form:
-
-* Host writes the request packet, consisting of:
- * a transport-specific header;
- * a `struct ec_host_request` containing the command ID, data length, and a
- checksum; and
- * zero or more bytes of parameters for the command, the format of which
- depends on the command.
-* Host reads the response to its request, consisting of:
- * a transport-specific header;
- * a `struct ec_host_response` containing the result code, data length, and
- a checksum; and
- * zero or more bytes of response from the command, again with a
- command-specific format.
-
-### On the EC
-
-The host packet is received on the EC by some chip-specific code which checks
-its transport-specific header, then passes it on to the common host command
-code, starting at `host_packet_receive`. The common code validates the packet
-and then sends it on to the handler function (annotated with the
-`DECLARE_HOST_COMMAND` macro), which runs in the `HOSTCMD` task. The handler can
-set a response by modifying its arguments struct, which is sent back to the host
-via the chip-specific code.
-
-While this is happening, the EC needs to indicate to the host that it is busy
-processing and not yet ready to give a response. How it does this depends on the
-transport method used (see [Transport-specific details] below).
-
-## Versions
-
-There are two different concepts of "version" involved in host commands: version
-of the overarching protocol, and versions of individual commands.
-
-### Protocol versions
-
-There have been three protocol versions so far, and this document describes
-version 3. Version 1 was superseded by 2 before it shipped, so no devices use it
-anymore. Version 2 is generally deprecated, but you might still encounter it
-occasionally.
-
-Which version is in use can be determined using the `EC_CMD_GET_PROTOCOL_INFO`
-command. This was only introduced in version 3, however, so if errors,
-`EC_CMD_HELLO` should be sent in version 2. If the hello command succeeds, the
-EC speaks version 2.
-
-### Command versions
-
-Individual commands also have versions, independent of the protocol version
-they're being called with. Different versions of a command may have different
-parameter or response formats. `EC_CMD_GET_CMD_VERSIONS` returns the versions of
-the given command supported by the EC. These version numbers start at 0.
-
-## Transport-specific details
-
-Although the command and response formats are the same across all transports,
-some details of how they are transmitted differ, which may be of interest when
-implementing the EC side of the protocol on a new chip.
-
-### I<sup>2</sup>C
-
-I<sup>2</sup>C is very flexible with its timing, so when the EC receives a
-packet from the host, it should stretch the clock, holding it low until it is
-ready for the host to read the response.
-
-If the host tries to read more bytes than were in the response, the EC should
-respond with an obvious filler byte (such as 0xEC). For example, if a command
-that normally returns 50 bytes errors, its response will only be 8 bytes (the
-size of the response struct). The host will probably try to read 50 bytes
-anyway, so the EC should send the 8 bytes of the struct followed by 42 copies of
-the filler byte.
-
-### SPI
-
-The SPI bus is similar to I<sup>2</sup>C, but with two major exceptions. First,
-there's a minimum speed on the SPI bus. If slave devices don't respond quickly
-enough, the master will assume they're broken and give up. Second, every
-transaction is bidirectional. When bits are being clocked from master to slave
-on the MOSI line, the master will simultaneously read bits in the other
-direction on the MISO line.
-
-Hardware devices can usually handle this, and often some hardware-based flow
-control used to "stretch" the transaction by a bit or byte if the slave device
-needs a little extra time to respond to the master's demands.
-
-When exchanging messages with the EC on the SPI bus, the EC's host commands are
-communicated using our own software flow-control scheme, because most of the
-embedded controllers either aren't fast enough or don't have any support for
-hardware flow-control.
-
-It works like this: When the AP sends a byte to the EC, if the EC doesn't have a
-response queued up in advance, a default byte is returned. The EC preconfigures
-that default response byte to indicate its status (ready, busy, waiting for more
-input, etc.). Once the AP has sent a complete command message, it continues
-clocking bytes to the EC (which the EC ignores) and just looks at the response
-byte that comes back. Once the EC has parsed the AP's command and is ready to
-reply, it sends a "start of frame" byte, followed by the actual response. The AP
-continues to read and ignore bytes from the EC until it sees the start of frame
-byte, and then it knows that the EC's response is starting with the next byte.
-
-Once the response packet has been read, any additional reads should return
-`EC_SPI_PAST_END`.
-
-### LPC or eSPI
-
-The EC should set `EC_LPC_STATUS_PROCESSING` in its command status register
-after receiving a host packet and before it has a response ready.
-
-[`cros-ec` Kernel driver]: https://chromium.googlesource.com/chromiumos/third_party/kernel/+/refs/heads/chromeos-4.19/drivers/mfd/cros_ec_dev.c
-[Industrial I/O]: https://www.kernel.org/doc/html/v4.14/driver-api/iio/index.html
-[host command task]: https://chromium.googlesource.com/chromiumos/platform/ec/+/HEAD/common/host_command.c
-[Transport-specific details]: #Transport_specific-details
diff --git a/docs/case_closed_debugging.md b/docs/case_closed_debugging.md
deleted file mode 100644
index 8310970652..0000000000
--- a/docs/case_closed_debugging.md
+++ /dev/null
@@ -1,2 +0,0 @@
-The has been moved into a
-[different branch](https://chromium.googlesource.com/chromiumos/platform/ec/+/cr50_stab/docs/case_closed_debugging.md)
diff --git a/docs/case_closed_debugging_cr50.md b/docs/case_closed_debugging_cr50.md
deleted file mode 100644
index ac518c0153..0000000000
--- a/docs/case_closed_debugging_cr50.md
+++ /dev/null
@@ -1,2 +0,0 @@
-The has been moved into a
-[different branch](https://chromium.googlesource.com/chromiumos/platform/ec/+/cr50_stab/docs/case_closed_debugging_cr50.md)
diff --git a/docs/ccd_howtos.md b/docs/ccd_howtos.md
deleted file mode 100644
index 44deecd16d..0000000000
--- a/docs/ccd_howtos.md
+++ /dev/null
@@ -1,2 +0,0 @@
-The has been moved into a
-[different branch](https://chromium.googlesource.com/chromiumos/platform/ec/+/cr50_stab/docs/ccd_howtos.md)
diff --git a/docs/code_coverage.md b/docs/code_coverage.md
deleted file mode 100644
index ec8053ca93..0000000000
--- a/docs/code_coverage.md
+++ /dev/null
@@ -1,50 +0,0 @@
-# Code Coverage
-
-Provides an overview of how to use code coverage tools when running the unit
-tests in the EC codebase.
-
-[TOC]
-
-## Availability
-
-Code coverage is only available for host-based unit tests, as opposed to manual
-tests that run on target hardware.
-
-## Building for code coverage
-
-To build host-based unit tests for code coverage, invoke `make` with the
-`coverage` target, as follows:
-
-`make coverage -j`
-
-This target will compile and link the unit tests with `--coverage` flag (which
-pulls in the `gcov` libraries), run the tests, and then process the profiling
-data into a code coverage report using the `lcov` and `genhtml` tools.
-
-The coverage report top-level page is `build/coverage/coverage_rpt/index.html`.
-
-### Noise in the build output
-
-When building for code coverage, you may see multiple warnings of the form
-`geninfo: WARNING: no data found for
-/mnt/host/source/src/platform/ec/core/host/cpu.h` and `genhtml: WARNING:
-function data mismatch at
-/mnt/host/source/src/platform/ec/common/math_util.c:134`
-
-These warnings can be ignored. (FYI, the "function data mismatch" warnings
-appear to be caused in part by using relative paths instead of absolute paths.)
-
-## Zephyr ztest code coverage
-
-To build the Zephyr unit tests for code coverage run:
-
-`zmake coverage build/ztest-coverage`
-
-This target will compile, without linking, all zephyr projects with
-`CONFIG_COVERAGE` Kconfig option enabled, run the tests, and then process the
-profiling data into a code coverage report using the `lcov` and `genhtml`
-tools. This requires the `HAS_COVERAGE_SUPPORT` option, which can only be
-selected in `Kconfig.board`.
-
-The coverage report top-level page is
-`build/ztest-coverage/coverage_rpt/index.html`.
diff --git a/docs/code_reviews.md b/docs/code_reviews.md
deleted file mode 100644
index a8e77c3fd8..0000000000
--- a/docs/code_reviews.md
+++ /dev/null
@@ -1,54 +0,0 @@
-# Code Reviews
-
-The `platform/ec` repository makes use of a code review system that tries to
-evenly distribute code reviews among available reviewers.
-
-[TOC]
-
-## How to request a review
-
-Add `cros-ec-reviewers@google.com` to the reviewer line in Gerrit. A background
-job will come around and replace the `cros-ec-reviewers@google.com` address with
-the next available reviewer in the EC reviewer rotation. This typically takes on
-the order of minutes.
-
-Optionally, you can click the [FIND OWNERS] button in the UI, and select
-`cros-ec-reviewers@google.com`.
-
-## When to use review system
-
-If you are modifying code in `common/`, `chip/`, or `core/`, feel free to use
-the `cros-ec-reviewers@google.com` system. It is **never** a requirement to use
-`cros-ec-reviewers@google.com`. You can always request a review from a specific
-person.
-
-## Responsibilities of reviewers
-
-If the selected reviewer is unfamiliar with code in a CL, then that reviewer
-should at least ensure that EC style and paradigms are being followed. Once EC
-styles and paradigms are being followed, then the reviewer can give a +1 and add
-the appropriate domain expert for that section of code.
-
-Reviewers should try to give an initial response within 1 business day of
-receiving a review request. Thereafter, they should try to respond to new
-comments by the author within 1 business day.
-
-## Review guidelines
-
-Authors and reviewers should follow the Chrome OS firmware review
-[guidelines][2] while publishing and reviewing code.
-
-## How can I join the rotation?
-
-Add your name to the [list of reviewers][1].
-
-## Reference
-
-* [Chrome OS firmware review guidelines][2]
-* [Coreboot Gerrit Guidelines][3]
-* [Google small CL guidelines][5]
-
-[1]: http://google3/chrome/crosinfra/gwsq/ec_reviewers
-[2]: http://chromium.googlesource.com/chromiumos/docs/+/HEAD/firmware_code_reviews.md
-[3]: https://doc.coreboot.org/getting_started/gerrit_guidelines.html
-[5]: https://google.github.io/eng-practices/review/developer/small-cls.html
diff --git a/docs/configuration/ap_power_sequencing.md b/docs/configuration/ap_power_sequencing.md
deleted file mode 100644
index c5073d5809..0000000000
--- a/docs/configuration/ap_power_sequencing.md
+++ /dev/null
@@ -1,253 +0,0 @@
-# Configure AP Power Sequencing
-
-This section details the configuration related to managing the system power
-states (G3, S5, S3, S0, S0iX, etc). This includes the following tasks:
-
-- Selecting the AP chipset type.
-- Configure output GPIOs that enable voltage rails.
-- Configure input GPIOs that monitor the voltage rail status (power good
- signals).
-- Configure input GPIOs that monitor the AP sleep states.
-- Pass through power sequencing signals from the board to the AP, often with
- delays or other sequencing control.
-
-## Config options
-
-The AP chipset options are grouped together in [config.h]. Select exactly one of
-the available AP chipset options (e.g. `CONFIG_CHIPSET_APOLLOLAKE`,
-`CONFIG_CHIPSET_BRASWELL`, etc). If the AP chipset support is not available,
-select `CONFIG_CHIPSET_ECDRIVEN` to enable basic support for handling S3 and S0
-power states.
-
-After selecting the chipset, search for additional options that start with
-`CONFIG_CHIPSET*` and evaluate whether each option is appropriate to add to
-`baseboard.h` or `board.h`.
-
-Finally, evaluate the `CONFIG_POWER_` options for use on your board. In
-particular, the `CONFIG_POWER_BUTTON`, and `CONFIG_POWER_COMMON` should be
-defined.
-
-The `CONFIG_BRINGUP` option is especially useful option during the initial power
-up of a new board. This option is discussed in more detail in the
-[Testing and Debugging](#Testing-and-Debugging) section.
-
-## Feature Parameters
-
-None needed in this section.
-
-## GPIOs and Alternate Pins
-
-### EC Outputs to the board
-
-The board should connect the enable signal of one or more voltage rails to the
-EC. These enable signals will vary based on the AP type, but are typically
-active high signals. For Intel Ice Lake chipsets, this includes enable signals
-for the primary 3.3V and primary 5V rails.
-
-```c
-GPIO(EN_PP3300_A, PIN(A, 3), GPIO_OUT_LOW)
-GPIO(EN_PP5000, PIN(A, 4), GPIO_OUT_LOW)
-```
-
-### EC Outputs to AP
-
-For boards with an x86 AP, the following signals can be connected between the EC
-and AP/PCH. Create `GPIO()` entries for any signals used on your board.
-
-- `GPIO_PCH_PWRBTN_L` - Output from the EC that proxies the status of the EC
- input `GPIO_POWER_BUTTON_L` (driven by the H1). Only used when
- `CONFIG_POWER_BUTTON_X86` is defined.
-- `GPIO_PCH_RSMRST_L` - Output from the EC that proxies the status of the EC
- input `GPIO_RSMRST_L_PGOOD` (driven by the PMIC or voltage regulators on the
- board).
-- `GPIO_PCH_SYS_PWROK` - Output from the EC that indicates when the system
- power is good and the AP can power up.
-- `GPIO_PCH_WAKE_L` - Output from the EC, driven low when there is a wake
- event.
-
-### Power Signal Interrupts
-
-For each power signal defined in the `power_signal_list[]` array, define a
-`GPIO_INT()` entry that connects to the `power_signal_interrupt`. The interrupts
-are configured to trigger on both rising edge and falling edge.
-
-The example below shows the power signals used with Ice Lake processors.
-
-```c
-GPIO_INT(SLP_S0_L, PIN(D, 5), GPIO_INT_BOTH, power_signal_interrupt)
-GPIO_INT(SLP_S3_L, PIN(A, 5), GPIO_INT_BOTH, power_signal_interrupt)
-GPIO_INT(SLP_S4_L, PIN(D, 4), GPIO_INT_BOTH, power_signal_interrupt)
-GPIO_INT(PG_EC_ALL_SYS_PWRGD, PIN(F, 4), GPIO_INT_BOTH, power_signal_interrupt)
-GPIO_INT(PP5000_A_PG_OD, PIN(D, 7), GPIO_INT_BOTH, power_signal_interrupt)
-```
-
-See the [GPIO](./gpio.md) documentation for additional details on the GPIO
-macros.
-
-## Data structures
-
-- `const struct power_signal_info power_signal_list[]` - This array defines
- the signals from the AP and from the power subsystem on the board that
- control the power state. For some Intel chipsets, including Apollo Lake and
- Ice Lake, this power signal list is already defined by the corresponding
- chipset file under the `./power` directory.
-
-## Tasks
-
-The `CHIPSET` task monitors and handles the power state changes. This task
-should always be enabled with a priority higher than the `CHARGER` task, but
-lower than the `HOSTCMD` and `CONSOLE` tasks.
-
-```c
- TASK_NOTEST(CHIPSET, chipset_task, NULL, LARGER_TASK_STACK_SIZE) \
-```
-
-The `POWERBTN` and task should be enabled when using x86 based AP chipsets. The
-typical priority is higher than the `CONSOLE` task, but lower than the `KEYSCAN`
-task.
-
-```c
- TASK_ALWAYS(POWERBTN, power_button_task, NULL, LARGER_TASK_STACK_SIZE) \
-```
-
-## Testing and Debugging
-
-During the first power on of prototype devices, it is recommended to enable
-`CONFIG_BRINGUP`. This option prevents the EC from automatically powering on the
-AP. You can use the EC console commands `gpioget` and `gpioset` to manually
-check power good signals and enable power rails in a controlled manner. This
-option also enables extra debug to log all power signal transitions to the EC
-console. With `CONFIG_BRINGUP` enabled, you can trigger the automatic power
-sequencing by running the `powerbtn` from the EC console.
-
-The EC console displays the following text when `CONFIG_BRINGUP` is enabled:
-
-```
-WARNING: BRINGUP BUILD
-```
-
-Once you manually press the power button, or execute the `powerbtn` command, the
-EC console displays both the power state changes and the detected transitions of
-all power signals. An example is shown below.
-
-```
-> powerbtn
-Simulating 200 ms power button press.
-[6.790816 power button pressed]
-[6.791133 PB pressed]
-[6.791410 PB task 1 = pressed]
-[6.791755 PB PCH pwrbtn=LOW]
-[6.792049 PB task 10 = was-off, wait 199362]
-RTC: 0x000067bc (26556.00 s)
-[6.792786 power state 5 = G3->S5, in 0x0000]
-[6.793190 Set EN_PP3300_A: 1]
-[6.793905 SW 0x03]
-[6.817627 Set PCH_DSW_PWROK: 1]
-[6.818007 Pass thru GPIO_DSW_PWROK: 1]
-[6.818351 Set EN_PP5000_A: 1]
-RTC: 0x000067bc (26556.00 s)
-[6.903830 power state 1 = S5, in 0x0029]
-[6.918735 Pass through GPIO_RSMRST_L_PGOOD: 1]
-i2c 7 recovery! error code is 13, current state is 0
-Simulating power button release.
-> [6.991576 power button released]
-[6.992009 PB task 10 = was-off]
-[6.992376 PB released]
-[6.992635 PB task 6 = released]
-[6.992958 PB PCH pwrbtn=HIGH]
-[6.993256 PB task 0 = idle, wait -1]
-[6.993806 PB released]
-[6.994149 PB task 6 = released]
-[6.994512 PB PCH pwrbtn=HIGH]
-[6.994812 PB task 0 = idle, wait -1]
-[6.995768 SW 0x01]
-3 signal changes:
- 6.807298 +0.000000 DSW_PWROK => 1
- 6.903417 +0.096119 SLP_SUS_L => 1
- 6.908471 +0.005054 PG_EC_RSMRST_ODL => 1
-1 signal changes:
- 7.909941 +0.000000 SLP_S0_L => 1
-[9.026429 Fan 0 stalled!]
-RTC: 0x000067bf (26559.00 s)
-[9.124643 power state 6 = S5->S3, in 0x003f]
-i2c 3 recovery! error code is 13, current state is 0
-[9.126543 mux config:2, port:1, res:1]
-[9.127109 PD:S5->S3]
-RTC: 0x000067bf (26559.00 s)
-[9.127985 power state 2 = S3, in 0x003f]
-RTC: 0x000067bf (26559.00 s)
-[9.128640 power state 7 = S3->S0, in 0x003f]
-```
-
-This example shows successful power on of the AP as the AP transitions from the
-G3 state all the way to the S0 state.
-
-The console messages shown in brackets `[]` include a timestamp. This timestamp
-records when the corresponding console message was printed.
-
-The power signal changes are preceded by the message `<N> signal changes:`.
-Power signal changes are recorded at interrupt priority into a special buffer
-and are not displayed in real time. Instead, printing of the buffer is deferred
-until the EC is no longer executing at interrupt priority. This causes the power
-signal changes shown on the console to be out of order with respect to the other
-EC messages.
-
-The power signal changes include a timestamp to help you correlate when the
-actual power signal changed compared to other messages. From the example above,
-the first power signal change recorded is the `DSW_PWROK` signal transitioning
-from 0 to 1, and this is recorded at timestamp `6.807298`. Using the regular EC
-console timestamp, you can reconstruct the real power sequence to look like the
-following:
-
-```
-> powerb
-Simulating 200 ms power button press.
-[6.790816 power button pressed]
-[6.791133 PB pressed]
-[6.791410 PB task 1 = pressed]
-[6.791755 PB PCH pwrbtn=LOW]
-[6.792049 PB task 10 = was-off, wait 199362]
-RTC: 0x000067bc (26556.00 s)
-[6.792786 power state 5 = G3->S5, in 0x0000]
-[6.793190 Set EN_PP3300_A: 1]
-[6.793905 SW 0x03]
- 6.807298 +0.000000 DSW_PWROK => 1 // Manually re-ordered entry
-[6.817627 Set PCH_DSW_PWROK: 1]
-[6.818007 Pass thru GPIO_DSW_PWROK: 1]
-[6.818351 Set EN_PP5000_A: 1]
-RTC: 0x000067bc (26556.00 s)
- 6.903417 +0.096119 SLP_SUS_L => 1 // Manually re-ordered entry
-[6.903830 power state 1 = S5, in 0x0029]
- 6.908471 +0.005054 PG_EC_RSMRST_ODL => 1 // Manually re-ordered entry
-[6.918735 Pass through GPIO_RSMRST_L_PGOOD: 1]
-i2c 7 recovery! error code is 13, current state is 0
-Simulating power button release.
-> [6.991576 power button released]
-[6.992009 PB task 10 = was-off]
-[6.992376 PB released]
-[6.992635 PB task 6 = released]
-[6.992958 PB PCH pwrbtn=HIGH]
-[6.993256 PB task 0 = idle, wait -1]
-[6.993806 PB released]
-[6.994149 PB task 6 = released]
-[6.994512 PB PCH pwrbtn=HIGH]
-[6.994812 PB task 0 = idle, wait -1]
-[6.995768 SW 0x01]
-1 signal changes:
- 7.909941 +0.000000 SLP_S0_L => 1
-[9.026429 Fan 0 stalled!]
-RTC: 0x000067bf (26559.00 s)
-[9.124643 power state 6 = S5->S3, in 0x003f]
-i2c 3 recovery! error code is 13, current state is 0
-[9.126543 mux config:2, port:1, res:1]
-[9.127109 PD:S5->S3]
-RTC: 0x000067bf (26559.00 s)
-[9.127985 power state 2 = S3, in 0x003f]
-RTC: 0x000067bf (26559.00 s)
-[9.128640 power state 7 = S3->S0, in 0x003f]
-```
-
-*TODO ([b/147808790](http://issuetracker.google.com/147808790)) Add
-documentation specific to each x86 processor type.*
-
-[config.h]: ../new_board_checklist.md#config_h
diff --git a/docs/configuration/cbi.md b/docs/configuration/cbi.md
deleted file mode 100644
index f89ee78454..0000000000
--- a/docs/configuration/cbi.md
+++ /dev/null
@@ -1,39 +0,0 @@
-# Configure CrOS Board Information (CBI)
-
-If your board includes an EEPROM to store [CBI], then this feature must be
-enabled and configured. Note that the [I2C buses] must be configured and working
-before enabling CBI.
-
-## Config options
-
-Add the following config options to `baseboard.h` or `board.h`.
-
-- `CONFIG_BOARD_VERSION_CBI`
-- `CONFIG_CBI_EEPROM`
-
-## Feature Parameters
-
-- `I2C_ADDR_EEPROM_FLAGS <7-bit addr>` - Defines the 7-bit slave address for
- the EEPROM containing CBI.
-
-## GPIOs and Alternate Pins
-
-None needed - the I2C pins should be configured automatically when initializing
-the I2C buses.
-
-## Data Structures
-
-None required by this feature.
-
-## Tasks
-
-None required by this feature.
-
-## Testing and Debugging
-
-Refer to the [I2C debugging information] to verify communication with the CBI
-EEPROM.
-
-[CBI]: https://chromium.googlesource.com/chromiumos/docs/+/HEAD/design_docs/cros_board_info.md
-[I2C buses]: ./i2c.md
-[I2C debugging information]: ./i2c.md#
diff --git a/docs/configuration/config_ap_to_ec_comm.md b/docs/configuration/config_ap_to_ec_comm.md
deleted file mode 100644
index 24b309feb7..0000000000
--- a/docs/configuration/config_ap_to_ec_comm.md
+++ /dev/null
@@ -1,73 +0,0 @@
-# Configure AP to EC Communication
-
-This document provides details on how to configure the AP to EC communication
-channel used on your board. The [AP to EC Communication] document provides
-details a system level of the operation of this feature.
-
-## Config options
-
-Configure the AP to EC communication channel, picking exactly one of the
-following options.
-
-- `CONFIG_HOSTCMD_SHI` - [SPI Host Interface](../ec_terms.md#shi) (SHI)
-- `CONFIG_HOSTCMD_HECI` - HECI interface
-- `CONFIG_HOSTCMD_LPC` - [LPC](../ec_terms.md#lpc) bus
-- `CONFIG_HOSTCMD_ESPI` - [eSPI](../ec_terms.md#espi) bus
-
-In [config.h], search for options that start with the same name as your selected
-communication interface. Override defaults as needed.
-
-## Feature Parameters
-
-None needed in this section.
-
-## GPIOs and Alternate Pins
-
-The EC code requires the following signals between the AP and the EC to be
-defined by each board variant.
-
-- `GPIO_ENTERING_RW` - Output from the EC, active high signal indicates when
- the EC code transitions from RO to RW code.
-
- ```c
- GPIO(EC_ENTERING_RW, PIN(E, 3), GPIO_OUT_LOW)
- ```
-
-- `GPIO_SYS_RESET_L` - Output from the EC, active low signal used to put the
- AP into reset.
-
- ```c
- GPIO(SYS_RST_ODL, PIN(C, 5), GPIO_ODR_HIGH)
- ```
-
-Create `ALTERNATE()` entries for all EC signals used for AP communication. This
-step can be skipped for any pins that default to communication channel
-functionality.
-
-See the [GPIO](./gpio.md) documentation for additional details on the GPIO
-macros.
-
-## Data structures
-
-None needed in this section.
-
-## Tasks
-
-The `HOSTCMD` task is responsible for processing commands sent by the AP and is
-always required. The typical priority is higher than the `CHIPSET` task, but
-lower than the `CONSOLE` task.
-
-```c
- TASK_ALWAYS(HOSTCMD, host_command_task, NULL, LARGER_TASK_STACK_SIZE, 0) \
-```
-
-## Testing and Debugging
-
-For Nuvoton EC chipsets, the file [./chip/npcx/registers.h] provides a
-collection of `DEBUG_*` macros that can be used to enable extra console messages
-related to a specific interface. For AP to EC communication, the `DEBUG_LPC` and
-`DEBUG_ESPI` macros can help troubleshoot communication issues.
-
-[./chip/npcx/registers.h]: ../../chip/npcx/registers.h
-[AP to EC Communication]: ../ap-ec-comm.md
-[config.h]: ../new_board_checklist.md#config_h
diff --git a/docs/configuration/ec_chipset.md b/docs/configuration/ec_chipset.md
deleted file mode 100644
index defc27eec8..0000000000
--- a/docs/configuration/ec_chipset.md
+++ /dev/null
@@ -1,116 +0,0 @@
-# Configure EC Chipset
-
-## Config options
-
-The EC chipset is selected using board specific make file [build.mk]. The
-following configuration options specify the type and size of flash memory used
-by the EC.
-
-- `CONFIG_SPI_FLASH_REGS` - Should always be defined when using internal or
- external SPI flash.
-- `CONFIG_SPI_FLASH` - Define only if your board uses an external flash.
-- `CONFIG_SPI_FLASH_<device_type>` - Select exactly one the supported flash
- devices to compile in the required driver. This is needed even when using
- the internal SPI flash of the EC chipset.
-- Additional EC Chipset options are prefixed with `CONFIG_HIBERNATE*` and
- should be evaluated for relevance on your board.
-
-## Feature Parameters
-
-- `CONFIG_FLASH_SIZE_BYTES <bytes>` - Set to the size of the internal flash of
- the EC. Must be defined to link the final image.
-- `CONFIG_SPI_FLASH_PORT <port>` - Only used if your board as an external
- flash.
-
-## GPIOs and Alternate Pins
-
-Configure the signals which will wakeup the EC from hibernate or deep sleep.
-Typical wakeup sources include:
-
-- `GPIO_LID_OPEN` - An active high signal that indicates the lid has been
- opened. The source of the signal is typically from a
- [GMR](../ec_terms.md#gmr) or Hall-Effect sensor. The `GPIO_INT()` entry for
- this signal should be connected to the `lid_interrupt()` routine.
-- `GPIO_AC_PRESENT` - A signal from the battery charger that indicates the
- device is connected to AC power. This signal is connected to the
- `power_interrupt()` routine.
-- `GPIO_POWER_BUTTON_L` - An active low signal from the power switch. This
- signal is connected to the `power_button_interrupt()` routine.
-- `GPIO_EC_RST_ODL` - On some Nuvoton EC chipsets, the reset signal is
- dual-routed to both a dedicated reset pin and a GPIO. In this case, no
- interrupt handler needs to be registered to the GPIO signal, but the GPIO
- pin must still be configured to wake on both edge types. The GPIO pin should
- also be locked prevent the pin configuration from changing after the EC
- read-only code runs.
-
-See the [GPIO](./gpio.md) documentation for additional details on the GPIO
-macros.
-
-## Data structures
-
-- `const enum gpio_signal hibernate_wake_pins[]` - add all GPIO signals that
- should trigger a wakeup of the EC.
-- `const int hibernate_wake_pins_used = ARRAY_SIZE(hibernate_wake_pins);` -
- configures the number of wake signals used on the board.
-
-All ChromeOS wake sources are documented on the ChromeOS partner site in the
-[Wake Sources and Battery Life] section. The EC specific wake sources are found
-under the Deep Sleep and Shipping states and include:
-
-- Power button
-- AC insert
-- Lid open
-
-## Tasks
-
-None required by this feature.
-
-## Testing and Debugging
-
-## Example
-
-For the Volteer reference board, the following wake sources are defined in
-[gpio.inc]. Note that configuration of `GPIO(EC_RST_ODL)` is located after all
-`GPIO_INT()` entries required by the board.
-
-```c
-/* Wake Source interrupts */
-GPIO_INT(EC_LID_OPEN, PIN(D, 2), GPIO_INT_BOTH | GPIO_HIB_WAKE_HIGH, lid_interrupt)
-GPIO_INT(EC_WP_L, PIN(A, 1), GPIO_INT_BOTH, switch_interrupt)
-GPIO_INT(H1_EC_PWR_BTN_ODL, PIN(0, 1), GPIO_INT_BOTH, power_button_interrupt)
-GPIO_INT(ACOK_OD, PIN(0, 0), GPIO_INT_BOTH | GPIO_HIB_WAKE_HIGH, extpower_interrupt)
-
-/* EC_RST_ODL - PSL input but must be locked */
-GPIO(EC_RST_ODL, PIN(0, 2), GPIO_INT_BOTH | GPIO_HIB_WAKE_HIGH | GPIO_LOCKED)
-```
-
-For the NPCx7 chipset, the alternate function must also be configured to connect
-the wakeup pins to the PSL (power switch logic).
-
-```c
-/* GPIOD2 = EC_LID_OPEN */
-ALTERNATE(PIN_MASK(D, BIT(2)), 0, MODULE_PMU, 0)
-/* GPIO00 = ACOK_OD,
- GPIO01 = H1_EC_PWR_BTN_ODL
- GPIO02 = EC_RST_ODL */
-ALTERNATE(PIN_MASK(0, BIT(0) | BIT(1) | BIT(2)), 0, MODULE_PMU, 0)
-```
-
-The final step is to add the hibernate signals array to Volteer [baseboard.c]
-file:
-
-```c
-/* Wake up pins */
-const enum gpio_signal hibernate_wake_pins[] = {
- GPIO_LID_OPEN,
- GPIO_ACOK_OD,
- GPIO_POWER_BUTTON_L,
- GPIO_EC_RST_ODL,
-};
-const int hibernate_wake_pins_used = ARRAY_SIZE(hibernate_wake_pins);
-```
-
-[gpio.inc]: ../../board/volteer/gpio.inc
-[baseboard.c]: ../../baseboard/volteer/baseboard.c
-[build.mk]: ../new_board_checklist.md#board_build_mk
-[Wake Sources and Battery Life]: https://chromeos.google.com/partner/dlm/docs/latest-requirements/chromebook.html#wake-sources-and-battery-life
diff --git a/docs/configuration/gpio.md b/docs/configuration/gpio.md
deleted file mode 100644
index f4a5c4719a..0000000000
--- a/docs/configuration/gpio.md
+++ /dev/null
@@ -1,160 +0,0 @@
-# GPIO Configuration
-
-GPIO setup is done for every board variant, but never for the baseboard, by
-configuring the file `./board/<board>/gpio.inc`. This file configures all the
-the pins on the EC chipset through the following macros.
-
-- `GPIO(<name>, ...)` - Configures simple GPIO input and outputs
-- `GPIO_INT(<name>, ...)` - Configures GPIO inputs that connect to an
- interrupt service routine. Historically these entries are defined first, but
- this no longer required.
-- `ALTERNATE(...)` - Configures a pin for an alternate function (e.g I2C, ADC,
- SPI, etc)
-- `UNIMPLEMENTED(<name>, ...)` - Creates a fake GPIO entry
-
-The `GPIO()`, `GPIO_INT()`, and `UNIMPLEMENTED()` macros create a C enumeration
-of the form `GPIO_<name>` that can be used in the code. As noted in
-[GPIO Naming](../new_board_checklist.md#GPIO-Naming), the `<name>` parameter
-should always match the schematic net name.
-
-## `GPIO()` macro
-
-### Prototype
-
-`GPIO(name, pin, flags)`
-
-- `name` - Defines the schematic net name, which is expanded to the
- enumeration `GPIO_name` by the macro.
-- `pin` - Use the `PIN(group,pin)` macro to define the GPIO group and pin
- number. Note that on a few EC chipsets, the PIN macro is just `PIN(pin)`.
-- `flags` - Define attributes of the pin (direction, pullup/pulldown, open
- drain, voltage level, etc). All supported flags are found following the
- `GPIO_FLAG_NONE` definition in [./include/gpio.h](../../include/gpio.h).
-
-### Example
-
-![GPIO Example]
-
-```c
-GPIO(EC_ENTERING_RW, PIN(E, 3), GPIO_OUT_LOW)
-```
-
-The EC common code requires the enum `GPIO_ENTERING_RW` to be defined, so you
-should also map the net name to the EC name in the `board.h` file.
-
-```c
-#define GPIO_ENTERING_RW GPIO_EC_ENTERING_RW
-```
-
-## `GPIO_INT()` macro
-
-### Prototype
-
-`GPIO_INT(name, pin, flags, signal)`
-
-- `name` - Defines the schematic net name, which is expanded to the
- enumeration `GPIO_name` by the macro.
-- `pin` - Same definition as `GPIO()` macro.
-- `flags` - Same definition as `GPIO()` macro. Should always have one of the
- `GPIO_INT_*` flags set.
-- `signal` - Interrupt service routine called when the pin asserts according
- to the flags set.
-
-### Example
-
-![GPIO_INT Example]
-
-```c
-GPIO_INT(EC_LID_OPEN, PIN(D, 2), GPIO_INT_BOTH | GPIO_HIB_WAKE_HIGH, lid_interrupt)
-```
-
-The EC common code requires the enum `GPIO_LID_OPEN` to be defined, so you als
-need to map the net name to the EC name in the `board.h` file.
-
-```c
-#define GPIO_LID_OPEN GPIO_EC_LID_OPEN
-```
-
-## `ALTERNATE()` macro
-
-### Prototype
-
-`ALTERNATE(pinmask, function, module, flags)`
-
-- `pinmask` - Defines a set of pins in the same GPIO group to assign to a
- different function.
-- `function` - A chip-specific function number. Only used if the EC chipset
- provides multiple alternate functions in addition to GPIO (e.g. pin can be
- UART, I2C, SPI, or GPIO). The permitted values for this parameter vary based
- on the EC chipset type.
- - STM32 - 0 to 7
- - Maxim - 1 to 3
- - Microchip - 0 to 3
- - MediaTek - 0 to 7
- - All others (Nuvton, ITE, TI Stellaris, ) only support one alternate
- function per pin, so this parameter should be set to 0.
-- `module` - One of the enum module_id values defined in
- [./include/module_id.h](../../include/module_id.h).
-- `flags` - Same definition as `GPIO()` macro.
-
-### Notes
-
-At runtime there are two mechanisms for switching a pin between GPIO mode and
-alternate function mode.
-
-- `gpio_config_module(enum module_id id, int enable)` - Configures all pins
- matching the module enumeration `id`.
-- `gpio_config_pin(enum module_id id, enum gpio_signal signal, int enable)` -
- Configures a single pin matching the GPIO enumeration `signal`.
-
-For both routines, if `enable` is 1, then the corresponding pins are configured
-for alternate mode operation. If `enable` is 0, then the corresponding pins are
-configure for GPIO mode.
-
-`gpio_config_module()` is automatically called at runtime for all enabled
-interfaces (I2C, SPI, UART, etc). You can use `gpio_config_pin()` to temporarily
-configure a pin for GPIO operation, and to restore the original alternate
-function. The I2C bus error recovery employs this mechanism to temporarily
-driver the I2C SCL and SDA signals to known states, without interference by the
-I2C controller in the EC chipset.
-
-The general recipe for overriding alternate functions is shown below.
-
-```c
- /* Disconnect I2C1_SDA pin from I2C controller */
- gpio_config_pin(MODULE_I2C, GPIO_I2C1_SDA, 0);
-
- /* Setup I2C1_SDA as an GPIO open drain output and drive initial state low */
- gpio_set_flags(GPIO_I2C1_SDA, GPIO_ODR_LOW);
-
- /* Set GPIO high (or low) as required */
- gpio_set_level (GPIO_I2C1_SDA, 1);
-
- /* Restore I2C1_SDA pin to I2C function */'
- gpio_config_pin(MODULE_I2C, GPIO_I2C1_SDA, 1);
-```
-
-### Example
-
-![ALTERNATE Example]
-
-```c
-ALTERNATE(PIN_MASK(B, BIT(4) | BIT(5)), 0, MODULE_I2C, (GPIO_INPUT | GPIO_SEL_1P8V))
-```
-
-<!-- Images -->
-
-<!-- If you make changes to the docs below make sure to regenerate the PNGs by
- appending "export/png" to the Google Drive link. -->
-
-<!-- https://docs.google.com/drawings/d/18cWTYQRRCpypYDOLlvKQJTObwcj6wOjUga02B0oZXBg -->
-
-[GPIO Example]: ../images/gpio_example.png
-
-<!-- https://docs.google.com/drawings/d/1X6p5XfB6BBmUUKCrwOg56Bz6LZj9P_WPQXsOdk-OIiI -->
-
-[GPIO_INT Example]: ../images/gpio_int_example.png
-
-<!-- https://docs.google.com/drawings/d/1-kroVezQuA_KdQLzqYPs8u94EBg37z3k6lKzkSLRv-0 -->
-
-[ALTERNATE Example]: ../images/alternate_example.png
diff --git a/docs/configuration/i2c.md b/docs/configuration/i2c.md
deleted file mode 100644
index 36464bb371..0000000000
--- a/docs/configuration/i2c.md
+++ /dev/null
@@ -1,203 +0,0 @@
-# Configure I2C Buses
-
-## Config options
-
-The I2C options are prefixed with `CONFIG_I2C*`. Evaluate whether each option is
-appropriate to add to your board.
-
-A typical EC and board should at a minimum set `CONFIG_I2C` and
-`CONFIG_I2C_CONTROLLER`.
-
-## Feature Parameters
-
-The following parameters control the behavior of the I2C library. [config.h]
-defines a reasonable default value, but you may need to change the default value
-for your board.
-
-- `CONFIG_I2C_CHIP_MAX_TRANSFER_SIZE <bytes>`
-- `CONFIG_I2C_NACK_RETRY_COUNT <count>`
-- `CONFIG_I2C_EXTRA_PACKET_SIZE <bytes>` - Only used on STM32 EC's if
- `CONFIG_HOSTCMD_I2C_ADDR_FLAGS` is defined.
-
-## GPIOs and Alternate Pins
-
-In the gpio.inc file, you need to define a GPIO for the clock (SCL) and data
-(SDA) pin used on each active I2C bus. The corresponding GPIOs are then included
-in the `i2c_ports[]` array. This permits the I2C library to perform common bus
-recovery actions using bit-banging without involvement by the EC-specific I2C
-device driver.
-
-You also need to define the alternate function assignment for all I2C pins using
-the `ALTERNATE()` macro. This step can be skipped for any pins that default to
-I2C functionality.
-
-Note that many I2C buses only support 1.8V operation. This is determined by I2C
-devices connected to the bus. In this case you need to include `GPIO_SEL_1P8V`
-as part of the `flags` field in both the `GPIO()` and `ALTERNATE()` macros. I2C
-bus 0 in the example below demonstrates configuring the SCL and SDA pins for
-1.8V operation.
-
-See the [GPIO](./gpio.md) documentation for additional details on the GPIO
-macros.
-
-## Data Structures
-
-- `const struct i2c_port_t i2c_ports[]` - This array should be defined in your
- baseboard.c or board.c file. This array defines the mapping of internal I2C
- port numbers used by the I2C library to the physical I2C ports connected to
- the EC.
-- `const unsigned int i2c_port_used = ARRAY_SIZE(i2c_ports)` - Defines the
- number of internal I2C ports accessible by the I2C library.
-
-## Tasks
-
-None required by this feature.
-
-## Testing and Debugging
-
-### Console Commands
-
-- `i2cscan` - Provides a quick look of all I2C devices found on all configured
- buses.
-- `i2cxfer` - Allows you to read and write individual registers on an I2C
- device.
-
-For runtime troubleshooting of an I2C device, enable and the
-[I2C tracing](../i2c-debugging.md) module to log all I2C transactions initiated
-by the EC code.
-
-## Example
-
-The image below shows the I2C bus assignment for the Volteer reference board.
-
-![I2C Example]
-
-The `gpio.inc` file for Volteer defines both `GPIO()` and `ALTERNATE()` entries
-for all I2C buses used in the design.
-
-```c
-/* I2C pins - Alternate function below configures I2C module on these pins */
-GPIO(EC_I2C0_SENSOR_SCL, PIN(B, 5), GPIO_INPUT | GPIO_SEL_1P8V)
-GPIO(EC_I2C0_SENSOR_SDA, PIN(B, 4), GPIO_INPUT | GPIO_SEL_1P8V)
-GPIO(EC_I2C1_USB_C0_SCL, PIN(9, 0), GPIO_INPUT)
-GPIO(EC_I2C1_USB_C0_SDA, PIN(8, 7), GPIO_INPUT)
-GPIO(EC_I2C2_USB_C1_SCL, PIN(9, 2), GPIO_INPUT)
-GPIO(EC_I2C2_USB_C1_SDA, PIN(9, 1), GPIO_INPUT)
-GPIO(EC_I2C3_USB_1_MIX_SCL, PIN(D, 1), GPIO_INPUT)
-GPIO(EC_I2C3_USB_1_MIX_SDA, PIN(D, 0), GPIO_INPUT)
-GPIO(EC_I2C5_POWER_SCL, PIN(3, 3), GPIO_INPUT)
-GPIO(EC_I2C5_POWER_SDA, PIN(3, 6), GPIO_INPUT)
-GPIO(EC_I2C7_EEPROM_SCL, PIN(B, 3), GPIO_INPUT)
-GPIO(EC_I2C7_EEPROM_SDA, PIN(B, 2), GPIO_INPUT)
-
-/* Alternate functions GPIO definitions */
-ALTERNATE(PIN_MASK(B, BIT(5) | BIT(4)), 0, MODULE_I2C, (GPIO_INPUT | GPIO_SEL_1P8V)) /* I2C0 */
-ALTERNATE(PIN_MASK(9, BIT(0) | BIT(2) | BIT(1)), 0, MODULE_I2C, 0) /* I2C1 SCL / I2C2 */
-ALTERNATE(PIN_MASK(8, BIT(7)), 0, MODULE_I2C, 0) /* I2C1 SDA */
-ALTERNATE(PIN_MASK(D, BIT(1) | BIT(0)), 0, MODULE_I2C, 0) /* I2C3 */
-ALTERNATE(PIN_MASK(3, BIT(3) | BIT(6)), 0, MODULE_I2C, 0) /* I2C5 */
-ALTERNATE(PIN_MASK(B, BIT(3) | BIT(2)), 0, MODULE_I2C, 0) /* I2C7 */
-```
-
-The `i2c_ports[]` array requires the `.port` field to be assigned to an EC
-chipset specific enumeration. For the NPCx7 I2C bus names are defined in
-[./chip/npcx/registers.h]. The Volteer `baseboard.h` file creates a mapping from
-the schematic net name to the NPCx7 I2C bus enumeration.
-
-```c
-#define CONFIG_I2C
-#define I2C_PORT_SENSOR NPCX_I2C_PORT0_0
-#define I2C_PORT_USB_C0 NPCX_I2C_PORT1_0
-#define I2C_PORT_USB_C1 NPCX_I2C_PORT2_0
-#define I2C_PORT_USB_1_MIX NPCX_I2C_PORT3_0
-#define I2C_PORT_POWER NPCX_I2C_PORT5_0
-#define I2C_PORT_EEPROM NPCX_I2C_PORT7_0
-```
-
-The last piece for I2C configuration is to create the `i2c_ports[]` array using
-the macros and enumerations added to `baseboard.h` and `gpio.inc`.
-
-```c
-/* I2C port map configuration */
-const struct i2c_port_t i2c_ports[] = {
- {
- .name = "sensor",
- .port = I2C_PORT_SENSOR,
- .kbps = 400,
- .scl = GPIO_EC_I2C0_SENSOR_SCL,
- .sda = GPIO_EC_I2C0_SENSOR_SDA,
- .flags = 0,
- },
- {
- .name = "usb_c0",
- .port = I2C_PORT_USB_C0,
- /*
- * I2C buses used for PD communication must be set for 400 kbps
- * or greater. Set to the maximum speed supported by all devices.
- */
- .kbps = 1000,
- .scl = GPIO_EC_I2C1_USB_C0_SCL,
- .sda = GPIO_EC_I2C1_USB_C0_SDA,
- },
- {
- .name = "usb_c1",
- .port = I2C_PORT_USB_C1,
- /*
- * I2C buses used for PD communication must be set for 400 kbps
- * or greater. Set to the maximum speed supported by all devices.
- */
- .scl = GPIO_EC_I2C2_USB_C1_SCL,
- .sda = GPIO_EC_I2C2_USB_C1_SDA,
- },
- {
- .name = "usb_1_mix",
- .port = I2C_PORT_USB_1_MIX,
- .kbps = 100,
- .scl = GPIO_EC_I2C3_USB_1_MIX_SCL,
- .sda = GPIO_EC_I2C3_USB_1_MIX_SDA,
- },
- {
- .name = "power",
- .port = I2C_PORT_POWER,
- .kbps = 100,
- .scl = GPIO_EC_I2C5_POWER_SCL,
- .sda = GPIO_EC_I2C5_POWER_SDA,
- },
- {
- .name = "eeprom",
- .port = I2C_PORT_EEPROM,
- .kbps = 400,
- .scl = GPIO_EC_I2C7_EEPROM_SCL,
- .sda = GPIO_EC_I2C7_EEPROM_SDA,
- },
-};
-const unsigned int i2c_ports_used = ARRAY_SIZE(i2c_ports);
-```
-
-The `.flags` field is optional when using the default I2C bus setup. See
-[./include/i2c.h] for the full list of supported flags.
-
-The flag `I2C_PORT_FLAG_DYNAMIC_SPEED` allows the I2C bus frequency to be
-changed at runtime. The typical use case is to set the I2C bus frequency to
-different speeds based on the BOARD_VERSION in [CBI]. For example board version
-1 supports 100 kbps operation but board version 2 and greater supports 400 kbps
-operation. `I2C_PORT_FLAG_DYNAMIC_SPEED` is not used to change the I2C bus
-frequency on the fly depending on the addressed slave device.
-
-An example of changing the I2C bus frequency from the
-[Kodama board](../../board/kodama/board.c) is shown below.
-
-```c
-static void board_i2c_init(void)
-{
- if (board_get_version() < 2)
- i2c_set_freq(1, I2C_FREQ_100KHZ);
-}
-DECLARE_HOOK(HOOK_INIT, board_i2c_init, HOOK_PRIO_INIT_I2C);
-```
-
-[config.h]: ../new_board_checklist.md#config_h
-[./chip/npcx/registers.h]: ../../chip/npcx/registers.h
-[./include/i2c.h]: ../../include/i2c.h
-[I2C Example]: ../images/i2c_example.png
-[CBI]: https://chromium.googlesource.com/chromiumos/docs/+/HEAD/design_docs/cros_board_info.md
diff --git a/docs/configuration/keyboard.md b/docs/configuration/keyboard.md
deleted file mode 100644
index 8398fefbde..0000000000
--- a/docs/configuration/keyboard.md
+++ /dev/null
@@ -1,87 +0,0 @@
-## Configure Keyboard
-
-## Config options
-
-Keyboard options start with `CONFIG_KEYBOARD*`. Evaluate whether each option is
-appropriate to add to `baseboard.h` or `board.h`.
-
-Your board should select only one of these options to configure the protocol
-used to send keyboard events to the AP.
-
-- `CONFIG_KEYBOARD_PROTOCOL_8042` - Systems with an x86 AP use the 8042
- protocol.
-- `CONFIG_KEYBOARD_PROTOCOL_MKBP` - Systems without an x86 AP (e.g. ARM)
- typically use the MKBP protocol.
-
-## Feature Parameters
-
-- `CONFIG_KEYBOARD_KSO_BASE <pin>` - Evaluate whether this parameter is
- required by your board.
-
-## GPIOs and Alternate Pins
-
-Define `ALTERNATE()` pin entries for all keyboard matrix signals, to connect the
-signals to the keyboard controller of the EC chipset.
-
-Note that KSO_02 is purposely not configured for for alternate mode. See the
-[H1 Special Requirements](#H1-Special-Requirements) below for details.
-
-```c
-/* Example Keyboard pin setup */
-#define GPIO_KB_INPUT (GPIO_INPUT | GPIO_PULL_UP)
-ALTERNATE(PIN_MASK(3, 0x03), 0, MODULE_KEYBOARD_SCAN, GPIO_KB_INPUT) /* KSI_00-01 */
-ALTERNATE(PIN_MASK(2, 0xFC), 0, MODULE_KEYBOARD_SCAN, GPIO_KB_INPUT) /* KSI_02-07 */
-ALTERNATE(PIN_MASK(2, 0x03), 0, MODULE_KEYBOARD_SCAN, GPIO_ODR_HIGH) /* KSO_00-01 */
-ALTERNATE(PIN_MASK(1, 0x7F), 0, MODULE_KEYBOARD_SCAN, GPIO_ODR_HIGH) /* KSO_03-09 */
-ALTERNATE(PIN_MASK(0, 0xF0), 0, MODULE_KEYBOARD_SCAN, GPIO_ODR_HIGH) /* KSO_10-13 */
-ALTERNATE(PIN_MASK(8, 0x04), 0, MODULE_KEYBOARD_SCAN, GPIO_ODR_HIGH) /* KSO_14 */
-```
-
-See the [GPIO](./gpio.md) documentation for additional details on the GPIO
-macros.
-
-## Data structures
-
-- `struct keyboard_scan_config keyscan_config` - This can be used to customize
- the keyboard scanner (e.g. scan frequency, debounce duration, etc.).
-
-## Tasks
-
-The `KEYSCAN` task monitors the keyboard matrix for new key presses and is
-required by this feature. The priority is set as one of the highest priority
-tasks in the system, typically only below the `PD_Cn` and `PD_INT_Cn` tasks.
-
-```c
- TASK_NOTEST(KEYSCAN, keyboard_scan_task, NULL, TASK_STACK_SIZE) \
-```
-
-The `KEYPROTO` task handles sending and receiving 8042 protocol messages from
-the AP and is required when `CONFIG_KEYBOARD_PROTOCOL_8042` is used. The typical
-priority is lower than the `HOSTCMD` task.
-
-```c
- TASK_NOTEST(KEYPROTO, keyboard_protocol_task, NULL, TASK_STACK_SIZE) \
-```
-
-## Additional Notes
-
-- If you're including keyboard support, you should also define
- `CONFIG_CMD_KEYBOARD` to enable keyboard debug commands from the EC console.
-- `CONFIG_KEYBOARD_PROTOCOL_MKBP` automatically enables `CONFIG_MKBP_EVENT`.
-- Boards that enable `CONFIG_KEYBOARD_PROTOCOL_8042` will often also define
- `CONFIG_MKBP_EVENT` for sensor events. In this case only motion sensor data
- is reported using the MKBP protocol, keyboard events are provided using the
- 8042 protocol. Refer to [Configuring Sensors](./motion_sensors.md) for more
- information.
-
-### H1 Special Requirements
-
-On Boards that use the H1 secure microcontroller, one KSI (keyboard scan input)
-signal and one KSO (keyboard scan output) signal are routed through the H1
-microcontroller. There are additional GPIO and configuration options that must
-be enabled in this case. - The KSO_02/COL2 signal is always inverted. Explicitly
-configure the GPIO to default low. `c GPIO(KBD_KSO2, PIN(1, 7), GPIO_OUT_LOW) /*
-KSO_02 inverted */` - Add the define `CONFIG_KEYBOARD_COL2_INVERTED` to
-`baseboard.h` or `board.h`. - If required by the board, define one of the
-following options to configure the KSI pin routed to the H1 microcontroller. -
-`CONFIG_KEYBOARD_PWRBTN_ASSERTS_KSI2` - `CONFIG_KEYBOARD_PWRBTN_ASSERTS_KSI3`
diff --git a/docs/configuration/leds.md b/docs/configuration/leds.md
deleted file mode 100644
index c4fe7894af..0000000000
--- a/docs/configuration/leds.md
+++ /dev/null
@@ -1,88 +0,0 @@
-# Configure LEDs
-
-LEDs provide status about the following:
-
-- Dedicated battery state/charging state
-- Chromebook power
-- Adapter power
-- Left side USB-C port (battery state/charging state)
-- Right side USB-C port (battery state/charging state)
-- Recovery mode
-- Debug mode
-
-LEDs can be configured as simple GPIOs, with on/off control only, or as PWM with
-adjustment brightness and color.
-
-## Config options
-
-In [config.h], search for options that start with `CONFIG_LED*` and evaluate
-whether each option is appropriate to add to `baseboard.h` or `board.h`.
-
-- `CONFIG_LED_COMMON` - Should be defined for both GPIO and PWM style LEDs.
-- `CONFIG_LED_ONOFF_STATES` - used for GPIO controlled LEDs
-- `CONFIG_LED_PWM` - used for PWM controlled LEDs. You must also define
- `CONFIG_PWM` when using PWM controlled LEDs.
-
-## Feature Parameters
-
-- `CONFIG_LED_PWM_COUNT <count>` - Must be defined when using PWM LEDs
-
-Override the following parameters when using PWM LEDs if you don't want to use
-the recommended LED color settings. - `CONFIG_LED_PWM_CHARGE_COLOR
-<ec_led_color>` - `CONFIG_LED_PWM_NEAR_FULL_COLOR <ec_led_color>` -
-`CONFIG_LED_PWM_CHARGE_ERROR_COLOR <ec_led_color>` -
-`CONFIG_LED_PWM_SOC_ON_COLOR <ec_led_color>` - `CONFIG_LED_PWM_SOC_SUSPEND_COLOR
-<ec_led_color>` - `CONFIG_LED_PWM_LOW_BATT_COLOR <ec_led_color>`
-
-## GPIOs and Alternate Pins
-
-For GPIO based LEDs, create `GPIO()` entries for all signals that connect to
-platform LEDs. The default state of the pins should be set so that the LED is
-off (typically high output).
-
-For PWM LEDs, configure the `ALTERNATE()` macro, setting the module type to
-`MODULE_PWM`.
-
-## Data structures
-
-For GPIO based LEDs: - `struct led_descriptor
-led_bat_state_table[LED_NUM_STATES][LED_NUM_PHASES]` - Must be defined when
-`CONFIG_LED_ONOFF_STATES` is used. Defines the LED states for the platform for
-various charging states.
-
-For PWM based LEDs: - `const enum ec_led_id supported_led_ids[]` - Defines the
-LED type for all PWM LEDs in the system. See [./include/ec_commands.h] for a
-description of the supported LED types. - `struct pwm_led led_color_map[]` -
-Defines the PWM intensity of the individual LEDs to generate the corresponding
-color. This table allows for custom tuning of the LED brightness and color. -
-`const struct pwm_channels[]` - Configures the PWM module, refer to the
-[Configuring PWM](./pwm.md) section for details.
-
-See the [GPIO](./gpio.md) documentation for additional details on the GPIO
-macros.
-
-## Tasks
-
-None required by this feature.
-
-## Testing and Debugging
-
-### Console Commands
-
-- `pwmduty` - *TODO* add description.
-- `gpioset` - For GPIO based LEDs, this command lets you directly change the
- state of the LED.
-- `gpioget` - For GPIO based LEDs, this reads current state of the pin. If the
- current state does not track changes made with `gpioset`, check your board
- for stuck at high or stuck at low condition.
-
-If you're having problems with a PWM LED, try reconfiguring the pin as a GPIO to
-verify the board operation independent of the PWM module.
-
-## LED Driver Chips
-
-LED driver chips are used to control the LCD panel backlight. The backlight
-control is separate from the platform LEDs.
-
-[config.h]: ../new_board_checklist.md#config_h
-[./include/ec_commands.h]: ../../include/ec_commands.h
diff --git a/docs/configuration/motion_sensors.md b/docs/configuration/motion_sensors.md
deleted file mode 100644
index 6e84fc3307..0000000000
--- a/docs/configuration/motion_sensors.md
+++ /dev/null
@@ -1,50 +0,0 @@
-# Configure Motion Sensors
-
-EC sensors are used for the following capabilities:
-
-- Accelerometers in base and lid measure lid angle to toggle between laptop
- and tablet modes.
-- Ambient light sensors control display backlight level.
-- All sensor types, including gyroscope, e-compass, and pressure, are used by
- Android apps.
-- Special sync sensor type, synchronizes sensor events with AP.
-
-*TODO* - there is good content available in the most recent [Chrome EC] overview
-presentation that can be added here.
-
-## Config options
-
-*TODO*
-
-## Feature Parameters
-
-*TODO*
-
-## GPIOs and Alternate Pins
-
-*TODO*
-
-- `GPIO_EC_INT_L` - Output from the EC, driven low to indicate an event on the
- EC is ready for servicing by the AP.
-
-## Data Structures
-
-*TODO*
-
-## Tasks
-
-*TODO*
-
-## Testing and Debugging
-
-*TODO*
-
-### Console Commands
-
-*TODO*
-
-## Example
-
-*TODO*
-
-[Chrome EC]: https://docs.google.com/presentation/d/1Y3PwNSnCQoCqDfL5rYqfaBP_ZqbMOTw_x83_ry4cro8/view#slide=id.g63bdbcea4b_0_27
diff --git a/docs/configuration/template.md b/docs/configuration/template.md
deleted file mode 100644
index be4d2378a5..0000000000
--- a/docs/configuration/template.md
+++ /dev/null
@@ -1,51 +0,0 @@
-# EC Feature Configuration Template
-
-*Short description of the EC feature and the capabilities provided*
-
-## Config options
-
-In [config.h], search for options that start with `CONFIG_<feature>*` and
-evaluate whether each option is appropriate to add to `baseboard.h` or
-`board.h`.
-
-*Note - Avoid documenting `CONFIG_` options in the markdown as `config.h`
-contains the authoritative definition.*
-
-## Feature Parameters
-
-*Detail `CONFIG_*` options that must be assigned to a value for this EC feature
-to compile and operate.*
-
-## GPIOs and Alternate Pins
-
-*Document any hard-coded GPIO enumeration names required by the EC feature.*
-
-*For pins that require an alternate function, note the module required by the EC
-feature.*
-
-## Data Structures
-
-*Document any data structures that must be defined in the board.c or baseboard.c
-files in order for the EC feature to compile and operate.*
-
-*Document any functions that must be implemented in the board.c and baseboard.c
-files.*
-
-## Tasks
-
-*Document any EC tasks that must be enabled by the feature.*
-
-## Testing and Debugging
-
-*Provide any tips for testing and debugging the EC feature.*
-
-### Console Commands
-
-*Document an EC console commands related to the feature.*
-
-## Example
-
-*Optional - provide code snippets from a working board to walk the user through
-all code that must be created to enable this feature.*
-
-[config.h]: ../new_board_checklist.md#config_h
diff --git a/docs/core_runtime.md b/docs/core_runtime.md
deleted file mode 100644
index 4a45136234..0000000000
--- a/docs/core_runtime.md
+++ /dev/null
@@ -1,329 +0,0 @@
-# Chromium OS Embedded Controller Runtime
-
-## Design Principles
-
-1. Never do at runtime what you can do at compile time The goal is saving flash
- space and computations. Compile-time configuration until you really need to
- switch at runtime.
-
-2. Real-time: guarantee low latency (eg < 20 us) no interrupt disabling ...
- bounded code in interrupt handlers.
-
-3. Keep it simple: design for the subset of microcontroller we use targeted at
- 32-bit single core CPU for small systems : 4kB to 64kB data RAM, possibly
- execute-in-place from flash.
-
-## Execution Contexts
-
-This is a pre-emptible runtime with static tasks. It has only 2 possible
-execution contexts:
-
-- the regular [tasks](#tasks)
-- the [interrupt handlers](#interrupts)
-
-The initial startup is an exception as described in the
-[dedicated paragraph](#startup).
-
-### Tasks
-
-The tasks are statically defined at compile-time. They are described for each
-*board* in the [board/$board/ec.tasklist](../board/host/ec.tasklist) file.
-
-They also have a static fixed priority implicitly defined at compile-time by
-their order in the [ec.tasklist](../board/host/ec.tasklist) file (the top-most
-one being the lowest priority aka *task* *1*). As a consequence, two different
-tasks cannot have the same priority.
-
-In order to store its context, each task has its own stack whose (*small*) size
-is defined at compile-time in the [ec.tasklist](../board/host/ec.tasklist) file.
-
-A task can normally be preempted at any time by either interrupts or higher
-priority tasks, see the [preemption section](#scheduling-and-preemption) for
-details and the [locking section](#locking-and-atomicity) for the few cases
-where you need to avoid it.
-
-### Interrupts
-
-The hardware interrupt requests are connected to the interruption handling *C*
-routines declared by the `DECLARE_IRQ` macros, through some chip/core specific
-mechanisms (e.g. depending on whether we have a vectored interrupt controller,
-slave interrupt controllers...)
-
-The interrupts can be nested (ie interrupted by a higher priority interrupt).
-All the interrupt vectors are assigned a priority as defined in their
-`DECLARE_IRQ` macro. The number of available priority level is
-architecture-specific (e.g. 4 on Cortex-M0, 8 on Cortex-M3/M4) and several
-interrupt handlers can have the same priority. An interrupt handler can only be
-interrupted by a handler having a priority **strictly** **greater** than its
-own.
-
-In most cases, the exceptions (e.g data/prefetch aborts, software interrupt) can
-be seen as interrupts with a priority strictly greater than all IRQ vectors. So
-they can interrupt any IRQ handler using the same nesting mechanism. All fatal
-exceptions should ultimately lead to a reboot.
-
-### Events
-
-Each task has a *pending* events bitmap[1] implemented as a 32-bit word. Several
-events are pre-defined for all tasks, the most significant bits on the 32-bit
-bitmap are reserved for them : the timer pending event on bit 31
-([see the corresponding section](#time)), the requested task wake (bit 29), the
-event to kick the waiters on a mutex (bit 30), along with a few hardware
-specific events. The 19 least significant bits are available for task-specific
-meanings.
-
-Those event bits are used in inter-task communication and scheduling mechanism,
-other tasks **and** interrupt handlers can atomically set them to request
-specific actions from the task. Therefore, the presence of pending events in a
-task bitmap has an impact on its scheduling as described in the
-[scheduling section](#scheduling-and-preemption). These requests are done using
-the `task_set_event()` and `task_wake()` primitives.
-
-The two typical use-cases are:
-
-- a task sends a message to another task (simply use some common memory
- structures [see explanation](#single-address-space) and want it to process
- it now.
-- a hardware IRQ occurred, and we need to do some long processing to respond
- to it (e.g. an I2C transaction). The associated interrupt handler cannot do
- it (for latency reason), so it will raise an event to ask a task to do it.
-
-The task code chooses to consume them (or a subset of them) when it's running
-through the `task_wait_event()` and `task_wait_event_mask()` primitives.
-
-### Scheduling and Preemption
-
-The system has a global bitmap[1] called `tasks_ready` containing one bit per
-task and indicating whether it is *ready* *to* *run* (ie want/need to be
-scheduled). The task ready bit can only be cleared when it's calling itself one
-of the functions explicitly triggering a re-scheduling (e.g. `task_wait_event()`
-or `task_set_event()`) **and** it has no pending event. The task ready bit is
-set by any task or interrupt handler setting an event bit for the task (ie
-`task_set_event()`).
-
-The scheduling is based on (and *only* on) the `tasks_ready` bitmap (which is
-derived from all the events bitmap of the tasks as explained above).
-
-Then, the scheduling policy to find which task should run is just finding the
-most significant bit set in the tasks_ready bitmap and schedule the
-corresponding task.
-
-Important note: the re-scheduling happens **only** when we are exiting the
-interrupt context. It is done in a non-preemptible context (likely with the
-highest priority). Indeed, a re-scheduling is actually needed only when the
-highest priority task ready has changed. There are 3 distinct cases where this
-can happen:
-
-- an interrupt handler sets a new event for a task. In this case,
- `task_set_event` will detect that it is executed in interrupt context and
- record in the `need_resched_or_profiling` variable that it might need to
- re-schedule at interrupt return. When the current interrupt is going to
- return, it will see this bit and decide to take the slow path making a new
- scheduling decision and eventually a context switch instead of the fast path
- returning to the interrupt task.
-- a task sets an event on another task. The runtime will trigger a software
- interrupt to force a re-scheduling at its exit.
-- the running task voluntarily relinquish its current execution rights by
- calling `task_wait_event()` or a similar function. This will call the
- software interrupt similarly to the previous case.
-
-On the re-scheduling path, if the highest-priority ready task is not matching
-the currently running one, it will perform a context-switch by saving all the
-processor registers on the current task stack, switch the stack pointer to the
-newly scheduled task, and restore the registers from the previously saved
-context from there.
-
-### Hooks and Deferred Functions
-
-The lowest priority task (ie Task 1, aka TASK_ID_HOOKS) is reserved to execute
-repetitive actions and future actions deferred in time without blocking the
-current task or creating a dedicated task (whose stack memory allocation would
-be wasting precious RAM).
-
-The HOOKS task has a list of deferred functions and their next deadline. Every
-time it is waken up, it runs through the list and calls the ones whose deadline
-is expired. Before going back to sleep, it arms a timer to the closest deadline.
-The deferred functions can be created using the `DECLARED_DEFERRED()` macro.
-Similarly, the HOOK_SECOND and HOOK_TICK hooks are called periodically by the
-HOOKS task loop (the *tick* duration is platform-defined and shorter than the
-second).
-
-Note: be specially careful about priority inversions when accessing resources
-protected by a mutex (e.g. a shared I2C controller) in a deferred function.
-Indeed being the lowest priority task, it might be de-scheduled for long time
-and starve higher priority tasks trying to access the resource given there is no
-priority boosting implemented for this case. Also, be careful about long delays
-(> x 100us) in hook or deferred function handlers, since those will starve other
-hooks of execution time. It is better to implement a state machine where you set
-up a subsequent call to a deferred function than have a long delay in your
-handler.
-
-### Watchdog
-
-The system is always protected against misbehaving tasks and interrupt handlers
-by a hardware watchdog rebooting the CPU when it is not attended.
-
-The watchdog is petted in the HOOKS task, typically by declaring a HOOK_TICK
-doing it as regular intervals. Given this is the lowest priority task, this
-guarantees that all tasks are getting some run time during the watchdog period.
-
-Note: that's also why one should not sprinkle its code with `watchdog_reload()`
-to paper over long-running routine issues.
-
-To help debug bad sequences triggering watchdog reboots, most platforms
-implement a warning mechanism defined under `CONFIG_WATCHDOG_HELP`. It's a timer
-firing at the middle of the watchdog period if it hasn't been petted by then,
-and dumping on the console the current state of the execution mainly to help
-find a stuck task or handler. The normal execution is resumed though after this
-alert.
-
-### Startup
-
-The startup sequence goes through the following steps:
-
-- the assembly entry routine clears the .bss (uninitialized data), copies the
- initialized data (and optionally the code if we are not executing from
- flash), sets a stack pointer.
-- we can jump to the `main()` C routine at this point.
-- then we go through the hardware pre-init (before we have all the clocks to
- run the peripherals normal) and init routines, in this rough order: memory
- protection if any, gpios in their default state, prepare the interrupt
- controller, set the clocks, then timers, enable interrupts, init the debug
- UART and the watchdog.
-- finally, start tasks.
-
-For the tasks startup, initially only the HOOKS task is marked as ready, so it
-is the first to start and can call all the HOOK_INIT handlers performing
-initializations before actually executing any real task code. Then all tasks are
-marked as ready, and the highest priority one is given the control.
-
-During all the startup sequence until the control is given the first task, we
-are using a special stack called 'system stack' which will be later re-used as
-the interrupts and exception stack.
-
-To prepare the first context switch, the code in `task_pre_init()` is stuffing
-all the tasks stacks with a *fake* saved context whose program counter contains
-the task start address, and the stack pointer is pointing to its reserved stack
-space.
-
-### Locking and Atomicity
-
-The two main concurrency primitives are lightweight atomic variables and heavier
-mutexes.
-
-The atomic variables are 32-bit integers (which can usually be loaded/stored
-atomically on the architecture we are supporting). The `atomic.h` headers
-include primitives to do atomically various bit and arithmetic operations using
-either load-linked/load-exclusive, store-conditional/store-exclusive or simple
-depending on what is available.
-
-The mutexes are actually statically allocated binary semaphores. In case of
-contention, they will make the waiting task sleep (removing its ready bit) and
-use the [event mechanism](#events) to wake-up the other waiters on unlocking.
-
-Note: the mutexes are NOT triggering any priority boosting to avoid the priority
-inversion phenomenon.
-
-Given the runtime is running on single core CPU, spinlocks would be equivalent
-to masking interrupts with `interrupt_disable()` spinlocks, but it's strongly
-discouraged to avoid harming the real-time characteristics of the runtime.
-
-## Time
-
-### Time Keeping
-
-In the runtime, the time is accounted everywhere using a **64-bit**
-**microsecond** count since the microcontroller **cold** **boot**.
-
-Note: The runtime has no notion of wall-time/date, even though a few platforms
-have an RTC inside the microcontroller.
-
-These microsecond timestamps are implemented in the code using the `timestamp_t`
-type, and the current timestamp is returned by the `get_time()` function.
-
-The time-keeping is preferably implemented using a 32-bit hardware free running
-counter at 1Mhz plus a 32-bit word in memory keeping track of the high word of
-the 64-bit absolute time. This word is incremented by the 32-bit timer rollback
-interrupt.
-
-Note: as a consequence of this implementation, when the 64-bit timestamp is read
-in interrupt context in a handler having a higher priority than the timer IRQ
-(which is somewhat rare), the high 32-bit word might be incoherent (off by one).
-
-### Timer Event
-
-The runtime offers *one* (and only one) timer per task. All the task timers are
-multiplexed on a single hardware timer. (can be just a *match* *interrupt* on
-the free running counter mentioned in the [previous paragraph](#time-keeping))
-Every time a timer is armed or expired, the runtime finds the task timer having
-the closest deadline and programs it in the hardware to get an interrupt. At the
-same time, it sets the TASK_EVENT_TIMER event in all tasks whose timer deadline
-has expired. The next deadline is computed in interrupt context.
-
-Note: given each task has a **single** timer which is also used to wake-up the
-task when `task_wait_event()` is called with a timeout, one needs to be careful
-when using directly the `timer_arm()` function because there is an eventuality
-that this timer is still running on the next `task_wait_event()` call, the call
-will fail due to the lack of available timer.
-
-## Memory
-
-### Single Address Space
-
-There is no memory isolation between tasks (ie they all live in the same address
-space). Some architectures implement memory protection mechanism albeit only to
-differentiate executable area (eg `.code`) from writable area (eg `.bss` or
-`.data`) as there is a **single** **privilege** level for all execution
-contexts.
-
-As all the memory is implicitly shared between the task, the inter-task
-communication can be done by simply writing the data structures in memory and
-using events to wake the other task (given we properly thought the concurrent
-accesses on those structures).
-
-### Heap
-
-The data structure should be statically allocated at compile time.
-
-Note: there is no dynamic allocator available (e.g. `malloc()`), not due to
-impossibility to create one but to avoid the negative side effects of having
-one: ie poor/unpredictable real-time behavior and possible leaks leading to a
-long-tail of failures.
-
-- TODO: talk about shared memory
-- TODO: where/how we store *panic* *memory* and *sysjump* *parameters*.
-
-### Stacks
-
-Each task has its own stack, in addition there is a system stack used for
-startup and interrupts/exceptions.
-
-Note 1: Each task stack is relatively small (e.g. 512 bytes), so one needs to be
-careful about stack usage when implementing features.
-
-Note 2: At the same time, the total size of RAM used by stacks is a big chunk of
-the total RAM consumption, so their sizes need to be carefully tuned. (please
-refer to the [debugging paragraph](#debugging) for additional input on this
-topic.
-
-## Firmware Code Organization and Multiple Copies
-
-- TODO: Details the classical RO / RW partitions and how we sysjump.
-
-## Power Management
-
-- TODO: talk about the idle task + WFI (note: interrupts are disabled!)
-- TODO: more about low power idle and the sleep-disable bitmap
-- TODO: adjusting the microsecond timer at wake-up
-
-## Debugging
-
-- TODO: our main tool: serial console ... (but non-blocking / discard
- overflow, cflush DO/DONT)
-- TODO: else JTAG stop and go: careful with watchdog and timer
-- TODO: panics and software panics
-- TODO: stack size tuning and canarying
-
-- TODO: Address the rest of the comments from https://crrev.com/c/445941
-
-\[1]: bitmap: array of bits.
diff --git a/docs/detachable_base_verified_boot.md b/docs/detachable_base_verified_boot.md
deleted file mode 100644
index c1eec3fc0b..0000000000
--- a/docs/detachable_base_verified_boot.md
+++ /dev/null
@@ -1,432 +0,0 @@
-# Detachable Base Verified Boot
-
-Authors: rspangler@google.com, drinkcat@google.com
-
-Last Updated: 2016-11-16
-
-Original: http://go/detachable-base-vboot
-
-[TOC]
-
-## Introduction
-
-### What's a Base?
-
-Detachable Chromebooks such as `Poppy` have a tablet-like `Lid` and a detachable
-keyboard `Base`. Effectively, the `Base` is a USB keyboard+trackpad which plugs
-into the `Lid`.
-
-The `Lid` contains most of the components, including:
-
-* AP
-* ECDisplay
-* Storage
-* Battery
-
-The `Base` connects to the `Lid` via USB pogo pins, and contains:
-
-* EC ([STM32F072]). To minimize confusion with the main EC in the `Lid`, this
- will always be called the `BaseEC`.
-* Matrixed keyboard
-* Touchpad
-
-The `Base` always gets its power from the `Lid` USB port. This means that
-attaching the base always triggers a power-on reset.
-
-### Verified Boot Requirements
-
-The `BaseEC` will be responsible for handling user input from the keyboard and
-touchpad. This means that a compromised `BaseEC` could implement a keylogger. To
-prevent this, we will use verified boot to protect the `BaseEC` firmware.
-
-We need a way to securely update the `BaseEC` firmware from the AP. We cannot
-use EC Software Sync as implemented on existing Chromebooks (and as still used
-in the `Lid`) because the `Base` cannot trust that it is talking to an official
-`Lid` firmware/OS. All the Base knows is that _something_ on the other end of
-USB is trying to send it an update. So the BaseEC will need to do its own public
-key verification of the firmware update. This includes rollback protection.
-
-Updating the `BaseEC` firmware should not require rebooting the lid. This means
-the update will take place after the OS has already booted on the lid. Ideally,
-it should also not require the user to detach/reattach the base during the
-update process. If the update takes longer than a few seconds, we should tell
-the user, because the keyboard and trackpad will be unavailable during the
-update.
-
-The solution should also have low (or no) BOM cost, and minimal flash size
-requirement.
-
-## Proposal
-
-`BaseEC` RO region includes a public key, whose private counterpart is kept
-safely on our signers. On boot, RO checks RW signature (RW image is signed by
-our signers), and will only jump to RW if the signature is valid.
-
-We also include a rollback region (RB) to implement rollback protection (and
-prevent rollback to a correctly signed, but compromised, RW). This region can
-only be updated by RO.
-
-We also devise a scheme to update RW firmware (the details are documented in
-[EC Update over USB]).
-
-Note: This proposal is very specific to the STM32 flash architecture. Other ECs
-(particularly ones with external SPI flash) may need additional external logic
-and/or a I2C EEPROM to hold the rollback info block.
-
-### Flash
-
-STM32F072 has 128KB flash, with 2KB erase sectors and 4KB protection blocks.
-
-We will divide flash into three sections:
-
-* `BaseEC`-RO firmware.
- * Not updatable in production.
- * Only capable of USB update, not keyboard/trackpad.
- * Contains public key to verify RW image (RSA-3072).
-* `BaseEC`-RW firmware.
- * Fully functional.
- * Updatable from AP.
- * Signature (SHA-256 + RSA-3072).
-* `BaseEC`-RB: Rollback info block (4KB).
- * Contains minimum RW version that RO will accept to jump to.
- * Updatable from RO.
-
-Each of those sections can be locked independently: In production, RO is always
-locked, and only RO can write to RB (RO will always make sure to lock RB before
-jumping to RW).
-
-Flash protection is a little entertaining on STM32:
-
-* The flash protection bits for the \*next\* boot are stored in a non-volatile
- `WRPx` register (in EC code, this is abstracted as
- `EC_FLASH_PROTECT_[REGION]_AT_BOOT` flags)..
-* On chip reset, `WRPx` is copied into a read-only `FLASH_WRPR` register; that
- controls which blocks are protected for this boot. This is abstracted as
- `EC_FLASH_PROTECT_[REGION]_NOW` in the EC code.
-
-### Rollback Info Block
-
-The Rollback Info Block (aka "RB") is a 4KB block of flash.
-
-It has two 2KB erase sectors. We will ping-pong writes to those sectors, so that
-interrupting power during an erase-write cannot cause data loss. If both sectors
-are valid, the stricter (i.e. the highest value) of the 2 sectors is used.
-
-We will use the RB to hold the following:
-
-* Minimum **RW rollback firmware** version: a 32-bit integer. Used for
- rollback protection. This number is independent of the actual EC version,
- and is stored a 32-bit integer as part of the `BaseEC`-RW region (see
- [CL:452815] for a possible implementation)
-* A magic signature that indicates that the RB section is valid.
-
-### RO Verified Boot Flow
-
-#### Write-Protect RO think test before this handles corrupt RW.
-
-Write protect of RO firmware works the same way it does now:
-
-* Early RO code looks at a write protect (WP) GPIO and a global PSTATE
- variable (part of the RO image itself). When we switch to RO that contains
- the MP key, we set the PSTATE to locked.
-* If both of those are set:
- * RO code sets `EC_FLASH_PROTECT_RO_AT_BOOT` to protect itself. This
- ensures RO code is never writable past this point.
- * If `_AT_BOOT` flags protects more than the current write protect range
- (`_NOW` flags), RO reboots so that changes take effect.
-* Otherwise, someone has physically disconnected WP. Set `WRPx=0` to unprotect
- all flash and reboot.
-
-#### Check if AP Wants To Update RW
-
-Next, RO needs to find out if the AP wants to update RW. RO initializes USB and
-starts a 1 second timer to give the AP an opportunity to send a command before
-RO jumps to RW. This delay gives us a way to regain control of the base, if the
-previous RW firmware is properly signed but bad/nonfunctional.
-
-That command can be:
-
-* `STOP_IN_RO`: Yes, I might want to update you. Stick around.
- * `UNLOCK_RW`: Tells EC to unlock RW region, if it is currently locked, so
- that it can be reprogrammed. This also locks RB region. EC reboots if
- needed.
-* `JUMP_TO_RW`: No, I don't want to update you. Go ahead and jump to your RW
- code if it verifies.
-
-RO will start verifying RW while it waits for the AP to send it a command or for
-the timeout. If a command is received, RO will stop the 1-second timer, and wait
-for more commands from the AP. This allows the AP to update RW.
-
-Verifying RW will take ~200 ms, and the AP should be able to send a command to
-the base within ~100 ms of it appearing on USB, so this check should not cause
-any delay to the base's boot process.
-
-#### Verify RW
-
-RO calculates the hash of RW.
-
-* Use the public key stored in RO to check if the hash matches the RSA-signed
- RW signature. On failure, go back to waiting for an update from the AP.
-* Check the RW rollback version against the stored minimum version in RB. If
- the RW version is too low, fail. Go back to waiting for an update from the
- AP.
-* If RO is protected, then also set `EC_FLASH_PROTECT_RW_AT_BOOT` so that RW
- will be protected on the next boot, the reboot.
-
-#### Roll Forward
-
-If `EC_FLASH_PROTECT_ROLLBACK_NOW` is set (RB is protected), do not attempt to
-roll forward. We know RW firmware is properly signed, but not if it's
-functional.
-
-If `EC_FLASH_PROTECT_ROLLBACK_NOW` is not set (RB is unprotected), \_and\_ the
-RW signature is correct, then update RB:
-
-* Erase/write the older sector of RB.
-* Set the stored minimum version to the RW rollback version.
-* If RO is protected, then also set `EC_FLASH_PROTECT_ROLLBACK_NOW` so that RB
- will be protected on the next boot.
-
-#### Jump to RW
-
-If the 1-second timer for the AP to send a command to RO has not expired, RO
-waits for it to expire or the AP to send a command, whichever happens first.
-
-If RB or RW is unprotected (`EC_FLASH_PROTECT_RW/ROLLBACK_NOW` are not set),
-protect it and reboot (we never want RW to be able to update RB on its own).
-
-Otherwise, jump to RW firmware.
-
-### RW Verified Boot Flow
-
-RW firmware provides the keyboard and trackpad functionality.
-
-#### AP Wants To Update RW
-
-At some point the AP may want to update RW. To do so, it sends `UNLOCK_RW`
-command, to ask RW to unlock itself and reboot, then follow the update steps
-above.
-
-#### AP Wants to Roll Forward RW
-
-After the update, the base boots to the new RW firmware. At that point, the AP
-knows the new RW firmware is good enough to talk to, so it tells RW to prepare
-for roll forward.
-
-* `UNLOCK_ROLLBACK` command: RW unprotects RB.
-* On next boot (not necessarily urgent, but can be forced), RO will update RB
- according to the steps above.
-
-### Write Protect GPIO
-
-The `BaseEC` needs a write protect (WP) GPIO signal to decide whether to keep RO
-firmware protected or not. This is the same requirement as on existing ECs.
-
-In an assembled base, the WP signal will be physically asserted. De-asserting
-the signal requires disassembling the base and disconnecting something.
-
-Typically, the `BaseEC` will apply a weak pull-up to the WP GPIO; the presence
-of the WP screw/flex will short the pin to ground.
-
-#### RO Updates During Development
-
-If RO is unprotected (i.e. during development), RW can also update it.
-
-If the key is \_not\_ the same (dev->premp, premp->mp updates) we can't update
-RW first (it won't verify). These steps should work though, if current RW is
-recent enough and stable enough to update RO:
-
-* Make sure RW is active
-* Update RO, reboot
-* Update RW from RO
-
-If the key is the same, we can update RW first.
-
-### Signer, image format, and verification process
-
-Memory map:
-
-RO | RB | RW
-------------------------------------------------- | --- | ---
-`...` \| `Public key` \| `...` \| `FMAP` \| `...` | | `EC code and data` \| `Blank (0xff)` \| `Signature`
-
-* RO contains an embedded RSA public key (`vb21_packed_key` format), at a
- variable location.
-* RW contains a signature (`vb21_signature`), packed at the end of the RW
- region.
- * The signature also contains the actual length of the EC code and image
- (ignoring 0xff padding)
- * RO validates signature against the provided length, then checks that the
- rest of the RW region (up to the signature itself) is filled with ones
- (padding).
- * This speeds up verification significantly, as SHA-256 is an
- expensive process.
-* RO contains an FMAP that allows futility to find the RO key, RW region, and
- RW signature location.
-
-For re-signing, `futility` (rwsig type) does this:
-
-* Look for FMAP to find RO public key RW region, and RW signature locations.
-* Resign RW region, using the length provided in existing RW signature.
-* Replace RO public key with the one used for signing.
-
-`vb21_packed_key` (public key) has a field for key version, that we can use to
-increment from dev keys, to premp, and final mp keys. BaseEC will need to report
-the key version, to avoid incorrect updates.
-
-## Example Boot / Update Flows
-
-The base starts in the following state:
-
-* Powered off
-* WP GPIO is asserted
-* PSTATE is set to protect RO firmware
-* RW firmware is valid, and currently version M
-* `EC_FLASH_PROTECT_[REGION]_AT_BOOT/_NOW` protects RO+RW+RB (that is,
- everything)
-
-All AP operations are done from the `Lid` OS.
-
-Base updates will interrupt keyboard/trackpad functionality, so the user should
-be informed when an update is taking place.
-
-Reboots of the `Base` do not cause or require reboots of the `Lid`, do not
-require action on the part of the user, and will not be visible to the user
-(other than the previously noted lack of functionality).
-
-### Power On, No Update
-
-Step | RW | RB contents | `_AT_BOOT` | `_NOW`
---------------------------------------------------------------------------------------------- | --- | ----------- | ---------- | ------
-(initial state) | M | 1/blank | RO/RW/RB | RO/RW/RB
-1. RO waits 1 second for an update request from AP | | | |
-2. RO verifies RW signature => RW is good | | | |
-3. RO notes that `_AT_BOOT` and `_NOW` already protect everything, so no reboot is necessary. | | | |
-4. RO jumps to RW | | | |
-
-### Updating RW
-
-Assume AP now has a new `BaseEC`-RW, version N>M. The base is already running RW
-version M. In this card, the rollback version in both version is identical
-("1"), so RB does not require an update.
-
-Step | RW | RB contents | `_AT_BOOT` | `_NOW`
-------------------------------------------------------- | --- | ----------- | -------------- | ------
-RW is running | M | 1/blank | RO/RW/RB | RO/RW/RB
-AP tells RW to prepare for an update (UNLOCK_RW) | | | |
-RW unsets `EC_FLASH_PROTECT_RW_AT_BOOT` to unprotect RW | | | **RO/\_\_/RB** |
-RW reboots to update `EC_FLASH_PROTECT_RW_NOW` | | | | **RO/\_\_/RB**
-
-The next base boot is where the update takes place:
-
-Step | RW | RB contents | `_AT_BOOT` | `_NOW`
----------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----- | ----------- | ------------ | ------
-RO waits 2 seconds for an update request from the AP | M | 1/blank | RO/\_\_/RB | RO/\_\_/RB
-AP tells RO an update is coming (`STOP_IN_RO`) | | | |
-AP tells the user that a base update is taking place. UI should say: "Please don't be surprised that your keyboard and trackpad won't work for a few seconds..." | | | |
-AP writes RW version N | **N** | | |
-AP tells RO to reboot (`IMMEDIATE_RESET`) | | | |
-RO reboots, verifies RW signature => RW is good | | | |
-RO checks RW rollback version N (1) and sees it's greater or equal than RB rollback version 1. So, RW is good. | | | |
-RO sets `RW_AT_BOOT` to protect RW on the next boot. | | | **RO/RW/RB** |
-RO reboots | | | | **RO/RW/RB**
-
-The next base boot is where we first run the new RW firmware.
-
-### Roll forward
-
-Now let's assume we followed the steps above, and we now have a RW version O
-that has rollback version 2.
-
-Step | RW | RB contents | `_AT_BOOT` | `_NOW`
--------------------------------------------------------------------------------------------------------------- | ----- | ----------- | -------------- | ------
-RO verifies RW signature => RW is good | **O** | 1/blank | RO/RW/RB | RO/RW/RB
-RO checks RW rollback version O (2) and sees it's greater or equal than RB rollback version 1. So, RW is good. | | | |
-RO jumps to RW | | | |
-AP is satisfied that the base works, so it tells RW to prepare for a | | | |
-roll-forward (`UNLOCK_ROLLBACK`) | | | |
-RW unsets `ROLLBACK_AT_BOOT` | | | **RO/RW/\_\_** |
-RW may reboot (or just wait for next reattach) | | | | **RO/RW/\_\_**
-
-On next boot, RB will be updated:
-
-Step | RW | RB contents | `_AT_BOOT` | `_NOW`
------------------------------------------------------------------------------------------------------------------------------------------ | --- | ----------- | ------------ | ------
-RO verifies RW signature => RW is good | O | 1/blank | RO/RW/\_\_ | RO/RW/\_\_
-RO sees that RB is unprotected, and sees RW rollback version O (2) and sees is greater than RB rollback version 1. So RB needs an update. | | | |
-RO updates RB's second block | O | **1/2** | |
-RO sets `ROLLBACK_AT_BOOT` to protect RB on the next boot. | | | **RO/RW/RB** |
-RO reboots. | | | | **RO/RW/RB**
-
-## Details
-
-### STM32 Flash Protection
-
-At a high level, flash protection works on the STM32F072 chip works in the
-following manner:
-
-* 128KB flash total flash, organized as 32 independently protectable 4KB
- blocks. Each block has 2 independently erasable 2KB sectors.
-* `FLASH_WRPR` is the register controlling flash write protect of these
- blocks. It is not directly writable. In EC common code, these bits are
- abstracted as `EC_FLASH_PROTECT_[REGION]_NOW`.
-* Instead, there is a non-volatile register called `WRPx`, which is stored in
- a separate information block of flash. This is always writable. In EC common
- code, these bits are abstracted as `EC_FLASH_PROTECT_[REGION]_AT_BOOT`. On
- chip reset, `WRPx` is copied to the `FLASH_WRPR` register.
-
-Here's the interesting part. The only way to change read-only firmware is to
-change `WRPx` and then reset the chip, so that `WRPx` is copied into
-`FLASH_WRPR`. At that point, read-only firmware could be writable. But that same
-reset also transfers control back to the read-only firmware. If the read-only
-firmware doesn't want to be writable, all it has to do is change `WRPx` back to
-protect itself, and then reboot again. We do that already on all devices which
-use the STM32 chips.
-
-Flash protection works similarly on other STM32F chips, if we need to move to a
-larger or more capable EC for the base to support a more complex base.
-
-### Flash Contents
-
-The 128KB `BaseEC` flash will be divided into three parts.
-
-* Read-only firmware (`Base`-EC-RO, or just "RO" in this document)
- * ~40KB
- * Minimal functionality, so it can be small.
- * Verifies the rewritable firmware.
- * Updates the rewritable firmware over USB.
- * Does NOT have keyboard or trackpad support.
- * Includes the `Base-EC` root key.
-* Rewritable firmware (`Base-EC`-RW, or just "RW" in this document)
- * ~84KB
- * Supports keyboard and trackpad.
- * Trackpad drivers may be non-trivial in size.
- * Future bases may include type-C ports, sensors, or batteries, all of
- which will increase RW size.
- * As with the main EC, it is unlikely we will have space for multiple
- copies of RW (so, no RW-A and RW-B).
- * Updates the read-only firmware over USB (pre-production devices only).
-* Rollback block (`Base-EC`-RB, or just "RB" in this document)
- * 4KB (one protection block)
- * Contains rollback version information for RW
- * Only writable by RO.
- * Updates alternate between the 2 2KB erase sectors. We only erase one of
- them at a time, so an interrupted erase/write will not cause data loss.
-
-Adding the RB will decrease the total amount of flash available for RO and RW,
-but doesn't require any additional external components. This is acceptable
-because RO will be smaller (since it only has update/verify functionality).
-
-### Verification Speed
-
-On a STM32F072 chip running at 48 MHz,
-
-* SHA-256 of a 64KB RW image takes 200 ms (~3 ms/KB)
- * Reducing RW image size reduces verification time almost proportionally
- (even if we need to check that the rest of the image is erased).
-* RSA-2048 (exponent 3) signature verification takes ~50 ms
-* RSA-3072 (exponent 3) signature verification takes ~100 ms
-
-[STM32F072]: http://www.st.com/content/ccc/resource/technical/document/reference_manual/c2/f8/8a/f2/18/e6/43/96/DM00031936.pdf/files/DM00031936.pdf
-[EC Update over USB]: ./usb_updater.md
-[CL:452815]: https://chromium-review.googlesource.com/c/452815/2
diff --git a/docs/ec-3po-design.md b/docs/ec-3po-design.md
deleted file mode 100644
index 79ec3ecf0f..0000000000
--- a/docs/ec-3po-design.md
+++ /dev/null
@@ -1,326 +0,0 @@
-# EC-3PO: The EC console interpreter
-
-[TOC]
-
-## Introduction
-
-Today, the Chromium OS Embedded Controller (EC) has a very rich debug console
-that is very helpful and has features including command history, editing,
-timestamps, channels and much more. However, all of these features currently use
-up valuable flash space that a number of our boards desperately need. We
-constantly run into this problem where boards are running out of space and
-people have to hack out a lot of code just so the image will fit. It's been
-occurring with more frequency lately and I imagine it will continue to occur as
-we add more features to our EC code base. What we could do instead is move all
-of that console functionality out to a separate utility and turn the EC console
-into a binary mode which would only speak in host command packets and debug
-output packets. EC-3PO would serve as the interpreter translating from the
-traditional EC console that we all know and love to host command packets sent
-down to the EC and vice versa.
-
-## Benefits
-
-The benefits to be gained are numerous and can all occur without changing
-people's existing workflow. The only slight impact might be that we instruct
-people to `emerge hdctools` every so often. All people would notice would be
-that the EC images would be getting smaller and/or more console features.
-
-### Testing & FAFT
-
-Currently, [FAFT](https://www.chromium.org/for-testers/faft) runs its tests
-while trying to parse strings from the EC console. This method can be fairly
-fragile as debug output can be interleaved with the console input. A lot of
-items could be improved by switching to this host command packet interface.
-
-* Communicating in packets makes testing easier and more robust.
- * When FAFT is running, the EC could be in a binary mode where it only
- communicates in host command packets. These packets are easier to parse,
- create, and filter on.
- * With filtering, you get the added bonus of not having unwanted debug
- output.
- * It allows us to really test the host command interface which is how the
- EC talks to the AP anyways.
-* Better testing of existing host command handlers.
- * By speaking in host command packets, we can reuse the existing host
- command handlers which is nice since we'll be using the same handlers
- that are used to respond to the AP.
-* FAFT would no longer have to worry about the console dropping characters.
- * We can add error checking to the interpreter which would automatically
- retry errors. This alleviates FAFT from trying to check if the EC had
- properly received a line of input. (Ctrl+L)
-
-With better and more reliable tests, we can improve the quality of our EC
-codebase.
-
-### Space Savings
-
-By moving the console functionality off of the EC, we would be able to shave off
-a considerable amount of bytes from the EC images. People wouldn't have to worry
-as much about creating a debug console print with the fear of bloating up the
-image size. Smaller stack requirements by changing `printf` formatting to only
-count bytes while moving common strings off the EC. Additionally, most of these
-savings will come for free as it will apply to every EC with a console. We won't
-be restricted by the type of chip.
-
-### A richer EC console
-
-* We could do things like on-the-fly console channel filtering.
-* Coloring specific channels such as "mark all USB PD messages in green".
-* Adding colors in general.
-* Adding temporary console commands.
-* Longer command history which survives EC reboot
-* Searching command history
-* Redirecting debug output to log files (which causes no interleaving of
- command and debug output)
-* Bang commands (`!foo`)
-
-### Better debuggability
-
-Sometimes, there will be an issue with the EC (or believed to be an EC issue)
-such as the keyboard locking up on certain keys or rows. At times like that, it
-would be nice to have an EC console to see what's going on. Other times maybe
-having a servo connected might make the issue not present itself.
-
-* We could do cool things like having an EC console without having to hook up
- servo.
-* Run `ectool` from the chroot using a PTY interface.
-
-## Deployment Strategy
-
-There are many facets to this feature, but here's a deployment strategy which
-will gradually take us from the current EC console today, to a future where the
-console is completely removed from the EC. The goal will be to make this change
-as transparent as possible to developers.
-
-### Phase 1: Insertion
-
-_[[Merged to ToT](https://crrev.com/c/320629) on 2016-02-07]_
-
-Phase 1 will most likely consist of getting EC-3PO in place in between servo and
-the EC while not modifying the behavior of the console too much. In this phase,
-we can replicate the console interface and achieve the following things.
-
-* Replicate command editing.
-* Save command history.
-* Add error checking to the console commands.
-
-### Phase 2: Assimilation
-
-Phase 2 will start to introduce the host command packet communication.
-
-* Printing will be done via packets and assembled in EC-3PO.
-* Console commands now are sent using the host command packets.
- * This will be incremental as console commands are converted.
-* Add debug output filtering and redirection/logging.
-
-### Phase 3: Expansion
-
-Phase 3 will expand the feature set of EC-3PO.
-
-* Add PTY interface to `ectool`.
-* Add on-device console without `servod`.
-* Colored output.
-* Command history search.
-* Bang commands (`!foo`)
-
-## High Level Design & Highlights
-
-![Diagram with three boxes. EC-3PO with an incoming PTY communicates with the
-Serial Driver over another PTY. The Serial Driver communicates with the EC
-UART.](./images/ec-3po-high-level-design.png)
-
-### EC Interface
-
-Each host command is a 16-bit command value. Commands which take parameters or
-return response data specify `struct`s for that data. See
-[`include/ec_commands.h`](https://chromium.googlesource.com/chromiumos/platform/ec/+/HEAD/include/ec_commands.h)
-for the current format of request and replies. Currently, there are no changes
-made to the format of the host request and response structures.
-
-On the EC, we essentially need to create a UART host command handler. This
-handler will be watching the console input for a byte sequence to switch into
-this host command mode. The starting sequence for an incoming host command
-packet will be `0xDA`, a byte signifying `EC_COMMAND_PROTOCOL_3`. Once this byte
-is seen, the EC will transition to its "host command processing mode" and
-receive the host command. It will then process the host command, send the binary
-host response, and then transition back into normal mode. Ideally, there should
-be some locking of the UART to prevent other writes while this is taking place.
-
-By the end of the assimilation (Phase 2), there would be no "normal mode" and
-everything would be in the binary host command mode.
-
-### Host Interface
-
-The host interface is where the bulk of the work will be. This will be
-converting from the received host commands to console prints as well as
-converting the console inputs to host commands. It will also be responsible for
-replicating the console. This includes things like moving back and forth for
-command editing.
-
-The interpreter should also open a PTY and `dut-control` should return this PTY
-as the `ec_uart_pty`. This is to ensure that the change is as transparent as
-possible to developers.
-
-### Features
-
-The following are an explanation of a few of the planned features.
-
-#### Command Error Checking
-
-EC-3PO and the EC can perform error checking when sending the commands to the
-EC. This feature would be implemented prior to switching to the binary format.
-The interpreter can package the command in the following manner.
-
-* 2 Ampersands
-* 2 hex digits representing the length of the command
-* 2 hex digits representing the CRC-8 of the command
-* 1 Ampersand
-* The command itself
-* 2 newline characters.
-
-This is robust because no commands currently start with `&`. If the EC does not
-see ‘`&&`', then one of the ampersands has been dropped. If the EC doesn't see
-an ampersand after 4 hex digits, it either dropped a hex digit or the ampersand.
-Two newlines, so dropping one of those is alright. Once the EC gets the command
-and newline, it can verify the command string hasn't been corrupted.
-
-In the event that the command string was corrupted, the EC can return an error
-string back of `&&EE`. If the translator reads a line with at least one
-ampersand followed by one "E", then an error had occurred and the translator can
-simply retry the console command. This creates a reliable input to the console,
-a great win for FAFT.
-
-#### PTY interface to `ectool`
-
-Once the UART host command handler is functional, we could add the UART as one
-of the interfaces to `ectool`. This would allow `ectool` to be run from the
-chroot simply by having `ectool` communicate over the PTY. Since `ectool`
-communicates using host commands anyways, everything should just work™. The
-benefits of this include faster development of `ectool` and host commands as
-well as a more robust interface for FAFT.
-
-#### On-device EC console without Servo
-
-Once the transition is complete and the console speaks entirely in host
-commands, it's no longer necessary to have the console talk solely over the
-UART. EC-3PO, or a variant, could exist as a standalone application that could
-be bundled in the system image, just like `ectool`. It would then send and
-receive host commands using the same interface that `ectool` uses whether it be
-LPC or I2C. This would essentially give us a console without having to hook up
-servo.
-
-Note for security reasons, this must be locked down to only allow a subset of
-commands and debug output when the system is ready to ship.
-
-#### Replacing `cprintf()`
-
-All prints will need to become packets. In these packets will contain the format
-string, but all `cprintf()` has to do is parse to format string to determine how
-many bytes the parameters take up. Then, `cprintf()` will send the format string
-and the parameters to EC-3PO which will create the proper string using that
-information. That makes `cprintf()` on the EC smaller and use less stack space
-than it would have used for formatting.
-
-We could also have a table of common format strings which the EC could just
-provide an index and the parameters.
-
-## Internal Design
-
-EC-3PO is a Python package which aims to migrate the rich debug console from the
-EC itself to the host. It is composed of two modules: console and interpreter.
-
-![Diagram of EC-3PO internal design. Within an outer box labelled EC-3PO are the
-Console and Interpreter modules. A bidirectional command pipe links the two, and
-a debug pipe goes from the Interpreter to the
-Console.](./images/ec-3po-internal-design.png)
-
-### Console module
-
-The console module provides the interactive console interface between the user
-and the interpreter. It handles the presentation of the EC console including
-editing methods as well as session-persistent command history.
-
-The console runs in an infinite loop listening for activity on three things
-using the `select()` system call: the PTY served to the user, the command pipe,
-and the debug pipe. The debug pipe is a unidirectional pipe from the interpreter
-to the console. From this pipe are debug prints that originate from the attached
-EC and the console currently writes these strings as is to the user PTY. The
-command pipe is bidirectional and is used between the console and the
-interpreter for command traffic. An example transaction would be a host command
-request and response.
-
-#### Enhanced EC image negotiation
-
-When the user transmits a character on the PTY, the console begins to scan every
-byte and perform the appropriate actions. Since not every EC image will support
-these enhanced features, the console must perform an interrogation to determine
-what behaviour to take. If the interrogation mode is set to auto, this
-negotiation takes place every time the enter key is pressed. The interrogation
-is very simple 2 way handshake. The console sends down a byte, `EC_SYN` and
-waits a timeout period to receive a byte, `EC_ACK`. This timeout period is 300ms
-for non-enhanced EC images and 1 second for enhanced EC images. Enhanced EC
-images will try to immediately respond to an `EC_SYN` with an `EC_ACK` to
-indicate to EC-3PO that the current EC images is enhanced. The non-enhanced EC
-image timeout period is intended to be short because non-enhanced EC images will
-never reply to the `EC_SYN`. By keeping this timeout short, we are essentially
-inserting a slight pause after each command. However, this timeout is long
-enough for an enhanced EC image to send its reply of `EC_ACK`. Once the `EC_ACK`
-is received by the console, the console increases the timeout to 1 second for
-stability purposes just in case the enhanced EC image takes a bit longer to send
-its reply for some reason. This negotiation allows EC-3PO to behave correctly
-for both enhanced and non-enhanced EC images.
-
-If a user knows that they are not using an enhanced EC image, they can disable
-the interrogation by issuing a OOBM command. This will cause the console to
-never initiate a negotiation, eliminating the delay. See the "interrogate"
-command in the Out of Band Management section for usage.
-
-#### Enhanced vs. Non-Enhanced EC images
-
-All EC images which don't explicitly enable the new features (or were built
-before the features were implemented in the code base) are non-enhanced images.
-Non-enhanced EC images will be handling the presentation of the console
-including editing methods (and history if enabled). Therefore, the EC-3PO
-console and interpreter behave as a simple pipe for this case forwarding
-everything straight to the EC to handle. For the enhanced EC images, all console
-presentation (including editing methods) is handled locally by the EC-3PO
-console. Enhanced EC images will also support all of the other features
-discussed in this document.
-
-#### Out of Band Management
-
-The interactive console also has an Out of Band Management (OOBM) interface.
-This allows commands to be entered that can alter the behavior of the console
-and interpreter during runtime. From the console, one can bring up the OOBM
-prompt by pressing ‘%' . These were originally added for debug purposes.
-
-##### Supported Commands
-
-* `loglevel <integer>`
- * Allows setting the effective loglevel of the console and interpreter.
-* `interrogate <never | always | auto> [enhanced]`
- * Allows control of when and how often interrogation occurs.
-
-### Interpreter module
-
-The interpreter provides the interpretation layer between the EC UART and the
-user. Similar to the console module, the interpreter starts an infinite loop of
-servicing the user and the EC by means of a `select()` system call. It receives
-commands through its command pipe, formats the commands for the EC, and sends
-the command to the EC. It also presents data from the EC to either be displayed
-via the interactive console module or some other consumer.
-
-The interpreter also keeps track of whether the EC image it's communicating with
-is enhanced or not. This is required so that the interpreter can communicate
-correctly with the EC. For enhanced EC images, the interpreter will pack
-incoming commands in a particular format. This could be the "packed plaintext"
-form or the binary host command format. With the packed plaintext form, the
-interpreter also supports command retrying by monitoring the response of the EC
-and automatically retrying the command with no input from the user.
-
-### Other users
-
-Since the interpreter communicates using pipes, it's not necessary that the user
-use the console module. For example, FAFT could directly connect to the
-interpreter and send down commands and receive command responses instead of
-having to deal with the PTY and instead just deal with python objects.
diff --git a/docs/ec-3po.md b/docs/ec-3po.md
deleted file mode 100644
index dae7b9babb..0000000000
--- a/docs/ec-3po.md
+++ /dev/null
@@ -1,82 +0,0 @@
-# EC-3PO
-
-[TOC]
-
-## What is EC-3PO?
-
-EC-3PO is the console interpreter that will one day replace the EC console that
-we have today. EC-3PO aims to migrate our rich debug console from the EC itself
-to the host. This allows us to maintain our rich debug console without impacting
-our EC image sizes while also allowing us to add new features.
-
-For more information, see [the design doc](./ec-3po-design.md).
-
-## How do I use EC-3PO?
-
-If you're using `servod` to connect to your EC, chances are you're already using
-it. EC-3PO was grafted into `servod` on Feb 7th 2016. If you're not running
-`servod`, you can run EC-3PO manually by running `console.py` in the
-`util/ec3po` directory from the EC checkout. You will need to provide the PTY
-that you get from elsewhere though.
-
-To obtain the EC console PTY, inside the chroot run:
-
-```shell
-$ dut-control ec_uart_pty
-```
-
-**NOTE: It's important to use `dut-control` to query the PTY instead of just
-eyeballing the `servod` output.** The former PTY (now known as
-`raw_ec_uart_pty`) will be sending raw binary data. Trying to use that console
-with an enhanced EC image will definitely fail and you won't be able to
-send/receive any commands.
-
-Then use your favorite serial terminal program to connect to the PTY. Since
-`servod` is run as root, you'll need to run your serial terminal program as root
-as well using `sudo`. This is because the permissions have changed from 666 to
-660.
-
-EC-3PO has been tested with `minicom`, `screen`, `socat`, and `cu`. However, if
-you're using `cu` you'll have to do the following to get it to work because
-apparently, `cu` wants group write permissions. On Ubuntu at least, the PTY is
-created with the `tty` group. If on your machine it's not, then just replace
-`tty` with whatever group it's created with.
-
-1. Create a `tty` group if you don't have one already.
-1. Add root to the `tty` group.
-1. Rerun `cu` with `sudo` and it should work now.
-
-## Why does the console seem "laggier" than before?
-
-This is because there's a ~300ms delay after entering each console command. This
-is due to the interrogation that the console interpreter performs to determine
-if the EC image it's currently talking to is enhanced or not. Debug prints
-coming from the EC should be the same speed. Since most people aren't currently
-using the enhanced EC images, you can go ahead and run this command if the 300ms
-delay is unbearable.
-
-To disable the delay:
-
-1. Open the EC console.
-1. Press `%`
-1. Enter `interrogate never`
-1. Then press enter.
-
-\**For `socat` users, due to the line buffered nature, you'll have to just enter
-`%interrogate never`. Notice the lack of the space character between `%` and the
-command.*
-
-The interrogation delay should now be gone and you can have your 300ms/cmd back.
-
-## How do I try out this "enhanced" EC image you speak of?
-
-You simply add this to your board.h file.
-
-```c
-#define CONFIG_EXPERIMENTAL_CONSOLE
-```
-
-## I can't open the EC console
-
-Make sure you try with `sudo`. If you're using `cu`, make sure root is a member
-of the group of the created PTY.
diff --git a/docs/ec_terms.md b/docs/ec_terms.md
deleted file mode 100644
index 3b9f88416e..0000000000
--- a/docs/ec_terms.md
+++ /dev/null
@@ -1,248 +0,0 @@
-# EC Acronyms and Technologies
-
-## Glossary
-
-* **8042 Interface** {#8042}
-
- Interface for sending keyboard events to the [AP](#ap) and for receiving
- commands from the AP. Only supported by x86 based APs.
-
-* **ACCEL - Accelerometer** {#accel}
-
- A sensor that measures acceleration, typically over 3-axis. Nominally
- provides information about the orientation of a device. On Chromebook 2-in-1
- devices, there is an accelerometer in the base and one in the lid. Combining
- the measurements from both accelerometers allows for a precise calculation
- of the lid angle, used to switch between tablet and laptop mode.
-
-* **ACCELGYRO - Accelerometer/Gyroscope** {#accelgyro}
-
- A combination [accelerometer](#accel) and [gyroscope](#gyro) sensor that
- provides more precise orientation information by measuring both linear and
- rotational motion.
-
-* **ADC - Analog to Digital Converter** {#adc}
-
- A sensor that converts an analog voltage to a digital reading.
-
-* **ALS - Ambient Light Sensor** {#als}
-
- A sensor that measures the ambient light present. Used to automatically
- control the screen and keyboard backlight level.
-
-* **AP - Application Processor** {#ap}
-
- The processor on the board that boots and runs ChromeOS.
-
-* **BAR - Barometer** {#bar}
-
- A sensor that measures atmospheric pressure.
-
-* **BC12 - Battery Charging** {#bc12}
-
- A device that implements the USB Battery Charging specification, version
- 1.2. The complete [BC 1.2 Specification] is available from the USB
- Implementers Forum.
-
-* **CBI - CROS Board Information** {#cbi}
-
- A collection of properties describing the board. This includes board
- version, SKU, model name, and other fields. More details are found in the
- [CrOS Board Info] documentation.
-
-* **CEC - Consumer Electronics Control** {#cec}
-
- A one-wire bidirectional bus. More details are on the [CEC Wikipedia page].
-
-* **DPTF - Dynamic Power and Thermal Framework (Intel)** {#dptf}
-
- Intel's platform based power and thermal management. See the [DPTF Readme]
- for details on the implementation used in ChromeOS.
-
-* **EC - Embedded Controller** {#ec}
-
- The [MCU](#mcu) used to control the keyboard, battery charging, USB port
- switching, sensor management, and other functions, offloading these tasks
- from the [AP](#ap).
-
-* **EC-3PO** {#ec-3po}
-
- A replacement of the current UART-based console which moves much of the code
- off the EC into a host tool, reducing the amount of flash space required.
-
-* **E-Mark - Electronically Marked Cable** {#emark}
-
- See the [USB-C documentation](./usb-c.md#emark) for more details.
-
-* **eSPI - Enhanced Serial Peripheral Interface (Intel)** {#espi}
-
- Intel's synchronous communication interface between the [AP](#ap) and the
- [EC](#ec). Supports quad I/O mode and clock speeds up to 66 Mhz, providing
- bandwidth up to 264 Mbps. The full [eSPI Specification] is available from
- Intel.
-
-* **FAFT - Fully Automated Firmware Tests** {#faft}
-
- A collection of tests and related infrastructure that exercise and verify
- capabilities of Chrome OS. See the [FAFT design doc] and
- [chromium.org documentation](https://www.chromium.org/for-testers/faft) for
- more details. Replaced [SAFT](#saft).
-
-* **GMR - Giant Magnetoresistance Sensor** {#gmr}
-
- A sensor device that detects a magnetic field. These sensors differ from
- [MAG](#mag) sensors, in that they only detect magnetic fields in close
- proximity to the sensor. On Chromebooks, GMR sensors are used to detect when
- the lid is opened. On convertible Chromebooks, the GMR sensor also detects
- tablet mode when lid the is opened a full 360 degrees.
-
-* **GPIO - General Purpose Input/Output** {#gpio}
-
- An individual signal that can independently controlled and read. GPIOs are
- used to enable/disable power rails, drive reset signals, and receive
- interrupts from devices connected to the EC. GPIOs may also be connected to
- [I/O expanders](#ioexpander).
-
-* **GYRO - Gyroscope** {#gyro}
-
- A sensor that measures angular momentum, providing information about
- rotational motion of the device.
-
-* **I/O Expander** {#ioexpander}
-
- An [I2C](#i2c) peripheral device that provides additional GPIO signals
- (anywhere from 8 - 32 signals). GPIOs behind an I/O expander are written and
- read using I2C register accesses from the I2C controller in the EC.
-
-* **I2C - Inter-Integrated Circuit** {#i2c}
-
- A 2-wire synchronous communication bus, consisting of a clock signal and a
- bidirectional data signal. An I2C bus typically contains one controller
- device and one or more peripheral devices. The I2C standard defines
- supported clock speeds of 100 KHz and 400 KHz. The full [I2C Specification]
- is available from NXP (formerly Phillips).
-
-* **LED - Light Emitting Diode** {#led}
-
- A Light Emitting Diode is a semiconductor that emits light when current
- flows through it.
-
-* **LPC - [Low Pin Count bus]** {#lpc}
-
- Legacy communication bus between the [AP](#ap) and [EC](#ec). Runs at 33
- MHz, providing a 133 Mbps bandwidth connection. Replaced by the
- [eSPI](#espi) interface.
-
-* **MAG - Magnetometer** {#mag}
-
- A digital compass sensor, providing orientation for navigation.
-
-* **MCU - Microcontroller Unit** {#mcu}
-
- A small integrated chip containing a CPU core, on-chip ROM, on-chip RAM.
- Also contains multiple peripheral interfaces, including GPIO, I2C buses, SPI
- buses, ADC, PWM, etc.
-
-* **MKBP - Matrix Keyboard Protocol** {#mkbp}
-
- Message based protocol for communicating asynchronous events from the
- [EC](#ec) to the [AP](#ap). Events are not limited to keyboard events with
- the sensor subsystem as one of the main users. An EC board implementation
- can be configured to send keyboard events through MKBP or using the
- [8042 interface](#8042). This is the [EC MKBP driver] implementation.
-
-* **MST - Multi Stream Transport** {#mst}
-
- Part of the Display Port 1.2 standard, used to drive multiple independent
- video streams from a single display port. The EC code is typically
- responsible for enabling and disabling the MST hub chipset.
-
-* **OOBM - Out of Band Management** {#oobm}
-
- A command in the [EC-3PO protocol](#ec-3po) that allows commands to be
- entered to alter the behaviour of the console and interpreter during
- runtime.
-
-* **PD - USB Power Delivery** {#pd}
-
- See the [USB-C documentation](./usb-c.md#pd) for more details.
-
-* **PMIC - Power Management IC** {#pmic}
-
- An integrated circuit used to turn power rails on and off.
-
-* **PPC - USB Power Path Controller** {#ppc}
-
- See the [USB-C documentation](./usb-c.md#ppc) for more details.
-
-* **PWM - Pulse Width Modulation** {#pwm}
-
- Method of varying the duty cycle of a signal to control another device. A
- typical application is to control fan speeds or the brightness of a
- backlight.
-
-* **SAFT - Semi-Automated Firmware Tests** {#saft}
-
- A suite of tests for firmware, succeeded by [FAFT](#faft). See the
- [chromium.org documentation](https://www.chromium.org/for-testers/saft) for
- more details.
-
-* **SHI - SPI Host Interface** {#shi}
-
- [SPI](#spi) host interface used for communication between the AP and the EC.
- In this configuration, the AP provides the SPI controller and the EC
- provides the SPI peripheral. This interface is only used for non-x86 base
- APs.
-
- x86-based APs use either the [eSPI](#espi) or [LPC](#lpc) interface.
-
-* **SPI - Serial Peripheral Interconnect** {#spi}
-
- A 4-wire synchronous communication bus consisting of the signals CLK
- (clock), SDO (Serial Data Out), SDI (Serial Data In), and CS (chip-select,
- one per SPI peripheral). The SDO and SDI pins are defined from the
- perspective of the device: the SPI controller's SDO pin connects to the SPI
- peripheral's SDI pin and vice-versa. Clock speeds over 100 MHz are
- supported. SPI communication involves the following sequence:
-
- * SPI controller asserts CS.
- * SPI controller transmits one or bytes on its SDO signal, received by the
- SPI peripheral on its SDI signal.
- * SPI peripheral transmits zero or more bytes on its SDO signal, received
- by the SPI controller on its SDI signal.
- * SPI controller de-asserts CS.
-
- The specific contents of a SPI frame varies based on the SPI peripheral
- type.
-
-* **SVDM - Structured Vendor Defined Messages** {#svdm}
-
- See the [USB-C documentation](./usb-c.md#svdm) for more details.
-
-* **TCPC - USB Type-C Port Controller** {#tcpc}
-
- See the [USB-C documentation](./usb-c.md#tcpc) for more details.
-
-* **UART - Universal Asynchronous Receiver Transceiver** {#uart}
-
- Also known as a serial port. An asynchronous communication channel between
- two devices with a dedicated receive pin, transmit pin, and ground. Optional
- hardware flow control signals require additional connections between the
- devices. Standard transmission rates are slow (up to 115200 bits per
- second). Typical use is to provide a debug console to the EC. [RS-232] is
- the protocol standard used by UARTs.
-
-* **VCONN - Connector Voltage** {#vconn}
-
- See the [USB-C documentation](./usb-c.md#vconn) for more details.
-
-[BC 1.2 Specification]: <https://www.usb.org/document-library/battery-charging-v12-spec-and-adopters-agreement>
-[CrOS Board Info]: <https://chromium.googlesource.com/chromiumos/docs/+/HEAD/design_docs/cros_board_info.md>
-[CEC Wikipedia page]: <https://en.wikipedia.org/wiki/Consumer_Electronics_Control>
-[DPTF Readme]: <https://github.com/intel/dptf/blob/master/README.txt>
-[eSPI Specification]: <https://www.intel.com/content/dam/support/us/en/documents/software/chipset-software/327432-004_espi_base_specification_rev1.0.pdf>
-[FAFT design doc]: <https://chromium.googlesource.com/chromiumos/third_party/autotest/+/HEAD/docs/faft-design-doc.md>
-[I2C Specification]: <https://www.nxp.com/docs/en/user-guide/UM10204.pdf>
-[RS-232]: <https://en.wikipedia.org/wiki/RS-232>
-[EC MKBP driver]: <https://chromium.googlesource.com/chromiumos/platform/ec/+/HEAD/common/keyboard_mkbp.c>
-[Low Pin Count bus]: https://en.wikipedia.org/wiki/Low_Pin_Count
diff --git a/docs/fingerprint/OWNERS b/docs/fingerprint/OWNERS
deleted file mode 100644
index ba92c193e0..0000000000
--- a/docs/fingerprint/OWNERS
+++ /dev/null
@@ -1 +0,0 @@
-include ../../common/fpsensor/OWNERS
diff --git a/docs/fingerprint/fingerprint-authentication-design-doc.md b/docs/fingerprint/fingerprint-authentication-design-doc.md
deleted file mode 100644
index 7db552405a..0000000000
--- a/docs/fingerprint/fingerprint-authentication-design-doc.md
+++ /dev/null
@@ -1,772 +0,0 @@
-# Fingerprint Authentication on Chrome OS
-
-Authors: norvez@google.com, vpalatin@google.com
-
-Reviewers: kerrnel@google.com, mnissler@google.com
-
-Last Updated: 2019-01-14
-
-[TOC]
-
-## Objective
-
-### Goals
-
-* Let users securely unlock their device with just their fingerprint
-* Reuse the same architecture on all future platforms, don’t be tied to a
- specific technology ([Arm TrustZone], [Intel SGX]).
-* Support Android’s [fingerprint authentication framework] so users can for
- example authorise payments in Android apps with their fingerprint. The
- fingerprint implementation needs to comply with Android’s [CDD].
-
-### Non-goals
-
-* Let users log in with their fingerprint
- * Users will have to use other authentication methods (e.g. password or
- PIN) to log into their account.
- * Once logged in, users will be able to unlock the screen with their
- fingerprint
-
-## Background
-
-To unlock their Chromebook users have to enter their password or a PIN.
-[Windows] and [macOS] let the user authenticate with their fingerprint for
-faster unlocking, we want to bring that capability to Chrome OS.
-
-### Fingerprint matching basics
-
-#### Fingerprint enrollment
-
-When a user wants to register their finger for fingerprint authentication, they
-go through the _enrollment_ operation. They are asked to touch the sensor
-multiple times with different parts of their fingerprint. The
-[matching algorithm] uses the images captured during enrollment to build a model
-of that fingerprint (known as a _template_).
-
-#### Fingerprint matching
-
-When the user puts their finger on the sensor, an image of the fingerprint is
-captured and compared to the fingerprint templates of the enrolled fingerprints
-to determine if the fingerprint matches one of the templates.
-
-#### Template update (TU)
-
-When the matching algorithm determines that a fingerprint matches a template
-with a high level of certainty, it can (and normally will) use that fingerprint
-image to update the template to improve the accuracy of future matching
-operations.
-
-### Threat model
-
-There are two main objectives for potential attackers:
-
-* Large scale collection of biometric data from users by opportunistic
- attackers
- * This attack is only valuable remotely. In case an attacker has physical
- access to the device they are already able to collect fingerprint data
- left by the user on the device itself without having to attack the
- software.
-* Target a specific user, typically with physical access to the device in
- order to either:
- * Allow the attacker to enroll their own fingerprint to unlock the device
- at will later on (the “abusive partner” model).
- * Spoof positive fingerprint matches to let the rest of the system believe
- that a user has successfully identified, for example to break [2FA]
- \("spy" trying to gain access to an organisation’s resources via the
- victim’s computer).
-
-### Privacy and security
-
-* Biometric data is particularly sensitive, so all operations on fingerprint
- data must happen in a _Secure Biometric Processor_ (**SBP**). Attackers must
- not gain access to the user’s fingerprints even if they have exploited the
- software running on the AP.
-* To protect the user’s privacy, fingerprint data must not be accessible
- without the user’s consent, even by Google. Typically it will protected by
- the user’s password.
-* Fingerprint data must not leave the device.
-* For added security, only the specific Chromebook used to enroll the
- fingerprint can use it. Other Chromebooks, even of the same model, must not
- be able to use the enrolled fingerprint.
-
-### Scalability
-
-For Eve, we [considered][Old Design Doc] using SGX as the SBP. However the
-complexity of the solution makes that option unattractive, both because of the
-amount of dev work required and because of the large resulting attack surface.
-It’s also exclusive to Intel, we would have to develop a completely different
-architecture for other platforms, which would add more dev work and increase the
-attack surface again.
-
-## Overview {#overview}
-
-Devices have a dedicated microcontroller (MCU) running a firmware based on the
-[Chromium OS EC] codebase that is used as the _Secure Biometric Processor_
-(**SBP**), where all enrollment and matching operations take place. Even if
-attackers gained control of the AP, they still would not be able to access the
-fingerprint (FP) data since it never leaves the SBP unencrypted.
-
-The SBP controls the sensor directly over a dedicated SPI bus. The SBP is
-connected to the host with a different SPI bus, the host has no direct access to
-the FP data coming from the sensor.
-
-Enrolled templates for a particular user are stored in the user’s [cryptohome]
-but not synced/backed up to the cloud. They are thus encrypted with a key
-(`User_Key`) derived from the user’s password, preventing 3rd parties (including
-Google) from accessing the fingerprint templates if the user hasn’t entered
-their password.
-
-On top of that, enrolled templates are also encrypted by a device-specific
-`HW_Key`. `HW_Key` is derived from a secret that has been randomly generated by
-the SBP, which prevents decrypting the templates on another device.
-
-### Architecture
-
-![Fingerprint Architecture]
-
-### Typical workflows
-
-#### FP enrollment
-
-1. User starts the enrollment flow from the Settings UI.
-1. SBP starts the enrollment operation.
-1. SBP captures a number of FP images (exact number depends on the sensor,
- typically 3-4 to 10-12) and builds the template in the SBP’s volatile memory
-1. SBP encrypts the template with `HW_Key` and sends the encrypted template to
- the AP.
-1. AP encrypts the template with `User_Key` and saves it to non-volatile
- storage.
-1. User goes back to step 1 to enroll another finger. A user can typically
- enroll 3 to 5 fingers, depending on how many templates the SBP can hold in
- its internal volatile storage at the same time.
-
-#### User login
-
-1. User logs in by typing their password.
-1. FP templates of that user go through the first level of decryption, with
- `User_Key`.
-1. FP templates are uploaded to the SBP.
-1. FP templates go through the second level of decryption in the SBP, with
- `HW_Key`.
-1. Deciphered FP templates are kept in the SBP’s volatile memory, ready to use
- for matching operations.
-
-#### Screen unlocking operation
-
-1. User touches the sensor with their finger.
-1. SBP verifies that the FP image matches one of the user’s templates.
-1. SBP wakes up the AP and sends a “FP matched” message to the AP
-1. The AP unlocks the screen.
-1. Matcher updates the template in the SBP’s volatile memory.
-1. SBP encrypts the updated template with `HW_Key` and sends the encrypted
- template to the AP.
-1. AP encrypts the template with `User_Key` and saves it to non-volatile
- storage.
-
-## Detailed Design {#detailed-design}
-
-### FP template encryption {#template-encryption}
-
-FP templates are encrypted "twice". First, the templates are encrypted by the
-SBP with a hardware-bound key that is unique to this SBP and that only the SBP
-knows. On top of that, the AP also encrypts the FP templates with a key bound to
-the user password.
-
-#### User-bound encryption
-
-The FP templates are stored in a "[cryptohome daemon store folder]" which is
-encrypted by [cryptohome] with a key tied to the user password. We plan to
-replace this post-launch with a mechanism similar to
-[Authentication-Time User Secrets]. Separate design doc to come.
-
-#### Hardware-bound encryption
-
-FP templates are AES-encrypted with `HW_Key`. `HW_Key` is bound to this specific
-SBP so encrypted templates can only be deciphered by this specific SBP. To
-ensure that a powerwash/recovery/WP toggle/.../ makes the encryption key
-impossible to recover, `HW_Key` also depends on a secret held by the TPM.
-
-We use an AEAD cipher (AES-GCM) to detect if the encrypted templates have been
-tampered with by an attacker controlling the AP.
-
-##### SBP secret generation
-
-The SBP generates a new 128-bit random number `SBP_Src_Key` every time the user
-goes through recovery or powerwashes the device. The [clobber-state] script
-sends a command to the SBP to make it immediately regenerate a new `SBP_Src_Key`
-immediately after requesting a TPM clear.
-
-`SBP_Src_Key` is stored by the SBP’s internal Flash and never shared with the
-AP.
-
-##### TPM-held Secret
-
-To avoid potential bugs where `SBP_Src_Key` would not always be made
-unrecoverable in some corner cases of recovery or powerwash, we make the
-encryption key `HW_Key` depend on a secret that is held by the TPM and deleted
-every time the TPM is cleared, for example if someone attempts to do a
-"[ccd open]" to disable the hardware WP.
-
-The following is a summary of the mechanism, see the specific design doc
-[TPM Seed for Fingerprint MCU] for details.
-
-The TPM already holds a "[system key]" `Cros_Sys_Key` in NVRAM space that is
-used to derive the encryption key of the stateful partition. That "system key"
-can only be read once per boot, typically by [mount_encrypted].
-
-We modify mount_encrypted so that right after reading the seed, it derives a key
-`TPM_Seed`:
-
-```
-TPM_Seed = HMAC-SHA256(Cros_Sys_Key, "biod")
-```
-
-`TPM_Seed` is then uploaded to the SBP where it will part of the
-[Input Key Material (IKM)] and immediately cleared from the AP’s memory, while
-the attack surface is very small (e.g. no network connections, stateful
-partition not yet mounted) to prevent attackers from accessing it.
-
-##### `HW_Key` derivation {#hw-key-derivation}
-
-The `HW_Key` 128-bit AES key for every FP template on the device is derived from
-the SBP’s secret and the TPM’s secret to ensure uniqueness. Therefore, even two
-identical devices would have different encryption keys. The user ID is also used
-as an input for key derivation, so 2 users on the same device won’t share
-encryption keys either. Summing up, the key used to encrypt a template depends
-on:
-
-* Device-bound `TPM_Seed`, randomly generated on recovery/powerwash
-* SBP-specific `SBP_Src_Key`, randomly generated on recovery/powerwash
-* User ID on the device
-* Encryption salt, randomly generated before every encryption
-
-###### Salt for key derivation
-
-Every time we update a template, we generate a new random 128-bit salt.
-
-The salt is not required to be secret, so we store `User_Salt` in cleartext next
-to the user’s encrypted FP templates on the disk.
-
-On user login, biod sends the salt and the encrypted FP templates to the SBP.
-biod also sends the User ID to the SBP. The SBP derives the AES key using [HKDF]
-with HMAC-SHA256:
-
-```
-HW_Key = HKDF(HMAC-SHA256, SBP_Src_Key, TPM_Seed, User_Salt, User_ID)
-```
-
-At that point, the SBP [authenticates and deciphers](#aead) the FP templates.
-The SBP then generates a new 128-bit salt `User_Salt_New` randomly and derives a
-new AES key:
-
-```
-HW_Key_New = HKDF(HMAC-SHA256, SBP_Src_Key, TPM_Seed, User_Salt_New, User_ID)
-```
-
-Updated FP templates are then encrypted with `HW_Key_New` before being stored on
-the host, along with the new salt `User_Salt_New`.
-
-*Note*: The SBP has a unique serial number hwID that could also be used as an
-additional input to the KDF (though it never changes). The entropy is pretty low
-and though not easily accessible an attacker who had stolen the device could
-gain access to it. After consulting with the security team, using the hwID was
-deemed unnecessary since it wasn’t adding real entropy.
-
-##### AEAD (AES-GCM) Encryption {#aead}
-
-To encrypt the FP templates with `HW_Key` we use BoringSSL’s implementation of
-AES-GCM128.
-
-###### Initialisation Vector
-
-The encryption operations are done by the R/W firmware that doesn’t have write
-access to the Flash, so it can’t keep track of IVs that could have already been
-used during previous boots since it has no way to persist state. Instead, the
-SBP will generate a random 96-bit IV every time it needs to encrypt a template
-with `HW_Key` before sending it back to the host for storage. This only happens
-every time a user successfully matches their finger, which assuming 1 match
-every second for 10 years would result in 3600\*24\*365\*10 < 350,000,000, so
-the risk of reusing an IV is acceptable. To ensure that a compromised host could
-not try to generate too many messages to find collisions, the SBP rate-limits
-the number of encryption operations to 1 per second.
-
-The IV will be stored on the host with the salt, the encrypted templates and the
-16-byte tag for authentication.
-
-###### Authentication Tag
-
-To authenticate the encrypted templates, we use a 128-bit tag that we store in
-clear text with the encrypted template.
-
-Authentication of the encrypted templates prevents attackers from generating
-random templates to try to attack directly the matching libraries rather than
-the AES-GCM128 implementation. It also prevents attackers from trying to pass
-their own template instead of the user’s FP template.
-
-###### Encryption Flowchart
-
-Encryption of the FP template in the SBP before the ciphered data is sent to the
-AP for storage.
-
-![Encryption Flowchart]
-
-###### Decryption Flowchart
-
-Decryption of the ciphered FP template coming from the AP when the user logs in.
-
-![Decryption Flowchart]
-
-#### FP template disk format
-
-Encrypted templates are stored in a “[cryptohome daemon store folder]” that is
-only mounted/decrypted when the user has logged in. The templates are stored as
-JSON files with the following fields:
-
-```JSON
-{
- "biomanager": “CrosFpBiometricsManager” string
- "version": integer describing the version of the file format. Set to 1 at launch
- "data": Base64-encoded string containing the `HW_Key`-encrypted template
- "label": user-configurable human-readable string listed in the UI
- "record_id": UUID of that template generated at enrollment time
-}
-```
-
-##### `HW_Key`-encrypted template format
-
-The content of the "data" field is the encrypted template that can be deciphered
-by the SBP.
-
-Field Name | Field description | Field size (bytes) | Field offset (bytes)
----------- | --------------------------------------------------------------------- | ------------------ | --------------------
-Version | Number describing the version of the file format. Set to 3 at launch. | 2 | 0
-Reserved | Reserved bytes, set to 0 | 2 | 2
-Nonce | Randomly-generated IV | 12 | 4
-Salt | Randomly-generated salt | 16 | 16
-Tag | AES-GCM Authentication Tag | 16 | 32
-Template | Encrypted template | 47552 | 48
-
-When the user logs in, the cryptohome daemon store folder of that user is
-mounted and the JSON files become available to biod. For every enrolled finger,
-biod sends the `HW_Key`-encrypted template to the SBP. The SBP
-[derives `HW_Key`](#hw-key-derivation) for that template and deciphers the
-template.
-
-### Protection of the SBP
-
-To access the unencrypted data and/or `HW_Key`, attackers have 3 main options:
-
-* Temporarily gain read or even execution access in the SBP through a firmware
- bug
- * Would allow an attacker to gain access to the clear text FP data and/or
- the encryption key
- * Mitigation strategy in [Prevent RW exploits](#prevent-rw-exploits)
-* Turn a temporary compromise of the SBP’s firmware into a permanent exploit
- by replacing the SBP’s firmware with a firmware controlled by the attacker
- * Would allow an attacker to gain access to the clear text FP data and/or
- the encryption key
- * Would allow an attacker to spoof positive FP matches, defeating 2FA
- * Mitigation in [Verified firmware](#verified-firmware)
-* Use physical access and control of WP to load a compromised firmware to the
- SBP
- * Mitigation in [Control WP/BOOT0](#control-wp-boot0)
-
-#### Verified firmware {#verified-firmware}
-
-To verify the integrity of the firmware we use a mechanism similar to the one
-used to protect the EC in detachable keyboards as described in
-[Detachable Base Verified Boot].
-
-The SBP has a minimalistic RO firmware that contains the public part of an
-RSA-3072 exponent 3 key pair. The corresponding private key is only accessible
-by the Chrome OS signers and is used to sign SBP firmwares. On boot the RO
-firmware verifies the signature of the RW firmware. If the RW signature is
-valid, the RO firmware protects itself by setting the WP bit of the Flash then
-jumps to RW.
-
-##### Anti-rollback
-
-On top of verifying the signature of the RW firmware, the RO firmware must
-verify that the RW firmware is not an outdated version with known
-vulnerabilities. This is required to prevent attackers from loading valid but
-vulnerable RW firmwares. This is achieved with an anti-rollback mechanism as
-described in
-[Detachable Base Verified Boot][Detachable Base Verified Boot Anti-Rollback].
-
-###### Nocturne-specific anti-rollback
-
-On nocturne, the SBP is an STM32H7 MCU, with 128K Flash blocks. We still need 2
-pingpong RB blocks to prevent data loss, so the Flash map looks like this:
-
-Name | Size
-------------------- | -------
-RO firmware | 128 KB
-Blank | 640 KB
-RB1 + `SBP_Src_Key` | 128 KB
-RB2 + `SBP_Src_Key` | 128 KB
-RW firmware | 1024 KB
-
-The Nocturne SBP uses the same Flash block for the anti-rollback mechanism and
-`SBP_Src_Key`. Most of the anti-rollback mechanism is identical to the one
-described in
-[Detachable Base Verified Boot][Detachable Base Verified Boot Anti-Rollback],
-and the key is similar to the entropy/secret stored for
-[Detachable Base Swap Detection].
-
-The rollback minimum version is updated whenever RO has verified RW signature,
-and the RW rollback version is larger than what is stored in the RB block.
-
-When re-keying is desired, `SBP_Src_Key` is updated by doing the following
-operation:
-
-```
-SHA256(SBP_Src_Key || entropy)
-```
-
-where `entropy` is generated from STM32H7 True Random Number Generator (see
-[RM0433] Chapter 33 for details). Since there are 2 rollback blocks, and we
-ping-pong between them, re-keying should involve updating `SBP_Src_Key` twice,
-so that both blocks are erased, and no remnant of the previous key is left over.
-
-#### Prevent RW exploits {#prevent-rw-exploits}
-
-Even non-persistent exploits in the RW firmware would be problematic if the
-attacker was able to read the content of the memory or the Flash, e.g. via a
-buffer overflow, since they could gain access to the clear text FP data and/or
-the encryption key. If the attacker was also able to execute code in RW, they
-would be able to spoof positive FP matches.
-
-##### Attack through host command interface {#attack-host-command}
-
-The AP can send a number of commands to the SBP, for example to wait for a match
-or to update the RW firmware. In case of a vulnerability in the protocol an
-attacker with (potentially remote) access to the AP<->SBP SPI bus could send bad
-specially crafted commands to the SBP and potentially gain read, write or even
-execute permissions in the SBP.
-
-###### Mitigation strategies
-
-* Limit the size of the API exposed by the SBP to the AP
-* Fuzz the host command interface
-
-##### Attack through crafted templates uploaded to the SBP {#template-attack}
-
-The AP partially deciphers (with `User_Key`) the templates stored on the disk
-then sends the `HW_Key`-encrypted templates to the SBP where they will be
-deciphered and then passed to the matching algorithm. An attacker could submit a
-carefully crafted template to the SBP that would exploit holes in the closed
-source matching algorithm library.
-
-###### Mitigation strategies
-
-We use AEAD to decipher and authenticate the templates received from the AP,
-they are not passed directly to the matching library. Bad templates will be
-intercepted by the decryption code.
-
-##### RAM noexec
-
-Even if an attacker gained some level of access to the SBP, the RAM is not
-executable so it would be hard for the attacker to execute compromised code, for
-example to spoof successful authentication and break 2FA or to attempt to turn
-into a persistent compromission of the SBP by writing a new compromised firmware
-to Flash.
-
-#### Control WP/BOOT0 {#control-wp-boot0}
-
-The BOOT0 pin of the MCU is gated by the WP controlled by Haven. Since toggling
-the WP bit from Haven requires physical access to the device, remote attackers
-can’t toggle the BOOT0 pin to make the MCU start in bootloader mode and
-read/write the Flash from the AP.
-
-However, with physical access (> 5 minutes) an attacker could disable the WP
-signal from Haven and toggle the BOOT0 pin to start the MCU in bootloader mode.
-
-##### Flash protected with RDP Level 1
-
-We will set the Flash in [Global Read-out Protection (RDP) mode Level 1]. This
-means that attackers with physical access who would manage to start the MCU in
-bootloader mode would not be able to read `SBP_Src_Key` from the Flash.
-Attackers would still be able to read the content of the RAM and registers but
-at that point the MCU would just have rebooted and the RAM would be empty.
-
-If the attacker attempted to write their own code to the Flash (for example to
-replace RO), RDP Level 1 would only allow that after a complete erasure of the
-Flash that would wipe `SBP_Src_Key`, preventing the user from decrypting FP
-templates.
-
-*Note*: An attacker with that level of access could in theory replace the RO
-firmware with their own firmware. This would however have wiped enrolled
-fingers, giving the user an indication that their device might have been
-tampered with. This wouldn’t give access to existing FP templates or images to
-the attacker, only future enrollments.
-
-##### RMA
-
-To ensure that a device is clean after e.g. refurbishing, the RMA procedure
-would require that the operator disabled the WP bit from Haven and toggled BOOT0
-to switch to bootloader mode. After that a known good RO and RW firmware can be
-written to the Flash and the operator will reenable the WP bit from Haven.
-
-## Security Considerations
-
-### Security boundaries
-
-#### Chrome to system services
-
-Biod and Chrome communicate over D-Bus (defined [here][biod D-Bus API]).
-
-* Chrome lets biod know when the user has signed in, so biod can load the
- templates to the [SBP](#overview).
-* Biod lets Chrome know when the SBP has detected a positive or negative match
- so Chrome can unlock the screen.
-* Chrome tells biod to start/end enrolling a finger.
-* Chrome tells biod to start/end authentication (matching) mode.
-
-#### Kernel to firmware
-
-The SBP uses the `cros_ec` interface, same as the EC. There are additional
-SBP-specific host commands that the AP can send to the SBP, see
-[Attack through host command interface](#attack-host-command).
-
-### Privileges
-
-#### Sandboxing
-
-Biod uses Minijail ([upstart script][biod upstart script]) for [sandboxing], and
-has a [seccomp filter].
-
-### Untrusted input
-
-Encrypted templates are read from the stateful partition where they could be
-corrupted or tampered with. Biod itself doesn’t parse that input -it’s still
-encrypted by the SBP- and merely marshalls the data around to and from the SBP.
-To ensure the integrity of the input, we use [AEAD] with an
-[implementation][AEAD implementation] based on BoringSSL.
-
-The encrypted templates are wrapped inside JSON files that could be corrupted or
-tampered with. Biod does parse and interpret some fields of those JSON files.
-That input is [fuzzed].
-
-### Sensitive data
-
-The SBP handles biometric data, see the [Detailed Design](#detailed-design)
-section that describes how we keep that data protected from attackers.
-
-### Attack surface
-
-#### Libraries
-
-* Biod uses libbrillo and libchrome
-* The SBP firmware is based on the cros_ec code already used in the EC. Two
- significant additions:
- * Parts of BoringSSL (AES and AES-GCM) ported to cros_ec
- * 3rd-party proprietary blob used for matching, see
- [Closed source blobs in the SBP](#closed-source-blobs).
-
-#### Remote attacks
-
-Neither biod nor the SBP are exposed directly to remote attackers. Since biod
-communicates with Chrome over D-Bus, and attacker who had compromised Chrome
-could start sending D-Bus commands to biod.
-
-#### Closed source blobs in the SBP {#closed-source-blobs}
-
-The enrollment/matching and image capture libraries are provided by a 3rd-party
-vendor in binary form. That proprietary blob went through a security audit by a
-3rd party auditor (see the auditor’s [report][Security Audit Report].
-
-On top of the security audit of the 3rd-party proprietary code, we limit the
-attack surface of those libraries by not directly exposing them to user input.
-Data (e.g. FP templates) that is fed to those libraries isn’t directly coming
-from untrusted user input, it is sanitized by the opensource glue logic and
-wrappers. For example, we use AEAD to ensure that the encrypted data that is
-deciphered before being passed to the 3rd-party libraries has been generated by
-the SBP itself. For more details, see section
-[Attack through crafted templates uploaded to the SBP](#template-attack).
-
-### Implementation robustness
-
-#### biod (userspace daemon)
-
-##### Multi-threading/multi-process
-
-biod uses `base::MessageLoopForIO`, no custom multi-thread or multi-process
-implementation.
-
-##### State machine implementation
-
-biod has 3 main states:
-
-* Idle
-* Waiting for a match: controlled by the [AuthSession] object
-* Enrolling a new fingerprint: controlled by the [EnrollSession] object.
-
-#### cros_fp (SBP firmware)
-
-##### Multi-threading/multi-process
-
-We use the [primitives][EC primitives] of the Chromium OS EC: tasks, hooks, and
-deferred functions.
-
-##### Memory allocation
-
-Most buffers (e.g. for FP images and templates) are [statically allocated]. The
-vendor libraries do require some dynamic memory allocation, we provide
-[wrappers functions] that use the [malloc/free memory module for Chrome EC].
-
-##### State machine implementation
-
-There is one main [state machine] that configures the matching/enrollment code
-to be ready for a match or to enroll a finger.
-
-### Cryptography
-
-See detailed discussion in the ["FP template encryption"](#template-encryption)
-section.
-
-### Metrics {#metrics}
-
-Metrics related to security that we’re collecting through UMA:
-
-* `Ash.Login.Lock.AuthMethod.Used.ClamShellMode` to know if FP is used to
- authenticate
-* `Ash.Login.Lock.AuthMethod.Used.TabletMode` to know if FP is used to
- authenticate
-* `Fingerprint.Unlock.AuthSuccessful` tracks whether FP authentication was
- successful or not
-* `Fingerprint.Unlock.AttemptsCountBeforeSuccess` tracks how many attempts it
- takes for users to unlock with their fingerprint
-* `Fingerprint.UnlockEnabled` tracks whether FP unlocking is enabled or not
-* `Fingerprint.Unlock.EnrolledFingerCount` reports the number of fingers that
- users have enrolled
-
-Complete list of metrics collected via UMA:
-[New UKM collection review - CrOS FP Unlock]
-
-### Potential attacks
-
-#### Enroll a rogue fingerprint
-
-An attacker with physical access to the device could enroll their own
-fingerprint under the victim’s account and use it to unlock the device at-will
-in the future.
-
-* Enrollment UI requires the user password before telling biod to start an
- enrollment session, so the attacker would need some form of exploit to
- bypass Chrome and trigger the enrollment. We plan to replace this
- post-launch with a mechanism similar to [Authentication-Time User Secrets].
- Separate design doc to come.
-* Even if it’s not a persistent exploit, a rogue enrolled fingerprint would
- persist.
-* The victim’s fingerprint data would still be secure.
-* The enrollment UI shows how many fingers are enrolled.
-
-## Privacy Considerations
-
-### Fingerprint data is kept locally on the device
-
-The raw fingerprint images themselves never leave the SBP. The fingerprint
-templates are kept on the local storage (encrypted both with the `HW_Key` and
-the `User_Key`) of the device and not synced to the cloud, encrypted or not.
-
-### Fingerprint data decryption requires the user password
-
-The fingerprint templates are stored in a "[cryptohome daemon store folder]"
-which is only mounted when the user logs in. To do so, they must have entered
-their password.
-
-### FP matching is not used for login, only unlocking
-
-Before using their fingerprint to unlock the device the user must have logged
-in, typically with the Google Account password.
-
-### Lock screen will display a FP icon if enabled
-
-If a user has enabled FP unlocking, a FP icon will be associated to that user on
-the lock screen. This potentially lets others know that a user has enabled FP
-unlocking. This seems reasonable when the small resulting decrease in privacy is
-weighed against the fact that adding an icon greatly improves UX.
-
-### Metrics collection
-
-We collect anonymous metrics through [UMA], see section [Metrics](#metrics) for
-details.
-
-### Logs
-
-Biod, the SBP, and Chrome have logs related to the fingerprint process.
-[Privacy fields for Fingerprints] lists the log entries and their privacy
-implications. Full [PDD is here].
-
-#### Biod
-
-The log files are in `/var/log/biod/`.
-
-#### SBP
-
-The log file is `/var/log/cros_fp.log`.
-
-<!-- Links -->
-
-[2FA]: https://en.wikipedia.org/wiki/Multi-factor_authentication
-[AEAD implementation]: https://chromium.googlesource.com/chromiumos/platform/ec/+/aed008f87c3c880edecf7608ab24eaa4bee1bc46/common/fpsensor.c#574
-[AEAD]: https://en.wikipedia.org/wiki/Authenticated_encryption
-[Arm TrustZone]: https://www.arm.com/products/security-on-arm/trustzone
-[Authentication-Time User Secrets]: http://go/authentication-time-user-secrets
-[AuthSession]: https://chromium.googlesource.com/chromiumos/platform2/+/eae39a9ad1239f8fbfa8164255578b306ff6ba5c/biod/biometrics_manager.h#96
-[biod D-Bus API]: https://chromium.googlesource.com/chromiumos/platform2/+/HEAD/system_api/dbus/biod/
-[biod upstart script]: https://chromium.googlesource.com/chromiumos/platform2/+/HEAD/biod/init/biod.conf
-[ccd open]: https://chromium.googlesource.com/chromiumos/platform/ec/+/cr50_stab/docs/case_closed_debugging_cr50.md#Open-CCD
-[CDD]: https://source.android.com/compatibility/android-cdd#7_3_10_fingerprint_sensor
-[Chromium OS EC]: https://chromium.googlesource.com/chromiumos/platform/ec/+/HEAD/README.md
-[clobber-state]: https://chromium.googlesource.com/chromiumos/platform2/+/962ab1bc481db0cf504b5449eb3a3d5008ea7601/init/clobber_state.cc#475
-[cryptohome daemon store folder]: https://chromium.googlesource.com/chromiumos/docs/+/HEAD/sandboxing.md#securely-mounting-cryptohome-daemon-store-folders
-[cryptohome]: https://www.chromium.org/chromium-os/chromiumos-design-docs/protecting-cached-user-data
-[Detachable Base Swap Detection]: https://docs.google.com/document/d/1WYdkkSAL_RHVc5mUXnAvBBfAeM7Wj3ABa1dbeTdvm74/edit#heading=h.g74ijelumqop
-[Detachable Base Verified Boot Anti-Rollback]: http://go/detachable-base-vboot#heading=h.fimcm174ok3
-[Detachable Base Verified Boot]: http://go/detachable-base-vboot#heading=h.dolfbdpggye6
-[EC primitives]: https://chromium.googlesource.com/chromiumos/platform/ec/+/HEAD/README.md#Software-Features
-[EnrollSession]: https://chromium.googlesource.com/chromiumos/platform2/+/eae39a9ad1239f8fbfa8164255578b306ff6ba5c/biod/biometrics_manager.h#92
-[fingerprint authentication framework]: https://developer.android.com/about/versions/marshmallow/android-6.0.html#fingerprint-authentication
-[fuzzed]: https://chromium.googlesource.com/chromiumos/platform2/+/HEAD/biod/biod_storage_fuzzer.cc
-[Global Read-out Protection (RDP) mode Level 1]: https://www.st.com/content/ccc/resource/technical/document/application_note/b4/14/62/81/18/57/48/05/DM00075930.pdf/files/DM00075930.pdf/jcr:content/translations/en.DM00075930.pdf
-[HKDF]: https://tools.ietf.org/html/rfc5869
-[Input Key Material (IKM)]: https://en.wikipedia.org/wiki/HKDF
-[Intel SGX]: https://software.intel.com/en-us/sgx
-[macOS]: https://support.apple.com/en-us/HT207054
-[malloc/free memory module for Chrome EC]: https://chromium.googlesource.com/chromiumos/platform/ec/+/HEAD/common/shmalloc.c
-[matching algorithm]: https://en.wikipedia.org/wiki/Fingerprint#Algorithms
-[mount_encrypted]: https://chromium.googlesource.com/chromiumos/platform2/+/HEAD/cryptohome/mount_encrypted
-[New UKM collection review - CrOS FP Unlock]: https://docs.google.com/document/d/1qjDCMcBcrhSeg_uwyEIRsXHKmzUTJahcg6a4YVhkuLo
-[Old Design Doc]: https://docs.google.com/document/d/1MdPRmCDkVg1HO9DdbvPT5fDZS2ICg5ys9_ok_K95EEU
-[PDD is here]: http://go/cros-fingerprint-pdd
-[Privacy fields for Fingerprints]: https://docs.google.com/spreadsheets/d/1jLfnuhfbrImpoxuj92OkAxS_GGrm7QkpQhsUQCkO9ec
-[Privacy fields for Fingerprints]: https://docs.google.com/spreadsheets/d/1jLfnuhfbrImpoxuj92OkAxS_GGrm7QkpQhsUQCkO9ec/
-[RM0433]: https://www.st.com/content/ccc/resource/technical/document/reference_manual/group0/c9/a3/76/fa/55/46/45/fa/DM00314099/files/DM00314099.pdf/jcr:content/translations/en.DM00314099.pdf
-[sandboxing]: https://chromium.googlesource.com/chromiumos/docs/+/HEAD/sandboxing.md
-[seccomp filter]: https://chromium.googlesource.com/chromiumos/platform2/+/HEAD/biod/init/seccomp/biod-seccomp-amd64.policy
-[Security Audit Report]: https://drive.google.com/a/google.com/file/d/0B1HHKpeDpzYnMDdocGxwWUhpckpWM0hMU0tPa2ZjdEFnLU53/
-[state machine]: https://chromium.googlesource.com/chromiumos/platform/ec/+/90d177e3f0ae729bea7e24934a3c6ef9f2520d45/common/fpsensor.c#252
-[statically allocated]: https://chromium.googlesource.com/chromiumos/platform/ec/+/90d177e3f0ae729bea7e24934a3c6ef9f2520d45/common/fpsensor.c#57
-[system key]: https://chromium.googlesource.com/chromiumos/platform2/+/23b79133514ac2cd986bce21c398fb6658bda248/cryptohome/mount_encrypted/encryption_key.h#125
-[UMA]: http://go/uma
-[Windows]: https://www.microsoft.com/en-us/windows/windows-hello
-[wrappers functions]: https://chrome-internal.googlesource.com/chromeos/platform/ec-private/+/9ebb3f10c611afff695f679aaeed1a35551a116b/fpc_sensor_pal.c#52
-[TPM Seed for Fingerprint MCU]: ../fingerprint/fingerprint-tpm-seed.md
-
-<!-- Images -->
-
-<!-- If you make changes to the docs below make sure to regenerate the PNGs by
- appending "export/png" to the Google Drive link. -->
-
-<!-- https://docs.google.com/drawings/d/1-JUWTF7sUTND29BfhDvIudzX_S6g-iwoxG1InPedmVw -->
-
-[Decryption Flowchart]: ../images/cros_fingerprint_decryption_flowchart.png
-
-<!-- https://drive.google.com/open?id=1uUprgLsTUZZ2G2QWRYcRn6zBAh6ejvJagVRD7eZQv-k -->
-
-[Encryption Flowchart]: ../images/cros_fingerprint_encryption_flowchart.png
-
-<!-- https://docs.google.com/drawings/d/1DFEdxfDXEtYY3LNOOJFAxVw2A7rKouH98tnb1yiXLAA -->
-
-[Fingerprint Architecture]: ../images/cros_fingerprint_architecture_diagram.png
diff --git a/docs/fingerprint/fingerprint-debugging.md b/docs/fingerprint/fingerprint-debugging.md
deleted file mode 100644
index c77874e7bb..0000000000
--- a/docs/fingerprint/fingerprint-debugging.md
+++ /dev/null
@@ -1,254 +0,0 @@
-# Fingerprint Debugging
-
-This document describes how to attach a debugger with SWD in order to debug the
-FPMCU with [`gdb`](#gdb) or to [flash the FPMCU](#flash).
-
-[TOC]
-
-## Overview
-
-### SWD
-
-`SWD` (Single Wire Debug) was introduced by ARM with the Cortex-M family to
-reduce the pin count required by JTAG. JTAG requires 5 pins, but SWD can be done
-with only 3 pins. Furthermore, one of the freed up pins can be repurposed for
-tracing.
-
-See [CoreSight Connectors] for details on the three standard types of connectors
-used for JTAG and SWD for ARM devices.
-
-## Hardware Required
-
-* JTAG/SWD Debugger Probe: Any debug probe that supports SWD will work, but
- this document assumes that you're using a
- [Segger J-Trace PRO for Cortex-M][J-Trace].
-* [Dragonclaw v0.2 Development board][FPMCU dev board] or
- [Icetower v0.1 Development board][FPMCU dev board].
-* [Servo Micro].
-
-## Software Required
-
-* [JLink Software] \(when using [J-Trace] or other Segger debug probes). This
- is the only software required for flashing.
-* In order to perform breakpoint debugging, you will need a tool that supports
- connecting `gdbserver`. This document will assume [CLion] \(Googlers see
- [CLion for Chrome OS]) and was tested with `JLink_Linux_V684a_x86_64`.
- Alternatively, you can use [Ozone], a standalone debugger from Segger.
-
-## JLink Software {#software}
-
-Download the [JLink Software], choosing the `J-Link Software and Documentation
-pack for Linux, TGZ archive, 64-bit` version. This version is recommended
-because it's simple to extract the tarball into a directory that is accessible
-to the Chrome OS chroot. The instructions in this document assume that you have
-extracted the tarball in
-`~/chromiumos/src/platform/ec/JLink_Linux_V684a_x86_64`.
-
-## Connecting SWD {#connect-swd}
-
-### Dragonclaw v0.2
-
-The connector for SWD is `J4` on Dragonclaw v0.2.
-
-<!-- mdformat off(b/139308852) -->
-*** note
-**NOTE**: Pay attention to the location of pin 1 (red wire) in the
-photos below so that you connect with the correct orientation.
-
-`SW2` on the bottom of Dragonclaw must be set to `CORESIGHT`.
-
-If you want to connect a 20-Pin ARM Standard JTAG Connector (0.10" / 2.54 mm),
-you can use the following [adapter][JTAG to SWD Adapter] and [cable][SWD Cable].
-***
-<!-- mdformat on -->
-
-Dragonclaw v0.2 with 20-pin SWD (0.05" / 1.27mm) on J4. Only half the pins are connected. |
------------------------------------------------------------------------------------------ |
-![Dragonclaw with 20-pin SWD] |
-
-Dragonclaw v0.2 with 10-pin SWD (0.05" / 1.27mm) on J4. |
-------------------------------------------------------- |
-![Dragonclaw with 10-pin SWD] |
-
-### Icetower v0.1
-
-The connector for SWD is `J4` on Icetower v0.1.
-
-`SW2` on Icetower must be set to `CORESIGHT` (not `SERVO`).
-
-Icetower v0.1 with 20-pin SWD (0.05" / 1.27mm) on J4. |
------------------------------------------------------ |
-![Icetower with 20-pin SWD] |
-
-## Powering the Board {#power}
-
-[Servo Micro] can provide both the 3.3V for the MCU and 1.8V for the sensor.
-
-Run the following to start `servod`, which will enable power to these rails by
-default:
-
-```bash
-(chroot) $ sudo servod --board=<BOARD>
-```
-
-where `<BOARD>` is the board you are working with
-([`dartmonkey` or `bloonchipper`][fingerprint hardware]).
-
-Theoretically, it's also possible to power through J-Trace, though the
-[power pin] on J-Trace only outputs 5V, whereas the MCU runs at 3.3V and the
-sensor runs at 1.8V. The pin is also not connected on the current designs.
-
-## Flashing the FPMCU with JLink {#flash}
-
-* Install the [JLink Software](#software).
-* [Connect SWD](#connect-swd).
-* [Power the board with servo](#power).
-* Start the JLink server:
-
-```bash
-(chroot) $ cd ~/trunk/src/platform/ec
-```
-
-```bash
-# JLinkRemoteServerCLExe will listen on port 19020 (among others) by default.
-# This can be overridden with the -Port argument.
-(outside) $ ./JLink_Linux_V684a_x86_64/JLinkRemoteServerCLExe -select USB
-```
-
-You should see the following:
-
-```bash
-SEGGER J-Link Remote Server V6.84a
-Compiled Sep 7 2020 18:28:13
-
-'q' to quit '?' for help
-
-Connected to J-Link with S/N 123456
-
-Waiting for client connections...
-```
-
-* Build the FPMCU image:
-
-```bash
-(chroot) $ cd ~/trunk/src/platform/ec
-```
-
-```bash
-(chroot) $ make BOARD=<BOARD> -j
-```
-
-replacing `<BOARD>` with [`bloonchipper` or `dartmonkey`][fingerprint hardware].
-
-* Run the [`flash_jlink.py`] script:
-
-```bash
-(chroot) $ ~/trunk/src/platform/ec/util/flash_jlink.py --board <BOARD> --image ./build/<BOARD>/ec.bin
-```
-
-replacing `<BOARD>` with [`bloonchipper` or `dartmonkey`][fingerprint hardware].
-
-## Using JLink gdbserver {#gdb}
-
-Start the JLink gdbserver for the appropriate MCU type:
-
-* Dragonclaw / [Nucleo STM32F412ZG]: `STM32F412CG`
-* Icetower / [Nucleo STM32H743ZI]: `STM32H743ZI`
-
-```bash
-(outside) $ ./JLink_Linux_V684a_x86_64/JLinkGDBServerCLExe -select USB -device STM32F412CG -endian little -if SWD -speed auto -noir -noLocalhostOnly
-```
-
-You should see the port that `gdbserver` is running on in the output:
-
-```bash
-Connecting to J-Link...
-J-Link is connected.
-Firmware: J-Trace PRO V2 Cortex-M compiled Dec 13 2019 11:19:22
-Hardware: V2.00
-S/N: XXXXX
-Feature(s): RDI, FlashBP, FlashDL, JFlash, GDB
-Checking target voltage...
-Target voltage: 3.30 V
-Listening on TCP/IP port 2331 <--- gdbserver port
-Connecting to target...
-Connected to target
-Waiting for GDB connection...
-```
-
-Configure your editor to use this [`.gdbinit`], taking care to set the correct
-environment variables for the `BOARD` and `GDBSERVER` being used. For CLion, if
-you want to use a `.gdbinit` outside of your `HOME` directory, you'll need to
-[configure `~/.gdbinit`].
-
-In your editor, specify the IP address and port for `gdbserver`:
-
-```
-127.0.0.1:2331
-```
-
-You will also want to provide the symbol files:
-
-* RW image: `build/<board>/RW/ec.RW.elf`
-* RO image: `build/<board>/RO.ec.RO.elf`
-
-Also, since we're compiling the firmware in the chroot, but your editor is
-running outside of the chroot, you'll want to remap the source code path to
-account for this:
-
-* "Remote source" is the path inside the chroot:
- `/home/<username>/trunk/src/platform/ec`
-* "Local source" is the path outside the chroot:
- `${HOME}/chromiumos/src/platform/ec`
-
-To debug with CLion, you will create a new [GDB Remote Debug Configuration]
-called `EC Debug`, with:
-
-* `'target remote' args` (gdbserver IP and port from above): `127.0.0.1:2331`
-* `Symbol file` (RW or RO ELF): `/path/to/build/<board>/RW/ec.RW.elf`
-* `Path mapping`: Add remote to local source path mapping as described above.
-
-After configuring this if you select the `EC Debug` target in CLion and
-[click the debug icon][CLion Start Remote Debug], CLion and JLink will handle
-automatically flashing the ELF file and stepping through breakpoints in the
-code. Even if not debugging, this may help with your iterative development flow
-since the JLink tool can flash very quickly since it performs a differential
-flash. Note that you still need to recompile after making changes to the source
-code before launching the debugger.
-
-## Using Ozone
-
-Ozone is a free standalone debugger provided by Segger that works with the
-[J-Trace]. You may want to use it if you need more powerful debug features than
-gdbserver can provide. For example, Ozone has a register mapping for the MCUs we
-use, so you can easily inspect CPU registers. It can also be automated with a
-scripting language and show code coverage when used with a [J-Trace] that is
-connected to the trace pins on a board. Note that the Dragonclaw v0.2 uses an
-STM32F412 package that does not have the synchronous trace pins, but the
-[Nucleo STM32F412ZG] does have the trace pins.
-
-[CoreSight Connectors]: http://www2.keil.com/coresight/coresight-connectors
-[FPMCU dev board]: ./fingerprint-dev-for-partners.md#fpmcu-dev-board
-[J-Trace]: https://www.segger.com/products/debug-probes/j-trace/models/j-trace/
-[JLink Software]: https://www.segger.com/downloads/jlink/#J-LinkSoftwareAndDocumentationPack
-[Servo Micro]: ./fingerprint-dev-for-partners.md#Servo-Micro
-[JTAG to SWD Adapter]: https://www.adafruit.com/product/2094
-[SWD Cable]: https://www.adafruit.com/product/1675
-[Ozone]: https://www.segger.com/products/development-tools/ozone-j-link-debugger/
-[CLion]: https://www.jetbrains.com/clion/
-[CLion for Chrome OS]: http://go/clion-for-chromeos
-[GDB Remote Debug Configuration]: https://www.jetbrains.com/help/clion/remote-debug.html#remote-config
-[CLion Start Remote Debug]: https://www.jetbrains.com/help/clion/remote-debug.html#start-remote-debug
-[Nucleo STM32F412ZG]: https://www.st.com/en/evaluation-tools/nucleo-f412zg.html
-[Nucleo STM32H743ZI]: https://www.st.com/en/evaluation-tools/nucleo-h743zi.html
-[`.gdbinit`]: /util/gdbinit
-[configure `~/.gdbinit`]: https://www.jetbrains.com/help/clion/configuring-debugger-options.html#gdbinit-lldbinit
-[power pin]: https://www.segger.com/products/debug-probes/j-link/technology/interface-description/
-[fingerprint hardware]: ./fingerprint.md#hardware
-[`flash_jlink.py`]: https://chromium.googlesource.com/chromiumos/platform/ec/+/HEAD/util/flash_jlink.py
-
-<!-- Images -->
-
-[Dragonclaw with 20-pin SWD]: ../images/dragonclaw_with_20_pin_swd.jpg
-[Dragonclaw with 10-pin SWD]: ../images/dragonclaw_with_10_pin_swd.jpg
-[Icetower with 20-pin SWD]: ../images/icetower_with_20_pin_swd.jpg
diff --git a/docs/fingerprint/fingerprint-dev-for-partners.md b/docs/fingerprint/fingerprint-dev-for-partners.md
deleted file mode 100644
index 2d9332db5b..0000000000
--- a/docs/fingerprint/fingerprint-dev-for-partners.md
+++ /dev/null
@@ -1,657 +0,0 @@
-# FPMCU Development for Partners
-
-This document is intended to help partners (sensor vendors, MCU vendors, etc)
-that are currently (or interested in) developing fingerprint solutions for
-Chromebooks. The document assumes that you're using Linux to do the development;
-preferably a recent version of Ubuntu or Debian. Some partners have had success
-developing in a VM, but please note that we don't test that configuration.
-
-See the [FPMCU documentation] for additional development information.
-
-[TOC]
-
-## Hardware Required for Standalone Development (no Chromebook)
-
-The following hardware components can be used to set up a standalone development
-environment for FPMCU development (i.e., it does not rely on a Chromebook).
-Development for other [EC]s is often done in a similar manner, but some of them
-have their own standalone development or evaluation kits that don't require the
-use of [servo].
-
-You will need an [FPMCU reference board](#fpmcu-dev-board) and a
-[servo debugger](#servo).
-
-### FPMCU board {#fpmcu-dev-board}
-
-The Fingerprint MCU (FPMCU) board has the MCU that handles all
-fingerprint-related functionality (matching, encryption, etc). The fingerprint
-sensor itself connects to the FPMCU board.
-
-This FPMCU board is the Dragonclaw Rev 0.2. |
-------------------------------------------- |
-![Dragonclaw board] |
-
-Download the [Dragonclaw schematics, layout, and BOM][dragonclaw schematics].
-
-<!-- mdformat off(b/139308852) -->
-*** note
-**Googlers**: You can pick up the Dragonclaw development board at Chromestop.
-**Partners**: You can request a Dragonclaw development board from Google.
-***
-
-*** note
-Dragonclaw Rev 0.2 needs a [rework](#dragonclaw-rev-0.2-rework) for the FPC
-sensor to work while being powered through Servo. All of the boards at Chromestop
-have already been reworked.
-***
-<!-- mdformat on -->
-
-This FPMCU board is the Dartmonkey Rev 0.1. |
-------------------------------------------- |
-![Dartmonkey board] |
-
-### Servo
-
-Servo is a general purpose debug board that connects to a header on the FPMCU
-board. Among other things, the servo supplies power to the FPMCU and can be used
-to program the FPMCU, interact with the EC console, take power measurements, and
-debug a running program. It supports SPI, UART, I2C, as well as JTAG/SWD.
-
-There are two different servo debugger setups supported, the
-[Servo Micro](#servo-micro) and the [Servo V2 + Yoshi](#servo-v2-yoshi). The
-servo micro is recommended for its simplicity. It lacks builtin JTAG/SWD support
-for single step debugging, but Dragonclaw v0.2 has an
-[SWD connector](#servo-micro-swd) that can be used.
-
-[Servo Micro](#servo-micro) | [ServoV2 + Yoshi](#servo-v2-yoshi)
---------------------------- | ----------------------------------
-![Servo Micro] | ServoV2 ![Servo v2] Yoshi Flex ![Standard Yoshi Flex]
-
-<!-- mdformat off(b/139308852) -->
-*** note
-For more information about both servos, see [servo].
-***
-<!-- mdformat on -->
-
-### Servo Micro
-
-Unlike the Servo V2, the newer servo micro does not require any adapters to
-interface with the FPMCU board.
-
-As you can see below, one end connects to the FPMCU board and the other connect
-to the developer's computer over micro USB.
-
-![Servo Micro with Dragonclaw]
-
-<!-- mdformat off(b/139308852) -->
-*** note
-For more information about Servo Micro, see [Servo Micro Info].
-***
-<!-- mdformat on -->
-
-#### Using SWD (Optional) {#servo-micro-swd}
-
-Instructions for setup are described in [Fingerprint Debugging].
-
-### Servo V2 + Yoshi
-
-Servo V2 is the original full featured debugger. It requires a
-[Yoshi Flex Cable](#yoshi-flex-cable) to interface with the FPMCU.
-
-![Servo v2]
-
-<!-- mdformat off(b/139308852) -->
-*** note
-NOTE: More information on servo can be found in the [servo] documentation.
-***
-<!-- mdformat on -->
-
-#### Yoshi Flex Cable
-
-The Yoshi Flex cable is used to connect Servo v2 to the FPMCU board. The
-standard cable does not work with SWD, but a simple rework can be performed to
-support SWD.
-
-Standard Yoshi Flex | Yoshi Flex Reworked to Support SWD
----------------------- | -------------------------------------
-![Standard Yoshi Flex] | ![Yoshi Flex Reworked to Support SWD]
-
-Rework steps:
-
-* Remove R18 and R19
-* Wire from Pin 6 of U21 to right side of R18
-* Wire from Pin 6 of U21 to right side of R19
-
-#### Micro USB Cable
-
-A micro USB cable is needed to connect the the servo v2 board to your host Linux
-development machine.
-
-* [Micro USB Cable]
-
-#### Servo V2 Hardware Setup
-
-1. Connect the Yoshi Flex cable to servo, paying attention to the pin
- numbering.
-
- ![Connect Yoshi Flex] ![Another Yoshi Flex image]
-
-2. Connect the other end of the Yoshi Flex cable to the servo header on the
- FPMCU board.
-
- ![Connect Yoshi Flex to FPMCU board] ![Another image]
-
-3. Connect the fingerprint sensor to the header on the FPMCU board.
-
-4. Connect the micro USB cable to servo's `HOST_IN` port. The other end of the
- USB cable should be plugged into your host development machine.
-
- ![Connect USB to Servo]
-
-5. Optional: Connect SWD Debugger
-
- If you want to use SWD for debugging, connect your debugger to the `JTAG`
- header on servo v2.
-
- ![Connect SWD Debugger]
-
-## Software Setup
-
-### Get the Chromium OS source code
-
-* First, make sure you [have the prerequisites].
-* Then [get the source].
-* Create and [enter the `chroot`].
- * You can stop after the `enter the chroot` step.
-
-### Build the [EC]\ (embedded controller) codebase
-
-Open **two** terminals and enter the chroot in each:
-
-```bash
-# from a terminal on your machine
-(outside chroot) $ cd ~/chromiumos/src
-
-# enter the chroot (the flag is important)
-(outside chroot) $ cros_sdk --no-ns-pid
-```
-
-<!-- mdformat off(b/139308852) -->
-*** note
-NOTE: More information on servo can be found in the [servo] documentation.
-***
-<!-- mdformat on -->
-
-In one of the terminals, build and start `servod`
-
-Build and install `servod` in the chroot:
-
-```bash
-(chroot) $ sudo emerge hdctools
-```
-
-<!-- mdformat off(b/139308852) -->
-*** note
-In all of the following commands, replace `<BOARD>` in the command with
-`bloonchipper` or `dartmonkey` depending on the development board you are using.
-***
-<!-- mdformat on -->
-
-Run `servod`:
-
-```bash
-(chroot) $ sudo servod --board=<BOARD>
-```
-
-You should see something like this. Leave it running:
-
-```bash
-2019-04-11 15:21:53,715 - servod - INFO - Start
-2019-04-11 15:21:53,765 - servod - INFO - Found servo, vid: 0x18d1 pid: 0x5002 sid: 911416-00789
-2019-04-11 15:21:53,766 - servod - INFO - Found XML overlay for board zerblebarn
-2019-04-11 15:21:53,766 - SystemConfig - INFO - Loading XML config (/usr/lib64/python2.7/site-packages/servo/data/servo_v2_r1.xml, None, 0)
-2019-04-11 15:21:53,767 - SystemConfig - INFO - Loading XML config (/usr/lib64/python2.7/site-packages/servo/data/servo_v2_r0.xml, None, 0)
-2019-04-11 15:21:53,771 - SystemConfig - INFO - Loading XML config (/usr/lib64/python2.7/site-packages/servo/data/common.xml, None, 0)
-2019-04-11 15:21:53,772 - SystemConfig - INFO - Loading XML config (/usr/lib64/python2.7/site-packages/servo/data/power_tools.xml, None, 0)
-2019-04-11 15:21:53,774 - SystemConfig - INFO - Loading XML config (/usr/lib64/python2.7/site-packages/servo/data/keyboard.xml, None, 0)
-2019-04-11 15:21:53,775 - SystemConfig - INFO - Loading XML config (/usr/lib64/python2.7/site-packages/servo/data/uart_common.xml, None, 0)
-2019-04-11 15:21:53,777 - SystemConfig - INFO - Loading XML config (/usr/lib64/python2.7/site-packages/servo/data/ftdii2c_cmd.xml, None, 0)
-2019-04-11 15:21:53,777 - SystemConfig - INFO - Loading XML config (/usr/lib64/python2.7/site-packages/servo/data/usb_image_management.xml, None, 0)
-2019-04-11 15:21:53,784 - SystemConfig - INFO - Loading XML config (/usr/lib64/python2.7/site-packages/servo/data/servo_zerblebarn_overlay.xml, None, 0)
-2019-04-11 15:21:53,785 - SystemConfig - INFO - Loading XML config (/usr/lib64/python2.7/site-packages/servo/data/servoflex_v2_r0_p50.xml, None, 0)
-2019-04-11 15:21:53,792 - Servod - INFO - Initializing interface 1 to ftdi_empty
-2019-04-11 15:21:53,792 - Servod - INFO - Initializing interface 2 to ftdi_i2c
-2019-04-11 15:21:53,795 - Servod - INFO - Initializing interface 3 to ftdi_uart
-2019-04-11 15:21:53,799 - Servod - INFO - /dev/pts/8
-2019-04-11 15:21:53,799 - Servod - INFO - Initializing interface 4 to ftdi_uart
-2019-04-11 15:21:53,802 - Servod - INFO - /dev/pts/9
-2019-04-11 15:21:53,802 - Servod - INFO - Use the next FTDI part @ pid = 0x5003
-2019-04-11 15:21:53,802 - Servod - INFO - Initializing interface 5 to ftdi_empty
-2019-04-11 15:21:53,802 - Servod - INFO - Use the next FTDI part @ pid = 0x5003
-2019-04-11 15:21:53,802 - Servod - INFO - Initializing interface 6 to ftdi_empty
-2019-04-11 15:21:53,802 - Servod - INFO - Use the next FTDI part @ pid = 0x5003
-2019-04-11 15:21:53,802 - Servod - INFO - Initializing interface 7 to ftdi_uart
-2019-04-11 15:21:53,805 - Servod - INFO - /dev/pts/10
-2019-04-11 15:21:53,805 - Servod - INFO - Use the next FTDI part @ pid = 0x5003
-2019-04-11 15:21:53,805 - Servod - INFO - Initializing interface 8 to ftdi_uart
-2019-04-11 15:21:53,808 - Servod - INFO - /dev/pts/11
-2019-04-11 15:21:53,808 - Servod - INFO - Initializing interface 9 to ec3po_uart
-2019-04-11 15:21:53,811 - PD/Cr50 - EC3PO Interface - INFO - -------------------- PD/Cr50 console on: /dev/pts/12
-2019-04-11 15:21:53,811 - Servod - INFO - Initializing interface 10 to ec3po_uart
-2019-04-11 15:21:53,812 - EC - EC3PO Interface - INFO - -------------------- EC console on: /dev/pts/14
-2019-04-11 15:21:54,316 - Servod - INFO - Initialized i2c_mux to rem
-2019-04-11 15:21:54,317 - Servod - INFO - Initialized i2c_mux_en to on
-2019-04-11 15:21:54,319 - Servod - INFO - Initialized pch_disable to off
-2019-04-11 15:21:54,320 - Servod - INFO - Initialized jtag_buf_on_flex_en to off
-2019-04-11 15:21:54,321 - Servod - INFO - Initialized cold_reset to off
-2019-04-11 15:21:54,322 - Servod - INFO - Initialized warm_reset to off
-2019-04-11 15:21:54,323 - Servod - INFO - Initialized spi1_buf_on_flex_en to off
-2019-04-11 15:21:54,324 - Servod - INFO - Initialized spi_hold to off
-2019-04-11 15:21:54,326 - Servod - INFO - Initialized pwr_button to release
-2019-04-11 15:21:54,327 - Servod - INFO - Initialized lid_open to yes
-2019-04-11 15:21:54,328 - Servod - INFO - Initialized spi2_buf_on_flex_en to off
-2019-04-11 15:21:54,330 - Servod - INFO - Initialized rec_mode to off
-2019-04-11 15:21:54,331 - Servod - INFO - Initialized fw_up to off
-2019-04-11 15:21:54,332 - Servod - INFO - Initialized usb_mux_sel1 to dut_sees_usbkey
-2019-04-11 15:21:54,333 - Servod - INFO - Initialized prtctl4_pwren to on
-2019-04-11 15:21:54,334 - Servod - INFO - Initialized uart3_en to on
-2019-04-11 15:21:54,334 - Servod - INFO - Initialized dut_hub_pwren to on
-2019-04-11 15:21:54,335 - Servod - INFO - Initialized kbd_en to off
-2019-04-11 15:21:54,337 - Servod - INFO - Initialized spi1_vref to pp3300
-2019-04-11 15:21:54,338 - Servod - INFO - Initialized spi2_vref to pp1800
-2019-04-11 15:21:54,339 - Servod - INFO - Initialized uart2_en to on
-2019-04-11 15:21:54,340 - Servod - INFO - Initialized uart1_en to on
-2019-04-11 15:21:54,341 - Servod - INFO - Initialized jtag_buf_en to off
-2019-04-11 15:21:54,342 - Servod - INFO - Initialized fw_wp_en to off
-2019-04-11 15:21:54,343 - Servod - INFO - Initialized sd_vref_sel to off
-2019-04-11 15:21:54,343 - Servod - INFO - Initialized ec_ec3po_interp_connect to on
-2019-04-11 15:21:54,344 - Servod - INFO - Initialized uart3_vref to off
-2019-04-11 15:21:54,345 - Servod - INFO - Initialized jtag_vref_sel0 to pp3300
-2019-04-11 15:21:54,346 - Servod - INFO - Initialized jtag_vref_sel1 to pp3300
-2019-04-11 15:21:54,346 - Servod - INFO - Initialized fpmcu_ec3po_interp_connect to on
-2019-04-11 15:21:54,349 - ServoDeviceWatchdog - INFO - Watchdog setup for devices: set([(6353, 20482, '911416-00789')])
-2019-04-11 15:21:54,351 - servod - INFO - Listening on localhost port 9999
-```
-
-In the other terminal, build and flash the firmware:
-
-Navigate to the EC source:
-
-```bash
-(chroot) $ cd ../platform/ec
-```
-
-Build the firmware:
-
-```bash
-(chroot) $ make BOARD=<BOARD> -j
-```
-
-The resulting file will be in `build/<BOARD>/ec.bin`
-
-Flash the firmware file:
-
-```bash
-(chroot) $ ./util/flash_ec --board=<BOARD> --image=./build/<BOARD>/ec.bin
-```
-
-Prepare a serial terminal in your chroot:
-
-```bash
-(chroot) $ sudo emerge screen
-```
-
-Connect to the UART pty:
-
-```bash
-(chroot) $ sudo screen $(dut-control raw_fpmcu_console_uart_pty | cut -d: -f2)
-```
-
-Press enter key several times (may need to wait up to 20 seconds). Then you will
-see a prompt:
-
-```
->
-```
-
-At this point you are connected to the MCU's serial (UART) console. You can list
-all of the available console commands with "help":
-
-```
-> help
-```
-
-```bash
-Known commands:
-  chan           fpcapture      hcdebugsherase     fpenroll       history        spixfer        waitms
-  flashinfo      fpmatch        hostevent      sysinfo
-  flashread      gettime        md             sysjump
-  flashwp        gpioget        panicinfo      syslock
-  flashwrite     gpioset        reboot         taskinfo
-HELP LIST = more info; HELP CMD = help on CMD.
-```
-
-Start a fingerprint enrollment:
-
-```
-> fpenroll
-```
-
-### Measuring Power {#measure-power}
-
-The Dragonclaw reference board has an onboard INA that monitors the voltage and
-power draw of the MCU and FP Sensor independently.
-
-Signal Name | Description
---------------- | -------------------------------------
-`pp3300_dx_mcu` | 3.3V supplying the MCU
-`pp3300_dx_fp` | 3.3V supplying the fingerprint sensor
-`pp1800_dx_fp` | 1.8V supplying the fingerprint sensor
-
-You can monitor all power and voltages by using the following command:
-
-```bash
-(chroot) $ watch -n0.5 dut-control pp3300_dx_mcu_mv pp3300_dx_fp_mv pp1800_dx_fp_mv pp3300_dx_mcu_mw pp3300_dx_fp_mw pp1800_dx_fp_mw
-```
-
-You can get a summary of the power over `N` seconds with:
-
-```bash
-(chroot) $ dut-control -t N pp3300_dx_mcu_mv pp3300_dx_fp_mv pp1800_dx_fp_mv pp3300_dx_mcu_mw pp3300_dx_fp_mw pp1800_dx_fp_mw
-```
-
-<!-- mdformat off(b/139308852) -->
-*** note
-The `_mv` suffix denotes millivolt and `_mw` suffix denotes milliwatt.
-***
-
-*** note
-See [Power Measurement Documentation] for more information.
-***
-<!-- mdformat on -->
-
-### Toggling Hardware Write Protect
-
-When using a fingerprint development board connected to servo, you can toggle
-hardware write protect for testing.
-
-**NOTE**: `servod` must be running.
-
-Check the state of hardware write protect:
-
-```bash
-(chroot) $ dut-control fw_wp_en
-```
-
-Enable hardware write protect:
-
-```bash
-(chroot) $ dut-control fw_wp_en:on
-```
-
-Disable hardware write protect:
-
-```bash
-(chroot) $ dut-control fw_wp_en:off
-```
-
-### Contributing Changes
-
-#### Using Gerrit and git
-
-If you’re not familiar with `git`, Gerrit (code review) and `repo`, here are
-some docs to help you get started:
-
-* [Git and Gerrit Intro for Chromium OS]: Useful to get started as quickly as
- possible, but does not explain how `git` works under the hood.
-* [Set your editor]: Use your favorite editor when writing `git` commit
- messages.
-* [Chromium OS Contributing Guide]: Detailed overview of contributing changes
- to Chromium OS and the workflow we use.
-* [Git: Concepts and Workflow]: Good overview of how `git` actually works.
-* [Gerrit: Concepts and Workflow]: Good overview of how Gerrit works; assumes
- you understand `git` basics.
-* [Life of a patch]: Android workflow, but similar to Chrome OS.
-
-The Gerrit dashboard that will show your pending reviews (and ones we have for
-you):
-
-* [Public Gerrit]
-* [Internal Gerrit]
-
-#### Registering for a chromium.org *Internal* Account
-
-If your partnership agreement requires non-public code sharing you will need to
-register for an account on the [Internal Gerrit]. Refer to the
-[Gerrit Credentials Setup] page for details. Once you register for an internal
-account, your contact at Google can make sure you have the necessary permissions
-to access the private repository.
-
-<!-- mdformat off(b/139308852) -->
-*** note
-**NOTE**: In order to use a private repository you will have to manually add it
-to the repo manifest file before running `repo sync`. Check with your contact
-at Google for the exact values to use below:
-
-**`(outside) $ ~/chromiumos/.repo/manifests/default.xml`**
-
-```xml
-<project remote="cros-internal"
- path="CHECK WITH GOOGLE"
- groups="firmware"
- name="CHECK WITH GOOGLE" />
-```
-
-**`(outside) $ ~/chromiumos/.repo/manifests/remote.xml`**
-
-```xml
-<remote name="cros-internal"
- fetch="https://chrome-internal.googlesource.com"
- review="https://chrome-internal-review.googlesource.com" />
-```
-***
-<!-- mdformat on -->
-
-### Tracking Issues and Communication
-
-Development issue tracking and communication is done through the
-[Partner Issue Tracker]. You will use your [Partner Domain] account to access
-the [Partner Issue Tracker]. If you do not already have a [Partner Domain]
-account, please request one from your Google contact.
-
-In order to make sure that you receive email notifications for issues, please
-make sure that you [set up email forwarding] and set your
-[notification settings] appropriately. Communication should primarily be done
-through the [Partner Issue Tracker] and not email so that it can be more easily
-tracked by multiple people and a record is preserved for posterity.
-
-[Partner Issue Tracker]: https://developers.google.com/issue-tracker/guides/partner-access
-[Partner Domain]: https://developers.google.com/issue-tracker/guides/partner-domains
-[set up email forwarding]: https://developers.google.com/issue-tracker/guides/partner-domains#email_forwarding
-[notification settings]: https://developers.google.com/issue-tracker/guides/set-notification-preferences
-
-## Working with Chromebooks
-
-Chromebooks have an FPMCU (e.g., Dragonclaw) board attached to the motherboard.
-You can use the device to run `ectool` commands and test the fingerprint sensor
-from the UI.
-
-### Developer Mode and Write Protection
-
-Make sure that your fingerprint-equipped Chrome OS device is in [developer mode]
-with a *test* image flashed and [hardware write protection] disabled. Using the
-test image will allow you to SSH into the device and disabling hardware write
-protection allows you to have full access to flashing the FPMCU firmware.
-
-See [Installing Chromium] for details on flashing test images and enabling
-[developer mode].
-
-### Connecting
-
-In general, most of our development is done by connecting to the DUT (device
-under test) via SSH. We usually connect the DUT to ethernet (e.g., via USB-C to
-Ethernet converter), but WiFi should also work (assuming corporate firewall
-restrictions don’t block SSH port 22). To get the IP address, tap the
-battery/time icon in the lower right corner. Then tap on “Ethernet” followed by
-the gear icon in the upper right.
-
-```bash
-(chroot) $ ssh root@<IP_ADDRESS>
-Password: test0000
-```
-
-Once you have SSH’ed into the DUT, you should be able to run `ectool` commands.
-
-**Example**: Capture a "test_reset" image from the sensor and write it to a
-[PNM] file (viewable with the ImageMagick `display` command):
-
-```bash
-(device) $ ectool --name=cros_fp fpmode capture test_reset; ectool --name=cros_fp waitevent 5 500; ectool --name=cros_fp fpframe > /tmp/test_reset.pnm
-```
-
-Alternatively, you can access a shell via the UI on device by pressing
-`CTRL+ALT+F2` (third key on top row). Log in with `root` and `test0000`.
-
-### Flashing FPMCU from DUT
-
-Copy the firmware to the DUT:
-
-```bash
-(chroot) $ scp ./build/bloonchipper/ec.bin <DUT_IP>:/tmp/ec.bin
-```
-
-From the DUT, flash the firmware you copied:
-
-```bash
-(device) $ flash_fp_mcu /tmp/ec.bin
-```
-
-## Commit-queue Prototype Environment
-
-![CQ Prototype Environment]
-
-## Troubleshooting
-
-### Dragonclaw Rev 0.2 Rework {#dragonclaw-rev-0.2-rework}
-
-<!-- mdformat off(b/139308852) -->
-*** note
-**NOTE**: All Dragonclaw v0.2 boards have been reworked, so it is not necessary
-to perform the rework yourself.
-***
-<!-- mdformat on -->
-
-Dragonclaw **Rev 0.2** has two load switches (`U4` and `U6`) that enable the
-1.8V power rail from the servo connector or motherboard connector. However, this
-switch is not compatible with 1.8V, so will always output 0V.
-
-The [rework document][Dragonclaw Rev 0.2 1.8V Rework] describes replacing these
-two switches with ones compatible with 1.8V.
-
-### Dragonclaw Rev 0.1 Servo Fix
-
-Dragonclaw **Rev 0.1** has a known issue with UART and JTAG. Most notably, this
-issue causes servo micro to fail to program the FPMCU over UART.
-
-This issue can be fixed with the following rework steps:
-
-* Connect servo header pin 13 to pin 18
-* Connect servo header pin 13 to pin 29
-
-![Dragonclaw servo fix diagram]
-
-### Verify that servo and debugger are connected to USB {#servo-connected}
-
-Check whether servo is enumerating on USB. If you are using a debugger
-(Lauterbach, J-Link, etc), also check to make sure it enumerates. Depending on
-the debugger being used, it may need to be powered with an external power
-supply.
-
-```bash
-(chroot) $ lsusb
-
-Bus 002 Device 003: ID 0897:0004 Lauterbach # ← This is my Lauterbach (debugger)
-Bus 001 Device 013: ID 18d1:5002 Google Inc. # ← This is servo
-```
-
-### "No servos found" when running servod
-
-If you get the following message, make sure that
-[servo is connected to USB](#servo-connected). You may also want to try
-restarting your machine (or VM).
-
-```bash
-(chroot) $ sudo servod --board=bloonchipper
-2019-04-12 14:53:42,236 - servod - INFO - Start
-2019-04-12 14:53:42,270 - servod - ERROR - No servos found
-```
-
-### Losing characters in servo UART console
-
-Make sure that this interface is disabled:
-
-```bash
-(chroot) $ dut-control usbpd_ec3po_interp_connect:off
-```
-
-### FPMCU console commands
-
-* Once the console is working you can use `help` to see the commands.
-* There should be fingerprint commands that start with `fp` (see `fpsensor.c`
- in the [EC] code).
-
-<!-- Links -->
-
-[EC]: https://chromium.googlesource.com/chromiumos/platform/ec
-[ectool_servo_spi]: https://chromium.googlesource.com/chromiumos/platform/ec/+/HEAD/util/comm-servo-spi.c#15
-[servo]: https://chromium.googlesource.com/chromiumos/third_party/hdctools/+/HEAD/README.md
-[developer mode]: https://chromium.googlesource.com/chromiumos/docs/+/HEAD/debug_buttons.md#firmware-keyboard-interface
-[hardware write protection]: https://chromium.googlesource.com/chromiumos/platform/ec/+/HEAD/docs/write_protection.md
-[have the prerequisites]: https://chromium.googlesource.com/chromiumos/docs/+/HEAD/developer_guide.md#Prerequisites
-[get the source]: https://chromium.googlesource.com/chromiumos/docs/+/HEAD/developer_guide.md#get-the-source
-[enter the `chroot`]: https://chromium.googlesource.com/chromiumos/docs/+/HEAD/developer_guide.md#building-chromium-os
-[Chromium OS Contributing Guide]: https://chromium.googlesource.com/chromiumos/docs/+/HEAD/contributing.md
-[Servo Micro Info]: https://chromium.googlesource.com/chromiumos/third_party/hdctools/+/HEAD/docs/servo_micro.md
-[Set your editor]: https://chromium.googlesource.com/chromiumos/docs/+/HEAD/developer_guide.md#Set-your-editor
-[Life of a patch]: https://source.android.com/setup/contribute/life-of-a-patch
-[Git: Concepts and Workflow]: https://docs.google.com/presentation/d/1IQCRPHEIX-qKo7QFxsD3V62yhyGA9_5YsYXFOiBpgkk/
-[Gerrit: Concepts and Workflow]: https://docs.google.com/presentation/d/1C73UgQdzZDw0gzpaEqIC6SPujZJhqamyqO1XOHjH-uk/
-[Public Gerrit]: https://chromium-review.googlesource.com
-[Power Measurement Documentation]: https://chromium.googlesource.com/chromiumos/third_party/hdctools/+/HEAD/docs/power_measurement.md
-[Internal Gerrit]: https://chrome-internal-review.googlesource.com
-[Gerrit Credentials Setup]: https://www.chromium.org/chromium-os/developer-guide/gerrit-guide
-[Micro USB Cable]: https://www.monoprice.com/product?p_id=9762
-[PNM]: https://en.wikipedia.org/wiki/Netpbm_format
-[Git and Gerrit Intro for Chromium OS]: https://chromium.googlesource.com/chromiumos/docs/+/HEAD/git_and_gerrit_intro.md
-[Installing Chromium]: https://chromium.googlesource.com/chromiumos/docs/+/HEAD/developer_guide.md#installing-chromium-os-on-your-device
-[FPMCU documentation]: ./fingerprint.md
-[Fingerprint Debugging]: ./fingerprint-debugging.md
-[dragonclaw schematics]: ../schematics/dragonclaw
-
-<!-- Images -->
-
-[Servo Micro]: ../images/servo_micro.jpg
-[Servo Micro with Dragonclaw]: ../images/servomicro_dragonclaw.jpg
-[Servo v2]: ../images/servo_v2.jpg
-[Standard Yoshi Flex]: ../images/yoshi_flex.jpg
-[Yoshi Flex Reworked to Support SWD]: ../images/yoshi_flex_swd_rework.jpg
-[Dragonclaw board]: ../images/dragonclaw_rev_0.2.jpg
-[Dragonclaw servo fix diagram]: ../images/dragonclaw_servo_fix.jpg
-[Connect USB to Servo]: ../images/servo_v2_with_micro_usb.jpg
-[Connect Yoshi Flex]: ../images/servo_v2_with_yoshi_flex.jpg
-[Another Yoshi Flex image]: ../images/servo_v2_with_yoshi_flex2.jpg
-[Connect Yoshi Flex to FPMCU board]: ../images/dragonclaw_yoshi_flex_header.jpg
-[Another image]: ../images/dragonclaw_yoshi_flex_header2.jpg
-[Connect SWD Debugger]: ../images/servo_v2_jtag_header.jpg
-[Dartmonkey board]: ../images/dartmonkey.jpg
-
-<!-- If you make changes to the docs below make sure to regenerate the JPEGs by
- appending "export/pdf" to the Google Drive link. -->
-
-<!-- https://docs.google.com/drawings/d/1YhOUD-Qf69NUdugT6n0cX7o7CWvb5begcdmJwv7ch6I -->
-
-[Dragonclaw Rev 0.2 1.8V Rework]: https://github.com/coreboot/chrome-ec/blob/master/docs/images/dragonclaw_rev_0.2_1.8v_load_switch_rework.pdf
-
-<!-- https://docs.google.com/drawings/d/1w2qbb4AsSxY-KTK2vXZ6TKeWHveWvS3Dkgh61ocu0wc -->
-
-[CQ Prototype Environment]: ../images/CQ_Prototype_Environment.jpg
diff --git a/docs/fingerprint/fingerprint-factory-quick-guide.md b/docs/fingerprint/fingerprint-factory-quick-guide.md
deleted file mode 100644
index c9478bf99a..0000000000
--- a/docs/fingerprint/fingerprint-factory-quick-guide.md
+++ /dev/null
@@ -1,97 +0,0 @@
-# Chrome OS Fingerprint Sensor: Quick Factory Guide
-
-The goal of this document is to outline how ODM partners can make use of the
-existing Chrome OS factory scripts to meet Chrome OS FPS factory requirements.
-
-[TOC]
-
-## Factory Requirements
-
-### Flash firmware for fingerprint sensor microcontroller (FPMCU)
-
-FPMCU firmware must be flashed before fingerprint functional test is run. ODM
-partners may work with the module house to preflash FPMCU firmware before
-factory SMT. However, this way ODM partners have to coordinate with the module
-house to make sure the preflash FPMCU firmware blob is extracted from the FSI
-release image (from /opt/google/biod/fw/). If the FPMCU firmware doesn’t match
-the FPMCU firmware blob checked into the release image, the end users will see
-the ‘critical update’ screen in their out-of-box experience, because
-bio\_fw\_updater tries to update FPMCU firmware at boot time. This is a bad user
-experience we want to avoid. Most importantly, in PVT/MP build, only the FPMCU
-firmware in the release image would be signed by MP key. So you **MUST** ensure
-FPMCU is flashed with the MP-signed firmware blob extracted from FSI, before
-shipping the devices.
-
-As opposed to pre-flashing FPMCU in the module house, ODM partners are
-encouraged to make use of
-[update\_fpmcu\_firmware.py](https://chromium.googlesource.com/chromiumos/platform/factory/+/e5e903d0a0d8327dd8b9e47d2c808fd845ed73a4/py/test/pytests/update_fpmcu_firmware.py)
-to update FPMCU firmware in the factory flow. This script can detect fingerprint
-MCU board name, find the right FPMCU firmware blob for the DUT from the release
-partition, and then flash FPMCU by flash\_fp\_mcu tool. Please note that this
-script may take more than 30 secs to complete, which is slow.
-
-Since bio\_fw\_update has been disabled in factory test image via
-[crrev/c/1913645](https://chromium-review.googlesource.com/c/chromiumos/platform2/+/1913645),
-in the factory flow, the FPMCU firmware should not be overwritten by
-boot-update-firmware service during reboot.
-
-### Run fingerprint sensor functional test
-
-Please add
-[fingerprint\_mcu.py](https://chromium.git.corp.google.com/chromiumos/platform/factory/+/a283609cd8446ba4a4b75c2e1d84c9ba24ea8422/py/test/pytests/fingerprint_mcu.py)
-to your device test list. A more detailed description about this test can be
-found
-[here](https://chromium.googlesource.com/chromiumos/platform/ec/+/HEAD/docs/fingerprint/fingerprint-factory-requirements.md).
-
-### Initialize FPMCU entropy in factory finalization
-
-The support for FPMCU entropy initialization has been integrated into the
-factory finalization script. So FPMCU entropy should be automatically
-initialized in factory finalization, if a FPMCU is found on DUT. Note that FPMCU
-entropy initialization would fail if rollback\_block\_id is not equal to zero,
-which means the entropy has been initialized before. It is usually caused by
-biod trying to initialize FPMCU entropy and increment rollback\_block\_id at
-boot time. Since we have disabled biod and bio\_crypto\_init in factory test
-image via
-[crrev/c/1910290](https://chromium-review.googlesource.com/c/chromiumos/platform/factory/+/1910290),
-we expect rollback\_block\_id would stay zero during the factory flow, and FPMCU
-entropy initialization should succeed in factory finalization. So just run
-factory finalization as any other CrOS boards.
-
-### Enable FPMCU software write protection (SWWP) in factory finalization in PVT/MP
-
-The support for FPMCU SWWP has been integrated into factory finalization script.
-So FPMCU SWWP should be automatically enabled in factory finalization together
-with AP/EC SWWP when write\_protection arg is set to true and a FPMCU is found
-on DUT. Just run factory finalization as any other CrOS boards.
-
-### Reset entropy for factory re-finalization (in case of RMA or OQC)
-
-For the boards that have been finalized, FPMCU entropy has been initialized. So
-running re-finalization for those boards are expected to fail at FPMCU entropy
-initialization. Before running re-finalization for those boards, ODM partners
-have to remove hardware write protection (HWWP) and then run
-[update\_fpmcu\_firmware.py](https://chromium.googlesource.com/chromiumos/platform/factory/+/d399a0a1bdeb7249de2721b269e7365e4486e23c/py/test/pytests/update_fpmcu_firmware.py)
-to reset rollback\_block\_id and entropy. So the follow-up re-finalization
-(which re-initialize entropy) can succeed.
-
-## References
-
-* CrOS fingerprint factory requirements:
- [doc link](https://chromium.googlesource.com/chromiumos/platform/ec/+/HEAD/docs/fingerprint/fingerprint-factory-requirements.md)
-* The summary of CLs:
- * Add a factory script to update FPMCU firmware:
- [crrev/c/1918679](https://chromium-review.googlesource.com/c/chromiumos/platform/factory/+/1918679),
- [crrev/c/1913493](https://chromium-review.googlesource.com/c/chromiumos/platform/factory/+/1913493),
- [crrev/c/1927149](https://chromium-review.googlesource.com/c/chromiumos/platform/factory/+/1927149),
- [crrev/c/1984618](https://chromium-review.googlesource.com/c/chromiumos/platform/factory/+/1984618),
- [crrev/c/2036574](https://chromium-review.googlesource.com/c/chromiumos/platform/factory/+/2036574)
- * Disable FPS-related services that will interfere with the factory flow:
- [crrev/c/1913645](https://chromium-review.googlesource.com/c/chromiumos/platform2/+/1913645),
- [crrev/c/1910290](https://chromium-review.googlesource.com/c/chromiumos/platform/factory/+/1910290)
- * Support FPMCU in factory finalization:
- [crrev/c/1868795](https://chromium-review.googlesource.com/c/chromiumos/platform/factory/+/1868795),
- [crrev/c/1902267](https://chromium-review.googlesource.com/c/chromiumos/platform/factory/+/1902267),
- [crrev/c/1900503](https://chromium-review.googlesource.com/c/chromiumos/platform/factory/+/1900503),
- [crrev/c/1925927](https://chromium-review.googlesource.com/c/chromiumos/platform/factory/+/1925927),
- [crrev/c/1948163](https://chromium-review.googlesource.com/c/chromiumos/platform/factory/+/1948163)
diff --git a/docs/fingerprint/fingerprint-factory-requirements.md b/docs/fingerprint/fingerprint-factory-requirements.md
deleted file mode 100644
index 0fc99e2740..0000000000
--- a/docs/fingerprint/fingerprint-factory-requirements.md
+++ /dev/null
@@ -1,502 +0,0 @@
-# Chrome OS Fingerprint Factory Requirements
-
-This document provides an overview of factory requirements and testing for the
-fingerprint sensor.
-
-[TOC]
-
-## Contact
-
-For questions regarding this document, please contact the
-[Chrome OS Fingerprint Team].
-
-## Terminology
-
-* `AP`: Application Processor.
-* `FPMCU`: Fingerprint Microcontroller.
-* `FATP`: Final Assembly, Test, and Pack
-* `FP sensor`: Fingerprint sensor. Directly connected to the FPMCU, not the
- AP.
-* `firmware`: Software that runs on the FPMCU.
-* `finalization`: Process that is run in the factory before the device being
- built leaves the factory.
-* `entropy`: Cryptographically secure random bytes stored in FPMCU flash. Used
- for encrypting/decrypting fingerprint templates.
-* `software write protect`: Prevents the RO portion of the FPMCU’s flash from
- being overwritten. Full details in [EC docs][Software Write Protect].
-* `ITS`: In-Device Test Specification.
-* `MTS`: Module Test Specification.
-* `MQT`: Module Quality Test.
-* `MQT2`: Module Quality Test 2.
-
-## Documents
-
-* [FPC1025: Module Test Specification]
-* [FPC1145: Module Test Specification]
-* [FPC In-Device Test Specification]
-* [Factory Fingerprint Sensor Testing for `nocturne` ]
-
-## FPMCU Firmware Location
-
-The binaries for the FPMCU firmware are located in `/opt/google/biod/fw`. Now
-that Chrome OS supports unibuild, there may be multiple firmware binaries in the
-directory since multiple sensors may be used across a single "board" (e.g., the
-`hatch` board can use either `bloonchipper` or `dartmonkey`).
-
-The correct firmware type to use for a given board can be discovered with the
-[Chrome OS Config] tool:
-
-```bash
-(dut) $ cros_config /fingerprint board
-dartmonkey
-```
-
-OR
-
-```bash
-(chroot) $ cros_config_host -c /build/<BOARD>/usr/share/chromeos-config/yaml/config.yaml -m <MODEL> get /fingerprint board
-dartmonkey
-```
-
-The corresponding firmware for the above command would be
-`/opt/google/biod/fw/dartmonkey_*.bin`.
-
-<!-- mdformat off(b/139308852) -->
-*** note
-**NOTE**: If you get an empty response when running the above commands, the
-Chrome OS Config settings may not have been updated for the Chrome OS board.
-See the instructions on [updating Chrome OS Config] for fingerprint.
-***
-<!-- mdformat on -->
-
-Note that the fingerprint team continuously releases updates to the firmware, so
-SIEs should watch for version changes in ToT if they are maintaining a separate
-factory branch.
-
-## Flashing the FPMCU
-
-When the FPMCU is completely blank a low-level flashing tool must be used to
-program an initial version of the FPMCU firmware. It’s possible to use the
-[`flash_fp_mcu`] script as this low-level flashing tool, though since it
-requires the AP and is not necessarily robust against failures, it is not
-recommended for mass-production. More details about [`flash_fp_mcu`] are in the
-[Fingerprint flashing documentation].
-
-The initial version of the FPMCU firmware should be flashed either by the module
-house or by the factory. Once an initial version of the FPMCU firmware has been
-flashed (i.e., the FPMCU is not blank), the `bio_fw_updater` tool runs on
-startup and handles updating the FPMCU firmware to match the version that is in
-the rootfs. Note that this update process can take around 30 seconds; if that
-length of time is an issue then the factory or module house should pre-flash the
-latest firmware beforehand.
-
-<!-- mdformat off(b/139308852) -->
-*** note
-**NOTE**: If the FPMCU is not flashed in the factory as part of development
-builds (EVT, etc.), it's possible for developers (or Chromestop) to manually
-run [`flash_fp_mcu`], as long as they can disable [hardware write protect].
-Obviously this only applies during development, not mass production.
-***
-<!-- mdformat on -->
-
-## biod and timberslide
-
-Since `biod` communicates with the FPMCU, it’s best to disable it when running
-the fingerprint factory tests. This can be done with upstart:
-
-```bash
-(dut) $ stop biod
-```
-
-Once testing is complete `biod` should be restarted (or you can reboot the
-device).
-
-`timberslide` is the daemon that periodically sends commands to the FPMCU to
-read the latest FPMCU logs. It writes the results to `/var/log/cros_fp.log`. It
-should be fine to leave running during tests, though it should be stopped before
-running the [`flash_fp_mcu`] script, since that script erases the entire FPMCU:
-
-```bash
-(dut) $ stop timberslide LOG_PATH=/sys/kernel/debug/cros_fp/console_log
-```
-
-## Factory Tests
-
-### Fingerprint Sensor (standalone module)
-
-When using an FPC sensor (e.g., FPC 1025, FPC 1145), the fingerprint sensor
-itself must be tested by the module manufacturer with FPC’s tools. FPC provides
-a Module Test Tool (MTT), which requires additional hardware (FPC Module Test
-Card). FPC also provides design drawings for the rubber stamp. The stamp,
-test-fixture and test station need to be implemented by the OEM/ODM/Module House
-(often only module house).
-
-The `MTS` _must_ be followed by the module manufacturer, but Google does not
-provide direct support for this testing. FPC is the main point of contact.
-
-The module testing procedure is documented in the following:
-
-[FPC1025: Module Test Specification]
-
-[FPC1145: Module Test Specification]
-
-### Fingerprint Sensor + FPMCU (in device)
-
-In-device tests are run during the `FATP` process once the device has been fully
-assembled. Google provides source code for these tests in
-[`fingerprint_mcu.py`].
-
-Hardware Required: Chrome OS DUT before finalization.
-
-Documentation: [FPC In-Device Test Specification]
-
-#### Test Image Checkerboard and Inverted Checkerboard Test (CB/ICB)
-
-##### Purpose
-
-Capture a checkerboard (and inverted checkerboard) pattern and verify that the
-values of the individual pixels do not deviate from the median.
-
-##### Implementation
-
-Use `ectool` to capture the first checkerboard pattern image:
-
-```bash
-(dut) $ ectool --name=cros_fp fpmode capture pattern0; ectool --name=cros_fp waitevent 5 500
-FP mode: (0x20000008) capture
-MKBP event 5 data: 00 00 00 80
-```
-
-Copy the first checkerboard image to a file:
-
-```bash
-(dut) $ ectool --name=cros_fp fpframe > /tmp/pattern0.pnm
-```
-
-Use `ectool` to capture the second checkerboard pattern image:
-
-```bash
-(dut) $ ectool --name=cros_fp fpmode capture pattern1; ectool --name=cros_fp waitevent 5 500
-FP mode: (0x30000008) capture
-MKBP event 5 data: 00 00 00 80
-```
-
-Copy the second checkerboard image to a different file:
-
-```bash
-(dut) $ ectool --name=cros_fp fpframe > /tmp/pattern1.pnm
-```
-
-Perform median analysis on the resulting image as described in the `MTS`
-document. The factory toolkit does this in
-[`fingerprint_mcu.py`][Checkerboard Test].
-
-<!-- mdformat off(b/139308852) -->
-*** note
-**TIP**: You can view the `.pnm` files generated by the commands below on your
-Linux desktop with ImageMagick: `display /path/to/file.pnm`.
-***
-<!-- mdformat on -->
-
-##### Success/Failure
-
-The median pixel value (type 1 and type 2), pixel errors, finger detect zone
-errors, and pixel error deviation limit must fall within the acceptance criteria
-limits specified in "4.3.5 Acceptance Criteria Test Image CB / iCB" in the `MTS`
-document for the sensor being tested.
-
-#### Hardware Reset Test (aka IRQ test)
-
-##### Purpose
-
-Perform a hardware reset of the sensor and test that the IRQ line is asserted
-after 5 ms. See "Section 4.1 Reset test pattern procedure" and "2.8 HW Reset" in
-the FPC `MTS` document for the sensor being tested.
-
-##### Implementation
-
-This is implemented by the FPMCU on every boot. The results can be checked with
-the `ectool` command. The factory toolkit does this in
-[`fpmcu_utils.py`][GetSensorIdErrors].
-
-##### Success/Failure
-
-The `Error flags` line of the `fpinfo` `ectool` command must be empty.
-
-```bash
-(dut) $ ectool --name=cros_fp fpinfo
-
-Fingerprint sensor: vendor 20435046 product 9 model 1401 version 1
-Image: size 56x192 8 bpp
-Error flags:
-Dead pixels: UNKNOWN
-Templates: version 4 size 47616 count 0/5 dirty bitmap 0
-```
-
-#### Hardware ID (HWID) check
-
-##### Purpose
-
-Ensure that communications between the sensor and the FPMCU are working and that
-the correct sensor has been assembled.
-
-##### Implementation
-
-`ectool` can be used to request the hardware ID, which can be compared with the
-expected hardware ID. The factory toolkit does this in
-[`fpmcu_utils.py`][GetSensorId].
-
-##### Success/Failure
-
-The `Fingerprint sensor` line of the `fpinfo` `ectool` command must show the
-expected ID and the `Error flags` line must be empty:
-
-```bash
-(dut) $ ectool --name=cros_fp fpinfo
-
-Fingerprint sensor: vendor 20435046 product 9 model 1401 version 1 # FPC 1145
-Image: size 56x192 8 bpp
-Error flags:
-Dead pixels: UNKNOWN
-Templates: version 4 size 47616 count 0/5 dirty bitmap 0
-```
-
-#### Reset Pixel (RP)
-
-##### Purpose
-
-Capture a white image, compare the individual pixel values and ensure that the
-deviation to the median is within the specified range.
-
-##### Implementation
-
-Capture the test image with `ectool` and analyze the output. The factory toolkit
-does this in [`fingerprint_mcu.py`][ProcessResetPixelImage].
-
-Switch to correct capture mode and wait:
-
-```bash
-(dut) $ ectool --name=cros_fp fpmode capture test_reset; ectool --name=cros_fp waitevent 5 500
-FP mode: (0x50000008) capture
-MKBP event 5 data: 00 00 00 80
-```
-
-Retrieve the test image:
-
-```bash
-(dut) $ ectool --name=cros_fp fpframe > /tmp/test_reset.pnm
-```
-
-##### Success/Failure
-
-A pixel is considered to be a bad pixel ("reset pixel error") if the value read
-out deviates more than a defined value from the median. The median value and the
-max number of pixels that have "reset pixel error" are defined in section "Reset
-Pixel" (4.4 or 4.5) of the MTS for the given sensor.
-
-#### Module Quality Test (or Module Quality Test 2) with Rubber Stamp Zebra (Optional)
-
-##### Purpose
-
-The Module Quality Test (`MQT`) uses a rubber stamp with a "zebra" pattern to
-characterize module performance and image quality after the top layer (including
-stack-up) is applied. Although this test is optional, OEMs are strongly
-encouraged to perform it.
-
-##### Implementation
-
-Capture the image when the rubber stamp is applied:
-
-```bash
-(dut) $ ectool --name=cros_fp fpmode capture qual
-FP mode: (0x40000008) capture
-```
-
-Wait for the capture to be finished, timeout after 10s:
-
-```bash
-(dut) $ ectool --name=cros_fp waitevent 5 10000
-MKBP event 5 data: 00 00 00 80
-```
-
-Copy the raw captured from to the AP:
-
-```bash
-(dut) $ ectool --name=cros_fp fpframe raw > /tmp/fp.raw
-```
-
-Run the analysis tool on the captured frame:
-
-```bash
-(dut) $ /usr/local/opt/fpc/fputils.py --mqt /tmp/fp.raw
-Error, MQT status : (5)
-MQT failed (-1)
-```
-
-The factory toolkit does this in [`fingerprint_mcu.py`][rubber_finger_present].
-
-##### Success/Failure
-
-See "Section 5.1.5" Acceptance Criteria for `MQT2` or "Section 5.2.5 Acceptance
-Criteria" in the MTS for the given sensor.
-
-## Finalization
-
-The finalization process must perform two tasks:
-
-1. Initialize the FPMCU’s `entropy`.
-1. When building for PVT or mass production, enable `software write protect`.
-
-### Initialize FPMCU Entropy
-
-The `bio_wash` tool is intended to support both the first time factory
-initialization and RMA, depending on the flag. When run with the
-`--factory_init` argument (`bio_wash --factory_init`), it will ensure that the
-`entropy` is set. If the `entropy` has already been set it will do nothing.
-
-A side-effect of running `bio_wash` is that the `rollback_id` changes (`ectool
---name=cros_fp rollbackinfo`). Initially when the firmware is first flashed, the
-`rollback_id` should be zero. After `entropy` is initialized the `rollback_id`
-should be set to 1.
-
-Note that for new devices coming out of the factory we expect `rollback_id` to
-be 1, which indicates that the entropy has been set exactly once.
-
-### Enable Software Write Protect
-
-`Software write protect` must be enabled for PVT and mass production devices. It
-ensures that the RO portion of the FPMCU firmware cannot be overwritten, so it
-is critical for FPMCU security.
-
-The following commands will enable software write protection:
-
-```bash
-(dut) $ ectool --name=cros_fp flashprotect enable # enable
-(dut) $ sleep 2
-(dut) $ ectool --name=cros_fp reboot_ec # reboot so it takes effect
-(dut) $ sleep 2
-```
-
-To validate that software write protection has taken effect, run the following:
-
-```bash
-(dut) $ ectool --name=cros_fp flashprotect # get flashprotect state
-
-# output should match below
-Flash protect flags: 0x0000000b wp_gpio_asserted ro_at_boot ro_now
-Valid flags: 0x0000003f wp_gpio_asserted ro_at_boot ro_now all_now STUCK INCONSISTENT
-Writable flags: 0x00000004 all_now
-```
-
-If software write protection is not enabled, you will see the following instead:
-
-```bash
-(dut) $ ectool --name=cros_fp flashprotect # get flashprotect state
-
-# not protected
-Flash protect flags: 0x00000000
-Valid flags: 0x0000003f wp_gpio_asserted ro_at_boot ro_now all_now STUCK INCONSISTENT
-Writable flags: 0x00000001 ro_at_boot
-```
-
-Capturing a raw frame from the sensor will only work when software write
-protection is not enabled, so the test should check the following command works
-*before* write protection is enabled and then fails *after* write protection is
-enabled:
-
-```bash
-(dut) $ ectool --name=cros_fp fpframe raw
-
-# write protection disabled, exit code 0 and output will be raw bytes
-
-# write protection enabled, exit code 1 and output will be
-EC result 4 (ACCESS_DENIED)
-Failed to get FP sensor frame
-```
-
-## RMA Process
-
-As part of the RMA process, the `entropy` needs to be reset so that the new
-device owner has a new unique encryption key.
-
-The `bio_wash` tool is intended to support both the first time factory
-initialization and RMA, depending on the flag. When run without any arguments
-(`bio_wash`), it will forcibly reset the entropy.
-
-The RMA process should either run `bio_wash` without any arguments or re-flash
-the FPMCU firmware and then run `bio_wash --factory_init` to make sure that the
-entropy has been reset.
-
-## Miscellaneous Commands for Test Implementations
-
-### FPMCU Image Version
-
-```bash
-(dut) $ ectool --name=cros_fp version
-
-RO version: nocturne_fp_v2.2.64-58cf5974e
-RW version: nocturne_fp_v2.2.110-b936c0a3c
-Firmware copy: RW
-Build info: nocturne_fp_v2.2.110-b936c0a3c 2018-11-02 14:16:46 @swarm-cros-461
-Tool version: v2.0.2144-1524c164f 2019-09-09 06:50:36 @chromeos-ci-legacy-us-central2-d-x32-7-3ay8
-```
-
-### Capture Raw Images
-
-Put your finger on the sensor, then run:
-
-```bash
-(dut) $ ectool --name=cros_fp fpmode capture vendor
-```
-
-Wait for the capture to be finished, timeout after 10s:
-
-```bash
-(dut) $ ectool --name=cros_fp waitevent 5 10000
-MKBP event 5 data: 00 00 00 80
-```
-
-Remove the finger from the sensor, then start the retrieval of the frame from
-the MCU to the AP:
-
-```bash
-(dut) $ ectool --name=cros_fp fpframe raw > /tmp/fp.raw
-```
-
-To convert the images from FPC’s proprietary format to PNG, you will need to
-have `cros deploy`’d `libfputils-nocturne`, which will install the required
-utilities in `/opt/fpc`.
-
-<!-- mdformat off(b/139308852) -->
-*** note
-**NOTE**: As of 2019-05-21, the `libfputils` library only works for the FPC 1145
-sensor (in nocturne), not the FPC 1025 sensor (hatch).
-***
-<!-- mdformat on -->
-
-Convert the buffer in proprietary format into png:
-
-```bash
-(dut) $ /opt/fpc/fputils.py /tmp/fp.raw --png
-Extraction found 2 images
-Wrote /tmp/fp.0.png (14085 bytes)
-Wrote /tmp/fp.1.png (14025 bytes)
-```
-
-[Software Write Protect]: https://chromium.googlesource.com/chromiumos/platform/ec/+/HEAD/docs/write_protection.md#Software-Write-Protect
-[hardware write protect]: https://chromium.googlesource.com/chromiumos/platform/ec/+/HEAD/docs/write_protection.md#hw_wp
-[FPC1025: Module Test Specification]: http://go/cros-fingerprint-fpc1025-module-test-spec
-[FPC1145: Module Test Specification]: http://go/cros-fingerprint-fpc1145-module-test-spec
-[FPC In-Device Test Specification]: http://go/cros-fingerprint-fpc-indevice-test-spec
-[`fingerprint_mcu.py`]: https://chromium.googlesource.com/chromiumos/platform/factory/+/HEAD/py/test/pytests/fingerprint_mcu.py
-[Checkerboard Test]: https://chromium.googlesource.com/chromiumos/platform/factory/+/d23ebc7eeb074760e8a720e3acac4cfe4073b2ae/py/test/pytests/fingerprint_mcu.py#166
-[GetSensorIdErrors]: https://chromium.googlesource.com/chromiumos/platform/factory/+/d23ebc7eeb074760e8a720e3acac4cfe4073b2ae/py/test/utils/fpmcu_utils.py#73
-[GetSensorId]: https://chromium.googlesource.com/chromiumos/platform/factory/+/d23ebc7eeb074760e8a720e3acac4cfe4073b2ae/py/test/utils/fpmcu_utils.py#65
-[ProcessResetPixelImage]: https://chromium.googlesource.com/chromiumos/platform/factory/+/d23ebc7eeb074760e8a720e3acac4cfe4073b2ae/py/test/pytests/fingerprint_mcu.py#268
-[rubber_finger_present]: https://chromium.googlesource.com/chromiumos/platform/factory/+/d23ebc7eeb074760e8a720e3acac4cfe4073b2ae/py/test/pytests/fingerprint_mcu.py#330
-[Chrome OS Fingerprint Team]: http://go/cros-fingerprint-docs
-[Factory Fingerprint Sensor Testing for `nocturne`]: http://go/fingerprint-factory-testing-nocturne
-[`flash_fp_mcu`]: https://chromium.googlesource.com/chromiumos/platform/ec/+/HEAD/util/flash_fp_mcu
-[Fingerprint flashing documentation]: ./fingerprint.md#factory-rma-dev-updates
-[Chrome OS Config]: https://chromium.googlesource.com/chromiumos/platform2/+/HEAD/chromeos-config/README.md
-[updating Chrome OS Config]: ./fingerprint.md#update-chromeos-config
diff --git a/docs/fingerprint/fingerprint-firmware-testing-for-partners.md b/docs/fingerprint/fingerprint-firmware-testing-for-partners.md
deleted file mode 100644
index 3432bb0aac..0000000000
--- a/docs/fingerprint/fingerprint-firmware-testing-for-partners.md
+++ /dev/null
@@ -1,112 +0,0 @@
-# Fingerprint Firmware Testing Instructions for Partners
-
-This document is intended to help partners (sensor vendors, MCU vendors, etc)
-run the Chrome OS fingerprint team's firmware tests, as part of the AVL process.
-The document assumes that you‘re using Linux to do the development; preferably a
-recent version of Ubuntu or Debian. It may be possible to use a virtual machine,
-but that is not a configuration we test.
-
-[TOC]
-
-## Hardware Requirements
-
-You will need a Chromebook with the fingerprint sensor and fingerprint MCU
-(FPMCU), and a [servo debugger].
-
-### Chromebook with fingerprint sensor
-
-The Chromebook needs to be in [developer mode] and running a test image so that
-the test can ssh into it. The fingerprint firmware tests will run a series of
-bash commands, including flashing the FPMCU firmware and rebooting the
-Chromebook. You do not need [CCD] because servo will handle the firmware write
-protection for you.
-
-### Servo
-
-Servo is a general purpose debug board used in many automated tests in Chromium
-OS. Among other things, servo enables the tests to toggle hardware write
-protect.
-
-While there are multiple versions of servo, for firmware tests we strongly
-recommend [Servo V4] as that's the simplest and most often used in autotests.
-This document will assume you are using Servo V4.
-
-### Hardware Setup
-
-* Connect the "HOST" side of Servo V4 to your host machine (which should have
- a Chromium OS chroot).
-* Connect the other side of Servo V4 to a USB port on the Chromebook with
- fingerprint sensor.
-* Connect the "DUT POWER" side of Servo V4 to power supply.
-* Make sure the USB cable from the host machine to Servo V4 is in data
- transfer mode (i.e. if there's an LED, it should be yellow instead of
- green).
-* Make sure the you can ssh into the Chromebook from the chroot on the host
- machine.
-
-## Software Setup
-
-### Get the Chromium OS source code.
-
-* First, make sure you [have the prerequisites].
-* Then [get the source].
-
-### Build the autotest codebase
-
-```bash
-# from a terminal on your machine
-(outside chroot) $ cd ~/chromiumos/src
-
-# enter the chroot (the flag is important)
-(outside chroot) $ cros_sdk --no-ns-pid
-
-# build autotest for the board to be tested
-(chroot) $ emerge-<BOARD> autotest
-```
-
-### Start servod
-
-```bash
-(chroot) $ sudo servod --board=<BOARD>
-```
-
-At this point the servod daemon should be running and listening to port 9999 by
-default. If it isn't, check the hardware connection.
-
-## Run a Single Fingerprint Firmware Test
-
-Use another terminal and enter the chroot like before:
-
-```bash
-(outside chroot) $ cd ~/chromiumos/src
-(outside chroot) $ cros_sdk --no-ns-pid
-```
-
-To run a single test, use this command in your chroot:
-
-```bash
-test_that --board=<BOARD> <IP> <test name>
-```
-
-For example:
-
-```bash
-test_that --board=nocturne <IP> firmware_Fingerprint.ReadFlash
-```
-
-## Run the Entire Fingerprint Firmware Test Suite
-
-To run the entire suite, use this command in your chroot:
-
-```bash
-test_that --board=<BOARD> <IP> suite:fingerprint
-```
-
-<!-- Links -->
-
-[servo debugger]: https://chromium.googlesource.com/chromiumos/third_party/hdctools/+/HEAD/docs/servo.md
-[developer mode]: https://chromium.googlesource.com/chromiumos/docs/+/HEAD/developer_mode.md
-[CCD]: https://chromium.googlesource.com/chromiumos/platform/ec/+/refs/heads/cr50_stab/docs/case_closed_debugging.md
-[Servo V4]: https://chromium.googlesource.com/chromiumos/third_party/hdctools/+/HEAD/docs/servo_v4.md
-[have the prerequisites]: https://chromium.googlesource.com/chromiumos/docs/+/HEAD/developer_guide.md#Prerequisites
-[get the source]: https://chromium.googlesource.com/chromiumos/docs/+/HEAD/developer_guide.md#get-the-source
diff --git a/docs/fingerprint/fingerprint-tpm-seed.md b/docs/fingerprint/fingerprint-tpm-seed.md
deleted file mode 100644
index 904fb7243a..0000000000
--- a/docs/fingerprint/fingerprint-tpm-seed.md
+++ /dev/null
@@ -1,324 +0,0 @@
-# TPM Seed for Fingerprint MCU
-
-Authors: pmalani@google.com, norvez@google.com
-
-Reviewers: semenzato@google.com, apronin@google.com, mnissler@google.com and
-others
-
-Last Updated: 2018-11-01
-
-[TOC]
-
-## Objective
-
-Increase security for Fingerprint (FP) templates by using a TPM-sourced seed in
-addition to internal FPMCU entropy while encrypting FP templates. The
-TPM-sourced seed will be derived from the system key which is loaded from the
-TPM during boot in mount-encrypted.
-
-## Background
-
-Fingerprint authorization in Chrome OS, relies on encrypted FP templates which
-are stored in each user’s mount directory. These templates are created and
-encrypted by the FPMCU during FP enrollment, before being sent back to the AP
-(Application Processor). When the user logs in, these templates are sent to the
-FPMCU where they get decrypted and loaded.
-
-The encryption is performed in the FPMCU using entropy which is internal to the
-MCU and never leaves the MCU. That way, even if the templates are somehow
-obtained by and attacker from the user mount directory, they cannot be
-decrypted, since the attacker will not have access to the MCU entropy. This
-entropy gets reset on every powerwash/recovery.
-
-The complete design doc is [Fingerprint Authentication on Chrome OS].
-
-## Requirements and Scale
-
-The solution proposed should exhibit the following attributes:
-
-* Strengthens security of FP templates.
-* Does not compromise the security of other sub-systems.
-* Works fast and doesn’t affect time to boot, or reduce boot-time stability.
-
-## Design Ideas
-
-In addition to FPMCU entropy, we include a TPM-sourced seed (derived from the
-system key) while performing template encryption. The TPM system key gets
-regenerated during powerwash/recovery, so in the event that the FP templates are
-accessed due to a runtime exploit, a power-wash / recovery from the user will
-ensure:
-
-* The raw templates cannot be decrypted, since the TPM-seed would have been
- lost irrevocably.
-* Since a new TPM-seed is generated (since a new system key is created), old
- templates can’t be re-used, even if the attacker could somehow gain access
- to the FP MCU entropy.
-
-The overall design consists of two components:
-
-* Generating a TPM-seed and sending it to the Biometric sensor managers.
-* The Bio sensor managers sending the seed to the FPMCU and programming it
- into the encryption / decryption operations of FP templates.
-
-### TPM seed generation {#seed-generation}
-
-![TPM Seed Diagram]
-
-The TPM seed generation would proceed as follows:
-
-1. During mount-encrypted execution, after the `System_key` is loaded, the
- TPM-backed system key will be HMAC-ed with a simple salt (the string
- `biod`):
-
- ```
- TPM_Seed = HMAC_SHA256(System_key, "biod")
- ```
-
-2. The resulting 256-bit seed (called `TPM_Seed`) will be maintained in a
- `brillo::SecureBlob`.
-
-3. The `TPM_seed` will be saved into a tmpfs file
- (`/run/biod_crypto_init/seed`) for consumption by `bio_crypto_init`. This
- file's ownership will be set up such that only user/group `biod` can access
- it.
-
-4. `bio_crypto_init` (the binary which sends the seed to the FPMCU) will be
- spawned after mount-encrypted completes. This is ensured by setting the
- `bio_crypto_init` upstart rules to depend on `starting boot-services`
-
-5. On the `bio_crypto_init` side, the `TPM_seed` will be retrieved from the
- tmpfs file and forwarded to the FP MCU via the various BiometricManagers.
- Immediately after reading from the tmpfs file, `bio_crypto_init` will nuke
- (write all 0’s and then delete) the tmpfs file.
-
-6. The upstart rules of biod will be modified such that it will start after
- `bio_crypto_init` stops (this modification can be made in the `.conf` file
- of biod)
-
-#### IPC Mechanism {#ipc}
-
-(For a discussion of various alternatives, please see the
-[Alternatives Considered] section)
-
-The IPC mechanism selected should have the following features:
-
-* Allow to quickly pass the `TPM_seed` between mount-encrypted and
- `bio_crypto_init`.
-* Minimize the presence of extra/asynchronously deleted copies of the
- `TPM_seed` buffer in kernel and memory. This is crucial to minimize the risk
- of access to this seed.
-
-The currently proposed method of passing the `TPM_seed` is to use a **file in
-tmpfs**. The sequence would be as follows:
-
-* mount-encrypted will write the `TPM_Seed` to a file in `/run`
- (`/run/bio_crypto_init/seed`). `/run` is a tmpfs created by the OS for use
- by various system services.
-* `bio_crypto_init` will read the `TPM_Seed` from the known tmpfs file.
-* As soon as `bio_crypto_init` reads the `TPM_Seed`, it will first overwrite
- (`/run/biod_crypto_init/seed`) with all 0s, and immediately after will
- delete `/run/biod_crypto_init/seed`.
-* `bio_crypto_init` can then instantiate its BiometricManager classes and send
- the data to the FP MCU. This way, even if the sending of data fails, there
- will not be any stray copy of the `TPM_seed` in a process’s memory, or in
- tmpfs.
-
-##### Advantages
-
-* No/minimal buffering of copies of `TPM_Seed` in kernel.
-* No need to create and pass FDs between mount-encrypted and
- `bio_crypto_init`.
-
-##### Disadvantages
-
-* If `bio_crypto_init` crashes / fails to start, the tmpfs file remains in the
- system, i.e cleanup of tmpfs is reliant on `bio_crypto_init`.
-
-### Programming TPM_Seed into MCU
-
-#### Entropy addition v/s programming TPM Seed
-
-When a device boots up for the first time after going through
-recovery/powerwash, biod will force an "Add Entropy" step. This involves:
-
-* rebooting the FP MCU to RO
-* Performing an entropy addition step
-* Rebooting the FP MCU to RW
-* Verifying that the entropy addition has taken place (by checking the block
- ID of the rollback info on the MCU).
-
-Unfortunately, since the `TPM_Seed` will be stored in MCU RAM, the reboot of the
-FPMCU will lead to the `TPM_Seed` being lost until the next boot. In the absence
-of a `TPM_Seed`, all FPMCU operations will fail (until the next boot). There is
-no opportunity to reprogram the `TPM_Seed`, because that must take place during
-mount-encrypted, which must necessarily run before `biod` starts.
-
-There are two proposals to work around this issue. The one eventually selected
-has been included here, and the other alternative has been placed in the
-[Alternatives Considered] section.
-
-##### Make bio_crypto_init solely set the TPM_Seed (don't perform entropy_add)
-
-In this method, `bio_crypto_init` will not perform any reboot on the MCU, and
-solely program the `TPM_Seed`. This would mean that if a device was to boot for
-a first time without having done any previous powerwash/recovery, the first boot
-would not have FP functionality. FP functionality would be regained on all
-subsequent boot (since the entropy would have been added/initialized by then).
-
-The downside of this approach is a poor user experience.
-
-The benefit is a simple implementation of the `bio_crypto_init` tool, which will
-consequently also take less time to execute (booting to RO/RW are time consuming
-operations).
-
-In practice all devices leaving the factory floor would have `bio_wash
---factory_init` done on them during finalisation to initialise the entropy, and
-so this shouldn't affect a large majority of end users.
-
-### Signaling biod to start
-
-In order to avoid races which might occur because both `bio_crypto_init` and
-`biod` will try to access the `BiometricManagers`' hardware. We need to ensure
-that `biod` only starts after `bio_crypto_init` ends.
-
-To accomplish this, `biod.conf` will be modified to include a dependency on
-`bio_crypto_init` to start the daemon. So, the relevant portion of `biod.conf`
-will now be:
-
-```
-start on started system-services and started uinput and stopped bio_crypto_init
-```
-
-### Formula to calculate IKM used for encryption in MCU
-
-In the FPMCU we will use the concatenation of `TPM_Seed` and [`SBP_Src_Key`] as
-Input Key Material (IKM) to derive an encryption key. Combined with a random
-salt, the pseudo random key (PRK) would be derived as:
-
-```
-PRK = HMAC_SHA256(Random_Salt, SBP_Src_Key || TPM_Seed)
-```
-
-## Alternatives Considered {#alt-considered}
-
-A few alternatives are being considered for the IPC Mechanism
-
-#### pipe/socketpair
-
-##### Disadvantages
-
-* The data written to pipes is buffered in internal kernel buffers till it is
- read out from the other end of the pipe/socketpair. In the case of a
- `bio_crypto_init` crashing, this will leave a copy in the internal kernel
- buffers. Question: How long before those internal buffers get cleared in the
- case of the pipe not being read from?
-
-#### Anonymous file (memfd_create) / Anonymous mmap
-
-##### Disadvantages
-
-* Question: When all references to the anonymous file are dropped, are the
- contents of the anonymous file re-allocated, overwritten, or is the
- corresponding inode simply destroyed (and the data blocks still stick around
- and are reallocated lazily ?)
-
-There was also another alternative considered for the sequence of programming
-the TPM seed and initializing the FPMCU: make `bio_crypto_init` add entropy and
-then set TPM.
-
-## Security Considerations
-
-### Security boundaries
-
-* A new minijailed process (`bio_crypto_init`) is run when `starting
- boot-services` is signaled.
-* An IPC takes place between mount-encrypted and `bio_crypto_init` via a tmpfs
- file. The reading and deletion of the tmpfs file is detailed in the
- [IPC Mechanism] section.
-
-### Privileges
-
-* `bio_crypto_init` runs minijail-ed and runs with user/group `biod`. Only the
- files required for its functioning (i.e., the tmpfs file `/run/`, the
- devnode to access the FPMCU, log directory inside
- `/var/log/bio_crypto_init`) are mounted and visible inside the sandbox. See
- the [minijail0 arguments] for a full explanation.
-
-### Untrusted input
-
-* The only input is the `System_key` which is retrieved from the TPM anyway
- during mount-encrypted execution. Thus, no additional or new input is being
- fed to the feature.
-* Additionally, the derived TPM-seed is saved in a tmpfs file which has a
- user/group ownership as `biod` so only users `root` or `biod` can access the
- file. Since `bio_crypto_init` runs only during `starting boot-services` and
- the process along with the conf file ensures that the file is deleted after
- execution, there is no additional threat of the `/tmp` file being corrupted.
-
-### Sensitive data
-
-* The feature involves the storage of a `TPM_Seed` derived from the
- `System_key` from TPM, in a file on tmpfs (the file is zeroed and deleted
- once read by `bio_crypto_init`).
-
-### Attack surface
-
-* In the event of the contents of the tmp file being read, the `TPM_Seed`
- would not be of much use to the attacker, since the use of `HMAC_SHA256`
- means the attacker would still not have access to the system key (brute
- force trial of HMAC 256 would be required to guess the system salt required
- to produce the TPM-seed).
-* In the unlikely event of the contents of the tmp file being modified before
- they are programmed into the FPMCU, FP unlock would fail (since the
- encrypted templates would not longer be decrypted correctly, since the FPMCU
- encryption key would have changed). The FP templates encryption key is a
- combination of both the `TPM_seed` as well as the internal `SBP_Src_Key`
- combined with a random salt, and since only the encrypted templates are
- stored on the rootfs, the templates would simply be rendered useless. A
- powerwash/recovery can help restore functionality of FP unlock, but new
- templates would have to be registered.
-* This code should not be accessible to remote attackers.
-
-### Implementation robustness
-
-* `bio_crypto_init` uses two processes. A child process is spawned by
- `bio_crypto_init` and the FPMCU programming is done on the child process.
- The parent process waits for the child process to complete, or kills the
- process if it exceeds a timeout limit. This ensures that the process doesn't
- hang indefinitely.
-* The feature uses tmpfs (`/run/bio_crypto_init/seed`) as an IPC mechanism to
- transfer the `TPM_Seed` between mount-encrypted and `bio_crypto_init`.
- Please see the [Alternatives Considered] and [Design Ideas] section
- regarding rationale behind choosing tmpfs vis a vis socketpair/pipe.
-
-### Cryptography
-
-* `HMAC_SHA256` is used to derived `TPM_Seed` from the `System_key` as
- described in section [TPM seed generation].
-
-* `HMAC_SHA256` is also used to derive the FPMCU’s encryption key. This is the
- same as it was earlier; the only change is that source key has been updated
- to also include the `TPM_Seed`.
-
-## Privacy Considerations
-
-This implementation should not have any adverse implications on Privacy (over
-and above existing functionality on Chrome OS). This provides security hardening
-for the fingerprint templates to prevent their retrieval and mis-use.
-
-[Fingerprint Authentication on Chrome OS]: ../fingerprint/fingerprint-authentication-design-doc.md
-[`SBP_Src_Key`]: ../fingerprint/fingerprint-authentication-design-doc.md#sbp-secret-generation
-[IPC Mechanism]: #ipc
-[minijail0 arguments]: https://source.chromium.org/chromiumos/chromiumos/codesearch/+/main:src/platform2/biod/init/bio_crypto_init.conf;l=36;drc=1fcefaa166e868069ad1b81091333ff75e0657f6
-[Design Ideas]: #design-ideas
-[TPM seed generation]: #seed-generation
-[Alternatives Considered]: #alt-considered
-
-<!-- Images -->
-
-<!-- If you make changes to the docs below make sure to regenerate the PNGs by
- appending "export/png" to the Google Drive link. -->
-
-<!-- https://docs.google.com/drawings/d/1d0ocdnEjsO26c3usP1FwgTZ7VwEr-4ydnC0WMhOnbLY -->
-
-[TPM Seed Diagram]: ../images/cros_fingerprint_tpm_seed.png
diff --git a/docs/fingerprint/fingerprint.md b/docs/fingerprint/fingerprint.md
deleted file mode 100644
index 39785f5afb..0000000000
--- a/docs/fingerprint/fingerprint.md
+++ /dev/null
@@ -1,590 +0,0 @@
-# Fingerprint Firmware (FPMCU)
-
-[TOC]
-
-<!-- mdformat off(b/139308852) -->
-*** note
-NOTE: The build commands assume you are in the `~/trunk/src/platform/ec`
-directory inside the chroot.
-***
-<!-- mdformat on -->
-
-<!-- mdformat off(b/139308852) -->
-*** note
-WARNING: When switching branches in the EC codebase, you probably want to nuke
-the `build` directory or at least the board you're working on: `rm -rf
-build/<board>` or `make clobber` to prevent compilation errors.
-***
-<!-- mdformat on -->
-
-## Software
-
-The main source code for fingerprint sensor functionality lives in the
-[`common/fpsensor`] directory. The driver code for specific sensors lives in the
-[`driver/fingerprint`] directory.
-
-## Hardware {#hardware}
-
-The following "boards" (specified by the `BOARD` environment variable when
-building the EC code) are for fingerprint:
-
-MCU | Sensor | Firmware (EC "board") | Dev Board | Nucleo Board
----------------------- | ---------- | ---------------------------------------------- | -------------------------------------------- | ------------
-[STM32H743] \(Cortex-M7) | [FPC 1145] | `dartmonkey`<br>(aka `nocturne_fp`, `nami_fp`) | [Icetower v0.2] <br>(Previously Dragontalon) | [Nucleo H743ZI2]
-[STM32F412] \(Cortex-M4) | [FPC 1025] | `bloonchipper`<br>(aka `hatch_fp`) | [Dragonclaw v0.2] | [Nucleo F412ZG]
-
-### Sensor Template Sizes
-
-Sensor | Fingerprint Template Size
----------- | --------------------------------
-[FPC 1145] | [~48 KB][FPC 1145 Template Size]
-[FPC 1025] | [~5 KB][FPC 1025 Template Size]
-
-### Determining Hardware {#chromeos-config-fingerprint}
-
-If you have access to a shell on your Chromebook, you can use [Chrome OS Config]
-to determine the FPMCU that it contains:
-
-```bash
-(dut) $ cros_config /fingerprint board
-```
-
-Alternatively, if you have a Chromium OS build, you can use [Chrome OS Config]
-in the chroot to determine the FPMCU:
-
-```bash
-(chroot) $ cros_config_host -c /build/<BOARD>/usr/share/chromeos-config/yaml/config.yaml -m <MODEL> get /fingerprint board
-```
-
-<!-- mdformat off(b/139308852) -->
-*** note
-**NOTE**: If you get an empty response when running these commands, the
-[Chrome OS Config] properties for fingerprint may not have been set up yet. See
-the [section on updating Chrome OS Config](#update-chromeos-config).
-***
-<!-- mdformat on -->
-
-## Building FPMCU Firmware Locally
-
-### See `Makefile` target options
-
-```bash
-(chroot) ~/trunk/src/platform/ec $ make help
-```
-
-### Build
-
-Replace `<BOARD_NAME>` in the command below with the fingerprint MCU that you
-are targeting (e.g., `nocturne_fp`, `dartmonkey`, `bloonchipper`).
-
-```bash
-(chroot) ~/trunk/src/platform/ec $ make BOARD=<BOARD_NAME> -j
-```
-
-### Verbose Build output
-
-Use `V=1` to see the complete compiler output (all flags).
-
-```bash
-(chroot) ~/trunk/src/platform/ec $ make V=1 BOARD=nocturne_fp -j
-```
-
-## Building all EC firmware (before "repo upload")
-
-Before uploading a change to Gerrit via `repo upload`, you'll need to build
-*all* the boards in the EC codebase to make sure your changes do not break any
-others.
-
-<!-- mdformat off(b/139308852) -->
-*** note
-NOTE: If you forget to do this, do not worry. `repo upload` will warn you and
-prevent you from uploading.
-***
-<!-- mdformat on -->
-
-```bash
-(chroot) ~/trunk/src/platform/ec $ make buildall -j
-```
-
-## Building and running unit tests
-
-See the [Unit Tests] documentation for details on how to [run the unit tests].
-
-## Build ectool
-
-```bash
-(chroot) ~/trunk/src/platform/ec $ make BOARD=nocturne_fp utils-host -j
-```
-
-## Build and run the `host_command` fuzz test
-
-```bash
-(chroot) ~/trunk/src/platform/ec $ make run-host_command_fuzz
-```
-
-## Logs
-
-[`timberslide`] is a simple daemon that collects logs from the FPMCU and writes
-them to disk. [`timberslide`] reads from sysfs, where the kernel driver
-[periodically dumps the FPMCU console output][cros_ec_debugfs]. [`timberslide`]
-writes the resulting logs to `/var/log/cros_fp.log`. There are multiple
-instances of [`timberslide`] that run; one for each MCU running the EC codebase.
-
-### Starting timberslide
-
-```bash
-(dut)$ start timberslide LOG_PATH=/sys/kernel/debug/cros_fp/console_log
-```
-
-### Stopping timberslide
-
-```bash
-(dut)$ stop timberslide LOG_PATH=/sys/kernel/debug/cros_fp/console_log
-```
-
-### Manually running timberslide
-
-```bash
-(dut)$ timberslide --device_log=/sys/kernel/debug/cros_fp/console_log
-```
-
-### Reading logs from kernel
-
-If [`timberslide`] is not running you can just `cat` the logs directly from the
-kernel:
-
-```bash
-(dut)$ cat /sys/kernel/debug/cros_fp/console_log
-```
-
-## Production Updates (Auto-Update)
-
-### `fp_updater.sh` and `bio_fw_updater`
-
-<!-- mdformat off(b/139308852) -->
-*** note
-**NOTE**: The auto-update process requires a working version of the firmware
-running on the FPMCU. See [Fingerprint Factory Requirements] for details on
-flashing in the factory.
-***
-<!-- mdformat on -->
-
-[`fp_updater.sh`] and [`bio_fw_updater`] are wrappers around [`flashrom`] and
-require already-functioning RO firmware running on the FPMCU. It’s meant to be
-used in production to update the RW firmware. `fp_updater.sh` was used prior to
-M77; `bio_fw_updater` replaces it.
-
-It's also possible to use the updater to update the RO firmware if you disable
-*both* HW and SW write protect, which we use for updating development devices
-that do not have write protect enabled (dogfood devices, EVT, etc.)
-
-In production, only the RW portion of the firmware can be updated (unless the
-user disables [hardware write protection]).
-
-## Factory / RMA / Development Updates {#factory-rma-dev-updates}
-
-### `flash_fp_mcu`
-
-<!-- mdformat off(b/139308852) -->
-*** note
-**NOTE**: This tool is really just for us to use during development or during
-the RMA flow (must go through finalization again in that case). We never update
-RO in the field (can’t by design). See [Fingerprint Factory Requirements] for
-details on flashing in the factory.
-***
-<!-- mdformat on -->
-
-[`flash_fp_mcu`] enables spidev and toggles some GPIOs to put the FPMCU (STM32)
-into bootloader mode. At that point it uses [`stm32mon`] to rewrite the entire
-flash (both RO and RW). The FPMCU can only be put into bootloader mode when
-[hardware write protection] is disabled, which means [`flash_fp_mcu`] can only
-be used when [hardware write protection] is disabled.
-
-[`flash_fp_mcu`] is available in the [Chromium OS test image].
-
-### `stm32mon`
-
-[`stm32mon`] is a tool used to send commands to the STM32 bootloader. We use it
-for development (through [`flash_fp_mcu`]) to erase and flash the entire chip.
-
-[`stm32mon`] is available in the [Chromium OS test image].
-
-## Keys
-
-The `RO` section of the fingerprint firmware contains the public portion of the
-key used to sign the RW firmware. The RO firmware uses the public key to
-validate the signature of the RW firmware before jumping to it. It is not
-possible to update the public key stored in the RO firmware once a device has
-been shipped (i.e., once [hardware write protection] is enabled).
-
-Different keys are used to sign the firmware during development and production.
-The `dev` key is used for local builds and development and is not private; it is
-called `dev_key.pem` and located in the "board" directory for the given FPMCU
-(e.g., [`board/nocturne_fp/dev_key.pem`]). After doing a build, the `ec.bin` in
-the `build` directory (e.g., `build/nocturne_fp/ec.bin`) will be signed with the
-`dev` key.
-
-The two other types of keys are `premp` and `mp`, which stand for "pre-mass
-production" and "mass production", respectively. Both the `premp` and `mp` keys
-are only available to the buildbots as part of the official build. The `premp`
-is typically used during bringup of new hardware to validate the signing flow of
-the buildbots, while the `mp` key is used for PVT and production devices.
-
-Switching keys is only possible when the `RO` firmware is not write protected,
-since the public portion of the keypair is stored in the `RO` firmware.
-
-### Generate Key
-
-For testing, you can generate a new key by using the following openssl command:
-
-```bash
-openssl genrsa -3 -out board/$BOARD/dev_key.pem 3072
-```
-
-### Resources
-
-* https://sites.google.com/a/google.com/chromeos/resources/engineering/releng/signer-documentation
-* https://sites.google.com/a/google.com/chromeos/paygen---payload
-* https://b.corp.google.com/issues/77882970
-
-## Signing
-
-[`futility`] is used to sign EC firmware. There’s a wrapper script around it for
-signing called [`sign_official_build.sh`].
-
-### Key ID
-
-The output of `futility show` will show a `Public Key File` and `Signature`
-section, each of which have an `ID` field. This ID lets you match the key to the
-signature in case there is more than one.
-[It’s just a sha1sum of the public key,][vboot_key_id] so it lets you
-[uniquely identify the key being used][vb2_public_key].
-
-If you have the key (e.g., in PEM format), you can compute the `ID` with the
-`futility show` command:
-
-```bash
-(chroot) $ futility show ./path/to/key.pem
-```
-
-#### Example
-
-If you are building the `hatch_fp` "board" on your local machine (which signs
-the resulting `ec.bin` with the `dev` key, you can check the `ID` with:
-
-```bash
-(chroot)$ futility show board/hatch_fp/dev_key.pem
-```
-
-```
-Private Key file: board/hatch_fp/dev_key.pem
- Key length: 3072
- Key sha1sum: 61382804da86b4156d666cc9a976088f8b647d44
-```
-
-```bash
-(chroot)$ futility show build/hatch_fp/ec.bin
-```
-
-```
-Public Key file: build/hatch_fp/ec.bin
- Vboot API: 2.1
- Desc: ""
- Signature Algorithm: 7 RSA3072EXP3
- Hash Algorithm: 2 SHA256
- Version: 0x00000001
- ID: 61382804da86b4156d666cc9a976088f8b647d44
-Signature: build/hatch_fp/ec.bin
- Vboot API: 2.1
- Desc: ""
- Signature Algorithm: 7 RSA3072EXP3
- Hash Algorithm: 2 SHA256
- Total size: 0x1b8 (440)
- ID: 61382804da86b4156d666cc9a976088f8b647d44
- Data size: 0x2864c (165452)
-Signature verification succeeded.
-```
-
-### Showing Key ID (fingerprint) for running FW
-
-[Asked on chromeos-chatty-firmware][chatty-firmware-q] about adding an EC
-command to show the Key ID (fingerprint) from the RO version. This would make it
-a lot easier during both development and testing.
-
-## Power
-
-See [Measuring Power] for instructions on how to measure power with the
-fingerprint development boards.
-
-### Dragonclaw v0.2
-
-```bash
-(chroot) $ dut-control -t 60 pp3300_dx_mcu_mv pp3300_dx_fp_mv pp1800_dx_fp_mv pp3300_dx_mcu_mw pp3300_dx_fp_mw pp1800_dx_fp_mw
-```
-
-**Firmware Version**:
-`bloonchipper_v2.0.4277-9f652bb3-RO_v2.0.7314-3dfc5ff6-RW.bin`
-
-#### MCU is idle
-
-```
-(chroot) $ dut-control fpmcu_slp_alt:off
-```
-
-```
-@@ NAME COUNT AVERAGE STDDEV MAX MIN
-@@ sample_msecs 113 533.56 40.91 658.52 447.06
-@@ pp1800_dx_fp_mv 113 1800.00 0.00 1800.00 1800.00
-@@ pp1800_dx_fp_mw 113 0.00 0.00 0.00 0.00
-@@ pp3300_dx_fp_mv 113 3280.00 0.00 3280.00 3280.00
-@@ pp3300_dx_fp_mw 113 0.01 0.05 0.26 0.00
-@@ pp3300_dx_mcu_mv 113 3280.00 0.00 3280.00 3280.00
-@@ pp3300_dx_mcu_mw 113 24.67 0.00 24.67 24.67
-```
-
-#### MCU in low power mode (suspend)
-
-```
-(chroot) $ dut-control fpmcu_slp_alt:on
-```
-
-```
-@@ NAME COUNT AVERAGE STDDEV MAX MIN
-@@ sample_msecs 115 526.56 36.79 607.60 426.58
-@@ pp1800_dx_fp_mv 115 1800.00 0.00 1800.00 1800.00
-@@ pp1800_dx_fp_mw 115 0.00 0.00 0.00 0.00
-@@ pp3300_dx_fp_mv 115 3287.30 2.25 3288.00 3280.00
-@@ pp3300_dx_fp_mw 115 0.00 0.02 0.26 0.00
-@@ pp3300_dx_mcu_mv 115 3280.97 2.62 3288.00 3280.00
-@@ pp3300_dx_mcu_mw 115 4.02 0.64 10.76 3.94
-```
-
-### Icetower v0.1
-
-<!-- mdformat off(b/139308852) -->
-*** note
-**NOTE**: Icetower v0.1 has a hardware bug in the INA connections, so you cannot
-measure the 1.8V fingerprint sensor rail. See http://b/178098140.
-
-Additionally, before https://crrev.com/c/2689101, the sleep GPIOs were not
-configured correctly, so the change needs to be cherry-picked in order to
-measure releases before that point.
-***
-<!-- mdformat on -->
-
-```bash
-(chroot) $ dut-control -t 60 pp3300_dx_mcu_mv pp3300_dx_fp_mv pp3300_dx_mcu_mw pp3300_dx_fp_mw
-```
-
-**Firmware Version**:
-`dartmonkey_v2.0.2887-311310808-RO_v2.0.7304-441100b93-RW.bin`
-
-#### MCU is idle
-
-```
-(chroot) $ dut-control fpmcu_slp_alt:off
-```
-
-```
-@@ NAME COUNT AVERAGE STDDEV MAX MIN
-@@ sample_msecs 178 337.13 20.91 404.32 289.82
-@@ pp3300_dx_fp_mv 178 3256.00 0.00 3256.00 3256.00
-@@ pp3300_dx_fp_mw 178 0.00 0.00 0.00 0.00
-@@ pp3300_dx_mcu_mv 178 3248.00 0.00 3248.00 3248.00
-@@ pp3300_dx_mcu_mw 178 45.17 0.09 45.21 44.95
-```
-
-#### MCU in low power mode (suspend)
-
-```
-(chroot) $ dut-control fpmcu_slp_alt:on
-```
-
-```
-@@ NAME COUNT AVERAGE STDDEV MAX MIN
-@@ sample_msecs 174 345.60 31.93 457.62 283.00
-@@ pp3300_dx_fp_mv 174 3264.00 0.00 3264.00 3264.00
-@@ pp3300_dx_fp_mw 174 0.00 0.00 0.00 0.00
-@@ pp3300_dx_mcu_mv 174 3260.69 3.94 3264.00 3256.00
-@@ pp3300_dx_mcu_mw 174 5.47 0.10 5.48 4.17
-```
-
-## Chrome OS Build (portage / ebuild)
-
-In order to use the fingerprint sensor with a given [Chrome OS board], a few
-things need to be configured for the [Chrome OS board].
-
-### Enable biod USE flag
-
-The biod [`USE` flag] needs to be enabled for the [Chrome OS board]. This `USE`
-flag
-[determines whether the `biod` daemon is built and installed][biod chromium-os].
-
-To enable the `USE` flag, update the `make.defaults` for the [Chrome OS board].
-See the [`make.defaults` for the Hatch board][hatch make.defaults] as an
-example.
-
-#### Verifying biod is installed in the rootfs
-
-After enabling the `biod` [`USE` flag] and building the `biod` package for your
-target [Chrome OS board], the `biod` binary should be in the build directory:
-
-```bash
-(chroot) $ emerge-<BOARD> biod
-```
-
-```bash
-(chroot) $ ls /build/<BOARD>/usr/bin/biod
-/build/<BOARD>/usr/bin/biod
-```
-
-### Update FPMCU_FIRMWARE
-
-`FPMCU_FIRMWARE` should be set to the set of fingerprint firmware that should be
-built and installed for the [Chrome OS board].
-
-`FPMCU_FIRMWARE` is a [`USE_EXPAND` variable][`USE` flag],
-[defined in the base `make.defaults`][FPMCU_FIRMWARE make.defaults].
-
-The `biod` ebuild uses the resulting [`USE` flags] to
-[determine which FPMCU release firmware to build][biod release firmware] and the
-[`chromeos-firmware-fpmcu` ebuild] uses the resulting [`USE` flags] to
-[determine which firmware to install][firmware ebuild] to the rootfs in
-`/opt/google/biod/fw`.
-
-Possible values for `FPMCU_FIRMWARE` can be found by looking at the
-`FIRMWARE_EC_BOARD` values in the [`chromeos-fpmcu-release*` ebuilds], which
-correspond to the [FPMCU hardware](#hardware).
-
-See the [Hatch baseboard `make.defaults`] for an example.
-
-#### Verifying FPMCU firmware is installed in the rootfs
-
-Once you have added the `FPMCU_FIRMWARE` flag and rebuilt the
-[`chromeos-firmware-fpmcu` ebuild], the firmware will show up in the the chroot:
-
-<!-- mdformat off(b/139308852) -->
-*** note
-**NOTE**: This requires access to the [internal manifest].
-***
-<!-- mdformat on -->
-
-```bash
-(chroot) $ emerge-<BOARD> chromeos-firmware-fpmcu
-```
-
-```bash
-(chroot) $ ls /build/<BOARD>/opt/google/biod/fw
-bloonchipper_v2.0.2626-3c315108.bin dartmonkey_v2.0.2887-311310808.bin
-```
-
-The above output assumes you selected the `bloonchipper` and `dartmonkey`
-firmware by setting `FPMCU_FIRMWARE="bloonchipper dartmonkey"`. The actual
-version numbers displayed will not necessarily match since the firmware is
-constantly updated.
-
-### Update Chrome OS Config {#update-chromeos-config}
-
-With "unibuild", the same OS image (build) for a given [Chrome OS board] is used
-across multiple devices. Often there will be some devices that have a
-fingerprint sensor, some that do not, and even different sensors for the same
-board.
-
-Determining what fingerprint hardware is on a given [Chrome OS board] is thus
-done at runtime, using [Chrome OS Config].
-
-The `fingerprint` config needs to be in the `model.yaml` for the given
-[Chrome OS board]. The [Chrome OS Config fingerprint] section describes the
-attributes for the `fingerprint` config in more detail.
-
-The [`ec_extras` attribute] needs to be set to the list of fingerprint firmware
-that should be built as part of the build.
-
-See the [`model.yaml` for the Hatch board][hatch model.yaml] as an example.
-
-Instead of crafting the `model.yaml` by hand, newer boards are moving to the
-[Chrome OS Project Configuration] model, where the config is generated using
-[Starlark]. The common [`create_fingerprint`] function can be used across models
-to configure the fingerprint settings. See the [Morphius `config.star`] for an
-example of how to call `create_fingerprint`. After you modify a `config.star`
-file you will need to [regenerate the config]. If you need to change many
-projects (e.g., modifying [`create_fingerprint`]), you can use the [`CLFactory`]
-tool.
-
-Once you have updated the config, you can test your changes by
-[running `cros_config`](#chromeos-config-fingerprint). The Chrome OS Config
-documentation has a [section on testing properties] that describes this in more
-detail.
-
-### SKUs
-
-The fingerprint sensor may only be included on certain SKUs for a given device.
-The fingerprint code uses [Chrome OS Config] to determine whether a device has a
-fingerprint sensor or not. For each SKU, there is an associated
-[fingerprint config][Chrome OS Config fingerprint]. [Chrome OS Config]
-determines the [SKU information][Chrome OS Config SKU] (and thus the
-[fingerprint config][Chrome OS Config fingerprint]) from [CBI Info]. The SKU for
-a given device can be found by viewing `chrome://system/#platform_identity_sku`.
-
-[`common/fpsensor`]: https://chromium.googlesource.com/chromiumos/platform/ec/+/HEAD/common/fpsensor/
-[`driver/fingerprint`]: https://chromium.googlesource.com/chromiumos/platform/ec/+/HEAD/driver/fingerprint
-[`nocturne_fp`]: https://chromium.googlesource.com/chromiumos/platform/ec/+/HEAD/board/nocturne_fp/
-[`nami_fp`]: https://chromium.googlesource.com/chromiumos/platform/ec/+/HEAD/board/nami_fp/
-[`hatch_fp`]: https://chromium.googlesource.com/chromiumos/platform/ec/+/HEAD/board/hatch_fp/
-[`bloonchipper`]: https://chromium.googlesource.com/chromiumos/platform/ec/+/HEAD/board/bloonchipper/
-[`dartmonkey`]: https://chromium.googlesource.com/chromiumos/platform/ec/+/HEAD/board/dartmonkey/
-[hardware write protection]: ../write_protection.md
-[`flash_fp_mcu`]: https://chromium.googlesource.com/chromiumos/platform/ec/+/HEAD/util/flash_fp_mcu
-[`stm32mon`]: https://chromium.googlesource.com/chromiumos/platform/ec/+/e1f3f89e7ea7945adddd0c2e6838f5e59856cff2/util/stm32mon.c#14
-[`futility`]: https://chromium.googlesource.com/chromiumos/platform/vboot_reference/+/HEAD/futility/
-[`sign_official_build.sh`]: https://chromium.googlesource.com/chromiumos/platform/vboot_reference/+/HEAD/scripts/image_signing/sign_official_build.sh
-[vboot_key_id]: https://chromium.googlesource.com/chromiumos/platform/vboot_reference/+/e7db36856ce418552637d1981c173d22dfe5bf39/firmware/2lib/include/2id.h#5
-[vb2_public_key]: https://chromium.googlesource.com/chromiumos/platform/vboot_reference/+/e7db36856ce418552637d1981c173d22dfe5bf39/firmware/2lib/include/2rsa.h#14
-[chatty-firmware-q]: https://groups.google.com/a/google.com/d/msg/chromeos-chatty-firmware/ZSg423wsFPg/26UbdGwjFQAJ
-[`fp_updater.sh`]: http://go/cros-fp-updater-nocturne-source
-[`bio_fw_updater`]: https://chromium.googlesource.com/chromiumos/platform2/+/HEAD/biod/tools
-[`flashrom`]: https://chromium.googlesource.com/chromiumos/third_party/flashrom/
-[STM32F412]: https://www.st.com/resource/en/reference_manual/dm00180369.pdf
-[STM32H743]: https://www.st.com/resource/en/reference_manual/dm00314099.pdf
-[`board/nocturne_fp/dev_key.pem`]: https://chromium.googlesource.com/chromiumos/platform/ec/+/HEAD/board/nocturne_fp/dev_key.pem
-[`timberslide`]: https://chromium.googlesource.com/chromiumos/platform2/+/HEAD/timberslide
-[cros_ec_debugfs]: https://chromium.googlesource.com/chromiumos/third_party/kernel/+/9db44685934a2e4bc9180ea2de87a6c429672395/drivers/platform/chrome/cros_ec_debugfs.c
-[Fingerprint Factory Requirements]: ./fingerprint-factory-requirements.md
-[Chromium OS test image]: https://chromium.googlesource.com/chromiumos/platform/factory/+/HEAD/README.md#building-test-image
-[Chrome OS Config]: https://chromium.googlesource.com/chromiumos/platform2/+/HEAD/chromeos-config/README.md
-[Chrome OS Config fingerprint]: https://chromium.googlesource.com/chromiumos/platform2/+/HEAD/chromeos-config/README.md#fingerprint
-[section on testing properties]: https://chromium.googlesource.com/chromiumos/platform2/+/HEAD/chromeos-config/README.md#adding-and-testing-new-properties
-[Chrome OS board]: https://chromium.googlesource.com/chromiumos/docs/+/HEAD/developer_guide.md#Select-a-board
-[biod chromium-os]: https://chromium.googlesource.com/chromiumos/overlays/chromiumos-overlay/+/4ea72b588af3394cb9fd1c330dcf726472183dfd/virtual/target-chromium-os/target-chromium-os-1.ebuild#154
-[hatch make.defaults]: https://chromium.googlesource.com/chromiumos/overlays/board-overlays/+/2f075f0e7ce09d3eb460f3c529da463a6201276c/overlay-hatch/profiles/base/make.defaults#22
-[Hatch baseboard `make.defaults`]: https://chrome-internal.googlesource.com/chromeos/overlays/baseboard-hatch-private/+/HEAD/profiles/base/make.defaults#17
-[hatch model.yaml]: https://chrome-internal.googlesource.com/chromeos/overlays/overlay-hatch-private/+/HEAD/chromeos-base/chromeos-config-bsp-hatch-private/files/model.yaml
-[`ec_extras` attribute]: https://chromium.googlesource.com/chromiumos/platform2/+/HEAD/chromeos-config/README.md#build_targets
-[FPMCU_FIRMWARE make.defaults]: https://chromium.googlesource.com/chromiumos/overlays/chromiumos-overlay/+/4ea72b588af3394cb9fd1c330dcf726472183dfd/profiles/base/make.defaults#157
-[`USE` flag]: https://devmanual.gentoo.org/general-concepts/use-flags/index.html
-[`USE` flags]: https://devmanual.gentoo.org/general-concepts/use-flags/index.html
-[biod release firmware]: https://chromium.googlesource.com/chromiumos/overlays/chromiumos-overlay/+/4ea72b588af3394cb9fd1c330dcf726472183dfd/chromeos-base/biod/biod-9999.ebuild#49
-[`chromeos-firmware-fpmcu` ebuild]: https://chrome-internal.googlesource.com/chromeos/overlays/chromeos-overlay/+/HEAD/chromeos-base/chromeos-firmware-fpmcu/chromeos-firmware-fpmcu-9999.ebuild
-[firmware ebuild]: https://chrome-internal.googlesource.com/chromeos/overlays/chromeos-overlay/+/HEAD/chromeos-base/chromeos-firmware-fpmcu/chromeos-firmware-fpmcu-9999.ebuild#40
-[`chromeos-fpmcu-release*` ebuilds]: https://chromium.googlesource.com/chromiumos/overlays/chromiumos-overlay/+/HEAD/sys-firmware
-[internal manifest]: https://chromium.googlesource.com/chromiumos/docs/+/HEAD/developer_guide.md#get-the-source-code
-[Unit Tests]: ../unit_tests.md
-[run the unit tests]: ../unit_tests.md#running
-[Measuring Power]: ./fingerprint-dev-for-partners.md#measure-power
-[dragonclaw]: ./fingerprint-dev-for-partners.md#fpmcu-dev-board
-[FPC 1145]: ../../driver/fingerprint/fpc/libfp/fpc1145_private.h
-[FPC 1025]: ../../driver/fingerprint/fpc/bep/fpc1025_private.h
-[FPC 1145 Template Size]: https://chromium.googlesource.com/chromiumos/platform/ec/+/127521b109be8aac352e80e319e46ed123360408/driver/fingerprint/fpc/libfp/fpc1145_private.h#46
-[FPC 1025 Template Size]: https://chromium.googlesource.com/chromiumos/platform/ec/+/127521b109be8aac352e80e319e46ed123360408/driver/fingerprint/fpc/bep/fpc1025_private.h#44
-[Dragonclaw v0.2]: ./fingerprint-dev-for-partners.md#fpmcu-dev-board
-[Icetower v0.2]: ./fingerprint-dev-for-partners.md#fpmcu-dev-board
-[Nucleo F412ZG]: https://www.digikey.com/en/products/detail/stmicroelectronics/NUCLEO-F412ZG/6137573
-[Nucleo H743ZI2]: https://www.digikey.com/en/products/detail/stmicroelectronics/NUCLEO-H743ZI2/10130892
-[CBI Info]: https://chromium.googlesource.com/chromiumos/docs/+/HEAD/design_docs/cros_board_info.md
-[Chrome OS Config SKU]: https://chromium.googlesource.com/chromiumos/platform2/+/HEAD/chromeos-config/README.md#identity
-[Chrome OS Project Configuration]: https://chromium.googlesource.com/chromiumos/config/+/HEAD/README.md
-[Starlark]: https://docs.bazel.build/versions/master/skylark/language.html
-[`create_fingerprint`]: https://chromium.googlesource.com/chromiumos/config/+/e1fa0d7f56eb3dd6e9378e4326de086ada46b7d3/util/hw_topology.star#444
-[Morphius `config.star`]: https://chrome-internal.googlesource.com/chromeos/project/zork/morphius/+/593b657a776ed6b320c826916adc9cd845faf709/config.star#85
-[regenerate the config]: https://chromium.googlesource.com/chromiumos/config/+/HEAD/README.md#making-configuration-changes-for-your-project
-[`CLFactory`]: https://chromium.googlesource.com/chromiumos/config/+/HEAD/README.md#making-bulk-changes-across-repos
diff --git a/docs/getting_started_quickly.md b/docs/getting_started_quickly.md
deleted file mode 100644
index 325bef39b0..0000000000
--- a/docs/getting_started_quickly.md
+++ /dev/null
@@ -1,125 +0,0 @@
-# Get Started Building EC Images (Quickly)
-
-[TOC]
-
-The
-[Chromium OS Developer Guide](https://chromium.googlesource.com/chromiumos/docs/+/HEAD/developer_guide.md)
-and [README](../README.md) walk through the steps needed to fetch and build
-Chromium OS source. These steps can be followed to retrieve and build EC source
-as well. On the other hand, if your sole interest is building an EC image, the
-general developer guide contains some extra unneeded steps.
-
-The fastest possible way to build an EC image is to skip the Chromium OS chroot
-install entirely. The following steps have been tested on an Ubuntu 15.10 (Wily
-Werewolf) 64-bit host machine. Other distros / versions may be used, but
-toolchain incompatibilities may require extra debug.
-
-## Building
-
-1. Install build / dev tools:
-
- ```bash
- sudo apt-get install git libftdi-dev libusb-dev libncurses5-dev gcc-arm-none-eabi
- ```
-
-1. Sync the cros-ec git repo:
-
- ```bash
- git clone https://chromium.googlesource.com/chromiumos/platform/ec
- ```
-
-1. Build your EC image:
-
- ```bash
- HOSTCC=x86_64-linux-gnu-gcc CROSS_COMPILE_arm=arm-none-eabi- make BOARD=${BOARD}
- ```
-
- Note: the EC supports multiple architectures, check `core/*/build.mk` files
- for other supported `CROSS_COMPILE_` variables.
-
-## External Dependencies
-
-Most boards are buildable, but some will fail due to dependencies on external
-binaries (such as [`futility`](#building-futility)). Also, some related tools
-(such as `flash_ec` and `servod`) must be run from the Chromium OS chroot. Here
-is a set of steps to setup a minimal development environment to build EC images
-from the Chromium OS chroot:
-
-1. Create a folder for your chroot:
-
- ```bash
- mkdir cros-src; cd cros-src
- ```
-
-1. Run
-
- ```bash
- repo init -u https://chromium.googlesource.com/chromiumos/manifest -g minilayout,firmware
- ```
-
-1. Run `repo sync`:
-
- ```bash
- repo sync -j <number of cores on your workstatsion>
- ```
-
-1. Enter the chroot and enter your password for `sudo` if prompted:
-
- ```bash
- ./chromite/bin/cros_sdk
- ```
-
-1. Set up your board:
-
- ```bash
- setup_board --board=${BOARD}
- ```
-
- (ex. `setup_board --board=glados`)
-
-1. Build EC:
-
- ```bash
- ./build_packages --board=${BOARD} chromeos-ec
- ```
-
-1. Now, EC images for any board can be built with:
-
- ```bash
- cd ~/trunk/src/platform/ec; make BOARD=${BOARD} -j
- ```
-
-## Building `futility` outside the chroot {#building-futility}
-
-If you want to build the `futility` host tool outside the normal Chrome OS
-chroot self-contained environment, you can try the following
-
-1. Install futility build dependencies:
-
- ```bash
- sudo apt-get install uuid-dev liblzma-dev libyaml-dev libssl-dev
- ```
-
-1. Get the vboot reference sources:
-
- ```bash
- git clone https://chromium.googlesource.com/chromiumos/platform/vboot_reference
- ```
-
-1. Build it:
-
- ```bash
- cd vboot_reference ; make
- ```
-
-1. Install it in `/usr/local/bin`:
-
- ```bash
- sudo make install
- ```
-
-1. Add `/usr/local/bin` to your default `PATH`:
-
- ```bash
- export PATH="${PATH}:/usr/local/bin"
- ```
diff --git a/docs/hammer.md b/docs/hammer.md
deleted file mode 100644
index 6048f1c441..0000000000
--- a/docs/hammer.md
+++ /dev/null
@@ -1,199 +0,0 @@
-# Hammer care and feeding
-
-Original: [go/hammercare](http://go/hammercare)
-
-Last updated: 2021-03-18
-
-[TOC]
-
-## Servo
-
-### Start servod
-
-```
-cros_sdk --no-ns-pid
-sudo servod --port=9000 -b hammer -c hammer.xml
-```
-
-### UART console
-
-The simplest solution for most people is to use the `dut-console` script.
-
-First, add this line into your .bashrc (or other shell init script; needed once
-only):
-``` bash
-alias dut-console="~/chromiumos/src/platform/dev/contrib/dut-console"
-```
-
-Then simply run `dut-console -c ec`. `dut-console` uses `cu` under the hood, and
-works like ssh - to leave, press `<ENTER> <~> <.> <ENTER>`.
-
-
-``` bash
-src/platform/dev/contrib/dut-console -p 9000 -c ec
-```
-
-## Build EC
-
-(Inside chroot)
-``` bash
-cd ~/trunk/src/platform/ec
-make BOARD=<BOARD> -j
-```
-
-## Flash EC
-
-### Prerequisites
-
-#### Find the USB VID:PID of the device
-
-USB VID:PID is listed in [hammer/variants.h](../board/hammer/variants.h).
-Many scripts below requires correct PID to work.
-
-#### Stop hammerd
-
-Remove rootfs verification:
-``` bash
-/usr/share/vboot/bin/make_dev_ssd.sh --remove_rootfs_verification --force
-```
-
-Reboot the DUT then rename hammerd
-``` bash
-mv /usr/bin/hammerd /usr/bin/hammerd.bak
-```
-
-### Hammer connected to Chromebook, flash via USB
-
-(Inside chroot) Copy-paste the script below to a file named
-"flash_hammer.usbremote", run
-``` bash
-bash flash_hammer.usbremote <BOARD> <VID:PID> <IP> [ro]
-```
-
-``` bash
-#!/bin/bash
-# flash_hammer.usbremote
-set -x -e
-
-BOARD=$1
-ID=$2
-IP=$3
-EXTRA="-d $ID"
-
-ssh $IP sh -c "'rm -f /usr/local/ec.bin'"
-scp ~/trunk/src/platform/ec/build/${BOARD}/ec.bin $IP:/usr/local/ec.bin
-
-if [ "$4" = 'ro' ]; then
- ssh $IP sh -x -c "'usb_updater2 $EXTRA -j;
- sleep 1.0;
- usb_updater2 $EXTRA /usr/local/ec.bin;
- sleep 0.5;
- usb_updater2 $EXTRA -s;
- usb_updater2 $EXTRA /usr/local/ec.bin'"
-else
- ssh $IP sh -x -c "'usb_updater2 $EXTRA -w;
- usb_updater2 $EXTRA -r; sleep 0.5;
- usb_updater2 $EXTRA -s;
- usb_updater2 $EXTRA /usr/local/ec.bin'"
-fi
-```
-
-### Hammer connected to Chromebook, flash via servo
-
-(Inside chroot) Copy-paste the script below to a file named "flash_hammer",
-run `bash flash_hammer <IP> </path/to/ec.bin>`
-
-``` bash
-#!/bin/bash
-# Recommended to use a USB 3.0 Ethernet adapter for this to work, otherwise the
-# network on the DUT will temporarily go down when the root USB hub is taken
-# down.
-
-set -e
-IP=$1
-shift
-
-# USB 2.0 root hub
-USBID="usb1"
-
-set -x
-
-# unbind, then rebind, the root hub (in the mean time, we'll start programming)
-ssh $IP sh -c "'echo $USBID > /sys/bus/usb/drivers/usb/unbind; sleep 3; echo $USBID > /sys/bus/usb/drivers/usb/bind'" &
-
-util/flash_ec --board=hammer --port 9000 --image "$@"
-```
-
-### Hammer connected via servo only
-
-Do not connect hammer to Chromebook in this case, or at least make sure
-Chromebook is either suspended (S3) or off (when put into programming mode,
-STM32 always prefers USB interface when available)
-
-For Servo V2:
-
-``` bash
-dut-control -p 9000 spi1_vref:pp3300 spi1_buf_en:on spi1_buf_on_flex_en:on
-util/flash_ec --board=hammer --port=9000 [--image=/path/to/ec.bin]
-
-# To disable power from servo to Hammer
-dut-control -p 9000 spi1_vref:off spi1_buf_en:off spi1_buf_on_flex_en:off
-```
-
-For Servo Micro (there is only one buffer in the power delivery path,
-so don't include the spi1_buf_on_flex_en control):
-
-``` bash
-dut-control -p 9000 spi1_vref:pp3300 spi1_buf_en:on
-util/flash_ec --board=hammer --port=9000 [--image=/path/to/ec.bin]
-
-# To disable power from servo to Hammer
-dut-control -p 9000 spi1_vref:off spi1_buf_en:off
-```
-
-### Hammer connected via POGO-PIN-USB to Linux
-
-So this is very similar to Hammer connected to poppy, flash via USB, but you
-are directly running commands on the machine connected to Hammer, so you don’t
-need to SSH to it.
-
-``` bash
-#!/bin/bash
-# flash_hammer.usblocal
-
-EXTRA=
-EC=build/${BOARD:-hammer}/ec.bin
-UPDATER=usb_updater2
-
-if [ -n "$ID" ]; then
- EXTRA="-d $ID"
-fi
-
-if [ "$1" = 'ro' ]; then
- "${UPDATER}" $EXTRA -j;
- sleep 1.0;
- "${UPDATER}" $EXTRA "${EC}";
- sleep 1.0;
- "${UPDATER}" $EXTRA -s;
- "${UPDATER}" $EXTRA "${EC}";
-else
- "${UPDATER}" $EXTRA -w;
- "${UPDATER}" $EXTRA -r;
- sleep 1.0;
- "${UPDATER}" $EXTRA -s;
- "${UPDATER}" $EXTRA "${EC}";
-fi
-
-# To use this script: BOARD=<BOARD> ID=<VID:PID> ./flash_hammer.usblocal [ro]
-```
-
-## Update touchpad firmware
-
-(Inside DUT)
-``` bash
-usb_updater2 --tp_update <FILE> --device=<VID:PID>
-```
-or
-``` bash
-ec_touchpad_updater -p <PID> <FILE>
-```
diff --git a/docs/i2c-debugging.md b/docs/i2c-debugging.md
deleted file mode 100644
index 125e72b777..0000000000
--- a/docs/i2c-debugging.md
+++ /dev/null
@@ -1,51 +0,0 @@
-# I²C Debugging Tips
-
-The EC codebase has functionality to help you debug I²C errors without pulling
-out the scope. Some of the debug functionality is disabled by default to save
-space, but can be enabled with the `CONFIG_I2C_DEBUG` option.
-
-## Tracing
-
-You can use the `i2ctrace` command to monitor (ranges of) addresses:
-
-```
-i2ctrace [list
- | disable <id>
- | enable <port> <address>
- | enable <port> <address-low> <address-high>]
-```
-
-For example:
-
-```
-> i2ctrace enable 0 0x10 0x30
-> i2ctrace enable 1 0x20
-> i2ctrace list
-id port address
--- ---- -------
-0 0 0x10 to 0x30
-1 1 0x40 to 0x50
-... debug spam may follow ...
-i2c: 1:0x20 wr 0x10 rd 0x01 0x00
-i2c: 1:0x20 wr 0x10 0x01 0x00
-...
-> i2ctrace disable 1
-> i2ctrace list
-id port address
--- ---- -------
-0 0 0x10 to 0x30
-```
-
-A maximum of 8 debug entries are supported at a single time.
-
-Note that `i2ctrace enable` will merge debug entries when possible:
-
-```
-> i2ctrace enable 0 0x10 0x30
-> i2ctrace enable 0 0x40 0x50
-> i2ctrace enable 0 0x31 0x3f
-> i2ctrace list
-id port address
--- ---- -------
-0 0 0x10 to 0x50
-```
diff --git a/docs/ide-support.md b/docs/ide-support.md
deleted file mode 100644
index cec196be58..0000000000
--- a/docs/ide-support.md
+++ /dev/null
@@ -1,57 +0,0 @@
-# IDE Support
-
-[TOC]
-
-## Odd File Types
-
-EC uses a few odd file types/names. Some are included from other header files
-and used to generate data structures, thus it is important for your IDE to index
-them.
-
-Patterns | Vague Type
------------------------------------------------------ | ----------
-`README.*` | Text
-`Makefile.rules`, `Makefile.toolchain` | Makefile
-`gpio.wrap` | C Header
-`gpio.inc` | C Header
-`*.tasklist`, `*.irqlist`, `*.mocklist`, `*.testlist` | C Header
-
-## IDE Configuration Primitives
-
-Due to the way most EC code has been structured, you can typically only safely
-inspect a configuration for a single image (RO or RW) for a single board. Thus,
-you need to specify the specific board/image pair when requesting defines and
-includes.
-
-Command | Description
--------------------------------------------- | ------------------------------
-`make print-defines BOARD=$BOARD BLD=RW/RO` | List compiler injected defines
-`make print-includes BOARD=$BOARD BLD=RW/RO` | List compiler include paths
-
-## VSCode
-
-You can use the `ide-config.sh` tool to generate a VSCode configuration that
-includes selectable sub-configurations for every board/image pair.
-
-1. From the root `ec` directory, do the following:
-
- ```bash
- mkdir -p .vscode
- ./util/ide-config.sh vscode all:RW all:RO | tee .vscode/c_cpp_properties.json
- ```
-
-2. Open VSCode and navigate to some C source file.
-
-3. Run `C/C++ Reset IntelliSense Database` from the `Ctrl-Shift-P` menu
-
-4. Select the config in the bottom right, next to the `Select Language Mode`.
- You will only see this option when a C/C++ file is open. Additionally, you
- can select a configuration by pressing `Ctrl-Shift-P` and selecting the
- `C/C++ Select a Configuration...` option.
-
-5. Add the EC specific file associations and style settings. Do the following
- to copy the default settings to `.vscode/settings.json`:
-
- ```bash
- cp .vscode/settings.json.default .vscode/settings.json
- ```
diff --git a/docs/images/CQ_Prototype_Environment.jpg b/docs/images/CQ_Prototype_Environment.jpg
deleted file mode 100644
index 77b39d9470..0000000000
--- a/docs/images/CQ_Prototype_Environment.jpg
+++ /dev/null
Binary files differ
diff --git a/docs/images/TCPMv2-ExampleStates.png b/docs/images/TCPMv2-ExampleStates.png
deleted file mode 100644
index 7068829e31..0000000000
--- a/docs/images/TCPMv2-ExampleStates.png
+++ /dev/null
Binary files differ
diff --git a/docs/images/TCPMv2-ExampleTransitions.png b/docs/images/TCPMv2-ExampleTransitions.png
deleted file mode 100644
index da88a143a8..0000000000
--- a/docs/images/TCPMv2-ExampleTransitions.png
+++ /dev/null
Binary files differ
diff --git a/docs/images/TCPMv2-TaskLayers.png b/docs/images/TCPMv2-TaskLayers.png
deleted file mode 100644
index 7429e8f9b1..0000000000
--- a/docs/images/TCPMv2-TaskLayers.png
+++ /dev/null
Binary files differ
diff --git a/docs/images/TCPMv2-TaskLoop.png b/docs/images/TCPMv2-TaskLoop.png
deleted file mode 100644
index 1c0bb218fe..0000000000
--- a/docs/images/TCPMv2-TaskLoop.png
+++ /dev/null
Binary files differ
diff --git a/docs/images/alternate_example.png b/docs/images/alternate_example.png
deleted file mode 100644
index b2fcdb51e1..0000000000
--- a/docs/images/alternate_example.png
+++ /dev/null
Binary files differ
diff --git a/docs/images/cros_fingerprint_architecture_diagram.png b/docs/images/cros_fingerprint_architecture_diagram.png
deleted file mode 100644
index f83a338101..0000000000
--- a/docs/images/cros_fingerprint_architecture_diagram.png
+++ /dev/null
Binary files differ
diff --git a/docs/images/cros_fingerprint_decryption_flowchart.png b/docs/images/cros_fingerprint_decryption_flowchart.png
deleted file mode 100644
index b693d6e826..0000000000
--- a/docs/images/cros_fingerprint_decryption_flowchart.png
+++ /dev/null
Binary files differ
diff --git a/docs/images/cros_fingerprint_encryption_flowchart.png b/docs/images/cros_fingerprint_encryption_flowchart.png
deleted file mode 100644
index 8cfbaea56e..0000000000
--- a/docs/images/cros_fingerprint_encryption_flowchart.png
+++ /dev/null
Binary files differ
diff --git a/docs/images/cros_fingerprint_tpm_seed.png b/docs/images/cros_fingerprint_tpm_seed.png
deleted file mode 100644
index 8213e6f775..0000000000
--- a/docs/images/cros_fingerprint_tpm_seed.png
+++ /dev/null
Binary files differ
diff --git a/docs/images/dartmonkey.jpg b/docs/images/dartmonkey.jpg
deleted file mode 100644
index 5eb15ef73d..0000000000
--- a/docs/images/dartmonkey.jpg
+++ /dev/null
Binary files differ
diff --git a/docs/images/dragonclaw.jpg b/docs/images/dragonclaw.jpg
deleted file mode 100644
index c8d1f07934..0000000000
--- a/docs/images/dragonclaw.jpg
+++ /dev/null
Binary files differ
diff --git a/docs/images/dragonclaw_rev_0.2.jpg b/docs/images/dragonclaw_rev_0.2.jpg
deleted file mode 100644
index 5dd41d23e4..0000000000
--- a/docs/images/dragonclaw_rev_0.2.jpg
+++ /dev/null
Binary files differ
diff --git a/docs/images/dragonclaw_rev_0.2_1.8v_load_switch_rework.pdf b/docs/images/dragonclaw_rev_0.2_1.8v_load_switch_rework.pdf
deleted file mode 100644
index 5cb23ac5ef..0000000000
--- a/docs/images/dragonclaw_rev_0.2_1.8v_load_switch_rework.pdf
+++ /dev/null
Binary files differ
diff --git a/docs/images/dragonclaw_rev_0.2_1.8v_rework.jpg b/docs/images/dragonclaw_rev_0.2_1.8v_rework.jpg
deleted file mode 100644
index 6708732d0b..0000000000
--- a/docs/images/dragonclaw_rev_0.2_1.8v_rework.jpg
+++ /dev/null
Binary files differ
diff --git a/docs/images/dragonclaw_servo_fix.jpg b/docs/images/dragonclaw_servo_fix.jpg
deleted file mode 100644
index cdcf510ebf..0000000000
--- a/docs/images/dragonclaw_servo_fix.jpg
+++ /dev/null
Binary files differ
diff --git a/docs/images/dragonclaw_with_10_pin_swd.jpg b/docs/images/dragonclaw_with_10_pin_swd.jpg
deleted file mode 100644
index fb4711cf29..0000000000
--- a/docs/images/dragonclaw_with_10_pin_swd.jpg
+++ /dev/null
Binary files differ
diff --git a/docs/images/dragonclaw_with_20_pin_swd.jpg b/docs/images/dragonclaw_with_20_pin_swd.jpg
deleted file mode 100644
index 18257a1ea7..0000000000
--- a/docs/images/dragonclaw_with_20_pin_swd.jpg
+++ /dev/null
Binary files differ
diff --git a/docs/images/dragonclaw_withfix.jpg b/docs/images/dragonclaw_withfix.jpg
deleted file mode 100644
index c8469502df..0000000000
--- a/docs/images/dragonclaw_withfix.jpg
+++ /dev/null
Binary files differ
diff --git a/docs/images/dragonclaw_yoshi_flex_header.jpg b/docs/images/dragonclaw_yoshi_flex_header.jpg
deleted file mode 100644
index 11ca23ddff..0000000000
--- a/docs/images/dragonclaw_yoshi_flex_header.jpg
+++ /dev/null
Binary files differ
diff --git a/docs/images/dragonclaw_yoshi_flex_header2.jpg b/docs/images/dragonclaw_yoshi_flex_header2.jpg
deleted file mode 100644
index ae515dfd43..0000000000
--- a/docs/images/dragonclaw_yoshi_flex_header2.jpg
+++ /dev/null
Binary files differ
diff --git a/docs/images/ec-3po-high-level-design.png b/docs/images/ec-3po-high-level-design.png
deleted file mode 100644
index 2956fa777f..0000000000
--- a/docs/images/ec-3po-high-level-design.png
+++ /dev/null
Binary files differ
diff --git a/docs/images/ec-3po-internal-design.png b/docs/images/ec-3po-internal-design.png
deleted file mode 100644
index 25f60793ae..0000000000
--- a/docs/images/ec-3po-internal-design.png
+++ /dev/null
Binary files differ
diff --git a/docs/images/gpio_example.png b/docs/images/gpio_example.png
deleted file mode 100644
index b2092b5e30..0000000000
--- a/docs/images/gpio_example.png
+++ /dev/null
Binary files differ
diff --git a/docs/images/gpio_int_example.png b/docs/images/gpio_int_example.png
deleted file mode 100644
index fe231e9b55..0000000000
--- a/docs/images/gpio_int_example.png
+++ /dev/null
Binary files differ
diff --git a/docs/images/i2c_example.png b/docs/images/i2c_example.png
deleted file mode 100644
index 73ee880541..0000000000
--- a/docs/images/i2c_example.png
+++ /dev/null
Binary files differ
diff --git a/docs/images/icetower_with_20_pin_swd.jpg b/docs/images/icetower_with_20_pin_swd.jpg
deleted file mode 100644
index dcaa0ad731..0000000000
--- a/docs/images/icetower_with_20_pin_swd.jpg
+++ /dev/null
Binary files differ
diff --git a/docs/images/servo_micro.jpg b/docs/images/servo_micro.jpg
deleted file mode 100644
index 39c0bbdf48..0000000000
--- a/docs/images/servo_micro.jpg
+++ /dev/null
Binary files differ
diff --git a/docs/images/servo_v2.jpg b/docs/images/servo_v2.jpg
deleted file mode 100644
index e45833ebe9..0000000000
--- a/docs/images/servo_v2.jpg
+++ /dev/null
Binary files differ
diff --git a/docs/images/servo_v2_jtag_header.jpg b/docs/images/servo_v2_jtag_header.jpg
deleted file mode 100644
index 0cfe3e832d..0000000000
--- a/docs/images/servo_v2_jtag_header.jpg
+++ /dev/null
Binary files differ
diff --git a/docs/images/servo_v2_with_micro_usb.jpg b/docs/images/servo_v2_with_micro_usb.jpg
deleted file mode 100644
index dc5c53e258..0000000000
--- a/docs/images/servo_v2_with_micro_usb.jpg
+++ /dev/null
Binary files differ
diff --git a/docs/images/servo_v2_with_yoshi_flex.jpg b/docs/images/servo_v2_with_yoshi_flex.jpg
deleted file mode 100644
index 77263f6676..0000000000
--- a/docs/images/servo_v2_with_yoshi_flex.jpg
+++ /dev/null
Binary files differ
diff --git a/docs/images/servo_v2_with_yoshi_flex2.jpg b/docs/images/servo_v2_with_yoshi_flex2.jpg
deleted file mode 100644
index 833134fd7f..0000000000
--- a/docs/images/servo_v2_with_yoshi_flex2.jpg
+++ /dev/null
Binary files differ
diff --git a/docs/images/servomicro_dragonclaw.jpg b/docs/images/servomicro_dragonclaw.jpg
deleted file mode 100644
index a9d947f220..0000000000
--- a/docs/images/servomicro_dragonclaw.jpg
+++ /dev/null
Binary files differ
diff --git a/docs/images/usb_source_port_balancing.png b/docs/images/usb_source_port_balancing.png
deleted file mode 100644
index 6f4ccf8b93..0000000000
--- a/docs/images/usb_source_port_balancing.png
+++ /dev/null
Binary files differ
diff --git a/docs/images/yoshi_flex.jpg b/docs/images/yoshi_flex.jpg
deleted file mode 100644
index 0ba3304721..0000000000
--- a/docs/images/yoshi_flex.jpg
+++ /dev/null
Binary files differ
diff --git a/docs/images/yoshi_flex_swd_rework.jpg b/docs/images/yoshi_flex_swd_rework.jpg
deleted file mode 100644
index 8dd088745e..0000000000
--- a/docs/images/yoshi_flex_swd_rework.jpg
+++ /dev/null
Binary files differ
diff --git a/docs/low_battery_startup.md b/docs/low_battery_startup.md
deleted file mode 100644
index 48f9c28f49..0000000000
--- a/docs/low_battery_startup.md
+++ /dev/null
@@ -1,420 +0,0 @@
-# Configuring the EC for Low-Battery Startup
-
-Near the bottom of charge, starting up a ChromeOS device can be a tricky
-proposition. Several features interact to make it difficult to reliably turn on
-the machine without browning out. Over the years, a variety of configuration
-options have been written to maximize ChromeOS's compatibility with the basic
-user expectation,
-
-"I plugged it in, therefore it should turn on."
-
-When creating a new board configuration, this document should aid the engineer
-in navigating and choosing correct values for these options.
-
-The first section describes the various features which interact with each other
-to create a complex environment for the EC during boot, especially at a low
-state of charge.
-
-Second, we'll provide some reference configurations which cover many
-Chromebooks' use cases.
-
-Finally, we'll close out with a detailed review of the configuration parameters
-which are available.
-
-## Interacting Features
-
-### Battery and Charging Circuit
-
-For the most part, ChromeOS device power systems are much like other laptop
-battery power systems. A variable-voltage rail is connected to the battery via a
-series of cutoff MOSFETs. Several system power rails derive their power from the
-system's variable-voltage rail. Mains power is delivered to the variable-voltage
-system rail by a buck/boost charging circuit. Mains power is itself rectified,
-isolated, and stepped down by an external power supply.
-
-During most of the battery charge, the charger operates in current mode, acting
-as a constant current source that delivers current to the variable-voltage rail.
-Load transients are served by the capacitance on the rail and the battery. By
-superposition, load transients during the charge don't necessarily draw current
-from the battery, they may just reduce the current flow into the battery.
-
-References to AC power in the EC codebase are actually references to an external
-power supply's DC source. External supplies that are actually USB-PD-speaking
-battery packs are indistinguishable from AC/DC adapters as far as the EC is
-concerned. Variables and functions which refer to external supplies all refer to
-them as 'AC', though.
-
-### Source Current Negotiation
-
-A device may draw power from an AC adapter via a few methods.
-
-#### USB BC1.2 Current Sources
-
-BC1.2 negotiation is usually managed entirely by an external IC. Once it is
-complete, the EC limits itself to 2.4A max. Additionally, the charger may be
-configured to switch to an input voltage regulation mode if the input voltage
-begins to sag too low.
-
-Ideally, the input source provides a voltage droop, such that it is not quite
-overloaded at the input voltage regulation setpoint of about 4.5V. Thus, 4.5V
-serves as a reasonable reference voltage for the charger to use when it is in an
-input voltage-regulation mode.
-
-In effect, the EC limits to both a maximum current of 2.4A and minimum voltage
-of 4.5V, for about 12W of power draw from a BC1.2 source.
-
-See also `driver/bc12/max14637.c:bc12_detect()`.
-
-#### USB-PD Sources
-
-High-current power supplies are negotiated via the USB Type C Current Source and
-USB Power Delivery specifications (PD). PD sources must support Type-C Current
-Source, but the reverse is not true. Both types of current sources are managed
-via the PD protocol module in the EC codebase.
-
-Type-C Current Source capabilities of up to 15W (3A, 5V) are advertised via
-analog signaling alone. Via digital communication in the PD protocol, much
-higher power states may be negotiated. However, higher power states also usually
-run at a higher voltage state as well. Any time the voltage level is changing,
-the power sink (the ChromeOS device) must lower its power consumption during the
-transient. The standby current level is governed by
-`CONFIG_CHARGER_INPUT_CURRENT`.
-
-PD port partners are capable of both soft and hard resets. Hard resets will
-cause a dead-bus state for a brief interval before PD can renegotiate, from
-scratch, because it is intended to emulate a cable disconnect. Therefore, a hard
-reset without a connected battery will brownout the Chromebook.
-
-### Locked and Unlocked Firmware
-
-The Verified Boot implementation normally limits the complexity of the code
-which executes in the locked Read-Only firmware package. The consequences for
-the EC are:
-
-- Locked RO EC firmware does not process any digital PD messages at all, it
- only recognizes the analog advertisement of USB Current Source (15W max).
-- Installation of user-provided firmware is supported, but the write-protect
- pin must be cleared to enable it.
-- On recent systems, write-protect is cleared by removing the system battery.
-
-### ChromeOS `powerd`
-
-The power management daemon provided by ChromeOS displays a "low-power charger"
-warning message via the system tray whenever the charger is limited to less than
-20W. Therefore, if a USB-PD source is restricted to analog signaling, or a BC1.2
-source is connected, the user gets alerted to the situation.
-
-Systems that can run on very little power may be rapidly charged with a 15W
-charger, while a high power system may require a 40W state or more for a decent
-battery charging user experience. Therefore, a board's overlay may override the
-warning threshold by replacing `/usr/share/power_manager/usb_min_ac_watts` in
-the board's filesystem.
-
-See also `platform2/power_manager/` source code.
-
-### Cell Imbalance
-
-Under normal conditions, the battery pack is equipped with a management IC which
-is solely responsible for the safety of the battery, measurement of the state of
-charge, and the balance of its cells. Examples include (but are not limited to)
-the TI BQ40Z50 and Renesas RAJ240.
-
-However, after very long periods of rest without a battery charging cycle, the
-natural self-discharge rate of each cell will cause them to diverge somewhat
-from each other.
-
-Some IC's can be configured to report a pack total state of charge of zero if
-any one cell's voltage is below a certain threshold. However, many do not.
-Therefore, after an extended rest period, one cell can be very close to the cell
-undervoltage cutoff threshold, even though the pack as a whole is considered to
-be at 3% charge or more.
-
-### Power Profile During Boot
-
-The power profile during the boot sequence is substantially different than that
-seen during typical use. Dynamic voltage and frequency scaling of the AP is
-partially governed by the temperature of the processor core. As the processor
-gets hotter, it will reduce its maximum core voltage and frequency to settle out
-at some maximum design junction temperature for the core. For passively cooled
-devices, the profile may also be chosen to limit the external case temperature.
-
-At startup, the case and core are cold. The bootloaders and kernel are also
-optimized to boot as fast as possible for a responsive user experience. So, the
-power drawn during the boot is much higher than that seen during typical
-productivity and entertainment tasks.
-
-### Depthcharge Power Verification
-
-After verification and optional update of the EC's RW firwmare, Depthcharge will
-poll the EC to verify that it is allowed to proceed to boot to the kernel.
-
-It does this by polling via the: - `EC_CMD_CHARGE_STATE` host command. -
-`CHARGE_STATE_CMD_GET_PARAM` subcommand. - `CS_PARAM_LIMIT_POWER` parameter.
-
-When the EC returns 0, power draw by the AP is unlimited and depthcharge resumes
-the boot. If the EC fails to return 0 in three seconds, depthcharge shuts down.
-
-See also vb2ex_ec_vboot_done() in Depthcharge, and option
-`CONFIG_CHARGER_LIMIT_POWER_THRESH_CHG_MW` in the EC. By default, this option is
-not set, and the EC immediately allows the boot to proceed.
-
-## Example Low-Battery Boot Sequences and Configurations
-
-Most ChromeOS devices power needs will be met by one of the following templates.
-
-### Low-Power Device
-
-Low-power devices require 15W or less of power to boot the AP. The battery pack
-is robust enough to support the device during brief intervals of PD negotiation
-without browning out.
-
-```
-#define CONFIG_CHARGER_INPUT_CURRENT 512
-#define CONFIG_CHARGER_MIN_BAT_PCT_FOR_POWER_ON 1
-```
-
-A detailed boot sequence under this configuration, with a low battery and
-available AC power via a USB-PD charger:
-
-1. EC ROM bootloader loads and jumps to the EC's read-only firmware image.
-1. RO firmware negotiates a 15W state via Current Source analog signaling and
- begins charging the battery with it.
-1. RO firmware verifies conditions to begin booting the AP:
- - Battery state of charge > 1%
- - OR charger power greater or equal to 15W (met by Current Source analog
- signaling).
-1. AP firmware performs verification of the EC's RW image, upgrades it if
- necessary, and sysjumps the EC to it.
-1. AP firmware queries the charge state limit power flag via EC-host command,
- and the EC immediately responds that it is clear.
-1. Depthcharge continues the boot.
- 1. In parallel with kernel loading and Linux's boot, the EC performs PD
- negotiation. Charger power lowers to 2.5W for up to 500ms as the source
- transitions from vSafe5V to its highest supported voltage (15V or 20V
- are typical). During this transition time some power is drawn from the
- battery.
- 1. After PD negotiation is complete, the EC raises the charger current
- limit to the negotiated limit (45W is typical).
-
-### Low-Power Device Startup With Marginal Battery Compatibility
-
-Similar in configuration to the low-power device startup, this system enables
-additional options to maximize its compatibility with marginal batteries near
-the bottom of charge. The Grunt family is an exemplar. This system will complete
-software sync with less than 15W of power, but may require more power to boot
-the kernel and get to the login screen.
-
-```
-/* Limit battery impact during PD voltage changes. */
-#define CONFIG_CHARGER_INPUT_CURRENT 512
-
-/* Distrust the battery SOC measurement a bit. */
-#define CONFIG_CHARGER_MIN_BAT_PCT_FOR_POWER_ON 3
-
-/*
- * Require PD negotiation to be complete prior to booting Linux, but don't
- * care about how much power we negotiate.
- */
-#define CONFIG_CHARGER_LIMIT_POWER_THRESH_CHG_MW 15001
-
-/* Extra paranoia about imbalanced cells. */
-#define CONFIG_BATTERY_MEASURE_IMBALANCE
-```
-
-Additionally, in order to take advantage of cell imbalance detection, the system
-battery must support per-cell voltage measurement.
-
-A detailed boot sequence under this configuration, with a low battery and
-available AC power:
-
-1. EC ROM bootloader loads and jumps to the EC's read-only firmware image.
-1. RO firmware negotiates a 15W state via Current Source analog signaling and
- begins charging the battery with it.
-1. RO firmware verifies conditions to begin booting the AP:
- - battery state of charge >= 3% AND cell imbalance < 200 mV
- - OR battery state of charge >= 5%
- - OR charger power greater or equal to 15W (met by Current Source analog
- signaling).
-1. AP firmware performs verification of the EC's RW image, upgrades it if
- necessary, and sysjumps the EC to it.
-1. AP firmware polls the charge state limit power flag via EC-host command for
- up to 3 seconds, in 50ms intervals. The EC will return `1` (power limited)
- so long as the charger power is < 15.001W and the battery is less than 3%.
- 1. Meanwhile, the EC performs PD negotiation. Charger power lowers to 2.5W
- for up to 500ms as the source transitions from vSafe5V to its highest
- supported voltage (15V or 20V are typical).
- 1. After negotiation is complete, the EC raises the charger current limit
- to the negotiated limit (45W is typical).
- 1. The EC returns 0 (unlimited) on the next `LIMIT_POWER` request.
-1. Depthcharge continues to boot Linux.
-
-### High-Power Boot Device Startup
-
-A "high-power device" in this case is one that requires significantly more than
-15W of power to boot the AP. These devices may complete software sync at 15W or
-less. Very briefly drawing current out of the battery does not cause a brownout.
-
-Example configuration:
-
-```
-#define CONFIG_CHARGER_INPUT_CURRENT 512
-#define CONFIG_CHARGER_MIN_BAT_PCT_FOR_POWER_ON 3
-#define CONFIG_CHARGER_MIN_POWER_MW_FOR_POWER_ON 15000
-#define CONFIG_CHARGER_LIMIT_POWER_THRESH_CHG_MW 27000
-```
-
-Where the low-power device specified a threshold that just barely requires PD
-negotiation to happen before booting, this device has a definite minimum power
-to boot Linux (27W). A detailed boot sequence under this configuration, with a
-low battery and available AC power:
-
-1. EC ROM bootloader loads and jumps to the EC's read-only firmware image.
-1. RO firmware negotiates a 15W state via Current Source analog signaling and
- begins charging the battery with it.
-1. RO firmware verifies conditions to begin booting the AP:
- - battery state of charge >= 3%
- - OR charger power greater or equal to 15W (met by Current Source analog
- signaling).
-1. AP firmware performs verification of the EC's RW image, upgrades it if
- necessary, and sysjumps the EC to it.
-1. AP firmware polls the charge state limit power flag via EC-host command for
- up to 3 seconds, in 50ms intervals. The EC will return `1` (power limited)
- so long as the charger power is < 27W and the battery is less than 3%.
- 1. Meanwhile, the EC performs PD negotiation. Charger power lowers to 2.5W
- for up to 500ms as the source transitions from vSafe5V to its highest
- supported voltage (15V or 20V are typical).
- 1. After negotiation is complete, the EC raises the charger current limit
- to the negotiated limit (45W is typical).
- 1. The EC returns 0 (unlimited) on the next `LIMIT_POWER` request.
-1. Depthcharge continues to boot Linux.
-
-### High-Power SwSync Device Startup
-
-Like the high-power boot device startup, these devices draw less than 15W during
-most of the software sync process, but may briefly exceed 15W during short
-intervals of software sync. However, there is substantial risk of brownout
-during those intervals unless the battery is charged up a bit first. Therefore,
-they strictly require 1% battery capacity to perform software sync.
-Additionally, this configuration requires PD negotiation to be complete prior to
-performing a no-battery boot. Nami is an exemplar.
-
-Example configuration:
-
-```
-#define CONFIG_CHARGER_INPUT_CURRENT 512
-
-#define CONFIG_CHARGER_MIN_BAT_PCT_FOR_POWER_ON_WITH_AC 1
-#define CONFIG_CHARGER_MIN_POWER_MW_FOR_POWER_ON_WITH_BATT 15000
-
-#define CONFIG_CHARGER_MIN_BAT_PCT_FOR_POWER_ON 3
-#define CONFIG_CHARGER_MIN_POWER_MW_FOR_POWER_ON 27000
-
-#define CONFIG_CHARGER_LIMIT_POWER_THRESH_BAT_PCT 3
-#define CONFIG_CHARGER_LIMIT_POWER_THRESH_CHG_MW 27000
-```
-
-1. EC ROM bootloader loads and jumps to the EC's read-only firmware image.
-1. RO firmware negotiates a 15W state via Current Source analog signaling and
- begins charging the battery with it.
-1. RO firmware verifies conditions to begin booting the AP:
- - Battery state of charge is greater than 1% AND charger power is greater
- than 15W (met after a minute or so of charging on analog signaling)
- - OR Battery state of charge is greater than 3%
- - OR Charger power is greater than 27W (met after PD negotiation in
- unlocked RO firmware).
-1. AP firmware performs verification of the EC's RW image, upgrades it if
- necessary, and sysjumps the EC to it.
-1. AP firmware polls the charge state limit power flag via EC-host command for
- up to 3 seconds, in 50ms intervals. The EC will return `1` (power limited)
- so long as the charger power is < 27W and the battery is less than 3%.
- 1. Meanwhile, the EC performs PD negotiation. Charger power lowers to 2.5W
- for up to 500ms as the source transitions from vSafe5V to its highest
- supported voltage (15V or 20V are typical).
- 1. After negotiation is complete, the EC raises the charger current limit
- to the negotiated limit (45W is typical).
- 1. The EC returns 0 (unlimited) on the next `LIMIT_POWER` request.
-1. Depthcharge continues to boot Linux.
-
-## Configuration Option Details
-
-### `CONFIG_CHARGER_INPUT_CURRENT`
-
-Required.
-
-The lowest current limit programmed into the charger. This determines both the
-default level used on startup, and the value used during the voltage transients
-in PD negotiation.
-
-It should not be higher than 512 mA unless the device ships with a discrete
-power supply. Raising this term above 512 mA is contrary to USB-PD. It may be
-lowered in order to improve compatibility with marginal BC1.2 chargers.
-
-### `CONFIG_CHARGER_MIN_BAT_PCT_FOR_POWER_ON`
-
-Required.
-
-The minimum battery state of charge to start up the AP, in percent of full
-charge.
-
-#### `CONFIG_CHARGER_MIN_POWER_MW_FOR_POWER_ON`
-
-Default: 15000 (15W)
-
-The minimum charger power level to start the AP even when the battery is less
-than `CHARGER_MIN_BAT_PCT_FOR_POWER_ON`, in milliwatts.
-
-### `CONFIG_BATTERY_MEASURE_IMBALANCE`
-
-Optional. Only set this option if one or more batteries shipped with this board
-support per-cell battery voltage measurement.
-
-When enabled, the EC will query the attached battery for its per-cell voltages.
-If the cell voltage is excessively imbalanced at a low state of charge, the boot
-is inhibited.
-
-#### `CONFIG_CHARGER_MIN_BAT_PCT_IMBALANCED_POWER_ON`
-
-Default: 5%. Above this battery state of charge, cell voltage balance is
-ignored.
-
-#### `CONFIG_BATTERY_MAX_IMBALANCE_MV`
-
-Default: 200 mV. If the difference between the highest and lowest cell exceeds
-this value, then the pack is considered to be imbalanced.
-
-Note that lithium chemistry cells will almost always read similar voltages. It
-is only near the top and bottom of charge that the slope of dV/dQ increases
-enough for small cell imbalances to be visible as a voltage difference.
-
-### `CONFIG_CHARGER_LIMIT_POWER_THRESH_CHG_MW`
-
-Optional.
-
-The minimum charger power level to allow Depthcharge to start up the kernel,
-even when the battery state of charge is less than
-`CHARGER_LIMIT_POWER_THRESH_BAT_PCT`, in milliwatts.
-
-When this term is `#undef`ined (the default), kernel startup is immediately
-allowed.
-
-#### `CONFIG_CHARGER_LIMIT_POWER_THRESH_BAT_PCT`
-
-Optional.
-
-The minimum battery state of charge to allow Depthcharge to start up the kernel.
-When using this feature, start with `CONFIG_CHARGER_MIN_BAT_PCT_FOR_POWER_ON`
-
-### `CONFIG_CHARGER_MIN_BAT_PCT_FOR_POWER_ON_WITH_AC`
-
-Optional.
-
-Similar to `MIN_BAT_PCT_FOR_POWER_ON`, but used to define a secondary threshold
-for this feature.
-
-#### `CONFIG_CHARGER_MIN_POWER_MW_FOR_POWER_ON_WITH_BATT`
-
-Optional.
-
-Similar to `CONFIG_CHARGER_MIN_POWER_MW_FOR_POWER_ON`, this is the minimum
-charger power needed to boot even when the battery is less than
-`CONFIG_CHARGER_MIN_BAT_PCT_FOR_POWER_ON_WITH_AC`
diff --git a/docs/new_board_checklist.md b/docs/new_board_checklist.md
deleted file mode 100644
index 7fe89d4121..0000000000
--- a/docs/new_board_checklist.md
+++ /dev/null
@@ -1,179 +0,0 @@
-# Creating a new EC board
-
-[TOC]
-
-## Overview
-
-This document describes the high-level steps needed to create a new EC board. If
-you're creating a new board based on existing baseboard, you can jump straight
-to the relevant link found under
-[Configuring EC Features](#Configure-EC-Features) and focus on known board
-changes.
-
-## Conventions
-
-### Key Files
-
-Before you get started, it's important to understand the role of a few key files
-in the EC codebase.
-
-- [`include/config.h`](../include/config.h) {#config_h} - Contains the list of
- top-level configuration options for the Chrome EC codebase. Each
- configuration option is documented inline and is considered the
- authoritative definition.
-
-- `baseboard/<name>/` - This directory contains header files and source files
- shared by all boards in a baseboard family.
-
- - `baseboard.h` - Contains the EC configuration options shared by all
- devices in the baseboard family.
- - `baseboard.c` - Contains code shared by all devices in the baseboard
- family.
- - `build.mk` - The board family makefile specifies C source files compiled
- into all boards in the baseboard family.
-
-- `board/<board>` - Files in this directory are only built for a single board.
-
- - `board.h` - EC configuration options specific to a single board.
- - `board.c` - Code built only on this board.
- - `build.mk` {#board_build_mk} - The board makefile defines the EC chipset
- family, defines the baseboard name, and specifies the C source files
- that are compiled.
- - `gpio.inc` - This C header file defines the interrupts, GPIOs, and
- alternate function selection for all pins on the EC chipset.
- - `ec.tasklist` - This C header defines the lists of tasks that are
- enabled on the board. See the main EC documentation more details on
- [EC tasks].
-
-### GPIO Naming
-
-Many drivers and libraries in the common EC code rely on board variants defining
-an exact GPIO signal name. Examples include the `GPIO_LID_OPEN`,
-`GPIO_ENTERING_RW`, and `GPIO_SYS_RESET_L` signals. The net names in schematics
-often do not match these names exactly. When this occurs, best practice is that
-all the `GPIO_INT()`, `GPIO()`, `ALTERNATE()`, and `UNIMPLEMENTED()` definitions
-in `gpio.inc` use the schematic net name. You then create `#define` macros in
-`board.h` to map the net names to the EC common names.
-
-Below is an example configuration for the SYS_RESET_L signal. The schematic net
-name of this signal is EC_RST_ODL and the signal connects to the EC chipset pin
-GPIO02.
-
-```c
-/* From gpio.inc */
-GPIO(EC_RST_ODL, PIN(0, 2), GPIO_ODR_HIGH)
-
-/* From board.h */
-/* Map the schematic net name to the required EC name */
-#define GPIO_SYS_RESET_L GPIO_EC_RST_ODL
-```
-
-Please see the [GPIO](./configuration/gpio.md) documentation for additional
-details on the GPIO macros.
-
-## How to use this document
-
-Each of the following sections details a single feature set that may need to be
-modified or configured for your new board. The feature sets are organized so
-they can be implemented with a reasonably sized change list, and can be worked
-on independently.
-
-Each configuration feature document includes the following sub-tasks:
-
-- **Config Options** - This section details the `CONFIG_*` options relevant to
- the feature. Use the documentation found in [config.h] to determine whether
- each option should be enabled (using #define) or disabled (using #undef) in
- the relevant `baseboard.h` or `board.h` file.
-- **Feature Parameters** - This section details parameters that control the
- operation of the feature. Similar to the config options, feature parameters
- are defined in [config.h] and prefixed with `CONFIG_*`. However, feature
- parameters are assigned a default value, which can be overridden in by
- `baseboard.h` or `board.h` using an `#undef/#define` pair. `c #undef
- CONFIG_UART_TX_BUF_SIZE #define CONFIG_UART_TX_BUF_SIZE 4096`
-- **GPIOs and Alternate Pins** - This section details signals and pins
- relevant to the feature. Add the required `GPIO_INT()`, `GPIO()`,
- `ALTERNATE()`, and `UNIMPLEMENTED()` definitions to `gpio.inc`, making sure
- to follow the [GPIO naming conventions].
-- **Data Structures** - This section details the data structures required to
- configure the feature for correct operation. Add the data structures to
- `baseboard.c` or `board.c`. Note that most data structures required by the
- common EC code should be declared `const` to save on RAM usage.
-- **Tasks** - This section details the tasks that the EC feature requires for
- operation.
-- **Testing and Debugging** - This section details strategies for testing the
- EC feature set and for debugging issues. This section also documents EC
- console commands related to the feature set.
-- **Example** - When present, this section walks through a complete example
- for configuring an EC feature based on an existing board implementation.
-
-## Create the new EC board
-
-The first step when creating a new EC board, is to create the required files in
-the `./baseboard` and `./board` directories. When adding a new board for an
-existing baseboard family, use the python script [new_variant.py] to
-automatically copy the `./board` directory from an existing EC board to get you
-started. The [new_variant.py] script performs additional operations not directly
-related to the EC code, including copying coreboot files and modifying the yaml
-files. If you want to copy the EC board files only, you can directly call the
-[create_initial_ec_image.sh] script. The instructions for running this script
-are found in the corresponding [README.md] documentation.
-
-The [new_variant.py] script also verifies the new EC board compiles and prepares
-a changelist to upload to Gerrit. You should upload this changelist unmodified
-for review and submission (you may need to run `make buildall -k` to satisfy the
-EC pre-submit tests).
-
-The next step is to review the following sections to make any needed
-modifications to your new board files, test the changes, and upload the changes
-for review.
-
-### Creating a new reference board
-
-If you are creating a new reference board, it is recommended that you manually
-create new directories under the `./baseboard` and `./board` directories and
-populate these directories with the minimum set of files required compile the EC
-board. The initial changelists for the Hatch and Volteer reference boards
-provide good examples for how to start.
-
-* [Volteer EC skeleton build]
-* [Hatch EC skeleton build]
-
-After submitting the skeleton builds, review the following sections and add each
-feature set as required by your design.
-
-## Configure EC Features
-
-The checklist below provides an overview of EC features that must be configured
-for correct operation of a Chromebook. The "Needed for Power On" column
-indicates which features are critical for board bringup. These features take
-priority and should be ready before the first prototypes arrive. Use the
-documentation link for details about the code changes required to implement each
-feature.
-
-EC Feature | Needed for Power On
-:-------------------------------------------------------------------------- | ------------------:
-[Configure EC Chipset](./configuration/ec_chipset.md) | yes
-[Configure AP to EC Communication](./configuration/config_ap_to_ec_comm.md) | yes
-[Configure AP Power Sequencing](./configuration/ap_power_sequencing.md) | yes
-[Configure USB-C](./usb-c.md) | yes
-[Configure Charger (TODO)](./configuration/template.md) | yes
-[Configure I2C Buses](./configuration/i2c.md) | no
-[Configure CrOS Board Information (CBI)](./configuration/cbi.md) | no
-[Configure Keyboard](./configuration/keyboard.md) | no
-[Configure LEDs](./configuration/leds.md) | no
-[Configure Motion Sensors (TODO)](./configuration/motion_sensors.md) | no
-[Configure BC1.2 Charger Detector (TODO)](./configuration/template.md) | no
-[Configure Battery (TODO)](./configuration/template.md) | no
-
-After finishing the changes required for all EC features, it is recommended that
-you make one final pass over all the GPIOs and pin assignments used on your
-board. Refer to the [GPIO](./configuration/gpio.md) documentation for details.
-
-[README.md]:https://chromium.googlesource.com/chromiumos/platform/dev-util/+/HEAD/contrib/variant/README.md
-[new_variant.py]:https://chromium.googlesource.com/chromiumos/platform/dev-util/+/HEAD/contrib/variant/new_variant.py
-[create_initial_ec_image.sh]:https://chromium.googlesource.com/chromiumos/platform/dev-util/+/HEAD/contrib/variant/create_initial_ec_image.sh
-[Volteer EC skeleton build]:https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/1758532
-[Hatch EC skeleton build]:https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/1377569/
-[config.h]: ./new_board_checklist.md#config_h
-[EC tasks]: ../README.md#Tasks
-[GPIO naming conventions]: ./new_board_checklist.md#GPIO-Naming
diff --git a/docs/reducing_ec_image_size.md b/docs/reducing_ec_image_size.md
deleted file mode 100644
index a165f165ff..0000000000
--- a/docs/reducing_ec_image_size.md
+++ /dev/null
@@ -1,459 +0,0 @@
-# Reducing the EC image size
-
-The EC ToT codebase continues grows as new features are added and for bug
-fixes. This puts pressure on older boards that have limited flash space
-remaining. This document provides some tips for reducing the EC image size.
-
-[TOC]
-
-## Checking the EC image footprint
-
-The EC codebase supports two build types:
-
-1. `cros-ec` builds are the legacy EC images built using Make (e.g. `make
- BOARD=volteer`)
-1. `zephyr-ec` builds are the EC images built using the Zephyr RTOS kernel using
- zmake/Cmake (e.g. `zmake configure -b zephyr/projects/volteer/volteer`)
-
-### Checking a single cros-ec build
-
-Building a single cros-ec board using `make BOARD=<board> -j` reports the the
-number of bytes free in flash and RAM for both the RO and RW images. An example
-from building the juniper board is shown below.
-
-```
-$ make BOARD=juniper -j
- ...
- *** 668 bytes in flash and 10308 bytes in RAM still available on juniper RO ****
- *** 3224 bytes in flash and 7460 bytes in RAM still available on juniper RW ****
-```
-
-### Checking all cros-ec builds
-
-Running `make buildall -j` shows a summary of the three boards with the smallest
-RO flash footprint, FW flash footprint, and RW RAM footprint.
-
-```
-$ make buildall -j
- ...
-buildall completed successfully!
-Smallest free spaces in RO flash (bytes):
-servo_v4 : 104
-scarlet : 108
-mushu : 160
-Smallest free spaces in RW flash (bytes):
-mushu : 96
-bobba : 232
-trondo : 376
-Tightest boards' RW RAM images, bytes free:
-whiskers : 244
-minimuffin: 284
-zinger : 284
-```
-
-### Comparing cros-ec image sizes
-
-The cros-ec makefile provides two make targets for helping track the impact of
-code changes.
-
-`make savesizes` saves the EC footprint information for all boards, providing
-the baseline for comparison. `make newsizes` compares the sizes of the current
-build against the EC footprint information saved by most recent invocation of
-`make savesizes`.
-
-General workflow:
-1. Checkout branch you need to compare against. For example `repo start
- check-ec-size -r cros/main` or `repo start check-ec-size -r <hash>`.
-1. Run `make buildall -j`.
-1. Run `make savesizes`.
-1. Apply your code change (e.g. change the local branch, cherry-pick your
- changes, or directly edit source files).
-1. Run `make buildall -j` again.
-1. Run `make newsizes` to generate report of size changes.
-
-Example report from `make newsizes` shown below:
-
-```
-$ make newsizes
-build/burnet/RO/space_free_flash grew by 576 bytes: (488 to 1064)
-build/burnet/RW/space_free_flash grew by 552 bytes: (1324 to 1876)
-build/cerise/RO/space_free_flash grew by 512 bytes: (276 to 788)
-build/cerise/RW/space_free_flash grew by 548 bytes: (7076 to 7624)
- ...
-```
-
-### Checking a single zephyr-ec build
-
-By default all the information messages from the `zmake` tool are hidden during
-builds of zephyr-ec boards.
-
-Changing the logging level to INFO, displays the flash and SRAM usage of board.
-
-```
-$ zmake -l INFO configure -b zephyr/projects/volteer/volteer
-INFO: Clearing old build directory /mnt/host/source/src/platform/ec/build/zephyr/projects/volteer/volteer
- ...
-INFO: [/mnt/host/source/src/platform/ec/build/zephyr/projects/volteer/volteer:ro]Memory region Used Size Region Size %age Used
-INFO: [/mnt/host/source/src/platform/ec/build/zephyr/projects/volteer/volteer:ro]FLASH: 238852 B 512 KB 45.56%
-INFO: [/mnt/host/source/src/platform/ec/build/zephyr/projects/volteer/volteer:ro]SRAM: 57144 B 62 KB 90.01%
-INFO: [/mnt/host/source/src/platform/ec/build/zephyr/projects/volteer/volteer:ro]IDT_LIST: 0 GB 2 KB 0.00%
-INFO: [/mnt/host/source/src/platform/ec/build/zephyr/projects/volteer/volteer:rw]Memory region Used Size Region Size %age Used
-INFO: [/mnt/host/source/src/platform/ec/build/zephyr/projects/volteer/volteer:rw]FLASH: 238852 B 512 KB 45.56%
-INFO: [/mnt/host/source/src/platform/ec/build/zephyr/projects/volteer/volteer:rw]SRAM: 57144 B 62 KB 90.01%
-INFO: [/mnt/host/source/src/platform/ec/build/zephyr/projects/volteer/volteer:rw]IDT_LIST: 0 GB 2 KB 0.00%
-```
-
-For easier to read output, you can run the ninja build tool directly and see the
-RO and RW footprint.
-
-```
-$ zmake configure zephyr/projects/volteer/volteer/
-$ ninja -C build/zephyr/projects/volteer/volteer/build-ro
-ninja: Entering directory 'build/zephyr/projects/volteer/volteer/build-ro'
-[1/324] Preparing syscall dependency handling
-
-[317/324] Linking C executable zephyr/zephyr_prebuilt.elf
-
-[324/324] Linking C executable zephyr/zephyr.elf
-Memory region Used Size Region Size %age Used
- FLASH: 238852 B 512 KB 45.56%
- SRAM: 57144 B 62 KB 90.01%
- IDT_LIST: 0 GB 2 KB 0.00%
-```
-
-Note, that the flash region size listed above represents the total flash
-available on the EC. The actual available region size is only half the reported
-value in order to store two images (RO+RW).
-
-#### Other Zephyr utilities
-
-The Cmake system utilized by Zephyr provides two build targets `rom_report` and
-`ram_report` which generate a list of all the compiled objects in tabular form.
-This can be useful for identifying particular modules that contribute to the
-image size.
-
-The `rom_report` and `ram_report` targets are currently only supported when
-working outside the chroot. Follow the [instructions][1] for building zephyr-ec
-images outside chroot before running the commands below.
-
-```
-# Configure the Volteer zephyr project, storing the build files in /tmp/zephyr-volteer
-$ zmake configure -B /tmp/zephyr-volteer zephyr/projects/volteer/volteer -t zephyr
-
-# Build the RO image
-$ ninja -C /tmp/zephyr-volteer/build-ro
-
-# Generate the ROM report, report sent to stdout
-$ ninja -C /tmp/zephyr-volteer/build-ro rom_report
-```
-
-Please refer to the [Zephyr Optimization Tools][3] documentation for details on
-the `rom_report` and `ram_report` targets.
-
-## Disable console commands
-
-The lowest hanging fruit for reducing the EC image size is by disabling console
-commands that provide debug information only and don't impact the user or the
-automated testing. Any console command that is not used by the FAFT tests and
-suites is safe to disable in the EC images.
-
-For cros-ec builds, add `#undef CONFIG_CMD_<name>` to the board.h or baseboard.h
-file to disable the console command.
-
-For zephyr-ec builds, add `CONFIG_PLATFORM_EC_CONSOLE_CMD_<name>=n` to the board
-prj.conf file to disable the console command.
-
-* TODO: Create new CONFIG/Kconfig option that disables all console commands not
- required by FAFT.
-
-| Used by FAFT | config.h option | Console commands | Notes |
-|:---|:---|:---|:---|
-| | CONFIG_CMD_ACCELS | `accelrange`<br>`accelres`<br>`accelrate`<br>`accelread`<br>`accelinit`<br>`accelinfo` | |
-| | CONFIG_CMD_ACCELSPOOF | `accelspoof` | |
-| | CONFIG_CMD_ACCEL_FIFO | `fiforead` | |
-| | CONFIG_CMD_ACCEL_INFO | `accelinfo` | |
-| | CONFIG_CMD_ADC | `adc` | Note firmware_ECAdc uses the `temps` command. |
-| | CONFIG_CMD_ALS | `als` | |
-| | CONFIG_CMD_APTHROTTLE | `apthrottle` | |
-| | CONFIG_CMD_AP_RESET_LOG |??? | |
-| | CONFIG_CMD_BATDEBUG | `fgunseal`<br>`fgseal`<br>`fginit`<br>`fgprobe`<br>`fgrd`<br>`fgcmd`<br>`fcmdrd` | |
-| | CONFIG_CMD_BATTFAKE | `battfake` | |
-| | CONFIG_CMD_BATT_MFG_ACCESS | `battmfgacc` | |
-| | CONFIG_CMD_CBI | `cbi` | firmwareECCbiEeprom uses `ectool` on AP to test CBI |
-| x | CONFIG_CMD_CHARGEN | `chargen` | Used by firmware_Cr50CCDUartStress, included in faft_ccd, faft_cr50_prepvt, and faft_cr50_pvt suites |
-| | CONFIG_CMD_CHARGER | `bd9995x`<br>`sy21612` | |
-| | CONFIG_CMD_CHARGER_ADC_AMON_BMON | `amonbmon` | |
-| | CONFIG_CMD_CHARGER_DUMP | `charger_dump` | |
-| | CONFIG_CMD_CHARGER_PROFILE_OVERRIDE | `fastcharge` | |
-| | CONFIG_CMD_CHARGER_PROFILE_OVERRIDE_TEST | `fastchgtest` | |
-| | CONFIG_CMD_CHARGE_SUPPLIER_INFO | `chgsup` | |
-| | CONFIG_CMD_CHGRAMP | `chgramp` | |
-| | CONFIG_CMD_CLOCKGATES | `clockgates` | |
-| | CONFIG_CMD_COMXTEST | `comxtest` | |
-| x | CONFIG_CMD_CRASH | `crash` | |
-| | CONFIG_CMD_DEVICE_EVENT | `deviceevent` | |
-| | CONFIG_CMD_DLOG | `dlog` | |
-| | CONFIG_CMD_ECTEMP | `ectemp` | |
-| | CONFIG_CMD_FASTCHARGE | `fastcharge` | Obsolete? use CONFIG_CMD_CHARGER_PROFILE_OVERRIDE? |
-| | CONFIG_CMD_FLASH | `flasherase`<br>`flashwrite`<br>`flashread` | |
-| | CONFIG_CMD_FLASHINFO | `flashinfo` | |
-| | CONFIG_CMD_FLASH_TRISTATE | `fpcapture`<br>`flash_tristate` | |
-| | CONFIG_CMD_FLASH_WP | `flashwp` | |
-| | CONFIG_CMD_FORCETIME | `forcetime` | |
-| | CONFIG_CMD_FPSENSOR_DEBUG | `fpcapture`<br>`fpenroll`<br>`fpmatch`<br>`fpclear`<br>`fpmaintenance` | |
-| | CONFIG_CMD_GETTIME | `gettime` | Used by Cr50 tests, not by FAFT EC |
-| | CONFIG_CMD_GL3590 | `gl3590` | |
-| | CONFIG_CMD_GPIO_EXTENDED | Adds options to `gpioget` and `gpioset`. | Should be renamed to CONFIG_GPOI_EXTENDED |
-| | CONFIG_CMD_GPIO_POWER_DOWN | Not a valid config. | Should be CONFIG_GPIO_POWER_DOWN |
-| | CONFIG_CMD_GT7288 | `gt7288_desc`<br>`gt7288_repdesc`<br>`gt7288_ver`<br>`gt7288_report` | |
-| | CONFIG_CMD_HASH | `hash` | firmware_ECHash uses `ectool echash` |
-| x | CONFIG_CMD_HCDEBUG | `hcdebug` | firmware_ECBootTime.py |
-| x | CONFIG_CMD_HOSTCMD | `hostcmd` | |
-| | CONFIG_CMD_I2CWEDGE | `i2cwedge`<br>`i2cunwedge` | |
-| | CONFIG_CMD_I2C_PROTECT | `i2cprotect` | |
-| | CONFIG_CMD_I2C_SCAN | `i2cscan` | |
-| | CONFIG_CMD_I2C_STRESS_TEST | `i2ctest` | |
-| | CONFIG_CMD_I2C_STRESS_TEST_ACCEL | Not a console command | |
-| | CONFIG_CMD_I2C_STRESS_TEST_ALS | Not a console command | |
-| | CONFIG_CMD_I2C_STRESS_TEST_BATTERY | Not a console command | |
-| | CONFIG_CMD_I2C_STRESS_TEST_CHARGER | Not a console command | |
-| | CONFIG_CMD_I2C_STRESS_TEST_TCPC | `Not a console command | |
-| | CONFIG_CMD_I2C_XFER | `i2cxfer` | firmware_ECCbiEeprom uses `ectool i2cxfer` which is not guarded by CONFIG_CMD_I2C_XFER |
-| | CONFIG_CMD_I2C_XFER_RAW | | Adds options to `i2cxfer` |
-| | CONFIG_CMD_IDLE_STATS | `idlestats` | |
-| | CONFIG_CMD_INA | `ina` | |
-| | CONFIG_CMD_JUMPTAGS | `jumptags` | |
-| x | CONFIG_CMD_KEYBOARD | `8042`<br>`ksstate`<br>`kbpress` | |
-| | CONFIG_CMD_LEDTEST | `ledtest` | |
-| | CONFIG_CMD_MCDP | `mcdp` | |
-| | CONFIG_CMD_MD | `md` | |
-| | CONFIG_CMD_MEM | | Not a console command - gates `md` and `rw` |
-| | CONFIG_CMD_MFALLOW | `mfallow` | |
-| | CONFIG_CMD_MMAPINFO | `mmapinfo` | |
-| x | CONFIG_CMD_PD | `pd` | Used by FAFT PD |
-| | CONFIG_CMD_PD_DEV_DUMP_INFO | | Not a console command |
-| | CONFIG_CMD_PD_FLASH | `pd flash` | Not supported by TCPMv2 |
-| | CONFIG_CMD_PECI | `peci` | firmware_ECThermal uses `ectool tempsinfo` |
-| | CONFIG_CMD_PLL | `pll` | only used by lm4 chip |
-| | CONFIG_CMD_POWERINDEBUG | `powerindebug` | |
-| | CONFIG_CMD_POWERLED | `powerled` | |
-| x | CONFIG_CMD_POWER_AP | `apreset`<br>`apshutdown` | Used by power_Monitoring.py |
-| | CONFIG_CMD_PPC_DUMP | `ppc_dump` | |
-| | CONFIG_CMD_PS2 | `ps2ench`<br>`ps2write` | Used only on NPCX |
-| | CONFIG_CMD_PWR_AVG | `pwr_avg` | |
-| | CONFIG_CMD_RAND | `rand` | Used only on STM32 |
-| | CONFIG_CMD_REGULATOR | `ir357x` | |
-| | CONFIG_CMD_RESET_FLAGS | `rflags` | |
-| | CONFIG_CMD_RETIMER | `bb`<br>`kbxfer` | |
-| | CONFIG_CMD_RTC | `rtc` | |
-| | CONFIG_CMD_RTC_ALARM | `rtc_alarm` | |
-| | CONFIG_CMD_RW | `rw` | |
-| | CONFIG_CMD_SCRATCHPAD | `scratchpad` | |
-| | CONFIG_CMD_SEVEN_SEG_DISPLAY | `seg` | |
-| | CONFIG_CMD_SHA256_TEST | `???` | |
-| x | CONFIG_CMD_SHMEM | `shmem` | Used by firmware_ECSharedMem |
-| | CONFIG_CMD_SLEEP | `sleep` | used only lm4 |
-| | CONFIG_CMD_SLEEPMASK | `sleepmask` | Only used for Cr50 tests |
-| | CONFIG_CMD_SLEEPMASK_SET | | Adds options to `sleepmask` |
-| | CONFIG_CMD_SPI_FLASH | `spi_flasherase`<br>`spi_flashwrite`<br>`spi_flashread`<br>`spi_flash_rsr`<br>`spi_flash_wsr`<br>`spi_flash_wsr` | |
-| | CONFIG_CMD_SPI_NOR | `spinorinfo`<br>`spinorerase`<br>`spinorwrite`<br>`spinorread` | |
-| | CONFIG_CMD_SPI_XFER | `spixfer` | |
-| | CONFIG_CMD_STACKOVERFLOW | `crash stack` | Adds option to `crash` command. |
-| x | CONFIG_CMD_SYSINFO | `sysinfo` | Used by firmware_ECSystemLocked |
-| x | CONFIG_CMD_SYSJUMP | `sysjump` | Used by firmware_ECSharedMem |
-| | CONFIG_CMD_SYSLOCK | `syslock` | |
-| | CONFIG_CMD_TASKREADY | `taskready` | |
-| | CONFIG_CMD_TASK_RESET | `taskreset` | |
-| | CONFIG_CMD_TCPC_DUMP | `tcpci_dump` | |
-| x | CONFIG_CMD_TEMP_SENSOR | `temps` | |
-| | CONFIG_CMD_TIMERINFO | `timerinfo` | |
-| | CONFIG_CMD_TYPEC | `typec` | |
-| | CONFIG_CMD_USART_INFO | `usart_info` | |
-| | CONFIG_CMD_USB_PD_CABLE | `pdcable` | |
-| x | CONFIG_CMD_USB_PD_PE | `pe` | Doesn't appear to be used but might be by FAFT PD |
-| x | CONFIG_CMD_WAITMS | `waitms` | firmware_ECWatchdog | |
-
-## Reduce or eliminate USB-C debugging
-
-The TCPM (Type-C Port manager) implementation is one of the more complex modules
-implemented by the EC code. This module includes extensive debugging and is
-enabled by default due to the value provided during both board bringup and on
-production systems.
-
-The TCPM provides the following debug levels:
-* `DEBUG_DISABLE` (0) - Debugging disabled, no runtime messages displayed
-* `DEBUG_LEVEL_1` (1) - Displays all the state transitions for the TC (Type-C)
- and PE (Policy Engine) state machines
-* `DEBUG_LEVEL_2` (2) - Displays the raw contents of received PD (Power
- Delivery) packets, excluding PING packets
-* `DEBUG_LEVEL_3` (3) - Enables debug messages in the PRL Also displays received
- PING packets.
-
-When `CONFIG_USB_PD_DEBUG_LEVEL` is undefined, the EC allows runtime
-configuration of the USB-C debug level using the `pd dump <level>` EC console
-command. In this configuration, the strings from all debug levels are included
-in the image.
-
-Enabling a fixed debug level removes runtime control of the debug level and also
-removes the strings for the higher debug levels.
-
-For cros-ec builds, add the following to your board.h/baseboard.h file:
-
-```c
- #define CONFIG_USB_PD_DEBUG_LEVEL <level>
-```
-
-For zephyr-ec builds, add the following to your prj.conf file:
-
-```
- CONFIG_PLATFORM_EC_USB_PD_DEBUG_FIXED_LEVEL=y
- CONFIG_PLATFORM_EC_USB_PD_DEBUG_LEVEL=<level>
-```
-
-Approximate flash space savings from each fixed level setting:
-
-Fixed Debug Level | Relative Saving | Cumulative Saving
---- | --- | ---
-Disabled | 0 | 0
-3 | 100 bytes | 100 bytes
-2 | 500-600 bytes | 600-700 bytes
-1 | 100 bytes | 700-800 bytes
-0 | 2000 bytes | 2700-2800 bytes
-
-The recommended setting is setting the fixed debug level to `DEBUG_LEVEL_2` (2).
-This adds details about received PD packets in the EC log stored by the kernel
-and can help troubleshoot PD issues when a PD analyzer isn't available.
-
-It is not recommended to set the fixed debug level to `DEBUG_DISABLE` (0) on any
-shipping firmware.
-
-### TCPMv1 Configuration
-
-Many older platforms still use the legacy TCPMv1 (`CONFIG_USB_PD_TCPMV1`)
-implementation. Specific to TCPMv1, the PD protocol state names can be removed
-from the debug output by adding the following to the board.h/baseboard.h file.
-
-```c
-#undef CONFIG_USB_PD_TCPMV1_DEBUG
-```
-
-This saves around 900 bytes of flash space. TCPMv2 does not currently provide an
-equivalent configuration option, so there is also no Kconfig equivalent.
-
-## Other optional features
-
-### ASSERT() Calls
-
-By default, `ASSERT()` calls generate a console message of the following form:
-
-```
- ASSERTION FAILURE '<expr>' in function() at file:line
-```
-
-There are two options available that reduce the size of strings stored with the
-`ASSERT()` calls.
-
-Description | cros-ec setting | zephyr-ec setting | Total Savings
-:--- | :--- | :--- | :---
-Display only file and line number | `#define CONFIG_DEBUG_ASSERT_BRIEF` | `CONFIG_PLATFORM_EC_DEBUG_ASSERT_BRIEF=y` | 2000-2500 bytes
-Disable all debug from ASSERT() calls.<br> EC is reset using a software breakpoint. | `#undef CONFIG_DEBUG_ASSERT_REBOOTS` | `CONFIG_PLATFORM_EC_DEBUG_ASSERT_REBOOTS=n`<br>`CONFIG_PLATFORM_EC_DEBUG_ASSERT_BREAKPOINT=y` | 3000-4000 bytes
-
-It is not recommended to disable `CONFIG_PLATFORM_EC_DEBUG_ASSERT_REBOOTS` on
-shipping firmware.
-
-### Disable console help
-
-The help strings can be removed from the final build, saving about 5000 bytes of
-flash space.
-
-For cros-ec builds, add `#undef CONFIG_CONSOLE_CMDHELP` to the
-board.h/baseboard.h file.
-
-zephyr-ec builds use Zephyr's shell subsystem and by default enable the
-`CONFIG_SHELL_MINIMAL` option. This option already disables shell help along
-with many other non-critical features. Refer to the shell subsystem [Kconfig][2]
-source file for the complete list of shell features than can be configured.
-
-### Link time optimizaiton
-
-Link time optimization (LTO) is a feature of the linker to identify and remove
-unused code.
-
-For cros-ec builds, LTO is enabled by adding this to the board.h/baseboard.h
-file.
-
-```c
-#define CONFIG_LTO
-```
-
-For zephyr-ec builds, LTO is enabled by default and is controlled with Kconfig.
-
-```
-CONFIG_LTO=y
-```
-
-Note that for zephyr-ec builds, LTO is only turned on for the source files found
-under `platform/ec`. The upstream Zephyr code does not currently support LTO
-due to some auto-generated code that breaks the assumptions made by the linker.
-This [Github issue][4] tracks the effort to support LTO in the Zephyr kernel.
-
-### CONFIG_CHIP_INIT_ROM_REGION
-
-The config option `CONFIG_CHIP_INIT_ROM_REGION` creates a new linker section to
-store data that remains resident in ROM/flash at runtime. This reduces the
-effective cros-ec image size by identifying data structures that do not need to
-be copied into the code RAM section at startup.
-
-This option has the following requirements:
-1. EC executes code from RAM
-2. The ROM/flash size is larger than 2 times the code RAM size.
-3. The RO code released for the board includes this
- [change](https://crrev.com/c/2428566).
-
-The only EC chip that matches these prerequisites is the Nuvoton NPCX7.
-
-Due to the RO code requirement, take care before enabling this option for boards
-released prior to 2021.
-
-If the above requirements are meant, add the following to the
-board.h/baseboard.h file:
-
-```c
-#define CONFIG_CHIP_INIT_ROM_REGION
-#define CONFIG_CHIP_DATA_IN_INIT_ROM
-```
-
-These options are not supported for zephyr-ec builds.
-
-### Enable short GPIO names
-
-The [GPIO macros](./configuration/gpio.md) defined by the board get stored as
-descriptive strings for use with the `gpioget` and `gpioset` console commands.
-
-The names of the GPIOs can be shorted by enabling the
-`CONFIG_COMMON_GPIO_SHORTNAMES` option.
-
-For example, the Kukui board defines this GPIO:
-
-```c
-GPIO(PMIC_FORCE_RESET_ODL, PIN(A, 2), GPIO_ODR_HIGH)
-```
-
-Normally, the GPIO name is stored exactly as specified by the macro:
-`PMIC_FORCE_RESET_ODL`. However, when `CONFIG_COMMON_GPIO_SHORTNAMES` is
-defined, then the GPIO name is shortened to only include port and pin number:
-`A2`.
-
-This option is currently only supported by the STM32 chip and it is not
-supported by zephyr-ec builds.
-
-Note that there are some [FAFT tests][5] that rely on the GPIO name. If you
-enable this option, you may also need to change firmware testing configuration
-[file][6].
-
-[1]:./zephyr_build.md#Working-outside-the-chroot
-[2]:https://github.com/zephyrproject-rtos/zephyr/blob/main/subsys/shell/Kconfig
-[3]:https://docs.zephyrproject.org/latest/guides/optimizations/tools.html
-[4]:https://github.com/zephyrproject-rtos/zephyr/issues/2112
-[5]:https://chromium.googlesource.com/chromiumos/third_party/autotest/+/069cb4b0/server/site_tests/firmware_ECUsbPorts/firmware_ECUsbPorts.py#81
-[6]:https://chromium.googlesource.com/chromiumos/platform/fw-testing-configs/+/e2e9547e/volteer.json#26
diff --git a/docs/schematics/dragonclaw/LICENSE b/docs/schematics/dragonclaw/LICENSE
deleted file mode 100644
index d1b237d529..0000000000
--- a/docs/schematics/dragonclaw/LICENSE
+++ /dev/null
@@ -1,318 +0,0 @@
-Creative Commons Attribution 4.0 International Public License
-
-By exercising the Licensed Rights (defined below), You accept and agree
-to be bound by the terms and conditions of this Creative Commons
-Attribution 4.0 International Public License ("Public License"). To the
-extent this Public License may be interpreted as a contract, You are
-granted the Licensed Rights in consideration of Your acceptance of
-these terms and conditions, and the Licensor grants You such rights in
-consideration of benefits the Licensor receives from making the
-Licensed Material available under these terms and conditions.
-
-
-Section 1 -- Definitions.
-
- a. Adapted Material means material subject to Copyright and Similar
- Rights that is derived from or based upon the Licensed Material
- and in which the Licensed Material is translated, altered,
- arranged, transformed, or otherwise modified in a manner requiring
- permission under the Copyright and Similar Rights held by the
- Licensor. For purposes of this Public License, where the Licensed
- Material is a musical work, performance, or sound recording,
- Adapted Material is always produced where the Licensed Material is
- synched in timed relation with a moving image.
-
- b. Adapter's License means the license You apply to Your Copyright
- and Similar Rights in Your contributions to Adapted Material in
- accordance with the terms and conditions of this Public License.
-
- c. Copyright and Similar Rights means copyright and/or similar rights
- closely related to copyright including, without limitation,
- performance, broadcast, sound recording, and Sui Generis Database
- Rights, without regard to how the rights are labeled or
- categorized. For purposes of this Public License, the rights
- specified in Section 2(b)(1)-(2) are not Copyright and Similar
- Rights.
-
- d. Effective Technological Measures means those measures that, in the
- absence of proper authority, may not be circumvented under laws
- fulfilling obligations under Article 11 of the WIPO Copyright
- Treaty adopted on December 20, 1996, and/or similar international
- agreements.
-
- e. Exceptions and Limitations means fair use, fair dealing, and/or
- any other exception or limitation to Copyright and Similar Rights
- that applies to Your use of the Licensed Material.
-
- f. Licensed Material means the artistic or literary work, database,
- or other material to which the Licensor applied this Public
- License.
-
- g. Licensed Rights means the rights granted to You subject to the
- terms and conditions of this Public License, which are limited to
- all Copyright and Similar Rights that apply to Your use of the
- Licensed Material and that the Licensor has authority to license.
-
- h. Licensor means the individual(s) or entity(ies) granting rights
- under this Public License.
-
- i. Share means to provide material to the public by any means or
- process that requires permission under the Licensed Rights, such
- as reproduction, public display, public performance, distribution,
- dissemination, communication, or importation, and to make material
- available to the public including in ways that members of the
- public may access the material from a place and at a time
- individually chosen by them.
-
- j. Sui Generis Database Rights means rights other than copyright
- resulting from Directive 96/9/EC of the European Parliament and of
- the Council of 11 March 1996 on the legal protection of databases,
- as amended and/or succeeded, as well as other essentially
- equivalent rights anywhere in the world.
-
- k. You means the individual or entity exercising the Licensed Rights
- under this Public License. Your has a corresponding meaning.
-
-
-Section 2 -- Scope.
-
- a. License grant.
-
- 1. Subject to the terms and conditions of this Public License,
- the Licensor hereby grants You a worldwide, royalty-free,
- non-sublicensable, non-exclusive, irrevocable license to
- exercise the Licensed Rights in the Licensed Material to:
-
- a. reproduce and Share the Licensed Material, in whole or
- in part; and
-
- b. produce, reproduce, and Share Adapted Material.
-
- 2. Exceptions and Limitations. For the avoidance of doubt, where
- Exceptions and Limitations apply to Your use, this Public
- License does not apply, and You do not need to comply with
- its terms and conditions.
-
- 3. Term. The term of this Public License is specified in Section
- 6(a).
-
- 4. Media and formats; technical modifications allowed. The
- Licensor authorizes You to exercise the Licensed Rights in
- all media and formats whether now known or hereafter created,
- and to make technical modifications necessary to do so. The
- Licensor waives and/or agrees not to assert any right or
- authority to forbid You from making technical modifications
- necessary to exercise the Licensed Rights, including
- technical modifications necessary to circumvent Effective
- Technological Measures. For purposes of this Public License,
- simply making modifications authorized by this Section 2(a)
- (4) never produces Adapted Material.
-
- 5. Downstream recipients.
-
- a. Offer from the Licensor -- Licensed Material. Every
- recipient of the Licensed Material automatically
- receives an offer from the Licensor to exercise the
- Licensed Rights under the terms and conditions of this
- Public License.
-
- b. No downstream restrictions. You may not offer or impose
- any additional or different terms or conditions on, or
- apply any Effective Technological Measures to, the
- Licensed Material if doing so restricts exercise of the
- Licensed Rights by any recipient of the Licensed
- Material.
-
- 6. No endorsement. Nothing in this Public License constitutes or
- may be construed as permission to assert or imply that You
- are, or that Your use of the Licensed Material is, connected
- with, or sponsored, endorsed, or granted official status by,
- the Licensor or others designated to receive attribution as
- provided in Section 3(a)(1)(A)(i).
-
- b. Other rights.
-
- 1. Moral rights, such as the right of integrity, are not
- licensed under this Public License, nor are publicity,
- privacy, and/or other similar personality rights; however, to
- the extent possible, the Licensor waives and/or agrees not to
- assert any such rights held by the Licensor to the limited
- extent necessary to allow You to exercise the Licensed
- Rights, but not otherwise.
-
- 2. Patent and trademark rights are not licensed under this
- Public License.
-
- 3. To the extent possible, the Licensor waives any right to
- collect royalties from You for the exercise of the Licensed
- Rights, whether directly or through a collecting society
- under any voluntary or waivable statutory or compulsory
- licensing scheme. In all other cases the Licensor expressly
- reserves any right to collect such royalties.
-
-
-Section 3 -- License Conditions.
-
-Your exercise of the Licensed Rights is expressly made subject to the
-following conditions.
-
- a. Attribution.
-
- 1. If You Share the Licensed Material (including in modified
- form), You must:
-
- a. retain the following if it is supplied by the Licensor
- with the Licensed Material:
-
- i. identification of the creator(s) of the Licensed
- Material and any others designated to receive
- attribution, in any reasonable manner requested by
- the Licensor (including by pseudonym if
- designated);
-
- ii. a copyright notice;
-
- iii. a notice that refers to this Public License;
-
- iv. a notice that refers to the disclaimer of
- warranties;
-
- v. a URI or hyperlink to the Licensed Material to the
- extent reasonably practicable;
-
- b. indicate if You modified the Licensed Material and
- retain an indication of any previous modifications; and
-
- c. indicate the Licensed Material is licensed under this
- Public License, and include the text of, or the URI or
- hyperlink to, this Public License.
-
- 2. You may satisfy the conditions in Section 3(a)(1) in any
- reasonable manner based on the medium, means, and context in
- which You Share the Licensed Material. For example, it may be
- reasonable to satisfy the conditions by providing a URI or
- hyperlink to a resource that includes the required
- information.
-
- 3. If requested by the Licensor, You must remove any of the
- information required by Section 3(a)(1)(A) to the extent
- reasonably practicable.
-
- 4. If You Share Adapted Material You produce, the Adapter's
- License You apply must not prevent recipients of the Adapted
- Material from complying with this Public License.
-
-
-Section 4 -- Sui Generis Database Rights.
-
-Where the Licensed Rights include Sui Generis Database Rights that
-apply to Your use of the Licensed Material:
-
- a. for the avoidance of doubt, Section 2(a)(1) grants You the right
- to extract, reuse, reproduce, and Share all or a substantial
- portion of the contents of the database;
-
- b. if You include all or a substantial portion of the database
- contents in a database in which You have Sui Generis Database
- Rights, then the database in which You have Sui Generis Database
- Rights (but not its individual contents) is Adapted Material; and
-
- c. You must comply with the conditions in Section 3(a) if You Share
- all or a substantial portion of the contents of the database.
-
-For the avoidance of doubt, this Section 4 supplements and does not
-replace Your obligations under this Public License where the Licensed
-Rights include other Copyright and Similar Rights.
-
-
-Section 5 -- Disclaimer of Warranties and Limitation of Liability.
-
- a. UNLESS OTHERWISE SEPARATELY UNDERTAKEN BY THE LICENSOR, TO THE
- EXTENT POSSIBLE, THE LICENSOR OFFERS THE LICENSED MATERIAL AS-IS
- AND AS-AVAILABLE, AND MAKES NO REPRESENTATIONS OR WARRANTIES OF
- ANY KIND CONCERNING THE LICENSED MATERIAL, WHETHER EXPRESS,
- IMPLIED, STATUTORY, OR OTHER. THIS INCLUDES, WITHOUT LIMITATION,
- WARRANTIES OF TITLE, MERCHANTABILITY, FITNESS FOR A PARTICULAR
- PURPOSE, NON-INFRINGEMENT, ABSENCE OF LATENT OR OTHER DEFECTS,
- ACCURACY, OR THE PRESENCE OR ABSENCE OF ERRORS, WHETHER OR NOT
- KNOWN OR DISCOVERABLE. WHERE DISCLAIMERS OF WARRANTIES ARE NOT
- ALLOWED IN FULL OR IN PART, THIS DISCLAIMER MAY NOT APPLY TO YOU.
-
- b. TO THE EXTENT POSSIBLE, IN NO EVENT WILL THE LICENSOR BE LIABLE
- TO YOU ON ANY LEGAL THEORY (INCLUDING, WITHOUT LIMITATION,
- NEGLIGENCE) OR OTHERWISE FOR ANY DIRECT, SPECIAL, INDIRECT,
- INCIDENTAL, CONSEQUENTIAL, PUNITIVE, EXEMPLARY, OR OTHER LOSSES,
- COSTS, EXPENSES, OR DAMAGES ARISING OUT OF THIS PUBLIC LICENSE OR
- USE OF THE LICENSED MATERIAL, EVEN IF THE LICENSOR HAS BEEN
- ADVISED OF THE POSSIBILITY OF SUCH LOSSES, COSTS, EXPENSES, OR
- DAMAGES. WHERE A LIMITATION OF LIABILITY IS NOT ALLOWED IN FULL OR
- IN PART, THIS LIMITATION MAY NOT APPLY TO YOU.
-
- c. The disclaimer of warranties and limitation of liability provided
- above shall be interpreted in a manner that, to the extent
- possible, most closely approximates an absolute disclaimer and
- waiver of all liability.
-
-
-Section 6 -- Term and Termination.
-
- a. This Public License applies for the term of the Copyright and
- Similar Rights licensed here. However, if You fail to comply with
- this Public License, then Your rights under this Public License
- terminate automatically.
-
- b. Where Your right to use the Licensed Material has terminated under
- Section 6(a), it reinstates:
-
- 1. automatically as of the date the violation is cured, provided
- it is cured within 30 days of Your discovery of the
- violation; or
-
- 2. upon express reinstatement by the Licensor.
-
- For the avoidance of doubt, this Section 6(b) does not affect any
- right the Licensor may have to seek remedies for Your violations
- of this Public License.
-
- c. For the avoidance of doubt, the Licensor may also offer the
- Licensed Material under separate terms or conditions or stop
- distributing the Licensed Material at any time; however, doing so
- will not terminate this Public License.
-
- d. Sections 1, 5, 6, 7, and 8 survive termination of this Public
- License.
-
-
-Section 7 -- Other Terms and Conditions.
-
- a. The Licensor shall not be bound by any additional or different
- terms or conditions communicated by You unless expressly agreed.
-
- b. Any arrangements, understandings, or agreements regarding the
- Licensed Material not stated herein are separate from and
- independent of the terms and conditions of this Public License.
-
-
-Section 8 -- Interpretation.
-
- a. For the avoidance of doubt, this Public License does not, and
- shall not be interpreted to, reduce, limit, restrict, or impose
- conditions on any use of the Licensed Material that could lawfully
- be made without permission under this Public License.
-
- b. To the extent possible, if any provision of this Public License is
- deemed unenforceable, it shall be automatically reformed to the
- minimum extent necessary to make it enforceable. If the provision
- cannot be reformed, it shall be severed from this Public License
- without affecting the enforceability of the remaining terms and
- conditions.
-
- c. No term or condition of this Public License will be waived and no
- failure to comply consented to unless expressly agreed to by the
- Licensor.
-
- d. Nothing in this Public License constitutes or may be interpreted
- as a limitation upon, or waiver of, any privileges and immunities
- that apply to the Licensor or You, including from the legal
- processes of any jurisdiction or authority.
-
diff --git a/docs/schematics/dragonclaw/README.md b/docs/schematics/dragonclaw/README.md
deleted file mode 100644
index 66fde41df8..0000000000
--- a/docs/schematics/dragonclaw/README.md
+++ /dev/null
@@ -1,10 +0,0 @@
-# Dragonclaw Fingerprint Development Board Schematics
-
-The schematics are in the [HTML file][schematic] and viewable with any browser.
-Note that you'll need to download and save the HTML file from
-[this link][schematic]; you cannot view it directly from the server.
-
-The layout file is in the [`.brd`] file.
-
-[`.brd`]: https://raw.githubusercontent.com/coreboot/chrome-ec/master/docs/schematics/dragonclaw/dragonclaw_v0.2.brd
-[schematic]: https://raw.githubusercontent.com/coreboot/chrome-ec/master/docs/schematics/dragonclaw/dragonclaw_v0.2.html
diff --git a/docs/schematics/dragonclaw/dragonclaw_v0.2.brd b/docs/schematics/dragonclaw/dragonclaw_v0.2.brd
deleted file mode 100644
index 37e8b3190d..0000000000
--- a/docs/schematics/dragonclaw/dragonclaw_v0.2.brd
+++ /dev/null
Binary files differ
diff --git a/docs/schematics/dragonclaw/dragonclaw_v0.2.html b/docs/schematics/dragonclaw/dragonclaw_v0.2.html
deleted file mode 100644
index c3241ae00f..0000000000
--- a/docs/schematics/dragonclaw/dragonclaw_v0.2.html
+++ /dev/null
@@ -1,7087 +0,0 @@
-<!DOCTYPE html>
-<html lang="en"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-
-<link rel="icon" href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEgAAABIAQMAAABvIyEEAAAABlBMVEUAAAAAAAClZ7nPAAAAAXRSTlMAQObYZgAAAFdJREFUKM9jYGBg+A+EEEANFvN/EDgAZMmDWT+ALHsw6w+QVQ9m/UNh/YcAXCyo6VRiAc38D8ZUYoH9/R9qBxVYNHAfVcOPQGxhi19E7CNSBCKVUDf9AQBM1TcCCjMB0AAAAABJRU5ErkJggg==">
-<title>dragonclaw.cpm - ab219060b29f55c904192cae83fe7d668b73d4b9</title>
-</head><body>
-<script>/* Javascript code for DiffUI. Directly embedded. */
-
-var zoom = 1;
-var dark = null;
-
-/** Activates or deactivates animations referenced by diff id.
- * classname -- used to select which animations to trigger
- * state -- whether to animate (or reset)
- * conflictswith -- classname this diff conflicts with.
- * Conflicting animations will not be started.
- */
-var setAnimation = function(classname, state, conflictswith='') {
- var anims = document.getElementsByClassName(classname);
- for (var i = 0; i < anims.length; i++) {
- anims[i].setAttribute('fill', 'freeze');
- if (conflictswith) {
- var attr = anims[i].getAttribute('attr');
- var siblings = anims[i].parentElement.children;
- for (var j = 0; j < siblings.length; j++) {
- if (siblings[j].classList.contains(conflictswith)
- && attr === siblings[j].getAttribute('attr'))
- break;
- }
- if (j !== siblings.length)
- continue;
- }
- anims[i].beginElement();
- anims[i].setAttribute('dur', state ? '1s': 'indefinite');
- }
-};
-
-/** Callback for when a diff checkbox is clicked.
- * Animates the diff and, if checked, unsets any conflicting diffs.
- */
-var onDiffClick = function(target) {
- setAnimation(target.name, target.checked);
- if (!target.checked)
- return;
- var row = target;
- var td = undefined;
- while (row.tagName !== 'TR') {
- td = row;
- row = row.parentElement;
- }
- for (var i = 0; i < row.children.length; i++) {
- if (row.children[i] === td)
- continue;
- var checkboxes = row.children[i].getElementsByTagName('input');
- for (var j = 0; j < checkboxes.length; j++) {
- if (checkboxes[j].checked) {
- checkboxes[j].checked = false;
- setAnimation(checkboxes[j].name, false, target.name);
- }
- }
- }
-};
-
-/** Handles restarting animations when a page header is held down.
- * Also updates the history to include the page number.
- */
-var onHeaderMouse = function(evt, down) {
- pushHash(evt.target.parentElement.id);
- for (var tag in {animate:0, animateTransform:0}) {
- var anims = evt.target.parentElement.getElementsByTagName(tag);
- for (var i = 0; i < anims.length; i++) {
- var hasattr = anims[i].hasAttribute('oldDur');
- if (down && !hasattr) {
- var olddur = anims[i].getAttribute('dur');
- if (olddur === null || olddur === 'indefinite')
- continue;
- anims[i].setAttribute('oldDur', olddur);
- anims[i].beginElement();
- anims[i].setAttribute('dur', 'indefinite');
- } else if (!down && hasattr) {
- anims[i].beginElement();
- anims[i].setAttribute('dur', anims[i].getAttribute('oldDur'));
- anims[i].removeAttribute('oldDur');
- } else {
- continue;
- }
- }
- }
-};
-
-/** Callback on clicking the highlight all button for lists of diffs.
- * FIXME: this isn't optimized at all
- */
-var onHighlightAllClick = function(target) {
- while (target.tagName !== 'TABLE')
- target = target.parentElement;
- // Erase existing highlights
- highlight();
- // Highlight everything
- var inputs = target.getElementsByTagName('input');
- for (var i = 0; i < inputs.length; i++) {
- if (inputs[i].type === 'checkbox' && inputs[i].checked) {
- var anims = document.getElementsByClassName(inputs[i].name);
- for (var j = 0; j < anims.length; j++) {
- highlight(anims[j].parentElement);
- }
- }
- }
-};
-
-
-/** Callback on clicking the expand button for lists of diffs.
- */
-var onExpandClick = function(target) {
- var show = target.value === '+';
- var row = target;
- var func = (function(e){
- if (show) {
- e.removeAttribute('hidden');
- } else {
- e.setAttribute('hidden', null);
- }
- });
- while (row.tagName !== 'TR')
- row = row.parentElement;
- for (var i = 1; i < row.children.length; i++)
- func(row.children[i]);
- while (row = row.nextElementSibling) {
- if (row.getElementsByTagName('th').length)
- break;
- func(row);
- }
- target.value = (show ? '-' : '+');
-};
-
-/** Validation function to ensure conflicts have been resolved.
- */
-var onSubmit = function() {
- var rows = document.getElementsByClassName('conflict');
- for (var i = 0; i < rows.length; i++) {
- var checks = rows[i].getElementsByTagName('input');
- for (var j = 0; j < checks.length; j++) {
- if (checks[j].checked)
- break;
- }
- if (j === checks.length) {
- return confirm(
- 'Some conflicts do not have any changes selected.\n'
- + 'Unselected changes will be abandoned entirely.\n'
- + '\n'
- + 'Accept anyway?'
- );
- }
- }
- return true;
-};
-
-/** Callback function when clicking on an instance.
- * Updates the location with the instance's path.
- */
-var onInstanceClick = function(target) {
- while (target && !target.id)
- target = target.parentElement;
- if (target) {
- // If this is the only instance of this refdes, strip the symbol suffix
- var refdes = target.id.split('.')[0];
- if (document.querySelectorAll("[id^='" + refdes + ".']").length > 1) {
- pushHash(target.id);
- } else {
- pushHash(refdes);
- }
- if (target.classList.contains('highlight')) {
- highlight();
- } else {
- highlight(target);
- }
- }
-};
-
-/** Updates the back/forward history with a new target (if not redundant).
- */
-var pushHash = function(target) {
- window.history.replaceState(null, '', '#' + target);
-};
-
-/** Highlights an element and removes other highlights.
- */
-var highlight = function(elem, scroll) {
- // Remove old highlights
- if (scroll || !elem) {
- var highlighted = document.getElementsByClassName('highlight');
- for (var i = 0; i < highlighted.length; i++) {
- if (highlighted[i] !== elem) {
- // This removes the item from the array, so don't advance i
- highlighted[i--].classList.remove('highlight');
- }
- }
- }
- if (elem) {
- // In the case of a multi-highlight, ensure we're not redundant
- if (!scroll) {
- // Check parents
- var p = elem;
- while (p = p.parentElement) {
- if (p.classList.contains('highlight'))
- return;
- }
- // Clear children
- var highlighted = elem.getElementsByClassName('highlight');
- for (var i = 0; i < highlighted.length; i++) {
- if (highlighted[i] !== elem) {
- // This removes the item from the array, so don't advance i
- highlighted[i--].classList.remove('highlight');
- }
- }
- }
- /**
- * Vertical and horizontal lines have zero area, so the highlight filter
- * causes the line to no longer render. Add an invisible 1x1 rect in this
- * case to the group to work around the issue.
- */
- var box = elem.getBoundingClientRect();
- if (elem.tagName === 'g' && (!box.width || !box.height)) {
- var subg = elem.getElementsByTagName('g');
- subg = subg.length ? subg[subg.length-1] : elem;
- var rect = document.createElementNS('http://www.w3.org/2000/svg', 'rect');
- rect.setAttribute('width', 1);
- rect.setAttribute('height', 1);
- rect.setAttribute('opacity', 0);
- subg.appendChild(rect);
- }
- elem.classList.add('highlight');
- if (scroll) {
- // Only scroll if the midpoint of element is not currently visible
- var midX = box.left + box.width / 2;
- var midY = box.top + box.height / 2;
- if (midX < 0 || midX > window.innerWidth ||
- midY < 0 || midY > window.innerHeight) {
- elem.scrollIntoView({block: 'center', inline: 'center'});
- }
- }
- }
-};
-
-/** Flips between light and dark color schemes.
- */
-var invert = function() {
- if (dark === null) {
- // Grab the current color scheme
- var svgs = document.getElementsByTagName('svg');
- if (svgs.length && svgs[0].style['background-color'] === 'black') {
- dark = true;
- } else if (svgs.length && svgs[0].style['background-color'] === 'white') {
- dark = false;
- } else {
- return;
- }
- }
- dark = !dark;
- var bgcolor = dark ? 'black' : 'white';
- // For readability, some colors are tweaked in dark vs light schematics
- var colormap = {
- black: 'white',
- green: 'lime',
- goldenrod: 'yellow',
- darkviolet: 'violet',
- dodgerblue: 'skyblue',
- deeppink: 'pink',
- }
- // Invert the table for light mode
- if (!dark) {
- var rev = {};
- for (var key in colormap)
- rev[colormap[key]] = key;
- colormap = rev;
- }
- // Update colors
- // TODO: determine if it's faster to do this via css variables, in order to
- // avoid all the DOM updates.
- // FIXME: inverting before the page is fully loaded causes later pages to not
- // be inverted. Add a step at the end of page load to correct this.
- var applyMap = function(elem) {
- for (var attr in {stroke:0, fill:0}) {
- var color = elem.getAttribute(attr);
- if (color in colormap)
- elem.setAttribute(attr, colormap[color]);
- }
- for (var i = 0; i < elem.children.length; i++) {
- applyMap(elem.children[i]);
- }
- };
- var svgs = document.getElementsByTagName('svg');
- for (var i = 0; i < svgs.length; i++) {
- // If the bgcolor is already correct, the pages are out of sync. Skip it.
- if (svgs[i].style['background-color'] === bgcolor) {
- continue;
- }
- svgs[i].style['background-color'] = bgcolor;
- applyMap(svgs[i]);
- }
-};
-
-/** Navigates to the referenced target when back/forward are hit.
- */
-window.onpopstate = function(evt) {
- var refdes = window.location.hash.replace('#', '').toUpperCase();
- if (!refdes)
- return;
- var elem = document.getElementById(refdes) ||
- document.getElementById(refdes.toLowerCase());
- if (elem) {
- highlight(elem, true);
- return;
- }
- // If there's no exact match, exclude symbol index and try again.
- var groups = document.getElementsByTagName('g');
- for (var i = 0; i < groups.length; i++) {
- if (groups[i].id.split('.')[0] === refdes) {
- highlight(groups[i], true);
- return;
- }
- }
-};
-
-/** Takes an element and linkifies it, applying a provided function to the text
- * contents to generate the link target.
- */
-var onTextClick = function(text, linkfunc) {
- while (text.lastChild)
- text = text.lastChild;
- var href = linkfunc(text.textContent.trim());
- if (href[0] === '#') {
- window.location.hash = href.substr(1);
- } else {
- window.open(href);
- }
-};
-
-/** General mousemove handler.
- * Used to upgrade clickable things to links without slowing down initial load
- * time.
- */
-window.onmousemove = function(evt) {
- var target = evt.target;
- if (target.tagname === 'tspan')
- target = target.parentElement;
- if (target.tagName === 'text') {
- var propname = target.getElementsByTagName('title');
- propname = propname.length ? propname[0].textContent.replace('$', '') : '';
- if (propname === 'AGILE_PN' || propname.startsWith('XR')) {
- target.setAttribute('cursor', 'pointer');
- }
- }
-};
-
-/** General click handler. Dispatches as appropriate.
- */
-window.onclick = function(evt) {
- var target = evt.target;
- // Process inputs
- if (target.type === 'checkbox') {
- return onDiffClick(target);
- } else if (target.type === 'button') {
- if (target.value.length === 1) {
- return onExpandClick(target);
- } else {
- return onHighlightAllClick(target);
- }
- }
- // Process text clicks
- // Clicking on tspan is the same as clicking on text
- if (target.tagname === 'tspan')
- target = target.parentElement;
- if (target.tagName === 'text') {
- var propname = target.getElementsByTagName('title');
- propname = propname.length ? propname[0].textContent.replace('$', '') : '';
- if (propname === 'AGILE_PN') {
- return onTextClick(target, function(t) {
- return 'https://goto.google.com/ee-part/G' + t.replace('G', '');
- });
- } else if (propname.startsWith('XR')) {
- return onTextClick(target, function(t) {
- // FIXME: this will be wrong on hierarchical designs if the
- // module order isn't properly followed.
- // TODO: some XR formats end with the page location (eg F7).
- // use this to find the right location to scroll to.
- return '#page' + parseInt(t);
- });
- }
- }
- // If it wasn't the above, find the ancestor with an id set (if any)
- while (target && !target.id)
- target = target.parentElement;
- if (!target)
- return;
- // If the ancestor is a g tag, it's an instance.
- if (target.tagName === 'g') {
- return onInstanceClick(target);
- }
-};
-
-/** General double-click handler. Dispatches as appropriate.
- */
-window.ondblclick = function(evt) {
- var target = evt.target;
- // Process text doubleclicks
- // Clicking on tspan is the same as clicking on text
- if (target.tagname === 'tspan')
- target = target.parentElement;
- if (target.tagName === 'text') {
- var propname = target.getElementsByTagName('title');
- propname = propname.length ? propname[0].textContent.replace('$', '') : '';
- // Double-clicking on net names triggers a search for the next one.
- if (propname === 'SIG_NAME' || propname === 'HDL_POWER') {
- while (target.lastChild)
- target = target.lastChild;
- window.find(target.textContent.trim(),
- true, false, true, true, false, true);
- return;
- }
- }
- // Double-clicking on random blank spaces will flip the colors.
- // TODO: make a floating toolbar with zoom/invert/goto/etc instead
- if (target.tagName === 'DIV' || target.tagName === 'HTML') {
- invert();
- return;
- }
-};
-
-/** Use css transform to scale the page instead of allowing the browser to zoom
- * and reflow. This is waaaaaay faster.
- * x, y -- point in client space to keep constant when zooming.
- * if not provided, assume middle of the window.
- */
-var setZoom = function(newZoom, x, y) {
- newZoom = Math.min(10, Math.max(0.5, newZoom));
- if (x === undefined) {
- x = window.innerWidth / 2;
- y = window.innerHeight / 2;
- }
- x += window.scrollX;
- y += window.scrollY;
- document.documentElement.style['transform-origin'] = '0 0';
- document.documentElement.style['transform'] = 'scale(' + newZoom + ')';
- window.scrollBy(x*(newZoom/zoom-1), y*(newZoom/zoom-1));
- zoom = newZoom;
-};
-
-/** Captures keydown events to capture zoom.
- */
-window.onkeydown = function(evt) {
- if (evt.ctrlKey && (evt.code === 'Equal' || evt.code === 'Plus')) {
- setZoom(zoom*1.1);
- evt.preventDefault();
- } else if (evt.ctrlKey && evt.code === 'Minus') {
- setZoom(zoom/1.1);
- evt.preventDefault();
- } else if (evt.ctrlKey && evt.code === 'Digit0') {
- setZoom(1);
- evt.preventDefault();
- }
-};
-
-/** Captures wheel events to capture zoom.
- * Note that this has to be added via addEventListener with {passive: true},
- * since browsers nowadays assume passivity for this event.
- */
-window.addEventListener("wheel", function(evt) {
- if (evt.ctrlKey) {
- // Dividing by 500 seems to make zoom rate about the same as keyboard
- setZoom(zoom * Math.exp(-evt.deltaY * (evt.deltaMode ? 120 : 1) / 500),
- evt.clientX, evt.clientY);
- evt.preventDefault();
- }
-}, {passive: false});
-
-/** Run on page load. Injects event handlers and other interface improvements.
- */
-window.onload = function() {
- // Inject header interactions
- var headers = document.getElementsByTagName('h1');
- for (var i = 0; i < headers.length; i++) {
- headers[i].addEventListener('mousedown', function(e){onHeaderMouse(e, 1)});
- headers[i].addEventListener('mouseup', function(e){onHeaderMouse(e, 0)});
- }
-
- // Trigger animations for alread-checked diffs
- var inputs = document.getElementsByTagName('input');
- for (var i = 0; i < inputs.length; i++) {
- if (inputs[i].type === 'checkbox' && inputs[i].checked)
- setAnimation(inputs[i].name, true);
- }
-
- // Now that everything's ready, try to scroll to the item requested in the URL
- window.onpopstate();
-};
-</script>
-<style>
-@media print {
- @page {
- size: tabloid landscape;
- }
- h1,hr {
- display: none;
- }
- div > svg {
- page-break-after: always;
- }
- html {
- transform: none !important;
- }
-}
-.highlight {
- filter: url(#highlight);
-}
-tr.conflict {
- background-color: tomato;
-}
-th.expander {
- text-align: left;
- white-space: nowrap;
-}
-th.expander input {
- font-family: mono;
-}
-</style>
-<div id="page1">
-<h1>dragonclaw/page1: TABLE OF CONTENTS</h1>
-<div>
-<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0,-5500,8500,5500" width="14.87500in" height="9.62500in" font-family="monospace" font-size="47.000000" stroke-width="3" style="background-color:white">
-<symbol id="symbol:border_b.3" overflow="visible">
-<line x1="8495" y1="-5" x2="5" y2="-5" stroke-width="6"></line>
-<line x1="8495" y1="-5495" x2="8495" y2="-5" stroke-width="6"></line>
-<line x1="5" y1="-5495" x2="5" y2="-5" stroke-width="6"></line>
-<line x1="8495" y1="-5495" x2="5" y2="-5495" stroke-width="6"></line>
-<line x1="8425" y1="-75" x2="75" y2="-75"></line>
-<line x1="8425" y1="-5425" x2="8425" y2="-75"></line>
-<line x1="75" y1="-75" x2="75" y2="-5425"></line>
-<line x1="8425" y1="-5425" x2="75" y2="-5425"></line>
-<line x1="70" y1="-70" x2="8430" y2="-70"></line>
-<line x1="70" y1="-5430" x2="70" y2="-70"></line>
-<line x1="8430" y1="-5430" x2="8430" y2="-70"></line>
-<line x1="8430" y1="-5430" x2="70" y2="-5430"></line>
-<line x1="8500" stroke-width="6"></line>
-<line x1="8500" y1="-5500" x2="8500" stroke-width="6"></line>
-<line y2="-5500" stroke-width="6"></line>
-<line x1="8500" y1="-5500" y2="-5500" stroke-width="6"></line>
-<line x1="5895" y1="-350" x2="8425" y2="-350" stroke-width="6"></line>
-<line x1="8425" y1="-225" x2="6270" y2="-225"></line>
-<line x1="6270" y1="-350" x2="6270" y2="-75" stroke-width="6"></line>
-<line x1="8425" y1="-150" x2="6270" y2="-150"></line>
-<line x1="8000" x2="8000" y2="-225"></line>
-<line x1="4500" y1="-75" x2="4500"></line>
-<line x1="5500" y1="-75" x2="5500"></line>
-<line x1="5000" y1="-75" x2="5000"></line>
-<line x1="7500" y1="-75" x2="7500"></line>
-<line x1="7000" y1="-75" x2="7000"></line>
-<line x1="2000" y1="-75" x2="2000"></line>
-<line x1="2500" y1="-75" x2="2500"></line>
-<line x1="1000" y1="-75" x2="1000"></line>
-<line x1="500" y1="-75" x2="500"></line>
-<line x1="3000" y1="-75" x2="3000"></line>
-<line x1="3500" y1="-75" x2="3500"></line>
-<line x1="4000" y1="-75" x2="4000"></line>
-<line x1="6500" y1="-75" x2="6500"></line>
-<line x1="6000" y1="-75" x2="6000"></line>
-<line x1="1500" y1="-75" x2="1500"></line>
-<line x1="5257" y1="-233" x2="5257" y2="-75"></line>
-<line x1="5895" y1="-350" x2="5895" y2="-75" stroke-width="6"></line>
-<line x1="7125" y1="-150" x2="7125" y2="-225"></line>
-<line x1="8425" y1="-4500" x2="8500" y2="-4500"></line>
-<line x1="8425" y1="-5000" x2="8500" y2="-5000"></line>
-<line x1="8425" y1="-3000" x2="8500" y2="-3000"></line>
-<line x1="8425" y1="-2500" x2="8500" y2="-2500"></line>
-<line x1="8425" y1="-4000" x2="8500" y2="-4000"></line>
-<line x1="8425" y1="-3500" x2="8500" y2="-3500"></line>
-<line x1="8425" y1="-2000" x2="8500" y2="-2000"></line>
-<line x1="8425" y1="-500" x2="8500" y2="-500"></line>
-<line x1="8425" y1="-1500" x2="8500" y2="-1500"></line>
-<line x1="8425" y1="-1000" x2="8500" y2="-1000"></line>
-<line x1="8000" y1="-5495" x2="8000" y2="-5425"></line>
-<line x1="7500" y1="-5495" x2="7500" y2="-5425"></line>
-<line x1="6500" y1="-5495" x2="6500" y2="-5425"></line>
-<line x1="7000" y1="-5495" x2="7000" y2="-5425"></line>
-<line x1="6000" y1="-5495" x2="6000" y2="-5425"></line>
-<line x1="5500" y1="-5495" x2="5500" y2="-5425"></line>
-<line x1="5000" y1="-5495" x2="5000" y2="-5425"></line>
-<line x1="4500" y1="-5495" x2="4500" y2="-5425"></line>
-<line x1="4000" y1="-5495" x2="4000" y2="-5425"></line>
-<line x1="3500" y1="-5495" x2="3500" y2="-5425"></line>
-<line x1="2500" y1="-5495" x2="2500" y2="-5425"></line>
-<line x1="3000" y1="-5495" x2="3000" y2="-5425"></line>
-<line x1="1000" y1="-5495" x2="1000" y2="-5425"></line>
-<line x1="500" y1="-5495" x2="500" y2="-5425"></line>
-<line x1="2000" y1="-5495" x2="2000" y2="-5425"></line>
-<line x1="1500" y1="-5495" x2="1500" y2="-5425"></line>
-<line x1="70" y1="-233" x2="5257" y2="-233"></line>
-<line x1="5" y1="-4500" x2="70" y2="-4500"></line>
-<line x1="5" y1="-5000" x2="70" y2="-5000"></line>
-<line x1="5" y1="-4000" x2="70" y2="-4000"></line>
-<line x1="5" y1="-3000" x2="70" y2="-3000"></line>
-<line x1="5" y1="-2500" x2="70" y2="-2500"></line>
-<line x1="5" y1="-3500" x2="70" y2="-3500"></line>
-<line x1="5" y1="-2000" x2="70" y2="-2000"></line>
-<line x1="5" y1="-1500" x2="70" y2="-1500"></line>
-<line x1="5" y1="-500" x2="70" y2="-500"></line>
-<line x1="5" y1="-1000" x2="70" y2="-1000"></line>
-<text stroke="none" x="150" y="-150" font-size="24">THIS WORK IS LICENSED UNDER A CREATIVE COMMONS ATTRIBUTION 4.0 BY LICENSE.</text>
-<text stroke="none" x="250" y="-25" font-size="40" text-anchor="middle">1</text>
-<text stroke="none" x="6279" y="-191" font-size="30">DESIGN:</text>
-<text stroke="none" x="6279" y="-265" font-size="30">TITLE:</text>
-<text stroke="none" x="6282" y="-315" font-size="30">PAGE</text>
-<text stroke="none" x="6250" y="-25" font-size="40" text-anchor="middle">13</text>
-<text stroke="none" x="7154" y="-191" font-size="30">DOC NUMBER:</text>
-<text stroke="none" x="8007" y="-81" font-size="30">FLAT:</text>
-<text stroke="none" x="7750" y="-25" font-size="40" text-anchor="middle">16</text>
-<text stroke="none" x="8250" y="-5450" font-size="40" text-anchor="middle">17</text>
-<text stroke="none" x="8250" y="-25" font-size="40" text-anchor="middle">17</text>
-<text stroke="none" x="4250" y="-5450" font-size="40" text-anchor="middle">9</text>
-<text stroke="none" x="8462" y="-5250" font-size="34" text-anchor="middle">L</text>
-<text stroke="none" x="8462" y="-4750" font-size="34" text-anchor="middle">K</text>
-<text stroke="none" x="8462" y="-4250" font-size="40" text-anchor="middle">J</text>
-<text stroke="none" x="8462" y="-3750" font-size="40" text-anchor="middle">H</text>
-<text stroke="none" x="8462" y="-3250" font-size="40" text-anchor="middle">G</text>
-<text stroke="none" x="8462" y="-2750" font-size="40" text-anchor="middle">F</text>
-<text stroke="none" x="8462" y="-2250" font-size="40" text-anchor="middle">E</text>
-<text stroke="none" x="8462" y="-1750" font-size="40" text-anchor="middle">D</text>
-<text stroke="none" x="8462" y="-1250" font-size="40" text-anchor="middle">C</text>
-<text stroke="none" x="8462" y="-750" font-size="40" text-anchor="middle">B</text>
-<text stroke="none" x="8462" y="-250" font-size="40" text-anchor="middle">A</text>
-<text stroke="none" x="38" y="-5250" font-size="34" text-anchor="middle">L</text>
-<text stroke="none" x="38" y="-3250" font-size="40" text-anchor="middle">G</text>
-<text stroke="none" x="38" y="-2750" font-size="40" text-anchor="middle">F</text>
-<text stroke="none" x="38" y="-2250" font-size="40" text-anchor="middle">E</text>
-<text stroke="none" x="38" y="-1750" font-size="40" text-anchor="middle">D</text>
-<text stroke="none" x="38" y="-1250" font-size="40" text-anchor="middle">C</text>
-<text stroke="none" x="38" y="-750" font-size="40" text-anchor="middle">B</text>
-<text stroke="none" x="250" y="-5450" font-size="40" text-anchor="middle">1</text>
-<text stroke="none" x="750" y="-5450" font-size="40" text-anchor="middle">2</text>
-<text stroke="none" x="1250" y="-5450" font-size="40" text-anchor="middle">3</text>
-<text stroke="none" x="2250" y="-5450" font-size="40" text-anchor="middle">5</text>
-<text stroke="none" x="2750" y="-5450" font-size="40" text-anchor="middle">6</text>
-<text stroke="none" x="3250" y="-5450" font-size="40" text-anchor="middle">7</text>
-<text stroke="none" x="3750" y="-5450" font-size="40" text-anchor="middle">8</text>
-<text stroke="none" x="4750" y="-5450" font-size="40" text-anchor="middle">10</text>
-<text stroke="none" x="5250" y="-5450" font-size="40" text-anchor="middle">11</text>
-<text stroke="none" x="5750" y="-5450" font-size="40" text-anchor="middle">12</text>
-<text stroke="none" x="6250" y="-5450" font-size="40" text-anchor="middle">13</text>
-<text stroke="none" x="6750" y="-5450" font-size="40" text-anchor="middle">14</text>
-<text stroke="none" x="7750" y="-5450" font-size="40" text-anchor="middle">16</text>
-<text stroke="none" x="1750" y="-25" font-size="40" text-anchor="middle">4</text>
-<text stroke="none" x="2250" y="-25" font-size="40" text-anchor="middle">5</text>
-<text stroke="none" x="2750" y="-25" font-size="40" text-anchor="middle">6</text>
-<text stroke="none" x="3250" y="-25" font-size="40" text-anchor="middle">7</text>
-<text stroke="none" x="3750" y="-25" font-size="40" text-anchor="middle">8</text>
-<text stroke="none" x="4250" y="-25" font-size="40" text-anchor="middle">9</text>
-<text stroke="none" x="1750" y="-5450" font-size="40" text-anchor="middle">4</text>
-<text stroke="none" x="750" y="-25" font-size="40" text-anchor="middle">2</text>
-<text stroke="none" x="38" y="-4250" font-size="40" text-anchor="middle">J</text>
-<text stroke="none" x="1250" y="-25" font-size="40" text-anchor="middle">3</text>
-<text stroke="none" x="6750" y="-25" font-size="40" text-anchor="middle">14</text>
-<text stroke="none" x="7250" y="-25" font-size="40" text-anchor="middle">15</text>
-<text stroke="none" x="8007" y="-116" font-size="30">PAGE:</text>
-<text stroke="none" x="8007" y="-192" font-size="30">REV:</text>
-<text stroke="none" x="38" y="-4750" font-size="34" text-anchor="middle">K</text>
-<text stroke="none" x="6279" y="-115" font-size="30">MODIFIED:</text>
-<text stroke="none" x="5250" y="-25" font-size="40" text-anchor="middle">11</text>
-<text stroke="none" x="4750" y="-25" font-size="40" text-anchor="middle">10</text>
-<text stroke="none" x="38" y="-250" font-size="40" text-anchor="middle">A</text>
-<text stroke="none" x="38" y="-3750" font-size="40" text-anchor="middle">H</text>
-<text stroke="none" x="5750" y="-25" font-size="40" text-anchor="middle">12</text>
-<text stroke="none" x="7250" y="-5450" font-size="40" text-anchor="middle">15</text>
-<g transform="translate(6082,-215)">
-<image href="data:image/jpg;base64,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" x="-182" y="-134" width="365" height="268"></image>
-</g>
-</symbol>
-<symbol id="symbol:al_toc.1" overflow="visible">
-<line x1="3300" y1="200" x2="6025" y2="200" stroke-width="6"></line>
-<line x1="3300" x2="6025" stroke-width="6"></line>
-<line x1="3300" x2="3300" y2="3225" stroke-width="6"></line>
-<line x1="6025" x2="6025" y2="3225" stroke-width="6"></line>
-<line x1="3300" y1="3225" x2="6025" y2="3225" stroke-width="6"></line>
-<line y1="2425" x2="2725" y2="2425"></line>
-<line x1="2725" x2="2725" y2="3225" stroke-width="6"></line>
-<line y2="3225" stroke-width="6"></line>
-<line x1="2725" y1="3225" y2="3225" stroke-width="6"></line>
-<line x1="2725" stroke-width="6"></line>
-<line x1="3750" x2="3750" y2="3225" stroke-width="6"></line>
-<line x1="3300" y1="1425" x2="6025" y2="1425"></line>
-<line x1="3300" y1="2525" x2="6025" y2="2525"></line>
-<line x1="3300" y1="2625" x2="6025" y2="2625"></line>
-<line x1="3300" y1="3025" x2="6025" y2="3025"></line>
-<line x1="3300" y1="3125" x2="6025" y2="3125"></line>
-<line x1="3300" y1="2925" x2="6025" y2="2925"></line>
-<line x1="3300" y1="2125" x2="6025" y2="2125"></line>
-<line x1="3300" y1="1125" x2="6025" y2="1125"></line>
-<line x1="3300" y1="2825" x2="6025" y2="2825"></line>
-<line x1="3300" y1="2725" x2="6025" y2="2725"></line>
-<line x1="3300" y1="1925" x2="6025" y2="1925"></line>
-<line x1="3300" y1="325" x2="6025" y2="325"></line>
-<line x1="3300" y1="1725" x2="6025" y2="1725"></line>
-<line x1="3300" y1="1825" x2="6025" y2="1825"></line>
-<line x1="3300" y1="625" x2="6025" y2="625"></line>
-<line x1="3300" y1="825" x2="6025" y2="825"></line>
-<line x1="3300" y1="925" x2="6025" y2="925"></line>
-<line x1="3300" y1="1025" x2="6025" y2="1025"></line>
-<line x1="3300" y1="1225" x2="6025" y2="1225"></line>
-<line x1="3300" y1="1325" x2="6025" y2="1325"></line>
-<line x1="3300" y1="1525" x2="6025" y2="1525"></line>
-<line x1="3300" y1="1625" x2="6025" y2="1625"></line>
-<line x1="3300" y1="2425" x2="6025" y2="2425"></line>
-<line x1="3300" y1="2325" x2="6025" y2="2325"></line>
-<line x1="3300" y1="2225" x2="6025" y2="2225"></line>
-<line x1="3300" y1="2025" x2="6025" y2="2025"></line>
-<line x1="3300" y1="725" x2="6025" y2="725"></line>
-<line x1="3300" y1="525" x2="6025" y2="525"></line>
-<line x1="3300" y1="425" x2="6025" y2="425"></line>
-<line x1="450" x2="450" y2="3225" stroke-width="6"></line>
-<line y1="1325" x2="2725" y2="1325"></line>
-<line y1="1725" x2="2725" y2="1725"></line>
-<line y1="2025" x2="2725" y2="2025"></line>
-<line y1="2325" x2="2725" y2="2325"></line>
-<line y1="2725" x2="2725" y2="2725"></line>
-<line y1="2825" x2="2725" y2="2825"></line>
-<line y1="625" x2="2725" y2="625"></line>
-<line y1="325" x2="2725" y2="325"></line>
-<line y1="425" x2="2725" y2="425"></line>
-<line y1="825" x2="2725" y2="825"></line>
-<line y1="925" x2="2725" y2="925"></line>
-<line y1="1225" x2="2725" y2="1225"></line>
-<line y1="1125" x2="2725" y2="1125"></line>
-<line y1="725" x2="2725" y2="725"></line>
-<line y1="200" x2="2725" y2="200" stroke-width="6"></line>
-<line y1="525" x2="2725" y2="525"></line>
-<line y1="1525" x2="2725" y2="1525"></line>
-<line y1="3025" x2="2725" y2="3025"></line>
-<line y1="2125" x2="2725" y2="2125"></line>
-<line y1="2225" x2="2725" y2="2225"></line>
-<line y1="3125" x2="2725" y2="3125"></line>
-<line y1="2925" x2="2725" y2="2925"></line>
-<line y1="2625" x2="2725" y2="2625"></line>
-<line y1="2525" x2="2725" y2="2525"></line>
-<line y1="1425" x2="2725" y2="1425"></line>
-<line y1="1825" x2="2725" y2="1825"></line>
-<line y1="1925" x2="2725" y2="1925"></line>
-<line y1="1025" x2="2725" y2="1025"></line>
-<line y1="1625" x2="2725" y2="1625"></line>
-<text stroke="none" x="775" y="150" font-size="47">SHEET NAME</text>
-<text stroke="none" x="4050" y="125" font-size="47">SHEET NAME</text>
-<text stroke="none" x="25" y="150" font-size="47">SHEET NO.</text>
-<text stroke="none" x="3375" y="125" font-size="47">SHEET NO.</text>
-<text stroke="none" x="532" y="-51" font-size="93">TABLE OF CONTENTS</text>
-</symbol>
-<symbol id="symbol:gnd.1" overflow="visible">
-<line x1="37" y1="-19" x2="63" y2="-19"></line>
-<line x1="43" y1="-12" x2="57" y2="-12"></line>
-<line x1="31" y1="-26" x2="69" y2="-26"></line>
-<line x1="25" y1="-33" x2="75" y2="-33"></line>
-<line x1="50" y1="-50" x2="50" y2="-33"></line>
-</symbol>
-<symbol id="symbol:stm32f412.2" overflow="visible">
-<line x1="-400" y1="-900" x2="-400" y2="750"></line>
-<line x1="400" y1="-900" x2="400" y2="750"></line>
-<line x1="-400" y1="-900" x2="400" y2="-900"></line>
-<line x1="-400" y1="750" x2="400" y2="750"></line>
-<line x1="-500" y1="-500" x2="-400" y2="-500"></line>
-<line x1="500" y1="-800" x2="400" y2="-800"></line>
-<line x1="500" y1="-750" x2="400" y2="-750"></line>
-<line x1="500" y1="-700" x2="400" y2="-700"></line>
-<line x1="500" y1="-600" x2="400" y2="-600"></line>
-<line x1="500" y1="-550" x2="400" y2="-550"></line>
-<line x1="-500" y1="500" x2="-400" y2="500"></line>
-<line x1="500" y1="500" x2="400" y2="500"></line>
-<line x1="-500" y1="-700" x2="-400" y2="-700"></line>
-<line x1="-500" y1="-400" x2="-400" y2="-400"></line>
-<line x1="-500" y1="-350" x2="-400" y2="-350"></line>
-<line x1="-500" y1="-300" x2="-400" y2="-300"></line>
-<line x1="-500" y1="-250" x2="-400" y2="-250"></line>
-<line x1="-500" y1="-200" x2="-400" y2="-200"></line>
-<line x1="-500" y1="-150" x2="-400" y2="-150"></line>
-<line x1="-500" y1="-100" x2="-400" y2="-100"></line>
-<line x1="-500" y1="-50" x2="-400" y2="-50"></line>
-<line x1="500" y1="-400" x2="400" y2="-400"></line>
-<line x1="500" y1="-350" x2="400" y2="-350"></line>
-<line x1="500" y1="-300" x2="400" y2="-300"></line>
-<line x1="500" y1="150" x2="400" y2="150"></line>
-<line x1="-500" y1="-550" x2="-400" y2="-550"></line>
-<line x1="500" y1="600" x2="400" y2="600"></line>
-<line x1="-500" y1="-800" x2="-400" y2="-800"></line>
-<line x1="500" y1="200" x2="400" y2="200"></line>
-<line x1="500" y1="250" x2="400" y2="250"></line>
-<line x1="500" y1="300" x2="400" y2="300"></line>
-<line x1="500" y1="350" x2="400" y2="350"></line>
-<line x1="-500" x2="-400"></line>
-<line x1="-500" y1="50" x2="-400" y2="50"></line>
-<line x1="-500" y1="100" x2="-400" y2="100"></line>
-<line x1="-500" y1="150" x2="-400" y2="150"></line>
-<line x1="-500" y1="200" x2="-400" y2="200"></line>
-<line x1="-500" y1="250" x2="-400" y2="250"></line>
-<line x1="500" y1="650" x2="400" y2="650"></line>
-<line x1="-500" y1="-750" x2="-400" y2="-750"></line>
-<line x1="-500" y1="300" x2="-400" y2="300"></line>
-<line x1="-500" y1="350" x2="-400" y2="350"></line>
-<line x1="500" y1="-250" x2="400" y2="-250"></line>
-<line x1="500" y1="-200" x2="400" y2="-200"></line>
-<line x1="500" y1="-150" x2="400" y2="-150"></line>
-<line x1="500" y1="-100" x2="400" y2="-100"></line>
-<line x1="500" y1="-50" x2="400" y2="-50"></line>
-<line x1="-500" y1="600" x2="-400" y2="600"></line>
-<line x1="500" x2="400"></line>
-<line x1="500" y1="50" x2="400" y2="50"></line>
-<line x1="-500" y1="-850" x2="-400" y2="-850"></line>
-<line x1="500" y1="550" x2="400" y2="550"></line>
-<line x1="500" y1="700" x2="400" y2="700"></line>
-<text stroke="none" y="-342" font-size="32" text-anchor="middle">stm32f412</text>
-<text stroke="none" x="-390" y="-499" font-size="24">VBAT</text>
-<text stroke="none" x="390" y="-800" font-size="24" text-anchor="end">PC13</text>
-<text stroke="none" x="390" y="-750" font-size="24" text-anchor="end">PC14-OSC32_IN</text>
-<text stroke="none" x="390" y="-700" font-size="24" text-anchor="end">PC15-OSC32_OUT</text>
-<text stroke="none" x="390" y="-600" font-size="24" text-anchor="end">PH0-OSC_IN</text>
-<text stroke="none" x="390" y="-550" font-size="24" text-anchor="end">PH1-OSC_OUT</text>
-<text stroke="none" x="-390" y="500" font-size="24">NRST</text>
-<text stroke="none" x="390" y="500" font-size="24" text-anchor="end">VSSA/VREF</text>
-<text stroke="none" x="-390" y="-699" font-size="24">VDDA/VREF+</text>
-<text stroke="none" x="-390" y="-400" font-size="24">PA0</text>
-<text stroke="none" x="-390" y="-350" font-size="24">PA1</text>
-<text stroke="none" x="-390" y="-300" font-size="24">PA2</text>
-<text stroke="none" x="-390" y="-250" font-size="24">PA3</text>
-<text stroke="none" x="-390" y="-200" font-size="24">PA4</text>
-<text stroke="none" x="-390" y="-150" font-size="24">PA5</text>
-<text stroke="none" x="-390" y="-100" font-size="24">PA6</text>
-<text stroke="none" x="-390" y="-50" font-size="24">PA7</text>
-<text stroke="none" x="390" y="-400" font-size="24" text-anchor="end">PB0</text>
-<text stroke="none" x="390" y="-350" font-size="24" text-anchor="end">PB1</text>
-<text stroke="none" x="390" y="-300" font-size="24" text-anchor="end">PB2</text>
-<text stroke="none" x="390" y="150" font-size="24" text-anchor="end">PB10</text>
-<text stroke="none" x="-390" y="-549" font-size="24">VCAP_1</text>
-<text stroke="none" x="390" y="600" font-size="24" text-anchor="end">VSS1</text>
-<text stroke="none" x="-390" y="-800" font-size="24">VDD1</text>
-<text stroke="none" x="390" y="200" font-size="24" text-anchor="end">PB12</text>
-<text stroke="none" x="390" y="250" font-size="24" text-anchor="end">PB13</text>
-<text stroke="none" x="390" y="300" font-size="24" text-anchor="end">PB14</text>
-<text stroke="none" x="390" y="351" font-size="24" text-anchor="end">PB15</text>
-<text stroke="none" x="-390" font-size="24">PA8</text>
-<text stroke="none" x="-390" y="50" font-size="24">PA9</text>
-<text stroke="none" x="-390" y="100" font-size="24">PA10</text>
-<text stroke="none" x="-390" y="151" font-size="24">PA11</text>
-<text stroke="none" x="-390" y="201" font-size="24">PA12</text>
-<text stroke="none" x="-390" y="251" font-size="24">PA13</text>
-<text stroke="none" x="390" y="650" font-size="24" text-anchor="end">VSS2</text>
-<text stroke="none" x="-390" y="-750" font-size="24">VDD2</text>
-<text stroke="none" x="-390" y="301" font-size="24">PA14</text>
-<text stroke="none" x="-390" y="351" font-size="24">PA15</text>
-<text stroke="none" x="390" y="-250" font-size="24" text-anchor="end">PB3</text>
-<text stroke="none" x="390" y="-200" font-size="24" text-anchor="end">PB4</text>
-<text stroke="none" x="390" y="-150" font-size="24" text-anchor="end">PB5</text>
-<text stroke="none" x="390" y="-100" font-size="24" text-anchor="end">PB6</text>
-<text stroke="none" x="390" y="-50" font-size="24" text-anchor="end">PB7</text>
-<text stroke="none" x="-390" y="600" font-size="24">BOOT0</text>
-<text stroke="none" x="390" font-size="24" text-anchor="end">PB8</text>
-<text stroke="none" x="390" y="50" font-size="24" text-anchor="end">PB9</text>
-<text stroke="none" x="-390" y="-849" font-size="24">VDD0</text>
-<text stroke="none" x="390" y="550" font-size="24" text-anchor="end">VSS0</text>
-<text stroke="none" x="390" y="699" font-size="24" text-anchor="end">G1</text>
-</symbol>
-<symbol id="symbol:res.1" overflow="visible">
-<line x1="19" y1="6" x2="-22" y2="-14"></line>
-<line x1="-23" y1="25" x2="19" y2="6"></line>
-<line x1="-22" y1="-14" x2="18" y2="-34"></line>
-<line x1="-22" y1="-54" x2="18" y2="-34"></line>
-<line y1="36" x2="-23" y2="25"></line>
-<line x1="18" y1="-74" x2="-22" y2="-54"></line>
-<line y1="-84" x2="18" y2="-74"></line>
-<line y1="-100" y2="-84"></line>
-<line y1="50" y2="36"></line>
-</symbol>
-<symbol id="symbol:cap.1" overflow="visible">
-<line x1="30" y1="10" x2="-30" y2="10"></line>
-<line x1="30" y1="-10" x2="-30" y2="-10"></line>
-<line y1="50" y2="10"></line>
-<line y1="-50" y2="-10"></line>
-</symbol>
-<symbol id="symbol:ina3221.1" overflow="visible">
-<line x1="-150" y1="-350" x2="-150" y2="350"></line>
-<line x1="-150" y1="-350" x2="150" y2="-350"></line>
-<line x1="150" y1="-350" x2="150" y2="350"></line>
-<line x1="-150" y1="350" x2="150" y2="350"></line>
-<line x1="-200" x2="-150"></line>
-<line x1="-200" y1="200" x2="-150" y2="200"></line>
-<line x1="-50" y1="400" x2="-50" y2="350"></line>
-<line x1="200" y1="-250" x2="150" y2="-250"></line>
-<line x1="200" y1="-300" x2="150" y2="-300"></line>
-<line x1="200" x2="150"></line>
-<line x1="200" y1="-50" x2="150" y2="-50"></line>
-<line x1="200" y1="250" x2="150" y2="250"></line>
-<line x1="200" y1="200" x2="150" y2="200"></line>
-<line x1="-200" y1="100" x2="-150" y2="100"></line>
-<line x1="-200" y1="-150" x2="-150" y2="-150"></line>
-<line x1="-200" y1="-100" x2="-150" y2="-100"></line>
-<line x1="-200" y1="250" x2="-150" y2="250"></line>
-<line x1="-200" y1="-300" x2="-150" y2="-300"></line>
-<line x1="-200" y1="-250" x2="-150" y2="-250"></line>
-<line x1="-200" y1="150" x2="-150" y2="150"></line>
-<line x1="50" y1="400" x2="50" y2="350"></line>
-<text stroke="none" x="-140" font-size="24">A0</text>
-<text stroke="none" x="-140" y="199" font-size="24">CRITICAL</text>
-<g transform="translate(-50,340)">
-<g transform="rotate(-90)">
-<text stroke="none" font-size="24">GND</text>
-</g></g>
-<text stroke="none" x="140" y="-249" font-size="24" text-anchor="end">IN-1</text>
-<text stroke="none" x="140" y="-299" font-size="24" text-anchor="end">IN+1</text>
-<text stroke="none" x="140" y="1" font-size="24" text-anchor="end">IN-2</text>
-<text stroke="none" x="140" y="-49" font-size="24" text-anchor="end">IN+2</text>
-<text stroke="none" x="140" y="251" font-size="24" text-anchor="end">IN-3</text>
-<text stroke="none" x="140" y="201" font-size="24" text-anchor="end">IN+3</text>
-<text stroke="none" x="-140" y="99" font-size="24">PV</text>
-<text stroke="none" x="-140" y="-149" font-size="24">SCL</text>
-<text stroke="none" x="-140" y="-100" font-size="24">SDA</text>
-<text stroke="none" x="-140" y="249" font-size="24">TC</text>
-<text stroke="none" x="-140" y="-300" font-size="24">VPU</text>
-<text stroke="none" x="-140" y="-249" font-size="24">VS</text>
-<text stroke="none" x="-140" y="149" font-size="24">WARNING</text>
-<g transform="translate(49,340)">
-<g transform="rotate(-90)">
-<text stroke="none" font-size="24">G1</text>
-</g></g>
-</symbol>
-<symbol id="symbol:res.4" overflow="visible">
-<line x1="-25" y1="-20" x2="-35"></line>
-<line x1="-5" y1="20" x2="-25" y2="-20"></line>
-<line x1="15" y1="-20" x2="-5" y2="20"></line>
-<line x1="15" y1="-20" x2="35" y2="20"></line>
-<line x1="35" y1="20" x2="55" y2="-20"></line>
-<line x1="55" y1="-20" x2="75" y2="20"></line>
-<line x1="75" y1="20" x2="85"></line>
-<line x1="-50" x2="-35"></line>
-<line x1="85" x2="100"></line>
-</symbol>
-<symbol id="symbol:testpoint.1" overflow="visible">
-<line x1="100"></line>
-<line y1="10" x2="10" stroke-width="6"></line>
-<line x1="10" y2="-10" stroke-width="6"></line>
-<line y1="-5" x2="5" stroke-width="6"></line>
-<line x1="5" y2="5" stroke-width="6"></line>
-<line x1="-5" y2="-5" stroke-width="6"></line>
-<line y1="5" x2="-5" stroke-width="6"></line>
-<line x1="-10" y2="10" stroke-width="6"></line>
-<line y1="-10" x2="-10" stroke-width="6"></line>
-<circle r="5" fill="none"></circle>
-<circle r="10" fill="none"></circle>
-<circle r="10" fill="none"></circle>
-</symbol>
-<symbol id="symbol:non_inverting_buffer.2" overflow="visible">
-<line x1="-25" y1="50" x2="-25" y2="-50"></line>
-<line x1="75" x2="-25" y2="50"></line>
-<line x1="75" x2="-25" y2="-50"></line>
-<line x1="150" x2="75"></line>
-<line x1="-75" y1="75" x2="100" y2="75"></line>
-<line x1="-75" y1="-75" x2="-75" y2="75"></line>
-<line x1="100" y1="-75" x2="100" y2="75"></line>
-<line x1="100" y1="-75" x2="-75" y2="-75"></line>
-<line x1="-100" x2="-25"></line>
-<line x1="19" y1="11" x2="1" y2="11"></line>
-<line x1="10" y1="-9" x2="1"></line>
-<line x1="10" y1="-9" x2="19"></line>
-<line x1="10" y1="10" x2="1" y2="1"></line>
-<line x1="10" y1="10" x2="19" y2="1"></line>
-<line x1="50" y1="100" x2="50" y2="15"></line>
-<line x1="50" y1="-100" x2="50" y2="-15"></line>
-<g transform="translate(50,100)">
-<g transform="rotate(-90)">
-<text stroke="none" font-size="32">?</text>
-</g></g>
-<text stroke="none" x="-100" font-size="32">?</text>
-<text stroke="none" x="125" y="-25" font-size="32">?</text>
-<g transform="translate(50,-100)">
-<g transform="rotate(-90)">
-<text stroke="none" font-size="32">?</text>
-</g></g>
-</symbol>
-<symbol id="symbol:led.1:m:s" overflow="visible">
-<line x1="25" y1="25" x2="-25" y2="25" stroke-width="6"></line>
-<line x1="60" y1="-50" x2="70" y2="-40"></line>
-<line x1="25" y1="-25" x2="-25" y2="-25" stroke-width="6"></line>
-<line x1="75" y1="-25" x2="85" y2="-15"></line>
-<line x1="50" y1="10" x2="80" y2="-20"></line>
-<line y1="-25" y2="-50"></line>
-<line x1="25" y1="25" y2="-25" stroke-width="6"></line>
-<line y1="-25" x2="-25" y2="25" stroke-width="6"></line>
-<line x1="35" y1="-15" x2="65" y2="-45"></line>
-<line y1="25" y2="50"></line>
-<line x1="95" y1="-35" x2="85" y2="-15"></line>
-<line x1="75" y1="-25" x2="95" y2="-35"></line>
-<line x1="80" y1="-60" x2="70" y2="-40"></line>
-<line x1="60" y1="-50" x2="80" y2="-60"></line>
-</symbol>
-<symbol id="symbol:analog_switch.3" overflow="visible">
-<line x1="150" y1="-800" x2="150"></line>
-<line x1="-150" y1="-800" x2="150" y2="-800"></line>
-<line x1="-150" x2="150"></line>
-<line x1="-150" y1="-800" x2="-150"></line>
-<line x1="-200" y1="-100" x2="-176" y2="-100"></line>
-<line x1="200" y1="-200" x2="150" y2="-200"></line>
-<line x1="200" y1="-350" x2="150" y2="-350"></line>
-<line x1="200" y1="-500" x2="150" y2="-500"></line>
-<line x1="200" y1="-650" x2="150" y2="-650"></line>
-<line x1="200" y1="-600" x2="150" y2="-600"></line>
-<line x1="200" y1="-750" x2="150" y2="-750"></line>
-<line x1="200" y1="-300" x2="150" y2="-300"></line>
-<line x1="200" y1="-150" x2="150" y2="-150"></line>
-<line x1="200" y1="-450" x2="150" y2="-450"></line>
-<line x1="200" y1="-50" x2="150" y2="-50"></line>
-<line x1="-200" y1="-750" x2="-150" y2="-750"></line>
-<line x1="-200" y1="-650" x2="-150" y2="-650"></line>
-<line x1="-200" y1="-200" x2="-150" y2="-200"></line>
-<line x1="-200" y1="-500" x2="-150" y2="-500"></line>
-<line x1="-200" y1="-350" x2="-150" y2="-350"></line>
-<circle cx="-163" cy="-100" r="13" fill="none"></circle>
-<text stroke="none" x="-140" y="-100" font-size="32">EN_L</text>
-<text stroke="none" x="140" y="-200" font-size="32" text-anchor="end">NC4</text>
-<text stroke="none" x="140" y="-350" font-size="32" text-anchor="end">NC3</text>
-<text stroke="none" x="140" y="-500" font-size="32" text-anchor="end">NC2</text>
-<text stroke="none" x="140" y="-650" font-size="32" text-anchor="end">NC1</text>
-<text stroke="none" x="140" y="-600" font-size="32" text-anchor="end">NO1</text>
-<text stroke="none" x="140" y="-750" font-size="32" text-anchor="end">V</text>
-<text stroke="none" x="140" y="-300" font-size="32" text-anchor="end">NO3</text>
-<text stroke="none" x="140" y="-150" font-size="32" text-anchor="end">NO4</text>
-<text stroke="none" x="140" y="-450" font-size="32" text-anchor="end">NO2</text>
-<text stroke="none" x="140" y="-50" font-size="32" text-anchor="end">GND</text>
-<text stroke="none" x="-140" y="-750" font-size="32">IN</text>
-<text stroke="none" x="-140" y="-650" font-size="32">COM1</text>
-<text stroke="none" x="-140" y="-200" font-size="32">COM4</text>
-<text stroke="none" x="-140" y="-500" font-size="32">COM2</text>
-<text stroke="none" x="-140" y="-350" font-size="32">COM3</text>
-</symbol>
-<symbol id="symbol:load_switch.15" overflow="visible">
-<line x1="-200" y1="-200" x2="-200" y2="200"></line>
-<line x1="200" y1="-200" x2="200" y2="200"></line>
-<line x1="-200" y1="200" x2="200" y2="200"></line>
-<line x1="-200" y1="-200" x2="200" y2="-200"></line>
-<line x1="-250" y1="-100" x2="-200" y2="-100"></line>
-<line x1="-250" y1="-50" x2="-200" y2="-50"></line>
-<line x1="-250" y1="50" x2="-226" y2="50"></line>
-<line x1="250" y1="150" x2="200" y2="150"></line>
-<line x1="250" y1="-50" x2="200" y2="-50"></line>
-<line x1="250" y1="-100" x2="200" y2="-100"></line>
-<line x1="250" y1="-150" x2="200" y2="-150"></line>
-<line x1="-250" y1="150" x2="-200" y2="150"></line>
-<line x1="-250" y1="100" x2="-200" y2="100"></line>
-<line x1="-250" y1="-150" x2="-200" y2="-150"></line>
-<line x1="250" y1="100" x2="200" y2="100"></line>
-<circle cx="-213" cy="50" r="13" fill="none"></circle>
-<text stroke="none" x="-190" y="-100" font-size="32">IN_2</text>
-<text stroke="none" x="-190" y="-50" font-size="32">IN_3</text>
-<text stroke="none" x="-190" y="50" font-size="32">FAULT_L</text>
-<text stroke="none" x="190" y="150" font-size="32" text-anchor="end">GND_2</text>
-<text stroke="none" x="190" y="-50" font-size="32" text-anchor="end">OUT_3</text>
-<text stroke="none" x="190" y="-100" font-size="32" text-anchor="end">OUT_2</text>
-<text stroke="none" x="190" y="-150" font-size="32" text-anchor="end">OUT_1</text>
-<text stroke="none" x="-190" y="150" font-size="32">ILIM</text>
-<text stroke="none" x="-190" y="100" font-size="32">EN</text>
-<text stroke="none" x="-190" y="-150" font-size="32">IN_1</text>
-<text stroke="none" x="190" y="100" font-size="32" text-anchor="end">GND_1</text>
-</symbol>
-<symbol id="symbol:nmos.1" overflow="visible">
-<line x1="-39" y1="-42" x2="-39" y2="42" stroke-width="6"></line>
-<line x1="-25" y1="10" x2="-25" y2="-10" stroke-width="6"></line>
-<line x1="-25" y1="50" x2="-25" y2="30" stroke-width="6"></line>
-<line x1="60" y1="5" x2="40" y2="5"></line>
-<line x1="-25" y1="40" x2="50" y2="40"></line>
-<line x1="-25" y1="-50" x2="-25" y2="-30" stroke-width="6"></line>
-<line x1="60" y1="-10" x2="40" y2="-10"></line>
-<line x1="-25" x2="25"></line>
-<line y1="-12" x2="-25"></line>
-<line y1="11" x2="-25"></line>
-<line x1="40" y1="5" x2="50" y2="-10"></line>
-<line x1="50" y1="-10" x2="60" y2="5"></line>
-<line x1="-25" y1="-40" x2="50" y2="-40"></line>
-<line x1="25" y1="40" x2="25"></line>
-<line x1="-39" y1="43" x2="-39" y2="50"></line>
-<line x1="50" y1="-100" x2="50" y2="-10"></line>
-<line x1="-100" y1="50" x2="-39" y2="50"></line>
-<line x1="50" y1="100" x2="50" y2="5"></line>
-<circle cx="-2" r="67" fill="none"></circle>
-<text stroke="none" x="24" y="-76" font-size="24">?</text>
-<text stroke="none" x="-94" y="41" font-size="24">?</text>
-<text stroke="none" x="24" y="92" font-size="24">?</text>
-</symbol>
-<symbol id="symbol:ts5a23159.1" overflow="visible">
-<line x1="-250" y1="250" x2="-250" y2="-350"></line>
-<line x1="250" y1="250" x2="-250" y2="250"></line>
-<line x1="250" y1="-350" x2="-250" y2="-350"></line>
-<line x1="250" y1="-350" x2="250" y2="250"></line>
-<line x1="-350" y1="150" x2="-250" y2="150"></line>
-<line x1="350" y1="150" x2="250" y2="150"></line>
-<line x1="-50" y1="350" x2="-50" y2="250"></line>
-<line x1="-50" y1="-450" x2="-50" y2="-350"></line>
-<line x1="350" y1="-250" x2="250" y2="-250"></line>
-<line x1="-350" y1="-250" x2="-250" y2="-250"></line>
-<line x1="-350" y1="-150" x2="-250" y2="-150"></line>
-<line x1="-350" y1="50" x2="-250" y2="50"></line>
-<line x1="350" y1="50" x2="250" y2="50"></line>
-<line x1="350" y1="-150" x2="250" y2="-150"></line>
-<text stroke="none" y="-167" font-size="32" text-anchor="middle">ts5a23159</text>
-<text stroke="none" x="-240" y="150" font-size="24">NO2</text>
-<text stroke="none" x="240" y="150" font-size="24" text-anchor="end">IN2</text>
-<g transform="translate(-50,240)">
-<g transform="rotate(-90)">
-<text stroke="none" font-size="24">GND</text>
-</g></g>
-<g transform="translate(-50,-340)">
-<g transform="rotate(-90)">
-<text stroke="none" font-size="24" text-anchor="end">VCC</text>
-</g></g>
-<text stroke="none" x="240" y="-250" font-size="24" text-anchor="end">COM1</text>
-<text stroke="none" x="-240" y="-250" font-size="24">NC1</text>
-<text stroke="none" x="-240" y="-150" font-size="24">NO1</text>
-<text stroke="none" x="-240" y="50" font-size="24">NC2</text>
-<text stroke="none" x="240" y="50" font-size="24" text-anchor="end">COM2</text>
-<text stroke="none" x="240" y="-150" font-size="24" text-anchor="end">IN1</text>
-</symbol>
-<symbol id="symbol:spdt.1" overflow="visible">
-<line x1="-100" y1="-125" x2="-100" y2="125" stroke-dasharray="54,36,18,36"></line>
-<line x1="-100" y1="-125" x2="100" y2="-125" stroke-dasharray="54,36,18,36"></line>
-<line x1="-100" y1="125" x2="100" y2="125" stroke-dasharray="54,36,18,36"></line>
-<line x1="100" y1="125" x2="100" y2="-125" stroke-dasharray="54,36,18,36"></line>
-<line x1="82" y1="-76" x2="-65" y2="-5" stroke-width="6"></line>
-<line x1="150" y1="100" x2="86" y2="100"></line>
-<line x1="150" y1="-100" x2="86" y2="-100"></line>
-<line x1="-150" x2="-86"></line>
-<circle cx="75" cy="100" r="11" fill="none"></circle>
-<circle cx="75" cy="-100" r="11" fill="none"></circle>
-<circle cx="-75" r="11" fill="none"></circle>
-<text stroke="none" x="-87" y="-87" font-size="29">SPDT</text>
-<text stroke="none" x="107" y="95" font-size="23">?</text>
-<text stroke="none" x="107" y="-105" font-size="23">?</text>
-<text stroke="none" x="-107" y="-5" font-size="23" text-anchor="end">?</text>
-</symbol>
-<symbol id="symbol:tps22913.1" overflow="visible">
-<line x1="-200" y1="50" x2="-150" y2="50"></line>
-<line x1="-150" y1="150" x2="-150" y2="-150"></line>
-<line x1="150" y1="150" x2="-150" y2="150"></line>
-<line x1="-150" y1="-150" x2="150" y2="-150"></line>
-<line x1="150" y1="150" x2="150" y2="-150"></line>
-<line x1="200" y1="50" x2="150" y2="50"></line>
-<line x1="200" y1="-50" x2="150" y2="-50"></line>
-<line x1="-200" y1="-50" x2="-150" y2="-50"></line>
-<text stroke="none" x="140" y="-50" font-size="23" text-anchor="end">VOUT</text>
-<text stroke="none" x="140" y="50" font-size="23" text-anchor="end">GND</text>
-<text stroke="none" x="-140" y="-50" font-size="23">VIN</text>
-<text stroke="none" x="-140" y="50" font-size="23">ON</text>
-</symbol>
-<symbol id="symbol:panasonic_p4.1" overflow="visible">
-<line x1="-150" y1="-700" x2="-150" y2="700"></line>
-<line x1="-150" y1="-700" x2="150" y2="-700"></line>
-<line x1="-150" y1="700" x2="150" y2="700"></line>
-<line x1="150" y1="-700" x2="150" y2="700"></line>
-<line x1="-200" y1="50" x2="-150" y2="50"></line>
-<line x1="-200" y1="-650" x2="-150" y2="-650"></line>
-<line x1="200" y1="-450" x2="150" y2="-450"></line>
-<line x1="200" y1="-50" x2="150" y2="-50"></line>
-<line x1="200" y1="-200" x2="150" y2="-200"></line>
-<line x1="200" y1="-250" x2="150" y2="-250"></line>
-<line x1="200" y1="-300" x2="150" y2="-300"></line>
-<line x1="200" y1="-350" x2="150" y2="-350"></line>
-<line x1="200" y1="-650" x2="150" y2="-650"></line>
-<line x1="200" y1="-550" x2="150" y2="-550"></line>
-<line x1="200" y1="-600" x2="150" y2="-600"></line>
-<line x1="-200" y1="-600" x2="-150" y2="-600"></line>
-<line x1="-200" y1="-550" x2="-150" y2="-550"></line>
-<line x1="-200" y1="-500" x2="-150" y2="-500"></line>
-<line x1="-200" y1="-450" x2="-150" y2="-450"></line>
-<line x1="-200" y1="-250" x2="-150" y2="-250"></line>
-<line x1="-200" y1="-200" x2="-150" y2="-200"></line>
-<line x1="-200" y1="-150" x2="-150" y2="-150"></line>
-<line x1="-200" y1="-100" x2="-150" y2="-100"></line>
-<line x1="-200" y1="-50" x2="-150" y2="-50"></line>
-<line x1="-200" x2="-150"></line>
-<line x1="-200" y1="100" x2="-150" y2="100"></line>
-<line x1="-200" y1="150" x2="-150" y2="150"></line>
-<line x1="-200" y1="200" x2="-150" y2="200"></line>
-<line x1="-200" y1="250" x2="-150" y2="250"></line>
-<line x1="-200" y1="300" x2="-150" y2="300"></line>
-<line x1="-200" y1="350" x2="-150" y2="350"></line>
-<line x1="-200" y1="400" x2="-150" y2="400"></line>
-<line x1="-200" y1="450" x2="-150" y2="450"></line>
-<line x1="-200" y1="500" x2="-150" y2="500"></line>
-<line x1="-200" y1="550" x2="-150" y2="550"></line>
-<line x1="200" y1="-500" x2="150" y2="-500"></line>
-<line x1="200" y1="-400" x2="150" y2="-400"></line>
-<line x1="200" y1="-150" x2="150" y2="-150"></line>
-<line x1="200" y1="-100" x2="150" y2="-100"></line>
-<line x1="200" x2="150"></line>
-<line x1="200" y1="50" x2="150" y2="50"></line>
-<line x1="200" y1="100" x2="150" y2="100"></line>
-<line x1="200" y1="150" x2="150" y2="150"></line>
-<line x1="200" y1="450" x2="150" y2="450"></line>
-<line x1="200" y1="500" x2="150" y2="500"></line>
-<line x1="200" y1="550" x2="150" y2="550"></line>
-<line x1="200" y1="200" x2="150" y2="200"></line>
-<line x1="200" y1="250" x2="150" y2="250"></line>
-<line x1="200" y1="300" x2="150" y2="300"></line>
-<line x1="200" y1="350" x2="150" y2="350"></line>
-<line x1="200" y1="400" x2="150" y2="400"></line>
-<line x1="-200" y1="-400" x2="-150" y2="-400"></line>
-<line x1="-200" y1="-350" x2="-150" y2="-350"></line>
-<line x1="-200" y1="-300" x2="-150" y2="-300"></line>
-<text stroke="none" x="-140" y="50" font-size="34">29</text>
-<text stroke="none" x="-140" y="-650" font-size="34">1</text>
-<text stroke="none" x="140" y="-450" font-size="34" text-anchor="end">10</text>
-<text stroke="none" x="140" y="-50" font-size="34" text-anchor="end">26</text>
-<text stroke="none" x="140" y="-200" font-size="34" text-anchor="end">20</text>
-<text stroke="none" x="140" y="-250" font-size="34" text-anchor="end">18</text>
-<text stroke="none" x="140" y="-300" font-size="34" text-anchor="end">16</text>
-<text stroke="none" x="140" y="-350" font-size="34" text-anchor="end">14</text>
-<text stroke="none" x="140" y="-650" font-size="34" text-anchor="end">2</text>
-<text stroke="none" x="140" y="-550" font-size="34" text-anchor="end">6</text>
-<text stroke="none" x="140" y="-600" font-size="34" text-anchor="end">4</text>
-<text stroke="none" x="-140" y="-600" font-size="34">3</text>
-<text stroke="none" x="-140" y="-550" font-size="34">5</text>
-<text stroke="none" x="-140" y="-500" font-size="34">7</text>
-<text stroke="none" x="-140" y="-450" font-size="34">9</text>
-<text stroke="none" x="-140" y="-250" font-size="34">17</text>
-<text stroke="none" x="-140" y="-200" font-size="34">19</text>
-<text stroke="none" x="-140" y="-150" font-size="34">21</text>
-<text stroke="none" x="-140" y="-100" font-size="34">23</text>
-<text stroke="none" x="-140" y="-50" font-size="34">25</text>
-<text stroke="none" x="-140" font-size="34">27</text>
-<text stroke="none" x="-140" y="100" font-size="34">31</text>
-<text stroke="none" x="-140" y="150" font-size="34">33</text>
-<text stroke="none" x="-140" y="200" font-size="34">35</text>
-<text stroke="none" x="-140" y="250" font-size="34">37</text>
-<text stroke="none" x="-140" y="300" font-size="34">39</text>
-<text stroke="none" x="-140" y="350" font-size="34">41</text>
-<text stroke="none" x="-140" y="400" font-size="34">43</text>
-<text stroke="none" x="-140" y="450" font-size="34">45</text>
-<text stroke="none" x="-140" y="500" font-size="34">47</text>
-<text stroke="none" x="-140" y="550" font-size="34">49</text>
-<text stroke="none" x="140" y="-500" font-size="34" text-anchor="end">8</text>
-<text stroke="none" x="140" y="-400" font-size="34" text-anchor="end">12</text>
-<text stroke="none" x="140" y="-150" font-size="34" text-anchor="end">22</text>
-<text stroke="none" x="140" y="-100" font-size="34" text-anchor="end">24</text>
-<text stroke="none" x="140" font-size="34" text-anchor="end">28</text>
-<text stroke="none" x="140" y="50" font-size="34" text-anchor="end">30</text>
-<text stroke="none" x="140" y="100" font-size="34" text-anchor="end">32</text>
-<text stroke="none" x="140" y="150" font-size="34" text-anchor="end">34</text>
-<text stroke="none" x="140" y="450" font-size="34" text-anchor="end">46</text>
-<text stroke="none" x="140" y="500" font-size="34" text-anchor="end">48</text>
-<text stroke="none" x="140" y="550" font-size="34" text-anchor="end">50</text>
-<text stroke="none" x="140" y="200" font-size="34" text-anchor="end">36</text>
-<text stroke="none" x="140" y="250" font-size="34" text-anchor="end">38</text>
-<text stroke="none" x="140" y="300" font-size="34" text-anchor="end">40</text>
-<text stroke="none" x="140" y="350" font-size="34" text-anchor="end">42</text>
-<text stroke="none" x="140" y="400" font-size="34" text-anchor="end">44</text>
-<text stroke="none" x="-140" y="-400" font-size="34">11</text>
-<text stroke="none" x="-140" y="-350" font-size="34">13</text>
-<text stroke="none" x="-140" y="-300" font-size="34">15</text>
-</symbol>
-<symbol id="symbol:con10.1" overflow="visible">
-<line x1="-50" y1="-150" x2="-50" y2="150"></line>
-<line x1="-50" y1="-150" x2="50" y2="-150"></line>
-<line x1="50" y1="150" x2="-50" y2="150"></line>
-<line x1="50" y1="-150" x2="50" y2="150"></line>
-<line x1="-50" y1="25" x2="50" y2="25"></line>
-<line y1="-150" y2="150"></line>
-<line x1="-50" y1="75" x2="50" y2="75"></line>
-<line x1="-50" y1="-25" x2="50" y2="-25"></line>
-<line x1="-50" y1="-75" x2="50" y2="-75"></line>
-<line x1="-100" y1="-50" x2="-40" y2="-50"></line>
-<line x1="-100" x2="-40"></line>
-<line x1="-100" y1="-100" x2="-40" y2="-100"></line>
-<line x1="40" y1="-100" x2="100" y2="-100"></line>
-<line x1="40" y1="100" x2="100" y2="100"></line>
-<line x1="40" x2="100"></line>
-<line x1="40" y1="50" x2="100" y2="50"></line>
-<line x1="40" y1="-50" x2="100" y2="-50"></line>
-<line x1="-100" y1="100" x2="-40" y2="100"></line>
-<line x1="-100" y1="50" x2="-40" y2="50"></line>
-<circle cx="-25" cy="-50" r="15" fill="none"></circle>
-<circle cx="-25" r="15" fill="none"></circle>
-<circle cx="-25" cy="-100" r="15" fill="none"></circle>
-<circle cx="25" cy="-100" r="15" fill="none"></circle>
-<circle cx="25" cy="100" r="15" fill="none"></circle>
-<circle cx="25" r="15" fill="none"></circle>
-<circle cx="25" cy="50" r="15" fill="none"></circle>
-<circle cx="25" cy="-50" r="15" fill="none"></circle>
-<circle cx="-25" cy="100" r="15" fill="none"></circle>
-<circle cx="-25" cy="50" r="15" fill="none"></circle>
-</symbol>
-<symbol id="symbol:ffc_20pin.2" overflow="visible">
-<line x1="100" y1="-1050" x2="100"></line>
-<line x1="-100" y1="-1050" x2="-100"></line>
-<line x1="-100" y1="-1050" x2="100" y2="-1050"></line>
-<line x1="100" x2="-100"></line>
-<line x1="150" y1="-50" x2="100" y2="-50"></line>
-<line x1="-150" y1="-450" x2="-100" y2="-450"></line>
-<line x1="-150" y1="-500" x2="-100" y2="-500"></line>
-<line x1="-150" y1="-550" x2="-100" y2="-550"></line>
-<line x1="150" y1="-100" x2="100" y2="-100"></line>
-<line x1="-150" y1="-300" x2="-100" y2="-300"></line>
-<line x1="-150" y1="-800" x2="-100" y2="-800"></line>
-<line x1="-150" y1="-750" x2="-100" y2="-750"></line>
-<line x1="-150" y1="-400" x2="-100" y2="-400"></line>
-<line x1="-150" y1="-600" x2="-100" y2="-600"></line>
-<line x1="-150" y1="-650" x2="-100" y2="-650"></line>
-<line x1="-150" y1="-700" x2="-100" y2="-700"></line>
-<line x1="-150" y1="-850" x2="-100" y2="-850"></line>
-<line x1="-150" y1="-900" x2="-100" y2="-900"></line>
-<line x1="-150" y1="-1000" x2="-100" y2="-1000"></line>
-<line x1="-150" y1="-950" x2="-100" y2="-950"></line>
-<line x1="-150" y1="-50" x2="-100" y2="-50"></line>
-<line x1="-150" y1="-100" x2="-100" y2="-100"></line>
-<line x1="-150" y1="-150" x2="-100" y2="-150"></line>
-<line x1="-150" y1="-200" x2="-100" y2="-200"></line>
-<line x1="-150" y1="-250" x2="-100" y2="-250"></line>
-<line x1="-150" y1="-350" x2="-100" y2="-350"></line>
-<text stroke="none" x="90" y="-50" font-size="32" text-anchor="end">M2</text>
-<text stroke="none" x="-90" y="-450" font-size="32">12</text>
-<text stroke="none" x="-90" y="-500" font-size="32">11</text>
-<text stroke="none" x="-90" y="-550" font-size="32">10</text>
-<text stroke="none" x="90" y="-100" font-size="32" text-anchor="end">M1</text>
-<text stroke="none" x="-90" y="-300" font-size="32">15</text>
-<text stroke="none" x="-90" y="-800" font-size="32">5</text>
-<text stroke="none" x="-90" y="-750" font-size="32">6</text>
-<text stroke="none" x="-90" y="-400" font-size="32">13</text>
-<text stroke="none" x="-90" y="-600" font-size="32">9</text>
-<text stroke="none" x="-90" y="-650" font-size="32">8</text>
-<text stroke="none" x="-90" y="-700" font-size="32">7</text>
-<text stroke="none" x="-90" y="-850" font-size="32">4</text>
-<text stroke="none" x="-90" y="-900" font-size="32">3</text>
-<text stroke="none" x="-90" y="-1000" font-size="32">1</text>
-<text stroke="none" x="-90" y="-950" font-size="32">2</text>
-<text stroke="none" x="-90" y="-50" font-size="32">20</text>
-<text stroke="none" x="-90" y="-100" font-size="32">19</text>
-<text stroke="none" x="-90" y="-150" font-size="32">18</text>
-<text stroke="none" x="-90" y="-200" font-size="32">17</text>
-<text stroke="none" x="-90" y="-250" font-size="32">16</text>
-<text stroke="none" x="-90" y="-350" font-size="32">14</text>
-</symbol>
-<symbol id="symbol:74aup1t97.1" overflow="visible">
-<line x1="200" y1="-200" x2="200" y2="200"></line>
-<line x1="-200" y1="-200" x2="200" y2="-200"></line>
-<line x1="-200" y1="200" x2="200" y2="200"></line>
-<line x1="-200" y1="-200" x2="-200" y2="200"></line>
-<line x1="-100" y1="30" x2="-35" y2="30"></line>
-<line x1="-100" y1="100" x2="-100" y2="30"></line>
-<line x1="-100" y1="100" x2="-35" y2="100"></line>
-<line x1="-100" y1="-30" x2="-35" y2="-30"></line>
-<line x1="-100" y1="-100" x2="-100" y2="-30"></line>
-<line x1="-100" y1="-100" x2="-35" y2="-100"></line>
-<line x1="-150" y1="-50" x2="-100" y2="-50"></line>
-<line x1="-150" y1="100" x2="-150" y2="-50"></line>
-<line x1="-125" y1="-80" x2="-100" y2="-80"></line>
-<line x1="-125" y1="-100" x2="-125" y2="-80"></line>
-<line x1="-125" x2="-125" y2="50"></line>
-<line x1="-125" y1="50" x2="-100" y2="50"></line>
-<line x1="-150" y1="85" x2="-120" y2="85"></line>
-<line x1="25" y1="15" x2="60" y2="15"></line>
-<line x1="25" y1="65" x2="25" y2="15"></line>
-<line y1="65" x2="25" y2="65"></line>
-<line x1="25" y1="-65" x2="25" y2="-20"></line>
-<line y1="-65" x2="25" y2="-65"></line>
-<line x1="25" y1="-20" x2="60" y2="-20"></line>
-<line y1="-250" y2="-200"></line>
-<line y1="250" y2="200"></line>
-<line x1="250" x2="150"></line>
-<line x1="-250" y1="100" x2="-150" y2="100"></line>
-<line x1="-250" x2="-125"></line>
-<line x1="-250" y1="-100" x2="-125" y2="-100"></line>
-<path fill="none" d="M -35 100 A 35 35 0 1 0 -34 30"></path>
-<circle cx="-110" cy="85" r="10" fill="none"></circle>
-<path fill="none" d="M 49 49 A 82 82 0 0 0 148 0"></path>
-<path fill="none" d="M 50 49 A 90 90 0 0 0 50 -49"></path>
-<path fill="none" d="M 149 0 A 83 83 0 0 0 49 -49"></path>
-<path fill="none" d="M -35 -30 A 35 35 0 1 0 -34 -100"></path>
-<g transform="translate(15,-200)">
-<g transform="rotate(-90)">
-<text stroke="none" font-size="29" text-anchor="end">VCC</text>
-</g></g>
-<g transform="translate(-20,195)">
-<g transform="rotate(-90)">
-<text stroke="none" font-size="29">GND</text>
-</g></g>
-<text stroke="none" x="195" y="-10" font-size="29" text-anchor="end">Y</text>
-<text stroke="none" x="-190" y="95" font-size="29">C</text>
-<text stroke="none" x="-190" y="-5" font-size="29">B</text>
-<text stroke="none" x="-190" y="-105" font-size="29">A</text>
-</symbol>
-<symbol id="symbol:74aup1t97.3" overflow="visible">
-<line x1="200" y1="200" x2="-200" y2="200"></line>
-<line x1="200" y1="-200" x2="200" y2="200"></line>
-<line x1="-200" y1="-200" x2="-200" y2="200"></line>
-<line x1="-200" y1="-200" x2="200" y2="-200"></line>
-<line x1="-125" y1="100" x2="25" y2="100"></line>
-<line x1="-125" y1="-100" x2="-125" y2="100"></line>
-<line x1="-125" y1="-100" x2="25" y2="-100"></line>
-<line x1="250" x2="165"></line>
-<line x1="-250" y1="-50" x2="-165" y2="-50"></line>
-<line y1="-250" y2="-200"></line>
-<line y1="250" y2="200"></line>
-<line x1="-100" y1="-200" x2="-100" y2="-250"></line>
-<line x1="-250" y1="50" x2="-125" y2="50"></line>
-<path fill="none" d="M 24 100 A 100 100 0 1 0 25 -100"></path>
-<circle cx="145" r="20" fill="none"></circle>
-<circle cx="-145" cy="-50" r="20" fill="none"></circle>
-<text stroke="none" x="195" y="-10" font-size="29" text-anchor="end">Y</text>
-<text stroke="none" x="-190" y="-55" font-size="29">A</text>
-<g transform="translate(15,-200)">
-<g transform="rotate(-90)">
-<text stroke="none" font-size="29" text-anchor="end">VCC</text>
-</g></g>
-<g transform="translate(15,190)">
-<g transform="rotate(-90)">
-<text stroke="none" font-size="29">GND</text>
-</g></g>
-<g transform="translate(-100,-150)">
-<g transform="rotate(-90)">
-<text stroke="none" font-size="29">B</text>
-</g></g>
-<text stroke="none" x="-190" y="45" font-size="29">C</text>
-</symbol>
-<symbol id="symbol:ffc_13pin.1" overflow="visible">
-<line y1="-700"></line>
-<line y1="-700" x2="200" y2="-700"></line>
-<line x2="200"></line>
-<line x1="200" x2="200" y2="-700"></line>
-<line x1="200" y1="-700" y2="-700"></line>
-<line y2="-700"></line>
-<line x1="250" y1="-100" x2="200" y2="-100"></line>
-<line x1="250" y1="-200" x2="200" y2="-200"></line>
-<line x1="250" y1="-250" x2="200" y2="-250"></line>
-<line x1="250" y1="-150" x2="200" y2="-150"></line>
-<line x1="250" y1="-300" x2="200" y2="-300"></line>
-<line x1="250" y1="-400" x2="200" y2="-400"></line>
-<line x1="250" y1="-450" x2="200" y2="-450"></line>
-<line x1="250" y1="-500" x2="200" y2="-500"></line>
-<line x1="250" y1="-350" x2="200" y2="-350"></line>
-<line x1="250" y1="-550" x2="200" y2="-550"></line>
-<line x1="250" y1="-650" x2="200" y2="-650"></line>
-<line x1="250" y1="-600" x2="200" y2="-600"></line>
-<line x1="250" y1="-50" x2="200" y2="-50"></line>
-<line y1="-300" x2="-50" y2="-300"></line>
-<line x1="-50" y1="-350" y2="-350"></line>
-<text stroke="none" x="190" y="-100" font-size="32" text-anchor="end">12</text>
-<text stroke="none" x="190" y="-200" font-size="32" text-anchor="end">10</text>
-<text stroke="none" x="190" y="-250" font-size="32" text-anchor="end">9</text>
-<text stroke="none" x="190" y="-150" font-size="32" text-anchor="end">11</text>
-<text stroke="none" x="190" y="-300" font-size="32" text-anchor="end">8</text>
-<text stroke="none" x="190" y="-400" font-size="32" text-anchor="end">6</text>
-<text stroke="none" x="190" y="-450" font-size="32" text-anchor="end">5</text>
-<text stroke="none" x="190" y="-500" font-size="32" text-anchor="end">4</text>
-<text stroke="none" x="190" y="-350" font-size="32" text-anchor="end">7</text>
-<text stroke="none" x="190" y="-550" font-size="32" text-anchor="end">3</text>
-<text stroke="none" x="190" y="-650" font-size="32" text-anchor="end">1</text>
-<text stroke="none" x="190" y="-600" font-size="32" text-anchor="end">2</text>
-<text stroke="none" x="190" y="-50" font-size="32" text-anchor="end">13</text>
-<text stroke="none" x="16" y="-300" font-size="32">M2</text>
-<text stroke="none" x="16" y="-350" font-size="32">M1</text>
-</symbol>
-<symbol id="symbol:b2b_16pin.2:s" overflow="visible">
-<line x1="-100" y1="250" x2="-100" y2="-300"></line>
-<line x1="-100" y1="250" x2="150" y2="250"></line>
-<line x1="-100" y1="-300" x2="150" y2="-300"></line>
-<line x1="150" y1="250" x2="150" y2="-300"></line>
-<line x1="200" y1="100" x2="150" y2="100"></line>
-<line x1="200" y1="50" x2="150" y2="50"></line>
-<line x1="200" x2="150"></line>
-<line x1="150" y1="-150" x2="200" y2="-150"></line>
-<line x1="150" y1="-50" x2="200" y2="-50"></line>
-<line x1="150" y1="-100" x2="200" y2="-100"></line>
-<line x1="150" y1="-250" x2="200" y2="-250"></line>
-<line x1="150" y1="-200" x2="200" y2="-200"></line>
-<line x1="-150" y1="-150" x2="-100" y2="-150"></line>
-<line x1="-150" y1="-100" x2="-100" y2="-100"></line>
-<line x1="-150" x2="-100"></line>
-<line x1="-150" y1="-50" x2="-100" y2="-50"></line>
-<line x1="-150" y1="-200" x2="-100" y2="-200"></line>
-<line x1="-150" y1="-250" x2="-100" y2="-250"></line>
-<line x1="-150" y1="100" x2="-100" y2="100"></line>
-<line x1="-150" y1="50" x2="-100" y2="50"></line>
-<line x1="200" y1="150" x2="150" y2="150"></line>
-<line x1="-150" y1="150" x2="-100" y2="150"></line>
-<line x1="-150" y1="200" x2="-100" y2="200"></line>
-<line x1="200" y1="200" x2="150" y2="200"></line>
-<g transform="translate(140,101)">
-<text stroke="none" font-size="32" transform=" rotate(180)">16</text>
-</g>
-<g transform="translate(140,51)">
-<text stroke="none" font-size="32" transform=" rotate(180)">14</text>
-</g>
-<g transform="translate(140,1)">
-<text stroke="none" font-size="32" transform=" rotate(180)">12</text>
-</g>
-<g transform="translate(140,-150)">
-<text stroke="none" font-size="32" transform=" rotate(180)">6</text>
-</g>
-<g transform="translate(140,-50)">
-<text stroke="none" font-size="32" transform=" rotate(180)">10</text>
-</g>
-<g transform="translate(140,-100)">
-<text stroke="none" font-size="32" transform=" rotate(180)">8</text>
-</g>
-<g transform="translate(140,-250)">
-<text stroke="none" font-size="32" transform=" rotate(180)">2</text>
-</g>
-<g transform="translate(140,-200)">
-<text stroke="none" font-size="32" transform=" rotate(180)">4</text>
-</g>
-<g transform="translate(-90,-150)">
-<text stroke="none" font-size="32" text-anchor="end" transform=" rotate(180)">5</text>
-</g>
-<g transform="translate(-90,-100)">
-<text stroke="none" font-size="32" text-anchor="end" transform=" rotate(180)">7</text>
-</g>
-<g transform="translate(-90,1)">
-<text stroke="none" font-size="32" text-anchor="end" transform=" rotate(180)">11</text>
-</g>
-<g transform="translate(-90,-50)">
-<text stroke="none" font-size="32" text-anchor="end" transform=" rotate(180)">9</text>
-</g>
-<g transform="translate(-90,-200)">
-<text stroke="none" font-size="32" text-anchor="end" transform=" rotate(180)">3</text>
-</g>
-<g transform="translate(-90,-250)">
-<text stroke="none" font-size="32" text-anchor="end" transform=" rotate(180)">1</text>
-</g>
-<g transform="translate(-90,100)">
-<text stroke="none" font-size="32" text-anchor="end" transform=" rotate(180)">15</text>
-</g>
-<g transform="translate(-90,50)">
-<text stroke="none" font-size="32" text-anchor="end" transform=" rotate(180)">13</text>
-</g>
-<g transform="translate(140,150)">
-<text stroke="none" font-size="32" transform=" rotate(180)">M2</text>
-</g>
-<g transform="translate(-90,150)">
-<text stroke="none" font-size="32" text-anchor="end" transform=" rotate(180)">M1</text>
-</g>
-<g transform="translate(-90,200)">
-<text stroke="none" font-size="32" text-anchor="end" transform=" rotate(180)">M3</text>
-</g>
-<g transform="translate(140,200)">
-<text stroke="none" font-size="32" transform=" rotate(180)">M4</text>
-</g>
-</symbol>
-<use href="#symbol:border_b.3" fill="green" stroke="green"></use>
-<text stroke="none" x="600" y="-4400" fill="orange" font-size="75.000015">
-<title>CUSTOM_TXT_CDS</title>PCB: 651-03910-00</text>
-<text stroke="none" x="600" y="-4550" fill="orange" font-size="75.000015">
-<title>CUSTOM_TXT_CDS</title>ASSY:650-03910-01</text>
-<text stroke="none" x="600" y="-4700" fill="orange" font-size="75.000015">
-<title>CUSTOM_TXT_CDS</title>SCH: 650-03910-01-SCH</text>
-<text stroke="none" x="600" y="-4950" fill="orange" font-size="231.000018">
-<title>CUSTOM_TXT_CDS</title>dragonclaw</text>
-<text stroke="none" x="6570" y="-95" fill="green" font-size="26.999996">
-<title>CUSTOM_TXT_CDS</title>Fri Jan 17 12:52:49 2020</text>
-<text stroke="none" x="6500" y="-170" fill="green" font-size="33.999988">
-<title>CUSTOM_TXT_CDS</title>dragonclaw</text>
-<text stroke="none" x="7500" y="-175" fill="green" font-size="30.000006000000003">
-<title>CUSTOM_TXT_CDS</title>650-03910-01-SCH</text>
-<text stroke="none" x="8265" y="-175" fill="green" font-size="33.999988" text-anchor="middle">
-<title>CUSTOM_TXT_CDS</title>0.2</text>
-<text stroke="none" x="8427" y="-84" fill="green" font-size="26.999996" text-anchor="end">
-<title>CUSTOM_TXT_CDS</title>1 OF 5</text>
-<text stroke="none" x="8427" y="-119" fill="green" font-size="26.999996" text-anchor="end">
-<title>CUSTOM_TXT_CDS</title>1 OF 5</text>
-<text stroke="none" x="7212" y="-260" fill="orange" font-size="67.999976" text-anchor="middle">
-<title>PAGE_TITLE</title>TABLE OF CONTENTS</text>
-<g transform="translate(500,-4000)">
-<use href="#symbol:al_toc.1" fill="green" stroke="green"></use>
-<a href="#page4">
-<text stroke="none" x="550" y="600" fill="orange">
-<title>CUSTOM_TXT_CDS</title>HOST CONNECTORS</text>
-</a>
-<a href="#page5">
-<text stroke="none" x="550" y="700" fill="orange">
-<title>CUSTOM_TXT_CDS</title>SENSOR CONNECTORS</text>
-</a>
-<a href="#page1">
-<text stroke="none" x="75" y="300" fill="orange">
-<title>CUSTOM_TXT_CDS</title>1</text>
-</a>
-<text stroke="none" x="550" y="800" fill="orange">
-<title>CUSTOM_TXT_CDS</title></text>
-<a href="#page2">
-<text stroke="none" x="75" y="400" fill="orange">
-<title>CUSTOM_TXT_CDS</title>2</text>
-</a>
-<text stroke="none" x="550" y="900" fill="orange">
-<title>CUSTOM_TXT_CDS</title></text>
-<a href="#page3">
-<text stroke="none" x="75" y="500" fill="orange">
-<title>CUSTOM_TXT_CDS</title>3</text>
-</a>
-<text stroke="none" x="550" y="1000" fill="orange">
-<title>CUSTOM_TXT_CDS</title></text>
-<a href="#page4">
-<text stroke="none" x="75" y="600" fill="orange">
-<title>CUSTOM_TXT_CDS</title>4</text>
-</a>
-<text stroke="none" x="550" y="1100" fill="orange">
-<title>CUSTOM_TXT_CDS</title></text>
-<a href="#page5">
-<text stroke="none" x="75" y="700" fill="orange">
-<title>CUSTOM_TXT_CDS</title>5</text>
-</a>
-<text stroke="none" x="550" y="1200" fill="orange">
-<title>CUSTOM_TXT_CDS</title></text>
-<text stroke="none" x="75" y="800" fill="orange">
-<title>CUSTOM_TXT_CDS</title></text>
-<text stroke="none" x="550" y="1300" fill="orange">
-<title>CUSTOM_TXT_CDS</title></text>
-<text stroke="none" x="75" y="900" fill="orange">
-<title>CUSTOM_TXT_CDS</title></text>
-<text stroke="none" x="550" y="1400" fill="orange">
-<title>CUSTOM_TXT_CDS</title></text>
-<text stroke="none" x="75" y="1000" fill="orange">
-<title>CUSTOM_TXT_CDS</title></text>
-<text stroke="none" x="550" y="1500" fill="orange">
-<title>CUSTOM_TXT_CDS</title></text>
-<text stroke="none" x="75" y="1100" fill="orange">
-<title>CUSTOM_TXT_CDS</title></text>
-<text stroke="none" x="550" y="1600" fill="orange">
-<title>CUSTOM_TXT_CDS</title></text>
-<text stroke="none" x="75" y="1200" fill="orange">
-<title>CUSTOM_TXT_CDS</title></text>
-<text stroke="none" x="550" y="1700" fill="orange">
-<title>CUSTOM_TXT_CDS</title></text>
-<text stroke="none" x="75" y="1300" fill="orange">
-<title>CUSTOM_TXT_CDS</title></text>
-<text stroke="none" x="75" y="1400" fill="orange">
-<title>CUSTOM_TXT_CDS</title></text>
-<text stroke="none" x="75" y="1500" fill="orange">
-<title>CUSTOM_TXT_CDS</title></text>
-<text stroke="none" x="75" y="1600" fill="orange">
-<title>CUSTOM_TXT_CDS</title></text>
-<text stroke="none" x="75" y="1700" fill="orange">
-<title>CUSTOM_TXT_CDS</title></text>
-<a href="#page3">
-<text stroke="none" x="550" y="500" fill="orange">
-<title>CUSTOM_TXT_CDS</title>HOST SELECTION</text>
-</a>
-<a href="#page2">
-<text stroke="none" x="550" y="400" fill="orange">
-<title>CUSTOM_TXT_CDS</title>MCU</text>
-</a>
-<a href="#page1">
-<text stroke="none" x="550" y="300" fill="orange">
-<title>CUSTOM_TXT_CDS</title>TABLE OF CONTENTS</text>
-</a>
-</g>
-<g id="I1" transform="translate(5450,-150)">
-<use href="#symbol:gnd.1" fill="green" stroke="green"></use>
-</g>
-<g transform="translate(5500,-200)">
-<line y2="-50" stroke="goldenrod"></line>
-</g>
-<g transform="translate(5650,-250)">
-<line x2="-150" stroke="goldenrod"></line>
-<text stroke="none" x="-10" y="-10" fill="orange" font-size="31.999997" text-anchor="end">
-<title>SIG_NAME</title>GND</text>
-</g>
-<filter id="highlight" x="-20" y="-20" height="40" width="40"> <femorphology operator="dilate" radius="20"></femorphology> <fecomponenttransfer result="highlight"> <fefuncr type="discrete" tableValues="1"></fefuncr> <fefuncg type="discrete" tableValues="1"></fefuncg> <fefuncb type="discrete" tableValues="0"></fefuncb> <fefunca type="table" tableValues="0 0.5 0.5 0.5 0.5 0.5 0.5 0.5"></fefunca> </fecomponenttransfer> <fecomposite in="SourceGraphic" in2="highlight" operator="over"></fecomposite> </filter>
-</svg>
-
-</div>
-</div>
-<hr>
-<div id="page2">
-<h1>dragonclaw/page2: MCU</h1>
-<div>
-<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0,-5500,8500,5500" width="14.87500in" height="9.62500in" font-family="monospace" font-size="47.000000" stroke-width="3" style="background-color:white">
-<use href="#symbol:border_b.3" fill="green" stroke="green"></use>
-<text stroke="none" x="6570" y="-95" fill="green" font-size="26.999996">
-<title>CUSTOM_TXT_CDS</title>Fri Jan 17 12:53:12 2020</text>
-<text stroke="none" x="6500" y="-170" fill="green" font-size="33.999988">
-<title>CUSTOM_TXT_CDS</title>dragonclaw</text>
-<text stroke="none" x="7500" y="-175" fill="green" font-size="30.000006000000003">
-<title>CUSTOM_TXT_CDS</title>650-03910-01-SCH</text>
-<text stroke="none" x="8265" y="-175" fill="green" font-size="33.999988" text-anchor="middle">
-<title>CUSTOM_TXT_CDS</title>0.2</text>
-<text stroke="none" x="8427" y="-84" fill="green" font-size="26.999996" text-anchor="end">
-<title>CUSTOM_TXT_CDS</title>2 OF 5</text>
-<text stroke="none" x="8427" y="-119" fill="green" font-size="26.999996" text-anchor="end">
-<title>CUSTOM_TXT_CDS</title>2 OF 5</text>
-<text stroke="none" x="7212" y="-260" fill="orange" font-size="67.999976" text-anchor="middle">
-<title>PAGE_TITLE</title>MCU</text>
-<g id="U2.2" transform="translate(6000,-4000)">
-<use href="#symbol:stm32f412.2" fill="green" stroke="green"></use>
-<text stroke="none" x="-500" y="964" fill="green" font-size="57.000002">
-<title>MFGR_PN</title>STM32F412CGU6</text>
-<text stroke="none" x="-500" y="1021" fill="green" font-size="57.000002">
-<title>PACK_TYPE</title>UFQFPN48</text>
-<text stroke="none" x="-500" y="907" fill="green" font-size="57.000002">
-<title>MFGR</title>ST MICROELECTRONICS</text>
-<text stroke="none" x="-500" y="850" fill="green" font-size="57.000002">
-<title>AGILE_PN</title>313-02528-00</text>
-<text stroke="none" x="500" y="-1000" fill="green" font-size="57.000002" text-anchor="end">
-<title>$LOCATION</title>U2</text>
-<text stroke="none" x="510" y="540" fill="black" font-size="31.999997">
-<title>$PN</title>23</text>
-<text stroke="none" x="-510" y="-410" fill="black" font-size="31.999997" text-anchor="end">
-<title>$PN</title>10</text>
-<text stroke="none" x="510" y="590" fill="black" font-size="31.999997">
-<title>$PN</title>35</text>
-<text stroke="none" x="-510" y="-360" fill="black" font-size="31.999997" text-anchor="end">
-<title>$PN</title>11</text>
-<text stroke="none" x="510" y="640" fill="black" font-size="31.999997">
-<title>$PN</title>47</text>
-<text stroke="none" x="-510" y="-310" fill="black" font-size="31.999997" text-anchor="end">
-<title>$PN</title>12</text>
-<text stroke="none" x="510" y="690" fill="black" font-size="31.999997">
-<title>$PN</title>G1</text>
-<text stroke="none" x="-510" y="-260" fill="black" font-size="31.999997" text-anchor="end">
-<title>$PN</title>13</text>
-<text stroke="none" x="-510" y="-210" fill="black" font-size="31.999997" text-anchor="end">
-<title>$PN</title>14</text>
-<text stroke="none" x="-510" y="-160" fill="black" font-size="31.999997" text-anchor="end">
-<title>$PN</title>15</text>
-<text stroke="none" x="-510" y="-110" fill="black" font-size="31.999997" text-anchor="end">
-<title>$PN</title>16</text>
-<text stroke="none" x="-510" y="-60" fill="black" font-size="31.999997" text-anchor="end">
-<title>$PN</title>17</text>
-<text stroke="none" x="-510" y="-10" fill="black" font-size="31.999997" text-anchor="end">
-<title>$PN</title>29</text>
-<text stroke="none" x="-510" y="40" fill="black" font-size="31.999997" text-anchor="end">
-<title>$PN</title>30</text>
-<text stroke="none" x="-510" y="90" fill="black" font-size="31.999997" text-anchor="end">
-<title>$PN</title>31</text>
-<text stroke="none" x="-510" y="140" fill="black" font-size="31.999997" text-anchor="end">
-<title>$PN</title>32</text>
-<text stroke="none" x="-510" y="190" fill="black" font-size="31.999997" text-anchor="end">
-<title>$PN</title>33</text>
-<text stroke="none" x="-510" y="240" fill="black" font-size="31.999997" text-anchor="end">
-<title>$PN</title>34</text>
-<text stroke="none" x="-510" y="290" fill="black" font-size="31.999997" text-anchor="end">
-<title>$PN</title>37</text>
-<text stroke="none" x="-510" y="340" fill="black" font-size="31.999997" text-anchor="end">
-<title>$PN</title>38</text>
-<text stroke="none" x="-510" y="490" fill="black" font-size="31.999997" text-anchor="end">
-<title>$PN</title>7</text>
-<text stroke="none" x="-510" y="590" fill="black" font-size="31.999997" text-anchor="end">
-<title>$PN</title>44</text>
-<text stroke="none" x="-510" y="-510" fill="black" font-size="31.999997" text-anchor="end">
-<title>$PN</title>1</text>
-<text stroke="none" x="510" y="490" fill="black" font-size="31.999997">
-<title>$PN</title>8</text>
-<text stroke="none" x="-510" y="-560" fill="black" font-size="31.999997" text-anchor="end">
-<title>$PN</title>22</text>
-<text stroke="none" x="510" y="340" fill="black" font-size="31.999997">
-<title>$PN</title>28</text>
-<text stroke="none" x="-510" y="-710" fill="black" font-size="31.999997" text-anchor="end">
-<title>$PN</title>9</text>
-<text stroke="none" x="510" y="290" fill="black" font-size="31.999997">
-<title>$PN</title>27</text>
-<text stroke="none" x="-510" y="-760" fill="black" font-size="31.999997" text-anchor="end">
-<title>$PN</title>48</text>
-<text stroke="none" x="510" y="240" fill="black" font-size="31.999997">
-<title>$PN</title>26</text>
-<text stroke="none" x="-510" y="-810" fill="black" font-size="31.999997" text-anchor="end">
-<title>$PN</title>36</text>
-<text stroke="none" x="510" y="190" fill="black" font-size="31.999997">
-<title>$PN</title>25</text>
-<text stroke="none" x="-510" y="-860" fill="black" font-size="31.999997" text-anchor="end">
-<title>$PN</title>24</text>
-<text stroke="none" x="510" y="140" fill="black" font-size="31.999997">
-<title>$PN</title>21</text>
-<text stroke="none" x="510" y="40" fill="black" font-size="31.999997">
-<title>$PN</title>46</text>
-<text stroke="none" x="510" y="-10" fill="black" font-size="31.999997">
-<title>$PN</title>45</text>
-<text stroke="none" x="510" y="-60" fill="black" font-size="31.999997">
-<title>$PN</title>43</text>
-<text stroke="none" x="510" y="-110" fill="black" font-size="31.999997">
-<title>$PN</title>42</text>
-<text stroke="none" x="510" y="-160" fill="black" font-size="31.999997">
-<title>$PN</title>41</text>
-<text stroke="none" x="510" y="-210" fill="black" font-size="31.999997">
-<title>$PN</title>40</text>
-<text stroke="none" x="510" y="-260" fill="black" font-size="31.999997">
-<title>$PN</title>39</text>
-<text stroke="none" x="510" y="-310" fill="black" font-size="31.999997">
-<title>$PN</title>20</text>
-<text stroke="none" x="510" y="-360" fill="black" font-size="31.999997">
-<title>$PN</title>19</text>
-<text stroke="none" x="510" y="-410" fill="black" font-size="31.999997">
-<title>$PN</title>18</text>
-<text stroke="none" x="510" y="-560" fill="black" font-size="31.999997">
-<title>$PN</title>6</text>
-<text stroke="none" x="510" y="-610" fill="black" font-size="31.999997">
-<title>$PN</title>5</text>
-<text stroke="none" x="510" y="-710" fill="black" font-size="31.999997">
-<title>$PN</title>4</text>
-<text stroke="none" x="510" y="-760" fill="black" font-size="31.999997">
-<title>$PN</title>3</text>
-<text stroke="none" x="510" y="-810" fill="black" font-size="31.999997">
-<title>$PN</title>2</text>
-</g>
-<g id="I5" transform="translate(6750,-3200)">
-<use href="#symbol:gnd.1" fill="green" stroke="green"></use>
-</g>
-<g id="R3.1" transform="translate(950,-1650)">
-<use href="#symbol:res.1" fill="green" stroke="green"></use>
-<text stroke="none" x="30" y="30" fill="orange" font-size="28.999987">
-<title>PACK_TYPE</title>0201</text>
-<text stroke="none" x="30" fill="orange" font-size="28.999987">
-<title>TOLERANCE</title>1%</text>
-<text stroke="none" x="30" y="-30" fill="orange" font-size="28.999987">
-<title>VALUE</title>100K</text>
-<text stroke="none" x="30" y="-60" fill="black" font-size="28.999987">
-<title>$LOCATION</title>R3</text>
-</g>
-<g id="R4.1" transform="translate(350,-950)">
-<use href="#symbol:res.1" fill="green" stroke="green"></use>
-<text stroke="none" x="30" y="-30" fill="orange" font-size="28.999987">
-<title>VALUE</title>100K</text>
-<text stroke="none" x="30" y="30" fill="orange" font-size="28.999987">
-<title>PACK_TYPE</title>0201</text>
-<text stroke="none" x="30" fill="orange" font-size="28.999987">
-<title>TOLERANCE</title>1%</text>
-<text stroke="none" x="30" y="-60" fill="black" font-size="28.999987">
-<title>$LOCATION</title>R4</text>
-</g>
-<g id="I11" transform="translate(3400,-4350)">
-<use href="#symbol:gnd.1" fill="green" stroke="green"></use>
-</g>
-<g id="C8.1" transform="translate(3450,-4450)">
-<use href="#symbol:cap.1" fill="green" stroke="green"></use>
-<text stroke="none" x="50" fill="green" font-size="28.999987">
-<title>VALUE</title>4.7uF</text>
-<text stroke="none" x="50" y="91" fill="orange" font-size="28.999987">
-<title>DIELECTRIC</title>X5R</text>
-<text stroke="none" x="50" y="29" fill="green" font-size="28.999987">
-<title>PACK_TYPE</title>0402</text>
-<text stroke="none" x="50" y="60" fill="green" font-size="28.999987">
-<title>VOLT</title>10V</text>
-<text stroke="none" x="50" y="-30" fill="green" font-size="28.999987">
-<title>$LOCATION</title>C8</text>
-</g>
-<g id="C9.1" transform="translate(3900,-3250)">
-<use href="#symbol:cap.1" fill="green" stroke="green"></use>
-<text stroke="none" x="50" y="-100" fill="orange" font-size="38.000017">
-<title>BOM_IGNORE</title>DNS</text>
-<text stroke="none" x="50" y="91" fill="orange" font-size="28.999987">
-<title>DIELECTRIC</title>X5R</text>
-<text stroke="none" x="50" y="60" fill="green" font-size="28.999987">
-<title>VOLT</title>10V</text>
-<text stroke="none" x="50" y="29" fill="green" font-size="28.999987">
-<title>PACK_TYPE</title>0201</text>
-<text stroke="none" x="50" fill="green" font-size="28.999987">
-<title>VALUE</title>0.1UF</text>
-<text stroke="none" x="50" y="-30" fill="green" font-size="28.999987">
-<title>$LOCATION</title>C9</text>
-</g>
-<g id="I14" transform="translate(3850,-3150)">
-<use href="#symbol:gnd.1" fill="green" stroke="green"></use>
-</g>
-<g id="C6.1" transform="translate(3000,-4450)">
-<use href="#symbol:cap.1" fill="green" stroke="green"></use>
-<text stroke="none" x="50" y="91" fill="orange" font-size="28.999987">
-<title>DIELECTRIC</title>X5R</text>
-<text stroke="none" x="50" y="29" fill="green" font-size="28.999987">
-<title>PACK_TYPE</title>0201</text>
-<text stroke="none" x="50" fill="green" font-size="28.999987">
-<title>VALUE</title>1UF</text>
-<text stroke="none" x="50" y="60" fill="green" font-size="28.999987">
-<title>VOLT</title>10V</text>
-<text stroke="none" x="50" y="-30" fill="green" font-size="28.999987">
-<title>$LOCATION</title>C6</text>
-</g>
-<g id="I16" transform="translate(2950,-4350)">
-<use href="#symbol:gnd.1" fill="green" stroke="green"></use>
-</g>
-<g id="C3.1" transform="translate(4500,-4900)">
-<use href="#symbol:cap.1" fill="green" stroke="green"></use>
-<text stroke="none" x="50" y="60" fill="green" font-size="28.999987">
-<title>VOLT</title>10V</text>
-<text stroke="none" x="50" y="91" fill="orange" font-size="28.999987">
-<title>DIELECTRIC</title>X5R</text>
-<text stroke="none" x="50" fill="green" font-size="28.999987">
-<title>VALUE</title>0.1UF</text>
-<text stroke="none" x="50" y="29" fill="green" font-size="28.999987">
-<title>PACK_TYPE</title>0201</text>
-<text stroke="none" x="50" y="-30" fill="green" font-size="28.999987">
-<title>$LOCATION</title>C3</text>
-</g>
-<g id="I18" transform="translate(4450,-4800)">
-<use href="#symbol:gnd.1" fill="green" stroke="green"></use>
-</g>
-<g id="C2.1" transform="translate(4250,-4900)">
-<use href="#symbol:cap.1" fill="green" stroke="green"></use>
-<text stroke="none" x="50" fill="green" font-size="28.999987">
-<title>VALUE</title>4.7uF</text>
-<text stroke="none" x="50" y="91" fill="orange" font-size="28.999987">
-<title>DIELECTRIC</title>X5R</text>
-<text stroke="none" x="50" y="60" fill="green" font-size="28.999987">
-<title>VOLT</title>10V</text>
-<text stroke="none" x="50" y="29" fill="green" font-size="28.999987">
-<title>PACK_TYPE</title>0402</text>
-<text stroke="none" x="50" y="-30" fill="green" font-size="28.999987">
-<title>$LOCATION</title>C2</text>
-</g>
-<g id="I20" transform="translate(4200,-4800)">
-<use href="#symbol:gnd.1" fill="green" stroke="green"></use>
-</g>
-<g id="C4.1" transform="translate(4750,-4900)">
-<use href="#symbol:cap.1" fill="green" stroke="green"></use>
-<text stroke="none" x="50" y="60" fill="green" font-size="28.999987">
-<title>VOLT</title>10V</text>
-<text stroke="none" x="50" fill="green" font-size="28.999987">
-<title>VALUE</title>0.1UF</text>
-<text stroke="none" x="50" y="29" fill="green" font-size="28.999987">
-<title>PACK_TYPE</title>0201</text>
-<text stroke="none" x="50" y="91" fill="orange" font-size="28.999987">
-<title>DIELECTRIC</title>X5R</text>
-<text stroke="none" x="50" y="-30" fill="green" font-size="28.999987">
-<title>$LOCATION</title>C4</text>
-</g>
-<g id="I22" transform="translate(4700,-4800)">
-<use href="#symbol:gnd.1" fill="green" stroke="green"></use>
-</g>
-<g id="I23" transform="translate(4950,-4800)">
-<use href="#symbol:gnd.1" fill="green" stroke="green"></use>
-</g>
-<g id="C5.1" transform="translate(5000,-4900)">
-<use href="#symbol:cap.1" fill="green" stroke="green"></use>
-<text stroke="none" x="50" y="91" fill="orange" font-size="28.999987">
-<title>DIELECTRIC</title>X5R</text>
-<text stroke="none" x="50" y="29" fill="green" font-size="28.999987">
-<title>PACK_TYPE</title>0201</text>
-<text stroke="none" x="50" fill="green" font-size="28.999987">
-<title>VALUE</title>0.1UF</text>
-<text stroke="none" x="50" y="60" fill="green" font-size="28.999987">
-<title>VOLT</title>10V</text>
-<text stroke="none" x="50" y="-30" fill="green" font-size="28.999987">
-<title>$LOCATION</title>C5</text>
-</g>
-<g id="C7.1" transform="translate(3200,-4450)">
-<use href="#symbol:cap.1" fill="green" stroke="green"></use>
-<text stroke="none" x="50" y="60" fill="green" font-size="28.999987">
-<title>VOLT</title>10V</text>
-<text stroke="none" x="50" y="91" fill="orange" font-size="28.999987">
-<title>DIELECTRIC</title>X5R</text>
-<text stroke="none" x="50" y="29" fill="green" font-size="28.999987">
-<title>PACK_TYPE</title>0201</text>
-<text stroke="none" x="50" fill="green" font-size="28.999987">
-<title>VALUE</title>0.1UF</text>
-<text stroke="none" x="50" y="-30" fill="green" font-size="28.999987">
-<title>$LOCATION</title>C7</text>
-</g>
-<g id="I26" transform="translate(3150,-4350)">
-<use href="#symbol:gnd.1" fill="green" stroke="green"></use>
-</g>
-<g id="U1.1" transform="translate(4900,-1000)">
-<use href="#symbol:ina3221.1" fill="green" stroke="green"></use>
-<text stroke="none" x="-149" y="412" fill="green" font-size="31.999997">
-<title>PATH</title>I27</text>
-<text stroke="none" x="50" y="-414" fill="orange" font-size="31.999997">
-<title>PACK_TYPE</title>QFN16</text>
-<text stroke="none" x="50" y="-457" fill="orange" font-size="31.999997">
-<title>MFGR_PN</title>INA3221AIRGVR</text>
-<text stroke="none" x="50" y="-500" fill="orange" font-size="31.999997">
-<title>MFGR</title>TEXAS INSTRUMENTS INC</text>
-<text stroke="none" x="50" y="-371" fill="orange" font-size="31.999997">
-<title>AGILE_PN</title>313-01081-00</text>
-<text stroke="none" x="-100" y="-387" fill="green" font-size="31.999997" text-anchor="end">
-<title>$LOCATION</title>U1</text>
-<text stroke="none" x="-210" y="-160" fill="black" font-size="31.999997" text-anchor="end">
-<title>$PN</title>6</text>
-<text stroke="none" x="210" y="240" fill="black" font-size="31.999997">
-<title>$PN</title>1</text>
-<text stroke="none" x="-210" y="-110" fill="black" font-size="31.999997" text-anchor="end">
-<title>$PN</title>7</text>
-<text stroke="none" x="-210" y="-10" fill="black" font-size="31.999997" text-anchor="end">
-<title>$PN</title>5</text>
-<text stroke="none" x="-210" y="90" fill="black" font-size="31.999997" text-anchor="end">
-<title>$PN</title>10</text>
-<text stroke="none" x="-210" y="140" fill="black" font-size="31.999997" text-anchor="end">
-<title>$PN</title>8</text>
-<g transform="translate(40,410)">
-<g transform="rotate(-90)">
-<text stroke="none" fill="black" font-size="31.999997" text-anchor="end">
-<title>$PN</title>17</text>
-</g></g>
-<text stroke="none" x="-210" y="190" fill="black" font-size="31.999997" text-anchor="end">
-<title>$PN</title>9</text>
-<g transform="translate(-60,410)">
-<g transform="rotate(-90)">
-<text stroke="none" fill="black" font-size="31.999997" text-anchor="end">
-<title>$PN</title>3</text>
-</g></g>
-<text stroke="none" x="-210" y="240" fill="black" font-size="31.999997" text-anchor="end">
-<title>$PN</title>13</text>
-<text stroke="none" x="210" y="190" fill="black" font-size="31.999997">
-<title>$PN</title>2</text>
-<text stroke="none" x="-210" y="-260" fill="black" font-size="31.999997" text-anchor="end">
-<title>$PN</title>4</text>
-<text stroke="none" x="-210" y="-310" fill="black" font-size="31.999997" text-anchor="end">
-<title>$PN</title>16</text>
-<text stroke="none" x="210" y="-10" fill="black" font-size="31.999997">
-<title>$PN</title>14</text>
-<text stroke="none" x="210" y="-60" fill="black" font-size="31.999997">
-<title>$PN</title>15</text>
-<text stroke="none" x="210" y="-260" fill="black" font-size="31.999997">
-<title>$PN</title>11</text>
-<text stroke="none" x="210" y="-310" fill="black" font-size="31.999997">
-<title>$PN</title>12</text>
-</g>
-<g id="C1.1" transform="translate(3700,-1200)">
-<use href="#symbol:cap.1" fill="green" stroke="green"></use>
-<text stroke="none" x="50" fill="green" font-size="28.999987">
-<title>VALUE</title>0.1UF</text>
-<text stroke="none" x="50" y="91" fill="orange" font-size="28.999987">
-<title>DIELECTRIC</title>X5R</text>
-<text stroke="none" x="50" y="60" fill="green" font-size="28.999987">
-<title>VOLT</title>10V</text>
-<text stroke="none" x="50" y="29" fill="green" font-size="28.999987">
-<title>PACK_TYPE</title>0201</text>
-<text stroke="none" x="50" y="-30" fill="green" font-size="28.999987">
-<title>$LOCATION</title>C1</text>
-</g>
-<g id="I29" transform="translate(3650,-1100)">
-<use href="#symbol:gnd.1" fill="green" stroke="green"></use>
-</g>
-<g id="I30" transform="translate(4350,-900)">
-<use href="#symbol:gnd.1" fill="green" stroke="green"></use>
-</g>
-<g id="R5.1" transform="translate(850,-3150)">
-<use href="#symbol:res.1" fill="green" stroke="green"></use>
-<text stroke="none" x="30" y="30" fill="orange" font-size="28.999987">
-<title>PACK_TYPE</title>0201</text>
-<text stroke="none" x="30" fill="orange" font-size="28.999987">
-<title>TOLERANCE</title>1%</text>
-<text stroke="none" x="30" y="-30" fill="orange" font-size="28.999987">
-<title>VALUE</title>100K</text>
-<text stroke="none" x="30" y="-60" fill="black" font-size="28.999987">
-<title>$LOCATION</title>R5</text>
-</g>
-<g id="R1.4" transform="translate(3350,-5100)">
-<use href="#symbol:res.4" fill="green" stroke="green"></use>
-<text stroke="none" x="30" y="-25" fill="orange" font-size="28.999987">
-<title>PACK_TYPE</title>0402</text>
-<text stroke="none" x="20" y="-25" fill="orange" font-size="28.999987" text-anchor="end">
-<title>VALUE</title>0.5</text>
-<text stroke="none" x="25" y="-55" fill="black" font-size="28.999987" text-anchor="middle">
-<title>$LOCATION</title>R1</text>
-</g>
-<g id="TP3.1" transform="translate(6600,-1300)">
-<use href="#symbol:testpoint.1" fill="green" stroke="green"></use>
-<text stroke="none" y="-50" fill="orange" font-size="48.000019">
-<title>VALUE</title></text>
-<text stroke="none" x="-10" y="14" fill="green" font-size="28.999987" text-anchor="end">
-<title>$LOCATION</title>TP3</text>
-</g>
-<g id="TP4.1" transform="translate(6600,-1250)">
-<use href="#symbol:testpoint.1" fill="green" stroke="green"></use>
-<text stroke="none" y="-50" fill="orange" font-size="48.000019">
-<title>VALUE</title></text>
-<text stroke="none" x="-10" y="14" fill="green" font-size="28.999987" text-anchor="end">
-<title>$LOCATION</title>TP4</text>
-</g>
-<g id="TP5.1" transform="translate(6600,-1200)">
-<use href="#symbol:testpoint.1" fill="green" stroke="green"></use>
-<text stroke="none" y="-50" fill="orange" font-size="48.000019">
-<title>VALUE</title></text>
-<text stroke="none" x="-10" y="14" fill="green" font-size="28.999987" text-anchor="end">
-<title>$LOCATION</title>TP5</text>
-</g>
-<g id="TP6.1" transform="translate(6600,-1150)">
-<use href="#symbol:testpoint.1" fill="green" stroke="green"></use>
-<text stroke="none" y="-50" fill="orange" font-size="48.000019">
-<title>VALUE</title></text>
-<text stroke="none" x="-10" y="14" fill="green" font-size="28.999987" text-anchor="end">
-<title>$LOCATION</title>TP6</text>
-</g>
-<g id="TP9.1" transform="translate(6600,-850)">
-<use href="#symbol:testpoint.1" fill="green" stroke="green"></use>
-<text stroke="none" y="-50" fill="orange" font-size="48.000019">
-<title>VALUE</title></text>
-<text stroke="none" x="-10" y="14" fill="green" font-size="28.999987" text-anchor="end">
-<title>$LOCATION</title>TP9</text>
-</g>
-<g id="TP8.1" transform="translate(6600,-900)">
-<use href="#symbol:testpoint.1" fill="green" stroke="green"></use>
-<text stroke="none" y="-50" fill="orange" font-size="48.000019">
-<title>VALUE</title></text>
-<text stroke="none" x="-10" y="14" fill="green" font-size="28.999987" text-anchor="end">
-<title>$LOCATION</title>TP8</text>
-</g>
-<g id="TP10.1" transform="translate(6600,-800)">
-<use href="#symbol:testpoint.1" fill="green" stroke="green"></use>
-<text stroke="none" y="-50" fill="orange" font-size="48.000019">
-<title>VALUE</title></text>
-<text stroke="none" x="-10" y="14" fill="green" font-size="28.999987" text-anchor="end">
-<title>$LOCATION</title>TP10</text>
-</g>
-<g id="TP11.1" transform="translate(6600,-750)">
-<use href="#symbol:testpoint.1" fill="green" stroke="green"></use>
-<text stroke="none" y="-50" fill="orange" font-size="48.000019">
-<title>VALUE</title></text>
-<text stroke="none" x="-10" y="14" fill="green" font-size="28.999987" text-anchor="end">
-<title>$LOCATION</title>TP11</text>
-</g>
-<g id="TP12.1" transform="translate(6600,-700)">
-<use href="#symbol:testpoint.1" fill="green" stroke="green"></use>
-<text stroke="none" y="-50" fill="orange" font-size="48.000019">
-<title>VALUE</title></text>
-<text stroke="none" x="-10" y="14" fill="green" font-size="28.999987" text-anchor="end">
-<title>$LOCATION</title>TP12</text>
-</g>
-<g id="TP13.1" transform="translate(6600,-550)">
-<use href="#symbol:testpoint.1" fill="green" stroke="green"></use>
-<text stroke="none" y="-50" fill="orange" font-size="48.000019">
-<title>VALUE</title></text>
-<text stroke="none" x="-10" y="14" fill="green" font-size="28.999987" text-anchor="end">
-<title>$LOCATION</title>TP13</text>
-</g>
-<g id="TP14.1" transform="translate(6600,-500)">
-<use href="#symbol:testpoint.1" fill="green" stroke="green"></use>
-<text stroke="none" y="-50" fill="orange" font-size="48.000019">
-<title>VALUE</title></text>
-<text stroke="none" x="-10" y="14" fill="green" font-size="28.999987" text-anchor="end">
-<title>$LOCATION</title>TP14</text>
-</g>
-<g id="TP1.1" transform="translate(6600,-1500)">
-<use href="#symbol:testpoint.1" fill="green" stroke="green"></use>
-<text stroke="none" y="-50" fill="orange" font-size="48.000019">
-<title>VALUE</title></text>
-<text stroke="none" x="-10" y="14" fill="green" font-size="28.999987" text-anchor="end">
-<title>$LOCATION</title>TP1</text>
-</g>
-<g id="TP2.1" transform="translate(6600,-1450)">
-<use href="#symbol:testpoint.1" fill="green" stroke="green"></use>
-<text stroke="none" y="-50" fill="orange" font-size="48.000019">
-<title>VALUE</title></text>
-<text stroke="none" x="-10" y="14" fill="green" font-size="28.999987" text-anchor="end">
-<title>$LOCATION</title>TP2</text>
-</g>
-<g id="R17.1" transform="translate(550,-950)">
-<use href="#symbol:res.1" fill="green" stroke="green"></use>
-<text stroke="none" x="30" y="-30" fill="orange" font-size="28.999987">
-<title>VALUE</title>100K</text>
-<text stroke="none" x="30" y="30" fill="orange" font-size="28.999987">
-<title>PACK_TYPE</title>0201</text>
-<text stroke="none" x="30" fill="orange" font-size="28.999987">
-<title>TOLERANCE</title>1%</text>
-<text stroke="none" x="30" y="-65" fill="black" font-size="28.999987">
-<title>$LOCATION</title>R17</text>
-</g>
-<g id="R27.1" transform="translate(550,-3800)">
-<use href="#symbol:res.1" fill="green" stroke="green"></use>
-<text stroke="none" x="30" fill="orange" font-size="28.999987">
-<title>TOLERANCE</title>1%</text>
-<text stroke="none" x="30" y="30" fill="orange" font-size="28.999987">
-<title>PACK_TYPE</title>0201</text>
-<text stroke="none" x="30" y="-30" fill="orange" font-size="28.999987">
-<title>VALUE</title>100K</text>
-<text stroke="none" x="30" y="-65" fill="black" font-size="28.999987">
-<title>$LOCATION</title>R27</text>
-</g>
-<g id="R28.1" transform="translate(350,-3800)">
-<use href="#symbol:res.1" fill="green" stroke="green"></use>
-<text stroke="none" x="30" fill="orange" font-size="28.999987">
-<title>TOLERANCE</title>1%</text>
-<text stroke="none" x="30" y="30" fill="orange" font-size="28.999987">
-<title>PACK_TYPE</title>0201</text>
-<text stroke="none" x="30" y="-30" fill="orange" font-size="28.999987">
-<title>VALUE</title>100K</text>
-<text stroke="none" x="30" y="-65" fill="black" font-size="28.999987">
-<title>$LOCATION</title>R28</text>
-</g>
-<g id="R29.1" transform="translate(350,-2000)">
-<use href="#symbol:res.1" fill="green" stroke="green"></use>
-<text stroke="none" x="30" y="-30" fill="orange" font-size="28.999987">
-<title>VALUE</title>100K</text>
-<text stroke="none" x="30" fill="orange" font-size="28.999987">
-<title>TOLERANCE</title>1%</text>
-<text stroke="none" x="30" y="30" fill="orange" font-size="28.999987">
-<title>PACK_TYPE</title>0201</text>
-<text stroke="none" x="100" y="-100" fill="orange" font-size="38.000017">
-<title>BOM_IGNORE</title>DNS</text>
-<text stroke="none" x="30" y="-65" fill="black" font-size="28.999987">
-<title>$LOCATION</title>R29</text>
-</g>
-<g id="R35.1" transform="translate(350,-450)">
-<use href="#symbol:res.1" fill="green" stroke="green"></use>
-<text stroke="none" x="30" y="-35" fill="green" font-size="28.999987">
-<title>VALUE</title>1M</text>
-<text stroke="none" x="30" y="-10" fill="orange" font-size="23.000014">
-<title>PACK_TYPE</title>0201</text>
-<text stroke="none" x="30" y="15" fill="orange" font-size="23.000014">
-<title>TOLERANCE</title>1%</text>
-<text stroke="none" x="30" y="-65" fill="black" font-size="28.999987">
-<title>$LOCATION</title>R35</text>
-</g>
-<g id="R36.1" transform="translate(500,-450)">
-<use href="#symbol:res.1" fill="green" stroke="green"></use>
-<text stroke="none" x="30" y="15" fill="orange" font-size="23.000014">
-<title>TOLERANCE</title>1%</text>
-<text stroke="none" x="30" y="-10" fill="orange" font-size="23.000014">
-<title>PACK_TYPE</title>0201</text>
-<text stroke="none" x="30" y="-35" fill="green" font-size="28.999987">
-<title>VALUE</title>1M</text>
-<text stroke="none" x="30" y="-65" fill="black" font-size="28.999987">
-<title>$LOCATION</title>R36</text>
-</g>
-<g id="I60" transform="translate(300,-350)">
-<use href="#symbol:gnd.1" fill="green" stroke="green"></use>
-</g>
-<g id="I61" transform="translate(450,-350)">
-<use href="#symbol:gnd.1" fill="green" stroke="green"></use>
-</g>
-<g id="R34.1" transform="translate(600,-3150)">
-<use href="#symbol:res.1" fill="green" stroke="green"></use>
-<text stroke="none" x="30" y="30" fill="orange" font-size="28.999987">
-<title>PACK_TYPE</title>0201</text>
-<text stroke="none" x="30" fill="orange" font-size="28.999987">
-<title>TOLERANCE</title>1%</text>
-<text stroke="none" x="30" y="-30" fill="orange" font-size="28.999987">
-<title>VALUE</title>100K</text>
-<text stroke="none" x="50" y="-100" fill="orange" font-size="38.000017">
-<title>BOM_IGNORE</title>DNS</text>
-<text stroke="none" x="30" y="-65" fill="black" font-size="28.999987">
-<title>$LOCATION</title>R34</text>
-</g>
-<g id="I67" transform="translate(300,-2650)">
-<use href="#symbol:gnd.1" fill="green" stroke="green"></use>
-</g>
-<g id="R30.1" transform="translate(350,-3150)">
-<use href="#symbol:res.1" fill="green" stroke="green"></use>
-<text stroke="none" x="30" y="-30" fill="orange" font-size="28.999987">
-<title>VALUE</title>100K</text>
-<text stroke="none" x="30" y="30" fill="orange" font-size="28.999987">
-<title>PACK_TYPE</title>0201</text>
-<text stroke="none" x="30" fill="orange" font-size="28.999987">
-<title>TOLERANCE</title>1%</text>
-<text stroke="none" x="30" y="-65" fill="black" font-size="28.999987">
-<title>$LOCATION</title>R30</text>
-</g>
-<g id="I69" transform="translate(500,-850)">
-<use href="#symbol:gnd.1" fill="green" stroke="green"></use>
-</g>
-<g id="I71" transform="translate(300,-850)">
-<use href="#symbol:gnd.1" fill="green" stroke="green"></use>
-</g>
-<g id="I72" transform="translate(4800,-400)">
-<use href="#symbol:gnd.1" fill="green" stroke="green"></use>
-</g>
-<g id="R33.1" transform="translate(550,-1650)">
-<use href="#symbol:res.1" fill="green" stroke="green"></use>
-<text stroke="none" x="30" y="-30" fill="orange" font-size="28.999987">
-<title>VALUE</title>100K</text>
-<text stroke="none" x="30" fill="orange" font-size="28.999987">
-<title>TOLERANCE</title>1%</text>
-<text stroke="none" x="30" y="30" fill="orange" font-size="28.999987">
-<title>PACK_TYPE</title>0201</text>
-<text stroke="none" x="30" y="-65" fill="black" font-size="28.999987">
-<title>$LOCATION</title>R33</text>
-</g>
-<g id="I75" transform="translate(300,-1900)">
-<use href="#symbol:gnd.1" fill="green" stroke="green"></use>
-</g>
-<g id="R32.1" transform="translate(350,-1650)">
-<use href="#symbol:res.1" fill="green" stroke="green"></use>
-<text stroke="none" x="30" fill="orange" font-size="28.999987">
-<title>TOLERANCE</title>1%</text>
-<text stroke="none" x="30" y="-30" fill="orange" font-size="28.999987">
-<title>VALUE</title>100K</text>
-<text stroke="none" x="50" y="-100" fill="orange" font-size="38.000017">
-<title>BOM_IGNORE</title>DNS</text>
-<text stroke="none" x="30" y="30" fill="orange" font-size="28.999987">
-<title>PACK_TYPE</title>0201</text>
-<text stroke="none" x="30" y="-65" fill="black" font-size="28.999987">
-<title>$LOCATION</title>R32</text>
-</g>
-<g id="R40.1" transform="translate(650,-450)">
-<use href="#symbol:res.1" fill="green" stroke="green"></use>
-<text stroke="none" x="30" y="-35" fill="green" font-size="28.999987">
-<title>VALUE</title>1M</text>
-<text stroke="none" x="30" y="-10" fill="orange" font-size="23.000014">
-<title>PACK_TYPE</title>0201</text>
-<text stroke="none" x="30" y="15" fill="orange" font-size="23.000014">
-<title>TOLERANCE</title>1%</text>
-<text stroke="none" x="30" y="-65" fill="black" font-size="28.999987">
-<title>$LOCATION</title>R40</text>
-</g>
-<g id="I82" transform="translate(600,-350)">
-<use href="#symbol:gnd.1" fill="green" stroke="green"></use>
-</g>
-<g id="R41.1" transform="translate(750,-2400)">
-<use href="#symbol:res.1" fill="green" stroke="green"></use>
-<text stroke="none" x="30" y="30" fill="orange" font-size="28.999987">
-<title>PACK_TYPE</title>0201</text>
-<text stroke="none" x="30" fill="orange" font-size="28.999987">
-<title>TOLERANCE</title>1%</text>
-<text stroke="none" x="30" y="-30" fill="orange" font-size="28.999987">
-<title>VALUE</title>100K</text>
-<text stroke="none" x="30" y="-65" fill="black" font-size="28.999987">
-<title>$LOCATION</title>R41</text>
-</g>
-<g id="R18.1" transform="translate(750,-1650)">
-<use href="#symbol:res.1" fill="green" stroke="green"></use>
-<text stroke="none" x="30" y="30" fill="orange" font-size="28.999987">
-<title>PACK_TYPE</title>0201</text>
-<text stroke="none" x="30" y="-30" fill="orange" font-size="28.999987">
-<title>VALUE</title>100K</text>
-<text stroke="none" x="30" fill="orange" font-size="28.999987">
-<title>TOLERANCE</title>1%</text>
-<text stroke="none" x="30" y="-65" fill="black" font-size="28.999987">
-<title>LOCATION</title>R18</text>
-</g>
-<g id="R39.1" transform="translate(750,-3800)">
-<use href="#symbol:res.1" fill="green" stroke="green"></use>
-<text stroke="none" x="30" fill="orange" font-size="28.999987">
-<title>TOLERANCE</title>1%</text>
-<text stroke="none" x="30" y="30" fill="orange" font-size="28.999987">
-<title>PACK_TYPE</title>0201</text>
-<text stroke="none" x="30" y="-30" fill="orange" font-size="28.999987">
-<title>VALUE</title>100K</text>
-<text stroke="none" x="30" y="-65" fill="black" font-size="28.999987">
-<title>$LOCATION</title>R39</text>
-</g>
-<g id="R44.1" transform="translate(950,-3800)">
-<use href="#symbol:res.1" fill="green" stroke="green"></use>
-<text stroke="none" x="30" y="-30" fill="orange" font-size="28.999987">
-<title>VALUE</title>100K</text>
-<text stroke="none" x="30" fill="orange" font-size="28.999987">
-<title>TOLERANCE</title>1%</text>
-<text stroke="none" x="30" y="30" fill="orange" font-size="28.999987">
-<title>PACK_TYPE</title>0201</text>
-<text stroke="none" x="30" y="-65" fill="black" font-size="28.999987">
-<title>$LOCATION</title>R44</text>
-</g>
-<g id="R45.1" transform="translate(350,-2400)">
-<use href="#symbol:res.1" fill="green" stroke="green"></use>
-<text stroke="none" x="30" y="30" fill="orange" font-size="28.999987">
-<title>PACK_TYPE</title>0201</text>
-<text stroke="none" x="30" fill="orange" font-size="28.999987">
-<title>TOLERANCE</title>1%</text>
-<text stroke="none" x="30" y="-30" fill="orange" font-size="28.999987">
-<title>VALUE</title>100K</text>
-<text stroke="none" x="50" y="-100" fill="orange" font-size="38.000017">
-<title>BOM_IGNORE</title>DNS</text>
-<text stroke="none" x="30" y="-65" fill="black" font-size="28.999987">
-<title>$LOCATION</title>R45</text>
-</g>
-<g id="U14.2" transform="translate(4750,-2000)">
-<use href="#symbol:non_inverting_buffer.2" fill="green" stroke="green"></use>
-<text stroke="none" x="75" y="100" fill="green" font-size="23.000014">
-<title>PACK_TYPE</title>WCSP4</text>
-<text stroke="none" x="75" y="150" fill="green" font-size="23.000014">
-<title>AGILE_PN</title>313-00602-00</text>
-<text stroke="none" x="75" y="125" fill="green" font-size="23.000014">
-<title>MFGR_PN</title>SN74LVC1G07YZVR</text>
-<text stroke="none" x="100" y="-100" fill="orange" font-size="28.999987">
-<title>PATH</title>I106</text>
-<text stroke="none" x="100" y="-150" fill="orange" font-size="48.000019">
-<title>VALUE</title>74LVC1G07</text>
-<text stroke="none" x="100" y="-200" fill="orange" font-size="48.000019">
-<title>VOLT</title>1.65-5.5V</text>
-<text stroke="none" x="-100" y="-100" fill="dodgerblue" font-size="28.999987">
-<title>$LOCATION</title>U14</text>
-<g transform="translate(40,110)">
-<g transform="rotate(-90)">
-<text stroke="none" fill="black" font-size="31.999997" text-anchor="end">
-<title>$PN</title>B1</text>
-</g></g>
-<text stroke="none" x="-110" y="-10" fill="black" font-size="31.999997" text-anchor="end">
-<title>$PN</title>A1</text>
-<g transform="translate(40,-110)">
-<g transform="rotate(-90)">
-<text stroke="none" fill="black" font-size="31.999997">
-<title>$PN</title>A2</text>
-</g></g>
-<text stroke="none" x="160" y="-10" fill="black" font-size="31.999997">
-<title>$PN</title>B2</text>
-</g>
-<g id="DS1.1" transform="translate(5350,-2150)">
-<g transform="rotate(-180)">
-<g transform="scale(-1,1)">
-<use href="#symbol:led.1:m:s" fill="green" stroke="green"></use>
-</g></g>
-<text stroke="none" x="120" y="9" fill="green" font-size="28.999987">
-<title>PACK_TYPE</title>0603</text>
-<text stroke="none" x="120" y="44" fill="green" font-size="28.999987">
-<title>VALUE</title>GREEN</text>
-<text stroke="none" x="100" y="-50" fill="green" font-size="28.999987">
-<title>MFGR_PN</title>LTST-C190GKT</text>
-<text stroke="none" x="120" y="79" fill="green" font-size="28.999987">
-<title>$LOCATION</title>DS1</text>
-<g transform="translate(-10,60)">
-<g transform="rotate(-90)">
-<text stroke="none" fill="black" font-size="31.999997" text-anchor="end">
-<title>$PN</title>K</text>
-</g></g>
-<g transform="translate(-10,-60)">
-<g transform="rotate(-90)">
-<text stroke="none" fill="black" font-size="31.999997">
-<title>$PN</title>A</text>
-</g></g>
-</g>
-<g id="I109" transform="translate(4750,-1800)">
-<use href="#symbol:gnd.1" fill="green" stroke="green"></use>
-</g>
-<g id="R46.1" transform="translate(550,-2400)">
-<use href="#symbol:res.1" fill="green" stroke="green"></use>
-<text stroke="none" x="30" y="30" fill="orange" font-size="28.999987">
-<title>PACK_TYPE</title>0201</text>
-<text stroke="none" x="30" fill="orange" font-size="28.999987">
-<title>TOLERANCE</title>1%</text>
-<text stroke="none" x="30" y="-30" fill="orange" font-size="28.999987">
-<title>VALUE</title>100K</text>
-<text stroke="none" x="50" y="-100" fill="orange" font-size="38.000017">
-<title>BOM_IGNORE</title>DNS</text>
-<text stroke="none" x="30" y="-65" fill="black" font-size="28.999987">
-<title>$LOCATION</title>R46</text>
-</g>
-<g id="R51.4" transform="translate(4200,-2000)">
-<use href="#symbol:res.4" fill="green" stroke="green"></use>
-<text stroke="none" x="-100" fill="orange" font-size="23.000014" text-anchor="end">
-<title>VALUE</title>0.0</text>
-<text stroke="none" x="150" fill="orange" font-size="23.000014">
-<title>PACK_TYPE</title>0201</text>
-<text stroke="none" x="25" y="-55" fill="black" font-size="28.999987" text-anchor="middle">
-<title>$LOCATION</title>R51</text>
-</g>
-<g id="R31.1" transform="translate(350,-2750)">
-<use href="#symbol:res.1" fill="green" stroke="green"></use>
-<text stroke="none" x="30" y="-10" fill="orange" font-size="23.000014">
-<title>PACK_TYPE</title>0201</text>
-<text stroke="none" x="30" y="-35" fill="green" font-size="28.999987">
-<title>VALUE</title>10K</text>
-<text stroke="none" x="30" y="15" fill="orange" font-size="23.000014">
-<title>TOLERANCE</title>1%</text>
-<text stroke="none" x="30" y="-65" fill="black" font-size="28.999987">
-<title>$LOCATION</title>R31</text>
-</g>
-<g id="R48.4" transform="translate(5050,-2300)">
-<use href="#symbol:res.4" fill="green" stroke="green"></use>
-<text stroke="none" x="20" y="-25" fill="orange" font-size="28.999987" text-anchor="end">
-<title>VALUE</title>120</text>
-<text stroke="none" x="30" y="-25" fill="orange" font-size="28.999987">
-<title>PACK_TYPE</title>0402</text>
-<text stroke="none" x="25" y="-55" fill="black" font-size="28.999987" text-anchor="middle">
-<title>$LOCATION</title>R48</text>
-</g>
-<g id="I116" transform="translate(8000,-2100)">
-<use href="#symbol:gnd.1" fill="green" stroke="green"></use>
-</g>
-<g id="I118" transform="translate(6750,-2100)">
-<use href="#symbol:gnd.1" fill="green" stroke="green"></use>
-</g>
-<g id="R54.1" transform="translate(6800,-2250)">
-<use href="#symbol:res.1" fill="green" stroke="green"></use>
-<text stroke="none" x="30" fill="orange" font-size="28.999987">
-<title>TOLERANCE</title>1%</text>
-<text stroke="none" x="30" y="-30" fill="orange" font-size="28.999987">
-<title>VALUE</title>100K</text>
-<text stroke="none" x="100" y="-100" fill="orange" font-size="48.000019">
-<title>BOM_IGNORE</title>DNS</text>
-<text stroke="none" x="30" y="30" fill="orange" font-size="28.999987">
-<title>PACK_TYPE</title>0201</text>
-<text stroke="none" x="30" y="-65" fill="black" font-size="28.999987">
-<title>$LOCATION</title>R54</text>
-</g>
-<g id="R21.1" transform="translate(6800,-2500)">
-<use href="#symbol:res.1" fill="green" stroke="green"></use>
-<text stroke="none" x="30" fill="orange" font-size="28.999987">
-<title>TOLERANCE</title>1%</text>
-<text stroke="none" x="30" y="-30" fill="orange" font-size="28.999987">
-<title>VALUE</title>100K</text>
-<text stroke="none" x="30" y="30" fill="orange" font-size="28.999987">
-<title>PACK_TYPE</title>0201</text>
-<text stroke="none" x="30" y="-65" fill="black" font-size="28.999987">
-<title>$LOCATION</title>R21</text>
-</g>
-<g id="R22.1" transform="translate(8050,-2500)">
-<use href="#symbol:res.1" fill="green" stroke="green"></use>
-<text stroke="none" x="30" y="30" fill="orange" font-size="28.999987">
-<title>PACK_TYPE</title>0201</text>
-<text stroke="none" x="30" fill="orange" font-size="28.999987">
-<title>TOLERANCE</title>1%</text>
-<text stroke="none" x="30" y="-30" fill="orange" font-size="28.999987">
-<title>VALUE</title>100K</text>
-<text stroke="none" x="30" y="-65" fill="black" font-size="28.999987">
-<title>$LOCATION</title>R22</text>
-</g>
-<g id="R53.1" transform="translate(8050,-2250)">
-<use href="#symbol:res.1" fill="green" stroke="green"></use>
-<text stroke="none" x="30" y="30" fill="orange" font-size="28.999987">
-<title>PACK_TYPE</title>0201</text>
-<text stroke="none" x="100" y="-100" fill="orange" font-size="48.000019">
-<title>BOM_IGNORE</title>DNS</text>
-<text stroke="none" x="30" y="-30" fill="orange" font-size="28.999987">
-<title>VALUE</title>100K</text>
-<text stroke="none" x="30" fill="orange" font-size="28.999987">
-<title>TOLERANCE</title>1%</text>
-<text stroke="none" x="30" y="-65" fill="black" font-size="28.999987">
-<title>$LOCATION</title>R53</text>
-</g>
-<g id="R55.4" transform="translate(4550,-2750)">
-<use href="#symbol:res.4" fill="green" stroke="green"></use>
-<text stroke="none" x="20" y="-25" fill="orange" font-size="28.999987" text-anchor="end">
-<title>VALUE</title>100K</text>
-<text stroke="none" x="30" y="-25" fill="orange" font-size="28.999987">
-<title>PACK_TYPE</title>0201</text>
-<text stroke="none" x="25" y="-55" fill="black" font-size="28.999987" text-anchor="middle">
-<title>$LOCATION</title>R55</text>
-</g>
-<g id="R56.4" transform="translate(4550,-2600)">
-<use href="#symbol:res.4" fill="green" stroke="green"></use>
-<text stroke="none" x="30" y="-25" fill="orange" font-size="28.999987">
-<title>PACK_TYPE</title>0201</text>
-<text stroke="none" x="20" y="-25" fill="orange" font-size="28.999987" text-anchor="end">
-<title>VALUE</title>100K</text>
-<text stroke="none" x="25" y="-55" fill="black" font-size="28.999987" text-anchor="middle">
-<title>$LOCATION</title>R56</text>
-</g>
-<g id="TP7.1" transform="translate(6600,-1100)">
-<use href="#symbol:testpoint.1" fill="green" stroke="green"></use>
-<text stroke="none" y="-50" fill="orange" font-size="48.000019">
-<title>VALUE</title></text>
-<text stroke="none" x="-10" y="14" fill="green" font-size="28.999987" text-anchor="end">
-<title>$LOCATION</title>TP7</text>
-</g>
-<text stroke="none" x="2200" y="-650" fill="purple" font-size="60.000012000000005">BOOT STRAPS</text>
-<text stroke="none" x="2200" y="-1100" fill="purple" font-size="60.000012000000005">BOOT</text>
-<text stroke="none" x="3400" y="-350" fill="purple" font-size="48.000019">IN+ AND IN- SIGNALS MUST BE ROUTED DIFFERENTIALLY</text>
-<text stroke="none" x="2200" y="-1600" fill="purple" font-size="60.000012000000005">INT/RST</text>
-<text stroke="none" x="3400" y="-450" fill="purple" font-size="48.000019">INA ADDR: 0X40</text>
-<text stroke="none" x="300" y="-4300" fill="purple" font-size="38.000017">SPI3</text>
-<text stroke="none" x="2200" y="-2400" fill="purple" font-size="60.000012000000005">SPI - MCU/FPS</text>
-<text stroke="none" x="300" y="-4350" fill="purple" font-size="38.000017">SPI1</text>
-<text stroke="none" x="300" y="-4400" fill="purple" font-size="38.000017">CAN</text>
-<text stroke="none" x="300" y="-4450" fill="purple" font-size="38.000017">USART3</text>
-<text stroke="none" x="300" y="-4500" fill="purple" font-size="38.000017">USART1</text>
-<text stroke="none" x="300" y="-4550" fill="purple" font-size="38.000017">USB</text>
-<text stroke="none" x="300" y="-4650" fill="purple" font-size="38.000017">BOOT PERIPHERALS</text>
-<text stroke="none" x="2200" y="-3000" fill="purple" font-size="60.000012000000005">SPI - MCU/HOST</text>
-<text stroke="none" x="300" y="-4950" fill="purple" font-size="231.000018">STM32F412</text>
-<text stroke="none" x="1100" y="-4300" fill="purple" font-size="38.000017">PA15/PC10/PC11/PC13</text>
-<text stroke="none" x="1100" y="-4350" fill="purple" font-size="38.000017">PA4/PA5/PA6/PA7</text>
-<text stroke="none" x="1100" y="-4400" fill="purple" font-size="38.000017">PB5/PB13</text>
-<text stroke="none" x="1100" y="-4450" fill="purple" font-size="38.000017">PB10/PB11</text>
-<text stroke="none" x="1100" y="-4500" fill="purple" font-size="38.000017">PA9/PA10</text>
-<text stroke="none" x="1100" y="-4550" fill="purple" font-size="38.000017">PA11/PA12</text>
-<text stroke="none" x="1100" y="-4650" fill="purple" font-size="38.000017">PINS</text>
-<text stroke="none" x="2200" y="-3750" fill="purple" font-size="60.000012000000005">UART</text>
-<text stroke="none" x="4350" y="-1750" fill="purple" font-size="30.000006000000003">MAX CURRENT SINK: 32MA</text>
-<text stroke="none" x="5250" y="-1850" fill="purple" font-size="30.000006000000003">FORWARD CURRENT: 10MA</text>
-<text stroke="none" x="5250" y="-1900" fill="purple" font-size="30.000006000000003">FORWARD VOLTAGE: 2.1V</text>
-<text stroke="none" x="3050" y="-4850" fill="purple" font-size="48.000019">PLACE CAPS CLOSE TO MCU</text>
-<text stroke="none" x="6050" y="-1850" fill="purple" font-size="30.000006000000003">DIVIDER AND R1 VS R2 LOCATION **</text>
-<text stroke="none" x="6050" y="-1900" fill="purple" font-size="30.000006000000003">** PLEASE ADD SILKSCREEN TO INDICATE</text>
-<text stroke="none" x="6050" y="-2000" fill="purple" font-size="30.000006000000003">DIVIDER INDICATES TRANSPORT LINE</text>
-<text stroke="none" x="6600" y="-1600" fill="purple" font-size="75.000015">TESTPOINTS</text>
-<text stroke="none" x="7300" y="-1850" fill="purple" font-size="30.000006000000003">DIVIDER AND R1 VS R2 LOCATION **</text>
-<text stroke="none" x="7300" y="-1900" fill="purple" font-size="30.000006000000003">** PLEASE ADD SILKSCREEN TO INDICATE</text>
-<text stroke="none" x="7300" y="-2000" fill="purple" font-size="30.000006000000003">DIVIDER INDICATES TRANSPORT LINE</text>
-<text stroke="none" x="6650" y="-4900" fill="purple" font-size="38.000017">ALL PERIPHERALS, MAX FREQ: TYP = 29MA</text>
-<text stroke="none" x="6650" y="-4950" fill="purple" font-size="38.000017">CURRENT CONSUMPTION</text>
-<g transform="translate(5500,-3700)">
-<line x2="-1250" stroke="goldenrod"></line>
-<text stroke="none" x="-1210" y="-10" fill="orange" font-size="38.000017">
-<title>SIG_NAME</title>DEBUG_MCU_JTCK_SWCLK</text>
-<text stroke="none" x="-1314" fill="black" font-size="30.000006000000003">
-<title>$XR0</title>4&nbsp;</text>
-</g>
-<g transform="translate(5500,-3650)">
-<line x2="-1250" stroke="goldenrod"></line>
-<text stroke="none" x="-1210" y="-10" fill="orange" font-size="38.000017">
-<title>SIG_NAME</title>DEBUG_MCU_JTDI</text>
-<text stroke="none" x="-1314" fill="black" font-size="30.000006000000003">
-<title>$XR0</title>4&nbsp;</text>
-</g>
-<g transform="translate(7950,-4250)">
-<line x2="-1450" stroke="goldenrod"></line>
-<text stroke="none" x="-810" y="-10" fill="orange" font-size="38.000017">
-<title>SIG_NAME</title>DEBUG_MCU_JTDO_SWO</text>
-<text stroke="none" x="30" fill="black" font-size="30.000006000000003">
-<title>$XR0</title>4&nbsp;</text>
-</g>
-<g transform="translate(5500,-3750)">
-<line x2="-1250" stroke="goldenrod"></line>
-<text stroke="none" x="-1210" y="-10" fill="orange" font-size="38.000017">
-<title>SIG_NAME</title>DEBUG_MCU_JTMS_SWDIO</text>
-<text stroke="none" x="-1314" fill="black" font-size="30.000006000000003">
-<title>$XR0</title>4&nbsp;</text>
-</g>
-<g transform="translate(6700,-1100)">
-<line x2="1150" stroke="goldenrod"></line>
-<text stroke="none" x="340" y="-10" fill="orange" font-size="38.000017">
-<title>SIG_NAME</title>DEBUG_MCU_JTRST</text>
-<text stroke="none" x="1240" fill="black" font-size="30.000006000000003">
-<title>$XR1</title>4&nbsp;</text>
-<text stroke="none" x="1180" fill="black" font-size="30.000006000000003">
-<title>$XR0</title>2&nbsp;</text>
-</g>
-<g transform="translate(7950,-4200)">
-<line x2="-1450" stroke="goldenrod"></line>
-<text stroke="none" x="-810" y="-10" fill="orange" font-size="38.000017">
-<title>SIG_NAME</title>DEBUG_MCU_JTRST</text>
-<text stroke="none" x="90" fill="black" font-size="30.000006000000003">
-<title>$XR1</title>4&nbsp;</text>
-<text stroke="none" x="30" fill="black" font-size="30.000006000000003">
-<title>$XR0</title>2&nbsp;</text>
-</g>
-<g transform="translate(6800,-2600)">
-<line y2="-50" stroke="goldenrod" stroke-width="6"></line>
-</g>
-<g transform="translate(6800,-2650)">
-<line x2="-650" stroke="goldenrod" stroke-width="6"></line>
-<text stroke="none" x="-660" y="-10" fill="orange" font-size="38.000017">
-<title>SIG_NAME</title>DIVIDER_HIGHSIDE</text>
-<text stroke="none" x="-714" fill="black" font-size="30.000006000000003">
-<title>$XR0</title>2&nbsp;</text>
-</g>
-<g transform="translate(8050,-2600)">
-<line y2="-50" stroke="goldenrod" stroke-width="6"></line>
-</g>
-<g transform="translate(8050,-2650)">
-<line x2="-650" stroke="goldenrod" stroke-width="6"></line>
-<text stroke="none" x="-660" y="-10" fill="orange" font-size="38.000017">
-<title>SIG_NAME</title>DIVIDER_HIGHSIDE</text>
-<text stroke="none" x="-714" fill="black" font-size="30.000006000000003">
-<title>$XR0</title>2&nbsp;</text>
-</g>
-<g transform="translate(7950,-4000)">
-<line x2="-1450" stroke="goldenrod"></line>
-<text stroke="none" x="-810" y="-10" fill="orange" font-size="38.000017">
-<title>SIG_NAME</title>DIVIDER_HIGHSIDE</text>
-<text stroke="none" x="30" fill="black" font-size="30.000006000000003">
-<title>$XR0</title>2&nbsp;</text>
-</g>
-<g transform="translate(350,-1600)">
-<line y2="250" stroke="goldenrod"></line>
-</g>
-<g transform="translate(1800,-1350)">
-<line x2="-1450" stroke="goldenrod"></line>
-<text stroke="none" x="-710" y="-10" fill="orange" font-size="38.000017">
-<title>SIG_NAME</title>FP_MCU_INT_L</text>
-<text stroke="none" x="90" fill="black" font-size="30.000006000000003">
-<title>$XR1</title>5&nbsp;</text>
-<text stroke="none" x="30" fill="black" font-size="30.000006000000003">
-<title>$XR0</title>2&nbsp;</text>
-</g>
-<g transform="translate(6700,-550)">
-<line x2="1150" stroke="goldenrod"></line>
-<text stroke="none" x="350" y="-10" fill="orange" font-size="38.000017">
-<title>SIG_NAME</title>FP_MCU_INT_L</text>
-<text stroke="none" x="1240" fill="black" font-size="30.000006000000003">
-<title>$XR1</title>5&nbsp;</text>
-<text stroke="none" x="1180" fill="black" font-size="30.000006000000003">
-<title>$XR0</title>2&nbsp;</text>
-</g>
-<g transform="translate(5500,-4400)">
-<line x2="-1250" stroke="goldenrod"></line>
-<text stroke="none" x="-1210" y="-10" fill="orange" font-size="38.000017">
-<title>SIG_NAME</title>FP_MCU_INT_L</text>
-<text stroke="none" x="-1374" fill="black" font-size="30.000006000000003">
-<title>$XR1</title>5&nbsp;</text>
-<text stroke="none" x="-1314" fill="black" font-size="30.000006000000003">
-<title>$XR0</title>2&nbsp;</text>
-</g>
-<g transform="translate(6800,-2350)">
-<line y2="-50" stroke="goldenrod"></line>
-</g>
-<g transform="translate(6800,-2400)">
-<line x2="-650" stroke="goldenrod"></line>
-<text stroke="none" x="-610" y="-10" fill="orange" font-size="38.000017">
-<title>SIG_NAME</title>FP_SENSOR_SEL</text>
-<text stroke="none" x="-744" fill="black" font-size="30.000006000000003">
-<title>$XR1</title>5&nbsp;</text>
-<text stroke="none" x="-684" fill="black" font-size="30.000006000000003">
-<title>$XR0</title>2&nbsp;</text>
-</g>
-<g transform="translate(6800,-2400)">
-<line y2="-50" stroke="goldenrod"></line>
-</g>
-<g transform="translate(7950,-4400)">
-<line x2="-1450" stroke="goldenrod"></line>
-<text stroke="none" x="-810" y="-10" fill="orange" font-size="38.000017">
-<title>SIG_NAME</title>FP_SENSOR_SEL</text>
-<text stroke="none" x="90" fill="black" font-size="30.000006000000003">
-<title>$XR1</title>5&nbsp;</text>
-<text stroke="none" x="30" fill="black" font-size="30.000006000000003">
-<title>$XR0</title>2&nbsp;</text>
-</g>
-<g transform="translate(4850,-450)">
-<line y2="-50" stroke="goldenrod"></line>
-</g>
-<g transform="translate(4400,-950)">
-<line y2="-50" stroke="goldenrod"></line>
-</g>
-<g transform="translate(4850,-500)">
-<line y2="-100" stroke="goldenrod"></line>
-</g>
-<g transform="translate(4850,-500)">
-<line x2="100" stroke="goldenrod"></line>
-</g>
-<g transform="translate(4400,-1000)">
-<line x2="300" stroke="goldenrod"></line>
-</g>
-<g transform="translate(4950,-500)">
-<line y2="-100" stroke="goldenrod"></line>
-</g>
-<g transform="translate(4800,-1900)">
-<line y2="50" stroke="goldenrod"></line>
-</g>
-<g transform="translate(6800,-2200)">
-<line y2="50" stroke="goldenrod"></line>
-</g>
-<g transform="translate(6500,-3300)">
-<line x2="300" stroke="goldenrod"></line>
-</g>
-<g transform="translate(6500,-3350)">
-<line x2="300" stroke="goldenrod"></line>
-</g>
-<g transform="translate(6500,-3400)">
-<line x2="300" stroke="goldenrod"></line>
-</g>
-<g transform="translate(6500,-3450)">
-<line x2="300" stroke="goldenrod"></line>
-</g>
-<g transform="translate(6800,-3300)">
-<line y2="50" stroke="goldenrod"></line>
-</g>
-<g transform="translate(6800,-3350)">
-<line y2="50" stroke="goldenrod"></line>
-</g>
-<g transform="translate(6800,-3400)">
-<line y2="50" stroke="goldenrod"></line>
-</g>
-<g transform="translate(6800,-3450)">
-<line y2="50" stroke="goldenrod"></line>
-</g>
-<g transform="translate(8050,-2200)">
-<line y2="50" stroke="goldenrod"></line>
-</g>
-<g transform="translate(6800,-3500)">
-<line y2="50" stroke="goldenrod"></line>
-</g>
-<g transform="translate(6800,-3500)">
-<line x2="-300" stroke="goldenrod"></line>
-</g>
-<g transform="translate(350,-2850)">
-<line y2="-50" stroke="goldenrod"></line>
-</g>
-<g transform="translate(1850,-2900)">
-<line x2="-1500" stroke="goldenrod"></line>
-<text stroke="none" x="-760" y="-10" fill="orange" font-size="38.000017">
-<title>SIG_NAME</title>HOST_MCU_SPI_CLK</text>
-<text stroke="none" x="90" fill="black" font-size="30.000006000000003">
-<title>$XR1</title>3&nbsp;</text>
-<text stroke="none" x="30" fill="black" font-size="30.000006000000003">
-<title>$XR0</title>2&nbsp;</text>
-</g>
-<g transform="translate(5500,-4150)">
-<line x2="-1250" stroke="goldenrod"></line>
-<text stroke="none" x="-1210" y="-10" fill="orange" font-size="38.000017">
-<title>SIG_NAME</title>HOST_MCU_SPI_CLK</text>
-<text stroke="none" x="-1374" fill="black" font-size="30.000006000000003">
-<title>$XR1</title>3&nbsp;</text>
-<text stroke="none" x="-1314" fill="black" font-size="30.000006000000003">
-<title>$XR0</title>2&nbsp;</text>
-</g>
-<g transform="translate(850,-3050)">
-<line y2="-50" stroke="goldenrod"></line>
-</g>
-<g transform="translate(1850,-3050)">
-<line x2="-1000" stroke="goldenrod"></line>
-<text stroke="none" x="-760" y="-10" fill="orange" font-size="38.000017">
-<title>SIG_NAME</title>HOST_MCU_SPI_CS_ODL</text>
-<text stroke="none" x="90" fill="black" font-size="30.000006000000003">
-<title>$XR1</title>4&nbsp;</text>
-<text stroke="none" x="30" fill="black" font-size="30.000006000000003">
-<title>$XR0</title>2&nbsp;</text>
-</g>
-<g transform="translate(4250,-4200)">
-<line x2="1250" stroke="goldenrod"></line>
-<text stroke="none" x="40" y="-10" fill="orange" font-size="38.000017">
-<title>SIG_NAME</title>HOST_MCU_SPI_CS_ODL</text>
-<text stroke="none" x="-124" fill="black" font-size="30.000006000000003">
-<title>$XR1</title>4&nbsp;</text>
-<text stroke="none" x="-64" fill="black" font-size="30.000006000000003">
-<title>$XR0</title>2&nbsp;</text>
-</g>
-<g transform="translate(600,-3100)">
-<line y2="100" stroke="goldenrod"></line>
-</g>
-<g transform="translate(1850,-3000)">
-<line x2="-1250" stroke="goldenrod"></line>
-<text stroke="none" x="-760" y="-10" fill="orange" font-size="38.000017">
-<title>SIG_NAME</title>HOST_MCU_SPI_MISO</text>
-<text stroke="none" x="90" fill="black" font-size="30.000006000000003">
-<title>$XR1</title>3&nbsp;</text>
-<text stroke="none" x="30" fill="black" font-size="30.000006000000003">
-<title>$XR0</title>2&nbsp;</text>
-</g>
-<g transform="translate(5500,-4100)">
-<line x2="-1250" stroke="goldenrod"></line>
-<text stroke="none" x="-1210" y="-10" fill="orange" font-size="38.000017">
-<title>SIG_NAME</title>HOST_MCU_SPI_MISO</text>
-<text stroke="none" x="-1374" fill="black" font-size="30.000006000000003">
-<title>$XR1</title>3&nbsp;</text>
-<text stroke="none" x="-1314" fill="black" font-size="30.000006000000003">
-<title>$XR0</title>2&nbsp;</text>
-</g>
-<g transform="translate(350,-3100)">
-<line y2="150" stroke="goldenrod"></line>
-</g>
-<g transform="translate(1850,-2950)">
-<line x2="-1500" stroke="goldenrod"></line>
-<text stroke="none" x="-760" y="-10" fill="orange" font-size="38.000017">
-<title>SIG_NAME</title>HOST_MCU_SPI_MOSI</text>
-<text stroke="none" x="90" fill="black" font-size="30.000006000000003">
-<title>$XR1</title>3&nbsp;</text>
-<text stroke="none" x="30" fill="black" font-size="30.000006000000003">
-<title>$XR0</title>2&nbsp;</text>
-</g>
-<g transform="translate(5500,-4050)">
-<line x2="-1250" stroke="goldenrod"></line>
-<text stroke="none" x="-1210" y="-10" fill="orange" font-size="38.000017">
-<title>SIG_NAME</title>HOST_MCU_SPI_MOSI</text>
-<text stroke="none" x="-1374" fill="black" font-size="30.000006000000003">
-<title>$XR1</title>3&nbsp;</text>
-<text stroke="none" x="-1314" fill="black" font-size="30.000006000000003">
-<title>$XR0</title>2&nbsp;</text>
-</g>
-<g transform="translate(7950,-4050)">
-<line x2="-1450" stroke="goldenrod"></line>
-<text stroke="none" x="-810" y="-10" fill="orange" font-size="38.000017">
-<title>SIG_NAME</title>HOST_MCU_WP_OD</text>
-<text stroke="none" x="30" fill="black" font-size="30.000006000000003">
-<title>$XR0</title>3&nbsp;</text>
-</g>
-<g transform="translate(350,-1050)">
-<line y2="-100" stroke="goldenrod"></line>
-</g>
-<g transform="translate(1650,-1150)">
-<line x2="-1300" stroke="goldenrod"></line>
-<text stroke="none" x="-410" y="-10" fill="orange" font-size="38.000017">
-<title>SIG_NAME</title>MCU_BOOT0</text>
-<text stroke="none" x="90" fill="black" font-size="30.000006000000003">
-<title>$XR1</title>3&nbsp;</text>
-<text stroke="none" x="30" fill="black" font-size="30.000006000000003">
-<title>$XR0</title>2&nbsp;</text>
-</g>
-<g transform="translate(5500,-3400)">
-<line x2="-1250" stroke="goldenrod"></line>
-<text stroke="none" x="-1210" y="-10" fill="orange" font-size="38.000017">
-<title>SIG_NAME</title>MCU_BOOT0</text>
-<text stroke="none" x="-1374" fill="black" font-size="30.000006000000003">
-<title>$XR1</title>3&nbsp;</text>
-<text stroke="none" x="-1314" fill="black" font-size="30.000006000000003">
-<title>$XR0</title>2&nbsp;</text>
-</g>
-<g transform="translate(550,-1050)">
-<line y2="-50" stroke="goldenrod"></line>
-</g>
-<g transform="translate(1650,-1100)">
-<line x2="-1100" stroke="goldenrod"></line>
-<text stroke="none" x="-410" y="-10" fill="orange" font-size="38.000017">
-<title>SIG_NAME</title>MCU_BOOT1</text>
-<text stroke="none" x="90" fill="black" font-size="30.000006000000003">
-<title>$XR1</title>3&nbsp;</text>
-<text stroke="none" x="30" fill="black" font-size="30.000006000000003">
-<title>$XR0</title>2&nbsp;</text>
-</g>
-<g transform="translate(7950,-4300)">
-<line x2="-1450" stroke="goldenrod"></line>
-<text stroke="none" x="-810" y="-10" fill="orange" font-size="38.000017">
-<title>SIG_NAME</title>MCU_BOOT1</text>
-<text stroke="none" x="90" fill="black" font-size="30.000006000000003">
-<title>$XR1</title>3&nbsp;</text>
-<text stroke="none" x="30" fill="black" font-size="30.000006000000003">
-<title>$XR0</title>2&nbsp;</text>
-</g>
-<g transform="translate(750,-1500)">
-<line x2="1050" stroke="goldenrod"></line>
-<text stroke="none" x="340" y="-10" fill="orange" font-size="38.000017">
-<title>SIG_NAME</title>MCU_FP_RST_L</text>
-<text stroke="none" x="1140" fill="black" font-size="30.000006000000003">
-<title>$XR1</title>5&nbsp;</text>
-<text stroke="none" x="1080" fill="black" font-size="30.000006000000003">
-<title>$XR0</title>2&nbsp;</text>
-</g>
-<g transform="translate(750,-1600)">
-<line y2="100" stroke="goldenrod"></line>
-</g>
-<g transform="translate(6700,-900)">
-<line x2="1150" stroke="goldenrod"></line>
-<text stroke="none" x="350" y="-10" fill="orange" font-size="38.000017">
-<title>SIG_NAME</title>MCU_FP_RST_L</text>
-<text stroke="none" x="1240" fill="black" font-size="30.000006000000003">
-<title>$XR1</title>5&nbsp;</text>
-<text stroke="none" x="1180" fill="black" font-size="30.000006000000003">
-<title>$XR0</title>2&nbsp;</text>
-</g>
-<g transform="translate(7950,-3850)">
-<line x2="-1450" stroke="goldenrod"></line>
-<text stroke="none" x="-810" y="-10" fill="orange" font-size="38.000017">
-<title>SIG_NAME</title>MCU_FP_RST_L</text>
-<text stroke="none" x="90" fill="black" font-size="30.000006000000003">
-<title>$XR1</title>5&nbsp;</text>
-<text stroke="none" x="30" fill="black" font-size="30.000006000000003">
-<title>$XR0</title>2&nbsp;</text>
-</g>
-<g transform="translate(350,-2100)">
-<line y2="-50" stroke="goldenrod"></line>
-</g>
-<g transform="translate(350,-2150)">
-<line x2="1500" stroke="goldenrod"></line>
-<text stroke="none" x="740" y="-10" fill="orange" font-size="38.000017">
-<title>SIG_NAME</title>MCU_FP_SPI_CLK</text>
-<text stroke="none" x="1590" fill="black" font-size="30.000006000000003">
-<title>$XR1</title>5&nbsp;</text>
-<text stroke="none" x="1530" fill="black" font-size="30.000006000000003">
-<title>$XR0</title>2&nbsp;</text>
-</g>
-<g transform="translate(6700,-800)">
-<line x2="1150" stroke="goldenrod"></line>
-<text stroke="none" x="350" y="-10" fill="orange" font-size="38.000017">
-<title>SIG_NAME</title>MCU_FP_SPI_CLK</text>
-<text stroke="none" x="1240" fill="black" font-size="30.000006000000003">
-<title>$XR1</title>5&nbsp;</text>
-<text stroke="none" x="1180" fill="black" font-size="30.000006000000003">
-<title>$XR0</title>2&nbsp;</text>
-</g>
-<g transform="translate(7950,-3750)">
-<line x2="-1450" stroke="goldenrod"></line>
-<text stroke="none" x="-810" y="-10" fill="orange" font-size="38.000017">
-<title>SIG_NAME</title>MCU_FP_SPI_CLK</text>
-<text stroke="none" x="90" fill="black" font-size="30.000006000000003">
-<title>$XR1</title>5&nbsp;</text>
-<text stroke="none" x="30" fill="black" font-size="30.000006000000003">
-<title>$XR0</title>2&nbsp;</text>
-</g>
-<g transform="translate(750,-2300)">
-<line y2="-50" stroke="goldenrod"></line>
-</g>
-<g transform="translate(750,-2300)">
-<line x2="1100" stroke="goldenrod"></line>
-<text stroke="none" x="340" y="-10" fill="orange" font-size="38.000017">
-<title>SIG_NAME</title>MCU_FP_SPI_CS_L</text>
-<text stroke="none" x="1190" fill="black" font-size="30.000006000000003">
-<title>$XR1</title>5&nbsp;</text>
-<text stroke="none" x="1130" fill="black" font-size="30.000006000000003">
-<title>$XR0</title>2&nbsp;</text>
-</g>
-<g transform="translate(6700,-850)">
-<line x2="1150" stroke="goldenrod"></line>
-<text stroke="none" x="350" y="-10" fill="orange" font-size="38.000017">
-<title>SIG_NAME</title>MCU_FP_SPI_CS_L</text>
-<text stroke="none" x="1240" fill="black" font-size="30.000006000000003">
-<title>$XR1</title>5&nbsp;</text>
-<text stroke="none" x="1180" fill="black" font-size="30.000006000000003">
-<title>$XR0</title>2&nbsp;</text>
-</g>
-<g transform="translate(7950,-3800)">
-<line x2="-1450" stroke="goldenrod"></line>
-<text stroke="none" x="-810" y="-10" fill="orange" font-size="38.000017">
-<title>SIG_NAME</title>MCU_FP_SPI_CS_L</text>
-<text stroke="none" x="90" fill="black" font-size="30.000006000000003">
-<title>$XR1</title>5&nbsp;</text>
-<text stroke="none" x="30" fill="black" font-size="30.000006000000003">
-<title>$XR0</title>2&nbsp;</text>
-</g>
-<g transform="translate(550,-2250)">
-<line y2="-100" stroke="goldenrod"></line>
-</g>
-<g transform="translate(550,-2250)">
-<line x2="1300" stroke="goldenrod"></line>
-<text stroke="none" x="540" y="-10" fill="orange" font-size="38.000017">
-<title>SIG_NAME</title>MCU_FP_SPI_MISO</text>
-<text stroke="none" x="1390" fill="black" font-size="30.000006000000003">
-<title>$XR1</title>5&nbsp;</text>
-<text stroke="none" x="1330" fill="black" font-size="30.000006000000003">
-<title>$XR0</title>2&nbsp;</text>
-</g>
-<g transform="translate(6700,-750)">
-<line x2="1150" stroke="goldenrod"></line>
-<text stroke="none" x="350" y="-10" fill="orange" font-size="38.000017">
-<title>SIG_NAME</title>MCU_FP_SPI_MISO</text>
-<text stroke="none" x="1240" fill="black" font-size="30.000006000000003">
-<title>$XR1</title>5&nbsp;</text>
-<text stroke="none" x="1180" fill="black" font-size="30.000006000000003">
-<title>$XR0</title>2&nbsp;</text>
-</g>
-<g transform="translate(7950,-3700)">
-<line x2="-1450" stroke="goldenrod"></line>
-<text stroke="none" x="-810" y="-10" fill="orange" font-size="38.000017">
-<title>SIG_NAME</title>MCU_FP_SPI_MISO</text>
-<text stroke="none" x="90" fill="black" font-size="30.000006000000003">
-<title>$XR1</title>5&nbsp;</text>
-<text stroke="none" x="30" fill="black" font-size="30.000006000000003">
-<title>$XR0</title>2&nbsp;</text>
-</g>
-<g transform="translate(350,-2200)">
-<line y2="-150" stroke="goldenrod"></line>
-</g>
-<g transform="translate(350,-2200)">
-<line x2="1500" stroke="goldenrod"></line>
-<text stroke="none" x="740" y="-10" fill="orange" font-size="38.000017">
-<title>SIG_NAME</title>MCU_FP_SPI_MOSI</text>
-<text stroke="none" x="1590" fill="black" font-size="30.000006000000003">
-<title>$XR1</title>5&nbsp;</text>
-<text stroke="none" x="1530" fill="black" font-size="30.000006000000003">
-<title>$XR0</title>2&nbsp;</text>
-</g>
-<g transform="translate(6700,-700)">
-<line x2="1150" stroke="goldenrod"></line>
-<text stroke="none" x="350" y="-10" fill="orange" font-size="38.000017">
-<title>SIG_NAME</title>MCU_FP_SPI_MOSI</text>
-<text stroke="none" x="1240" fill="black" font-size="30.000006000000003">
-<title>$XR1</title>5&nbsp;</text>
-<text stroke="none" x="1180" fill="black" font-size="30.000006000000003">
-<title>$XR0</title>2&nbsp;</text>
-</g>
-<g transform="translate(7950,-3650)">
-<line x2="-1450" stroke="goldenrod"></line>
-<text stroke="none" x="-810" y="-10" fill="orange" font-size="38.000017">
-<title>SIG_NAME</title>MCU_FP_SPI_MOSI</text>
-<text stroke="none" x="90" fill="black" font-size="30.000006000000003">
-<title>$XR1</title>5&nbsp;</text>
-<text stroke="none" x="30" fill="black" font-size="30.000006000000003">
-<title>$XR0</title>2&nbsp;</text>
-</g>
-<g transform="translate(550,-1400)">
-<line y2="-200" stroke="goldenrod"></line>
-</g>
-<g transform="translate(550,-1400)">
-<line x2="1250" stroke="goldenrod"></line>
-<text stroke="none" x="540" y="-10" fill="orange" font-size="38.000017">
-<title>SIG_NAME</title>MCU_PLATFORM_INT_L</text>
-<text stroke="none" x="1340" fill="black" font-size="30.000006000000003">
-<title>$XR1</title>4&nbsp;</text>
-<text stroke="none" x="1280" fill="black" font-size="30.000006000000003">
-<title>$XR0</title>2&nbsp;</text>
-</g>
-<g transform="translate(3350,-2000)">
-<line x2="800" stroke="goldenrod"></line>
-<text stroke="none" x="40" y="-10" fill="orange" font-size="30.000006000000003">
-<title>SIG_NAME</title>MCU_PLATFORM_INT_L</text>
-<text stroke="none" x="-94" fill="black" font-size="30.000006000000003">
-<title>$XR1</title>4&nbsp;</text>
-<text stroke="none" x="-34" fill="black" font-size="30.000006000000003">
-<title>$XR0</title>2&nbsp;</text>
-</g>
-<g transform="translate(6700,-500)">
-<line x2="1150" stroke="goldenrod"></line>
-<text stroke="none" x="350" y="-10" fill="orange" font-size="38.000017">
-<title>SIG_NAME</title>MCU_PLATFORM_INT_L</text>
-<text stroke="none" x="1240" fill="black" font-size="30.000006000000003">
-<title>$XR1</title>4&nbsp;</text>
-<text stroke="none" x="1180" fill="black" font-size="30.000006000000003">
-<title>$XR0</title>2&nbsp;</text>
-</g>
-<g transform="translate(5500,-4350)">
-<line x2="-1250" stroke="goldenrod"></line>
-<text stroke="none" x="-1210" y="-10" fill="orange" font-size="38.000017">
-<title>SIG_NAME</title>MCU_PLATFORM_INT_L</text>
-<text stroke="none" x="-1374" fill="black" font-size="30.000006000000003">
-<title>$XR1</title>4&nbsp;</text>
-<text stroke="none" x="-1314" fill="black" font-size="30.000006000000003">
-<title>$XR0</title>2&nbsp;</text>
-</g>
-<g transform="translate(950,-1550)">
-<line y2="-50" stroke="goldenrod"></line>
-</g>
-<g transform="translate(950,-1550)">
-<line x2="850" stroke="goldenrod"></line>
-<text stroke="none" x="140" y="-10" fill="orange" font-size="38.000017">
-<title>SIG_NAME</title>MCU_RST_ODL</text>
-<text stroke="none" x="940" fill="black" font-size="30.000006000000003">
-<title>$XR1</title>4&nbsp;</text>
-<text stroke="none" x="880" fill="black" font-size="30.000006000000003">
-<title>$XR0</title>2&nbsp;</text>
-</g>
-<g transform="translate(3900,-3300)">
-<line y2="-200" stroke="goldenrod"></line>
-</g>
-<g transform="translate(3900,-3500)">
-<line x2="-50" stroke="goldenrod"></line>
-</g>
-<g transform="translate(5500,-3500)">
-<line x2="-1600" stroke="goldenrod"></line>
-<text stroke="none" x="-1210" y="-10" fill="orange" font-size="38.000017">
-<title>SIG_NAME</title>MCU_RST_ODL</text>
-<text stroke="none" x="-1774" fill="black" font-size="30.000006000000003">
-<title>$XR1</title>4&nbsp;</text>
-<text stroke="none" x="-1714" fill="black" font-size="30.000006000000003">
-<title>$XR0</title>2&nbsp;</text>
-</g>
-<g transform="translate(7950,-3950)">
-<line x2="-1450" stroke="goldenrod"></line>
-<text stroke="none" x="-810" y="-10" fill="orange" font-size="38.000017">
-<title>SIG_NAME</title>MCU_USER_PRES_FP_L</text>
-<text stroke="none" x="30" fill="black" font-size="30.000006000000003">
-<title>$XR0</title>4&nbsp;</text>
-</g>
-<g transform="translate(350,-550)">
-<line y2="-200" stroke="goldenrod"></line>
-</g>
-<g transform="translate(1650,-750)">
-<line x2="-1300" stroke="goldenrod"></line>
-<text stroke="none" x="-410" y="-10" fill="orange" font-size="38.000017">
-<title>SIG_NAME</title>PA11_STRAP</text>
-<text stroke="none" x="30" fill="black" font-size="30.000006000000003">
-<title>$XR0</title>2&nbsp;</text>
-</g>
-<g transform="translate(5500,-3850)">
-<line x2="-1250" stroke="goldenrod"></line>
-<text stroke="none" x="-1210" y="-10" fill="orange" font-size="38.000017">
-<title>SIG_NAME</title>PA11_STRAP</text>
-<text stroke="none" x="-1314" fill="black" font-size="30.000006000000003">
-<title>$XR0</title>2&nbsp;</text>
-</g>
-<g transform="translate(500,-550)">
-<line y2="-150" stroke="goldenrod"></line>
-</g>
-<g transform="translate(1650,-700)">
-<line x2="-1150" stroke="goldenrod"></line>
-<text stroke="none" x="-410" y="-10" fill="orange" font-size="38.000017">
-<title>SIG_NAME</title>PA12_STRAP</text>
-<text stroke="none" x="30" fill="black" font-size="30.000006000000003">
-<title>$XR0</title>2&nbsp;</text>
-</g>
-<g transform="translate(5500,-3800)">
-<line x2="-1250" stroke="goldenrod"></line>
-<text stroke="none" x="-1210" y="-10" fill="orange" font-size="38.000017">
-<title>SIG_NAME</title>PA12_STRAP</text>
-<text stroke="none" x="-1314" fill="black" font-size="30.000006000000003">
-<title>$XR0</title>2&nbsp;</text>
-</g>
-<g transform="translate(650,-550)">
-<line y2="-100" stroke="goldenrod"></line>
-</g>
-<g transform="translate(1650,-650)">
-<line x2="-1000" stroke="goldenrod"></line>
-<text stroke="none" x="-410" y="-10" fill="orange" font-size="38.000017">
-<title>SIG_NAME</title>PB5_STRAP</text>
-<text stroke="none" x="30" fill="black" font-size="30.000006000000003">
-<title>$XR0</title>2&nbsp;</text>
-</g>
-<g transform="translate(7950,-4150)">
-<line x2="-1450" stroke="goldenrod"></line>
-<text stroke="none" x="-810" y="-10" fill="orange" font-size="38.000017">
-<title>SIG_NAME</title>PB5_STRAP</text>
-<text stroke="none" x="30" fill="black" font-size="30.000006000000003">
-<title>$XR0</title>2&nbsp;</text>
-</g>
-<g transform="translate(5100,-800)">
-<line x2="650" stroke="goldenrod"></line>
-<text stroke="none" x="290" y="-10" fill="orange" font-size="30.000006000000003">
-<title>SIG_NAME</title>PP1800</text>
-<text stroke="none" x="800" fill="black" font-size="30.000006000000003">
-<title>$XR2</title>5&nbsp;</text>
-<text stroke="none" x="740" fill="black" font-size="30.000006000000003">
-<title>$XR1</title>3&nbsp;</text>
-<text stroke="none" x="680" fill="black" font-size="30.000006000000003">
-<title>$XR0</title>2&nbsp;</text>
-</g>
-<g transform="translate(6700,-1450)">
-<line x2="650" stroke="goldenrod"></line>
-<text stroke="none" x="340" y="-10" fill="orange" font-size="38.000017">
-<title>SIG_NAME</title>PP1800</text>
-<text stroke="none" x="800" fill="black" font-size="30.000006000000003">
-<title>$XR2</title>5&nbsp;</text>
-<text stroke="none" x="740" fill="black" font-size="30.000006000000003">
-<title>$XR1</title>3&nbsp;</text>
-<text stroke="none" x="680" fill="black" font-size="30.000006000000003">
-<title>$XR0</title>2&nbsp;</text>
-</g>
-<g transform="translate(5100,-750)">
-<line x2="650" stroke="goldenrod"></line>
-<text stroke="none" x="290" y="-10" fill="orange" font-size="30.000006000000003">
-<title>SIG_NAME</title>PP1800_FP</text>
-<text stroke="none" x="680" fill="black" font-size="30.000006000000003">
-<title>$XR0</title>5&nbsp;</text>
-</g>
-<g transform="translate(350,-1750)">
-<line y2="-50" stroke="goldenrod"></line>
-</g>
-<g transform="translate(350,-1800)">
-<line x2="200" stroke="goldenrod" stroke-width="6"></line>
-</g>
-<g transform="translate(550,-1750)">
-<line y2="-50" stroke="goldenrod" stroke-width="6"></line>
-</g>
-<g transform="translate(550,-1800)">
-<line x2="200" stroke="goldenrod" stroke-width="6"></line>
-</g>
-<g transform="translate(750,-1750)">
-<line y2="-50" stroke="goldenrod"></line>
-</g>
-<g transform="translate(950,-1750)">
-<line y2="-50" stroke="goldenrod" stroke-width="6"></line>
-</g>
-<g transform="translate(950,-1800)">
-<line x2="-200" stroke="goldenrod" stroke-width="6"></line>
-</g>
-<g transform="translate(350,-2500)">
-<line y2="-50" stroke="goldenrod"></line>
-</g>
-<g transform="translate(350,-2550)">
-<line x2="200" stroke="goldenrod"></line>
-</g>
-<g transform="translate(550,-2500)">
-<line y2="-50" stroke="goldenrod"></line>
-</g>
-<g transform="translate(550,-2550)">
-<line x2="200" stroke="goldenrod"></line>
-</g>
-<g transform="translate(750,-2500)">
-<line y2="-50" stroke="goldenrod"></line>
-</g>
-<g transform="translate(750,-2550)">
-<line x2="1100" stroke="goldenrod"></line>
-<text stroke="none" x="710" y="-10" fill="orange" font-size="60.000012000000005">
-<title>SIG_NAME</title>PP3300</text>
-<text stroke="none" x="1310" fill="black" font-size="30.000006000000003">
-<title>$XR3</title>5&nbsp;</text>
-<text stroke="none" x="1250" fill="black" font-size="30.000006000000003">
-<title>$XR2</title>4&nbsp;</text>
-<text stroke="none" x="1190" fill="black" font-size="30.000006000000003">
-<title>$XR1</title>3&nbsp;</text>
-<text stroke="none" x="1130" fill="black" font-size="30.000006000000003">
-<title>$XR0</title>2&nbsp;</text>
-</g>
-<g transform="translate(1800,-1800)">
-<line x2="-850" stroke="goldenrod" stroke-width="6"></line>
-<text stroke="none" x="-410" y="-10" fill="orange" font-size="60.000012000000005">
-<title>SIG_NAME</title>PP3300</text>
-<text stroke="none" x="210" fill="black" font-size="30.000006000000003">
-<title>$XR3</title>5&nbsp;</text>
-<text stroke="none" x="150" fill="black" font-size="30.000006000000003">
-<title>$XR2</title>4&nbsp;</text>
-<text stroke="none" x="90" fill="black" font-size="30.000006000000003">
-<title>$XR1</title>3&nbsp;</text>
-<text stroke="none" x="30" fill="black" font-size="30.000006000000003">
-<title>$XR0</title>2&nbsp;</text>
-</g>
-<g transform="translate(3400,-1300)">
-<line x2="300" stroke="goldenrod" stroke-width="6"></line>
-<text stroke="none" x="40" y="-10" fill="orange" font-size="38.000017">
-<title>SIG_NAME</title>PP3300</text>
-<text stroke="none" x="-214" fill="black" font-size="30.000006000000003">
-<title>$XR3</title>5&nbsp;</text>
-<text stroke="none" x="-154" fill="black" font-size="30.000006000000003">
-<title>$XR2</title>4&nbsp;</text>
-<text stroke="none" x="-94" fill="black" font-size="30.000006000000003">
-<title>$XR1</title>3&nbsp;</text>
-<text stroke="none" x="-34" fill="black" font-size="30.000006000000003">
-<title>$XR0</title>2&nbsp;</text>
-</g>
-<g transform="translate(3700,-1250)">
-<line y2="-50" stroke="goldenrod"></line>
-</g>
-<g transform="translate(3700,-1300)">
-<line x2="700" stroke="goldenrod" stroke-width="6"></line>
-</g>
-<g transform="translate(4400,-1250)">
-<line y2="-50" stroke="goldenrod"></line>
-</g>
-<g transform="translate(4400,-1300)">
-<line x2="300" stroke="goldenrod" stroke-width="6"></line>
-</g>
-<g transform="translate(4700,-1250)">
-<line x2="-300" stroke="goldenrod"></line>
-</g>
-<g transform="translate(5100,-1050)">
-<line x2="650" stroke="goldenrod"></line>
-<text stroke="none" x="290" y="-10" fill="orange" font-size="30.000006000000003">
-<title>SIG_NAME</title>PP3300</text>
-<text stroke="none" x="860" fill="black" font-size="30.000006000000003">
-<title>$XR3</title>5&nbsp;</text>
-<text stroke="none" x="800" fill="black" font-size="30.000006000000003">
-<title>$XR2</title>4&nbsp;</text>
-<text stroke="none" x="740" fill="black" font-size="30.000006000000003">
-<title>$XR1</title>3&nbsp;</text>
-<text stroke="none" x="680" fill="black" font-size="30.000006000000003">
-<title>$XR0</title>2&nbsp;</text>
-</g>
-<g transform="translate(5100,-1300)">
-<line x2="650" stroke="goldenrod"></line>
-<text stroke="none" x="290" y="-10" fill="orange" font-size="30.000006000000003">
-<title>SIG_NAME</title>PP3300</text>
-<text stroke="none" x="860" fill="black" font-size="30.000006000000003">
-<title>$XR3</title>5&nbsp;</text>
-<text stroke="none" x="800" fill="black" font-size="30.000006000000003">
-<title>$XR2</title>4&nbsp;</text>
-<text stroke="none" x="740" fill="black" font-size="30.000006000000003">
-<title>$XR1</title>3&nbsp;</text>
-<text stroke="none" x="680" fill="black" font-size="30.000006000000003">
-<title>$XR0</title>2&nbsp;</text>
-</g>
-<g transform="translate(4250,-2300)">
-<line x2="550" stroke="goldenrod" stroke-width="6"></line>
-<text stroke="none" x="40" y="-10" fill="orange" font-size="48.000019">
-<title>SIG_NAME</title>PP3300</text>
-<text stroke="none" x="-244" fill="black" font-size="30.000006000000003">
-<title>$XR3</title>5&nbsp;</text>
-<text stroke="none" x="-184" fill="black" font-size="30.000006000000003">
-<title>$XR2</title>4&nbsp;</text>
-<text stroke="none" x="-124" fill="black" font-size="30.000006000000003">
-<title>$XR1</title>3&nbsp;</text>
-<text stroke="none" x="-64" fill="black" font-size="30.000006000000003">
-<title>$XR0</title>2&nbsp;</text>
-</g>
-<g transform="translate(4800,-2100)">
-<line y2="-200" stroke="goldenrod"></line>
-</g>
-<g transform="translate(4800,-2300)">
-<line x2="200" stroke="goldenrod" stroke-width="6"></line>
-</g>
-<g transform="translate(6700,-1500)">
-<line x2="650" stroke="goldenrod"></line>
-<text stroke="none" x="340" y="-10" fill="orange" font-size="38.000017">
-<title>SIG_NAME</title>PP3300</text>
-<text stroke="none" x="860" fill="black" font-size="30.000006000000003">
-<title>$XR3</title>5&nbsp;</text>
-<text stroke="none" x="800" fill="black" font-size="30.000006000000003">
-<title>$XR2</title>4&nbsp;</text>
-<text stroke="none" x="740" fill="black" font-size="30.000006000000003">
-<title>$XR1</title>3&nbsp;</text>
-<text stroke="none" x="680" fill="black" font-size="30.000006000000003">
-<title>$XR0</title>2&nbsp;</text>
-</g>
-<g transform="translate(3300,-5100)">
-<line x2="-350" stroke="goldenrod" stroke-width="6"></line>
-<text stroke="none" x="-310" y="-10" fill="orange" font-size="38.000017">
-<title>SIG_NAME</title>PP3300</text>
-<text stroke="none" x="-564" fill="black" font-size="30.000006000000003">
-<title>$XR3</title>5&nbsp;</text>
-<text stroke="none" x="-504" fill="black" font-size="30.000006000000003">
-<title>$XR2</title>4&nbsp;</text>
-<text stroke="none" x="-444" fill="black" font-size="30.000006000000003">
-<title>$XR1</title>3&nbsp;</text>
-<text stroke="none" x="-384" fill="black" font-size="30.000006000000003">
-<title>$XR0</title>2&nbsp;</text>
-</g>
-<g transform="translate(5100,-1000)">
-<line x2="650" stroke="goldenrod"></line>
-<text stroke="none" x="290" y="-10" fill="orange" font-size="30.000006000000003">
-<title>SIG_NAME</title>PP3300_FP</text>
-<text stroke="none" x="680" fill="black" font-size="30.000006000000003">
-<title>$XR0</title>5&nbsp;</text>
-</g>
-<g transform="translate(350,-3250)">
-<line y2="-50" stroke="goldenrod"></line>
-</g>
-<g transform="translate(350,-3300)">
-<line x2="250" stroke="goldenrod" stroke-width="6"></line>
-</g>
-<g transform="translate(600,-3250)">
-<line y2="-50" stroke="goldenrod"></line>
-</g>
-<g transform="translate(850,-3250)">
-<line y2="-50" stroke="goldenrod"></line>
-</g>
-<g transform="translate(850,-3300)">
-<line x2="-250" stroke="goldenrod" stroke-width="6"></line>
-</g>
-<g transform="translate(350,-3900)">
-<line y2="-50" stroke="goldenrod" stroke-width="6"></line>
-</g>
-<g transform="translate(550,-3900)">
-<line y2="-50" stroke="goldenrod" stroke-width="6"></line>
-</g>
-<g transform="translate(550,-3950)">
-<line x2="-200" stroke="goldenrod" stroke-width="6"></line>
-</g>
-<g transform="translate(750,-3900)">
-<line y2="-50" stroke="goldenrod"></line>
-</g>
-<g transform="translate(750,-3950)">
-<line x2="-200" stroke="goldenrod" stroke-width="6"></line>
-</g>
-<g transform="translate(950,-3900)">
-<line y2="-50" stroke="goldenrod"></line>
-</g>
-<g transform="translate(950,-3950)">
-<line x2="-200" stroke="goldenrod" stroke-width="6"></line>
-</g>
-<g transform="translate(1850,-3300)">
-<line x2="-1000" stroke="goldenrod" stroke-width="6"></line>
-<text stroke="none" x="-610" y="-10" fill="orange" font-size="60.000012000000005">
-<title>SIG_NAME</title>PP3300_MCU</text>
-<text stroke="none" x="30" fill="black" font-size="30.000006000000003">
-<title>$XR0</title>2&nbsp;</text>
-</g>
-<g transform="translate(1850,-3950)">
-<line x2="-900" stroke="goldenrod" stroke-width="6"></line>
-<text stroke="none" x="-610" y="-10" fill="orange" font-size="60.000012000000005">
-<title>SIG_NAME</title>PP3300_MCU</text>
-<text stroke="none" x="30" fill="black" font-size="30.000006000000003">
-<title>$XR0</title>2&nbsp;</text>
-</g>
-<g transform="translate(5100,-1250)">
-<line x2="650" stroke="goldenrod"></line>
-<text stroke="none" x="290" y="-10" fill="orange" font-size="30.000006000000003">
-<title>SIG_NAME</title>PP3300_MCU</text>
-<text stroke="none" x="680" fill="black" font-size="30.000006000000003">
-<title>$XR0</title>2&nbsp;</text>
-</g>
-<g transform="translate(3000,-4500)">
-<line y2="-200" stroke="goldenrod"></line>
-</g>
-<g transform="translate(3000,-4700)">
-<line x2="200" stroke="goldenrod"></line>
-</g>
-<g transform="translate(3200,-4500)">
-<line y2="-200" stroke="goldenrod"></line>
-</g>
-<g transform="translate(4250,-4950)">
-<line y2="-150" stroke="goldenrod"></line>
-</g>
-<g transform="translate(4250,-5100)">
-<line x2="-800" stroke="goldenrod" stroke-width="6"></line>
-<text stroke="none" x="-610" y="-10" fill="orange" font-size="38.000017">
-<title>SIG_NAME</title>PP3300_MCU</text>
-<text stroke="none" x="-644" y="-10" fill="black" font-size="30.000006000000003">
-<title>$XR0</title>2&nbsp;</text>
-</g>
-<g transform="translate(4500,-4950)">
-<line y2="-150" stroke="goldenrod"></line>
-</g>
-<g transform="translate(4500,-5100)">
-<line x2="-250" stroke="goldenrod" stroke-width="6"></line>
-</g>
-<g transform="translate(4750,-4950)">
-<line y2="-150" stroke="goldenrod"></line>
-</g>
-<g transform="translate(5300,-4500)">
-<line y2="-200" stroke="goldenrod"></line>
-</g>
-<g transform="translate(4750,-5100)">
-<line x2="-250" stroke="goldenrod" stroke-width="6"></line>
-</g>
-<g transform="translate(5000,-4950)">
-<line y2="-150" stroke="goldenrod"></line>
-</g>
-<g transform="translate(5300,-4700)">
-<line x2="-2100" stroke="goldenrod"></line>
-</g>
-<g transform="translate(5300,-4700)">
-<line y2="-50" stroke="goldenrod" stroke-width="6"></line>
-</g>
-<g transform="translate(5500,-4500)">
-<line x2="-200" stroke="goldenrod"></line>
-</g>
-<g transform="translate(5300,-4750)">
-<line y2="-50" stroke="goldenrod" stroke-width="6"></line>
-</g>
-<g transform="translate(5000,-5100)">
-<line x2="-250" stroke="goldenrod" stroke-width="6"></line>
-</g>
-<g transform="translate(5300,-4800)">
-<line y2="-50" stroke="goldenrod" stroke-width="6"></line>
-</g>
-<g transform="translate(5300,-4850)">
-<line x2="200" stroke="goldenrod" stroke-width="6"></line>
-</g>
-<g transform="translate(5500,-4700)">
-<line x2="-200" stroke="goldenrod" stroke-width="6"></line>
-</g>
-<g transform="translate(5500,-4750)">
-<line x2="-200" stroke="goldenrod" stroke-width="6"></line>
-</g>
-<g transform="translate(5500,-4800)">
-<line x2="-200" stroke="goldenrod" stroke-width="6"></line>
-</g>
-<g transform="translate(5300,-5100)">
-<line y2="250" stroke="goldenrod" stroke-width="6"></line>
-</g>
-<g transform="translate(5300,-5100)">
-<line x2="-300" stroke="goldenrod" stroke-width="6"></line>
-</g>
-<g transform="translate(4700,-1150)">
-<line x2="-700" stroke="goldenrod"></line>
-<text stroke="none" x="-660" y="-10" fill="orange" font-size="30.000006000000003">
-<title>SIG_NAME</title>SERVO_INA_I2C_SCL</text>
-<text stroke="none" x="-734" fill="black" font-size="30.000006000000003">
-<title>$XR0</title>4&nbsp;</text>
-</g>
-<g transform="translate(4700,-1100)">
-<line x2="-700" stroke="goldenrod"></line>
-<text stroke="none" x="-660" y="-10" fill="orange" font-size="30.000006000000003">
-<title>SIG_NAME</title>SERVO_INA_I2C_SDA</text>
-<text stroke="none" x="-734" fill="black" font-size="30.000006000000003">
-<title>$XR0</title>4&nbsp;</text>
-</g>
-<g transform="translate(6700,-1250)">
-<line x2="1150" stroke="goldenrod"></line>
-<text stroke="none" x="350" y="-10" fill="orange" font-size="38.000017">
-<title>SIG_NAME</title>SERVO_MCU_JTCK_SWCLK</text>
-<text stroke="none" x="1180" fill="black" font-size="30.000006000000003">
-<title>$XR0</title>4&nbsp;</text>
-</g>
-<g transform="translate(6700,-1200)">
-<line x2="1150" stroke="goldenrod"></line>
-<text stroke="none" x="350" y="-10" fill="orange" font-size="38.000017">
-<title>SIG_NAME</title>SERVO_MCU_JTDI</text>
-<text stroke="none" x="1180" fill="black" font-size="30.000006000000003">
-<title>$XR0</title>4&nbsp;</text>
-</g>
-<g transform="translate(6700,-1150)">
-<line x2="1150" stroke="goldenrod"></line>
-<text stroke="none" x="350" y="-10" fill="orange" font-size="38.000017">
-<title>SIG_NAME</title>SERVO_MCU_JTDO_SWO</text>
-<text stroke="none" x="1180" fill="black" font-size="30.000006000000003">
-<title>$XR0</title>4&nbsp;</text>
-</g>
-<g transform="translate(6700,-1300)">
-<line x2="1150" stroke="goldenrod"></line>
-<text stroke="none" x="350" y="-10" fill="orange" font-size="38.000017">
-<title>SIG_NAME</title>SERVO_MCU_JTMS_SWDIO</text>
-<text stroke="none" x="1180" fill="black" font-size="30.000006000000003">
-<title>$XR0</title>4&nbsp;</text>
-</g>
-<g transform="translate(4500,-2750)">
-<line x2="-650" stroke="goldenrod"></line>
-<text stroke="none" x="-610" y="-10" fill="orange" font-size="38.000017">
-<title>SIG_NAME</title>SLP_S0_L</text>
-<text stroke="none" x="-714" fill="black" font-size="30.000006000000003">
-<title>$XR0</title>3&nbsp;</text>
-</g>
-<g transform="translate(4650,-2750)">
-<line x2="700" stroke="goldenrod"></line>
-<text stroke="none" x="290" y="-10" fill="orange" font-size="38.000017">
-<title>SIG_NAME</title>SLP_S0_L_R</text>
-<text stroke="none" x="730" fill="black" font-size="30.000006000000003">
-<title>$XR0</title>2&nbsp;</text>
-</g>
-<g transform="translate(5500,-4000)">
-<line x2="-1250" stroke="goldenrod"></line>
-<text stroke="none" x="-1210" y="-10" fill="orange" font-size="38.000017">
-<title>SIG_NAME</title>SLP_S0_L_R</text>
-<text stroke="none" x="-1314" fill="black" font-size="30.000006000000003">
-<title>$XR0</title>2&nbsp;</text>
-</g>
-<g transform="translate(4500,-2600)">
-<line x2="-650" stroke="goldenrod"></line>
-<text stroke="none" x="-610" y="-10" fill="orange" font-size="38.000017">
-<title>SIG_NAME</title>SLP_S3_L</text>
-<text stroke="none" x="-714" fill="black" font-size="30.000006000000003">
-<title>$XR0</title>3&nbsp;</text>
-</g>
-<g transform="translate(4650,-2600)">
-<line x2="700" stroke="goldenrod"></line>
-<text stroke="none" x="290" y="-10" fill="orange" font-size="38.000017">
-<title>SIG_NAME</title>SLP_S3_L_R</text>
-<text stroke="none" x="730" fill="black" font-size="30.000006000000003">
-<title>$XR0</title>2&nbsp;</text>
-</g>
-<g transform="translate(7950,-4100)">
-<line x2="-1450" stroke="goldenrod"></line>
-<text stroke="none" x="-810" y="-10" fill="orange" font-size="38.000017">
-<title>SIG_NAME</title>SLP_S3_L_R</text>
-<text stroke="none" x="30" fill="black" font-size="30.000006000000003">
-<title>$XR0</title>2&nbsp;</text>
-</g>
-<g transform="translate(8050,-2350)">
-<line y2="-50" stroke="goldenrod"></line>
-</g>
-<g transform="translate(8050,-2400)">
-<line x2="-650" stroke="goldenrod"></line>
-<text stroke="none" x="-610" y="-10" fill="orange" font-size="38.000017">
-<title>SIG_NAME</title>TRANSPORT_SEL</text>
-<text stroke="none" x="-684" fill="black" font-size="30.000006000000003">
-<title>$XR0</title>2&nbsp;</text>
-</g>
-<g transform="translate(8050,-2400)">
-<line y2="-50" stroke="goldenrod"></line>
-</g>
-<g transform="translate(7950,-4350)">
-<line x2="-1450" stroke="goldenrod"></line>
-<text stroke="none" x="-810" y="-10" fill="orange" font-size="38.000017">
-<title>SIG_NAME</title>TRANSPORT_SEL</text>
-<text stroke="none" x="30" fill="black" font-size="30.000006000000003">
-<title>$XR0</title>2&nbsp;</text>
-</g>
-<g transform="translate(350,-3750)">
-<line y2="200" stroke="goldenrod"></line>
-</g>
-<g transform="translate(1850,-3550)">
-<line x2="-1500" stroke="goldenrod"></line>
-<text stroke="none" x="-810" y="-10" fill="orange" font-size="38.000017">
-<title>SIG_NAME</title>UART1_HOST_TX_MCU_RX</text>
-<text stroke="none" x="90" fill="black" font-size="30.000006000000003">
-<title>$XR1</title>3&nbsp;</text>
-<text stroke="none" x="30" fill="black" font-size="30.000006000000003">
-<title>$XR0</title>2&nbsp;</text>
-</g>
-<g transform="translate(5500,-3900)">
-<line x2="-1250" stroke="goldenrod"></line>
-<text stroke="none" x="-1210" y="-10" fill="orange" font-size="38.000017">
-<title>SIG_NAME</title>UART1_HOST_TX_MCU_RX</text>
-<text stroke="none" x="-1374" fill="black" font-size="30.000006000000003">
-<title>$XR1</title>3&nbsp;</text>
-<text stroke="none" x="-1314" fill="black" font-size="30.000006000000003">
-<title>$XR0</title>2&nbsp;</text>
-</g>
-<g transform="translate(550,-3750)">
-<line y2="150" stroke="goldenrod"></line>
-</g>
-<g transform="translate(1850,-3600)">
-<line x2="-1300" stroke="goldenrod"></line>
-<text stroke="none" x="-810" y="-10" fill="orange" font-size="38.000017">
-<title>SIG_NAME</title>UART1_MCU_TX_HOST_RX</text>
-<text stroke="none" x="90" fill="black" font-size="30.000006000000003">
-<title>$XR1</title>3&nbsp;</text>
-<text stroke="none" x="30" fill="black" font-size="30.000006000000003">
-<title>$XR0</title>2&nbsp;</text>
-</g>
-<g transform="translate(5500,-3950)">
-<line x2="-1250" stroke="goldenrod"></line>
-<text stroke="none" x="-1210" y="-10" fill="orange" font-size="38.000017">
-<title>SIG_NAME</title>UART1_MCU_TX_HOST_RX</text>
-<text stroke="none" x="-1374" fill="black" font-size="30.000006000000003">
-<title>$XR1</title>3&nbsp;</text>
-<text stroke="none" x="-1314" fill="black" font-size="30.000006000000003">
-<title>$XR0</title>2&nbsp;</text>
-</g>
-<g transform="translate(950,-3700)">
-<line y2="-50" stroke="goldenrod"></line>
-</g>
-<g transform="translate(1850,-3700)">
-<line x2="-900" stroke="goldenrod"></line>
-<text stroke="none" x="-810" y="-10" fill="orange" font-size="38.000017">
-<title>SIG_NAME</title>UART2_MCU_TX_SERVO_RX</text>
-<text stroke="none" x="90" fill="black" font-size="30.000006000000003">
-<title>$XR1</title>4&nbsp;</text>
-<text stroke="none" x="30" fill="black" font-size="30.000006000000003">
-<title>$XR0</title>2&nbsp;</text>
-</g>
-<g transform="translate(5500,-4300)">
-<line x2="-1250" stroke="goldenrod"></line>
-<text stroke="none" x="-1210" y="-10" fill="orange" font-size="38.000017">
-<title>SIG_NAME</title>UART2_MCU_TX_SERVO_RX</text>
-<text stroke="none" x="-1374" fill="black" font-size="30.000006000000003">
-<title>$XR1</title>4&nbsp;</text>
-<text stroke="none" x="-1314" fill="black" font-size="30.000006000000003">
-<title>$XR0</title>2&nbsp;</text>
-</g>
-<g transform="translate(750,-3650)">
-<line y2="-100" stroke="goldenrod"></line>
-</g>
-<g transform="translate(1850,-3650)">
-<line x2="-1100" stroke="goldenrod"></line>
-<text stroke="none" x="-810" y="-10" fill="orange" font-size="38.000017">
-<title>SIG_NAME</title>UART2_SERVO_TX_MCU_RX</text>
-<text stroke="none" x="90" fill="black" font-size="30.000006000000003">
-<title>$XR1</title>4&nbsp;</text>
-<text stroke="none" x="30" fill="black" font-size="30.000006000000003">
-<title>$XR0</title>2&nbsp;</text>
-</g>
-<g transform="translate(5500,-4250)">
-<line x2="-1250" stroke="goldenrod"></line>
-<text stroke="none" x="-1210" y="-10" fill="orange" font-size="38.000017">
-<title>SIG_NAME</title>UART2_SERVO_TX_MCU_RX</text>
-<text stroke="none" x="-1374" fill="black" font-size="30.000006000000003">
-<title>$XR1</title>4&nbsp;</text>
-<text stroke="none" x="-1314" fill="black" font-size="30.000006000000003">
-<title>$XR0</title>2&nbsp;</text>
-</g>
-<g transform="translate(3450,-4500)">
-<line y2="-50" stroke="goldenrod"></line>
-</g>
-<g transform="translate(3450,-4550)">
-<line x2="2050" stroke="goldenrod"></line>
-</g>
-<g transform="translate(5150,-2300)">
-<line x2="200" stroke="goldenrod"></line>
-</g>
-<g transform="translate(5350,-2200)">
-<line y2="-100" stroke="goldenrod"></line>
-</g>
-<g transform="translate(5350,-2000)">
-<line x2="-450" stroke="goldenrod"></line>
-</g>
-<g transform="translate(5350,-2100)">
-<line y2="100" stroke="goldenrod"></line>
-</g>
-<g transform="translate(4300,-2000)">
-<line x2="350" stroke="goldenrod"></line>
-</g>
-<circle cx="6800" cy="-2400" r="10" stroke="black" fill="black"></circle>
-<circle cx="4850" cy="-500" r="10" stroke="black" fill="black"></circle>
-<circle cx="6800" cy="-3300" r="10" stroke="black" fill="black"></circle>
-<circle cx="6800" cy="-3350" r="10" stroke="black" fill="black"></circle>
-<circle cx="6800" cy="-3400" r="10" stroke="black" fill="black"></circle>
-<circle cx="6800" cy="-3450" r="10" stroke="black" fill="black"></circle>
-<circle cx="3900" cy="-3500" r="10" stroke="black" fill="black"></circle>
-<circle cx="550" cy="-1800" r="10" stroke="black" fill="black"></circle>
-<circle cx="750" cy="-1800" r="10" stroke="black" fill="black"></circle>
-<circle cx="950" cy="-1800" r="10" stroke="black" fill="black"></circle>
-<circle cx="550" cy="-2550" r="10" stroke="black" fill="black"></circle>
-<circle cx="750" cy="-2550" r="10" stroke="black" fill="black"></circle>
-<circle cx="3700" cy="-1300" r="10" stroke="black" fill="black"></circle>
-<circle cx="4400" cy="-1300" r="10" stroke="black" fill="black"></circle>
-<circle cx="4800" cy="-2300" r="10" stroke="black" fill="black"></circle>
-<circle cx="600" cy="-3300" r="10" stroke="black" fill="black"></circle>
-<circle cx="850" cy="-3300" r="10" stroke="black" fill="black"></circle>
-<circle cx="550" cy="-3950" r="10" stroke="black" fill="black"></circle>
-<circle cx="750" cy="-3950" r="10" stroke="black" fill="black"></circle>
-<circle cx="950" cy="-3950" r="10" stroke="black" fill="black"></circle>
-<circle cx="3200" cy="-4700" r="10" stroke="black" fill="black"></circle>
-<circle cx="4250" cy="-5100" r="10" stroke="black" fill="black"></circle>
-<circle cx="4500" cy="-5100" r="10" stroke="black" fill="black"></circle>
-<circle cx="4750" cy="-5100" r="10" stroke="black" fill="black"></circle>
-<circle cx="5300" cy="-4700" r="10" stroke="black" fill="black"></circle>
-<circle cx="5300" cy="-4750" r="10" stroke="black" fill="black"></circle>
-<circle cx="5000" cy="-5100" r="10" stroke="black" fill="black"></circle>
-<circle cx="5300" cy="-4800" r="10" stroke="black" fill="black"></circle>
-<circle cx="5300" cy="-4850" r="10" stroke="black" fill="black"></circle>
-<circle cx="8050" cy="-2400" r="10" stroke="black" fill="black"></circle>
-</svg>
-
-</div>
-</div>
-<hr>
-<div id="page3">
-<h1>dragonclaw/page3: HOST SELECTION</h1>
-<div>
-<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0,-5500,8500,5500" width="14.87500in" height="9.62500in" font-family="monospace" font-size="47.000000" stroke-width="3" style="background-color:white">
-<use href="#symbol:border_b.3" fill="green" stroke="green"></use>
-<text stroke="none" x="6570" y="-95" fill="green" font-size="26.999996">
-<title>CUSTOM_TXT_CDS</title>Fri Jan 17 12:53:12 2020</text>
-<text stroke="none" x="6500" y="-170" fill="green" font-size="33.999988">
-<title>CUSTOM_TXT_CDS</title>dragonclaw</text>
-<text stroke="none" x="7500" y="-175" fill="green" font-size="30.000006000000003">
-<title>CUSTOM_TXT_CDS</title>650-03910-01-SCH</text>
-<text stroke="none" x="8265" y="-175" fill="green" font-size="33.999988" text-anchor="middle">
-<title>CUSTOM_TXT_CDS</title>0.2</text>
-<text stroke="none" x="8427" y="-84" fill="green" font-size="26.999996" text-anchor="end">
-<title>CUSTOM_TXT_CDS</title>3 OF 5</text>
-<text stroke="none" x="8427" y="-119" fill="green" font-size="26.999996" text-anchor="end">
-<title>CUSTOM_TXT_CDS</title>3 OF 5</text>
-<text stroke="none" x="7212" y="-260" fill="orange" font-size="67.999976" text-anchor="middle">
-<title>PAGE_TITLE</title>HOST SELECTION</text>
-<g id="I1" transform="translate(6400,-3300)">
-<use href="#symbol:gnd.1" fill="green" stroke="green"></use>
-</g>
-<g id="U7.3" transform="translate(5800,-3500)">
-<use href="#symbol:analog_switch.3" fill="green" stroke="green"></use>
-<text stroke="none" x="-150" y="179" fill="orange" font-size="31.999997">
-<title>PACK_TYPE</title>QUAD_QFN16</text>
-<text stroke="none" x="-150" y="93" fill="orange" font-size="31.999997">
-<title>MFGR</title>TEXAS INSTRUMENTS INC</text>
-<text stroke="none" x="-150" y="50" fill="orange" font-size="31.999997">
-<title>AGILE_PN</title>313-04276-00</text>
-<text stroke="none" x="-150" y="136" fill="orange" font-size="31.999997">
-<title>MFGR_PN</title>TS3A5018RSVR</text>
-<text stroke="none" y="-800" fill="black" font-size="31.999997" text-anchor="middle">
-<title>$LOCATION</title>U7</text>
-<text stroke="none" x="-210" y="-110" fill="black" font-size="38.000017" text-anchor="end">
-<title>$PN</title>13</text>
-<text stroke="none" x="-210" y="-210" fill="black" font-size="38.000017" text-anchor="end">
-<title>$PN</title>10</text>
-<text stroke="none" x="-210" y="-360" fill="black" font-size="38.000017" text-anchor="end">
-<title>$PN</title>7</text>
-<text stroke="none" x="210" y="-60" fill="black" font-size="38.000017">
-<title>$PN</title>6</text>
-<text stroke="none" x="-210" y="-510" fill="black" font-size="38.000017" text-anchor="end">
-<title>$PN</title>5</text>
-<text stroke="none" x="210" y="-160" fill="black" font-size="38.000017">
-<title>$PN</title>11</text>
-<text stroke="none" x="210" y="-210" fill="black" font-size="38.000017">
-<title>$PN</title>12</text>
-<text stroke="none" x="-210" y="-660" fill="black" font-size="38.000017" text-anchor="end">
-<title>$PN</title>2</text>
-<text stroke="none" x="210" y="-310" fill="black" font-size="38.000017">
-<title>$PN</title>8</text>
-<text stroke="none" x="-210" y="-760" fill="black" font-size="38.000017" text-anchor="end">
-<title>$PN</title>15</text>
-<text stroke="none" x="210" y="-360" fill="black" font-size="38.000017">
-<title>$PN</title>9</text>
-<text stroke="none" x="210" y="-460" fill="black" font-size="38.000017">
-<title>$PN</title>4</text>
-<text stroke="none" x="210" y="-510" fill="black" font-size="38.000017">
-<title>$PN</title>3</text>
-<text stroke="none" x="210" y="-610" fill="black" font-size="38.000017">
-<title>$PN</title>1</text>
-<text stroke="none" x="210" y="-660" fill="black" font-size="38.000017">
-<title>$PN</title>16</text>
-<text stroke="none" x="210" y="-760" fill="black" font-size="38.000017">
-<title>$PN</title>14</text>
-</g>
-<g id="I3" transform="translate(5350,-3300)">
-<use href="#symbol:gnd.1" fill="green" stroke="green"></use>
-</g>
-<g id="C10.1" transform="translate(7200,-4100)">
-<use href="#symbol:cap.1" fill="green" stroke="green"></use>
-<text stroke="none" x="50" y="60" fill="green" font-size="28.999987">
-<title>VOLT</title>10V</text>
-<text stroke="none" x="50" y="91" fill="orange" font-size="28.999987">
-<title>DIELECTRIC</title>X5R</text>
-<text stroke="none" x="50" y="29" fill="green" font-size="28.999987">
-<title>PACK_TYPE</title>0201</text>
-<text stroke="none" x="50" fill="green" font-size="28.999987">
-<title>VALUE</title>0.1UF</text>
-<text stroke="none" x="50" y="-30" fill="green" font-size="28.999987">
-<title>$LOCATION</title>C10</text>
-</g>
-<g id="I5" transform="translate(7150,-4000)">
-<use href="#symbol:gnd.1" fill="green" stroke="green"></use>
-</g>
-<g id="I8" transform="translate(6300,-4550)">
-<use href="#symbol:gnd.1" fill="green" stroke="green"></use>
-</g>
-<g id="U5.15" transform="translate(2400,-1750)">
-<use href="#symbol:load_switch.15" fill="green" stroke="green"></use>
-<text stroke="none" x="-200" y="250" fill="orange" font-size="31.999997">
-<title>AGILE_PN</title>313-04181-00</text>
-<text stroke="none" x="-200" y="336" fill="orange" font-size="31.999997">
-<title>MFGR_PN</title>TPS2559DRCR</text>
-<text stroke="none" x="-200" y="379" fill="orange" font-size="31.999997">
-<title>PACK_TYPE</title>VSON10</text>
-<text stroke="none" x="-200" y="293" fill="orange" font-size="31.999997">
-<title>MFGR</title>TEXAS INSTRUMENTS INC</text>
-<text stroke="none" y="-200" fill="black" font-size="31.999997" text-anchor="middle">
-<title>$LOCATION</title>U5</text>
-<text stroke="none" x="-260" y="-160" fill="black" font-size="38.000017" text-anchor="end">
-<title>$PN</title>2</text>
-<text stroke="none" x="-260" y="-110" fill="black" font-size="38.000017" text-anchor="end">
-<title>$PN</title>3</text>
-<text stroke="none" x="-260" y="-60" fill="black" font-size="38.000017" text-anchor="end">
-<title>$PN</title>4</text>
-<text stroke="none" x="-260" y="40" fill="black" font-size="38.000017" text-anchor="end">
-<title>$PN</title>10</text>
-<text stroke="none" x="-260" y="90" fill="black" font-size="38.000017" text-anchor="end">
-<title>$PN</title>5</text>
-<text stroke="none" x="-260" y="140" fill="black" font-size="38.000017" text-anchor="end">
-<title>$PN</title>6</text>
-<text stroke="none" x="260" y="140" fill="black" font-size="38.000017">
-<title>$PN</title>11</text>
-<text stroke="none" x="260" y="90" fill="black" font-size="38.000017">
-<title>$PN</title>1</text>
-<text stroke="none" x="260" y="-60" fill="black" font-size="38.000017">
-<title>$PN</title>9</text>
-<text stroke="none" x="260" y="-110" fill="black" font-size="38.000017">
-<title>$PN</title>8</text>
-<text stroke="none" x="260" y="-160" fill="black" font-size="38.000017">
-<title>$PN</title>7</text>
-</g>
-<g id="R10.1" transform="translate(1800,-1450)">
-<use href="#symbol:res.1" fill="green" stroke="green"></use>
-<text stroke="none" x="30" y="-30" fill="orange" font-size="28.999987">
-<title>VALUE</title>100K</text>
-<text stroke="none" x="30" y="30" fill="orange" font-size="28.999987">
-<title>PACK_TYPE</title>0201</text>
-<text stroke="none" x="30" fill="orange" font-size="28.999987">
-<title>TOLERANCE</title>1%</text>
-<text stroke="none" x="30" y="-60" fill="black" font-size="28.999987">
-<title>$LOCATION</title>R10</text>
-</g>
-<g id="I16" transform="translate(1750,-1300)">
-<use href="#symbol:gnd.1" fill="green" stroke="green"></use>
-</g>
-<g id="I17" transform="translate(2950,-1450)">
-<use href="#symbol:gnd.1" fill="green" stroke="green"></use>
-</g>
-<g id="I20" transform="translate(2950,-550)">
-<use href="#symbol:gnd.1" fill="green" stroke="green"></use>
-</g>
-<g id="I24" transform="translate(2950,-4050)">
-<use href="#symbol:gnd.1" fill="green" stroke="green"></use>
-</g>
-<g id="U3.15" transform="translate(2400,-4350)">
-<use href="#symbol:load_switch.15" fill="green" stroke="green"></use>
-<text stroke="none" x="-200" y="250" fill="orange" font-size="31.999997">
-<title>AGILE_PN</title>313-04181-00</text>
-<text stroke="none" x="-200" y="293" fill="orange" font-size="31.999997">
-<title>MFGR</title>TEXAS INSTRUMENTS INC</text>
-<text stroke="none" x="-200" y="336" fill="orange" font-size="31.999997">
-<title>MFGR_PN</title>TPS2559DRCR</text>
-<text stroke="none" x="-200" y="379" fill="orange" font-size="31.999997">
-<title>PACK_TYPE</title>VSON10</text>
-<text stroke="none" y="-200" fill="black" font-size="31.999997" text-anchor="middle">
-<title>$LOCATION</title>U3</text>
-<text stroke="none" x="-260" y="-160" fill="black" font-size="38.000017" text-anchor="end">
-<title>$PN</title>2</text>
-<text stroke="none" x="-260" y="-110" fill="black" font-size="38.000017" text-anchor="end">
-<title>$PN</title>3</text>
-<text stroke="none" x="-260" y="-60" fill="black" font-size="38.000017" text-anchor="end">
-<title>$PN</title>4</text>
-<text stroke="none" x="-260" y="40" fill="black" font-size="38.000017" text-anchor="end">
-<title>$PN</title>10</text>
-<text stroke="none" x="-260" y="90" fill="black" font-size="38.000017" text-anchor="end">
-<title>$PN</title>5</text>
-<text stroke="none" x="-260" y="140" fill="black" font-size="38.000017" text-anchor="end">
-<title>$PN</title>6</text>
-<text stroke="none" x="260" y="140" fill="black" font-size="38.000017">
-<title>$PN</title>11</text>
-<text stroke="none" x="260" y="90" fill="black" font-size="38.000017">
-<title>$PN</title>1</text>
-<text stroke="none" x="260" y="-60" fill="black" font-size="38.000017">
-<title>$PN</title>9</text>
-<text stroke="none" x="260" y="-110" fill="black" font-size="38.000017">
-<title>$PN</title>8</text>
-<text stroke="none" x="260" y="-160" fill="black" font-size="38.000017">
-<title>$PN</title>7</text>
-</g>
-<g id="R12.1" transform="translate(2000,-3950)">
-<use href="#symbol:res.1" fill="green" stroke="green"></use>
-<text stroke="none" x="30" y="30" fill="orange" font-size="28.999987">
-<title>PACK_TYPE</title>0201</text>
-<text stroke="none" x="30" y="-30" fill="orange" font-size="28.999987">
-<title>VALUE</title>100K</text>
-<text stroke="none" x="30" fill="orange" font-size="28.999987">
-<title>TOLERANCE</title>1%</text>
-<text stroke="none" x="30" y="-60" fill="black" font-size="28.999987">
-<title>$LOCATION</title>R12</text>
-</g>
-<g id="I28" transform="translate(1950,-3800)">
-<use href="#symbol:gnd.1" fill="green" stroke="green"></use>
-</g>
-<g id="Q1.1" transform="translate(1250,-4050)">
-<use href="#symbol:nmos.1" fill="green" stroke="green"></use>
-<text stroke="none" x="80" y="100" fill="green" font-size="28.999987">
-<title>PACK_TYPE</title>SOT23_3P_1</text>
-<text stroke="none" x="80" y="-20" fill="green" font-size="28.999987">
-<title>MFGR_PN</title>BSS138</text>
-<text stroke="none" x="80" y="10" fill="green" font-size="28.999987">
-<title>VDS</title>50V</text>
-<text stroke="none" x="80" y="40" fill="green" font-size="28.999987">
-<title>RDS</title>6.0Ohm</text>
-<text stroke="none" x="80" y="70" fill="green" font-size="28.999987">
-<title>ID</title>200mA</text>
-<text stroke="none" x="80" y="-50" fill="green" font-size="23.000014">
-<title>MFGR</title>ON SEMICONDUCTOR</text>
-<text stroke="none" x="80" y="-80" fill="green" font-size="28.999987">
-<title>$LOCATION</title>Q1</text>
-<text stroke="none" x="24" y="92" fill="black" font-size="23.999986000000003">
-<title>$PN</title>S</text>
-<text stroke="none" x="-94" y="41" fill="black" font-size="23.999986000000003">
-<title>$PN</title>G</text>
-<text stroke="none" x="24" y="-76" fill="black" font-size="23.999986000000003">
-<title>$PN</title>D</text>
-</g>
-<g id="R8.1" transform="translate(1300,-4350)">
-<use href="#symbol:res.1" fill="green" stroke="green"></use>
-<text stroke="none" x="30" fill="orange" font-size="28.999987">
-<title>TOLERANCE</title>1%</text>
-<text stroke="none" x="30" y="-30" fill="orange" font-size="28.999987">
-<title>VALUE</title>100K</text>
-<text stroke="none" x="30" y="30" fill="orange" font-size="28.999987">
-<title>PACK_TYPE</title>0201</text>
-<text stroke="none" x="30" y="-60" fill="black" font-size="28.999987">
-<title>$LOCATION</title>R8</text>
-</g>
-<g id="I31" transform="translate(1250,-3850)">
-<use href="#symbol:gnd.1" fill="green" stroke="green"></use>
-</g>
-<g id="R6.1" transform="translate(1100,-3850)">
-<use href="#symbol:res.1" fill="green" stroke="green"></use>
-<text stroke="none" x="30" fill="orange" font-size="28.999987">
-<title>TOLERANCE</title>1%</text>
-<text stroke="none" x="30" y="-30" fill="orange" font-size="28.999987">
-<title>VALUE</title>100K</text>
-<text stroke="none" x="30" y="30" fill="orange" font-size="28.999987">
-<title>PACK_TYPE</title>0201</text>
-<text stroke="none" x="30" y="-60" fill="black" font-size="28.999987">
-<title>$LOCATION</title>R6</text>
-</g>
-<g id="I33" transform="translate(1050,-3700)">
-<use href="#symbol:gnd.1" fill="green" stroke="green"></use>
-</g>
-<g id="I34" transform="translate(2800,-3000)">
-<use href="#symbol:gnd.1" fill="green" stroke="green"></use>
-</g>
-<g id="R9.1" transform="translate(1300,-3250)">
-<use href="#symbol:res.1" fill="green" stroke="green"></use>
-<text stroke="none" x="30" y="-30" fill="orange" font-size="28.999987">
-<title>VALUE</title>100K</text>
-<text stroke="none" x="30" fill="orange" font-size="28.999987">
-<title>TOLERANCE</title>1%</text>
-<text stroke="none" x="30" y="30" fill="orange" font-size="28.999987">
-<title>PACK_TYPE</title>0201</text>
-<text stroke="none" x="30" y="-60" fill="black" font-size="28.999987">
-<title>$LOCATION</title>R9</text>
-</g>
-<g id="Q2.1" transform="translate(1250,-2950)">
-<use href="#symbol:nmos.1" fill="green" stroke="green"></use>
-<text stroke="none" x="80" y="40" fill="green" font-size="28.999987">
-<title>RDS</title>6.0Ohm</text>
-<text stroke="none" x="80" y="-20" fill="green" font-size="28.999987">
-<title>MFGR_PN</title>BSS138</text>
-<text stroke="none" x="80" y="70" fill="green" font-size="28.999987">
-<title>ID</title>200mA</text>
-<text stroke="none" x="80" y="10" fill="green" font-size="28.999987">
-<title>VDS</title>50V</text>
-<text stroke="none" x="80" y="-50" fill="green" font-size="23.000014">
-<title>MFGR</title>ON SEMICONDUCTOR</text>
-<text stroke="none" x="80" y="100" fill="green" font-size="28.999987">
-<title>PACK_TYPE</title>SOT23_3P_1</text>
-<text stroke="none" x="80" y="-80" fill="green" font-size="28.999987">
-<title>$LOCATION</title>Q2</text>
-<text stroke="none" x="24" y="92" fill="black" font-size="23.999986000000003">
-<title>$PN</title>S</text>
-<text stroke="none" x="-94" y="41" fill="black" font-size="23.999986000000003">
-<title>$PN</title>G</text>
-<text stroke="none" x="24" y="-76" fill="black" font-size="23.999986000000003">
-<title>$PN</title>D</text>
-</g>
-<g id="I41" transform="translate(1250,-2750)">
-<use href="#symbol:gnd.1" fill="green" stroke="green"></use>
-</g>
-<g id="R7.1" transform="translate(1100,-2750)">
-<use href="#symbol:res.1" fill="green" stroke="green"></use>
-<text stroke="none" x="30" y="30" fill="orange" font-size="28.999987">
-<title>PACK_TYPE</title>0201</text>
-<text stroke="none" x="30" y="-30" fill="orange" font-size="28.999987">
-<title>VALUE</title>100K</text>
-<text stroke="none" x="30" fill="orange" font-size="28.999987">
-<title>TOLERANCE</title>1%</text>
-<text stroke="none" x="30" y="-60" fill="black" font-size="28.999987">
-<title>$LOCATION</title>R7</text>
-</g>
-<g id="I43" transform="translate(1050,-2600)">
-<use href="#symbol:gnd.1" fill="green" stroke="green"></use>
-</g>
-<g id="U8.1" transform="translate(5900,-1050)">
-<use href="#symbol:ts5a23159.1" fill="green" stroke="green"></use>
-<text stroke="none" x="-300" y="671" fill="green" font-size="36.999998">
-<title>PACK_TYPE</title>VSSOP10</text>
-<text stroke="none" x="-300" y="614" fill="green" font-size="36.999998">
-<title>MFGR_PN</title>TS5A23159DGSR</text>
-<text stroke="none" x="-300" y="557" fill="green" font-size="36.999998">
-<title>MFGR</title>TEXAS INSTRUMENTS INC</text>
-<text stroke="none" x="-300" y="500" fill="green" font-size="36.999998">
-<title>AGILE_PN</title>232-00045-00</text>
-<text stroke="none" x="350" y="-400" fill="green" font-size="57.000002" text-anchor="end">
-<title>$LOCATION</title>U8</text>
-<text stroke="none" x="-360" y="-260" fill="black" font-size="38.000017" text-anchor="end">
-<title>$PN</title>9</text>
-<text stroke="none" x="-360" y="-160" fill="black" font-size="38.000017" text-anchor="end">
-<title>$PN</title>2</text>
-<g transform="translate(-60,360)">
-<g transform="rotate(-90)">
-<text stroke="none" fill="black" font-size="38.000017" text-anchor="end">
-<title>$PN</title>3</text>
-</g></g>
-<text stroke="none" x="-360" y="40" fill="black" font-size="38.000017" text-anchor="end">
-<title>$PN</title>7</text>
-<text stroke="none" x="-360" y="140" fill="black" font-size="38.000017" text-anchor="end">
-<title>$PN</title>4</text>
-<text stroke="none" x="360" y="140" fill="black" font-size="38.000017">
-<title>$PN</title>5</text>
-<text stroke="none" x="360" y="40" fill="black" font-size="38.000017">
-<title>$PN</title>6</text>
-<g transform="translate(-60,-460)">
-<g transform="rotate(-90)">
-<text stroke="none" fill="black" font-size="38.000017">
-<title>$PN</title>8</text>
-</g></g>
-<text stroke="none" x="360" y="-160" fill="black" font-size="38.000017">
-<title>$PN</title>1</text>
-<text stroke="none" x="360" y="-260" fill="black" font-size="38.000017">
-<title>$PN</title>10</text>
-</g>
-<g id="I45" transform="translate(6400,-1400)">
-<use href="#symbol:gnd.1" fill="green" stroke="green"></use>
-</g>
-<g id="C11.1" transform="translate(6450,-1500)">
-<use href="#symbol:cap.1" fill="green" stroke="green"></use>
-<text stroke="none" x="50" y="29" fill="green" font-size="28.999987">
-<title>PACK_TYPE</title>0201</text>
-<text stroke="none" x="50" fill="green" font-size="28.999987">
-<title>VALUE</title>0.1UF</text>
-<text stroke="none" x="50" y="60" fill="green" font-size="28.999987">
-<title>VOLT</title>10V</text>
-<text stroke="none" x="50" y="91" fill="orange" font-size="28.999987">
-<title>DIELECTRIC</title>X5R</text>
-<text stroke="none" x="50" y="-30" fill="green" font-size="28.999987">
-<title>$LOCATION</title>C11</text>
-</g>
-<g id="I47" transform="translate(5800,-600)">
-<use href="#symbol:gnd.1" fill="green" stroke="green"></use>
-</g>
-<g id="R2.4" transform="translate(2350,-4700)">
-<use href="#symbol:res.4" fill="green" stroke="green"></use>
-<text stroke="none" x="20" y="-25" fill="orange" font-size="28.999987" text-anchor="end">
-<title>VALUE</title>0.01</text>
-<text stroke="none" x="30" y="-25" fill="orange" font-size="28.999987">
-<title>PACK_TYPE</title>0402</text>
-<text stroke="none" x="100" y="-100" fill="orange" font-size="38.000017">
-<title>BOM_IGNORE</title>DNS</text>
-<text stroke="none" x="25" y="-55" fill="black" font-size="28.999987" text-anchor="middle">
-<title>$LOCATION</title>R2</text>
-</g>
-<g id="R14.4" transform="translate(2350,-3500)">
-<use href="#symbol:res.4" fill="green" stroke="green"></use>
-<text stroke="none" x="30" y="-25" fill="orange" font-size="28.999987">
-<title>PACK_TYPE</title>0402</text>
-<text stroke="none" x="20" y="-25" fill="orange" font-size="28.999987" text-anchor="end">
-<title>VALUE</title>0.01</text>
-<text stroke="none" x="100" y="-100" fill="orange" font-size="38.000017">
-<title>BOM_IGNORE</title>DNS</text>
-<text stroke="none" x="25" y="-55" fill="black" font-size="28.999987" text-anchor="middle">
-<title>$LOCATION</title>R14</text>
-</g>
-<g id="R15.4" transform="translate(2350,-2100)">
-<use href="#symbol:res.4" fill="green" stroke="green"></use>
-<text stroke="none" x="100" y="-100" fill="orange" font-size="38.000017">
-<title>BOM_IGNORE</title>DNS</text>
-<text stroke="none" x="20" y="-25" fill="orange" font-size="28.999987" text-anchor="end">
-<title>VALUE</title>0.01</text>
-<text stroke="none" x="30" y="-25" fill="orange" font-size="28.999987">
-<title>PACK_TYPE</title>0402</text>
-<text stroke="none" x="25" y="-55" fill="black" font-size="28.999987" text-anchor="middle">
-<title>$LOCATION</title>R15</text>
-</g>
-<g id="R16.4" transform="translate(2350,-1100)">
-<use href="#symbol:res.4" fill="green" stroke="green"></use>
-<text stroke="none" x="100" y="-100" fill="orange" font-size="38.000017">
-<title>BOM_IGNORE</title>DNS</text>
-<text stroke="none" x="20" y="-25" fill="orange" font-size="28.999987" text-anchor="end">
-<title>VALUE</title>0.01</text>
-<text stroke="none" x="30" y="-25" fill="orange" font-size="28.999987">
-<title>PACK_TYPE</title>0402</text>
-<text stroke="none" x="25" y="-55" fill="black" font-size="28.999987" text-anchor="middle">
-<title>$LOCATION</title>R16</text>
-</g>
-<g id="C19.1" transform="translate(7200,-2750)">
-<use href="#symbol:cap.1" fill="green" stroke="green"></use>
-<text stroke="none" x="50" fill="green" font-size="28.999987">
-<title>VALUE</title>0.1UF</text>
-<text stroke="none" x="50" y="60" fill="green" font-size="28.999987">
-<title>VOLT</title>10V</text>
-<text stroke="none" x="50" y="29" fill="green" font-size="28.999987">
-<title>PACK_TYPE</title>0201</text>
-<text stroke="none" x="50" y="91" fill="orange" font-size="28.999987">
-<title>DIELECTRIC</title>X5R</text>
-<text stroke="none" x="50" y="-30" fill="green" font-size="28.999987">
-<title>$LOCATION</title>C19</text>
-</g>
-<g id="I59" transform="translate(7150,-2650)">
-<use href="#symbol:gnd.1" fill="green" stroke="green"></use>
-</g>
-<g id="I60" transform="translate(6400,-1950)">
-<use href="#symbol:gnd.1" fill="green" stroke="green"></use>
-</g>
-<g id="U13.3" transform="translate(5800,-2150)">
-<use href="#symbol:analog_switch.3" fill="green" stroke="green"></use>
-<text stroke="none" x="-150" y="50" fill="orange" font-size="31.999997">
-<title>AGILE_PN</title>313-04276-00</text>
-<text stroke="none" x="-150" y="136" fill="orange" font-size="31.999997">
-<title>MFGR_PN</title>TS3A5018RSVR</text>
-<text stroke="none" x="-150" y="179" fill="orange" font-size="31.999997">
-<title>PACK_TYPE</title>QUAD_QFN16</text>
-<text stroke="none" x="-150" y="93" fill="orange" font-size="31.999997">
-<title>MFGR</title>TEXAS INSTRUMENTS INC</text>
-<text stroke="none" y="-800" fill="black" font-size="31.999997" text-anchor="middle">
-<title>$LOCATION</title>U13</text>
-<text stroke="none" x="-210" y="-110" fill="black" font-size="31.999997" text-anchor="end">
-<title>$PN</title>13</text>
-<text stroke="none" x="-210" y="-210" fill="black" font-size="31.999997" text-anchor="end">
-<title>$PN</title>10</text>
-<text stroke="none" x="-210" y="-360" fill="black" font-size="31.999997" text-anchor="end">
-<title>$PN</title>7</text>
-<text stroke="none" x="210" y="-60" fill="black" font-size="31.999997">
-<title>$PN</title>6</text>
-<text stroke="none" x="-210" y="-510" fill="black" font-size="31.999997" text-anchor="end">
-<title>$PN</title>5</text>
-<text stroke="none" x="210" y="-160" fill="black" font-size="31.999997">
-<title>$PN</title>11</text>
-<text stroke="none" x="210" y="-210" fill="black" font-size="31.999997">
-<title>$PN</title>12</text>
-<text stroke="none" x="-210" y="-660" fill="black" font-size="31.999997" text-anchor="end">
-<title>$PN</title>2</text>
-<text stroke="none" x="210" y="-310" fill="black" font-size="31.999997">
-<title>$PN</title>8</text>
-<text stroke="none" x="-210" y="-760" fill="black" font-size="31.999997" text-anchor="end">
-<title>$PN</title>15</text>
-<text stroke="none" x="210" y="-360" fill="black" font-size="31.999997">
-<title>$PN</title>9</text>
-<text stroke="none" x="210" y="-460" fill="black" font-size="31.999997">
-<title>$PN</title>4</text>
-<text stroke="none" x="210" y="-510" fill="black" font-size="31.999997">
-<title>$PN</title>3</text>
-<text stroke="none" x="210" y="-610" fill="black" font-size="31.999997">
-<title>$PN</title>1</text>
-<text stroke="none" x="210" y="-660" fill="black" font-size="31.999997">
-<title>$PN</title>16</text>
-<text stroke="none" x="210" y="-760" fill="black" font-size="31.999997">
-<title>$PN</title>14</text>
-</g>
-<g id="I62" transform="translate(5350,-1950)">
-<use href="#symbol:gnd.1" fill="green" stroke="green"></use>
-</g>
-<g id="SW1.1" transform="translate(5850,-4850)">
-<use href="#symbol:spdt.1" fill="green" stroke="green"></use>
-<text stroke="none" x="-100" y="193" fill="orange" font-size="31.999997">
-<title>MFGR</title>C &amp; K COMPONENTS</text>
-<text stroke="none" x="-100" y="279" fill="orange" font-size="31.999997">
-<title>PACK_TYPE</title>SLIDE_3P</text>
-<text stroke="none" x="-100" y="236" fill="orange" font-size="31.999997">
-<title>MFGR_PN</title>JS102011SAQN</text>
-<text stroke="none" x="-100" y="150" fill="orange" font-size="31.999997">
-<title>AGILE_PN</title>510-00282-00</text>
-<text stroke="none" y="-150" fill="black" font-size="31.999997" text-anchor="middle">
-<title>$LOCATION</title>SW1</text>
-</g>
-<g id="R50.4" transform="translate(6500,-4950)">
-<use href="#symbol:res.4" fill="green" stroke="green"></use>
-<text stroke="none" x="20" y="-25" fill="orange" font-size="28.999987" text-anchor="end">
-<title>VALUE</title>100K</text>
-<text stroke="none" x="30" y="-25" fill="orange" font-size="28.999987">
-<title>PACK_TYPE</title>0201</text>
-<text stroke="none" x="25" y="-55" fill="black" font-size="28.999987" text-anchor="middle">
-<title>$LOCATION</title>R50</text>
-</g>
-<g id="U4.1" transform="translate(2400,-3200)">
-<use href="#symbol:tps22913.1" fill="green" stroke="green"></use>
-<text stroke="none" x="-150" y="250" fill="orange" font-size="30.000006000000003">
-<title>MFGR</title>TEXAS INSTRUMENTS INC</text>
-<text stroke="none" x="-150" y="300" fill="orange" font-size="30.000006000000003">
-<title>MFGR_PN</title>TPS22913BYZVR</text>
-<text stroke="none" x="-150" y="200" fill="orange" font-size="30.000006000000003">
-<title>AGILE_PN</title>400-00131-00</text>
-<text stroke="none" x="-152" y="-182" fill="green" font-size="30.999978">
-<title>LOCATION</title>U4</text>
-<text stroke="none" x="-210" y="-60" fill="black" font-size="38.000017" text-anchor="end">
-<title>$PN</title>A2</text>
-<text stroke="none" x="-210" y="40" fill="black" font-size="38.000017" text-anchor="end">
-<title>$PN</title>B2</text>
-<text stroke="none" x="210" y="40" fill="black" font-size="38.000017">
-<title>$PN</title>B1</text>
-<text stroke="none" x="210" y="-60" fill="black" font-size="38.000017">
-<title>$PN</title>A1</text>
-</g>
-<g id="U6.1" transform="translate(2400,-850)">
-<use href="#symbol:tps22913.1" fill="green" stroke="green"></use>
-<text stroke="none" x="-150" y="200" fill="orange" font-size="30.000006000000003">
-<title>AGILE_PN</title>400-00131-00</text>
-<text stroke="none" x="-150" y="300" fill="orange" font-size="30.000006000000003">
-<title>MFGR_PN</title>TPS22913BYZVR</text>
-<text stroke="none" x="-150" y="250" fill="orange" font-size="30.000006000000003">
-<title>MFGR</title>TEXAS INSTRUMENTS INC</text>
-<text stroke="none" x="-152" y="-182" fill="green" font-size="30.999978">
-<title>LOCATION</title>U6</text>
-<text stroke="none" x="-210" y="-60" fill="black" font-size="38.000017" text-anchor="end">
-<title>$PN</title>A2</text>
-<text stroke="none" x="-210" y="40" fill="black" font-size="38.000017" text-anchor="end">
-<title>$PN</title>B2</text>
-<text stroke="none" x="210" y="40" fill="black" font-size="38.000017">
-<title>$PN</title>B1</text>
-<text stroke="none" x="210" y="-60" fill="black" font-size="38.000017">
-<title>$PN</title>A1</text>
-</g>
-<text stroke="none" x="1400" y="-2400" fill="purple" font-size="48.000019">LOAD SWITCHES HAVE REVERSE-CURRENT PROTECTION</text>
-<text stroke="none" x="1400" y="-2450" fill="purple" font-size="48.000019">LOAD SWITCHS FOR ISOLATION BETWEEN SOURCES</text>
-<text stroke="none" x="550" y="-5050" fill="purple" font-size="30.000006000000003">ILIM = 1115MA, SET BY RES</text>
-<text stroke="none" x="550" y="-5100" fill="purple" font-size="38.000017">SERVO POWER ONLY ENABLED IF PLATFORM NOT CONNECTED</text>
-<text stroke="none" x="550" y="-5150" fill="purple" font-size="38.000017">SYSTEM POWER CAN BE PROVIDED BY SERVO OR PLATFORM</text>
-<text stroke="none" x="550" y="-5250" fill="purple" font-size="60.000012000000005">MASTER SELECTION FOR BOARD POWER</text>
-<text stroke="none" x="4700" y="-1650" fill="purple" font-size="38.000017">DETERMINE WHICH HOST DRIVES BOOT SIGNALS</text>
-<text stroke="none" x="4750" y="-3050" fill="purple" font-size="38.000017">DETERMINE WHICH HOST COMMUNICATES WITH MCU: UART AND SLP SIGNALS&nbsp;</text>
-<text stroke="none" x="4750" y="-4400" fill="purple" font-size="38.000017">DETERMINE WHICH HOST COMMUNICATES WITH MCU VIA SPI</text>
-<text stroke="none" x="4750" y="-5050" fill="purple" font-size="38.000017">L: SERVO, H: PLATFORM</text>
-<text stroke="none" x="4750" y="-5100" fill="purple" font-size="38.000017">HOST_SEL CONTROLLED BY MECHANICAL SWITCH</text>
-<text stroke="none" x="4750" y="-5150" fill="purple" font-size="38.000017">HOST CAN BE SERVO OR PLATFORM: DETERMINED BY "HOST_SEL"</text>
-<text stroke="none" x="4750" y="-5250" fill="purple" font-size="60.000012000000005">MASTER SELECTION FOR HOST TO MCU COMMUNICATOIN</text>
-<text stroke="none" x="6700" y="-3300" fill="purple" font-size="38.000017">SWITCHES CAN HANDLE SPEEDS UP TO 100MHZ&nbsp;</text>
-<text stroke="none" x="6100" y="-4800" fill="purple" font-size="38.000017">ADD SILKSCREEN NOTE FOR SERVO VS PLATFORM DIRECTION</text>
-<text stroke="none" x="6500" y="-4650" fill="purple" font-size="38.000017">GND &nbsp; &nbsp;SIDE: SERVO&nbsp;</text>
-<text stroke="none" x="6500" y="-4700" fill="purple" font-size="38.000017">PP3300 SIDE: PLATFORM&nbsp;</text>
-<g transform="translate(1300,-3150)">
-<line y2="100" stroke="goldenrod"></line>
-</g>
-<g transform="translate(1300,-3150)">
-<line y2="-50" stroke="goldenrod"></line>
-</g>
-<g transform="translate(1300,-3150)">
-<line x2="900" stroke="goldenrod"></line>
-<text stroke="none" x="240" y="-10" fill="orange" font-size="30.000006000000003">
-<title>SIG_NAME</title>EN_PP1800_SERVO</text>
-</g>
-<g transform="translate(1300,-4250)">
-<line y2="100" stroke="goldenrod"></line>
-</g>
-<g transform="translate(1300,-4250)">
-<line y2="-50" stroke="goldenrod"></line>
-</g>
-<g transform="translate(2150,-4250)">
-<line x2="-850" stroke="goldenrod"></line>
-<text stroke="none" x="-610" y="-10" fill="orange" font-size="30.000006000000003">
-<title>SIG_NAME</title>EN_PP3300_SERVO</text>
-</g>
-<g transform="translate(1800,-1400)">
-<line y2="50" stroke="goldenrod"></line>
-</g>
-<g transform="translate(2600,-800)">
-<line x2="400" stroke="goldenrod"></line>
-</g>
-<g transform="translate(1100,-2700)">
-<line y2="50" stroke="goldenrod"></line>
-</g>
-<g transform="translate(3000,-800)">
-<line y2="200" stroke="goldenrod"></line>
-</g>
-<g transform="translate(1300,-2850)">
-<line y2="50" stroke="goldenrod"></line>
-</g>
-<g transform="translate(2650,-1600)">
-<line x2="350" stroke="goldenrod"></line>
-</g>
-<g transform="translate(2650,-1650)">
-<line x2="350" stroke="goldenrod"></line>
-</g>
-<g transform="translate(3000,-1600)">
-<line y2="100" stroke="goldenrod"></line>
-</g>
-<g transform="translate(3000,-1650)">
-<line y2="50" stroke="goldenrod"></line>
-</g>
-<g transform="translate(1100,-3800)">
-<line y2="50" stroke="goldenrod"></line>
-</g>
-<g transform="translate(1300,-3950)">
-<line y2="50" stroke="goldenrod"></line>
-</g>
-<g transform="translate(2600,-3150)">
-<line x2="250" stroke="goldenrod"></line>
-</g>
-<g transform="translate(2000,-3900)">
-<line y2="50" stroke="goldenrod"></line>
-</g>
-<g transform="translate(2850,-3150)">
-<line y2="100" stroke="goldenrod"></line>
-</g>
-<g transform="translate(5850,-650)">
-<line y2="-50" stroke="goldenrod"></line>
-</g>
-<g transform="translate(2650,-4200)">
-<line x2="350" stroke="goldenrod"></line>
-</g>
-<g transform="translate(2650,-4250)">
-<line x2="350" stroke="goldenrod"></line>
-</g>
-<g transform="translate(3000,-4200)">
-<line y2="100" stroke="goldenrod"></line>
-</g>
-<g transform="translate(3000,-4250)">
-<line y2="50" stroke="goldenrod"></line>
-</g>
-<g transform="translate(5400,-2250)">
-<line y2="250" stroke="goldenrod"></line>
-</g>
-<g transform="translate(5600,-2250)">
-<line x2="-200" stroke="goldenrod"></line>
-</g>
-<g transform="translate(6000,-2200)">
-<line x2="450" stroke="goldenrod"></line>
-</g>
-<g transform="translate(6450,-2200)">
-<line y2="200" stroke="goldenrod"></line>
-</g>
-<g transform="translate(5400,-3600)">
-<line y2="250" stroke="goldenrod"></line>
-</g>
-<g transform="translate(5600,-3600)">
-<line x2="-200" stroke="goldenrod"></line>
-</g>
-<g transform="translate(6000,-3550)">
-<line x2="450" stroke="goldenrod"></line>
-</g>
-<g transform="translate(6450,-3550)">
-<line y2="200" stroke="goldenrod"></line>
-</g>
-<g transform="translate(6000,-4750)">
-<line x2="350" stroke="goldenrod"></line>
-</g>
-<g transform="translate(6350,-4750)">
-<line y2="150" stroke="goldenrod"></line>
-</g>
-<g transform="translate(4750,-4000)">
-<line x2="850" stroke="goldenrod"></line>
-<text stroke="none" x="90" y="-10" fill="orange" font-size="30.000006000000003">
-<title>SIG_NAME</title>HOST_MCU_SPI_CLK</text>
-<text stroke="none" x="-34" fill="black" font-size="30.000006000000003">
-<title>$XR0</title>2&nbsp;</text>
-</g>
-<g transform="translate(4750,-3850)">
-<line x2="850" stroke="goldenrod"></line>
-<text stroke="none" x="90" y="-10" fill="orange" font-size="30.000006000000003">
-<title>SIG_NAME</title>HOST_MCU_SPI_MISO</text>
-<text stroke="none" x="-34" fill="black" font-size="30.000006000000003">
-<title>$XR0</title>2&nbsp;</text>
-</g>
-<g transform="translate(4750,-3700)">
-<line x2="850" stroke="goldenrod"></line>
-<text stroke="none" x="90" y="-10" fill="orange" font-size="30.000006000000003">
-<title>SIG_NAME</title>HOST_MCU_SPI_MOSI</text>
-<text stroke="none" x="-34" fill="black" font-size="30.000006000000003">
-<title>$XR0</title>2&nbsp;</text>
-</g>
-<g transform="translate(4750,-4150)">
-<line x2="850" stroke="goldenrod"></line>
-<text stroke="none" x="90" y="-10" fill="orange" font-size="30.000006000000003">
-<title>SIG_NAME</title>HOST_MCU_WP_OD</text>
-<text stroke="none" x="-34" fill="black" font-size="30.000006000000003">
-<title>$XR0</title>2&nbsp;</text>
-</g>
-<g transform="translate(6250,-900)">
-<line x2="700" stroke="goldenrod"></line>
-</g>
-<g transform="translate(6250,-1200)">
-<line x2="700" stroke="goldenrod"></line>
-</g>
-<g transform="translate(4750,-2950)">
-<line x2="550" stroke="goldenrod"></line>
-<text stroke="none" x="40" y="-10" fill="orange" font-size="30.000006000000003">
-<title>SIG_NAME</title>HOST_SEL</text>
-<text stroke="none" x="-34" fill="black" font-size="30.000006000000003">
-<title>$XR0</title>3&nbsp;</text>
-</g>
-<g transform="translate(6950,-900)">
-<line y2="-300" stroke="goldenrod"></line>
-</g>
-<g transform="translate(6950,-1200)">
-<line x2="450" stroke="goldenrod"></line>
-<text stroke="none" x="190" y="-10" fill="orange" font-size="30.000006000000003">
-<title>SIG_NAME</title>HOST_SEL</text>
-<text stroke="none" x="480" fill="black" font-size="30.000006000000003">
-<title>$XR0</title>3&nbsp;</text>
-</g>
-<g transform="translate(5300,-2900)">
-<line x2="300" stroke="goldenrod"></line>
-</g>
-<g transform="translate(5300,-2950)">
-<line y2="50" stroke="goldenrod"></line>
-</g>
-<g transform="translate(4750,-4300)">
-<line x2="550" stroke="goldenrod"></line>
-<text stroke="none" x="90" y="-10" fill="orange" font-size="30.000006000000003">
-<title>SIG_NAME</title>HOST_SEL</text>
-<text stroke="none" x="-34" fill="black" font-size="30.000006000000003">
-<title>$XR0</title>3&nbsp;</text>
-</g>
-<g transform="translate(5300,-4250)">
-<line x2="300" stroke="goldenrod"></line>
-</g>
-<g transform="translate(4750,-4850)">
-<line x2="950" stroke="goldenrod"></line>
-<text stroke="none" x="90" y="-10" fill="orange" font-size="38.000017">
-<title>SIG_NAME</title>HOST_SEL</text>
-<text stroke="none" x="-34" fill="black" font-size="30.000006000000003">
-<title>$XR0</title>3&nbsp;</text>
-</g>
-<g transform="translate(5300,-4300)">
-<line y2="50" stroke="goldenrod"></line>
-</g>
-<g transform="translate(6250,-1300)">
-<line x2="550" stroke="goldenrod"></line>
-<text stroke="none" x="240" y="-10" fill="orange" font-size="30.000006000000003">
-<title>SIG_NAME</title>MCU_BOOT0</text>
-<text stroke="none" x="580" fill="black" font-size="30.000006000000003">
-<title>$XR0</title>2&nbsp;</text>
-</g>
-<g transform="translate(6250,-1000)">
-<line x2="550" stroke="goldenrod"></line>
-<text stroke="none" x="240" y="-10" fill="orange" font-size="30.000006000000003">
-<title>SIG_NAME</title>MCU_BOOT1</text>
-<text stroke="none" x="580" fill="black" font-size="30.000006000000003">
-<title>$XR0</title>2&nbsp;</text>
-</g>
-<g transform="translate(4700,-1200)">
-<line x2="850" stroke="goldenrod"></line>
-<text stroke="none" x="90" y="-10" fill="orange" font-size="30.000006000000003">
-<title>SIG_NAME</title>PLATFORM_MCU_BOOT0</text>
-<text stroke="none" x="-64" fill="black" font-size="30.000006000000003">
-<title>$XR0</title>4&nbsp;</text>
-</g>
-<g transform="translate(4700,-900)">
-<line x2="850" stroke="goldenrod"></line>
-<text stroke="none" x="90" y="-10" fill="orange" font-size="30.000006000000003">
-<title>SIG_NAME</title>PLATFORM_MCU_BOOT1</text>
-<text stroke="none" x="-64" fill="black" font-size="30.000006000000003">
-<title>$XR0</title>4&nbsp;</text>
-</g>
-<g transform="translate(6000,-2750)">
-<line x2="1000" stroke="goldenrod"></line>
-<text stroke="none" x="240" y="-10" fill="orange" font-size="30.000006000000003">
-<title>SIG_NAME</title>PLATFORM_MCU_SLP_S0_L</text>
-<text stroke="none" x="1030" fill="black" font-size="30.000006000000003">
-<title>$XR0</title>4&nbsp;</text>
-</g>
-<g transform="translate(6000,-2600)">
-<line x2="1000" stroke="goldenrod"></line>
-<text stroke="none" x="240" y="-10" fill="orange" font-size="30.000006000000003">
-<title>SIG_NAME</title>PLATFORM_MCU_SLP_S3_L</text>
-<text stroke="none" x="1030" fill="black" font-size="30.000006000000003">
-<title>$XR0</title>4&nbsp;</text>
-</g>
-<g transform="translate(6000,-3950)">
-<line x2="1000" stroke="goldenrod"></line>
-<text stroke="none" x="290" y="-10" fill="orange" font-size="30.000006000000003">
-<title>SIG_NAME</title>PLATFORM_MCU_SPI_CLK</text>
-<text stroke="none" x="1030" fill="black" font-size="30.000006000000003">
-<title>$XR0</title>4&nbsp;</text>
-</g>
-<g transform="translate(6000,-3800)">
-<line x2="1000" stroke="goldenrod"></line>
-<text stroke="none" x="290" y="-10" fill="orange" font-size="30.000006000000003">
-<title>SIG_NAME</title>PLATFORM_MCU_SPI_MISO</text>
-<text stroke="none" x="1030" fill="black" font-size="30.000006000000003">
-<title>$XR0</title>4&nbsp;</text>
-</g>
-<g transform="translate(6000,-3650)">
-<line x2="1000" stroke="goldenrod"></line>
-<text stroke="none" x="290" y="-10" fill="orange" font-size="30.000006000000003">
-<title>SIG_NAME</title>PLATFORM_MCU_SPI_MOSI</text>
-<text stroke="none" x="1030" fill="black" font-size="30.000006000000003">
-<title>$XR0</title>4&nbsp;</text>
-</g>
-<g transform="translate(6000,-4100)">
-<line x2="1000" stroke="goldenrod"></line>
-<text stroke="none" x="290" y="-10" fill="orange" font-size="30.000006000000003">
-<title>SIG_NAME</title>PLATFORM_MCU_WP_OD</text>
-<text stroke="none" x="1030" fill="black" font-size="30.000006000000003">
-<title>$XR0</title>4&nbsp;</text>
-</g>
-<g transform="translate(2450,-1100)">
-<line x2="550" stroke="goldenrod"></line>
-</g>
-<g transform="translate(3000,-900)">
-<line x2="-400" stroke="goldenrod" stroke-width="6"></line>
-</g>
-<g transform="translate(3000,-900)">
-<line x2="450" stroke="goldenrod" stroke-width="6"></line>
-<text stroke="none" x="140" y="-10" fill="orange" font-size="38.000017">
-<title>SIG_NAME</title>PP1800</text>
-<text stroke="none" x="600" fill="black" font-size="30.000006000000003">
-<title>$XR2</title>5&nbsp;</text>
-<text stroke="none" x="540" fill="black" font-size="30.000006000000003">
-<title>$XR1</title>3&nbsp;</text>
-<text stroke="none" x="480" fill="black" font-size="30.000006000000003">
-<title>$XR0</title>2&nbsp;</text>
-</g>
-<g transform="translate(3000,-1100)">
-<line y2="200" stroke="goldenrod"></line>
-</g>
-<g transform="translate(2600,-3250)">
-<line x2="250" stroke="goldenrod" stroke-width="6"></line>
-</g>
-<g transform="translate(2450,-3500)">
-<line x2="400" stroke="goldenrod"></line>
-</g>
-<g transform="translate(2850,-3250)">
-<line y2="-150" stroke="goldenrod" stroke-width="6"></line>
-</g>
-<g transform="translate(2850,-3400)">
-<line x2="650" stroke="goldenrod" stroke-width="6"></line>
-<text stroke="none" x="360" y="-10" fill="orange" font-size="38.000017">
-<title>SIG_NAME</title>PP1800</text>
-<text stroke="none" x="800" fill="black" font-size="30.000006000000003">
-<title>$XR2</title>5&nbsp;</text>
-<text stroke="none" x="740" fill="black" font-size="30.000006000000003">
-<title>$XR1</title>3&nbsp;</text>
-<text stroke="none" x="680" fill="black" font-size="30.000006000000003">
-<title>$XR0</title>2&nbsp;</text>
-</g>
-<g transform="translate(2850,-3500)">
-<line y2="100" stroke="goldenrod"></line>
-</g>
-<g transform="translate(1050,-900)">
-<line x2="750" stroke="goldenrod" stroke-width="6"></line>
-<text stroke="none" x="40" y="-10" fill="orange" font-size="38.000017">
-<title>SIG_NAME</title>PP1800_PLATFORM</text>
-<text stroke="none" x="-124" fill="black" font-size="30.000006000000003">
-<title>$XR1</title>4&nbsp;</text>
-<text stroke="none" x="-64" fill="black" font-size="30.000006000000003">
-<title>$XR0</title>3&nbsp;</text>
-</g>
-<g transform="translate(1800,-900)">
-<line y2="-200" stroke="goldenrod" stroke-width="6"></line>
-</g>
-<g transform="translate(1800,-900)">
-<line x2="200" stroke="goldenrod" stroke-width="6"></line>
-</g>
-<g transform="translate(2000,-800)">
-<line y2="-100" stroke="goldenrod"></line>
-</g>
-<g transform="translate(2000,-800)">
-<line x2="200" stroke="goldenrod"></line>
-</g>
-<g transform="translate(1800,-1100)">
-<line x2="500" stroke="goldenrod" stroke-width="6"></line>
-</g>
-<g transform="translate(2000,-900)">
-<line x2="200" stroke="goldenrod"></line>
-</g>
-<g transform="translate(1100,-2850)">
-<line y2="-50" stroke="goldenrod" stroke-width="6"></line>
-</g>
-<g transform="translate(1100,-2900)">
-<line x2="-700" stroke="goldenrod" stroke-width="6"></line>
-<text stroke="none" x="-660" y="-10" fill="orange" font-size="38.000017">
-<title>SIG_NAME</title>PP1800_PLATFORM</text>
-<text stroke="none" x="-794" fill="black" font-size="30.000006000000003">
-<title>$XR1</title>4&nbsp;</text>
-<text stroke="none" x="-734" fill="black" font-size="30.000006000000003">
-<title>$XR0</title>3&nbsp;</text>
-</g>
-<g transform="translate(1150,-2900)">
-<line x2="-50" stroke="goldenrod" stroke-width="6"></line>
-</g>
-<g transform="translate(400,-3400)">
-<line x2="900" stroke="goldenrod" stroke-width="6"></line>
-<text stroke="none" x="40" y="-10" fill="orange" font-size="38.000017">
-<title>SIG_NAME</title>PP1800_SERVO</text>
-<text stroke="none" x="-34" fill="black" font-size="30.000006000000003">
-<title>$XR0</title>4&nbsp;</text>
-</g>
-<g transform="translate(1300,-3350)">
-<line y2="-50" stroke="goldenrod"></line>
-</g>
-<g transform="translate(1300,-3400)">
-<line x2="650" stroke="goldenrod" stroke-width="6"></line>
-</g>
-<g transform="translate(1950,-3250)">
-<line y2="-150" stroke="goldenrod" stroke-width="6"></line>
-</g>
-<g transform="translate(1950,-3250)">
-<line x2="250" stroke="goldenrod" stroke-width="6"></line>
-</g>
-<g transform="translate(1950,-3400)">
-<line y2="-100" stroke="goldenrod" stroke-width="6"></line>
-</g>
-<g transform="translate(1950,-3500)">
-<line x2="350" stroke="goldenrod" stroke-width="6"></line>
-</g>
-<g transform="translate(2650,-1800)">
-<line x2="150" stroke="goldenrod" stroke-width="6"></line>
-</g>
-<g transform="translate(2650,-1850)">
-<line x2="150" stroke="goldenrod" stroke-width="6"></line>
-</g>
-<g transform="translate(2450,-2100)">
-<line x2="550" stroke="goldenrod"></line>
-</g>
-<g transform="translate(2650,-1900)">
-<line x2="150" stroke="goldenrod" stroke-width="6"></line>
-</g>
-<g transform="translate(2800,-1800)">
-<line y2="-50" stroke="goldenrod" stroke-width="6"></line>
-</g>
-<g transform="translate(2800,-1850)">
-<line y2="-50" stroke="goldenrod" stroke-width="6"></line>
-</g>
-<g transform="translate(2800,-1900)">
-<line x2="200" stroke="goldenrod" stroke-width="6"></line>
-</g>
-<g transform="translate(3000,-1900)">
-<line x2="450" stroke="goldenrod" stroke-width="6"></line>
-<text stroke="none" x="140" y="-10" fill="orange" font-size="38.000017">
-<title>SIG_NAME</title>PP3300</text>
-<text stroke="none" x="660" fill="black" font-size="30.000006000000003">
-<title>$XR3</title>5&nbsp;</text>
-<text stroke="none" x="600" fill="black" font-size="30.000006000000003">
-<title>$XR2</title>4&nbsp;</text>
-<text stroke="none" x="540" fill="black" font-size="30.000006000000003">
-<title>$XR1</title>3&nbsp;</text>
-<text stroke="none" x="480" fill="black" font-size="30.000006000000003">
-<title>$XR0</title>2&nbsp;</text>
-</g>
-<g transform="translate(3000,-2100)">
-<line y2="200" stroke="goldenrod"></line>
-</g>
-<g transform="translate(2650,-4400)">
-<line x2="150" stroke="goldenrod" stroke-width="6"></line>
-</g>
-<g transform="translate(2650,-4450)">
-<line x2="150" stroke="goldenrod" stroke-width="6"></line>
-</g>
-<g transform="translate(2450,-4700)">
-<line x2="550" stroke="goldenrod"></line>
-</g>
-<g transform="translate(2650,-4500)">
-<line x2="150" stroke="goldenrod" stroke-width="6"></line>
-</g>
-<g transform="translate(2800,-4400)">
-<line y2="-50" stroke="goldenrod" stroke-width="6"></line>
-</g>
-<g transform="translate(2800,-4450)">
-<line y2="-50" stroke="goldenrod" stroke-width="6"></line>
-</g>
-<g transform="translate(2800,-4500)">
-<line x2="200" stroke="goldenrod" stroke-width="6"></line>
-</g>
-<g transform="translate(5850,-1500)">
-<line y2="-100" stroke="goldenrod"></line>
-</g>
-<g transform="translate(5850,-1600)">
-<line x2="600" stroke="goldenrod" stroke-width="6"></line>
-</g>
-<g transform="translate(3000,-4500)">
-<line x2="450" stroke="goldenrod" stroke-width="6"></line>
-<text stroke="none" x="140" y="-10" fill="orange" font-size="38.000017">
-<title>SIG_NAME</title>PP3300</text>
-<text stroke="none" x="660" fill="black" font-size="30.000006000000003">
-<title>$XR3</title>5&nbsp;</text>
-<text stroke="none" x="600" fill="black" font-size="30.000006000000003">
-<title>$XR2</title>4&nbsp;</text>
-<text stroke="none" x="540" fill="black" font-size="30.000006000000003">
-<title>$XR1</title>3&nbsp;</text>
-<text stroke="none" x="480" fill="black" font-size="30.000006000000003">
-<title>$XR0</title>2&nbsp;</text>
-</g>
-<g transform="translate(3000,-4700)">
-<line y2="200" stroke="goldenrod"></line>
-</g>
-<g transform="translate(6450,-1550)">
-<line y2="-50" stroke="goldenrod" stroke-width="6"></line>
-</g>
-<g transform="translate(6850,-1600)">
-<line x2="-400" stroke="goldenrod" stroke-width="6"></line>
-<text stroke="none" x="-260" y="-10" fill="orange" font-size="38.000017">
-<title>SIG_NAME</title>PP3300</text>
-<text stroke="none" x="210" fill="black" font-size="30.000006000000003">
-<title>$XR3</title>5&nbsp;</text>
-<text stroke="none" x="150" fill="black" font-size="30.000006000000003">
-<title>$XR2</title>4&nbsp;</text>
-<text stroke="none" x="90" fill="black" font-size="30.000006000000003">
-<title>$XR1</title>3&nbsp;</text>
-<text stroke="none" x="30" fill="black" font-size="30.000006000000003">
-<title>$XR0</title>2&nbsp;</text>
-</g>
-<g transform="translate(6000,-2900)">
-<line x2="1200" stroke="goldenrod" stroke-width="6"></line>
-</g>
-<g transform="translate(7200,-2900)">
-<line y2="100" stroke="goldenrod" stroke-width="6"></line>
-</g>
-<g transform="translate(6000,-4250)">
-<line x2="1200" stroke="goldenrod" stroke-width="6"></line>
-</g>
-<g transform="translate(7600,-2900)">
-<line x2="-400" stroke="goldenrod" stroke-width="6"></line>
-<text stroke="none" x="-260" y="-10" fill="orange" font-size="38.000017">
-<title>SIG_NAME</title>PP3300</text>
-<text stroke="none" x="210" fill="black" font-size="30.000006000000003">
-<title>$XR3</title>5&nbsp;</text>
-<text stroke="none" x="150" fill="black" font-size="30.000006000000003">
-<title>$XR2</title>4&nbsp;</text>
-<text stroke="none" x="90" fill="black" font-size="30.000006000000003">
-<title>$XR1</title>3&nbsp;</text>
-<text stroke="none" x="30" fill="black" font-size="30.000006000000003">
-<title>$XR0</title>2&nbsp;</text>
-</g>
-<g transform="translate(7200,-4250)">
-<line y2="100" stroke="goldenrod" stroke-width="6"></line>
-</g>
-<g transform="translate(7600,-4250)">
-<line x2="-400" stroke="goldenrod" stroke-width="6"></line>
-<text stroke="none" x="-260" y="-10" fill="orange" font-size="38.000017">
-<title>SIG_NAME</title>PP3300</text>
-<text stroke="none" x="210" fill="black" font-size="30.000006000000003">
-<title>$XR3</title>5&nbsp;</text>
-<text stroke="none" x="150" fill="black" font-size="30.000006000000003">
-<title>$XR2</title>4&nbsp;</text>
-<text stroke="none" x="90" fill="black" font-size="30.000006000000003">
-<title>$XR1</title>3&nbsp;</text>
-<text stroke="none" x="30" fill="black" font-size="30.000006000000003">
-<title>$XR0</title>2&nbsp;</text>
-</g>
-<g transform="translate(1050,-1900)">
-<line x2="750" stroke="goldenrod" stroke-width="6"></line>
-<text stroke="none" x="40" y="-10" fill="orange" font-size="38.000017">
-<title>SIG_NAME</title>PP3300_PLATFORM</text>
-<text stroke="none" x="-124" fill="black" font-size="30.000006000000003">
-<title>$XR1</title>4&nbsp;</text>
-<text stroke="none" x="-64" fill="black" font-size="30.000006000000003">
-<title>$XR0</title>3&nbsp;</text>
-</g>
-<g transform="translate(2000,-1650)">
-<line y2="-150" stroke="goldenrod"></line>
-</g>
-<g transform="translate(1800,-1900)">
-<line y2="-200" stroke="goldenrod" stroke-width="6"></line>
-</g>
-<g transform="translate(1800,-1900)">
-<line x2="200" stroke="goldenrod" stroke-width="6"></line>
-</g>
-<g transform="translate(2000,-1800)">
-<line y2="-50" stroke="goldenrod"></line>
-</g>
-<g transform="translate(2150,-1650)">
-<line x2="-150" stroke="goldenrod"></line>
-</g>
-<g transform="translate(2000,-1850)">
-<line y2="-50" stroke="goldenrod"></line>
-</g>
-<g transform="translate(1800,-2100)">
-<line x2="500" stroke="goldenrod" stroke-width="6"></line>
-</g>
-<g transform="translate(2150,-1800)">
-<line x2="-150" stroke="goldenrod"></line>
-</g>
-<g transform="translate(2150,-1850)">
-<line x2="-150" stroke="goldenrod"></line>
-</g>
-<g transform="translate(2150,-1900)">
-<line x2="-150" stroke="goldenrod"></line>
-</g>
-<g transform="translate(1100,-3950)">
-<line y2="-50" stroke="goldenrod" stroke-width="6"></line>
-</g>
-<g transform="translate(1100,-4000)">
-<line x2="-700" stroke="goldenrod" stroke-width="6"></line>
-<text stroke="none" x="-660" y="-10" fill="orange" font-size="38.000017">
-<title>SIG_NAME</title>PP3300_PLATFORM</text>
-<text stroke="none" x="-794" fill="black" font-size="30.000006000000003">
-<title>$XR1</title>4&nbsp;</text>
-<text stroke="none" x="-734" fill="black" font-size="30.000006000000003">
-<title>$XR0</title>3&nbsp;</text>
-</g>
-<g transform="translate(1150,-4000)">
-<line x2="-50" stroke="goldenrod" stroke-width="6"></line>
-</g>
-<g transform="translate(6600,-4950)">
-<line x2="850" stroke="goldenrod" stroke-width="6"></line>
-<text stroke="none" x="240" y="-10" fill="orange" font-size="38.000017">
-<title>SIG_NAME</title>PP3300_PLATFORM</text>
-<text stroke="none" x="940" fill="black" font-size="30.000006000000003">
-<title>$XR1</title>4&nbsp;</text>
-<text stroke="none" x="880" fill="black" font-size="30.000006000000003">
-<title>$XR0</title>3&nbsp;</text>
-</g>
-<g transform="translate(400,-4500)">
-<line x2="900" stroke="goldenrod" stroke-width="6"></line>
-<text stroke="none" x="40" y="-10" fill="orange" font-size="38.000017">
-<title>SIG_NAME</title>PP3300_SERVO</text>
-<text stroke="none" x="-34" fill="black" font-size="30.000006000000003">
-<title>$XR0</title>4&nbsp;</text>
-</g>
-<g transform="translate(1300,-4450)">
-<line y2="-50" stroke="goldenrod"></line>
-</g>
-<g transform="translate(1300,-4500)">
-<line x2="550" stroke="goldenrod" stroke-width="6"></line>
-</g>
-<g transform="translate(1850,-4500)">
-<line x2="150" stroke="goldenrod" stroke-width="6"></line>
-</g>
-<g transform="translate(1850,-4500)">
-<line y2="-200" stroke="goldenrod" stroke-width="6"></line>
-</g>
-<g transform="translate(2000,-4400)">
-<line y2="-50" stroke="goldenrod"></line>
-</g>
-<g transform="translate(2000,-4450)">
-<line y2="-50" stroke="goldenrod"></line>
-</g>
-<g transform="translate(1850,-4700)">
-<line x2="450" stroke="goldenrod" stroke-width="6"></line>
-</g>
-<g transform="translate(2150,-4400)">
-<line x2="-150" stroke="goldenrod"></line>
-</g>
-<g transform="translate(2150,-4450)">
-<line x2="-150" stroke="goldenrod"></line>
-</g>
-<g transform="translate(2150,-4500)">
-<line x2="-150" stroke="goldenrod"></line>
-</g>
-<g transform="translate(4700,-1300)">
-<line x2="850" stroke="goldenrod"></line>
-<text stroke="none" x="90" y="-10" fill="orange" font-size="30.000006000000003">
-<title>SIG_NAME</title>SERVO_MCU_BOOT0</text>
-<text stroke="none" x="-64" fill="black" font-size="30.000006000000003">
-<title>$XR0</title>4&nbsp;</text>
-</g>
-<g transform="translate(4700,-1000)">
-<line x2="850" stroke="goldenrod"></line>
-<text stroke="none" x="90" y="-10" fill="orange" font-size="30.000006000000003">
-<title>SIG_NAME</title>SERVO_MCU_BOOT1</text>
-<text stroke="none" x="-64" fill="black" font-size="30.000006000000003">
-<title>$XR0</title>4&nbsp;</text>
-</g>
-<g transform="translate(6000,-2800)">
-<line x2="1000" stroke="goldenrod"></line>
-<text stroke="none" x="240" y="-10" fill="orange" font-size="30.000006000000003">
-<title>SIG_NAME</title>SERVO_MCU_SLP_S0_L</text>
-<text stroke="none" x="1030" fill="black" font-size="30.000006000000003">
-<title>$XR0</title>4&nbsp;</text>
-</g>
-<g transform="translate(6000,-2650)">
-<line x2="1000" stroke="goldenrod"></line>
-<text stroke="none" x="240" y="-10" fill="orange" font-size="30.000006000000003">
-<title>SIG_NAME</title>SERVO_MCU_SLP_S3_L</text>
-<text stroke="none" x="1030" fill="black" font-size="30.000006000000003">
-<title>$XR0</title>4&nbsp;</text>
-</g>
-<g transform="translate(6000,-4000)">
-<line x2="1000" stroke="goldenrod"></line>
-<text stroke="none" x="290" y="-10" fill="orange" font-size="30.000006000000003">
-<title>SIG_NAME</title>SERVO_MCU_SPI_CLK</text>
-<text stroke="none" x="1030" fill="black" font-size="30.000006000000003">
-<title>$XR0</title>4&nbsp;</text>
-</g>
-<g transform="translate(6000,-3850)">
-<line x2="1000" stroke="goldenrod"></line>
-<text stroke="none" x="290" y="-10" fill="orange" font-size="30.000006000000003">
-<title>SIG_NAME</title>SERVO_MCU_SPI_MISO</text>
-<text stroke="none" x="1030" fill="black" font-size="30.000006000000003">
-<title>$XR0</title>4&nbsp;</text>
-</g>
-<g transform="translate(6000,-3700)">
-<line x2="1000" stroke="goldenrod"></line>
-<text stroke="none" x="290" y="-10" fill="orange" font-size="30.000006000000003">
-<title>SIG_NAME</title>SERVO_MCU_SPI_MOSI</text>
-<text stroke="none" x="1030" fill="black" font-size="30.000006000000003">
-<title>$XR0</title>4&nbsp;</text>
-</g>
-<g transform="translate(6000,-4150)">
-<line x2="1000" stroke="goldenrod"></line>
-<text stroke="none" x="290" y="-10" fill="orange" font-size="30.000006000000003">
-<title>SIG_NAME</title>SERVO_MCU_WP_OD</text>
-<text stroke="none" x="1030" fill="black" font-size="30.000006000000003">
-<title>$XR0</title>4&nbsp;</text>
-</g>
-<g transform="translate(4750,-2800)">
-<line x2="850" stroke="goldenrod"></line>
-<text stroke="none" x="40" y="-10" fill="orange" font-size="30.000006000000003">
-<title>SIG_NAME</title>SLP_S0_L</text>
-<text stroke="none" x="-34" fill="black" font-size="30.000006000000003">
-<title>$XR0</title>2&nbsp;</text>
-</g>
-<g transform="translate(4750,-2650)">
-<line x2="850" stroke="goldenrod"></line>
-<text stroke="none" x="40" y="-10" fill="orange" font-size="30.000006000000003">
-<title>SIG_NAME</title>SLP_S3_L</text>
-<text stroke="none" x="-34" fill="black" font-size="30.000006000000003">
-<title>$XR0</title>2&nbsp;</text>
-</g>
-<g transform="translate(4750,-2350)">
-<line x2="850" stroke="goldenrod"></line>
-<text stroke="none" x="40" y="-10" fill="orange" font-size="30.000006000000003">
-<title>SIG_NAME</title>UART1_HOST_TX_MCU_RX</text>
-<text stroke="none" x="-34" fill="black" font-size="30.000006000000003">
-<title>$XR0</title>2&nbsp;</text>
-</g>
-<g transform="translate(4750,-2500)">
-<line x2="850" stroke="goldenrod"></line>
-<text stroke="none" x="40" y="-10" fill="orange" font-size="30.000006000000003">
-<title>SIG_NAME</title>UART1_MCU_TX_HOST_RX</text>
-<text stroke="none" x="-34" fill="black" font-size="30.000006000000003">
-<title>$XR0</title>2&nbsp;</text>
-</g>
-<g transform="translate(6000,-2450)">
-<line x2="1000" stroke="goldenrod"></line>
-<text stroke="none" x="240" y="-10" fill="orange" font-size="30.000006000000003">
-<title>SIG_NAME</title>UART1_MCU_TX_PLATFORM_RX</text>
-<text stroke="none" x="1030" fill="black" font-size="30.000006000000003">
-<title>$XR0</title>4&nbsp;</text>
-</g>
-<g transform="translate(6000,-2500)">
-<line x2="1000" stroke="goldenrod"></line>
-<text stroke="none" x="240" y="-10" fill="orange" font-size="30.000006000000003">
-<title>SIG_NAME</title>UART1_MCU_TX_SERVO_RX</text>
-<text stroke="none" x="1030" fill="black" font-size="30.000006000000003">
-<title>$XR0</title>4&nbsp;</text>
-</g>
-<g transform="translate(6000,-2300)">
-<line x2="1000" stroke="goldenrod"></line>
-<text stroke="none" x="240" y="-10" fill="orange" font-size="30.000006000000003">
-<title>SIG_NAME</title>UART1_PLATFORM_TX_MCU_RX</text>
-<text stroke="none" x="1030" fill="black" font-size="30.000006000000003">
-<title>$XR0</title>4&nbsp;</text>
-</g>
-<g transform="translate(6000,-2350)">
-<line x2="1000" stroke="goldenrod"></line>
-<text stroke="none" x="240" y="-10" fill="orange" font-size="30.000006000000003">
-<title>SIG_NAME</title>UART1_SERVO_TX_MCU_RX</text>
-<text stroke="none" x="1030" fill="black" font-size="30.000006000000003">
-<title>$XR0</title>4&nbsp;</text>
-</g>
-<g transform="translate(1800,-1600)">
-<line y2="50" stroke="goldenrod"></line>
-</g>
-<g transform="translate(2150,-1600)">
-<line x2="-350" stroke="goldenrod"></line>
-</g>
-<g transform="translate(2000,-4200)">
-<line y2="150" stroke="goldenrod"></line>
-</g>
-<g transform="translate(2150,-4200)">
-<line x2="-150" stroke="goldenrod"></line>
-</g>
-<g transform="translate(6000,-4950)">
-<line x2="450" stroke="goldenrod" stroke-width="6"></line>
-</g>
-<circle cx="1300" cy="-3150" r="10" stroke="black" fill="black"></circle>
-<circle cx="1300" cy="-4250" r="10" stroke="black" fill="black"></circle>
-<circle cx="3000" cy="-1600" r="10" stroke="black" fill="black"></circle>
-<circle cx="3000" cy="-4200" r="10" stroke="black" fill="black"></circle>
-<circle cx="6950" cy="-1200" r="10" stroke="black" fill="black"></circle>
-<circle cx="3000" cy="-900" r="10" stroke="black" fill="black"></circle>
-<circle cx="2850" cy="-3400" r="10" stroke="black" fill="black"></circle>
-<circle cx="1800" cy="-900" r="10" stroke="black" fill="black"></circle>
-<circle cx="2000" cy="-900" r="10" stroke="black" fill="black"></circle>
-<circle cx="1100" cy="-2900" r="10" stroke="black" fill="black"></circle>
-<circle cx="1300" cy="-3400" r="10" stroke="black" fill="black"></circle>
-<circle cx="1950" cy="-3400" r="10" stroke="black" fill="black"></circle>
-<circle cx="2800" cy="-1850" r="10" stroke="black" fill="black"></circle>
-<circle cx="2800" cy="-1900" r="10" stroke="black" fill="black"></circle>
-<circle cx="3000" cy="-1900" r="10" stroke="black" fill="black"></circle>
-<circle cx="2800" cy="-4450" r="10" stroke="black" fill="black"></circle>
-<circle cx="2800" cy="-4500" r="10" stroke="black" fill="black"></circle>
-<circle cx="3000" cy="-4500" r="10" stroke="black" fill="black"></circle>
-<circle cx="6450" cy="-1600" r="10" stroke="black" fill="black"></circle>
-<circle cx="7200" cy="-2900" r="10" stroke="black" fill="black"></circle>
-<circle cx="7200" cy="-4250" r="10" stroke="black" fill="black"></circle>
-<circle cx="1800" cy="-1900" r="10" stroke="black" fill="black"></circle>
-<circle cx="2000" cy="-1800" r="10" stroke="black" fill="black"></circle>
-<circle cx="2000" cy="-1850" r="10" stroke="black" fill="black"></circle>
-<circle cx="2000" cy="-1900" r="10" stroke="black" fill="black"></circle>
-<circle cx="1100" cy="-4000" r="10" stroke="black" fill="black"></circle>
-<circle cx="1300" cy="-4500" r="10" stroke="black" fill="black"></circle>
-<circle cx="1850" cy="-4500" r="10" stroke="black" fill="black"></circle>
-<circle cx="2000" cy="-4450" r="10" stroke="black" fill="black"></circle>
-<circle cx="2000" cy="-4500" r="10" stroke="black" fill="black"></circle>
-</svg>
-
-</div>
-</div>
-<hr>
-<div id="page4">
-<h1>dragonclaw/page4: HOST CONNECTORS</h1>
-<div>
-<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0,-5500,8500,5500" width="14.87500in" height="9.62500in" font-family="monospace" font-size="47.000000" stroke-width="3" style="background-color:white">
-<use href="#symbol:border_b.3" fill="green" stroke="green"></use>
-<text stroke="none" x="6570" y="-95" fill="green" font-size="26.999996">
-<title>CUSTOM_TXT_CDS</title>Fri Jan 17 12:53:13 2020</text>
-<text stroke="none" x="6500" y="-170" fill="green" font-size="33.999988">
-<title>CUSTOM_TXT_CDS</title>dragonclaw</text>
-<text stroke="none" x="7500" y="-175" fill="green" font-size="30.000006000000003">
-<title>CUSTOM_TXT_CDS</title>650-03910-01-SCH</text>
-<text stroke="none" x="8265" y="-175" fill="green" font-size="33.999988" text-anchor="middle">
-<title>CUSTOM_TXT_CDS</title>0.2</text>
-<text stroke="none" x="8427" y="-84" fill="green" font-size="26.999996" text-anchor="end">
-<title>CUSTOM_TXT_CDS</title>4 OF 5</text>
-<text stroke="none" x="8427" y="-119" fill="green" font-size="26.999996" text-anchor="end">
-<title>CUSTOM_TXT_CDS</title>4 OF 5</text>
-<text stroke="none" x="7212" y="-260" fill="orange" font-size="67.999976" text-anchor="middle">
-<title>PAGE_TITLE</title>HOST CONNECTORS</text>
-<g id="J1.1" transform="translate(5700,-4000)">
-<use href="#symbol:panasonic_p4.1" fill="green" stroke="green"></use>
-<text stroke="none" x="-122" y="-725" fill="orange" font-size="23.999986000000003" text-anchor="end">
-<title>PATH</title>I6</text>
-<text stroke="none" x="-125" y="870" fill="orange" font-size="23.999986000000003">
-<title>PACK_TYPE</title>50P</text>
-<text stroke="none" x="-125" y="830" fill="orange" font-size="23.999986000000003">
-<title>MFGR_PN</title>AXK750147G</text>
-<text stroke="none" x="-125" y="750" fill="orange" font-size="23.999986000000003">
-<title>AGILE_PN</title>210-00792-00</text>
-<text stroke="none" x="-125" y="790" fill="orange" font-size="23.999986000000003">
-<title>MFGR</title>PANASONIC</text>
-<text stroke="none" x="-210" y="-160" fill="black" font-size="31.999997" text-anchor="end">
-<title>$PN</title>21</text>
-<text stroke="none" x="210" y="240" fill="black" font-size="31.999997">
-<title>$PN</title>38</text>
-<text stroke="none" x="-210" y="-110" fill="black" font-size="31.999997" text-anchor="end">
-<title>$PN</title>23</text>
-<text stroke="none" x="210" y="290" fill="black" font-size="31.999997">
-<title>$PN</title>40</text>
-<text stroke="none" x="-210" y="-60" fill="black" font-size="31.999997" text-anchor="end">
-<title>$PN</title>25</text>
-<text stroke="none" x="210" y="340" fill="black" font-size="31.999997">
-<title>$PN</title>42</text>
-<text stroke="none" x="-210" y="-10" fill="black" font-size="31.999997" text-anchor="end">
-<title>$PN</title>27</text>
-<text stroke="none" x="210" y="390" fill="black" font-size="31.999997">
-<title>$PN</title>44</text>
-<text stroke="none" x="-210" y="40" fill="black" font-size="31.999997" text-anchor="end">
-<title>$PN</title>29</text>
-<text stroke="none" x="210" y="440" fill="black" font-size="31.999997">
-<title>$PN</title>46</text>
-<text stroke="none" x="-210" y="90" fill="black" font-size="31.999997" text-anchor="end">
-<title>$PN</title>31</text>
-<text stroke="none" x="210" y="490" fill="black" font-size="31.999997">
-<title>$PN</title>48</text>
-<text stroke="none" x="-210" y="140" fill="black" font-size="31.999997" text-anchor="end">
-<title>$PN</title>33</text>
-<text stroke="none" x="210" y="540" fill="black" font-size="31.999997">
-<title>$PN</title>50</text>
-<text stroke="none" x="-210" y="190" fill="black" font-size="31.999997" text-anchor="end">
-<title>$PN</title>35</text>
-<text stroke="none" x="-210" y="240" fill="black" font-size="31.999997" text-anchor="end">
-<title>$PN</title>37</text>
-<text stroke="none" x="-210" y="290" fill="black" font-size="31.999997" text-anchor="end">
-<title>$PN</title>39</text>
-<text stroke="none" x="-210" y="340" fill="black" font-size="31.999997" text-anchor="end">
-<title>$PN</title>41</text>
-<text stroke="none" x="-210" y="390" fill="black" font-size="31.999997" text-anchor="end">
-<title>$PN</title>43</text>
-<text stroke="none" x="-210" y="440" fill="black" font-size="31.999997" text-anchor="end">
-<title>$PN</title>45</text>
-<text stroke="none" x="-210" y="490" fill="black" font-size="31.999997" text-anchor="end">
-<title>$PN</title>47</text>
-<text stroke="none" x="-210" y="540" fill="black" font-size="31.999997" text-anchor="end">
-<title>$PN</title>49</text>
-<text stroke="none" x="-210" y="-210" fill="black" font-size="31.999997" text-anchor="end">
-<title>$PN</title>19</text>
-<text stroke="none" x="210" y="190" fill="black" font-size="31.999997">
-<title>$PN</title>36</text>
-<text stroke="none" x="-210" y="-260" fill="black" font-size="31.999997" text-anchor="end">
-<title>$PN</title>17</text>
-<text stroke="none" x="210" y="140" fill="black" font-size="31.999997">
-<title>$PN</title>34</text>
-<text stroke="none" x="-210" y="-310" fill="black" font-size="31.999997" text-anchor="end">
-<title>$PN</title>15</text>
-<text stroke="none" x="210" y="90" fill="black" font-size="31.999997">
-<title>$PN</title>32</text>
-<text stroke="none" x="-210" y="-360" fill="black" font-size="31.999997" text-anchor="end">
-<title>$PN</title>13</text>
-<text stroke="none" x="210" y="40" fill="black" font-size="31.999997">
-<title>$PN</title>30</text>
-<text stroke="none" x="-210" y="-410" fill="black" font-size="31.999997" text-anchor="end">
-<title>$PN</title>11</text>
-<text stroke="none" x="210" y="-10" fill="black" font-size="31.999997">
-<title>$PN</title>28</text>
-<text stroke="none" x="-210" y="-460" fill="black" font-size="31.999997" text-anchor="end">
-<title>$PN</title>9</text>
-<text stroke="none" x="210" y="-60" fill="black" font-size="31.999997">
-<title>$PN</title>26</text>
-<text stroke="none" x="-210" y="-510" fill="black" font-size="31.999997" text-anchor="end">
-<title>$PN</title>7</text>
-<text stroke="none" x="210" y="-110" fill="black" font-size="31.999997">
-<title>$PN</title>24</text>
-<text stroke="none" x="-210" y="-560" fill="black" font-size="31.999997" text-anchor="end">
-<title>$PN</title>5</text>
-<text stroke="none" x="210" y="-160" fill="black" font-size="31.999997">
-<title>$PN</title>22</text>
-<text stroke="none" x="-210" y="-610" fill="black" font-size="31.999997" text-anchor="end">
-<title>$PN</title>3</text>
-<text stroke="none" x="210" y="-210" fill="black" font-size="31.999997">
-<title>$PN</title>20</text>
-<text stroke="none" x="-210" y="-660" fill="black" font-size="31.999997" text-anchor="end">
-<title>$PN</title>1</text>
-<text stroke="none" x="210" y="-260" fill="black" font-size="31.999997">
-<title>$PN</title>18</text>
-<text stroke="none" x="210" y="-310" fill="black" font-size="31.999997">
-<title>$PN</title>16</text>
-<text stroke="none" x="210" y="-360" fill="black" font-size="31.999997">
-<title>$PN</title>14</text>
-<text stroke="none" x="210" y="-410" fill="black" font-size="31.999997">
-<title>$PN</title>12</text>
-<text stroke="none" x="210" y="-460" fill="black" font-size="31.999997">
-<title>$PN</title>10</text>
-<text stroke="none" x="210" y="-510" fill="black" font-size="31.999997">
-<title>$PN</title>8</text>
-<text stroke="none" x="210" y="-560" fill="black" font-size="31.999997">
-<title>$PN</title>6</text>
-<text stroke="none" x="210" y="-610" fill="black" font-size="31.999997">
-<title>$PN</title>4</text>
-<text stroke="none" x="210" y="-660" fill="black" font-size="31.999997">
-<title>$PN</title>2</text>
-</g>
-<g id="R26.4" transform="translate(7050,-4450)">
-<use href="#symbol:res.4" fill="green" stroke="green"></use>
-<text stroke="none" x="30" y="-25" fill="orange" font-size="28.999987">
-<title>PACK_TYPE</title>0201</text>
-<text stroke="none" x="20" y="-25" fill="orange" font-size="28.999987" text-anchor="end">
-<title>VALUE</title>1K</text>
-<text stroke="none" x="25" y="-55" fill="black" font-size="28.999987" text-anchor="middle">
-<title>$LOCATION</title>R26</text>
-</g>
-<g id="I8" transform="translate(5300,-3200)">
-<use href="#symbol:gnd.1" fill="green" stroke="green"></use>
-</g>
-<g id="I9" transform="translate(6000,-3200)">
-<use href="#symbol:gnd.1" fill="green" stroke="green"></use>
-</g>
-<g id="R37.4" transform="translate(4800,-3950)">
-<use href="#symbol:res.4" fill="green" stroke="green"></use>
-<text stroke="none" x="150" fill="orange" font-size="23.000014">
-<title>PACK_TYPE</title>0201</text>
-<text stroke="none" x="-100" fill="orange" font-size="23.000014" text-anchor="end">
-<title>VALUE</title>0.0</text>
-<text stroke="none" x="50" y="50" fill="black" font-size="23.000014" text-anchor="middle">
-<title>$LOCATION</title>R37</text>
-</g>
-<g id="R38.4" transform="translate(6350,-4250)">
-<use href="#symbol:res.4" fill="green" stroke="green"></use>
-<text stroke="none" x="150" fill="orange" font-size="23.000014">
-<title>PACK_TYPE</title>0201</text>
-<text stroke="none" x="-100" fill="orange" font-size="23.000014" text-anchor="end">
-<title>VALUE</title>0.0</text>
-<text stroke="none" x="50" y="50" fill="black" font-size="28.999987" text-anchor="middle">
-<title>$LOCATION</title>R38</text>
-</g>
-<g id="J4.1" transform="translate(2200,-1500)">
-<use href="#symbol:con10.1" fill="green" stroke="green"></use>
-<text stroke="none" y="393" fill="green" font-size="30.000006000000003">
-<title>MFGR_PN</title>FTSH-105-01-L-DV-P-TR</text>
-<text stroke="none" y="300" fill="green" font-size="30.000006000000003">
-<title>PACK_TYPE</title>SM</text>
-<text stroke="none" y="343" fill="green" font-size="30.000006000000003">
-<title>MFGR</title>SAMTEC INC</text>
-<text stroke="none" y="243" fill="orange" font-size="30.000006000000003">
-<title>AGILE_PN</title>210-01266-00</text>
-<text stroke="none" y="-250" fill="green" font-size="48.000019" text-anchor="middle">
-<title>$LOCATION</title>J4</text>
-<text stroke="none" x="-110" y="-60" fill="black" font-size="31.999997" text-anchor="end">
-<title>$PN</title>3</text>
-<text stroke="none" x="-110" y="-10" fill="black" font-size="31.999997" text-anchor="end">
-<title>$PN</title>5</text>
-<text stroke="none" x="-110" y="40" fill="black" font-size="31.999997" text-anchor="end">
-<title>$PN</title>7</text>
-<text stroke="none" x="-110" y="90" fill="black" font-size="31.999997" text-anchor="end">
-<title>$PN</title>9</text>
-<text stroke="none" x="-110" y="-110" fill="black" font-size="31.999997" text-anchor="end">
-<title>$PN</title>1</text>
-<text stroke="none" x="110" y="90" fill="black" font-size="31.999997">
-<title>$PN</title>10</text>
-<text stroke="none" x="110" y="40" fill="black" font-size="31.999997">
-<title>$PN</title>8</text>
-<text stroke="none" x="110" y="-10" fill="black" font-size="31.999997">
-<title>$PN</title>6</text>
-<text stroke="none" x="110" y="-60" fill="black" font-size="31.999997">
-<title>$PN</title>4</text>
-<text stroke="none" x="110" y="-110" fill="black" font-size="31.999997">
-<title>$PN</title>2</text>
-</g>
-<g id="I13" transform="translate(1950,-1200)">
-<use href="#symbol:gnd.1" fill="green" stroke="green"></use>
-</g>
-<g id="R47.4" transform="translate(1050,-1600)">
-<use href="#symbol:res.4" fill="green" stroke="green"></use>
-<text stroke="none" x="150" fill="orange" font-size="23.000014">
-<title>PACK_TYPE</title>0201</text>
-<text stroke="none" x="-50" fill="orange" font-size="23.000014" text-anchor="end">
-<title>VALUE</title>0.0</text>
-<text stroke="none" x="25" y="-55" fill="black" font-size="28.999987" text-anchor="middle">
-<title>$LOCATION</title>R47</text>
-</g>
-<g id="R49.4" transform="translate(3450,-1400)">
-<use href="#symbol:res.4" fill="green" stroke="green"></use>
-<text stroke="none" x="-100" fill="orange" font-size="23.000014" text-anchor="end">
-<title>VALUE</title>0.0</text>
-<text stroke="none" x="150" fill="orange" font-size="23.000014">
-<title>PACK_TYPE</title>0201</text>
-<text stroke="none" x="25" y="-55" fill="black" font-size="28.999987" text-anchor="middle">
-<title>$LOCATION</title>R49</text>
-</g>
-<g id="U15.3" transform="translate(5700,-900)">
-<use href="#symbol:analog_switch.3" fill="green" stroke="green"></use>
-<text stroke="none" x="-150" y="93" fill="orange" font-size="31.999997">
-<title>MFGR</title>TEXAS INSTRUMENTS INC</text>
-<text stroke="none" x="-150" y="50" fill="orange" font-size="31.999997">
-<title>AGILE_PN</title>313-04276-00</text>
-<text stroke="none" x="-150" y="136" fill="orange" font-size="31.999997">
-<title>MFGR_PN</title>TS3A5018RSVR</text>
-<text stroke="none" x="-150" y="179" fill="orange" font-size="31.999997">
-<title>PACK_TYPE</title>QUAD_QFN16</text>
-<text stroke="none" y="-800" fill="black" font-size="31.999997" text-anchor="middle">
-<title>$LOCATION</title>U15</text>
-<text stroke="none" x="-210" y="-110" fill="black" font-size="31.999997" text-anchor="end">
-<title>$PN</title>13</text>
-<text stroke="none" x="-210" y="-210" fill="black" font-size="31.999997" text-anchor="end">
-<title>$PN</title>10</text>
-<text stroke="none" x="-210" y="-360" fill="black" font-size="31.999997" text-anchor="end">
-<title>$PN</title>7</text>
-<text stroke="none" x="210" y="-60" fill="black" font-size="31.999997">
-<title>$PN</title>6</text>
-<text stroke="none" x="-210" y="-510" fill="black" font-size="31.999997" text-anchor="end">
-<title>$PN</title>5</text>
-<text stroke="none" x="210" y="-160" fill="black" font-size="31.999997">
-<title>$PN</title>11</text>
-<text stroke="none" x="210" y="-210" fill="black" font-size="31.999997">
-<title>$PN</title>12</text>
-<text stroke="none" x="-210" y="-660" fill="black" font-size="31.999997" text-anchor="end">
-<title>$PN</title>2</text>
-<text stroke="none" x="210" y="-310" fill="black" font-size="31.999997">
-<title>$PN</title>8</text>
-<text stroke="none" x="-210" y="-760" fill="black" font-size="31.999997" text-anchor="end">
-<title>$PN</title>15</text>
-<text stroke="none" x="210" y="-360" fill="black" font-size="31.999997">
-<title>$PN</title>9</text>
-<text stroke="none" x="210" y="-460" fill="black" font-size="31.999997">
-<title>$PN</title>4</text>
-<text stroke="none" x="210" y="-510" fill="black" font-size="31.999997">
-<title>$PN</title>3</text>
-<text stroke="none" x="210" y="-610" fill="black" font-size="31.999997">
-<title>$PN</title>1</text>
-<text stroke="none" x="210" y="-660" fill="black" font-size="31.999997">
-<title>$PN</title>16</text>
-<text stroke="none" x="210" y="-760" fill="black" font-size="31.999997">
-<title>$PN</title>14</text>
-</g>
-<g id="C20.1" transform="translate(7100,-1500)">
-<use href="#symbol:cap.1" fill="green" stroke="green"></use>
-<text stroke="none" x="50" fill="green" font-size="28.999987">
-<title>VALUE</title>0.1UF</text>
-<text stroke="none" x="50" y="91" fill="orange" font-size="28.999987">
-<title>DIELECTRIC</title>X5R</text>
-<text stroke="none" x="50" y="60" fill="green" font-size="28.999987">
-<title>VOLT</title>10V</text>
-<text stroke="none" x="50" y="29" fill="green" font-size="28.999987">
-<title>PACK_TYPE</title>0201</text>
-<text stroke="none" x="50" y="-30" fill="green" font-size="28.999987">
-<title>$LOCATION</title>C20</text>
-</g>
-<g id="I18" transform="translate(7050,-1400)">
-<use href="#symbol:gnd.1" fill="green" stroke="green"></use>
-</g>
-<g id="I19" transform="translate(6300,-700)">
-<use href="#symbol:gnd.1" fill="green" stroke="green"></use>
-</g>
-<g id="I20" transform="translate(5250,-700)">
-<use href="#symbol:gnd.1" fill="green" stroke="green"></use>
-</g>
-<g id="I22" transform="translate(6200,-1950)">
-<use href="#symbol:gnd.1" fill="green" stroke="green"></use>
-</g>
-<g id="R52.4" transform="translate(6400,-2350)">
-<use href="#symbol:res.4" fill="green" stroke="green"></use>
-<text stroke="none" x="20" y="-25" fill="orange" font-size="28.999987" text-anchor="end">
-<title>VALUE</title>100K</text>
-<text stroke="none" x="30" y="-25" fill="orange" font-size="28.999987">
-<title>PACK_TYPE</title>0201</text>
-<text stroke="none" x="25" y="-55" fill="black" font-size="28.999987" text-anchor="middle">
-<title>$LOCATION</title>R52</text>
-</g>
-<g id="SW2.1" transform="translate(5750,-2250)">
-<use href="#symbol:spdt.1" fill="green" stroke="green"></use>
-<text stroke="none" x="-100" y="279" fill="orange" font-size="31.999997">
-<title>PACK_TYPE</title>SLIDE_3P</text>
-<text stroke="none" x="-100" y="150" fill="orange" font-size="31.999997">
-<title>AGILE_PN</title>510-00282-00</text>
-<text stroke="none" x="-100" y="193" fill="orange" font-size="31.999997">
-<title>MFGR</title>C &amp; K COMPONENTS</text>
-<text stroke="none" x="-100" y="236" fill="orange" font-size="31.999997">
-<title>MFGR_PN</title>JS102011SAQN</text>
-<text stroke="none" y="-150" fill="black" font-size="31.999997" text-anchor="middle">
-<title>LOCATION</title>SW2</text>
-<text stroke="none" x="-107" y="-5" fill="black" font-size="23.000014" text-anchor="end">
-<title>$PN</title>2</text>
-<text stroke="none" x="107" y="95" fill="black" font-size="23.000014">
-<title>$PN</title>3</text>
-<text stroke="none" x="107" y="-105" fill="black" font-size="23.000014">
-<title>$PN</title>1</text>
-</g>
-<g id="J2.2" transform="translate(2650,-3600)">
-<use href="#symbol:ffc_20pin.2" fill="green" stroke="green"></use>
-<text stroke="none" y="-1100" fill="orange" font-size="48.000019">
-<title>VARIANT</title>DEFAULT</text>
-<text stroke="none" x="-100" y="93" fill="orange" font-size="31.999997">
-<title>MFGR</title>MOLEX</text>
-<text stroke="none" x="-100" y="179" fill="orange" font-size="31.999997">
-<title>PACK_TYPE</title>2M</text>
-<text stroke="none" x="-100" y="136" fill="orange" font-size="31.999997">
-<title>MFGR_PN</title>5051102091</text>
-<text stroke="none" x="-100" y="50" fill="orange" font-size="31.999997">
-<title>AGILE_PN</title>210-04266-00</text>
-<text stroke="none" y="-1050" fill="black" font-size="31.999997" text-anchor="middle">
-<title>LOCATION</title>J2</text>
-<text stroke="none" x="-160" y="-110" fill="black" font-size="38.000017" text-anchor="end">
-<title>$PN</title>19</text>
-<text stroke="none" x="-160" y="-60" fill="black" font-size="38.000017" text-anchor="end">
-<title>$PN</title>20</text>
-<text stroke="none" x="-160" y="-160" fill="black" font-size="38.000017" text-anchor="end">
-<title>$PN</title>18</text>
-<text stroke="none" x="-160" y="-210" fill="black" font-size="38.000017" text-anchor="end">
-<title>$PN</title>17</text>
-<text stroke="none" x="-160" y="-260" fill="black" font-size="38.000017" text-anchor="end">
-<title>$PN</title>16</text>
-<text stroke="none" x="-160" y="-310" fill="black" font-size="38.000017" text-anchor="end">
-<title>$PN</title>15</text>
-<text stroke="none" x="-160" y="-360" fill="black" font-size="38.000017" text-anchor="end">
-<title>$PN</title>14</text>
-<text stroke="none" x="160" y="-60" fill="black" font-size="38.000017">
-<title>$PN</title>M2</text>
-<text stroke="none" x="-160" y="-410" fill="black" font-size="38.000017" text-anchor="end">
-<title>$PN</title>13</text>
-<text stroke="none" x="160" y="-110" fill="black" font-size="38.000017">
-<title>$PN</title>M1</text>
-<text stroke="none" x="-160" y="-460" fill="black" font-size="38.000017" text-anchor="end">
-<title>$PN</title>12</text>
-<text stroke="none" x="-160" y="-510" fill="black" font-size="38.000017" text-anchor="end">
-<title>$PN</title>11</text>
-<text stroke="none" x="-160" y="-560" fill="black" font-size="38.000017" text-anchor="end">
-<title>$PN</title>10</text>
-<text stroke="none" x="-160" y="-610" fill="black" font-size="38.000017" text-anchor="end">
-<title>$PN</title>9</text>
-<text stroke="none" x="-160" y="-660" fill="black" font-size="38.000017" text-anchor="end">
-<title>$PN</title>8</text>
-<text stroke="none" x="-160" y="-710" fill="black" font-size="38.000017" text-anchor="end">
-<title>$PN</title>7</text>
-<text stroke="none" x="-160" y="-760" fill="black" font-size="38.000017" text-anchor="end">
-<title>$PN</title>6</text>
-<text stroke="none" x="-160" y="-810" fill="black" font-size="38.000017" text-anchor="end">
-<title>$PN</title>5</text>
-<text stroke="none" x="-160" y="-860" fill="black" font-size="38.000017" text-anchor="end">
-<title>$PN</title>4</text>
-<text stroke="none" x="-160" y="-910" fill="black" font-size="38.000017" text-anchor="end">
-<title>$PN</title>3</text>
-<text stroke="none" x="-160" y="-960" fill="black" font-size="38.000017" text-anchor="end">
-<title>$PN</title>2</text>
-<text stroke="none" x="-160" y="-1010" fill="black" font-size="38.000017" text-anchor="end">
-<title>$PN</title>1</text>
-</g>
-<g id="I33" transform="translate(2150,-3500)">
-<use href="#symbol:gnd.1" fill="green" stroke="green"></use>
-</g>
-<g id="I34" transform="translate(3000,-3500)">
-<use href="#symbol:gnd.1" fill="green" stroke="green"></use>
-</g>
-<text stroke="none" x="1300" y="-2050" fill="purple" font-size="94.0">CORESIGHT10 CONNECTOR</text>
-<text stroke="none" x="1800" y="-1700" fill="purple" font-size="38.000017">VREF</text>
-<text stroke="none" x="1450" y="-3100" fill="purple" font-size="38.000017">DO NOT EXPOSE UART SIGNALS DIRECTLY (SECURITY RISK)</text>
-<text stroke="none" x="1450" y="-3150" fill="purple" font-size="38.000017">PRODUCTION DEVICES SHOULD HAVE UART ROUTED THROUGH H1</text>
-<text stroke="none" x="1450" y="-3250" fill="purple" font-size="38.000017">MCU_BOOT0 GATED BY EC_FLASH_ODL ON PLATFORM</text>
-<text stroke="none" x="1250" y="-5050" fill="purple" font-size="94.0">PLATFORM MLB CONNECTOR</text>
-<text stroke="none" x="4250" y="-2700" fill="purple" font-size="38.000017">** PLEASE ADD SILKSCREEN TO INDICATE SWITCH OPTIONS **&nbsp;</text>
-<text stroke="none" x="4250" y="-2850" fill="purple" font-size="38.000017">MECHANICAL SWITCH DETERMINE WHICH HOST COMMUNICATES WITH MCU VIA SWD/JTAG FOR DEBUGGING&nbsp;</text>
-<text stroke="none" x="4800" y="-2550" fill="purple" font-size="38.000017">GND &nbsp; &nbsp;SIDE: SERVO</text>
-<text stroke="none" x="4800" y="-2600" fill="purple" font-size="38.000017">PP3300 SIDE: CORESIGHT&nbsp;</text>
-<text stroke="none" x="4550" y="-4950" fill="purple" font-size="38.000017">**PIN1 TO FACE BOARD EDGE SO THAT SERVO CABLE EXITS BOARD IMMEDIATELY**&nbsp;</text>
-<text stroke="none" x="5000" y="-5050" fill="purple" font-size="94.0">SERVO CONNECTOR</text>
-<g transform="translate(3200,-1550)">
-<line x2="-900" stroke="goldenrod"></line>
-<text stroke="none" x="-710" y="-10" fill="orange" font-size="30.000006000000003">
-<title>SIG_NAME</title>CORESIGHT_MCU_JTCK_SWCLK</text>
-<text stroke="none" x="30" fill="black" font-size="30.000006000000003">
-<title>$XR0</title>4&nbsp;</text>
-</g>
-<g transform="translate(5900,-1350)">
-<line x2="1000" stroke="goldenrod"></line>
-<text stroke="none" x="240" y="-10" fill="orange" font-size="30.000006000000003">
-<title>SIG_NAME</title>CORESIGHT_MCU_JTCK_SWCLK</text>
-<text stroke="none" x="1030" fill="black" font-size="30.000006000000003">
-<title>$XR0</title>4&nbsp;</text>
-</g>
-<g transform="translate(3200,-1450)">
-<line x2="-900" stroke="goldenrod"></line>
-<text stroke="none" x="-710" y="-10" fill="orange" font-size="30.000006000000003">
-<title>SIG_NAME</title>CORESIGHT_MCU_JTDI</text>
-<text stroke="none" x="30" fill="black" font-size="30.000006000000003">
-<title>$XR0</title>4&nbsp;</text>
-</g>
-<g transform="translate(5900,-1050)">
-<line x2="1000" stroke="goldenrod"></line>
-<text stroke="none" x="240" y="-10" fill="orange" font-size="30.000006000000003">
-<title>SIG_NAME</title>CORESIGHT_MCU_JTDI</text>
-<text stroke="none" x="1030" fill="black" font-size="30.000006000000003">
-<title>$XR0</title>4&nbsp;</text>
-</g>
-<g transform="translate(3200,-1500)">
-<line x2="-900" stroke="goldenrod"></line>
-<text stroke="none" x="-710" y="-10" fill="orange" font-size="30.000006000000003">
-<title>SIG_NAME</title>CORESIGHT_MCU_JTDO_SWO</text>
-<text stroke="none" x="30" fill="black" font-size="30.000006000000003">
-<title>$XR0</title>4&nbsp;</text>
-</g>
-<g transform="translate(5900,-1200)">
-<line x2="1000" stroke="goldenrod"></line>
-<text stroke="none" x="240" y="-10" fill="orange" font-size="30.000006000000003">
-<title>SIG_NAME</title>CORESIGHT_MCU_JTDO_SWO</text>
-<text stroke="none" x="1030" fill="black" font-size="30.000006000000003">
-<title>$XR0</title>4&nbsp;</text>
-</g>
-<g transform="translate(3200,-1600)">
-<line x2="-900" stroke="goldenrod"></line>
-<text stroke="none" x="-710" y="-10" fill="orange" font-size="30.000006000000003">
-<title>SIG_NAME</title>CORESIGHT_MCU_JTMS_SWDIO</text>
-<text stroke="none" x="30" fill="black" font-size="30.000006000000003">
-<title>$XR0</title>4&nbsp;</text>
-</g>
-<g transform="translate(5900,-1500)">
-<line x2="1000" stroke="goldenrod"></line>
-<text stroke="none" x="240" y="-10" fill="orange" font-size="30.000006000000003">
-<title>SIG_NAME</title>CORESIGHT_MCU_JTMS_SWDIO</text>
-<text stroke="none" x="1030" fill="black" font-size="30.000006000000003">
-<title>$XR0</title>4&nbsp;</text>
-</g>
-<g transform="translate(3400,-1400)">
-<line x2="-1100" stroke="goldenrod"></line>
-<text stroke="none" x="-910" y="-10" fill="orange" font-size="30.000006000000003">
-<title>SIG_NAME</title>CORESIGHT_MCU_RST_ODL</text>
-</g>
-<g transform="translate(4650,-1400)">
-<line x2="850" stroke="goldenrod"></line>
-<text stroke="none" x="40" y="-10" fill="orange" font-size="30.000006000000003">
-<title>SIG_NAME</title>DEBUG_MCU_JTCK_SWCLK</text>
-<text stroke="none" x="-64" fill="black" font-size="30.000006000000003">
-<title>$XR0</title>2&nbsp;</text>
-</g>
-<g transform="translate(4650,-1100)">
-<line x2="850" stroke="goldenrod"></line>
-<text stroke="none" x="40" y="-10" fill="orange" font-size="30.000006000000003">
-<title>SIG_NAME</title>DEBUG_MCU_JTDI</text>
-<text stroke="none" x="-64" fill="black" font-size="30.000006000000003">
-<title>$XR0</title>2&nbsp;</text>
-</g>
-<g transform="translate(4650,-1250)">
-<line x2="850" stroke="goldenrod"></line>
-<text stroke="none" x="40" y="-10" fill="orange" font-size="30.000006000000003">
-<title>SIG_NAME</title>DEBUG_MCU_JTDO_SWO</text>
-<text stroke="none" x="-64" fill="black" font-size="30.000006000000003">
-<title>$XR0</title>2&nbsp;</text>
-</g>
-<g transform="translate(4650,-1550)">
-<line x2="850" stroke="goldenrod"></line>
-<text stroke="none" x="40" y="-10" fill="orange" font-size="30.000006000000003">
-<title>SIG_NAME</title>DEBUG_MCU_JTMS_SWDIO</text>
-<text stroke="none" x="-64" fill="black" font-size="30.000006000000003">
-<title>$XR0</title>2&nbsp;</text>
-</g>
-<g transform="translate(5500,-4000)">
-<line x2="-1000" stroke="goldenrod"></line>
-<text stroke="none" x="-960" y="-10" fill="orange" font-size="30.000006000000003">
-<title>SIG_NAME</title>DEBUG_MCU_JTRST</text>
-<text stroke="none" x="-1064" fill="black" font-size="30.000006000000003">
-<title>$XR0</title>2&nbsp;</text>
-</g>
-<g transform="translate(4650,-1700)">
-<line x2="550" stroke="goldenrod"></line>
-<text stroke="none" x="40" y="-10" fill="orange" font-size="30.000006000000003">
-<title>SIG_NAME</title>DEBUG_SEL</text>
-<text stroke="none" x="-64" fill="black" font-size="30.000006000000003">
-<title>$XR0</title>4&nbsp;</text>
-</g>
-<g transform="translate(5200,-1650)">
-<line x2="300" stroke="goldenrod"></line>
-</g>
-<g transform="translate(4650,-2250)">
-<line x2="950" stroke="goldenrod"></line>
-<text stroke="none" x="40" y="-10" fill="orange" font-size="30.000006000000003">
-<title>SIG_NAME</title>DEBUG_SEL</text>
-<text stroke="none" x="-64" fill="black" font-size="30.000006000000003">
-<title>$XR0</title>4&nbsp;</text>
-</g>
-<g transform="translate(5200,-1700)">
-<line y2="50" stroke="goldenrod"></line>
-</g>
-<g transform="translate(2000,-1400)">
-<line y2="150" stroke="goldenrod"></line>
-</g>
-<g transform="translate(2000,-1500)">
-<line y2="100" stroke="goldenrod"></line>
-</g>
-<g transform="translate(2000,-1500)">
-<line x2="100" stroke="goldenrod"></line>
-</g>
-<g transform="translate(2100,-1400)">
-<line x2="-100" stroke="goldenrod"></line>
-</g>
-<g transform="translate(2000,-1550)">
-<line y2="50" stroke="goldenrod"></line>
-</g>
-<g transform="translate(2100,-1550)">
-<line x2="-100" stroke="goldenrod"></line>
-</g>
-<g transform="translate(2200,-3650)">
-<line y2="100" stroke="goldenrod"></line>
-</g>
-<g transform="translate(2200,-3650)">
-<line y2="-50" stroke="goldenrod"></line>
-</g>
-<g transform="translate(2500,-3650)">
-<line x2="-300" stroke="goldenrod"></line>
-</g>
-<g transform="translate(2500,-3700)">
-<line x2="-300" stroke="goldenrod"></line>
-</g>
-<g transform="translate(5300,-1000)">
-<line y2="250" stroke="goldenrod"></line>
-</g>
-<g transform="translate(2800,-3650)">
-<line x2="250" stroke="goldenrod"></line>
-</g>
-<g transform="translate(2800,-3700)">
-<line x2="250" stroke="goldenrod"></line>
-</g>
-<g transform="translate(5500,-1000)">
-<line x2="-200" stroke="goldenrod"></line>
-</g>
-<g transform="translate(3050,-3650)">
-<line y2="100" stroke="goldenrod"></line>
-</g>
-<g transform="translate(3050,-3700)">
-<line y2="50" stroke="goldenrod"></line>
-</g>
-<g transform="translate(5900,-950)">
-<line x2="450" stroke="goldenrod"></line>
-</g>
-<g transform="translate(6350,-950)">
-<line y2="200" stroke="goldenrod"></line>
-</g>
-<g transform="translate(5900,-2150)">
-<line x2="350" stroke="goldenrod"></line>
-</g>
-<g transform="translate(6250,-2150)">
-<line y2="150" stroke="goldenrod"></line>
-</g>
-<g transform="translate(5350,-3250)">
-<line y2="-650" stroke="goldenrod"></line>
-</g>
-<g transform="translate(5350,-3900)">
-<line y2="-400" stroke="goldenrod"></line>
-</g>
-<g transform="translate(5500,-3900)">
-<line x2="-150" stroke="goldenrod"></line>
-</g>
-<g transform="translate(5900,-3650)">
-<line x2="150" stroke="goldenrod"></line>
-</g>
-<g transform="translate(5350,-4300)">
-<line y2="-350" stroke="goldenrod"></line>
-</g>
-<g transform="translate(5900,-3800)">
-<line x2="150" stroke="goldenrod"></line>
-</g>
-<g transform="translate(6050,-3650)">
-<line y2="400" stroke="goldenrod"></line>
-</g>
-<g transform="translate(5500,-4300)">
-<line x2="-150" stroke="goldenrod"></line>
-</g>
-<g transform="translate(6050,-3800)">
-<line y2="150" stroke="goldenrod"></line>
-</g>
-<g transform="translate(5350,-4650)">
-<line x2="150" stroke="goldenrod"></line>
-</g>
-<g transform="translate(5900,-4200)">
-<line x2="150" stroke="goldenrod"></line>
-</g>
-<g transform="translate(6050,-4200)">
-<line y2="400" stroke="goldenrod"></line>
-</g>
-<g transform="translate(5900,-4500)">
-<line x2="150" stroke="goldenrod"></line>
-</g>
-<g transform="translate(6050,-4500)">
-<line y2="300" stroke="goldenrod"></line>
-</g>
-<g transform="translate(2500,-4450)">
-<line x2="-1250" stroke="goldenrod"></line>
-<text stroke="none" x="-1160" y="-10" fill="orange" font-size="30.000006000000003">
-<title>SIG_NAME</title>HOST_MCU_SPI_CS_ODL</text>
-<text stroke="none" x="-1374" fill="black" font-size="30.000006000000003">
-<title>$XR1</title>4&nbsp;</text>
-<text stroke="none" x="-1314" fill="black" font-size="30.000006000000003">
-<title>$XR0</title>2&nbsp;</text>
-</g>
-<g transform="translate(7150,-4450)">
-<line x2="800" stroke="goldenrod"></line>
-<text stroke="none" x="140" y="-10" fill="orange" font-size="30.000006000000003">
-<title>SIG_NAME</title>HOST_MCU_SPI_CS_ODL</text>
-<text stroke="none" x="890" fill="black" font-size="30.000006000000003">
-<title>$XR1</title>4&nbsp;</text>
-<text stroke="none" x="830" fill="black" font-size="30.000006000000003">
-<title>$XR0</title>2&nbsp;</text>
-</g>
-<g transform="translate(2500,-4100)">
-<line x2="-1250" stroke="goldenrod"></line>
-<text stroke="none" x="-1160" y="-10" fill="orange" font-size="30.000006000000003">
-<title>SIG_NAME</title>MCU_PLATFORM_INT_L</text>
-<text stroke="none" x="-1314" fill="black" font-size="30.000006000000003">
-<title>$XR0</title>2&nbsp;</text>
-</g>
-<g transform="translate(4150,-1400)">
-<line x2="-600" stroke="goldenrod"></line>
-<text stroke="none" x="-360" y="-10" fill="orange" font-size="30.000006000000003">
-<title>SIG_NAME</title>MCU_RST_ODL</text>
-<text stroke="none" x="90" fill="black" font-size="30.000006000000003">
-<title>$XR1</title>4&nbsp;</text>
-<text stroke="none" x="30" fill="black" font-size="30.000006000000003">
-<title>$XR0</title>2&nbsp;</text>
-</g>
-<g transform="translate(2500,-4200)">
-<line x2="-1250" stroke="goldenrod"></line>
-<text stroke="none" x="-1160" y="-10" fill="orange" font-size="30.000006000000003">
-<title>SIG_NAME</title>MCU_RST_ODL</text>
-<text stroke="none" x="-1374" fill="black" font-size="30.000006000000003">
-<title>$XR1</title>4&nbsp;</text>
-<text stroke="none" x="-1314" fill="black" font-size="30.000006000000003">
-<title>$XR0</title>2&nbsp;</text>
-</g>
-<g transform="translate(6900,-4350)">
-<line x2="-1000" stroke="goldenrod"></line>
-<text stroke="none" x="-710" y="-10" fill="orange" font-size="30.000006000000003">
-<title>SIG_NAME</title>MCU_RST_ODL</text>
-<text stroke="none" x="90" fill="black" font-size="30.000006000000003">
-<title>$XR1</title>4&nbsp;</text>
-<text stroke="none" x="30" fill="black" font-size="30.000006000000003">
-<title>$XR0</title>2&nbsp;</text>
-</g>
-<g transform="translate(2500,-3800)">
-<line x2="-1250" stroke="goldenrod"></line>
-<text stroke="none" x="-1160" y="-10" fill="orange" font-size="30.000006000000003">
-<title>SIG_NAME</title>MCU_USER_PRES_FP_L</text>
-<text stroke="none" x="-1314" fill="black" font-size="30.000006000000003">
-<title>$XR0</title>2&nbsp;</text>
-</g>
-<g transform="translate(2500,-4150)">
-<line x2="-1250" stroke="goldenrod"></line>
-<text stroke="none" x="-1160" y="-10" fill="orange" font-size="30.000006000000003">
-<title>SIG_NAME</title>PLATFORM_MCU_BOOT0</text>
-<text stroke="none" x="-1314" fill="black" font-size="30.000006000000003">
-<title>$XR0</title>3&nbsp;</text>
-</g>
-<g transform="translate(2500,-4050)">
-<line x2="-1250" stroke="goldenrod"></line>
-<text stroke="none" x="-1160" y="-10" fill="orange" font-size="30.000006000000003">
-<title>SIG_NAME</title>PLATFORM_MCU_BOOT1</text>
-<text stroke="none" x="-1314" fill="black" font-size="30.000006000000003">
-<title>$XR0</title>3&nbsp;</text>
-</g>
-<g transform="translate(2500,-3850)">
-<line x2="-1250" stroke="goldenrod"></line>
-<text stroke="none" x="-1160" y="-10" fill="orange" font-size="30.000006000000003">
-<title>SIG_NAME</title>PLATFORM_MCU_SLP_S0_L</text>
-<text stroke="none" x="-1314" fill="black" font-size="30.000006000000003">
-<title>$XR0</title>3&nbsp;</text>
-</g>
-<g transform="translate(2500,-3900)">
-<line x2="-1250" stroke="goldenrod"></line>
-<text stroke="none" x="-1160" y="-10" fill="orange" font-size="30.000006000000003">
-<title>SIG_NAME</title>PLATFORM_MCU_SLP_S3_L</text>
-<text stroke="none" x="-1314" fill="black" font-size="30.000006000000003">
-<title>$XR0</title>3&nbsp;</text>
-</g>
-<g transform="translate(2500,-4600)">
-<line x2="-1250" stroke="goldenrod"></line>
-<text stroke="none" x="-1160" y="-10" fill="orange" font-size="30.000006000000003">
-<title>SIG_NAME</title>PLATFORM_MCU_SPI_CLK</text>
-<text stroke="none" x="-1314" fill="black" font-size="30.000006000000003">
-<title>$XR0</title>3&nbsp;</text>
-</g>
-<g transform="translate(2500,-4550)">
-<line x2="-1250" stroke="goldenrod"></line>
-<text stroke="none" x="-1160" y="-10" fill="orange" font-size="30.000006000000003">
-<title>SIG_NAME</title>PLATFORM_MCU_SPI_MISO</text>
-<text stroke="none" x="-1314" fill="black" font-size="30.000006000000003">
-<title>$XR0</title>3&nbsp;</text>
-</g>
-<g transform="translate(2500,-4500)">
-<line x2="-1250" stroke="goldenrod"></line>
-<text stroke="none" x="-1160" y="-10" fill="orange" font-size="30.000006000000003">
-<title>SIG_NAME</title>PLATFORM_MCU_SPI_MOSI</text>
-<text stroke="none" x="-1314" fill="black" font-size="30.000006000000003">
-<title>$XR0</title>3&nbsp;</text>
-</g>
-<g transform="translate(2500,-3750)">
-<line x2="-1250" stroke="goldenrod"></line>
-<text stroke="none" x="-1160" y="-10" fill="orange" font-size="30.000006000000003">
-<title>SIG_NAME</title>PLATFORM_MCU_WP_OD</text>
-<text stroke="none" x="-1314" fill="black" font-size="30.000006000000003">
-<title>$XR0</title>3&nbsp;</text>
-</g>
-<g transform="translate(2500,-4300)">
-<line x2="-1250" stroke="goldenrod" stroke-width="6"></line>
-<text stroke="none" x="-1160" y="-10" fill="orange" font-size="30.000006000000003">
-<title>SIG_NAME</title>PP1800_PLATFORM</text>
-<text stroke="none" x="-1314" fill="black" font-size="30.000006000000003">
-<title>$XR0</title>3&nbsp;</text>
-</g>
-<g transform="translate(6900,-4550)">
-<line x2="-1000" stroke="goldenrod" stroke-width="6"></line>
-<text stroke="none" x="-710" y="-10" fill="orange" font-size="38.000017">
-<title>SIG_NAME</title>PP1800_SERVO</text>
-<text stroke="none" x="30" fill="black" font-size="30.000006000000003">
-<title>$XR0</title>3&nbsp;</text>
-</g>
-<g transform="translate(550,-1600)">
-<line x2="450" stroke="goldenrod" stroke-width="6"></line>
-<text stroke="none" x="40" y="-10" fill="orange" font-size="38.000017">
-<title>SIG_NAME</title>PP3300</text>
-<text stroke="none" x="-214" fill="black" font-size="30.000006000000003">
-<title>$XR3</title>5&nbsp;</text>
-<text stroke="none" x="-154" fill="black" font-size="30.000006000000003">
-<title>$XR2</title>4&nbsp;</text>
-<text stroke="none" x="-94" fill="black" font-size="30.000006000000003">
-<title>$XR1</title>3&nbsp;</text>
-<text stroke="none" x="-34" fill="black" font-size="30.000006000000003">
-<title>$XR0</title>2&nbsp;</text>
-</g>
-<g transform="translate(5900,-1650)">
-<line x2="1200" stroke="goldenrod" stroke-width="6"></line>
-</g>
-<g transform="translate(7100,-1650)">
-<line y2="100" stroke="goldenrod" stroke-width="6"></line>
-</g>
-<g transform="translate(6500,-2350)">
-<line x2="850" stroke="goldenrod" stroke-width="6"></line>
-<text stroke="none" x="540" y="-10" fill="orange" font-size="38.000017">
-<title>SIG_NAME</title>PP3300</text>
-<text stroke="none" x="1060" fill="black" font-size="30.000006000000003">
-<title>$XR3</title>5&nbsp;</text>
-<text stroke="none" x="1000" fill="black" font-size="30.000006000000003">
-<title>$XR2</title>4&nbsp;</text>
-<text stroke="none" x="940" fill="black" font-size="30.000006000000003">
-<title>$XR1</title>3&nbsp;</text>
-<text stroke="none" x="880" fill="black" font-size="30.000006000000003">
-<title>$XR0</title>2&nbsp;</text>
-</g>
-<g transform="translate(7500,-1650)">
-<line x2="-400" stroke="goldenrod" stroke-width="6"></line>
-<text stroke="none" x="-260" y="-10" fill="orange" font-size="38.000017">
-<title>SIG_NAME</title>PP3300</text>
-<text stroke="none" x="210" fill="black" font-size="30.000006000000003">
-<title>$XR3</title>5&nbsp;</text>
-<text stroke="none" x="150" fill="black" font-size="30.000006000000003">
-<title>$XR2</title>4&nbsp;</text>
-<text stroke="none" x="90" fill="black" font-size="30.000006000000003">
-<title>$XR1</title>3&nbsp;</text>
-<text stroke="none" x="30" fill="black" font-size="30.000006000000003">
-<title>$XR0</title>2&nbsp;</text>
-</g>
-<g transform="translate(2100,-1600)">
-<line x2="-950" stroke="goldenrod" stroke-width="6"></line>
-<text stroke="none" x="-660" y="-10" fill="orange" font-size="30.000006000000003">
-<title>SIG_NAME</title>PP3300_CORESIGHT</text>
-</g>
-<g transform="translate(2100,-4250)">
-<line y2="-100" stroke="goldenrod" stroke-width="6"></line>
-</g>
-<g transform="translate(2100,-4350)">
-<line x2="-850" stroke="goldenrod" stroke-width="6"></line>
-<text stroke="none" x="-760" y="-10" fill="orange" font-size="30.000006000000003">
-<title>SIG_NAME</title>PP3300_PLATFORM</text>
-<text stroke="none" x="-914" fill="black" font-size="30.000006000000003">
-<title>$XR0</title>3&nbsp;</text>
-</g>
-<g transform="translate(2500,-4250)">
-<line x2="-400" stroke="goldenrod" stroke-width="6"></line>
-</g>
-<g transform="translate(2500,-4350)">
-<line x2="-400" stroke="goldenrod" stroke-width="6"></line>
-</g>
-<g transform="translate(3700,-4350)">
-<line x2="650" stroke="goldenrod" stroke-width="6"></line>
-<text stroke="none" x="40" y="-10" fill="orange" font-size="38.000017">
-<title>SIG_NAME</title>PP3300_SERVO</text>
-<text stroke="none" x="-124" fill="black" font-size="30.000006000000003">
-<title>$XR1</title>4&nbsp;</text>
-<text stroke="none" x="-64" fill="black" font-size="30.000006000000003">
-<title>$XR0</title>3&nbsp;</text>
-</g>
-<g transform="translate(4350,-3950)">
-<line x2="400" stroke="goldenrod" stroke-width="6"></line>
-</g>
-<g transform="translate(4350,-4350)">
-<line y2="400" stroke="goldenrod" stroke-width="6"></line>
-</g>
-<g transform="translate(5500,-4350)">
-<line x2="-1150" stroke="goldenrod" stroke-width="6"></line>
-</g>
-<g transform="translate(6450,-4250)">
-<line x2="1500" stroke="goldenrod" stroke-width="6"></line>
-<text stroke="none" x="990" y="-10" fill="orange" font-size="38.000017">
-<title>SIG_NAME</title>PP3300_SERVO</text>
-<text stroke="none" x="1590" fill="black" font-size="30.000006000000003">
-<title>$XR1</title>4&nbsp;</text>
-<text stroke="none" x="1530" fill="black" font-size="30.000006000000003">
-<title>$XR0</title>3&nbsp;</text>
-</g>
-<g transform="translate(6900,-3750)">
-<line x2="-1000" stroke="goldenrod"></line>
-<text stroke="none" x="-710" y="-10" fill="orange" font-size="30.000006000000003">
-<title>SIG_NAME</title>SERVO_INA_I2C_SCL</text>
-<text stroke="none" x="30" fill="black" font-size="30.000006000000003">
-<title>$XR0</title>2&nbsp;</text>
-</g>
-<g transform="translate(5500,-3750)">
-<line x2="-1000" stroke="goldenrod"></line>
-<text stroke="none" x="-960" y="-10" fill="orange" font-size="30.000006000000003">
-<title>SIG_NAME</title>SERVO_INA_I2C_SDA</text>
-<text stroke="none" x="-1064" fill="black" font-size="30.000006000000003">
-<title>$XR0</title>2&nbsp;</text>
-</g>
-<g transform="translate(5500,-3600)">
-<line x2="-1000" stroke="goldenrod"></line>
-<text stroke="none" x="-960" y="-10" fill="orange" font-size="30.000006000000003">
-<title>SIG_NAME</title>SERVO_MCU_BOOT0</text>
-<text stroke="none" x="-1064" fill="black" font-size="30.000006000000003">
-<title>$XR0</title>3&nbsp;</text>
-</g>
-<g transform="translate(6900,-3600)">
-<line x2="-1000" stroke="goldenrod"></line>
-<text stroke="none" x="-710" y="-10" fill="orange" font-size="30.000006000000003">
-<title>SIG_NAME</title>SERVO_MCU_BOOT1</text>
-<text stroke="none" x="30" fill="black" font-size="30.000006000000003">
-<title>$XR0</title>3&nbsp;</text>
-</g>
-<g transform="translate(5900,-1400)">
-<line x2="1000" stroke="goldenrod"></line>
-<text stroke="none" x="240" y="-10" fill="orange" font-size="30.000006000000003">
-<title>SIG_NAME</title>SERVO_MCU_JTCK_SWCLK</text>
-<text stroke="none" x="1090" fill="black" font-size="30.000006000000003">
-<title>$XR1</title>4&nbsp;</text>
-<text stroke="none" x="1030" fill="black" font-size="30.000006000000003">
-<title>$XR0</title>2&nbsp;</text>
-</g>
-<g transform="translate(5500,-4150)">
-<line x2="-1000" stroke="goldenrod"></line>
-<text stroke="none" x="-960" y="-10" fill="orange" font-size="30.000006000000003">
-<title>SIG_NAME</title>SERVO_MCU_JTCK_SWCLK</text>
-<text stroke="none" x="-1124" fill="black" font-size="30.000006000000003">
-<title>$XR1</title>2&nbsp;</text>
-<text stroke="none" x="-1064" fill="black" font-size="30.000006000000003">
-<title>$XR0</title>4&nbsp;</text>
-</g>
-<g transform="translate(5900,-1100)">
-<line x2="1000" stroke="goldenrod"></line>
-<text stroke="none" x="240" y="-10" fill="orange" font-size="30.000006000000003">
-<title>SIG_NAME</title>SERVO_MCU_JTDI</text>
-<text stroke="none" x="1090" fill="black" font-size="30.000006000000003">
-<title>$XR1</title>4&nbsp;</text>
-<text stroke="none" x="1030" fill="black" font-size="30.000006000000003">
-<title>$XR0</title>2&nbsp;</text>
-</g>
-<g transform="translate(6900,-4100)">
-<line x2="-1000" stroke="goldenrod"></line>
-<text stroke="none" x="-710" y="-10" fill="orange" font-size="30.000006000000003">
-<title>SIG_NAME</title>SERVO_MCU_JTDI</text>
-<text stroke="none" x="90" fill="black" font-size="30.000006000000003">
-<title>$XR1</title>2&nbsp;</text>
-<text stroke="none" x="30" fill="black" font-size="30.000006000000003">
-<title>$XR0</title>4&nbsp;</text>
-</g>
-<g transform="translate(5900,-1250)">
-<line x2="1000" stroke="goldenrod"></line>
-<text stroke="none" x="240" y="-10" fill="orange" font-size="30.000006000000003">
-<title>SIG_NAME</title>SERVO_MCU_JTDO_SWO</text>
-<text stroke="none" x="1090" fill="black" font-size="30.000006000000003">
-<title>$XR1</title>4&nbsp;</text>
-<text stroke="none" x="1030" fill="black" font-size="30.000006000000003">
-<title>$XR0</title>2&nbsp;</text>
-</g>
-<g transform="translate(5500,-4050)">
-<line x2="-1000" stroke="goldenrod"></line>
-<text stroke="none" x="-960" y="-10" fill="orange" font-size="30.000006000000003">
-<title>SIG_NAME</title>SERVO_MCU_JTDO_SWO</text>
-<text stroke="none" x="-1124" fill="black" font-size="30.000006000000003">
-<title>$XR1</title>2&nbsp;</text>
-<text stroke="none" x="-1064" fill="black" font-size="30.000006000000003">
-<title>$XR0</title>4&nbsp;</text>
-</g>
-<g transform="translate(5900,-1550)">
-<line x2="1000" stroke="goldenrod"></line>
-<text stroke="none" x="240" y="-10" fill="orange" font-size="30.000006000000003">
-<title>SIG_NAME</title>SERVO_MCU_JTMS_SWDIO</text>
-<text stroke="none" x="1090" fill="black" font-size="30.000006000000003">
-<title>$XR1</title>4&nbsp;</text>
-<text stroke="none" x="1030" fill="black" font-size="30.000006000000003">
-<title>$XR0</title>2&nbsp;</text>
-</g>
-<g transform="translate(5500,-4100)">
-<line x2="-1000" stroke="goldenrod"></line>
-<text stroke="none" x="-960" y="-10" fill="orange" font-size="30.000006000000003">
-<title>SIG_NAME</title>SERVO_MCU_JTMS_SWDIO</text>
-<text stroke="none" x="-1124" fill="black" font-size="30.000006000000003">
-<title>$XR1</title>2&nbsp;</text>
-<text stroke="none" x="-1064" fill="black" font-size="30.000006000000003">
-<title>$XR0</title>4&nbsp;</text>
-</g>
-<g transform="translate(5500,-3700)">
-<line x2="-1000" stroke="goldenrod"></line>
-<text stroke="none" x="-960" y="-10" fill="orange" font-size="30.000006000000003">
-<title>SIG_NAME</title>SERVO_MCU_SLP_S0_L</text>
-<text stroke="none" x="-1064" fill="black" font-size="30.000006000000003">
-<title>$XR0</title>3&nbsp;</text>
-</g>
-<g transform="translate(5500,-3650)">
-<line x2="-1000" stroke="goldenrod"></line>
-<text stroke="none" x="-960" y="-10" fill="orange" font-size="30.000006000000003">
-<title>SIG_NAME</title>SERVO_MCU_SLP_S3_L</text>
-<text stroke="none" x="-1064" fill="black" font-size="30.000006000000003">
-<title>$XR0</title>3&nbsp;</text>
-</g>
-<g transform="translate(5500,-4450)">
-<line x2="-1000" stroke="goldenrod"></line>
-<text stroke="none" x="-960" y="-10" fill="orange" font-size="30.000006000000003">
-<title>SIG_NAME</title>SERVO_MCU_SPI_CLK</text>
-<text stroke="none" x="-1064" fill="black" font-size="30.000006000000003">
-<title>$XR0</title>3&nbsp;</text>
-</g>
-<g transform="translate(5900,-4450)">
-<line x2="1100" stroke="goldenrod"></line>
-<text stroke="none" x="290" y="-10" fill="orange" font-size="30.000006000000003">
-<title>SIG_NAME</title>SERVO_MCU_SPI_CS_ODL</text>
-</g>
-<g transform="translate(6900,-4400)">
-<line x2="-1000" stroke="goldenrod"></line>
-<text stroke="none" x="-710" y="-10" fill="orange" font-size="30.000006000000003">
-<title>SIG_NAME</title>SERVO_MCU_SPI_MISO</text>
-<text stroke="none" x="30" fill="black" font-size="30.000006000000003">
-<title>$XR0</title>3&nbsp;</text>
-</g>
-<g transform="translate(5500,-4400)">
-<line x2="-1000" stroke="goldenrod"></line>
-<text stroke="none" x="-960" y="-10" fill="orange" font-size="30.000006000000003">
-<title>SIG_NAME</title>SERVO_MCU_SPI_MOSI</text>
-<text stroke="none" x="-1064" fill="black" font-size="30.000006000000003">
-<title>$XR0</title>3&nbsp;</text>
-</g>
-<g transform="translate(6900,-3700)">
-<line x2="-1000" stroke="goldenrod"></line>
-<text stroke="none" x="-710" y="-10" fill="orange" font-size="30.000006000000003">
-<title>SIG_NAME</title>SERVO_MCU_WP_OD</text>
-<text stroke="none" x="30" fill="black" font-size="30.000006000000003">
-<title>$XR0</title>3&nbsp;</text>
-</g>
-<g transform="translate(2500,-3950)">
-<line x2="-1250" stroke="goldenrod"></line>
-<text stroke="none" x="-1160" y="-10" fill="orange" font-size="30.000006000000003">
-<title>SIG_NAME</title>UART1_MCU_TX_PLATFORM_RX</text>
-<text stroke="none" x="-1314" fill="black" font-size="30.000006000000003">
-<title>$XR0</title>3&nbsp;</text>
-</g>
-<g transform="translate(5500,-4250)">
-<line x2="-1000" stroke="goldenrod"></line>
-<text stroke="none" x="-960" y="-10" fill="orange" font-size="30.000006000000003">
-<title>SIG_NAME</title>UART1_MCU_TX_SERVO_RX</text>
-<text stroke="none" x="-1064" fill="black" font-size="30.000006000000003">
-<title>$XR0</title>3&nbsp;</text>
-</g>
-<g transform="translate(2500,-4000)">
-<line x2="-1250" stroke="goldenrod"></line>
-<text stroke="none" x="-1160" y="-10" fill="orange" font-size="30.000006000000003">
-<title>SIG_NAME</title>UART1_PLATFORM_TX_MCU_RX</text>
-<text stroke="none" x="-1314" fill="black" font-size="30.000006000000003">
-<title>$XR0</title>3&nbsp;</text>
-</g>
-<g transform="translate(6900,-4300)">
-<line x2="-1000" stroke="goldenrod"></line>
-<text stroke="none" x="-710" y="-10" fill="orange" font-size="30.000006000000003">
-<title>SIG_NAME</title>UART1_SERVO_TX_MCU_RX</text>
-<text stroke="none" x="30" fill="black" font-size="30.000006000000003">
-<title>$XR0</title>3&nbsp;</text>
-</g>
-<g transform="translate(5500,-3850)">
-<line x2="-1000" stroke="goldenrod"></line>
-<text stroke="none" x="-960" y="-10" fill="orange" font-size="30.000006000000003">
-<title>SIG_NAME</title>UART2_MCU_TX_SERVO_RX</text>
-<text stroke="none" x="-1064" fill="black" font-size="30.000006000000003">
-<title>$XR0</title>2&nbsp;</text>
-</g>
-<g transform="translate(6900,-3900)">
-<line x2="-1000" stroke="goldenrod"></line>
-<text stroke="none" x="-710" y="-10" fill="orange" font-size="30.000006000000003">
-<title>SIG_NAME</title>UART2_SERVO_TX_MCU_RX</text>
-<text stroke="none" x="30" fill="black" font-size="30.000006000000003">
-<title>$XR0</title>2&nbsp;</text>
-</g>
-<g transform="translate(5900,-4250)">
-<line x2="400" stroke="goldenrod"></line>
-</g>
-<g transform="translate(4900,-3950)">
-<line x2="600" stroke="goldenrod"></line>
-</g>
-<g transform="translate(5900,-2350)">
-<line x2="450" stroke="goldenrod" stroke-width="6"></line>
-</g>
-<circle cx="2000" cy="-1400" r="10" stroke="black" fill="black"></circle>
-<circle cx="2000" cy="-1500" r="10" stroke="black" fill="black"></circle>
-<circle cx="2200" cy="-3650" r="10" stroke="black" fill="black"></circle>
-<circle cx="3050" cy="-3650" r="10" stroke="black" fill="black"></circle>
-<circle cx="5350" cy="-3900" r="10" stroke="black" fill="black"></circle>
-<circle cx="5350" cy="-4300" r="10" stroke="black" fill="black"></circle>
-<circle cx="6050" cy="-3650" r="10" stroke="black" fill="black"></circle>
-<circle cx="6050" cy="-3800" r="10" stroke="black" fill="black"></circle>
-<circle cx="6050" cy="-4200" r="10" stroke="black" fill="black"></circle>
-<circle cx="7100" cy="-1650" r="10" stroke="black" fill="black"></circle>
-<circle cx="2100" cy="-4350" r="10" stroke="black" fill="black"></circle>
-<circle cx="4350" cy="-4350" r="10" stroke="black" fill="black"></circle>
-</svg>
-
-</div>
-</div>
-<hr>
-<div id="page5">
-<h1>dragonclaw/page5: SENSOR CONNECTORS</h1>
-<div>
-<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0,-5500,8500,5500" width="14.87500in" height="9.62500in" font-family="monospace" font-size="47.000000" stroke-width="3" style="background-color:white">
-<use href="#symbol:border_b.3" fill="green" stroke="green"></use>
-<text stroke="none" x="6570" y="-95" fill="green" font-size="26.999996">
-<title>CUSTOM_TXT_CDS</title>Fri Jan 17 12:53:13 2020</text>
-<text stroke="none" x="6500" y="-170" fill="green" font-size="33.999988">
-<title>CUSTOM_TXT_CDS</title>dragonclaw</text>
-<text stroke="none" x="7500" y="-175" fill="green" font-size="30.000006000000003">
-<title>CUSTOM_TXT_CDS</title>650-03910-01-SCH</text>
-<text stroke="none" x="8265" y="-175" fill="green" font-size="33.999988" text-anchor="middle">
-<title>CUSTOM_TXT_CDS</title>0.2</text>
-<text stroke="none" x="8427" y="-84" fill="green" font-size="26.999996" text-anchor="end">
-<title>CUSTOM_TXT_CDS</title>5 OF 5</text>
-<text stroke="none" x="8427" y="-119" fill="green" font-size="26.999996" text-anchor="end">
-<title>CUSTOM_TXT_CDS</title>5 OF 5</text>
-<text stroke="none" x="7212" y="-260" fill="orange" font-size="67.999976" text-anchor="middle">
-<title>PAGE_TITLE</title>SENSOR CONNECTORS</text>
-<g id="R25.1" transform="translate(4700,-4150)">
-<use href="#symbol:res.1" fill="green" stroke="green"></use>
-<text stroke="none" x="30" y="-30" fill="orange" font-size="28.999987">
-<title>VALUE</title>100K</text>
-<text stroke="none" x="150" y="-50" fill="orange" font-size="30.000006000000003">
-<title>BOM_IGNORE</title>DNS</text>
-<text stroke="none" x="30" fill="orange" font-size="28.999987">
-<title>TOLERANCE</title>1%</text>
-<text stroke="none" x="30" y="30" fill="orange" font-size="28.999987">
-<title>PACK_TYPE</title>0201</text>
-<text stroke="none" x="30" y="-60" fill="black" font-size="28.999987">
-<title>$LOCATION</title>R25</text>
-</g>
-<g id="I13" transform="translate(3350,-3750)">
-<use href="#symbol:gnd.1" fill="green" stroke="green"></use>
-</g>
-<g id="I14" transform="translate(2750,-3750)">
-<use href="#symbol:gnd.1" fill="green" stroke="green"></use>
-</g>
-<g id="I15" transform="translate(1600,-3750)">
-<use href="#symbol:gnd.1" fill="green" stroke="green"></use>
-</g>
-<g id="C13.1" transform="translate(1650,-3850)">
-<use href="#symbol:cap.1" fill="green" stroke="green"></use>
-<text stroke="none" x="50" fill="green" font-size="28.999987">
-<title>VALUE</title>1UF</text>
-<text stroke="none" x="50" y="60" fill="green" font-size="28.999987">
-<title>VOLT</title>10V</text>
-<text stroke="none" x="50" y="29" fill="green" font-size="28.999987">
-<title>PACK_TYPE</title>0201</text>
-<text stroke="none" x="50" y="91" fill="orange" font-size="28.999987">
-<title>DIELECTRIC</title>X5R</text>
-<text stroke="none" x="50" y="-30" fill="green" font-size="28.999987">
-<title>$LOCATION</title>C13</text>
-</g>
-<g id="I17" transform="translate(1350,-3750)">
-<use href="#symbol:gnd.1" fill="green" stroke="green"></use>
-</g>
-<g id="C12.1" transform="translate(1400,-3850)">
-<use href="#symbol:cap.1" fill="green" stroke="green"></use>
-<text stroke="none" x="50" y="60" fill="green" font-size="28.999987">
-<title>VOLT</title>10V</text>
-<text stroke="none" x="50" y="29" fill="green" font-size="28.999987">
-<title>PACK_TYPE</title>0201</text>
-<text stroke="none" x="50" y="91" fill="orange" font-size="28.999987">
-<title>DIELECTRIC</title>X5R</text>
-<text stroke="none" x="50" fill="green" font-size="28.999987">
-<title>VALUE</title>1UF</text>
-<text stroke="none" x="50" y="-30" fill="green" font-size="28.999987">
-<title>$LOCATION</title>C12</text>
-</g>
-<g id="U9.1" transform="translate(6750,-2450)">
-<use href="#symbol:74aup1t97.1" fill="green" stroke="green"></use>
-<text stroke="none" x="50" y="400" fill="green" font-size="28.999987">
-<title>AGILE_PN</title>313-00608-00</text>
-<text stroke="none" x="50" y="350" fill="green" font-size="28.999987">
-<title>PACK_TYPE</title>CSP</text>
-<text stroke="none" x="50" y="250" fill="green" font-size="28.999987">
-<title>MFGR</title>TEXAS INSTRUMENTS INC</text>
-<text stroke="none" x="50" y="300" fill="green" font-size="28.999987">
-<title>MFGR_PN</title>SN74AUP1T97YZPR</text>
-<text stroke="none" x="50" y="-275" fill="green" font-size="28.999987">
-<title>PATH</title>I21</text>
-<text stroke="none" x="50" y="-225" fill="green" font-size="28.999987">
-<title>$LOCATION</title>U9</text>
-<text stroke="none" x="-260" y="-110" fill="black" font-size="31.999997" text-anchor="end">
-<title>$PN</title>C1</text>
-<text stroke="none" x="-260" y="-10" fill="black" font-size="31.999997" text-anchor="end">
-<title>$PN</title>A1</text>
-<g transform="translate(-10,260)">
-<g transform="rotate(-90)">
-<text stroke="none" fill="black" font-size="31.999997" text-anchor="end">
-<title>$PN</title>B1</text>
-</g></g>
-<text stroke="none" x="-260" y="90" fill="black" font-size="31.999997" text-anchor="end">
-<title>$PN</title>A2</text>
-<g transform="translate(-10,-260)">
-<g transform="rotate(-90)">
-<text stroke="none" fill="black" font-size="31.999997">
-<title>$PN</title>B2</text>
-</g></g>
-<text stroke="none" x="260" y="-10" fill="black" font-size="31.999997">
-<title>$PN</title>C2</text>
-</g>
-<g id="U10.3" transform="translate(2000,-2500)">
-<use href="#symbol:74aup1t97.3" fill="green" stroke="green"></use>
-<text stroke="none" x="50" y="-275" fill="green" font-size="28.999987">
-<title>PATH</title>I22</text>
-<text stroke="none" x="50" y="400" fill="green" font-size="28.999987">
-<title>AGILE_PN</title>313-00608-00</text>
-<text stroke="none" x="50" y="300" fill="green" font-size="28.999987">
-<title>MFGR_PN</title>SN74AUP1T97YZPR</text>
-<text stroke="none" x="50" y="350" fill="green" font-size="28.999987">
-<title>PACK_TYPE</title>CSP</text>
-<text stroke="none" x="50" y="250" fill="green" font-size="28.999987">
-<title>MFGR</title>TEXAS INSTRUMENTS INC</text>
-<text stroke="none" x="50" y="-225" fill="green" font-size="28.999987">
-<title>$LOCATION</title>U10</text>
-<text stroke="none" x="-260" y="-60" fill="black" font-size="38.000017" text-anchor="end">
-<title>$PN</title>C1</text>
-<g transform="translate(-10,260)">
-<g transform="rotate(-90)">
-<text stroke="none" fill="black" font-size="38.000017" text-anchor="end">
-<title>$PN</title>B1</text>
-</g></g>
-<text stroke="none" x="-260" y="40" fill="black" font-size="38.000017" text-anchor="end">
-<title>$PN</title>A2</text>
-<g transform="translate(-110,-260)">
-<g transform="rotate(-90)">
-<text stroke="none" fill="black" font-size="38.000017">
-<title>$PN</title>A1</text>
-</g></g>
-<g transform="translate(-10,-260)">
-<g transform="rotate(-90)">
-<text stroke="none" fill="black" font-size="38.000017">
-<title>$PN</title>B2</text>
-</g></g>
-<text stroke="none" x="260" y="-10" fill="black" font-size="38.000017">
-<title>$PN</title>C2</text>
-</g>
-<g id="C15.1" transform="translate(6100,-2700)">
-<use href="#symbol:cap.1" fill="green" stroke="green"></use>
-<text stroke="none" x="50" fill="green" font-size="28.999987">
-<title>VALUE</title>0.1UF</text>
-<text stroke="none" x="50" y="60" fill="green" font-size="28.999987">
-<title>VOLT</title>10V</text>
-<text stroke="none" x="50" y="91" fill="orange" font-size="28.999987">
-<title>DIELECTRIC</title>X5R</text>
-<text stroke="none" x="50" y="29" fill="green" font-size="28.999987">
-<title>PACK_TYPE</title>0201</text>
-<text stroke="none" x="50" y="-30" fill="green" font-size="28.999987">
-<title>$LOCATION</title>C15</text>
-</g>
-<g id="I24" transform="translate(6050,-2600)">
-<use href="#symbol:gnd.1" fill="green" stroke="green"></use>
-</g>
-<g id="I25" transform="translate(6700,-2000)">
-<use href="#symbol:gnd.1" fill="green" stroke="green"></use>
-</g>
-<g id="C14.1" transform="translate(1450,-2800)">
-<use href="#symbol:cap.1" fill="green" stroke="green"></use>
-<text stroke="none" x="50" y="60" fill="green" font-size="28.999987">
-<title>VOLT</title>10V</text>
-<text stroke="none" x="50" y="91" fill="orange" font-size="28.999987">
-<title>DIELECTRIC</title>X5R</text>
-<text stroke="none" x="50" fill="green" font-size="28.999987">
-<title>VALUE</title>0.1UF</text>
-<text stroke="none" x="50" y="29" fill="green" font-size="28.999987">
-<title>PACK_TYPE</title>0201</text>
-<text stroke="none" x="50" y="-30" fill="green" font-size="28.999987">
-<title>$LOCATION</title>C14</text>
-</g>
-<g id="I27" transform="translate(1400,-2700)">
-<use href="#symbol:gnd.1" fill="green" stroke="green"></use>
-</g>
-<g id="I28" transform="translate(1950,-2050)">
-<use href="#symbol:gnd.1" fill="green" stroke="green"></use>
-</g>
-<g id="U12.1" transform="translate(3900,-1250)">
-<use href="#symbol:ts5a23159.1" fill="green" stroke="green"></use>
-<text stroke="none" x="-300" y="614" fill="green" font-size="57.000002">
-<title>MFGR_PN</title>TS5A23159DGSR</text>
-<text stroke="none" x="-300" y="671" fill="green" font-size="57.000002">
-<title>PACK_TYPE</title>VSSOP10</text>
-<text stroke="none" x="-300" y="500" fill="green" font-size="57.000002">
-<title>AGILE_PN</title>232-00045-00</text>
-<text stroke="none" x="-300" y="557" fill="green" font-size="57.000002">
-<title>MFGR</title>TEXAS INSTRUMENTS INC</text>
-<text stroke="none" x="350" y="-400" fill="green" font-size="57.000002" text-anchor="end">
-<title>$LOCATION</title>U12</text>
-<text stroke="none" x="-360" y="-260" fill="black" font-size="38.000017" text-anchor="end">
-<title>$PN</title>9</text>
-<text stroke="none" x="-360" y="-160" fill="black" font-size="38.000017" text-anchor="end">
-<title>$PN</title>2</text>
-<g transform="translate(-60,360)">
-<g transform="rotate(-90)">
-<text stroke="none" fill="black" font-size="38.000017" text-anchor="end">
-<title>$PN</title>3</text>
-</g></g>
-<text stroke="none" x="-360" y="40" fill="black" font-size="38.000017" text-anchor="end">
-<title>$PN</title>7</text>
-<text stroke="none" x="-360" y="140" fill="black" font-size="38.000017" text-anchor="end">
-<title>$PN</title>4</text>
-<text stroke="none" x="360" y="140" fill="black" font-size="38.000017">
-<title>$PN</title>5</text>
-<text stroke="none" x="360" y="40" fill="black" font-size="38.000017">
-<title>$PN</title>6</text>
-<g transform="translate(-60,-460)">
-<g transform="rotate(-90)">
-<text stroke="none" fill="black" font-size="38.000017">
-<title>$PN</title>8</text>
-</g></g>
-<text stroke="none" x="360" y="-160" fill="black" font-size="38.000017">
-<title>$PN</title>1</text>
-<text stroke="none" x="360" y="-260" fill="black" font-size="38.000017">
-<title>$PN</title>10</text>
-</g>
-<g id="I32" transform="translate(3800,-800)">
-<use href="#symbol:gnd.1" fill="green" stroke="green"></use>
-</g>
-<g id="C18.1" transform="translate(4500,-1700)">
-<use href="#symbol:cap.1" fill="green" stroke="green"></use>
-<text stroke="none" x="50" y="91" fill="orange" font-size="28.999987">
-<title>DIELECTRIC</title>X5R</text>
-<text stroke="none" x="50" y="60" fill="green" font-size="28.999987">
-<title>VOLT</title>10V</text>
-<text stroke="none" x="50" y="29" fill="green" font-size="28.999987">
-<title>PACK_TYPE</title>0201</text>
-<text stroke="none" x="50" fill="green" font-size="28.999987">
-<title>VALUE</title>0.1UF</text>
-<text stroke="none" x="50" y="-30" fill="green" font-size="28.999987">
-<title>$LOCATION</title>C18</text>
-</g>
-<g id="I34" transform="translate(4450,-1600)">
-<use href="#symbol:gnd.1" fill="green" stroke="green"></use>
-</g>
-<g id="R24.4" transform="translate(4550,-4950)">
-<use href="#symbol:res.4" fill="green" stroke="green"></use>
-<text stroke="none" x="20" y="-25" fill="orange" font-size="28.999987" text-anchor="end">
-<title>VALUE</title>0.5</text>
-<text stroke="none" x="30" y="-25" fill="orange" font-size="28.999987">
-<title>PACK_TYPE</title>0402</text>
-<text stroke="none" x="25" y="-55" fill="black" font-size="28.999987" text-anchor="middle">
-<title>$LOCATION</title>R24</text>
-</g>
-<g id="R42.4" transform="translate(4550,-4800)">
-<use href="#symbol:res.4" fill="green" stroke="green"></use>
-<text stroke="none" x="30" y="-25" fill="orange" font-size="28.999987">
-<title>PACK_TYPE</title>0402</text>
-<text stroke="none" x="20" y="-25" fill="orange" font-size="28.999987" text-anchor="end">
-<title>VALUE</title>0.5</text>
-<text stroke="none" x="25" y="-55" fill="black" font-size="28.999987" text-anchor="middle">
-<title>$LOCATION</title>R42</text>
-</g>
-<g id="R19.4" transform="translate(1050,-4200)">
-<use href="#symbol:res.4" fill="green" stroke="green"></use>
-<text stroke="none" x="20" y="-25" fill="orange" font-size="28.999987" text-anchor="end">
-<title>VALUE</title>0.5</text>
-<text stroke="none" x="30" y="-25" fill="orange" font-size="28.999987">
-<title>PACK_TYPE</title>0402</text>
-<text stroke="none" x="25" y="-55" fill="black" font-size="28.999987" text-anchor="middle">
-<title>$LOCATION</title>R19</text>
-</g>
-<g id="R23.4" transform="translate(1050,-4100)">
-<use href="#symbol:res.4" fill="green" stroke="green"></use>
-<text stroke="none" x="20" y="-25" fill="orange" font-size="28.999987" text-anchor="end">
-<title>VALUE</title>0.5</text>
-<text stroke="none" x="30" y="-25" fill="orange" font-size="28.999987">
-<title>PACK_TYPE</title>0402</text>
-<text stroke="none" x="25" y="-55" fill="black" font-size="28.999987" text-anchor="middle">
-<title>$LOCATION</title>R23</text>
-</g>
-<g id="J5.1" transform="translate(5750,-3600)">
-<use href="#symbol:ffc_13pin.1" fill="green" stroke="green"></use>
-<text stroke="none" y="136" fill="orange" font-size="31.999997">
-<title>MFGR_PN</title>FH35C-13S-0.3SHW(50)</text>
-<text stroke="none" y="179" fill="orange" font-size="31.999997">
-<title>PACK_TYPE</title>ZIF</text>
-<text stroke="none" x="100" y="-750" fill="orange" font-size="48.000019">
-<title>VARIANT</title>DEFAULT</text>
-<text stroke="none" y="93" fill="orange" font-size="31.999997">
-<title>MFGR</title>HIROSE ELECTRIC CO LTD</text>
-<text stroke="none" y="50" fill="orange" font-size="31.999997">
-<title>AGILE_PN</title>210-02827-00</text>
-<text stroke="none" x="100" y="-700" fill="black" font-size="31.999997" text-anchor="middle">
-<title>LOCATION</title>J5</text>
-<text stroke="none" x="-60" y="-310" fill="black" font-size="38.000017" text-anchor="end">
-<title>$PN</title>M1</text>
-<text stroke="none" x="-60" y="-360" fill="black" font-size="38.000017" text-anchor="end">
-<title>$PN</title>M2</text>
-<text stroke="none" x="260" y="-60" fill="black" font-size="38.000017">
-<title>$PN</title>13</text>
-<text stroke="none" x="260" y="-110" fill="black" font-size="38.000017">
-<title>$PN</title>12</text>
-<text stroke="none" x="260" y="-160" fill="black" font-size="38.000017">
-<title>$PN</title>11</text>
-<text stroke="none" x="260" y="-210" fill="black" font-size="38.000017">
-<title>$PN</title>10</text>
-<text stroke="none" x="260" y="-260" fill="black" font-size="38.000017">
-<title>$PN</title>9</text>
-<text stroke="none" x="260" y="-310" fill="black" font-size="38.000017">
-<title>$PN</title>8</text>
-<text stroke="none" x="260" y="-360" fill="black" font-size="38.000017">
-<title>$PN</title>7</text>
-<text stroke="none" x="260" y="-410" fill="black" font-size="38.000017">
-<title>$PN</title>6</text>
-<text stroke="none" x="260" y="-460" fill="black" font-size="38.000017">
-<title>$PN</title>5</text>
-<text stroke="none" x="260" y="-510" fill="black" font-size="38.000017">
-<title>$PN</title>4</text>
-<text stroke="none" x="260" y="-560" fill="black" font-size="38.000017">
-<title>$PN</title>3</text>
-<text stroke="none" x="260" y="-610" fill="black" font-size="38.000017">
-<title>$PN</title>2</text>
-<text stroke="none" x="260" y="-660" fill="black" font-size="38.000017">
-<title>$PN</title>1</text>
-</g>
-<g id="R43.4" transform="translate(7400,-4300)">
-<use href="#symbol:res.4" fill="green" stroke="green"></use>
-<text stroke="none" x="20" y="-25" fill="orange" font-size="28.999987" text-anchor="end">
-<title>VALUE</title>0.5</text>
-<text stroke="none" x="30" y="-25" fill="orange" font-size="28.999987">
-<title>PACK_TYPE</title>0402</text>
-<text stroke="none" x="25" y="-55" fill="black" font-size="28.999987" text-anchor="middle">
-<title>$LOCATION</title>R43</text>
-</g>
-<g id="C17.1" transform="translate(7100,-4200)">
-<use href="#symbol:cap.1" fill="green" stroke="green"></use>
-<text stroke="none" x="50" fill="green" font-size="23.000014">
-<title>VALUE</title>1UF</text>
-<text stroke="none" x="50" y="60" fill="green" font-size="23.000014">
-<title>VOLT</title>10V</text>
-<text stroke="none" x="50" y="91" fill="orange" font-size="23.000014">
-<title>DIELECTRIC</title>X5R</text>
-<text stroke="none" x="50" y="29" fill="green" font-size="23.000014">
-<title>PACK_TYPE</title>0201</text>
-<text stroke="none" x="50" y="-30" fill="green" font-size="23.000014">
-<title>$LOCATION</title>C17</text>
-</g>
-<g id="I46" transform="translate(7050,-4100)">
-<use href="#symbol:gnd.1" fill="green" stroke="green"></use>
-</g>
-<g id="C16.1" transform="translate(6900,-4200)">
-<use href="#symbol:cap.1" fill="green" stroke="green"></use>
-<text stroke="none" x="50" fill="green" font-size="23.000014">
-<title>VALUE</title>0.1UF</text>
-<text stroke="none" x="50" y="29" fill="green" font-size="23.000014">
-<title>PACK_TYPE</title>0201</text>
-<text stroke="none" x="50" y="60" fill="green" font-size="23.000014">
-<title>VOLT</title>10V</text>
-<text stroke="none" x="50" y="91" fill="orange" font-size="23.000014">
-<title>DIELECTRIC</title>X5R</text>
-<text stroke="none" x="50" y="-30" fill="green" font-size="23.000014">
-<title>$LOCATION</title>C16</text>
-</g>
-<g id="I48" transform="translate(6850,-4100)">
-<use href="#symbol:gnd.1" fill="green" stroke="green"></use>
-</g>
-<g id="R20.1" transform="translate(7350,-4050)">
-<use href="#symbol:res.1" fill="green" stroke="green"></use>
-<text stroke="none" x="30" y="-30" fill="orange" font-size="28.999987">
-<title>VALUE</title>100K</text>
-<text stroke="none" x="30" fill="orange" font-size="28.999987">
-<title>TOLERANCE</title>1%</text>
-<text stroke="none" x="30" y="30" fill="orange" font-size="28.999987">
-<title>PACK_TYPE</title>0201</text>
-<text stroke="none" x="150" y="-50" fill="orange" font-size="38.000017">
-<title>BOM_IGNORE</title>DNS</text>
-<text stroke="none" x="30" y="-65" fill="black" font-size="28.999987">
-<title>$LOCATION</title>R20</text>
-</g>
-<g id="I50" transform="translate(5550,-3800)">
-<use href="#symbol:gnd.1" fill="green" stroke="green"></use>
-</g>
-<g id="I51" transform="translate(6150,-3550)">
-<use href="#symbol:gnd.1" fill="green" stroke="green"></use>
-</g>
-<g id="J3.2" transform="translate(3100,-4200)">
-<g transform="rotate(-180)">
-<use href="#symbol:b2b_16pin.2:s" fill="green" stroke="green"></use>
-</g>
-<text stroke="none" x="-200" y="600" fill="orange" font-size="31.999997">
-<title>AGILE_PN</title>210-01668-00</text>
-<text stroke="none" x="-200" y="550" fill="orange" font-size="31.999997">
-<title>MFGR</title>HIROSE ELECTRIC CO LTD</text>
-<text stroke="none" x="-200" y="450" fill="orange" font-size="31.999997">
-<title>PACK_TYPE</title>HIROSE_BM10</text>
-<text stroke="none" x="-200" y="500" fill="orange" font-size="31.999997">
-<title>MFGR_PN</title>BM10NB(0.8)-16DS-0.4V(51)</text>
-<text stroke="none" y="-300" fill="black" font-size="31.999997" text-anchor="middle">
-<title>LOCATION</title>J3</text>
-<text stroke="none" x="-210" y="-160" fill="black" font-size="38.000017" text-anchor="end">
-<title>$PN</title>M2</text>
-<text stroke="none" x="160" y="190" fill="black" font-size="38.000017">
-<title>$PN</title>3</text>
-<text stroke="none" x="-210" y="-110" fill="black" font-size="38.000017" text-anchor="end">
-<title>$PN</title>16</text>
-<text stroke="none" x="160" y="240" fill="black" font-size="38.000017">
-<title>$PN</title>1</text>
-<text stroke="none" x="-210" y="-60" fill="black" font-size="38.000017" text-anchor="end">
-<title>$PN</title>14</text>
-<text stroke="none" x="-210" y="-10" fill="black" font-size="38.000017" text-anchor="end">
-<title>$PN</title>12</text>
-<text stroke="none" x="-210" y="40" fill="black" font-size="38.000017" text-anchor="end">
-<title>$PN</title>10</text>
-<text stroke="none" x="-210" y="90" fill="black" font-size="38.000017" text-anchor="end">
-<title>$PN</title>8</text>
-<text stroke="none" x="-210" y="140" fill="black" font-size="38.000017" text-anchor="end">
-<title>$PN</title>6</text>
-<text stroke="none" x="-210" y="190" fill="black" font-size="38.000017" text-anchor="end">
-<title>$PN</title>4</text>
-<text stroke="none" x="-210" y="240" fill="black" font-size="38.000017" text-anchor="end">
-<title>$PN</title>2</text>
-<text stroke="none" x="-210" y="-210" fill="black" font-size="38.000017" text-anchor="end">
-<title>$PN</title>M4</text>
-<text stroke="none" x="160" y="140" fill="black" font-size="38.000017">
-<title>$PN</title>5</text>
-<text stroke="none" x="160" y="90" fill="black" font-size="38.000017">
-<title>$PN</title>7</text>
-<text stroke="none" x="160" y="40" fill="black" font-size="38.000017">
-<title>$PN</title>9</text>
-<text stroke="none" x="160" y="-10" fill="black" font-size="38.000017">
-<title>$PN</title>11</text>
-<text stroke="none" x="160" y="-60" fill="black" font-size="38.000017">
-<title>$PN</title>13</text>
-<text stroke="none" x="160" y="-110" fill="black" font-size="38.000017">
-<title>$PN</title>15</text>
-<text stroke="none" x="160" y="-160" fill="black" font-size="38.000017">
-<title>$PN</title>M1</text>
-<text stroke="none" x="160" y="-210" fill="black" font-size="38.000017">
-<title>$PN</title>M3</text>
-</g>
-<text stroke="none" x="900" y="-3050" fill="purple" font-size="60.000012000000005">FP_SENSOR_SEL &nbsp;: H</text>
-<text stroke="none" x="900" y="-3150" fill="purple" font-size="60.000012000000005">MCU_FP_SPI_CS_L: L</text>
-<text stroke="none" x="900" y="-3250" fill="purple" font-size="60.000012000000005">FPC SENSOR SELECTED WHEN:</text>
-<text stroke="none" x="900" y="-4600" fill="purple" font-size="60.000012000000005">*PLACE PIN2 TOWARDS THE EDGE SO CABLE EXITS BOARD*&nbsp;</text>
-<text stroke="none" x="900" y="-4700" fill="purple" font-size="60.000012000000005">**ADD SILKSCREEN LABELLED "FPC"**</text>
-<text stroke="none" x="900" y="-4800" fill="purple" font-size="75.000015">FPC FP SENSOR CONNECTOR</text>
-<text stroke="none" x="5650" y="-2950" fill="purple" font-size="60.000012000000005">FP_SENSOR_SEL &nbsp;: L</text>
-<text stroke="none" x="5650" y="-3050" fill="purple" font-size="60.000012000000005">MCU_FP_SPI_CS_L: L</text>
-<text stroke="none" x="5650" y="-3150" fill="purple" font-size="60.000012000000005">ELAN SENSOR SELECTED WHEN:</text>
-<text stroke="none" x="5650" y="-4550" fill="purple" font-size="60.000012000000005">**ADD SILKSCREEN LABELLED "ELAN"**</text>
-<text stroke="none" x="5650" y="-4650" fill="purple" font-size="75.000015">ELAN FP SENSOR CONNECTOR</text>
-<g transform="translate(3550,-1500)">
-<line x2="-500" stroke="goldenrod"></line>
-<text stroke="none" x="-460" y="-10" fill="orange" font-size="30.000006000000003">
-<title>SIG_NAME</title>ELAN_MCU_INT_L</text>
-<text stroke="none" x="-564" fill="black" font-size="30.000006000000003">
-<title>$XR0</title>5&nbsp;</text>
-</g>
-<g transform="translate(6000,-4050)">
-<line x2="1000" stroke="goldenrod"></line>
-<text stroke="none" x="440" y="-10" fill="orange" font-size="30.000006000000003">
-<title>SIG_NAME</title>ELAN_MCU_INT_L</text>
-<text stroke="none" x="1030" fill="black" font-size="30.000006000000003">
-<title>$XR0</title>5&nbsp;</text>
-</g>
-<g transform="translate(3550,-1400)">
-<line x2="-500" stroke="goldenrod"></line>
-<text stroke="none" x="-460" y="-10" fill="orange" font-size="30.000006000000003">
-<title>SIG_NAME</title>FPC_MCU_INT_L</text>
-<text stroke="none" x="-564" fill="black" font-size="30.000006000000003">
-<title>$XR0</title>5&nbsp;</text>
-</g>
-<g transform="translate(4200,-4150)">
-<line x2="-950" stroke="goldenrod"></line>
-<text stroke="none" x="-560" y="-10" fill="orange" font-size="30.000006000000003">
-<title>SIG_NAME</title>FPC_MCU_INT_L</text>
-<text stroke="none" x="30" fill="black" font-size="30.000006000000003">
-<title>$XR0</title>5&nbsp;</text>
-</g>
-<g transform="translate(4850,-1500)">
-<line x2="-600" stroke="goldenrod"></line>
-<text stroke="none" x="-360" y="-10" fill="orange" font-size="30.000006000000003">
-<title>SIG_NAME</title>FP_MCU_INT_L</text>
-<text stroke="none" x="30" fill="black" font-size="30.000006000000003">
-<title>$XR0</title>2&nbsp;</text>
-</g>
-<g transform="translate(1750,-2450)">
-<line x2="-850" stroke="goldenrod"></line>
-<text stroke="none" x="-810" y="-10" fill="orange" font-size="30.000006000000003">
-<title>SIG_NAME</title>FP_SENSOR_SEL</text>
-<text stroke="none" x="-974" fill="black" font-size="30.000006000000003">
-<title>$XR1</title>5&nbsp;</text>
-<text stroke="none" x="-914" fill="black" font-size="30.000006000000003">
-<title>$XR0</title>2&nbsp;</text>
-</g>
-<g transform="translate(4250,-1400)">
-<line x2="850" stroke="goldenrod"></line>
-<text stroke="none" x="240" y="-10" fill="orange" font-size="30.000006000000003">
-<title>SIG_NAME</title>FP_SENSOR_SEL</text>
-<text stroke="none" x="940" fill="black" font-size="30.000006000000003">
-<title>$XR1</title>5&nbsp;</text>
-<text stroke="none" x="880" fill="black" font-size="30.000006000000003">
-<title>$XR0</title>2&nbsp;</text>
-</g>
-<g transform="translate(6500,-2350)">
-<line x2="-850" stroke="goldenrod"></line>
-<text stroke="none" x="-810" y="-10" fill="orange" font-size="30.000006000000003">
-<title>SIG_NAME</title>FP_SENSOR_SEL</text>
-<text stroke="none" x="-974" fill="black" font-size="30.000006000000003">
-<title>$XR1</title>5&nbsp;</text>
-<text stroke="none" x="-914" fill="black" font-size="30.000006000000003">
-<title>$XR0</title>2&nbsp;</text>
-</g>
-<g transform="translate(2000,-2100)">
-<line y2="-150" stroke="goldenrod"></line>
-</g>
-<g transform="translate(3850,-850)">
-<line y2="-50" stroke="goldenrod"></line>
-</g>
-<g transform="translate(2800,-3800)">
-<line y2="-200" stroke="goldenrod"></line>
-</g>
-<g transform="translate(2800,-4000)">
-<line y2="-100" stroke="goldenrod"></line>
-</g>
-<g transform="translate(2800,-4100)">
-<line y2="-150" stroke="goldenrod"></line>
-</g>
-<g transform="translate(2900,-4000)">
-<line x2="-100" stroke="goldenrod"></line>
-</g>
-<g transform="translate(2900,-4100)">
-<line x2="-100" stroke="goldenrod"></line>
-</g>
-<g transform="translate(2800,-4250)">
-<line x2="100" stroke="goldenrod"></line>
-</g>
-<g transform="translate(2800,-4350)">
-<line y2="100" stroke="goldenrod"></line>
-</g>
-<g transform="translate(2800,-4400)">
-<line y2="50" stroke="goldenrod"></line>
-</g>
-<g transform="translate(2900,-4350)">
-<line x2="-100" stroke="goldenrod"></line>
-</g>
-<g transform="translate(3250,-4000)">
-<line x2="150" stroke="goldenrod"></line>
-</g>
-<g transform="translate(2900,-4400)">
-<line x2="-100" stroke="goldenrod"></line>
-</g>
-<g transform="translate(3400,-4000)">
-<line y2="200" stroke="goldenrod"></line>
-</g>
-<g transform="translate(3250,-4250)">
-<line x2="150" stroke="goldenrod"></line>
-</g>
-<g transform="translate(3250,-4350)">
-<line x2="150" stroke="goldenrod"></line>
-</g>
-<g transform="translate(3250,-4400)">
-<line x2="150" stroke="goldenrod"></line>
-</g>
-<g transform="translate(3400,-4250)">
-<line y2="250" stroke="goldenrod"></line>
-</g>
-<g transform="translate(3400,-4350)">
-<line y2="100" stroke="goldenrod"></line>
-</g>
-<g transform="translate(3400,-4400)">
-<line y2="50" stroke="goldenrod"></line>
-</g>
-<g transform="translate(6750,-2050)">
-<line y2="-150" stroke="goldenrod"></line>
-</g>
-<g transform="translate(5600,-3850)">
-<line y2="-50" stroke="goldenrod"></line>
-</g>
-<g transform="translate(5600,-3900)">
-<line y2="-50" stroke="goldenrod"></line>
-</g>
-<g transform="translate(5600,-3900)">
-<line x2="100" stroke="goldenrod"></line>
-</g>
-<g transform="translate(5600,-3950)">
-<line x2="100" stroke="goldenrod"></line>
-</g>
-<g transform="translate(6000,-3650)">
-<line x2="100" stroke="goldenrod"></line>
-</g>
-<g transform="translate(6000,-3700)">
-<line x2="100" stroke="goldenrod"></line>
-</g>
-<g transform="translate(6000,-3750)">
-<line x2="100" stroke="goldenrod"></line>
-</g>
-<g transform="translate(6100,-3650)">
-<line x2="100" stroke="goldenrod"></line>
-</g>
-<g transform="translate(6100,-3700)">
-<line y2="50" stroke="goldenrod"></line>
-</g>
-<g transform="translate(6100,-3750)">
-<line y2="50" stroke="goldenrod"></line>
-</g>
-<g transform="translate(6200,-3650)">
-<line y2="50" stroke="goldenrod"></line>
-</g>
-<g transform="translate(6000,-4150)">
-<line x2="100" stroke="goldenrod"></line>
-</g>
-<g transform="translate(6000,-4250)">
-<line x2="100" stroke="goldenrod"></line>
-</g>
-<g transform="translate(6100,-4150)">
-<line y2="400" stroke="goldenrod"></line>
-</g>
-<g transform="translate(6100,-4250)">
-<line y2="100" stroke="goldenrod"></line>
-</g>
-<g transform="translate(6000,-3950)">
-<line x2="1350" stroke="goldenrod"></line>
-<text stroke="none" x="440" y="-10" fill="orange" font-size="30.000006000000003">
-<title>SIG_NAME</title>MCU_ELAN_SPI_CS_L</text>
-<text stroke="none" x="406" y="-10" fill="black" font-size="30.000006000000003">
-<title>$XR0</title>5&nbsp;</text>
-</g>
-<g transform="translate(7850,-2450)">
-<line x2="-850" stroke="goldenrod"></line>
-<text stroke="none" x="-560" y="-10" fill="orange" font-size="30.000006000000003">
-<title>SIG_NAME</title>MCU_ELAN_SPI_CS_L</text>
-<text stroke="none" x="30" fill="black" font-size="30.000006000000003">
-<title>$XR0</title>5&nbsp;</text>
-</g>
-<g transform="translate(7350,-3950)">
-<line y2="-50" stroke="goldenrod"></line>
-</g>
-<g transform="translate(3100,-2500)">
-<line x2="-850" stroke="goldenrod"></line>
-<text stroke="none" x="-560" y="-10" fill="orange" font-size="30.000006000000003">
-<title>SIG_NAME</title>MCU_FPC_SPI_CS_L</text>
-<text stroke="none" x="30" fill="black" font-size="30.000006000000003">
-<title>$XR0</title>5&nbsp;</text>
-</g>
-<g transform="translate(3250,-4050)">
-<line x2="1450" stroke="goldenrod"></line>
-<text stroke="none" x="390" y="-10" fill="orange" font-size="30.000006000000003">
-<title>SIG_NAME</title>MCU_FPC_SPI_CS_L</text>
-<text stroke="none" x="1530" fill="black" font-size="30.000006000000003">
-<title>$XR0</title>5&nbsp;</text>
-</g>
-<g transform="translate(4700,-4050)">
-<line y2="-50" stroke="goldenrod"></line>
-</g>
-<g transform="translate(4700,-4050)">
-<line x2="50" stroke="goldenrod"></line>
-</g>
-<g transform="translate(3250,-4100)">
-<line x2="1200" stroke="goldenrod"></line>
-<text stroke="none" x="390" y="-10" fill="orange" font-size="30.000006000000003">
-<title>SIG_NAME</title>MCU_FP_RST_L</text>
-<text stroke="none" x="1290" fill="black" font-size="30.000006000000003">
-<title>$XR1</title>5&nbsp;</text>
-<text stroke="none" x="1230" fill="black" font-size="30.000006000000003">
-<title>$XR0</title>2&nbsp;</text>
-</g>
-<g transform="translate(6000,-4000)">
-<line x2="1000" stroke="goldenrod"></line>
-<text stroke="none" x="440" y="-10" fill="orange" font-size="30.000006000000003">
-<title>SIG_NAME</title>MCU_FP_RST_L</text>
-<text stroke="none" x="1090" fill="black" font-size="30.000006000000003">
-<title>$XR1</title>5&nbsp;</text>
-<text stroke="none" x="1030" fill="black" font-size="30.000006000000003">
-<title>$XR0</title>2&nbsp;</text>
-</g>
-<g transform="translate(4200,-3950)">
-<line x2="-950" stroke="goldenrod"></line>
-<text stroke="none" x="-560" y="-10" fill="orange" font-size="30.000006000000003">
-<title>SIG_NAME</title>MCU_FP_SPI_CLK</text>
-<text stroke="none" x="90" fill="black" font-size="30.000006000000003">
-<title>$XR1</title>5&nbsp;</text>
-<text stroke="none" x="30" fill="black" font-size="30.000006000000003">
-<title>$XR0</title>2&nbsp;</text>
-</g>
-<g transform="translate(6000,-3900)">
-<line x2="1000" stroke="goldenrod"></line>
-<text stroke="none" x="440" y="-10" fill="orange" font-size="30.000006000000003">
-<title>SIG_NAME</title>MCU_FP_SPI_CLK</text>
-<text stroke="none" x="1090" fill="black" font-size="30.000006000000003">
-<title>$XR1</title>5&nbsp;</text>
-<text stroke="none" x="1030" fill="black" font-size="30.000006000000003">
-<title>$XR0</title>2&nbsp;</text>
-</g>
-<g transform="translate(1750,-2550)">
-<line x2="-850" stroke="goldenrod"></line>
-<text stroke="none" x="-810" y="-10" fill="orange" font-size="30.000006000000003">
-<title>SIG_NAME</title>MCU_FP_SPI_CS_L</text>
-<text stroke="none" x="-974" fill="black" font-size="30.000006000000003">
-<title>$XR1</title>5&nbsp;</text>
-<text stroke="none" x="-914" fill="black" font-size="30.000006000000003">
-<title>$XR0</title>2&nbsp;</text>
-</g>
-<g transform="translate(6500,-2450)">
-<line x2="-850" stroke="goldenrod"></line>
-<text stroke="none" x="-810" y="-10" fill="orange" font-size="30.000006000000003">
-<title>SIG_NAME</title>MCU_FP_SPI_CS_L</text>
-<text stroke="none" x="-974" fill="black" font-size="30.000006000000003">
-<title>$XR1</title>5&nbsp;</text>
-<text stroke="none" x="-914" fill="black" font-size="30.000006000000003">
-<title>$XR0</title>2&nbsp;</text>
-</g>
-<g transform="translate(2900,-4050)">
-<line x2="-950" stroke="goldenrod"></line>
-<text stroke="none" x="-910" y="-10" fill="orange" font-size="30.000006000000003">
-<title>SIG_NAME</title>MCU_FP_SPI_MISO</text>
-<text stroke="none" x="-1044" fill="black" font-size="30.000006000000003">
-<title>$XR1</title>5&nbsp;</text>
-<text stroke="none" x="-984" fill="black" font-size="30.000006000000003">
-<title>$XR0</title>2&nbsp;</text>
-</g>
-<g transform="translate(6000,-3800)">
-<line x2="1000" stroke="goldenrod"></line>
-<text stroke="none" x="440" y="-10" fill="orange" font-size="30.000006000000003">
-<title>SIG_NAME</title>MCU_FP_SPI_MISO</text>
-<text stroke="none" x="1090" fill="black" font-size="30.000006000000003">
-<title>$XR1</title>5&nbsp;</text>
-<text stroke="none" x="1030" fill="black" font-size="30.000006000000003">
-<title>$XR0</title>2&nbsp;</text>
-</g>
-<g transform="translate(2900,-3950)">
-<line x2="-950" stroke="goldenrod"></line>
-<text stroke="none" x="-910" y="-10" fill="orange" font-size="30.000006000000003">
-<title>SIG_NAME</title>MCU_FP_SPI_MOSI</text>
-<text stroke="none" x="-1044" fill="black" font-size="30.000006000000003">
-<title>$XR1</title>5&nbsp;</text>
-<text stroke="none" x="-984" fill="black" font-size="30.000006000000003">
-<title>$XR0</title>2&nbsp;</text>
-</g>
-<g transform="translate(6000,-3850)">
-<line x2="1000" stroke="goldenrod"></line>
-<text stroke="none" x="440" y="-10" fill="orange" font-size="30.000006000000003">
-<title>SIG_NAME</title>MCU_FP_SPI_MOSI</text>
-<text stroke="none" x="1090" fill="black" font-size="30.000006000000003">
-<title>$XR1</title>5&nbsp;</text>
-<text stroke="none" x="1030" fill="black" font-size="30.000006000000003">
-<title>$XR0</title>2&nbsp;</text>
-</g>
-<g transform="translate(4500,-4800)">
-<line x2="-700" stroke="goldenrod" stroke-width="6"></line>
-<text stroke="none" x="-660" y="-10" fill="orange" font-size="38.000017">
-<title>SIG_NAME</title>PP1800</text>
-<text stroke="none" x="-794" fill="black" font-size="30.000006000000003">
-<title>$XR1</title>3&nbsp;</text>
-<text stroke="none" x="-734" fill="black" font-size="30.000006000000003">
-<title>$XR0</title>2&nbsp;</text>
-</g>
-<g transform="translate(1000,-4200)">
-<line x2="-500" stroke="goldenrod"></line>
-<text stroke="none" x="-460" y="-10" fill="orange" font-size="38.000017">
-<title>SIG_NAME</title>PP1800_FP</text>
-<text stroke="none" x="-624" fill="black" font-size="30.000006000000003">
-<title>$XR1</title>5&nbsp;</text>
-<text stroke="none" x="-564" fill="black" font-size="30.000006000000003">
-<title>$XR0</title>2&nbsp;</text>
-</g>
-<g transform="translate(5350,-4800)">
-<line x2="-700" stroke="goldenrod" stroke-width="6"></line>
-<text stroke="none" x="-410" y="-10" fill="orange" font-size="38.000017">
-<title>SIG_NAME</title>PP1800_FP</text>
-<text stroke="none" x="90" fill="black" font-size="30.000006000000003">
-<title>$XR1</title>5&nbsp;</text>
-<text stroke="none" x="30" fill="black" font-size="30.000006000000003">
-<title>$XR0</title>2&nbsp;</text>
-</g>
-<g transform="translate(1400,-3900)">
-<line y2="-300" stroke="goldenrod"></line>
-</g>
-<g transform="translate(1150,-4200)">
-<line x2="250" stroke="goldenrod"></line>
-</g>
-<g transform="translate(2900,-4200)">
-<line x2="-1500" stroke="goldenrod"></line>
-<text stroke="none" x="-896" y="-10" fill="orange" font-size="38.000017">
-<title>SIG_NAME</title>PP1800_FPC</text>
-</g>
-<g transform="translate(900,-2900)">
-<line x2="550" stroke="goldenrod" stroke-width="6"></line>
-<text stroke="none" x="40" y="-10" fill="orange" font-size="38.000017">
-<title>SIG_NAME</title>PP3300</text>
-<text stroke="none" x="-244" fill="black" font-size="30.000006000000003">
-<title>$XR3</title>5&nbsp;</text>
-<text stroke="none" x="-184" fill="black" font-size="30.000006000000003">
-<title>$XR2</title>4&nbsp;</text>
-<text stroke="none" x="-124" fill="black" font-size="30.000006000000003">
-<title>$XR1</title>3&nbsp;</text>
-<text stroke="none" x="-64" fill="black" font-size="30.000006000000003">
-<title>$XR0</title>2&nbsp;</text>
-</g>
-<g transform="translate(1450,-2850)">
-<line y2="-50" stroke="goldenrod" stroke-width="6"></line>
-</g>
-<g transform="translate(1450,-2900)">
-<line x2="450" stroke="goldenrod" stroke-width="6"></line>
-</g>
-<g transform="translate(1900,-2750)">
-<line y2="-150" stroke="goldenrod" stroke-width="6"></line>
-</g>
-<g transform="translate(2000,-2750)">
-<line y2="-150" stroke="goldenrod" stroke-width="6"></line>
-</g>
-<g transform="translate(2000,-2900)">
-<line x2="-100" stroke="goldenrod" stroke-width="6"></line>
-</g>
-<g transform="translate(3850,-1700)">
-<line y2="-100" stroke="goldenrod" stroke-width="6"></line>
-</g>
-<g transform="translate(3850,-1800)">
-<line x2="650" stroke="goldenrod" stroke-width="6"></line>
-</g>
-<g transform="translate(4500,-1750)">
-<line y2="-50" stroke="goldenrod" stroke-width="6"></line>
-</g>
-<g transform="translate(4500,-1800)">
-<line x2="950" stroke="goldenrod" stroke-width="6"></line>
-<text stroke="none" x="690" y="-10" fill="orange" font-size="38.000017">
-<title>SIG_NAME</title>PP3300</text>
-<text stroke="none" x="1160" fill="black" font-size="30.000006000000003">
-<title>$XR3</title>5&nbsp;</text>
-<text stroke="none" x="1100" fill="black" font-size="30.000006000000003">
-<title>$XR2</title>4&nbsp;</text>
-<text stroke="none" x="1040" fill="black" font-size="30.000006000000003">
-<title>$XR1</title>3&nbsp;</text>
-<text stroke="none" x="980" fill="black" font-size="30.000006000000003">
-<title>$XR0</title>2&nbsp;</text>
-</g>
-<g transform="translate(6100,-2750)">
-<line y2="-50" stroke="goldenrod" stroke-width="6"></line>
-</g>
-<g transform="translate(6100,-2800)">
-<line x2="-450" stroke="goldenrod" stroke-width="6"></line>
-<text stroke="none" x="-410" y="-10" fill="orange" font-size="38.000017">
-<title>SIG_NAME</title>PP3300</text>
-<text stroke="none" x="-694" fill="black" font-size="30.000006000000003">
-<title>$XR3</title>5&nbsp;</text>
-<text stroke="none" x="-634" fill="black" font-size="30.000006000000003">
-<title>$XR2</title>4&nbsp;</text>
-<text stroke="none" x="-574" fill="black" font-size="30.000006000000003">
-<title>$XR1</title>3&nbsp;</text>
-<text stroke="none" x="-514" fill="black" font-size="30.000006000000003">
-<title>$XR0</title>2&nbsp;</text>
-</g>
-<g transform="translate(6350,-2550)">
-<line y2="-250" stroke="goldenrod" stroke-width="6"></line>
-</g>
-<g transform="translate(4700,-4250)">
-<line y2="-50" stroke="goldenrod" stroke-width="6"></line>
-</g>
-<g transform="translate(4700,-4300)">
-<line x2="350" stroke="goldenrod" stroke-width="6"></line>
-<text stroke="none" x="90" y="-10" fill="orange" font-size="38.000017">
-<title>SIG_NAME</title>PP3300</text>
-<text stroke="none" x="560" fill="black" font-size="30.000006000000003">
-<title>$XR3</title>5&nbsp;</text>
-<text stroke="none" x="500" fill="black" font-size="30.000006000000003">
-<title>$XR2</title>4&nbsp;</text>
-<text stroke="none" x="440" fill="black" font-size="30.000006000000003">
-<title>$XR1</title>3&nbsp;</text>
-<text stroke="none" x="380" fill="black" font-size="30.000006000000003">
-<title>$XR0</title>2&nbsp;</text>
-</g>
-<g transform="translate(6500,-2550)">
-<line x2="-150" stroke="goldenrod" stroke-width="6"></line>
-</g>
-<g transform="translate(6350,-2800)">
-<line x2="-250" stroke="goldenrod" stroke-width="6"></line>
-</g>
-<g transform="translate(4500,-4950)">
-<line x2="-700" stroke="goldenrod" stroke-width="6"></line>
-<text stroke="none" x="-660" y="-10" fill="orange" font-size="38.000017">
-<title>SIG_NAME</title>PP3300</text>
-<text stroke="none" x="-914" fill="black" font-size="30.000006000000003">
-<title>$XR3</title>5&nbsp;</text>
-<text stroke="none" x="-854" fill="black" font-size="30.000006000000003">
-<title>$XR2</title>4&nbsp;</text>
-<text stroke="none" x="-794" fill="black" font-size="30.000006000000003">
-<title>$XR1</title>3&nbsp;</text>
-<text stroke="none" x="-734" fill="black" font-size="30.000006000000003">
-<title>$XR0</title>2&nbsp;</text>
-</g>
-<g transform="translate(6750,-2700)">
-<line y2="-100" stroke="goldenrod" stroke-width="6"></line>
-</g>
-<g transform="translate(6750,-2800)">
-<line x2="-400" stroke="goldenrod" stroke-width="6"></line>
-</g>
-<g transform="translate(7350,-4150)">
-<line y2="-50" stroke="goldenrod" stroke-width="6"></line>
-</g>
-<g transform="translate(7350,-4200)">
-<line x2="550" stroke="goldenrod" stroke-width="6"></line>
-<text stroke="none" x="340" y="-10" fill="orange" font-size="30.000006000000003">
-<title>SIG_NAME</title>PP3300</text>
-<text stroke="none" x="760" fill="black" font-size="30.000006000000003">
-<title>$XR3</title>5&nbsp;</text>
-<text stroke="none" x="700" fill="black" font-size="30.000006000000003">
-<title>$XR2</title>4&nbsp;</text>
-<text stroke="none" x="640" fill="black" font-size="30.000006000000003">
-<title>$XR1</title>3&nbsp;</text>
-<text stroke="none" x="580" fill="black" font-size="30.000006000000003">
-<title>$XR0</title>2&nbsp;</text>
-</g>
-<g transform="translate(6000,-4100)">
-<line x2="350" stroke="goldenrod" stroke-width="6"></line>
-</g>
-<g transform="translate(6000,-4200)">
-<line x2="350" stroke="goldenrod" stroke-width="6"></line>
-</g>
-<g transform="translate(6350,-4100)">
-<line y2="-100" stroke="goldenrod" stroke-width="6"></line>
-</g>
-<g transform="translate(6350,-4200)">
-<line y2="-100" stroke="goldenrod" stroke-width="6"></line>
-</g>
-<g transform="translate(6350,-4300)">
-<line x2="550" stroke="goldenrod" stroke-width="6"></line>
-<text stroke="none" x="90" y="-10" fill="orange" font-size="30.000006000000003">
-<title>SIG_NAME</title>PP3300_ELAN</text>
-</g>
-<g transform="translate(6900,-4250)">
-<line y2="-50" stroke="goldenrod" stroke-width="6"></line>
-</g>
-<g transform="translate(6900,-4300)">
-<line x2="200" stroke="goldenrod" stroke-width="6"></line>
-</g>
-<g transform="translate(7100,-4250)">
-<line y2="-50" stroke="goldenrod" stroke-width="6"></line>
-</g>
-<g transform="translate(7350,-4300)">
-<line x2="-250" stroke="goldenrod" stroke-width="6"></line>
-</g>
-<g transform="translate(1000,-4100)">
-<line x2="-500" stroke="goldenrod" stroke-width="6"></line>
-<text stroke="none" x="-460" y="-10" fill="orange" font-size="38.000017">
-<title>SIG_NAME</title>PP3300_FP</text>
-<text stroke="none" x="-624" fill="black" font-size="30.000006000000003">
-<title>$XR1</title>5&nbsp;</text>
-<text stroke="none" x="-564" fill="black" font-size="30.000006000000003">
-<title>$XR0</title>2&nbsp;</text>
-</g>
-<g transform="translate(5350,-4950)">
-<line x2="-700" stroke="goldenrod" stroke-width="6"></line>
-<text stroke="none" x="-410" y="-10" fill="orange" font-size="38.000017">
-<title>SIG_NAME</title>PP3300_FP</text>
-<text stroke="none" x="90" fill="black" font-size="30.000006000000003">
-<title>$XR1</title>5&nbsp;</text>
-<text stroke="none" x="30" fill="black" font-size="30.000006000000003">
-<title>$XR0</title>2&nbsp;</text>
-</g>
-<g transform="translate(7500,-4300)">
-<line x2="400" stroke="goldenrod" stroke-width="6"></line>
-<text stroke="none" x="140" y="-10" fill="orange" font-size="30.000006000000003">
-<title>SIG_NAME</title>PP3300_FP</text>
-<text stroke="none" x="490" fill="black" font-size="30.000006000000003">
-<title>$XR1</title>5&nbsp;</text>
-<text stroke="none" x="430" fill="black" font-size="30.000006000000003">
-<title>$XR0</title>2&nbsp;</text>
-</g>
-<g transform="translate(1150,-4100)">
-<line x2="100" stroke="goldenrod"></line>
-</g>
-<g transform="translate(1250,-4100)">
-<line y2="-50" stroke="goldenrod"></line>
-</g>
-<g transform="translate(1650,-3900)">
-<line y2="-250" stroke="goldenrod"></line>
-</g>
-<g transform="translate(1650,-4150)">
-<line x2="-400" stroke="goldenrod" stroke-width="6"></line>
-</g>
-<g transform="translate(2900,-4150)">
-<line x2="-1250" stroke="goldenrod" stroke-width="6"></line>
-<text stroke="none" x="-896" y="-10" fill="orange" font-size="38.000017">
-<title>SIG_NAME</title>PP3300_FPC</text>
-</g>
-<circle cx="2800" cy="-4000" r="10" stroke="black" fill="black"></circle>
-<circle cx="2800" cy="-4100" r="10" stroke="black" fill="black"></circle>
-<circle cx="2800" cy="-4250" r="10" stroke="black" fill="black"></circle>
-<circle cx="2800" cy="-4350" r="10" stroke="black" fill="black"></circle>
-<circle cx="3400" cy="-4000" r="10" stroke="black" fill="black"></circle>
-<circle cx="3400" cy="-4250" r="10" stroke="black" fill="black"></circle>
-<circle cx="3400" cy="-4350" r="10" stroke="black" fill="black"></circle>
-<circle cx="5600" cy="-3900" r="10" stroke="black" fill="black"></circle>
-<circle cx="6100" cy="-3650" r="10" stroke="black" fill="black"></circle>
-<circle cx="6100" cy="-3700" r="10" stroke="black" fill="black"></circle>
-<circle cx="6100" cy="-3750" r="10" stroke="black" fill="black"></circle>
-<circle cx="6100" cy="-4150" r="10" stroke="black" fill="black"></circle>
-<circle cx="4700" cy="-4050" r="10" stroke="black" fill="black"></circle>
-<circle cx="1400" cy="-4200" r="10" stroke="black" fill="black"></circle>
-<circle cx="1450" cy="-2900" r="10" stroke="black" fill="black"></circle>
-<circle cx="1900" cy="-2900" r="10" stroke="black" fill="black"></circle>
-<circle cx="4500" cy="-1800" r="10" stroke="black" fill="black"></circle>
-<circle cx="6100" cy="-2800" r="10" stroke="black" fill="black"></circle>
-<circle cx="6350" cy="-2800" r="10" stroke="black" fill="black"></circle>
-<circle cx="6350" cy="-4200" r="10" stroke="black" fill="black"></circle>
-<circle cx="6900" cy="-4300" r="10" stroke="black" fill="black"></circle>
-<circle cx="7100" cy="-4300" r="10" stroke="black" fill="black"></circle>
-<circle cx="1650" cy="-4150" r="10" stroke="black" fill="black"></circle>
-</svg>
-
-</div>
-</div>
-<hr>
-</body></html>
diff --git a/docs/schematics/dragonclaw/dragonclaw_v0.2_bom.csv b/docs/schematics/dragonclaw/dragonclaw_v0.2_bom.csv
deleted file mode 100644
index 13f2a55b6b..0000000000
--- a/docs/schematics/dragonclaw/dragonclaw_v0.2_bom.csv
+++ /dev/null
@@ -1,26 +0,0 @@
-Reference designators,DNP designators,Quantity,Manufacturer,Manufacturer P/N,Description,Sourcing,Mounting Type,Vendor Name,Vendor P/N,URL,Notes
-C1 C3 C4 C5 C7 C10 C11 C14 C15 C16 C18 C19 C20,,13,Yageo,CC0201KRX5R6BB104,0201 0.1 uF 10 V ±10 % Tolerance X5R SMT Multilayer Ceramic Capacitor,tempo,smt,Digi-Key,311-1593-1-ND,https://octopart.com/click/track?ai=8297&sig=067af79&sid=459&ppid=25629481&vpid=193845858&ct=offers,
-C2 C8,,2,TDK,C1005X5R1A475K050BC,C Series 0402 4.7 uF 10 V ±10 % Tolerance X5R SMT Multilayer Ceramic Capacitor,tempo,smt,Digi-Key,445-13820-1-ND,https://octopart.com/click/track?ai=8297&sig=01f98a8&sid=459&ppid=28166959&vpid=73759644&ct=offers,
-C6 C12 C13 C17,,4,Taiyo Yuden,LMK063BBJ105MPLF,CAP CER 1UF 10V X5R 0201,tempo,smt,Digi-Key,587-6263-1-ND,https://octopart.com/click/track?ai=8297&sig=0712f19&sid=459&ppid=59159715&vpid=528035991&ct=offers,
-J1,,1,Panasonic,AXK750147G,"Connector, Receptacle, 50 Position, 2Row; Pitch Spacing:0.4Mm; No. Of Contacts:50Contacts; Gender:receptacle; Product Range:p4 Series; Contact Termination Type:surface Mount; No. Of Rows:2Rows; Contact Plating:gold Plated Contacts Rohs Compliant: Yes",tempo,smt,Digi-Key,255-2533-1-ND,https://octopart.com/click/track?ai=8297&sig=053b57f&sid=459&ppid=6716868&vpid=34098380&ct=offers,
-J4,,1,Samtec,FTSH-105-01-L-DV-P-TR,Connector Systems:wire-To-Board; Pitch Spacing:1.27Mm; No. Of Rows:2Rows; No. Of Contacts:10Contacts; Contact Termination Type:surface Mount; Product Range:ftsh Series; Connector Shroud:unshrouded; Contact Material:phosphor Bronze Rohs Compliant: Yes,tempo,smt,Mouser,200-FTSH10501LDVPTR,https://octopart.com/click/track?ai=8297&sig=062d0da&sid=2401&ppid=9236906&vpid=493091076&ct=offers,
-J3,,1,Hirose,BM10NB(0.8)-16DS-0.4V(51),CONN RCPT 16POS SMD GOLD,tempo,smt,Digi-Key,H11823CT-ND,https://octopart.com/click/track?ai=8297&sig=086fb17&sid=459&ppid=19073631&vpid=33743439&ct=offers,
-J2,,1,Molex,505110-2091,CONN FFC/FPC BOTTOM 20P .5MM R/A,tempo,smt,Digi-Key,WM11287CT-ND,https://octopart.com/click/track?ai=8297&sig=08af8fc&sid=459&ppid=57952888&vpid=213397109&ct=offers,
-J5,,1,Hirose,FH35C-13S-0.3SHW(99),CONN FPC 13POS 0.30MM R/A,tempo,smt,Digi-Key,H122265CT-ND,https://octopart.com/click/track?ai=8297&sig=0682a03&sid=459&ppid=33632612&vpid=120326136&ct=offers,
-U8 U12,,2,Texas Instruments,TS5A23159DGSR,Analog Switch Dual SPDT 10-Pin VSSOP T/R,tempo,smt,Digi-Key,296-18598-1-ND,https://octopart.com/click/track?ai=8297&sig=026eeda&sid=459&ppid=512343&vpid=1735040&ct=offers,
-U14,,1,Texas Instruments,SN74LVC1G07YZVR,Buffer/Driver 1-CH Non-Inverting Open Drain CMOS 4-Pin DSBGA T/R,tempo,leadless,Digi-Key,296-21057-1-ND,https://octopart.com/click/track?ai=8297&sig=0e65ea2&sid=459&ppid=664237&vpid=1799702&ct=offers,
-U9 U10,,2,Texas Instruments,SN74AUP1T97YZPR,IC TRNSLTR UNIDIRECTIONAL 6DSBGA,tempo,leadless,Digi-Key,296-17899-1-ND,https://octopart.com/click/track?ai=8297&sig=0e9ca45&sid=459&ppid=464945&vpid=1674955&ct=offers,
-U1,,1,Texas Instruments,INA3221AIRGVR,IC CURRENT SHUNT MONITOR 16VQFN,tempo,leadless,Digi-Key,296-INA3221AIRGVRCT-ND,https://octopart.com/click/track?ai=8297&sig=0b68a57&sid=459&ppid=22631279&vpid=595207883&ct=offers,
-U2,,1,STMicroelectronics,STM32F412CGU6,IC MCU 32BIT 1MB FLASH 48UFQFPN,tempo,leadless,Mouser,511-STM32F412CGU6,https://octopart.com/click/track?ai=8297&sig=0d8fdb9&sid=2401&ppid=74146039&vpid=458625504&ct=offers,
-U3 U4 U5 U6,,4,Texas Instruments,TPS2559DRCR,IC PWR SWITCH N-CHAN 1:1 10VSON,tempo,leadless,Digi-Key,296-40730-1-ND,https://octopart.com/click/track?ai=8297&sig=0e5279b&sid=459&ppid=47153743&vpid=192871412&ct=offers,
-U7 U13 U15,,3,Texas Instruments,TS3A5018RSVR,IC SWITCH QUAD SPDT 16UQFN,tempo,leadless,Digi-Key,296-27552-1-ND,https://octopart.com/click/track?ai=8297&sig=0179e01&sid=459&ppid=18629953&vpid=34364363&ct=offers,
-DS1,,1,Lite-On,LTST-C190GKT,"Smd, 0603, Grn, 569Nm, 6Mcd, Clr, T/r Rohs Compliant: Yes",tempo,smt,Digi-Key,160-1183-1-ND,https://octopart.com/click/track?ai=8297&sig=0316225&sid=459&ppid=549821&vpid=1103326&ct=offers,
-R37 R38 R47 R49 R51,,5,Vishay,CRCW02010000Z0ED,CRCW Series 0201 0.05 W 0 Ohm Jumper Surface Mount Thick Film Chip Resistor,tempo,smt,Digi-Key,541-0.0AGCT-ND,https://octopart.com/click/track?ai=8297&sig=0ed1c57&sid=459&ppid=39994378&vpid=114977597&ct=offers,
-R35 R36 R40,,3,Vishay,CRCW02011M00FKED,"THICK FILM RESISTOR, 1MOHM, 50mW, ±1%",tempo,smt,Digi-Key,541-1.00MAABCT-ND,https://octopart.com/click/track?ai=8297&sig=0227c5e&sid=459&ppid=41857821&vpid=116456133&ct=offers,
-R31,,1,Vishay,CRCW020110K0FNED,Res Thick Film 0201 10K Ohm 1% 1/20W ±200ppm/°C Molded SMD SMD Paper T/R,tempo,smt,Mouser,71-CRCW0201-10K,https://octopart.com/click/track?ai=8297&sig=0ddf9ae&sid=2401&ppid=39803208&vpid=116516014&ct=offers,
-R48,,1,Vishay,CRCW0402120RFKEDC,D10/crcw0402-C 100 120R 1% Et7 E3,tempo,smt,Digi-Key,541-4077-1-ND,https://octopart.com/click/track?ai=8297&sig=08ebab3&sid=459&ppid=75649391&vpid=454352811&ct=offers,
-R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R17 R18 R21 R22 R27 R28 R30 R33 R39 R41 R44 R50 R52 R55 R56,,26,Vishay,CRCW0201100KFKED,Res Thick Film 0201 100K Ohm 1% 1/20W ±100ppm/°C Molded SMD SMD Paper T/R,tempo,smt,Digi-Key,541-100KAABDKR-ND,https://octopart.com/click/track?ai=8297&sig=0c369aa&sid=459&ppid=41857764&vpid=115224580&ct=offers,
-R26,,1,Vishay,CRCW02011K00FNED,Res Thick Film 0201 1K Ohm 1% 1/20W ±200ppm/°C Molded SMD SMD Paper T/R,tempo,smt,Mouser,71-CRCW02011K00FNED,https://octopart.com/click/track?ai=8297&sig=000b814&sid=2401&ppid=39803573&vpid=116319440&ct=offers,
-R1 R19 R23 R24 R42 R43,,6,Stackpole Electronics,CSR0402FKR500,"Thick Film - Current Sensing 0402, 1%, T&r - 1,000 Pcs/reel, 0.5 Ohms Rohs Compliant: Yes",tempo,smt,Digi-Key,CSR0402FKR500CT-ND,https://octopart.com/click/track?ai=8297&sig=0aa805e&sid=459&ppid=21887093&vpid=203733614&ct=offers,
-Q1 Q2,,2,ON Semiconductor,BSS138,Fet 50V 3.5 Ohm Sot23 Rohs Compliant: Yes,tempo,smt,Digi-Key,BSS138CT-ND,https://octopart.com/click/track?ai=8297&sig=004b419&sid=459&ppid=19021258&vpid=452459305&ct=offers,
-SW1 SW2,,2,C&K Components,JS102011SAQN,"Slide Switch, Spdt, 0.3A, 6Vdc, Smd; Contact Configuration:spdt; Switch Operation:on-On; Switch Mounting:surface Mount; Product Range:js Series; Contact Current Max:300Ma; Contact Voltage Ac Max:-; Contact Voltage Dc Max:6V Rohs Compliant: Yes",tempo,smt,Digi-Key,401-1999-1-ND,https://octopart.com/click/track?ai=8297&sig=0e387fb&sid=459&ppid=7088996&vpid=34441074&ct=offers,
diff --git a/docs/sitemap.md b/docs/sitemap.md
deleted file mode 100644
index 2b9f4aaaf8..0000000000
--- a/docs/sitemap.md
+++ /dev/null
@@ -1,79 +0,0 @@
-# Sitemap
-
-## Getting Started
-
-* [Getting Started Quickly](./getting_started_quickly.md)
-* [Core Runtime](./core_runtime.md)
-* [Write Protection](./write_protection.md)
-* [EC Acronyms and Technologies](./ec_terms.md)
-
-## EC Bringup
-
-* [New Board Checklist](./new_board_checklist.md)
-
-## Case Closed Debugging (CCD)
-
-* [Case Closed Debugging Overview][1]
-* [Google Security Chip Case Closed Debugging][2]
-* [Tutorials][3]
-
-## Verified Boot Troubleshooting
-
-* [Cr50 Verified Boot Troubleshooting][4]
-
-## Fingerprint MCU (FPMCU)
-
-* [Fingerprint MCU (FPMCU)](./fingerprint/fingerprint.md)
-* [FPMCU Development for Partners](./fingerprint/fingerprint-dev-for-partners.md)
-* [FPMCU Firmware Testing for Partners](./fingerprint/fingerprint-firmware-testing-for-partners.md)
-* [FPMCU Debugging](./fingerprint/fingerprint-debugging.md)
-* [Fingerprint Authentication Design Doc](./fingerprint/fingerprint-authentication-design-doc.md)
-* [Fingerprint Factory Requirements](./fingerprint/fingerprint-factory-requirements.md)
-* [Fingerprint Quick Factory Guide](./fingerprint/fingerprint-factory-quick-guide.md)
-* [Dragonclaw Schematics and Layout](./schematics/dragonclaw)
-
-## Testing
-
-* [Unit Tests](./unit_tests.md)
- * [Porting EC unit tests to Ztest](./ztest.md)
-* [Code Coverage](./code_coverage.md)
-
-## Updaters
-
-* [USB Updater](./usb_updater.md)
-
-## USB
-
-* [USB-C Power Delivery and Alternate Modes](./usb-c.md)
-* [USB-A and USB-C Policies for Sourcing Power](./usb_power.md)
-* [USB-C Power Delivery TCPMv2](./usb-tcpmv2.md)
-
-## Verified Boot
-
-* [Detachable Base Verified Boot](./detachable_base_verified_boot.md)
-
-## EC-3PO
-
-* [EC-3PO overview](./ec-3po.md)
-* [EC-3PO design doc](./ec-3po-design.md)
-
-## Zephyr
-
-* [Initialization Order](./zephyr_init.md)
-* [Proof-of-Concept-Device Bringup](./zephyr_poc_device_bringup.md)
-* [Shimming](./zephyr_shim.md)
-* [Porting EC unit tests to Ztest](./ztest.md)
-
-## Miscellaneous
-
-* [Low Battery Startup](./low_battery_startup.md)
-* [I2C tracing via console commands](./i2c-debugging.md)
-* [Application Processor to EC communication](./ap-ec-comm.md)
-* [Reducing EC Image Size](./reducing_ec_image_size.md)
-* [Code Reviews](./code_reviews.md)
-* [IDE Support](./ide-support.md)
-
-[1]:https://chromium.googlesource.com/chromiumos/platform/ec/+/cr50_stab/docs/case_closed_debugging.md
-[2]:https://chromium.googlesource.com/chromiumos/platform/ec/+/cr50_stab/docs/case_closed_debugging_cr50.md
-[3]:https://chromium.googlesource.com/chromiumos/platform/ec/+/cr50_stab/docs/ccd_howtos.md
-[4]:https://chromium.googlesource.com/chromiumos/platform/ec/+/cr50_stab/docs/cr50_vboot_troubleshooting.md
diff --git a/docs/unit_tests.md b/docs/unit_tests.md
deleted file mode 100644
index f26a8519c8..0000000000
--- a/docs/unit_tests.md
+++ /dev/null
@@ -1,232 +0,0 @@
-# Unit Tests
-
-Provides an overview of how to write and run the unit tests in the EC codebase.
-
-[TOC]
-
-## Running Unit Tests {#running}
-
-The unit tests run on the host machine using the [`host` board].
-
-List available unit tests:
-
-```bash
-(chroot) ~/trunk/src/platform/ec $ make print-host-tests
-```
-
-Build and run a specific unit test (the `host_command` test in this example):
-
-```bash
-(chroot) ~/trunk/src/platform/ec $ make run-host_command
-```
-
-Build and run all unit tests:
-
-```bash
-(chroot) ~/trunk/src/platform/ec $ make runhosttests -j
-```
-
-## Debugging Unit Tests
-
-You need the host version of gdb:
-
-```bash
-(chroot) sudo emerge -j sys-devel/gdb
-```
-
-Then run gdb on the specific test you want to debug (the `host_command` test in this example):
-
-```
-(chroot) gdb build/host/host_command/host_command.exe
-handle SIGUSR1 noprint nostop
-break test_hostcmd_ok
-run
-```
-
-## Writing Unit Tests
-
-Unit tests live in the [`test`] subdirectory of the CrOS EC codebase.
-
-All new unit tests should be written to use the Zephyr Ztest
-[API](https://docs.zephyrproject.org/latest/guides/test/ztest.html). If you are
-making significant changes to an existing test, you should also look at porting
-the test from the EC test API to the Ztest API.
-
-Using the Ztest API makes the unit tests suitable for submitting upstream to the
-Zephyr project, and reduces the porting work when the EC transitions to the
-Zephyr RTOS.
-
-### File headers
-
-Include [`test_util.h`] and any other required includes. In this example, the
-function being tested is defined in the test, but a real unit test would include
-the header file for the module that defines `some_function`.
-
-`test/my_test.c`:
-
-```c
-#include <stdbool.h>
-#include "test_util.h"
-
-static bool some_function(void)
-{
- return true;
-}
-```
-
-[`test_util.h`] includes `ztest.h` if `CONFIG_ZEPHYR` is defined, or defines a
-mapping from the `zassert` macros to the EC `TEST_ASSERT` macros if
-`CONFIG_ZEPHYR` is not defined.
-
-### Test cases
-
-Define the test cases. Use the `EC_TEST_RETURN` return type on these functions.
-
-```c
-/* Write a function with the following signature: */
-test_static EC_TEST_RETURN test_my_function(void)
-{
- /* Run some code */
- bool condition = some_function();
-
- /* Check that the expected condition is correct. */
- zassert_true(condition, NULL);
-
- return EC_SUCCESS;
-}
-```
-
-`test/my_test.c`:
-
-```c
-/* Write a function with the following signature: */
-test_static EC_TEST_RETURN test_my_function(void)
-{
- /* Run some code */
- bool condition = some_function();
-
- /* Check that the expected condition is correct. */
- TEST_EQ(condition, true, "%d");
-
- return EC_SUCCESS;
-}
-```
-
-The only difference between those two versions of `test/my_test.c` is the
-assertion: `c zassert_true(condition, NULL);` versus `c TEST_EQ(condition, true,
-"%d");`
-
-### Specify the test cases to run
-
-The EC test API enumerates the test cases using `RUN_TEST` in the `run_test`
-function, while the Ztest API enumerates the test cases using `ztest_unit_test`
-inside another macro for the test suite, inside of `test_main`.
-
-`test/my_test.c`:
-
-```c
-#ifdef CONFIG_ZEPHYR
-void test_main(void)
-{
- ztest_test_suite(test_my_unit,
- ztest_unit_test(test_my_function));
- ztest_run_test_suite(test_my_unit);
-}
-#else
-/* The test framework will call the function named "run_test" */
-void run_test(int argc, char **argv)
-{
- /* Each unit test can be run using the RUN_TEST macro: */
- RUN_TEST(test_my_function);
-
- /* Report the results of all the tests at the end. */
- test_print_result();
-}
-#endif /* CONFIG_ZEPHYR */
-```
-
-### Task List
-
-EC unit tests can run additional tasks besides the main test thread. The EC unit
-test implementation provides a phtreads-based implementation of the EC task API.
-We do not yet support running additional tasks in Ztest-based tests.
-
-In the [`test`] subdirectory, create a `tasklist` file for your test that lists
-the tasks that should run as part of the test:
-
-`test/my_test.tasklist`:
-
-```c
-/*
- * No test task in this case, but you can use `TASK_TEST` macro to specify one.
- */
-#define CONFIG_TEST_TASK_LIST
-```
-
-### Makefile
-
-Add the test to the `Makefile` so that it can build as an EC unit test:
-
-`test/build.mk`:
-
-```Makefile
-test-list-host += my_test
-```
-
-and
-
-```Makefile
-my_test-y=my_test.o
-```
-
-Make sure you test shows up in the "host" tests:
-
-```bash
-(chroot) $ make print-host-tests | grep my_test
-host-my_test
-run-my_test
-```
-
-### Build and Run
-
-Build and run the test as an EC unit test:
-
-```bash
-(chroot) $ make run-my_test
-```
-
-For building the test as a Zephyr Ztest unit test, follow the instructions in
-[Porting EC unit tests to Ztest](./ztest.md) to build the unit test for Zephyr's
-"native_posix" host-based target.
-
-<!-- mdformat off(b/139308852) -->
-*** note
-**TIP**: Unit tests should be independent from each other as much as possible.
-This keeps the test (and any system state) simple to reason about and also
-allows running unit tests in parallel. You can use the
-[`before_test` hook][`test_util.h`] to reset the state before each test is run.
-***
-<!-- mdformat on -->
-
-## Mocks
-
-We do not yet support mocks for Zephyr Ztest-based tests. [Mocks][`mock`] enable
-you to simulate behavior for parts of the system that you're not directly
-testing. They can also be useful for testing specific edge cases that are hard
-to exercise during normal use (e.g., error conditions).
-
-See the [Mock README] for details.
-
-### Mock Time
-
-When writing unit tests that rely on a clock, it's best not to rely on a real
-hardware clock. It's very difficult to enforce exact timing with a real clock,
-which leads to test flakiness (and developers ignoring tests since they're flaky
-). Instead, use the [Mock Timer] to adjust the time during the test.
-
-[`mock`]: /include/mock
-[Mock Timer]: /include/mock/timer_mock.h
-[`test`]: /test
-[`host` board]: /board/host/
-[`test_util.h`]: /include/test_util.h
-[Mock README]: /common/mock/README.md
diff --git a/docs/usb-c.md b/docs/usb-c.md
deleted file mode 100644
index 1e009f82b2..0000000000
--- a/docs/usb-c.md
+++ /dev/null
@@ -1,219 +0,0 @@
-# EC Implementation of USB-C Power Delivery and Alternate Modes
-
-USB-C PD requires a complex state machine as USB-C PD can operate in many
-different modes. This includes but isn't limited to:
-
-* Negotiated power contracts. Either side of the cable can source or sink
- power up to 100W (if supported by device).
-* Reversed cable mode. This requires a mux to switch the signals before
- getting to the SoC (or AP).
-* Debug accessory mode, e.g. [Case Closed Debugging (CCD)]
-* Multiple uses for the 4 differential pair signals including
- * USB SuperSpeed mode (up to 4 lanes for USB data)
- * DisplayPort Alternate Mode (up to 4 lanes for DisplayPort data)
- * Dock Mode (2 lanes for USB data, and 2 lanes for DisplayPort)
- * Audio Accessory mode. (1 lane is used for L and R analog audio signal)
-
-For a more complete list of USB-C Power Delivery features, see the
-[USB-C PD spec][USB PD Spec Id].
-
-This document covers various touch points to consider for USB-C PD and Alternate
-Modes in the EC codebase.
-
-[TOC]
-
-## Glossary
-
-* PD {#pd}
- * Power Delivery. Protocol over USB-C connector that allows up to 100W of
- power. Not supported on USB-A or USB-B connectors. A good overview of
- USB PD is found in the [Introduction to USB Power Delivery] application
- note.
-* TCPC {#tcpc}
- * Type-C Port Controller. Typically a separate IC connected through I2C,
- sometimes embedded within the EC as a hardware sub module. The TCPC
- interprets physical layer signals on CC lines and Vbus, and sends that
- information to the TCPM to decide what action to take. In older designs,
- there was a separate EC (running this codebase) that acted as the TCPC
- that communicated with the main EC (also running this codebase), which
- acted as the TCPM. More info in the official
- [TCPC spec][USB TCPM Spec Id].
-* TCPM {#tcpm}
- * Type-C Port Manager. Manages the state of the USB-C connection. Makes
- decisions about what state to transition to. This is the code running on
- the EC itself.
-* PE {#pe}
- * Policy Engine. According to the [TypeC spec][USB TC Spec Id], the policy
- engine is the state machine that decides how the USB-C connection
- progresses through different states and which USB-C PD features are
- available, such as Try.SRC
-* TC {#tc}
- * Type-C physical layer.
-* PPC {#ppc}
- * Power Path Controller. An optional, separate IC that isolates various
- USB-C signals from each other and the rest of the board. This IC should
- prevent shorts and over current/voltage scenarios for Vbus. Some PPCs
- will protect signals other than Vbus as well.
-* SSMUX {#ssmux}
- * SuperSpeed Mux. This is typically the same IC as the TCPC; it enables
- the mirrored orientation of the USB-C cable to go to the correct pins on
- SoC. Also, allows the SuperSpeed signal to be used for different
- purposes, such as USB data or DisplayPort.
-* SVDM {#svdm}
- * Structured Vendor Defined Messages are a class of [USB PD](#pd) messages
- to enable non-power related communication between port partners. SVDMs
- are used to negotiate and set the display port mode on a USB-C
- connection.
-* DRP {#drp}
- * Dual Role Power Port. A USB-C port that can act as either a power Source
- or power Sink.
-* UFP {#ufp}
- * Upstream Facing Port. The USB data role that is typical for a peripheral
- (e.g. HID keyboard).
-* DFP {#dfp}
-
- * Downstream Facing Port. The USB Data role that is typical for a host
- machine (e.g. device running ChromeOS).
-
-* E-Mark {#emark}
-
- * Electronically marked cable. A USB-C cable that contains an embedded
- chip in the cable, used to identify the capabilities of the cable.
-
-* VCONN {#vconn}
-
- * Connector Voltage. A dedicated power supply rail for [E-Mark](#emark)
- cables and other accessory functions (such as display dongles, and
- docks). VCONN re-uses one of the CC1/CC2 signals to provide 5 volt, 1
- watt, of power.
-
-## Different PD stacks
-
-Right now platform/ec has two different implementations of USB-C PD stack.
-
-1. The older implementation is mainly contained within
- [`usb_pd_protocol.c`](../common/usb_pd_protocol.c) and
- [`usb_pd_policy.c`](../common/usb_pd_policy.c)
-2. The newer implementation is found under [`common/usbc`](../common/usbc) and
- is broken up into multiple different files and state machines
- * Policy engine state machine files, `usb_pe_*_sm.c`.
- * Protocol engine state machine file, `usb_prl_*_sm.c`.
- * State machine framework file, `usb_sm.c`.
- * Type-C physical layer state machine files, `usb_tc_*_sm.c`.
- * USB-C PD Task file, `usbc_task.c`.
-
-The older implementation supports firmware for device types other than
-Chromebooks. For example, the older stack supports the Zinger, which is the
-USB-C charging device that shipped with Samus, the Google Chromebook Pixel 2.
-The Zinger implements the charger only side of the USB PD protocol.
-
-To use the newer USB-C PD stack implementation, see
-[TCPMv2 Overview](usb-tcpmv2.md).
-
-## Implementation Considerations
-
-In both older and newer implementations, the following details apply:
-
-* For each USB-C port, there must be two tasks: `PD_C#` and `PD_INT_C#`, where
- `#` is the port number starting from `0`.
- * The `PD_C#` task runs the state machine (old or new) for the port and
- communicates with the TCPC, MUX, and PPC. This task needs a large task
- stack.
- * The `PD_INT_C#` tasks run at a higher priority than the state machine
- task, and its sole job is to receive interrupts from the TCPC as quickly
- as possible then send appropriate messages to other tasks (including
- `PD_C#`). This task shouldn't need much stack space, but the i2c
- recovery code requires a decent amount of stack space so it ends up
- needing a fair amount too.
-* Saving PD state between EC jumps
- * PD communication is disabled in locked RO images (normal state for
- customer devices). When the jump from RO to RW happens relatively
- quickly (e.g. there is not a long memory training step), then there
- aren't many problems when RW takes over and negotiates higher PD
- contracts.
- * To support factory use cases that don't have a battery (and are
- therefore unlocked), PD communication is enabled in unlocked RO. This
- allows systems without software sync enabled to get a higher power
- contract than 15W in RO.
- * We save and restore PD state between RO -> RW and RW -> RO jump to allow
- us to maintain a higher negotiated power through the full jump and
- re-initialization process. For example, for each port we save the power
- role, data role, and Vconn sourcing state in battery-backed or
- non-volatile RAM. This allows the firmware image that is initializing to
- restore an existing SNK contract (Chromebook as SNK) without cutting
- power. We don't cut the power from the external supplier because we
- issue a SoftReset (leaves Vbus intact) instead of a HardReset (drops
- Vbus) in this contract resume case.
- * Both use cases where we actually are able to restore the PD contract
- require an unlocked RO (e.g. factory) otherwise RO cannot communicate
- via PD and will drop the higher PD contract (by applying Rp/Rp on the CC
- lines temporarily)
- * The RO->RW use case is for an unlocked (e.g. factory) device that
- negotiated power and we want to keep that contract after we jump to
- RW in the normal software sync boot process. This is especially
- useful when there is no battery and Vbus is our only power source.
- * The RW->RO use case happens when we are performing auxiliary FW
- upgrades during software sync and BIOS instructs the EC to jump back
- to RO. We'll also try to maintain contracts over an EC reset when
- unlocked.
-
-## Configuration
-
-There are many `CONFIG_*` options and driver structs that are needed in the
-board.h and board.c implementation.
-
-### TCPC Config
-
-The `tcpc_config` array of `tcpc_config_t` structs defined in `board.c` (or
-baseboard equivalent) should be defined for every board. The index in the
-`tcpc_config` array corresponds to the USB-C port number. This struct should
-point to the specific TCPC driver that corresponds to the TCPC that is being
-used on that port. The i2c port and address for the TCPC are also specified
-here.
-
-### SSMUX Config
-
-The `usb_muxes` array of `usb_mux` structs defined in `board.c` (or baseboard
-equivalent) should be defined for every board. Normally the standard
-`tcpci_tcpm_usb_mux_driver` driver works, especially if TCPC and MUX are the
-same IC.
-
-If the signal strength for the high-speed data lines needs to be tuned for a
-specific hardware layout, the `board_init` field on the `usb_mux` is called
-every time the mux is woken up from a low power state and should be used for
-setting custom board tuning parameters.
-
-### PPC Config
-
-Some boards have an additional IC that sits between the physical USB-C connector
-and the rest of the board. The PPC IC gates whether the Vbus line is an input or
-output signal, based on i2c settings or gpio pins. A PPC also typically provides
-over voltage and over current protection on multiple USB-C pins.
-
-The `ppc_chips` array of `ppc_config_t` structs defined in `board.c` (or
-baseboard equivalent) sets the appropriate driver and i2c port/address for the
-PPC IC.
-
-### Useful Config Options
-
-Many USB-C policies and features are gated by various `CONFIG_*` options that
-should be defined in `board.h` (or baseboard equivalent).
-
-Most USB-C options will start with `CONFIG_USB_PD_` or `CONFIG_USBC_`. For their
-full descriptions see [config.h][config header link]
-
-## Interactions with other tasks
-
-TODO(https://crbug.com/974302): mention `USB_CHG_P#` and `CHARGER`
-
-## Upgrading FW for TCPCs
-
-TODO(https://crbug.com/974302): Mention how this works even though it is in
-depthcharge. Probing now. Need new driver in depthcharge
-
-[Case Closed Debugging (CCD)]: https://chromium.googlesource.com/chromiumos/platform/ec/+/cr50_stab/docs/case_closed_debugging_cr50.md
-[Introduction to USB Power Delivery]: https://www.microchip.com/wwwAppNotes/AppNotes.aspx?appnote=en575003
-[USB PD Spec Id]: https://www.usb.org/document-library/usb-power-delivery
-[USB TC Spec Id]: https://www.usb.org/document-library/usb-type-cr-cable-and-connector-specification-revision-20-august-2019
-[USB TCPM Spec Id]: https://www.usb.org/document-library/usb-type-ctm-port-controller-interface-specification
-[config header link]: ../include/config.h
diff --git a/docs/usb-tcpmv2.md b/docs/usb-tcpmv2.md
deleted file mode 100644
index b942b048d8..0000000000
--- a/docs/usb-tcpmv2.md
+++ /dev/null
@@ -1,221 +0,0 @@
-# EC USB-C Power Delivery TCPMv2 Overview
-
-As the original USB-C Power Delivery (PD) solution for the ChromeOS Embedded
-Controller has aged, it has grown to the point where it is difficult to add new
-features and address bugs. A new PD stack (generally referred to as TCPMv2) has
-been introduced to the codebase for use moving forward. It implements a layered,
-state-based design which tracks more closely with the USB Type-C and USB PD
-specifications.
-
-[TOC]
-
-## Enabling TCPMv2
-
-Boards may enable TCPMv2 by adding the following defines:
-
-* `CONFIG_USB_PD_TCPMV2`Configures the board to use the new stack.
-* `CONFIG_USB_DRP_ACC_TRYSRC`: Configures the type of state machine to run (in
- this case, a DRP which performs Try.SRC behavior). Currently available are
- DRP and charge-through Vconn-powered device options
-* `CONFIG_USB_PD_DECODE_SOP`: Sets up messaging for SOP’ and SOP’’, which is
- strongly encouraged in the TCPMv2 code moving forward
-* `CONFIG_USB_PID 0x1234`: Sets the USB Product Identifier. This will be
- shared for all boards within one reference design, and new PIDs may be
- requested by sending an email to the ChromeOS FW Team.
-* `CONFIG_USB_PD_REV30`: The TCPMv2 stack defaults to PD2.0 operation but
- defining this macro enables PD3.0 functionality.
-
-Other configurations to specify behaviors within the task still apply (ex.
-`CONFIG_USB_PD_ALT_MODE_DFP` and `CONFIG_USB_PD_TCPC_LOW_POWER`).
-
-## State Machine Framework
-
-The basis of the TCPMv2 state machines is a generic state machine framework.
-This framework can be found in common/usbc/usb\_sm.c. For each state, there may
-be defined:
-
-* Entry: Called upon entering a state
-* Run: Called while steady in a state
-* Exit: Called upon leaving a state
-* Parent: Superstate. Enters, exits, and runs alongside the child state. Only
- enters and exits when transitioning between states which do not share the
- parent.
-
-All fields are optional and may be set to NULL. A new state is transitioned to
-with a call into set\_state(), which exits the old state and parents and enters
-the new parents and state. States may be changed with set\_state() in any entry
-or run function, but any call from an exit function is ignored since exit is
-only called when a change is already in progress. While in a state, run\_state()
-executes the run function for the current state and parents. If set\_state() is
-called from either an entry function or a run function, the remaining run or
-entry functions are stopped.
-
-Below is a graphical example of what some states may look like. States 1 and 2
-share Parent State 1, while State 3 has Parent State of 2.
-
-![Example States](images/TCPMv2-ExampleStates.png "Example States")
-
-Translated into code, this would be something like below (note it is not
-necessary that the states be a part of an array, but the TCPMv2 code generally
-organizes the states in this way):
-
-```
-static const struct usb_state test_states[] = {
- [PARENT_1] = {
- .entry = parent_1_entry,
- .run = parent_1_run,
- .exit = parent_1_exit,
- },
- [PARENT_2] = {
- .entry = parent_2_entry,
- .run = parent_2_run,
- .exit = parent_2_exit,
- },
- [STATE_1] = {
- .entry = state_1_entry,
- .run = state_1_run,
- .exit = state_1_exit,
- .parent = &test_states[PARENT_1],
- },
- [STATE_2] = {
- .entry = state_2_entry,
- .run = state_2_run,
- .exit = state_2_exit,
- .parent = &test_states[PARENT_1],
- },
- [STATE_3] = {
- .entry = state_3_entry,
- .run = state_3_run,
- .exit = state_3_exit,
- .parent = &test_states[PARENT_2],
- },
-};
-```
-
-For this example, each test state is written simply to produce a print of its
-function name. The two exceptions are:
-
-* parent\_1\_run() calls set\_state() into STATE\_2 when called a second time
-* state\_2\_entry() calls set\_state() into STATE\_3
-
-Graphically, this is represented below:
-
-![Example Transitions](images/TCPMv2-ExampleTransitions.png "Example state transitions and resulting called functions")
-
-And the following code output is produced:
-
-```
-Calling run_state()
-state_1_run
-parent_1_run
-
-Calling run_state()
-state_1_run
-state_1_run calling set_state() to state 2
-state_1_exit
-state_2_entry
-state_2_entry calling set_state() to state 3
-state_2_exit
-parent_1_exit
-parent_2_entry
-state_3_entry
-
-Calling run_state()
-state_3_run
-parent_2_run
-```
-
-## TCPMv2 PD Task
-
-The TCPMv2 PD task is built upon state machines using the above framework and is
-located in common/usbc/usbc\_task.c. It is separated into three layers which
-track with the USB Type-C and USB PD specification states and run in a loop with
-5 ms periods between executions. A graphical representation of these layers is
-below.
-
-![PD Task Loop](images/TCPMv2-TaskLoop.png "PD task loop state machine calls")
-
-The task is designed such that the Type-C (TC) layer could run independently for
-any application which doesn’t wish to enable PD messaging. Boards define their
-appropriate Policy Engine (PE) and TC state machines through their selection of
-a CONFIG\_USB\_\* define, with current options supporting both Dual-Role Ports
-(DRPs) and Charge-Through Vconn-Powered Device (CTVPD). All boards use the same
-Protocol Layer (PRL) code.
-
-## TCPMv2 Layers
-
-### Overview
-
-The three state machines mentioned above interact with each other and the EC
-drivers in order to orchestrate all Type-C connection behavior. Graphically,
-they are represented below.
-
-![PD Task Layers](images/TCPMv2-TaskLayers.png "PD task layer interactions")
-
-Layers communicate with each other using atomic operations on flags and shared
-buffers. Functions calling into each layer are clearly named to indicate the
-layer they are acting on, and anything calling into the PD task should be doing
-so through pd\_\* named functions.
-
-Some specific examples of how this communication works between layers is below.
-If a port partner sends in a Vconn\_swap request, then:
-
-* PRL will communicate that a message was received to the PE layer through
- pe\_message\_received(), which sets PE\_FLAGS\_MSG\_RECEIVED and indicates
- the receive buffer has a message
-* PE asks with the TC whether the board is sourcing Vconn with
- tc\_is\_vconn\_src() which checks TC\_FLAGS\_VCONN\_ON
-* PE tells the PRL to send an ACCEPT message to the port partner through
- prl\_send\_ctrl\_msg() which fills in shared message information and sets
- PRL\_FLAGS\_MSG\_XMIT
-* PRL lets the PE know that the message transmit was successful through
- pe\_message\_sent() which sets PE\_FLAGS\_TX\_COMPLETE
-* TC tells the PE layer that the Vconn swap completed with
- pe\_vconn\_swap\_complete() which sets PE\_FLAGS\_VCONN\_SWAP\_COMPLETE
-
-### Type-C Layer
-
-Defined in the USB Type-C specification, this layer is responsible for basic
-connection. It takes care of setting the CC lines, detecting and debouncing the
-partner CC lines, and performs most of the interactions needed with the PPC and
-USB mux. Once the TC layer has gotten the connection to the point of being
-Attached.SNK or Attached.SRC, it will enable the PRL and PE layers accordingly.
-
-### Protocol Layer
-
-A part of the USB PD specification, the protocol layer is responsible for the
-actual sending and receiving of PD messages with the TCPCs. The layer is
-actually composed of 4 separate state machines running one after the other.
-These state machines are:
-
-* Chunked receive (RCH): passes messages up to the PE and requests chunks when
- chunking
-* Chunked transmit (TCH): receives messages from the PE and waits for chunk
- requests when chunking
-* Protocol transmit (PRL\_TX): passes messages to the TCPCs and handles PD 3.0
- collision avoidance
-* Protocol hard reset (PRL\_HR): responds to or transmits hard resets, resets
- PRL layer variables, notifies PE of hard reset receipt or sent
-
-### Policy Engine Layer
-
-The PE layer states are defined as a part of the USB PD specification. State
-names are meant to track very closely with the specification so they can be
-easily searchable and understood. The PE’s primary responsibility is to send and
-process PD messages in order to implement the port’s policy.
-
-## Best Practices
-
-* Always call return after set\_state(). Once the state has been changed,
- nothing further should be done in the current state.
-* Never call set\_state() from an exit function. The call will be ignored as
- there is already a state transition taking place.
-* Never call set\_state() from outside the PD task. The task may be waiting in
- any number of locations and the context should not change around it while it
- does so.
-* Always use flags to communicate between layers, and to communicate with the
- PD task from other tasks. Flags should be accessed through atomic
- operations.
-* Always use pd\_\* functions to access the PD task from other tasks.
-* Always write unit tests as code is added, to verify new code works and
- protect against regressions as development continues.
diff --git a/docs/usb_power.md b/docs/usb_power.md
deleted file mode 100644
index 95177dc150..0000000000
--- a/docs/usb_power.md
+++ /dev/null
@@ -1,277 +0,0 @@
-# USB Power Considerations
-
-Users want to be able to charge external devices using their Chromebook USB
-ports, e.g. charge a phone from their Chromebook. We want to provide a fast
-charging experience to end-users, so we prefer to offer high power charging when
-possible.
-
-[TOC]
-
-## Summary of Design Requirements
-
-For explanations of calculations see rest of doc.
-
-### Total System Power
-
-Total current needed for external USB devices at 5V:
-
-```
-((Number of Type-C Ports) * (1800mA)) + 1500mA +
-((Number of Type-A Ports) * (900mA)) + 600mA§
-```
-
-§ The additional 600mA can be omitted if BC1.2 is not supported for Type-A
-
-### Daughter Board Considerations
-
-If a daughter board has 1 Type-A (supporting BC 1.2) and 1 Type-C, the max
-potential current load at 5V is `Type-A Vbus (1500mA) + Type-C Vbus (3000mA) +
-Type-C Vconn (300mA) = 4800mA`
-
-* The DB ribbon cables need to be able to carry enough current to supply 24W
- (4.8A * 5V) of power to the DB.
- * This may be on a single or multiple power rails depending on hardware
- design.
-* The ground path on the ribbon cable from the DB also needs to be able to
- carry enough current to match the power rails.
-
-## USB Type-A Ports
-
-For Type-A ports, the [BC 1.2 Specification] adds higher power modes on top of
-the [USB 3.2 Specification]. While BC 1.2 support isn't required, it is
-preferred, as it allows end-users to charge their devices more quickly.
-
-[BC 1.2 Specification] defines multiple modes of operation including, but not
-limited to:
-
-* CDP - Charging Downstream Port
- * Allows USB Data. Provides guaranteed 1.5A @ 5V power.
- * ChromeOS device can act as a CDP.
-* SDP - Standard Downstream Port
- * Allows USB Data. Provides guaranteed current defined by USB
- Specifications
- * For USB3, provides guaranteed current of 0.9A @ 5V.
- * For USB2, provides guaranteed current of 0.5A @ 5V.
- * ChromeOS device can act as a SDP.
-* DCP - Dedicated Charging Port
- * No USB Data. Provides max of 1.5A @ 5V power.
- * ChromeOS device **will not** act as a DCP.
-
-For detection logic of each mode (e.g. on the D+ and D- pins) and nuance of
-power/current power requirements, see full [BC 1.2 Specification].
-
-Without BC 1.2 support, the max power requirements match that of a Standard
-Downstream Port (SDP) as defined by various specification (e.g.
-[USB 3.2 Specification]).
-
-### ChromeOS as Source - Policy for Type-A
-
-If BC 1.2 is supported on a ChromeOS device, then the first Type-A port in use
-will act as a CDP, providing a maximum current of 1.5A while also enabling USB
-data. All other Type-A ports will only be SDP, providing a maximum current of
-900mA.
-
-Note that the CDP Type-A port allocation is dynamic; the first Type-A port to
-draw more than 900mA gets to be the CDP, with a maximum current of 1.5A. Then
-all other Type-A ports get downgraded to the lower, 900mA current limit (i.e.
-SDP) while the first Type-A port maintains a current draw of more than 900mA. In
-practice, this means that the first Type-A device plugged in gets to consume
-1.5A and any Type-A device inserted after that will only get 900mA.
-
-Once the Type-A device drawing 1.5A stops pulling more than 900mA or is
-physically removed, then the extra 600mA (as well as CDP advertisement) becomes
-available to any Type-A port. In practice, Type-A devices only determine current
-limits when they are first inserted, so any Type-A device that is still plugged
-in when the 1.5A device is removed will not notice that it can pull more
-current. This means that the first Type-A device **inserted** after removing the
-original 1.5A device gets access to 1.5A.
-
-The allocation of the one CDP Type-A port is unaffected by user interaction with
-Type-C ports. Once a Type-A port has been claimed as CDP, inserting a Type-C
-device will not revoke the CDP status of the Type-A port.
-
-For example, the below sequence of events illustrates the above Type-A policy if
-BC 1.2 is supported:
-
-1. Insert Type-A phone first
- * Since no other Type-A port is currently supplying more than 900mA, this
- port can supply 1.5A as the CDP.
- * Phone pulls 1.5A; other Type-A ports are now marked as SDPs limiting
- current to 900mA, each.
- * Current state: `phone @ 1.5A`.
-2. Insert Type-A mouse second
- * Mouse is only allowed 900mA since port is SDP.
- * Current state: `phone @ 1.5A` and `mouse @ 900mA`.
-3. Remove phone
- * High-current port status is relinquished. Now first Type-A port to draw
- more than 900mA will claim the one high-current port status (as the
- CDP).
- * Mouse does not realize that more power is available since most Type-A
- devices only determine their current limits upon connection.
- * Current state: `mouse @ 900ma`.
-4. Insert Type-A battery pack
- * Since no other Type-A port is currently supplying more than 900mA, this
- port can supply 1.5A as the CDP.
- * Battery pack pulls 1.5A; other Type-A ports are now marked as SDPs
- limiting current to 900mA, each.
- * Current state: `mouse @ 900ma` and `battery pack @ 1.5A`.
-
-The total current needed for all Type-A ports at 5V is:
-
-```
-if (BC1.2_Supported)
- (# Type-A Ports)*(900mA) + 600mA
-else
- (# Type-A Ports)*(900mA)
-```
-
-## USB Type-C Ports
-
-USB Type-C allows for dynamic negotiation of high power contracts; this is
-accomplished through varying CC resistors and/or USB-C Power Delivery (PD). More
-in-depth information can be found in the [USB Type-C Specification] \(section
-4.5.2.3) and the [USB PD Specification]. CC resistor contracts can range from
-500mA/5V to 3A/5V, while PD contracts can range from 0mA/3.3V to 5A/20V.
-
-### ChromeOS as Source - Policy for Type-C
-
-**Note:** Behavior outlined here is only implemented in the TCPMv2 Device
-Policy Manager (DPM) when a board defines a non-zero maximum number of 3A
-ports supported through `CONFIG_USB_PD_3A_PORTS`.
-
-ChromeOS devices currently source power to external USB devices at 5V with a
-typical current of 1.5A for each Type-C port. In certain scenarios, a Type-C
-port can source up to 3A @ 5V.
-
-ChromeOS prefers that the first PD-capable Type-C device **that requires 3A**
-should get 3A guaranteed at 5V. Once the maximum supported number of PD-capable
-Type-C device has claimed 3A, then other PD-capable Type-C devices will only be
-offered a maximum of 1.5A.
-
-If Fast Role Swap (FRS) is supported and a sourcing port partner reports
-requiring 3A after a fast role swap, then this port should be allocated 3A if
-no more PD-capable sinks require 3A, and FRS detection may be enabled. Once a
-PD-capable device **that requires 3A** is inserted, the FRS port may have FRS
-detection disabled if the maximum number of 3A ports has been reached.
-
-If there are no PD-capable Type-C devices requiring 3A and no FRS ports
-requiring 3A, then the first non-PD device will be given 3A until a PD-capable
-device **that requires 3A** is inserted, or until an FRS source that requires
-3A is inserted.
-
-Devices will indicate they require 3A operating current in their sink
-capabilities, and this will be used as the trigger to let the EC know to
-offer that port a 3A source contract. FRS source partners will also
-indicate the need for 3A in their sink capabilities, under their Fast Role
-Swap required current.
-
-This policy is laid out in the following flow chart. Current policy for the
-"next" port allocation is to select the lowest port number any time more than
-one port meets criteria to receive 3A.
-
-Port balancing will occur when:
-* Sink Capabilities are received for a device
-* Source capabilities are not replied to after nCapsCount, indicating a non-PD
- sink
-* Power roles are swapped
-* Detach occurs
-
-![Source Port Balancing](images/usb_source_port_balancing.png "Source Port Balancing")
-
-Inserting a Type-A device does not affect the power assignment for Type-C ports;
-only Type-C devices affect the power of Type-C ports.
-
-For example, the below sequence of events illustrates the above Type-C policy
-with a board with a maximum number of 1 3A-ports supported:
-
-1. A non-PD capable Type-C keyboard is inserted first
- * Keyboard will be offered 1.5A initially
- * Current state: `keyboard @ 1.5A`.
-2. Partner is established to be non-PD through reaching PE\_SRC\_Disabled.
- * Since there are no other PD-capable devices and this is the first
- device, offer this device 3A via CC resistor change.
- * Current state: `keyboard @ 3A`.
-3. A non-PD capable Type-C mouse is inserted second
- * It will be offered 1.5A since there is already another non-PD device
- claiming 3A.
- * Current state: `keyboard @ 3A` and `mouse @ 1.5A`.
-4. A PD-capable Type-C hub is inserted third
- * Initially negotiate for 1.5A.
- * Since this is a PD device, query its operational current through
- requesting Sink Capabilities.
- * Hub does not want high power from Chromebook; hub continues to receive
- 1.5A.
- * Keyboard gets to maintain higher 3A current supply.
- * Current state: `keyboard @ 3A` and `mouse @ 1.5A` and `hub @ 1.5A`.
-5. A PD-capable Type-C phone is inserted fourth
- * Phone is initially offered 1.5A.
- * Since this is a PD device, query its operational current through
- requesting Sink Capabilities.
- * The phone reports it wants 3A.
- * Since PD devices are preferred for 3A, the non-PD keyboard will be
- downgraded from 3A to 1.5A via a CC resistor change.
- * After tSinkAdj (60 ms), phone is offered 3A through new Source
- Capabilities.
- * Current state: `keyboard @ 1.5A` and `mouse @ 1.5A` and `hub @ 1.5A`
- and `phone @ 3A`.
-6. A PD-capable Type-C tablet is inserted fifth
- * Tablet is initially offered 1.5A.
- * Since this is a PD device, query its operational current through
- requesting Sink Capabilities.
- * Tablet would like 3A, but the board has reached its maximum number of
- supported 3A ports. Note this port's desired current for later.
- * Current state: `keyboard @ 1.5A` and `mouse @ 1.5A` and `hub @ 1.5A`
- and `phone @ 3A` and `tablet @ 1.5A`.
-7. The PD-capable phone is removed
- * The next PD-capable sink device is offered 3A: the tablet
- * Current state: `keyboard @ 1.5A` and `mouse @ 1.5A` and `hub @ 1.5A`
- and `tablet @ 3A`.
-8. A FRS-capable dock is inserted
- * The dock is sourcing us
- * Since this is a PD capable device, query its FRS current through
- requesting Sink Capabilities.
- * Dock reports requiring 3A current after FRS.
- * Tablet is currently occupying the 3A port, so note this port's desired
- FRS current for later.
- * Current state: `keyboard @ 1.5A` and `mouse @ 1.5A` and `hub @ 1.5A`
- and `tablet @ 3A`; dock `FRS detection disabled`
-9. The PD-capable tablet is removed
- * The next PD-capable device requiring 3A is offered 3A. If there are
- no PD-capable devices requiring 3A, then the next FRS device is
- allocated 3A.
- * The hub only requires 1.5A, so FRS is enabled for the dock.
- * Current state: `keyboard @ 1.5A` and `mouse @ 1.5A` and `hub @ 1.5A`;
- dock `FRS detection enabled`
-10. The FRS dock is removed
- * The next PD-capable device requiring 3A is offered 3A. If there are
- no PD-capable devices requiring 3A, then the next FRS device is
- allocated 3A. If there are no FRS devices, then the next non-PD
- capable device is given 3A.
- * The hub only requires 1.5A, so mouse is given 3A via CC
- resistor change.
- * Current state: `keyboard @ 1.5A` and `mouse @ 3A` and `hub @ 1.5A`.
-11. The non-PD capable mouse is removed
- * The hub does not require 3A.
- * Current state: `keyboard @ 3A` and `hub @ 1.5A`.
-
-Note: Not all released Chromebooks implement the above policy due to
-pre-existing hardware design constraints.
-
-Type-C ports also need to provide an additional 300mA @ 5V (1.5W) for Vconn on
-every port. Note: the 1.5W for Vconn may also be supplied at other voltages,
-such as 455mA @ 3.3V instead.
-
-The total current needed for all Type-C ports at 5V is:
-
-```
-((Number of Type-C Ports) * (1500mA + 300mA)) + 1500mA
-```
-
-The total maximum current needed for a single Type-C port at 5V is `(3000mA +
-300mA) = 3.3A`. This max current for a single port is especially relevant for
-sizing the daughter board ribbon cable appropriately.
-
-[BC 1.2 Specification]: <https://www.usb.org/document-library/battery-charging-v12-spec-and-adopters-agreement>
-[USB 3.2 Specification]: <https://www.usb.org/document-library/usb-32-specification-released-september-22-2017-and-ecns>
-[USB PD Specification]: https://www.usb.org/document-library/usb-power-delivery
-[USB Type-C Specification]: https://www.usb.org/document-library/usb-type-cr-cable-and-connector-specification-revision-14-march-29-2019
diff --git a/docs/usb_updater.md b/docs/usb_updater.md
deleted file mode 100644
index f1505550d1..0000000000
--- a/docs/usb_updater.md
+++ /dev/null
@@ -1,201 +0,0 @@
-# EC update over USB
-
-chip/g (Cr50) and common code (hammer, servo_micro/v4) update over USB protocols
-share a lot in terms of protocol and ideas, but use different code bases.
-
-chip/g EC-side implementation is found in `chip/g/*upgrade*`, and the userspace
-tool which provides updates over USB among with supporting other features and
-interfaces is found in `extra/usb_updater/gsctool.c`.
-
-Common code uses implementations in `common/*update*.c` and
-`include/*update*.h`, and `extra/usb_updater/usb_updater2.c` for the userspace
-updater.
-
-## Cr50-specific notes
-
-The Cr50 firmware image consists of multiple sections, of interest to the USB
-updater are the RO and RW code sections, two of each. When firmware update
-session is established, the Cr50 device reports locations of backup RW and RO
-sections (those not currently used by the device).
-
-Based on this information the updater carves out the appropriate sections from
-the full Cr50 firmware binary image and sends them to the device for programming
-into flash. Once the new sections are programmed and the device is restarted,
-the new RO and RW are used if they pass verification and are logically newer
-than the existing sections.
-
-There are two ways to communicate with the Cr50 device: USB and `/dev/tpm0`
-(when `gsctool` is running on a chromebook with the Cr50 device). Originally
-different protocols were used to communicate over different channels, starting
-with version 3 the same protocol is used.
-
-## Common-code notes
-
-For non-Cr50 or chip/g devices (common code), the layout is a bit different, as
-devices usually have a single RO and a single RW, where RO is truly read-only in
-production, and verifies RW before jumping to it.
-
-For testing and development, `usb_updater2` is provided, while production code
-will use `hammerd` (in `src/platform/hammerd`) to update the device.
-
-## Update protocol
-
-The host (either a local AP or a workstation) is the master of the firmware
-update protocol, it sends data to the Cr50 device, which processes it and
-responds.
-
-The encapsulation format is different between the `/dev/tpm0` and USB cases:
-
-```
- 4 bytes 4 bytes 4 bytes variable size
-+-----------+--------------+---------------+----------~~--------------+
-+ total size| block digest | dest address | data |
-+-----------+--------------+---------------+----------~~--------------+
- \ \ /
- \ \ /
- \ +----- FW update PDU sent over /dev/tpm0 -----------+
- \ /
- +--------- USB frame, requires total size field ------------+
-```
-
-The update protocol data units (PDUs) are passed over `/dev/tpm0`, the
-encapsulation includes integrity verification and destination address of the
-data (more of this later). `/dev/tpm0` transactions pretty much do not have size
-limits, whereas the USB data is sent in chunks of the size determined when the
-USB connection is set up. This is why USB requires an additional encapsulation
-into frames to communicate the PDU size to the client side so that the PDU can
-be reassembled before passing to the programming function.
-
-In general, the protocol consists of two phases: connection establishment and
-actual image transfer.
-
-The very first PDU of the transfer session is used to establish the connection.
-The first PDU does not have any data, and the `dest address` field is set to
-zero. Receiving such a PDU signals the programming function that the host
-intends to transfer a new image.
-
-The response to the first PDU varies depending on the protocol version.
-
-Note that protocol versions before 5 are described here for completeness, but
-are not supported any more.
-
-Version 1 is used over `/dev/tpm0`. The response is either 4 or 1 bytes in size.
-The 4 byte response is the *base address* of the backup RW section, and there is
-no support for RO updates. The one byte response is an error indication,
-possibly reporting flash erase failure, command format error, etc.
-
-Version 2 is used over USB. The response is 8 bytes in size. The first four
-bytes are either the *base address* of the backup RW section (still no RO
-updates), or an error code, the same as in Version 1. The second 4 bytes are the
-protocol version number (set to 2).
-
-All versions above 2 behave the same over `/dev/tpm0` and USB.
-
-Version 3 response is 16 bytes in size. The first 4 bytes are the error code the
-second 4 bytes are the protocol version (set to 3) and then 4 byte *offset* of
-the RO section followed by the 4 byte *offset* of the RW section.
-
-Version 4 response in addition to version 3 provides header revision fields for
-active RO and RW images running on the target.
-
-Once the connection is established, the image to be programmed into flash is
-transferred to the Cr50 in 1K PDUs. In versions 1 and 2 the address in the
-header is the absolute address to place the block to, in version 3 and later it
-is the offset into the flash.
-
-Protocol version 5 includes RO and RW key ID information into the first PDU
-response. The key ID could be used to tell between prod and dev signing modes,
-among other things.
-
-Protocol version 6 does not change the format of the first PDU response, but it
-indicates the target's ability to channel TPM vendor commands through USB
-connection.
-
-Common-code updater also uses protocol version 6, but has a fairly different
-`first_response_pdu` header, indicated by setting `1` in the higher 16-bit for
-the protocol version field (`header_type`). The response includes fields such as
-maximum PDU size (which is not fixed to 1KB like for Cr50), flash protection
-status, version string, and a minimum rollback version.
-
-Details can be found in `include/update_fw.h`.
-
-### State machine (update over USB)
-
-This describes the EC-side state machine for update over USB.
-
-IDLE state:
-
-* If host sends update start PDU (a command without any payload, digest = 0
- and base = 0):
-
- * Reply with `first_update_pdu` block. Go to OUTSIDE_BLOCK state.
-
-* If host sends a vendor command (see below), execute that, reply, and stay in
- IDLE state. Note that vendor commands are only accepted in IDLE state.
-
-OUTSIDE_BLOCK (preparing to receive start of PDU):
-
-* If no data is received in 5 seconds, go back to IDLE state.
-* If host sends `UPDATE_DONE` command (by setting `dest address` to
- `0xb007ab1e`), go back to IDLE state.
-* If host sends a valid block start with a valid address, copy the rest of the
- payload and go to INSIDE_BLOCK state.
-
-INSIDE_BLOCK (in a middle of a PDU):
-
-* If no data is received in 5 seconds, go back to IDLE state.
-* Copy data to a buffer.
-
- * If buffer is full (i.e. matches the total expected PDU size), write the
- data and go to OUTSIDE_BLOCK.
- * Else, stay in INSIDE_BLOCK.
-
-### Vendor commands (channeled TPM command, Cr50)
-
-When channeling TPM vendor commands the USB frame looks as follows:
-
-```
- 4 bytes 4 bytes 4 bytes 2 bytes variable size
-+-----------+--------------+---------------+-----------+------~~~-------+
-+ total size| block digest | EXT_CMD | vend. sub.| data |
-+-----------+--------------+---------------+-----------+------~~~-------+
-```
-
-Where `Vend. sub` is the vendor subcommand, and data field is subcommand
-dependent. The target tells between update PDUs and encapsulated vendor
-subcommands by looking at the `EXT_CMD` value - it is set to `0xbaccd00a` and as
-such is guaranteed not to be a valid update PDU destination address.
-
-These commands cannot exceed the USB packet size (typically 64 bytes), as no
-reassembly is performed for such frames.
-
-The vendor command response size is not fixed, it is subcommand dependent.
-
-The Cr50 device responds to each update PDU with a confirmation which is 4 bytes
-in size in protocol version 2, and 1 byte in size in all other versions. Zero
-value means success, non-zero value is the error code reported by Cr50.
-
-Again, vendor command responses are subcommand specific.
-
-### Vendor commands (common code)
-
-Vendor commands for command code look very similar to the TPM vendor commands
-above, except that we use `UPDATE_EXTRA_CMD` (`b007ab1f`) instead of `EXT_CMD`,
-and `Vend. sub.` have a limit set of values (unless otherwise noted, commands
-take no parameter, and reply with a single 1-byte status code):
-
-* UPDATE_EXTRA_CMD_IMMEDIATE_RESET (0): Tell EC to reboot immediately.
-* UPDATE_EXTRA_CMD_JUMP_TO_RW (1): Tell EC (in RO) to jump to RW, if the
- signature verifies.
-* UPDATE_EXTRA_CMD_STAY_IN_RO (2): Tell EC (in RO), to stay in RO, and not
- jump to RW automatically. After this command is sent, a reset is necessary
- for the EC to accept to jump to RW again.
-* UPDATE_EXTRA_CMD_UNLOCK_RW (3): Tell EC to unlock RW on next reset.
-* UPDATE_EXTRA_CMD_UNLOCK_ROLLBACK (4): Tell EC to unlock ROLLBACK on next
- reset.
-* UPDATE_EXTRA_CMD_INJECT_ENTROPY (5): Inject entropy into the device-specific
- unique identifier (takes at least CONFIG_ROLLBACK_SECRET_SIZE=32 bytes of
- data).
-* UPDATE_EXTRA_CMD_PAIR_CHALLENGE (6): Tell EC to answer a X25519 challenge
- for pairing. Takes in a `struct pair_challenge` as data, answers with a
- `struct pair_challenge_response`.
diff --git a/docs/write_protection.md b/docs/write_protection.md
deleted file mode 100644
index 0ce6253a04..0000000000
--- a/docs/write_protection.md
+++ /dev/null
@@ -1,307 +0,0 @@
-# Firmware Write Protection
-
-[TOC]
-
-This is a somewhat tricky topic since write protection implementations can
-differ between chips, and the hardware write protection has changed over time,
-so please edit or open a bug if something is not clear.
-
-## Terminology
-
-## RO and RW
-
-MCUs running the EC code have read-only (RO) and read-write (RW) firmware.
-Coming out of reset, the MCU boots into its RO firmware.
-
-In the case of the EC, the RO firmware boots the host and asks it to verify a
-hash of the RW firmware (software sync). If the RW firmware is invalid, it is
-updated from a copy in the host's RW firmware.
-
-In the case of the FPMCU, the RO firmware uses the public key embedded in it to
-validate the signature of the RW firmware. If the RW firmware is invalid it does
-not jump to the RW firmware.
-
-Once the RW firmware is validated, the MCU jumps to it (without rebooting). The
-RO firmware is locked in the factory and is never changed. The RW firmware can
-be updated later by pushing a new system firmware containing an updated RW
-region.
-
-Note that both the RO and RW firmware regions are normally protected once write
-protect has been turned on.
-
-In the case of the EC, the RW region is unprotected at MCU boot until it has
-been verified by the host. The RW region is protected before the Linux kernel is
-loaded.
-
-In the case of the FPMCU, the RW region is protected before jumping the RO
-firmware jumps to it.
-
-## Hardware Write Protect {#hw_wp}
-
-On modern Chrome OS devices, the Cr50 (aka GSC / TPM) provides a "hardware write
-protect" GPIO that is connected to the AP SPI flash, EC SPI flash, EEPROM, and
-FPMCU via a [GPIO][write_protect_gpio]. This "hardware write protect" can only
-be disabled with [Servo] or [SuzyQ](["CCD open"]) and corresponds to
-[`OverrideWP`] in ccd. Disabling this write protect disables it for everything
-connected to this signal.
-
-In the case of the FPMCU, the hardware write protect GPIO is tied to the STM32
-`BOOT0` pin, which is what tells the MCU to enter the STM32 bootloader mode.
-
-You may see various references to a
-[write protect screw in documentation][wp_screw]. Older Chrome OS devices had a
-write protect screw that had to be physically removed. More details on this
-history can be found here: http://go/cros-wp-status.
-
-Another way of disabling hardware write protection is to remove the battery;
-this method is mainly used during bringup.
-
-Additional reference:
-https://chromium.googlesource.com/chromiumos/docs/+/HEAD/write_protection.md
-
-## Changing Hardware Write Protection
-
-Modifying the state of hardware write protection (via Cr50 GPIO) can be done if
-the ["CCD open"] process has been completed.
-
-<!-- mdformat off(b/139308852) -->
-*** note
-`servod` *must* be running for `dut-control` to work. See the [Servo] page for
-details.
-***
-<!-- mdformat on -->
-
-### Enable Hardware Write Protection
-
-```bash
-(chroot)$ dut-control fw_wp_state:force_on
-```
-
-### Disable Hardware Write Protection
-
-```bash
-(chroot)$ dut-control fw_wp_state:force_off
-```
-
-### Enable/Disable Hardware Write Protection via Cr50 Console
-
-You can use the following commands from the [Cr50 console]:
-
-```bash
-wp disable
-```
-
-```bash
-wp enable
-```
-
-```bash
-wp follow_batt_pres
-```
-
-## Software Write Protect
-
-Software-based write protect state stored in non-volatile memory. If hardware
-write protect is enabled, software write protect can be enabled but can’t be
-disabled. If hardware write protect is disabled, software write protect can be
-enabled or disabled (note that some implementations require an EC reset to
-disable software write protect).
-
-The underlying mechanism implementing software write protect may differ between
-EC chips. However, the common requirements are that software write protect can
-only be disabled when hardware write protect is off and that the RO firmware
-must be protected before jumping to RW firmware if protection is enabled.
-
-Additional reference:
-https://www.google.com/chromeos/partner/fe/docs/cpfe/firmwaretestmanual.html#software-write-protect
-
-## Changing Software Write Protection
-
-<!-- mdformat off(b/139308852) -->
-*** note
-*NOTE*: You cannot disable software write protect if hardware write protect is
-enabled.
-***
-<!-- mdformat on -->
-
-Software write protection can be toggled with `ectool --name=cros_fp
-flashprotect enable/disable`, which sends the `EC_CMD_FLASH_PROTECT` command
-toggling `EC_FLASH_PROTECT_RO_AT_BOOT` (changing `--name` to target different
-ECs).
-
-### Changing Software Write Protection with ectool
-
-#### ectool flashprotect
-
-Print out current flash protection state.
-
-```
-Flash protect flags: 0x0000000f wp_gpio_asserted ro_at_boot ro_now all_now
-Valid flags: 0x0000003f wp_gpio_asserted ro_at_boot ro_now all_now STUCK INCONSISTENT
-Writable flags: 0x00000000
-```
-
-`Flash protect flags` - Current flags that are set.
-
-`Valid flags` - All the options for flash protection.
-
-`Writable flags` - The flags that currently can be changed. (In this case, no
-flags can be changed).
-
-Flags:
-
-* `wp_gpio_asserted` - Whether the hardware write protect GPIO is currently
- asserted (read only).
-
-* `ro_at_boot` - Whether the EC will write protect the RO firmware on the next
- boot of the EC.
-
-* `ro_now` - Protect the read-only portion of flash immediately. Requires
- hardware WP be enabled.
-
-* `all_now` - Protect the entire flash (including RW) immediately. Requires
- hardware WP be enabled.
-
-* `STUCK` - Flash protection settings have been fused and can’t be cleared
- (should not happen during normal operation. Read only.)
-
-* `INCONSISTENT` - One or more banks of flash is not protected when it should
- be (should not happen during normal operation. Read only.).
-
-#### ectool flashprotect enable
-
-Set `ro_at_boot` flag. The next time the EC is reset it will protect the flash.
-Note that this requires a cold reset.
-
-#### ectool flashprotect enable now
-
-Set `ro_at_boot` `ro_now all_now` flags and immediately protect the flash. Note
-that this will fail if hardware write protect is disabled.
-
-#### ectool flashprotect disable
-
-Clear `ro_at_boot` flag. This can only be cleared if the EC booted without
-hardware write protect enabled.
-
-Note that you must reset the EC to clear write protect after removing the screw.
-If the `ro_at_boot` flag set, and the EC resets with the HW gpio disabled, the
-EC will leave the flash unprotected (`ro_now` and `all_now` flags are not set)
-but leave `ro_at_boot` flag set.
-
-### Changing Software Write Protection with flashrom
-
-#### View the current state of software write protection
-
-```bash
-(chroot) $ flashrom -p ec --wp-status
-```
-
-```
-WP: status: 0x00
-WP: status.srp0: 0
-WP: write protect is disabled.
-WP: write protect range: start=0x00000000, len=0x00000000
-```
-
-#### Enable software write protection
-
-This is immediate. The protection range indicates the RO region of the firmware.
-
-```bash
-(chroot) $ flashrom -p ec --wp-enable
-```
-
-```
-SUCCESS
-```
-
-```bash
-(chroot) $ flashrom -p ec --wp-status
-```
-
-```
-WP: status: 0x80
-WP: status.srp0: 1
-WP: write protect is enabled.
-WP: write protect range: start=0x00000000, len=0x0001f800
-```
-
-#### Disable software write protection
-
-Disable can only be done with hardware write protect disabled.
-
-```bash
-(chroot) $ flashrom -p ec --wp-disable
-```
-
-```
-FAILED: RO_AT_BOOT is not clear.
-FAILED
-```
-
-Reboot with [hardware write protection](#hw_wp) disabled. Note that protection
-is still enabled, but the protection range is zero.
-
-```bash
-(chroot) $ flashrom -p ec --wp-status
-```
-
-```
-WP: status: 0x80
-WP: status.srp0: 1
-WP: write protect is enabled.
-WP: write protect range: start=0x00000000, len=0x00000000
-```
-
-```bash
-(chroot) $ flashrom -p ec --wp-disable
-```
-
-```
-SUCCESS
-```
-
-## system_is_locked()
-
-The [`system_is_locked()`] function in the EC code returns false if the HW write
-protect GPIO is disabled, or the read-only firmware is not protected.
-
-One way this is used in the FPMCU source is to compile test or debug
-functionality into the firmware. Guarding the test functionality with
-`system_is_locked` allows us to execute the test code in automated testing by
-disabling the hardware write protection; this means we can run the automated
-tests against the exact same firmware we ship, rather than a different version
-that has test functionality compiled in or out.
-
-## RDP1 {#rdp1}
-
-Stands for Readout Protection Level 1.
-
-Protects user flash memory against a debugger (JTAG/SWD) or potential malicious
-code stored in RAM by disabling access (a bus error is generated when read
-access is requested). Otherwise (no debugger connected and no boot in RAM set),
-all read/program/erase operations from/to flash are allowed.
-
-When switching to a lower level of RDP (i.e., setting to 0), the user flash
-memory is mass erased (set to all `0xFF`).
-
-Note that this completely destroys *all* of the firmware, including the RO
-section.
-
-### Additional References
-
-https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/1222094
-
-## EC Flash Read/Write Command Write Protection Checks
-
-The EC code command handlers (`command_flash_erase`, `command_flash_write`,
-etc.) return an error if `EC_FLASH_PROTECT_ALL_NOW` is set.
-
-["CCD open"]: https://chromium.googlesource.com/chromiumos/platform/ec/+/cr50_stab/docs/case_closed_debugging_cr50.md#Open-CCD
-[Cr50 console]: https://chromium.googlesource.com/chromiumos/platform/ec/+/cr50_stab/docs/case_closed_debugging_cr50.md#Consoles
-[Servo]: https://chromium.googlesource.com/chromiumos/third_party/hdctools/+/HEAD/README.md
-[`OverrideWP`]: https://chromium.googlesource.com/chromiumos/platform/ec/+/cr50_stab/docs/case_closed_debugging_cr50.md
-[`system_is_locked()`]: https://chromium.googlesource.com/chromiumos/platform/ec/+/aaba1d5efd51082d143ce2ac64e6caf9cb14d5e5/common/system.c#195
-[wp_screw]: https://www.chromium.org/chromium-os/firmware-porting-guide/firmware-ec-write-protection
-[write_protect_gpio]: https://chromium.googlesource.com/chromiumos/platform/ec/+/aaba1d5efd51082d143ce2ac64e6caf9cb14d5e5/include/ec_commands.h#1599
-[SuzyQ]: https://chromium.googlesource.com/chromiumos/third_party/hdctools/+/HEAD/docs/ccd.md#SuzyQ-SuzyQable
diff --git a/docs/zephyr_build.md b/docs/zephyr_build.md
deleted file mode 100644
index 5a3c809724..0000000000
--- a/docs/zephyr_build.md
+++ /dev/null
@@ -1,164 +0,0 @@
-# Building Zephyr OS
-
-[TOC]
-
-Chromium OS EC uses the `zmake` tool to build Zephyr.
-
-This section describes how to build and use zmake.
-
-## Syncing the source
-
-N.B. The Zephyr build relies on multiple repos and tools which get installed as
-packages into the chroot. This means that partial syncs are not supported
-(i.e. just doing `repo sync .` in platform/ec). You must run
-`~/trunk/src/scripts/update_chroot` frequently, ideally each time you do a full
-repo sync. This will update zmake and the repos in src/third_party/zephyr
-
-
-## Working inside the chroot
-
-### Install zmake
-
-The `zephyr-build-tools` ebuild builds and installed zmake. This should happen
-automatically, with the caveat above.
-
-To do this manually and run tests:
-
-```bash
-FEATURE=test sudo -E emerge zephyr-build-tools
-```
-
-
-### Building
-
-You can build zephyr with:
-
-```bash
-emerge-volteer chromeos-zephyr
-```
-
-For local development you can run zmake directly; see instruction below.
-
-## Working outside the chroot
-
-Running outside the Chromium OS chroot is useful for upstream work and for
-those using the EC outside the Chromium OS.
-
-
-### Remove west, if installed [b/184654974](http://b/184654974)
-
-Zephyr's Cmake system will try to attach itself to the west tool if it finds it
-installed, conflicting with manual cmake invocations. If you installed west,
-you'll need to remove it:
-
-```bash
-python3 -m pip uninstall west
-```
-
-
-### Install zmake
-
-You can install zmake with pip:
-
-```bash
-cd ~/chromiumos/src/platform/ec
-python3 -m pip install -e zephyr/zmake --user
-```
-
-Ensure that ~/.local/bin in on your PATH
-
-You may also need to install these items:
-
-```bash
-sudo apt-get install cmake ninja-build python3-pyelftools gcc-multilib \
- python3-pykwalify python3-colorama python3-testfixtures
-```
-
-You must reinstall zmake after any `repo sync` since new features may have been
-added that are needed by the build.
-
-
-### Install binman
-
-First build pylibfdt:
-
-```bash
-cd somewhere
-sudo apt-get install flex bison swig
-git clone git://git.kernel.org/pub/scm/utils/dtc/dtc.git
-cd dtc
-make
-make install PREFIX=~/.local # You can install this where it suits
-```
-
-If you have a Chromium OS checkout then you should do:
-
-```bash
-cd ~/.local/bin
-ln -s ~/chromiumos/src/third_party/u-boot/files/tools/binman/binman
-```
-
-otherwise:
-
-```bash
-cd somewhere
-git clone https://source.denx.de/u-boot/u-boot.git
-cd ~/.local/bin
-ln -s somewhere/u-boot/tools/binman/binman
-```
-
-As above, ensure that `~/.local/bin` in on your PATH
-
-
-### Building
-
-You can use `zmake help` to obtain help on how to use zmake. The following is
-a rough guide.
-
-First configure the build with the project you want:
-
-```bash
-# Use -t zephyr when running outside chroot
-
-zmake configure -B /tmp/z/vol zephyr/projects/volteer/volteer/ -t zephyr
-```
-
-If you are building for posix-ec, change the default toolchain to host to make
-it use the native system one instead of llvm. Make sure to start with a clean
-build directory if zmake returns any build error:
-
-```bash
-zmake configure -B /tmp/posix zephyr/projects/posix-ec -t host
-```
-
-Then build with just the target directory:
-
-```
-zmake build /tmp/z/vol
-```
-
-The output is in that directory:
-
-* `output/zephyr.bin` - output binary (read-only and read-write packed
- together)
-* `output/zephyr.ro.elf` - read-only ELF for debugging
-* `output/zephyr.rw.elf` - read-write ELF for debugging
-
-You might also find these files useful (using read-only as an example):
-
-* `build-ro/zephyr/.config` - Kconfig options selected
-* `build-ro/zephyr/include/generated/devicetree_unfixed.h` - the (large)
- header file that zephyr uses to provide devicetree information to the C code
-* `build-ro/zephyr/zephyr.dts` - devicetree that is used
-* `build-ro/zephyr/zephyr.dts` - map of image
-
-
-### Looking at the Kconfig
-
-It should be possible to do this with:
-
-```bash
-ninja -C /tmp/z/vol/build-ro menuconfig
-```
-
-However at present this does not work [b/184662866](http://b/184662866).
diff --git a/docs/zephyr_init.md b/docs/zephyr_init.md
deleted file mode 100644
index 8822736efb..0000000000
--- a/docs/zephyr_init.md
+++ /dev/null
@@ -1,53 +0,0 @@
-# Zephyr OS-based EC Initialization Order
-
-Zephyr provides Z_INIT_ENTRY_DEFINE() & the extend macro to install the initial
-function. The initialize flow for different levels would be like the following
-(not very detailed):
-* architecture-specific initialization
-* `PRE_KERNEL_1` level
-* `PRE_KERNEL_2` level
-* `POST_KERNEL` level
-* `APPLICATION` level
-* main()
-
-The kernel and driver initial functions separate into specific initialize
-levels. It couldn't put all initial functions in main() for the Zephyr OS-based
-EC. It is also hard to maintain those initial priority which separates into
-different files.
-
-This file defines some Zephyr OS-based EC initial priorities which have critical
-sequence requirement for initializing:
-
-## PRE_KERNEL_1
-* Priority (0-9) - Reserved for system testability:
-
- The highest priority could be used in zephyr. Don't use it when system
- development. Buffer it for the following system development & testing.
-
-* Priority (10-19) - Chip level system pre-initialization:
-
- These priorities in this range are used for critical chip initialization,
- including determining the reset cause and initializing the battery-backed
- RAM driver. Most chip drivers should only be initialized after
- `PLATFORM_EC_SYSTEM_PRE_INIT`.
-
-* Priority (20) - PLATFORM_EC_SYSTEM_PRE_INIT:
-
- At this initialization priority, the CROS system checks the reset cause and
- initializing the system reset flags. Any chip level drivers related to
- determining the reset type must be at a higher priority.
-
-* TODO
-
-## PRE_KERNEL_2
-* TODO
-
-## POST_KERNEL
-* TODO
-
-## APPLICATION
-* TODO
-
-## main()
-* TODO
-* Start the tasks.
diff --git a/docs/zephyr_poc_device_bringup.md b/docs/zephyr_poc_device_bringup.md
deleted file mode 100644
index 394aa4a05b..0000000000
--- a/docs/zephyr_poc_device_bringup.md
+++ /dev/null
@@ -1,52 +0,0 @@
-# Zephyr Proof-of-Concept-Device Bringup
-
-It may be useful to build a Zephyr OS-based EC for a device which
-already has a CrOS EC device build, for the purposes of demonstrating
-the feasibility of Zephyr OS.
-
-This document is a work-in-progress list of tricks & tools that may be
-useful to you.
-
-## Initial Bringup
-
-Initially, you'll want to get a basic UART functioning with nothing
-but a shell and some basic console commands.
-
-An example CL to do this for Lazor can be found
-[here](https://crrev.com/c/2749765).
-
-## Bringing up GPIOs
-
-After you have UART functioning, GPIOs can be an easy target to start
-unblocking further features.
-
-We have a very ugly program to auto-generate the GPIO DTS based on
-gpio.inc for the existing board. You can find it at
-`util/gpios_to_zephyr_dts.c`, and instructions are in the file on how
-to compile and use it. You may have to hand-modify the output.
-
-The resultant CL for Lazor can be found [here](https://crrev.com/c/2749768).
-
-## Bring up Host Commands
-
-Set `CONFIG_PLATFORM_EC_HOSTCMD=y` and enable the appropriate
-host-command interface for your platform (e.g., eSPI).
-
-An example CL for Lazor can be found [here](https://crrev.com/c/2749428).
-
-As long as you get this compiling that should be enough to move to the
-next step. Further testing of the host command layer will require
-power sequencing up and going.
-
-## Enabling some simple GPIO-based buttons and switches
-
-Next, you can:
-
-* [Add the lid switch](https://crrev.com/c/2749768)
-* [Add the power button](https://crrev.com/c/2749426)
-* [Add AC presence detection](https://crrev.com/c/2749428)
-
-## Power Sequencing
-
-TODO(jrosenth): add steps on enabling power sequencing and expand this
-document.
diff --git a/docs/zephyr_shim.md b/docs/zephyr_shim.md
deleted file mode 100644
index fac0383aff..0000000000
--- a/docs/zephyr_shim.md
+++ /dev/null
@@ -1,381 +0,0 @@
-[TOC]
-
-# Zephyr Shimming How-To
-
-## Objective
-
-Allow a subset of the platform/ec code to be built as part of the Zephyr-based
-EC without needing to land code into upstream zephyr, or our zephyr-chrome
-repository.
-
-## Background
-
-Now that Google has joined [Zephyr OS](https://www.zephyrproject.org/), the EC
-team is moving toward it instead of platform/ec code on embedded controllers for
-future Chrome OS devices. See the
-[originally proposed idea](https://goto.google.com/cros-ec-rtos) and a more
-specific [Zephyr process doc](https://goto.google.com/zephyr-structure) of what
-future development on Zephyr will look like.
-
-Simply put, we want to move to Zephyr OS to use an open-source embedded OS that
-has a vibrant community. The embedded OS scene for the industry is very
-fragmented, with various parties using their own custom solution. We see the
-strong open-source community at Zephyr as potentially helping to consolidate
-efforts in the embedded controller space. It will also benefit our partners
-(both chip vendors and OEMs) since they should only have to support one embedded
-OS (i.e., Zephyr) for both their Chrome OS and Windows based devices.
-
-Migrating to use Zephyr fully is going to take a few years. We do not want to
-diverge from the active development happening on platform/ec code. We
-potentially want to ship a product using Zephyr before the migration is
-complete.
-
-## Design ideas
-
-In order to reuse `platform/ec` development , we shim "active" `platform/ec`
-code as a
-[Zephyr Module](https://docs.zephyrproject.org/latest/guides/modules.html). This
-requires us to add some Zephyr specific code in a `zephyr` directory in the
-`platform/ec` codebase. Once we release a Zephyr-based EC, then we can turn down
-platform/ec for future development and work on migrating the platform/ec-module
-code out of the module directory and into a first-class Zephyr code format -- in
-the local
-[Chrome Zephyr repo](https://chromium.googlesource.com/chromiumos/platform/zephyr-chrome/+/HEAD)
-and ultimately [upstream](https://github.com/zephyrproject-rtos/zephyr).
-
-For platform/ec code that is stable and not under active development, the Zephyr
-team may port that code to Zephyr, thus skipping the shimming process.
-
-### Subsystems of interest
-
-#### With Shim
-
-We shim the following subsystems (non-exhaustive).
-
-* USB-C: TCPC, PPC, MUX, TCPMv2
-* Charge Manager
-* SoC Power Sequencing
-* Sensors, if Intel’s HID-based solution is delayed in getting to Zephyr
- upstream
-
-#### Little-to-No Shim
-
-We adopt upstream Zephyr or skip the shimming process (non-exhaustive).
-
-* CBI and dependent EEPROM code
- * The format is stable. We pull in the list of CBI tags from platform/ec
- though
-* EFS2, Vboot, RO/RW split
- * Adjusting flash layout would be difficult to shim, and the concept is
- very stable.
- * We may shim some core EFS2 logic
-* Host command framework
-* Sensors, if Intel’s HID-based solution getts to Zephyr upstream and passes
- CTS
-* Keyboard and keycode scanning support
- * We may shim the newer Vivaldi feature.
-* Console support
- * We allow individual console commands via DECLARE\_CONSOLE\_COMMAND to be
- shimmed to Zephyr. These convert commands to work with Zephyr's shell
- subsystem.
-* I2C
-
-### New content in platform/ec
-
-Add the `src/platform/ec/zephyr` folder with:
-
-* [Module integration files](https://docs.zephyrproject.org/latest/guides/modules.html#build-system-integration),
- e.g., module.yml, CMakeLists.txt, and KConfig.
- * **module.yml** is the required entry point (must be located at
- _zephyr/module.yml_ in the repository) for Zephyr modules, and declares
- the location of Kconfig and CMakeLists.txt files used by the Zephyr
- build system.
- * **CMakeLists.txt** replicates build logic for the files being shimmed,
- outside of the platform/ec Makefile.
- * **Kconfig** will declare any CONFIG\_\* options which are important to
- expose from platform/ec code to the Zephyr build.
-* Shim code to translate platform/ec code into Zephyr code
- * For example, redefine platform/ec’s
- [`DECLARE_HOST_COMMAND`](https://source.chromium.org/chromiumos/chromiumos/codesearch/+/HEAD:src/platform/ec/include/host_command.h;l=256;drc=514923bc59f5a3435dbb7cbf348735ed41889ffe)
- to map to Zephyr's upstream
- [`EC_HOST_CMD_HANDLER`](https://github.com/zephyrproject-rtos/zephyr/blob/d7468bf836b75c29980441f294a61eae6bf4bc75/include/ec_host_cmd.h#L73)
- macro. This allows us to compile select platform/ec files in the Zephyr
- build.
-
-### Namespace Collisions
-
-One significant issue of mixing Zephyr headers with our existing EC code is that
-we currently have many names colliding with the Zephyr code. For example,
-Zephyr's atomic functions also are named `atomic_add`, `atomic_or`, ...,
-however, have a different API from our EC's atomic functions. This is critical,
-since atomic operations are often used in `static inline` functions placed in
-header files.
-
-In some cases, we are able to hack around these collisions by creating macros
-and functions which are compatible with both Zephyr and our EC's usages. For
-example, we can create a modified `IS_ENABLED` which accepts both defined to
-nothing usages (CrOS EC `config.h` style), and defined to `1` usages (Zephyr
-Kconfig style).
-
-However, long term, we may find this to be a continual cause of issues, and
-creating hacks for every colliding macro or function may be unsustainable. We
-propose _gradually_ introducing a namespace prefix to the `platform/ec`
-codebase, for example `crec_`. We can begin at the critical areas of namespace
-collision (e.g., atomics) and continue to improve the naming convention with
-time.
-
-### New CQ check
-
-As long as code from platform/ec is part of the zephyr
-[ebuild](http://cs/chromeos_public/src/third_party/chromiumos-overlay/chromeos-base/chromeos-zephyr-2_3/chromeos-zephyr-2_3-9999.ebuild),
-then we need to run the Zephyr CQ checks on any platform/ec CLs in addition to
-the normal platform/ec CQ checks. This ensures that platform/ec changes aren’t
-breaking the Zephyr builds and requiring the Zephyr team to debug recent
-changes.
-
-For local builds, we can run `emerge-betty chromeos-zephyr-2_3` or `zmake`
-utility to check that an EC CL has not broken anything on the Zephyr side.
-
-We will work with the CI team to enable this.
-
-## How to shim features
-
-Before you get started shimming a feature, it's important to
-understand the general philosophies behind Zephyr OS and shimming:
-
-* Our current EC's OS isn't going away any time soon. Even after we
- ship our first device with a Zephyr-based EC, we may still be working on
- other projects using the old OS. It's important to consider how
- your feature will apply to both the Zephyr world and CrOS EC OS
- world.
-
-* We won't be converting old devices to use Zephyr-based firmware.
- This means that our existing OS and its code will need maintained
- for bug and security fixes for years to come. **Do not allow the
- code you write for the CrOS EC OS to lack in quality or be "throw
- away code" as it will need to be maintained for a long time.**
-
-* Shimming, by the very nature of the design, will lead to some ugly
- hacks. We try and avoid this when we can, but some of them may be
- completely unavoidable. This means we need to actively work against
- nature to keep the code clean. If we do things right, there's even
- a possibility that we leave things cleaner than we found them.
-
-* Shimming occasionally digs up landmines. Be prepared to step on
- them. 💣
-
-### What code can be shimmed?
-
-Code in the `common/` directory (and other common code directories,
-like `power/`) is the ideal target for shimming, with the exception of
-core OS features which have Zephyr OS equivalents.
-
-Code in the following directories should **never be shimmed**:
-
-- `core/`: this directory contains architecture-specific code which
- should have a Zephyr OS equivalent feature.
-
-- `chip/`: this directory contains chip-specific code, and similarly
- should have a Zephyr OS equivalent feature.
-
-In both cases, you should instead determine (or, in rare cases,
-implement upstream) the equivalent Zephyr OS feature, and *implement
-an architecture and chip agnostic* "shim layer" in the `zephyr/shim/`
-directory which translates the APIs as necessary.
-
-As of the time of this document, the shim layer is nearing 100%
-complete, and it should be rare that you encounter an API which needs
-translation.
-
-Finally, code in the following directories should **avoid being
-shimmed, if possible**:
-
-- `board/`: this directory contains variant-specific code.
-
-- `baseboard/`: this directory contains baseboard-specific code.
-
-In both cases, the only value in shimming in code from one of those
-directories would be to enable a Zephyr OS build for a device which
-already has CrOS EC OS support, as *Zephyr-only projects will not have
-these directories*. You should be thinking about how this would be
-implemented for a Zephyr-only project, and filing bugs to create the
-appropriate device-tree and Kconfig equivalents before shimming this
-code.
-
-See [Zephyr PoC device bringup](zephyr_poc_device_bringup.md) for more
-information about bringing up proof-of-concept devices.
-
-### Configuration
-
-CrOS EC OS uses a special header `config.h`, which sets configuration
-defaults, and includes board and chip specific configurations by
-expecting the headers `board.h` and `config_chip.h` to be present.
-Most of these configuration options start with `CONFIG_`, however the
-rules were loosely defined over the years.
-
-Zephyr OS, on the other hand, uses two different configuration
-systems:
-
-* Kconfig, the configuration system from the Linux Kernel, which
- fits well within the domain of preprocessor definitions in C. The
- schema for our Kconfig files can be found under `zephyr/Kconfig`,
- and project-specific configurations are made in `prj.conf` files.
-
- Kconfig is generally used to select which EC software features are
- enabled, and should be avoided for hardware configurations, such as
- chip configuration registers and their default settings.
-
-* Open Firmware Device Tree, which you may also be familiar with from
- the Linux kernel. This configuration can be found in `*.dts` files.
-
- Device-tree is generally used for hardware configurations, and
- should be avoided for EC software feature configuration.
-
-For code which is shimmed, we need to play nicely with both the CrOS
-EC OS configuration system, and Zephyr's configuration systems. Thus,
-we follow the following pattern:
-
-* EC software features are configured using `Kconfig` and
- `zephyr/shim/include/config_chip.h` translates them into the
- appropriate CrOS EC OS configurations using patterns such as below:
-
- ```c
- #undef CONFIG_CMD_GETTIME
- #ifdef CONFIG_PLATFORM_EC_TIMER_CMD_GETTIME
- #define CONFIG_CMD_GETTIME
- #endif
- ```
-
- The preprocessor code should follow that template exactly, and not
- use any nesting (Kconfig handles dependencies, there is no reason to
- do it again in the preprocessor code).
-
-* **The domain of Kconfig options and CrOS EC configuration names
- should be completely distinct.** This is because the Kconfig options
- are included automatically, and including `config.h` may undefine
- them. To mitigate this, we follow a convention of using
- `CONFIG_PLATFORM_EC_` as the prefix for EC software features in
- Kconfig.
-
-One special configuration option exists, `CONFIG_ZEPHYR`, which you
-can use to detect whether the OS is Zephyr OS. This is the
-conventional way to add Zephyr-specific (or excluded) code in CrOS EC
-code.
-
-The typical EC macros for reducing `#ifdef` messes (e.g.,
-`IS_ENABLED`, `STATIC_IF`, etc.) work with both CrOS EC OS and Kconfig
-options, and should be used when possible.
-
-### Header Files
-
-Besides the include paths provided by Zephyr OS, the following paths
-are additionally added for shimmed code:
-
-* `include/`
-* `zephyr/include/`
-* `zephyr/shim/include/`
-
-The names of headers in these directories should be completely
-distinct. C compilers have no mechanism for "include ordering", and
-there is no way to "override a header".
-
-If you feel the need to "override" a header, say `foo.h` in
-`include/`, the best way to do this is to give it a different name
-under `zephyr/shim/include` (e.g., `zephyr_foo_shim.h`), and include
-that in the `foo.h` header with a `#ifdef CONFIG_ZEPHYR` guard.
-
-The typical styling convention for includes (following existing
-conventions in `platform/ec` and other C codebases we have) is:
-
-* Zephyr OS headers in pointy brackets, in alphabetical order.
-
-* One blank line
-
-* CrOS EC OS headers (either from `include/`, `zephyr/shim/include/`,
- or the current directory), in quotes (not pointy brackets).
-
-### Adding files to Cmake
-
-Zephyr's build system (including shimmed code) uses CMake instead of
-`Makefiles`, and your code will not be compiled for Zephyr unless you
-list the files in `zephyr/CMakeLists.txt`.
-
-### Step-by-step guide to adding a Kconfig
-
-Follow these steps:
-
-1. Make sure you have read the above Configuration section
-
-2. Add your config to one of zephyr/Kconfig* files. Note the PLATFORM_EC_ prefix
- and try to put it near related things:
-
- ```kconfig
- config PLATFORM_EC_CHARGER_BQ25720
- bool "TI BQ25720 charger"
- help
- The TI BQ25720 is a blah blah (describe summary from datasheet,
- at least 3 lines so take 10 minutes to write something truly useful)
- ```
-
- Consider a `depends on PLATFORM_EC_...` line if it depends on an existing
- feature.
-
-3. Add to zephyr/shim/include/config_chip.h (put it at the bottom):
-
- ```kconfig
- #undef CONFIG_CHARGER_BQ25720
- #ifdef CONFIG_PLATFORM_EC_CHARGER_BQ25720
- #define CONFIG_CHARGER_BQ25720
- #endif
- ```
-
-4. Add the source file to zephyr/CMakeLists.txt if it is not already there. For
- ordering check the comments in that file:
-
- `zephyr_sources_ifdef(CONFIG_PLATFORM_EC_CHARGER_BQ25720
- "${PLATFORM_EC}/driver/charger/bq25720.c")`
-
-5. Run a build on a board that enables the new CONFIG (in config.h) to make sure
- there are no problems.
-
-6. If it doesn't work, please email zephyr-task-force@ or file a bug and assign
- it to sjg@, cc zephyr-task-force@ (please include CL link and the error
- output).
-
-### Unit Tests
-
-Unit tests, implemented using the Ztest framework, can be found in
-`zephyr/test`.
-
-To run all unit tests, you use `zmake testall`.
-
-## Alternatives Considered
-
-### Translate code and mirror into the zephyr-chrome repository
-
-We could potentially write a script which, via a series of find/replace
-operations, translates a platform/ec module to use Zephyr functions, macros, and
-paradigms. On a frequent basis, we would translate all modules of interest in
-the platform/ec repository and land an "uprev" change in the zephyr-chrome
-repository.
-
-The main disadvantage of this technique is that we can't get any CQ coverage
-when platform/ec CLs land that the modules will continue to work in Zephyr.
-Additionally, the translator script would be delicate and probably require
-frequent maintenance.
-
-However, this technique does have some benefits. With modules directly
-translated to code in the Zephyr paradigm, the process of upstreaming a shimmed
-module to ZephyrOS would be significantly easier. Additionally, it would require
-no shim code in platform/ec.
-
-### Don't do any code sharing
-
-One option is to avoid shimming in any platform/ec code and allow the Zephyr
-team to re-implement features in upstream zephyr, or our local zephyr-chrome
-repository.
-
-Disregarding the infeasible amount of work required to complete this option, the
-platform/ec repository has a far faster development pace as there are many more
-contributors, and the Zephyr features would quickly lose parity during the time
-frame that we are launching both Zephyr-based and platform/ec-based devices.
diff --git a/docs/ztest.md b/docs/ztest.md
deleted file mode 100644
index 021b3391bd..0000000000
--- a/docs/ztest.md
+++ /dev/null
@@ -1,200 +0,0 @@
-# Porting EC unit tests to Ztest
-
-[TOC]
-
-This HOWTO shows the process for porting the EC's `base32` unit test to Zephyr's
-Ztest framework. All of the work is done in `src/platform/ec`.
-
-See
-[Test Framework - Zephyr Project Documentation](https://docs.zephyrproject.org/1.12.0/subsystems/test/ztest.html#quick-start-unit-testing)
-for details about Zephyr's Ztest framework.
-
-For examples of porting an EC unit test to the Ztest API, see: *
-[base32](https://crrev.com/c/2492527) and
-[improvements](https://crrev.com/c/2634401) *
-[accel_cal](https://crrev.com/c/2645198)
-
-## Porting Considerations
-
-Not every EC unit test can be ported to Ztest. This section describes cases that
-are not supported and cases where caveats apply.
-
-### EC Mocks Are Not Supported
-
-If a test has a `$TEST.mocklist` file associated with the unit test, it is using
-the EC mocking framework, which is unsupported in the Ztest framework. Ztest has
-its own mocking framework which the EC does not support.
-
-### Multiple Task Caveats
-
-The EC unit test framework starts a single task to call `run_test`, and this
-task will then call the functions for the various test cases. Some unit tests
-have multiple threads of execution, which is enabled by a `$TEST.tasklist` file
-associated with the unit test. The test runner task has a task ID of
-`TASK_ID_TEST_RUNNER`, which can be used as an argument to any of the task
-functions. See for example the
-[`charge_ramp` unit test](https://chromium.googlesource.com/chromiumos/platform/ec/+/HEAD/test/charge_ramp.c#81)
-and the
-[`host_command` unit test](https://chromium.googlesource.com/chromiumos/platform/ec/+/HEAD/test/host_command.c#32)
-
-When a unit test is ported to Ztest, `test_main` doesn't have a thread ID, so
-`TASK_ID_TEST_RUNNER` is undefined. `charge_ramp` and `host_command` cannot be
-ported at this time. `test_main` also cannot call any of the task functions that
-must be called from a task, such as `task_wake`; these functions can pend the
-calling task, but since `test_main` doesn't have a thread ID, the pend will
-fail. See the
-[`mutex` unit test](https://chromium.googlesource.com/chromiumos/platform/ec/+/HEAD/test/mutex.c#116)
-for an example.
-
-## Determine source files being tested
-
-Determine which C files the unit test requires by finding the test in
-`test/test_config.h`:
-
-```
-#ifdef TEST_BASE32
-#define CONFIG_BASE32
-#endif
-```
-
-Locate the `CONFIG` item(s) in `common/build.mk`:
-
-```
-common-$(CONFIG_BASE32)+=base32.o
-```
-
-So for the `base32` test, we only need to shim `common/base32.c`.
-
-Add the C files to `zephyr/shim/CMakeLists.txt`, in the "Shimmed modules"
-section:
-
-```
-# Shimmed modules
-zephyr_sources_ifdef(CONFIG_PLATFORM_EC "${PLATFORM_EC}/common/base32.c")
-```
-
-Refer to [zephyr: shim in base32.c](https://crrev.com/c/2468631).
-
-## Create test directory
-
-Create a new directory for the unit test in `zephyr/test/base32`.
-
-Create `zephyr/test/base32/prj.conf` with these contents:
-
-```
-CONFIG_ZTEST=y
-CONFIG_PLATFORM_EC=y
-```
-
-Create `zephyr/test/base32/CMakeLists.txt` with these contents:
-
-```
-target_sources(app PRIVATE ${PLATFORM_EC}/test/base32.c)
-```
-
-## Modify test source code
-
-### Test cases
-
-In the unit test, replace `run_test` with `TEST_MAIN()`. This will allow both
-platform/ec tests and Ztests to share the same entry point.
-
-Change `RUN_TEST` to `ztest_unit_test` and add the `ztest_test_suite` wrapper
-plus the call to `ztest_run_test_suite`.
-
-```c
-/*
- * Define the test cases to run. We need to do this twice, once in the format
- * that Ztest uses, and again in the format the the EC test framework uses.
- * If you add a test to one of them, make sure to add it to the other.
- */
-TEST_MAIN()
-{
- ztest_test_suite(test_base32_lib,
- ztest_unit_test(test_crc5),
- ztest_unit_test(test_encode),
- ztest_unit_test(test_decode));
- ztest_run_test_suite(test_base32_lib);
-}
-```
-
-Each function that is called by `ztest_unit_test` needs to be declared using
-`DECLARE_EC_TEST`. Keep the `return EC_SUCCESS;` at the end of the test
-function. Note that for the EC build, `TEST_MAIN` will call `test_reset` before
-running the test cases, and `test_print_result` after.
-
-### Assert macros
-
-Change the `TEST_ASSERT` macros to `zassert` macros. There are plans to automate
-this process, but for now, it's a manual process involving some intelligent
-find-and-replace.
-
-* `TEST_ASSERT(n)` to `zassert_true(n, NULL)`
-* `TEST_EQ(a, b, fmt)` to `zassert_equal(a, b, fmt ## ", " ## fmt, a, b)`
- * e.g. `TEST_EQ(a, b, "%d")` becomes `zassert_equal(a, b, "%d, %d", a, b)`
-* `TEST_NE(a, b, fmt)` to `zassert_not_equal(a, b, fmt ## ", " ## fmt, a, b)`
-* `TEST_LT(a, b, fmt)` to `zassert_true(a < b, fmt ## ", " ## fmt, a, b)`
-* `TEST_LE(a, b, fmt)` to `zassert_true(a <= b, fmt ## ", " ## fmt, a, b)`
-* `TEST_GT(a, b, fmt)` to `zassert_true(a > b, fmt ## ", " ## fmt, a, b)`
-* `TEST_GE(a, b, fmt)` tp `zassert_true(a >= b, fmt ## ", " ## fmt, a, b)`
-* `TEST_BITS_SET(a, bits)` to `zassert_true(a & (int)bits == (int)bits, "%u,
- %u", a & (int)bits, (int)bits)`
-* `TEST_BITS_CLEARED(a, bits)` to `zassert_true(a & (int)bits == 0, "%u, 0", a
- & (int)bits)`
-* `TEST_ASSERT_ARRAY_EQ(s, d, n)` to `zassert_mem_equal(s, d, b, NULL)`
-* `TEST_CHECK(n)` to `zassert_true(n, NULL)`
-* `TEST_NEAR(a, b, epsilon, fmt)` to `zassert_within(a, b, epsilon, fmt, a)`
- * Currently, every usage of `TEST_NEAR` involves floating point values
-* `TEST_ASSERT_ABS_LESS(n, t)` to `zassert_true(abs(n) < t, "%d, %d", n, t)`
- * Currently, every usage of `TEST_ASSERT_ANS_LESS` involves signed
- integers.
-
-There isn't a good replacement for `TEST_ASSERT_MEMSET(d, c, n)`, but it is only
-used in two tests, `printf.c` and `utils.c`. If you need this test, you'll need
-to code up a loop over the `n` bytes starting at `d`, and `zassert_equal` that
-each byte is equal to `c`.
-
-Also note that some tests use constructs like `TEST_ASSERT(var == const)`, which
-would have been better write as `TEST_EQ(var, const)`. These should be rewritten
-to use `zassert_equal`.
-
-Refer to
-[test: Allow EC unit test to use Ztest API](https://crrev.com/c/2492527) for the
-changes to the base32.c source code.
-
-### Tasklist
-
-For any test that has a corresponding `${TESTNAME}.tasklist`, add the file
-`shimmed_test_tasks.h` in the zephyr test directory, and in that file,
-`#include` the tasklist file. See [accel_cal](https://crrev.com/c/2645198) for
-an example.
-
-Add `CONFIG_HAS_TEST_TASKS=y` to the `prj.conf` file, as well as the appropriate
-`CONFIG_PLATFORM_EC` defines to include or exclude code that the unit under test
-uses.
-
-## Build and run
-
-Use `zmake` to build and run the test:
-
-```
-(cr) $ zmake -l DEBUG configure --test -B build/ztest/base32 zephyr/test/base32
-...
-UART_0 connected to pseudotty: /dev/pts/1
-*** Booting Zephyr OS build zephyr-v2.4.0-1-g63b2330a85cd ***
-Running test suite test_base32_lib
-===================================================================
-START - test_crc5
- PASS - test_crc5
-===================================================================
-START - test_encode
- PASS - test_encode
-===================================================================
-START - test_decode
- PASS - test_decode
-===================================================================
-Test suite test_base32_lib succeeded
-===================================================================
-PROJECT EXECUTION SUCCESSFUL
-(cr) $
-```