/*
 * Copyright (c) 2018 Roman Tataurov <diytronic@yandex.ru>
 *
 * SPDX-License-Identifier: Apache-2.0
 */

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

/ {
	model = "Waveshare BLE400";
	compatible = "waveshare,BLE400", "nordic,nrf51822-qfaa", "nordic,nrf51822";

	chosen {
		zephyr,console = &uart0;
		zephyr,shell-uart = &uart0;
		zephyr,bt-mon-uart = &uart0;
		zephyr,sram = &sram0;
		zephyr,flash = &flash0;
	};

	/* These aliases are provided for compatibility with samples */
	aliases {
		led0 = &led0;
		led1 = &led1;
		led2 = &led2;
		led3 = &led3;
		led4 = &led4;
		sw0 = &button0;
		sw1 = &button1;
	};

	leds {
		compatible = "gpio-leds";
		led0: led_0 {
			gpios = <&gpio0 18 0>;
			label = "Red LED 0";
		};
		led1: led_1 {
			gpios = <&gpio0 19 0>;
			label = "Red LED 1";
		};
		led2: led_2 {
			gpios = <&gpio0 20 0>;
			label = "Red LED 2";
		};
		led3: led_3 {
			gpios = <&gpio0 21 0>;
			label = "Red LED 3";
		};
		led4: led_4 {
			gpios = <&gpio0 22 0>;
			label = "Red LED 4";
		};
	};

	buttons {
		/* Push button switch 0 KEY1 */
		compatible = "gpio-keys";
		button0: button_0 {
			gpios = <&gpio0 16 (GPIO_PUD_PULL_UP |
					    GPIO_INT_ACTIVE_LOW |
					    GPIO_INT_EDGE)>;
			label = "Push button switch 0";
		};
		/* Push button switch 1 KEY2 */
		button1: button_1 {
			gpios = <&gpio0 17 (GPIO_PUD_PULL_UP |
					    GPIO_INT_ACTIVE_LOW |
					    GPIO_INT_EDGE)>;
			label = "Push button switch 1";
		};
	};

};

&gpiote {
	status ="ok";
};

&gpio0 {
	status ="ok";
};

&i2c0 {
	status = "ok";
	sda-pin = <0>;
	scl-pin = <1>;
	/* smba-pin = <2>; */
};

&spi1 {
	status = "ok";
	sck-pin = <25>;
	mosi-pin = <24>;
	miso-pin = <23>;
	cs-gpios = <&gpio0 30 0>;
};

&uart0 {
	current-speed = <115200>;
	status = "ok";
	tx-pin = <9>;
	rx-pin = <11>;
	rts-pin = <8>;
	cts-pin = <10>;
};
