diff --git a/boards/coredevices/pr2/Kconfig.pr2 b/boards/coredevices/pr2/Kconfig.pr2 new file mode 100644 index 000000000000..7f0e9f6b09b4 --- /dev/null +++ b/boards/coredevices/pr2/Kconfig.pr2 @@ -0,0 +1,5 @@ +# Copyright (c) 2026 Core Devices LLC +# SPDX-License-Identifier: Apache-2.0 + +config BOARD_PR2 + select SOC_SF32LB52JUD6 diff --git a/boards/coredevices/pr2/board.cmake b/boards/coredevices/pr2/board.cmake new file mode 100644 index 000000000000..2a25598d9340 --- /dev/null +++ b/boards/coredevices/pr2/board.cmake @@ -0,0 +1,6 @@ +# Copyright (c) 2026 Core Devices LLC +# SPDX-License-Identifier: Apache-2.0 + +board_runner_args(sftool "--chip=SF32LB52") + +include(${ZEPHYR_BASE}/boards/common/sftool.board.cmake) diff --git a/boards/coredevices/pr2/board.yml b/boards/coredevices/pr2/board.yml new file mode 100644 index 000000000000..2305e81dc96d --- /dev/null +++ b/boards/coredevices/pr2/board.yml @@ -0,0 +1,9 @@ +# Copyright (c) 2026 Core Devices LLC +# SPDX-License-Identifier: Apache-2.0 + +board: + name: pr2 + full_name: Pebble Round 2 + vendor: coredevices + socs: + - name: sf32lb52jud6 diff --git a/boards/coredevices/pr2/doc/img/pr2.webp b/boards/coredevices/pr2/doc/img/pr2.webp new file mode 100644 index 000000000000..3ed794a173f9 Binary files /dev/null and b/boards/coredevices/pr2/doc/img/pr2.webp differ diff --git a/boards/coredevices/pr2/doc/index.rst b/boards/coredevices/pr2/doc/index.rst new file mode 100644 index 000000000000..9f29b53a6ad8 --- /dev/null +++ b/boards/coredevices/pr2/doc/index.rst @@ -0,0 +1,50 @@ +.. zephyr:board:: pr2 + +Overview +******** + +Pebble Round 2 is a smart watch based on the SF32LB52x series chip SoC. + +More information about the watch can be found at the `RePebble website`_. + +Hardware +******** + +Pebble Round 2 provides the following hardware components: + +- SiFli SF32LB52JUD6 +- nPM1300 PMIC for power supply and battery charging +- GD25Q256E 256 Mb QSPI NOR +- JDI LS013B7DD02 Memory-in-Pixel (MiP) 64-color round display +- CST816T capacitive touch display driver +- RGB backlight driven by AW9346E +- W1160 ambient light sensor +- 4 physical buttons +- LIS2DW12 low-power accelerometer +- MMC5603NJ magnetometer +- Dual PDM microphone +- LRA driven by AW86225CSR +- Programming connector + +Supported Features +================== + +.. zephyr:board-supported-hw:: + +Programming and Debugging +************************* + +.. zephyr:board-supported-runners:: + +Refer to `sftool website`_ for more information. + +References +********** + +.. target-notes:: + +.. _RePebble website: + https://repebble.com/ + +.. _sftool website: + https://github.com/OpenSiFli/sftool diff --git a/boards/coredevices/pr2/pr2-pinctrl.dtsi b/boards/coredevices/pr2/pr2-pinctrl.dtsi new file mode 100644 index 000000000000..6db0e97a3689 --- /dev/null +++ b/boards/coredevices/pr2/pr2-pinctrl.dtsi @@ -0,0 +1,41 @@ +/* + * Copyright (c) 2026 Core Devices LLC + * SPDX-License-Identifier: Apache-2.0 + */ + +#include + +&pinctrl { + i2c1_default: i2c1_default { + group1 { + pinmux = , ; + input-enable; + }; + }; + + i2c2_default: i2c2_default { + group1 { + pinmux = , ; + input-enable; + }; + }; + + i2c3_default: i2c3_default { + group1 { + pinmux = , ; + input-enable; + }; + }; + + usart1_default: usart1_default { + group1 { + pinmux = ; + }; + + group2 { + pinmux = ; + input-enable; + bias-pull-up; + }; + }; +}; diff --git a/boards/coredevices/pr2/pr2.dts b/boards/coredevices/pr2/pr2.dts new file mode 100644 index 000000000000..70ad210fa27d --- /dev/null +++ b/boards/coredevices/pr2/pr2.dts @@ -0,0 +1,220 @@ +/* + * Copyright (c) 2026 Core Devices LLC + * SPDX-License-Identifier: Apache-2.0 + */ + +/dts-v1/; + +#include +#include +#include +#include +#include +#include +#include + +#include "pr2-pinctrl.dtsi" + +/ { + model = "Core Devices Pebble Round 2"; + compatible = "coredevices,pr2"; + + chosen { + zephyr,flash = &gd25q256e; + zephyr,flash-controller = &mpi2; + zephyr,code-partition = &code; + zephyr,console = &usart1; + zephyr,shell-uart = &usart1; + }; + + buttons { + compatible = "gpio-keys"; + + btn_back: button-back { + label = "BACK"; + gpios = <&gpioa_32_44 2 GPIO_ACTIVE_HIGH>; + zephyr,code = ; + }; + + btn_up: button-up { + label = "UP"; + gpios = <&gpioa_32_44 3 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)>; + zephyr,code = ; + }; + + btn_center: button-center { + label = "CENTER"; + gpios = <&gpioa_32_44 4 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)>; + zephyr,code = ; + }; + + btn_down: button-down { + label = "DOWN"; + gpios = <&gpioa_32_44 5 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)>; + zephyr,code = ; + }; + }; + + aliases { + sw0 = &btn_back; + sw1 = &btn_up; + watchdog0 = &wdt; + }; +}; + +&cpu0 { + clock-frequency = ; +}; + +&dmac { + status = "okay"; +}; + +&gpioa_00_31 { + status = "okay"; +}; + +&gpioa_32_44 { + status = "okay"; +}; + +&hxt48 { + status = "okay"; +}; + +&i2c1 { + status = "okay"; + pinctrl-0 = <&i2c1_default>; + pinctrl-names = "default"; + clock-frequency = ; +}; + +&i2c2 { + status = "okay"; + pinctrl-0 = <&i2c2_default>; + pinctrl-names = "default"; + clock-frequency = ; +}; + +&i2c3 { + status = "okay"; + pinctrl-0 = <&i2c3_default>; + pinctrl-names = "default"; + clock-frequency = ; + + npm1300: pmic@6b { + compatible = "nordic,npm1300"; + reg = <0x6b>; + pmic-int-pin = <1>; + host-int-gpios = <&gpioa_32_44 12 GPIO_ACTIVE_HIGH>; + + npm1300_charger: charger { + compatible = "nordic,npm1300-charger"; + term-microvolt = <4450000>; + term-warm-microvolt = <4000000>; + current-microamp = <14000>; + dischg-limit-microamp = <200000>; + vbus-limit-microamp = <500000>; + thermistor-ohms = <10000>; + thermistor-beta = <3380>; + charging-enable; + vbatlow-charge-enable; + }; + + npm1300_gpio: gpio-controller { + compatible = "nordic,npm1300-gpio"; + gpio-controller; + #gpio-cells = <2>; + ngpios = <5>; + }; + + regulators { + compatible = "nordic,npm1300-regulator"; + + npm1300_ldo1: LDO1 { + regulator-allowed-modes = ; + regulator-initial-mode = ; + regulator-min-microvolt = <1800000>; + regulator-max-microvolt = <1800000>; + }; + + npm1300_ldo2: LDO2 { + regulator-allowed-modes = ; + regulator-initial-mode = ; + regulator-min-microvolt = <3300000>; + regulator-max-microvolt = <3300000>; + }; + }; + }; +}; + +&mpi2 { + compatible = "sifli,sf32lb-mpi-qspi-nor"; + dmas = <&dmac 0 SF32LB52X_DMA_REQ_MPI2 SF32LB_DMA_PL_MEDIUM>; + sifli,lines = <4>; + sifli,psclr = <0>; + status = "okay"; + + gd25q256e: flash@0 { + compatible = "gd,gd25q256e", "jedec,qspi-nor"; + reg = <0x0>; + size = ; + quad-enable-requirements = "S2B1v6"; + #address-cells = <1>; + #size-cells = <1>; + + gd25q256e_flash: gd25q256e@12000000 { + compatible = "soc-nv-flash"; + #address-cells = <1>; + #size-cells = <1>; + reg = <0x12000000 DT_SIZE_M(32)>; + ranges = <0x0 0x12000000 DT_SIZE_M(32)>; + + partitions { + #address-cells = <1>; + #size-cells = <1>; + ranges; + + ptable: partition@0 { + compatible = "zephyr,mapped-partition"; + label = "ptable"; + reg = <0x0 DT_SIZE_K(64)>; + }; + + code: partition@10000 { + compatible = "zephyr,mapped-partition"; + label = "code"; + reg = <0x10000 DT_SIZE_K(32704)>; + }; + }; + }; + }; +}; + +&pinctrl { + status = "okay"; +}; + +&rcc_clk { + status = "okay"; + + sifli,hdiv = <1>; + sifli,pdiv1 = <1>; + sifli,pdiv2 = <6>; + + dll1 { + status = "okay"; + clock-frequency = ; + }; +}; + +&usart1 { + status = "okay"; + current-speed = <1000000>; + pinctrl-0 = <&usart1_default>; + pinctrl-names = "default"; +}; + +&wdt { + status = "okay"; +}; diff --git a/boards/coredevices/pr2/pr2.yaml b/boards/coredevices/pr2/pr2.yaml new file mode 100644 index 000000000000..3207ce820f3b --- /dev/null +++ b/boards/coredevices/pr2/pr2.yaml @@ -0,0 +1,16 @@ +# Copyright (c) 2026 Core Devices LLC +# SPDX-License-Identifier: Apache-2.0 + +identifier: pr2 +name: Pebble-Round-2 +vendor: coredevices +type: mcu +arch: arm +ram: 512 +flash: 32704 +toolchain: + - zephyr +supported: + - uart + - gpio + - watchdog diff --git a/boards/coredevices/pr2/pr2_defconfig b/boards/coredevices/pr2/pr2_defconfig new file mode 100644 index 000000000000..8598fc050abc --- /dev/null +++ b/boards/coredevices/pr2/pr2_defconfig @@ -0,0 +1,14 @@ +# Copyright (c) 2026 Core Devices LLC +# SPDX-License-Identifier: Apache-2.0 + +CONFIG_ARM_MPU=y +CONFIG_HW_STACK_PROTECTION=y + +CONFIG_SERIAL=y +CONFIG_GPIO=y + +CONFIG_CONSOLE=y +CONFIG_UART_CONSOLE=y + +CONFIG_SF32LB52X_BOOTROM_FLASH_ON_DELAY_MS=100 +CONFIG_SF32LB52X_BOOTROM_FLASH_OFF_DELAY_MS=100