/*
 * Copyright (c) 2020 u-blox AG
 *
 * SPDX-License-Identifier: Apache-2.0
 */

/dts-v1/;
#include <nordic/nrf52833_qiaa.dtsi>
#include "ubx_evkninab4_nrf52833-pinctrl.dtsi"

/ {
	model = "u-blox EVK-NINA-B4 NRF52833";
	compatible = "u-blox,ubx_evkninab4_nrf52833";

	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;
		zephyr,ieee802154 = &ieee802154;
	};

	leds {
		compatible = "gpio-leds";
		led0: led_0 {
			/* NINA-B1 GPIO_1 */
			gpios = <&gpio0 13 GPIO_ACTIVE_LOW>;
			label = "Red LED";
		};
		led1: led_1 {
			/* NINA-B4 GPIO_7 */
			gpios = <&gpio1 1 GPIO_ACTIVE_LOW>;
			label = "Green LED";
		};
		led2: led_2 {
			/*NINA-B1 GPIO_8 */
			gpios = <&gpio1 0 GPIO_ACTIVE_LOW>;
			label = "Blue LED";
		};
	};

	pwmleds {
		compatible = "pwm-leds";
		red_pwm_led: red_pwm_led {
			pwms = <&pwm0 0 PWM_MSEC(20) PWM_POLARITY_INVERTED>;
		};
		green_pwm_led: green_pwm_led {
			pwms = <&pwm0 1 PWM_MSEC(20) PWM_POLARITY_INVERTED>;
		};
		blue_pwm_led: blue_pwm_led {
			pwms = <&pwm0 2 PWM_MSEC(20) PWM_POLARITY_INVERTED>;
		};
	};

	buttons {
		compatible = "gpio-keys";
		button0: button_0 {
			/* EVK-NINA-B4 SW1 button */
			gpios = <&gpio1 1 (GPIO_PULL_UP | GPIO_ACTIVE_LOW)>;
			label = "Push button switch 0";
		};
		button1: button_1 {
			/* EVK-NINA-B4 SW2 button */
			gpios = <&gpio0 2 (GPIO_PULL_UP | GPIO_ACTIVE_LOW)>;
			label = "Push button switch 1";
		};
	};

	arduino_header: connector {
		compatible = "arduino-header-r3";
		#gpio-cells = <2>;
		gpio-map-mask = <0xffffffff 0xffffffc0>;
		gpio-map-pass-thru = <0 0x3f>;
		gpio-map = <0 0 &gpio0 4 0>,	/* A0 */
			   <1 0 &gpio0 30 0>,	/* A1 */
			   <2 0 &gpio0 5 0>,	/* A2 */
			   <3 0 &gpio0 2 0>,	/* A3 */
			   <4 0 &gpio0 28 0>,	/* A4 */
			   <5 0 &gpio0 3 0>,	/* A5 */
			   <6 0 &gpio0 29 0>,	/* D0 */
			   <7 0 &gpio1 5 0>,	/* D1 */
			   <8 0 &gpio0 23 0>,	/* D2 */
			   <9 0 &gpio0 31 0>,	/* D3 */
			   <10 0 &gpio0 13 0>,	/* D4 */
			   <11 0 &gpio0 11 0>,	/* D5 */
			   <12 0 &gpio0 9 0>,	/* D6 */ /* NFC use by default */
			   <13 0 &gpio0 10 0>,	/* D7 */ /* NFC use by default */
			   <14 0 &gpio1 9 0>,	/* D8 */
			   <15 0 &gpio0 12 0>,	/* D9 */
			   <16 0 &gpio0 0 0>,	/* D10 */ /* Disconnected, see EVK User Guide */
			   <17 0 &gpio0 1 0>,	/* D11 */ /* Disconnected, see EVK User Guide */
			   <18 0 &gpio1 0 0>,	/* D12 */
			   <19 0 &gpio0 7 0>,	/* D13 */
			   <20 0 &gpio0 16 0>,	/* D14 */  /* SDA */
			   <21 0 &gpio0 17 0>;	/* D15 */  /* SCL */
	};

	arduino_adc: analog-connector {
		compatible = "arduino,uno-adc";
		#io-channel-cells = <1>;
		io-channel-map = <0 &adc 2>,	/* A0 = P0.04 = AIN2 */
				 <1 &adc 6>,	/* A1 = P0.30 = AIN6 */
				 <2 &adc 3>,	/* A2 = P0.5 = AIN3 */
				 <3 &adc 0>,	/* A3 = P0.2 = AIN0 */
				 <4 &adc 4>,	/* A4 = P0.28 = AIN4 */
				 <5 &adc 1>;	/* A5 = P0.3 = AIN1 */
	};

	/* These aliases are provided for compatibility with samples */
	aliases {
		led0 = &led0;
		led1 = &led1;
		led2 = &led2;
		pwm-led0 = &red_pwm_led;
		pwm-led1 = &green_pwm_led;
		pwm-led2 = &blue_pwm_led;
		red-pwm-led = &red_pwm_led;
		green-pwm-led = &green_pwm_led;
		blue-pwm-led = &blue_pwm_led;
		sw0 = &button0;
		sw1 = &button1;
		watchdog0 = &wdt0;
	};
};

&adc {
	status = "okay";
};

&gpiote {
	status = "okay";
};

&gpio0 {
	status = "okay";
};

&gpio1 {
	status = "okay";
};

&uart0 {
	compatible = "nordic,nrf-uart";
	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";
};

&spi0 {
	compatible = "nordic,nrf-spi";
	/* Cannot be used together with i2c0. */
	/* status = "okay"; */
	pinctrl-0 = <&spi0_default>;
	pinctrl-1 = <&spi0_sleep>;
	pinctrl-names = "default", "sleep";
};

&spi1 {
	compatible = "nordic,nrf-spi";
	status = "okay";
	pinctrl-0 = <&spi1_default>;
	pinctrl-1 = <&spi1_sleep>;
	pinctrl-names = "default", "sleep";
};

arduino_spi: &spi2 {
	compatible = "nordic,nrf-spim";
	status = "okay";
	cs-gpios = <&arduino_header 0 GPIO_ACTIVE_LOW>; /* D10 */
	pinctrl-0 = <&spi2_default>;
	pinctrl-1 = <&spi2_sleep>;
	pinctrl-names = "default", "sleep";
};

&pwm0 {
	status = "okay";
	pinctrl-0 = <&pwm0_default>;
	pinctrl-1 = <&pwm0_sleep>;
	pinctrl-names = "default", "sleep";
};

&ieee802154 {
	status = "okay";
};

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

		boot_partition: partition@0 {
			label = "mcuboot";
			reg = <0x00000000 0xC000>;
		};
		slot0_partition: partition@c000 {
			label = "image-0";
			reg = <0x0000C000 0x32000>;
		};
		slot1_partition: partition@3e000 {
			label = "image-1";
			reg = <0x0003E000 0x32000>;
		};
		scratch_partition: partition@70000 {
			label = "image-scratch";
			reg = <0x00070000 0xA000>;
		};
		storage_partition: partition@7a000 {
			label = "storage";
			reg = <0x0007A000 0x00006000>;
		};
	};
};

zephyr_udc0: &usbd {
	compatible = "nordic,nrf-usbd";
	status = "okay";
};
