Skip to content

Commit a115cb3

Browse files
gmarulljhedberg
authored andcommitted
boards: coredevices: add pebble 2 duo
Add board for Pebble 2 Duo. Most peripherals are supported, however, some upstream changes are needed to take full benefit of some. Signed-off-by: Gerard Marull-Paretas <[email protected]>
1 parent c01f864 commit a115cb3

File tree

10 files changed

+505
-0
lines changed

10 files changed

+505
-0
lines changed

boards/coredevices/p2d/Kconfig.p2d

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
# Copyright (c) 2025 Core Devices LLC
2+
# SPDX-License-Identifier: Apache-2.0
3+
4+
config BOARD_P2D
5+
select SOC_NRF52840_QIAA

boards/coredevices/p2d/board.cmake

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
# Copyright (c) 2025 Core Devices LLC
2+
# SPDX-License-Identifier: Apache-2.0
3+
4+
board_runner_args(jlink "--device=nRF52840_xxAA" "--speed=4000")
5+
board_runner_args(pyocd "--target=nrf52840" "--frequency=4000000")
6+
7+
include(${ZEPHYR_BASE}/boards/common/nrfutil.board.cmake)
8+
include(${ZEPHYR_BASE}/boards/common/nrfjprog.board.cmake)
9+
include(${ZEPHYR_BASE}/boards/common/jlink.board.cmake)
10+
include(${ZEPHYR_BASE}/boards/common/pyocd.board.cmake)
11+
include(${ZEPHYR_BASE}/boards/common/openocd-nrf5.board.cmake)

boards/coredevices/p2d/board.yml

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
# Copyright (c) 2025 Core Devices LLC
2+
# SPDX-License-Identifier: Apache-2.0
3+
4+
boards:
5+
- name: p2d
6+
full_name: Pebble 2 Duo
7+
vendor: coredevices
8+
socs:
9+
- name: nrf52840
25.2 KB
Loading
Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
.. zephyr:board:: p2d
2+
3+
Overview
4+
********
5+
6+
Pebble 2 Duo is a smart watch based on the nRF52840 series chip SoC.
7+
8+
More information about the watch can be found at the `RePebble website`_.
9+
10+
Hardware
11+
********
12+
13+
Pebble 2 Duo provides the following hardware components:
14+
15+
- Nordic nRF52840
16+
- nPM1300 PMIC for power supply and battery charging
17+
- GD25LE255E 256 Mb QSPI NOR
18+
- Sharp LS013B7DH05 Memory-in-Pixel (MiP) monochrome display
19+
- PWM backlight control using TPS22916 driver
20+
- OPT3001 ambient light sensor
21+
- 4 physical buttons
22+
- LSM6DSOW IMU (accelerometer/gyroscope)
23+
- MMC5603NJ magnetometer
24+
- MSM261DDB020 PDM microphone
25+
- Speaker driven by DA7212 audio codec
26+
- LRA driven by TI DRV2604 haptic driver
27+
- Programming connector
28+
29+
Supported Features
30+
==================
31+
32+
.. zephyr:board-supported-hw::
33+
34+
Programming and Debugging
35+
*************************
36+
37+
.. zephyr:board-supported-runners::
38+
39+
References
40+
**********
41+
42+
.. target-notes::
43+
44+
.. _RePebble website:
45+
https://repebble.com/
Lines changed: 138 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,138 @@
1+
/*
2+
* Copyright (c) 2025 Core Devices LLC
3+
* SPDX-License-Identifier: Apache-2.0
4+
*/
5+
6+
&pinctrl {
7+
i2c0_default: i2c0_default {
8+
group1 {
9+
psels = <NRF_PSEL(TWIM_SDA, 0, 15)>,
10+
<NRF_PSEL(TWIM_SCL, 0, 14)>;
11+
};
12+
};
13+
14+
i2c0_sleep: i2c0_sleep {
15+
group1 {
16+
psels = <NRF_PSEL(TWIM_SDA, 0, 15)>,
17+
<NRF_PSEL(TWIM_SCL, 0, 14)>;
18+
low-power-enable;
19+
};
20+
};
21+
22+
i2c1_default: i2c1_default {
23+
group1 {
24+
psels = <NRF_PSEL(TWIM_SDA, 0, 11)>,
25+
<NRF_PSEL(TWIM_SCL, 0, 25)>;
26+
};
27+
};
28+
29+
i2c1_sleep: i2c1_sleep {
30+
group1 {
31+
psels = <NRF_PSEL(TWIM_SDA, 0, 11)>,
32+
<NRF_PSEL(TWIM_SCL, 0, 25)>;
33+
low-power-enable;
34+
};
35+
};
36+
37+
i2s0_default: i2s0_default {
38+
group1 {
39+
psels = <NRF_PSEL(I2S_MCK, 1, 9)>,
40+
<NRF_PSEL(I2S_SCK_M, 0, 12)>,
41+
<NRF_PSEL(I2S_LRCK_M, 0, 7)>,
42+
<NRF_PSEL(I2S_SDOUT, 0, 13)>;
43+
};
44+
};
45+
46+
i2s0_sleep: i2s0_sleep {
47+
group1 {
48+
psels = <NRF_PSEL(I2S_MCK, 1, 9)>,
49+
<NRF_PSEL(I2S_SCK_M, 0, 12)>,
50+
<NRF_PSEL(I2S_LRCK_M, 0, 7)>,
51+
<NRF_PSEL(I2S_SDOUT, 0, 13)>;
52+
low-power-enable;
53+
};
54+
};
55+
56+
pdm0_default: pdm0_default {
57+
group1 {
58+
psels = <NRF_PSEL(PDM_CLK, 1, 0)>,
59+
<NRF_PSEL(PDM_DIN, 0, 24)>;
60+
};
61+
};
62+
63+
pwm0_default: pwm0_default {
64+
group1 {
65+
psels = <NRF_PSEL(PWM_OUT0, 0, 26)>;
66+
};
67+
};
68+
69+
pwm0_sleep: pwm0_sleep {
70+
group1 {
71+
psels = <NRF_PSEL(PWM_OUT0, 0, 26)>;
72+
low-power-enable;
73+
};
74+
};
75+
76+
qspi_default: qspi_default {
77+
group1 {
78+
psels = <NRF_PSEL(QSPI_SCK, 0, 19)>,
79+
<NRF_PSEL(QSPI_IO0, 0, 20)>,
80+
<NRF_PSEL(QSPI_IO1, 0, 21)>,
81+
<NRF_PSEL(QSPI_IO2, 0, 22)>,
82+
<NRF_PSEL(QSPI_IO3, 0, 23)>,
83+
<NRF_PSEL(QSPI_CSN, 0, 17)>;
84+
nordic,drive-mode = <NRF_DRIVE_H0H1>;
85+
};
86+
};
87+
88+
qspi_sleep: qspi_sleep {
89+
group1 {
90+
psels = <NRF_PSEL(QSPI_SCK, 0, 19)>,
91+
<NRF_PSEL(QSPI_IO0, 0, 20)>,
92+
<NRF_PSEL(QSPI_IO1, 0, 21)>,
93+
<NRF_PSEL(QSPI_IO2, 0, 22)>,
94+
<NRF_PSEL(QSPI_IO3, 0, 23)>;
95+
low-power-enable;
96+
};
97+
98+
group2 {
99+
psels = <NRF_PSEL(QSPI_CSN, 0, 17)>;
100+
low-power-enable;
101+
bias-pull-up;
102+
};
103+
};
104+
105+
spi3_default: spi3_default {
106+
group1 {
107+
psels = <NRF_PSEL(SPIM_SCK, 0, 6)>,
108+
<NRF_PSEL(SPIM_MOSI, 0, 8)>;
109+
};
110+
};
111+
112+
spi3_sleep: spi3_sleep {
113+
group1 {
114+
psels = <NRF_PSEL(SPIM_SCK, 0, 6)>,
115+
<NRF_PSEL(SPIM_MOSI, 0, 8)>;
116+
low-power-enable;
117+
};
118+
};
119+
120+
uart0_default: uart0_default {
121+
group1 {
122+
psels = <NRF_PSEL(UART_TX, 0, 27)>;
123+
};
124+
125+
group2 {
126+
psels = <NRF_PSEL(UART_RX, 0, 5)>;
127+
bias-pull-up;
128+
};
129+
};
130+
131+
uart0_sleep: uart0_sleep {
132+
group1 {
133+
psels = <NRF_PSEL(UART_TX, 0, 27)>,
134+
<NRF_PSEL(UART_RX, 0, 5)>;
135+
low-power-enable;
136+
};
137+
};
138+
};

0 commit comments

Comments
 (0)