/*
 * Copyright (c) 2022 metraTec
 * Copyright 2022 NXP
 *
 * SPDX-License-Identifier: Apache-2.0
 */

#include "lpcxpresso55s06-pinctrl.dtsi"

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

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

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

	gpio_keys {
		compatible = "gpio-keys";
		btn_wk: button_0 {
			label = "Wakeup button";
			gpios = <&gpio0 28 GPIO_ACTIVE_LOW>;
		};
		btn_usr: button_1 {
			label = "User button";
			gpios = <&gpio1 9 GPIO_ACTIVE_LOW>;
		};
		btn_isp: button_2 {
			label = "ISP button";
			gpios = <&gpio0 5 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 &gpio0 16 0>,	/* AN   */
				/* Not a GPIO */	/* RST  */
				<2 0 &gpio1 1 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 5 0>,	/* PWM  */
				<7 0 &gpio0 28 0>,	/* INT  */
				<8 0 &gpio1 10 0>,	/* RX   */
				<9 0 &gpio1 11 0>,	/* TX   */
				<10 0 &gpio0 24 0>,	/* SCL  */
				<11 0 &gpio0 25 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 16 0>,	/* A0 */
				<1 0 &gpio0 23 0>,	/* A1 */
				<2 0 &gpio0 9 0>,	/* A2 */
				<3 0 &gpio0 0 0>,	/* A3 */
				<4 0 &gpio0 13 0>,	/* A4 */
				<5 0 &gpio0 14 0>,	/* A5 */
				<6 0 &gpio1 10 0>,	/* D0 */
				<7 0 &gpio1 11 0>,	/* D1 */
				<8 0 &gpio0 15 0>,	/* D2 */
				<9 0 &gpio0 23 0>,	/* D3 */
				<10 0 &gpio0 22 0>,	/* D4 */
				<11 0 &gpio0 19 0>,	/* D5 */
				<12 0 &gpio0 18 0>,	/* D6 */
				<13 0 &gpio0 2 0>,	/* D7 */
				<14 0 &gpio0 10 0>,	/* D8 */
				<15 0 &gpio0 25 0>,	/* D9 */
				<16 0 &gpio1 1 0>,	/* D10 */
				<17 0 &gpio0 26 0>,	/* D11 */
				<18 0 &gpio1 3 0>,	/* D12 */
				<19 0 &gpio1 2 0>;	/* D13 */
	};
};

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