boards: Introduce Google Quincy Development Board

Quincy is a board created by Google for fingerprint-related
functionality development.

Signed-off-by: David Cross <davidcross@chromium.org>
This commit is contained in:
David Cross 2024-11-18 15:03:01 -08:00 committed by Benjamin Cabé
parent cbf867ff2c
commit cf2d3dc101
7 changed files with 172 additions and 0 deletions

View file

@ -0,0 +1,5 @@
# Copyright (c) 2024 Google LLC
# SPDX-License-Identifier: Apache-2.0
config BOARD_GOOGLE_QUINCY
select SOC_NPCX9MFP

View file

@ -0,0 +1,9 @@
# Copyright (c) 2024 Google LLC
# SPDX-License-Identifier: Apache-2.0
board_runner_args(jlink "--device=Cortex-M4" "--speed=4000")
board_runner_args(openocd --cmd-load "npcx_write_image")
board_runner_args(openocd --cmd-verify "npcx_verify_image")
include(${ZEPHYR_BASE}/boards/common/openocd.board.cmake)
include(${ZEPHYR_BASE}/boards/common/jlink.board.cmake)

View file

@ -0,0 +1,6 @@
board:
name: google_quincy
full_name: Quincy
vendor: google
socs:
- name: npcx9mfp

View file

@ -0,0 +1,47 @@
.. zephyr:board:: google_quincy
Overview
********
Google Quincy is a board created for fingerprint-related functionality
development.
The board has connectors for fingerprint sensors. A UART Console is exposed
over μServo and USB connectors. The MCU can be flashed using μServo or SWD.
Hardware
********
- NPCX99FPA0BX VFBGA144 package
Peripheral Mapping
===================
- UART_1 (CONSOLE) TX/RX : GPIO65/GPIO64
- UART_2 (PROG) TX/RX : GPIO86/GPIO75
- SPI_0 (SHI) CS/CLK/MISO/MOSI : GPIO53/GPIO55/GPIO47/GPIO46
- SPI_1 (SPIP) CS/CLK/MISO/MOSI : GPIOA6/GPIOA1/GPIO95/GPIOA3
- SPI_2 (GP) CS/CLK/MISO/MOSI : GPIO30/GPIO25/GPIO24/GPIO31
Programming and Debugging
*************************
Build application as usual for the ``google_quincy`` board target, and flash
using μServo or an external J-Link connected to J4. If μServo is used, please
follow the `Chromium EC Flashing Documentation`_ and
`Chromium Servo Micro Documentation`_.
Debugging
=========
Use SWD with a J-Link.
References
**********
.. target-notes::
.. _Chromium EC Flashing Documentation:
https://chromium.googlesource.com/chromiumos/platform/ec#Flashing-via-the-servo-debug-board
.. _Chromium Servo Micro Documentation:
https://chromium.googlesource.com/chromiumos/third_party/hdctools/+/master/docs/servo_micro.md

View file

@ -0,0 +1,63 @@
/*
* Copyright (c) 2024 Google LLC
*
* SPDX-License-Identifier: Apache-2.0
*/
/dts-v1/;
#include <nuvoton/npcx9mfp.dtsi>
#include <nuvoton/npcx/npcx9/npcx9-pinctrl.dtsi>
/ {
model = "Google Quincy development board";
compatible = "google,quincy-fpmcu";
chosen {
zephyr,console = &uart1;
zephyr,shell-uart = &uart1;
zephyr,sram = &sram0;
zephyr,flash = &flash0;
zephyr,flash-controller = &int_flash;
};
aliases {
/* For watchdog sample */
watchdog0 = &twd0;
};
};
/* UART1: Servo UART (console) */
&uart1 {
/* Use UART1_SL2 ie. PIN64.65 */
pinctrl-0 = <&uart1_2_sin_gp64
&uart1_2_sout_gp65>;
pinctrl-names = "default";
current-speed = <115200>;
status = "okay";
};
/* UART2: AP UART (Host Commands and MKBP) */
&uart2 {
pinctrl-0 = <&uart2_sin_gp75
&uart2_sout_gp86>;
pinctrl-names = "default";
current-speed = <115200>;
status = "okay";
};
/* SHI0: communication with the AP */
&shi0 {
status = "okay";
pinctrl-0 = <&shi_gp46_47_53_55>;
pinctrl-names = "default";
};
/* SPIP0: communication with the fingerprint sensor */
&spip0 {
pinctrl-0 = <&spip_sclk_mosi_miso_gp95_gpa1_gpa3_gpa5_sl
&spip_sclk_mosi_miso_gp95_gpa1_gpa3_gpa5_no_spip_inv>;
cs-gpios = <&gpioa 6 GPIO_ACTIVE_LOW>;
pinctrl-names = "default";
status = "okay";
};

View file

@ -0,0 +1,19 @@
identifier: google_quincy
name: Google Quincy Development Board
type: mcu
arch: arm
toolchain:
- zephyr
- gnuarmemb
ram: 512
flash: 1024
vendor: google
supported:
- clock
- gpio
- i2c
- pm
- pwm
- spi
- uart
- watchdog

View file

@ -0,0 +1,23 @@
# Copyright (c) 2024 Google Inc
# SPDX-License-Identifier: Apache-2.0
# General Kernel Options
CONFIG_SYS_CLOCK_HW_CYCLES_PER_SEC=15000000
# Serial Drivers
CONFIG_SERIAL=y
CONFIG_UART_INTERRUPT_DRIVEN=y
# Console
CONFIG_CONSOLE=y
CONFIG_UART_CONSOLE=y
# GPIO Controller
CONFIG_GPIO=y
# Clock Controller
CONFIG_CLOCK_CONTROL=y
# Enable MPU and HW stack protection
CONFIG_ARM_MPU=y
CONFIG_HW_STACK_PROTECTION=y