/*
 * Copyright (c) 2018 Phytec Messtechnik GmbH
 * Copyright (c) 2017 Linaro Limited
 *
 * SPDX-License-Identifier: Apache-2.0
 */

/ {
	leds {
		compatible = "gpio-leds";
		red_led: led_0 {
			gpios = <&gpio0 11 GPIO_ACTIVE_LOW>;
			label = "User D3 red";
		};
		green_led: led_1 {
			gpios = <&gpio0 12 GPIO_ACTIVE_LOW>;
			label = "User D3 green";
		};
		blue_led: led_2 {
			gpios = <&gpio1 9 GPIO_ACTIVE_LOW>;
			label = "User D3 blue";
		};
	};

	pwmleds {
		compatible = "pwm-leds";
		red_pwm_led: pwm_led_0 {
			pwms = <&pwm0 11>;
		};
		green_pwm_led: pwm_led_1 {
			pwms = <&pwm0 12>;
		};
		blue_pwm_led: pwm_led_2 {
			pwms = <&pwm0 41>;
		};
	};

	gpio_keys {
		compatible = "gpio-keys";
		user_button: button_0 {
			gpios = <&gpio0 7 (GPIO_PULL_UP | GPIO_ACTIVE_LOW)>;
			label = "User Button";
		};
	};

	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 3 0>,	/* A0 */
			   <1 0 &gpio0 4 0>,	/* A1 */
			   <2 0 &gpio0 28 0>,	/* A2 */
			   <3 0 &gpio0 29 0>,	/* A3 */
			   <4 0 &gpio0 30 0>,	/* A4 */
			   <5 0 &gpio0 31 0>,	/* A5 */
			   <6 0 &gpio1 1 0>,	/* D0 */
			   <7 0 &gpio1 2 0>,	/* D1 */
			   <8 0 &gpio1 3 0>,	/* D2 */
			   <9 0 &gpio1 4 0>,	/* D3 */
			   <10 0 &gpio1 5 0>,	/* D4 */
			   <11 0 &gpio1 6 0>,	/* D5 */
			   <12 0 &gpio1 7 0>,	/* D6 */
			   <13 0 &gpio1 8 0>,	/* D7 */
			   <14 0 &gpio1 10 0>,	/* D8 */
			   <15 0 &gpio1 11 0>,	/* D9 */
			   <16 0 &gpio1 12 0>,	/* D10 */
			   <17 0 &gpio1 13 0>,	/* D11 */
			   <18 0 &gpio1 14 0>,	/* D12 */
			   <19 0 &gpio1 15 0>,	/* D13 */
			   <20 0 &gpio0 26 0>,	/* D14 */
			   <21 0 &gpio0 27 0>;	/* D15 */
	};

	aliases {
		led0 = &red_led;
		led1 = &green_led;
		led2 = &blue_led;
		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 = &user_button;
	};
};

&gpiote {
	status = "okay";
};

&gpio0 {
	status = "okay";
};

&gpio1 {
	status = "okay";
};

&uart0 {
	compatible = "nordic,nrf-uart";
	current-speed = <115200>;
	status = "okay";
	tx-pin = <6>;
	rx-pin = <8>;
};

arduino_serial: &uart1 {
	status = "okay";
	current-speed = <115200>;
	rx-pin = <33>;
	tx-pin = <34>;
};

arduino_i2c: &i2c0 {
	compatible = "nordic,nrf-twim";
	status = "okay";
	clock-frequency = <I2C_BITRATE_FAST>;
	sda-pin = <26>;
	scl-pin = <27>;

	mma8652fc@1d {
		compatible = "nxp,fxos8700","nxp,mma8652fc";
		reg = <0x1d>;
		label = "MMA8652FC";
		int1-gpios = <&gpio0 24 GPIO_ACTIVE_LOW>;
		int2-gpios = <&gpio0 25 GPIO_ACTIVE_LOW>;
	};

	ti_hdc@43 {
		compatible = "ti,hdc","ti,hdc1010";
		reg = <0x43>;
		label = "HDC1010";
		drdy-gpios = <&gpio0 22 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)>;
	};

	apds9960@39 {
		compatible = "avago,apds9960";
		reg = <0x39>;
		label = "APDS9960";
		int-gpios = <&gpio0 23 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)>;
	};
};

&pwm0 {
	status = "okay";
	ch0-pin = <13>;
	ch1-pin = <11>;
	ch1-inverted;
	ch2-pin = <12>;
	ch2-inverted;
	ch3-pin = <41>;
	ch3-inverted;
};

arduino_spi: &spi3 {
	status = "okay";
	sck-pin = <47>;
	miso-pin = <46>;
	mosi-pin = <45>;
	cs-gpios = <&arduino_header 16 GPIO_ACTIVE_LOW>; /* D10 */
};

&flash0 {

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

		boot_partition: partition@0 {
			label = "mcuboot";
			reg = <0x000000000 0x0000C000>;
		};
		slot0_partition: partition@c000 {
			label = "image-0";
			reg = <0x0000C000 0x00067000>;
		};
		slot1_partition: partition@73000 {
			label = "image-1";
			reg = <0x00073000 0x00067000>;
		};
		scratch_partition: partition@da000 {
			label = "image-scratch";
			reg = <0x000da000 0x0001e000>;
		};

		/*
		 * The flash starting at 0x000f8000 and ending at
		 * 0x000fffff is reserved for use by the application.
		 */

		/*
		 * Storage partition will be used by FCB/LittleFS/NVS
		 * if enabled.
		 */
		storage_partition: partition@f8000 {
			label = "storage";
			reg = <0x000f8000 0x00008000>;
		};
	};
};

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