Skip to content

Commit cf2d3dc

Browse files
davidcross-chromiumkartben
authored andcommitted
boards: Introduce Google Quincy Development Board
Quincy is a board created by Google for fingerprint-related functionality development. Signed-off-by: David Cross <[email protected]>
1 parent cbf867f commit cf2d3dc

File tree

7 files changed

+172
-0
lines changed

7 files changed

+172
-0
lines changed
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
# Copyright (c) 2024 Google LLC
2+
# SPDX-License-Identifier: Apache-2.0
3+
4+
config BOARD_GOOGLE_QUINCY
5+
select SOC_NPCX9MFP

boards/google/quincy/board.cmake

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
# Copyright (c) 2024 Google LLC
2+
# SPDX-License-Identifier: Apache-2.0
3+
4+
board_runner_args(jlink "--device=Cortex-M4" "--speed=4000")
5+
board_runner_args(openocd --cmd-load "npcx_write_image")
6+
board_runner_args(openocd --cmd-verify "npcx_verify_image")
7+
8+
include(${ZEPHYR_BASE}/boards/common/openocd.board.cmake)
9+
include(${ZEPHYR_BASE}/boards/common/jlink.board.cmake)

boards/google/quincy/board.yml

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
board:
2+
name: google_quincy
3+
full_name: Quincy
4+
vendor: google
5+
socs:
6+
- name: npcx9mfp

boards/google/quincy/doc/index.rst

Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
.. zephyr:board:: google_quincy
2+
3+
Overview
4+
********
5+
6+
Google Quincy is a board created for fingerprint-related functionality
7+
development.
8+
9+
The board has connectors for fingerprint sensors. A UART Console is exposed
10+
over μServo and USB connectors. The MCU can be flashed using μServo or SWD.
11+
12+
Hardware
13+
********
14+
15+
- NPCX99FPA0BX VFBGA144 package
16+
17+
Peripheral Mapping
18+
===================
19+
20+
- UART_1 (CONSOLE) TX/RX : GPIO65/GPIO64
21+
- UART_2 (PROG) TX/RX : GPIO86/GPIO75
22+
- SPI_0 (SHI) CS/CLK/MISO/MOSI : GPIO53/GPIO55/GPIO47/GPIO46
23+
- SPI_1 (SPIP) CS/CLK/MISO/MOSI : GPIOA6/GPIOA1/GPIO95/GPIOA3
24+
- SPI_2 (GP) CS/CLK/MISO/MOSI : GPIO30/GPIO25/GPIO24/GPIO31
25+
26+
Programming and Debugging
27+
*************************
28+
29+
Build application as usual for the ``google_quincy`` board target, and flash
30+
using μServo or an external J-Link connected to J4. If μServo is used, please
31+
follow the `Chromium EC Flashing Documentation`_ and
32+
`Chromium Servo Micro Documentation`_.
33+
34+
Debugging
35+
=========
36+
37+
Use SWD with a J-Link.
38+
39+
References
40+
**********
41+
42+
.. target-notes::
43+
44+
.. _Chromium EC Flashing Documentation:
45+
https://chromium.googlesource.com/chromiumos/platform/ec#Flashing-via-the-servo-debug-board
46+
.. _Chromium Servo Micro Documentation:
47+
https://chromium.googlesource.com/chromiumos/third_party/hdctools/+/master/docs/servo_micro.md
Lines changed: 63 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,63 @@
1+
/*
2+
* Copyright (c) 2024 Google LLC
3+
*
4+
* SPDX-License-Identifier: Apache-2.0
5+
*/
6+
7+
/dts-v1/;
8+
9+
#include <nuvoton/npcx9mfp.dtsi>
10+
#include <nuvoton/npcx/npcx9/npcx9-pinctrl.dtsi>
11+
12+
/ {
13+
model = "Google Quincy development board";
14+
compatible = "google,quincy-fpmcu";
15+
16+
chosen {
17+
zephyr,console = &uart1;
18+
zephyr,shell-uart = &uart1;
19+
zephyr,sram = &sram0;
20+
zephyr,flash = &flash0;
21+
zephyr,flash-controller = &int_flash;
22+
};
23+
24+
aliases {
25+
/* For watchdog sample */
26+
watchdog0 = &twd0;
27+
};
28+
};
29+
30+
/* UART1: Servo UART (console) */
31+
&uart1 {
32+
/* Use UART1_SL2 ie. PIN64.65 */
33+
pinctrl-0 = <&uart1_2_sin_gp64
34+
&uart1_2_sout_gp65>;
35+
pinctrl-names = "default";
36+
current-speed = <115200>;
37+
status = "okay";
38+
};
39+
40+
/* UART2: AP UART (Host Commands and MKBP) */
41+
&uart2 {
42+
pinctrl-0 = <&uart2_sin_gp75
43+
&uart2_sout_gp86>;
44+
pinctrl-names = "default";
45+
current-speed = <115200>;
46+
status = "okay";
47+
};
48+
49+
/* SHI0: communication with the AP */
50+
&shi0 {
51+
status = "okay";
52+
pinctrl-0 = <&shi_gp46_47_53_55>;
53+
pinctrl-names = "default";
54+
};
55+
56+
/* SPIP0: communication with the fingerprint sensor */
57+
&spip0 {
58+
pinctrl-0 = <&spip_sclk_mosi_miso_gp95_gpa1_gpa3_gpa5_sl
59+
&spip_sclk_mosi_miso_gp95_gpa1_gpa3_gpa5_no_spip_inv>;
60+
cs-gpios = <&gpioa 6 GPIO_ACTIVE_LOW>;
61+
pinctrl-names = "default";
62+
status = "okay";
63+
};
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
identifier: google_quincy
2+
name: Google Quincy Development Board
3+
type: mcu
4+
arch: arm
5+
toolchain:
6+
- zephyr
7+
- gnuarmemb
8+
ram: 512
9+
flash: 1024
10+
vendor: google
11+
supported:
12+
- clock
13+
- gpio
14+
- i2c
15+
- pm
16+
- pwm
17+
- spi
18+
- uart
19+
- watchdog
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
# Copyright (c) 2024 Google Inc
2+
# SPDX-License-Identifier: Apache-2.0
3+
4+
# General Kernel Options
5+
CONFIG_SYS_CLOCK_HW_CYCLES_PER_SEC=15000000
6+
7+
# Serial Drivers
8+
CONFIG_SERIAL=y
9+
CONFIG_UART_INTERRUPT_DRIVEN=y
10+
11+
# Console
12+
CONFIG_CONSOLE=y
13+
CONFIG_UART_CONSOLE=y
14+
15+
# GPIO Controller
16+
CONFIG_GPIO=y
17+
18+
# Clock Controller
19+
CONFIG_CLOCK_CONTROL=y
20+
21+
# Enable MPU and HW stack protection
22+
CONFIG_ARM_MPU=y
23+
CONFIG_HW_STACK_PROTECTION=y

0 commit comments

Comments
 (0)