/*
 * 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", "nordic,nrf52832-qfaa",
		     "nordic,nrf52832";

	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 {
	/*
	 * For more information, see:
	 * http://docs.zephyrproject.org/latest/guides/dts/index.html#flash-partitions
	 */
	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>;
		};
	};
};
