Skip to content

Commit

Permalink
boards: Introduce Google Quincy Development Board
Browse files Browse the repository at this point in the history
Quincy is a board created by Google for fingerprint-related
functionality development.

Signed-off-by: David Cross <[email protected]>
  • Loading branch information
David Cross committed Dec 13, 2024
1 parent 4789820 commit faaa52c
Show file tree
Hide file tree
Showing 7 changed files with 174 additions and 0 deletions.
5 changes: 5 additions & 0 deletions boards/google/quincy/Kconfig.google_quincy
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
# Copyright (c) 2024 Google LLC
# SPDX-License-Identifier: Apache-2.0

config BOARD_GOOGLE_QUINCY
select SOC_NPCX9MFP
9 changes: 9 additions & 0 deletions boards/google/quincy/board.cmake
Original file line number Diff line number Diff line change
@@ -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)
5 changes: 5 additions & 0 deletions boards/google/quincy/board.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
board:
name: google_quincy
vendor: google
socs:
- name: npcx9mfp
49 changes: 49 additions & 0 deletions boards/google/quincy/doc/index.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
.. _google_quincy_board:

Google Quincy Development Board
###################################

Overview
********

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

Board has connectors for fingerprint sensors. Console is exposed over μServo
connector. 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`_.

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
63 changes: 63 additions & 0 deletions boards/google/quincy/google_quincy.dts
Original file line number Diff line number Diff line change
@@ -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 {

Check warning on line 50 in boards/google/quincy/google_quincy.dts

View workflow job for this annotation

GitHub Actions / Run compliance checks on patch series (PR)

LEADING_SPACE

boards/google/quincy/google_quincy.dts:50 please, no spaces at the start of a line

Check warning on line 50 in boards/google/quincy/google_quincy.dts

View workflow job for this annotation

GitHub Actions / Run compliance checks on patch series (PR)

LEADING_SPACE

boards/google/quincy/google_quincy.dts:50 please, no spaces at the start of a line
status = "okay";
pinctrl-0 = <&shi_gp46_47_53_55>;
pinctrl-names = "default";
};

Check warning on line 54 in boards/google/quincy/google_quincy.dts

View workflow job for this annotation

GitHub Actions / Run compliance checks on patch series (PR)

LEADING_SPACE

boards/google/quincy/google_quincy.dts:54 please, no spaces at the start of a line

Check warning on line 54 in boards/google/quincy/google_quincy.dts

View workflow job for this annotation

GitHub Actions / Run compliance checks on patch series (PR)

LEADING_SPACE

boards/google/quincy/google_quincy.dts:54 please, no spaces at the start of a line

/* 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";
};
20 changes: 20 additions & 0 deletions boards/google/quincy/google_quincy.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
identifier: google_quincy
name: Google Quincy Development Board
type: mcu
arch: arm
toolchain:
- zephyr
- gnuarmemb
- xtools
ram: 512
flash: 1024
vendor: google
supported:
- clock
- gpio
- i2c
- pm
- pwm
- spi
- uart
- watchdog
23 changes: 23 additions & 0 deletions boards/google/quincy/google_quincy_defconfig
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
# Copyright (c) 2024 Google Inc
# SPDX-License-Identifier: Apache-2.0

# 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

# Pin Controller
CONFIG_PINCTRL=y

# Enable MPU and HW stack protection
CONFIG_ARM_MPU=y
CONFIG_HW_STACK_PROTECTION=y

0 comments on commit faaa52c

Please sign in to comment.