README: point to the new repository, drop all code
The repository has been renamed, point to
https://chromium.googlesource.com/chromiumos/platform/dagwood, drop all
the code, keep the README and metadata.
BUG=none
TEST=check on gitiles
Change-Id: Ic882b69b02fe395f3aad328458c4cb31be96f12d
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec-aic-tester/+/6206533
Reviewed-by: Keith Short <keithshort@chromium.org>
Tested-by: Fabio Baltieri <fabiobaltieri@google.com>
Commit-Queue: Fabio Baltieri <fabiobaltieri@google.com>
diff --git a/PRESUBMIT.cfg b/PRESUBMIT.cfg
deleted file mode 100644
index 9e173e4..0000000
--- a/PRESUBMIT.cfg
+++ /dev/null
@@ -1,5 +0,0 @@
-[Hook Overrides]
-tab_check: false
-
-[Hook Scripts]
-cros format = cros format --check --exclude "*.xml" --exclude "extra/usb_updater/*.json" --exclude "third_party/*" --commit ${PRESUBMIT_COMMIT}
diff --git a/README.md b/README.md
index a45898d..9225586 100644
--- a/README.md
+++ b/README.md
@@ -1,167 +1,3 @@
# EC AIC Tester
-## Firmware build, flash and debug
-
-The firmware can be built and flashed both with or without the chroot, though
-it's recommended reusing the checkout that is part of a ChromiumOS SDK as that
-includes the necessary configuration to upload changes to Gerrit.
-
-### Chroot build
-
-TODO
-
-### Out of chroot build
-
-This setup reuses the repository that is part of the normal chroot setup, just
-adds a west workspace on top of it, which can coexist with the normal one
-managed with repo.
-
-Venv setup (only needed once)
-
-```
-sudo apt install python3-venv
-python3 -m venv ~/chromiumos/src/platform/ec-aic-tester/.venv
-```
-
-Enter the venv (once before either setting up or building):
-```
-source ~/chromiumos/src/platform/ec-aic-tester/.venv/bin/activate
-```
-
-Initialize the project modules and install dependencies (only needed once):
-
-```
-cd ~/chromiumos/src/platform/ec-aic-tester
-pip install west
-unset ZEPHYR_BASE # only needed if there's other Zephyr checkouts in the system
-west init -l firmware
-west update -o=--depth=1 -n
-pip install -U -r zephyr/scripts/requirements.txt
-west sdk install -t arm-zephyr-eabi
-sudo apt install cmake ninja-build ccache dfu-util
-```
-
-Build and flash:
-
-```
-cd ~/chromiumos/src/platform/ec-aic-tester
-west update # only needed if there was a breaking change in the modules
-west build firmware
-west flash
-```
-
-### Build without a ChromiumOS SDK
-
-It's possible to build, flash and debug the firmware without the whole
-chromiumos checkout, in that case just pick an arbitrary directory as a
-workspace instead of `~/chromiumos/src/platform/ec-aic-tester` and initialize
-it with `west init --mf firmware/west.yml -m
-https://chromium.googlesource.com/chromiumos/platform/ec-aic-tester`, the rest
-of the process it the same.
-
-This setup takes less disk space, but results in a checkout with no tools to
-upload changelists.
-
-### Using the usptream repositories instead of chromium mirrored ones
-
-The project is setup to use the chromium mirror of Zephyr and modules, but can
-also be built against the upstream repositories directly. To do that use the
-`west-upstream.yml` manifest when initializing the west workspace, for example
-
-```
-west init -l firmware --mf west-upstream.yml
-```
-
-### Build with a standalone full Zephyr checkout
-
-The firmware can be built against an existing Zephyr project checkout, in that
-case follow the project [Getting Started
-Guide](https://docs.zephyrproject.org/latest/getting_started/index.html), make
-sure that the `ZEPHYR_BASE` variable is set and run `west build` from the
-project `firwmare` directory.
-
-### Available runners
-
-There's multiple options for flashing and debugging the board firmware,
-depending on what's hardware is available.
-
-#### USB-DFU
-
-Just for flashing, uses the embedded USB DFU bootloader, requires no additional
-hardware. Put the board in DFU mode (press NRST while holding the BOOT0 button)
-and then run:
-
-```
-west flash -r dfu-util
-```
-
-NOTE: flashing with dfu-util normally fails in an error and requires a manual
-reset of the board
-
-#### JLink
-
-JLink can be used for both flahing and debugging, requires the [J-Link Software](https://www.segger.com/downloads/jlink/#J-LinkSoftwareAndDocumentationPack) installed.
-
-Flash with:
-
-```
-west flash -r jlink
-```
-
-or start a debugging session with
-
-```
-west debug -r jlink
-```
-
-#### ST-LINK
-
-ST-LINK requires the [STM32CubeProgrammer host
-tools](https://docs.zephyrproject.org/latest/develop/flash_debug/host-tools.html#stm32cubeprogrammer-flash-host-tools).
-
-Flash with:
-
-```
-west flash -r stm32cubeprogrammer
-```
-
-or
-
-```
-west flash -r openocd
-```
-
-or start a debugging session with
-
-```
-west debug -r stm32cubeprogrammer
-```
-
-or
-
-```
-west debug -r openocd
-```
-
-## Flashing the AIC board
-
-### ITE
-
-```
-zmake build ite-aic
-itecomdbgr -f build/zephyr/ite-aic/output/ec.bin -d /dev/ttyACM1
-# reset the ec (ec reset)
-```
-
-### NPCX
-
-Assuming the tester shell is on /dev/ttyACM0 and the EC on /dev/ttyACM1, from
-the chroot in the EC directory:
-
-```
-zmake build npcx-aic
-# power on the ec (ec power on) enter bootloader mode (npcx_boot) on the tester shell
-uartupdatetool --port=ttyACM1 --baudrate=115200 --opr=wr --addr=0x200C3020 --file build/zephyr/npcx-aic/output/npcx_monitor.bin
-uartupdatetool --port=ttyACM1 --baudrate=115200 --opr=wr --auto --offset=0 --file build/zephyr/npcx-aic/output/ec.bin
-# reset the ec (ec reset)
-```
+Moved to https://chromium.googlesource.com/chromiumos/platform/dagwood
diff --git a/firmware/CMakeLists.txt b/firmware/CMakeLists.txt
deleted file mode 100644
index cd6e142..0000000
--- a/firmware/CMakeLists.txt
+++ /dev/null
@@ -1,26 +0,0 @@
-# Copyright 2024 The ChromiumOS Authors
-# Use of this source code is governed by a BSD-style license that can be
-# found in the LICENSE file.
-
-cmake_minimum_required(VERSION 3.20.0)
-
-set(BOARD_ROOT ${CMAKE_CURRENT_LIST_DIR})
-set(BOARD ec_aic_tester)
-
-find_package(Zephyr REQUIRED HINTS $ENV{ZEPHYR_BASE})
-project(ec-aic-tester)
-
-zephyr_include_directories(include)
-
-target_sources(app PRIVATE
- src/ec.c
- src/main.c
- src/usbd.c
-)
-
-target_sources_ifdef(CONFIG_DT_HAS_ZEPHYR_UART_BRIDGE_ENABLED app PRIVATE src/uart-bridge.c)
-target_sources_ifdef(CONFIG_DT_HAS_CROS_NPCX_BOOT_ENABLED app PRIVATE src/npcx_boot.c)
-target_sources_ifdef(CONFIG_I2C_EEPROM_TARGET app PRIVATE src/i2c_target.c)
-target_sources_ifdef(CONFIG_DT_HAS_CROS_I2C_MUX_ENABLED app PRIVATE src/i2c_mux.c)
-
-zephyr_linker_sources(ROM_SECTIONS src/usb_request.ld)
diff --git a/firmware/boards/google/ec_aic_tester/Kconfig.ec_aic_tester b/firmware/boards/google/ec_aic_tester/Kconfig.ec_aic_tester
deleted file mode 100644
index 81eb913..0000000
--- a/firmware/boards/google/ec_aic_tester/Kconfig.ec_aic_tester
+++ /dev/null
@@ -1,6 +0,0 @@
-# Copyright 2024 The ChromiumOS Authors
-# Use of this source code is governed by a BSD-style license that can be
-# found in the LICENSE file.
-
-config BOARD_EC_AIC_TESTER
- select SOC_STM32H743XX
diff --git a/firmware/boards/google/ec_aic_tester/board.cmake b/firmware/boards/google/ec_aic_tester/board.cmake
deleted file mode 100644
index 77e4628..0000000
--- a/firmware/boards/google/ec_aic_tester/board.cmake
+++ /dev/null
@@ -1,16 +0,0 @@
-# Copyright 2024 The ChromiumOS Authors
-# Use of this source code is governed by a BSD-style license that can be
-# found in the LICENSE file.
-
-board_runner_args(jlink "--device=STM32H743ZG" "--speed=4000")
-board_runner_args(pyocd "--target=stm32h743zgtx")
-board_runner_args(openocd --cmd-post-verify "reset halt")
-board_runner_args(openocd --target-handle=_CHIPNAME.cpu0)
-board_runner_args(stm32cubeprogrammer "--port=swd" "--reset-mode=hw")
-board_runner_args(dfu-util "--pid=0483:df11" "--alt=0" "--dfuse")
-
-include(${ZEPHYR_BASE}/boards/common/jlink.board.cmake)
-include(${ZEPHYR_BASE}/boards/common/pyocd.board.cmake)
-include(${ZEPHYR_BASE}/boards/common/openocd.board.cmake)
-include(${ZEPHYR_BASE}/boards/common/stm32cubeprogrammer.board.cmake)
-include(${ZEPHYR_BASE}/boards/common/dfu-util.board.cmake)
diff --git a/firmware/boards/google/ec_aic_tester/board.yml b/firmware/boards/google/ec_aic_tester/board.yml
deleted file mode 100644
index 665d5d9..0000000
--- a/firmware/boards/google/ec_aic_tester/board.yml
+++ /dev/null
@@ -1,10 +0,0 @@
-# Copyright 2024 The ChromiumOS Authors
-# Use of this source code is governed by a BSD-style license that can be
-# found in the LICENSE file.
-
-board:
- name: ec_aic_tester
- full_name: EC AIC Tester
- vendor: google
- socs:
- - name: stm32h743xx
diff --git a/firmware/boards/google/ec_aic_tester/ec_aic_tester.dts b/firmware/boards/google/ec_aic_tester/ec_aic_tester.dts
deleted file mode 100644
index a5e247b..0000000
--- a/firmware/boards/google/ec_aic_tester/ec_aic_tester.dts
+++ /dev/null
@@ -1,331 +0,0 @@
-/* Copyright 2024 The ChromiumOS Authors
- * Use of this source code is governed by a BSD-style license that can be
- * found in the LICENSE file.
- */
-
-/dts-v1/;
-#include <st/h7/stm32h743Xg.dtsi>
-#include <st/h7/stm32h743bgtx-pinctrl.dtsi>
-#include <zephyr/dt-bindings/input/input-event-codes.h>
-
-/ {
- model = "Google EC AIC Tester";
- compatible = "google,ec-aic-tester";
-
- chosen {
- /* change to &usart1 to move the shell to J3/J4 */
- zephyr,console = &cdc_acm_uart_shell;
- zephyr,shell-uart = &cdc_acm_uart_shell;
- zephyr,sram = &sram0;
- zephyr,flash = &flash0;
- zephyr,dtcm = &dtcm;
- };
-
- leds {
- compatible = "gpio-leds";
- status_led: mcu_pb02 {
- gpios = <&gpiob 2 GPIO_ACTIVE_HIGH>;
- };
- };
-
- gpio_keys: gpio-keys {
- compatible = "gpio-keys";
- user_button: mcu_pb01 {
- gpios = <&gpiob 1 GPIO_ACTIVE_LOW>;
- zephyr,code = <INPUT_KEY_0>;
- };
- };
-
- aliases {
- led0 = &status_led;
- sw0 = &user_button;
- watchdog0 = &iwdg;
- die-temp0 = &die_temp;
- };
-
- uart_bridge: uart-bridge {
- compatible = "zephyr,uart-bridge";
- usb {
- device = <&cdc_acm_uart_ec>;
- transfer-size = <64>;
- };
- uart {
- device = <&uart4>;
- transfer-size = <1>;
- };
- };
-
- pp3300_mecc_core: pp3300_mecc_core {
- compatible = "regulator-fixed";
- regulator-name = "pp3300_mecc_core";
- enable-gpios = <&gpiob 8 GPIO_ACTIVE_HIGH>;
- };
-
- pp3300_mecc_z: pp3300_mecc_z {
- compatible = "regulator-fixed";
- regulator-name = "pp3300_mecc_z";
- enable-gpios = <&gpiob 9 GPIO_ACTIVE_HIGH>;
- };
-
- pp3300_mecc_s: pp3300_mecc_s {
- compatible = "regulator-fixed";
- regulator-name = "pp3300_mecc_s";
- enable-gpios = <&gpiob 10 GPIO_ACTIVE_HIGH>;
- };
-
- ppvar_mecc_vref: ppvar_mecc_vref {
- compatible = "regulator-fixed";
- regulator-name = "ppvar_mecc_vref";
- enable-gpios = <&gpiob 11 GPIO_ACTIVE_HIGH>;
- };
-
- pp1800_mecc_z: pp1800_mecc_z {
- compatible = "regulator-fixed";
- regulator-name = "pp1800_mecc_z";
- enable-gpios = <&gpiob 12 GPIO_ACTIVE_HIGH>;
- };
-
- pp1800_mecc_s: pp1800_mecc_s {
- compatible = "regulator-fixed";
- regulator-name = "pp1800_mecc_s";
- enable-gpios = <&gpiob 13 GPIO_ACTIVE_HIGH>;
- };
-
- pp5000_mecc_z: pp5000_mecc_z {
- compatible = "regulator-fixed";
- regulator-name = "pp5000_mecc_z";
- enable-gpios = <&gpiob 14 GPIO_ACTIVE_HIGH>;
- };
-
- ppvar_mecc_rtc: ppvar_mecc_rtc {
- compatible = "regulator-fixed";
- regulator-name = "ppvar_mecc_rtc";
- enable-gpios = <&gpiob 15 GPIO_ACTIVE_HIGH>;
- };
-
- aic-pins {
- compatible = "cros,aic-pins";
- ec-rst-gpios = <&gpioe 3 GPIO_ACTIVE_LOW>;
- io-gpios = <&gpioc 2 GPIO_ACTIVE_HIGH>, /* CCD_MODE_L */
- <&gpioc 4 GPIO_ACTIVE_HIGH>, /* EN_PP5000_FAN */
- <&gpioe 13 GPIO_ACTIVE_HIGH>, /* I2C_MECC_PDC4_INT_L */
-
- /* TODO: figure out why some signals are not getting
- * through on the NPCX AIC board
- */
-
- /* KSI */
- /* <&gpiok 0 GPIO_ACTIVE_HIGH>, */ /* MCU_OUT_KBD_SCANIN_A_ODL */
- <&gpiok 1 GPIO_ACTIVE_HIGH>, /* MCU_OUT_KBD_SCANIN_B_ODL */
- <&gpiok 2 GPIO_ACTIVE_HIGH>, /* MCU_OUT_KBD_SCANIN_C_ODL */
- /* <&gpiok 3 GPIO_ACTIVE_HIGH>, */ /* MCU_OUT_KBD_SCANIN_D_ODL */
- <&gpiok 4 GPIO_ACTIVE_HIGH>, /* MCU_OUT_KBD_SCANIN_E_ODL */
- <&gpiok 5 GPIO_ACTIVE_HIGH>, /* MCU_OUT_KBD_SCANIN_F_ODL */
- <&gpiok 6 GPIO_ACTIVE_HIGH>, /* MCU_OUT_KBD_SCANIN_G_ODL */
- <&gpiok 7 GPIO_ACTIVE_HIGH>, /* MCU_OUT_KBD_SCANIN_H_ODL */
-
- /* KSO */
- /* <&gpioj 0 GPIO_ACTIVE_HIGH>, */ /* MCU_IN_KBD_SCANOUT_A */
- /* <&gpioj 1 GPIO_ACTIVE_HIGH>, */ /* MCU_IN_KBD_SCANOUT_B */
- <&gpioj 2 GPIO_ACTIVE_HIGH>, /* MCU_IN_KBD_SCANOUT_C */
- <&gpioj 3 GPIO_ACTIVE_HIGH>, /* MCU_IN_KBD_SCANOUT_D */
- <&gpioj 4 GPIO_ACTIVE_HIGH>, /* MCU_IN_KBD_SCANOUT_E */
- <&gpioj 5 GPIO_ACTIVE_HIGH>, /* MCU_IN_KBD_SCANOUT_F */
- /* <&gpioj 6 GPIO_ACTIVE_HIGH>, */ /* MCU_IN_KBD_SCANOUT_G */
- /* <&gpioj 7 GPIO_ACTIVE_HIGH>, */ /* MCU_IN_KBD_SCANOUT_H */
- /* <&gpioj 8 GPIO_ACTIVE_HIGH>, */ /* MCU_IN_KBD_SCANOUT_J */
- /* <&gpioj 9 GPIO_ACTIVE_HIGH>, */ /* MCU_IN_KBD_SCANOUT_K */
- <&gpioj 10 GPIO_ACTIVE_HIGH>, /* MCU_IN_KBD_SCANOUT_L */
- <&gpioj 11 GPIO_ACTIVE_HIGH>, /* MCU_IN_KBD_SCANOUT_M */
- <&gpioj 12 GPIO_ACTIVE_HIGH>, /* MCU_IN_KBD_SCANOUT_N */
- <&gpioj 13 GPIO_ACTIVE_HIGH>, /* MCU_IN_KBD_SCANOUT_P */
- <&gpioj 14 GPIO_ACTIVE_HIGH>, /* MCU_IN_KBD_SCANOUT_Q */
- <&gpioj 15 GPIO_ACTIVE_HIGH>; /* MCU_IN_KBD_SCANOUT_R */
- /* <&gpioh 3 GPIO_ACTIVE_HIGH>, */ /* MCU_IN_KBD_SCANOUT_S */
- /* <&gpioj 4 GPIO_ACTIVE_HIGH>; */ /* MCU_IN_KBD_SCANOUT_T */
- };
-
- npcx-boot {
- compatible = "cros,npcx-boot";
- npcx-boot-gpios = <&gpioa 1 GPIO_ACTIVE_LOW>;
- pinctrl-0 = <&pa1_gpio>;
- pinctrl-1 = <&uart4_rx_pa1>;
- pinctrl-names = "gpio", "default";
- };
-
- i2c-mux-a {
- compatible = "cros,i2c-mux";
- en-gpios = <&gpioi 14 GPIO_ACTIVE_HIGH>;
- a-gpios = <&gpioi 12 GPIO_ACTIVE_HIGH>,
- <&gpioi 13 GPIO_ACTIVE_HIGH>;
- port-count = <4>;
- };
-
- i2c-mux-b {
- compatible = "cros,i2c-mux";
- en-gpios = <&gpiof 13 GPIO_ACTIVE_HIGH>;
- a-gpios = <&gpiof 12 GPIO_ACTIVE_HIGH>;
- port-count = <2>;
- };
-};
-
-&pinctrl {
- pa1_gpio: pa1_gpio {
- pinmux = <STM32_PINMUX('A', 1, GPIO)>;
- };
-};
-
-&clk_lsi {
- status = "okay";
-};
-
-&clk_hsi48 {
- status = "okay";
-};
-
-&clk_hse {
- clock-frequency = <DT_FREQ_M(48)>;
- status = "okay";
-};
-
-&pll {
- div-m = <12>;
- mul-n = <240>;
- div-p = <2>;
- div-q = <2>;
- div-r = <2>;
- clocks = <&clk_hse>;
- status = "okay";
-};
-
-&pll2 {
- div-m = <24>;
- mul-n = <120>;
- div-p = <2>;
- div-q = <3>;
- div-r = <2>;
- clocks = <&clk_hse>;
- status = "okay";
-};
-
-&rcc {
- clocks = <&pll>;
- clock-frequency = <DT_FREQ_M(480)>;
- d1cpre = <1>;
- hpre = <2>;
- d1ppre = <2>;
- d2ppre1 = <2>;
- d2ppre2 = <2>;
- d3ppre = <2>;
-};
-
-/* Debug UART, J3/J4 */
-&usart1 {
- pinctrl-0 = <&usart1_rx_pb7 &usart1_tx_pb6>;
- pinctrl-names = "default";
- current-speed = <115200>;
- status = "okay";
-};
-
-/* EC UART */
-&uart4 {
- pinctrl-0 = <&uart4_rx_pa1 &uart4_tx_pa0>;
- pinctrl-names = "default";
- current-speed = <115200>;
- status = "okay";
-};
-
-zephyr_udc0: &usbotg_fs {
- pinctrl-0 = <&usb_otg_fs_dm_pa11 &usb_otg_fs_dp_pa12>;
- pinctrl-names = "default";
- status = "okay";
-
- cdc_acm_uart_shell: cdc_acm_uart_shell {
- compatible = "zephyr,cdc-acm-uart";
- };
- cdc_acm_uart_ec: cdc_acm_uart_ec {
- compatible = "zephyr,cdc-acm-uart";
- };
-};
-
-&rtc {
- clocks = <&rcc STM32_CLOCK_BUS_APB4 0x00010000>,
- <&rcc STM32_SRC_LSI RTC_SEL(2)>;
- status = "okay";
-};
-
-/* target interface, connected to the U9 mux */
-&i2c2 {
- pinctrl-0 = <&i2c2_scl_pf1 &i2c2_sda_pf0>;
- pinctrl-names = "default";
- status = "okay";
- clock-frequency = <I2C_BITRATE_STANDARD>;
-
- eeprom0: eeprom@50 {
- reg = <0x50>;
- size = <256>;
- compatible = "zephyr,i2c-target-eeprom";
- status = "okay";
- };
-};
-
-/* target interface, connected to the U11 mux */
-&i2c4 {
- pinctrl-0 = <&i2c4_scl_pf14 &i2c4_sda_pf15>;
- pinctrl-names = "default";
- status = "okay";
- clock-frequency = <I2C_BITRATE_STANDARD>;
-
- eeprom1: eeprom@51 {
- reg = <0x51>;
- size = <256>;
- compatible = "zephyr,i2c-target-eeprom";
- status = "okay";
- };
-};
-
-/* connected to J5, QWIIC port */
-&i2c3 {
- pinctrl-0 = <&i2c3_scl_ph7 &i2c3_sda_ph8>;
- pinctrl-names = "default";
- status = "okay";
- clock-frequency = <I2C_BITRATE_FAST>;
-};
-
-&adc1 {
- pinctrl-0 = <&adc1_inp15_pa3>;
- pinctrl-names = "default";
- st,adc-clock-source = "SYNC";
- st,adc-prescaler = <4>;
- status = "okay";
-};
-
-&die_temp {
- status = "okay";
-};
-
-&adc3 {
- pinctrl-0 = <&adc3_inp5_pf3>;
- pinctrl-names = "default";
- st,adc-clock-source = "SYNC";
- st,adc-prescaler = <4>;
- status = "okay";
-};
-
-&dac1 {
- status = "okay";
- pinctrl-0 = <&dac1_out1_pa4 &dac1_out2_pa5>;
- pinctrl-names = "default";
-};
-
-&rng {
- status = "okay";
-};
-
-&backup_sram {
- status = "okay";
-};
-
-&iwdg1 {
- status = "okay";
-};
diff --git a/firmware/boards/google/ec_aic_tester/ec_aic_tester_defconfig b/firmware/boards/google/ec_aic_tester/ec_aic_tester_defconfig
deleted file mode 100644
index 50e8c05..0000000
--- a/firmware/boards/google/ec_aic_tester/ec_aic_tester_defconfig
+++ /dev/null
@@ -1,10 +0,0 @@
-# Copyright 2024 The ChromiumOS Authors
-# Use of this source code is governed by a BSD-style license that can be
-# found in the LICENSE file.
-
-CONFIG_ARM_MPU=y
-CONFIG_HW_STACK_PROTECTION=y
-CONFIG_SERIAL=y
-CONFIG_CONSOLE=y
-CONFIG_UART_CONSOLE=y
-CONFIG_GPIO=y
diff --git a/firmware/boards/google/ec_aic_tester/support/openocd.cfg b/firmware/boards/google/ec_aic_tester/support/openocd.cfg
deleted file mode 100644
index 8f350be..0000000
--- a/firmware/boards/google/ec_aic_tester/support/openocd.cfg
+++ /dev/null
@@ -1,25 +0,0 @@
-# Copyright 2023 The ChromiumOS Authors
-# Use of this source code is governed by a BSD-style license that can be
-# found in the LICENSE file.
-
-source [find board/st_nucleo_h743zi.cfg]
-
-reset_config srst_only srst_nogate connect_assert_srst
-
-$_CHIPNAME.cpu0 configure -event gdb-attach {
- echo "Debugger attaching: halting execution"
- gdb_breakpoint_override hard
-}
-
-$_CHIPNAME.cpu0 configure -event gdb-detach {
- echo "Debugger detaching: resuming execution"
- resume
-}
-
-# Due to the use of connect_assert_srst, running gdb requires
-# to reset halt just after openocd init.
-rename init old_init
-proc init {} {
- old_init
- reset halt
-}
diff --git a/firmware/dts/bindings/cros,aic-pins.yaml b/firmware/dts/bindings/cros,aic-pins.yaml
deleted file mode 100644
index ab14aa4..0000000
--- a/firmware/dts/bindings/cros,aic-pins.yaml
+++ /dev/null
@@ -1,17 +0,0 @@
-# Copyright 2025 The ChromiumOS Authors
-# Use of this source code is governed by a BSD-style license that can be
-# found in the LICENSE file.
-
-description: |
- Various pin definitions for the AIC tester board.
-
-compatible: "cros,aic-pins"
-
-properties:
- ec-rst-gpios:
- type: phandle-array
- required: true
-
- io-gpios:
- type: phandle-array
- required: true
diff --git a/firmware/dts/bindings/cros,i2c-mux.yaml b/firmware/dts/bindings/cros,i2c-mux.yaml
deleted file mode 100644
index 06c077c..0000000
--- a/firmware/dts/bindings/cros,i2c-mux.yaml
+++ /dev/null
@@ -1,24 +0,0 @@
-# Copyright 2025 The ChromiumOS Authors
-# Use of this source code is governed by a BSD-style license that can be
-# found in the LICENSE file.
-
-description: |
- I2C multiplexer device
-
-compatible: "cros,i2c-mux"
-
-properties:
- en-gpios:
- type: phandle-array
- required: true
- description: GPIO connected to the enable pin
-
- a-gpios:
- type: phandle-array
- required: true
- description: GPIOs connected to the A* pins
-
- port-count:
- type: int
- required: true
- description: Number of ports used in the multiplexer
diff --git a/firmware/dts/bindings/cros,npcx-boot.yaml b/firmware/dts/bindings/cros,npcx-boot.yaml
deleted file mode 100644
index 5f5eef1..0000000
--- a/firmware/dts/bindings/cros,npcx-boot.yaml
+++ /dev/null
@@ -1,24 +0,0 @@
-# Copyright 2025 The ChromiumOS Authors
-# Use of this source code is governed by a BSD-style license that can be
-# found in the LICENSE file.
-
-description: |
- Support data to reset an NPCX chip in bootloader mode.
-
-compatible: "cros,npcx-boot"
-
-include: pinctrl-device.yaml
-
-properties:
- pinctrl-0:
- required: true
-
- pinctrl-1:
- required: true
-
- pinctrl-names:
- required: true
-
- npcx-boot-gpios:
- type: phandle-array
- required: true
diff --git a/firmware/dts/bindings/zephyr,uart-bridge.yaml b/firmware/dts/bindings/zephyr,uart-bridge.yaml
deleted file mode 100644
index 22a58e1..0000000
--- a/firmware/dts/bindings/zephyr,uart-bridge.yaml
+++ /dev/null
@@ -1,40 +0,0 @@
-# Copyright 2024 The ChromiumOS Authors
-# Use of this source code is governed by a BSD-style license that can be
-# found in the LICENSE file.
-
-description: |
- UART bridge
-
- Bridges data from two serial devices, for example a USB CDC-ACM serial port
- and an hardware UART.
-
- The device node must have exactly two child nodes for the two devices to be
- bridged together. Example configuration:
-
- uart-bridge {
- compatible = "zephyr,uart-bridge";
- usb {
- device = <&cdc_acm_uart_ec>;
- transfer-size = <64>;
- };
- uart {
- device = <&uart4>;
- transfer-size = <1>;
- };
- };
-
-compatible: "zephyr,uart-bridge"
-
-child-binding:
- description: Peer device node
- properties:
- device:
- type: phandle
- description: |
- Phandle of a serial device.
-
- transfer-size:
- type: int
- description: |
- The maximum number of bytes to try and transfer to the device in one
- go.
diff --git a/firmware/prj.conf b/firmware/prj.conf
deleted file mode 100644
index b420901..0000000
--- a/firmware/prj.conf
+++ /dev/null
@@ -1,42 +0,0 @@
-# Copyright 2024 The ChromiumOS Authors
-# Use of this source code is governed by a BSD-style license that can be
-# found in the LICENSE file.
-
-CONFIG_GPIO=y
-CONFIG_LOG=y
-CONFIG_LOG_PROCESS_THREAD_SLEEP_MS=100
-CONFIG_DEBUG_THREAD_INFO=y
-CONFIG_COMPILER_TRACK_MACRO_EXPANSION=n
-CONFIG_APPLICATION_DEFINED_SYSCALL=y
-
-# USB
-CONFIG_USB_DEVICE_STACK=n
-CONFIG_USB_DEVICE_STACK_NEXT=y
-CONFIG_USBD_CDC_ACM_CLASS=y
-CONFIG_UART_LINE_CTRL=y
-CONFIG_UDC_DRIVER_LOG_LEVEL_WRN=y
-CONFIG_USBD_CDC_ACM_LOG_LEVEL_OFF=y
-CONFIG_USBD_LOG_LEVEL_WRN=y
-
-# I2C
-CONFIG_I2C_TARGET=y
-CONFIG_I2C_EEPROM_TARGET=y
-
-# Subsystems
-CONFIG_SHELL=y
-CONFIG_I2C=y
-CONFIG_LED=y
-CONFIG_INPUT=y
-CONFIG_REGULATOR=y
-CONFIG_DAC=y
-
-# Shell commands
-CONFIG_GPIO_SHELL=y
-CONFIG_I2C_SHELL=y
-CONFIG_LED_SHELL=y
-CONFIG_REGULATOR_SHELL=y
-CONFIG_DAC_SHELL=y
-CONFIG_INPUT_SHELL=y
-CONFIG_INPUT_EVENT_DUMP=y
-
-CONFIG_SHELL_PROMPT_UART="ec-aic-tester:~$ "
diff --git a/firmware/src/ec.c b/firmware/src/ec.c
deleted file mode 100644
index 07285e4..0000000
--- a/firmware/src/ec.c
+++ /dev/null
@@ -1,236 +0,0 @@
-/* Copyright 2025 The ChromiumOS Authors
- * Use of this source code is governed by a BSD-style license that can be
- * found in the LICENSE file.
- */
-
-#define DT_DRV_COMPAT cros_aic_pins
-
-#include "ec.h"
-#include "usb_request.h"
-
-#include <zephyr/drivers/gpio.h>
-#include <zephyr/drivers/regulator.h>
-#include <zephyr/input/input.h>
-#include <zephyr/kernel.h>
-#include <zephyr/logging/log.h>
-#include <zephyr/shell/shell.h>
-#include <zephyr/sys/util.h>
-
-LOG_MODULE_REGISTER(ec, LOG_LEVEL_INF);
-
-BUILD_ASSERT(DT_NUM_INST_STATUS_OKAY(DT_DRV_COMPAT) == 1,
- "only one 'cros,aic-pins' compatible node may be present");
-
-static const struct gpio_dt_spec ec_rst_gpio =
- GPIO_DT_SPEC_INST_GET(0, ec_rst_gpios);
-
-static const struct gpio_dt_spec ec_io_gpio[] = { DT_INST_FOREACH_PROP_ELEM_SEP(
- 0, io_gpios, GPIO_DT_SPEC_GET_BY_IDX, (, )) };
-
-static const struct device *reg_pp3300_mecc_core =
- DEVICE_DT_GET(DT_NODELABEL(pp3300_mecc_core));
-static const struct device *reg_pp3300_mecc_z =
- DEVICE_DT_GET(DT_NODELABEL(pp3300_mecc_z));
-static const struct device *reg_pp3300_mecc_s =
- DEVICE_DT_GET(DT_NODELABEL(pp3300_mecc_s));
-static const struct device *reg_ppvar_mecc_vref =
- DEVICE_DT_GET(DT_NODELABEL(ppvar_mecc_vref));
-static const struct device *reg_pp1800_mecc_z =
- DEVICE_DT_GET(DT_NODELABEL(pp1800_mecc_z));
-static const struct device *reg_pp1800_mecc_s =
- DEVICE_DT_GET(DT_NODELABEL(pp1800_mecc_s));
-static const struct device *reg_pp5000_mecc_z =
- DEVICE_DT_GET(DT_NODELABEL(pp5000_mecc_z));
-static const struct device *reg_ppvar_mecc_rtc =
- DEVICE_DT_GET(DT_NODELABEL(ppvar_mecc_rtc));
-
-static bool ec_power_enabled;
-
-static void ec_power(bool enable)
-{
- if (enable) {
- regulator_enable(reg_pp3300_mecc_core);
- regulator_enable(reg_pp3300_mecc_z);
- regulator_enable(reg_pp3300_mecc_s);
- regulator_enable(reg_ppvar_mecc_vref);
- regulator_enable(reg_pp1800_mecc_z);
- regulator_enable(reg_pp1800_mecc_s);
- regulator_enable(reg_pp5000_mecc_z);
- regulator_enable(reg_ppvar_mecc_rtc);
- } else {
- regulator_disable(reg_ppvar_mecc_rtc);
- regulator_disable(reg_pp5000_mecc_z);
- regulator_disable(reg_pp1800_mecc_s);
- regulator_disable(reg_pp1800_mecc_z);
- regulator_disable(reg_ppvar_mecc_vref);
- regulator_disable(reg_pp3300_mecc_s);
- regulator_disable(reg_pp3300_mecc_z);
- regulator_disable(reg_pp3300_mecc_core);
- }
-
- ec_power_enabled = enable;
-}
-
-static void button_input_cb(struct input_event *evt, void *user_data)
-{
- if (evt->type != INPUT_EV_KEY) {
- return;
- }
-
- if (!evt->value) {
- return;
- }
-
- switch (evt->code) {
- case INPUT_KEY_0:
- ec_power(!ec_power_enabled);
- break;
- default:
- LOG_WRN("unknown code: %d", evt->code);
- }
-}
-
-INPUT_CALLBACK_DEFINE(DEVICE_DT_GET(DT_NODELABEL(gpio_keys)), button_input_cb,
- NULL);
-
-static int expect_pin(const struct shell *sh, uint8_t i)
-{
- /* TODO: make it work with more than 32 pins */
- uint32_t state = 0;
- uint32_t expect = BIT(i);
-
- for (uint8_t j = 0; j < ARRAY_SIZE(ec_io_gpio); j++) {
- const struct gpio_dt_spec *gpio = &ec_io_gpio[j];
- int val;
-
- val = gpio_pin_get_dt(gpio);
- if (val) {
- state |= BIT(j);
- }
- }
-
- if (state != expect) {
- shell_print(sh, "unexpected state (%d) %08x != %08x", i, state,
- expect);
- return -1;
- }
-
- shell_info(sh, "match state (%d) %08x", i, state);
- return 0;
-}
-
-#define IO_SWEEP_TIMEOUT_MS 5000
-
-static int cmd_io_sweep(const struct shell *sh, size_t argc, char **argv)
-{
- uint64_t start_time;
- int ret;
-
- for (uint8_t i = 0; i < ARRAY_SIZE(ec_io_gpio); i++) {
- const struct gpio_dt_spec *gpio = &ec_io_gpio[i];
-
- ret = gpio_pin_configure_dt(gpio, GPIO_INPUT);
- if (ret < 0) {
- LOG_ERR("gpio configuration failed: %d", ret);
- return ret;
- }
- }
-
- start_time = k_uptime_get();
- for (uint8_t i = 0; i < ARRAY_SIZE(ec_io_gpio); i++) {
- while (true) {
- if (k_uptime_get() - start_time > IO_SWEEP_TIMEOUT_MS) {
- goto timeout;
- }
-
- ret = expect_pin(sh, i);
- if (ret < 0) {
- k_sleep(K_MSEC(100));
- continue;
- }
- break;
- }
- }
-
- shell_info(sh, "sweep matched all pins successfully");
-
- return 0;
-
-timeout:
- shell_error(sh, "timeout");
-
- return -ETIME;
-}
-
-void ec_reset(void)
-{
- gpio_pin_set_dt(&ec_rst_gpio, 1);
-
- k_sleep(K_MSEC(100));
-
- gpio_pin_set_dt(&ec_rst_gpio, 0);
-}
-
-static int cmd_ec_reset(const struct shell *sh, size_t argc, char **argv)
-{
- ec_reset();
-
- return 0;
-}
-
-static int cmd_ec_power(const struct shell *sh, size_t argc, char **argv)
-{
- int err = 0;
- bool on;
-
- on = shell_strtobool(argv[1], 0, &err);
- if (err) {
- shell_error(sh, "Invalid argument: %s", argv[2]);
- return err;
- }
-
- ec_power(on);
-
- return 0;
-}
-
-/* clang-format off */
-SHELL_STATIC_SUBCMD_SET_CREATE(ec_cmds,
- SHELL_CMD_ARG(io_sweep, NULL, "io_sweep", cmd_io_sweep, 1, 0),
- SHELL_CMD_ARG(power, NULL, "power on|off", cmd_ec_power, 2, 0),
- SHELL_CMD_ARG(reset, NULL, "reset", cmd_ec_reset, 1, 0),
- SHELL_SUBCMD_SET_END);
-/* clang-format on */
-
-SHELL_CMD_REGISTER(ec, &ec_cmds, "EC control commands", NULL);
-
-static void ec_cb(uint16_t index, uint16_t value)
-{
- switch (index) {
- case USB_REQ_EC_RESET:
- LOG_INF("usb ec reset");
- ec_reset();
- break;
- case USB_REQ_POWER:
- LOG_INF("usb ec power %d", value);
- ec_power(value);
- break;
- }
-}
-
-USB_REQUEST_CALLBACK_DEFINE(ec_cb);
-
-static int ec_init(void)
-{
- int ret;
-
- ret = gpio_pin_configure_dt(&ec_rst_gpio, GPIO_OUTPUT_INACTIVE);
- if (ret < 0) {
- LOG_ERR("gpio configuration failed: %d", ret);
- return ret;
- }
-
- return 0;
-}
-
-SYS_INIT(ec_init, APPLICATION, 99);
diff --git a/firmware/src/ec.h b/firmware/src/ec.h
deleted file mode 100644
index dd1a3ec..0000000
--- a/firmware/src/ec.h
+++ /dev/null
@@ -1,7 +0,0 @@
-/* Copyright 2025 The ChromiumOS Authors
- * Use of this source code is governed by a BSD-style license that can be
- * found in the LICENSE file.
- */
-
-/* Send a reset pulse to the EC board */
-void ec_reset(void);
diff --git a/firmware/src/i2c_mux.c b/firmware/src/i2c_mux.c
deleted file mode 100644
index 5e2a3df..0000000
--- a/firmware/src/i2c_mux.c
+++ /dev/null
@@ -1,140 +0,0 @@
-/* Copyright 2025 The ChromiumOS Authors
- * Use of this source code is governed by a BSD-style license that can be
- * found in the LICENSE file.
- */
-
-#include <zephyr/device.h>
-#include <zephyr/drivers/gpio.h>
-#include <zephyr/kernel.h>
-#include <zephyr/logging/log.h>
-#include <zephyr/shell/shell.h>
-#include <zephyr/sys/util.h>
-
-#define DT_DRV_COMPAT cros_i2c_mux
-
-LOG_MODULE_REGISTER(i2c_mux, LOG_LEVEL_INF);
-
-struct i2c_mux_config {
- const struct gpio_dt_spec en_gpio;
- const struct gpio_dt_spec *a_gpio;
- uint8_t a_gpio_count;
- uint8_t port_count;
-};
-
-static int i2c_mux_select(const struct device *dev, uint8_t port)
-{
- const struct i2c_mux_config *cfg = dev->config;
- int ret;
-
- if (port >= cfg->port_count) {
- return -EINVAL;
- }
-
- for (uint8_t i = 0; i < cfg->a_gpio_count; i++) {
- const struct gpio_dt_spec *gpio = &cfg->a_gpio[i];
- uint8_t val = IS_BIT_SET(port, i) != 0 ? 1 : 0;
-
- ret = gpio_pin_set_dt(gpio, val);
- if (ret < 0) {
- LOG_ERR("gpio set failed: %d", ret);
- return ret;
- }
- }
-
- return 0;
-}
-
-static const struct i2c_mux_api {
- /* empty, just for use in shell_device_filter */
-} i2c_mux_api;
-
-static bool i2c_mux_device_filter(const struct device *dev)
-{
- return dev->api == &i2c_mux_api;
-}
-
-static void device_name_get(size_t idx, struct shell_static_entry *entry)
-{
- const struct device *dev =
- shell_device_filter(idx, i2c_mux_device_filter);
-
- entry->syntax = (dev != NULL) ? dev->name : NULL;
- entry->handler = NULL;
- entry->help = NULL;
- entry->subcmd = NULL;
-}
-
-SHELL_DYNAMIC_CMD_CREATE(dsub_device_name, device_name_get);
-
-static int cmd_i2c_mux(const struct shell *sh, size_t argc, char **argv)
-{
- const struct device *dev;
- int err = 0;
- int port;
-
- dev = device_get_binding(argv[1]);
- if (dev == NULL) {
- shell_error(sh, "Device %s not available", argv[1]);
- return -ENODEV;
- }
-
- port = shell_strtol(argv[2], 0, &err);
- if (err) {
- shell_error(sh, "Invalid argument: %s", argv[2]);
- return err;
- }
-
- err = i2c_mux_select(dev, port);
- if (err < 0) {
- shell_error(sh, "i2c_mux_select error: %d", err);
- return err;
- }
-
- return 0;
-}
-
-SHELL_CMD_ARG_REGISTER(i2c_mux, &dsub_device_name, "I2C multiplexer control",
- cmd_i2c_mux, 3, 0);
-
-static int i2c_mux_init(const struct device *dev)
-{
- const struct i2c_mux_config *cfg = dev->config;
- int ret;
-
- ret = gpio_pin_configure_dt(&cfg->en_gpio, GPIO_OUTPUT_ACTIVE);
- if (ret < 0) {
- LOG_ERR("gpio configuration failed: %d", ret);
- return ret;
- }
-
- for (uint8_t i = 0; i < cfg->a_gpio_count; i++) {
- const struct gpio_dt_spec *gpio = &cfg->a_gpio[i];
-
- ret = gpio_pin_configure_dt(gpio, GPIO_OUTPUT_INACTIVE);
- if (ret < 0) {
- LOG_ERR("gpio configuration failed: %d", ret);
- return ret;
- }
- }
-
- return 0;
-}
-
-#define I2C_MUX_INIT(n) \
- const struct gpio_dt_spec i2c_mux_a_gpio_##n[] = { \
- DT_INST_FOREACH_PROP_ELEM_SEP(n, a_gpios, \
- GPIO_DT_SPEC_GET_BY_IDX, (, )) \
- }; \
- \
- static const struct i2c_mux_config i2c_mux_cfg_##n = { \
- .en_gpio = GPIO_DT_SPEC_INST_GET(n, en_gpios), \
- .a_gpio = i2c_mux_a_gpio_##n, \
- .a_gpio_count = ARRAY_SIZE(i2c_mux_a_gpio_##n), \
- .port_count = DT_INST_PROP(n, port_count), \
- }; \
- \
- DEVICE_DT_INST_DEFINE(n, i2c_mux_init, NULL(n), NULL, \
- &i2c_mux_cfg_##n, POST_KERNEL, \
- CONFIG_I2C_INIT_PRIORITY, &i2c_mux_api);
-
-DT_INST_FOREACH_STATUS_OKAY(I2C_MUX_INIT)
diff --git a/firmware/src/i2c_target.c b/firmware/src/i2c_target.c
deleted file mode 100644
index ec7d51d..0000000
--- a/firmware/src/i2c_target.c
+++ /dev/null
@@ -1,48 +0,0 @@
-/* Copyright 2025 The ChromiumOS Authors
- * Use of this source code is governed by a BSD-style license that can be
- * found in the LICENSE file.
- */
-
-#include <zephyr/drivers/i2c.h>
-#include <zephyr/kernel.h>
-#include <zephyr/logging/log.h>
-
-LOG_MODULE_REGISTER(i2c_traget, LOG_LEVEL_INF);
-
-static int i2c_target_device_init(const struct device *dev)
-{
- int ret;
-
- if (!device_is_ready(dev)) {
- LOG_ERR("device %s not ready", dev->name);
- return -ENODEV;
- }
-
- ret = i2c_target_driver_register(dev);
- if (ret < 0) {
- LOG_ERR("i2c target device %s register failed: %d", dev->name,
- ret);
- return ret;
- }
-
- return 0;
-}
-
-static int i2c_target_init(void)
-{
- int ret;
-
- ret = i2c_target_device_init(DEVICE_DT_GET(DT_NODELABEL(eeprom0)));
- if (ret < 0) {
- return ret;
- }
-
- ret = i2c_target_device_init(DEVICE_DT_GET(DT_NODELABEL(eeprom1)));
- if (ret < 0) {
- return ret;
- }
-
- return 0;
-}
-
-SYS_INIT(i2c_target_init, APPLICATION, 99);
diff --git a/firmware/src/main.c b/firmware/src/main.c
deleted file mode 100644
index 8bc0a40..0000000
--- a/firmware/src/main.c
+++ /dev/null
@@ -1,25 +0,0 @@
-/* Copyright 2024 The ChromiumOS Authors
- * Use of this source code is governed by a BSD-style license that can be
- * found in the LICENSE file.
- */
-
-#include <zephyr/drivers/led.h>
-#include <zephyr/kernel.h>
-#include <zephyr/logging/log.h>
-#include <zephyr/shell/shell.h>
-
-LOG_MODULE_REGISTER(main, LOG_LEVEL_INF);
-
-const struct led_dt_spec status_led = LED_DT_SPEC_GET(DT_NODELABEL(status_led));
-
-int main(void)
-{
- LOG_INF("started");
-
- while (true) {
- led_on_dt(&status_led);
- k_sleep(K_MSEC(1000));
- led_off_dt(&status_led);
- k_sleep(K_MSEC(1000));
- }
-}
diff --git a/firmware/src/npcx_boot.c b/firmware/src/npcx_boot.c
deleted file mode 100644
index c65b952..0000000
--- a/firmware/src/npcx_boot.c
+++ /dev/null
@@ -1,81 +0,0 @@
-/* Copyright 2025 The ChromiumOS Authors
- * Use of this source code is governed by a BSD-style license that can be
- * found in the LICENSE file.
- */
-
-#define DT_DRV_COMPAT cros_npcx_boot
-
-#include "ec.h"
-#include "usb_request.h"
-
-#include <zephyr/drivers/gpio.h>
-#include <zephyr/drivers/pinctrl.h>
-#include <zephyr/kernel.h>
-#include <zephyr/logging/log.h>
-#include <zephyr/shell/shell.h>
-#include <zephyr/shell/shell_uart.h>
-
-LOG_MODULE_REGISTER(npcx_boot, LOG_LEVEL_INF);
-
-BUILD_ASSERT(DT_NUM_INST_STATUS_OKAY(DT_DRV_COMPAT) == 1,
- "only one 'cros,npcx-boot' compatible node may be present");
-
-#define PINCTRL_STATE_GPIO 2
-
-PINCTRL_DT_INST_DEFINE(0);
-const struct pinctrl_dev_config *npcx_boot_pcfg =
- PINCTRL_DT_INST_DEV_CONFIG_GET(0);
-const struct gpio_dt_spec npcx_boot_gpio =
- GPIO_DT_SPEC_INST_GET(0, npcx_boot_gpios);
-
-static int cmd_npcx_boot(const struct shell *sh, size_t argc, char **argv)
-{
- int ret;
-
- ret = pinctrl_apply_state(npcx_boot_pcfg, PINCTRL_STATE_GPIO);
- if (ret < 0) {
- shell_error(sh, "1 pinctrl configuration failed: %d", ret);
- return ret;
- }
-
- ret = gpio_pin_configure_dt(&npcx_boot_gpio, GPIO_OUTPUT_ACTIVE);
- if (ret < 0) {
- shell_error(sh, "gpio configuration failed: %d", ret);
- return ret;
- }
-
- ec_reset();
-
- k_sleep(K_MSEC(100));
-
- ret = gpio_pin_configure_dt(&npcx_boot_gpio, GPIO_INPUT);
- if (ret < 0) {
- shell_error(sh, "gpio configuration failed: %d", ret);
- return ret;
- }
-
- ret = pinctrl_apply_state(npcx_boot_pcfg, PINCTRL_STATE_DEFAULT);
- if (ret < 0) {
- shell_error(sh, "2 pinctrl configuration failed: %d", ret);
- return ret;
- }
-
- return 0;
-}
-
-SHELL_CMD_REGISTER(npcx_boot, NULL, "Enter NPCX bootloader", cmd_npcx_boot);
-
-static void npcx_boot_cb(uint16_t index, uint16_t value)
-{
- const struct shell *sh = shell_backend_uart_get_ptr();
-
- if (index != USB_REQ_NPCX_BOOT) {
- return;
- }
-
- LOG_INF("npcx boot");
-
- cmd_npcx_boot(sh, 0, NULL);
-}
-
-USB_REQUEST_CALLBACK_DEFINE(npcx_boot_cb);
diff --git a/firmware/src/uart-bridge.c b/firmware/src/uart-bridge.c
deleted file mode 100644
index 6c6c8af..0000000
--- a/firmware/src/uart-bridge.c
+++ /dev/null
@@ -1,227 +0,0 @@
-/* Copyright 2025 The ChromiumOS Authors
- * Use of this source code is governed by a BSD-style license that can be
- * found in the LICENSE file.
- */
-
-#include <zephyr/device.h>
-#include <zephyr/drivers/uart.h>
-#include <zephyr/kernel.h>
-#include <zephyr/logging/log.h>
-#include <zephyr/sys/ring_buffer.h>
-#include <zephyr/usb/usb_device.h>
-
-#define DT_DRV_COMPAT zephyr_uart_bridge
-
-LOG_MODULE_REGISTER(uart_bridge, LOG_LEVEL_INF);
-
-#define RING_BUF_SIZE 256
-#define RING_BUF_FULL_THRESHOLD (RING_BUF_SIZE / 3)
-
-struct uart_bridge_peer_config {
- const struct device *dev;
- size_t transfer_size;
-};
-
-struct uart_bridge_config {
- struct uart_bridge_peer_config peer[2];
-};
-
-struct uart_bridge_peer_data {
- uint8_t buf[RING_BUF_SIZE];
- struct ring_buf rb;
- bool paused;
-};
-
-struct uart_bridge_data {
- struct uart_bridge_peer_data peer[2];
-};
-
-static const struct device *
-uart_bridge_get_peer(const struct device *dev, const struct device *bridge_dev)
-{
- const struct uart_bridge_config *cfg = bridge_dev->config;
-
- if (dev == cfg->peer[0].dev) {
- return cfg->peer[1].dev;
- } else if (dev == cfg->peer[1].dev) {
- return cfg->peer[0].dev;
- } else {
- return NULL;
- }
-}
-
-void uart_bridge_settings_update(const struct device *dev,
- const struct device *bridge_dev)
-{
- struct uart_config cfg;
- const struct device *peer_dev = uart_bridge_get_peer(dev, bridge_dev);
- int ret;
-
- if (peer_dev == NULL) {
- LOG_DBG("%s: not a bridge dev", dev->name);
- return;
- }
-
- LOG_DBG("update settings: dev=%s bridge=%s peer=%s", dev->name,
- bridge_dev->name, peer_dev->name);
-
- ret = uart_config_get(dev, &cfg);
- if (ret) {
- LOG_WRN("%s: failed to get the uart config: %d", dev->name,
- ret);
- return;
- }
-
- ret = uart_configure(peer_dev, &cfg);
- if (ret) {
- LOG_WRN("%s: failed to set the uart config: %d", peer_dev->name,
- ret);
- return;
- }
-
- LOG_INF("uart settings: baudrate=%d parity=%d", cfg.baudrate,
- cfg.parity);
-}
-
-static uint8_t uart_bridge_get_idx(const struct device *dev,
- const struct device *bridge_dev, bool own)
-{
- const struct uart_bridge_config *cfg = bridge_dev->config;
-
- if (dev == cfg->peer[0].dev) {
- return own ? 0 : 1;
- } else {
- return own ? 1 : 0;
- }
-}
-
-static void uart_bridge_handle_rx(const struct device *dev,
- const struct device *bridge_dev)
-{
- const struct uart_bridge_config *cfg = bridge_dev->config;
- struct uart_bridge_data *data = bridge_dev->data;
-
- const struct uart_bridge_peer_config *own_cfg =
- &cfg->peer[uart_bridge_get_idx(dev, bridge_dev, true)];
- const struct uart_bridge_peer_config *peer_cfg =
- &cfg->peer[uart_bridge_get_idx(dev, bridge_dev, false)];
- struct uart_bridge_peer_data *own_data =
- &data->peer[uart_bridge_get_idx(dev, bridge_dev, true)];
-
- uint8_t buffer[own_cfg->transfer_size];
- int rb_len, recv_len;
-
- if (ring_buf_space_get(&own_data->rb) < RING_BUF_FULL_THRESHOLD) {
- LOG_DBG("%s: buffer full: pause", dev->name);
- uart_irq_rx_disable(dev);
- own_data->paused = true;
- return;
- }
-
- recv_len = uart_fifo_read(dev, buffer, sizeof(buffer));
- if (!recv_len)
- return;
-
- rb_len = ring_buf_put(&own_data->rb, buffer, recv_len);
- if (rb_len < recv_len) {
- LOG_WRN("%s: rx drop %u bytes", dev->name, recv_len - rb_len);
- }
-
- uart_irq_tx_enable(peer_cfg->dev);
-}
-
-static void uart_bridge_handle_tx(const struct device *dev,
- const struct device *bridge_dev)
-{
- const struct uart_bridge_config *cfg = bridge_dev->config;
- struct uart_bridge_data *data = bridge_dev->data;
-
- const struct uart_bridge_peer_config *own_cfg =
- &cfg->peer[uart_bridge_get_idx(dev, bridge_dev, true)];
- const struct uart_bridge_peer_config *peer_cfg =
- &cfg->peer[uart_bridge_get_idx(dev, bridge_dev, false)];
- struct uart_bridge_peer_data *peer_data =
- &data->peer[uart_bridge_get_idx(dev, bridge_dev, false)];
-
- uint8_t buffer[own_cfg->transfer_size];
- int rb_len, send_len;
-
- rb_len = ring_buf_get(&peer_data->rb, buffer, sizeof(buffer));
- if (!rb_len) {
- LOG_DBG("%s: buffer empty, disable tx irq", dev->name);
- uart_irq_tx_disable(dev);
- return;
- }
-
- send_len = uart_fifo_fill(dev, buffer, rb_len);
- if (send_len < rb_len) {
- LOG_WRN("%s: tx dropped %d bytes", dev->name,
- rb_len - send_len);
- }
-
- if (peer_data->paused &&
- ring_buf_space_get(&peer_data->rb) > RING_BUF_FULL_THRESHOLD) {
- LOG_DBG("%s: buffer free: resume", dev->name);
- uart_irq_rx_enable(peer_cfg->dev);
- peer_data->paused = false;
- return;
- }
-}
-
-static void interrupt_handler(const struct device *dev, void *user_data)
-{
- const struct device *bridge_dev = user_data;
-
- while (uart_irq_update(dev) && uart_irq_is_pending(dev)) {
- if (uart_irq_rx_ready(dev)) {
- uart_bridge_handle_rx(dev, bridge_dev);
- }
- if (uart_irq_tx_ready(dev)) {
- uart_bridge_handle_tx(dev, bridge_dev);
- }
- }
-}
-
-static int uart_bridge_init(const struct device *dev)
-{
- const struct uart_bridge_config *cfg = dev->config;
- struct uart_bridge_data *data = dev->data;
-
- ring_buf_init(&data->peer[0].rb, RING_BUF_SIZE, data->peer[0].buf);
- ring_buf_init(&data->peer[1].rb, RING_BUF_SIZE, data->peer[1].buf);
-
- /* Wait 100ms for the host to do all settings */
- k_msleep(100);
-
- uart_irq_callback_user_data_set(cfg->peer[0].dev, interrupt_handler,
- (void *)dev);
- uart_irq_callback_user_data_set(cfg->peer[1].dev, interrupt_handler,
- (void *)dev);
- uart_irq_rx_enable(cfg->peer[0].dev);
- uart_irq_rx_enable(cfg->peer[1].dev);
-
- return 0;
-}
-
-#define UART_BRIDGE_PEER_DEFINE(node_id) \
- { \
- .dev = DEVICE_DT_GET(DT_PHANDLE(node_id, device)), \
- .transfer_size = DT_PROP(node_id, transfer_size), \
- }
-
-#define UART_BRIDGE_INIT(n) \
- BUILD_ASSERT(DT_INST_CHILD_NUM(n) == 2, \
- "uart-bridge must have exactly 2 child nodes"); \
- \
- static const struct uart_bridge_config uart_bridge_cfg_##n = { \
- .peer = { DT_INST_FOREACH_CHILD_STATUS_OKAY_SEP( \
- n, UART_BRIDGE_PEER_DEFINE, (, )) }, \
- }; \
- \
- static struct uart_bridge_data uart_bridge_data_##n; \
- \
- DEVICE_DT_INST_DEFINE(n, uart_bridge_init, NULL(n), \
- &uart_bridge_data_##n, &uart_bridge_cfg_##n, \
- POST_KERNEL, CONFIG_SERIAL_INIT_PRIORITY, NULL);
-
-DT_INST_FOREACH_STATUS_OKAY(UART_BRIDGE_INIT)
diff --git a/firmware/src/uart-bridge.h b/firmware/src/uart-bridge.h
deleted file mode 100644
index a766090..0000000
--- a/firmware/src/uart-bridge.h
+++ /dev/null
@@ -1,18 +0,0 @@
-/* Copyright 2025 The ChromiumOS Authors
- * Use of this source code is governed by a BSD-style license that can be
- * found in the LICENSE file.
- */
-
-#include <zephyr/device.h>
-
-/**
- * @brief Update the hardware port settings on an uart bridge
- *
- * If dev is part bridge_dev, then the dev uart configuration are applied to
- * the other device in the uart bridge. This allows propagating the settings
- * from a USB CDC-ACM port to a hardware UART.
- *
- * If dev is not part of bridge_dev then the function is a no-op.
- */
-void uart_bridge_settings_update(const struct device *dev,
- const struct device *bridge_dev);
diff --git a/firmware/src/usb_request.h b/firmware/src/usb_request.h
deleted file mode 100644
index f281fea..0000000
--- a/firmware/src/usb_request.h
+++ /dev/null
@@ -1,20 +0,0 @@
-/* Copyright 2025 The ChromiumOS Authors
- * Use of this source code is governed by a BSD-style license that can be
- * found in the LICENSE file.
- */
-
-#include <stdint.h>
-
-#define USB_REQ_EC_RESET 0
-#define USB_REQ_POWER 1
-#define USB_REQ_NPCX_BOOT 2
-
-struct usb_request_callback {
- void (*callback)(uint16_t index, uint16_t value);
-};
-
-#define USB_REQUEST_CALLBACK_DEFINE(_callback) \
- static const STRUCT_SECTION_ITERABLE( \
- usb_request_callback, _usb_request_callback__##_callback) = { \
- .callback = _callback, \
- }
diff --git a/firmware/src/usb_request.ld b/firmware/src/usb_request.ld
deleted file mode 100644
index d99a755..0000000
--- a/firmware/src/usb_request.ld
+++ /dev/null
@@ -1,8 +0,0 @@
-/* Copyright 2025 The ChromiumOS Authors
- * Use of this source code is governed by a BSD-style license that can be
- * found in the LICENSE file.
- */
-
-#include <zephyr/linker/iterable_sections.h>
-
-ITERABLE_SECTION_ROM(usb_request_callback, Z_LINK_ITERABLE_SUBALIGN)
diff --git a/firmware/src/usbd.c b/firmware/src/usbd.c
deleted file mode 100644
index 4a486de..0000000
--- a/firmware/src/usbd.c
+++ /dev/null
@@ -1,209 +0,0 @@
-/* Copyright 2024 The ChromiumOS Authors
- * Use of this source code is governed by a BSD-style license that can be
- * found in the LICENSE file.
- */
-
-#include "uart-bridge.h"
-#include "usb_request.h"
-
-#include <zephyr/device.h>
-#include <zephyr/input/input.h>
-#include <zephyr/kernel.h>
-#include <zephyr/usb/usbd.h>
-
-LOG_MODULE_REGISTER(usbd_app, LOG_LEVEL_INF);
-
-#define USB_VID 0x18d1
-#define USB_PID 0x5214
-#define USB_MANUFACTURER_NAME "Google"
-#define USB_DEVICE_NAME "EC AIC Tester"
-#define USB_MAX_POWER 250
-
-USBD_DEVICE_DEFINE(app_usbd, DEVICE_DT_GET(DT_NODELABEL(zephyr_udc0)), USB_VID,
- USB_PID);
-
-USBD_DESC_LANG_DEFINE(app_usb_lang);
-USBD_DESC_MANUFACTURER_DEFINE(app_usb_mfr, USB_MANUFACTURER_NAME);
-USBD_DESC_PRODUCT_DEFINE(app_usb_product, USB_DEVICE_NAME);
-USBD_DESC_SERIAL_NUMBER_DEFINE(app_usb_sn);
-
-static const uint8_t attributes = 0;
-
-USBD_DESC_CONFIG_DEFINE(fs_cfg_desc, "FS Configuration");
-USBD_DESC_CONFIG_DEFINE(hs_cfg_desc, "HS Configuration");
-USBD_CONFIGURATION_DEFINE(app_usb_fs_config, attributes, USB_MAX_POWER,
- &fs_cfg_desc);
-USBD_CONFIGURATION_DEFINE(app_usb_hs_config, attributes, USB_MAX_POWER,
- &hs_cfg_desc);
-
-static int to_host_cb(const struct usbd_context *const ctx,
- const struct usb_setup_packet *const setup,
- struct net_buf *const buf)
-{
- LOG_INF("%d: %d %d %d %d", setup->RequestType.type, setup->bRequest,
- setup->wLength, setup->wIndex, setup->wValue);
-
- return 0;
-}
-
-static int to_dev_cb(const struct usbd_context *const ctx,
- const struct usb_setup_packet *const setup,
- const struct net_buf *const buf)
-{
- STRUCT_SECTION_FOREACH(usb_request_callback, callback)
- {
- callback->callback(setup->wIndex, setup->wValue);
- }
-
- return 0;
-}
-
-USBD_VREQUEST_DEFINE(vnd_vreq, 0, to_host_cb, to_dev_cb);
-
-static void usbd_msg_cb(struct usbd_context *const usbd_ctx,
- const struct usbd_msg *const msg)
-{
- int ret;
-
- LOG_DBG("USBD message: %s", usbd_msg_type_string(msg->type));
-
- if (msg->type == USBD_MSG_CDC_ACM_LINE_CODING ||
- msg->type == USBD_MSG_CDC_ACM_CONTROL_LINE_STATE) {
- uart_bridge_settings_update(
- msg->dev, DEVICE_DT_GET(DT_NODELABEL(uart_bridge)));
- }
-
- if (!usbd_can_detect_vbus(usbd_ctx)) {
- return;
- }
-
- switch (msg->type) {
- case USBD_MSG_VBUS_READY:
- ret = usbd_enable(usbd_ctx);
- if (ret) {
- LOG_ERR("Failed to enable device support");
- }
-
- break;
- case USBD_MSG_VBUS_REMOVED:
- ret = usbd_disable(usbd_ctx);
- if (ret) {
- LOG_ERR("Failed to disable device support");
- }
-
- break;
- case USBD_MSG_RESUME:
- break;
- case USBD_MSG_SUSPEND:
- break;
- default:
- break;
- }
-}
-
-static struct usbd_context *usbd_init_device(void)
-{
- int err;
-
- err = usbd_add_descriptor(&app_usbd, &app_usb_lang);
- if (err) {
- LOG_ERR("Failed to initialize language descriptor (%d)", err);
- return NULL;
- }
-
- err = usbd_add_descriptor(&app_usbd, &app_usb_mfr);
- if (err) {
- LOG_ERR("Failed to initialize manufacturer descriptor (%d)",
- err);
- return NULL;
- }
-
- err = usbd_add_descriptor(&app_usbd, &app_usb_product);
- if (err) {
- LOG_ERR("Failed to initialize product descriptor (%d)", err);
- return NULL;
- }
-
- err = usbd_add_descriptor(&app_usbd, &app_usb_sn);
- if (err) {
- LOG_ERR("Failed to initialize SN descriptor (%d)", err);
- return NULL;
- }
-
- if (usbd_caps_speed(&app_usbd) == USBD_SPEED_HS) {
- err = usbd_add_configuration(&app_usbd, USBD_SPEED_HS,
- &app_usb_hs_config);
- if (err) {
- LOG_ERR("Failed to add High-Speed configuration");
- return NULL;
- }
-
- err = usbd_register_all_classes(&app_usbd, USBD_SPEED_HS, 1);
- if (err) {
- LOG_ERR("Failed to add register classes");
- return NULL;
- }
-
- usbd_device_set_code_triple(&app_usbd, USBD_SPEED_HS, 0, 0, 0);
- }
-
- err = usbd_add_configuration(&app_usbd, USBD_SPEED_FS,
- &app_usb_fs_config);
- if (err) {
- LOG_ERR("Failed to add Full-Speed configuration");
- return NULL;
- }
-
- err = usbd_register_all_classes(&app_usbd, USBD_SPEED_FS, 1);
- if (err) {
- LOG_ERR("Failed to add register classes");
- return NULL;
- }
-
- usbd_device_set_code_triple(&app_usbd, USBD_SPEED_FS, 0, 0, 0);
-
- err = usbd_msg_register_cb(&app_usbd, usbd_msg_cb);
- if (err) {
- LOG_ERR("Failed to register message callback");
- return NULL;
- }
-
- err = usbd_device_register_vreq(&app_usbd, &vnd_vreq);
- if (err) {
- LOG_ERR("Failed to register vreq");
- return NULL;
- }
-
- err = usbd_init(&app_usbd);
- if (err) {
- LOG_ERR("Failed to initialize device support");
- return NULL;
- }
-
- return &app_usbd;
-}
-
-static int app_usbd_enable(void)
-{
- struct usbd_context *usbd;
- int ret;
-
- usbd = usbd_init_device();
- if (usbd == NULL) {
- LOG_ERR("Failed to initialize USB device");
- return -ENODEV;
- }
-
- if (usbd_can_detect_vbus(usbd)) {
- return 0;
- }
-
- ret = usbd_enable(usbd);
- if (ret != 0) {
- LOG_ERR("Failed to enable USB");
- return 0;
- }
-
- return 0;
-}
-SYS_INIT(app_usbd_enable, APPLICATION, 0);
diff --git a/firmware/west-upstream.yml b/firmware/west-upstream.yml
deleted file mode 100644
index c00005e..0000000
--- a/firmware/west-upstream.yml
+++ /dev/null
@@ -1,17 +0,0 @@
-# Copyright 2024 The ChromiumOS Authors
-# Use of this source code is governed by a BSD-style license that can be
-# found in the LICENSE file.
-
-manifest:
- remotes:
- - name: zephyrproject-rtos
- url-base: https://github.com/zephyrproject-rtos
-
- projects:
- - name: zephyr
- remote: zephyrproject-rtos
- revision: main
- import:
- name-allowlist:
- - cmsis
- - hal_stm32
diff --git a/firmware/west.yml b/firmware/west.yml
deleted file mode 100644
index b38d2d9..0000000
--- a/firmware/west.yml
+++ /dev/null
@@ -1,27 +0,0 @@
-# Copyright 2024 The ChromiumOS Authors
-# Use of this source code is governed by a BSD-style license that can be
-# found in the LICENSE file.
-
-manifest:
- remotes:
- - name: chromium
- url-base: https://chromium.googlesource.com/chromiumos
-
- projects:
- - name: zephyr
- remote: chromium
- repo-path: third_party/zephyr
- revision: main
- west-commands: scripts/west-commands.yml
-
- - name: cmsis
- remote: chromium
- repo-path: third_party/zephyr/cmsis
- revision: chromeos-main
- path: modules/hal/cmsis
-
- - name: hal_stm32
- remote: chromium
- repo-path: third_party/zephyr/hal_stm32
- revision: chromeos-main
- path: modules/hal/stm32
diff --git a/flash_npcx.py b/flash_npcx.py
deleted file mode 100755
index c2af335..0000000
--- a/flash_npcx.py
+++ /dev/null
@@ -1,67 +0,0 @@
-#!/usr/bin/env python3
-# Copyright 2025 The ChromiumOS Authors
-# Use of this source code is governed by a BSD-style license that can be
-# found in the LICENSE file.
-
-import argparse
-import os
-import sys
-import time
-
-import usb
-
-
-args = None
-target = None
-
-
-def find_usb_device():
- dev = usb.core.find(manufacturer="Google", product="EC AIC Tester")
- if dev is None:
- raise ValueError("Device not found")
-
- return dev
-
-
-# bRequest values:
-# bit 7 = 0: host to device
-# bit 6..5 = vendor
-# bit 4..0 = device
-TO_DEV_REQ_TYPE = 0x40
-# bit 7 = 0: device to host
-# bit 6..5 = vendor
-# bit 4..0 = device
-TO_HOST_REQ_TYPE = 0xC0
-
-# Must match the definitions in firmware/src/usb_request.h
-USB_REQ_EC_RESET = 0
-USB_REQ_POWER = 1
-USB_REQ_NPCX_BOOT = 2
-
-
-def main(argv):
- global args
- global target
-
- parser = argparse.ArgumentParser()
- parser.add_argument("-p", "--port", type=str, default="ttyACM2")
- args = parser.parse_args(argv)
-
- dev = find_usb_device()
-
- dev.ctrl_transfer(TO_DEV_REQ_TYPE, 0, 1, USB_REQ_POWER, 0)
-
- dev.ctrl_transfer(TO_DEV_REQ_TYPE, 0, 0, USB_REQ_NPCX_BOOT, 0)
-
- os.system(
- f"uartupdatetool --port={args.port} --baudrate=115200 --opr=wr --addr=0x200C3020 --file build/zephyr/npcx-aic/output/npcx_monitor.bin"
- )
- os.system(
- f"uartupdatetool --port={args.port} --baudrate=115200 --opr=wr --auto --offset=0 --file build/zephyr/npcx-aic/output/ec.bin"
- )
-
- dev.ctrl_transfer(TO_DEV_REQ_TYPE, 0, 0, USB_REQ_EC_RESET, 0)
-
-
-if __name__ == "__main__":
- sys.exit(main(sys.argv[1:]))