/*
 * Copyright (c) 2024 Nordic Semiconductor ASA
 *
 * SPDX-License-Identifier: Apache-2.0
 */

/dts-v1/;
#include <nordic/nrf54l15_cpuapp.dtsi>
#include "nrf54l15pdk_nrf54l15_cpuapp-pinctrl.dtsi"
#include <zephyr/dt-bindings/input/input-event-codes.h>

/ {
	model = "Nordic nRF54L15 PDK nRF54L15 Application MCU";
	compatible = "nordic,nrf54l15pdk_nrf54l15-cpuapp";

	chosen {
		zephyr,console = &uart20;
		zephyr,shell-uart = &uart20;
		zephyr,uart-mcumgr = &uart20;
		zephyr,sram = &sram0;
		zephyr,flash = &rram0;
		zephyr,code-partition = &slot0_partition;
		zephyr,ieee802154 = &ieee802154;
	};

	leds {
		compatible = "gpio-leds";
		led0: led_0 {
			gpios = <&gpio0 4 GPIO_ACTIVE_HIGH>;
			label = "Green LED 0";
		};
		led1: led_1 {
			gpios = <&gpio1 8 GPIO_ACTIVE_HIGH>;
			label = "Green LED 1";
		};
		led2: led_2 {
			gpios = <&gpio1 13 GPIO_ACTIVE_HIGH>;
			label = "Green LED 2";
		};
		led3: led_3 {
			gpios = <&gpio1 14 GPIO_ACTIVE_HIGH>;
			label = "Green LED 3";
		};
	};

	buttons {
		compatible = "gpio-keys";
		button0: button_0 {
			gpios = <&gpio1 9 (GPIO_PULL_UP | GPIO_ACTIVE_LOW)>;
			label = "Push button 0";
			zephyr,code = <INPUT_KEY_0>;
		};
		button1: button_1 {
			gpios = <&gpio1 10 (GPIO_PULL_UP | GPIO_ACTIVE_LOW)>;
			label = "Push button 1";
			zephyr,code = <INPUT_KEY_1>;
		};
		button2: button_2 {
			gpios = <&gpio2 9 (GPIO_PULL_UP | GPIO_ACTIVE_LOW)>;
			label = "Push button 2";
			zephyr,code = <INPUT_KEY_2>;
		};
		button3: button_3 {
			gpios = <&gpio2 10 (GPIO_PULL_UP | GPIO_ACTIVE_LOW)>;
			label = "Push button 3";
			zephyr,code = <INPUT_KEY_3>;
		};
	};

	aliases {
		led0 = &led0;
		led1 = &led1;
		led2 = &led2;
		led3 = &led3;
		watchdog0 = &wdt30;
		sw0 = &button0;
		sw1 = &button1;
		sw2 = &button2;
		sw3 = &button3;
	};
};

&lfxo {
	load-capacitors = "internal";
	load-capacitance-femtofarad = <15500>;
};

&hfxo {
	load-capacitors = "internal";
	load-capacitance-femtofarad = <15000>;
};

&uart20 {
	status = "okay";
	current-speed = <115200>;
	pinctrl-0 = <&uart20_default>;
	pinctrl-1 = <&uart20_sleep>;
	pinctrl-names = "default", "sleep";
};

&uart30 {
	current-speed = <115200>;
	pinctrl-0 = <&uart30_default>;
	pinctrl-1 = <&uart30_sleep>;
	pinctrl-names = "default", "sleep";
};

&grtc {
	status = "okay";
};

&gpio0 {
	status = "okay";
};

&gpio1 {
	status = "okay";
};

&gpio2 {
	status = "okay";
};

&gpiote20 {
	status = "okay";
};

&gpiote30 {
	status = "okay";
};

&ieee802154 {
	status = "okay";
};

&temp {
	status = "okay";
};

&rram0 {
	partitions {
		compatible = "fixed-partitions";
		#address-cells = <1>;
		#size-cells = <1>;
		boot_partition: partition@0 {
			label = "mcuboot";
			reg = <0x0 DT_SIZE_K(64)>;
		};
		slot0_partition: partition@10000 {
			label = "image-0";
			reg = <0x10000 DT_SIZE_K(348)>;
		};
		slot0_ns_partition: partition@67000 {
			label = "image-0-nonsecure";
			reg = <0x67000 DT_SIZE_K(348)>;
		};
		slot1_partition: partition@be000 {
			label = "image-1";
			reg = <0xbe000 DT_SIZE_K(348)>;
		};
		slot1_ns_partition: partition@115000 {
			label = "image-1-nonsecure";
			reg = <0x115000 DT_SIZE_K(348)>;
		};
		/* 32k from 0x16c000 to 0x173fff reserved for TF-M partitions */
		storage_partition: partition@174000 {
			label = "storage";
			reg = <0x174000 DT_SIZE_K(36)>;
		};
	};
};

&clock {
	status = "okay";
};
