/*
 * PAN1781 EVB configuration
 *
 * Copyright (c) 2022 Panasonic Industrial Devices Europe GmbH
 * SPDX-License-Identifier: Apache-2.0
 */

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

/ {
	model = "pan1781-evb";
	compatible = "panasonic-industrial-devices-europe-gmbh,pan1781-evb";

	chosen {
		zephyr,console = &uart0;
		zephyr,shell-uart = &uart0;
		zephyr,uart-mcumgr = &uart0;
		zephyr,bt-mon-uart = &uart0;
		zephyr,bt-c2h-uart = &uart0;
		zephyr,sram = &sram0;
		zephyr,flash = &flash0;
		zephyr,code-partition = &slot0_partition;
	};

	leds {
		compatible = "gpio-leds";
		evb_led1: evb_led_0 {
			gpios = <&gpio0 14 GPIO_ACTIVE_LOW>;
			label = "LED1 on EVB";
		};
		evb_led2: evb_led_2 {
			gpios = <&gpio0 15 GPIO_ACTIVE_LOW>;
			label = "LED2 on EVB";
		};
	};

	pwmleds {
		compatible = "pwm-leds";
		pwm_evb_led1: pwm_evb_led_1 {
			pwms = <&sw_pwm 0 PWM_MSEC(20) PWM_POLARITY_INVERTED>;
		};
	};

	buttons {
		compatible = "gpio-keys";
		evb_sw1: evb_sw_1 {
			gpios = <&gpio0 4 (GPIO_PULL_UP | GPIO_ACTIVE_LOW)>;
			label = "SW1 on EVB";
			zephyr,code = <INPUT_KEY_0>;
		};
		evb_sw2: evb_sw_2 {
			gpios = <&gpio0 5 (GPIO_PULL_UP | GPIO_ACTIVE_LOW)>;
			label = "SW2 on EVB";
			zephyr,code = <INPUT_KEY_1>;
		};
	};

	arduino_header: connector {
		compatible = "panasonic,reduced-arduino-header";
		#gpio-cells = <2>;
		gpio-map-mask = <0xffffffff 0xffffffc0>;
		gpio-map-pass-thru = <0 0x3f>;
		gpio-map = <0 0 &gpio0 2 0>,	/* A0 */
			   <1 0 &gpio0 3 0>,	/* A1 */
			   <2 0 &gpio0 4 0>,	/* A2 */
			   <3 0 &gpio0 5 0>,	/* A3 */
			   <6 0 &gpio0 6 0>,	/* D0 */
			   <7 0 &gpio0 8 0>,	/* D1 */
			   <8 0 &gpio0 14 0>,	/* D2 */
			   <9 0 &gpio0 15 0>,	/* D3 */
			   <10 0 &gpio0 4 0>,	/* D4 */
			   <11 0 &gpio0 5 0>,	/* D5 */
			   <16 0 &gpio0 3 0>,	/* D10 */
			   <17 0 &gpio0 20 0>,	/* D11 */
			   <18 0 &gpio0 29 0>,	/* D12 */
			   <19 0 &gpio0 28 0>,	/* D13 */
			   <20 0 &gpio0 7 0>,	/* D14 */
			   <21 0 &gpio0 30 0>;	/* D15 */
	};

	/* These aliases are provided for compatibility with samples */
	aliases {
		led0 = &evb_led1;
		led1 = &evb_led2;
		pwm-led0 = &pwm_evb_led1;
		sw0 = &evb_sw1;
		sw1 = &evb_sw2;
		watchdog0 = &wdt0;
	};
};

&sw_pwm {
	status ="okay";
	channel-gpios = <&gpio0 14 GPIO_ACTIVE_LOW>;
	clock-prescaler = <8>;
};

&uicr {
	gpio-as-nreset;
};

&gpiote {
	status = "okay";
};

&gpio0 {
	status = "okay";
};

arduino_serial: &uart0 {
	compatible = "nordic,nrf-uarte";
	status = "okay";
	current-speed = <115200>;
	pinctrl-0 = <&uart0_default>;
	pinctrl-1 = <&uart0_sleep>;
	pinctrl-names = "default", "sleep";
};

arduino_i2c: &i2c0 {
	compatible = "nordic,nrf-twi";
	status = "okay";
	pinctrl-0 = <&i2c0_default>;
	pinctrl-1 = <&i2c0_sleep>;
	pinctrl-names = "default", "sleep";
};

arduino_spi: &spi1 {
	status = "okay";
	cs-gpios = <&gpio0 3 GPIO_ACTIVE_LOW>; /* D10 */
	pinctrl-0 = <&spi1_default>;
	pinctrl-1 = <&spi1_sleep>;
	pinctrl-names = "default", "sleep";
};

&flash0 {
	partitions {
		compatible = "fixed-partitions";
		#address-cells = <1>;
		#size-cells = <1>;

		boot_partition: partition@0 {
			label = "mcuboot";
			reg = <0x0 0xc000>;
		};
		slot0_partition: partition@c000 {
			label = "image-0";
			reg = <0xc000 0x12000>;
		};
		slot1_partition: partition@1e000 {
			label = "image-1";
			reg = <0x1e000 0x12000>;
		};
		scratch_partition: partition@30000 {
			label = "image-scratch";
			reg = <0x30000 0xa000>;
		};
		storage_partition: partition@3a000 {
			label = "storage";
			reg = <0x3a000 0x6000>;
		};
	};
};
