/*
 * Copyright 2022 NXP
 *
 * SPDX-License-Identifier: Apache-2.0
 */

/dts-v1/;

#include <nxp/nxp_lpc55S36_ns.dtsi>
#include "lpcxpresso55s36-pinctrl.dtsi"

/ {
	model = "NXP LPCXpresso55S36 board";
	compatible = "nxp,lpc55xxx", "nxp,lpc";

	chosen {
		zephyr,sram = &sram0;
		zephyr,flash = &flash0;
		zephyr,code-partition = &sramx;
		zephyr,console = &flexcomm0;
		zephyr,shell-uart = &flexcomm0;
	};

	aliases{
		led0 = &red_led;
		led1 = &green_led;
		led2 = &blue_led;
		sw0 = &btn_wk;
		sw1 = &btn_usr;
		usart-0 = &flexcomm0;
	};

	leds {
		compatible = "gpio-leds";
		red_led: led_0 {
			gpios = <&gpio1 28 0>;
			label = "Red LED";
		};
		green_led: led_1 {
			gpios = <&gpio0 22 0>;
			label = "Green LED";
		};
		blue_led: led_2 {
			gpios = <&gpio1 11 0>;
			label = "Blue LED";
		};
	};

	gpio_keys {
		compatible = "gpio-keys";
		btn_wk: button_0 {
			label = "Wakeup button";
			gpios = <&gpio1 18 GPIO_ACTIVE_LOW>;
		};
		btn_usr: button_1 {
			label = "USR button";
			gpios = <&gpio0 17 GPIO_ACTIVE_LOW>;
		};
	};

	mikrobus_header: mikrobus-connector {
		compatible = "mikro-bus";
		#gpio-cells = <2>;
		gpio-map-mask = <0xffffffff 0xffffffc0>;
		gpio-map-pass-thru = <0 0x3f>;
		gpio-map =	<0 0 &gpio1 9 0>,	/* AN  */
				/* Not a GPIO*/		/* RST */
				<2 0 &gpio0 20 0>,	/* CS   */
				<3 0 &gpio1 2 0>,	/* SCK  */
				<4 0 &gpio1 3 0>,	/* MISO */
				<5 0 &gpio0 26 0>,	/* MOSI */
							/* +3.3V */
							/* GND */
				<6 0 &gpio1 8 0>,	/* PWM  */
				<7 0 &gpio0 17 0>,	/* INT  */
				<8 0 &gpio1 24 0>,	/* RX   */
				<9 0 &gpio1 25 0>,	/* TX   */
				<10 0 &gpio1 30 0>,	/* SCL  */
				<11 0 &gpio1 21 0>;	/* SDA  */
							/* +5V */
							/* GND */
	};

	arduino_header: arduino-connector {
		compatible = "arduino-header-r3";
		#gpio-cells = <2>;
		gpio-map-mask = <0xffffffff 0xffffffc0>;
		gpio-map-pass-thru = <0 0x3f>;
		gpio-map =	<0 0 &gpio0 15 0>,	/* A0 */
				<1 0 &gpio0 16 0>,	/* A1 */
				<2 0 &gpio0 0 0>,	/* A2 */
				<3 0 &gpio1 13 0>,	/* A3 */
				<4 0 &gpio1 21 0>,	/* A4 */
				<5 0 &gpio1 30 0>,	/* A5 */
				<6 0 &gpio2 0 0>,	/* D0 */
				<7 0 &gpio2 1 0>,	/* D1 */
				<8 0 &gpio1 26 0>,	/* D2 */
				<9 0 &gpio1 23 0>,	/* D3 */
				<10 0 &gpio1 8 0>,	/* D4 */
				<11 0 &gpio1 25 0>,	/* D5 */
				<12 0 &gpio1 0 0>,	/* D6 */
				<13 0 &gpio1 28 0>,	/* D7 */
				<14 0 &gpio1 27 0>,	/* D8 */
				<15 0 &gpio1 29 0>,	/* D9 */
				<16 0 &gpio1 26 0>,	/* D10 */
				<17 0 &gpio0 26 0>,	/* D11 */
				<18 0 &gpio1 3 0>,	/* D12 */
				<19 0 &gpio1 2 0>,	/* D13 */
				<20 0 &gpio0 3 0>,	/* D14 */
				<21 0 &gpio0 2 0>;	/* D15 */
	};
};

&flexcomm0 {
	status = "okay";
	compatible = "nxp,lpc-usart";
	current-speed = <115200>;
	pinctrl-0 = <&pinmux_flexcomm0_usart>;
	pinctrl-names = "default";
};
