/*
 * 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,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>;
};
