/*
 * Copyright (c) 2018 Zelin <zelin@makerdiary.com>
 * Copyright (c) 2018 makerdiary.com.
 *
 * SPDX-License-Identifier: Apache-2.0
 */

/dts-v1/;
#include <nordic/nrf52832_qfaa.dtsi>

/ {
	model = "nRF52832-MDK Micro Dev Kit";
	compatible = "nrf52832-mdk";

	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";
		led0_green: led_0 {
			gpios = <&gpio0 22 GPIO_ACTIVE_LOW>;
			label = "Green LED 0";
		};
		led1_red: led_1 {
			gpios = <&gpio0 23 GPIO_ACTIVE_LOW>;
			label = "Red LED 1";
		};
		led2_blue: led_2 {
			gpios = <&gpio0 24 GPIO_ACTIVE_LOW>;
			label = "Blue LED 1";
		};
	};

	pwmleds {
		compatible = "pwm-leds";
		pwm_led0_green: pwm_led_0 {
			pwms = <&pwm0 22>;
			label = "Green PWM LED 0";
		};
		pwm_led1_red: pwm_led_1 {
			pwms = <&pwm0 23>;
			label = "Red PWM LED 1";
		};
		pwm_led2_blue: pwm_led_2 {
			pwms = <&pwm0 24>;
			label = "Blue PWM LED 1";
		};
	};

	buttons {
		compatible = "gpio-keys";
		button0: button_0 {
			gpios = <&gpio0 18 (GPIO_PULL_UP | GPIO_ACTIVE_LOW)>;
			label = "Push button switch 0";
		};
	};

	/* These aliases are provided for compatibility with samples */
	aliases {
		sw0 = &button0;
		led0 = &led0_green;
		led1 = &led1_red;
		led2 = &led2_blue;
		led0-green = &led0_green;
		led1-red   = &led1_red;
		led2-blue  = &led2_blue;
		pwm-led0 = &pwm_led0_green;
		pwm-led1 = &pwm_led1_red;
		pwm-led2 = &pwm_led2_blue;
		green-pwm-led = &pwm_led0_green;
		red-pwm-led = &pwm_led1_red;
		blue-pwm-led = &pwm_led2_blue;
	};

};

&gpiote {
	status = "okay";
};

&gpio0 {
	status = "okay";
};

&uart0 {
	status = "okay";
	compatible = "nordic,nrf-uart";
	current-speed = <115200>;
	tx-pin = <20>;
	rx-pin = <19>;
	rts-pin = <5>;
	cts-pin = <7>;
};

&i2c0 {
	compatible = "nordic,nrf-twi";
	status = "okay";
	sda-pin = <26>;
	scl-pin = <27>;
};

&i2c1 {
	compatible = "nordic,nrf-twi";
	status = "okay";
	sda-pin = <30>;
	scl-pin = <31>;
};

&pwm0 {
	status = "okay";
	ch0-pin = <22>;
	ch0-inverted;
	ch1-pin = <23>;
	ch1-inverted;
	ch2-pin = <24>;
	ch2-inverted;
};

&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>;
		};
	};
};
