/*
 * Copyright (c) 2020 Seagate Technology LLC
 *
 * SPDX-License-Identifier: Apache-2.0
 */

/dts-v1/;

#include <nxp/nxp_lpc11u68.dtsi>

#include "lpcxpresso11u68-pinctrl.dtsi"

/ {
	model = "NXP LPCXPRESSO11U68 board";
	compatible = "lpcxpresso11u68", "nxp,lpc";
	chosen {
		zephyr,sram = &sram0;
		zephyr,flash = &flash0;
		zephyr,console = &uart0;
	};

	/* These aliases are provided for compatibility with samples. */
	aliases {
		led0 = &led0;
		led1 = &led1;
		led2 = &led2;
		sw0 = &isp_button;
		sw1 = &wake_up_button;
		eeprom-0 = &eeprom0;
	};

	gpio_keys {
		compatible = "gpio-keys";
		isp_button: button_0 {
			gpios = <&gpio0 1 GPIO_ACTIVE_HIGH>;
			label = "ISP enable button";
		};
		wake_up_button: button_1 {
			gpios = <&gpio0 16 GPIO_ACTIVE_HIGH>;
			label = "Wake-up button";
		};
	};

	leds {
		compatible = "gpio-leds";
		led0: led_0 {
			gpios = <&gpio2 16 GPIO_ACTIVE_LOW>;
			label = "Green LED 0";
		};
		led1: led_1 {
			gpios = <&gpio2 17 GPIO_ACTIVE_LOW>;
			label = "Red LED 1";
		};
		led2: led_2 {
			gpios = <&gpio2 18 GPIO_ACTIVE_LOW>;
			label = "Blue LED 2";
		};
	};

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

};

&uart0 {
	pinctrl-0 = <&uart0_default>;
	pinctrl-names = "default";
	current-speed = <115200>;
	status = "okay";
};

arduino_serial: &uart4 {
	pinctrl-0 = <&uart4_default>;
	pinctrl-names = "default";
	current-speed = <115200>;
	status = "okay";
};

arduino_i2c: &i2c0 {
	pinctrl-0 = <&i2c0_default>;
	pinctrl-1 = <&i2c0_fast>;
	pinctrl-names = "default", "fast-plus";
	status = "okay";
};

&cpu0 {
	clock-frequency = <48000000>;
};

&gpio0 {
	status = "okay";
};

&gpio1 {
	status = "okay";
};

&gpio2 {
	status = "okay";
};

&syscon {
	pinctrl-0 = <&syscon_default>;
	pinctrl-names = "default";
};
