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

/dts-v1/;

#include <nxp/nxp_lpc11u68.dtsi>
#include <dt-bindings/pinctrl/lpc11u6x-pinctrl.h>

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

	/* 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 {
	pinmuxs = <&pinmux1 26 IOCON_FUNC2>, <&pinmux1 27 IOCON_FUNC2>;
	pinmux-names = "RXD", "TXD";
	current-speed = <115200>;
	status = "okay";
};

arduino_serial: &uart4 {
	pinmuxs = <&pinmux2 11 IOCON_FUNC1>, <&pinmux2 12 IOCON_FUNC1>;
	pinmux-names = "RXD", "TXD";
	current-speed = <115200>;
	status = "okay";
};

arduino_i2c: &i2c0 {
	pinmuxs = <&pinmux0 4 IOCON_FUNC1>,
	<&pinmux0 5 IOCON_FUNC1>;
	pinmux-names = "SCL", "SDA";
	status = "okay";
};

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

&gpio0 {
	status = "okay";
};

&gpio1 {
	status = "okay";
};

&gpio2 {
	status = "okay";
};
