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

/dts-v1/;

#include <nordic/nrf54h20_enga_cpuapp.dtsi>
#include "nrf54h20pdk_nrf54h20-memory_map.dtsi"
#include "nrf54h20pdk_nrf54h20-pinctrl.dtsi"

/ {
	compatible = "nordic,nrf54h20pdk_nrf54h20-cpuapp";
	model = "Nordic nRF54H20 PDK nRF54H20 Application MCU";

	chosen {
		zephyr,console = &uart136;
		zephyr,code-partition = &cpuapp_slot0_partition;
		zephyr,flash = &mram1x;
		zephyr,sram = &cpuapp_ram0;
	};

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

	buttons {
		compatible = "gpio-keys";

		button0: button_0 {
			gpios = <&gpio0 8 (GPIO_PULL_UP | GPIO_ACTIVE_LOW)>;
			label = "Push button 0";
			zephyr,code = <INPUT_KEY_0>;
		};

		button1: button_1 {
			gpios = <&gpio0 9 (GPIO_PULL_UP | GPIO_ACTIVE_LOW)>;
			label = "Push button 1";
			zephyr,code = <INPUT_KEY_1>;
		};

		button2: button_2 {
			gpios = <&gpio0 10 (GPIO_PULL_UP | GPIO_ACTIVE_LOW)>;
			label = "Push button 2";
			zephyr,code = <INPUT_KEY_2>;
		};

		button3: button_3 {
			gpios = <&gpio0 11 (GPIO_PULL_UP | GPIO_ACTIVE_LOW)>;
			label = "Push button 3";
			zephyr,code = <INPUT_KEY_3>;
		};
	};

	leds {
		compatible = "gpio-leds";

		led0: led_0 {
			gpios = <&gpio9 0 GPIO_ACTIVE_HIGH>;
			label = "Green LED 0";
		};

		led1: led_1 {
			gpios = <&gpio9 1 GPIO_ACTIVE_HIGH>;
			label = "Green LED 1";
		};

		led2: led_2 {
			gpios = <&gpio9 2 GPIO_ACTIVE_HIGH>;
			label = "Green LED 2";
		};

		led3: led_3 {
			gpios = <&gpio9 3 GPIO_ACTIVE_HIGH>;
			label = "Green LED 3";
		};
	};
};

&ram3x_dma_region {
	status = "okay";
};

&cpuapp_dma_region {
	status = "okay";
};

&cpuapp_rx_partitions {
	status = "okay";
};

&cpuppr_vpr {
	source-memory = <&cpuppr_code_partition>;
	execution-memory = <&cpuppr_ram3x_region>;
};

&gpiote130 {
	status = "okay";
	owned-channels = <0 1 2 3 4 5 6 7>;
};

&gpio0 {
	status = "okay";
};

&gpio9 {
	status = "okay";
};

&grtc {
	status = "okay";
	child-owned-channels = <5 6>;
	nonsecure-channels = <5 6>;
	owned-channels = <4 5 6>;
};

&uart135 {
	pinctrl-0 = <&uart135_default>;
	pinctrl-1 = <&uart135_sleep>;
	pinctrl-names = "default", "sleep";
};

&uart136 {
	status = "okay";
	memory-regions = <&cpuapp_dma_region>;
	pinctrl-0 = <&uart136_default>;
	pinctrl-1 = <&uart136_sleep>;
	pinctrl-names = "default", "sleep";
};
