Skip to content

Commit

Permalink
applications: nrf_desktop: Add nRF54L10 support
Browse files Browse the repository at this point in the history
nRF54L10 is emulated on nRF54L15 DK.

Jira: NCSDK-30311

Signed-off-by: Marek Pieta <[email protected]>
  • Loading branch information
MarekPieta authored and nordicjm committed Jan 23, 2025
1 parent b6e825b commit 6aa8df3
Show file tree
Hide file tree
Showing 32 changed files with 1,371 additions and 0 deletions.
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
/*
* Copyright (c) 2025 Nordic Semiconductor ASA
*
* SPDX-License-Identifier: LicenseRef-Nordic-5-Clause
*/

#include "app_common.dtsi"
Original file line number Diff line number Diff line change
@@ -0,0 +1,112 @@
/*
* Copyright (c) 2025 Nordic Semiconductor ASA
*
* SPDX-License-Identifier: LicenseRef-Nordic-5-Clause
*/

/* Application does not use cpuflpr core. Assign whole RRAM to cpuapp. */
&cpuapp_rram {
reg = < 0x0 DT_SIZE_K(1022) >;
};

/ {
/* Disable pwmleds and redefine them to align configuration with CAF LEDs requirements.
* The configuration needs to match the used board revision.
*/
/delete-node/ pwmleds;

pwmleds0 {
compatible = "pwm-leds";
status = "okay";

pwm_led0: led_pwm_0 {
status = "okay";
pwms = <&pwm20 0 PWM_MSEC(20) PWM_POLARITY_NORMAL>;
label = "LED System State";
};
};

pwmleds1 {
compatible = "pwm-leds";
status = "okay";

pwm_led1: led_pwm_1 {
status = "okay";
pwms = <&pwm21 0 PWM_MSEC(20) PWM_POLARITY_NORMAL>;
label = "LED Conn State";
};
};

pwmleds2 {
compatible = "pwm-leds";
status = "okay";

pwm_led2: led_pwm_2 {
status = "okay";
pwms = <&pwm22 0 PWM_MSEC(20) PWM_POLARITY_NORMAL>;
label = "LED Num Lock";
};
};
};

&pwm20 {
status = "okay";
pinctrl-0 = <&pwm20_default_alt>;
pinctrl-1 = <&pwm20_sleep_alt>;
pinctrl-names = "default", "sleep";
};

&pwm21 {
status = "okay";
pinctrl-0 = <&pwm21_default_alt>;
pinctrl-1 = <&pwm21_sleep_alt>;
pinctrl-names = "default", "sleep";
};

&pwm22 {
status = "okay";
pinctrl-0 = <&pwm22_default_alt>;
pinctrl-1 = <&pwm22_sleep_alt>;
pinctrl-names = "default", "sleep";
};

&pinctrl {
pwm20_default_alt: pwm20_default_alt {
group1 {
psels = <NRF_PSEL(PWM_OUT0, 2, 9)>;
};
};

pwm20_sleep_alt: pwm20_sleep_alt {
group1 {
psels = <NRF_PSEL(PWM_OUT0, 2, 9)>;
low-power-enable;
};
};

pwm21_default_alt: pwm21_default_alt {
group1 {
psels = <NRF_PSEL(PWM_OUT0, 1, 10)>;
};
};

pwm21_sleep_alt: pwm21_sleep_alt {
group1 {
psels = <NRF_PSEL(PWM_OUT0, 1, 10)>;
low-power-enable;
};
};

pwm22_default_alt: pwm22_default_alt {
group1 {
psels = <NRF_PSEL(PWM_OUT0, 2, 7)>;
};
};

pwm22_sleep_alt: pwm22_sleep_alt {
group1 {
psels = <NRF_PSEL(PWM_OUT0, 2, 7)>;
low-power-enable;
};
};
};
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
/*
* Copyright (c) 2025 Nordic Semiconductor ASA
*
* SPDX-License-Identifier: LicenseRef-Nordic-5-Clause
*/

#include "app_common.dtsi"

/* For nRF54L, watchdog status is disabled by default. Needs to be enabled in DTS overlay. */
&wdt31 {
status = "okay";
};
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
/*
* Copyright (c) 2025 Nordic Semiconductor ASA
*
* SPDX-License-Identifier: LicenseRef-Nordic-5-Clause
*/

#include <caf/gpio_pins.h>

/* This configuration file is included only once from button module and holds
* information about pins forming keyboard matrix.
*/

/* This structure enforces the header file is included only once in the build.
* Violating this requirement triggers a multiple definition error at link time.
*/
const struct {} buttons_def_include_once;

static const struct gpio_pin col[] = {};

static const struct gpio_pin row[] = {
{ .port = 1, .pin = DT_GPIO_PIN(DT_NODELABEL(button0), gpios) },
{ .port = 1, .pin = DT_GPIO_PIN(DT_NODELABEL(button1), gpios) },
{ .port = 1, .pin = DT_GPIO_PIN(DT_NODELABEL(button2), gpios) },
{ .port = 0, .pin = DT_GPIO_PIN(DT_NODELABEL(button3), gpios) },
};
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
/*
* Copyright (c) 2025 Nordic Semiconductor ASA
*
* SPDX-License-Identifier: LicenseRef-Nordic-5-Clause
*/

#include <caf/key_id.h>

/* This configuration file is included only once from buttons_sim module
* and holds information about generated button presses sequence.
*/

/* This structure enforces the header file is included only once in the build.
* Violating this requirement triggers a multiple definition error at link time.
*/
const struct {} buttons_sim_def_include_once;

const static uint16_t simulated_key_sequence[] = {
KEY_ID(0x00, 0x11), /* N */
KEY_ID(0x00, 0x12), /* O */
KEY_ID(0x00, 0x15), /* R */
KEY_ID(0x00, 0x07), /* D */
KEY_ID(0x00, 0x0C), /* I */
KEY_ID(0x00, 0x06), /* C */
KEY_ID(0x00, 0x2C), /* spacebar */
};
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
/*
* Copyright (c) 2025 Nordic Semiconductor ASA
*
* SPDX-License-Identifier: LicenseRef-Nordic-5-Clause
*/

#include <caf/click_detector.h>

/* This configuration file is included only once from click_detector module
* and holds information about click detector configuration.
*/

/* This structure enforces the header file is included only once in the build.
* Violating this requirement triggers a multiple definition error at link time.
*/
const struct {} click_detector_def_include_once;

static const struct click_detector_config click_detector_config[] = {
#if CONFIG_DESKTOP_BLE_PEER_CONTROL
{
.key_id = CONFIG_DESKTOP_BLE_PEER_CONTROL_BUTTON,
.consume_button_event = false,
},
#endif /* CONFIG_DESKTOP_BLE_PEER_CONTROL */
};
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
/*
* Copyright (c) 2025 Nordic Semiconductor ASA
*
* SPDX-License-Identifier: LicenseRef-Nordic-5-Clause
*/

#include "hid_keyboard_leds.h"

/* This configuration file is included only once from hid_state module and holds
* information about LEDs associated with HID keyboard LEDs report.
*/

/* This structure enforces the header file is included only once in the build.
* Violating this requirement triggers a multiple definition error at link time.
*/
const struct {} hid_keyboard_leds_def_include_once;

static const struct led_effect keyboard_led_on = LED_EFFECT_LED_ON(LED_COLOR(255, 255, 255));
static const struct led_effect keyboard_led_off = LED_EFFECT_LED_OFF();

/* Map HID keyboard LEDs to application LED IDs. */
static const uint8_t keyboard_led_map[] = {
};
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
/*
* Copyright (c) 2025 Nordic Semiconductor ASA
*
* SPDX-License-Identifier: LicenseRef-Nordic-5-Clause
*/

#include "hid_keyboard_leds.h"

/* This configuration file is included only once from hid_state module and holds
* information about LEDs associated with HID keyboard LEDs report.
*/

/* This structure enforces the header file is included only once in the build.
* Violating this requirement triggers a multiple definition error at link time.
*/
const struct {} hid_keyboard_leds_def_include_once;

/* On the nRF54L10 SoC, you can only use the **GPIO1** port for PWM hardware peripheral output.
* Because of that, on the DK PCA10156 revision v0.8.1, **LED 0** and **LED 2** cannot be used for
* PWM output.
*
* You can still use these LEDs with the PWM LED driver, but you must set the LED color to
* ``LED_COLOR(255, 255, 255)`` or ``LED_COLOR(0, 0, 0)``. This ensures the PWM peripheral is not
* used for the mentioned LEDs.
*/
static const struct led_effect keyboard_led_on = LED_EFFECT_LED_ON(LED_COLOR(255, 255, 255));
static const struct led_effect keyboard_led_off = LED_EFFECT_LED_OFF();

/* Map HID keyboard LEDs to application LED IDs. */
static const uint8_t keyboard_led_map[] = {
[HID_KEYBOARD_LEDS_NUM_LOCK] = 2,
[HID_KEYBOARD_LEDS_CAPS_LOCK] = LED_UNAVAILABLE,
[HID_KEYBOARD_LEDS_SCROLL_LOCK] = LED_UNAVAILABLE,
[HID_KEYBOARD_LEDS_COMPOSE] = LED_UNAVAILABLE,
[HID_KEYBOARD_LEDS_KANA] = LED_UNAVAILABLE,
};
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
/*
* Copyright (c) 2025 Nordic Semiconductor ASA
*
* SPDX-License-Identifier: LicenseRef-Nordic-5-Clause
*/

#include "hid_keymap.h"
#include <caf/key_id.h>

/* This configuration file is included only once from hid_state module and holds
* information about mapping between buttons and generated reports.
*/

/* This structure enforces the header file is included only once in the build.
* Violating this requirement triggers a multiple definition error at link time.
*/
const struct {} hid_keymap_def_include_once;

/*
* HID keymap. The Consumer Control keys are defined in section 15 of
* the HID Usage Tables document under the following URL:
* https://www.usb.org/sites/default/files/hut1_12.pdf
*/
static const struct hid_keymap hid_keymap[] = {
/* Intentionally left empty. nRF54L DK by default uses all buttons only to control
* generating motion.
*/
};
Original file line number Diff line number Diff line change
@@ -0,0 +1,57 @@
/*
* Copyright (c) 2025 Nordic Semiconductor ASA
*
* SPDX-License-Identifier: LicenseRef-Nordic-5-Clause
*/

#include "hid_keymap.h"
#include <caf/key_id.h>

/* This configuration file is included only once from hid_state module and holds
* information about mapping between buttons and generated reports.
*/

/* This structure enforces the header file is included only once in the build.
* Violating this requirement triggers a multiple definition error at link time.
*/
const struct {} hid_keymap_def_include_once;

/*
* HID keymap. The Consumer Control keys are defined in section 15 of
* the HID Usage Tables document under the following URL:
* https://www.usb.org/sites/default/files/hut1_12.pdf
*/
static const struct hid_keymap hid_keymap[] = {
{ KEY_ID(0x00, 0x00), 0x0004, REPORT_ID_KEYBOARD_KEYS }, /* A */
{ KEY_ID(0x00, 0x01), 0x0005, REPORT_ID_KEYBOARD_KEYS }, /* B */
{ KEY_ID(0x00, 0x02), 0x00E1, REPORT_ID_KEYBOARD_KEYS }, /* left shift */

{ KEY_ID(0x00, 0x04), 0x0004, REPORT_ID_KEYBOARD_KEYS }, /* A */
{ KEY_ID(0x00, 0x05), 0x0005, REPORT_ID_KEYBOARD_KEYS }, /* B */
{ KEY_ID(0x00, 0x06), 0x0006, REPORT_ID_KEYBOARD_KEYS }, /* C */
{ KEY_ID(0x00, 0x07), 0x0007, REPORT_ID_KEYBOARD_KEYS }, /* D */
{ KEY_ID(0x00, 0x08), 0x0008, REPORT_ID_KEYBOARD_KEYS }, /* E */
{ KEY_ID(0x00, 0x09), 0x0009, REPORT_ID_KEYBOARD_KEYS }, /* F */
{ KEY_ID(0x00, 0x0A), 0x000A, REPORT_ID_KEYBOARD_KEYS }, /* G */
{ KEY_ID(0x00, 0x0B), 0x000B, REPORT_ID_KEYBOARD_KEYS }, /* H */
{ KEY_ID(0x00, 0x0C), 0x000C, REPORT_ID_KEYBOARD_KEYS }, /* I */
{ KEY_ID(0x00, 0x0D), 0x000D, REPORT_ID_KEYBOARD_KEYS }, /* J */
{ KEY_ID(0x00, 0x0E), 0x000E, REPORT_ID_KEYBOARD_KEYS }, /* K */
{ KEY_ID(0x00, 0x0F), 0x000F, REPORT_ID_KEYBOARD_KEYS }, /* L */
{ KEY_ID(0x00, 0x10), 0x0010, REPORT_ID_KEYBOARD_KEYS }, /* M */
{ KEY_ID(0x00, 0x11), 0x0011, REPORT_ID_KEYBOARD_KEYS }, /* N */
{ KEY_ID(0x00, 0x12), 0x0012, REPORT_ID_KEYBOARD_KEYS }, /* O */
{ KEY_ID(0x00, 0x13), 0x0013, REPORT_ID_KEYBOARD_KEYS }, /* P */
{ KEY_ID(0x00, 0x14), 0x0014, REPORT_ID_KEYBOARD_KEYS }, /* Q */
{ KEY_ID(0x00, 0x15), 0x0015, REPORT_ID_KEYBOARD_KEYS }, /* R */
{ KEY_ID(0x00, 0x16), 0x0016, REPORT_ID_KEYBOARD_KEYS }, /* S */
{ KEY_ID(0x00, 0x17), 0x0017, REPORT_ID_KEYBOARD_KEYS }, /* T */
{ KEY_ID(0x00, 0x18), 0x0018, REPORT_ID_KEYBOARD_KEYS }, /* U */
{ KEY_ID(0x00, 0x19), 0x0019, REPORT_ID_KEYBOARD_KEYS }, /* V */
{ KEY_ID(0x00, 0x1A), 0x001A, REPORT_ID_KEYBOARD_KEYS }, /* W */
{ KEY_ID(0x00, 0x1B), 0x001B, REPORT_ID_KEYBOARD_KEYS }, /* X */
{ KEY_ID(0x00, 0x1C), 0x001C, REPORT_ID_KEYBOARD_KEYS }, /* Y */
{ KEY_ID(0x00, 0x1D), 0x001D, REPORT_ID_KEYBOARD_KEYS }, /* Z */

{ KEY_ID(0x00, 0x2C), 0x002C, REPORT_ID_KEYBOARD_KEYS }, /* spacebar */
};
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
/*
* Copyright (c) 2025 Nordic Semiconductor ASA
*
* SPDX-License-Identifier: LicenseRef-Nordic-5-Clause
*/

/* Application does not use cpuflpr core. Assign whole RRAM to cpuapp. */
&cpuapp_rram {
reg = < 0x0 DT_SIZE_K(1022) >;
};
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
-----BEGIN PRIVATE KEY-----
MC4CAQAwBQYDK2VwBCIEICxK09VLg3mY0uIQ62fgaMuz1qjOfxMt+XnWxwPCwkFX
-----END PRIVATE KEY-----
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
-----BEGIN PRIVATE KEY-----
MC4CAQAwBQYDK2VwBCIEIImWgCnsM8sTv2qWYujZjhofdi6OtjD7SuVksrCHztRP
-----END PRIVATE KEY-----
Loading

0 comments on commit 6aa8df3

Please sign in to comment.